<?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; huzhi</title>
	<atom:link href="http://www.blags.org/author/huzhi/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=/author/huzhi/feed/&id=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>
		<item>
		<title>centos+zendce+red5+ffmpeg安装配置</title>
		<link>http://www.blags.org/centos_zendce_red5_ffmpeg/</link>
		<comments>http://www.blags.org/centos_zendce_red5_ffmpeg/#comments</comments>
		<pubDate>Sun, 16 May 2010 01:16:51 +0000</pubDate>
		<dc:creator>huzhi</dc:creator>
				<category><![CDATA[Unix&Linux]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[ffmpeg]]></category>
		<category><![CDATA[MYSQL]]></category>
		<category><![CDATA[red5]]></category>
		<category><![CDATA[zendce]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=605</guid>
		<description><![CDATA[本文主要是讲叙在centos服务器下如何快速的搭建AMP环境和流媒体服务器。至于性能测试和调优暂不涉及。
首先假设服务器已经安装了centos系统。推荐一款小软件。nmon for linux 服务器系统监测工具: wget http://sourceforge.net/projects/nmon/files/download/nmon_mainframe_12a_v2.zip/download
第一步，AMP环境采用Zend server 社区班Zend CE。
1.首先你要在建立Zend CE的下载库路径
vi /etc/yum.repos.d/zend.repo
添加的内容如下：

View Code ZEND[Zend]
name=Zend CE $releasever - $basearch - Released Updates
baseurl=http://repos.zend.com/rpm/ce/$basearch/
enabled=1
gpgcheck=0
[Zendce-noarch]
name=Zend CE - noarch
baseurl=http://repos.zend.com/rpm/ce/noarch
enabled=1
gpgcheck=0

2.开始安装如果服务器没有安装svn则需
yum install svn
如果服务器svn版本比较老。可以先删除在从yum安装。
# rpm -qa &#124; grep -i subversion
subversion-1.4.2-2.el5
subversion-1.4.2-2.el5
rpm -evf &#8211;allmatches subversion-1.4.2-2.el5
3.yum install zend-ce
yum clean all//清楚缓存
4.让linux自动加载zend库文件
vim /etc/profile
在最后面添加内容：
PATH=$PATH:/usr/local/zend/bin
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zend/lib
保存退出
source /etc/profile   //生效
zendtpl.sh status //查看Zend server运行状态
zendtpl.sh start  //apache start
zendtpl.sh stop
zendtpl.sh restart  等同于 /etc/init.d/httpd restart 和 service <a href="http://www.blags.org/centos_zendce_red5_ffmpeg/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>本文主要是讲叙在<a href="http://www.blags.org/tags/centos/"title="centos 系统" >centos</a>服务器下如何快速的搭建AMP环境和流媒体服务器。至于性能测试和调优暂不涉及。<br />
首先假设服务器已经安装了centos系统。推荐一款小软件。nmon for <a href="http://www.blags.org/tags/linux/"target="_self"title="linux" >linux</a> 服务器系统监测工具: wget <a href="http://sourceforge.net/projects/nmon/files/download/nmon_mainframe_12a_v2.zip/download">http://sourceforge.net/projects/nmon/files/download/nmon_mainframe_12a_v2.zip/download</a></p>
<p>第一步，AMP环境采用Zend server 社区班Zend CE。<br />
1.首先你要在建立Zend CE的下载库路径<br />
vi /etc/yum.repos.d/zend.repo<br />
添加的内容如下：</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p605code9'); return false;">View Code</a> ZEND</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p6059"><td class="code" id="p605code9"><pre class="zend" style="font-family:monospace;">[Zend]
name=Zend CE $releasever - $basearch - Released Updates
baseurl=http://repos.zend.com/rpm/ce/$basearch/
enabled=1
gpgcheck=0
[Zendce-noarch]
name=Zend CE - noarch
baseurl=http://repos.zend.com/rpm/ce/noarch
enabled=1
gpgcheck=0</pre></td></tr></table></div>

<p>2.开始安装如果服务器没有安装svn则需<br />
yum install svn<br />
如果服务器svn版本比较老。可以先删除在从yum安装。<br />
# rpm -qa | grep -i subversion<br />
subversion-1.4.2-2.el5<br />
subversion-1.4.2-2.el5<br />
rpm -evf &#8211;allmatches subversion-1.4.2-2.el5<br />
3.yum install zend-ce<br />
yum clean all//清楚缓存<br />
4.让linux自动加载zend库文件<br />
<a href="http://www.blags.org/tags/vim/"title="vim" >vim</a> /etc/profile<br />
在最后面添加内容：<br />
PATH=$PATH:/usr/local/zend/bin<br />
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/zend/lib<br />
保存退出<br />
source /etc/profile   //生效<br />
zendtpl.sh status //查看Zend server运行状态<br />
zendtpl.sh start  //apache start<br />
zendtpl.sh stop<br />
zendtpl.sh restart  等同于 /etc/init.d/httpd restart 和 service httpd restart<br />
5.查看80端口是否打开！<br />
这个时候你可以通过netstat -an | grep 端口号来检验下是不是已经打开了某某服务<br />
6 查看zend  server的网页的方法 http://IP(或域名):10081/ZendServer/Login#1263971368039<br />
密码 test<br />
邮箱 test@test.com<br />
7 Zend CE没有安装msyql数据库。需要手动安装msyql。<br />
yum install <a href="http://www.blags.org/tags/mysql/"title="mysql" >mysql</a>-server<br />
yum install mysql<br />
mysqladmin -u root password &#8216;****&#8217; //设置root密码<br />
service mysqld start/stop/restart 开启/停止/重启mysql<br />
8 开启apache mod_rewriete;<br />
vim /etc/httpd/conf/httpd.conf 修改 AllowOverride All (默认为None);<br />
9 主要配置文件<br />
php /usr/local/zend/etc/php.ini<br />
apache /etc/httpd/conf/httpd.conf<br />
mysql /etc/my.conf</p>
<p>第二步， centos下安装red5的安装<br />
1 安装<a href="http://www.blags.org/tags/java/"title="java" >java</a>.red5是用户java语言写的一款开源流媒体服务器。<br />
yum -y install java-1.6.0-openjdk java-1.6.0-openjdk-devel<br />
如果java版本低于1.5.下载新版jdk后安装。<br />
wget http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jdk-6u16-linux-i586-rpm.bin?BundledLineItemUUID=om5IBe.ovo4AAAEkbKsxcJo0&amp;OrderID=BlRIBe.oOxwAAAEkXqsxcJo0&amp;ProductID=Dx1IBe.prBgAAAEirRcTvuC_&amp;FileName=/jdk-6u16-linux-i586-rpm.bink<br />
解压 ./jdk-6u16-linux-i586-rpm.bink<br />
安装 rpm -ivh jdk-6u16-linux-i586-rpm<br />
注意:如果服务器上有两种不同的java版本。需做如下操作：<br />
alternatives &#8211;install /usr/bin/java java /usr/java/jdk1.6.0_16/bin/java 2<br />
再选择版本。<br />
update-alternatives &#8211;config java<br />
2 安装apache-ant<br />
wget http://labs.xiaonei.com/apache-mirror/ant/binaries/apache-ant-1.7.1-bin.tar.gz<br />
tar -xzvf<br />
export ANT_HOME=/usr/local/apache-ant/<br />
sudo ln -s /usr/local/apache-ant/bin/ant /usr/bin/ant<br />
3 安装red5.<br />
从svn仓库中牵出red5的代码。<br />
svn co http://red5.googlecode.com/svn/java/server/trunk red5<br />
如果服务器没有安装svn则需<br />
yum install svn<br />
如果服务器svn版本比较老。可以先删除在从yum安装。<br />
rpm -qa | grep -i subversion<br />
subversion-1.4.2-2.el5<br />
subversion-1.4.2-2.el5<br />
rpm -evf &#8211;allmatches subversion-1.4.2-2.el5<br />
cd /usr/local/red5<br />
/usr/local/apache-ant/bin/ant prepare<br />
/usr/local/apache-ant/bin/ant dist<br />
cd disk<br />
./red.sh //启动red5服务器。常使用不挂断的启动：nohup ./red5.sh &amp;</p>
<p>第三步 <a href="http://www.blags.org/tags/ffmpeg/"title="ffmpeg" >ffmpeg</a>以及ffmpeg-php的安装。<br />
1 编译安装ffmpeg非常麻烦，yum可以方便的安装ffmpeg以及ffmpeg-dev，<br />
vim /etc/yum.repos.d/dag.repo<br />
输入：<br />
[dag]<br />
name=Dag RPM Repository for Red Hat Enterprise Linux<br />
baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag<br />
gpgcheck=1<br />
enabled=1</p>
<p><span style="color: #ff0000;">Mark:以上源现在更新了,正确的如下:</span></p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p605code10'); return false;">View Code</a> YUM</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p60510"><td class="code" id="p605code10"><pre class="yum" style="font-family:monospace;">[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://apt.sw.be/redhat/el5/en/$basearch/dag
gpgcheck=1
enabled=1</pre></td></tr></table></div>

<p>&#8220;el5&#8243; 值得注意。看清楚自己的版本。<span style="color: #ff0000;">cat /etc/redhat-release，否则无法安装.</span></p>
<p>导入Dag的RPM_GPG_KEY,否则提示没有key无法安装<br />
wget http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt<br />
rpm -import RPM-GPG-KEY.dag.txt<br />
安装ffmpeg&amp;ffmpeg-php<br />
yum install ffmpeg ffmpeg-devel<br />
2 ffmpeg-php的安装<br />
wget http://sourceforge.net/projects/ffmpeg-php/files/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2/download<br />
cd 进入php源码目录<br />
tar -xjf ffmpeg-php-0.6.0.tbz2<br />
phpize<br />
./configure &#8211;with-php-config=/usr/local/php/bin/php-config<br />
make<br />
make test<br />
make install<br />
Installing shared extensions:     /usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/<br />
php.ini配置文件里面增加 extensions=/usr/local/php/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg-php.so<br />
重启apache /etc/init.d/httpd retart 。 使用 php -r &#8220;phpinfo();&#8221; 查看ffmpeg-php模块是否安装成功;<br />
安装完毕。欢迎指正。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blags.org/centos_zendce_red5_ffmpeg/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>gvim的配置和使用</title>
		<link>http://www.blags.org/gvimr/</link>
		<comments>http://www.blags.org/gvimr/#comments</comments>
		<pubDate>Fri, 14 May 2010 15:29:34 +0000</pubDate>
		<dc:creator>huzhi</dc:creator>
				<category><![CDATA[开发工具]]></category>
		<category><![CDATA[gvim]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=603</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;我旁边的同事以前隔一个星期就会换一个编辑器，eclipe、zendstudio5.5、6.0、7.0、Aphta、ultredit、netbeans等，几乎所有主流的IDE都使用过了。最终常用的还是gvim。做程序这行，每天看代码、写代码，没有一个快速、方便、强大的编辑器是很头疼的；程序界中流传这样一个说法,编辑器分三种，一个Vim，一个emacs,一个是其他所有的IDE；至于是否是公论，仁者见仁，智者见智，关键是要适合自己。不过，Vim和emacs的确是很优秀的编辑器了；两者之间的战争从来就没有停息过；我记得一个笑话vim说使用emacs恨不得给计算机安装两个脚踏板，一脚踏ctrl,一脚踏alt；呵呵，这只是笑话，因为你在vim里，使用esc或者ctrl+c进入命令模式，按i,a退回编辑模式。而emacs是没有这样的模式的。但emacs更像一个操作系统，可以收发邮件、听歌、读新闻，有人几乎就是login-&#62;emacs-&#62;logout；当然，对于这些争论，比如还有windows vs linux ,gnome vs kde等争论，可以当一下茶余饭后的谈资即可，不必去争论什么，毕竟适合自己的才是最好的。
&#160;&#160;&#160;&#160;&#160;我去年也是老换编辑器，今年一直是使用gvim。gvim是vim的图形界面。不得不承认，相比其他的IDE，vim的入门不是很容易。 但资源占用少，速度快，而且需要什么，自己动手配置，这恰是vim的优点，又是缺点。下面是我的gvim的配置文件。至于怎样入门，常用命令找些资料，花点时间，细心学习是值得的。

View Code SHELL    * &#34;文件编码设置
    * set fileencodings=ucs-bom,utf-8,gbk,default,latin
    * &#34;图形界面字体和颜色设置 字体为Monaco需安装，背景选择自带的morning, 看习惯了就好了
    * if has(&#34;gui_running&#34;)
    * set guifont=Monaco
    * colorscheme morning
    * endif
    * &#34;默认关闭菜单栏和工具条 <a href="http://www.blags.org/gvimr/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我旁边的同事以前隔一个星期就会换一个编辑器，eclipe、zendstudio5.5、6.0、7.0、Aphta、ultredit、netbeans等，几乎所有主流的IDE都使用过了。最终常用的还是g<a href="http://www.blags.org/tags/vim/"title="vim" >vim</a>。做程序这行，每天看代码、写代码，没有一个快速、方便、强大的编辑器是很头疼的；程序界中流传这样一个说法,编辑器分三种，一个Vim，一个emacs,一个是其他所有的IDE；至于是否是公论，仁者见仁，智者见智，关键是要适合自己。不过，Vim和emacs的确是很优秀的编辑器了；两者之间的战争从来就没有停息过；我记得一个笑话vim说使用emacs恨不得给计算机安装两个脚踏板，一脚踏ctrl,一脚踏alt；呵呵，这只是笑话，因为你在vim里，使用esc或者ctrl+c进入命令模式，按i,a退回编辑模式。而emacs是没有这样的模式的。但emacs更像一个操作系统，可以收发邮件、听歌、读新闻，有人几乎就是login-&gt;emacs-&gt;logout；当然，对于这些争论，比如还有windows vs <a href="http://www.blags.org/tags/linux/"target="_self"title="linux" >linux</a> ,gnome vs kde等争论，可以当一下茶余饭后的谈资即可，不必去争论什么，毕竟适合自己的才是最好的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我去年也是老换编辑器，今年一直是使用gvim。gvim是vim的图形界面。不得不承认，相比其他的IDE，vim的入门不是很容易。 但资源占用少，速度快，而且需要什么，自己动手配置，这恰是vim的优点，又是缺点。下面是我的gvim的配置文件。至于怎样入门，常用命令找些资料，花点时间，细心学习是值得的。</p>

<div class="wp_codebox_msgheader wp_codebox_hide"><span class="right"></span><span class="left"><a href="javascript:;" onclick="javascript:showCodeTxt('p603code12'); return false;">View Code</a> SHELL</span><div class="codebox_clear"></div></div><div class="wp_codebox"><table><tr id="p60312"><td class="code" id="p603code12"><pre class="shell" style="font-family:monospace;">    * &quot;文件编码设置
    * set fileencodings=ucs-bom,utf-8,gbk,default,latin
    * &quot;图形界面字体和颜色设置 字体为Monaco需安装，背景选择自带的morning, 看习惯了就好了
    * if has(&quot;gui_running&quot;)
    * set guifont=Monaco
    * colorscheme morning
    * endif
    * &quot;默认关闭菜单栏和工具条 节省空间 按F2切换
    * set guioptions-=m
    * set guioptions-=T
    * map   :if &amp;amp;guioptions =~# 'T'
    * \set guioptions-=T
    * \set guioptions-=m
    * \else
    * \set guioptions+=T
    * \set guioptions+=m
    * \endif
    * &quot;显示行号
    * set nu
    * &quot; 编辑缩进等
    * set expandtab
    * set shiftwidth=2
    * au FileType html,python,vim,javascript setl shiftwidth=2
    * au FileType html,python,vim,javascript setl tabstop=2
    * au FileType java,php setl shiftwidth=4
    * au FileType java,php setl tabstop=4
    * set smarttab
    * set lbr
    * set tw=0
    * &quot;自动缩进
    * set ai
    * &quot; Smart indet
    * set si
    * &quot; c方式缩进
    * set cindent
    * &quot; sets how many lines of history vim has to remember
    * set history=400
    * &quot; 开启鼠标
    * set mouse=a
    * &quot; 最底部命令输入占2行的高度
    * set cmdheight=2
    * &quot; 搜索忽略大小写
    * set incsearch
    * &quot;set magic on
    * set magic
    * &quot; 查找是显示高亮
    * set hlsearch
    * &quot; 通过设置列行数来控制窗口的大小
    * set co=130
    * set lines=100</pre></td></tr></table></div>

<p>这些也是网上查找，但要精简，也是大半年来积累下来的。当然，还要结合几个插件：</p>
<ol>
<li> NerdTree 目录树插件;<a href="http://www.vim.org/scripts/script.php?script_id=1658">http://www.vim.org/scripts/script.php?script_id=1658;</a></li>
<li>TagList 代码跟踪 <a href="http://www.vim.org/scripts/script.php?script_id=273">http://www.vim.org/scripts/script.php?script_id=273;</a></li>
<li>Vcscommand cvs/svn/svk/git版本控制提交 <a href="http://www.vim.org/scripts/script.php?script_id=90">http://www.vim.org/scripts/script.php?script_id=90;</a></li>
</ol>
<p>昨夜好奇心驱使我装<a href="http://www.blags.org/tags/ubuntu/"title="ubuntu" >Ubuntu</a>10.04，不料大半年积累的数据都弄丢了，分错了区又忘了做备份。吃一堑，长一智，这次把配置的过程都记录下来，这次把配置的过程都记录下来做备份，顺便分篇写成日志。希望能共同进步。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.blags.org/gvimr/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ubuntu使用经验分享</title>
		<link>http://www.blags.org/ubuntu-experience-sharing/</link>
		<comments>http://www.blags.org/ubuntu-experience-sharing/#comments</comments>
		<pubDate>Fri, 14 May 2010 15:11:15 +0000</pubDate>
		<dc:creator>huzhi</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://www.blags.org/?p=601</guid>
		<description><![CDATA[&#160;&#160;&#160;&#160;&#160;&#160;我对linux的使用是从ubuntu7.10开始,那时候我对windows也很不熟。既然学习编程，恰好是LAMP,我想，反正都不熟，学个人少的。这期间一直从8.04，8.10，9.04,9.10到最近的10.04。
      这款与天下人共享的操作系统，我的确是喜欢上了。对这款系统赞不绝口的人不是少数。尤其有趣的是一个叫袁萌的老头，各大IT网站都会转载他的博文，开口闭口必谈Ubuntu,而且行文常用括号解释，生怕人不懂。
&#160;&#160;&#160;&#160;&#160;&#160;呵呵，这老头，70来岁，如此痴迷ubuntu，真是可爱。桌面系统使用ubuntu的确不错，虽然易用，游戏方面不如windows，然开放分享的精神可嘉。而且，做LAMP这行，不用LINUX，说不过去。
&#160;&#160;&#160;&#160;&#160;&#160;上次我问金浩，你们金山的linux服务器是什么版本。他答ubuntu server 8.04 。呵呵，我还真不信，毕竟大多数都用 centos(和redhat一样，更自由，支持yum）；我说为什么选择它，他答，简单，就那么几条命令。维基百科也是采用ubuntu8.04。最近从9.10直接更新到了10.04,出现了一点小问题。主要是显示亮度和Flash乱码.比起以往繁琐的配置，这次安装没有什么配置了。积累了一些使用经验，上次老师要我写一份ubuntu文档，一直没有写，这次补上，和大家分享。

源列表：我是电信用户，一直用163的源，还不错。
查看cpu温度，同事笑我用笔记本，是对着CPU，内存用的，此话不假，我常输入top看看哪些东西占用资源。cpu温度很重要。
sudo apt-get install lm-sensors
sudo sensors-detect
查看: sensors
9.10中提供palimpset磁盘工具，我装完提示“one or more disks are failing&#8221; 我吓了一跳，心想磁盘坏了，提示有坏道。赶紧清理，呵呵，清理完重启就无法进入系统了。又重装了一次。10.04中这个问题没有了。 磁盘温度查看：
sudo apt-get install hddtemp
sudo hddtemp /dev/sda
安装硬件检测工具。ubuntu电源管理存在缺陷，这个Bug一直在官方Bug列表里，却没有重视。使用电源时候，Load_Cycle_Count每几分钟就增加了2次。开始时我也到处找解决办法，到后来发现这根本不重要，磁盘可以Load_Cycle_Count可以有60多万次。看看我使用半年的结果(2373)：
sudo apt-get install smartmontools  //安装
man smartctl //不懂的先问下男人，他会告诉你怎么做，养成习惯。不见得比gogole，baidu出来的差
sudo smartctl -a /dev/sda &#124; grep Load_Cycle_Count
193 Load_Cycle_Count        0&#215;0032   100   <a href="http://www.blags.org/ubuntu-experience-sharing/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我对<a href="http://www.blags.org/tags/linux/"target="_self"title="linux" >linux</a>的使用是从<a href="http://www.blags.org/tags/ubuntu/"title="ubuntu" >ubuntu</a>7.10开始,那时候我对windows也很不熟。既然学习编程，恰好是LAMP,我想，反正都不熟，学个人少的。这期间一直从8.04，8.10，9.04,9.10到最近的10.04。</p>
<p>      这款与天下人共享的操作系统，我的确是喜欢上了。对这款系统赞不绝口的人不是少数。尤其有趣的是一个叫袁萌的老头，各大IT网站都会转载他的博文，开口闭口必谈Ubuntu,而且行文常用括号解释，生怕人不懂。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;呵呵，这老头，70来岁，如此痴迷ubuntu，真是可爱。桌面系统使用ubuntu的确不错，虽然易用，游戏方面不如windows，然开放分享的精神可嘉。而且，做LAMP这行，不用LINUX，说不过去。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;上次我问金浩，你们金山的linux服务器是什么版本。他答ubuntu server 8.04 。呵呵，我还真不信，毕竟大多数都用 <a href="http://www.blags.org/tags/centos/"title="centos 系统" >centos</a>(和redhat一样，更自由，支持yum）；我说为什么选择它，他答，简单，就那么几条命令。维基百科也是采用ubuntu8.04。最近从9.10直接更新到了10.04,出现了一点小问题。主要是显示亮度和Flash乱码.比起以往繁琐的配置，这次安装没有什么配置了。积累了一些使用经验，上次老师要我写一份ubuntu文档，一直没有写，这次补上，和大家分享。</p>
<ol>
<li>源列表：我是电信用户，一直用163的源，还不错。</li>
<li>查看cpu温度，同事笑我用笔记本，是对着CPU，内存用的，此话不假，我常输入top看看哪些东西占用资源。cpu温度很重要。<br />
sudo apt-get install lm-sensors<br />
sudo sensors-detect<br />
查看: sensors</li>
<li>9.10中提供palimpset磁盘工具，我装完提示“one or more disks are failing&#8221; 我吓了一跳，心想磁盘坏了，提示有坏道。赶紧清理，呵呵，清理完重启就无法进入系统了。又重装了一次。10.04中这个问题没有了。 磁盘温度查看：<br />
sudo apt-get install hddtemp<br />
sudo hddtemp /dev/sda</li>
<li>安装硬件检测工具。ubuntu电源管理存在缺陷，这个Bug一直在官方Bug列表里，却没有重视。使用电源时候，Load_Cycle_Count每几分钟就增加了2次。开始时我也到处找解决办法，到后来发现这根本不重要，磁盘可以Load_Cycle_Count可以有60多万次。看看我使用半年的结果(2373)：<br />
sudo apt-get install smartmontools  //安装<br />
man smartctl //不懂的先问下男人，他会告诉你怎么做，养成习惯。不见得比gogole，baidu出来的差<br />
sudo smartctl -a /dev/sda | grep Load_Cycle_Count<br />
193 Load_Cycle_Count        0&#215;0032   100   100   000    Old_age   Always       &#8211;       2373</li>
<li>cpu频率有五档：cpufreq-info会告诉你：available cpufreq governors: conservative, ondemand, userspace, powersave, performance。默认是ondemand;<br />
先安装 sudo apt-get install cpufrequtils<br />
man cpufreq-set<br />
sudo cpufreq-set -g powersave //设置为最低<br />
sudo cpuferq-set -c 1 -g powersave //双核cpu 设置第二个<br />
开个虚拟机，Cpu高的吓人，动不动130%，温度狂飙。没办法，Cpu设置最低频率，cpu使用再多，温度不会怎么涨。</li>
<li> 默认字体不敢恭维，使用微软雅黑吧。金浩说，Vista的一大贡献。的确不假。<br />
wget -O get-fonts.sh.zip http://files.cnblogs.com/DengYangjun/get-fonts.sh.zip<br />
unzip -o get-fonts.sh.zip 1&gt;/dev/null<br />
chmod a+x get-fonts.sh<br />
./get-fonts.sh<br />
四步解决，尤其是Monco字体，g<a href="http://www.blags.org/tags/vim/"title="vim" >vim</a>我就是使用的它</li>
<li>scim输入法和很多的软件冲突。ficx听说不错，没有用过，用过ibus后，就没又换个其他的了。9.10已经默认为ibus了，不过，没有语言包更新前是没有最常用的ibus 汉语pinyin的。<br />
ibus的安装 sudo apt-get install ibus //ibus-table是一些额外码表，有五笔、郑码、仓颉<br />
下载ibus-pinyin 在http://forum.ubuntu.org.cn/viewtopic.php?f=8&amp;t=199857&amp;start=0<br />
sudo im-switch -c\<br />
sudo im-switch -s ibus<br />
重启X</li>
<li>浏览器的天下在linux中当然是firefox。不过，此君虽优秀，但也不是省油的灯。占用内存，CPU太大太多。不调试AJAX，非要使用了Firebug,我也很少用firefox。平常浏览网页Google chrome for linux，一个字，快。opera10推出来了，但浏览器的份额却载下降。不过。opera默认字体不好看，而且，首选项里设置不会起效果。下面这种方法可行。<br />
cd ~/.opera/styles/user/<br />
touch user.css<br />
gedit ~/.opera/styles/user/user.css<br />
录入以下内容：<br />
html,body,*{<br />
font-family:”Microsoft YaHei”!important;}<br />
重启浏览器后选择查看－&gt;样式-&gt;user.css</li>
<li>无线驱动：Broadcom STA 无线驱动 9.04系统-&gt;系统管理-&gt;硬件驱动时有时没有，这是个无线网卡驱动程序，还好，9.10没有这样的现象。<br />
命令配置：<br />
sudo iwconfig eth1 essid ZTE4E8DA4 key s:dfasdfd<br />
sudo dhclient eth1<br />
Wicd网络管理，比默认的networkManger在无线管理上要好点。不过，我很少用工具，习惯了改配置文件，有线网络配置三种方法如下（校园网锐捷不提，需下载特殊的文件）<br />
sudo vim /etc/network/interfaces<br />
静态IP配置文件/etc/network/interfaces<br />
auto lo<br />
iface lo inet loopback<br />
auto eth0<br />
iface eth0 inet staticaddress 192.168.1.109netmask 255.255.255.0<br />
gateway 192.168.1.1<br />
ifconfig eth0 up<br />
动态IP配置<br />
auto lo<br />
iface lo inet loopback<br />
auto eth0<br />
iface eth0 inet dhcp<br />
ifconfig eth0 up<br />
拨号上网 sudo pppoeconf 按提示操作</li>
<li>安装KDE卸载后登录界面仍然为KDE的界面，转变成gnome界面的解决办法：<br />
执行：update-usplash-theme<br />
sudo update-usplash-theme usplash-theme-ubuntu</li>
<li>虚拟机有virtualbox3.0和vmware workstion7 。如果使用，还是vmware吧，虽然virtuabox开源，vmware还要找注册码。不过，vmware的确稳定而且资源占用少点。</li>
<li>办公软件推荐Openoffice和永中Office.金山开源了UOF SDK 还没仔细看。</li>
<li>LAMP安装，系统新立得里面去标记安装LAMP套件。什么都配置好了。完毕只需安装sudo apt-get install phpmyadmin</li>
<li>思维导图,xmind是国人开发的，使用很方便。网址: ximd.net</li>
<li>ftp客户端工具。使用了很多，还是gftp好。偏偏ubuntu wiki软件推荐里面，这款是不推荐的，我看不错。</li>
<li>云计算这两年太火了。我一直在想云这东西是什么，有什么用。不过，ubuntuOne 算一款私有云彩。虽然现在还不灿烂，2G免费空间，存点文档够了。不知可否跨平台。以前一直用 dropbox，可跨平台，想看看的，点https://www.getdropbox.com/referrals/NTI2MjY5OTc5 注册，还能帮我增加点空间。</li>
<li>chm工具没有什么好的。比来比去，chmSee好点。</li>
<li>密码管理工具keepassx绝对值得用。而且跨平台，DBM数据存储。</li>
<li>MSN： sudo apt-get install  emesene QQ :linux for QQ 从来不更新，pidgin也不错。以前是ubuntu默认的IM，现在换成了empathy</li>
<li>终端gnome-terminal,kde下konsole,terminal支持分割，kde下还有一款优秀的Yakuake。</li>
<li>看电影,Mplayer；</li>
<li>数据库设计工具:<a href="http://www.blags.org/tags/mysql/"title="mysql" >mysql</a>-workbench。简单，高效。</li>
<li>程序测试xdebug.结果查看kcachegrind，不过需安装很多的软件包。webgrind可以放在apache根目录下，网页查看。</li>
<li>gimp号称linux下的photoshop ,两者从未使用。 上个老师半年的课，至今无法画丑小鸦，易拉罐，实属遗憾。<br />
最近从9.10升级到10.04 发现屏幕亮度没法调节,查阅了很多资料，改启动项都没有效果。最后，装了个ATI Catalyst Control Center才有效果。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.blags.org/ubuntu-experience-sharing/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

