Spring Boot系列(4)——实现国际化

〇、什么是国际化

  国际化(internationalization,简称i18n),对不同的语言环境提供一个不同的资源文件,可以笼统地理解为语言切换。

  本文以中英文切换为例。

 

一、添加国际化配置文件

  1.在类路径下新建国际化配置文件,当IDEA检测到我们需要做国际化处理时,会自动切换到国际化视图:

  2.注意:国际化配置文件得用.properties文件,文件名格式为 [基名]_[语言代码]_[国家代码].properties。配置文件的中文可能会出现乱码,注意设置IDEA的编码。

  在File->Settings...File Encodings中设置:

  

 

 

  3.其中,login.properties是默认显示,login_en_US是英文显示,login_zh_CN是中文显示,我们需编写每一个需要国际化显示的内容。

  4.SpringBoot项目国际化配置文件的基名默认是“message”,而图中我们的基名是i18n下的login,这就得在全局配置文件中设置这一基名:

    application.properties:spring.message.basename=i18n.login

  

 

 

二、在页面中标记

  使用thymeleaf模板引擎,则直接用 #{国际化配置} 便可。

  运行起来后,程序会根据浏览器设置的语言、地区,自动显示相应的配置。(谷歌浏览器可在 设置->高级-语言 中设置)

  

 

   

 

 三、国际化如何起作用?

  1.Spring Boot中的国际化支持

    

 

   2.语言与地区的设置

    该组件让整个国际化配置生效,并且由容器管理该组件的生命周期

    

    

 

 四、根据请求显示语言

  Spring Boot已经默认配置了国际化解析器组件LocaleResolver,当然我们也可以重新配置该组件,并加入到容器,以达到根据http请求切换国际化配置文件;

  1.作用流程:

    国际化解析器组件拦截每个请求->检查有无语言切换参数->若有,则使用Locale设置语言与地区。

  2.自定义国际化解析器:

    

 

  3.将解析器组件加入Spring Boot容器中

     

 

   4.请求URL

  在页面中加入以下标签,向后台提供国际化参数

1 <a class="btn btn-sm" th:href="@{/index(l='zh_CN')}">中文</a>
2 <a class="btn btn-sm" th:href="@{/index(l='en_US')}">English</a>

实际URL:
http://localhost:8080/index?l=zh_CN
http://localhost:8080/index?l=en_US

  

 

 

posted @ 2020-01-27 00:39  Drajun  阅读(720)  评论(0编辑  收藏  举报