Tivoli 服务台 6.0 开发工具包脚本程序设计指南
由于许多软件开发者在扩大他们的市场范围,在一个国家开发的软件不可避免地在其它国家销售或使用。这种移植要求软件开发者了解由于软件在国际市场上使用而带来的特殊需求。
除了了解在编码时可能不得不解决的文化差异,还应了解本地化对应用程序可能产生的影响。为特定的文化组更改软件应用程序称作本地化。
如果不了解国际市场上存在的细微差异会怎样?如何创建可轻易本地化的软件。
本地化最直接的解决方案是把所有必需的资源存储在 .df 文件中。即与代码的其余部分分开,单独编译和存储所有位图、菜单、字符串、图符和对话框。当把一应用程序卖到美国以外时,分销商就收到编辑这些资源必需的所有必要工具和指导。
一旦适当本地化了这些资源,则可重建文件并把它们复制到安装介质上。
不需要修改代码,则不需要以任何其它方式修改安装介质。作为此操作的结果,也将本地化安装程序。
只要有可能,Tivoli 应用程序就避免使用专有的代码处理国际化问题。因此,任何操作系统的本地、宽字符复制进程可把双字节代码转换成单字节代码。
由主机操作系统使其可用的国际化数据和 API 调用总用于替代专有的工具。这减小应用程序的大小并使增加新支持的语言环境变得简单。
Tivoli 应用程序使用的所有字符串在内部存储为 Unicode(统一字符编码)字符串。 Unicode(即 ISO 10646)是同时支持所有国际语言环境的字母表的统一的十六位字符系统。
许多其它国际化应用程序对国际字符串(也称作多字节)使用 ISO 8859/x 标准。此标准对比较小的字母表使用八位字符,对比较大的字母表使用十六位字符。虽然使用多字节代码页的应用程序可能使用的内存更少一点,但会导致不能达到性能目标。
单个 ISO 字符串可以混合八位和十六位字符。因为如果不看单个字节前的许多字节,就没有方法可靠地确定它是完整的字符还是字符的一部分,所以像备份单个字符或数字符串中的字符数这样的简单操作变得更复杂。
TSD 脚本的国际化支持使编写符合它支持的语言环境需要的代码变得容易。但是,记住下列两点很重要,其一文化偏见确实存在,其二这些差异会影响在美国编写并为特定语言环境翻译的应用程序的理解。
您需要了解影响在不同语言环境中使用的应用程序的任何特定偏见。例如,紫色有这些文化解释:
在国际化应用程序中包容下列内容特别重要:
通过使用不同的代码页,操作系统适应本地语言的字母表。代码页实质上是数字到字符联系的表,它使得字符串正确显示。
计算机系统显示字母,其代码页把字母与字符串中的数字相关联。必须这样写软件,以便把适当的字符串通过代码页发送给操作系统。
单个操作系统可能支持包括很多相同字符的多个代码页。但是,不需要将两个代码页公共的字符与两个代码页上相同的数字相关联。
例如,在 Windows 95 使用的拉丁字母表代码页中字母 e 是数字 233。在 MS-DOS 使用的拉丁字母表代码页中此相同字母是数字 130。
使用开发工具包接口设计器,翻译程序装载为一代码页写的字符串并把其翻译到另一代码页。本地操作系统确定什么代码页对应用程序可用。
使用不同的代码页,也就有不同的键盘布局。国际化的应用程序必须允许缺省加速键映射适应任何键盘。
不同的语言环境要求不同的排序次序。必须这样编写应用程序,以便本地代码页的字母次序以要求的次序提供已排序的列表。
在不同的语言环境,不区分大小写的字符串比较有不同的意义。在表意字符语言中,如日语和汉语,“区分大小写”无意义。在其它字母表中,字母可能不仅有大写或小写。
一旦创建了 .df 文件,开发工具包就在操作系统上使用本地调用来排序和比较字符串。
组合子串以形成完整短语是在应用程序的许多初始国际化版本中出现的典型错误。由于在其它语言环境中句子结构不同,相对于另一语言环境,动词、名词、形容词和副词可能都出现在不同的位置。许多语言也给句子的不同部分分配性,这需要根据相关联的名词是雄性、雌性或中性而使用不同的词。
注:应尽可能避免组合子串。
表意字符语言(如日语和汉语)字符太多,故不能在键盘上表示所有的字符。因此,大多数操作系统允许用户使用不同的字母表输入字符的语音拼写。然后,操作系统提出一套可能的表意符号,供用户从中作选择。选择的字符放在文档或输入字段中。在一个语言环境中可能有多个语音字母表。
开发工具包支持操作系统提供的标准 IME。
不同的语言环境使用不同的格式来显示数字信息、日期、时间和币值。例如:
因为并非在所有的语言环境都使用 “8.5x11”纸张,当打印纸页和信封时,国际化的软件应用程序必须允许使用不同尺寸纸张。
开发工具包没有转换纸张大小的机制。
美国之外的大多数语言环境要求应用程序显示公制而不是英制单位。
开发工具包没有把英制单位转换到公制单位的机制。
把文本翻译为不同的语言后,文本大小可能比原文显著增大或缩小。(这也称作翻译伸展。)
例如:把一段文本从英语翻译成西班牙语或德语,使文本的总大小增大大约 30%。
下表显示此概念。
字符数 | 文本扩充因子 |
1 到 10 | 100 到 200% |
11 到 20 | 80 到 100% |
21 到 30 | 60 到 80% |
31 到 50 | 40 到 60% |
51 到 70 | 31 到 40% |
多于 70 | 30% |
图符和其它位图上的图形符号必须能被轻易更改或有通用的意义。国际化的软件应用程序应避免在位图中有文本,这需要为每一语言环境进行翻译。
也有这种可能,即看起来可能是无害的和通用的符号在特定的语言环境中可能有有害的或侮辱性的意义。
关于对话框和窗口的颜色使用,也应采取相同的预防措施。一些语言环境对颜色的理解与西方文化非常不同。
下表显示美国和中国对颜色理解的不同。
颜色 | 国家和解释 |
红色 | 中国:繁荣、再生 美国:权力、停止、危险 |
白色 | 中国:死亡、哀悼 美国:纯洁、纯真 |
黄色 | 中国:欢乐、财富、高贵、荣誉 美国:警告、身体危险的可能性 |
软件应用程序使用语言环境的概念来标识文化组,可把应用程序本地化到该文化组。
语言、国家和民族(文化)是独立的实体:这些实体的每一组合有与其相关联的唯一的语言环境。例如,瑞士人说四种不同的语言:
这些组合的每一种需要独立的唯一的语言环境。
在用于 Windows、UNIX 和 OS/2 的 TSD 脚本中完全支持下列语言环境。
现在通过 softart.ini 文件中的一个条目可控制字符集以及其它打印机特性。 softart.ini 的打印机段中的“ControlString”条目包括一系列字符,每当为写入而打开 PRN 或 LPT1 文件名时,这些字符都发送给打印机。
此特性允许用户打印包括“扩展”字符的字符串。扩展字符是其 ASCII 值大于 128 的字符。操作系统的国际化版本使用这些字符显示重音字符或标准美国键盘上没有的字符(如德语的“ss”字符)。
如果使用惠普激光打印机,MS-Windows 的控制字符串“\x1B(9U”与 OS/2 的“\x1B(12U”选择适当的字符集来支持扩展字符。如果使用其它制造商生产的打印机,则请参考打印机文档,找到适当的控制序列。
在开发工具包使用的配置文件(sai_sql.cfg、softart.ini 等等)中避免使用“扩展”字符。扩展字符是其 ASCII 值大于 128 的字符。
对“2000 年问题”处理,本地日期格式用两位表示年的语言环境使用下列假使。如果年的范围是:
为避免混淆有关世纪,使用 Windows 中的区域设置控制面板访问国际设置,在该处可选择使用四位数记年的日期格式。
注:在 UNIX 中,使用语言环境缺省值。
Tivoli 服务台 6.0 开发工具包脚本程序设计指南