日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
PHPSmarty通過gettext加強國際化的總結(jié)

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

成都創(chuàng)新互聯(lián)是專業(yè)的網(wǎng)站建設(shè)公司,提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)站設(shè)計等網(wǎng)站開發(fā)一體化解決方案;包括H5高端網(wǎng)站建設(shè),微信小程序開發(fā),網(wǎng)站定制,企業(yè)網(wǎng)站建設(shè),商城網(wǎng)站定制開發(fā),成都響應(yīng)式網(wǎng)站建設(shè),建網(wǎng)站,PHP網(wǎng)站建設(shè),軟件開發(fā),軟文發(fā)稿,網(wǎng)站營銷。歡迎做網(wǎng)站的企業(yè)前來合作洽談,成都創(chuàng)新互聯(lián)將竭誠為您服務(wù)!

步驟如下:

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

//$domain_info['lang']為cookie傳進來的語言設(shè)定值
$language_code = $domain_info['lang'];
//界面語言設(shè)置成中文
if($language_code == 'zh_CN')
{
//設(shè)置目標語言
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')
{
//界面語言設(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
{
//界面語言是英文
//設(shè)置目標語言
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');
}
//*********添加國際化語言的處理結(jié)束***************/

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

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

這個c文件是把所有的模版中加了標簽的串提取出來了

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

注意:默認的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)的翻譯對應(yīng)串

有幾種語言,就的分別編輯生成幾個po文件

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

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,我們可以把模板中的文字都提取出來,集中放到語言文件中
通過smarty的config_load來加載,前提把語言文件放到$smarty->config_dir所設(shè)定的目錄中
只要在php中包含 ,如下的代碼,

$smarty->config_load( 'chs.lang' );

//$lang為通過cookie或session獲得的頁面語言值

switch ($lang) {

case 'zh-cn' :  

$smarty->config_load( 'chs.lang' );

break;    

case 'zh-tw' :  

header( 'cht.lang' ); 

break;  

default: 

header( 'cht.lang' ); 

break;  

}

【編輯推薦】

  1. PHP優(yōu)化及高效提速問題小結(jié)
  2. 在PHP中如何判斷AJAX請求
  3. PHP優(yōu)化及高效提速問題小結(jié)

名稱欄目:PHPSmarty通過gettext加強國際化的總結(jié)
網(wǎng)頁地址:http://www.5511xx.com/article/dhpheho.html