首页 文章 Java基础 developerWorks 图书频道: 全球化软件开发最佳实践,第 4 章:全球化软件体系结构

邮件订阅

developerWorks 图书频道: 全球化软件开发最佳实践,第 4 章:全球化软件体系结构 E-mail
用户评价: / 0
好 
作者:Administrator   
2009-05-15 13:28

 图书信息 书名:全球化软件开发最佳实践
作者:童春杰 周皓峰 杨普 舒芳蕊 等编著
出版社:电子工业出版社
出版日期:2008 年 6 月
ISBN:978-7-121-06315-2
购买: 中国互动出版网卓越网

推荐章节:

更多推荐书籍,请访问 developerWorks 图书频道

欢迎您对本书提出宝贵的反馈意见。您可以通过本页面最下方的 建议 栏目为本文打分,并反馈您的建议和意见。

如果您对 developerWorks 图书频道有什么好的建议,欢迎您将建议发给我们

4.1 全球化软件的特点

全球化的软件主要有以下特点。

1.用户可以输入、查看和打印不同语言的字符,而且系统能正确接受、处理和输出结果

从为文字处理编程的角度来看,有些语言比较容易处理,比如英语、法语和西班牙语;但是有些就比较复杂,像泰语、希伯来语和阿拉伯语,事实上,它们都称为复杂显示语言。在希伯来语和阿拉伯语中,其文字是自右向左显示的,但是其他语言的文字和数字是自左向右显示的,当这些文字和数字混合在一起时,就要求能支持双向显示。在泰语和阿拉伯语中,有些字符还会因为它们两边的字符而改变位置(高低)或变形,所以在处理这类文字时还要有上下文的支持。

另外,随着对语言相关需求的增加,人们设计出了一些特别的输入/输出设备。比如,在手机和个人数字助理领域,研究者发明了不少前沿的技术和设备来提高易用性,如手写屏,这就对文字输入处理提出了更高的要求。

2.对数据提供正确的文化支持

比如,日期、时间、数字、货币必须能根据用户的文化习俗进行正确的显示和处理,与文化相关的支持可以通过使用区域和区域敏感的功能来实现。高级的与区域和文化相关的支持可能会介入业务逻辑,比如,个人所得税计算必须根据相应国家的税收政策和个人收入来计算。

3.通过Unicode技术提供多语言的支持

Unicode是通用的字符编码方案,包括世界上许多语言的字符集,从而为处理国际间多语言文本的交换提供了一致的方法。现在,Unicode已得到广泛使用,它被许多标准(比如HTML和XML)确定为默认编码。

4.用户可以选择适合自己的语言和文化偏好

个性化的服务能极大地方便用户,所以就相关软件而言,提供个性化的功能非常有助于提高易用性。语言和文化偏好是许多个性化服务的基础。





回页首


4.2 全球化软件体系结构的组成要素

全球化功能的实现可以由操作系统、软件产品或商业应用程序来完成。操作系统通常只提供一些基本的支持,从而满足全球化解决方案的基本需求,软件产品和商业应用程序则提供进一步的支持。事实上,这三部分组合在一起,形成应用程序的全球化服务。就全球化软件的体系结构而言,尽管难以设计出单一的体系结构来满足所有全球化的应用软件或产品,但是我们可以为全球化的电子商务解决方案找到一些成功而有效的基本要素。全球化软件体系结构组成要素包括单一可执行体、本地化包、区域模型、Unicode支持和多语言数据的输入/输出等。如图4-1所示。


图 4-1 全球化软件体系结构组成要素
全球化软件体系结构组成要素

4.2.1 单一可执行体

单可执行体是指程序体与语言环境无关,即相同的程序体能同时支持不同语言的核心机制,它是确保正确有效地设计、构建和维护一个全球化系统的关键。该方法有许多优点:对于产品的所有者而言,它能极大地简化开发、测试和支持;对于产品的使用者而言,只需为每个平台安装一份全局的可执行代码,然后直接通过系统配置即可使之在不同的语言环境下运行。

