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

2009年6月10日19:44:47 插件汉化 11 18,242

在调戏 WordPress 的过程中,插件是不可不戏的一个部位。对于许多人来说,面对着满屏英文的插件设置,难免会有所纠结。还好有很多热心高手为我们汉化了许多的插件。可是,要是插件还没被汉化呢,难道就面对满屏英文而纠结吗?非也非也,我们可以自己对插件进行汉化,就算是顽固插件,也一样不放过。

所谓的汉化:

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

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

如何汉化插件:

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

如何汉化顽固插件:

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

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

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

一、对 samsarin-php-widget.php 进行修改

打开源文件之后,在注释下面(也就是正式代码开始的地方)插入以下代码:
load_plugin_textdomain('samsarin_php_widget', "/wp-content/plugins/samsarin-php-widget/");

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

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

二、把需要汉化的字符串标记出来

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

Samsarin PHP Widget Options

//把上面的代码修改成下面的样子:

< ?php _e('Samsarin PHP Widget Options', 'samsarin_php_widget'); ?>

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

三、在 PoEdit 中进行汉化

四、调戏一下

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

评论已关闭!

目前评论:11   其中:访客  11   博主  0

    • epile epile 2

      很好很强大~保存了

      • bolo bolo 5

        很好,有学习价值

        • 冷热缸 冷热缸 0

          很好很强大

          • yujjj yujjj 0

            你好,我用了你说的方法,可是直接打开php文件时看不到东西啊???

              • 酋 长 酋 长 9

                @yujjj 提示什么?具体可以到http://bbs.wopus.org发帖。

              • 45435 45435 0

                太牛叉了!

                • lszi lszi 0

                  贵站的语法高亮插件可以分享下不。

                  • wodesuoai wodesuoai 1

                    感谢汉化插件的哥们们。

                    • WoW! WoW! 1

                      Wow!原來漢化也可以如此簡單!謝謝~~

                      • 红树林网赚 红树林网赚 1

                        我安装了all-in-one-seo-pack插件,自带all_in_one_seo_pack-zh_CN.mo,但为什么后台仍然是英文的呢?

                        • FradSer FradSer 0

                          学习了,后头试试