Fork me on Gitee

Spring Boot 2.X 国际化

 国际化文件的编写

 

页面非连接配置国际化只需要:

 spring.messages.basename=i18n.login

 

1: 1.5X版本配置的方式 今天发现已久不行了

  链接配置

  编写类 实现LocaleResover

public class LocaleSetting implements LocaleResolver {

    @Override

    public Locale resolveLocale(HttpServletRequest request) {

        /**

         * l=('en_US) 取得连接字符串

         */

        String lstr = request.getParameter("l");

        Locale locale = Locale.getDefault();

        if(!StringUtils.isEmpty(lstr)){

            String[] split = lstr.split("_");

            locale = new Locale(split[0],split[1]);

        }

        return locale;

    }

    @Override

    public void setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale) { }

}

 

 

一个Spring Boot 只需要存在一个继承 WebMvcConfigurationSupport,所以都在这个类 配置

# 在下面这里配置

public class AppConfig extends WebMvcConfigurationSupport

/**

 * 配置国际化

 */

@Bean

public LocaleResolver initLocale(){

    return new LocaleSetting();

}

2: 2.x版本的配置方式

/**
     * 拦截器映射
     */
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(localeChangeInterceptor());
        super.addInterceptors(registry);
    }
    /**
     * 配置国际化
     */
    @Bean
    public LocaleResolver localeResolver() {
        SessionLocaleResolver slr = new SessionLocaleResolver();
        // 默认使用的语言
        slr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
        return slr;
    }

    @Bean
    public LocaleChangeInterceptor localeChangeInterceptor() {
        LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
        // 参数名 用于区别使用语言类型
        /**
         * <a class="btn btn-sm" th:href="@{index.html(l='en-US')}">中文</a>
         * <a class="btn btn-sm" th:href="@{index.html(l='zh-CN')}">English</a>
         */
        lci.setParamName("l");
        return lci;
    }

 

 

 

posted @ 2019-11-30 18:21  ---dgw博客  阅读(643)  评论(0编辑  收藏  举报