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

    From KDE TechBase
    The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

    摘要

    现在您的程序能够本地化了,我们接下来考虑怎样把这个重要的机能合并到您程序的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.