2016-12-26 5 views
0

に、私はAjaxのJSON応答に翻訳されたメッセージを返す必要があります。は使用CakePHPの3国際化は、コントローラのコントローラ

$body['message'] = __("Duplicated"); 
$this->response->body(json_encode($body)); 
$this->response->statusCode(202); 
$this->response->type('json'); 
return $this->response; 

しかし、翻訳は見上げていません。しかし、テンプレートで、私はこの作業を取得することができる午前:

<?= __("Duplicated");?> 

私はAjaxのレイアウトを使用してテンプレートを作成することができます知っているが、この場合には、メッセージ本体が非常に短いですが、私は返す必要がありますCakePHP 3のコントローラでこれをどうすればできますか?

答えて

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'), 
... 
] 

これは機能します。

+0

'beforeRender'が発生します_コントローラのアクションが実行され、ビューがレンダリングされる前に_発生します。そう、物事は意図どおりに働いています。 ** [http://book.cakephp.org/3.0/en/controllers.html#Cake\Controller\Controller::beforeRender](http://book.cakephp.org/3.0/en/controllers.html#Cake \ Controller \ Controller :: beforeRender)** – ndm

+0

はい、ありがとうございます。 – cpliu338

関連する問題