首页 > 代码库 > Spring MVC国际化配置
Spring MVC国际化配置
写在前面
项目开发中要考虑支持国际化,框架选用的是Spring MVC框架,这里查询相关资料,整理下Spring MVC如何配置并实现国际化。
具体实现
对于Spring MVC的国际化这里我是基于session来实现的,具体做法如下:
1、首先我们需要在XML配置文件中进行如下配置:
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"> <!-- 国际化信息所在的文件名 --> <property name="basename" value=http://www.mamicode.com/"lang.messages" /> >
这里核心的配置是配置资源文件路径"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 System ms.copyRight=CopyRight@2014 CQ ms.langEN=English ms.langZH=Chinese
4、前端界面调用。项目使用的是Velocity模板引擎构建页面,在.vm文件中的调用方式为如下形式:
#springMessage("ms.copyRight")
Spring MVC国际化配置
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。