易截截图软件、单文件、免安装、纯绿色、仅160KB

用php gettext库来开发多语言系统


通常人们写程序时都是将文字写死在程序里的,比如:echo "Hello
World!";
,假如要改成它国语言,写国际化程序,就要逐个打开进行修改,程序较短时还行,若程序有上万甚至更多,改起来就不是那么容易了。近来随着i18n的逐渐标
准化,我也来讲一讲在PHP中如何实现国际化支持。跟其他程序语言一样,在 PHP 也可以利用 gettext 套件写作 i18n 程序,实现
NLS(Native Language Support) 国际化支持。
实现流程:程序设计者在程序码中写入所要显示的信息,在运行程序时并不会直接显示程序设计师所写的信息,而会先去找一个所设置语系的信息档。如果未找到,才会去显示程式码中的信息。
  一、安装设置gettext套件:
windows系统:
  1、打开php.ini档,查找extension=php_gettext.dll,去掉前面的“;”
  2、保存,然后restart server。
  若一切顺利,就可以在 phpinfo() 中看到 gettext 字样,至此已设置完毕。
二、php_gettext.dll套件里有好几个函式,具体请看相关的manual。在这里我们只用记住3个函式就行了,如下:
string bindtextdomain ( string domain, string directory)
string textdomain ( string text_domain)
string gettext ( string message)
  三、写作i18n程序:
<?php
// 常规的程序
echo
"Hello World!"
);
?>
下面是 i18n 程序:hello.php
<?php
// I18N 程序范例开始
define
(
'PACKAGE'
,
'hello'
);
// 定义要用的mo文件名称,常规来说,我们都把PACKAGE的名称定义和程序名称相同。
putenv
(
'LANG=zh_CN'
);
setlocale
(
LC_ALL
,
'zh_CN'
);
// 指定要用的语系,如:en_US、zh_CN、zh_TW
bindtextdomain
(
PACKAGE
,
'e:/phpbulo.com/language'
);
textdomain
(
PACKAGE
);
// The .mo file searched is:
// e:/phpbulo.com/language/zh_CN/LC_MESSAGES/hello.mo
echo
gettext
(
"Hello World!"
);
?>
  在IE中输入:http://localhost/hello.php,输出结果为:“Hello World!”
  note:按照 GNU package 里面的习惯,可以使用 _(...) 来代替 gettext(...) ,这样就可以少打很多 gettext 了。
  四、接下来设置gettext po档:
  1、创建目录结构,如下所示:
    bindtextdomain's dir
      /language
        /LC_MESSAGES
 


相关文档:

PHP类实例教程(十九):PHP类接口的定义与规范

接口(interface)是抽象方法和静态常量定义的集合。
接口是一种特殊的抽象类,这种抽象类中只包含抽象方法和静态常量。
接口中没有其它类型的内容。
接口的定义
我们先写接口的定义,后面几节再介绍接口的意义。
下面的例子是接口的一个简单写法。
<?php
interface 接口名
{
}
?>
下面的例子定义了一个接 ......

PHP 创建数据库练习

<?php
header("Content-type:text/html","Charset=UTF-8");
$file="config/config.php";
if(is_writable($file)!=null){
 echo "文件可写入 \n";
}else{
 echo "文件不可写|";
 exit();
}
if(isset($_POST["install"])){
 $string = "<?php \n";
 $string .="\$mysql_host=\"$_P ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号