<?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>Zack Live &#187; WordPress专题</title>
	<atom:link href="http://cn.zacklive.com/tag/wordpress%e4%b8%93%e9%a2%98/feed/" rel="self" type="application/rss+xml" />
	<link>http://cn.zacklive.com</link>
	<description>澳门WordPress 主题设计及网页设计</description>
	<lastBuildDate>Thu, 29 Jul 2010 14:54:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>讲解：使用JQuery实现WordPress多层下拉导航</title>
		<link>http://cn.zacklive.com/details-jquery-wordpress-drop-down-menu/126/</link>
		<comments>http://cn.zacklive.com/details-jquery-wordpress-drop-down-menu/126/#comments</comments>
		<pubDate>Sat, 30 Jan 2010 04:38:27 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress主题]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[WordPress 主题]]></category>
		<category><![CDATA[WordPress专题]]></category>
		<category><![CDATA[导航]]></category>

		<guid isPermaLink="false">http://cn.zacklive.com/?p=126</guid>
		<description><![CDATA[今日要讲解使用JQuery实现WordPress多层下拉导航的程式码。 第一行是让WordPress调用JQuery，就不多说了： &#60;?php wp_enqueue_script('jquery'); ? &#62; JQuery主程式讲解 然后是JavaScript(JQuery)的主程式： &#60; script type=&#34;text/javascript&#34; &#62; $(&#34;#topmenu a&#34;).removeAttr(&#34;title&#34;); jQuery(document).ready(function() { jQuery(&#34;#topmenu ul&#34;).css({display: &#34;none&#34;}); // Opera Fix jQuery(&#34;#topmenu li&#34;).hover(function(){ jQuery(this).find('ul:first').css({visibility: &#34;visible&#34;,display: &#34;none&#34;}).show(268); },function(){ jQuery(this).find('ul:first').css({visibility: &#34;hidden&#34;}); }); }); &#60; /script &#62; 首先看第一句： $(&#34;#topmenu a&#34;).removeAttr(&#34;title&#34;); 这句的目的是要移除topmenu底下的连结（a）的标题（title）属性。这是因为使用wp_list_pages()时，WordPress会自动为每条连结加入标题，而这个标题会跟JQuery的Tooltip发生冲突，所以就先将title移除。 jQuery(document).ready(function() &#8230; <a href="http://cn.zacklive.com/details-jquery-wordpress-drop-down-menu/126/">继续阅读 <span class="meta-nav">&#62;&#62;</span></a>]]></description>
			<content:encoded><![CDATA[<p>今日要讲解<a title="使用JQuery实现WordPress多层下拉导航" href="http://cn.zacklive.com/jquery-milti-level-drop-down-menu-wordpress/122/">使用JQuery实现WordPress多层下拉导航</a>的程式码。</p>
<p>第一行是让WordPress调用JQuery，就不多说了：</p>
<pre class="brush: php;">&lt;?php wp_enqueue_script('jquery'); ? &gt;</pre>
<h2>JQuery主程式讲解</h2>
<p>然后是JavaScript(JQuery)的主程式：</p>
<pre class="brush: jscript;">&lt; script type=&quot;text/javascript&quot; &gt;
$(&quot;#topmenu a&quot;).removeAttr(&quot;title&quot;);
jQuery(document).ready(function() {
jQuery(&quot;#topmenu ul&quot;).css({display: &quot;none&quot;}); // Opera Fix
jQuery(&quot;#topmenu li&quot;).hover(function(){
		jQuery(this).find('ul:first').css({visibility: &quot;visible&quot;,display: &quot;none&quot;}).show(268);
		},function(){
		jQuery(this).find('ul:first').css({visibility: &quot;hidden&quot;});
		});
});
&lt; /script &gt;</pre>
<p><span id="more-126"></span>首先看第一句：</p>
<pre class="brush: jscript;">$(&quot;#topmenu a&quot;).removeAttr(&quot;title&quot;);</pre>
<p>这句的目的是要移除topmenu底下的连结（a）的标题（title）属性。这是因为使用wp_list_pages()时，WordPress会自动为每条连结加入标题，而这个标题会跟JQuery的Tooltip发生冲突，所以就先将title移除。</p>
<pre class="brush: jscript;">jQuery(document).ready(function() {</pre>
<p>这一句是说，当网页载入完成后，马上运行下面的程式。</p>
<pre class="brush: jscript;">jQuery(&quot;#topmenu ul&quot;).css({display: &quot;none&quot;}); // Opera Fix</pre>
<p>需要这一句的原因是，在Opera里，下层Menu收得比较慢，会被用户看到，所以先把它设为不显示。</p>
<pre class="brush: jscript;">jQuery(&quot;#topmenu li&quot;).hover(function(){
		jQuery(this).find('ul:first').css({visibility: &quot;visible&quot;,display: &quot;none&quot;}).show(268);
		},function(){
		jQuery(this).find('ul:first').css({visibility: &quot;hidden&quot;});
		});</pre>
<p>这是jQuery的.hover方法，第一个function()代表鼠标在topmenu的li之上时的效果，而第二个function()则是鼠标移出后的效果。</p>
<pre class="brush: jscript;">jQuery(this).find('ul:first').css({visibility: &quot;visible&quot;,display: &quot;none&quot;}).show(268);</pre>
<p>这是在鼠标移入时运行的程式，jQuery(this).find(&#8216;ul:first&#8217;)是找到这底下第一个ul，后面是用css将它的visibility设为&#8217;可见&#8217;（visible），而display则为&#8217;none&#8217;。最后的show(268)是以动画特效慢慢显示出来，268是微秒，就是要在268微秒之内完成动画。这里使用visibility而不用display来显示，据说是因为若使用display，当鼠标快速滑过时，动画特效就不会出现，而变成将ul快速地弹出一下，便收回去，这不是我们想要的，使用visibility就能解决这个问题。</p>
<pre class="brush: jscript;">jQuery(this).find('ul:first').css({visibility: &quot;hidden&quot;});</pre>
<p>这句就是当鼠标移走时，把第一个ul藏起来，这里也会以动画的方式慢慢地收回去。</p>
<h2>CSS部分讲解</h2>
<p>jQuery的部分解释完了，接下来看CSS的部分。首先看第一段：</p>
<pre class="brush: css;">#topmenu, #topmenu ul {
    margin:0;
    padding:0;
    list-style-type:none;
    list-style-position:outside;
    position:relative;
    line-height:1.5em;
    z-index:300;
    width:100%;
    background:#fff;
    font-weight:bold;
}</pre>
<p>这里要注意是，position要设为relative，line-height记得要设定，其他的就是外观设定。</p>
<pre class="brush: css;">#topmenu a {
    display:block;
    padding:0.25em 1em;
    color:#686868;
    border-right:1px solid #c8c8c8;
    text-decoration:none;
    background:#fff;
}   

#topmenu a:hover {
    background:#888;
    color:#fff;
}</pre>
<p>这两段都是外观设定。</p>
<pre class="brush: css;">#topmenu li {
    float:left;
    position:relative;
}</pre>
<p>这是让Menu横向排列。</p>
<pre class="brush: css;">#topmenu ul {
    position:absolute;
    display:none;
    width:12em;
    top:1.9em;
    left:-1px;
}</pre>
<p>这里是第二层的Menu，display是none，因为一开始，第二层是不显示的。记得要设width，因为第三层会在第二层的右边，相距多少就是根据这个width来设定。top是离第一层多远，因为line-height为1.5em加连结（a）上下padding各0.25em，就等于2em，设为1.9em是为了让第二层贴着第一层1em。left等于-1px也是同样的道理，让第二层往左一点。</p>
<pre class="brush: css;">#topmenu ul a {
    border-left:1px solid #c8c8c8;
}   

#topmenu li ul {
    border-top:1px solid #c8c8c8;
    width:14.1em;
}</pre>
<p>这两段是外观设定。</p>
<pre class="brush: css;">#topmenu li ul a {
    width:12em;
    height:auto;
    float:left;
    border-bottom:1px solid #c8c8c8;
}</pre>
<p>这段要注意是width要设定，同样因为下一层是在右边出现。float:left也是同样的原因。</p>
<pre class="brush: css;">#topmenu li:hover ul ul, #topmenu li:hover ul ul ul, #topmenu li:hover ul ul ul ul {
    display:none;
}   

