1
내 젠드 프레임 워크 응용 프로그램에서 gedmo translatable 확장 기능을 사용할 수 있습니다. 다음 코드는 ext_translations 테이블을 만들고 번역 된 기사를 테이블에 삽입한다는 의미입니다.교리 확장 (Gedmo) 번역 가능 - 현재 로케일을 기반으로 번역 된 엔티티를 표시하는 방법
$article = new \App\Entity\Article;
$article->setTitle('my title in en');
$article->setContent('my content in en');
$this->_em->persist($article);
$this->_em->flush();
//// first load the article
$article = $this->_em->find('App\Entity\Article', 1 /*article id*/);
$article->setTitle('my title in de');
$article->setContent('my content in de');
$article->setTranslatableLocale('de_de'); // change locale
$this->_em->persist($article);
$this->_em->flush();
// first load the article
$article = $this->_em->find('App\Entity\Article', 1 /*article id*/);
$article->setTitle('my title in es');
$article->setContent('my content in es');
$article->setTranslatableLocale('es_es'); // change locale
$this->_em->persist($article);
$this->_em->flush();
$article = $this->_em->getRepository('App\Entity\Article')->find(1/* id of article */);
echo $article->getTitle();
// prints: "my title in en"
echo $article->getContent();
// prints: "my content in en"
위의 내용은 내가 코멘트에 포함 시켰던 것을 인쇄하고 인쇄합니다. 그러나 응용 프로그램 로캘을 es_ES로 변경하면 동일한 출력이 제공되며 로캘의 변경 사항을 알 수없는 것처럼 보입니다. 내가 여기서 무엇을 놓치고
public function _initLocale() {
$session = new Zend_Session_Namespace('myswaplocalesession');
if ($session->locale) {
$locale = new Zend_Locale($session->locale);
}
$config = $this->getOptions();
if (!isset($locale) || $locale === null) {
try {
$locale = new Zend_Locale(Zend_Locale::BROWSER);
} catch (Zend_Locale_Exception $e) {
$locale = new Zend_Locale($config['resources']['locale']['default']);
}
}
Zend_Registry::set('Zend_Locale', $locale);
echo $locale;
$translator = new Zend_Translate('gettext', APPLICATION_PATH . '/../data/lang/',
null, array('scan' => Zend_Translate::LOCALE_FILENAME, 'disableNotices' => 1));
Zend_Registry::set('Zend_Translate', $translator);
Zend_Form::setDefaultTranslator($translator);
}
: 내 부트 스트랩에서
, 그것은 다음과 같이 설정되어 있습니까?
안녕하세요, 저는이 아이디어를 좋아하지만이 오류를 얻을 : 잘못된 방법 "getDoctrine '메시지'Zend_Application_Bootstrap_Exception : 'catch되지 않은 예외 치명적인 오류' " 'in /var/www/testsite/library/Zend/Application/Bootstrap/BootstrapAbstract.php on line 605' – dimbo
상당히 뒤죽박죽으로 난 부트 스트랩에서 이벤트 관리자의 인스턴스를 얻을 수있었습니다 (내 다른 질문 중 하나를 참조하십시오. 세부 사항), 아직 초기화되지 않았으므로 번역 가능한 리스너를 부트 스트랩에서 사용할 수 없습니다. 부트 스트랩에 너무 수렁에 빠지면 안되는 또 다른 방법이 있어야한다고 생각합니다. 나중에 레지스트리에서 로케일 값을 변환 할 수 있습니까? – dimbo