开始应用:

步骤一:搭建环境(服务器已经完成,环境已经搭建好了) 
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)的更多相关文章

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

    php gettext方式实现UTF-8国际化多语言(i18n) 一.总结 一句话总结: 二.php gettext方式实现UTF-8国际化多语言(i18n) 近 来随着i18n(国际化)的逐渐标准化 ...

  2. 学习window系统下的注册表

    一直不明白注册表是一个什么鬼,查了资料后大概明白了注册表到底有什么用,其实简单来说注册表就是一个存放系统.硬件.应用配置信息的数据ku.##### 一.注册表的来历在最早的视窗操作系统win3.x中, ...

  3. 模拟window系统的“回收站”

    若要模拟window系统的“回收站”功能,具体的要求如下: 对于列表中的图片,可以通过拖动或单击“删除”的链接,以动画的方式移至“回收站”. 对于“回收站的图片”,可以通过拖动和单击“还原”的链接,以 ...

  4. window系统的HOST详解

    很多用户都知道在Window系统中有个Hosts文件(没有后缀名),在Windows 98系统下该文件在Windows目录,在Windows 2000/XP系统中位于C\Winnt\System32 ...

  5. kvm安装window系统及使用NFS动态迁移

    验证是否开启虚拟化 # grep -E 'svm|vmx' /proc/cpuinfo - vmx is for Intel processors - svm is for AMD processor ...

  6. 用Window Authentication的方式去连接SQLServer

    用Window Authentication的方式去连接SQLServer Connection String: jdbc:sqlserver://${serverName};databaseName ...

  7. [实战经验]Macbook pro 苹果系统换window系统

    1.       Macbook的window软件驱动备份 通过Boot Camp助手进行window支持苹果驱动下载 2.       拆机把SSD固态硬盘放在主盘位置,把苹果的机械盘放在光驱位置 ...

  8. 在window系统下配置login.sql

    在window系统下配置login.sql 他的位置是登录用户的文件夹,我的win7系统位置是: C:\Users\Administrator 我的login.sql下载地址: http://file ...

  9. “canvas画布仿window系统自带画图软件"项目的思考

    "canvas画布仿window系统自带画图软件"项目的思考 首先贴上DEMO图,并没有美化效果.对UI有要求的,请自带补脑技术. 思考一 在做项目的过程中,我发现"工具 ...

随机推荐

  1. WSGI原理

    web_server: import socket import time import multiprocessing import re import mini_frame class WSGIS ...

  2. Django --- 常用字段及参数

    1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型 ...

  3. Oracle 记录下jdbc thin client module名称

    java.util.Properties props = new java.util.Properties(); props.setProperty("password",&quo ...

  4. Spring入门(四)——整合Mybatis

    1. 准备jar包及目录结构 2. 配置db.properties driver = com.mysql.jdbc.Driver url = jdbc:mysql://127.0.0.1:3306/H ...

  5. luogu 2592 区间dp

    \(f_{i, j, a, b}\) 表示当前一共有 \(i\) 人排队, \(j\) 名男生,男生数目 - 女生数目为 \(a\), 女生数目 - 男生数目为 \(b\),\(a, b >= ...

  6. 机器学习实战(1)- KNN

    KNN:k近邻算法-在训练样本中找到与待测样本距离相近的N个样本,并用这N个样本中所属概率最大的类别作为待测样本的类别. 算法步骤: 1.对训练中的样本数据的不同属性进行归一化处理. 2.计算待测样本 ...

  7. Windows系统清除占用的串口号列表批处理

    蛋疼总是无缘无故被占用 @echo off reg query "HKLM\SYSTEM\CurrentControlSet\Control\COM Name Arbiter" / ...

  8. Pytest权威教程21-API参考-07-配置选项(Configuration Options)

    目录 配置选项(Configuration Options) addopts cache_dir confcutdir console_output_style doctest_encoding do ...

  9. [转] Hadoop入门系列(一)Window环境下搭建hadoop和hdfs的基本操作

    转自:https://blog.csdn.net/qq_32938169/article/details/80209083 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载 ...

  10. MySQL 基础之一

    为了满足关系范式:通常一个大的数据集会拆成在一个库(集合内)中多张表表来存储,每一张表就是由行和列组成的二维关系,表与表之间也有关系,查询有时候需要做表链接,而表链接这个过程需要依赖于索引到各种算法来 ...