Struts从0开始4:Struts中的国际化

  一、概念

  I18N作为“国际化”的简称,其来源是明文单词“internationlization”的首末字符“i”和“n”之间的字符数为18。随着全球经济的遗体化为一种主流的趋势,软件开发者应该开发出支持多国语言、国家化的web应用程序吧。也就是一个web应用程序在运行时能够根据客户端请求所来自的国家和语言的不同显示不同的用户界面。这样,当需要在应用程序中添加对一种新的语言的支持时,不需要对已有的软件返工,无需修改应用程序的程序代码。

  二、Struts对国家化的支持

  在Struts框架中进行应用程序的国际化,支持重点在于应用程序的文本和图像表示。最重要的工作就是准备Resurce Bundle 资源包。事实上,准备资源包的过程,就是把对应不同语言的用户所涉及的文本和图片保存在多个文本文件中,客户端根据不同的环境需要进行更换。这些文件被称为“属性文件”,所有属性文件合在一起被称为资源包(Resource Bundle)。

  Struts建立于Java平台之上,很容易建立国际化和本地化的应用程序。在这里你要熟悉的关键概念是:

  1) Locale – 基础的支持国际化的java类是java.util.Locale。每个Locale代表一个特别的国家和语言的选择(加上一个可选的语言变量),以及一套格式假定,例如数字和日期等等。

  2) ResourceBundle – java.util.ResourceBundle类提供支持多种语言消息的基本工具。查看文档中关于ResourceBundle类以及你的JDK版本的文档包中关于国际化的更多内容。

  3) PropertyResourceBundle – 一个ResourceBundle类的标准实现允许你使用与初始化properties文件同样的键/值的语法来定义资源。这对于使用为用于一个web应用程序的消息准备资源包是非常方便的,因为这写消息通常都是面向文本的。

  4) MessageFormat – java.text.MessageFormat类允许你使用运行时的指定的参数替换一个消息字符串中的一部分(在这种情况下,是一个从一个资源包得到的消息)。这在你创建一个句子的场合中是有用的,但是词会以不同的语言安照不同的顺序出现。消息中的占位符,字符串{0}用第一个运行时参数替换,{1}用第二个运行时参数替换,以此类推。

  5) MessageResources – Struts的类org.apache.struts.util.MessageResources使你能够将一套资源包视做一个数据库,并且允许你为一个特定的Locale(通常是与当前用户相对应)请求一个特定的消息,而不是为服务器运行在其中的缺省的Locale请求消息。

 

  三、示例

 

  1、我们还在前面的登录实例进行加工。

  2、在默认的applicationResources.properties文件中添加相应的消息文本。

  label.username=username

  label.password=password

  button.submit=submit

  button.reset=reset

  3、创建临时中文资源文件:applicationResources_temp.propertyies

  label.username=用户名

  label.password=密码

  button.submit=确定

  button.reset=重置

  4、对临时资源文件进行编码转换:

  在JDK中提供了native2ascii命令,它能够实现字符编码转换。在DOS下执行以下命令,将生成按GBK以编码的中文资源文件:applicationResources_zh_CN.properties

  native2ascii –encoding gbk applicationResources_temp.properties

  applicationResources_zh_CN.properties

  生成的applicationResources_zh_CN.properties的内容如下:

  label.username="u7528"u6237"u540d

  label.password="u5bc6"u7801

  button.submit="u786e"u5b9a

  button.reset="u91cd"u7f6e

  当web用户的Locale为中文时,Struts框架将自动选择来自applicationResources_zh_CN.properties文件的消息文本。

  5、创建英文的资源文件:

  label.username=username

  label.password=password

  button.submit=submit

  button.reset=reset

  完成以上几个步骤后,在web 应用程序的根目录"WEB-INF目录"classes目录下应该有了三个资源文件:

  默认资源文件:applicationResource.properties

  中文资源文件:applicationResource_zh_CN.properties

  英文资源文件:applicationResource_en.properties

  6、创建struts的Resource Bundle

  Struts配置文件中的元素定义了一个Resource Bundle。Resource Bundle的持久化消息文本存储在资源文件中,其扩展名为“.properties”,里面存放的都是“键/值”。

  在struts-config.xml中对Resource Bundle的配置代码:

  表示默认的资源文件应该是applicationResources.properties,存放在应用程序的根目录"WEB-INF目录"classes目录下。如果应用程序需要支持中文用户,要在相同目录下创建一个包涵中文消息的资源文件,文件名必须为applicationResource_zh_CN.properties。

7、修改login.jsp页面

<html:form  action="login.do" method="post">

    <bean:message key="label.username"/>

    <html:text property="username" /><html:errors property="username"/>

    <br />

    <bean:message key="label.password"/>

    <html:text property="userpass" /><html:errors property="userpass"/>

    <br>

    <input type="submit" name="Submit" value="<bean:message key="button.submit"/>">

    <input type="reset" value="<bean:message key="button.reset"/>">

</html:form>

  <bean:message/>:用于访问web应用资源的bean标签,显示Resource Boundle中的内容。

  8、运行程序

  1)如果你的浏览器默认设置为中文,你键入地址,将看到的页面如下:

  

  2)把你的浏览器的设置为英文,然后刷新页面,如下图:

  

  

  总结:国际化对于web应用程序来说很重要,如果你的web应用程序面对多个国家的话,要实现不同语言的切换,如果不使用国际化的话要么只有一种语言,要么在程序里面改,现在一切都方面了,不过java对中文的支持并不好,并不是什么地方都可以使用中文的,如在LookUpDispatchAction中就不能使用国际化哦。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值