标签:国际化 spring mvc i18n
项目开发中要考虑支持国际化,框架选用的是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>
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;
    }
3、准备语言文件,这里举例中文、English: messages_en.properties 和 messages_zh.properties
里面的内容已键值对的形式存储了前端界面需要的信息(各种语言),简单的看下英文文件里面的内容。
ms.sysName=Manager System ms.copyRight=CopyRight@2014 CQ ms.langEN=English ms.langZH=Chinese
            项目使用的是Velocity模板引擎构建页面,在.vm文件中的调用方式为如下形式:
#springMessage("ms.copyRight")
标签:国际化 spring mvc i18n
原文地址:http://blog.csdn.net/lcore/article/details/42126203