编写中文化的 wordpress插件 和 wordpress主题

大家能搜到的我就不一一解释了,主要分享下自己在摸索编写插件和主题时,碰到的中文化问题和解决方法。因为插件和主题略有不同,这里分开阐述。 1.wordpress插件 多语言支持,特别是中文的支持。 2.WordPress主题 的中文化 ,中文支持,多语言支持等

大家能搜到的我就不一一解释了,主要分享下自己在摸索编写插件和主题时,碰到的中文化问题和解决方法。因为插件和主题略有不同,这里分开阐述。

1.wordpress插件 多语言支持,特别是中文的支持。

首先,我需要插件在wordpress后台管理的插件菜单内,显示中文的名称和介绍。

要实现上述功能,有两种方法,先介绍正规的方法,其关键在定义插件的描述信息时要注意的地方,自己查看了plugins.php源代码,发现有相关介绍,摘录如下:

特别提示的是,最后两行,如果要显示中文插件名和插件描述,最好添加上面的两行,然后就可以方便的在mo文件里翻译上述描述信息为中文了。
上述翻译自动调用 load_plugin_textdomain函数,因此,只要您有中文mo文件,并且放置在您插件的根目录(Domain Path设置为/)即可实现中文化。
好了,您插件名和插件描述信息都已经是中文了,剩下的就是插件本身显示、配置的中文化了。这个,可以参考很多网站的文章,我这里只粗略的写下。

WordPress使用 GNU Gettext (http://www.gnu.org/software/gettext/gettext.html) 本地化框架. Gettext是一个成熟的,广泛使用的框架,它给提供软件的单元翻译. 它实际是开源/自由软件领域本地化的标准.关于给WordPress自身制作翻译的信息可以参考 Localizing WordPress.

WordPress的字串翻译的缺省分类里并不包括你的插件里的字串. 如果你希望你的插件也得到翻译,你的插件需要加载自己的翻译分类.

在你的插件的顶部,include 下面的代码来加载插件文本域:

这样会加载一个叫做’myplugin’的文本域. 你需要把名字改成符合你插件的域名.

基于指定的路径,域,和WordPress的本地设置,就是 wp-settings.php 里定义的WPLANG,  WordPress会试图加载一个叫path/domain-$locale.mo 的分类.

你的插件可以使用 __() and _e()函数来本地化字串. 你需要提供一个额外的参数给这些函数来指明你需要的翻译的域.

__(message, domain)
查找message转换成的本地化的模块,然后把这个转换传递给PHP的return句子. 如果没有发现 message的翻译, 它会直接返回 $message.
_e(message, domain)
查找为message翻译的本地化单元,把翻译传递给echo语句. 如果没有找到message的翻译,它会直接显示$message.

当需要把信息当作参数传递给其他函数时使用__(),当需要直接在页面上写入信息时使用_e(). 所以 _e() 和 echo __()是等效的.

怎样生成mo文件呢?

mo文件的命名:在插件中,.mo 文件的名字应该与插件国际化“文本域”名称有联系,格式是 textdomain-lang-Country.mo。比方说,我的一个插件叫wb-share ,那么我的汉化文件名就应该取成 wb-share-zh_CN.mo。以此类推可知,textdomain 是文本域, lang是语言名, Country是国家区域代号。注意:在文本域与语言、国家代码之间是小横线(-),而在语言和国家代码之间是下划线(_)。

a.使用在线编辑插件,您可以下载 Heiko Rabe 编写的CodeStyling Localization插件。使用非常简单,这里不再啰嗦。唯一需要注意的是,请在翻译后选择正确的文本域,并且按创建mo文件,若果您的文本域只有default,则很不幸,您可能在插件里使用的是__(”),而不是__(”,’文本域’)的形式,请修正即可。

b.使用使用 PoEdit 进行汉化。直接修改源代码也是可以的。点击此处下载 PoEdit

2.WordPress主题 的中文化 ,中文支持,多语言支持等

类似插件,我首先要做的就是把主题名称、描述等中文化。

这里不能再用插件的方式了。

最简单的方法是采用 utf-8格式存储 style.css,然后直接使用中文编写内容,呵呵,很好,一次成功。本方法适用于插件。

估计也是唯一的方法吧,我只知道此方法。

对主题内容、配置的中文化,当然少不了调用 load_theme_textdomain()函数,然后,您可以参考插件生成mo的方式生成主题mo文件即可。

特别提醒,这里mo命名方式与插件不同。只需使用zh_CN.mo即可。

0 Comments

  1. 小屁人

    哈哈,学习下!

    Reply
  2. 鲁蒙的个人博客

    请教一下博主 你博客右边的 能回到顶部或者底部的插件叫什么名字?还有就是每一篇文章的旁边的上一篇和下一篇文章的这个插件是什么?谢谢博主了.. 😉

    Reply
    1. webmote (Post author)

      ooop,这个我真不知道。你去hotnewspro主题网站问问。

      Reply

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注

计算器