5ステップでメッセージを国際化する
rhaco2はrhacoと同様にgettextによるメッセージの国際化が出来ます。<br />rhaco.orgには書いてないようなので、メモ書きしておきます。<br /><br />※現在アプリに対してgettextするとエラーが出るので、パッケージで使用することにします。このエントリーの数日後にはエラー解消してるんじゃないかと思います。<br />※<a href="http://twitter.com/#!/rhaco_org/status/66165611759288322">2011/5/6にfixされました。</a><br /><br />1.まずコード内に国際化したい文字列を下のように書き換えます。<br />Flowを継承したクラス内<br />libs/Hoge/Hoge.php (パッケージ名はこの場合Hogeとなります)<br />
<blockquote><pre>書き換え前
$this->vars("hoge"¸"fuga");
書き換え後$this->vars("hoge"¸trans("fuga"));
</pre></blockquote><br /><br />2.次にコンソールでpoファイルを作成します<br />
<blockquote><pre>php rhaco2.php -gettext Hoge</pre></blockquote><br />このコマンドで<br />libs/Hoge/resources/locale/messages/messages-xx.po<br />が出来ます<br /><br />3.poファイルを書き換えます(該当部分のみ)<br />
<blockquote><pre>書き換え前#: Hoge.php:{行番号}msgid "fuga"msgstr ""
書き換え後#: Hoge.php:{行番号}msgid "fuga"msgstr "ふが"</pre></blockquote>
<br /><br />4.ファイル名のxxを変更します<br />例:messages-ja.po<br /><br />5.次にコンソールでmoファイルを作成します。コマンドは2と同じです。<br />
<blockquote><pre>php rhaco2.php -gettext Hoge</pre></blockquote>
<br /><br />以上で出来上がりです。<br />libs/Hoge/resources/locale/messages/messages-ja.moというファイルが出来ます。これが実際に使われるファイルです。<br />ちなみにtransは<br />
<blockquote><pre>trans("fuga {1} {2}"¸"hage"¸"hoho");</pre></blockquote>
<br />みたいにsprintfのような書き方が出来ます。<br />
<blockquote><pre>書き換え前
$this->vars("hoge"¸"fuga");
書き換え後$this->vars("hoge"¸trans("fuga"));
</pre></blockquote><br /><br />2.次にコンソールでpoファイルを作成します<br />
<blockquote><pre>php rhaco2.php -gettext Hoge</pre></blockquote><br />このコマンドで<br />libs/Hoge/resources/locale/messages/messages-xx.po<br />が出来ます<br /><br />3.poファイルを書き換えます(該当部分のみ)<br />
<blockquote><pre>書き換え前#: Hoge.php:{行番号}msgid "fuga"msgstr ""
書き換え後#: Hoge.php:{行番号}msgid "fuga"msgstr "ふが"</pre></blockquote>
<br /><br />4.ファイル名のxxを変更します<br />例:messages-ja.po<br /><br />5.次にコンソールでmoファイルを作成します。コマンドは2と同じです。<br />
<blockquote><pre>php rhaco2.php -gettext Hoge</pre></blockquote>
<br /><br />以上で出来上がりです。<br />libs/Hoge/resources/locale/messages/messages-ja.moというファイルが出来ます。これが実際に使われるファイルです。<br />ちなみにtransは<br />
<blockquote><pre>trans("fuga {1} {2}"¸"hage"¸"hoho");</pre></blockquote>
<br />みたいにsprintfのような書き方が出来ます。<br />