Springmvc框架本地化和国际化

来源:互联网 发布:淘宝店铺最怕什么 编辑:程序博客网 时间:2024/05/16 14:13

springMVC的本地化和国际化

   spring框架的大部分都支持国际化,就像springMVC一样。DispatcherServlet使你能够动态的通过客户端的本地语言进行配置。这是通过LocaleResolver完成的。
   当一个请求到达,DispatcherServlet就会寻找LocaleResolver,如果找到就会试图通过它进行本地化。通过RequestContext.getLocale()方法我们可以得到locale resolver解释的本地化语言。
   Locale resolvers和拦截器定义在org.springframework.web.servlet.i18n包中,并且可以在application context中进行配置。下面是本地化解析器的配置部分。

一、AcceptHeaderLocaleResolver
   这个Locale resolvers依据 accept-language请求头信息进行解析处理,通常这个头信息包含客户端操作信息的本地标示。
二、CookieLocaleResolver
   这个解析器通过cookie寻找客户端特定的语言信息。如果找到,则使用这个配置。使用这个Locale resolvers的一些属性,我们可以指定这个cookie的名称甚至是最大存活时间。下面是一个配置实例:
e.g.

[html] view plain copy
  1. <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">  
  2.   
  3.     <property name="cookieName" value="clientlanguage"/>  
  4.      
  5.     <!-- in seconds. If set to -1, the cookie is not persisted (deleted when browser shuts down) -->  
  6.     <property name="cookieMaxAge" value="100000">  
  7.   
  8. </bean>  

下面是CookieLocaleResolver的属性列表
 property default   description
      cookieName classname+LOCAL  cookie的名称
 cookieMaxAge Integer.MAX_INT  最大存活时间
 cookiePath /   限制可以访问cookie的程序路径。

三、 SessionLocaleResolver
   这个解析器允许你通过session解析本地设置。
四、LocaleChangeInterceptor
   通过配置LocaleChangeInterceptor,我们可以动态改变本地语言。它会检测请求中的参数并且改变地区信息。它调用LoacalResolver.setLocal()进行配置。下面的例子显示了,调用所有的*.view资源包含一个名字叫做siteLanguage的变量,来改变地区信息。所以下面的URL:http://www.sf.net/home.view?siteLanguage=nl 将会改变站点语言为荷兰语。
e.g.

[html] view plain copy
  1.  <bean id="localeChangeInterceptor"  
  2.       class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">  
  3.     <property name="paramName" value="siteLanguage"/>  
  4. </bean>  
  5.   
  6. <bean id="localeResolver"  
  7.       class="org.springframework.web.servlet.i18n.CookieLocaleResolver"/>  
  8.   
  9. <bean id="urlMapping"  
  10.       class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">  
  11.     <property name="interceptors">  
  12.         <list>  
  13.             <ref bean="localeChangeInterceptor"/>  
  14.         </list>  
  15.     </property>  
  16.     <property name="mappings">  
  17.         <value>/**/*.view=someController</value>  
  18.     </property>  
  19. </bean> 

0 0
原创粉丝点击