はじめに
WordPressのプラグインはGettextの仕組みを使って国際化を実現しています。簡単なサンプルは以下のようなコードになります。
翻訳前の表示
Gettextのpotファイル、poファイル、moファイル
Gettextを使った国際化では以下のようなファイルが存在します。
- potファイル - https://github.com/iwaim/doc-ja-sample/blob/master/languages/doc-ja-sample.pot
- poファイル - https://github.com/iwaim/doc-ja-sample/blob/master/languages/doc-ja-sample-ja.po
- moファイル - テキストファイルではないのでURLは割愛
簡単にいえば、それぞれは次のようなファイルとなっています。
- potファイル:プログラム等から国際化対応の文字列を抜き出したファイル
- poファイル:国際化対応の文字列と、その文字列をある言語に翻訳したときの対応を示したファイル
今回のサンプルプラグインのpoファイルから1箇所だけ抜き出します。
#: ../doc-ja-sample.php:33
msgid "Hello!"
msgstr "こんにちは!"
これをみれば想像がつくとは思いますが、プログラム内に記述された文字列「Hello!」に対応する日本語翻訳が文字列「こんにちは!」ということを示しています。大雑把に言えば「msgid」の部分が翻訳前の文字列であり、「msgstr」の部分が翻訳後の文字列となるのです。
このようにそれぞれの文字列を翻訳し、最後にpoファイルからmoファイルを生成して適切な場所に配置すれば翻訳結果が反映されることとなります。
つまり、Gettextを使ったアプリケーションの日本語翻訳の作業は、poファイルの中にある「msgstr」が空のもの(もしくは間違っているもの)を適切な日本語に翻訳する作業となります。
日本語翻訳した後の表示
まとめ
- Gettextを使ったアプリケーションの国際化はpotファイル、poファイル、moファイルで実現されている
- Gettextを使ったアプリケーションの国際化の場合、poファイル内の文字列が翻訳対象である
Doc-ja Advent Calendar 2013の3日目はsmellmanさんです。transifexの使い方などを書いてくださるようです。楽しみですね。