我想将Internationalization添加到我的Spring MVC应用程序中。我知道这可能是一个复制问题,但我已经尝试了stackoverflow和谷歌的所有解决方案,但仍然无法正常工作。我会详细解释一下。这是
的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 :(得分:10)
如果您使用弹簧安全 将你的LocaleChangeInterceptor放在mvc:interceptors标签中,如
<mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
<property name="paramName" value="language" />
</bean>
</mvc:interceptors>
并从configuration.Hope中删除handlerMapping bean。它将起作用。