成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端
本文將總結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

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為通過cookiesession獲得的頁面語言值

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優化及高效提速問題小結
  2. 在PHP中如何判斷AJAX請求
  3. PHP優化及高效提速問題小結
責任編輯:彭凡 來源: 網易博客
相關推薦

2009-01-19 09:06:31

gettextPHP國際化編程

2011-04-22 09:46:59

ASP.NET

2009-10-27 14:36:50

PHP 6Unicode編程

2011-05-17 09:39:38

JavaSE

2011-07-08 11:13:42

Cocoa Touch XCode

2011-08-29 09:48:30

springMVC

2010-03-02 16:44:59

CentOS Mono

2010-07-28 14:52:29

Flex國際化

2024-05-17 08:25:06

數據驅動React語言包

2024-01-17 10:16:22

前端國際化消息鍵

2023-01-31 10:29:26

JavaScript國際化國際化庫

2010-01-04 13:09:51

Silverlight

2011-08-19 13:13:14

struts2Java

2009-06-25 16:04:30

2009-06-03 08:30:30

禚佳春法航華為

2024-01-04 08:16:34

Spring國際化標準

2017-01-09 16:24:07

滴滴Android 端 App

2022-07-27 10:39:14

Spring代碼IDEA

2009-02-04 15:04:13

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产麻豆 | 国产欧美精品区一区二区三区 | 日韩不卡一二区 | 日本黄色大片免费看 | 观看毛片 | 国产欧美日韩一区 | 欧美13videosex性极品 | 日韩精品一区二区三区久久 | 黄色片在线观看网址 | www.久久精品视频 | 在线播放国产一区二区三区 | 成人精品啪啪欧美成 | 国产精品国产精品国产专区不片 | 欧美激情精品久久久久久变态 | 午夜精品一区二区三区在线视频 | 在线观看亚洲欧美 | 久久久久久久av | 美女拍拍拍网站 | 精精国产xxxx视频在线播放7 | 精品欧美一区二区精品久久久 | 久久久久九九九女人毛片 | 色婷婷一区 | 日韩免费激情视频 | 91精品国产一二三 | 亚洲一区二区久久 | 久久i | 成人av一区| 91久久久久久久久久久久久 | 天天操天天射综合网 | 午夜精品一区二区三区在线视 | 欧美国产精品一区二区三区 | 男女羞羞视频大全 | 精品影院 | 亚洲精品1 | 亚洲成av人片在线观看无码 | 成人午夜精品 | 综合久久色 | 成人一级黄色毛片 | 91在线一区二区 | 免费人成激情视频在线观看冫 | 成人午夜黄色 |