すごくひさしぶりにPHPのプログラムをまとめて書くことになり、PHPでgettextを使うってのを、いい機会なので調べてみました。
gettextエクステンション無しで直接MOファイルを読み込むPHP-gettextライブラリ
このサイトでも使っているWordpressというブログアプリケーションでは、gettextのMO filesを読み込むのにPHP-gettextというライブラリが使われています。
このライブラリをつかった場合の特徴としては、直接MOファイルを読むライブラリなので・・・
- –with-gettextつきでコンパイルしてないPHPでもMOファイルを読み込むことができる
- もちろん、LOCALEを使わなくてもgettextの恩恵を受けることができる
- 当然、あの深いディレクトリ構造(BASE/${locale}/LC_MESSAGES/${domain}.mo)と戯れなくてすむ
WordPressのソースの中から、PHP-gettextの成果物でありwp-includes/の下にあるgettext.phpとstreams.phpをincludeしているwp-l10n.php
を読めば、使い方はすぐにわかると思います。
このwp-l10n.phpでは、_()ではなく__()と_e()という関数を用意しています。アンダースコア1個の関数を定義しようとすると、gettextエクステンションが組み込まれたPHPでコケてしまうので、素直にこの方法に従っておくのが吉ですね。