|
内容
Mozilla的语言能力增强项目
介绍
国际化和本地化概要
定义
合理性
指南
国际化指南
国际化库参考
平台无关字符串资源-关于文件include/allxpstr.h (草案)
如何增加额外的字符集 (不完全草案)
本地化指南
本地化工具包
API参考及模块描述
libi18n模块描述
--------------------------------------------------------------------------------
国际化和本地化概述
在软件开发的原始时代,大量软件只能使用一种人类语言“说话”。每个国家或地区都需要自己的版本。在有些情况下,国际化相关的功能被增加到出售的英文版产品中。而在另一些情况下,英语和国际化版本可能是完全不同的产品,有些情况下可以共享一些基本代码,而更多的时候仅仅是共享了相同的名字。北美和欧洲开发的产品的亚洲版本就是典型的例子。在这两种情况下,结果都是一个漫长而昂贵的产品周期。
即使一个软件在功能上适用于多个国家,生产该产品的一个语言版本也是非常困难的。这是因为,构成产品用户界面(UI)的菜单、对话框和消息往往直接在程序源代码中书写(使用printf类型的结构)。由于多种原因,成功地翻译源代码可能会非常困难、昂贵和耗费时间。它同时要求语言和工程方面的知识,然而这两点很少能同时具备;翻译过程中非常容易犯错误;由于开发者假定了用户界面的语言、英文单词的长度和位置(翻译成其他语言后会发生变化),翻译过来的代码经常无法按预期工作。
这样非常不好。
庆幸的是,越来越多的软件开发者意识到,如果他们在软件设计的一开始就了解多地域计算的需求,这些产品将能够更快地进入国际市场,花费更少的代价,并且可能比采用“不好的老式方法”更为成功。这样的多地域产品可以被称作“全球化”的。全球化的软件能够支持多种语言、人类风俗惯用语、字体、编码和其他功能,这使得它能够在世界各国应用。此外,全球化软件的用户界面与核心的构造代码隔离,这使得软件的翻译可以不必重新编译。由于全球化软件并不假定用户界面的语言,所以翻译过来的程序更为强壮,很少需要“修改”或支持个人语言的特殊增强处理。这样加快了翻译程序发布的速度。
这样做很好。
Mozilla家族(Navigator和Communicator)是(并且必须维持)全球化的。Mozilla的对各个平台的核心可执行部分支持北美英语、西欧、中欧、中文、日语和韩语。用户界面包含在资源文件中,并且大部分与核心二进制文件分离。将用户界面与核心代码分离意味着您不再需要日文版的Mozilla来浏览日语网页。您可以使用英文、法文或其他任何版本的Mozilla来浏览日语(当然,要使用适当的字体和设置)。
这样做就更好了。
本文档的其余部分将给出足够信息,保证您能够继续使Mozilla成为一个全球化的软件项目。将来的Mozilla产品至少要坚持当前的国际化程度。继续进行之前,我们希望Mozilla支持更多语言、编码和其他国际化相关的功能集。
这样就是彻底完美了。
定义
首先,我们给出一些用到的术语和概念的定义:
国际化(也称作全球化)
设计和开发能够在多个地域工作的软件。这个过程涉及到识别必须支持的地域,设计支持这些地域的功能,编写能够在这些地域都正常工作的代码。
本地化
修改和改写一个软件产品以适应一个特定地域的需求。这个过程包括(但是不限于)翻译用户界面、文档和包装、修改对话框的图形、定制功能(如果需要的话)和对翻译过来的软件进行测试以确保它仍然能够工作(至少和原有版本一样)。
可本地化
软件产品能够本地化的程度。可本地化的产品将数据与代码分离,能够正确显示目标语言并且本地化后能够正常工作。
i18n
“国际化”的缩写 ("i" + 18个字母 + "n"; 小写I是为了与数字1区别。)。
L10n
“本地化”的缩写("L" + 10个字母 + "n"; 大写L是为了与数字1区别。)。
L12y
“可本地化的” 的缩写 ("L" + 12个字母 + "y";大写L是为了与数字1区别。)。
地域
由人类语言和风俗决定或影响的一系列的惯例,如地缘政治学中所定义的。这些惯例包括(但不局限于)写作语言、日期格式、师资和货币、排序等。
资源
1. 程序的任意部分,它能够显示给用户或由用户配置。
2. 程序数据的任意部分,与它的代码相对。
核心产品
软件产品的与语言无关的部分(与该产品的特定本地化版本不同,包括英文版) 。但是,有时这个术语用于指定与其他本地化版本相对的英文版。
合理性(或者说“我为什么要关心这些”)
毫无疑问,自从穴居人类学会敲打中空木桩通知部落中其他人以来,互联网是人类通信最大的革命。这将是一个能够连接世界上不同人们的全局性媒体,但必须首先保证传递机制能够充分处理多种语言、编码和构成我们不同文化的预期相互混杂带来的混乱情况。对单一语言产品进行重新设计带来的问题,我们在文章开头部分已经讨论过了。在这里,使用适当增强的软件代替一大堆单一语言的软件产品是一种解决方案。
如果软件的应用仅与有限的用户相关(根据语言和地域定义的),那你可能不必关心国际化和本地化的问题。然而,如果软件的应用如果涵盖世界各地,或者软件的目标用户位于多个国家、地区或使用多种语言,那何必让他们难于接触您的应用?通过遵循这些指南,可以更容易地在全球发布一个成功的产品。
如果开发中试图抄近路并且/或在核心产品开发中发生了错误,在本地化过程中,改正它们可能会耗费大量时间并且代价高昂。这样的延迟和代价将吞噬本地化发行带来的好处(从金钱角度和丧失机会的角度)。正确支持国际化的产品可以帮助本地化从一个混乱和昂贵的“追逐”游戏,变成一个顺畅且润滑得当的机器。
给出这些指南的合理性在于创建一个环境,使得国际化的、可充分本地化的产品可以顺利且迅速地发布。您在不同项目的工作过程中,请始终牢记下面两句话:
面向世界的代码库
英文只是另外一种语言 |
|