SpringBoot專欄_web:如何快速配置i18n國際化,圖文結合附帶原始碼下載(第六講)
阿新 • • 發佈:2018-12-23
在之前開發當中配置國際化是比較繁瑣的,下面我們看下SpringBoot如何快速的配置國際化,以及國際化又哪些用途、配置當中我們遇到了哪些"坑",遇到問題大家可以留言,會為大家一一解答。
國際化配置要點:
1)、編寫國際化配置檔案;
2)、使用ResourceBundleMessageSource管理國際化資原始檔
3)、在頁面使用fmt:message取出國際化內容(前端使用的是Thymeleaf)
(備註)可以自定義配置通過重寫LocaleResolver實現切換效果
詳細步驟
1.建立配置檔案,其中包含中文、英文、預設等,然後在右側寫上相關配置即可(有以下幾點需要注意)
此步驟注意點:
紅線部分 1)現在的建立的配置檔案放在了i18n目錄下,自然目錄可以更改 。
紅線部分 2)寫配置檔案的時候中文如果不是utf-8編碼,此時頁面是會亂碼的(下面會給出解決方案).
紅線部分 3)點選Resource Bundle可快速新增我們要新增的配置專案
點選+號,然後在右側輸入資訊即可
更改成Utf-8編碼:File->Settings最下側改成utf-8即可
更改整個專案的編碼:如下圖 File->other settings->default settings 更改下面編碼即可
2.application.properties需要配置下i18n的路徑位置,如下
spring.messages.basename=i18n.login
3.其實這樣就可以用了,在頁面上獲取即可;部分程式碼如下
#非標籤內寫法 <div class="message">[[#{app.name}]]</div> #th:placeholder 取出 <input name="account" th:placeholder="#{login.username}" value="datacenter" type="text" lay-verify="required" class="layui-input" > #th:value取出 <input class="loginin" th:value="#{login.btn}" value="登入" lay-submit lay-filter="login" style="width:100%;" type="submit">
更改瀏覽器語言:顯示效果如下(chrome 在高階設定中切換不同的語言顯示也不同)
重點:如何手動切換語言呢
共2步驟:1.編寫類實現LocaleResolver 2.Bean注入
package com.limp.framework.boss.component;
import org.springframework.lang.Nullable;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.LocaleResolver;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.Locale;
/**
* @intro :
* @auth : shinians
* @time : 2018/12/22 15:36
* @website: www.shinians.com
*/
public class MyLocaleResolver implements LocaleResolver {
/**
* 編寫相應的邏輯 l引數區分,
* l='zh_CN'
l='en_US'
* @param request
* @return
*/
@Override
public Locale resolveLocale(HttpServletRequest request) {
String l = request.getParameter("l");
Locale locale = Locale.getDefault();
if(!StringUtils.isEmpty(l)){
String[] split = l.split("_");
locale = new Locale(split[0],split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, @Nullable HttpServletResponse httpServletResponse, @Nullable Locale locale) {
}
}
2.
現在就可以傳遞不同l引數進行切換語言了