利用gettext来实现PHP的国际化编程

时间:2010-01-12 09:08:07   来源:第二电脑网  作者:第二电脑网

  第二电脑网导读:来讲一讲在PHP中如何实现国际化支持。跟其他程序语言一样,在 PHP 也可以利用 gettext 套件写作 i18n 程序,实现 NLS(Native Language Support) 国际化支持,具体请参考官方文档(http://www.gnu.org/manual/gettext/index.html(http://php.phpx.com/http://www.gnu.org/manual/gettext/index.html) )。PHPChina 开源
  正文:

 通常人们写程序时都是将文字写死在程序里的,比如:echo "Hello World!"; ,假如要改成它国语言,写国际化程序,就要逐个打开进行修改,程序较短时还行,若程序有上万甚至更多,改起来就不是那么容易了。近来随着i18n的逐渐标准化,我也来讲一讲在PHP中如何实现国际化支持。跟其他程序语言一样,在 PHP 也可以利用 gettext 套件写作 i18n 程序,实现 NLS(Native Language Support) 国际化支持,具体请参考官方文档(http://www.gnu.org/manual/gettext/index.html(http://php.phpx.com/http://www.gnu.org/manual/gettext/index.html) )。PHPChina 开源社区门户']ES^zd#O2J

e&O yM9w24669  实现流程:程序设计者在程序码中写入所要显示的信息,在运行程序时并不会直接显示程序设计师所写的信息,而会先去找一个所设置语系的信息档。如果未找到,才会去显示程式码中的信息。
mV Z3Q9Xba24669PHPChina 开源社区门户+DW4ML3G8[k
  一、安装设置gettext套件:
%?,i,j'q Sv'QB24669  1) *NIX系统:
F? i~+V.gFV24669  1、从http://www.gnu.org/software/gettext/gettext.html(http://php.phpx.com/http://www.g ... ettext/gettext.html) 下载 gettext package,进行安装PHPChina 开源社区门户]jy/ZwPJ*z
  2、编译PHP的时候加上“--with-gettext[=DIR]”,其中DIR为gettext安装的
zE%vi|^w0b8k24669目录,缺省为:/usr/localPHPChina 开源社区门户ISbIB;/
  3、保存,然后 restart server。
JMz)v'L6ZK$L)Y ^24669PHPChina 开源社区门户3jk D5| Mv.v9i
  2) WIN32系统:PHPChina 开源社区门户9i&N*~p2il
  1、需要将gnu_gettext.dll档拷贝到系统目录下面 (Ex: C:WINNTSYSTEM32 or C:WINDOWSSYSTEM32),PHP 4.2.3 之后文件名为 libintl-1.dll,可在 php4dlls 下获得。
W q(c5?^R)k24669  2、打开php.ini档,查找extension=php_gettext.dll,去掉前面的“;”
{zF*i;T//24669  3、保存,然后restart server。
C.{i"s"Zpt e%/d5[24669
Of-X|n5hM24669  若一切顺利,就可以在 phpinfo() 中看到 gettext 字样,至此已设置完毕。PHPChina 开源社区门户P0i^,t/`T
PHPChina 开源社区门户"]"v g X/y)vghh
  二、php_gettext.dll套件里有好几个函式,具体请看相关的manual。在这里我们只用记住3个函式就行了,如下:PHPChina 开源社区门户oiHCMdW

5@'y1S:}/Q3~b%D;s&W%h24669PHPChina 开源社区门户4Po5f6v F,}Q
string bindtextdomain ( string domain, string directory)
B5_ tokh5n24669string textdomain ( string text_domain)PHPChina 开源社区门户?g bz/MD3n4c
string gettext ( string message)PHPChina 开源社区门户5YSM2lvSRZ
PHPChina 开源社区门户[+iYl%I*B

&B B7^$f$|Q*F24669  三、写作i18n程序:PHPChina 开源社区门户7?1[nK6u(rb1rf

;_5Z^z8c24669
wb NJ |S24669<?php
nV-F&U CU*nkZ24669// 常规的程序
m y#Qm4v.X*e7P l,L$]/F24669echo "Hello World!");
6qH0H,q e1W MZ_ U w24669?>PHPChina 开源社区门户!Z&LLkVs7L,X
  下面是 i18n 程序:hello.phpPHPChina 开源社区门户8piP6G#n
PHPChina 开源社区门户"MG!?8h'Z)V

T X8b1h EM.z-c24669<?phpPHPChina 开源社区门户/#j}xptFY
// I18N 程序范例开始
i L*r+Gk0^6D24669define('PACKAGE', 'hello'); // 定义要用的mo文件名称,常规来说,我们都把PACKAGE的名称定义和程序名称相同。
(SbawxjUp24669PHPChina 开源社区门户TEP&M`3D$C"e
putenv('LANG=zh_TW');
d m1Y0a7YE24669setlocale(LC_ALL, 'zh_TW'); // 指定要用的语系,如:en_US、zh_CN、zh_TW
-W+k7_ f i6J24669
%WmV~&W4XQy'f y24669bindtextdomain(PACKAGE, '/apache/htdocs/locale');PHPChina 开源社区门户u]j5_s0H9]I
textdomain(PACKAGE);PHPChina 开源社区门户}(d S9LE [ R3u$u

uY,l$F0O0p24669// The .mo file searched is:PHPChina 开源社区门户 MN:Z*ym$Ov5C6Y
// /apache/htdocs/locale/en/LC_MESSAGES/hello.moPHPChina 开源社区门户Ty5DrS

@ M^,~D[24669echo gettext("Hello World!");
!RT-_3t"`%a24669?>PHPChina 开源社区门户"Tv7[6H4r0g!n~V
PHPChina 开源社区门户 X&pM0tP
  在IE中输入:http://localhost/hello.php(http://php.phpx.com/http://localhost/hello.php),输出结果为:“Hello World!”PHPChina 开源社区门户 Q [ |I#B5L
来源:http://www.002pc.com/master/College/Programming/PHP/11754.html

收藏到:

关于《利用gettext来实现PHP的国际化编程》文章的评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面

随机文章

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by rand() limit 10

顶出来的热门

    SQL Error: select * from ***_ecms_article where classid='86' and checked=1 order by diggtop desc,id desc limit 10
站内搜索: 高级搜索

热门搜索: Windows style 系统 tr IP QQ CPU 安装 function 注册 if td