FOSS 简介/本地化和国际化
根据本地化研究所,
本地化是将产品创建或调整到特定地区的过程,即针对特定目标市场的语言、文化背景、习惯和市场要求。通过适当的本地化产品,用户可以使用自己的语言和文化习惯与产品进行交互。这也意味着所有面向用户的消息和所有用户文档(印刷版和电子版)都使用用户的语言和文化习惯。最后,本地化的产品满足用户国家/地区的监管和其他要求。
国际化是一种设计和生产产品的模式,可以轻松地适应不同的地区。这需要从产品中提取所有语言、国家/地区和文化相关元素。换句话说,开发应用程序的过程,其功能设计和代码设计不基于单个地区进行假设,并且其源代码简化了程序不同地区版本的创建,被称为国际化。[1]
本地化和国际化通常可以互换使用。上面参考软件开发给出的定义清楚地展示了区别。就 FOSS 开发而言,一个很好的“国际化”和“本地化”的例子就是Mozilla项目。Mozilla 是目前最知名和最广泛使用的 FOSS 网络浏览器。Mozilla 实现了国际化,因为 Mozilla 项目背后的开发人员社区设计和开发了他们的软件以便在多个地区运行。当本地开发人员使用 Mozilla 项目提供的指南和本地化工具包修改或调整产品以适应特定地区时,Mozilla 实现了本地化。这种修改通常包括翻译用户界面、文档和包装,以及更改和定制功能以匹配该地区的用法模式。
由于 Mozilla 是一个 FOSS 项目,任何人都可以对其进行国际化和本地化。Mozilla 源代码是根据Mozilla 公共许可证 (MPL)分发的,该许可证是基于开源计划并获得批准的许可证。Mozilla 项目旨在为更大的互联网社区服务,该社区被认为是一个由来自众多语言组的用户组成的全球社区。Mozilla 项目的目标之一是“倡导将 mozilla.org 产品本地化为任何世界语言”。
Mozilla 的完全本地化版本覆盖了 34 种不同的语言。本地化工作仍在继续进行,以覆盖大多数其他语言。[2]
Venkatesh Hariharan 教授
对于每个不同的地区或国家,本地化GNU/Linux所面临的挑战各不相同。一些地区可能发现本地化只需要付出很少的努力。其他地区可能发现本地化需要进行大量的修改和定制编程。这在很大程度上取决于地区的特定需求与GNU/Linux中已本地化的需求之间的相似性。
使用不同的编码、输入和显示系统,本地化GNU/Linux有许多不同的方法。目前,最有效的技术方法是通过 Linux-Unicode-OpenType 模型进行本地化。以下是不同技术的简要说明。
- Unicode ( http://www.unicode.org )
- Unicode编码系统(最新版本为 Unicode 4.0)是用于编码字符和符号的行业标准。它与 ISO 通用字符集标准 10646 密切相关。ISO 和Unicode 联盟协调对这两个标准的添加。Unicode 联盟由苹果和施乐于1991年共同创立,现在拥有超过 100 个成员,包括 Adobe、IBM、微软、Sybase、康柏、惠普、甲骨文、Sun Microsystems、Netscape 和爱立信。
- Unicode和ISO 10646的目标是包含世界上所有语言,每个字符代码对应一个“字形”。字符代码的组合产生用于复杂字符的组合字形(特别是在亚洲语言中)。最初的Unicode标准指定了 16 位字符的编码,允许总共 65,535 个可能的字符/符号。该标准的后续版本已将编码扩展到 32 位范围,允许编码超过一百万个不同的字符和符号。
- 随着全球化的加速,Unicode 标准越来越重要。它是互联网上最相关的编码系统。随着互联网渗透率在发展中国家和发达国家不断提高,将 Unicode 整合到软件和内容开发中的好处不容忽视。
- OpenType ( http://www.adobe.com/type/opentype/main.html )
- 字体是本地化的“前端”,通常受到非技术观察员的最多关注。因此,字体开发通常被视为本地化的全部。然而,字体开发只是整个本地化过程的一个重要组成部分,尽管它是最显眼的。
- OpenType 是一种跨平台字体文件格式,由微软 和Adobe 共同开发。它基于 Unicode 编码标准,并在一个字体文件中提供多种语言字符集。传统的西方 Postscript 字体仅限于 256 个字形,而一个 OpenType 字体可以包含超过 65,000 个字形,允许使用单个字体显示多种语言。
使用 Linux-Unicode-OpenType 模型,大多数本地化工作涉及以下步骤
- Unicode 标准修正/增强
- 字体开发
- 输入法
- 修改应用程序以处理本地语言特性
- 翻译应用程序消息
- 确保更改被全球 FOSS 社区接受
创建能够充分处理世界各地无数语言需求的编码非常复杂。这项任务的浩瀚性导致了某些语言规范中的错误和不足,特别是来自ICT发展水平较低的国家的语言。此外,虽然Unicode可能已经包含了对世界上所有主要语言的编码,但对其他语言和方言(仅印度就有超过 1,000 种语言和方言)的编码要么不完整,要么不存在。在现有的Unicode标准缺乏的国家,需要对现有 Unicode 标准进行审查,并向Unicode 联盟提出更改建议。
一旦开发出令人满意的Unicode标准,下一个挑战是确保有一个免费提供、跨平台的字体。没有字体,就无法以电子方式显示、使用和操作任何语言。现代字体,特别是 OpenType 字体,不仅仅是语言的视觉表示。 OpenType 字体包含单词显示背后的逻辑,字形如何与周围字形交互和改变。与西方字母(阿拉伯语、老挝语、宗喀语等)有很大不同的语言,通常没有常用的非专有字体。
字体开发并非易事。一个高质量的专业字体可能需要几年时间才能开发出来。
下一步是标准化和实施该语言的输入系统。计算中最常见的输入方法是通过键盘,许多国家已经创建了标准键与本地语言字符之间的映射。这些通常是临时采用,一个国家内使用几种。例如,孟加拉国经常使用几种键盘布局。缺乏单一标准是字符集/编码、键盘映射、字体等不兼容实现的结果,并进一步导致了不兼容。从一开始就解决和标准化输入方法为开发人员提供了一个共同的起点。
一旦输入方法标准化,就必须编写软件来在 GNU/Linux 下实现该标准。如果字符数量少于可能的键组合,这将成为一个简单的键盘按键重新映射任务。当字符数量远远超过键盘上的按键时(例如,汉语有 30,000 个汉字),就需要更高级的技术。
虽然大多数主要 FOSS 应用程序已经过国际化,但可能仍需要进行一些修改以适应本地语言特性。例如,大多数文字处理器在空格处断词,但在不使用空格的语言中,必须创建特殊规则来指定断词顺序。类似的问题也存在于单词排序、文本流和其他问题中。大多数语言将需要最少的修改,但某些语言可能需要对应用程序进行大量修改。
此外,还需要指定特定于区域设置的信息,如日期格式、货币符号和其他问题。这通常是一个简单的任务,涉及编辑文本文件。
本地化GNU/Linux的下一步涉及翻译应用程序传递给用户的消息。诸如“文件未找到”或“操作完成”之类的消息必须翻译成当地语言。这项任务几乎不需要技术技能,因为消息通常存储在文本文件中,便于查看和编辑。但是,翻译成千上万的消息和帮助文件是一项可能需要数年才能完成的任务,并且通常是本地化过程中最慢的部分。即使任务仅限于最常用的应用程序(网络浏览器、办公生产力套件),也必须付出相当大的努力。
FOSS 开发方法的主要优势之一是,维护成本通常由软件的各个用户共享。但是,只有当所做的更改被全球社区接受时,这才是可能的。本地化可能涉及许多不同软件组件的更改,每个组件都由不同的项目团队维护。因此,应该集中努力确保所有更改都得到每个团队的接受,通常是通过确保更改以与项目团队未来方向兼容的方式进行。从本质上讲,一个人必须从一开始就在全球团队努力中扮演角色,否则就会冒着成为唯一一个维护 GNU/Linux 独立版本的风险。
- ↑ “本地化研究所”[在线主页];可从 http://www.localizationinstitute.com/switchboard.cfm?page=terminology 获得;互联网;访问时间:2003 年 11 月 9 日。
- ↑ “MLP – 持续本地化项目”[在线主页];可从 http://www.mozilla.org/projects/l10n/mlp_status.html#contrib 获得;互联网;访问时间:2003 年 11 月 9 日。
- ↑ 可从 http://www.medialabasia.org/news/news_top2.html 获得;互联网;访问时间:2003 年 5 月 20 日。