WordPress 技巧:如何汉化顽固插件

* WordPress / # , , / 2009年05月24日 / 24条评论 / 47 次浏览

在调戏 WordPress 的过程中,插件是不可不戏的一个部位。对于许多人来说,面对着满屏英文的插件设置,难免会有所纠结。还好有很多热心高手为我们汉化了许多的插件(比如 WPLAND 就为大家提供了一些自己汉化的插件),方便了我们的使用,在这里谢谢他们 :-) 。可是,要是插件还没被汉化呢,难道就面对满屏英文而纠结吗?非也非也,我们可以自己对插件进行汉化,就算是顽固插件,也一样不放过。

所谓的汉化

对于 WordPress 插件,建议大家使用 PoEdit 进行汉化。直接修改源代码也是可以的,但没有注意编码格式的话,可能会导致插件设置页面出现乱码。而且,插件升级之后旧文件被新文件覆盖,汉化也随之消失……使用 PoEdit 一般不会出现这些问题,点击此处下载 PoEdit

那么,使用 PoEdit 进行汉化的原理是什么呢?WordPress 使用 GNU gettext 机制来汉化,关键之处在于两个函数『 _e 和 __ 』。 PoEdit 通过识别并提取调用了这两个函数里的字符串,然后你只需要输入那些字符串所对应的中文语句,其他的交给 PoEdit 就行了,所有翻译的语句都会在 .po 文件中。看不懂?没关系,接下来我们开始汉化啦。

如何汉化插件

关于 PoEdit 的使用,可以围观 Denis 童鞋的『使用 poEdit 本地化 WordPress 插件』,里面有详细的介绍,附上偷拍的一张汉化时候的照片。

localize-01

如何汉化顽固插件

世界上只有两种插件不能被汉化:这种和那种。对于这种插件,他本身就是中文,当然不需要汉化啦。而那种插件呢,由于作者在编写插件过程中没有调用函数『 _e 和 __ 』,使得 PoEdit 无法识别其中需要被汉化的字符串,因此那种插件就不能被汉化鸟。

正如标题所说的,如何汉化顽固插件。其实方法很简单,就是我们手动调用函数『 _e 和 __ 』。本文以 Samsarin PHP Widget (让边栏支持PHP的插件)为例,这是没有汉化前的 Samsarin PHP Widget 后台设置以及直接载入 PoEdit 的结果,它完全不懂中文,XD。

localize-02

接下来我们就开始对它动手动脚啦,手用来动鼠标,脚用来赶蚊子,欧耶。

[1] 对 samsarin-php-widget.php 进行修改

打开源文件之后,在注释下面(也就是正式代码开始的地方)插入以下代码:

1
load_plugin_textdomain('samsarin_php_widget', "/wp-content/plugins/samsarin-php-widget/");

之所以要这么修改,是因为『在确保输出的文本可以被本地化之后,你必须设置你的插件,使得能够导入适当的 .mo 文件。 .mo 是编译后的 .po 文件,它是在 PoEdit 保存的时候会自动产生的。 via单引号内的内容就是插件名称,双引号内的内容就是插件的相对路径啦

关于那个插件名称,有点儿囧。最好看看代码里怎么叫它的名字,别以为是作者是 samsarin-php-widget 叫的实际上却是 samsarin_php_widget 的说。

[2] 把需要汉化的字符串标记出来

要把需要汉化的字符串标记出来,这可是个眼力+体力的事儿。一般来说 PHP 函数或过程可以不用去看了,你需要注意的是那些 HTML 代码,比如:

57
58
59
<h2>Samsarin PHP Widget Options</h2>
//把上面的代码修改成下面的样子:
<h2><?php _e('Samsarin PHP Widget Options', 'samsarin_php_widget'); ?></h2>

整个格式就是这样滴, HTML 元素可以不被 PHP 函数包围起来。就这么把所有需要汉化的字符串标记出来。

[3] 在 PoEdit 中进行汉化
[4] 调戏一下

localize-03

