【WordPress】使用Poedit汉化主题和插件

众所周知,WordPress是国际互联网上非常流行的一个开源博客/CMS程序。许多来自不同国家的网站主都在使用WordPress,因此WordPress也提供了强大的国际化功能以支持各种不同的语言和文字。不过很多时候,WordPress官方自身的本地化翻译并不能尽如人意,一些开发者为WordPress开发的主题和插件在国际化方面也并不完善。在中国,我们使用的很多WordPress主题和插件都是国外的开发人员开发的,这些主题和插件大多都没有实现汉化或者不够完善,这个时候就需要我们自己来完成最后的汉化工作。

wordpress-consultant.jpg

WordPress采用GNU gettext来实现国际化。作为使用者,我们不必深究其底层实现,只需要知道在WordPress中如何实现国际化即可。

在WordPress中,一般使用函数__()_e()来标识需要翻译的地方。以汉化英文主题为例,我们如果想要将英文「hello」翻译并显示为中文「你好」,我们只需要在对应显示的地方编写如下代码即可:

  1. <?php

  2. echo __('hello', 'Codex');

  3. //Codex为对应主题或插件的名称,如果是WordPress内部模块,则第二个参数可以省略。

  4. ?>

函数__($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就能够根据当前用户的国家语言将网站内容显示为对应的中文简体、繁体或其他语言文字。

wordpress-own-translate-files.jpg

想要方便快捷地制作翻译字典文件,我们就需要用到Poedit了。Poedit是一款开源、免费、跨平台的gettext类(.po文件)国际化翻译编辑器,也是同类型软件中使用最广泛的一个。

首先,我们需要下载并安装Poedit,Poedit的官网下载地址是http://www.poedit.net/download.php。Poedit的安装非常简单,也没有什么需要特别注意的,在此就不再赘述。

接着,我们打开安装好的Poedit,点击菜单【文件】——【新建编目】。

poedit-new-po.jpg

此时将会弹出如下的编目属性窗口,根据自身实际情况填写对应的表单内容(大部分内容可以留空)

poedit-property1.jpg

值得注意的是,表单「复数形式」默认可以不填写,但是如果需要翻译的文字中有复数形式的话,可能导致程序出错。因此建议将复数形式填写为:

nplurals=2; plural=(n != 1);

接着,切换到编目属性的源路径选项卡,如下图所示:

poedit-property2.jpg

在基础路径文本框中,一般填入「.」即可,表示当前目录及其子目录。不过有些时候,由于路径问题,Poedit可能无法正确找到指定的目录,这个时候就需要为Poedit手动指定需要提取翻译内容的目录。例如,这里我想要将主题epublishing进行汉化,就手动输入epublishing主题的本地路径D:\PHP\CodePlayer\wp-content\themes\epublishing(路径只需要输入编辑时的本地路径即可,即使上传到服务器后路径发生改变也不会产生影响。)

最后,切换到编目属性的「源关键字」选项卡,如下图所示:

poedit-translate-mapping.jpg

这里的关键字就填写我们在WordPress中用于国际化翻译的函数___e。 这样,Poedit就会自动在我们指定路径下(例如上面的epublishing)的所有文件中查找函数___e包含的文字,并在左侧列出。

poedit-translate-mapping

这个时候,我们要做的就是根据左侧列出的源文本内容,逐行输入翻译后的结果。翻译完毕后点击菜单栏的【保存】按钮,我们就成功制作出了可以汉化WordPress指定主题或插件的zh_CN.po和zh_CN.mo文件。将这两个文件放入对应主题或插件的语言目录,我们的主题或插件的汉化工作就完成了。

以前面的__('hello', 'Codex')为例,如果WordPress找不到任何对应的翻译,那么WordPress将直接输出待翻译的内容(即「hello」)。


未经允许请勿转载:程序喵 » 【WordPress】使用Poedit汉化主题和插件

点  赞 (0) 打  赏
分享到: