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 相关文章推荐
程序员编程十条戒律
Jul 09 PHP
Ajax+PHP边学边练 之五 图片处理
Dec 03 PHP
使用XDebug调试及单元测试覆盖率分析
Jan 27 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
Apr 18 PHP
解析crontab php自动运行的方法
Jun 24 PHP
thinkphp验证码显示不出来的解决方法
Mar 29 PHP
php中file_get_contents与curl性能比较分析
Nov 08 PHP
PHP Opcache安装和配置方法介绍
May 28 PHP
在Windows系统下使用PHP生成Word文档的教程
Jul 03 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
thinkPHP中钩子的两种配置调用方法详解
Nov 11 PHP
php封装一个异常的处理类
Jun 08 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 mssql 日期出现中文字符的解决方法
2009/03/10 PHP
php中substr()函数参数说明及用法实例
2014/11/15 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
读jQuery之十 事件模块概述
2011/06/27 Javascript
firebug的一个有趣现象介绍
2011/11/30 Javascript
JavaScript中的undefined学习总结
2013/11/30 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
Angular开发者指南之入门介绍
2017/03/05 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
微信小程序三级联动地址选择器的实例代码
2017/07/12 Javascript
Vue学习笔记之表单输入控件绑定
2017/09/05 Javascript
Nodejs 发布自己的npm包并制作成命令行工具的实例讲解
2018/05/15 NodeJs
对VUE中的对象添加属性
2018/09/18 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
Bootstrap简单实用的表单验证插件BootstrapValidator用法实例详解
2020/03/29 Javascript
python 装饰器功能以及函数参数使用介绍
2012/01/27 Python
Python常用正则表达式符号浅析
2014/08/13 Python
pycharm: 恢复(reset) 误删文件的方法
2018/10/22 Python
python中metaclass原理与用法详解
2019/06/25 Python
在python中用url_for构造URL的方法
2019/07/25 Python
Django框架视图函数设计示例
2019/07/29 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
Python importlib动态导入模块实现代码
2020/04/16 Python
python 如何区分return和yield
2020/09/22 Python
如何一键升级Python所有包
2020/11/05 Python
Python爬虫实现selenium处理iframe作用域问题
2021/01/27 Python
CSS3实现苹果手机解锁的字体闪亮效果示例
2021/01/05 HTML / CSS
造型师求职自荐信
2013/09/27 职场文书
会计专业应届生自荐信
2014/02/07 职场文书
客服部工作职责范本
2014/02/14 职场文书
小学庆六一活动总结
2014/08/28 职场文书
天鹅湖观后感
2015/06/09 职场文书