spring-boot 國際化+使用者選擇國際化
阿新 • • 發佈:2019-02-02
1配置檔案
login.properties
login.btn=登陸~ login.password=密碼~ login.username=使用者名稱~login_en_US.properties
login.btn=Sign In login.password=Password login.username=UserNamelogin_zh_CN.properties
login.btn=登陸 login.password=密碼 login.username=使用者名稱
2啟動國際化(SpringBoot自動配置好了)
application.propertiesspring.messages.basename=i18n.login
2去頁面獲取國際化的值
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> </head> <body class="text-center"> <form action="#" > <label th:text="#{login.username}">username</label> <input type="text" name="username"> <label th:text="#{login.password}">password</label> <input type="password" name="password" > <br> <button type="submit" th:text="#{login.btn}">submit</button> <br> <a class="btn btn-sm" th:href="@{/login(l='zh_CN')}">中文</a> <a class="btn btn-sm" th:href="@{/login(l='en_US')}">English</a> </form> </body> </html>
當設定瀏覽器不同的語言時就有不同效果
2使用者選擇國際化
只要往容器中新增新的區域解析器就行
package feizhou.web.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.util.StringUtils; import org.springframework.web.servlet.LocaleResolver; import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.util.Locale; //使用WebMvcConfigurerAdapter可以來擴充套件SpringMVC的功能 @Configuration public class MyMvcConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers(ViewControllerRegistry registry) { //瀏覽器傳送 /,/login 請求來到login.html registry.addViewController("/").setViewName("login"); registry.addViewController("/login").setViewName("login"); } // 設定自定義區域解析器,載入到容器中(關鍵看這裡) @Bean public LocaleResolver localeResolver() { // 區域解析器,載入到容器中 return new LocaleResolver() { //解析url引數,生產區域物件 @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 request, HttpServletResponse response, Locale locale) { } }; } }
點選中文/點選英文