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