通常,难以从一个只支持单一语言的应用程序演变成一个全球化的应用程序。在目前常见的设计支持多语言应用程序的方法(翻译)中,能提供与语言及文化相关的本地化支持的方法大致有三类,如图4-2所示,从中可以看到软件工程在此领域的演进。


图 4-2 语言及文化相关的本地化支持的方法
语言及文化相关的本地化支持的方法

1.方法A:程序把消息和菜单中与文化相关的数据嵌入在代码中

这是三个方法中维护开销最高的方法,比如早期的一些软件可翻译信息是硬编码在程序代码中的。因为每种语言都需要有自己单独的程序,且每个程序只支持自己特定的语言,所以,冗余的测试、维护和支持就增加了成本。

//字符串硬编码在代码中示例
System.out.println("Hello world! ");

2.方法B:程序绑定消息和菜单中与文化相关的数据

该方法比方法A有所改进,比如一些软件为不同国家或地区的语言提供不同的版本,但是这些版本共享同一套代码库。其做法是让应用程序由同一套代码生成,但方式是将应用程序与文化相关的文件绑定。通常,通过一些编译配置来绑定不同的语言以生成特定语言版本的软件,程序源代码与文化相关的元素相分离可使应用易于维护和重用。但是,可执行体只支持绑定的语言,所以,必须为每种语言重复地进行功能测试、维护和支持。即便只有一套代码,在编译时仍可能出现一些错误,如在用到单字节或多字节敏感的字符串库时。

3.方法C:单一可执行的程序,动态地使用资源

这种方法比前两种方法有很大的改进,具有许多优点,当前的 Java 平台对此提供了很好的支持。利用这种方法开发的程序使得通过编译源代码所产生的单一可执行体能处理所有受支持区域的与文化相关的需求,与方法B不同的是,与文化和语言无关的程序代码在运行时调用与文化和语言相关的信息,因而,能极大地减少整个产品生命周期中的各种开销。

//Java 中用 ResourceBundel 获取本地化信息
//根据上下文装入适合的本地化资源
ResourceBundle myBundle = ResourceBundle.getBundle("MyResource"); 
//…
System.out.println(myBundle.getString("KEY_HELLO_WORLD"));

使用该方法注意如下几个与设计和实现相关的考虑事项:

(1)可执行的源代码在逻辑上必须是唯一的,并用于所有受支持的区域。

(2)用于所有受支持区域的补丁逻辑上是唯一的。

(3)增加一个新的区域通常不需更改或增加程序可执行体。

(4)区域敏感的操作通过一套提供所有全球化功能的通用API支持机制来实现。

(5)所有功能可以正确应用于所有受支持的区域,这些功能包括但不限于:数字表示、日期表示、时间表示、货币表示及消息和用户界面。

4.2.2 区域模型

1.区域的定义和标识

在全球化中,“区域”用于划分人们对计算机在人类文化相关的行为方面的期许,通常用语言和国家或地区来标识。根据这些分类,就可以建立一些标准来描述相关的期许集,比如,日期时间如何显示、单词如何排序。对于全球化软件体系结构而言,一个区域指某种语言和国家或地区的规范,或是某种语言、国家或地区和变体的规范,一个区域可以用一个字符串指定,比如,"French-Belgium"(比利时法语)。

区域模型包含关于所有这些文化特征的假定,尤其是在一个全球化的电子商务系统中,任何适当的区域模型必须满足如下需求:

(1)区域模型至少要表明语言和国家或地区,并且可以用某种额外的方式指定变体。

(2)它支持与区域相关的计算的主要类别。

(3)它能在源或者运行时提供层次结构的回溯机制。

(4)它允许为每个客户设定不同的区域。对于多客户的服务器软件,这意味着必须提供一种方法,为每种客户上下文提供不同的区域处理。

(5)区域模型允许电子商务系统中的所有区域敏感的组件能正确地交流区域设置。

2.区域模型示例

(1)数字和数学

