2017-01-27 25 views
0

Я создал многоязычный веб-сайт на английском и датском языках с использованием файлов I18N и .po. Но если я изменил язык, используя I18n :: locale(), он также изменит язык панели администратора. Я хочу изменить язык только интерфейса. Пожалуйста, предложите.Как изменить только внешний язык в Cakephp 3

Заранее спасибо.

+2

Можете ли вы рассказать нам, как вы отличаетесь публичными действиями с действиями администратора? вы используете префикс, например! –

ответ

3

Изменение языкового стандарта, как вы делаете это правильно:

I18n::locale('da_DK'); 

Но если это изменение его в админке тоже, то вопрос чисто о том, как ваше приложение структурировано и где вы находитесь изменение языкового стандарта.

Если вы установили локаль в AppController, например, это изменится для всех контроллеров. Есть много способов сделать это. Вы можете создать AdminController, который обрабатывает префикс /admin и изменяет локаль именно для этого префикса.

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'); 
     } 
    } 

Затем убедитесь, что вы правильно настроить маршрут префикса для /admin, так что вы можете поместить все контроллеры администратора в app/Controller/Admin, и все эти контроллеры должны расширить AdminController вместо AppController.

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

0

Я не хочу, чтобы изменить поток моего сайта. Поэтому я использовал 18n :: locale ('en_GB') в моих всех интерфейсных контроллерах. Это решило мою проблему.