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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

伽利略远程监控系统完全安装指南

7月初,外媒用臭名昭著形容意大利的网络军火商公司hacking team及其被黑事件,黑吃黑的黑客将该公司rcs系统的安装程序、源代码和邮件打包供所有人下载,更...

36210
来自专栏技术翻译

为微服务架构编写端到端测试

微服务架构的一个主要方面是应用程序形成为松散耦合的服务的集合,每个服务可以独立地部署并且通过某种轻型协议相互通信。

1941
来自专栏微信终端开发团队的专栏

Android微信智能心跳方案

前言: 在13年11月中旬时,因为基础组件组人手紧张,Leo安排我和春哥去广州轮岗支援。刚到广州的时候,Ray让我和春哥对Line和WhatsApp的心跳机制进...

1.1K10
来自专栏电光石火

idea 创建的maven+spring+mybatis项目整合 报错无法创建bean

最近在做一个由maven构建的spring+spring mvc+mybatis项目,刚开始的时候是用自己的电脑Win10环境下的eclipse写的,托管到了码...

3366
来自专栏FreeBuf

搭建dvwa环境学习从MySql注入到GetShell

是啊,在项目上的系统每周每个月经过几十遍的过滤,平时看到提交参数的地方也就sqlmap跑一跑,对于最基础的手工注入都没有扎实的学会,于是我决定要知道如何搭建环境...

1693
来自专栏SAP最佳业务实践

SAP最佳业务实践:FI–资产会计(162)-24定期处理-AJRW会计年度更改

4.7.8 AJRW会计年度更改 从系统角度看,会计年度的更改表示公司代码的新会计年度的创建。在更改会计年度时,将上一会计年度的资产值累计结转至新的会计年度。...

3598
来自专栏python开发者

python的高性能web应用的开发与测试实验

python的高性能web应用的开发与测试实验 tornado“同步和异步”网络IO模型实验 引言 python语言一直以开发效率高著称,被广泛地应用于自动化领...

3138
来自专栏小白课代表

最优秀好用的免费文件压缩/解压缩工具软件

若常常需要与 Mac 用户交换文件,或是购买一些国外的数字商品(如我购买的日本同人志),常常会遇见压缩包打开是一片一片的乱码文件名的状况。编码问题一直是造成乱码...

1061
来自专栏web编程技术分享

简单粗暴,详细得不要不要的 JavaWeb快速入门

3929
来自专栏Fundebug

XSS攻击之窃取Cookie

译者按: 10 年前的博客似乎有点老了,但是XSS 攻击的威胁依然还在,我们不得不防。

1755

扫码关注云+社区

领取腾讯云代金券