码迷,mamicode.com
首页 > 编程语言 > 详细

SpringMVC 资源国际化实现以及常见问题

时间:2017-11-11 19:50:28      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:手动   文件的   重点   accept   使用   建议   ase   efault   文件中   

资源国际化可以很方便的实现web项目语言的切换,解决了web项目按需显示不同语言界面的问题.

SpringMVC 的资源国际化基于JDK的java.util.ResourceBundle实现,经过SpringMVC的封装实现起来非常简单:

 

简单实现具体步骤如下:

  1.在SpringMVC的配置文件中配置ResourceBundleMessageSource(该类的作用是绑定资源文件,根据Locale值不同,显示不同的语言)

 1     <!-- 资源国际化相关配置 -->
 2     <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
 3         <!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称  -->
 4         <property name="useCodeAsDefaultMessage" value="true" />
 5         <!-- 默认编码格式为 utf-8 -->
 6         <property name="defaultEncoding" value="UTF-8" />
 7         <!-- 国际化信息所在的文件名 --> 
 8         <property name="basenames">                    
 9             <list>
10                 <value>i18n.messages</value>
11             </list>
12         </property>
13     </bean>

           (PS:basenames属性,值为资源文件的地址)

  2.配置LocaleResolver(该类指明了Locale应该存放在何处)

    LocaleResolver有三种选择,分别是基于request,基于session,基于cookie,因为基于request的实现不支持手动切换,建议使用基于session的实现

    三种方式的配置具体如下:

     a.基于request的实现:

    <!-- 基于request实现资源国际化 -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.AcceptHeaderLocaleResolver" />

                  b.基于session的实现:

    
    <!-- 基于Session实现资源国际化 -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver">
        <property name="defaultLocale" value="en"/>
    </bean>

       c.基于cookie的实现

    <!-- 基于cookie实现资源国际化 -->
    <bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
        <property name="defaultLocale" value="en"/>
    </bean>

  3.配置localeChangeInterceptor拦截器(该类的作用是根绝不同的LocaleResolve采用不同的方式设置Locale)

    <mvc:interceptors>
        <bean id="localeChangeInterceptor"
            class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor">
            <property name="paramName" value="langType" />
        </bean>
    </mvc:interceptors>

  (paramName属性,是指请求中 切换语言的参数名)

  4.编写资源文件

    资源文件的命名规则是 basename [ _language ] [ _country ] [ _variant ].properties 

    languange country variant  需要为Locale类中的值

  5.页面获取资源文件中的值(以jsp为例)

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

<spring:message code="comment.management" /> <!-- code的值为资源文件中对应的key -->

        6.页面切换语言

      这种方式实现的资源国际化,会拦截所有的请求,只要请求中带有 localeChangeInterceptor 中定义的参数,拦截器就会修改存储的Locale,实现语言的切换

 

常见问题(重点)(待补充,请稍后):

  1.基于session不使用拦截器实现

  2.资源文件的加载顺序

       3.默认语言的设置

 

    

 

    

SpringMVC 资源国际化实现以及常见问题

标签:手动   文件的   重点   accept   使用   建议   ase   efault   文件中   

原文地址:http://www.cnblogs.com/LionheartCGJ/p/7819688.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!