Spring不使用默认语言环境中的源

时间:2013-09-22 16:19:11

标签: java spring spring-mvc

我在spring配置中更改了默认语言环境,但是spring总是使用messages_en.properties而不是messages.properties.It似乎忽略了我对语言环境的选择。

已定义的语言:

messages.properties
messages_en.properties

Spring配置: 应用context.xml中

<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
  <property name="defaultLocale" value="cs"/>
</bean>

<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
    <property name="paramName" value="lang" />
</bean>

<bean name="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
  <property name="basenames">
    <list>
      <value>messages</value>
    </list>
  </property>
  <property name="defaultEncoding" value="UTF-8" /> 
</bean>

servlet的context.xml中

<mvc:interceptors>
 <mvc:interceptor>
  <mvc:mapping path="/**" />
  <exclude-mapping path="/admin/**"/>
  <exclude-mapping path="/image/**"/>
  <exclude-mapping path="/ajax/**"/>
  <beans:bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
 </mvc:interceptor>
</mvc:interceptors>

在JSP页面

<spring:message code="csn.terminology.csnId" />
<p>Current Locale : ${pageContext.response.locale}</p> 
<!-- output is 'cs', but messages are from messages_en.properties file --> 

在项目中使用Spring Framework 3.2.4 提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

如果是完整配置,则忘记添加区域设置解析器 您可以像这样添加SessionLocaleResolver并设置默认语言环境属性

<bean id="localeResolver"
        class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <property name="defaultLocale" value="en"></property>
    </bean>

答案 1 :(得分:0)

当语言环境为空时,AbstractMessageSource调用Locale.getDefault()

因此,您应该将set default locale设置如下:

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