JavaEE程序设计 第6讲Struts国际化处理
课程结构 教学任务 培养目标 教学时间与方式
课程结构:
教学任务: 通过本讲的学习掌握Struts如何实现国际化。
培养目标: 通过本讲的学习掌握如何在MyEclipse中实现Struts的应用。 教学时间与方式: 讲授,2学时
6.1 Struts对国际化的支持 “国际化”是指一个应用程序在运行时能够根据客户端请求所来自的国家/地区、语言的不同而显示不同的用户界面。例如,请求来自于一台中文操作系统的客户端计算机,则应用程序响应界面中的各种标签、错误和帮助信息均使用中文文字;如果客户端计算机采用的是英文操作系统,则应用程序也应能识别并自动以英文界面做出响应。 可以看出,引入国际化机制的目的在于提供自适应、更友好的用户界面,而并未改变程序的其他功能/业务逻辑。人们常用I18N这个词作为“国际化”的简称,其来源是英文Internationaliztion的首末字母i和n及它们之间的字符数18。 Struts框架通过使用<bean:message>标记,以及使用java.util数据包中定义的Locale和ResourceBundle类来支持国际化。 java.text.MessageFormat类定义的技术可以支持消息的格式。利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式。
6.2 资源文件的编写 要用Struts实现国际化和本地化,首先要定义资源文件的名称,这个文件会包含用默认语言编写的在程序中会出现的所有消息。这些消息以“关键字—值”的形式存储。当对一个应用程序进行国际化处理时,所要用的各种语言版本的“标签”信息应该存放在不同的属性文件中,每一个这样的文件对应一种语言的版本。所有属性文件合在一起被称为资源包(Resource Bundle)。 属性文件的命名格式可分为以下两种: (1)文件名前缀.properties (2)文件名前缀_语言种类.properties 文件名后缀必须为properties,前缀则由开发者自行确定,其中的语言种类字段必须是有效的ISO(International Standardization Organization,国际标准化组织)语言代码,ISO-639标准定义的这些代码格式为英文小写、双字符,具体见表5-1所示。
6.2 资源文件的编写 表5-1 ISO-639标准常用语言代码 语 言 编 码 汉语(Chinese) Zh 英语(English) En 6.2 资源文件的编写 表5-1 ISO-639标准常用语言代码 语 言 编 码 汉语(Chinese) Zh 英语(English) En 法语(French) Fr 德语(German) De 日语(Japanese) Ja 意大利语(Italian ) It 访问网址http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt可以获取其他ISO-639标准语言代码。 例如,如果我们要对前面的登录系统进行国际化处理,要求根据不同的语言环境显示英文和中文用户界面,那么就需要创建英文和中文版本的资源文件,分别取名为ApplicationResources.properties和ApplicationResources_zh.properties。它们的内容如下所示。 英文版资源文件ApplicationResources.properties label.username = Input your username label.password = Input your password 中文版资源文件ApplicationResources_zh.properties label.username = 姓名 label.password = 密码 可以看出,属性文件中包含的是“键—值”对的形式的字符串信息。
6.3 资源文件的编码转换 由于资源包是国际化的保证,因此它的编码应当使用标准的编码方式,一般为Unicode。所以,在资源包中的文件都需要经过编码转制。在JDK自带的工具中有一个native2ascii程序就是专门来进行资源文件转码的。该工具位于JDK安装目录下的bin目录中。 需要特别注意的是,中文版属性文件ApplicationResources_zh.properties需要进一步处理,需要把它里面的中文字符转化为Unicode代码,否则国际化处理的页面将会出现乱码。利用native2ascii程序对中文版资源文件进行编码转化的命令格式如下: 文件所在目录> native2ascii –encoding GB2312 ApplicationResources_zh.properties ApplicationResources_zh_CN.properties 例如,假如资源文件ApplicationResources_zh.properties放在D:\ login\WEB-INF\classes目录中,使用native2ascii对它进行转化的命令如下: D:\login\WEB-INF\classes>native2ascii –encoding GB2312 ApplicationResources_zh.properties 经过native2ascii转化后,生成一个新的资源文件ApplicationResources_zh_ CN.properties。
6.4 资源文件的加载 资源包需要在Struts配置文件struts-config.xml中进行配置。<message-resources>元素就是用来配置资源包的。 语法是:<message-resources parameter=“pack.baseName”> 例如: <message-resources parameter=“test.scvtc”> 如果有多个资源包要配置,那么它们用key属性来进行区分。 <message-resources parameter="ApplicationResources"/> <message-resources key="Image" parameter="ApplicationImageResources"/> <message-resources key="XXX" parameter="ApplicationXXXResources"/> 其中,不带key属性的就是默认的资源包。
6.5 资源文件的使用 资源包建立好后,就可以对其进行访问了。在JSP页面中通过<bean:message>标记来访问。使用struts的bean标签库输出国际化文字的步骤如下: 导入bean标签库 <%@taglib uri=“/WEB-INF/struts-bean.tld” prefix=“bean”%> 使用bean标签库的message标签 例如:<bean:message key=“label.username”/>
要在浏览器中体会国际化,需进行下面的操作: 6.6浏览器中体会国际化能力 要在浏览器中体会国际化,需进行下面的操作: (1)打开IE的Internete选项 (2)在常规选项卡的下方,点击语言按钮 (3)添加英语,并上移到顶,那么IE默认语言就变成了英语 (4)界面随语言而相应变化
6.7 struts实现国际化的操作步骤 6.8 总结 (1)编写资源文件:注意命名方式,非西欧文字要进行转换 (2)加载资源文件:注意包名 (3)在页面中使用struts的bean标签输出资源内容 6.8 总结 通过本讲掌握多语言国际化实现的思想和Struts实现国际化的操作步骤。