服务器支持第三方插件
1,安装第三方插件本身
centos: yum install gettext
ubuntu: apt-get install gettext
2,安装php对该插件的支持
1)cd /home/developer/php-5.6.5/ext/gettext
2)/usr/local/php-5.6/bin/phpize
3)./configure –with-php-config=/usr/local/php-5.6/bin/php-config
4)make
5)make install
6)cd /usr/local/php-5.6/lib/php/extensions/no-debug-non-zts-20131226 成功安装后会产生gettext.so
7)change php.ini add extension=gettext.so
8)ps -aux | grep php-fpm
9)killall php-fpm
10)/usr/local/php-5.6/sbin/php-fpm
初始化init gettext
$locale = 'zh_CN';
if( isset($_COOKIE['locale']) && in_array($_COOKIE['locale'], array('en_US', 'ko_KR', 'zh_CN')) ){
$locale = $_COOKIE['locale'];
}
else {
$_COOKIE['locale'] = $locale;
}
$charset='UTF-8';
setlocale(LC_ALL, "{$locale}.{$charset}");
if (!function_exists("gettext")) {
throw new \Exception('not support gettext');
}
$segment = 'home';
bindtextdomain($segment, LOCALEPATH);
textdomain($segment); //默认翻译源mo文件名
bindtextdomain('www_layout', LOCALEPATH); //共用的部分页面,指定翻译mo源文件
bindtextdomain('exception', LOCALEPATH); //非页面,exception翻译集合
前台页面gettext方法使用
<?php echo gettext('购物车');?> //默认当前$segment使用
不是连续的句子
<?php
function replaceLngMessage($msg, $replaces){
foreach($replaces AS $key=>$replace) {
$msg = str_replace("v:{$key};", $replace, $msg);
}
return $msg;
}
?>
<?php echo replaceLngMessage(gettext('您有¥v:0;余额可用'), array($blance));?>
共用Layout,Header,Footer,Siderbar指定翻译
<?php echo dgettext('www_layout', '在线客服');?>
页面都添加后,xgettext提取出po文件
xgettext -j –from-code=UTF-8 /home/projectA/host/www/control/home/index.view.php –default-domain=www_base –output-dir=/home/projectA/locale/en_US/LC_MESSAGES
-j 是附加的意思,第一次生成不需要添加这个参数
po编辑翻译后,生成mo文件
msgfmt -o /home/ProjectA/locale/en_US/LC_MESSAGES/www_base.mo /home/projectA/locale/en_US/LC_MESSAGES/www_base.po