如何使用spring-boot和thymeleaf设置标准的i18n语言环境?

时间:2016-05-10 09:26:03

标签: java spring spring-boot internationalization thymeleaf

我使用以下配置将i18n集成到我的应用程序中:

@Configuration
public class LocaleConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
        localeChangeInterceptor.setParamName("lang");
        registry.addInterceptor(localeChangeInterceptor);
    }

    @Bean
    public MessageSource messageSource() {
        ReloadableResourceBundleMessageSource messageSource = new ReloadableResourceBundleMessageSource();
        messageSource.setBasename("classpath:/i18n/application");
        messageSource.setDefaultEncoding("UTF-8");
        return messageSource;
    }

}

我设置了“en”和“de”的属性,到目前为止一切正常。

如果我从西班牙进入该页面,例如我只能从我的html文件中看到占位符。但是,我希望实现标准语言为没有现有属性配置的语言/国家的英语(“en”)。所以我尝试了这个:

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
    sessionLocaleResolver.setDefaultLocale(Locale.US);
    return sessionLocaleResolver;
}

它根据我的需要将默认设置为英语,但现在每个页面(也包含特殊语言的现有属性)都以英语显示。

1 个答案:

答案 0 :(得分:2)

哟必须删除此

@Bean
public LocaleResolver localeResolver() {
    SessionLocaleResolver sessionLocaleResolver = new SessionLocaleResolver();
    sessionLocaleResolver.setDefaultLocale(Locale.US);
    return sessionLocaleResolver;
}

并在src\main\resources\i18n中添加英文默认application.properties

那应该解决你的问题