一. 系統信息
ThinkPHP 內置多語言支持,若是涉及到國際化的支持,那麼能夠定義相關的語言包文
件。任何字符串形式的輸出,均可以定義語言常量。
要啓用多語言功能,須要配置開啓多語言行爲,在應用配置目錄中:php
1 //在應用模塊 Weibo 下 Common/Conf 創建 tags.php 2 return array( 3 'app_begin'=> array('Behavior\CheckLangBehavior'), 4 );
PS:這個行爲主要是檢測多語言功能。html
在 WeiBo/Common/Conf/config.php 中進行語言配置:瀏覽器
1 //開啓語言包功能 2 'LANG_SWITCH_ON' => true, 3 //自動偵測語言 開啓多語言功能後有效 4 'LANG_AUTO_DETECT' => true, 5 //容許切換的語言列表 用逗號分隔 6 'LANG_LIST' => 'zh-cn,en-us', 7 //默認語言切換變量 8 'VAR_LANGUAGE' => 'lang',
這時咱們開始檢測,首先在 WeiBo/Home/Controller/UserController.class.php 中是沒有 test 的:cookie
1 <?php 2 3 namespace Home\Controller; 4 use Think\Controller; 5 6 class UserController extends Controller { 7 public function index() { 8 9 } 10 }
而後咱們在瀏覽器的地址欄中輸入: http://localhost/demo39/user/test?lang=en-us ,出現的爲:app
這時咱們改地址欄爲: http://localhost/demo39/user/test ,這時出現的仍是上面的英文顯示信息,函數
這時由於這時輸出的錯誤信息是保存在cookie裏面的,咱們把地址欄改成: http://localhost/demo39/user/test?lang=zh-cn 網站
這時顯示就爲中文了:spa
ThinkPHP 系統提供了三個默認語言包,分別是簡體中文、英文、繁體中文。而這三種
語言包保存在:Think\Lang 下。code
咱們想顯示系統提示信息,能夠經過 L()方法來傳入多語言變量。orm
在 WeiBo/Home/Controller/UserController.class.php 中寫入代碼:
1 //設置語言定義的鍵值對 2 L('name', 'Lee'); 3 echo L('name');
這時可輸出: Lee ;
1 public function index() { 2 echo L('_MODULE_NOT_EXIST_'); 3 }
這是在 WeiBo/Home/Controller/UserController.class.php 中新建函數:
1 public function lang() { 2 setcookie('think_language','zh-cn'); 3 }
而後在瀏覽器地址欄輸入 http://localhost/demo39/user/lang 對lang函數編譯,而後在 http://localhost/demo39/user/ 中
對index函數編譯一次,會輸出: 沒法加載模塊 ,這時改變 setcookie('think_language','en-us');
這時再編譯lang函數後再編譯index函數,則輸出: Module can't be loaded
若是配置好多語言,會自動生成一個 think_language 的 cookie,默認的值是 zh-cn,
咱們在開發網站的時候,一旦遇到錯誤,顯示中文提示的錯誤信息。
若是想顯示其它的的語言包,那麼能夠採用 URL 的方式來切換:
http://localhost/demo39/User/?lang=en-us
二.應用信息
除了系統開發信息的語言包,咱們用的更多的是項目應用中的語言定義切換。好比,一
個表單支持中英文雙語結構。
除了以上的配置外,實現應用信息中英文切換須要在應用目錄進行配置。
第一步:在 Home 目錄下創建 Lang 目錄;
第二步:分別創建 zh-cn.php 和 en-us.php 兩個文件;
第三步:分別在兩個語言包編寫語言常量
在 zh-cn.php 中的代碼:
1 <?php 2 return array( 3 'form_user'=>'用戶', 4 'form_pass'=>'密碼', 5 'form_email'=>'郵箱', 6 'form_submit'=>'提交', 7 );
在 en-us.php 中的代碼:
1 <?php 2 return array( 3 'form_user'=>'user', 4 'form_pass'=>'pass', 5 'form_email'=>'email', 6 'form_submit'=>'submit', 7 );
而後在 WeiBo/Home/View/User/index.html 的代碼爲:
1 <form > 2 <p>{$Think.lang.form_user}:<input type="text" name="user" /></p> 3 <p>{$Think.lang.form_pass}:<input type="password" name="pass" /></p> 4 <p>{$Think.lang.form_email}:<input type="text" name="email" /></p> 5 <p><input type="submit" value="{$Think.lang.form_submit}" /></p> 6 </form>
在瀏覽器地址欄輸入: http://localhost/demo39/user/index?lang=en-us ,則顯示爲:
在瀏覽器中輸入: http://localhost/demo39/user/index?lang=zh-cn ,則顯示爲:
該功能可用來改變網頁顯示中文仍是英文界面