真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

PHPSmarty如何通過(guò)gettext加強(qiáng)國(guó)際化的總結(jié)

本篇文章給大家分享的是有關(guān)PHP Smarty如何通過(guò)gettext加強(qiáng)國(guó)際化的總結(jié),小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。

為市中等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及市中網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、市中網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

一、采用gettext,由于Smarty有相應(yīng)得gettext的插件,所以就直接用這個(gè)插件了

步驟如下:

1.1  在公共的包含文件中加入如下的代碼:

//$domain_info['lang']為cookie傳進(jìn)來(lái)的語(yǔ)言設(shè)定值
$language_code = $domain_info['lang'];
//界面語(yǔ)言設(shè)置成中文
if($language_code == 'zh_CN')
{
//設(shè)置目標(biāo)語(yǔ)言
putenv("LANG=$language_code");
setlocale(LC_ALL, $language_code);
//$package為mo文件的名字
$package = 'i18n_zh';
//綁定mo文件的路徑
bindtextdomain($package, '/var/locale');
//設(shè)置搜索的mo文件的文件名
textdomain($package);
//指定mo文件的返回到gettext的編碼
bind_textdomain_codeset($package, 'UTF-8');
}
elseif($language_code == 'BIG5')
{
//界面語(yǔ)言設(shè)置成繁體
$language_code = 'zh_TW';
putenv("LANG=$language_code");
setlocale(LC_ALL, $language_code);
$package = 'i18n_tw';
bindtextdomain($package, '/var/locale');
textdomain($package);
bind_textdomain_codeset($package, 'UTF-8');
}
else
{
//界面語(yǔ)言是英文
//設(shè)置目標(biāo)語(yǔ)言
putenv("LANG=$language_code");
setlocale(LC_ALL, $language_code);
//$package為mo文件的名字
$package = 'i18n_en';
//綁定mo文件的路徑
bindtextdomain($package, '/var/locale');
//設(shè)置搜索的mo文件的文件名
textdomain($package);
//指定mo文件的返回到gettext的編碼
bind_textdomain_codeset($package, 'UTF-8');
}
//*********添加國(guó)際化語(yǔ)言的處理結(jié)束***************/

1.2 相應(yīng)的模版中加入smarty插件要求的t標(biāo)簽

1.3 用smarty插件提供的工具 生成c文件

這個(gè)c文件是把所有的模版中加了標(biāo)簽的串提取出來(lái)了

php -q ./tsmarty2c.php  *.html  $package.c

注意:默認(rèn)的c文件的名和1.1中定義的***一樣

需要注意的是tsmarty2c.php中定義的 smarty的open tag 和close  tag 必須與smarty配置文件設(shè)置的一致

1.4 調(diào)用linux系統(tǒng)得xgettext把1.3中的c文件生成后綴為po的文件

xgettext -d $package    $package.c

注意:如果文件不是Asc編碼的 還得在上面地命令中指明

--file-code=文件編碼

1.5 編輯1.4中生成的$package.po ,加入相應(yīng)的翻譯對(duì)應(yīng)串

有幾種語(yǔ)言,就的分別編輯生成幾個(gè)po文件

1.6 調(diào)用linux系統(tǒng)得msgfmt把1.3中的1.5中的po文件生成后綴為mo的 二進(jìn)制文件

msgfmt -o $package.mo $package.po

1.7 建立locale目錄,要與1.1 中的bindtextdomain($package, '/var/locale');設(shè)置一樣

以1.1中的為例,首先在/var/( 已有的)目錄下建立locale目錄,locale的結(jié)構(gòu)為

|-- en_US
|   `-- LC_MESSAGES
|
|-- $package.mo
|
|-- zh_CN
|   `-- LC_MESSAGES
|
|-- $package.mo
|
`-- zh_TW
`-- LC_MESSAGES
|-- $package.mo

其中的***層目錄是按1.1 中的$language_code的定義設(shè)的,必須這樣,否則找不到,第二層目錄LC_MESSAGES是固定的,里面存放1.6 中生成的mo文件

二、由于是網(wǎng)站用的是Smaty,我們可以把模板中的文字都提取出來(lái),集中放到語(yǔ)言文件中
通過(guò)smarty的config_load來(lái)加載,前提把語(yǔ)言文件放到$smarty->config_dir所設(shè)定的目錄中
只要在php中包含 ,如下的代碼,

$smarty->config_load( 'chs.lang' );//$lang為通過(guò)cookie或session獲得的頁(yè)面語(yǔ)言值switch ($lang) {case 'zh-cn' :   $smarty->config_load( 'chs.lang' );break;     case 'zh-tw' :   header( 'cht.lang' );break;   default:header( 'cht.lang' );break;   }

以上就是PHP Smarty如何通過(guò)gettext加強(qiáng)國(guó)際化的總結(jié),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站標(biāo)題:PHPSmarty如何通過(guò)gettext加強(qiáng)國(guó)際化的總結(jié)
分享網(wǎng)址:http://weahome.cn/article/gdejei.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部