中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP Smarty如何通過gettext加強國際化的總結

發布時間:2021-10-18 16:21:07 來源:億速云 閱讀:148 作者:柒染 欄目:編程語言

本篇文章給大家分享的是有關PHP Smarty如何通過gettext加強國際化的總結,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

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

步驟如下:

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

//$domain_info['lang']為cookie傳進來的語言設定值
$language_code = $domain_info['lang'];
//界面語言設置成中文
if($language_code == 'zh_CN')
{
//設置目標語言
putenv("LANG=$language_code");
setlocale(LC_ALL, $language_code);
//$package為mo文件的名字
$package = 'i18n_zh';
//綁定mo文件的路徑
bindtextdomain($package, '/var/locale');
//設置搜索的mo文件的文件名
textdomain($package);
//指定mo文件的返回到gettext的編碼
bind_textdomain_codeset($package, 'UTF-8');
}
elseif($language_code == 'BIG5')
{
//界面語言設置成繁體
$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
{
//界面語言是英文
//設置目標語言
putenv("LANG=$language_code");
setlocale(LC_ALL, $language_code);
//$package為mo文件的名字
$package = 'i18n_en';
//綁定mo文件的路徑
bindtextdomain($package, '/var/locale');
//設置搜索的mo文件的文件名
textdomain($package);
//指定mo文件的返回到gettext的編碼
bind_textdomain_codeset($package, 'UTF-8');
}
//*********添加國際化語言的處理結束***************/

1.2 相應的模版中加入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配置文件設置的一致

1.4 調用linux系統得xgettext把1.3中的c文件生成后綴為po的文件

xgettext -d $package    $package.c

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

--file-code=文件編碼

1.5 編輯1.4中生成的$package.po ,加入相應的翻譯對應串

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

1.6 調用linux系統得msgfmt把1.3中的1.5中的po文件生成后綴為mo的 二進制文件

msgfmt -o $package.mo $package.po

<P注意:每個PO隊應一個MO文件< P>

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

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

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

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

二、由于是網站用的是Smaty,我們可以把模板中的文字都提取出來,集中放到語言文件中
通過smarty的config_load來加載,前提把語言文件放到$smarty->config_dir所設定的目錄中
只要在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;   }

以上就是PHP Smarty如何通過gettext加強國際化的總結,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂平县| 齐河县| 栾城县| 崇仁县| 大方县| 霸州市| 清水县| 双桥区| 海淀区| 兰考县| 湖州市| 方城县| 山阳县| 武邑县| 松溪县| 仪陇县| 和平区| 阳曲县| 扎赉特旗| 介休市| 安丘市| 南汇区| 珠海市| 凭祥市| 张家界市| 惠来县| 翁源县| 衡阳县| 汕尾市| 大安市| 睢宁县| 二手房| 伊宁县| 滕州市| 日喀则市| 华阴市| 塔河县| 塔城市| 南康市| 叶城县| 吴江市|