나는 전문가는 아니지만 이것이 내가하는 일이다.
내 고객이 정규 Joes 일 때 쉽게 업데이트 할 수 있기 때문에 필자는 번역 어댑터로 array를 사용합니다. 그리고 문장 대신 번역 키를 사용합니다. 예를 를 들어 어떤 사람들은 내가 이것은 내가 찾고 텍스트를 변경하는 경우 알려하는 것이 훨씬 쉽게
$this->translate(‘default-index-dashboard-title’);
를 사용
$this->translate(‘Some sentence to translate’);
사용할 수 있습니다. 그래도 다른 장점이 있는지 나는 모른다.
부트 스트랩에 번역 어댑터와 번역 캐시를 설치해야합니다 (원하는 경우). 나는이 같은 광산을 수행
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에서 여러 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 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';
}
나는 시도하고 도움이됩니다.
'try {} catch() {}'대신에 다음과 같이 사용하는 것이 좋습니다 (http://framework.zend.com/manual/en/zend.translate.additional.html#zend.translate.additional .languages.automatic)'$ translate-> isAvailable ('your-language-here')' – Poru
$ this-> translate ('default-index-dashboard-title'); 이렇게하면 fallback 문자열은 default-index-dashboard-title이며 최종 사용자에게는 의미가 없습니다. 이 접근법을 사용하면 조심해야하고 번역이 있는지 확인해야합니다. – Xerkus
사실 번역본이 없으면 대부분의 사이트가 영어로 바뀝니다. 무엇이든 당신이 가장 편안합니다. –