SpringBoot国际化

https://www.jianshu.com/p/e2eae08f3255

配置参数(bean)

@Configuration
public class LocaleConfig {

    /**
     * 默认解析器 其中locale表示默认语言
     */
    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver localeResolver = new SessionLocaleResolver();
        //设置默认英语
        localeResolver.setDefaultLocale(Locale.US);
        //注入Bean
        return localeResolver;
    }

    /**
     * 默认拦截器 其中lang表示切换语言的参数名
     * 例如:   ?lang=zh_CN
     */
    @Bean
    public WebMvcConfigurer localeInterceptor() {
        return new WebMvcConfigurer() {
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor();
                localeInterceptor.setParamName("lang");
                registry.addInterceptor(localeInterceptor);
            }
        };
    }
}

配置文件

# 设置国际化文件存放的地方
spring:
    messages:
        basename: static/i18n/messages  #相对路径,开头没有/

classpath:/static/i18n目录中添加文件:

  1. 默认文件messages.properties
默认翻译
  1. 美式英语messages_en_US.properties
user.title=User Login
  1. 简体中文messages_zh_CN.properties
user.title=用户登陆

后端使用国际化

  • 编写通用国际化工具类
@Component
public class MessageUtils{

    private static MessageSource messageSource;

    public MessageUtils(MessageSource messageSource) {
        MessageUtils.messageSource = messageSource;
    }

    /**
     * 获取单个国际化翻译值
     */
    public static String get(String msgKey) {
        try {
            return messageSource.getMessage(msgKey,  null, LocaleContextHolder.getLocale());
        } catch (Exception e) {
            return msgKey;
        }
    }

freeMarker中获取

 
 
 
    
     <#import "spring.ftl" as spring>
     <#assign arg = ["AAA","张三"]>
     <@spring.messageArgs "title" ,arg />
     
 
 
 
english
中文
<@spring.message code="user.loginname"/>

你可能感兴趣的:(SpringBoot国际化)