Wabow Information Inc. Blog
分類: 技術分享 作者: abu
11 六月 2009Zend_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',相當簡易。
- 以上報告完畢 -