<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>我爱水煮鱼&#187; poEdit</title>
	<atom:link href="http://fairyfish.net/tag/poedit/feed/" rel="self" type="application/rss+xml" />
	<link>http://fairyfish.net</link>
	<description>关注 WordPress，关注互联网</description>
	<lastBuildDate>Tue, 22 May 2012 15:17:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>使用 poEdit 汉化 WordPress 插件</title>
		<link>http://fairyfish.net/2007/09/09/localizing-a-wordpress-plugin-using-poedit/</link>
		<comments>http://fairyfish.net/2007/09/09/localizing-a-wordpress-plugin-using-poedit/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 16:31:57 +0000</pubDate>
		<dc:creator>Denis</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[poEdit]]></category>

		<guid isPermaLink="false">http://fairyfish.net/2007/09/09/localizing-a-wordpress-plugin-using-poedit/</guid>
		<description><![CDATA[首先将会详细讲解应该如何修改插件，使得插件能够被翻译。然后将介绍一个叫做 的翻译软件，通过它来 本地化 WordPress 插件。翻译或者说本地化 WordPress 插件可以让更多的人使用你的插件用，而 WordPress 对 i18n 的支持使这一切都变得非常简单，插件作者（包括主题作者）非常容易就能让人们把他们的插件翻译成各种语言。]]></description>
			<content:encoded><![CDATA[<p>翻译或者说本地化 WordPress 插件可以让更多的人使用你的插件用，而 WordPress 对 i18n 的支持使这一切都变得非常简单，插件作者（包括主题作者）非常容易就能让人们把他们的插件翻译成各种语言。</p>
<p>这篇日志首先将会详细讲解应该如何修改插件，使得插件能够被翻译。然后将介绍一个叫做 <a href="http://sourceforge.net/projects/poedit/">poEdit</a> 的翻译软件，通过它来 本地化 WordPress 插件。<br />
<span id="more-1023"></span></p>
<h2>WordPres 插件本地化的好处和 .po 文件</h2>
<p>WordPress 插件有越多的语言版本，就会有越多的不同国家的人下载和使用。</p>
<p>如果 WordPress 插件很流行，很多人使用，就会有用户把它翻译成不同的语言以方便其他地区的人能够使用它。当然最麻烦最原始的翻译方法就是逐行逐字的翻译源代码。不过现在采用的是简单轻便的翻译方法：通过 <strong>.po</strong> 文件。</p>
<p>通过 <strong>.po</strong> 文件，任何人都能翻译你的插件，只要他对插件的使用的原来语言熟悉。并且 <strong>.po</strong> 文件还有一个好处就是，如果插件的源代码作了任何修改，翻译者不必查看源代码来重新翻译，因为所有需要翻译的文本都会保存在一个后缀名为 <strong>.po</strong> 文件中，翻译者所需要做的只是重新更新下 <strong>.po</strong> 文件，翻译新增或修改的部分。</p>
<h2>插件本地化的准备工作</h2>
<p>WordPress 使用 <a href="http://en.wikipedia.org/wiki/Gettext">GNU gettext</a> 机制来实现本地化。WordPress 有两个可以被插件作者调用的函数：<code>_e</code> 和 <code>__</code>。每次在插件中输出文本，都应该使用这两个函数。</p>
<ul>
<li>这两个函数使用方法是：__($message, $domain) 和 _e($message, $domain)</li>
<li><code>_e</code> 和 <code>__</code>的区别是：<code>_e</code> 直接输出文本，而 <code>__</code> 是返回文本，你需要自己输出，所以 <code>__</code> 一般用在字符串连接当中。</li>
<li>这两个函数都用 <code>$message</code> 作为第一个参数和 <code>$domain</code> 作为第二个参数。第一个参数就是你要输出的文本，而第二个参数 <code>$domain</code><strong>不是可选的</strong>，它应该是一个和你插件或者主题对应的<strong>唯一的</strong>名字，举个例子，如果你开发一个叫做 Related Posts 的插件，这里 <code>$domain</code> 就是 <code>related_posts</code>，<code>$domain</code> 一般是在 <code>load_plugin_textdomain</code> 函数中定义，下面有具体介绍。</li>
</ul>
<p><strong>导入本地化文件</strong></p>
<p>在确保输出的文本可以被本地化之后，你必须设置你的插件，使得能够导入适当的 <strong>.mo</strong> 文件。<strong>.mo</strong> 是编译后的 <strong>.po</strong> 文件，它是在 poEdit 保存的时候会自动产生的。</p>
<p>在你插件中的代码大致如下所示：</p>
<pre>
load_plugin_textdomain('your-plugin-domain', "/wp-content/plugins/your-plugin-directory/");
</pre>
<ul>
<li>函数具体语法：load_plugin_textdomain($domain, $path)</li>
<li><code>$domain</code> 变量和在 <code>__</code> 和 <code>_e</code> 中使用的是同一个变量。<code>$path</code> 是定义 <strong>.mo</strong> 文件的路径。可以使用相对于 <code>ABSPATH</code> 的相对路径。如果插件没有自己的目录，这里也可以设置为空。</li>
</ul>
<p>这里需要注意的一件事情是，产生的任何 <strong>.mo</strong> 文件都应该以 <code>$domain</code> 变量的值作为文件名的前缀。如果插件的 <code>$domain</code> 是 <code>related_posts</code>，那么 <strong>.mo</strong> 文件将会被命名为 <strong>related_posts-zh_CN.mo</strong>（假设插件翻译成中文）。</p>
<h2>使用 poEdit 进行翻译</h2>
<p>WordPress Codex 已经有一个非常好的<a href="http://codex.wordpress.org/User:Skippy/Creating_POT_Files">如何使用 <strong>poEdit</strong> 翻译插件或者主题</a>的 step-by-step 教程，但是我这里将通过一个真实的例子向你展示这些步骤。</p>
<p><strong>第一步：下载 poEdit</strong></p>
<p>到达 <a href="http://sourceforge.net/projects/poedit/">poEdit 项目页面</a>，然后下载，安装它就可以。</p>
<p><strong>第二步：找一个插件翻译</strong></p>
<p>这里，我将举个我写的插件 Related Posts 作为例子。</p>
<p><strong>第三步：打开 poEdit 并打开菜单 File -> New catalog…</strong></p>
<p>在弹出的 &#8216;Settings&#8217; 对话框中，输入你项目的名称，并设置字符集为 UTF-8。</p>
<p><img src="http://pic.fairyfish.com/2007/08/settings_project_name.gif" alt="settings_project_name" /></p>
<p><strong>第四步：输入插件的路径</strong></p>
<p>在刚才的 &#8216;Settings&#8217; 对话框，点击 &#8216;Paths&#8217; 标签页并点击建立新条目的图标。假设插件在自己的子目录下并且你会把 <strong>.po</strong> 保存在子目录中，输入&#8221;.&#8221;（这将告诉 poEdit 去扫描当前目录和所有子目录）。</p>
<p><img src="http://pic.fairyfish.com/2007/08/poedit_paths.gif" alt="poedit_paths" /></p>
<p><strong>第五步：设置适当的关键字</strong></p>
<p>因为 WordPress 使用 <code>_e</code> 和 <code>__</code> 函数来本地化，所以你应该让 poEdit 知道这就是它应该查找的。点击 &#8216;Keywords&#8217; 标签页并输入 <code>_e</code> 和 <code>__</code> 作为关键字，你可以通过点击 &#8216;New Item&#8217; 图标输入关键字。</p>
<p><img src="http://pic.fairyfish.com/2007/08/keywords_new_item.gif" alt="keywords_new_item" /></p>
<p><strong>第六步：点击 OK 并开始翻译</strong></p>
<p>点击 &#8220;Okay&#8221; 按钮并保存 <strong>.po</strong> 文件到你的插件目录下。</p>
<p>在你保存 <strong>.po</strong> 文件之后，会有一个窗口弹出并告诉你所有它找到相匹配的文本。</p>
<p><img src="http://pic.fairyfish.com/2007/08/poedit_update_summary.gif" alt="poedit_update_summary" /></p>
<p>如果你不准备翻译该插件，你可以保存<strong>.po</strong> 文件并把它和插件一起分发出去，让别人能够直接使用它进行翻译。</p>
<p><strong>第七步：翻译插件</strong></p>
<p>一旦所有需要翻译的文本都找到了，就该开始翻译插件了。你所做的就是只要简单的找到你想翻译的文本，并增加你自己的语言。</p>
<p><img src="http://pic.fairyfish.com/2007/08/poedit_translate.gif" alt="poedit_translate" /></p>
<p>上面的 poEdit 界面就是插件翻译界面。</p>
<p><strong>第八步：保存 Catalog</strong></p>
<p>还记得前面提到的 <code>$domain</code> 吗？举个例子，我想产生一个西班牙文的翻译文件，我将会保存这个文件并以 <code>$domain</code> 作为前缀，然后语言和地区代码作为后缀。在这里，<code>$domain</code>  是 <strong>related_posts</strong> 并且语言和地区代码是 <code>es_ES</code>。所以文件名应该为： <code>related_posts-es_ES</code>。</p>
<p>通过保存新文件，我将自动生成一个可以让别人使用的 <strong>.po</strong>的文件，和一个可以被 WordPress 直接读取来本地化插件的 <strong>.mo</strong> 文件。</p>
<p>现在如果用户已经在他们的 <code>wp-config.php</code> 文件中设置了适当的 WPLANG 的值，他们插件的选项和输出的文本将会使他们当地的语言。</p>
<h2>总结</h2>
<p>本地化一个 WordPress 插件是让更多地区用户使用你的插件的一个非常好的方法。本地化首先需要插件作者保证插件能够真正本地化，最后翻译者使用 PoEdit 进行翻译。</p>
<h2>参考：</h2>
<ul>
<li><a href="http://svn.automattic.com/wordpress-i18n/">WordPress Localization Repository</a></li>
<li><a href="http://codex.wordpress.org/User:Skippy/Creating_POT_Files">Creating POT Files</a></li>
<li><a href="http://en.wikipedia.org/wiki/Gettext">gettext (Wikipedia)</a></li>
<li><a href="http://boren.nu/archives/2004/11/01/localizing-plugins-and-themes/">Localizing Plugins and Themes</a></li>
</ul>
<h2>相关阅读：</h2>
<ul>
<li><a href="http://forums.lesterchan.net/index.php/topic,108.0.html">Translating WordPress Plugins</a></li>
<li><a href="http://www.zyblog.de/2006/01/15/localizing-wordpress-themes/3/">Localizing WordPress Themes</a></li>
<li><a href="http://urbangiraffe.com/articles/localizing-wordpress-themes-and-plugins/">Localizing WordPress Themes and Plugins</a></li>
<li><a href="http://urbangiraffe.com/articles/translating-wordpress-themes-and-plugins/">Translating WordPress into another language</a></li>
</ul>
<p>本文翻译：<a href="http://weblogtoolscollection.com/archives/2007/08/27/localizing-a-wordpress-plugin-using-poedit/">Localizing a WordPress Plugin Using poEdit</a>。</p>
<p>&gt;&gt;&gt;<a href="http://fairyfish.net/2007/09/09/localizing-a-wordpress-plugin-using-poedit/" title="使用 poEdit 汉化 WordPress 插件">继续阅读全文</a> ...</p><hr /><p><a href="http://s.click.taobao.com/t_8?e=7HZ5x%2BOzcBqQvUL9HREWEoUWa1c%3D&p=mm_25083601_0_0" rel="nofollow"><img src="http://fairyfish.net/wp-content/banner/notyet.gif"></a></p>
<p>
&copy; <a href="http://fairyfish.net/" title="我爱水煮鱼">我爱水煮鱼</a>
 / <a href="http://fairyfish.net/bookmark/?url=http://fairyfish.net/2007/09/09/localizing-a-wordpress-plugin-using-poedit/&title=%E4%BD%BF%E7%94%A8+poEdit+%E6%B1%89%E5%8C%96+WordPress+%E6%8F%92%E4%BB%B6&tags=poEdit, WordPress, "  title="使用 poEdit 汉化 WordPress 插件">收藏本文</a>
 / <a href="http://fairyfish.net/2007/09/09/localizing-a-wordpress-plugin-using-poedit/#comments" title="使用 poEdit 汉化 WordPress 插件">13条评论</a>
 / <a href="http://feed.fairyfish.net" title="订阅我爱水煮鱼">RSS 订阅</a>
 / <a href="http://fairyfish.net/go/wpjam" title="WordPress JAM">长期承接 WordPress 项目</a>
 / <a href="http://fairyfish.net/coupon/" title="主机域名优惠码">主机域名优惠码</a>
 / <a href="http://weibo.com/denishua/" title="新浪微博">新浪微博</a>
</p><h3>相关日志</h3><ul class="related_post"><li><a href="http://fairyfish.net/2012/04/12/half-of-the-top-100-blogs-now-use-wordpress/" title="国外前 100 名博客半数使用 WordPress">国外前 100 名博客半数使用 WordPress</a></li>
<li><a href="http://fairyfish.net/article/wordpress-performance/" title="WordPress 性能优化：为什么我的博客比你的快 ">WordPress 性能优化：为什么我的博客比你的快 </a></li>
<li><a href="http://fairyfish.net/m/wordpress-action-hooks/" title="WordPress 常用 Action 接口">WordPress 常用 Action 接口</a></li>
<li><a href="http://fairyfish.net/article/wordpress-seo/" title="WordPress SEO 宝典">WordPress SEO 宝典</a></li>
<li><a href="http://fairyfish.net/article/install-wordpress-on-mac-os-x/" title="在 Mac OS X 系统上安装 WordPress 本地测试">在 Mac OS X 系统上安装 WordPress 本地测试</a></li>
<li><a href="http://fairyfish.net/2010/12/23/wpjam-vshop/" title="基于 WordPress 虚拟商品销售的商城系统">基于 WordPress 虚拟商品销售的商城系统</a></li>
</ul><img src="http://fairyfish.net/wp-content/plugins/all-in-one/ga.php?utmac=MO-328125-5&amp;utmn=1510209363&amp;utmr=-&amp;utmp=%2Frss%2F2007%2F09%2F09%2Flocalizing-a-wordpress-plugin-using-poedit%2F&amp;utmdt=%E4%BD%BF%E7%94%A8+poEdit+%E6%B1%89%E5%8C%96+WordPress+%E6%8F%92%E4%BB%B6&amp;guid=ON" />]]></content:encoded>
			<wfw:commentRss>http://fairyfish.net/2007/09/09/localizing-a-wordpress-plugin-using-poedit/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

