Spring MVC プロジェクトに i18n をセットアップしました。リンクをクリックしても言語が変わらない:
<a href="?lang=hi">Hindi</a>
<a href="?lang=en">English</a>
controller-servlet.xml
<mvc:annotation-driven/>
<context:component-scan base-package="com.avvas.search.controller" />
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
<bean id="messageSource" class="org.springframework.context.support.ReloadableResourceBundleMessageSource">
<property name="basename" value="classpath:resources/messages" />
<property name="defaultEncoding" value="UTF-8"/>
<property name="cacheSeconds" value="0" />
</bean>
<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.CookieLocaleResolver">
<property name="defaultLocale" value="en"/>
</bean>
<bean id="handlerMapping"
class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping">
<property name="interceptors">
<ref bean="localeChangeInterceptor" />
</property>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
<property name="prefix" value="/WEB-INF/pages/" />
<property name="suffix" value=".jsp" />
</bean>
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/javascript/**" location="/javascript/" />
ローカル変更リンク:
<a href="?lang=hi">Hindi</a>
<a href="?lang=en">English</a>
問題は、ヒンディー語をクリックするとページがヒンディー語で表示され、言語が変更されないことです。ただし、デフォルトの言語をヒンディー語に変更<property name="defaultLocale" value="hi"/>
すると、ローカルはヒンディー語として使用されますが、英語のローカル変更リンクをクリックすると、ローカルは変更されません。