当前位置: 首页 > 技术随笔 > 使用Poedit汉化wordpress主题和插件

使用Poedit汉化wordpress主题和插件

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

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

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

<?php
echo __('hello', 'Codex');
//Codex为对应主题或插件的名称,如果是WordPress内部模块,则第二个参数可以省略。
?>

函数__($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」)。

8 1
我们认为: 用户的主要目的,是为了获取有用的信息,而不是来点击广告的。因此本站将竭力做好内容,并将广告和内容进行分离,确保所有广告不会影响到用户的正常阅读体验。用户仅凭个人意愿和兴趣爱好点击广告。
我们坚信:只有给用户带来价值,用户才会给我们以回报。
CodePlayer技术交流群1CodePlayer技术交流群1

帮朋友打一个硬广告:

P2P网贷系统(Java版本) 新年低价大促销,多年P2P技术积累,系统功能完善(可按需定制,可支持第三方存管、银行存管),架构稳定灵活、性能优异、二次开发快速简单。 另可提供二次开发、安装部署、售后维护、安全培训等一条龙服务。

外行看热闹,内行看门道。可以自信地认为,在系统设计上,比市面上的晓风、迪蒙、方维、绿麻雀、国融信、金和盛等P2P系统要好。
深圳地区支持自带技术人员现场考察源代码、了解主要技术架构,货比三家,再决定是否购买。

也可推荐他人购买,一旦完全成交,推荐人可获得实际售价 10% 的返现。
有意向者,详情请 点击这里 联系,工作时间立即回复。

poedit