ここを無理やり日本語に書き換えても日本語化はできますが、せっかくなので、最初から国際化をにらんで、poファイルを生成、編集して日本語化を進めてもよいのではないか、と思います。
CakePHP1.2はgettextを使用した翻訳と流れは同じです。
http://ja.wikipedia.org/wiki/Gettext
(1)アプリで使用する文字リソース(メッセージ類)は、__('')で囲む
こうしておくと、自動的に翻訳ファイルを作ってくれるのでこのルールは守りましょう。ちなみに、中のメッセージは英語で作り続けるのがよいと思います。
*追記* 値を代入するような場合には、
$message = __('Message test!', true);
echo __('testtest', true);
などとできます。
(2)consoleから、翻訳リソースファイルを作成
consoleフォルダに降りて、
> cake i18n
を実行します。
Welcome to CakePHP v1.2.0.6311 beta Console
---------------------------------------------------------------
What is the full path you would like to extract?
Example: C:\Program Files\xampp\htdocs\cake12\myapp
[Q]uit
[Q] >
と表示されるので、自分のアプリケーションのパスを指定しましょう。
[Q] > C:\Program Files\xampp\htdocs\アプリフォルダ
What is the full path you would like to output?
Example: C:\Program Files\xampp\htdocs\アプリフォルダ\locale
[Q]uit
[C:\Program Files\xampp\htdocs\アプリフォルダ\locale] >
I18n Shell
---------------------------------------------------------------
[E]xtract POT file from sources
[I]nitialize i18n database table
[H]elp
[Q]uit
What would you like to do? (E/I/H/Q)
>
ここで、Eを選択すると、Cakeが自分でプロジェクトファイルを調べまわって、翻訳リスト一覧を作成します。localeフォルダの中にある、default.pot ファイルはテキストファイルなので、適当に中身を見てみましょう。文章で書くと面倒そうですが、案外、短い時間でできあがってしまいます。
(3)日本語リソースフォルダの作成
\locale\jpn\LC_MESSAGES というフォルダを作成し、(2)で生成されたファイルを、"default.po"という名前にしてコピーします。
(4)翻訳
Windows上であれば、poeditが良いのではないか、と思います。
Poedit is cross-platform gettext catalogs (.po files) editor.
http://www.poedit.net/
翻訳メモリもついた、かしこい?翻訳リソース専用エディタです。[カタログ]⇒[設定]から、この翻訳ファイルに関する情報を追加できますが、その際、[複数形:]というところを、
nplurals=1; plural=0;
としておきましょう。
あとは、リソースを適当に訳してみます。
(5)ブラウザで確認。
適当に訳したところで、poファイルを上書き保存します。できたところで、自分のCakePHPアプリケーションを動かしてみましょう。勝手に日本語化されています。これは、HTTP_ACCEPT_LANGUAGEの値を見て、自動で切り替えているからです。
じゃあ、この設定を自分で決めたい場合にはどうするか、というと、どこかの beforeFilter() などに、
Configure::write('Config.language',"en");
と書いておくと、強制的に言語を指定できます。
ちなみに、新しい文字列をページに追加した場合には、(2)をもう一度実行すると、最新のpotファイルが作られます。それから、poeditの[カタログ]⇒[POTファイルを元に更新します]を選択し、新しくできた“potファイル”を指定すると、新しく加わった文字列を自動的に、今あるpoファイルに取り込んでくれます。
※国際化文字列をDBに保存したい、という場合には、
pm11op のブログ
cake_1.2 pre-beta での多言語対応のメモ
とか、
GoogleGroup
i18n translation in db tables - how to do this like Symfony?
などが良いのではないか、と思います。
このあたり、1.2からは本格的な国際化アプリケーションが作りやすくなっていると思います。現状Akelosは、「まぁPHPだから配列ベースの翻訳ファイルでいいか」と妥協している(?)んですが、Cakeは、poファイルでの翻訳リソースになっているので、各種の外部ツールを使ったり、逆にPHP以外のプロジェクトからの言語データファイルの流用がしやすくなっているのではないでしょうか。
extract.php on line 129
Notice: Undefined offset: 0 in D:\public_html\info_base\cake\console\libs\tasks\
extract.php on line 131
こけた〜 orz