• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

春季i18n的行为在Windows和Linux之间是不同的

java 来源:Yuiffy 5次浏览

我使用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默认语言环境是否有所作为。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)