分かってしまえば至って簡単なのですが、ちょっとハマったので以下に記載します。
辞書ファイルの場所について
辞書ファイルの場所は自分で作ります。場所は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_
といった名前のファイルがあるので、削除してみてください