现在,世界上几乎所有国家都用十进制数,但是数字的格式却有很大的不同,而且仍然有些传统的计数系统在重要的场合下使用,如罗马数字。特别需要指出,德语中的“小数点”使用“,”,而千位分隔符却使用“.”,这与中文正好相反,如图4-3所示(德语:de_DE):


图 4-3 数字格式
数字格式

(2)货币格式

货币格式通常包含区域、货币名称、货币分位、货币符号、正数格式、负数格式、货币代码和货币分隔符。货币分隔符包括千分符、小数分隔符、小数点位置、字段长度和填充字符。

不同的国家/地区有不同的货币格式和规则。图4-4表示在国际银行中使用的典型货币格式。


图 4-4 货币格式
货币格式

现实生活中的情况稍许复杂些,因为给定的区域对不同的货币可能有不同的格式。例如,某些美国人可能希望一张图表中既显示美元又显示卢比,但是希望用英语的格式显示卢比而不是用印度的格式。

(3)日期

图4-5显示了几个国家或地区中的常用日期格式。当需要考虑进一步地精确显示时,还需要有额外的注意事项。例如:

? 是否需要日期和月份的前导零。

? 尽管数字通常采用十进制,但是有时可能需要用区域敏感的字符,诸如在希伯来语中。

? 存储格式(按键序列)和显示格式可能存在差别,比如在双向文字中。


图 4-5 日期格式
日期格式

(4)时间

图4-6显示的时间格式,在不同的环境下可能需要调整。为了更为精确,可以再加些参数。例如时区信息(ST,CST和GMT等),而诸如周末、假日和夏时制使之更加复杂。


图 4-6 时间格式
时间格式

(5)日历

世界上多数地方使用阳历,同时阳历也是国际事务中的标准历。但是,有些国家或地区仍然在使用自己的日历,这可能基于历史、政治、信仰、文化,甚至是占星的原因。比如中国人的农历已经使用了数千年,至今仍在民间使用;日本和一些阿拉伯国家也有自己的日历。

(6)度量衡

由于历史和语言的原因,许多国家使用的度量系统不同。例如美国人倾向于用英里而不是公里。还有一个例子就是打印纸的尺寸,世界各国之间也是不一致的。

(7)图标

图标是关于对象或动作的图片,需要清楚认识图标本地含义的重要性。为了减少产品被特定的国家/地区或文化所禁用的几率,我们需要注意以下事项:

? 允许图标替换,即不要把图标绑定到可执行代码中。

? 力争广泛的认可,为不同的文化背景准备不同的图标。

? 如果可能,避免使用可能冒犯目标国家/地区的符号的图标。

(8)习惯

对于特定的国家/地区和文化,还需要考虑许多注意事项,比如:

? 缩写

同样的符号在不同国家/地区可能有不同的含义。例如,有些人会把“X”解释为删去不想要的东西而不是理解为应该选择某项。

? 问号

许多语言用“?”表示疑问,但也有些语言例外。比如,在西班牙语中,问句总是以倒“?”开头的。希腊语中的问号看上去非常像分号,但是希腊语中的分号就像一个提高了的“.”。

? 百分号

常用的表示百分比的是“%”,如68%,这也存在例外。在比利时的荷兰语中,有时用pct(如68pct)表示百分比;在加拿大的魁北克,数字和符号写作“68 %”,中间有个空格;在土耳其语中,百分号写在数字的前面,如%68;在阿拉伯语中,%逻辑上是写在数字的后面,不过,由于写的过程是自右向左的,因此%显示在数字左边。

? 导航

英国、印度、日本和南非,车靠左边开;北美、南美、中国、多数欧洲国家和非洲、中东地区,车靠右开。

? 数字迷信

西方多数国家或地区认为“13”不吉利。

(9)排序

排序可分为单一语言排序和多语言排序,对不同的语言,有许多复杂的因素。比如在中文中,可以按拼音排序,也可按笔画排序,当按拼音排序时,就得考虑多音字问题,如“重庆”和“重要”中的“重”字。就支持某个国家或地区的语言来讲,正确的排序必须产生如下结果。

