国际化

1. 国际化与本地化

国际化 (Internationalization: I18N): 是程序在不做任何修改的情况下,就可以再不同的国家或地区和不同的语言环境下,按照当地的语言和格式习惯显示字符。
本地化(Localization : L10N ): 在开发国际化的程序时,创建某种语言相关的文本和格式资源的过程叫做本地化。

2. Java中国际化的思路

将程序中的提示信息,错误信息等放在资源文件中,为不同的国家/语言编写对应的资源文件。资源文件由很多 key-value组成,key 保存不变,value 随着国家/语言的不同而不同。这些资源文件属于同一资源系统,使用 
共同的基名(Base Name)。通过在基名后面添加ISO-639标准的语言代码、ISO-3166标准的国家和地区代码来进行区分。

例如: 规定基名为 abc , 可以定义 abc_zh_CN.properties 大陆中文; abc_en_US.properties 美国,英文语言......

3. 使用struts实现国际化

  • 1) 在struts.xml中制定资源文件的基名及存储路径

<constant name="struts.custom.i18n.resources" value="message"></constant>
<constant name="struts.i18n.encoding" value="utf-8" ></constant>

  • 2)创建资源文件

根据需求创建对应的资源文件,这里假设显示中文和英文两种语言。 
在src目录下创建两个资源文件,名称为 message_zh_CN.properties、 message_en.properties

  • 3) 根据需求在资源中添加对应的内容

示例: message_en.properties:
userName=userName
userPwd=userPassword
submit=submit

message_zh_CN.properties:
userName=\u7528\u6237\u540D
userPwd=\u5BC6\u7801
submit=\u63D0\u4EA4

  • 4) JSP 页面实现国际化显示

<form action="login.action">
<s:text name="userName"></s:text> : <s:textfield name="name" ></s:textfield> <br/>
<s:text name="userPwd"></s:text>: <s:password name="pwd" ></s:password> <br/>
<s:text name="submit"></s:text> : <input type="submit" />
</form>

4. 测试:
可以通过浏览器选择 工具 -- Internet -- 常规 -- 语言 单击 “添加”按钮,选择美国选项,并通过“上移”按钮将其移到语言框的最上面,单击“确定”按钮。

5. 验证信息的国际化显示:
通过不同的资源文件显示不同的错误信息

  • 1) 资源文件

message_en.properties:
name.null = Name cannot be null
......
message_zh_HK.properties:
name.null = 用户名不能为空

  • 2) 通过strutes验证框架

<message key="name.null" />

  • 3) 通过Action文件

this.addFieldError("user.name",getText("name.null"));

  • 6. 资源文件的范围

在src 目录下添加的资源文件对全局资源文件,所有包的所有Action都可以访问。

struts2 提供了包范围资源文件和Action范围的资源文件。

1) 包资源文件: 在对应保险出添加 package_languate_country.properties 资源文件。 package为固定写法, 只有处在该包以及子包下的Action才可以访问该文件。
如 org.zm 包下定义资源文件 package_en.properties 、 package_zh_HK.properties ,则 org.zm以及其他子包中的Action可以访问这些资源文件。

2) Action范围的资源文件: 在Action类的所在 包内添加资源文件,命名规则 ActionClassName_language_country.properties, 其中ActionClassName为Action的名称

7. 资源文件的查找顺序

当前报下的Action > package 的资源文件 > ... > 顶级包 > 从常量 "struts.custom.i18n.resources" 指定的全局资源文件中查找

