2010-12-29 3 views
0

자, 이제 URL (http://stackoverflow.com/questions/4550670/cakephp-choosing-language-by-url)을 기반으로 한 현지화 작업을 진행했지만 언어를 변경하는 링크를 만드는 방법은 무엇입니까? 나는 cakephp url - part 2로 언어 선택

<?php echo $html->link('English', array('language'=>'eng')); ?> 

을 시도한은 보이지 않고는 URL의 끝에 ( www.example.com/blah/blah/language:eng 대신 www.example.com/eng/blah/blah)에서 language:eng를 추가하고 모든 언어를 전환하지 않습니다.

라우트는 이제 다음과 같이 :

function url($url = null, $full = false) { 
     if(!isset($url['language']) && isset($this->params['language'])) { 
      $url['language'] = $this->params['language']; 
     } 
     return parent::url($url, $full); 
    } 

어떻게 그것이 있어야 방식으로 작동 링크를 설정 : 나는 또한 app_helper의 URL 방법을 오버라이드 (override) 한

Router::connect('/registered/:language/:controller', 
       array('prefix' => 'registered', 'registered' => true, 'layout'=> 'registered'), 
       array('language' => '[a-z]{3}')); 
Router::connect('/registered/:language/:controller/:action/*', 
       array('prefix' => 'registered', 'registered' => true, 'layout'=> 'registered'), 
       array('language' => '[a-z]{3}')); 

? 감사합니다.

답변

0

라우터의 URL에서 언어를 삭제 해보세요.

테스트하지,하지만 URL이 이미 이름이 PARAM을 얻기로 작동합니다 :

Router::connect('/registered/:controller', 
       array('prefix' => 'registered', 'registered' => true, 'layout'=> 'registered'), 
       array('language' => '[a-z]{3}')); 
Router::connect('/registered/:controller/:action/*', 
       array('prefix' => 'registered', 'registered' => true, 'layout'=> 'registered'), 
       array('language' => '[a-z]{3}')); 

당신이 GET 변수의 두 유형을 수용하기 위해 URL 재정의 방법을 유지 언어.

+0

라우터 url에서 언어 매개 변수를 제거하면 url이 원하는 방식으로 작동하지 않습니다. www.example.com/blah/blah/language:eng보다는 www.example.com/eng/blah/blah처럼 보이게해야합니다. – Elwhis