php程序的国际化实现方法(利用gettext)


Posted in PHP onAugust 14, 2011

步骤一:搭建环境
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\n" 
"Report-Msgid-Bugs-To: \n" 
"POT-Creation-Date: 2009-01-19 17:47+0800\n" 
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" 
"Language-Team: LANGUAGE <LL@li.org>\n" 
"MIME-Version: 1.0\n" 
"Content-Type: text/plain; charset=CHARSET\n" 
"Content-Transfer-Encoding: 8bit\n" 
#: hi.php:6 
msgid "Hi!" 
msgstr ""

现在有两个地方需要修改,
1:"Content-Type: text/plain; charset=CHARSET\n"
2:msgstr ""
把1中的CHARSET修改成gb2312,然后把2修改成msgstr "你好"。
3,键入msgfmt -o hi.mo hi.po,执行,这时生成hi.mo文件。
然后在d:\www下新建locale\zh_Cn\LC_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 相关文章推荐
PHP4和PHP5共存于一系统
Nov 17 PHP
功能齐全的PHP发送邮件类代码附详细说明
Jul 10 PHP
PHP sprintf()函数用例解析
May 18 PHP
linux系统上支持php的 iconv()函数的方法
Oct 01 PHP
php cURL和Rolling cURL并发方式比较
Oct 30 PHP
PHP将XML转数组过程详解
Nov 13 PHP
php读取大文件示例分享(文件操作类)
Apr 13 PHP
Laravel 5 框架入门(四)完结篇
Apr 09 PHP
php中 $$str 中 &quot;$$&quot; 的详解
Jul 06 PHP
PHP判断上传文件类型的解决办法
Oct 20 PHP
Laravel的throttle中间件失效问题解决方法
Oct 09 PHP
PHP实现对xml进行简单的增删改查(CRUD)操作示例
May 19 PHP
PHP排序之二维数组的按照字母排序实现代码
Aug 13 #PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
Aug 12 #PHP
PHP简洁函数小结
Aug 12 #PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 #PHP
PHP中获取内网用户MAC地址(WINDOWS/linux)的实现代码
Aug 11 #PHP
php 文章调用类代码
Aug 11 #PHP
初学PHP的朋友 经常问的一些问题。不断更新
Aug 11 #PHP
You might like
利用PHP动态生成VRML网页
2006/10/09 PHP
PHP生成静态页面详解
2006/11/19 PHP
关于PHP5 Session生命周期介绍
2010/03/02 PHP
PHP源码分析之变量的存储过程分解
2014/07/03 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
JavaScript 异步调用框架 (Part 5 - 链式实现)
2009/08/04 Javascript
javascript开发技术大全-第3章 js数据类型
2011/07/03 Javascript
原生javascript实现图片按钮切换
2015/01/12 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
微信小程序 五星评分(包括半颗星评分)实例代码
2016/12/14 Javascript
浅谈javascript的闭包
2017/01/23 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
inquirer.js一个用户与命令行交互的工具详解
2019/05/18 Javascript
使用JavaScript计算前一天和后一天的思路详解
2019/12/20 Javascript
解决在Vue中使用axios POST请求变成OPTIONS的问题
2020/08/14 Javascript
[48:28]完美世界DOTA2联赛循环赛FTD vs Magma第二场 10月30日
2020/10/31 DOTA
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
Python 从一个文件中调用另一个文件的类方法
2019/01/10 Python
python实现LBP方法提取图像纹理特征实现分类的步骤
2019/07/11 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
解决windows下python3使用multiprocessing.Pool出现的问题
2020/04/08 Python
解决阿里云邮件发送不能使用25端口问题
2020/08/07 Python
HTML5 Canvas 绘图——使用 Canvas 绘制图形图文教程 使用html5 canvas 绘制精美的图
2015/08/31 HTML / CSS
详解HTML5.2版本带来的修改
2020/05/06 HTML / CSS
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
澳大利亚首屈一指的鞋类品牌:Tony Bianco
2018/03/13 全球购物
英国受欢迎的运动鞋和街头服装商店:Footasylum
2018/06/12 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
校企合作协议书
2014/04/16 职场文书
餐厅周年庆活动方案
2014/08/25 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
学雷锋广播稿大全
2015/08/19 职场文书
C#连接ORACLE出现乱码问题的解决方法
2021/10/05 Oracle