SpringMVC的国际化

http://www.tuicool.com/articles/jA3yEvZ

对于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文件,前端通过特定的表达式进行调用显示。

 

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

 

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

ms.sysName=Material Manager System

ms.copyRight=CopyRight@2014 CQ CISDI INFO

ms.langEN=English

ms.langZH=Chinese

前端界面调用。

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

#springMessage("ms.copyRight")

国际化中文英文切换

<footer class="footer"><span class="logo"><b>CISDI Info</b></span>  #springMessage("pbs.copyRight")

     <a href="javascript:changeLang('zh');">#springMessage("pbs.langZH")</a>

     <a href="javascript:changeLang('en');">#springMessage("pbs.langEN")</a>

<script>

     function changeLang(lang){

    $.post("${basePath}/lang?langType="+lang,function(data,status){

        location.reload();

    });

     }

</script>

</footer>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值