我絕不是專家,但這就是我所做的。
我使用數組作爲我的翻譯適配器,因爲它更容易讓我的客戶更新,因爲它們只是普通的Joes。我使用翻譯鍵而不是句子。例如 有些人會用
$this->translate(‘Some sentence to translate’);
我用
$this->translate(‘default-index-dashboard-title’);
這使得它更容易讓我知道我要找的文字改變。我不知道除此之外是否還有其他優點。
您需要在引導程序中設置翻譯適配器和翻譯緩存(如果需要)。我做我這樣的:
protected function _initLocale()
{
$locale = new Zend_Locale(Zend_Locale::BROWSER);
$config = Zend_Registry::get('config');
Zend_Registry::set('Zend_Locale', $locale->toString());
return $locale;
}
protected function _initTranslation()
{
try{
$translate = new Zend_Translate(array('adapter' => 'array', 'content' => ROOT . '/callmanagement/languages/' . strtolower(Zend_Registry::get('Zend_Locale')) . '.php'));
}catch(Exception $e){
$translate = new Zend_Translate(array('adapter' => 'array', 'content' => ROOT . '/callmanagement/languages/en_gb.php'));
}
Zend_Registry::set('Zend_Translate', $translate);
return $translate;
}
,除非網站是完全不同的,我會用一個代碼庫和共享數據存儲在一個數據庫,對本站有具體的東西其他數據庫。
你可以在bootstrap或congfig中設置多個db適配器。
$dbLocal = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => 'localhost',
'username' => $result['user'],
'password' => $result['password'],
'dbname' => $result['database']
));
Zend_Db_Table_Abstract::setDefaultAdapter($dbLocal);
$dbShared = new Zend_Db_Adapter_Pdo_Mysql(array(
'host' => 'localhost',
'username' => ‘root’,
'password' => 'pass',
'dbname' => 'dbname'
));
Zend_Registry::set('db_local', $dbLocal);
Zend_Registry::set('db_shared', $dbShared);
return $dbLocal;
你可以得到Zend表單來爲你翻譯,只需把你的翻譯鍵放到標籤字段。
$this->addElement(‘text’, ‘test’, array(‘label’ => ‘translation-key’, ‘required’ => true));
等
然後,如果你正在使用Zend_Db_Table_Abstract類,您可以更改默認的架構和數據庫連接這樣的:
class Default_Model_Table_Topics extends Zend_Db_Table_Abstract
{
protected $_name = 'topics';
protected $_id = 'topic_id';
protected $_rowClass = 'Default_Model_Topic';
protected $_schema = 'dbname';
protected $_adapter = 'db_shared';
}
如果您需要任何更多的例子,我會嘗試和幫助。
而不是使用'try {} catch(){}'我最好像這樣使用(http://framework.zend.com/manual/en/zend.translate.additional.html#zend.translate.additional .languages.automatic)'$ translate-> isAvailable('your-language-here')' – Poru 2011-03-11 20:17:15
$ this-> translate('default-index-dashboard-title'); 這樣你的回退字符串是default-index-dashboard-title,它對最終用戶沒有意義。通過這種方法,您應該小心並確保您有翻譯 – Xerkus 2011-03-12 07:32:32
這是事實,如果沒有可用的翻譯,大部分網站會回落到英語。它的任何你最舒服的。 – 2011-03-12 14:41:17