__()
で書く#
まずは、viewとか(他のところでもページに表示されるもの)に書いてある自然言語(ここでは日本語)の文字列を__()
で書くようにします。
<?php echo __('確認して下さい'); ?>
という感じ。
多言語化しなければそのまま表示されるだけなので、将来多言語化する可能性があるなら、ちょっと面倒でも__()
で書いておいたらいいと思います。
ちなみに__d()
とか__n()
とかもあるので、時と場合に応じて使います。(Cookbook 2.x - グローバル関数)
modelの$validate
のmessage
に書くものは、そのまま('message' => '選択してください'
とか)で大丈夫みたい。
POTファイルを作る#
Console/cake i18n extract
を実行すると、Localeディレクトリの下にdefault.pot等のPOTファイルができます。
参考:Cookbook 2.x - I18N shell
Poeditで翻訳ファイルを作る#
Poeditをインストールして、上で作ったPOTファイル(default.pot)を元に翻訳ファイルを作ります。
ソーステキストに対応する翻訳を入力すればOK。
日本語で書いてあったものを英語に翻訳する場合は、Locale/eng/LC_MESSAGES
というディレクトリを作成し、その下にdefault.poという名前で保存します。バイナリのdefault.moファイルも同時に保存されます。
poファイルはテキストなのでPoeditとか使わなくても作れますが、CakePHPが使うのはmoファイルのようなので、Poeditじゃなくても何らかの方法でコンパイル(?)する必要があります。(Poeditが簡単だと思います。)
Config.languageの設定#
普通はブラウザの情報を元に言語が判断されてるみたいなので、デフォルトで自分が使ってる言語(ここ見てる人はたぶん日本語)になってるはず。これを英語に変えるには、
Configure::write('Config.language', 'eng');
とすれば英語に翻訳されたものが表示されます。
引数とかで言語を指定できるactionを書いてcookieとかに入れておくといいのかな。
どうでもいいけど、i18nってinternationalizationの略で、i+18文字+nってことなのね。