nazolabo

フリーランスのWebエンジニアが近況や思ったことを発信しています。

国際化

rhacoにはgettextベースの国際化機能がある(とか言ってみたけどgettextって何かよくわかってません!ごめんなさい!)。
setup/intltool.phpというのが自動生成されているので、これにアクセスすると、国際化文字作成ツールが利用できる。
最終的には

$GLOBALS["RHACO"]["M"]["database controler [{1}]"] = "データベースコントローラ [{1}]";
$GLOBALS["RHACO"]["M"]["database"] = "データベース";
$GLOBALS["RHACO"]["M"]["first argument"] = "第一引数";
$GLOBALS["RHACO"]["M"]["second argument"] = "第二引数";

といった感じの配列になるんだけど(これはrhacoのresources/locale/messages/message-ja.phpの一部)、いきなりこれを書くのは面倒なので、通常はpoファイルというものを編集する。
まず、データベース作成と、テンプレート作成を一通り終えておく。特にテンプレート作成の際、文字列をタグで囲っておくこと。
そして、intltool.phpで、「テンプレートを作成する」を押す。これで、「setup/po/message-xx.pot」というファイルが出来上がっているはずだ。間違ってもPowerPointで開いてはいけない。
このファイルを、poEditで編集する。データベースのフィールド名と、タグで囲った部分の定義が自動的に出来上がっているので、翻訳ファイルをがりがり編集しよう。poファイルのファイル名はmessage-(言語名).poとしておいたほうがいい。message-ja.poとか。
編集して、poファイルが出来上がったら、intltool.phpの中段のフォームに読み込ませ、「テンプレートからPHPファイルを作成する」を押す。これでresources/locale/messages/にファイルが出来上がる。
あとは本体に

Rhaco::import("resources.Message");
Message::loadMessages("ja");

と追加するだけ。("ja"はmessage-xx.phpのxxの部分)