SpringBoot-頁面國際化(五)
SpringBoot-頁面國際化(五)
參考微信公眾號:狂神說 頁面國際化
如果想實現頁面中英文切換,這時候就涉及到頁面國際化
一、準備工作
現在IDEA中設定編碼統一為UTF-8
編寫國際化配置檔案,抽取頁面需要顯示的國際化頁面訊息。我們可以去登入頁面檢視一下,哪些內容我們需要編寫國際化的配置
i18n配置檔案的編寫
1、 我們在resources資原始檔下新建一個i18n目錄,存放國際化配置檔案
2、 建立一個login.properties檔案,還有一個login_zh_CN.properties; 發現IDEA自動識別了我們要做國際化操作
3、 可以在這上面去新建一個檔案login_en_US.properties;
4、 接下來編寫配置,我們可以看到idea下面有另外一個檢視;
這個檢視我們點選+ 號就可以直接新增屬性了;我們新建一個login.tip,可以看到邊上有三個檔案框可以輸入
新增完所有屬性 檢視
login.properties :預設
login.btn=登入
login.password=密碼
login.remember=記住我
login.tip=請登入
login.username=使用者名稱
英文:
login.btn=Sign in
login.password=Password
login.remember=Remember me
login.tip=Please sign in
login.username=Username
中文:
login.btn=登入
login.password=密碼
login.remember=記住我
login.tip=請登入
login.username=使用者名稱
5、 配置這個messages的路徑;
spring.messages.basename=i18n.login
配置頁面
去頁面獲取國際化的值,檢視Thymeleaf的文件,找到message取值操作為:#{...}
。我們去頁面測試下:
去啟動專案,訪問一下,發現已經自動識別為中文的了 !
二、中英文切換按鈕
在Spring中有一個國際化的Locale (區域資訊物件);裡面有一個叫做LocaleResolver (獲取區域資訊物件)的解析器!
我們去我們webmvc自動配置檔案,尋找一下!看到SpringBoot預設配置:
@Bean
@ConditionalOnMissingBean
@ConditionalOnProperty(prefix = "spring.mvc", name = "locale")
public LocaleResolver localeResolver() {
// 容器中沒有就自己配,有的話就用使用者配置的
if (this.mvcProperties.getLocaleResolver() == WebMvcProperties.LocaleResolver.FIXED) {
return new FixedLocaleResolver(this.mvcProperties.getLocale());
}
// 接收頭國際化分解
AcceptHeaderLocaleResolver localeResolver = new AcceptHeaderLocaleResolver();
localeResolver.setDefaultLocale(this.mvcProperties.getLocale());
return localeResolver;
}
AcceptHeaderLocaleResolver 這個類中有一個方法
public Locale resolveLocale(HttpServletRequest request) {
Locale defaultLocale = this.getDefaultLocale();
// 預設的就是根據請求頭帶來的區域資訊獲取Locale進行國際化
if (defaultLocale != null && request.getHeader("Accept-Language") == null) {
return defaultLocale;
} else {
Locale requestLocale = request.getLocale();
List<Locale> supportedLocales = this.getSupportedLocales();
if (!supportedLocales.isEmpty() && !supportedLocales.contains(requestLocale)) {
Locale supportedLocale = this.findSupportedLocale(request, supportedLocales);
if (supportedLocale != null) {
return supportedLocale;
} else {
return defaultLocale != null ? defaultLocale : requestLocale;
}
} else {
return requestLocale;
}
}
}
那假如我們現在想點選連結讓我們的國際化資源生效,就需要讓我們自己的Locale生效 !
我們去自己寫一個自己的LocaleResolver,可以在連結上攜帶區域資訊!
修改一下前端頁面的中英文切換連結:
<!-- 這裡傳入引數不需要使用 ?使用 (key=value)-->
<a class="btn btn-sm" th:href="@{/index.html(l='zh_CN')}">中文</a>
<a class="btn btn-sm" th:href="@{/index.html(l='en_US')}">English</a>
自定義 LocaleResolver
//可以在連結上攜帶區域資訊
public class MyLocaleResolver implements LocaleResolver {
//解析請求
@Override
public Locale resolveLocale(HttpServletRequest request) {
String language = request.getParameter("l");
Locale locale = Locale.getDefault(); // 如果沒有獲取到就使用系統預設的
//如果請求連結不為空
if (!StringUtils.isEmpty(language)){
//分割請求引數
String[] split = language.split("_");
//國家,地區
locale = new Locale(split[0],split[1]);
}
return locale;
}
@Override
public void setLocale(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Locale locale) {
}
}
為了讓我們的區域化資訊能夠生效,我們需要再配置一下這個元件!在我們自己的MvcConofig下新增bean;
@Bean
public LocaleResolver localeResolver(){
return new MyLocaleResolver();
}
相關文章
- springboot頁面國際化Spring Boot
- 使用Vue i18n對前端頁面進行國際化處理Vue前端
- 國際化思考
- ios國際化iOS
- Java 國際化(一)Java
- Android國際化Android
- Jsf國際化JS
- iOS 國際化 && 本地化iOS
- iOS國際化(本地化)iOS
- 五分鐘搭建App設定頁面APP
- 頁面快取優化快取優化
- iOS 頁面效能優化iOS優化
- 頁面優化建議優化
- Java中的國際化Java
- Spring Webflux國際化SpringWebUX
- Webnovel 國際化實踐Web
- Grails國際化例項AI
- QT6 國際化QT
- jeecg 國際化處理
- Struts框架的國際化框架
- Java國際化小小示例Java
- Yii2-國際化
- 【spring 國際化】springMVC、springboot國際化處理詳解SpringMVCSpring Boot
- 國際網頁Web設計流程 (轉)網頁Web
- 如何進行頁面優化?優化
- App啟動頁面優化APP優化
- java 做頁面靜態化Java
- 如何在網際網路放置 HTML 頁面HTML
- iOS語言國際化(本地化)iOS
- Django國際化與本地化指南Django
- Spring-boot國際化Springboot
- vux UI 專案國際化UXUI
- 5分鐘前端國際化前端
- Laravel 文件閱讀:國際化Laravel
- ?HeyUI完成國際化支援啦????UI
- Android實現國際化Android
- struts國際化程式嘗試
- JAVA的國際化機制Java