springMVC项目国际化(i18n)实现方法

SpringMVC项目国际化(i18n)实现方法

  按照作息规律,每周五晚必须是分享知识的时间\(^o^)/~,这周讲点儿啥呢,项目需要逼格,咱们国际化吧(* ̄rǒ ̄)~,项目中碰到这类需求的童鞋可能并不多,但偶尔用到也会比较费时间滴;-),不如驻足本帖片刻吧︿( ̄︶ ̄)︿

  额,嗯~,记得一开始从事软件开发时在一个很轻量级的项目中碰到了一个貌似叼炸天的需求,什么?国际化?没听说过,不知道怎么玩儿。。。,谷歌翻帖快一周,大神们的神贴也看了许久,可就是解决不了我的项目需求,怎么办,加大神Q骚扰之~~(@^_^@)~,在正式写此文前特别要感谢“Erola”,他的原贴:http://www.cnblogs.com/liukemng/p/3750117.html,请在看本博之前先膜拜下大神的博文吧(⊙ ▽ ⊙),由于大神已经将国际化的集中用法都讲清楚了,遂,在此我会着重讲下实际开发中我所碰到的一个问题~

  我们的需求其实很简单,就是客户为方便歪果仁使用他们的系统,在界面上设置两个用于语言切换的link(中文|EN),切换后当前页面功能保持不变(就是不跳转),需要的时候手动切换,默认基于语言和位置的国际化就直接pass了(切换浏览器语言位置以切换页面语言),当然也不能在每个视图解析时让每个controller都顺带切换语言逻辑,这样可行,但对写代码来说~太过冗余!

  遂,比较可行的办法是基于关键字请求的页面切换,憋了老久,容我先上图哈~,如图>>>just like this to that--->

  

  SpringMVC自身是支持(这里使用的是spring-3.2),不用单独写代码来 实现页面的语言切换,看似很靠谱,但~,请注意,由于这个项目是内网使用的不涉及到增删改,所以之前把页面都放在WEB-INF外部,就像这样:

(所有controller只做数据处理)导致的一个问题是点到其他页面后页面语言又被还原了!为这个问题翻帖搞了许久许久,一直不明白为什么,在这里我总结下:所有不经过controller视图解析的目标页面都不会应用指定的语言区域!!!,切记,这个很重要很重要。

  已看过以上至理名言后,解决的办法其实很简单,在每个目标页面对应的controller里面加上一个默认的页面跳转,这样:

这样,只要切换语言,就不会出现上面提到的问题,明白以上的问题所在,以下就按部就班的配置:

  首先,需要在web-context.xml里面将i18n的bean配置到拦截器内(只需看第二行),以便在每个视图解析的时候都能应用到国际化--->

1     <mvc:interceptors>
2         <bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
3         <bean class="com.hst.core.spring.HttpCacheInterceptor"/>
4     </mvc:interceptors>

  然~,在WEB-INF下面的resources内增加这两个文件:

这里是中英文切换,如果有其它语言,则每种语言都单独写一个properties语言配置文件,请注意文件的命名。

  再~,在jsp页面眉头声明spring的标签库:

  再~,将以前每个页面显示的中文文本的地方用spring的message标签替换:

别忘记 :每个标签内的code的值是前面properties中对应的key,回头看看properties的内容就明了~--->

  如此,就差最后一步,也是最简单的一步:界面添加link,一般只需要在主jsp里面添加就可以了,位置自定哈~,告诉你个小秘密,你只需要这样就OK (~ ̄▽ ̄)~

  OK~终于完成~,分享知识是快乐的,祝大家周末愉快玩儿得happyヾ(o???)?ヾ

======小建议======

  properties文件里面的中文默认只显示成Unicode编码,如有大量的文本需要添加,建议使用properties editor插件,eclipse安装此插件请参考:http://www.cnblogs.com/panie2015/p/5637847.html

时间: 2024-10-14 08:31:04

springMVC项目国际化(i18n)实现方法的相关文章

项目记录:spring+springmvc 项目中 @Transactional 失效的解决方法

