FOSS 开放标准/标准和软件国际化/本地化
软件等产品的国际化与本地化不同,尽管它们可能解决许多类似问题。国际化是指使产品能够在国际上使用(即在世界各地不同国家或地区,具有不同文化和惯例)而无需重新设计的过程。另一方面,本地化则是指通过使产品在语言和文化上适合特定国家、地区或文化,来对产品进行调整。国际化通常用缩写“I18N”或“i18n”来表示,其中数字 18 代表省略的字母数。类似地,缩写“L10N”或“l10n”用于表示本地化。
对于旨在部署在多个不同国家/地区的应用程序软件,这些国家/地区具有不同的文化和语言,在设计时必须牢记国际化,以便能够适应可能不同的信息表达方式或不同语言的特殊性。国际化需要解决的一些问题包括:[1]
- 日期和时间格式
- 货币格式
- 语言特点(例如,字母、数字和从左到右的文字 vs. 从右到左的文字)
- 语言字符编码集用于文本显示
- 姓名和头衔
- 姓名和文本的排序
- 识别号码,例如社会保险号和护照号码
- 电话号码、地址和国际邮政编码
- 重量和度量
虽然文化和语言要求可能因国家/地区而异,但处理软件产品功能的核心程序不会改变,因此通常的做法是将文本和其他环境相关数据与程序代码本身分开。这使得支持国际化变得更容易,因为只需要对环境相关资源进行更改。需要进行最小的代码更改。
应用程序的国际化程度越高,本地化就越容易。这是因为经过良好国际化的应用程序将内置支持以满足本地化所需的项目。这些可能包括:[2]
- 语言翻译
- 对某些语言的硬件支持,例如输入设备和方法
- 当地习俗
- 本地内容
- 美学
- 文化价值观和社会背景。
本地化的主要工作是翻译用户界面和文档,但这不仅仅是翻译所使用的语言。它还需要迎合其他相关更改,例如使用合适的文化和社会价值观、语言特有的符号、数字显示、32 个日期、货币、合适的输入方法等。
在软件国际化和本地化中,一组参数(称为区域设置)用于定义用户的语言、国家/地区以及用户希望在用户界面中看到的任何特殊变体偏好。[3] 区域设置标识符通常至少包含语言和区域/国家/地区标识符。根据所使用的操作系统/系统,区域设置标识符可以以多种方式定义。大多数系统使用 ISO 639-1 和 639-2 分别定义的两位和三位语言代码作为语言标识符,并使用 ISO 3166-1 中的两位国家/地区代码作为国家/地区标识符。但是,MS Windows 使用一个数字区域设置标识符 (LCID),它指定语言和排序标识符。[4]
在本节中,我们将介绍一些在 i18n 和 l10n 中使用的重要标准。
如果要成功实现使软件以多种语言提供,则在计算机系统上对多语言文本进行正确的渲染和显示以及实用的输入方法至关重要。需要为字符代码表和字符编码方法制定标准。字符代码表将整数分配给字符,而字符编码是一种方法,通过该方法,字符或它们各自的整数值可以表示为用于软件的字节序列。
国际标准 ISO/IEC 10646[5] 和 Unicode 标准 (Unicode)[6] 描述并定义了通用字符集 (UCS),它是所有其他字符集标准的超集。它保证与其他字符集的往返兼容性。这仅仅意味着在将任何文本字符串转换为 UCS 然后转换回其原始编码时不会丢失任何信息。[7]
Unicode 标准版本 4.0 和 ISO/IEC 10646:2003 使用相同的字符集表和字符编码方法,但 Unicode 标准还提供了对字符属性、处理算法和定义的详细信息,这些信息对实现者很有用。[8]
ISO/IEC 10646 和 Unicode 定义了多种编码形式,包括 UCS 变换格式 8 (UTF-8)、UCS-2、UTF-16、UCS-4 和 UTF-32。在编码形式中,每个字符都被表示为一个或多个编码单元,除了 UTF-8 之外,所有其他编码形式的编码单元都大于一个八位字节(一个 8 位字节),这使得它们难以在许多当前应用程序和协议中使用,这些应用程序和协议假设 8 位或甚至 7 位字符。[9] UTF-8 使用八位字节的所有位进行编码,并且保留了完整的 US-ASCII 范围,后者在一个八位字节中编码,具有正常的 US-ASCII 值。这很重要也很有用,因为它向后兼容大量现有的主要使用 US-ASCII 编码的软件。UTF-8 将 UCS 字符编码为可变数量的八位字节,其中八位字节的数量以及每个八位字节的值取决于 Unicode 字符代码表中分配给该字符的整数的值。
Unicode 已成为软件国际化和多语言环境中使用的主要编码方案。许多其他标准,如 XML,已将 Unicode 作为表示文本的底层方案。现代操作系统环境,例如 GNU/Linux、Mac OS X 和 MS Windows XP 下的操作系统环境都支持 Unicode。[10]
ISO 639
[edit | edit source]国际标准 ISO 639-1 为表示语言名称提供了一个两位字母代码标识符(alpha-2),而 ISO 639-2 为语言提供了一个三位字母标识符(alpha-3)。[11] 地区语言标识符使用 ISO 3166 国家代码来标识要使用的语言。
ISO 639-1 主要是在术语中使用。它为那些负责世界大部分文献的语言提供标识符,这些语言也拥有专门的词汇和术语。
ISO 639-2 试图为世界各地的语言提供表示形式,用于书目和术语,但它在范围上不像 ISO 639-1 那样严格。它的设计目的是包含世界文献中经常出现的语言,无论这些语言中是否存在专门的术语。ISO 639-2 的三位字母代码意味着它可以容纳更多语言。因此,虽然它将单个语言的覆盖范围限制在至少已开发出适度文献的语言,但其他语言仍然可以通过语言族等语言集合的标识符来容纳。[12]
在 ISO 639-2 下,一些语言在书目和术语中使用不同的代码(见表 8)。
示例 ISO 639-1 和 639-2 语言代码 | ||
---|---|---|
639-2* | 639-1 | 语言名称 |
apa | 阿帕奇语 | |
ara | ar | 阿拉伯语 |
bur/mya | my | 缅甸语 |
chi/zho | zh | 汉语 |
dut/ndl | nl | 荷兰语;佛兰芒语 |
eng/ndl | en | 英语 |
hin | hi | 印地语 |
kar | 克伦语 | |
kin | rw | 基尼亚尔旺达语 |
tlh | 克林贡语;tlhlngan-Hol | |
may/msa | ms | 马来语 |
nep | ne | 尼泊尔语 |
swa | sw | 斯瓦希里语 |
tam | ta | 泰米尔语 |
tha | th | 泰语 |
ton | to | 汤加语(汤加群岛) |
对于 639-2 代码,如果提供两个代码,则首先提供书目代码,然后提供术语代码。
ISO 3166-1
[edit | edit source]ISO 3166-1 为表示国家名称提供两位(alpha-2)和三位(alpha-3)字符代码。因此,它提供了国家代码表,就像 ISO 639 提供语言代码表一样。但是,这两个标准是独立开发的,没有尝试为语言使用与其使用该语言的国家相同的代码,并且应独立使用每个列表中的代码。地区国家标识符使用 ISO 3166 代码来标识国家或地区位置。
ISO 3166-1 alpha-2 代码在 国家代码顶级域名 (ccTLD) 中最广为人知,它是 互联网 域名系统 (DNS) 的一部分。但是,有一些 ccTLD 正在使用,它们不是 ISO 3166-1 两位字母代码的一部分,例如,用于英国的 "uk"(相应的 ISO 3166-1 alpha-2 代码是 "gb")。
示例 ISO 3166-1 Alpha-2 国家代码 | |
---|---|
ISO 3166-1(Alpha-2) | 国家/地区 |
CA | 加拿大 |
DE | 德国 |
GB | 英国 |
KE | 肯尼亚 |
NG | 尼日利亚 |
TH | 泰国 |
TN | 突尼斯 |
VE | 委内瑞拉 |
IETF 的 RFC 3066[13] 描述了一种语言标签,用于在需要指示信息对象中使用的语言的情况下,以及如何注册用于此语言标签的值,以及匹配此类语言标签的结构。 RFC 3066 指定使用 ISO 639-1 中的两位字符语言代码(如果存在),如果一种语言没有分配两位字符代码,则使用三位字符代码。
RFC 还指定了使用可选子标签(例如,来自 ISO 3166 的国家代码)以及如何将方言或变体信息注册到 互联网号码分配机构 (IANA),如果不存在可用的 ISO 639 代码。
截至 2006 年 9 月,RFC 3066 已被新的/扩展的 RFC 4646 弃用。[14]
国际化和本地化软件计划
[edit | edit source]过去,软件支持的语言在很大程度上取决于作者的所在地。由于美国等国家在该领域的优势,许多常见的现成软件 (COTS) 主要用英语编写。近年来,随着 互联网 和 全球化 的兴起,这种主要以单一语言为中心的流行软件支持正在发生变化。软件开发人员和作者越来越意识到,许多软件可以并且将部署到全球各地,并且适应当地环境非常重要。因此,现代软件平台对国际化和本地化的支持有了很大的提高。
对于商业 专有软件,经验表明,任何 本地化 工作都必须从经济可行性和/或工作可能给供应商带来的其他利益方面进行考虑。这意味着在许多情况下,流行的商业专有软件的版本在商业回报不合理的情况下不可用。由于 FOSS 可以自由修改和重新分发,有时只需要一些感兴趣的方来主动本地化以 FOSS 发布的软件。这导致许多流行的 FOSS 被本地化(例如,Mozilla.org 产品家族、GNOME、KDE、OpenOffice.org)并以多种语言(包括一些相当冷门的语言)提供。
开放国际化 (OpenI18N) 倡议[15] 是自由标准组织 的一项重要倡议。 [16] 该倡议下有几个活跃的项目,其中之一是 OpenI18N 规范,它涉及类似GNU/Linux 的操作系统必须支持的接口和功能的规范,以运行国际化的应用程序软件,以及这些操作系统为促进国际化应用程序软件的开发而提供的建议。 [17] 其他活跃项目包括
- Linux 国际化区域设置名称指南
- 通用XML 区域设置存储库(现称为通用区域设置数据存储库)
- 互联网 Intranet 输入法框架
- OpenI18N 认证测试套件
- 多语言库 (m17n-lib)
OpenI18N 倡议的所有标准、出版物和文档都可以免费获得。
大多数 FOSS I18N 和/或 L10N 项目都是社区驱动的。几乎所有主要的 FOSS 都对 I18N 和 L10N 有很好的支持和工具。鼓励软件的本地用户为 L10N 项目做出贡献。
Mozilla 本地化项目 (MLP)[18] 主要依靠 FOSS 社区使 Mozilla 基金会的产品可供不同的世界文化和语言使用。该项目专注于软件本地化,利用产品中可用的底层国际化支持。
MLP 下的软件本地化项目包括
- Mozilla(又名项目 Seamonkey),注册了 100 多种语言
- Mozilla Firefox,注册了 30 多种语言
- Mozilla Thunderbird,注册了 50 多种语言
The aim of the GNOME Translation Project[19] is to translate GNOME applications and documentation to every language in existence. This community-based effort currently boasts of translation projects covering well over 100 languages.
流行的 K 桌面环境 (KDE) 软件也对其国际化和本地化倡议提供了广泛的支持。 [20] 有很好的指南和文档可用,并且社区驱动的本地化项目也得到了很好的支持和认可。因此,KDE 目前提供超过 100 种语言。
OOo 拥有 I18N 和 L10N 的框架和工具。 [21] OOo 目前提供超过 70 种语言,涵盖世界所有主要语言和文化,以及一些小语种。
来自Microsoft 的软件的更新版本,例如Windows XP、MS Office 2003 具有良好的国际化支持,并且也提供许多本地化的原生版本。
Localized versions of MS Windows XP are available in 24 languages and the Multilingual User Interface (MUI) Pack offers more localized user interface languages. The MUI Pack is a set of language-specific resource files that can be added to the English version of MS Windows. Microsoft claims that the total number of languages supported in MS Windows XP is in excess of 140.[22]
Localized versions of MS Office 2003 are available in over 35 languages.[23] In addition, the MS Office MUI offers support for other languages for which a localized version is not available.
- ↑ Wikipedia (the free-content encyclopedia) entry on "Internationalization and localization" http://en.wikipedia.org/wiki/Internationalization_and_localization
- ↑ Wikipedia (the free-content encyclopedia) entry on "Internationalization and localization" http://en.wikipedia.org/wiki/Internationalization_and_localization
- ↑ Wikipedia (the free-content encyclopedia) entry on "Locale" http://en.wikipedia.org/wiki/Locale
- ↑ The Microsoft Developer Network (MSDN), "Locale Identifiers" http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/nls_8sj7.asp
- ↑ ISO/IEC 10646:2003, "Information technology - Universal Multiple-Octet Coded Character Set (UCS)" http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=39921&ICS1=35&ICS2=40&ICS3=
- ↑ The Unicode Standard http://www.unicode.org/standard/standard.html
- ↑ Kuhn, M., "UTF-8 and Unicode FAQ for Unix/Linux" http://www.cl.cam.ac.uk/~mgk25/unicode.html
- ↑ ISO/IEC 10646:2003, "Information technology - Universal Multiple-Octet Coded Character Set (UCS)" http://www.iso.ch/iso/en/CatalogueDetailPage.CatalogueDetail?CSNUMBER=39921&ICS1=35&ICS2=40&ICS3=
- ↑ RFC 3629, "UTF-8, a transformation format of ISO 10646" http://www.ietf.org/rfc/rfc3629.txt
- ↑ Wikipedia (the free-content encyclopedia) entry on "Unicode" http://en.wikipedia.org/wiki/Unicode
- ↑ ISO 639 Frequently Asked Questions (FAQ) http://www.loc.gov/standards/iso639-2/faq.html
- ↑ ISO 639 Frequently Asked Questions (FAQ) http://www.loc.gov/standards/iso639-2/faq.html
- ↑ RFC 3066, "Tags for the Identification of Languages" http://www.ietf.org/rfc/rfc3066.txt
- ↑ RFC 4646, "Tags for Identifying Languages" http://www.ietf.org/rfc/rfc4646.txt
- ↑ The Open Internationalization Initiative http://www.openi18n.org
- ↑ The Free Standards Group http://www.freestandards.org
- ↑ OpenI18N 1.3 Globalization Specification http://www.openi18n.org/docs/pdf/OpenI18N1.3.pdf
- ↑ The Mozilla Localization Project http://www.mozilla.org/projects/l10n
- ↑ GNOME 翻译项目 http://developer.gnome.org/projects/gtp
- ↑ KDE 国际化 http://i18n.kde.org
- ↑ OpenOffice.org L10N 和 I18N 项目 http://l10n.openoffice.org
- ↑ Windows XP LIP 常见问题解答 http://www.microsoft.com/globaldev/DrIntl/faqs/winxp.mspx
- ↑ Office 2003 版本本地化版本 http://www.microsoft.com/office/editions/prodinfo/language/localized.mspx