Cakephp 3.0.0-RC2 I18n::locale() 不工作
Cakephp 3.0.0-RC2 I18n::locale() doesn't works
我正在使用 Cakephp 3.0.0-RC2。
它工作正常,但我无法在登录时更改用户的 du 语言。
我的登录功能不起作用。它什么都不做:
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');它工作正常,但我想在用户登录时更改语言。
我的桌面在 Windows 8.1 上运行 PHP 5.5.2 的 Wampserver
我独立检查 Cakephp 的 gettext 函数。 Il 工作,但只有在 https://launchpad.net/php-gettext/
下载后
你能帮帮我吗?
克里斯蒂安
因为您重定向到另一个控制器。这意味着可以在该控制器或 AppController 中覆盖语言环境。为什么不用session?
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;
}
我正在使用 Cakephp 3.0.0-RC2。 它工作正常,但我无法在登录时更改用户的 du 语言。
我的登录功能不起作用。它什么都不做:
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');它工作正常,但我想在用户登录时更改语言。 我的桌面在 Windows 8.1 上运行 PHP 5.5.2 的 Wampserver 我独立检查 Cakephp 的 gettext 函数。 Il 工作,但只有在 https://launchpad.net/php-gettext/
下载后你能帮帮我吗? 克里斯蒂安
因为您重定向到另一个控制器。这意味着可以在该控制器或 AppController 中覆盖语言环境。为什么不用session?
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;
}