安装gettext:
ubuntu: apt-get install php-gettext, apt-get install gettext
window:开启扩展
修改locale :
$ /usr/share/i18n/locales //查看支持的语言
$ vi /etc/locale.gen //开启语言
$ locale-gen //是新设置的locale 生效
$ locale -a 查看目前支持的语言
example:
test.php:
<?php
str='home';
xgettext -a test.php -o test.pot
exportLANG=zh_CN.utf8
msginit -l zh_CN.utf8 -i test.pot
生成了相应的zh_CN.po文件


将这两个文件,移动到对应的文件夹中
var/www/test/locale/LC_MESSAGES
index.php
$lang = 'tw';
putenv('LANG=zh_TW');
setlocale(LC_ALL, 'zh_TW');
$lang = isset($_GET['lang']) ? $_GET['lang'] : 'tw';
if ('tw' == $lang) {
putenv('LANG=zh_TW');
setlocale(LC_ALL, 'zh_TW'); // bsd use zh_TW.UTF-8
} else if ('cn' == $lang) {
putenv('LANG=zh_CN');
setlocale(LC_ALL, 'zh_CN'); // bsd use zh_CN.UTF-8
} else if ('en' == $lang) {
putenv('LANG=en_US');
setlocale(LC_ALL, 'en_US');
}
define('PACKAGE', 'hello'); // package其实是.mo文件的文件名称,比如是zj.mo那么我们写的时候只需要些(PACKAGE:zj)
// gettext setting
bindtextdomain(PACKAGE, 'locale'); // or $your_path/locale, ex: /var/www/test/locale
textdomain(PACKAGE);//sets default domain ××我在这里栽了一个跟头,.mo的文件名称要和项目包的名称一样,这样才可以,
// main program
echo gettext("Hello World!");
echo '<br>';
echo _("This is book.");
echo '<br>';
echo _("Hello World!");
1、string gettext ( string $message )
looks up a message in the current domain
2、bool putenv ( string $setting )
Setting certain environment variables may be a potential security breach
3、string setlocale ( int $category , string $locale [, string $... ] )
string setlocale ( int $category , array $locale ) set locale information