国际化的原理、步骤、分类

Struts2框架对Java程序国际化进行了进一步的封装,从而简化了国际化应用程序的开发
原理
Struts2提供了一个名i18n的拦截器,在默认情况下将其注册到拦截器栈defaultStack中。
在执行Action方法前,i18n拦截器查找请求中的一个名为 “request_locale”的参数。
如果其存在,拦截器就将其作为参数,转化成Locale对象,并将其设为用户默认的区域(Locale),
最后,将此Locale对象以“WW_TRANS_I18N_LOCALE”为名保存到Session中。
一旦用户Session中存在名为“WW_TRANS_I18N_LOCALE”属性,则该属性指定的Locale将会作为浏览者的默认Locale。
步骤:
1.*建立国际化资源文件
properties 为扩展名的文本文件,该文本文件以 key=value 的形式存储国际化消息。
资源文件的命名:

      basename_language_country.properties

注释:basename时可以自定义的资源文件名,language不能自定义,

     它代表地区语言代码,简体中文是zh,英语是en等,country也不能自定义,

     它代表国家地区代码,中国就是CN,美国就是US等。

     messageResources_zh_CN.properties
     messageResources_en_US.properties
     就是合法有效的国际化资源文件名。

     资源文件放在 classes 下面,即项目 / src

messageResources_zh_CN.properties   文件内容:

     login.user.name=用户名 

    login.user.password=密码 

    login.user.name.inavlid=输入用户名无效

messageResources_en_US.properties   文件内容:
     login.user.name =UserName
     login.user.password =Password
        login.user.name.inavlid= UserName Inavlid

2.*加载全局资源文件
struts.xml 中配置 struts.custom.i18n.resources 常量的值来指定资源文件的基本名 :

  <constantname="struts.custom.i18n.resources" value=" messageResources"></constant> 

classpath 下添加国际化资源文件
messageResources _zh_CN.properties
messageResources _en_US.properties

3.*访问国际化消息
Struts2 访问国际化消息主要有如下方式:
(1)JSP页面中:可以使用Struts2提供的<s:text…/>标签,用name属性指定一个国际化资源文件中的key。

     <s:text name=”login.user.username” />

    主要用于国际化 文本字体 ,或链接,说白了就是一些文字(仅仅是)。   

(2)表单元素的label中:可以为该表单标签指定一个key属性,它指定一个国际化资源文件中的key

<s:textfield name="loginname" key="login.user.username "/>

(3)*Action类中:可以使用ActionSupport类的getText(String aTextName)方法,aTextName指定一个国际化资源文件中的key

Public Stringlogin() {

//以下判断如果输入的是不合法的用户名

if(result==2) {

  this.addFieldError("loginname",getText("UserName Inavlid "));

    }

}

(4)在使用校验配置文件时输出国际化消息 可以通过Message标签的key属性

<field name="username">
       <field-validator type="requiredstring" short-circuit="false">
           <param name="trim">true</param>
           <message   key="username.xml.required"/>       </field-validator>
       <field-validator type="stringlength">
           <param name="minLength">6</param>
           <param name="maxLength">10</param>
           <messagekey=" login.user.name.inavlid " />
       </field-validator>
    </field>
(5) Struts2 中提供了两种方式来填充消息字符串中的占位符:
JSP页面:通过在<s:text …>标签中使用多个<s:param…>标签来填充占位符。
第一个<s:param>值</s:param>标签指定第一个占位符值,依此类推。
Action类:通过调用ActionSupport类中的getText(String aTextName, List args)或getText(String aTextName, String[] args)方法来填充占位符


 









  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值