第一步,修改spring的配置文件和springmvc的配置文件 --------------------------------applicationContext.xml <context:annotation-config/>  <context:component-scan base-package="com.xxx"> <context:exclude-filter type="annotation" expression=&

介绍一个懒人创建springmvc项目的方法

PS: 我是一个懒人,我懒得搭建项目连pom都不想去找,连web.xml都不想配置.所以就会想着找一些简便的办法,来适应我这种懒人. ---------------------------- 本人介绍的是用eclipse和sts插件创建springmvc项目,其他项目目前用不着,等用着的时候在研究吧. 前提: 1 eclipse已经配置好jdk,tomcat和maven. 2 eclipse需要安装sts插件,可以在eclipse的MarketPlace里搜索spring关键字,找到与你ecli

SpringMVC的国际化

关于SpringMVC的国际化,http://www.cnblogs.com/liukemng/p/3750117.html这篇文章已经讲的很好了.它讲了有如下几种国际化方式 1:基于Http的header信息的国际化(request.getLocale()) 2:基于session的国际化(设置session的SessionLocaleResolver.LOCALE_SESSION_ATTRIBUTE_NAME 3:基于COOKIE的国际化 4:基于URL的国际化 基于session的实现方式

使用Eclipse构建Maven的SpringMVC项目 【转】

首先Eclipse需要安装Maven的插件,地址:http://m2eclipse.sonatype.org/sites/m2e. 用MyEclipse安装Maven插件,建出的Maven项目有些问题.一是,发布tomcat的时候resources总是不会被发布到tomcat下:二是,把WEB-INF下的classes改到target下的classes,但是不知道为什么MyEclipse要么仍然在WEB-INF下生成class.要么真不在WEB-INF生成classes了但是发布tomcat的时

使用Eclipse构建Maven的SpringMVC项目【转】

首先Eclipse需要安装Maven的插件,地址:http://m2eclipse.sonatype.org/sites/m2e. 用MyEclipse安装Maven插件,建出的Maven项目有些问题.一是,发布tomcat的时候resources总是不会被发布到tomcat下:二是,把WEB-INF下的classes改到target下的classes,但是不知道为什么MyEclipse要么仍然在WEB-INF下生成class.要么真不在WEB-INF生成classes了但是发布tomcat的时

javaweb学习总结(三十一)——国际化(i18n)

一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationalization)又称为 i18n(读法为i 18 n,据说是因为internationalization(国际化)这个单词从i到n之间有18个英文字母,i18n的名字由此而来) 二.合格的国际化软件 软件实现国际化,需具备以下两个特征: 1.对于程序中固定使用的文本元素,例如菜单栏.导航条等中使用的文本

使用Eclipse构建Maven的SpringMVC项目

使用Eclipse构建Maven的SpringMVC项目 ? 用maven的好处: 1 最主要就是自动下载jar包和它所依赖的包, 2保证多人开发时jar版本不同的问题 3 文件结构清晰,java文件,资源文件,测试文件都分的很清楚. 将介绍两种方法:一,直接建立Maven项目方法:二.建立Dynamic Web project转成Maven项目方法. ?? ? ? ?将介绍两种方法:一,直接建立Maven项目方法:二.建立Dynamic Web project转成Maven项目方法. 一.直接

springMVC项目引入jstl标签库若干问题的总结

中午,不知道动到项目的哪个地方了,之前在联系人列表页面用的好好的jstl标签库突然报错了:<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>的时候报错,说找不到uri.我之前是配置好了的,于是在Eclipse菜单条找到project-clean,清理当前项目,然后就好了.假设这种方法行不通,而你的项目恰好又是通过Maven来管理的,那么能够在项目上右键-选择run as-Maven

SpringMvc项目中使用GoogleKaptcha 生成验证码

SpringMvc项目中使用GoogleKaptcha 生成验证码 前言:google captcha 是google生成验证码的一个工具类,其原理是将随机生成字符串保存到session中,同时以图片的形式返回给页面,之后前台页面提交到后台进行对比. 1.jar包准备 官方提供的pom应该是 <dependency> <groupId>com.google.code.kaptcha</groupId> <artifactId>kaptcha</arti