Я ни в коем случае не эксперт, но это то, чем я занимаюсь.
Я использую массив в качестве адаптера перевода, потому что моим клиентам проще обновляться, поскольку они просто обычные 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;
}
Я бы использовал одну кодовую базу, если бы сайты не отличались полностью и не хранили общие данные в одной базе данных и не имели бы других баз данных для конкретного сайта.
Вы можете настроить несколько адаптеров БД либо в начальной загрузке, либо в congfig.
$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 Form для перевода, просто поместив свой ключ перевода в поле метки.
$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';
}
Если вам нужноеще примеры попробую помочь.