一、java中的国际化
a) jave中实现国际化的原理
java中通过Locale对象可以指定或得到当前系统的默认国际化配置及语言代码和国家代码,然后通过ResourceBundle类得到对应Lacale对象的国际化配置文件即Properties文件,通过读取键的值实现国际化。
b) java中实现国际化需要的类
locale类:
可以指定所要显示的语言,即对应的国际化文件
Locale类的方法:
//得到当前系统默认的编码
Locale l=Locale.getDefault();
//自定义Locale
//参数1:语言编码en(英文) zh(中文) ja(日本)
//参数2;国家编码US(英国) CN(中国)JP(日本)
Locale l1=new Locale("en","US");
//得到国家代码
l.getCountry();
//得到语言代码
l.getLanguage();
ResourceBundle类:
可以读取相应的Locale 对应的property文件
c) 更改系统默认的国际化编码
控制面板—语言区域
d) 在IE中修改默认的编码
IE首选项—语言
e) property文件的文件名编写规则
Basename名_语言代码_国家代码.properties
说明: BaseName名可以自定义但后面的名称必须按以上规则书写
f) 读取对应的Properties文件
//读取对应的Properties文件
//第一个参数对应相应的basename
//第二个参数对应相应的Locale
ResourceBundle rb=ResourceBundle.getBundle("Message",l);
rb.getString("key值");
g) Properties文件的中文乱码问题
在读取Properties文件时键对应的中文键值会出现乱码应使用jdk的native2ascii.exe 工具将中文转换成unicode码再写入Properties文件中
h) Native2ascii .exe的使用方法
在jdk的bin目录下双击native2ascii.exe 将需要转换的中文copy到该命令提示行下 回车即可看到转换的unicode编码将其替换对应键的值即可
Eg:
将a=你好
替换成 a= \uf60\u597d
批量替换
Native2ascii.exe 源文件路径 替换文件路径
系统会自动根据控制面板设置的国际化编码进行转换。
i) Properties 文件的占位符问题
Properties 文件中可以使用{0}{1}进行占位符设置注意是从0位开始
使用占位符
MessageFormat mf =new MessageFormat(rb.getString("键名"));
String result = mf.format(new Object[]{"a","b"});
j) 国际化文件的路径问题
ResourceBundle rb=ResourceBundle.getBundle("Message",l);
默认读取的是src下的文件,若路径不同应标明路径
方法:msg + . + Properties文件的BaseName名
Eg: msg.Message
k) 注意:
默认情况下ResourceBundle会根据参数Locale的国家代码和语言代码自动匹配相应的Properties文件进行读取(所以properties文件的命名必须合法)。
若没有找到相应文件则加载系统默认的国际化配置文件(读取系统设置的国家代码和语言代码)若系统的设置也没有与之对应的properties文件则加载Basename名.properties文件。若还没有对应文件则报错。
l) 注意2:新建java项目进行测试时必须建立源src文件夹否则报错。
二、 Struts硬编码国际化
a) Stuts硬编码国际化即对页面中不变的文字进行国际化处理。
b) 使用方法
i. 在struts-config.xml:文件中加入
<message-resources parameter="MessageResources" />
第一个参数及Properties文件BaseName的名称
ii. 在properties文件中配置相关的字段,注意中文要转换成unicode码
iii. 在页面中用Struts标签替换需要国际化的内容
<bean:message key=” ”>
c) 注意:加载国际化文件时若没有找得相关文件(IE中的国际化配置)则会根据操作系统的语言配置进行查找若还没有会加载默认文件即 Basename.properties文件。
d) 通过修改session 实现手动修改语言
request.getSession().setAttribute(Globals.LOCALE_KEY, currentLocale);
第二个参数为自定义的Locale对象。
或者:
this.setLocale(request, currentLocale);
第二个参数为自定义的Locale对象
三、 动态文本国际化
1、 方法
在action中定义普通信息和错误信息
ActionMessage m=new ActionMessage("upass",new Object[]{"pppp"});
第一个参数是该信息的key值,第二个参数是占位符的内容,若仅有一个占位符可以不用object数组
直接写成String类型的参数
ActionMessage m=new ActionMessage("upass",”sss”);
2、 分别定义普通信息和错误信息的ActionMessages
ActionMessages messages=new ActionMessages();
3、 将普通信息和错误信息分别放入相应的messages中
Messages.add("uu",m3);
第一个参数为信息的名称,第二个参数为定义的ActionMessage
4、 将普通信息存入
this.saveMessages(request,messages);
注意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。
5、 将错误信息存入
this.saveErrors(request, messages2);
注意 选择方法是应选择第二个弹出的方法,第一个参数是作用域,第二个参数为信息的集合。
6、 读取普通信息
<html:messages id="s" message="true">
<bean:write name="s"/>
</html:messages>
解析: message=”true”信息标识此标签读取的是普通信息
Id表示从普通信息的集合中取出的每一个元素相当于iterator标签的id。
<hr>
<html:messages id="s" message="true" property="upass">
<bean:write name="s"/>
</html:messages>
解析: message=”true”信息标识此标签读取的是普通信息。
Property表示从该信息集合中取出名为此属性值的元素的集合。
Id表示从普通信息的集合中取出的每一个元素相当于iterator标签的id。
7、 读取错误信息
<html:messages id="s" property="upass">
<bean:write name="s"/>
</html:messages>
解析: message标签默认读取的是错误信息。
<html:errors property="uu"/><br>
解析:该标签可以读取所有错误信息也可根据property读出所有是该属性名的错误信息的集合。
8、 错误信息的格式定义
定义在国际化的Properties文件中
Eg:
errors.header=<UL> 信息的头部代码
errors.prefix=<LI><font color="red"> 每条信息的开头代码
errors.suffix=</font></LI>每条信息的结尾代码
errors.footer=</UL> 信息的尾部代码
相关推荐
struts国际化struts国际化struts国际化
一个Web应用程序在运行时能够根据客户端请求所来自的国家和语言显示不同的用户界面。这样 ,当需要在应用程序中添加对一种新的语言的支持时,无需修改应用程序的代码。
i18n,struts2实现国际化 手动配置过滤器实现国际化
java struts国际化演示 国际化的源码 供大家学习用!
struts2i18n.rar struts2 i18n的实例, 环境是myeclipse6. struts2.16. struts国际化。
struts2国际化MyEclipse开发struts2国际化MyEclipse开发童叟无欺
struts1 国际化 源代码 struts1 国际化 工程
整理struts2国际化例子源码整理struts2国际化例子源码整理struts2国际化例子源码
struts2中的国际化 struts2转化器 struts2实现表单数据校验 struts2的基石-拦截器 struts2中实现IOC struts2中实现文件上传 struts2中实现CRUD struts2中的OGNL struts2的新表单标志的使用 struts2与AJAX一 struts2...
Struts基本用法之国际化
struts1国际化
经典的struts中文问题,国际化问题终极解决方案
struts1.2
http://blog.csdn.net/liuhongjavaen/article/details/7655385 具体操作事项请查阅博客 struts2国际化源码 eclipse国际化插件
在struts2里实现国际化,完成登录页面的国际化(英文和中文)。
struts2国际化测试小demo
Struts2国际化的实现原理;简单的struts2国际化实现过程的讲解
struts2 语言国际化配置和使用、页面按钮实现改变显示语言
struts2国际化,根据浏览器设置来显示不同语言,。
Struts数据源连接和国际化 资源源于不但搜索,自由源于不但努力