最近在做項目的過程中,提到了頁面國際化的需求。
故此總結,以備溫習和幫助大家。
一:環境
IDEA開發工具
SpringBoot開發框架
Thymeleaf模板引擎
二:目錄結構
1)java目錄下新建internation包,
新建MyLocaleResolver.java
2)在resource文件下新建i18n文件夾
新建login.properties(國際化配置文件)
中文:login_ch_CN.properties
英文:login_en_US.properties
三:編寫國際化配置文件
IDEA對於編寫國際化配置文件十分友好,
直接在resource bundle中添加property key即可
添加後效果如下
login.btn=登錄
login.password=密碼
login.remember=記住我
login.tip=請登錄
login.username=用戶名
四:Thymeleaf頁面
1)直接替換
<label class="sr-only" th:text="#{login.username}">Username</label>
2)替換placeholder內容
<input type="text" class="form-control" placeholder="Username" th:placeholder="#{login.username}" required="" autofocus="">
3)替換checkbox
<input type="checkbox" value="remember-me">
[[#{login.remember}]]
input標籤是自結束,所以不能用 th:text
4)中英文切換按鈕
<a class="btn btn-sm" th:href="@{/index.html(l='zn_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>
默認使用操作系統語言
如果點擊切換語言
在鏈接上攜帶國際化區域信息(括號傳值)
五:自定義區域信息解析器
1) MyLocalResolver implements LocaleResolver,
重寫resolveLocale方法
@Override
public Locale resolveLocale(HttpServletRequest request) {
//獲取參數l的值
String l = request.getParameter("l");
//最終返回的local對象
Locale local = Locale.getDefault();
if (!StringUtils.isEmpty(l)) {
String[] split = l.split("_");
//0是語言代碼,1是國家代碼
local = new Locale(split[0], split[1]);
}
return local;
}
注意:Local導包:java.util.Locale;
2)使用自己的LocaleResolver並加入容器
@Bean
public LocaleResolver localeResolver() {
return new MyLocaleResolver();
}
六:設置國際化資源文件的基礎名
默認設置是message,根路徑下
在application.xml中指定包名+文件名
spring.messages.basename=i18n.login
tips
爲避免修改頁面後頻繁重啓服務
#禁用緩存
spring.thymeleaf.cache=false
thymeleaf修改後:ctrl+F9(重新編譯)