▽1
●
a-kuma3 ●500ポイント ベストアンサー |
locale/ja_JP/LC_MESSAGES/messages.mo がシンボリックリンクで、locale/languages/messages.mo を指している、というのでは、駄目ですよね?
結論から先に言うと、できないと思った方が良いです。
質問で挙げてもらったページで解説されている gettext による国際語化ですが、これは gettext ライブラリのラッパーです。
Linux だと GNU の gettext を使っていると思います。
ライブラリの仕様として、カタログファイルの配置が決められています。
http://www.gnu.org/software/gettext/manual/gettext.html#Locating-Catalogs
LC_MESSAGES という階層が入るのは、国際語化はメッセージだけを対象にするものではないからです。
時刻や数値の表現なども対象にします。
それらは、LC_NUMERIC や LC_TIME という階層の下にカタログファイルが置かれます。
他の unix も同じ仕組みです。
# 言い方としては、順番が逆で、GNU gettext の方が仕様を合わせた、ということになります
Wordpress が、カタログファイルを、そのディレクトリの縛りに置かなくても良いのは、(言い方が、ちょっと大げさですが)Wordpress が自前で国際語化の仕組みを持っているからです。
Note that if you look online, you'll see the _() function which refers to the native PHP gettext-compliant translation function, but instead with WordPress you should use the __() wordpress-defined PHP function.
I18n for WordPress Developers « WordPress Codex
この文面だけだと、はっきりとはしませんが、Wordpress のソースを読むと分かります。
以下のようなところが、国際語化の処理をしているところにあたります。
MO::import_from_reader() が gettext で使うカタログファイルを読み込んで、自力でパースして連想配列に貯えます。
それを使って、国際語化のテキスト置換を実現しています。
「できない」ではなく、「できないと思った方が良い」と最初に書いた理由が分かったと思います。
Wordpress の mo.php を参考にしたり、そんな回りくどいことをせずに、GNU gettext のソースを解析して、それと同じことをやれば、自由な位置にカタログファイルを配置することはできます。
環境設定ファイルに、何か記述を足したり、ライブラリをちょちょいといじる程度では、希望していることはできません。