Struts2笔记六之i18n国际化

来源:互联网 发布:河北网络电视台官网 编辑:程序博客网 时间:2024/06/05 18:40
1.国际化的原理
定义对应国家的配置文件:
app_zh_CN.properties文件里面有welcome.msg=你好
app_en_US.properties文件里面有welcome.msg=hello
将其放在properties目录
以下是在Java中测试代码
ResourceBundle res = ResourceBundle.getBundle("properties/app",Locale.CHINA);
ResourceBundle res2 = ResourceBundle.getBundle("properties/app",Locale.US);
System.out.println(res.getString("welcome.msg"));输出的是:你好
System.out.println(res2.getString("welcome.msg"));输出的是:hello

2.在Web应用中配置国际化
在页面上取得i18n配置文件中的内容不需要这样具体写法如下:
LoginAction_zh_CN.properties文件里面有 login.username = 用户名 login.password = 密 码
LoginAction_en_US.properties文件里面有 login.username = username login.password = password
以上两个文件放在Action目录下,这是Action级别下的国际化,一套配置文件用与一个Action,因为配置文件前部分名字要和Action类名相同。
页面取法:
<%@taglib uri="/struts-tags" prefix="s" %>
<s:property value="getText('login.username')">
<s:property value="getText('login.password')">
这样在修改页面编码的时候会自动获取对应properties中的值。
以上这种不好,因为需要配置太多的配置文件了。
Struts一共有三种级别的国际化配置
1.Action级别的,2.package级别的,3.App应用级别的.
最常用最好的也就是App级别的,放在src目录下,只需要配一套国际化配置文件就可以了。
这里页面的取值不需要变,只需要在Struts.xml中配置一下就好了:
<constant name="struts.custom.i18n.resources" value="i18n配置前缀如:StrutsI18N"></constant>

3.动态国际化
主需要在页面上加上一个链接,传一个参数到任何一个Action,之后整个网页语言就都变了。
一般来说,在哪一个页面上就传递到哪个Action,因为改变语言要求页面不变。
链接写法为:<a href="action地址?request_locale=en_US">English</a>例子如下:
<a href="admin/lang?request_locale=en_US">English</a>
<a href="admin/lang?request_locale=zh_CN">中文</a>
0 0