LocaleChangeInterceptor

LocaleChangeInterceptor

我使用Spring Boot i18n。

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

07-25 23:58