SpringBoot 國際化i8n


轉載: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> &nbsp;&nbsp;
<a href="?lang=en_US">English(US)</a><br>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM