Poedit Pro(旧称poEdit)是一个免费(专业版收费)、开源及跨平台的gettext类(.po 格式,应用程式里采用了gettext来作程式的国际化)国际化翻译编辑器,也是同类型软件中最广泛使用的一个。现时它不论在 Unix+GTK 或 Windows平台 配合 wxWidgets 均有相关版本,并以MIT许可证释出。
PoEdit常用来汉化各种程序,它内置于wxWidgets工具中,可以在所有它支持的平台上运行,如Unix下的GTK+以及Windows。PoEdit提供更方便的办法编辑目录,而不用通过启动VI文本编辑器,手动编辑。
从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中创建翻译词库。
1、在PoEdit 菜单栏中,选择“文件》首选”,打开“首选”对话框,选择“翻译词库”面板,如下图所示。
2、点击“添加”按钮,添加语言“zh(Chinese)”后,如上图所示,“我的语言”中出现了“zh”。
3、“到DB的路径”可以保持默认,这是PoEdit创建的翻译词库的保存位置,如果有必要可以备份它。
4、点击“产生数据库”按钮,打开“更新翻译词库”的对话框,如下图所示。
5、在此对话框中,点击“添加文件”按钮,选择你搜集的MO文件存放的位置,PoEdit会自动搜索MO文件并列出,点击“下一个”按钮,将会生成翻译词库。到此,翻译词库就创建好了,以后你还可以通过这种方式更新补充翻译词库。
如何使用翻译词库,很简单。
打开一个需要翻译的PO文件,然后在PoEdit菜单栏中选择“类目》使用TM自动翻译”,PoEdit就会自动从翻译词库中提取精确匹配或模糊匹配的翻译。模糊匹配的翻译一般是粗体显示,可以用“CTRL+U”确定,也可以用鼠标右键选择恰当的翻译。
单数和复数的问题
INTEGER 表示单复数变化形式的数量,其值是一个正整数。中、日、韩文里没有单复数区分,也就是说单复数变化形式只有一种, 所以 nplurals=1,英文单复数有两种表现形式,所以 nplurals=2; EXPRESSION 表示对第几种单复数变化取相应的第几种译文,其值是一个标准的 C 语言表达式。如果有四种单复数变化,这个 表达式的值将包括 0、1、2、3,分别对应于译文 msgstr[0]、msgstr[1]、msgstr[2]、msgstr[3]。所以,有时这个表达式相当复杂。 在汉语里,只需 plural=0,译文只要保留 msgstr[0] 即可。
使用快捷键
翻译是个体力活儿,使用快捷键绝对可以提高效率。
(1)使用“ALT+U”,可以确认模糊的翻译。
(2)使用“ALT+C”,可以将需翻译的条目拷贝到翻译栏中。
(3)使用“CTRL+F”,可以查找匹配的文字。
使用查找功能
要善于使用查找功能,也能提高效率。可以直接在程序界面中拷贝需要翻译的文字,然后在PoEdit中查找相关文字。PO文件中的词汇条目是按照先按照程序源文件,其次是源文件中的位置排序的。如果某个词汇不知道在哪儿,一般情况下与其前后的词汇是在同一个文件中,也就可能在同一个界面中。
一般情况下,选择“在原文中查找”和“在译文中查找”就行了。
查看程序文件
翻译某些词汇时,由于脱离了语义环境,可能不知道如何翻译。除了直接在界面中查看相关词汇外,还可以查看词汇所在的源程序文件。
使用Poedit汉化wordpress主题和插件
众所周知,WordPress是国际互联网上非常流行的一个开源博客/CMS程序。许多来自不同国家的网站主都在使用WordPress,因此WordPress也提供了强大的国际化功能以支持各种不同的语言和文字。不过很多时候,WordPress官方自身的本地化翻译并不能尽如人意,一些开发者为WordPress开发的主题和插件在国际化方面也并不完善。在中国,我们使用的很多WordPress主题和插件都是国外的开发人员开发的,这些主题和插件大多都没有实现汉化或者不够完善,这个时候就需要我们自己来完成最后的汉化工作。
WordPress采用GNU gettext来实现国际化。作为使用者,我们不必深究其底层实现,只需要知道在WordPress中如何实现国际化即可。
在WordPress中,一般使用函数__()和_e()来标识需要翻译的地方。以汉化英文主题为例,我们如果想要将英文「hello」翻译并显示为中文「你好」,我们只需要在对应显示的地方编写如下代码即可:
函数__($text, $domain)
和_e($text, $domain)
都是WordPress的国际化翻译函数,不过前者__()是返回翻译后的字符串,后者_e()则是直接输出(echo)翻译后的内容。 一般情况下,主题的名称会在主题的简介说明中指出,并且主题的文件夹名称即是主题名称。此外,你还可以查看当前主题文件夹下的functions.php文件,其中大多都会包含如下语句:
load_theme_textdomain( 'Codex', get_template_directory() . '/languages' );
其中,Codex即是当前主题的名称,后面的get_template_directory().'/languages'
指定主题的翻译字典文件存放目录。get_template_directory()表示获取当前主题或插件的根目录,因此上面的代码指的就是主题或插件目录下的languages文件夹。
除此之外,我们还需要编写对应的翻译字典文件,否则WordPress怎么知道要将「hello」翻译成什么样的中文呢。翻译字典文件中记录的其实是一对对翻译前与翻译后的文字映射,WordPress中的翻译字典文件后缀为.po。.po文件是翻译字典的源文件,我们还要使用工具将其编译成供正式运行使用的.mo文件。翻译字典的文件名称一般都根据本地化语言命名(或以其为后缀)。例如:简体中文的翻译字典文件为zh_CN.po、zh_CN.mo;繁体中文(台湾地区)的翻译字典为zh_TW.po、zh_TW.mo;英文(美国)的翻译字典为en_US.po、en_US.mo……这样WordPress就能够根据当前用户的国家语言将网站内容显示为对应的中文简体、繁体或其他语言文字。
想要方便快捷地制作翻译字典文件,我们就需要用到Poedit了。Poedit是一款开源、免费、跨平台的gettext类(.po文件)国际化翻译编辑器,也是同类型软件中使用最广泛的一个。
首先,我们需要下载并安装Poedit,Poedit的官网下载地址是http://www.poedit.net/download.php。Poedit的安装非常简单,也没有什么需要特别注意的,在此就不再赘述。
接着,我们打开安装好的Poedit,点击菜单【文件】——【新建编目】。
此时将会弹出如下的编目属性窗口,根据自身实际情况填写对应的表单内容(大部分内容可以留空)
值得注意的是,表单「复数形式」默认可以不填写,但是如果需要翻译的文字中有复数形式的话,可能导致程序出错。因此建议将复数形式填写为:
nplurals=2; plural=(n != 1);
接着,切换到编目属性的源路径选项卡,如下图所示:
在基础路径文本框中,一般填入「.」即可,表示当前目录及其子目录。不过有些时候,由于路径问题,Poedit可能无法正确找到指定的目录,这个时候就需要为Poedit手动指定需要提取翻译内容的目录。例如,这里我想要将主题epublishing进行汉化,就手动输入epublishing主题的本地路径D:\PHP\CodePlayer\wp-content\themes\epublishing(路径只需要输入编辑时的本地路径即可,即使上传到服务器后路径发生改变也不会产生影响。)
最后,切换到编目属性的「源关键字」选项卡,如下图所示:
这里的关键字就填写我们在WordPress中用于国际化翻译的函数__
和_e
。 这样,Poedit就会自动在我们指定路径下(例如上面的epublishing)的所有文件中查找函数__
和_e
包含的文字,并在左侧列出。
这个时候,我们要做的就是根据左侧列出的源文本内容,逐行输入翻译后的结果。翻译完毕后点击菜单栏的【保存】按钮,我们就成功制作出了可以汉化WordPress指定主题或插件的zh_CN.po和zh_CN.mo文件。将这两个文件放入对应主题或插件的语言目录,我们的主题或插件的汉化工作就完成了。
以前面的__('hello', 'Codex')
为例,如果WordPress找不到任何对应的翻译,那么WordPress将直接输出待翻译的内容(即「hello」)。