国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 開(kāi)發(fā) > ThinkPHP > 正文

ThinkPHP 多語(yǔ)言配置

2024-09-09 15:20:09
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

ThinkPHP 內(nèi)置了對(duì)多語(yǔ)言的支持,如果應(yīng)用項(xiàng)目涉及到國(guó)際化,那么可以定義相關(guān)的語(yǔ)言包文件以實(shí)現(xiàn)多語(yǔ)言支持,這里涉及的多語(yǔ)言支持是指模板語(yǔ)言,數(shù)據(jù)的多語(yǔ)言轉(zhuǎn)換(翻譯)不在這個(gè)范疇之內(nèi).

在項(xiàng)目配置文件里添加如下參數(shù)以開(kāi)啟多語(yǔ)言的支持:

  1. 'LANG_SWITCH_ON' => true, //開(kāi)啟多語(yǔ)言支持開(kāi)關(guān) 
  2. 'DEFAULT_LANG' => 'zh-cn'// 默認(rèn)語(yǔ)言 
  3. 'LANG_AUTO_DETECT' => true, // 自動(dòng)偵測(cè)語(yǔ)言 

ThinkPHP 會(huì)自動(dòng)判斷當(dāng)前用戶的瀏覽器支持語(yǔ)言來(lái)定位該使用何種語(yǔ)言包,如果找不到相關(guān)的語(yǔ)言包文件,會(huì)使用默認(rèn)語(yǔ)言,如果瀏覽器支持多種語(yǔ)言,那么取第一種支持語(yǔ)言.

除了自動(dòng)偵測(cè)當(dāng)前用戶的瀏覽器語(yǔ)言之外,也可以在 URL 中指定使用何種語(yǔ)言,詳細(xì)見(jiàn)下面例子.

與多語(yǔ)言有關(guān)的文件包或目錄如下:

ThinkPHP系統(tǒng)簡(jiǎn)體中文語(yǔ)言包:ThinkPHP系統(tǒng)目錄/Lang/zh-cn.php

ThinkPHP系統(tǒng)繁體中文語(yǔ)言包:ThinkPHP系統(tǒng)目錄/Lang/zh-tw.php

ThinkPHP系統(tǒng)美國(guó)英語(yǔ)語(yǔ)言包:ThinkPHP系統(tǒng)目錄/Lang/en-us.php

項(xiàng)目簡(jiǎn)體中文語(yǔ)言包目錄:項(xiàng)目目錄/Lang/<項(xiàng)目分組/>zh-cn/

項(xiàng)目繁體中文語(yǔ)言包目錄:項(xiàng)目目錄/Lang/<項(xiàng)目分組/>zh-tw/

項(xiàng)目美國(guó)英語(yǔ)中文語(yǔ)言包目錄:項(xiàng)目目錄/Lang/<項(xiàng)目分組/>en-us/

如果有更多語(yǔ)言,可以按照例子依次創(chuàng)建文件或目錄即可。

項(xiàng)目多語(yǔ)言實(shí)例

下面以一個(gè)中英雙語(yǔ)的例子來(lái)看項(xiàng)目多語(yǔ)言支持的具體實(shí)現(xiàn).

在項(xiàng)目目錄/Lang/zh-cn/ 下創(chuàng)建 common.php 文件,并在內(nèi)設(shè)定簡(jiǎn)體中文語(yǔ)言定義:

  1. <?php 
  2. return array
  3. 'welcome'=>'歡迎使用 ThinkPHP !'
  4. 'message'=>'這是一條測(cè)試消息!'
  5. ); 
  6. ?> 

在項(xiàng)目目錄/Lang/en-us/ 下創(chuàng)建 common.php 文件,并在內(nèi)設(shè)定美國(guó)英語(yǔ)語(yǔ)言定義:

  1. <?php 
  2. return array
  3. 'welcome'=>'Welcome to ThinkPHP!'
  4. 'message'=>'This is a test message!'
  5. ); 
  6. ?> 

