struts——国际化的实现

来源:互联网 发布:印度人知乎 编辑:程序博客网 时间:2024/06/05 23:58

我们经常看到有的网站可以选择不同的语言来进行浏览。这就是国际化,struts2为我们提供了国际化功能,可以是我们的web开发很容易的实现国际化。

这里主要是一些struts2学习过程中的一些心得的总结,欢迎大家交流学习http://blog.csdn.net/IAccepted。

我们以英语和汉语双语为例来讲解国际化的实现过程。

1.首先我们要建立两个资源文件。baseName_en_US.properties和baseName_en_US.properties。其中baseName可以为任何名称,但一般以相应的类名作为baseName

这两个资源文件就是国际化中对应的中文和英文对照表。里面存储的是键值对。

username=Username

username=\u7528\u6237\u540d

以上分别为baseName_en_US.properties和baseName_en_US.properties中的内容。其中baseName_en_US.properties中的内容必须为utf-8格式的文件,所以我们可以借助jdk中提供的工具进行转码,上述为转码后的文档,表示username=用户名

2.在struts.xml中进行国际化文件的配置

<constant name="struts.custom.i18n.resources" value="baseName"/>

这里主要是说明,配置文件的名字是baseName而且此配置文件为全局的,当然这里你也可以为每个相应的包建立资源文件来实现局部国际化。效果相同。

3.将jsp文件中用到“用户名”的地方改为<s:text name="username"/>这样工程就会在这里用相应的资源文件中的内容来显示,如果是中文就会显示用户名,如果是英文就会显示username。

<form action="Logon" method="post">        <s:text name="username">:</s:text>//这里就会根据语言环境的选择不同而显示不同的内容     <input type="text" name="id"/>     <s:text name="pwd">:</s:text>     <input type="password" name="pwd">     <input type="submit" value="<s:text name="sub"/>"></form>
4.可以利用url后面添加参数的方法实现自己选择语言。

<li><a href="ShowStudent?request_locale=zh_CN">学生信息管理</a></li><li><a href="ShowStudent?request_locale=en_US">Student Management</a></li>
这里传递的参数会被存储在session范围内,以后你每次显示的网页都会根据request_locale这个参数的值进行语言的选择,这个过程是自动的不用人为实现。


另外还必须注意的是要实现页面显示的国际化,必须先经过action才可以,这主要是因为,struts2中实现国际化的功能被封装在了拦截器中实现。如果不经过action而直接由页面转向页面,则不能实现国际化。