Cakephpのローカライズ。
コンソールでの作業になるので、先ずは\app\console\に行ってパスを通す。
cd ...\app\cnosole SET PATH=%PATH%;%CD%
アプリのルートパスへ行き、コマンドを実行。
cake i18n
対話形式でプログラムが実行される。
[E]xtract POT file from sources What would you like to do?
先ずはPOTファイルの生成。
What is the path you would like to extract? [Q]uit [D]one
そして抽出元を選択。
Would you like to extract the messages from the CakePHP core? (y/n)
cakePHPからの翻訳を書き込む場合はy
What is the path you would like to output? /app/Locale/jpn/LC_MESSAGES
アウトプット先のパスを指定。
言語ファイルは/app/Locale/ 配下に格納される。
後で移動させても問題無いが、とりあえずそこに置く。
Would you like to merge all domains strings into the default.pot file? (y/n)
全ての翻訳データをマージするかどうか。
ここまで来ると、指定したディレクトリにファイルが作成される。
次に、翻訳ファイルの作成。
Poeditを使う。
ファイル→POTファイルを元に新しいカタログを作成。
一つ注意事項。カタログの設定で、複数形を以下のように設定。
#変更前 nplurals=INTEGER; plural=EXPRESSION; #変更後 nplurals=2; plural=(n > 1);
ここまでくれば、あとはコツコツ翻訳するだけ。
そしてcakePHP側の言語指定。
強制的に言語を指定するには、Appcontrollerで下のように指定。
function beforeFilter() { Configure::write('Config.language', 'en'); }
日本語に指定するばあいは、これで上手く行った。
翻訳ファイルは、app\Locale\jpn\LC_MESSAGES
function beforeFilter() { Configure::write('Config.language', 'ja'); }
・追記
potファイルのアップデート。
ファイルを更新・追加したら、再度コンソールでのpotファイル作成の手順を踏んでdefault.potを上書きする。
そしてpoeditを使って、該当する.poファイルを開く。
(日本語だったら open -> /locale/jpn/LC_MESSAGES/default.po をひらく)
そして開いたら、メニューのcatalog -> Update from POT fileでアップデート。 以上!