SpringBoot之頁面國際化

最近在做項目的過程中,提到了頁面國際化的需求。

故此總結,以備溫習和幫助大家。

一:環境

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(重新編譯)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章