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

mv1qrgav  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(672)

我使用以下配置将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;
}

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

6xfqseft

6xfqseft1#

你必须删除这个

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

和加载项 src\main\resources\i18n 默认值 application.properties 用英语
那应该能解决你的问题

相关问题