前言
业务发展到一定程度,会有国际化的需求。
思路
实现文案多语言的思路很简单,配置多个语言的properties
文件,框架根据当前语言去对应属性文件里找到属性的值。
流程
创建属性文件
配置属性文件的路径和名称
spring默认属性路径是resources
目录下的以messages
开头的properties
文件。
如果放在resources
的i18n
目录下,则需要配置
spring.messages.basename=i18n/messages
需要注意的点
- 要给定默认的属性文件,即
messages.properties
。根据MessageSourceAutoConfiguration
的配置,如果没有默认属性文件,不会向容器注入一个MessageSource
。 - 切换了属性文件的文件夹后,要配置
spring.messages.basename
的值,让容器找到这些文件。
thymeleaf中的多语言国际化
消息总是有一个标识它们的键,Thymeleaf使用#{…}
语法指定国际化文本(与之对应的,变量用${…}
语法):
<p th:text="#{home.welcome}">Welcome to our grocery store!</p>
其中home.welcome
是messages*.properties
文件中的一个键。
语言定义
多语言是由java.util.Locale
对象定义的,如Local.CHINESE
就是zh
,Locale.TRADITIONAL_CHINESE
就是zh_TW
。