Most parts of Spring's architecture support internationalization,
just as the Spring web MVC framework does.
DispatcherServlet enables you to automatically
resolve messages using the client's locale. This is done with
When a request comes in, the
DispatcherServlet looks for a locale resolver and
if it finds one it tries to use it to set the locale. Using the
RequestContext.getLocale() method, you can always
retrieve the locale that was resolved by the locale resolver.
Besides the automatic locale resolution, you can also attach an interceptor to the handler mapping (see Section 15.4.1, “Intercepting requests - the HandlerInterceptor interface” for more information on handler mapping interceptors), to change the locale under specific circumstances, based on a parameter in the request, for example.
Locale resolvers and interceptors are all defined in the
org.springframework.web.servlet.i18n package, and are
configured in your application context in the normal way. Here is a
selection of the locale resolvers included in Spring.
This locale resolver inspects the
accept-language header in the request that was sent
by the browser of the client. Usually this header field contains the
locale of the client's operating system.
This locale resolver inspects a
might exist on the client, to see if a locale is specified. If so, it
uses that specific locale. Using the properties of this locale resolver,
you can specify the name of the cookie, as well as the maximum age. Find
below an example of defining a
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"> <property name="cookieName" value="clientlanguage"/> <!-- in seconds. If set to -1, the cookie is not persisted (deleted when browser shuts down) --> <property name="cookieMaxAge" value="100000"> </bean>
|cookieName||classname + LOCALE||The name of the cookie|
|cookieMaxAge||Integer.MAX_INT||The maximum time a cookie will stay persistent on the client. If -1 is specified, the cookie will not be persisted. It will only be available until the client shuts down his or her browser.|
|cookiePath||/||Limits the visibility of the cookie to a certain part of your site.. When cookiePath is specified, the cookie will only be visible to that path, and the paths below it.|
SessionLocaleResolver allows you to
retrieve locales from the session that might be associated with the
You can build in changing of locales by adding the
LocaleChangeInterceptor to one of the handler
mappings (see Section 15.4, “Handler mappings”). It will detect a
parameter in the request and change the locale. It calls
setLocale() on the
LocaleResolver that also exists in the
context. The following example shows that calls to all
*.view resources containing a parameter named
siteLanguage will now change the locale. So, for
example, a request for the following URL,
change the site language to Dutch.
<bean id="localeChangeInterceptor" class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor"> <property name="paramName" value="siteLanguage"/> </bean> <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="interceptors"> <list> <ref bean="localeChangeInterceptor"/> </list> </property> <property name="mappings"> <value>/**/*.view=someController</value> </property> </bean>