在操作中(如 Index 模塊 lang 操作)中:

  1. public function lang(){ 
  2. $this->assign('message', L('message')); 
  3. $this->display(); 
  4. 對(duì)應(yīng)的模板(Tpl/default/Index/lang.html): 
  5. <p>{$Think.lang.welcome}</p> 
  6. <p>{$message}</p> 
  7. <p>切換到:<a href="?l=zh-cn">簡(jiǎn)體中文</a> | <a href="?l=en-us">English</a></p> 

當(dāng)我們?cè)L問(wèn)該操作時(shí),系統(tǒng)會(huì)根據(jù)當(dāng)前瀏覽器語(yǔ)言來(lái)自動(dòng)獲取對(duì)應(yīng)的語(yǔ)言包內(nèi)容,上面的例子中,直接在模板中顯示的內(nèi)容使用 {$Think.lang.welcome} 來(lái)輸出,而在操作中獲取語(yǔ)言包內(nèi)容時(shí),需要使用 L 快捷方法,當(dāng)點(diǎn)擊 English 鏈接時(shí),由于 URL 中傳入了 l=en-us 參數(shù),系統(tǒng)會(huì)獲取對(duì)應(yīng)的英語(yǔ)語(yǔ)言包,從而顯示:

Welcome to ThinkPHP!This is a test message!

L 快捷方法

L 快捷方法用于獲取和設(shè)置語(yǔ)言定義,語(yǔ)法如下:

L(name,value)

如果 name 和 value 參數(shù)都存在時(shí),表示設(shè)定語(yǔ)言變量名 name=value,當(dāng) value 省略時(shí),表示獲取 name 語(yǔ)言變量對(duì)應(yīng)的值,若 name 未定義時(shí),將 name 以大寫(xiě)返回.

模塊定義語(yǔ)言包

當(dāng)項(xiàng)目比較大時(shí),可能需要按照模塊來(lái)定義語(yǔ)言包,按照模塊定義語(yǔ)言包時(shí),語(yǔ)言包名字就是對(duì)應(yīng)的模塊名字(小寫(xiě)),如給 User 模塊定義語(yǔ)言包時(shí),對(duì)應(yīng)的語(yǔ)言包文件為:項(xiàng)目目錄/Lang/zh-cn/user.php.

對(duì)模塊定義語(yǔ)言包時(shí),使用上與上面普通定義方式完全一致,當(dāng)模塊語(yǔ)言包與普通語(yǔ)言包有相同的語(yǔ)言定義項(xiàng)時(shí),模塊語(yǔ)言包的定義會(huì)覆蓋普通方式的定義.

項(xiàng)目模型里使用語(yǔ)言包

項(xiàng)目多語(yǔ)言支持中除了模板和模塊操作要用到語(yǔ)言包之外,在模型類里也可能需要用到語(yǔ)言包(如自動(dòng)驗(yàn)證的提示信息),要在項(xiàng)目模型里使用語(yǔ)言包,只需將原來(lái)寫(xiě)入驗(yàn)證規(guī)則的提示信息更改為:

array('title','require','{%vali_title}',1),

vali_title 是項(xiàng)目語(yǔ)言包里面定義的語(yǔ)言變量,如同例子上面定義 welcome 和 message 一樣,如果想測(cè)試多語(yǔ)言的效果,可以在表單提交的時(shí)候傳入 l 參數(shù):

<form action="__URL__/insert/l/en-us" method="post">

注意:在提交表單里不可像前面列子使用 __URL__/insert?l=en-us 這種參數(shù)傳入形式,否則會(huì)導(dǎo)致“表單令牌錯(cuò)誤”.

由于 ThinkPHP 具有自動(dòng)檢測(cè)瀏覽器使用語(yǔ)言的功能,因此一般不需要在 URL 中傳入 l 參數(shù),當(dāng)然這不是絕對(duì)的,可以根據(jù)實(shí)際情況來(lái)決定.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 楚雄市| 安吉县| 万山特区| 沙湾县| 柳江县| 泰州市| 离岛区| 江津市| 宕昌县| 通山县| 砚山县| 荆门市| 衡南县| 秦皇岛市| 绍兴县| 翁源县| 呼和浩特市| 武汉市| 湟中县| 鄂尔多斯市| 高淳县| 梧州市| 永登县| 永平县| 新沂市| 张家川| 平和县| 多伦县| 盐城市| 阳曲县| 固原市| 常熟市| 建昌县| 和田县| 阳新县| 金沙县| 花莲市| 迁西县| 鹤岗市| 泰顺县| 滁州市|