Struts2之国际化

来源:互联网 发布:简谱视唱软件 编辑:程序博客网 时间:2024/05/16 17:42

Struts2之国际化 
 
[风]
 
这个世界上唯一不变的就是变化,不知道明天会发生什么,也许这就是生命的动力吧。
 
我们不能限制我们的用户不改变他的想法,也不能让所有的用户都按照我们的想法去设计项目。举个简单的例子,比如说登陆失败的消息,如果用户没有输入帐号就点击了登陆按钮。用户甲可能会希望提示消息是“请输入帐号!”,用户乙可能会希望提示消息是“帐号不能为空!”。
 
还有,用户起初的想法可能是只开发一个在中文环境下运行的系统,后来很有可能要一个功能相同但是在英文或者日文环境下运行的系统。怎样让我们的系统在最小的改动下适应用户的需求呢?在这一点上,微软做的很不错,我想尽办法都无法让QQ在日文系统下运行,但是MSN就不用担心这样的问题。
 
这就是我们今天要研究的内容--国际化要解决的问题。
 
首先我们要知道什么是属性文件。属性文件并不是Struts特有的东西,是Java本身就支持的一个技术。属性文件就是以.properties为扩展名的文本文件。属性文件里面保存的是属性列表,属性列表中每个键及其对应值都是一个字符串。
 
我们可以把项目要显示给用户的字符串保存在属性列表中,项目中使用字符串对应的键。这样,当用户要修改字符串的时候,我们就可以直接到属性文件里去修改,就不用修改程序代码了。而且,属性文件还可以这样命名:XXX_zh_CN.properties,XXX_en_US.properties或XXX_ja_JP.properties,这样我们就可以把中文版的消息字符串保存在zh_CN.properties里,把英文版的保存在en_US里,把日文版的保存在ja_JP里。然后,程序根据运行时环境决定加载哪个文件,这就是我们所谓的国际化。
 
这样说好像有点难,实际上Struts为我们做了很多工作,我们需要关心的只是定义键和对应的字符串,然后在显示的地方指定键就可以了。
 
还有个问题得先解决,就是不同的语言编码字符集不同,而属性文件要求编码相同。我们当然可以利用JDK提供的native2ascii.exe做一下转换。不过这不是我推荐使用的方法,日本人开发了一个Eclipse插件,属性编辑器(propedit),我下载的版本是jp.gt.java_conf.ussiy.app.propedit_3.1.1.zip,利用他我们就可以直接写中文或日文,保存的时候它能帮我们自动转换。
 
啰嗦了这么多,也该办点正事了,先用属性编辑器建立两个属性文件:
globalMessages_en_US.properties
-------------------------------
username=User Name
password=Password
submit.title=submit
-------------------------------
globalMessages_zh_CN.properties
-------------------------------
username=帐号
password=密码
submit.title=提交
-------------------------------
把它们保存在/tutorial/src下,编译后会自动保存在tutorial/WEB-INF/classes目录下。
 
打开struts.xml, 在<struts>的下面加如下一行配置:
<constant name="struts.custom.i18n.resources" value="globalMessages" />
帮助位置:
struts-2.0.6/docs/docs/constant-configuration.html
struts-2.0.6/docs/docs/strutsproperties.html
 
修改Login.jsp里的Form内容如下:
<s:form action="Login" method="post" theme="simple">
    <s:text name="username"/>:<s:textfield name="username" /><br>
    <s:text name="password"/>:<s:password name="password" /><br>
    <s:submit value="%{getText('submit.title')}" />
</s:form>
帮助位置:struts-2.0.6/docs/docs/text.html
 
编译,部署项目,启动Tomcat在浏览器的地址栏里输入:
http://localhost:8080/tutorial/Login!input.action
如果显示的是中文提示就表示成功了^_^
 
改变浏览器的语言设置([工具]->[Internet选项]->[语言]->[添加]->[英语(美国)]->[选中英语并按上移按钮]然后确定修改)

刷新页面,如果显示内容从中文变成了英文就表示完全成功了^_^
 
到这里简单的国际化就完成了,今天的内容有点多,就先写到这吧~
 
 

原创粉丝点击