【问题标题】:Spring default locale not working as I expected for CookieLocaleResolverSpring 默认语言环境无法按我对 CookieLocaleResolver 的预期工作
【发布时间】:2017-09-14 05:42:42
【问题描述】:

我要翻译的文本有两个文件:

messages_es_ES.properties messages_en_US.properties

我正在使用 CookieLocaleResolver:

@Bean
public LocaleResolver localeResolver() {
    CookieLocaleResolver cookieLocaleResolver = new CookieLocaleResolver();
    cookieLocaleResolver.setCookieName("language");
    cookieLocaleResolver.setCookieMaxAge(3600);
    cookieLocaleResolver.setDefaultLocale(new Locale("es_ES"));
    return cookieLocaleResolver;
}

还有这个 LocaleChangeInterceptor:

@Bean
public LocaleChangeInterceptor localeChangeInterceptor() {        
    LocaleChangeInterceptor localeChangeInterceptor = new LocaleChangeInterceptor();
    localeChangeInterceptor.setParamName("language");
    return localeChangeInterceptor;
}

@Override
public void addInterceptors(InterceptorRegistry registry) {
    registry.addInterceptor(localeChangeInterceptor());
}

在我的 jsp 中,我使用以下链接:

<a href="?language=en_US">EN</a> 
<a href="?language=es_ES">ES</a>

一切正常,当我点击一个链接时,语言会正确更改,但是当我启动应用程序时,所有内容都以英语显示(在系统区域设置中,更具体地说),即使我将“es_ES”设置为默认语言环境。

【问题讨论】:

标签: java spring spring-mvc internationalization


【解决方案1】:

已解决,如@noobandy here 所述,我将属性 setFallbackToSystemLocale 从 ResourceBundleMessageSource 更改为 false。 现在一切正常。

【讨论】:

    【解决方案2】:

    您可以按如下方式设置默认语言环境:

       @Bean
       public MessageSource messageSource() {
          ResourceBundleMessageSource messageSource=new ResourceBundleMessageSource();
          messageSource.setBasename("messages");
          // SET DEFAULT LOCALE AS WELL
          Locale.setDefault(Locale.US);
          return messageSource;
       }
    

    当 locale 为 null 时,AbstractMessageSource 调用 Locale.getDefault()

    【讨论】:

      猜你喜欢
      • 2018-06-13
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 2016-07-13
      • 2014-03-31
      • 1970-01-01
      • 2011-10-29
      • 2016-09-07
      相关资源
      最近更新 更多