Struts2 国际化
评论(0) 浏览量(10273)

一、国际化资源文件分为三种级别
(1);全局资源文件,可以被整个应该程序引用,也就是struts.custom.i18n.resources=messageResource指定的文件
(2);包级资源文件,每个包的根目录下可以新建资源文件,仅被当前包中的类访问.文件名格式为:package_语言代码_国家代码.
(3);Action级资源文件,仅被当前Action引用,名称为action名_语言代码_国家代码<br>查找顺序为从小范围到大范围, Action级优先级最大

二、国际化配置

1、全局

src目录下新建 struts.propertie, 里边写入类似配置:
struts.custom.i18n.resources=messages
注:xml文件为 <constant name="struts.custom.i18n.resources" value="messages" />

然后在src目录下建messages_en_US.properties (英文):
name=name
sex=sex

在src目录下建messages_zh_CN.properties (中文) :
name=姓名
sex=性别

页面获取国际化信息:
<s:property value="%{getText('name')}" />
<s:property value="%{getText('sex')}" />
或者
<s:text name="name" />
<s:text name="sex" />
2、包级

  <s:i18n name="Chinese">
   i18n标签内部:<s:text name="name" />
   <br>
  </s:i18n>
如果加入i18n标签,就会在Chinese.properties文件查找

3、带参数的国际化

在资源文件的国际化字符串中使用OGNL,格式为${表达式},例如:
validation.require=${getText(fileName)} is required
例如:

test.hello=Hello,{0} {1}!

test.hello=你好,{0} {1}!

在显示这些国际化字符时,同样有两种方法设置参数的值:

使用标志的value0、value1...valueN的属性,如:
<s:text name="test.hello" value0="222" value1="zhangsan" />
使用param子元素,这些param将按先后顺序,代入到国际化字符串的参数中,如:
 <s:text name="test.hello">  
    <s:param value="222" />
    <s:param>zhangsan</s:param>
 </s:text>

输出:你好,222 zhangsan!

 <% String sss = "zhangsan"; %> 
 <!-- param value="---" 这种形式不能赋值变量  -->
 <s:text name="test.hello">  
    <s:param value="222" />
    <s:param><%=sss %></s:param>
 </s:text>

4、在Action中国际化
  String test = getText("test");
  //带参数的国际化
  String he = getText("test.hello", new String[]{"111","222"});
  System.out.println(test);
  System.out.println(he);

没有登录不能评论