2014-10-07 3 views
2

CakePHP의 국제화에 관한 모든 게시물을 읽었으며 아무 것도 저에게 효과가없는 것 같습니다. CakePHP 2.5.1을 사용하고 있습니다. 설정에서CakePHP 국제화가 작동하지 않습니다.

/bootstrap.php :

컨트롤러에서
//Default language 
Configure::write('Config.language', 'spa'); 

/AppController.php :

public $components = array('Session', 'DebugKit.Toolbar'); 

public function beforeFilter() 
{ 
    //Set the UI lang preference 
    if($this->Session->check('Config.language')) 
    { 
     Configure::write('Config.language', $this->Session->read('Config.language')); 
    } 
} 

내 파일 구조가 그래서입니다 :

/Locale/ 
    - default.mo 
    - default.po 
    - default.pot 
    - eng/LC_MESSAGES/ 
     - default.mo 
     - default.po 

내가 가진 링크에 그러한 전망 :

내 사용자 컨트롤러는이와 함께 다음을 수행합니다

public function lang($which) 
{ 
    if($which == "en") 
    { 
     $this->Session->write('Config.language', 'eng'); 
    } elseif($which == "es") 
    { 
     $this->Session->write('Config.language', 'spa'); 
    } else 
    { 
     $this->Session->setFlash(_('Unknown language.'), 'flash_red'); 
    } 
    $this->redirect('/'); 
} 

내가 링크 (EN 또는 ES), 페이지를 다시로드의 클릭하지만 일반 텍스트를 표시합니다.

내가 누락 될 수있는 실마리가 있습니까? 또는 Cake 핵심 코드에서 디버깅을 시작할 위치에 대한 팁이 있습니까?

PD. 오류 로그에 아무 것도 표시되지 않습니다.

감사합니다.

+0

첫 번째 단계에서 캐시 ('/ app/tmp/cache /')를 삭제하십시오. – ndm

+0

1) 기본 언어에 대해 "Config.language"라는 구성 변수가 없도록 config/bootstrap.php를 변경하십시오. Configure :: write ('Config.defaultLanguage', 'spa'); 2) 컨트롤러/AppController.php 변경 if ($ this-> Session-> check ('Config.language')) {Configure :: write ('Config.language', $ this-> Session-> read/config/tmp/cache/config에서 모든 파일을 지우십시오. (config.language '))}}}} persistent /*.* 4) po 파일의 유효성을 확인하거나 poedit을 사용하십시오. 5) 디버그 키트를 사용하고 세션 값을 따릅니다. –

+0

@ndm 캐시를 삭제하려고 시도했지만 수정되지 않았습니다. – Sandy

답변

0

위의 오류가 ONE 밑줄 대신 두, 사용하고 있다는 것입니다 :

$this->Session->setFlash(_('Unknown language.'), 'flash_red'); 

내가 하나의 밑줄을 사용하고 코드의 다른 모든 부분에서

$this->Session->setFlash(__('Unknown language.'), 'flash_red'); 

을해야한다 국제화를 위해서는 두 가지가되어야합니다.