0

젠드 버전 1.12의 젠드 프레임 워크 프로젝트가 있습니다. 저는 XML 파일과 함께 zend_navigation을 사용하고 gettext 어댑터와 함께 zend_translation을 사용하고 있습니다.Zend_navigation & Zend_translate href 속성이 언어 변경으로 전환되지 않습니다.

이 코드는 메인 메뉴 작성

echo '<ul class="nav1">'; 
foreach ($this->container as $page) { 
    // check if it is active (not recursive) 
    $isActive = $page->isActive(false); 
    $liClass = $isActive ? ' class="active"' : ''; 
    echo '<li ' . $liClass . '>' . $this->menu()->htmlify($page); 
    // subnavigation in second layer 
    if (sizeof($page) > 0) { 
     echo '<ul class="subNavHead">'; 
     foreach ($page as $subpage) { 
      $isActive = $subpage->isActive(false); 
      $liClass = $isActive ? ' class="active"' : ''; 
      echo '<li ' . $liClass . '>' . $this->menu()->htmlify($subpage) . '</li>'; 
     } 
     echo '</ul>'; 
    } 
    echo '</li>'; 
} 
echo '</ul>'; 

을 그리고 여기 내 언어 선택 클래스입니다 : 내가 선택 상자와 언어를 변경하면

class AW_Controller_Plugin_LangSelector extends Zend_Controller_Plugin_Abstract { 
    public function preDispatch(Zend_Controller_Request_Abstract $request) { 
     $lang = $request->getParam('lang', ''); 

     if ($lang !== 'de' && $lang !== 'en' && $lang !== 'pl') 
      $request->setParam('lang', 'de'); 

     switch ($request->getParam('lang')) { 
      case 'de': 
       $locale = 'de'; 
       break; 
      case 'en': 
       $locale = 'en'; 
       break; 
      case 'pl': 
       $locale = 'pl'; 
       break; 
      default : 
       $locale = 'de'; 
       break; 
     } 

     $zl = new Zend_Locale(); 
     $zl->setLocale($locale); 
     Zend_Registry::set('Zend_Locale', $zl); 
     $translate = Zend_Registry::get('Zend_Translate'); 
     $translate->setLocale($zl); 
    } 

} 

내 사이트의 텍스트가 언어를 변경 하지만 탐색 목표는 변경되지 않습니다. 탐색 라벨도 변경됩니다.

나는 기본 언어입니다 : www.example.de/de/controller/action 을 그리고 나서 영어 에 언어를 전환은 -> 내 탐색의 HREF 속성은 이전 값 (www가 여전히 있습니다. example.de/de/controller/action)하지만 www.example.de/en/controller/action을 가져야합니다.

내 문제는 어디에 있습니까? 메뉴를 다시 렌더링하는 것을 잊었습니까?

답변

0

레이블 ('집', '문의처')이 변경되지만 링크 ('/', '/ contact-us')는 변경되지 않는다고 생각합니다. Zend_Menu가 메뉴 라벨에만 Zend_Translate를 사용하는 방식. 메뉴 대신의 URI MVC에 의해 작성되는 경우

, 당신은 $로 foreach는 ($ 페이지 "사이에, 이것은 당신의 탐색 렌더링에 갈 것

$page->setParam('lang', Zend_Registry::get('Zend_Locale')->getLocale()); 

라인을 추가하여 언어 값을 만들 수 있습니다 서브 페이지) { "및"에코 ".

메뉴에서 URI를 사용하는 경우 동일한 지점에서 HREF 페이지를 대체 할 수 있습니다.

질문에 대한 오해가 있고 메뉴의 링크 또는 레이블을 번역하지 않은 경우 플러그인의 preDispatch 전에 메뉴가 실행 중인지 확인하고 확인하십시오.

+0

대단히 감사합니다. :) – Tomben