2014-10-20 4 views
0

나는 하나의 질문에 대해, ZF2 번역기에 대한 특정 경우에 costruction에서 langauge 변경 dunamically 사용자가 플래그 또는 메뉴 링크를 클릭하면 링크가 있습니다. 내 응용 프로그램/설정/module.config.php에서zf2 동적으로 언어 변경

이 코드가 있습니다

'service_manager' => array(
     'factories' => array(
      'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory', 
      'navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory', 
     ), 

    ), 

을 내 경로는 다음과 같습니다

return array(
    'router' => array(
     'routes' => array(

      'home' => array(
       'type' => 'Segment', 
       'options' => array(
        'route' => '/[:lang[/:action]]', 
        'constraints' => array(
         'lang' => '[a-zA-Z]*', 
         'action' => '[a-zA-Z][a-zA-Z0-9_-]*', 
        ), 
        'defaults' => array(
         'controller' => 'Application\Controller\Index', 
         'action'  => 'index', 
        ), 
       ), 
      ), 

그리고 내 응용 프로그램에서/Module.php 내가이 설정 부트 스트랩에 코드 :

public function onBootstrap(MvcEvent $e) 
    { 
     $sm = $e->getApplication()->getServiceManager(); 

     $router = $sm->get('router'); 
     $request = $sm->get('request'); 
     $matchedRoute = $router->match($request); 
     $params = $matchedRoute->getParams(); 

     if(isset($params['lang']) && $params['lang'] !== '') { 
      $translator = $e->getApplication()->getServiceManager()->get('translator'); 
      //or 
      //$translator = $e->getApplication()->getServiceManager()->get('MvcTranslator'); 

      if($params['lang'] == 'en') { 
       $translator->setLocale('en_US'); 
      } 
     } 

     $eventManager  = $e->getApplication()->getEventManager(); 
     $moduleRouteListener = new ModuleRouteListener(); 
     $moduleRouteListener->attach($eventManager); 
    } 

지금 내 경로 http://www.xxxx.com/it/index 또는 http://www.xxxx.com/it/company하지만 난 린을 만들 수 없습니다 k 내 응용 프로그램에서 내 언어 변경에 대한 내보기 ...

어떻게 진행하나요?

감사

당신은 다음과 같은 경우에만 lang 매개 변수 변경에 같은 페이지로 연결되는 링크를 만들 수 있습니다
+0

감사를 위해 ... 나는이 방법을 레졸 : [ZF2 세계적으로 layout.phtml 변수를 전달하는 방법] [1] [1] : HTTP ://stackoverflow.com/questions/18439364/how-to-pass-variables-to-layout-phtml-globally-in-zf2/18549487#18549487 –

답변

2

:

$this->url(null, array('lang' => $anotherLang), array(), true) 
+0

안녕하세요, 도움과 답변을 주셔서 감사합니다.하지만 조치를 설정할 수 없습니다. 내 URL에. 내 기본 레이아웃에는 영어 또는 이탈리아어로 변경 자체 페이지에 대한 두 개의 링크가 있지만 스크립트를 실행할 때 www.xxx.com/it/company 및 www.xxx.com/ 동안 www.xxxx.com/it 만 얻습니다. ko/회사. 내 컨트롤러에 뭔가있어? - –

1

는 그냥보기에이 작업을 수행 :

<a href="<?= $this->url($this->route, array('lang' => 'en'));?>"> English </a> 

이렇게하면 URL이 현재 언어가 아닌 다른 언어로 제공됩니다 (영문).

희망이 도움이됩니다. 당신이 대답

+0

안녕하세요, 귀하의 답변을 주셔서 감사합니다, 나는이 솔루션을 시도하지만 나는 액션을 intercepet 수 없습니다 링크를 설정합니다. 컨트롤러도 설정해야합니까? –

+0

안녕하세요, 귀하의 도움과 답변 주셔서 감사합니다,하지만 내 URL에 작업을 설정할 수 없습니다. 내 기본 레이아웃에는 영어 또는 이탈리아어로 변경 자체 페이지에 대한 두 개의 링크가 있지만 스크립트를 실행할 때 www.xxx.com/it/company 및 www.xxx.com/ 동안 www.xxxx.com/it 만 얻습니다. ko/회사. 내 컨트롤러에 뭔가있어? –

+0

URL에 'action'=> 'company''을 추가하기 만하면됩니다. – blackbishop