Edited at

CakePHP3:メッセージを日本語化する

More than 1 year has passed since last update.

分かってしまえば至って簡単なのですが、ちょっとハマったので以下に記載します。


辞書ファイルの場所について

辞書ファイルの場所は自分で作ります。場所はapp/src/Locale/ja_JPです。パーミッションが正しいことを確認ください。apacheを使っているならば、apacheユーザがフォルダに入れること。

cd app/src/Locale

mkdir ja_JP
chmod (apacheユーザがアクセスできる権限)default.po


日本語を有効化する


デフォルトを変更する場合

日本語対応する場合はapp.phpをいじります:


app/config/app.php

 'App' => [

'namespace' => 'App',
'encoding' => env('APP_ENCODING', 'UTF-8'),
- 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'en_US'),
+ 'defaultLocale' => env('APP_DEFAULT_LOCALE', 'ja_JP'),


デフォルトを維持し、コントローラ側で指定する場合


app/src/Controller/AppController.php

+ use Cake\I18n\I18n

public function initialize()
{
+ I18n::locale('ja_JP');
parent::initialize();


とします


辞書ファイルの生成

cd app/bin

./cake i18n

[E]xtract POT file from sources
[I]nitialize a language from POT file
[H]elp
[Q]uit
What would you like to do? (E/I/H/Q)
> E

Current paths: None
What is the path you would like to extract?
[Q]uit [D]one
[/var/www/html/app/src/] > (改行)

Current paths: /var/www/html/app/src/
What is the path you would like to extract?
[Q]uit [D]one
[D] > D

Would you like to extract the messages from the CakePHP core? (y/n)
[n] > y

What is the path you would like to output?
[Q]uit
[/var/www/html/app/src/Locale] >(改行)

Would you like to merge all domain strings into the default.pot file? (y/n)
[n] > y

Extracting...
---------------------------------------------------------------
Paths:
/var/www/html/app/src/
/var/www/html/app/vendor/cakephp/cakephp/src/
Output Directory: /var/www/html/app/src/Locale/
---------------------------------------------------------------
==========================================================================> 100%
Done.
---------------------------------------------------------------
I18n Shell
---------------------------------------------------------------
[E]xtract POT file from sources
[I]nitialize a language from POT file
[H]elp
[Q]uit
What would you like to do? (E/I/H/Q)
> Q

これで、default.potファイルがLocale配下に作成されるので、ja_JPディレクトリに移動&default.poにリネームしてください。そして、default.poのパーミッションを必要に応じて修正します:

cd ja_JP

chmod (apacheユーザがアクセスできる権限)default.po


poファイルを更新しても反映されない場合

app/tmp/cache/persistentディレクトリの中に_translations_といった名前のファイルがあるので、削除してみてください