<?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; php gettext</title>
	<atom:link href="http://www.blags.org/tags/php-gettext/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.blags.org</link>
	<description>专注lamp的技术博客</description>
	<lastBuildDate>Sat, 05 Nov 2011 02:25:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		
<!-- Start Of Script Generated By WP-PostViews Plus -->
<script type='text/javascript' src='http://www.blags.org/wp-includes/js/jquery/jquery.js?ver=1.3.2'></script>
<script type="text/javascript">
/* <![CDATA[ */
jQuery.ajax({type:'GET',url:'http://www.blags.org/wp-content/plugins/wp-postviews-plus/postviews_plus.php',data:'todowppvp=add&type=tag&id=171_1',cache:false,dataType:'script'});
/* ]]> */
</script>
<!-- End Of Script Generated By WP-PostViews Plus -->
	<item>
		<title>php+gettext多多语言的探讨</title>
		<link>http://www.blags.org/php_gettext_multi_languag/</link>
		<comments>http://www.blags.org/php_gettext_multi_languag/#comments</comments>
		<pubDate>Tue, 18 May 2010 14:40:20 +0000</pubDate>
		<dc:creator>huzhi</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[echo]]></category>
		<category><![CDATA[php gettext]]></category>
		<category><![CDATA[print]]></category>
		<category><![CDATA[print_r]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=608</guid>
		<description><![CDATA[
Web程序中使用php-gettext做多语言的探讨
一直在开发LAP电子商城系统，很多国内客户做外贸生意，不仅需要中英文，还通常要翻译成德文;研究了下php-gettext做多语言方案。写出来和大家分享下。
1,php-gettext的安装
1.1 gettext扩展在php5.2默认是开启的。
1.2 如果没开启，windows用户印象中是在php.ini开启php_gettext.dll扩展。
1.3 ubuntu系统中安装扩展很方便。sudo apt-get install php-gettext
1.4 如果服务器(如centos)是自己编译安装的。如果编译的时候没有&#8211;with-gettext.需要phpize编译安装gettext
进入php源码包，如 cd /usr/local/src/php/ext/gettext
phpize //运行后此目录下多出了一些configure文件
make
make install
按提示。将生成的gettext.so文件写入到php.ini中。如 extension=gettext.so;
重启 /etc/init.d/apache restart
2,php-gettext的使用.以一个具体的例子说明
如果debian系列的linux用户，注意查看本地语言支持。 vim /usr/share/i18n/SUPPORTED
中文:zh_CN.UTF-8
英文:en_US.UTF-8
德文:de_DE.UTF-8
法文:fr_FR.UTF-8
如果没有，则相应的安装之。方法:sudo apt-get locale-gen zh_CN.UTF-8
在php程序中,可以使用gettext()来标记需要翻译的语言包,gettext()函数常用_()代替;
2.1 建立文件目录
mkdir gettext
cd gettext
touch Locale.php
touch test.php
//中文mo文件的地方.
mkdir -p Locale/zh_CN/LC_MESSAGES
//英文文mo文件的地方.
mkdir -p Locale/en_US/LC_MESSAGES
2.2 Locale.php文件代码

View Code PHP&#60;?php
/**
* Dh_Locale 语言包类
*
* 系统语言包采用的是php-gettext模块.
* 如果模板使用的是smarty.使用了smarty-gettext插件.插件地址http://sourceforge.net/projects/smarty-gettext/
*  php-gettext的安装和使用(ubuntu平台下)
*  1 Installation of gettext package: sudo apt-get install php-gettext
*  2 Install locales: see all locales <a href="http://www.blags.org/php_gettext_multi_languag/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<div>
<div style="padding-left: 30px;">Web程序中使用php-gettext做多语言的探讨</div>
<div style="padding-left: 30px;">一直在开发LAP电子商城系统，很多国内客户做外贸生意，不仅需要中英文，还通常要翻译成德文;研究了下php-gettext做多语言方案。写出来和大家分享下。</div>
<div style="padding-left: 30px;">1,php-gettext的安装</div>
<div style="padding-left: 30px;">1.1 gettext扩展在php5.2默认是开启的。</div>
<div style="padding-left: 30px;">1.2 如果没开启，windows用户印象中是在php.ini开启php_gettext.dll扩展。</div>
<div style="padding-left: 30px;">1.3 <a href="http://www.blags.org/tags/ubuntu/"title="ubuntu" >ubuntu</a>系统中安装扩展很方便。sudo apt-get install php-gettext</div>
<div style="padding-left: 30px;">1.4 如果服务器(如<a href="http://www.blags.org/tags/centos/"title="centos 系统" >centos</a>)是自己编译安装的。如果编译的时候没有&#8211;with-gettext.需要phpize编译安装gettext</div>
<div style="padding-left: 30px;">进入php源码包，如 cd /usr/local/src/php/ext/gettext</div>
<div style="padding-left: 30px;">phpize //运行后此目录下多出了一些configure文件</div>
<div style="padding-left: 30px;">make</div>
<div style="padding-left: 30px;">make install</div>
<div style="padding-left: 30px;">按提示。将生成的gettext.so文件写入到php.ini中。如 extension=gettext.so;</div>
<div style="padding-left: 30px;">重启 /etc/init.d/apache restart</div>
<div style="padding-left: 30px;">2,php-gettext的使用.以一个具体的例子说明</div>
<div style="padding-left: 30px;">如果debian系列的<a href="http://www.blags.org/tags/linux/"target="_self"title="linux" >linux</a>用户，注意查看本地语言支持。 <a href="http://www.blags.org/tags/vim/"title="vim" >vim</a> /usr/share/i18n/SUPPORTED</div>
<div style="padding-left: 30px;">中文:zh_CN.UTF-8</div>
<div style="padding-left: 30px;">英文:en_US.UTF-8</div>
<div style="padding-left: 30px;">德文:de_DE.UTF-8</div>
<div style="padding-left: 30px;">法文:fr_FR.UTF-8</div>
<div style="padding-left: 30px;">如果没有，则相应的安装之。方法:sudo apt-get locale-gen zh_CN.UTF-8</div>
<div style="padding-left: 30px;">在php程序中,可以使用gettext()来标记需要翻译的语言包,gettext()函数常用_()代替;</div>
<div style="padding-left: 30px;">2.1 建立文件目录</div>
<div style="padding-left: 30px;">mkdir gettext</div>
<div style="padding-left: 30px;">cd gettext</div>
<div style="padding-left: 30px;">touch Locale.php</div>
<div style="padding-left: 30px;">touch test.php</div>
<div style="padding-left: 30px;">//中文mo文件的地方.</div>
<div style="padding-left: 30px;">mkdir -p Locale/zh_CN/LC_MESSAGES</div>
<div style="padding-left: 30px;">//英文文mo文件的地方.</div>
<div style="padding-left: 30px;">mkdir -p Locale/en_US/LC_MESSAGES</div>
<div style="padding-left: 30px;">2.2 Locale.php文件代码</div>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p608code4'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6084"><td class="code" id="p608code4"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
* Dh_Locale 语言包类
*
* 系统语言包采用的是php-gettext模块.
* 如果模板使用的是smarty.使用了smarty-gettext插件.插件地址http://sourceforge.net/projects/smarty-gettext/
*  php-gettext的安装和使用(ubuntu平台下)
*  1 Installation of gettext package: sudo apt-get install php-gettext
*  2 Install locales: see all locales in the file vim /usr/share/i18n/SUPPORTED
*  3 设置文件目录结构;如: Locale/zh_CN/LC_MESSAGES 或者 Locale/en_US/LC_MESSAGES
*  4 如果是smarty模板(使用{t}你好{/t}标记)。生成.c格式的文件;如:php -q tsmarty2c.php  $file &gt; text.c
*  5 生成.po格式的文件;xgettext -o Dh.po –join-existing –omit-header –no-location text.c
*  6 生成.mo格式的文件;msgfmt Dh.po -o Dh.mo
*  7 移动mo文件到相应的Locale/en_US/LC_MESSAGES文件夹下面
&lt;code&gt;
*
* @package
* @version $id$
* @copyright 1997-2005 The PHP Group
* @author erhuok &lt;erhu.ok@gmail.com&gt;
* @license PHP Version 3.0 {@link http://www.php.net/license/3_0.txt}
*/</span>
<span style="color: #000000; font-weight: bold;">class</span> Dh_Locale <span style="color: #009900;">&#123;</span>
<span style="color: #009933; font-style: italic;">/**
* _options 设置语言包的选项
*
* $this-&gt;_options['lang'] 应用程序使用什么语言包.php-gettext支持的所有语言都可以.
* 在ubuntu下使用sudo vim /usr/share/i18n/SUPPORTED 主要是utf8编码
* $this-&gt;_options['domain'] 生成的.mo文件的名字.一般是应用程序名
*
* @var array
* @access protected
*/</span>
<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000088;">$_options</span><span style="color: #339933;">;</span>
<span style="color: #009933; font-style: italic;">/**
* __construct 构造函数 对象初始化时设置语言包的参数
*
* @access public
* @return void
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$lang</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">switch</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$lang</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">case</span> ‘cn’<span style="color: #339933;">:</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>‘lang’ <span style="color: #339933;">=&gt;</span> ‘zh_CN<span style="color: #339933;">.</span>utf8′<span style="color: #339933;">,</span>’domain’<span style="color: #339933;">=&gt;</span>’Dh’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">case</span> ‘en’<span style="color: #339933;">:</span>
<span style="color: #b1b100;">case</span> ‘us’<span style="color: #339933;">:</span>
<span style="color: #b1b100;">case</span> ‘eu’<span style="color: #339933;">:</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>‘lang’ <span style="color: #339933;">=&gt;</span> ‘en_US<span style="color: #339933;">.</span>utf8′<span style="color: #339933;">,</span>’domain’<span style="color: #339933;">=&gt;</span>’Dh’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">case</span> ‘de’<span style="color: #339933;">:</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>‘lang’ <span style="color: #339933;">=&gt;</span> ‘de_DE<span style="color: #339933;">.</span>utf8′<span style="color: #339933;">,</span>’domain’<span style="color: #339933;">=&gt;</span>’Dh’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">case</span> ‘fr’<span style="color: #339933;">:</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>‘lang’ <span style="color: #339933;">=&gt;</span> ‘fr_FR<span style="color: #339933;">.</span>utf8′<span style="color: #339933;">,</span>’domain’<span style="color: #339933;">=&gt;</span>’Dh’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span>‘lang’ <span style="color: #339933;">=&gt;</span> ‘zh_CN<span style="color: #339933;">.</span>utf8′<span style="color: #339933;">,</span>’domain’<span style="color: #339933;">=&gt;</span>’Dh’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setApplicationLocale</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009933; font-style: italic;">/**
* setOptions 设置应用程序语言包的参数 放在在数组$this-&gt;_options中
*
* @param mixed $options
* @access public
* @return void
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setOptions<span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/empty"><span style="color: #990000;">empty</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$options</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$option</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options<span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$option</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009933; font-style: italic;">/**
* setApplicationLocale  设置应用程序语言包
*
* @access public
* @return void
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setApplicationLocale<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<a href="http://www.php.net/putenv"><span style="color: #990000;">putenv</span></a><span style="color: #009900;">&#40;</span>‘LANG<span style="color: #339933;">=</span>’<span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'lang'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.php.net/setlocale"><span style="color: #990000;">setlocale</span></a><span style="color: #009900;">&#40;</span>LC_ALL<span style="color: #339933;">,</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'lang'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.php.net/bindtextdomain"><span style="color: #990000;">bindtextdomain</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'domain'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span><a href="http://www.php.net/dirname"><span style="color: #990000;">dirname</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>’<span style="color: #339933;">/</span>Locale<span style="color: #339933;">/</span>’<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.php.net/textdomain"><span style="color: #990000;">textdomain</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'domain'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.php.net/bind_textdomain_codeset"><span style="color: #990000;">bind_textdomain_codeset</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span>_options<span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'domain'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span>’UTF<span style="color: #339933;">-</span><span style="color: #cc66cc;">8</span>′<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<div style="padding-left: 30px;">2.3 测试用例</div>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p608code5'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6085"><td class="code" id="p608code5"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #b1b100;">require_once</span> <a href="http://www.php.net/dirname"><span style="color: #990000;">dirname</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">__FILE__</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span>’<span style="color: #339933;">/</span>Locale<span style="color: #339933;">.</span>php’<span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">//cn or en</span>
<span style="color: #000088;">$Lang</span> <span style="color: #339933;">=</span> ‘cn’<span style="color: #339933;">;</span>
<span style="color: #000088;">$Locale</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Dh_Locale<span style="color: #009900;">&#40;</span><span style="color: #000088;">$Lang</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$Checkout</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'AddressFields'</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a>
<span style="color: #009900;">&#40;</span>
‘Email’ <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a>
<span style="color: #009900;">&#40;</span>
‘Type’ <span style="color: #339933;">=&gt;</span> ‘text’<span style="color: #339933;">,</span>
‘Label’ <span style="color: #339933;">=&gt;</span> _<span style="color: #009900;">&#40;</span>‘邮箱’<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
‘Title’ <span style="color: #339933;">=&gt;</span> _<span style="color: #009900;">&#40;</span>‘请填写邮箱’<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
‘<span style="color: #000000; font-weight: bold;">Class</span>’ <span style="color: #339933;">=&gt;</span> ‘required’<span style="color: #339933;">,</span>
‘Filter’ <span style="color: #339933;">=&gt;</span> ’string’<span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
‘PostCode’ <span style="color: #339933;">=&gt;</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a>
<span style="color: #009900;">&#40;</span>
‘Type’ <span style="color: #339933;">=&gt;</span> ‘text’<span style="color: #339933;">,</span>
‘Label’ <span style="color: #339933;">=&gt;</span> _<span style="color: #009900;">&#40;</span>‘邮政编码’<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
‘Title’ <span style="color: #339933;">=&gt;</span> _<span style="color: #009900;">&#40;</span>‘请填写邮政编码’<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
‘<span style="color: #000000; font-weight: bold;">Class</span>’ <span style="color: #339933;">=&gt;</span> ‘required’<span style="color: #339933;">,</span>
‘Filter’ <span style="color: #339933;">=&gt;</span> ‘int’<span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span>
<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<a href="http://www.php.net/print_r"><span style="color: #990000;">print_r</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$Checkout</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<div style="padding-left: 30px;">如果是smarty模板，需要使用smarty-gettext插件.使用{t}你好{/t}标记.如 &lt;a href=&#8221;http://sourceforge.net/projects/smarty-gettext/&#8221;&gt;{t}点击下载插件{/t}&lt;/a&gt;</div>
<div style="padding-left: 30px;">2.4 生成PO文件</div>
<div style="padding-left: 30px;">如果是PHP文件 xgettext &#8211;from-code UTF-8 -o Dh.po &#8211;join-existing test.php</div>
<div style="padding-left: 30px;">如果是smarty模板,在smarty-gettext插件中，有个tsmarty2c.php文件.</div>
<div style="padding-left: 30px;">cd gettext</div>
<div style="padding-left: 30px;">生成c文件</div>
<div style="padding-left: 30px;">php -q tsmarty2c.php test.tpl &gt; test.c</div>
<div style="padding-left: 30px;">在生成po文件</div>
<div style="padding-left: 30px;">xgettext &#8211;from-code UTF-8 -o Dh.po &#8211;join-existing test.c</div>
<div style="padding-left: 30px;">2.5 生成mo文件</div>
<div style="padding-left: 30px;">msgfmt -o Dh.mo Dh.po</div>
<div style="padding-left: 30px;">将mo文件移动到Locale/en_US/LC_MESSAGES下</div>
<div style="padding-left: 30px;">2.6 调试：localhost/test.php</div>
<div style="padding-left: 30px;">3. 后续思考</div>
<div style="padding-left: 30px;">对于html页面显示层次的语言包翻译，gettext能很方便的完成。但对于写入数据库的数据做多语言。如产品分类名，中文显示中文，英文显示英文。一般做法是多存一个字段，管理员填写分类的时候，填写中英名。当然，也有在数据库用language_id区分,还要新建一张产品名表。</div>
<div style="padding-left: 30px;">如果只填写了一种语言。非要用程序来做处理，也是可以。如</div>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p608code6'); return false;">View Code</a> PHP</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6086"><td class="code" id="p608code6"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
* ToTreeArray 处理无穷层次的函数
*
* @param mixed $rows 数据库查询出来分类数组
* @param mixed $ParentID 父ID如’parent_id’
* @param mixed $ID  类型ID如’type_id’
* @param mixed $Lang 需要翻译字段如’type_name’
* @static
* @access public
* @return array
*/</span>
<span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> ToTreeArray<span style="color: #009900;">&#40;</span><span style="color: #000088;">$rows</span><span style="color: #339933;">,</span><span style="color: #000088;">$ParentID</span><span style="color: #339933;">,</span><span style="color: #000088;">$ID</span><span style="color: #339933;">,</span><span style="color: #000088;">$Lang</span><span style="color: #339933;">=</span><span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span><span style="color: #000088;">$rows</span> <span style="color: #009900;">&#41;</span> <span style="color: #b1b100;">return</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$tree</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$index</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/array"><span style="color: #990000;">array</span></a><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$rows</span> <span style="color: #b1b100;">as</span> <span style="color: #000088;">$row</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$Lang</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>  <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$Lang</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> _<span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$Lang</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #666666; font-style: italic;">//对于分类而言，翻译分类名。</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$ParentID</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">==</span> <span style="color: #cc66cc;">0</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/count"><span style="color: #990000;">count</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$tree</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$tree</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$row</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$index</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$ID</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span> <span style="color: #000088;">$tree</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/count"><span style="color: #990000;">count</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$index</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$ParentID</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Child'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$index</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$ParentID</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Child'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$row</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$index</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$ID</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #339933;">&amp;</span> <span style="color: #000088;">$index</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$ParentID</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'Child'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">return</span> <span style="color: #000088;">$tree</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></td></tr></table></div>

<div style="padding-left: 30px;">此类做法还需探讨</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.blags.org/php_gettext_multi_languag/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

