出力するメッセージを国際化/地域化しようよって話。開発スタート時に多言語とか何も考えず __('User edit')
とか書いておいて後から msgid 'User edit'
msgstr 'ユーザー編集'
とかしておいて良いんじゃないかな。メッセージ定数とかナンセンスだよねー。
- 出力時は常に
__()
を利用<?php echo __('Message Id') ?>
- デフォルトロケールを設定
app/config/app.php
で'defaultLocale' => env('APP_DEFAULT_LOCALE', 'ja_JP'),
とか- 英語なら
en_US
- 言語ファイルを作成し設置
- 設置先
app/src/Locale
は 配下全て Apache からの読込を許可$ sudo chmod 755 -R /var/www/app/src/Locale
app/src/Locale/ja_JP/default.po
- デフォルトロケールを設定せずに
app/src/Locale/default.po
でもとりあえずは動く
- デフォルトロケールを設定せずに
msgid 'Message Id'
とmsgstr 'Message String'
のセット
- 設置先
$ bin/cake i18n extract
でソースから__()
で読んでるmsgid
抽出してdefault.pot
作成してくれるdefault.pot
はテンプレファイルなのでdefault.po
へリネームして利用する
- デフォルトロケールを維持したままコントローラ側でロケールを切替
use Cake\I18n\I18n
で I18n クラス読込AppController::initialize()
とか任意の場所にCake\I18n\I18n::locale('en_US');
みたいに差し込み