Spring MVC国际化配置

来源:互联网 发布:淘宝借贷逾期 编辑:程序博客网 时间:2024/04/23 22:34

写在前面

      项目开发中要考虑支持国际化,框架选用的是Spring MVC框架,这里查询相关资料,整理下Spring MVC如何配置并实现国际化。

具体实现

      对于Spring MVC的国际化这里我是基于session来实现的,具体做法如下:

      1、首先我们需要在XML配置文件中进行如下配置:

<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">    <!-- 国际化信息所在的文件名 -->                         <property name="basename" value="lang.messages" />       <!-- 如果在国际化资源文件中找不到对应代码的信息,就用这个代码作为名称  -->                   <property name="useCodeAsDefaultMessage" value="true" />           </bean>

      这里核心的配置是配置资源文件路径"lang.messages",因为项目是通过maven进行构建的,因此各语言资源文件可以直接放在Maven项目的resources路径下。


      2、基于session或cookies的要进行拦截配置,具体做法如下:

<mvc:interceptors>      <!-- 国际化操作拦截器 如果采用基于(请求/Session/Cookie)则必需配置 -->     <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />  </mvc:interceptors>  <!--local解析器--><bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />

      3、编写Controller代码用于切换语言。

@RequestMapping("/lang")@ResponseBody    public String lang(HttpServletRequest request){    String langType = request.getParameter("langType");            if(langType.equals("zh")){                Locale locale = new Locale("zh", "CN");                 request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);             }            else if(langType.equals("en")){                Locale locale = new Locale("en", "US");                 request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,locale);            }            else                 request.getSession().setAttribute(SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME,LocaleContextHolder.getLocale());            return null;    }


       能够知道的是,通过前端传递的语言类型,设置相应的语言环境Locale,之后Spring MVC内部根据Locale动态的选择去加载指定语言的.porperties文件,前端通过特定的表达式进行调用显示。


       3、准备语言文件,这里举例中文、English:    messages_en.properties   和   messages_zh.properties

            里面的内容已键值对的形式存储了前端界面需要的信息(各种语言),简单的看下英文文件里面的内容。

ms.sysName=Manager Systemms.copyRight=CopyRight@2014 CQms.langEN=Englishms.langZH=Chinese

         4、前端界面调用。

            项目使用的是Velocity模板引擎构建页面,在.vm文件中的调用方式为如下形式:

#springMessage("ms.copyRight")




 


1 0