CakePHP3 では $this->Form->input('mob',['type'=>'date'])
や $this->Form->month('mob')
で日付選択のフォームが生成できて便利なのですが、
- コード
$this->Form->month('mob');
- 出力
<select name="mob[month]">
<option value=""></option>
<option value="01">January</option>
<option value="02">February</option>
<option value="03">March</option>
<option value="04">April</option>
<option value="05">May</option>
<option value="06">June</option>
<option value="07">July</option>
<option value="08">August</option>
<option value="09">September</option>
<option value="10">October</option>
<option value="11">November</option>
<option value="12">December</option>
</select>
と月が英語で出力されます。FormHelperのテンプレートをいじってもなんとかなりますが、
テンプレートをいじらずに、月の部分のみを日本語で出力する方法を調べました。
日本語化方法
CakeBookの Internationalization & Localization を参考にしました。
多言語アプリケーションを作成する時と同じ方法で日本語化出来るようです。
翻訳ファイルの作成
英語に対応する日本語訳ファイル src/Locale/ja_JP/default.po
を作成します。初期状態ではディレクトリ自体存在していないので、ディレクトリも作成します。内容は以下のように、msgidに対応する日本語をmsgstrに記載する形で羅列します。
src/Locale/ja_JP/default.po
msgid "January"
msgstr "1月"
msgid "February"
msgstr "2月"
msgid "March"
msgstr "3月"
msgid "April"
msgstr "4月"
msgid "May"
msgstr "5月"
msgid "June"
msgstr "6月"
msgid "July"
msgstr "7月"
msgid "August"
msgstr "8月"
msgid "September"
msgstr "9月"
msgid "October"
msgstr "10月"
msgid "November"
msgstr "11月"
msgid "December"
msgstr "12月"
アプリケーションのデフォルト言語をja_JPに変更
デフォルト英語なので、bootstrap.php のintl.default_localeをja_JPに設定します。
config/bootstrap.php
...
/**
* Set the default locale. This controls how dates, number and currency is
* formatted and sets the default language to use for translations.
*/
ini_set('intl.default_locale', 'ja_JP');
...
以上でdefault.po に設定した文字列で生成されます。
FormHelperに限らず、自動生成されるキーワードはこの方法で日本語化できるようです。