5ステップでメッセージを国際化する

このエントリーをはてなブックマークに追加

rhaco2はrhacoと同様にgettextによるメッセージの国際化が出来ます。
rhaco.orgには書いてないようなので、メモ書きしておきます。

※現在アプリに対してgettextするとエラーが出るので、パッケージで使用することにします。このエントリーの数日後にはエラー解消してるんじゃないかと思います。
2011/5/6にfixされました。

1.まずコード内に国際化したい文字列を下のように書き換えます。
Flowを継承したクラス内
libs/Hoge/Hoge.php (パッケージ名はこの場合Hogeとなります)
書き換え前
$this->vars("hoge"¸"fuga");
書き換え後$this->vars("hoge"¸trans("fuga"));


2.次にコンソールでpoファイルを作成します
php rhaco2.php -gettext Hoge

このコマンドで
libs/Hoge/resources/locale/messages/messages-xx.po
が出来ます

3.poファイルを書き換えます(該当部分のみ)
書き換え前#: Hoge.php:{行番号}msgid "fuga"msgstr ""
書き換え後#: Hoge.php:{行番号}msgid "fuga"msgstr "ふが"


4.ファイル名のxxを変更します
例:messages-ja.po

5.次にコンソールでmoファイルを作成します。コマンドは2と同じです。
php rhaco2.php -gettext Hoge


以上で出来上がりです。
libs/Hoge/resources/locale/messages/messages-ja.moというファイルが出来ます。これが実際に使われるファイルです。
ちなみにtransは
trans("fuga {1} {2}"¸"hage"¸"hoho");

みたいにsprintfのような書き方が出来ます。