查看完整版本: 使用 poEdit 本地化 WordPress 插件

sapphire01 2007-11-14 17:05

使用 poEdit 本地化 WordPress 插件

本文翻译自 [url=http://weblogtoolscollection.com/archives/2007/08/27/localizing-a-wordpress-plugin-using-poedit/][color=#6c8c37]Localizing a WordPress Plugin Using poEdit[/color][/url],转载请留下原文和本文地址。
本地化一个 WordPress 插件能够使你的插件被更多的人使用。而 WordPress 使这一切都变得非常简单,插件作者(和主题作者)非常容易就能确保他们的作品被翻译成各种语言。
这篇日志将会仔细讲解插件作者如何使得其他人更容易他的插件的必须步骤。而对于想要翻译插件的,我会详细讲解一个叫做 [url=http://sourceforge.net/projects/poedit/][color=#6c8c37]poEdit[/color][/url] 的翻译软件。


本地化插件的好处你的插件有越多的语言版本,就会有越多的人下载和使用它。
如果一个插件足够流行,就会有很多人志愿翻译它以便其他地区的人能够使用它。最麻烦的翻译方法就是在每个版本发行之后都要仔细检查代码,然后逐字的翻译。现在有个更简单和轻便的翻译方法就是:通过 [b].po[/b] 文件。
通过 [b].po[/b] 文件,任何人都能翻译你的插件,只要他对插件的原始语言足够熟悉。并且如果你对插件的源代码作了任何修改,翻译者不必深究你的源代码来重新翻译。所有需要翻译的东东都会保存在 [b].po[/b] 文件中,翻译者所要做的只是用他的语言更新下 [b].po[/b] 文件。
插件本地化的准备工作WordPress 使用 [url=http://en.wikipedia.org/wiki/Gettext][color=#6c8c37]GNU gettext[/color][/url] 机制来本地化。WordPress 有两个可以被插件作者调用的函数:[b]_e[/b] 和 [b]__[/b]。每次你输出文本,你应该使用这两个函数。
[list][*]__($message, $domain) 和 _e($message, $domain)[*]上面两个函数都用 $[b]message[/b] 作为第一个参数和一个可选的 [b]$domain[/b] 作为第二个参数。对于插件和主题的作者,第二个参数[b]不是可选的[/b],它应该是一个和你插件或者主题对应的[b]唯一的[/b]名字,举个例子,如果你开发一个叫做 [url=http://techie-buzz.com/wordpress-plugins/wordpress-automatic-upgrade-plugin.html][color=#6c8c37]WordPress Automatic Upgrade[/color][/url] 的插件,这里你可以使用 WPAU。[/list]根据 [url=http://codex.wordpress.org/Writing_a_Plugin#Internationalizing_Your_Plugin][color=#6c8c37]WordPress Codex[/color][/url],如果文本将会用在运算当中,应该使用 [b]__[/b] 函数。
[b]导入本地化文件[/b]
在确保输出的文本可以被本地化之后,你必须设置你的插件,使得能够导入适当的 [b].mo[/b] 文件。[b].mo[/b] 是编译后的 [b].po[/b] 文件,它是在 poEdit 保存的时候会自动产生的。
在你插件中的代码大致如下所示:
load_plugin_textdomain('your-plugin-domain', "/wp-content/plugins/your-plugin-directory/");[list][*]load_plugin_textdomain($domain, $path)[*][b]$domain[/b] 变量和你在 [b]__[/b] 和 [b]_e[/b] 中使用的是同一个变量。[b]$path[/b] 是相对于你定义在 [b]wp-config.php[/b] 文件中的 [b]ABSPATH[/b] 变量。如果你的插件没有自己的目录,你可以设置它为空。[/list]这里需要注意的一件事情是,产生的任何 [b].mo[/b] 文件都会以 [b]$domain[/b] 变量的值作为文件名的前缀。举个例子,如果你的插件的 [b]domain[/b] 是 [b]WPAU[/b],那么 [b].mo[/b] 文件将会被命名为 [b]WPAU-de_DE.mo[/b](假设翻译成德文)。
使用 poEdit 进行翻译已经有一个非常好的[url=http://codex.wordpress.org/User:Skippy/Creating_POT_Files][color=#6c8c37]如何使用 [b]poEdit[/b] 翻译插件或者主题[/color][/url]的 step-by-step 教程,但是我这里将通过一个真实的例子向你展示这些步骤。
[b]第一步:下载 poEdit[/b]
到达 [url=http://sourceforge.net/projects/poedit/][color=#6c8c37]poEdit 项目页面[/color][/url],然后下载,安装它就可以。
[b]第二步:找一个插件翻译[/b]
找一个你自己的(或者其他的)插件来翻译,在这里,我将举个我写的插件 [url=http://wordpress.org/extend/plugins/wp-ajax-edit-comments/][color=#6c8c37]Ajax Edit Comments[/color][/url] 作为例子。
[b]第三步:打开 poEdit 并打开菜单 File -> New catalog…[/b]
在弹出的 'Settings' 对话框中,输入你项目的名称,这里,项目的名称是 WPAjaxEditComments,并且设置它的字符集为 UTF-8。
[img]http://fairyfish.net/wp-content/uploads/2007/08/settings_project_name.gif[/img]
[b]第四步:输入插件的路径[/b]
在刚才的 'Settings' 对话框,点击 'Paths' 标签页并点击建立新条目的图标。假设你的插件在自己的子目录下并且你会把 [b].po[/b] 保存在子目录中,输入"."(这将告诉 poEdit 去扫描当前目录和所有子目录)。
[img]http://fairyfish.net/wp-content/uploads/2007/08/poedit_paths.gif[/img]
[b]第五步:设置适当的关键字[/b]
因为 WordPress 使用 [b]_e[/b] 和 [b]__[/b] 函数来本地化,所以你应该让 poEdit 知道这就是它应该查找的。点击 'Keywords' 标签页并输入 [b]_e[/b] 和 [b]__[/b] 作为关键字,你可以通过点击 'New Item' 图标输入关键字。
[img]http://fairyfish.net/wp-content/uploads/2007/08/keywords_new_item.gif[/img]
[b]第六步:点击 OK 并开始翻译[/b]
点击 "Okay" 按钮并保存 [b].po[/b] 文件到你的插件目录下。现在你把文件命名成什么并不重要,但是它会有影响当涉及到翻译。
在你保存 [b].po[/b] 文件之后,会有一个窗口弹出并告诉你所有它找到相匹配的文本。
[img]http://fairyfish.net/wp-content/uploads/2007/08/poedit_update_summary.gif[/img]
如果你不准备翻译该插件,你可以继续保存[b].po[/b] 文件并把它和插件一起分发出去,使得别人能够直接翻译。
[b]第七步:翻译插件[/b]
一旦所有需要翻译德文本都找到了,就该开始翻译插件了。只要简单的找到你想翻译的文本,并增加你自己的语言。
[url=http://fairyfish.net/wp-content/uploads/2007/08/poedit_translate.gif][img]http://fairyfish.net/wp-content/uploads/2007/08/poedit_translate.gif[/img][/url]
从这个屏幕,你可以翻译插件了。
[b]第八步:保存 Catalog[/b]
还记得前面提到的 [b]$domain[/b] 吗?举个例子,我想产生一个西班牙文的翻译文件,我将会保存这个文件并以 [b]$domain[/b] 作为前缀,然后语言和地区代码作为后缀。在这里,domain 是 [b]WPAjaxEditComments[/b] 并且语言和地区代码是 [b]es_ES[/b]。所以我将保存文件名为: [b]WPAjaxEditComments-es_ES[/b]。
通过保存新文件,我将自动生成一个可以别人用的 [b].po[/b]的文件,和一个可以被 WordPress 直接读取来本地化插件的 [b].mo[/b] 文件。
现在如果用户一定在他们的 [b]wp-config.php[/b] 文件定义了适当的 WPLANG 的值,他们插件的选项和输出的文本将会使他们当地的语言。
[img]http://fairyfish.net/wp-content/uploads/2007/08/german_translated_plugin.gif[/img]
结论本地化一个 WordPress 插件是让其他地区的用户使用你的插件的一个非常好的方法。本地化将会涉及到很多人,包括插件作者最初始的保证插件能够真正本地化的步骤。还有翻译者,他们为 WordPress 和 WordPress 插件的本地化做出了巨大的贡献。。
参考:[list][*][url=http://svn.automattic.com/wordpress-i18n/][color=#6c8c37]WordPress Localization Repository[/color][/url][*][url=http://codex.wordpress.org/User:Skippy/Creating_POT_Files][color=#6c8c37]Creating POT Files[/color][/url][*][url=http://en.wikipedia.org/wiki/Gettext][color=#6c8c37]gettext (Wikipedia)[/color][/url][*][url=http://boren.nu/archives/2004/11/01/localizing-plugins-and-themes/][color=#6c8c37]Localizing Plugins and Themes[/color][/url][/list]相关阅读:[list][*][url=http://forums.lesterchan.net/index.php/topic,108.0.html][color=#6c8c37]Translating WordPress Plugins[/color][/url][*][url=http://www.zyblog.de/2006/01/15/localizing-wordpress-themes/3/][color=#6c8c37]Localizing WordPress Themes[/color][/url][*][url=http://urbangiraffe.com/articles/localizing-wordpress-themes-and-plugins/][color=#6c8c37]Localizing WordPress Themes and Plugins[/color][/url][*][url=http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/][color=#6c8c37]Translating WordPress into another language[/color][/url][/list]Tags: [url=http://fairyfish.net/tag/poedit/][color=#6c8c37]poEdit[/color][/url], [url=http://fairyfish.net/tag/wordpress/][color=#6c8c37]WordPress[/color][/url], [url=http://fairyfish.net/tag/localize/][color=#6c8c37]本地化[/color][/url]
页: [1]
查看完整版本: 使用 poEdit 本地化 WordPress 插件