php gettext
安装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