<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="PHP中使用gettext解决国际化(I18N)和本地化(L10N)的例子" id="card1">
<p> 游客</p><p>
标题:PHP中使用gettext解决国际化(I18N)和本地化(L10N)的例子<br/>
正文:<br/>
实现国际化的方式比较多，很多php framework都内置i18n支持，但大部分是基于PHP的数组实现的，这种方法并不推荐。目前最为流行也最通用的方法是gettext。Gettext 用于系统的国际化(I18N)和本地化(L10N),可以在编译程序的时候使用本国语言支持(Native Language Support(NLS)),其可以使程序的输出使用用户设置的语言而不是英文. 关于gettext的更多资料请参见： 下面说说如何利用gettext在你的PHP程序中实现国际化。<br/>一、检查环境需求 首先查看phpinfo()，确保你的PHP启用了gettext扩展。如果启用了gettext，在phpinfo页面中应该能看到以下信息：<br/>如果没有找到，请修改php.ini以启用该扩展 <br/><br/>二、为你的项目新建locale文件夹 gettext涉及到两个文件，*.po是翻译源文件，里面储存了项目中所有待翻译的字符串和翻译后的结果；*.mo文件是po文件编译后二进制文件，真正读取翻译信息的时候是从mo文件中读取的，所以这个文件也是必不可少的。 gettext对目录要求比较死，你必须把国际化文件放在指定目录，大部分使用gettext不成功都是由于po文件和mo文件没有放对位置导致的，下面举例看一个典型项目目录树：<br/><br/>三、初始化i18n环境 这个主要是在程序端进行简单的设置，下面给个简单的例子：代码如下:&amp;lt; ?php<br/>//定义要翻译的目标语言及po文件的编码<br/>$locale = &quot;zh_CN.utf8&quot;;<br/>setlocale(LC_ALL, $locale);<br/>//设置翻译文本域，下面的代码就会让程序去locale/zh_CN/LC_MESSAGES/default.mo去寻找翻译文件<br/>bindtextdomain(&quot;default&quot;, dirname(__FILE__).&quot;/locale&quot;);<br/>textdomain(&quot;default&quot;);<br/>?&amp;gt;<br/><br/>&amp;lt; !DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot; &quot;TR/xhtml11/DTD/xhtml11.dtd&quot;&amp;gt;<br/>&amp;lt; ?php ec<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1547&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1547&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1547&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1547&amp;Page=2">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1547">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1547">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>