如何使用 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 在一个数据库中使用多个模式?