揭秘火狐本地化-关于社区那些事儿
日前CNNIC最新网民数量统计的发布,中国网民数量已跃居全球第一,使用Firefox(火狐)浏览器的用户数量也在不断攀升。为互联网网民提供更好的服务和体验,一直是Mozilla所致力追求的。而未来中文版本的火狐浏览器不仅仅是英文软件的汉化,更会有很多专门针对中国网民的特质。随着Mozilla在华子公司“谋智网络”推出专为中国网民量身定做的“火狐中国版”(Firefox China Edition),近日Mozilla全球本地化总监Seth Thomas Bindernagel也亲临北京,与中国Mozilla社区本地化代表文少华、金箭等近百名社区成员共聚一堂,说火狐、谈L10N,聊聊Mozilla社区本地化的那些事儿。
点击下载:火狐中国版
工欲善其事,必先利其器——Silme
Mozilla全球本地化总监Seth向大家介绍了一个针对本地化工具开发者们开发的软件库——Silme,希望开发者们可以使用Silme作为本地化程序代码和本地化文件间的中间层。
Silme的主要特点包括:
-包含很强的diff功能
-可扩展的输入/输出接口(支持从文件、zip包、sql、cvs、svn、hg等方式进行输入输出)
-支持多种本地化文件格式(.dtd、.xliff、.prop、.po、l20n...)
-模块化(分为silme.core、silme.diff、silme.formats、silme.io,可以分开使用)
-多语言支持
Silme API
silme.core
silme包含四个核心的module:
-silme.core.Entity
-silme.core.EntityList
-silme.core.L10nObject
-silme.core.L10nPackage
silme.core.Entity是Silme最核心的原子单位,它是一个ID <-> Value的对儿,对应于dtd文件中的<!ENTITY ID "VALUE">或是Gettext中的msgid "ID"\nmsgstr "VALUE",或者是L10n数据库表中包含ID和Value的一行。你可以将任何一种本地化文件序列化成一个Entity的列表,只要你能为其中的每一个条目找到ID和Value对。
silme.core.EntityList是一个由许多Entity组成的列表(用Python的dict实现)。可以把它想象成一个包含ID和Value两列的数据库表,而每个Entity是其中的一行。
silme.core.L10nObject可以看做是一个本地化文件,它除了Entity之外,还包括注释、普通字符串等其他元素。如果你对L10nObject中的其他元素不感兴趣,你可以将一个L10nObject转化为一个EntityList.
除了silme.core.L10nObject之外,我们还有silme.core.Object,可以看做是除了本地化文件之外的其他文件,比如JPEG或者是HTML,Object仅保存ID和文件的地址等基本信息
silme.core.L10nPackage是一个由L10nObjects/Object/EntityLists或者其他L10nPackage组成的列表,比较像文件系统中的文件夹的概念。
silme.diff
有了上面的核心单位,我们可以针对每一个单位进行diff,因此我们有EntityDiff、EntityListDiff、L10nObjectDiff、ObjectDiff、L10nPackageDiff。我们可以应用diff比较两个软件版本中的不同,并且把diff的结果应用到本地化中,这样本地化工作者只需要对两个版本中变化过的部分进行本地化就可以了。
更多关于Silme的详细信息,请登录http://wiki.braniecki.net/Silme
历经寒暑——中国Mozilla社区本地化三历程
说到中国Mozilla 社区的本地化工作,就不得不提及Mozilla 系列软件简体中文版本地化负责人文少华。2004年发布的Firefox1.0简体中文版就是由文少华主要翻译制作的。而火狐的本地化工作也从最初的高度分散,到CVS集中管理,再到目前的Web集中管理(Narro),经历了三个阶段。
最初,本地化人员翻译语言包,都是自行打包、测试、提供下载。2002年的Phoenix0.4(Firefox原来的名字)中文版、2003年的Firebird0.6中文版(0.8更名为Firefox)、2004年的Firefox1.0中文版,都是由本地化人员分散完成的。这种方式的缺点是参与人员需要了解语言包的安装脚本,有一定的技术门槛,不利于大家的广泛参与;而且人员分散作业,需要重复打包、测试,过程繁琐,也不利于质量控制。
第二阶段的本地化工作主要通过CVS集中管理。在这种模式下,语言文件由 Mozilla CVS集中管理,本地化人员只要将翻译好的语言文件提交到位于Mozilla的CVS库,由Build系统(tinderbox)自动编译,生成不同平台的版本;再由测试系统(Litmus)自动测试,并上载到公共平台供本地化人员手工检测。Firefox1.5、Firfox2.和Firfox3都是由CVS集中式管理完成的本地化的。但是,采用这种方式仍存在不足,需要使用CVS工具,依然有一定的技术门槛,不利于更多人的广泛参与。而且在本地化过程中,有分支、主干等软件配置管理上的概念,如果本地化人员不清楚分支和Firefox版本的对应关系,也容易出错。
2008年11月9日,由金箭、文少华等人搭建的在线本地化协作平台Narro(http://narro.mozest.com/narro_project_list.php)正式投入使用,这是Mozilla系列软件(包括Firefox、ThunderBird、Sunbird、SeaMonkey、Fennec等)简体中文版的本地化平台最新版,目前Firefox3.1就是用Web集中管理的方式来进行本地化的。Narro平台采用Web应用界面,简单易懂;而且参与者可以只专注于翻译工作,而将其他事项交由Web平台来解决,这样就加大了降低了本地化工作的参与门槛。也就是说,只要你懂得除中文以外的另一种语言,你就可以在Narro平台上选择你使用的翻译语言进行文本翻译,就可以参与到火狐这款开软浏览器的本地化运动中来。
(Narro的界面)
聚沙成塔,集腋成裘——再谈Narro
在线本地化协作平台Narro(http://narro.mozest.com/narro_project_list.php)将本地化工作分化到一个句子、一个单词的粒度,大大降低了广大开源志愿者做贡献的门槛。一时的热情,大部分人都会有;难能可贵的,是长期的坚持。而Narro正是一个将你的1分钟热情汇集起来的平台!只要你有1分钟,打开Narro网站,翻译一个网页中的句子,这就是你对开源软件做出的贡献!火狐这款开源浏览器正是靠成千上万的1分钟汇集起来,以星星之火可以燎原之势不断发展。
历经7载春秋,Mozilla社区本地化从分散到集中,再到在线协作(http://l10n.mozilla.org/dashboard/,http://narro.mozest.com/narro_project_list.php)
文少华、金箭、Eric Chu、Dudu8995、Fatiaomao、skyxiaohui、鱼骨头、Serena Xiao、Simford Don……(其他志愿者还有很多,未能一一列出)一路走来,不为名利。问及文少华为何花这么大精力投入Firefox得本地化工作,文少华坦言自己从2002年的时候试用这款浏览器,就发现火狐速度快而且性能稳定,但当时这个软件还没有中文版,就开始做本地化工作了。而坚持这么多年的原因是热情和对火狐的喜爱。其实参与火狐本地化很简单,从翻译开始,一次只译一句话,一次只花1分钟,不因善小而不为。