php nginx window系统 gettext方式实现UTF-8国际化多语言(i18n)
开始应用:
步骤一:搭建环境(服务器已经完成,环境已经搭建好了)
1、首先查看你的php扩展目录下是否有php_gettext.dll这个文件,如果没有,这就需要你下载一个或是从其他地方拷贝一个,然后放到php扩展目录。
2、打开php.ini,查找”;extension=php_gettext.dll“ ,然后去除注释,重启nginx。
若一切顺利,就可以在 phpinfo() 中看到 gettext 字样,至此服务器环境配置完毕。
步骤二:假如我们要翻译test.php页面里的hello word.这句话。
编辑test.php,将要翻译 的文字用gettext函数包含,表示这些被包含的文字是需要用来翻译的。
<?php $lan = isset($_REQUEST [ 'lan' ])?$_REQUEST [ 'lan' ]:'zh_CN';
if ( $lan == 'zh_CN' ){
putenv('LANG=zh_CN' );
setlocale(LC_ALL, 'zh_CN' ); //指定要用的语系,如:en_US、zh_CN、zh_TW
}elseif ( $lan == 'zh_TW' ){
putenv('LANG=zh_TW' );
setlocale(LC_ALL, 'zh_TW' ); //指定要用的语系,如:en_US、zh_CN、zh_TW
}elseif ( $lan == 'en_US' ) {
putenv('LANG=en_US' );
setlocale(LC_ALL, 'en_US' ); //指定要用的语系,如:en_US、zh_CN、zh_TW
} $domain = 'test' ; //域名,可以任意取个有意义的名字,不过要跟相应的.mo文件的文件名相同(不包括扩展名)。 bindtextdomain ( $domain , "locale/" ); //设置某个域的mo文件路径
bind_textdomain_codeset($domain , 'UTF-8' ); //设置mo文件的编码为UTF-8
textdomain($domain ); //设置gettext()函数从哪个域去找mo文件
?>
<html>
<head>
<meta http-equiv="Content-Type" content= "text/html; charset=utf-8" />
<title>title</title>
</head>
<body bgcolor="#FFFFFF" text= "#000000" link= "#FF9966" vlink= "#FF9966" alink= "#FFCC99" >
<?= gettext ( 'hello world.' ) ?>
<br>
<?= gettext ( 'hello world2.' ) ?>
</body>
</html>
步骤三:编辑好了test.php后,我们就应该对这个页面生成对应的语言包(test.po和test.mo文件)
要生成语言包,我们需要借助两款工具:
1、gettext工具下载地址:http://nchc.dl.sourceforge.net/sourceforge/gnuwin32/gettext-0.14.4.exe
(用来生成po文件,安装好了以后,需要把”安装路径/bin”添加到系统环境变量path里)
2、Poedit工具下载地址:http://www.poedit.net/download.php (用来编辑po文件,编辑需要翻译的语言,最后自动生成mo文件)
假设我们都安装好了这些软件,现在我们开始对test.php进行翻译工作。打开命令提示符cmd,切换到test.php所在的目录。
输入 xgettext -d test test.php --from-code=utf-8 (当你要翻译的页面为index.php,只需要将蓝色部分改为index即可),然后执行,这时候你可以在test.php所在目录看到新生成的文件test.po
用poedit工具打开test.po,然后针对这些语言翻译成我们对应的语言,保存后poedit会自动生产mo文件(unicode二进制码)。

