i18n(其 来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称。在资讯领域,国际化(i18n)指让产品(出版 物,软件,硬件等)无需做大的改变就能够适应不同的语言和地区的需要。对程序来说,在不修改内部代码的情况下,能根据不同语言及地区显示相应的界面。 在全球化的时代,国际化尤为重要,因为产品的潜在用户可能来自世界的各个角落。通常与i18n相关的还有L10n(“本地化”的简称)。<摘自百度 百科http://baike.baidu.com/view/372835.htm?fr=aladdin >

代码下载

http://pan.baidu.com/s/1sjNQmfF

Maven依赖

<properties><springframework>4.0.5.RELEASE</springframework>
</properties>
<dependencies><!-- Spring web mvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${springframework}</version></dependency>
</dependencies>

在Spring应用中,国际化的配置比较简单,下面四步完成国际化的快速配置

第一步,配置messageSource和localeResolver

<!-- 配置国际化资源文件路径 -->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource">
<property name="basename">
<!-- 定义消息资源文件的相对路径 -->
<value>messages/message</value>
</property>
</bean>
<!-- 基于Cookie的本地化解析器 --><bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver"><property name="cookieMaxAge" value="604800"/><property name="defaultLocale" value="zh_CN"/><property name="cookieName" value="Language"></property></bean>
<!-- 基于Session的本地化解析器 -->
<!--<bean id="localeResolver" class="org.springframework.web.servlet.i18n.SessionLocaleResolver" />-->

第二步,编写message_*.properties

message_en.properties

hi=hello
something=The People's Republic of China
Chinese=Chinese
English=English
index=Index
welcome=Welcome
OtherPage=Other Page

message_zh_CN.properties(汉字已转成unicode码)

hi=\u4F60\u597D
something=\u4E2D\u534E\u4EBA\u6C11\u5171\u548C\u56FD
Chinese=\u4E2D\u6587
English=\u82F1\u6587
OtherPage=\u5176\u4ED6\u9875\u9762
index=\u9996\u9875
welcome=\u6B22\u8FCE

第三步,页面引入spring标签库

引入

<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>

使用

<spring:message code="welcome"></spring:message>

第四步,切换语言

  @Autowired   CookieLocaleResolver resolver;//@Autowired SessionLocaleResolver resolver;/*** 语言切换*/@RequestMapping("language")public ModelAndView language(HttpServletRequest request,HttpServletResponse response,String language){language=language.toLowerCase();if(language==null||language.equals("")){return new ModelAndView("redirect:/");}else{if(language.equals("zh_cn")){resolver.setLocale(request, response, Locale.CHINA );}else if(language.equals("en")){resolver.setLocale(request, response, Locale.ENGLISH );}else{resolver.setLocale(request, response, Locale.CHINA );}}return new ModelAndView("redirect:/");}

已完成国际化的配置,其中请注意SessionLocaleResolver和CookieLocaleResolver的区别,很显然,通过 Session只能对当前的会话有效,Cookie则对Cookie有效期内的会话都有效。在使用Cookie的时候,需要设置Cookie的过期时间, 否则关闭浏览器之后,Cookie即失效了,没有达到目的。当然,也可以保存用户的语言设置信息到数据库,用户登录之后即可将语言改变成用户设置的语言。

<来源:http://www.xdemo.org/spring-i18n/  >

转载于:https://www.cnblogs.com/flying607/p/4698949.html

spring 国际化-i18n相关推荐

  1. Spring进行 i18n国际化配置

    (本项目是基于Dubbo的,所以会有后端服务和前端Controller两次国际化的配置) 对后端服务的异常代码进行国际化版本的配置 1.在provider的resources中新建一个properti ...

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

    SpringMVC项目国际化(i18n)实现方法 按照作息规律,每周五晚必须是分享知识的时间\(^o^)/~,这周讲点儿啥呢,项目需要逼格,咱们国际化吧(* ̄rǒ ̄)~,项目中碰到这类需求的童鞋可能并 ...

  3. springboot+jsp中文乱码_【spring 国际化】springMVC、springboot国际化处理详解

    在web开发中我们常常会遇到国际化语言处理问题,那么如何来做到国际化呢? 你能get的知识点? 使用springgmvc与thymeleaf进行国际化处理. 使用springgmvc与jsp进行国际化 ...

  4. Spring入门到放弃篇(1)- Spring国际化

    Java原生国际化 文档地址 java官方文档 参考官方文档 自定义国际化案例 public class LocaleDemo {public static void main(String[] ar ...

  5. 从零开始学习springmvc(5)——Spring国际化和全局异常处理

    [项目地址] 从零开始学习springmvc 如果觉得有用可以关注一下公众号:码字不易,求赞求关注 五.Spring国际化和全局异常处理 五.Spring国际化和全局异常处理 5.1 国际化介绍 5. ...

  6. SpringBoot RESTful 风格 API 多语言国际化i18n解决方案

    文章目录 1 摘要 2 核心代码 2.1 多语言枚举类 2.2 多语言处理工具类 2.3 多语言的API返回状态码枚举类 2.4 多语言 API 接口返回结果封装 2.5 i18n 国际化多语言配置文 ...

  7. spring之i18n

    简介: 国际化信息也称为本地化信息,i18n是"国际化"的简称.在资讯领域,国际化(i18n)指让产品无需做大的改变就能够适应不同的语言和地区的需要.对程序来说,在不修改内部代码的 ...

  8. 关于Spring 国际化 No message found under code 的解决方案

    关于Spring 国际化 No message found under code 的解决方案 参考文章: (1)关于Spring 国际化 No message found under code 的解决 ...

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

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

最新文章

  1. MySQL 仅保留7天、一个月数据
  2. 第三篇:时间和全局状态(三)
  3. iOS:MBProgressHUD的基本使用
  4. Java 8 开发的 4 大顶级技巧
  5. WPF使用RoutedCommand自定义命令
  6. oracle 父latch:library cache,library cache latch等待事件
  7. 死锁问题案例分析解决
  8. python自动获取cookie_selenium3+python自动化12-cookie相关操作(获取和删除)
  9. iPhone用户注意!苹果:手机丢失这么做 官方售后拒绝维修
  10. 15. 深入解析Pod对象(二):使用进阶
  11. 不学无数——JAVA中NIO再深入
  12. 12038徐波:PMBOK考试:如何压缩时间赶工和快速跟进考点汇总
  13. 小米蓝牙音响驱动_小米手机绝佳配件,20W无线闪充,支持唤醒小爱,只卖149
  14. 像素、分辨率、尺寸概念与关系
  15. Unity3d进阶学习(9)-- 本地化Localization
  16. Python 加性高斯白噪声 AWGN
  17. linux nvidia显卡驱动安装教程,LINUX的NVIDIA显卡驱动安装
  18. logrus固定当天日志文件名称源码修改
  19. JS中的Storage
  20. CentOS 7 Docker安装GVM-11

热门文章

  1. c 读取mysql另一个窗体中显示出来_二级ACCESS数据库4窗体的笔试题考点分析
  2. [1] SDK Tools安装
  3. 移动端根据设计稿宽度适配 px转换相对单位rem
  4. 工具杂记-notepad++正则表达式匹配替换
  5. C++设计模式-代理模式
  6. C++工作笔记-使用typeid获取对象的类名
  7. 二叉排序树的删除操作
  8. mysql web界面 Linux_部署WEB项目到服务器(三)安装mysql5或者mysql8到linux服务器(Ubuntu)详解...
  9. 大学计算机学生成绩综合管理系统,大学综合测评成绩管理系统的研究 计算机专业毕业论文.doc...
  10. 输入域html,我可以让HTML输入表单域成为可选的吗?