Saturday, 17 August 2013

Spring MVC 3 localeChangeInterceptor

Spring MVC 3 localeChangeInterceptor

I want to add Internationalization to my Spring MVC application. I know it
can be a copy question but I have tried all solutions from both
stackoverflow and google but still could not get working. I will explain
in details. Here is
web.xml
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>
root-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>
I have messages_en.properties and messages_tr.properties files. And they
are working true, because when I change defaultLocale to en or tr , I get
true labels from properties file. But the problem is that when I try from
browser ?lang=tr or ?lang=en nothing changes.
Thanks for attention!

No comments:

Post a Comment