Intereting Posts
Как проверить, прошел ли запрос MySQL с использованием устаревшего API? Как отключить автозагрузку jQuery по запросу Ajax в Yii? Включение «strict_types» во всем мире в PHP 7 Каков наилучший способ уменьшить количество запросов, когда у класса DAO есть методы, которые используют один и тот же результат? Вызов java из PHP exec Ошибка PHP: «Не удается передать параметр 2 по ссылке» Выход PHPExcel искажен обработка синтаксической ошибки php eval для математических уравнений Динамически добавлять поля ввода, но поля генерируются внешними php-функциями Элементы массива PHP Count Лучший способ повторить имя пользователя на каждой странице с помощью сеансов? Замена для файла :: mime () в Laravel 4 (для получения типа mime из расширения файла) Как добавить большое количество напоминаний о событиях через API календаря Google с помощью PHP? Интеграция MarkerClusterer с базой данных Google Map V3 Форма Javascript не будет отправлена

Cakephp 3.0.0-RC2 I18n :: locale () не работает

Я использую Cakephp 3.0.0-RC2. Это нормально, но я не могу изменить язык пользователя при входе в систему.

Моя функция входа в систему не работает. Он ничего не делает:

public function login() { if ($this->request->is('post')) { $user = $this->Auth->identify(); if ($user) { $this->Auth->setUser($user); I18n::locale($user['lang']); return $this->redirect($this->Auth->redirectUrl()); } $this->Flash->error(__("Nom d'utilisateur ou mot de passe incorrect, essayez à nouveau.")); } } 

Обратите внимание, что когда я меняю язык в bootstrap, то есть ini_set ('intl.default_locale', 'fr_FR'); он отлично работает, но я хочу изменить язык при входе пользователя в систему. Мой рабочий стол запускает Wampserver с PHP 5.5.2 в Windows 8.1. Я проверяю функцию gettext независимо от Cakephp. Il работает, но только после загрузки на https://launchpad.net/php-gettext/

Вы можете мне помочь ? Кристиан

Потому что вы перенаправляетесь на другой контроллер. Это означает, что локаль может быть переопределен в этом контроллере или AppController. Почему вы не используете сеанс?

  public function login() { if ($this->request->is('post')) { $user = $this->Auth->identify(); if ($user) { $this->Auth->setUser($user); $this->request->session()->write('Config.language', 'du'); return $this->redirect($this->Auth->redirectUrl()); } $this->Flash->error(__("Nom d'utilisateur ou mot de passe incorrect, essayez à nouveau.")); } } 

И в вашем AppController (FrontController)

 class AppController extends Controller { public function initialize() { $this->loadComponent('Flash'); $this->layout = 'mysite'; $lang=$this->request->session()->read('Config.language'); switch($lang) { case "du": I18n::locale('du_DU'); break; case "en": I18n::locale('en_EN'); break; case "jp": I18n::locale('ja_JP'); break; default: I18n::locale('en_EN'); break; }