[PHP-ZF] Zend_Translate 試用報告

分類: 技術分享 作者: abu

11 6 月 2009

Zend_Translate 是Zend框架用來支援多語言開發的一個物件。

PS:以下試作是用Wacow Framework系統 ( 你可以在這裡找到他 )

1. path\app\etc\config.ini,加上

locale        = "zh_TW"
localeMode    = true

2. path\app\etc\defination.php,加上,位置隨意,但是要注意WF_LOCALE_PATH必須在WF_APP_PATH定義之後

define('WF_LOCALE_TYPE', 'ini');
define('WF_LOCALE_PATH', WF_APP_PATH  . '/locale');

3. 接著是path\app\lib\App\Bootstrap.php,找到run函式,在最後加上

$configIni  = new Zend_Config_Ini(self::$_setting['path'], null, null);
$locale = $configIni->application->locale;
Zend_Registry::set('Zend_Translate', new Zend_Translate(WF_LOCALE_TYPE, WF_LOCALE_PATH.'/'.$locale.'.'.WF_LOCALE_TYPE, 'zh_TW'));

4. path\app\路徑下建立,資料夾"locale"

5. path\app\locale\路徑下,建立檔案"zh_TW.ini",內容填入"hello_world = 您好"

6. 最後是path\app\lib\Wacow\View\Html\Smarty.php,將_run函式前段改寫

$this->strictVars(true);
 
$configIni  = new Zend_Config_Ini(WF_CONFIG_PATH, null, null);
$localeMode = $configIni->application->localeMode;
 
// assign variables to the template engine
$vars = get_object_vars($this);
foreach ($vars as $key => $value) {
      if ('_' != substr($key, 0, 1)) {
            // for locale
            if(!is_array($value) && $localeMode) $value = $this->translate($value);
 
            $this->_smarty->assign($key, $value);
      }
}

7. 使用方式:樣板插入參數方式和之前一樣,$this->view->hello_world = 'hello_world'; 但此時樣板輸入的hello_world會自動轉為"您好",不需要轉換語系時,只要將config.ini中localeMode設為false即可,若要加入其他語言,只要依樣畫葫蘆,設定local = '語系名稱',並在path\app\locale\加入'語系.ini',相當簡易。

- 以上報告完畢 -

我要留言

關於這裡

這個部落格分享了哇寶在電子商務領域的技術及資訊,希望能讓更多人一起為台灣的網路產業加油。