您的位置:首页 > 编程语言 > Java开发

Struts2.0 (开发之四)--(i18n)国际化--CTO

2008-05-29 22:13 302 查看
在前面讲过的Struts2校验框架时我们有讲到过 Struts2 的国际化,就是最后的代码清单五提到过的,在Struts2 的一个应用里怎样实现国际化 如何实现呢!首先我们知道在Struts1.x 的国际化已经做得非常好,它简化了开发人员在做国际化时所需的工作量,比如我们要输出一条国际化的信息,只要在工程的Struts目录中加入messages_zh_CN.properties,然后在struts-config.xml中指明其路径与messages,在jsp页面可以通过<bean:message key=""/> 标签输出便可, 那么在Struts2 中作了更大的改进,比Struts1.x 更灵活,也更的强大,

首先我们来理解一下什么是国际化,国际化就是根据不同的国家来显示不同的语言,这时 i18N出来了,i18N代表着国际化,它的全写是 internationalization , 总共由20个字母组成,为了方便,取出第一个和最后一个字母,中间还有18个字母用数字18代表,就是我们常说的i18N了,那么以后大家在见到i18N是就知道是国际化的意思,在Struts2 中实现国际化与Struts1.x 其实是一样,首先我们在 classpath 目录下建立一个 messages.properties 文件,文件内容请看清单一: message.properties

com.userName=用户名
com.password=密码

在 java 中这样输出是会出现乱码的,这时因为java默认都是以 Unicode 的编码,我们在使用时需要将

Unicode重新编码,而我们计算机都是 UTF-8或GBK编码,这个时候我们就要将系统的编码方式转换为

java正确识别的编码格式,这个时候我们就需要一个转换器来解决,那就是 native2ascii,

native2ascii是SUN JAVA JDK提供的一个编码工具,用来将文本文件转换为Unicode编码,

如(*.properties,*.txt,*.java等),为什么要进行转码,原因在于程序需要国际化.

Unicode编码的定义是:Unicode(统一码、万国码、单一码)它是一种在计算机上使用的字符

编码.它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进

行文本转换、处理的要求.

那么如何得到native2ascii 呢!怎样来转换我们的文本文件呢!其实有二种方式可以实现

一.在安装好 jdk 后,在jdk的安装路径有个bin目录,该目录下包含一个native2ascii.exe

就是了,在使用时只要运行该exe文件,能后次需要转换的内容复制到当中,按enter就可看到转

换后的 Unicode 了.

二.首先找到需要转换文件的目录,将其复制下来,在运行中输入 cmd ,cd 到复制的目录,能后输

入 native2ascii messages.properties messages_zh_CN.properties 这个时候我们

发现在目标目录下多出了一个文件,这个文件就是我们需要的实现国际化的文件,将这个文件放

入到工程的src目录下,这个在编辑后会放到WEB-INF/classes目录下,

我们再添加一个 messages_en_US.properties 文件,内容如清单二:

清单二:message_en_US.properties com.userName=userName
com.password=password

这个文件同样放入到工程目录的src 下,当写好这二个文件后还需要添加另一个文件

struts.properties ,struts2支持在JSP页面中临时加载资源文件,也支持通过全局属性

来加载资源文件,全局属性加载资源文件就是通过 struts.properties 文件来完成,该文

件需加入一行代码如清单三:

清单三:struts.propertiesstruts.custom.i18n.resources=messages

messages 是指明资源配置文件的 baseName为messages,该文件同样是保存在工程目录的

src 目录下,struts2默认会加载该路径下的资源文件,如果想将该文件保存在 classpath

的子目录中,那就需要修改struts.properties 内容,如清单四:

清单四:struts.properties

struts.custom.i18n.resources=子目录.messages

在JSP页面输出时我们用Struts2标签,有二种方式来显示,如以下清单五:

清单五:login.jsp

<%@page contentType="text/html; charset=UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <html> <head> <title>login</title> </head> <body> <!--<s:text name="userName"/> <s:property value="%{getText('userName')}"/>-->

<s:textfield name="name" label="%{getText('userName')}"/>

<s:textfield name="pwd" label="%{getText('password')}"/>

</body>
</html>

这样我们将浏览器的语言设为中文时显示中文,设为英文时显示英文



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: