一概念
IN作为国际化的简称其来源是明文单词internationlization的首末字符i和n之间的字符数为随着全球经济的遗体化为一种主流的趋势软件开发者应该开发出支持多国语言国家化的web应用程序吧也就是一个web应用程序在运行时能够根据客户端请求所来自的国家和语言的不同显示不同的用户界面这样当需要在应用程序中添加对一种新的语言的支持时不需要对已有的软件返工无需修改应用程序的程序代码
二Struts对国家化的支持
在Struts框架中进行应用程序的国际化支持重点在于应用程序的文本和图像表示最重要的工作就是准备Resurce Bundle 资源包事实上准备资源包的过程就是把对应不同语言的用户所涉及的文本和图片保存在多个文本文件中客户端根据不同的环境需要进行更换这些文件被称为属性文件所有属性文件合在一起被称为资源包(Resource Bundle)
Struts建立于Java平台之上很容易建立国际化和本地化的应用程序在这里你要熟悉的关键概念是
) Locale – 基础的支持国际化的java类是javautilLocale每个Locale代表一个特别的国家和语言的选择(加上一个可选的语言变量)以及一套格式假定例如数字和日期等等
) ResourceBundle – javautilResourceBundle类提供支持多种语言消息的基本工具查看文档中关于ResourceBundle类以及你的JDK版本的文档包中关于国际化的更多内容
) PropertyResourceBundle – 一个ResourceBundle类的标准实现允许你使用与初始化properties文件同样的键/值的语法来定义资源这对于使用为用于一个web应用程序的消息准备资源包是非常方便的因为这写消息通常都是面向文本的
) MessageFormat – javatextMessageFormat类允许你使用运行时的指定的参数替换一个消息字符串中的一部分(在这种情况下是一个从一个资源包得到的消息)这在你创建一个句子的场合中是有用的但是词会以不同的语言安照不同的顺序出现消息中的占位符字符串{}用第一个运行时参数替换{}用第二个运行时参数替换以此类推
) MessageResources – Struts的类orgapachestrutsutilMessageResources使你能够将一套资源包视做一个数据库并且允许你为一个特定的Locale(通常是与当前用户相对应)请求一个特定的消息而不是为服务器运行在其中的缺省的Locale请求消息
三
示例
我们还在前面的登录实例进行加工
在默认的applicationResourcesproperties文件中添加相应的消息文本
labelusername=username
labelpassword=password
buttonsubmit=submit
buttonreset=reset
创建临时中文资源文件applicationResources_temppropertyies
labelusername=用户名
labelpassword=密码
buttonsubmit=确定
buttonreset=重置
对临时资源文件进行编码转换
在JDK中提供了nativeascii命令它能够实现字符编码转换在DOS下执行以下命令将生成按GBK以编码的中文资源文件applicationResources_zh_CNproperties
nativeascii –encoding gbk applicationResources_tempproperties
applicationResources_zh_CNproperties
生成的applicationResources_zh_CNproperties的内容如下
labelusername=uuud
labelpassword=ubcu
buttonsubmit=ueuba
buttonreset=ucdufe
当web用户的Locale为中文时Struts框架将自动选择来自applicationResources_zh_CNproperties文件的消息文本
创建英文的资源文件
labelusername=username
labelpassword=password
buttonsubmit=submit
buttonreset=reset
完成以上几个步骤后在web 应用程序的根目录WEBINF目录classes目录下应该有了三个资源文件
默认资源文件applicationResourceproperties
中文资源文件applicationResource_zh_CNproperties
英文资源文件applicationResource_enproperties
创建struts的Resource Bundle
Struts配置文件中的元素定义了一个Resource BundleResource Bundle的持久化消息文本存储在资源文件中其扩展名为properties里面存放的都是键/值
在strutsconfigxml中对Resource Bundle的配置代码
表示默认的资源文件应该是applicationResourcesproperties存放在应用程序的根目录WEBINF目录classes目录下如果应用程序需要支持中文用户要在相同目录下创建一个包涵中文消息的资源文件文件名必须为applicationResource_zh_CNproperties
修改loginjsp页面
<html:form action=logindo method=post>
<bean:message key=labelusername/>
<html:text property=username /><html:errors property=username/>
<br />
<bean:message key=labelpassword/>
<html:text property=userpass /><html:errors property=userpass/>
<br>
<input type=submit name=Submit value=<bean:message key=buttonsubmit/>>
<input type=reset value=<bean:message key=buttonreset/>>
</html:form>
<bean:message/>:用于访问web应用资源的bean标签显示Resource Boundle中的内容
运行程序
)如果你的浏览器默认设置为中文你键入地址将看到的页面如下
)把你的浏览器的设置为英文然后刷新页面如下图
总结国际化对于web应用程序来说很重要如果你的web应用程序面对多个国家的话要实现不同语言的切换如果不使用国际化的话要么只有一种语言要么在程序里面改现在一切都方面了不过java对中文的支持并不好并不是什么地方都可以使用中文的如在LookUpDispatchAction中就不能使用国际化哦