将po文件和mo文件放入项目目录
如我们放入的是简体中文,则放入:
/locale/zh_CN/LC_MESSAGES/test.po
/locale/zh_CN/LC_MESSAGES/test.mo
如我们放入的是繁体中文,则放入:
/locale/zh_TW/LC_MESSAGES/test.po
/locale/zh_TW/LC_MESSAGES/test.mo
OK。一切都非常顺利,我们开始访问测试下多语言吧。
访问test.php?lan=zh_CN则显示简体,
访问test.php?lan=en_US则显示英文,
访问test.php?lan=zh_TW显示繁体(该功能本文没有实现)。
最后记得要 重启nginx,方可看到效果。
++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++
如何将多个文件的语言翻译放到同一个.mo文件中???
生成.po文件命令如下: (注意,此时多加了一个命令参数 -j ,表明是以追加的形式添加语言包的。)
xgettext -d test test.php -j --from-code=utf-8
php nginx window系统 gettext方式实现UTF-8国际化多语言(i18n)的更多相关文章
- php gettext方式实现UTF-8国际化多语言(i18n)
php gettext方式实现UTF-8国际化多语言(i18n) 一.总结 一句话总结: 二.php gettext方式实现UTF-8国际化多语言(i18n) 近 来随着i18n(国际化)的逐渐标准化 ...
- 学习window系统下的注册表
一直不明白注册表是一个什么鬼,查了资料后大概明白了注册表到底有什么用,其实简单来说注册表就是一个存放系统.硬件.应用配置信息的数据ku.##### 一.注册表的来历在最早的视窗操作系统win3.x中, ...
- 模拟window系统的“回收站”
若要模拟window系统的“回收站”功能,具体的要求如下: 对于列表中的图片,可以通过拖动或单击“删除”的链接,以动画的方式移至“回收站”. 对于“回收站的图片”,可以通过拖动和单击“还原”的链接,以 ...
- window系统的HOST详解
很多用户都知道在Window系统中有个Hosts文件(没有后缀名),在Windows 98系统下该文件在Windows目录,在Windows 2000/XP系统中位于C\Winnt\System32 ...
- kvm安装window系统及使用NFS动态迁移
验证是否开启虚拟化 # grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD processor ...
- 用Window Authentication的方式去连接SQLServer
用Window Authentication的方式去连接SQLServer Connection String: jdbc:sqlserver://${serverName};databaseName ...
- [实战经验]Macbook pro 苹果系统换window系统
1. Macbook的window软件驱动备份 通过Boot Camp助手进行window支持苹果驱动下载 2. 拆机把SSD固态硬盘放在主盘位置,把苹果的机械盘放在光驱位置 ...
- 在window系统下配置login.sql
在window系统下配置login.sql 他的位置是登录用户的文件夹,我的win7系统位置是: C:\Users\Administrator 我的login.sql下载地址: http://file ...
- “canvas画布仿window系统自带画图软件"项目的思考
"canvas画布仿window系统自带画图软件"项目的思考 首先贴上DEMO图,并没有美化效果.对UI有要求的,请自带补脑技术. 思考一 在做项目的过程中,我发现"工具 ...
随机推荐
- 51Nod 最大公约数之和V1,V2,V3;最小公倍数之和V1,V2,V3
1040 最大公约数之和 给出一个n,求1-n这n个数,同n的最大公约数的和.比如:n = 6 1,2,3,4,5,6 同6的最大公约数分别为1,2,3,2,1,6,加在一起 = 15 输入 1个数N ...
- TJOI2016 字符串
字符串 佳媛姐姐过生日的时候,她的小伙伴从某东上买了一个生日礼物.生日礼物放在一个神奇的箱子中.箱子外边写了一个长为n的字符串s,和m个问题.佳媛姐姐必须正确回答这m个问题,才能打开箱子拿到礼物,升职 ...
- laravel5.8 编译laravel mix
如果第一次无需执行(如果编译的时候出错再次执行才需要) 1:rm -rf node_modules 更改镜像为淘宝镜像 2:yarn config set registry https://regis ...
- python - 登陆验证的滑块接口
----------------- 滑块接口 ----------------- 0:大体思路:点击登陆按钮的时候会进行第一次验证(滑块验证),然后访问后台滑块接口,并返回验证结果,如果滑块接口通 ...
- 2019红帽杯部分wp
xx 程序首先取输入的前4个字符作为xxtea加密的密钥之后进行xxtea加密.接着进行位置置换操作,然后又进行了以3个为一组的异或 首先逆向解出xxtea加密之后的结果 #include<st ...
- nginx优化、负载均衡、rewrite
nginx优化 # 普通用户启动 (useradd nginx -s /sbin/nologin -M) user nginx; # 配置nginx worker进程个数 #worker_proces ...
- MySQL-linux系统下面的配置文件
一般linux 上都放在 /etc/my.cnf ,window 上安装都是默认可能按照上面的路径还是没找到, window 上 可以登录到mysql中 使用 show variables ...
- 洛谷 P2827 蚯蚓 题解
每日一题 day32 打卡 Analysis 我们可以想一下,对于每一秒除了被切的哪一个所有的蚯蚓都增长Q米,我们来维护3个队列,队列1表示最开始的蚯蚓,队列2表示每一次被切的蚯蚓被分开的较长的那一部 ...
- Linux 下查看内存使用情况方法总结
Linux查看CPU和内存使用情况:http://www.cnblogs.com/xd502djj/archive/2011/03/01/1968041.html 在做Linux系统优化的时候,物理内 ...
- PHP CURL 错误码说明
curl_setopt($ci, CURLOPT_HEADERFUNCTION, array($this, 'getHeader'));//一般不加 <?php return [ '1'=> ...