很好的一篇关于使用PoEdit翻译PO文件的教程。
原文链接:http://minibird.com/blog/149
使用wordpress及其众多的主题或插件时,如果需要汉化,我们就会用到PO文件和MO文件。其中PO文件是一个翻译列表,可以编辑,MO文件由PO文件按生成,供程序读取。
这是Wordpress利用GNU Gettext 工程的成果来实现软件的国际化和本地化的一种方法。 编写程序时如何使用这个机制,我没有认真研究;怎么从程序中自动提取PO文件,我试了试也没成功(写此文时搜到了老所的一篇文章,应该有帮助,有时间研究 研究)。这里只记录我用PoEdit过程中遇到的一些值得记录的问题。
PoEdit 是翻译PO文件的工具软件,跨平台,我用的是win32下的1.4.2简体中文版本。
一、从POT更新PO文件
如果你翻译完成一个PO文件后,使用此PO文件的程序升级了,此时新的程序中可能包含了原来PO文件中没有的词汇条目,也可能以前的词汇条目在新程序中不再使用了,怎么更新呢?
一种方法是自己从新程序中提取PO文件,另一种方法是使用POT文件自动更新。
一般程序作者提供了POT文件(有的是PO为后缀名,需要手动修改为POT后缀名),它包含了最新的词汇条目供你更新使用。微软Office PowerPoint的模板文件后缀名也是POT,注意别搞错了。
在PoEdit菜单栏中,选择“条目》从POT文件更新……”,选择最新的POT文件就可以了更新了。
二、利用TM(翻译词库)
比如我翻译Wordpress的一个插件的PO文件,由于专业术语一般都相关或相同,因此这个PO文件中有很多词汇可能已经被翻译过了,比如在wordpress 自身或者其他插件或主题的zh_CN.po文件中。
利用PoEdit的TM(Translation Memory)功能,可以利用前辈的翻译成果而不用从头开始。
先搜集一些与你要翻译的程序相关的已经翻译好的MO文件,TM利用的是MO而不是PO。
首先在PoEdit中创建翻译词库。
翻译词库设置
更新翻译词库
到此,翻译词库就创建好了,以后你还可以通过这种方式更新补充翻译词库。
如何使用翻译词库,很简单。
打开一个需要翻译的PO文件,然后在PoEdit菜单栏中选择“类目》使用TM自动翻译”,PoEdit就会自动从翻译词库中提取精确匹配或模糊匹配的翻译。
模糊匹配的翻译一般是粗体显示,可以用“CTRL+U”确定,也可以用鼠标右键选择恰当的翻译。
我主要参考了PoEdit的英文帮助文件,如果你还有什么不明白的,可以直接看帮助。
三、单数和复数的问题
此问题主要参考了开源软件的简体中文化计划的工作流程之第七节注意事项之(10)单复数问题。 有的语言有单复数,有的没有,如中文,gettext 技术通过 PO 文件头部如下信息来显示不同单复数的译文:
1 | "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" |
INTEGER 表示单复数变化形式的数量,其值是一个正整数。中、日、韩文里没有单复数区分,也就是说单复数变化形式只有一种, 所以 nplurals=1,英文单复数有两种表现形式,所以 nplurals=2; EXPRESSION 表示对第几种单复数变化取相应的第几种译文,其值是一个标准的 C 语言表达式。如果有四种单复数变化,这个 表达式的值将包括 0、1、2、3,分别对应于译文 msgstr[0]、msgstr[1]、msgstr[2]、msgstr[3]。所以,有时这个表达式相当复杂。在汉语里,只需 plural=0,译文只要保留 msgstr[0] 即可。
因此对于中文来说,正确的设置为:
1 | "Plural-Forms: nplurals=1; plural=0;\n" |
在PoEdit中,按照下图设置就行了。
复数形式设置
在PO文件中,复数的词汇条目一般是如下格式。
1 2 3 4 5 6 7 8 9 10 | #: ../admin/admin.php:31 #: ../admin/admin.php:204 #: ../admin/admin.php:272 #: ../admin/functions.php:82 #: ../admin/functions.php:145 #: ../admin/manage-images.php:151 #: ../admin/manage.php:78 msgid "Gallery" msgid_plural "Galleries" msgstr[0] "图集" |
如果不设置,如果PO文件中存在包含单复数的词汇条目,则可能会碰到如下错误。
复数导致的错误
如果设置正确的话,那么在PoEdit中如果遇到有单、复数形式的词汇,其翻译界面就是下图所示的样子。
单、复数翻译界面
你只需要将单、复数的词汇条目翻译成一个就行了。
四、使用快捷键
翻译是个体力活儿,使用快捷键绝对可以提高效率。
五、使用查找功能
要善于使用查找功能,也能提高效率。
可以直接在程序界面中拷贝需要翻译的文字,然后在PoEdit中查找相关文字。
PO文件中的词汇条目是按照先按照程序源文件,其次是源文件中的位置排序的。如果某个词汇不知道在哪儿,一般情况下与其前后的词汇是在同一个文件中,也就可能在同一个界面中。
一般情况下,选择“在原文中查找”和“在译文中查找”就行了。
查找字符串
六、通过参考查看程序文件
翻译某些词汇时,由于脱离了语义环境,可能不知道如何翻译。
除了直接在界面中查看相关词汇外,还可以查看词汇所在的源程序文件。
参考
好了,就这些,希望有帮助。