#topmenu li:hover ul, #topmenu li li:hover ul, #topmenu li li li:hover ul, #topmenu li li li li:hover ul {
    display:block;
}</pre>
<p>最后这两段是设定，hover时的显示方式，也就是只显示下一层，不会显示下下一层。</p>
<p>全部的程式码解释完毕，你学会了吗？记得要自己试着改几个设定，看看有什么不一样的效果。有什么新发现，或问题，可以跟我讨论。</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li><a href="http://cn.zacklive.com/how-to-jquery-wordpress-tabs/128/" title="使用JQuery在WordPress实现Tabs效果">使用JQuery在WordPress实现Tabs效果</a></li><li><a href="http://cn.zacklive.com/jquery-milti-level-drop-down-menu-wordpress/122/" title="使用JQuery实现WordPress多层下拉导航">使用JQuery实现WordPress多层下拉导航</a></li><li><a href="http://cn.zacklive.com/wordpress-language-settings/116/" title="WordPress的语言设定">WordPress的语言设定</a></li><li><a href="http://cn.zacklive.com/advanced-wordpress-themes-translation/106/" title="进阶WordPress主题翻译技巧">进阶WordPress主题翻译技巧</a></li><li><a href="http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/" title="如何翻译WordPress主题">如何翻译WordPress主题</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://cn.zacklive.com/details-jquery-wordpress-drop-down-menu/126/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress的语言设定</title>
		<link>http://cn.zacklive.com/wordpress-language-settings/116/</link>
		<comments>http://cn.zacklive.com/wordpress-language-settings/116/#comments</comments>
		<pubDate>Tue, 26 Jan 2010 04:49:01 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[WordPress主题]]></category>
		<category><![CDATA[WordPress 主题]]></category>
		<category><![CDATA[WordPress专题]]></category>
		<category><![CDATA[翻译]]></category>
		<category><![CDATA[语言]]></category>

		<guid isPermaLink="false">http://cn.zacklive.com/?p=116</guid>
		<description><![CDATA[本文属于WordPress主题翻译教学系列，文章列表： 设计国际化的主题: WordPress主题翻译教学 如何翻译WordPress主题 进阶WordPress主题翻译技巧 WordPress的语言设定 前三篇讲了翻译的方法，却忘了讲怎么用上这些翻译，这一篇算是之前的内容的补充，主要讲如何设定WordPress的语言跟主题的翻译文件该放在哪里。 1. 设定WordPress的语言 首先，其实WordPress本身提供多国语言版本，可以直接下载，包括繁体中文与简体中文。下载回来后，不用任何设定就可以使用。实际上，这些版本跟英文版只有两项区别，如果你本身用的是英文版，想要改为中文版，可以参考这两项进行修改。 第一项语言设定。在WordPress根目录里的wp-config.php底部有以下这一行： define (&#8216;WPLANG&#8217;, &#8221;); 这就是WordPress的语言设定，预设是英文，要改成中文，只要填入语言代号，如简体中文，请改为： define (&#8216;WPLANG&#8217;, &#8216;zh_CN&#8217;); 我们之前讲的翻译文件的命名规则得出来的就是语言代号。同理，繁体中文只需将zh_CN改为zh_TW就可以了。储存并关闭就完成了语言的修改。接着，WordPress就会自动寻找相应的语言文件，到哪里寻找呢？这就是第二点要讲的内容。 2. 翻译及语言文件的位置 第二项就是语言文件。打开wp-content，你会发现里面多了一个languages，没错，这就是WordPress的语言文件的位置，里面一般最少有两个文件：一个PO文件和一个MO文件。MO是经过编译的文件，WordPress从这里读取翻译，基本上有MO文件WordPress就能使用该语言；而PO则是原文件（未经编译），装有原始的翻译文件，主要用于修改翻译或作为翻译其他语言版本的参考。另外，有时还会有个PHP文件，如简体中文就会有个zh_CN.php，里面主要是CSS设定，用于修正界面的。你知道，中文和英文的长度，大小等都有所不同，画面有些地方需要作出调整，才不会出现诸如移位之类的现象。 前面讲的语言文件是WordPress系统的翻译，再来就要讲，主题的翻译文件应该放在哪里。其实道理一样，翻译文件属于主题，所以放在主题文件夹里的languages文件夹里，自己在主题文件夹里新建一个文件夹，命名为languages就可以了。把你翻译的MO跟PO文件放在里面，WordPress就能找到。当然，你的翻译文件必须跟wp-config.php里面设定的一样才能找到。如果你在wp-config.php里设定的是zh_TW，而你的主题的languages里放的是zh_CN.mo，那很抱歉，你的主题会显示预设的英文版本。 总结 连同这次的补充，主题翻译方面的教学应该可以告一段落了，如果你还有什么问题或觉得还有什么地方我没讲清楚，欢迎回覆告诉我，我会尽快补上。 Related Posts讲解：使用JQuery实现WordPress多层下拉导航进阶WordPress主题翻译技巧如何翻译WordPress主题设计国际化的主题: WordPress主题翻译教学使用JQuery在WordPress实现Tabs效果]]></description>
			<content:encoded><![CDATA[<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/wp-config-wplang.jpg"><img class="aligncenter size-full wp-image-84" title="wp-config-wplang" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/wp-config-wplang.jpg" alt="wp config wplang WordPress的语言设定" width="550" height="250" /></a></p>
<p>本文属于WordPress主题翻译教学系列，文章列表：</p>
<ol>
<li><a title="设计国际化的主题: WordPress主题翻译教学" href="http://cn.zacklive.com/design-international-wordpress-theme-translation-tutorial/98/">设计国际化的主题: WordPress主题翻译教学</a></li>
<li><a title="如何翻译WordPress主题" href="http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/">如何翻译WordPress主题</a></li>
<li><a title="进阶WordPress主题翻译技巧" href="http://cn.zacklive.com/advanced-wordpress-themes-translation/106/">进阶WordPress主题翻译技巧</a></li>
<li><a title="进阶WordPress主题翻译技巧" href="http://cn.zacklive.com/advanced-wordpress-themes-translation/106/"></a><a title="WordPress的语言设定" href="http://cn.zacklive.com/wordpress-language-settings/116/">WordPress的语言设定</a></li>
</ol>
<p>前三篇讲了翻译的方法，却忘了讲怎么用上这些翻译，这一篇算是之前的内容的补充，主要讲如何设定WordPress的语言跟主题的翻译文件该放在哪里。</p>
<h2>1. 设定WordPress的语言</h2>
<p>首先，其实WordPress本身提供多国语言版本，可以直接下载，包括<a title="wordpress 繁体正体中文" href="http://tw.wordpress.org/">繁体中文</a>与<a title="wordpress 简体中文" href="http://cn.wordpress.org/">简体中文</a>。下载回来后，不用任何设定就可以使用。实际上，这些版本跟英文版只有两项区别，如果你本身用的是英文版，想要改为中文版，可以参考这两项进行修改。</p>
<p>第一项语言设定。在WordPress根目录里的wp-config.php底部有以下这一行：</p>
<blockquote><p>define (&#8216;WPLANG&#8217;, &#8221;);</p></blockquote>
<p>这就是WordPress的语言设定，预设是英文，要改成中文，只要填入语言代号，如简体中文，请改为：</p>
<blockquote><p>define (&#8216;WPLANG&#8217;, &#8216;zh_CN&#8217;);</p></blockquote>
<p>我们之前讲的翻译文件的命名规则得出来的就是语言代号。同理，繁体中文只需将zh_CN改为zh_TW就可以了。储存并关闭就完成了语言的修改。接着，WordPress就会自动寻找相应的语言文件，到哪里寻找呢？这就是第二点要讲的内容。</p>
<h2><span id="more-116"></span>2. 翻译及语言文件的位置</h2>
<p>第二项就是语言文件。打开wp-content，你会发现里面多了一个languages，没错，这就是WordPress的语言文件的位置，里面一般最少有两个文件：一个PO文件和一个MO文件。MO是经过编译的文件，WordPress从这里读取翻译，基本上有MO文件WordPress就能使用该语言；而PO则是原文件（未经编译），装有原始的翻译文件，主要用于修改翻译或作为翻译其他语言版本的参考。另外，有时还会有个PHP文件，如简体中文就会有个zh_CN.php，里面主要是CSS设定，用于修正界面的。你知道，中文和英文的长度，大小等都有所不同，画面有些地方需要作出调整，才不会出现诸如移位之类的现象。</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/wordpress_language.jpg"><img class="aligncenter size-full wp-image-85" title="wordpress_language" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/wordpress_language.jpg" alt="wordpress language WordPress的语言设定" width="363" height="123" /></a>前面讲的语言文件是WordPress系统的翻译，再来就要讲，主题的翻译文件应该放在哪里。其实道理一样，翻译文件属于主题，所以放在主题文件夹里的languages文件夹里，自己在主题文件夹里新建一个文件夹，命名为languages就可以了。把你翻译的MO跟PO文件放在里面，WordPress就能找到。当然，你的翻译文件必须跟wp-config.php里面设定的一样才能找到。如果你在wp-config.php里设定的是zh_TW，而你的主题的languages里放的是zh_CN.mo，那很抱歉，你的主题会显示预设的英文版本。</p>
<h2>总结</h2>
<p>连同这次的补充，主题翻译方面的教学应该可以告一段落了，如果你还有什么问题或觉得还有什么地方我没讲清楚，欢迎回覆告诉我，我会尽快补上。</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li><a href="http://cn.zacklive.com/details-jquery-wordpress-drop-down-menu/126/" title="讲解：使用JQuery实现WordPress多层下拉导航">讲解：使用JQuery实现WordPress多层下拉导航</a></li><li><a href="http://cn.zacklive.com/advanced-wordpress-themes-translation/106/" title="进阶WordPress主题翻译技巧">进阶WordPress主题翻译技巧</a></li><li><a href="http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/" title="如何翻译WordPress主题">如何翻译WordPress主题</a></li><li><a href="http://cn.zacklive.com/design-international-wordpress-theme-translation-tutorial/98/" title="设计国际化的主题: WordPress主题翻译教学">设计国际化的主题: WordPress主题翻译教学</a></li><li><a href="http://cn.zacklive.com/how-to-jquery-wordpress-tabs/128/" title="使用JQuery在WordPress实现Tabs效果">使用JQuery在WordPress实现Tabs效果</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://cn.zacklive.com/wordpress-language-settings/116/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>进阶WordPress主题翻译技巧</title>
		<link>http://cn.zacklive.com/advanced-wordpress-themes-translation/106/</link>
		<comments>http://cn.zacklive.com/advanced-wordpress-themes-translation/106/#comments</comments>
		<pubDate>Fri, 22 Jan 2010 06:39:21 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[WordPress主题]]></category>
		<category><![CDATA[Text Domain]]></category>
		<category><![CDATA[WordPress专题]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[命名空间]]></category>
		<category><![CDATA[教学]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://cn.zacklive.com/?p=106</guid>
		<description><![CDATA[本文属于WordPress主题翻译教学系列，文章列表： 设计国际化的主题: WordPress主题翻译教学 如何翻译WordPress主题 进阶WordPress主题翻译技巧 继昨天的如何翻译WordPress主题之后，我又参考了一些文章，觉得有必要再补充一些东西，整个WordPress主题翻译教学系列才算完整。今天要讲的主要是一些设计主题时要注意的地方，以使翻译可以更完美。 设立文字命名空间(Text Domain) 文字命名空间(Text Domain)是为了避免本主题的翻译文字和其他主题或WordPress本身的文字发生冲突而设立的，它的意思就像一个文件夹，将本主题的文字都放在里面，需要这个主题的文字时，WordPress就会直接来到这里找，这样就不怕跟其他主题的文字弄乱了。 设立文字命名空间的方法很简单，假设我们要加入zack_theme作为Text Domain，只要在functions.php的开头加入以下程式码： load_theme_textdomain(&#8216;zack_theme&#8217;); 我在之前的文章里提过，要使用__()或_e()来标示需要翻译的文字，加入了Text Domain之后，有一点小变化： __($text, $domain)：原本只需填入$text作为参数，现在要把Text Domain也加入作为第二参数。 _e($text, $domain)：同上。 这样WordPress知道文字是需于哪个Domain的，就能快速地找到相应翻译。 带参数的文字翻译 这种情况，我有稍微讲过，再来看一个例子，强化一下： title="Permanent Link to &#60;?php the_title(); ?&#62;" 这个例子应该不陌生吧，这是标题连结的title设定，很明显"Permanent Link to"需要翻译，很多人第一反应就会想到这样做： &#60;?php _e('Permanent Link to', 'zack_theme') ?&#62; &#60;?php the_title(); &#8230; <a href="http://cn.zacklive.com/advanced-wordpress-themes-translation/106/">继续阅读 <span class="meta-nav">&#62;&#62;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/wordpress1.jpg"><img class="aligncenter size-full wp-image-69" title="wordpress" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/wordpress1.jpg" alt="wordpress1 进阶WordPress主题翻译技巧" width="490" height="200" /></a></p>
<p>本文属于WordPress主题翻译教学系列，文章列表：</p>
<ol>
<li><a title="设计国际化的主题: WordPress主题翻译教学" href="http://cn.zacklive.com/design-international-wordpress-theme-translation-tutorial/98/">设计国际化的主题: WordPress主题翻译教学</a></li>
<li><a title="如何翻译WordPress主题" href="http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/">如何翻译WordPress主题</a></li>
<li><a title="进阶WordPress主题翻译技巧" href="http://cn.zacklive.com/advanced-wordpress-themes-translation/106/">进阶WordPress主题翻译技巧</a></li>
</ol>
<p>继昨天的<a title="如何翻译WordPress主题" href="http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/">如何翻译WordPress主题</a>之后，我又参考了一些文章，觉得有必要再补充一些东西，整个WordPress主题翻译教学系列才算完整。今天要讲的主要是一些设计主题时要注意的地方，以使翻译可以更完美。</p>
<h2>设立文字命名空间(Text Domain)</h2>
<p>文字命名空间(Text Domain)是为了避免本主题的翻译文字和其他主题或WordPress本身的文字发生冲突而设立的，它的意思就像一个文件夹，将本主题的文字都放在里面，需要这个主题的文字时，WordPress就会直接来到这里找，这样就不怕跟其他主题的文字弄乱了。</p>
<p>设立文字命名空间的方法很简单，假设我们要加入zack_theme作为Text Domain，只要在functions.php的开头加入以下程式码：</p>
<blockquote><p>load_theme_textdomain(&#8216;zack_theme&#8217;);</p></blockquote>
<p>我在<a title="WordPress主题翻译" href="http://cn.zacklive.com/design-international-wordpress-theme-translation-tutorial/98/">之前的文章</a>里提过，要使用__()或_e()来标示需要翻译的文字，加入了Text Domain之后，有一点小变化：</p>
<ol>
<li>__($text, $domain)：原本只需填入$text作为参数，现在要把Text Domain也加入作为第二参数。</li>
<li>_e($text, $domain)：同上。</li>
</ol>
<p>这样WordPress知道文字是需于哪个Domain的，就能快速地找到相应翻译。</p>
<h2><span id="more-106"></span>带参数的文字翻译</h2>
<p>这种情况，我有稍微讲过，再来看一个例子，强化一下：</p>
<blockquote>
<pre>title="Permanent Link to &lt;?php the_title(); ?&gt;"</pre>
</blockquote>
<pre>这个例子应该不陌生吧，这是标题连结的title设定，很明显"Permanent Link to"需要翻译，很多人第一反应就会想到这样做：</pre>
<blockquote>
<pre>
<pre>&lt;?php _e('Permanent Link to', 'zack_theme') ?&gt; &lt;?php the_title(); ?&gt;</pre>
</pre>
</blockquote>
<pre>这样做的问题是，只翻译"Permanent Link to"，在其他语言中，句子未必通顺，甚至不成立。例如，以中文来讲，我会希望这句翻译出来的结果是："第一篇文章的永久连结"，就是把"Permanent Link to"放在了标题的后面，顺序完全相反了。所以这句话我们要把整句抽出来翻译：</pre>
<blockquote>
<pre>
<pre>&lt;?php printf(__('Permanent Link to %s', 'zack_theme'), get_the_title())?&gt;</pre>
</pre>
</blockquote>
<pre>现在我们用printf()来完成这个输出，这样做就能把标题插入到%s这个位置上。中文翻译时就是："%s的永久连结"。出来的结果就是我上面希望的样子。把the_title()改为get_the_title()是因为，<strong>the_title()会把文字直接输出到网页</strong>，而<strong>get_the_title()则把文字返回给程式使用</strong>。情况跟_e()和__()一模一样。</pre>
<h2>日期与时间的翻译</h2>
<p>日期跟时间的翻译有够烦的，单是中文（2010年01月22日）跟英文(22/01/2010)就已经差很多了。不过，WordPress使用PHP的<a title="php date" href="http://www.php.net/manual/en/function.date.php">Date()</a>方法来处理日期与时间，因此我们可以直接使用PHP Date()的格式来翻译，就算在要翻译的文字未出现的格式代号也可以使用，例如：</p>
<blockquote><p>&lt;?php the_time(__(&#8216;l, j F Y&#8217;, &#8216;zack_theme&#8217;)) ?&gt;</p></blockquote>
<p>跟据原文，我们只要翻译&#8217;l,j F Y&#8217;，但其实我们可以翻译成&#8217;Y年n月j日&#8217;；这样就可以得到年月日的格式了。如果你不太清楚Y,n,j，这些各代表什么或是想知道其他的代号，可以查看<a title="php date" href="http://www.php.net/manual/en/function.date.php">PHP Date()的说明</a>。</p>
<h2>翻译的文字顺序</h2>
<p>这种情况出现在要翻译句子中有两个参数的时候：</p>
<blockquote><p>Hi, I am %s, Welcome to %s</p></blockquote>
<p>这句话的完整版是：Hi, I am Zack, Welcome to ZackLive，其中ZackLive是网志名称。这在中文跟英文都似乎很通顺，但在其他语言却可能会要把两个%s调换位置，两个都是%s，怎么区别？我们可以这样做：</p>
<blockquote><p>Hi, I am %1$s, Welcome to %2$s</p></blockquote>
<p>如此更改后，我们就能任意的调整位置了。</p>
<h2>JavaScript中的文字翻译</h2>
<p>要翻译JavaScript中的文字并不如想像中那么难，只是有点烦。我们可以把所文JavaScript中的文字改为变量，并对变量进行翻译。请看以下例子：</p>
<blockquote>
<pre>function show_msg ()
{
  alert('This is You message');
}</pre>
</blockquote>
<pre>我们先将这里改为：</pre>
<blockquote>
<pre>
<pre>function show_msg ()
{
  alert(your_msg);
}</pre>
</pre>
</blockquote>
<pre>然后在HTML头部，也就是&lt;head&gt;与&lt;/head&gt;之间，加入：</pre>
<blockquote>
<pre>
<pre>&lt;script type="text/javascript" charset="utf-8"&gt;
  var your_msg = '&lt;?php _e('This is your message', 'zack_theme'); ?&gt;';
&lt;/script&gt;</pre>
</pre>
</blockquote>
<h2>翻译中单复数的处理</h2>
<p>关于这一部分，我也还未完全弄明白，只是把我所知道的，跟大家分享一下，若你有更深入的见解，欢迎指教。我们要看的例子是显示留言数：</p>
<blockquote>
<pre>&lt;?php comments_popup_link('No Comments &amp;#187;',
                          '1 Comment &amp;#187;',
                          '% Comments &amp;#187;'); ?&gt;</pre>
</blockquote>
<p>这里考虑了英文中的三种情况：没有回覆，一个回覆跟多个回覆。而中文则是这三种情况的翻译都一样。但是在其他语言，两个回覆跟三个回覆的写法，都不一样，据说__ngettext()能解决这个问题。先来看__ngettext()的用法：</p>
<blockquote>
<pre>&lt;?php __ngettext($single, $plural, $number, $domain); ?&gt;</pre>
</blockquote>
<pre>__ngettext有四个参数，其中$domain就是Text Domain，另外三个分别是：</pre>
<ol>
<li>$single：当$number等于1时，使用这个翻译；</li>
<li>$plural：当$number大于1时，使用这个翻译；</li>
<li>$number：具体的数目。</li>
</ol>
<p>我在网上看到的解决方法是这样的：</p>
<blockquote>
<pre>&lt;?php comments_popup_link(__('No Comments &amp;#187;', 'kubrick'),
                          __('1 Comment &amp;#187;', 'kubrick'),
                          __ngettext('% comment', '% comments',
                                      get_comments_number (),
                                      'kubrick')); ?&gt;</pre>
</blockquote>
<p>没有回覆跟一个回覆是正常的做法，多个回覆那边，我也不太能够理解，有哪位高手可以详细讲解一下吗？</p>
<h2>数字与货币的翻译</h2>
<p>数字与货币要注意的是要将数字与货币符号整个标示以供翻译，数字格式可使用<a title="php number format" href="http://php.net/manual/en/function.number-format.php">number_format()</a>来处理。</p>
<h2>总结</h2>
<p>研究下来才知道光是翻译主题就要考虑这么多东西，设计主题时，要注意的地方又增加了不少。我想，我们没有办法考虑到所有语言的情况，只能够通过用户的反馈，不断地改进。</p>
<p>[参考：<a title="wordpress theme localization and translation" href="http://urbangiraffe.com/articles/localizing-wordpress-themes-and-plugins/">Urban Giraffe</a>]</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li><a href="http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/" title="如何翻译WordPress主题">如何翻译WordPress主题</a></li><li><a href="http://cn.zacklive.com/design-international-wordpress-theme-translation-tutorial/98/" title="设计国际化的主题: WordPress主题翻译教学">设计国际化的主题: WordPress主题翻译教学</a></li><li><a href="http://cn.zacklive.com/wordpress-language-settings/116/" title="WordPress的语言设定">WordPress的语言设定</a></li><li><a href="http://cn.zacklive.com/install-kohana-3-php-framework-2/162/" title="安装Kohana 3 PHP 框架">安装Kohana 3 PHP 框架</a></li><li><a href="http://cn.zacklive.com/object-oriented-programming-php-mysql/149/" title="面向对象PHP教学：MySQL数据库应用">面向对象PHP教学：MySQL数据库应用</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://cn.zacklive.com/advanced-wordpress-themes-translation/106/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>如何翻译WordPress主题</title>
		<link>http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/</link>
		<comments>http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 07:11:03 +0000</pubDate>
		<dc:creator>Zack</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress主题]]></category>
		<category><![CDATA[poEdit]]></category>
		<category><![CDATA[WordPress专题]]></category>
		<category><![CDATA[主题]]></category>
		<category><![CDATA[国际化]]></category>
		<category><![CDATA[翻译]]></category>

		<guid isPermaLink="false">http://cn.zacklive.com/?p=102</guid>
		<description><![CDATA[上一篇，我们讨论了如何让你的WordPress主题可被翻译成其他语言，今天我讲一下，具体如何去翻译WordPress主题。 同样地，先介绍一些基本概念。需要翻译的文字会储存在.PO文件中，而翻译完成的版本会储存为.MO文件里。这两个文件的命名有一定的规则：语言代码_国家或地区代码。如果不是使用UTF-8编码，还要加上所用编码格式，请看以下例子： en_US &#8211; 美国英语 en_UK &#8211; 英国英语 fr_FR &#8211; 法文 zh_CN &#8211; 中文（简体） zh_TW &#8211; 繁体中文（台湾） ja_JP.EUC-JP.mo &#8211; 采用EUC-JP编码的日文 有些主题会提供.PO文件以供翻译，没有也没关系我们可以用poEdit生成。poEdit就是翻译.PO文件专用的软件，免费提供下载，支持Windows, Mac跟Linux平台，图形介面，使用起来十分方便。 第一次运行poEdit会要求你选择你的语言： 然后会提示你输入你的名字跟E-mail，这会用作翻译文件的作者资料。 按下[OK]后就会进入poEdit的主介面，我们就在这里进行翻译工作。首先，我们要先建立一个新的翻译专案，请点左上角的[档案]&#8211;&#62;[新增编目档]： 接下来会看到，专案设定的画面，在这里填入专案的详细资料。要注意，[语言]项请填入翻译的目标语言；WordPress的字元集全都是&#8221;utf-8&#8243;；复数形式我们可以暂时不填。 填完之后，切换到中间的[路径]页面，这里填入要翻译的主题的所在位置，填入文件夹的路径即可。一共要填两次，除了[基础路径]，按下[新增]，中间会出现空格，这里也要填一次： 再切到最后的[关键字]页面，这里要填入翻译文字的标示符，就是我们上一篇讲的那三个： __ _e __ngettext:1,2 按[新增]后，分别输入这三个，一行一个，一共按三次[新增]。关于最后的[__ngettext:1,2]，是用于处理单复数的问题，但目前我都还未用上过，我的理解，这里的[1,2]是指单复数要分开来翻译。除非你的主题确实有用到[__ngettext:1,2]，不然你也可以不输入。 按下[OK]后，会提示你储存.PO文件，通常会把文件储存在主题文件夹里的[languages]文件夹里。注意，文件要按上面说的规则来命名，即简体中文用：zh_CN.po作为文件名，繁体用：zh_TW.po。储存之后，poEdit会自动找出所有需要翻译的文字，按下[OK]后就可以开始翻译： 以下就是翻译介面，按一下列表中的原文，中间会显示等待翻译的原文，你就可以在最下面的方框里输入译文： 在这里你会发现一些奇怪的东西像：&#38;#58;或是%s之类。如果你不确定这是什么，你可以看一下原文到底在哪里，poEdit可以帮你找到它们。先在原文列表中选中你要查询的文字，然后选[编辑]&#8211;&#62;显示[参考位置]，在弹出的窗口按下[OK]，poEdit就会带你到原文件，并把文字所在的那行高亮显示： 现在你就知道&#38;#58;其实就是冒号。另外，%s是程式输出的资料。这些都不需要改动，只要放在合适的位置上就可以。 翻译完成之后，按下[档案]&#8211;&#62;[储存]，poEdit就会自动帮我们生成一个.MO文件，以供程式(WordPress)使用。到这里翻译就完成了。如果你是帮其他设计师的主题做翻译，记得把你翻译的.PO文件和.MO文件传给主题设计师，让他把你的作品加入到主题中。 若有错漏，欢迎指正。 Related Posts进阶WordPress主题翻译技巧设计国际化的主题: &#8230; <a href="http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/">继续阅读 <span class="meta-nav">&#62;&#62;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/wordpress-translation.jpg"><img class="aligncenter size-full wp-image-44" title="wordpress-translation" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/wordpress-translation.jpg" alt="wordpress translation 如何翻译WordPress主题" width="550" height="250" /></a></p>
<p><a title="设计国际化的主题: WordPress主题翻译教学" href="http://cn.zacklive.com/design-international-wordpress-theme-translation-tutorial/98/">上一篇</a>，我们讨论了如何让你的WordPress主题可被翻译成其他语言，今天我讲一下，具体如何去翻译WordPress主题。</p>
<p>同样地，先介绍一些基本概念。需要翻译的文字会储存在<strong>.PO</strong>文件中，而翻译完成的版本会储存为<strong>.MO</strong>文件里。这两个文件的命名有一定的规则：语言代码_国家或地区代码。如果不是使用UTF-8编码，还要加上所用编码格式，请看以下例子：</p>
<ul>
<li>en_US &#8211; 美国英语</li>
<li>en_UK &#8211; 英国英语</li>
<li>fr_FR &#8211; 法文</li>
<li>zh_CN &#8211; 中文（简体）</li>
<li>zh_TW &#8211; 繁体中文（台湾）</li>
<li>ja_JP.EUC-JP.mo &#8211; 采用EUC-JP编码的日文</li>
</ul>
<p>有些主题会提供.PO文件以供翻译，没有也没关系我们可以用<a title="poedit" href="http://www.poedit.net/">poEdit</a>生成。poEdit就是翻译.PO文件专用的软件，免费提供下载，支持Windows, Mac跟Linux平台，图形介面，使用起来十分方便。</p>
<p><span id="more-102"></span>第一次运行poEdit会要求你选择你的语言：</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation.jpg"><img class="aligncenter size-full wp-image-50" title="poedit-theme-translation" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation.jpg" alt="poedit theme translation 如何翻译WordPress主题" width="338" height="334" /></a></p>
<p>然后会提示你输入你的名字跟E-mail，这会用作翻译文件的作者资料。</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-name.jpg"><img class="aligncenter size-full wp-image-51" title="poedit-theme-translation-name" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-name.jpg" alt="poedit theme translation name 如何翻译WordPress主题" width="336" height="527" /></a></p>
<p>按下[OK]后就会进入poEdit的主介面，我们就在这里进行翻译工作。首先，我们要先建立一个新的翻译专案，请点左上角的[档案]&#8211;&gt;[新增编目档]：</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-new.jpg"><img class="aligncenter size-full wp-image-52" title="poedit-theme-translation-new" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-new.jpg" alt="poedit theme translation new 如何翻译WordPress主题" width="383" height="307" /></a></p>
<p>接下来会看到，专案设定的画面，在这里填入专案的详细资料。要注意，[语言]项请填入翻译的<strong>目标</strong>语言；WordPress的字元集全都是&#8221;utf-8&#8243;；复数形式我们可以暂时不填。</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-project.jpg"><img class="aligncenter size-full wp-image-53" title="poedit-theme-translation-project" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-project.jpg" alt="poedit theme translation project 如何翻译WordPress主题" width="357" height="344" /></a></p>
<p>填完之后，切换到中间的[路径]页面，这里填入要翻译的主题的所在位置，填入文件夹的路径即可。一共要填两次，除了[基础路径]，按下[新增]，中间会出现空格，这里也要填一次：</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-path1.jpg"><img class="aligncenter size-full wp-image-55" title="poedit-theme-translation-path" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-path1.jpg" alt="poedit theme translation path1 如何翻译WordPress主题" width="357" height="344" /></a></p>
<p>再切到最后的[关键字]页面，这里要填入翻译文字的标示符，就是我们<a title="设计国际化的主题: WordPress主题翻译教学" href="http://cn.zacklive.com/design-international-wordpress-theme-translation-tutorial/98/">上一篇</a>讲的那三个：</p>
<ol>
<li>__</li>
<li>_e</li>
<li>__ngettext:1,2</li>
</ol>
<p>按[新增]后，分别输入这三个，一行一个，一共按三次[新增]。关于最后的[__ngettext:1,2]，是用于处理单复数的问题，但目前我都还未用上过，我的理解，这里的[1,2]是指单复数要分开来翻译。除非你的主题确实有用到[__ngettext:1,2]，不然你也可以不输入。</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-tag.jpg"><img class="aligncenter size-full wp-image-56" title="poedit-theme-translation-tag" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-tag.jpg" alt="poedit theme translation tag 如何翻译WordPress主题" width="357" height="344" /></a></p>
<p>按下[OK]后，会提示你储存.PO文件，通常会把文件储存在主题文件夹里的[languages]文件夹里。注意，文件要按上面说的规则来命名，即简体中文用：zh_CN.po作为文件名，繁体用：zh_TW.po。储存之后，poEdit会自动找出所有需要翻译的文字，按下[OK]后就可以开始翻译：</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-text.jpg"><img class="aligncenter size-full wp-image-57" title="poedit-theme-translation-text" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-text.jpg" alt="poedit theme translation text 如何翻译WordPress主题" width="427" height="325" /></a></p>
<p>以下就是翻译介面，按一下列表中的原文，中间会显示等待翻译的原文，你就可以在最下面的方框里输入译文：</p>
<p><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-edit1.jpg"><img class="aligncenter size-full wp-image-59" title="poedit-theme-translation-edit" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-edit1.jpg" alt="poedit theme translation edit1 如何翻译WordPress主题" width="788" height="581" /></a></p>
<p style="text-align: left;">在这里你会发现一些奇怪的东西像：&amp;#58;或是%s之类。如果你不确定这是什么，你可以看一下原文到底在哪里，poEdit可以帮你找到它们。先在原文列表中选中你要查询的文字，然后选[编辑]&#8211;&gt;显示[参考位置]，在弹出的窗口按下[OK]，poEdit就会带你到原文件，并把文字所在的那行高亮显示：</p>
<p style="text-align: left;"><a href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-refer.jpg"><img class="aligncenter size-full wp-image-60" title="poedit-theme-translation-refer" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-refer.jpg" alt="poedit theme translation refer 如何翻译WordPress主题" width="608" height="404" /></a></p>
<p style="text-align: left;">现在你就知道&amp;#58;其实就是冒号。另外，%s是程式输出的资料。这些都不需要改动，只要放在合适的位置上就可以。</p>
<p style="text-align: left;">翻译完成之后，按下[档案]&#8211;&gt;[储存]，poEdit就会自动帮我们生成一个.MO文件，以供程式(WordPress)使用。到这里翻译就完成了。如果你是帮其他设计师的主题做翻译，记得把你翻译的.PO文件和.MO文件传给主题设计师，让他把你的作品加入到主题中。</p>
<p style="text-align: left;"><a style="text-decoration: none;" href="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-mo1.jpg"><img class="aligncenter size-full wp-image-63" title="poedit-theme-translation-mo" src="http://chinese.zacklive.com/wp-content/uploads/2010/01/poedit-theme-translation-mo1.jpg" alt="poedit theme translation mo1 如何翻译WordPress主题" width="429" height="67" /></a></p>
<p style="text-align: left;">若有错漏，欢迎指正。</p>
<h3  class="related_post_title">Related Posts</h3><ul class="related_post"><li><a href="http://cn.zacklive.com/advanced-wordpress-themes-translation/106/" title="进阶WordPress主题翻译技巧">进阶WordPress主题翻译技巧</a></li><li><a href="http://cn.zacklive.com/design-international-wordpress-theme-translation-tutorial/98/" title="设计国际化的主题: WordPress主题翻译教学">设计国际化的主题: WordPress主题翻译教学</a></li><li><a href="http://cn.zacklive.com/wordpress-language-settings/116/" title="WordPress的语言设定">WordPress的语言设定</a></li><li><a href="http://cn.zacklive.com/details-jquery-wordpress-drop-down-menu/126/" title="讲解：使用JQuery实现WordPress多层下拉导航">讲解：使用JQuery实现WordPress多层下拉导航</a></li><li><a href="http://cn.zacklive.com/jquery-milti-level-drop-down-menu-wordpress/122/" title="使用JQuery实现WordPress多层下拉导航">使用JQuery实现WordPress多层下拉导航</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://cn.zacklive.com/poedit-how-to-translate-wordpress-theme/102/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
