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

Posted

技术标签:

【中文标题】如何使用 spring-boot 和 thymeleaf 设置标准 i18n 语言环境?【英文标题】:How to set a standard i18n locale using spring-boot and thymeleaf? 【发布时间】:2016-09-05 04:26:53 【问题描述】:

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

你必须删除这个

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

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

这应该可以解决您的问题

【讨论】:

以上是关于如何使用 spring-boot 和 thymeleaf 设置标准 i18n 语言环境?的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有spring-boot的情况下使用eureka+feign?

Spring-boot 和 Gradle:构建时间太长 - 如何调试?

如何避免使用 Spring-Boot 下载嵌入式 MongoDb

如何通过使用 JPA + Hibernate 和 Spring-boot 在一个数据库中使用多个模式?

如何使用 Spring-Boot 播种 Spring-Security

如何使用 spring-boot gradle 插件进行 proguard