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

php gettext方式实现UTF 8国际化多语言(i18n)



来随着i18n(国际化)的逐渐标准化,我也来讲一讲在PHP中如何实现国际化支持。跟其他程序语言一样,在 PHP 也可以利用 gettext
套件写作 i18n 程序,实现 NLS(Native Language Support) 国际化支持,具体请参考官方文档(
http://www.gnu.org/software/gettext/manual/gettext.html
)
这里我们主要介绍window平台下使用php的扩展gettext实现程序的国际化。
gettext简介:
GNU
gettext是翻译项目的重要一步,它提供了一个工作框架,由一些集成的工具和文档组成,帮助程序员、翻译人员和最终用户实现程序的国际化和本地化。用
Gettext的方式实现多语言得到了广泛的支持,著名的BLOG程序wordpress的国际化就是用的GNU gettext。
大致原理:

GNU
gettext使用PO或MO文件来实现国际化和本地化。PO的意思是Portable
Object,是一种文本结构,可以方便的由人们阅读和修改。MO是Machine
Object的简写,MO文件是PO文件的二进制形态。一般来说,一个PO或MO文件对应于一种语言,如果一个程序要支持多种语言,每一种语言都需要自己
的PO或MO文件。
开始应用:
步骤一:搭建环境(服务器已经完成,环境已经搭建好了)
1。首先查看你的php扩展目录下是否有php_gettext.dll这个文件,如果没有,这就需要你下载一个或是从其他地方拷贝一个,然后放到php扩展目录。
2。打开php.ini,查找”;extension=php_gettext.dll“ ,然后去除注释,重启apache。
若一切顺利,就可以在 phpinfo() 中看到 gettext 字样,至此服务器环境配置完毕。
步骤二:假如我们要翻译test.php页面里的hello word!这句话。

编辑test.php,将要翻译 的文字用gettext函数包含,表示这些被包含的文字是需要用来翻译的。
view plain
copy to clipboard
print
?
<?  
include_once
(
'inc/setLan.php'
);   
$domain
 = 
'test'
;  
bindtextdomain
(
$domain

"locale/"
);
//设置某个域的mo文件路径 
  
bind_textdomain_codeset($domain

'UTF-8'
); 
//设置mo文件的编码为UTF-8 
  
textdomain($domain
); 
//设置gettext()函数从哪个域去找mo文件 
  
?>  
<html>  
<head>  
<meta http-equiv="Content-Type"
&


相关文档:

安装image magic的php扩展(Extension) Imagick

  在windows下安装image magic 的php扩展 imagick, 首先需要下载php_imagick.dll文件.这个dll文件非常关键.
如果下载了错误的php_imagick.dll.安装就会失败.我就是下载了N个这样的dll文件都未能安装成功.最后终于给我找到正确的dll文件了
下载地址:http://valokuva.org/outside-blog-content/imagick-windows-builds ......

【PHP系列教程】(2)——PHP的基本语法

为了深入了解PHP,以及更加便利的使用PHP为我们服务,本章节主要介绍PHP的基本语法。
一、从HTML中分离
PHP 的脚本由文件中一对特殊的标记所引起的内容,当解释器分析一个文件时,所有特殊标记外的普通文件,解释器不对其做任何处理,而特殊标记内文件将作为 PHP 代码被解释器分析执行。该运行机制将允许您在 HTML 中嵌入 ......

PHP IP地址和十进制数字互转

 IPV4 可以看做4个256进制的数字, 可以按常规的进制转换换算成十进制.
如 192.168.1.1 换算成10进制:
192*256*256*256 + 168*256*256+1*256+1
其实计算机更擅长移位和与或运算. 可以改进算法如下.
IP 转长整型
public ipToInt($sIP)
{
$aIP = explode('.',$sIP);
$iIP = ($aIP[0] << 24) | ($aIP[1] ......

【PHP系列教程】(3)——PHP的类型

PHP支持8种原始类型,其中包括:
4种标量类型:boolean(布尔型)、integer(整型)、float(浮点型)、string(字符型);
2种复合类型:array(数组)、object(对象);
2种特殊类型:resource(资源)、NULL
您可能还会读到一些关于“双精度(double)”类型的参考。实际上 double 和 float 是相同的,由于一些历史的原 ......

php获取xml属性值

<!-- xml格式
<foo xmlns="test">
<bar attr='a'></bar>
<bar attr='b'></bar>
<bar attr='c'></bar>
</foo>
-->
<?php
$dom = new DOMDocument();
if (!$dom->load('attr.xml'))
{
echo "load books.xml failed!<br>";
re ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号