0

I18N과 .po 파일을 사용하여 영어와 덴마크어로 된 다국어 웹 사이트를 만들었습니다. 하지만 I18n :: locale()을 사용하여 언어를 변경하면 관리자 패널의 언어도 변경됩니다. 프론트 엔드의 언어 만 변경하고 싶습니다. 제발 제안 해주세요.Cakephp 3에서만 프론트 엔드 언어를 변경하는 방법

미리 감사드립니다.

I18n::locale('da_DK'); 

그러나 너무 당신의 관리자 패널에서 변화하고 있다면, 문제는 응용 프로그램이 구조화하는 방법에 대한 순전히 시간과 장소는 다음과 같습니다

+2

관리자 작업으로 공개 활동이 어떻게 다른지 말할 수 있습니까? 당신은 예를 들어 접두사를 사용합니까!, –

답변

3

로케일을 변경 당신이 그것을하고있는 방법은 정확 로케일을 변경합니다.

로케일을 예를 들어 AppController에 설정하면 모든 컨트롤러에서 로캘이 변경됩니다. 당신이 그것을 할 수있는 많은 방법이 있습니다. 접두어 /admin을 처리하는 AdminController을 만들고 해당 접두어에 대한 로캘 만 변경할 수 있습니다.

namespace App\Controller\Admin; 

    use App\Controller\AppController; 
    use Cake\Event\Event; 
    use Cake\I18n\I18n; 

    /** 
    * Application Controller for `admin` prefixed controllers. 
    * 
    * All controllers within the `app/Controller/Admin` directory should extend this 
    * controller rather than the normal `AppController`. 
    */ 
    class AdminController extends AppController 
    { 

     public function beforeFilter(Event $event) 
     { 
      parent::beforeFilter($event); 

      I18n::locale('en_GB'); 
     } 
    } 

그럼 당신은 app/Controller/Admin에서 모든 관리 컨트롤러를 넣을 수 있도록 올바르게 /admin의 접두사 경로를 설정했는지 확인하고, 모든 컨트롤러는 AdminController 대신 AppController 확장해야합니다.

https://book.cakephp.org/3.0/en/development/routing.html#prefix-routing

0

내 웹 사이트의 흐름을 변경하지 않았다. 그래서 저는 모든 프런트 엔드 컨트롤러에 18n :: locale ('en_GB')을 사용했습니다. 그게 내 문제를 해결해 줬어.