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中获取

 <!DOCTYPE html>
 <html lang="en">
 <head>
    <!--引入-->
     <#import "spring.ftl" as spring>
     <#assign arg = ["AAA","张三"]>
     <title><@spring.messageArgs "title" ,arg /></title>
     <meta charset="UTF-8">
 </head>
 <body>
 <br/>
 <a class="changeLang" href="javascript:void(0);">english</a><br/>
 <a class="changeLang" href="javascript:void(0);">中文</a><br/>
 <!--使用-->
 <@spring.message code="user.loginname"/><br/>
 </body>
 <script src="${request.contextPath}/static/jquery.js"></script>
 <script>
     $(".changeLang").on("click", function () {
         switch ($(this).text()) {
             case "中文": {
                 window.location.href = "index?_lang=zh_CN";
                 break;
             }
             case "english": {
                 window.location.href = "index?_lang=en_US";
                 break;
             }
         }
     })
</script>
</html>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容