轉載:https://www.jianshu.com/p/e2eae08f3255
首先說國際化文件,在application.yml 中進行配置
spring:
messages:
basename: i18n.login # 國際化文件夾路徑
encoding: UTF-8 # 編碼格式
然后在resource目錄下設置資源文件, 默認文件是login.properties
當你選擇resource bundle能夠對比各資源配置文件
接着配置一個攔截器
默認解析器:LocaleResolver
用於設置當前會話的默認的國際化語言。
默認攔截器:LocaleChangeInterceptor
指定切換國際化語言的參數名。例如?lang=zh_CN
表示讀取國際化文件login_zh_CN.properties
。
/** * 配置國際化語言 */ @Configuration public class LocaleConfig { /** * 默認解析器 其中locale表示默認語言 */ @Bean public LocaleResolver localeResolver() { SessionLocaleResolver localeResolver = new SessionLocaleResolver(); localeResolver.setDefaultLocale(Locale.US); return localeResolver; } /** * 默認攔截器 其中lang表示切換語言的參數名 * 在spring boot2.0 之后 通過繼承WebMvcConfigurer類 就可以完成攔截 * 在這里他直接返回了一個覆寫了addInterceptors方法的WebMvcConfigurer匿名對象 * 以十分簡潔的方式達成了他的目的 */ @Bean public WebMvcConfigurer localeInterceptor() { return new WebMvcConfigurer() { @Override public void addInterceptors(InterceptorRegistry registry) { LocaleChangeInterceptor localeInterceptor = new LocaleChangeInterceptor(); localeInterceptor.setParamName("lang"); registry.addInterceptor(localeInterceptor); } }; } }
使用的模板引擎是Thymeleaf,在頁面中需通過 th:xx="#{xxx.xxx}" 獲取對應的國際化翻譯值
切換國際化語通過在請求中附上攔截器中配置的參數lang即可
比如 “ http://127.0.0.1:8080?lang=en_US ” ?
不過一般都是在頁面加個按鈕吧...
<a href="?lang=zh_CN">簡體中文</a> <a href="?lang=en_US">English(US)</a><br>