春季i18n的行为在Windows和Linux之间是不同的
问题描述:
我使用Spring boot i18n。春季i18n的行为在Windows和Linux之间是不同的
在windows中,如果选择的区域设置没有语句A,它将使用messages.properties中的语句。
在CentOS中,如果选择的语言环境没有句子A,它将首先使用messages_en_US.properties中的句子,如果messages_en也没有句子,它将使用messages.properties中的句子。
为什么它不同?
@Bean
public LocaleResolver localeResolver() {
CookieLocaleResolver clr = new CookieLocaleResolver();//also can use SessionLocaleResolver
clr.setDefaultLocale(Locale.SIMPLIFIED_CHINESE);
return clr;
}
@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {
LocaleChangeInterceptor lci = new LocaleChangeInterceptor();
lci.setParamName("locale");
return lci;
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(localeChangeInterceptor());
}
答
我也解释不清楚的行为,但它可以通过ResourceBundle.Control.getFallbackLocale
引起的。 Javadoc说:
如果给定语言环境不是默认语言环境,默认实现将返回默认语言环境。
因此,我建议检查Java默认语言环境是否有所作为。