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

  
原文地址:https://www.cnblogs.com/zhangjun516/p/3140439.html