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配置到拦截器内(只需看第二行),以便在每个视图解析的时候都能应用到国际化--->

     <mvc:interceptors>
<bean class="org.springframework.web.servlet.i18n.LocaleChangeInterceptor" />
<bean class="com.hst.core.spring.HttpCacheInterceptor"/>
</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

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

  1. springmvc 项目完整示例05 日志 --log4j整合 配置 log4j属性设置 log4j 配置文件 log4j应用

    log4j 就是log for java嘛,老外都喜欢这样子,比如那个I18n  ---internationalization  不就是i和n之间有18个字母... http://logging.a ...

  2. SpringMVC的国际化

    关于SpringMVC的国际化,http://www.cnblogs.com/liukemng/p/3750117.html这篇文章已经讲的很好了.它讲了有如下几种国际化方式 1:基于Http的hea ...

  3. angular项目国际化配置(ngx-translate)

    原文 https://www.jianshu.com/p/7d1da3098625 大纲 1.认识ngx-translate 2.ngx-translate的配置步骤 3.ngx-translate的 ...

  4. SpringBoot 快速支持国际化i18n

    学习目标 快速学会如何在工程中支持国际化语言. 快速查阅 专题阅读:<SpringBoot 布道系列> 源码下载:springboot-locale-i18n — Hey Man,Don' ...

  5. 零配置简单搭建SpringMVC 项目

    SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...

  6. maven -- 学习笔记(四)实现在Eclipse用maven搭建springmvc项目(附构建步骤和详细实现代码)

    Learn from:http://www.cnblogs.com/fangjins/archive/2012/05/06/2485459.html,感谢楼主的分享,才有下面的这篇学习小结 一.环境准 ...

  7. 项目搭建系列之一:使用Maven搭建SpringMVC项目

    约定电脑都安装了eclipse,且已配置好Maven以及eclipse插件. 1.Eclipse 2.maven 3.Eclipse 需要安装maven插件.url:maven - http://do ...

  8. 国际化(i18n)

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

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

    一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...

随机推荐

  1. Codility---EquiLeader

    Task description A non-empty zero-indexed array A consisting of N integers is given. The leader of t ...

  2. ReactJS入门基础

    渲染这俩字可能在很多地方都见过.但可能不太理解是啥意思. 那么首先我们来理解一下渲染. 渲染 我觉得这样理解比较通俗. 我们做一个汽车,开始是没有喷漆的(没有css) 只是些框框架架(HTML标签). ...

  3. Vulkan Tutorial 15 Framebuffers

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 我们在前面的章节中已经讨论了很多次framebuffers帧缓冲区,到目前为止我们配 ...

  4. javascript学习笔记(一):词法结构

    一:字符集 javascript程序是用Unicode字符集编写的. 二:区分大小写 javascript是区分大小写的语言,但需注意的是HTML不区分大小写 三:空格.换行符和格式控制符 javas ...

  5. [0] 自定义特性AttributeUsage

    using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace Fxframe ...

  6. .NET Framework 各个版本介绍

    .NET Framework 1.1 自1.0版本以来的改进:自带了对mobile asp .net控件的支持.这在1.0版本是以附加功能方式实现的,现在已经集成到框架的内部.安全方面的变更 - 使得 ...

  7. loadrunner11的移动端性能测试之脚本录制

    以前使用LR11录制过一个app的登录操作,这里记录一下 测试准备 硬件要求 1,  负载测试机一台(内存8G以上,cpu 1.5GHZ以上,存储空间20G以上)或两台以上(控制机和多个负载机). 2 ...

  8. android的drawable资源

    1.android中可以通过xml文件配置资源,比如字符串啦,整数拉.浮点数等等,当然也可以配置图片资源和选择器,下面我们就看看几种图片资源的配置. @1矩形方框,带渐变色的配置代码 <?xml ...

  9. sql hibernate查询转换成实体或对应的VO Transformers

    sql查询转换成实体或对应的VO Transformers //addScalar("id") 默认查询出来的id是全部大写的(sql起别名也无效,所以使用.addScalar(& ...

  10. @JsonIgnoreProperties忽略转换到json的属性

    bean转换到json忽略指定属性 @JsonIgnoreProperties(value={"attrName"})