2011-02-12 3 views
1

나는 다국어 웹 응용 프로그램을 개발 중입니다. XML 파일에서 가져온 메뉴 elemnts가 있지만 메뉴를 번역하는 방법을 모릅니다. 다른 한편,이 같은보기에서 사이트의 일반적인 내용을 번역 할 수 있습니다. :젠드 프레임 워크 메뉴 번역

<?=$this->translate->_('Members Login') 

내 부트 스트랩 파일 :

class Bootstrap extends Zend_Application_Bootstrap_Bootstrap 
{ 
    private $_acl = null; 
    private $_auth = null; 

    protected function _initAutoLoad() 
    { 
     $modelLoader = new Zend_Application_Module_Autoloader(array(
     'namespace' => '', 
     'basePath' => APPLICATION_PATH 
     )); 
     if (Zend_Auth::getInstance()->hasIdentity()) { 
      Zend_Registry::set('role', Zend_Auth::getInstance()->getStorage()->read()->role); 
     } else { 
      Zend_Registry::set('role', 'guest'); 
     } 
     $this->_acl = new Model_LibraryAcl(); 
     $this->_auth = Zend_Auth::getInstance(); 

     $fc = Zend_Controller_Front::getInstance(); 
     $fc->registerPlugin(new Plugin_AccessCheck($this->_acl, $this->_auth)); 
     return $modelLoader; 
    } 

    function _initViewHelpers() 
    { 
     $this->bootstrap('layout'); 
     $layout = $this->getResource('layout'); 
     $view = $layout->getView(); 

     $view->doctype('HTML4_STRICT'); 
     $view->headMeta()->appendHttpEquiv('Content-type','text/html;charset=UTF-8') 
         ->appendName('description','The Best Freelance Projects'); 

     $view->headTitle('Freelance Duty'); 

     $navContainerConfig = new Zend_Config_Xml(APPLICATION_PATH.'/configs/navigation.xml','nav'); 
     $navContainer = new Zend_Navigation($navContainerConfig); 
     $view->navigation($navContainer) 
       ->setAcl($this->_acl) 
       ->setRole(($this->_auth->getStorage()->read())?$this->_auth->getStorage()->read()->role:'guest') 
       ->findAllBy('class', 'nav_header'); 
    } 

    function _initSetTranslations() 
    { 
     $this->bootstrap('layout'); 
     $layout = $this->getResource('layout'); 
     $view = $layout->getView(); 

     $translate = new Zend_Translate('gettext',APPLICATION_PATH.'/languages/tr.mo','tr'); 
     $translate->setLocale('tr'); 
     $view->translate = $translate; 
     Zend_Registry::set('TranslationObject', $translate); 
    } 

} 

과 같은보기 메뉴의 총수 :

echo $this->navigation()->menu()->setUlClass('nav_header'); 
,369을

howto 번역 메뉴를 모른다. 의견이 있으십니까?

답변

2

Zend_Navigation을 사용할 때 제목과 레이블이 자동으로 번역 될 수 있습니다. reference guide을 확인하십시오. 헬퍼를 골라 Zend_Translate으로 설정하십시오.

편집 : 우선, 당신이 잘못된 두 가지 일을하고있는 코멘트에서 코드 :
1. setUseTranslator를 사용하고 그것으로 번역기 객체를 전달합니다. 하지만 setUseTranslator은 번역자를 사용할지 여부를 설명하는 부울 값을 사용합니다. 당신은 setTranslator 방법을 사용하여 번역기를 설정 : 사용 체인 전에

$view->navigation($navContainer) 
    //RB setUseTranslator is unnecessary, because it's true by deafult 
    ->setTranslator(Zend_Registry::get('TranslationObject')); 

2. 확인을, 그 메소드가 리턴 당신이 원하는 것을 반대 :

$view->navigation($navContainer) 
    ->setAcl($this->_acl) 
    ->setRole(($this->_auth->getStorage()->read())?$this->_auth->getStorage()->read()->role:'guest') 
    ->findAllBy('class', 'nav_header'); //that returns an array, not Zend_Navigation object! 

그래서 당신이 할 수 없습니다

$navigation->findAllBy('class', 'nav_header') 
      ->setUseTranslator(Zend_Registry::get('TranslationObject')); //wrong methid here, should be setTranslator, as mentioned above 

$navigation 개체에 setTranslator으로 전화하면 제대로 작동합니다.

+0

안녕하세요 싱글 @,이처럼 내 부트 스트랩 파일에 setUseTranslator을 사용했다 this -> _ auth-> getStorage() -> read())? $ this-> _ auth-> getStorage() -> read() -> role : 'guest') \t \t -> findAllBy ('class' 'nav_header') \t \t -> setUseTranslator (Zend_Registry :: get ('TranslationObject'))); TranslationObject는 XML 언어 콘텐츠 파일을위한 것입니다. 사용하기 위해 레지스트리 inorder에 보관하십시오 –

+0

코드를 다시 포맷하거나 질문을 더 잘 편집하십시오. 그리고 당신은 그것을 쓰지 않았다;) – singles

+0

고마워 @ 싱글, 나는 당신의 지시를 따르고 그것은 지금 작동합니다 :) –

0

Zend_Translate가 도움이 사전에

감사합니다. 여기를보십시오 : http://framework.zend.com/manual/en/zend.translate.html

+0

나는 부트 스트랩 파일에 zend_translate를 사용했다. 문제는 메뉴 변환에 관한 것이다. 메뉴 내용은 일정한 값이 아니기 때문에 동적으로 xml에서 나온다. –

+0

메뉴 항목은 XML에서 온 것이 중요하지 않다. PARSED 파일을 생성자'Zend_Navigation'에 전달하면 메뉴 레이블을 가져 와서 번역 할 수 있어야합니다. > SETACL ($이 - -> _ ACL) \t \t -> setRole (($'code' $보기 -> 탐색 ($ navContainer) \t \t : – singles