安装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
1 $lang = 'tw';
2 putenv('LANG=zh_TW');
3 setlocale(LC_ALL, 'zh_TW');
4
5 $lang = isset($_GET['lang']) ? $_GET['lang'] : 'tw';
6
7 if ('tw' == $lang) {
8 putenv('LANG=zh_TW');
9 setlocale(LC_ALL, 'zh_TW'); // bsd use zh_TW.UTF-8
10 } else if ('cn' == $lang) {
11 putenv('LANG=zh_CN');
12 setlocale(LC_ALL, 'zh_CN'); // bsd use zh_CN.UTF-8
13 } else if ('en' == $lang) {
14 putenv('LANG=en_US');
15 setlocale(LC_ALL, 'en_US');
16 }
17
18 define('PACKAGE', 'hello'); // package其实是.mo文件的文件名称,比如是zj.mo那么我们写的时候只需要些(PACKAGE:zj)
19
20 // gettext setting
21 bindtextdomain(PACKAGE, 'locale'); // or $your_path/locale, ex: /var/www/test/locale
22 textdomain(PACKAGE);//sets default domain ××我在这里栽了一个跟头,.mo的文件名称要和项目包的名称一样,这样才可以,
23
24
25 // main program
26 echo gettext("Hello World!");
27 echo '<br>';
28 echo _("This is book.");
29 echo '<br>';
30 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