Archive:Development/Tutorials/Localization/i18n Build Systems (zh CN)

From KDE TechBase

摘要

现在您的程序能够本地化了,我们接下来考虑怎样把这个重要的机能合并到您程序的Cmake系统中去。 首先我们“理论”上解释用于安装.po文件时解压缩信息字符串所需要的步骤。然后我们来看怎么实现这些步骤(#Theory: The xgettext toolchain)。如果您的程序书用KDE的subversion开发的,很多步骤是自动完成的(参见 #handling i18n in KDE's subversion repository)。 如果不是,请参见 #handling i18n in third party applications 部分。

理论: xgettext 工具

翻译需要以下步骤:

  1. 提取出要翻译的字符串
  2. 将新翻译的字串和已有的翻译合并在一起
  3. 将翻译编译进消息目录
  4. 安装消息目录
  5. 在程序中使用消息目录

提取字符串

本步骤中,所有您代码中标记为 i18n()/ki18n()/etc. 的字串需要被收集到一个临时翻译文件 (.pot) 文件中。 有些待翻译字串在.ui, .rc, or .kcfg 文件中. 此外也要把每日一帖搜集到.pot文件中.

这个步骤是由 xgettext, extractrc, 和 preparetips 这些程序分别完成的。有些情况下,您也会用到 extractattr.

合并翻译结果

一般来讲,某次只有少部分的可翻译字串需要更改:有些需要被移除,有些需要被添加,有些要被替换,有些要改变在代码中的位置。这些改变需要在翻译中得到体现,但显然每次(更新)都重做所有的翻译是一件耗力的工作。 把原有的翻译和那些改变的东西合并在一起会更好。这时需要 msgmerge 工具。

编译翻译结果

为了让信息查找更快,.po文件需要编译成所谓的 "消息目录" (.mo / .gmo)。这可由 msgfmt 工具完成.

安装消息目录

编译好的信息目录需和程序一起安装。KDE系统中,标准的消息目录的路径是 $KDEDIR/share/locale/xx/LC_MESSAGES/

使用消息目录

最后,但程序能够运行,程序需要载入消息目录来查找和显示翻译的字串。 对KDE程序而言,在大多数情形,这是由KLocale 类自动完成的。

一些特殊的情形,比如说插件,请参看 #Runtime Loading Of Catalogs.