我有一个Cakephp 4项目国际化使用的工作,但今天我试着改变PC,它没有改变语言,不给予任何错误。
我有这个方法来改变AppController中的语言:
public function changeLang():void
{
$idioma=$this->request->getCookie('idiomacookie');
if (I18n::getLocale() !== 'es_ES'){#No esta en español
I18n::setLocale('es_ES');#Pongo inglés
$idioma = Cookie::create('idiomacookie', 'es_ES');#Cambio cookie
$this->response = $this->response->withCookie($idioma);
$this->idiomacookie = 'es_ES';
}else{
I18n::setLocale('en_US');
$idioma = Cookie::create('idiomacookie', 'en_US');
$this->response = $this->response->withCookie($idioma);
$this->idiomacookie = 'en_US';
}
$this->redirect($this->referer());
}
在initialize方法中,我初始化了语言:
public function initialize(): void
{
parent::initialize();
$this->loadComponent('RequestHandler');
$this->loadComponent('Flash');
$this->loadComponent('Authentication.Authentication');
$idioma=$this->request->getCookie('idiomacookie');
if ($idioma == 'en_US'||$idioma ==NULL){
I18n::setLocale('en_US');
}else{
I18n::setLocale('es_ES');
}
我使用了var_dumps,它显示当我点击按钮更改语言时,I18n::getLocale()
发生了变化,但消息没有变化。
我尝试了从es_ES到en_US的defaultlocale,消息也没有改变。我有这样的翻译文件夹:
/app
/resources
/locale
/en
default.po
cake.pot
default.pot
消息始终以西班牙语(es_ES)显示。我还尝试使用以下命令再次生成文件夹:
bin/cake i18n extract
但这也没用。
有人能告诉我我做错了什么吗?拜托
1条答案
按热度按时间oiopk7p51#
尝试:
// AppController::changeLang()
AppController::beforeFilter()