spring 国际化-i18n
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相关推荐
- Spring进行 i18n国际化配置
(本项目是基于Dubbo的,所以会有后端服务和前端Controller两次国际化的配置) 对后端服务的异常代码进行国际化版本的配置 1.在provider的resources中新建一个properti ...
- springMVC项目国际化(i18n)实现方法
SpringMVC项目国际化(i18n)实现方法 按照作息规律,每周五晚必须是分享知识的时间\(^o^)/~,这周讲点儿啥呢,项目需要逼格,咱们国际化吧(* ̄rǒ ̄)~,项目中碰到这类需求的童鞋可能并 ...
- springboot+jsp中文乱码_【spring 国际化】springMVC、springboot国际化处理详解
在web开发中我们常常会遇到国际化语言处理问题,那么如何来做到国际化呢? 你能get的知识点? 使用springgmvc与thymeleaf进行国际化处理. 使用springgmvc与jsp进行国际化 ...
- Spring入门到放弃篇(1)- Spring国际化
Java原生国际化 文档地址 java官方文档 参考官方文档 自定义国际化案例 public class LocaleDemo {public static void main(String[] ar ...
- 从零开始学习springmvc(5)——Spring国际化和全局异常处理
[项目地址] 从零开始学习springmvc 如果觉得有用可以关注一下公众号:码字不易,求赞求关注 五.Spring国际化和全局异常处理 五.Spring国际化和全局异常处理 5.1 国际化介绍 5. ...
- SpringBoot RESTful 风格 API 多语言国际化i18n解决方案
文章目录 1 摘要 2 核心代码 2.1 多语言枚举类 2.2 多语言处理工具类 2.3 多语言的API返回状态码枚举类 2.4 多语言 API 接口返回结果封装 2.5 i18n 国际化多语言配置文 ...
- spring之i18n
简介: 国际化信息也称为本地化信息,i18n是"国际化"的简称.在资讯领域,国际化(i18n)指让产品无需做大的改变就能够适应不同的语言和地区的需要.对程序来说,在不修改内部代码的 ...
- 关于Spring 国际化 No message found under code 的解决方案
关于Spring 国际化 No message found under code 的解决方案 参考文章: (1)关于Spring 国际化 No message found under code 的解决 ...
- javaweb学习总结(三十一)——国际化(i18n)
一.国际化开发概述 软件的国际化:软件开发时,要使它能同时应对世界不同地区和国家的访问,并针对不同地区和国家的访问,提供相应的.符合来访者阅读习惯的页面或数据. 国际化(internationaliz ...
最新文章
- MySQL 仅保留7天、一个月数据
- 第三篇:时间和全局状态(三)
- iOS:MBProgressHUD的基本使用
- Java 8 开发的 4 大顶级技巧
- WPF使用RoutedCommand自定义命令
- oracle 父latch:library cache,library cache latch等待事件
- 死锁问题案例分析解决
- python自动获取cookie_selenium3+python自动化12-cookie相关操作(获取和删除)
- iPhone用户注意!苹果:手机丢失这么做 官方售后拒绝维修
- 15. 深入解析Pod对象(二):使用进阶
- 不学无数——JAVA中NIO再深入
- 12038徐波:PMBOK考试:如何压缩时间赶工和快速跟进考点汇总
- 小米蓝牙音响驱动_小米手机绝佳配件,20W无线闪充,支持唤醒小爱,只卖149
- 像素、分辨率、尺寸概念与关系
- Unity3d进阶学习(9)-- 本地化Localization
- Python 加性高斯白噪声 AWGN
- linux nvidia显卡驱动安装教程,LINUX的NVIDIA显卡驱动安装
- logrus固定当天日志文件名称源码修改
- JS中的Storage
- CentOS 7 Docker安装GVM-11
热门文章
- c 读取mysql另一个窗体中显示出来_二级ACCESS数据库4窗体的笔试题考点分析
- [1] SDK Tools安装
- 移动端根据设计稿宽度适配 px转换相对单位rem
- 工具杂记-notepad++正则表达式匹配替换
- C++设计模式-代理模式
- C++工作笔记-使用typeid获取对象的类名
- 二叉排序树的删除操作
- mysql web界面 Linux_部署WEB项目到服务器(三)安装mysql5或者mysql8到linux服务器(Ubuntu)详解...
- 大学计算机学生成绩综合管理系统,大学综合测评成绩管理系统的研究 计算机专业毕业论文.doc...
- 输入域html,我可以让HTML输入表单域成为可选的吗?