1.1Struts框架的国际化应用技术及实现程序实例
1、国际化程序概述
(1)国际化(Internationalization ---- i18n):就是设计一个应用系统,以使之能够不经过工程修改就可以使用于各种不同的语言和区域场所。
(2)本地化(Localization---- l10n):通过添加特定场所的组件和翻译文本来使软件适用于特定的场所和语言的过程。
(3)本地化那些内容
当一个软件产品需要在全球范围应用的时候,得考虑在不同的地域和语言环境下面的使用情况(也就是国际化问题),最简单的要求就是UI上的信息上能用本地化语言来显示,这主要包括操作界面的风格问题、提示和帮助语言的版本问题、界面定制个性化问题、日期和货币等。
(4)为什么要本地化?
我们花费了大量的精力来开发自己的Web应用,当然都希望在应用的开发上得到更大的投资回报。因为互联网连接着世界各地,每个应用都可以面对国际的受众。如果某个应用可以被本地化,那么它就可以被更多的访问者所访问。特别是在多语言的国家,比如比利时、加拿大、瑞士,甚至美国尤其重要。
如下面所给出的google的界面
●简体中文
●英文
另外,BEA的WebLogic管理控制台也采用此方法来实现国际化
2、Java中如何解决国际化的问题:
(1)应用被国际化的基本要求
要被国际化,一个应用应该能够
1)能够区分不同的场所;
2)使用同一个可执行包根据不同的场所显示相应的信息和标签;
3)在不重新编译的情况下提供对新的场所的支持;
4)自动格式化场所敏感的条目,比如日期和货币,为相应的场所和语言支持的格式。(2)Java 语言对国际化的支持
另外由于Java语言具有平台无关、可移植性好等优点,并且提供了强大的类库,所以Java 语言可以辅
助我们解决上述问题。Java语言本身采用双字节字符编码,采用大汉字字符集,Java本身在设计时,即针对国际化之需求采用Unicode作为系统内部的编码,这就为解决国际化问题提供了很多方便。
java语言使用的字符码集是
3、实现国际化程序的基本思路
(1)国际化时的基本策略
1)在Java平台中,每种语言和地区在Java中都存在一个标识符(参考上面的locale说
明),每个与本地化敏感的类都可以保存它自己的与本地化有关的信息,所有对本地化敏感的操作都可以明确指定一个地区标识符作为参数,这样,就大大简化了多语言程序。
2)从设计角度来说,只要把程序中与语言和文化有关的部分分离出来,加上特殊处理(单
独提取出来并放到资源文件中),就可以部分解决国际化问题。
3)在界面风格的定制方面,我们可以把参数化的元素,如字体、颜等,存储在数据库
里,以便为用户提供友好的界面;如果某些部分包含无法参数化的元素,那么我们可能不得不分别设计,通过有针对性的编码来解决具体问题。
(2)国际化程序的特征
1)文本元素在程序中不进行硬编码。它们存储于源代码之外,可自动进行动态检索
2)通过使用附加的本地化数据,同一可执行程序可在世界各地运行
3)支持新的语言时无须重新编译
4)与文化有关的数据(如日期和货币),其格式根据最终用户的地区和语言而定并可以
迅速进行本地化
(3)常见的支持国际化的WEB程序的几种形式
对于使用者来说,一个支持国际化的WEB程序具有下面几种形式
●根据用户浏览器自动设置显示的语言(无需用户干预)
这是最简单的方式,我们不需要修改任何程序,只需要把资源文件按照各个语言翻译一遍并把这些文件按照国际化程序的要求命名好并且放置在同一个目录即可。
例如ApplicationResource_en_US.properties、ApplicationResource_zh_TW.properties等资源字符串的属性文件。这种方式虽然自动的给用户设置好要显示的语言,但是有时候由于浏览器本身的问题,或者用户自己想看其他语种的时候就没有办法。
●提供用户选择,用户根据自己的需要决定使用何种语言显示
这是比较常见的方式,由用户自己来选择所要显示的语言。一般的情况是在首页或者登录页上增加语言的选项,用户选中其中一种登录后即以用户选择的语言进行显示,但是用户登录后必须把用户所选择的语言保存起来并让程序也就是<bean:message这些标签可以使用所选择的语言加载配置信息,因此在用户登录执行的Action类中加入如下代码
Locale locale = new Parameter("locale"));
//TODO:判断locale的有效性,无效的话不存入到sesssion中
好了,现在<bean:message/>这个标签库就可以根据你保存在session中的Locale对象来决定加载的是哪种语言, 通过看<bean:message/>标签库的源码,我们就可以一目了然知道该
标签库在加载资源前先从session或者该Locale对象,如果为空则使用Locale()这个值来加载对应语言的资源。
结合前两种,系统自动选择一种语言,但同时提供用户根据需要选择
4、实现国际化的l文件中的设置
(1)实现的技术支持
Struts框架对国际化的支持是使用<bean:message>标记,以及使用java.util数据包中定义的Locale和ResourceBundle类来实现Java2平台对这些任务的支持。MessageFormat类定义的技术可以支持消息的格式。
利用此功能,开发人员不需了解这些类的细节就可进行国际化和设置消息的格式。
(2)基本的思路
在 Struts中实现国际化的基本思路是,把资源文件按照各个语言翻译一遍并把这些文件按照国际化程序的要求命名好放置在同一个目录即可. 例如ApplicationResource_en_US.properties ApplicationResource_zh_TW.properties。
然后在Struts的config文件中添加多种语言的提示信息的资源文件的缺省资源文件名(就是存放我们的多种语言的提示信息的文件)
<struts-config>
………
<message-resources    parameter="netbook.ApplicationResources"/>
</struts-config>
服务器根据浏览器所发来的Header Accept-Language项目来决定返回那个资源文件中的信息。
注意:
1)我们为了能够使我们的应用系统达到国际化的实现要求,首先应该保证在各个JSP 页
面中不应该有硬编码的文本,同时在后台的JavaBean组件中页不应该返回硬编码的错误消息。
2)然而,在Web应用程序中,为了支持多种语言,文本不是惟一必须“具体化”的部
分。因为许多图像中嵌有文字,所以图形和图像也应该是可配置的。在极端的情况下,图像(或者颜)在不同的文化背景中可能有完全不同的意思。类似地,任何格式化

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。