文章出處

一. 系統信息
ThinkPHP 內置多語言支持,如果涉及到國際化的支持,那么可以定義相關的語言包文
件。任何字符串形式的輸出,都可以定義語言常量。
要啟用多語言功能,需要配置開啟多語言行為,在應用配置目錄中:

1 //在應用模塊 Weibo 下 Common/Conf 建立 tags.php
2  return  array(
3 'app_begin'=> array('Behavior\CheckLangBehavior'),
4 );

PS:這個行為主要是檢測多語言功能。

 

在 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 的:

 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 ,出現的為:

這時我們改地址欄為: http://localhost/demo39/user/test ,這時出現的還是上面的英文顯示信息,

這時因為這時輸出的錯誤信息是保存在cookie里面的,我們把地址欄改為: http://localhost/demo39/user/test?lang=zh-cn 

這時顯示就為中文了:

 

ThinkPHP 系統提供了三個默認語言包,分別是簡體中文、英文、繁體中文。而這三種
語言包保存在:Think\Lang 下。


我們想顯示系統提示信息,可以通過 L()方法來傳入多語言變量。

在 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 ,則顯示為:

該功能可用來改變網頁顯示中文還是英文界面


文章列表




Avast logo

Avast 防毒軟體已檢查此封電子郵件的病毒。
www.avast.com


arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()