今回は国際化を行うためのpoファイルを作成する。
使い方次第でメッセージ定義ファイルとしても利用できる。
条件は初回と同様。
・CakePHP 2.0.6 (webroot は http://localhost/cake2.0.6/)
・XAMPP 1.7.4 (Apache 2.2.17 + PHP 5.3.5 + MySQL 5.5.8)
・OS は Windows 7
I18nShell を利用してpotファイル(poファイルのテンプレート)を作成する。
ちなみに「I18n」は「Internationalization」の略(I+18文字+n)。
I18nShellを実行すると、実行中に指定した場所を解析して
__(), __n(), __d(), __c(), __dc(), __dn(), __dcn()
で使われている文章を msgid として集めてくれる。
なお、__d()などでドメインが指定されていればドメイン毎にファイルを出力され、ドメイン指定が無いものは default.pot に出力される。(defaultに全てのドメイン分をマージして出力させることも可能)
まずは potファイルを出力する場所を作る。
app/Locale/jpn/LC_MESSAGESへ出力することにしよう。
CakeShell(Windowsの場合はcake.bat)でI18nShellを実行する。
コマンドプロンプトを開いて以下のように操作(※)する。
※ CakePHPを E:\dev-php\xampp\htdocs\cake2.0.6\ に設置している前提とする。
E:\>set path=%path%;E:\dev-php\xampp\php
#↑(phpへのpathが通っていない場合) 一時的にpathを追加してphp.exeが実行できるようにするE:\>cd E:\dev-php\xampp\htdocs\cake2.0.6\app
#↑appフォルダへ移動する。(CakeShellの-appオプションを使う場合は移動不要)E:\dev-php\xampp\htdocs\cake2.0.6\app>E:\dev-php\xampp\htdocs\cake2.0.6\app\Console\cake.bat i18n
#↑CakeShellでI18nShellを起動Welcome to CakePHP v2.0.6 Console
—————————————————————
App : app
Path: E:\dev-php\xampp\htdocs\cake2.0.6\app\
—————————————————————
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
What is the path you would like to extract?
[Q]uit [D]one
[E:\dev-php\xampp\htdocs\cake2.0.6\app\] > E:\dev-php\xampp\htdocs\cake2.0.6\app\
#↑解析する場所を指定What is the path you would like to extract?
[Q]uit [D]one
[D] > dWhat is the path you would like to output?
[Q]uit
[E:\dev-php\xampp\htdocs\cake2.0.6\app\Locale] > E:\dev-php\xampp\htdocs\cake2.0.6\app\Locale\jpn\LC_MESSAGES\
#↑出力場所を指定Would you like to merge all domains strings into the default.pot file? (y/n)
[n] > n
#↑常人なら’n'(マージしない)Extracting…
—————————————————————
Paths:
E:\dev-php\xampp\htdocs\cake2.0.6\app\
Output Directory: E:\dev-php\xampp\htdocs\cake2.0.6\app\Locale\jpn\LC_MESSAGES\
—————————————————————
Processing E:\dev-php\xampp\htdocs\cake2.0.6\app\index.php…
~省略~
Processing E:\dev-php\xampp\htdocs\cake2.0.6\app\webroot\index.php…Done.
—————————————————————
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)
> q
出力場所を確認するとファイルがpotファイルができている。
(Eclipseなどで確認している場合は表示をリフレッシュする必要ある。)
拡張子を pot から po へ変更し、poeditなどで編集すれば完了だ。
因みにpoeditで保存した際に自動作成されるmoファイルが無くても、CakePHPの国際化処理はバリバリ動作するので、poeditが無くてもUTF-8対応のテキストエディタ(無料ならサクラエディタなど)があれば問題ない。
コメント