您的位置:首页 > 编程语言 > Java开发

畅所欲言struts2的国际化

2010-08-08 21:34 211 查看
所谓的国际化支持,鄙人理解为页面能够支持多种语言的显示,比如:浏览器的语言编码为中文(zh_CN)则显示中文,浏览器的语言编码为英文(en_US)则显示为英文,即人们常说的i18n(Internationlization)。
下面我将从3个部分讲述我所理解的国际化:
<1>JSP页面的国际化:
第一种情况
首先我们建立两个全局的国际化资源文件(放在src根目录下),支持英文(globalMessage_en_US.properties)和中文(globalMessage_zh_CN.properties),其中globalMessage在struts.xml文件中声明。
struts.xml文件:
<struts>
<constant name="struts.custom.i18n.resources" value="globalMessage"/>
</struts>

globalMessage_en_US.properties文件:
addUser = Add User
globalMessage_zh_CN.properties文件:
addUser = 添加用户

register.jsp页面:
<s:text name="addUser"></s:text>

第二种情况
使用临时文件资源,在src根目录下建立2个文件temp_en_US.properties(支持英文)和temp_zh_CN.properties(支持中文),这种情况下,用户可以在JSP页面中传递参数。

temp_en_US.properties文件:
addUser = Add User,{0}
temp_zh_CN.properties文件:
addUser = 添加用户,{0}

register.jsp页面:
<s:i18n name="temp">
<s:text name="addUser">
<s:param>信息</s:param>
</s:text>
</s:18n>
注意:<s:i18n>标签中的name属性是与该临时文件所在的目录有关的,若temp_en_US.properties和temp_zh_CN.properties在src下的com.struts2.i18n包中,那么name="com.struts2.i18n.temp"。

第三种情况
JSP页面中的表单字段国际化,form中的theme属性必须不能设定为simple

register.jsp页面:
<s:form action="register">
<s:textfield name="username" key="username"></s:textfield>
</s:from>

在globalMessage_en_US.properties文件中添加:
username = username

在globalMessage_zh_CN.properties文件中添加:
username = 用户名

<2>Action类的国际化:
首先建立2个包级别的属性文件:package_en_US.properties(支持英文)和package_zh_CN.properties(支持中文)

package_en_US.properties文件:
username.invalid = package username error
Package_zh_CN.properties文件:
username.invalid = 包级别的用户名错误

RegisterAction.java文件:
if(null == this.getUsername() || "".equals(this.getUsername().trim()))
{
this.addActionError(this.getText("username.invalid"));
}
else if(this.getUsername().trim().length >12 || this.getUsername().trim().length() < 6)
{
//此句是当找不到资源文件中key时,用后面的字符串来代替显示在JSP页面中
this.addActionError(this.getText("username","用户名错误"));

/***********
****通过List传递参数
*****/
List list = new ArrayList();
list.add(username);
this.addActionError(this.getText("username.invalid",list));

//通过数组传递参数
this.addActionError(this.getText("username.invalid",new String[]{username}));
}

<3>验证框架xml文件的国际化:
建立2个类级别的资源文件RegisterAction_en_US.properties(支持英文)和RegisterAction_zh_CN.propertie(支持中文)

RegisterAction_en_US.properties文件:
username.xml.invalid = class username error
RegisterAction_zh_CN.properties文件
Username.xml.invalid = 类级别的用户名错误

RegisterAction-validation.xml验证文件:
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">12</param>
<message key="username.xml.invalid"></message>
</field-validator>

<4>比较:
全局属性文件、包级别属性文件、类级别属性文件
范围程度:
全局属性文件>包级别属性文件>类级别属性文件
作用程度:
全局属性文件<包级别属性文件<类级别属性文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: