php程序的国际化实现方法(利用gettext)
作者:bea
步骤一:搭建环境 1,首先查看你的php扩展目录下是否有php_gettext.dll这个文件,如果没有,这就需要你 下载一个或是从其他地方拷贝一个,然后放到php扩展目录。 2,打开php.ini,查找”;extension=php_gettext.dll“ ,然后去除注释,重启apache。 步骤二:原理讲解 假如你的没有国际化的程序里有这样的代码,echo "你好";,而国际化的程序你要写成 echo gettext("你好");,然后再在配置文件里添加“你好”相对应的
步骤一:搭建环境
1,首先查看你的php扩展目录下是否有php_gettext.dll这个文件,如果没有,这就需要你
下载一个或是从其他地方拷贝一个,然后放到php扩展目录。
2,打开php.ini,查找”;extension=php_gettext.dll“ ,然后去除注释,重启apache。
步骤二:原理讲解 假如你的没有国际化的程序里有这样的代码,echo "你好";,而国际化的程序你要写成
echo gettext("你好");,然后再在配置文件里添加“你好”相对应的英文“Hi”。
这时,中国地区浏览都会在屏幕上输出“你好”,而美国地区浏览都会在屏幕上输出
“Hi”。也就是说,最终显示什么是根据你的配置文件而定的,如果找不到配置文件,
才会输出程序里面的内容。
步骤三:编码测试
1,我们在d:www下面新建文件hi.php,详细代码如下
代码如下:
<?php
$domain = 'test';
bindtextdomain($domain, "locale/");//设置某个域的mo文件路径
textdomain($domain);//设置gettext()函数从哪个域去找mo文件
echo gettext("Hi!");//_()是gettext()函数的简写形式
?>
这时你运行改程序,只会输出“Hi”。但我们是中国人,我们不认识“Hi”,
我们只认识“你好”,这时就要配置文件出马。配置文件的生成一般借助一款工具。
下载地址:http://nchc.dl.sourceforge.net/sourceforge/gnuwin32/gettext-0.14.4.exe
安装好以后,为了在任意目录里使用,需要把“安装路径/bin”添加到系统环境变量里。
步骤四:配置文件的生成 1,我们假设你的工具已经安装好,并且可以在任意目录使用。现在就要运行cmd,并把
路径切换到d:www下面,也就是hi.php所在目录。
键入xgettext -d hi hi.php --from-code=gb2312,然后执行,这时你可以看到新生成一个
hi.po文件,注意:--from-code=gb2312,其中gb2312还可以是utf-8。
2,打开hi.po文件,显示如下:
代码如下:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION
"
"Report-Msgid-Bugs-To:
"
"POT-Creation-Date: 2009-01-19 17:47+0800
"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>
"
"Language-Team: LANGUAGE <LL@li.org>
"
"MIME-Version: 1.0
"
"Content-Type: text/plain; charset=CHARSET
"
"Content-Transfer-Encoding: 8bit
"
#: hi.php:6
msgid "Hi!"
msgstr ""
现在有两个地方需要修改,
1:"Content-Type: text/plain; charset=CHARSET
"
2:msgstr ""
把1中的CHARSET修改成gb2312,然后把2修改成msgstr "你好"。
3,键入msgfmt -o hi.mo hi.po,执行,这时生成hi.mo文件。
然后在d:www下新建localezh_CnLC_MESSAGES目录,把hi.mo拷到这里就行了。
4,现在重启apache,再次运行,屏幕上可以输出“你好”。
其他:
如果使用utft-8编码的话,需要使用
bind_textdomain_codeset($domain,'UTF-8');
相应的要把hi.po里的CHARSET改成utf-8,还需要把hi.po保存成utf-8格式,
再次生成hi.mo就行了。
总结:
我们都希望我们写的程序可以被大众甚至国际普遍使用,像大名鼎鼎的wordpress的
国际化使用的也是他。gettext还是非常不错的,简单易用,
有用 | 无用
1,首先查看你的php扩展目录下是否有php_gettext.dll这个文件,如果没有,这就需要你
下载一个或是从其他地方拷贝一个,然后放到php扩展目录。
2,打开php.ini,查找”;extension=php_gettext.dll“ ,然后去除注释,重启apache。
步骤二:原理讲解 假如你的没有国际化的程序里有这样的代码,echo "你好";,而国际化的程序你要写成
echo gettext("你好");,然后再在配置文件里添加“你好”相对应的英文“Hi”。
这时,中国地区浏览都会在屏幕上输出“你好”,而美国地区浏览都会在屏幕上输出
“Hi”。也就是说,最终显示什么是根据你的配置文件而定的,如果找不到配置文件,
才会输出程序里面的内容。
步骤三:编码测试
1,我们在d:www下面新建文件hi.php,详细代码如下
代码如下:
<?php
$domain = 'test';
bindtextdomain($domain, "locale/");//设置某个域的mo文件路径
textdomain($domain);//设置gettext()函数从哪个域去找mo文件
echo gettext("Hi!");//_()是gettext()函数的简写形式
?>
这时你运行改程序,只会输出“Hi”。但我们是中国人,我们不认识“Hi”,
我们只认识“你好”,这时就要配置文件出马。配置文件的生成一般借助一款工具。
下载地址:http://nchc.dl.sourceforge.net/sourceforge/gnuwin32/gettext-0.14.4.exe
安装好以后,为了在任意目录里使用,需要把“安装路径/bin”添加到系统环境变量里。
步骤四:配置文件的生成 1,我们假设你的工具已经安装好,并且可以在任意目录使用。现在就要运行cmd,并把
路径切换到d:www下面,也就是hi.php所在目录。
键入xgettext -d hi hi.php --from-code=gb2312,然后执行,这时你可以看到新生成一个
hi.po文件,注意:--from-code=gb2312,其中gb2312还可以是utf-8。
2,打开hi.po文件,显示如下:
代码如下:
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION
"
"Report-Msgid-Bugs-To:
"
"POT-Creation-Date: 2009-01-19 17:47+0800
"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE
"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>
"
"Language-Team: LANGUAGE <LL@li.org>
"
"MIME-Version: 1.0
"
"Content-Type: text/plain; charset=CHARSET
"
"Content-Transfer-Encoding: 8bit
"
#: hi.php:6
msgid "Hi!"
msgstr ""
现在有两个地方需要修改,
1:"Content-Type: text/plain; charset=CHARSET
"
2:msgstr ""
把1中的CHARSET修改成gb2312,然后把2修改成msgstr "你好"。
3,键入msgfmt -o hi.mo hi.po,执行,这时生成hi.mo文件。
然后在d:www下新建localezh_CnLC_MESSAGES目录,把hi.mo拷到这里就行了。
4,现在重启apache,再次运行,屏幕上可以输出“你好”。
其他:
如果使用utft-8编码的话,需要使用
bind_textdomain_codeset($domain,'UTF-8');
相应的要把hi.po里的CHARSET改成utf-8,还需要把hi.po保存成utf-8格式,
再次生成hi.mo就行了。
总结:
我们都希望我们写的程序可以被大众甚至国际普遍使用,像大名鼎鼎的wordpress的
国际化使用的也是他。gettext还是非常不错的,简单易用,
有用 | 无用
猜你喜欢
您可能感兴趣的文章:
- php中使用Imagick实现图像直方图的实现代码
- PHP正确配置mysql(apache环境)
- PHP MySQL应用中使用XOR运算加密算法分享
- PHP 时间日期操作实战
- PHP url 加密解密函数代码
- php图片上传存储源码并且可以预览
- PHP 无限分类三种方式 非函数的递归调用!
- php中将图片gif,jpg或mysql longblob或blob字段值转换成16进制字符串
- PHP数组实例总结与说明
- JpGraph php柱状图使用介绍
- php报表之jpgraph柱状图实例代码
- PHP用SAX解析XML的实现代码与问题分析
- PHP IF ELSE简化/三元一次式的使用
- PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
- phpmyadmin安装时提示:Warning: require_once(./libraries/common.inc.php)错误解决办法
- PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
- 11个PHP 分页脚本推荐
- PHP版国家代码、缩写查询函数代码
- PHP动态创建Web站点的方法