.poファイルを用いた多言語化

msgid “[言語の識別子]” msgstr “[翻訳]”

というふうに対応させて.poファイルに書くことで 翻訳が可能になります。

例えばブラウザで「猫」という言葉を日本語と英語で切り替えて表示したい時、

英語の.poファイル msgid “猫” msgstr “Cat”

日本語の.poファイル msgid “猫” msgstr “猫”

という言った感じで.poファイルに書き込み、 表示させたいページで

<?php echo __('猫'); ?>

と書くことでブラウザ上で日本語と英語を切り替えることが出来ます。

また、「時計」のように英語にした時WatchにもClockにもなってしまう言葉の際、 同一ファイル上に msgid “時計” msgstr “Clock”

msgid “時計” msgstr “Watch”

とすると

<?php echo __('時計'); ?>

とした時は後半に書いたWatchが常に採用されてしまいます。

この場合、 default.poに

msgid “時計” msgstr “Clock” とし、

別のファイル default2.poに

msgid “時計” msgstr “Watch” とすることで

<?php echo __('時計'); ?>

<?php echo __d('default2','時計'); ?>

と書けば、ファイル名を指定した下の文はWatch, 何も指定していない上の分はClockとなります。

この時__d()で指定したファイルが存在しない時 default.poのものが採用されます。