Linux本地化翻译中的po或pot格式介绍
最近工作中接触到一些Linux系统本地化相关的内容,也搜集了一些资料(有些是公司资料,后期整理下,把不涉及到公司内容的东西以CC协议发布出来给大家共享),在搜索的时候发现网上关于这方面的信息能够直接搜索到得相对较少,于是整理发布出来,方便大家的学习和生活。
一般系统中原始获取到的文件有po和pot两种后缀格式,pot为原始的未经翻译的英文文件,po则一般是翻译处理过(即使只翻译一句话)的文件。这两种后缀对翻译没有任何影响,所以后面都以.po为后缀的文件来举例。
Po 文件的一般格式如下:
#: ../shell/rb-shell.c:433#, fuzzy, c-formatmsgid “Import _File…”msgstr “导入文件(_F)…”
|
第一行以“#: ”开头的注释为该翻译所在语言包的路径,也可以没有该行。
第二行以“#, fuzzy”开头的是模糊翻译标记。需要重新检查翻译,也可以没有该行。
第三行以“msgid ”为需要翻译的文字。
第四行以“msgstr”开头的为翻译后的文字。
第二类格式是部分含有“msgctxt ”表示上下文,上下文可以消除因具有相同译文ID而产生的歧义。在同一个PO文件中,可能存在多个entry拥有同一个译文ID,前提是每个entry都有不同的上下文。注意,空的上下文字符串与没有 msgctxt 这行不是一个意思。
如下面所示: (在包:gnome-control-center-2.24.0.1中 line: 2739)
msgctxt “Sound event”msgid “Empty trash”msgstr “清空回收站“ |
第三类是含有“msgid_plura[l] ”的单复数相关的翻译,因为中、日、韩中没有复数,所以只翻译为“msgstr[0] ”(删除msgstr[1]即可)的即可。
#: src/msgcmp.c:338 src/po-lex.c:701
|
后面可能还有其他特殊格式,待整理更新后添加。
推荐阅读:
Linux下C语言的本地化/国际化实现
http://leedd.com/2010/03/linux-c-i18n-l10n-xgettext-msgfmt-rpmbuild/
上一篇: 测试ipod写博客
