编辑:我的Spring框架版本3.0.5
这是一个小问题,当我点击语言转换器链接时,语言没有改变。
语言文件(messages_xx.properties)位于classpath i18n目录中。文件是:
i18n/messages_en.properties
i18n/messages_ar.properties
Spring配置
<!-- Component scanner. This is used to automatically find Spring annotations like @Service and @Repository -->
<context:component-scan base-package="com.keype" />
<!-- Annotation driven programming model -->
<mvc:annotation-driven />
<context:annotation-config />
<mvc:resources mapping="/static/**" location="/static/" />
<!-- Session Object Configuration -->
<bean id="session" class="com.keype.system.Session" scope="session">
<aop:scoped-proxy />
</bean>
<!-- The View Resolver -->
<bean id="viewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/jsp/"
p:suffix=".jsp"
/>
<!-- i18n Configuration. Default language is english. Change language using ?language=en -->
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang" />
</bean>
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
<!-- Message text files. This is set UTF-8 to display Arabic UTF correctly. -->
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:i18n/messages" />
<property name="defaultEncoding" value="UTF-8"/>
</bean>
JSP代码的一部分
<a href="?lang=ar"><spring:message code="header.arabic" /></a> |
<a href="?lang=en"><spring:message code="header.english" /></a>
问题是,当我单击上面的链接更改语言时,区域设置更改功能无效。我通过将“defaultLocate”更改为“ar”进行测试,并且我收到了阿拉伯语文本。
这里可能有什么问题? tomcat日志中也没有任何内容。
答案 0 :(得分:29)
您必须在Spring-MVC的MVC拦截器中注册 localeChangeInterceptor 才能考虑它。将拦截器添加到配置中:
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="lang"></property>
</bean>
</mvc:interceptors>
答案 1 :(得分:2)
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"
p:paramName="lang" />
</mvc:interceptors>
<bean id="localeResolver"
class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="defaultLocale" value="en" />
</bean>
答案 2 :(得分:1)
另一件可以帮助他人的事情:
在我的情况下,我必须添加applicationContext.xml。把它放在spring-servlet(参见调度程序)中,根本没用。
答案 3 :(得分:0)
你需要在mvc拦截器标签内注册LocaleChangeInterceptor,如下所示,
E.g。
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="siteLanguage" />
</bean>
</mvc:interceptors>
我遇到了同样的错误,它使用了这段代码: - )