【问题标题】:spring i18n behavior is different between Windows and LinuxWindows 和 Linux 之间的 spring i18n 行为不同
【发布时间】:2016-11-25 07:03:28
【问题描述】:

我使用 Spring Boot i18n。

在windows中,如果选择的locale没有句子A,就会使用messages.properties中的句子。

在CentOS中,如果选择的locale没有句子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());
}

【问题讨论】:

    标签: java linux spring internationalization


    【解决方案1】:

    我无法准确解释这种行为,但它可能是由ResourceBundle.Control.getFallbackLocale 引起的。 Javadoc 说:

    如果给定的语言环境不是默认语言,则默认实现会返回默认语言环境。

    所以,我建议检查 Java 默认语言环境是否有所不同。

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 2013-12-01
      • 1970-01-01
      • 2010-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多