畅所欲言struts2的国际化

所谓的国际化支持,鄙人理解为页面能够支持多种语言的显示,比如:浏览器的语言编码为中文(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>比较:

   全局属性文件、包级别属性文件、类级别属性文件

   范围程度:

   全局属性文件>包级别属性文件>类级别属性文件

   作用程度:

   全局属性文件<包级别属性文件<类级别属性文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值