在控制器中,我需要在Ajax json响应中返回已翻译的消息:
$body['message'] = __("Duplicated");
$this->response->body(json_encode($body));
$this->response->statusCode(202);
$this->response->type('json');
return $this->response;
但翻译没有抬头。但是,在模板中,我能够正常工作:
<?= __("Duplicated");?>
我知道我可以使用Ajax布局并编写模板,但在这种情况下,消息体非常短,我需要返回200以外的状态代码。如何在CakePHP 3中的控制器中执行此操作?
答案 0 :(得分:0)
它似乎是一个CakePHP错误(不是错误,请参阅下面的评论)。我有app.php
'App' => [
...
'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
...
]
并且在AppController :: beforeRender()中,根据http://book.cakephp.org/3.0/en/core-libraries/internationalization-and-localization.html#changing-the-locale-at-runtime,我可以用这个覆盖(但实际上这不起作用):
I18n::locale('zh');
当我将config / app.php更改为
时'App' => [
...
'defaultLocale' => env('APP_DEFAULT_LOCALE', 'zh'),
...
]
有效。