唠叨一下

  1. 话说这个方法是 @Leewings 童鞋教我的,谢谢。
  2. 如果看不懂文章内容或者发现什么问题请先把文章再看一遍然后再操作一遍,实在受不了就留言吧。
  3. OrzDream 已经一个多月没更新了,在4月底的时候忙着期中考试,到了5月份运气一直不太好,没有心情更新。尤其是这段时间 WPChina 的独立服务器出了一些问题,看着一堆毛病更不想更新了。不过现在总算挤出了一篇想写很久的文章啦,感觉我的功力下降了……
  4. 如果你已经知道如何汉化了,而且对 WordPress 插件倍感兴趣,考虑一下加入 WPLAND
  5. 在这篇文章之前,本来是想模仿梵娜童鞋的《纪念 Plurk 君》写一篇《纪念 Chi.mp 君》的,后来发现对 Chi.mp 实在没有多少眷恋,算了。
欢迎订阅 OrzDream ,也欢迎关注我的 Twitter @NetPuter ~ :-)
分享这篇文章 或者围观评论 或者直接发表评论
Notify
Snake.Yi 发表于 2009-05-24 23:03

沙发!终于更新了

Notify
fisio 发表于 2009-05-24 23:07

我基本上都是改源码的,模板也是,而且还静态化,基本上没有移植性了

Notify
任平生 发表于 2009-05-24 23:35

同楼上,我也经常这么干

PS. 点击 回复,蹦出 cant find commentformid div

Notify
Betty 发表于 2009-05-25 00:06

chi.mp挂了?汗...

Notify
低俗小说 发表于 2009-05-25 00:12

学习了

Notify
睡到自然醒blog 发表于 2009-05-25 00:22

一般都是在文件相关部位改的吧,不过汉化适合分享给别人。

Notify
辐射鱼 发表于 2009-05-25 00:42

不错不错,初学者确实需要汉化版的

Notify
老时 发表于 2009-05-25 09:43

wp,学无止境啊。

Notify
Chym.Wong 发表于 2009-05-25 12:24

其实汉化出来确实方便很过 不过个人总觉得没英文好看 ^^

Notify
Showfom 发表于 2009-05-25 12:28

还有一些直接编辑文件即可。

Notify
risent 发表于 2009-05-25 12:36

也开始按月更新了。。。。。。

Notify
淘宝 发表于 2009-05-25 12:46

还挺麻烦的。。

Notify
ZH CEXO 发表于 2009-05-25 13:34

这篇文章写得不错~赞一下,我一般都没去汉化,能怎么用就怎么用,实在不懂的拉倒

Notify
bwskyer 发表于 2009-05-25 14:07

点击上面的留言回复出现 ERROR:
Can't find the 'commentformid' div.

赶紧看看吧...

Notify
tunpishuang 发表于 2009-05-25 18:14

ERROR:
Can't find the 'commentformid' div.【中文】

Notify
welee 发表于 2009-05-25 19:35

看来汉化工作不容易,挺繁琐的,向汉化工作者致敬!

Notify
会律博客 发表于 2009-05-25 19:45

学习啦,学无止尽,最近还是好好学习吧!

Notify
NetPuter 发表于 2009-05-26 19:17

谢谢楼上各位童鞋,我刚才稍微测试下,还是没能解决问题,囧。
考虑到最近快要换主题啦,就暂时不去修复这个问题啦,谢谢。

Notify
nooidea 发表于 2009-05-30 18:16

别说顽固 了

就是温顺的我也没搞过。。。

Notify
老时 发表于 2009-06-03 10:10

都是高手啊!

Notify
key4ever 发表于 2009-06-04 00:35

flickr上的链接没了~

Notify
Estoremap 发表于 2009-06-07 18:13

呵呵,我学习了,不过我比较忙哦

Notify
Panther 发表于 2009-06-08 11:28

小孩子 考试了吧

Notify
lucyfour 发表于 2009-10-15 20:59

一直有想法想汉化你在使用的这个MobilePress插件,不知道这个算不算顽固,能不能汉化?