畅所欲言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>比较:
全局属性文件、包级别属性文件、类级别属性文件
范围程度:
全局属性文件>包级别属性文件>类级别属性文件
作用程度:
全局属性文件<包级别属性文件<类级别属性文件
下面我将从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>比较:
全局属性文件、包级别属性文件、类级别属性文件
范围程度:
全局属性文件>包级别属性文件>类级别属性文件
作用程度:
全局属性文件<包级别属性文件<类级别属性文件
相关文章推荐
- Struts2 关于i18n国际化的问题,可点击链接实现中英文切换
- struts2 的国际化支持
- Web框架——Struts2国际化实现用户自行选择语言
- Struts2之国际化i18N配置
- struts2 的国际化支持
- Struts2国际化
- struts2构建网站的国际化问题解决
- J2EE系列之Struts2学习笔记(十八)--Struts2国际化
- Struts2中文国际化乱码问题
- Struts2国际化的简单示例
- struts2的国际化(一)
- struts2的国际化(即实现网站整体中英文切换)实例
- 使用Struts2国际化
- struts2-note1(struts2国际化)
- 3.5 Struts2国际化应用
- Struts2访问properties文件的字段(国际化)
- Struts2简单配置国际化资源文件及用法
- Struts2的国际化和消息处理
- struts2 和 java 国际化小结
- struts2表单验证初步及国际化实现(学习总结)