Spring国际化原理浅析

4 篇文章 0 订阅

Spring国际化原理浅析

最近在做Spring国际化,虽然之前知道Spring是支持国际化的,但是在配置的时候遇到了一些问题,所以看了一些源码,简单记录一下。

quick start

  1. 配置i18n的basename,例如spring.messages.basename=i18n/message
    注意这个basename并不是路径,而是路径+i18n文件的前缀,所以这样配置会匹配到i18n/message_en_US.properties,i18n/message_zh_CN.properties等等。
  2. 配置locale的解析类和interceptor,用来获取要转换的locale.
    /**
      * localResolver
      */
    @Bean
     public LocaleResolver localeResolver() {
         SessionLocaleResolver slr = new SessionLocaleResolver();
         slr.setDefaultLocale(Locale.US);
         return slr;
     }
     /**
       * local change的拦截器
       */
    @Bean
     public LocaleChangeInterceptor localeChangeInterceptor() {
         LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
         lci.setParamName("lang");
         return lci;
     }
    
    localeResolver有三种,cookie,session,fixed,根据需求配置
  3. 在对应的模板中使用相应的方式去获取。
    比如velocity中就是#springMessage('xxx'), 在thymleaf中就是<h1 th:text="#{greeting}"></h1>

原理

根本原理是根据国际化获取对应的ResourceBundle,如果为空,则默认去message.properties.

locale变更处理过程

在这里插入图片描述

获取message过程

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值