? 可以预见的结果:无论第一项是谁,排序结果必须总是相同的。

? 符合文化习惯的顺序:只有当排序结果如预期一样时,人们才容易找到期望的条目。

除了上面所列的示例外,还有许多其他方面的例子。比如,不同的国家或地区有不同的幸运颜色。商务礼仪也是与文化密切相关的,例如,阿拉伯国家的商务着装要求是非常严格的。

为了能成功地在全球开展商务,你必须理解、适应这些文化差异。就电子商务领域而言,这意味着通过提供正确的区域模型软件来满足用户文化相关的需求。

3.公用本地化数据(CLDR)

CLDR为软件支持世界上的各种语言提供了基本组件,是目前本地化数据标准库中最大、最广泛的。许多公司使用它来实现软件的国际化和本地化,包括时间、日期、数字、货币等的格式化;文字排序;用名称选择语言或国家等。

CLDR使用XML作为数据格式,该格式称为本地化数据标识语言(LDML)。LDML不仅由CLDR使用,还用做本地化数据交换的格式,比如用于.NET。

4.和语言相关的服务

和语言相关的服务包括拼写检查、连字符、文法检查、辞典、消除歧义、语言判定、文本挖掘、语音服务、文本搜索和机器翻译等。

图4-7是字处理软件对英语单词进行拼写检查的示例。


图 4-7 字处理软件对英语进行拼写检查
字处理软件对英语进行拼写检查

4.2.3 多语言数据的输入/输出

输入/输出是常用的计算机术语,它们把计算机与用户之间的交流分成了两个任务。 输入负责从用户那里获得数据,而输出则是负责回送响应数据。

从输入/输出的角度看,全球化意味着能用键盘、鼠标或者其他设备输入不同语言的文字,而且又能用这些语言打印或显示结果。通常,这些功能由操作系统提供。通过使用和语言相关的服务,可以为用户提供更加友好的界面,比如用语音作为输入/输出。图4-8是一个多语言数据显示的示例。

1.复杂的输入

中文的输入相对来讲是比较复杂的,以至于要专门开发一个输入法引擎。同时,还有许多输入方法可供选择,比如大家常用的拼音输入法,如图4-9所示。

2.复杂的输出

参见上一章双向文字部分。


图 4-8 多语言数据的网页
多语言数据的网页

图 4-9 中文拼音输入法
中文拼音输入法

3.其他技术

如今,输入/输出设备不再只是限于键盘、打印机、显示器和鼠标,科学技术的发展扩展着这些传统概念。比如:文字到语音技术,它能把文字转换成语音。运用该技术,无须预先录音,系统就可以提供语音形式的输出,该技术可以运用到那些将语音信息输出到 PC 扬声器、声卡或电话的应用程序中。而语音识别技术则是把语音转换成文字,通过语音识别技术,系统可以接受用户的声音作为输入,而且能“理解”用户说的是什么。语音识别可以运用到那些以声音指挥或导航的应用程序中。

同时使用文字到语音和语音识别技术的应用程序就可以为普通的文本系统和语言用户提供语言网关,比如 IBM WebSphere 语音服务器。

另外,光学字符扫描技术可将现有的纸面等介质上的文字扫描为输入信息。手写识别技术目前已广泛用于个人数字助理,为用户提供了一种较为自然的输入方法。





回页首


本章小结

本章介绍了介绍国际化软件体系结构的特点及组成要素,包括单一可执行体、区域模型、多语言输入/输出和本地化等。



读者反馈

欢迎您对本书提出宝贵的反馈意见。您可以通过本页面最下方的 建议 栏目为本文打分,并反馈您的建议和意见。

如果您对 developerWorks 图书频道有什么好的建议,欢迎您将建议发给我们



最后更新于: 2009-05-15 13:28
 

欢迎转载

本站文章欢迎转载,但请注明出处(http://www.javajia.com,Java家)

其他相关文章