2013-08-17 57 views
1

我想添加国际化到我的Spring MVC应用程序。我知道它可以是一个复制问题,但我已经尝试了从stackoverflow和谷歌的所有解决方案,但仍然无法工作。我会详细解释。这里是Spring MVC 3 localeChangeInterceptor

的web.xml

<context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value>/WEB-INF/spring/root-context.xml</param-value> 
    </context-param> 

根的context.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 

    <!-- Root Context: defines shared resources visible to all other web components --> 


    <!-- Localization Start --> 

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

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

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

    <bean id="handlerMapping" 
     class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"> 
     <property name="interceptors"> 
      <ref bean="localeChangeInterceptor" /> 
     </property> 
    </bean> 


    <!-- Localization End --> 

</beans> 

我有messages_en.properties和messages_tr.properties文件。他们工作正常,因为当我将defaultLocale更改为en或tr时,我从属性文件中获得了真正的标签。 但问题是,当我从浏览器?lang=tr or ?lang=en尝试没有什么改变。

感谢您的关注!

+0

检查每个配置只有一个“HandlerMapping”。 – aim

回答

9

如果你正在使用Spring Security的 把MVC里面你LocaleChangeInterceptor:拦截器标签像

<mvc:interceptors> 
    <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> 
     <property name="paramName" value="language" /> 
    </bean> 
    </mvc:interceptors> 

和删除的HandlerMapping从configuration.Hope豆它将工作。

+1

我已经用这种方式解决了我的问题。但无论如何,我会检查它作为接受的答案。谢谢 –