struts 国际化的更多相关文章

  1. 在IDEA中编辑struts国际化properties文件

    在IDEA中编辑struts国际化properties文件 如果手工创建的web工程,struts的i18n属性文件,可以使用native2ascii工具转换(记得命令行的第二个文件名是要保存的文件名 ...

  2. 【JavaEE企业应用实战学习记录】struts国际化

    <%-- Created by IntelliJ IDEA. User: Administrator Date: 2016/10/6 Time: 16:26 To change this tem ...

  3. 菜鸟学习Struts——国际化

    一.概念 国际化:界面上的语言可以根据用户所在的地区改变显示语言. 如图: 二.实例 下面就一步一步的教大家利用Struts实现国际化. 1.编写资源文件 这个资源文件就是界面上显示的字符,资源文件里 ...

  4. 菜鸟学习SSH(二)——Struts国际化

    国际化(internationalization,i18n)和本地化(localization,l10n)指让产品(出版物,软件,硬件等)能够适应非本地环境,特别是其他的语言和文化.程序在不修改内部代 ...

  5. Struts国际化

    第一步需要建立配置文件 格式为      文件名_zh_CN.properties    为中文配置文件   文件名_en_US.properties为美式英语配置文件 配置文件里面的值以键值对的形式 ...

  6. struts实现国际化

    上篇博客学习了Java国际化的一些基础知识,了解了这些知识之后,我们可以更好的过度到struts国际化. 本篇博客主要学习struts国际化的实现: 1.配置环境设置baseName. 在struts ...

  7. Struts的拦截器

    Struts的拦截器 1.什么是拦截器 Struts的拦截器和Servlet过滤器类似,在执行Action的execute方法之前,Struts会首先执行Struts.xml中引用的拦截器,在执行完所 ...

  8. I18n问题 国际化

    http://www.cnblogs.com/guaniu/archive/2012/01/18/2325556.html java国际化 1.了解缺省Locale是由操作系统决定的,Locale是由 ...

  9. struts2 I18n问题 国际化

    java国际化 1.了解缺省Locale是由操作系统决定的,Locale是由语言和国家代码组成 2.国际化资源文件是由baseName+locale组成,如:MessageBundle_en_US.p ...

随机推荐

  1. redis、memcached、mongoDB 对比与安装

    一.redis.memcached.mongoDB 对比 Memcached 和 Redis都是内存型数据库,数据保存在内存中,通过tcp直接存取,速度快,并发高.Mongodb是文档型的非关系型数据 ...

  2. 字体在网页中画ICON图标

    用字体在网页中画ICON图标有三种小技巧: 1.用CSS Sprite在网页中画小图标 实现方法: 首先将小图片整合到一张大的图片上 然后根据具体图标在大图上的位置,给背景定位.background- ...

  3. BZOJ3687 计算子集和的异或和

    题不知道怎么不见了,bzoj上已经没了3687这题了 题意:给你一个n 然后输入n个数 求这n个数的所有子集的和的异或和 思路:用bitset记录某个数是否在子集和中出现,利用bitset对二进制位的 ...

  4. Python实战:下载鬼灵报告有声小说

    在家无聊,想看看小说,不过看的眼睛痛,就想着下个有声小说来听听.但风上找到的都是要一集一集下,还得重命名,122集啊,点到什么时候. 写个批处理下载的脚本.记录下过程. 一.老套路了,找到下载URL. ...

  5. c++ 离散数学 群的相关判断及求解

    采用C/C++/其它语言编程,构造一个n阶群<G={a,b,c,…},*>,G的阶|G|满足:3<=|G|<=6 1.判断该群是否是循环群,若是,输出该群的某个生成元. 2.给 ...

  6. jQueryMobile 网页在UC等游览器上无法正常显示或者是无法自适应设备大小,但在QQ游览器上能正常显示的解决方法

    造成jQueryMobile网页在QQ游览器上能正常显示,在UC等游览器上无法正常显示或者是无法自适应设备大小的解决方法: 在<head>标签间添加<meta name=" ...

  7. 开发中容易写错的一条SQL语句

    select * from tableName where name = like '%糖糖%' 出错的地方:name后面有=和like 出错的原因:复制过来的,其它地方是=,没有删掉直接加了like ...

  8. Mac 系统环境变量配置

    Mac 系统环境变量配置 例如这里要配置一下 QUICK_V3_ROOT 的环境变量 1.打开终端 输入  vim ~/.bash_profile 2.一直回车 知道出现以下选项 按 E 编辑     ...

  9. Apache Storm源码阅读笔记

    欢迎转载,转载请注明出处. 楔子 自从建了Spark交流的QQ群之后,热情加入的同学不少,大家不仅对Spark很热衷对于Storm也是充满好奇.大家都提到一个问题就是有关storm内部实现机理的资料比 ...

  10. 烤鸭的Source Insight学习笔记

    如果你觉得这网页排版不好看,可以去下载我上传的word版:<烤鸭的Source Insight学习笔记.doc> http://download.csdn.NET/detail/benka ...