O, 什么是国际化
国际化 (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 模板引擎 https://www.cnblogs.com/Drajun/p/12219538.html , 则直接用 #{国际化配置} 便可.
运行起来后, 程序会根据浏览器设置的语言, 地区, 自动显示相应的配置.(谷歌浏览器可在 设置 -> 高级 - 语言 中设置)
三, 国际化如何起作用?
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
来源: http://www.bubuko.com/infodetail-3395562.html