WordPressのローカライズ、つまり日本語化 – その2 gettextとPoeditとpot

「WordPressのローカライズ、つまり日本語化」は3部に分けて書いています。
WordPressのローカライズ、つまり日本語化 – その1 _関数と_e関数
WordPressのローカライズ、つまり日本語化 – その3 poとmo

「WordPressのプラグインのローカライズ、つまり日本語化 – その2」です。

このローカライズはプラグインに限らず、テーマにも応用出来ます。

前回(WordPressのローカライズ、つまり日本語化 – その1 _関数と_e関数)は__関数_e関数についてでしたが、今回は言語ファイルの作り方について。

gettextでは__関数や_e関数にラップされた文字列を、翻訳された文字列に置き換える仕組みを持っていますが、置き換える文字列は元の文字列と対で登録してある言語ファイルから呼び込まれます。

言語ファイルは「mo(Machine Object)」ファイルです。

言語ファイルはPoeditなどの言語ファイル用エディターを使って作成し、制作過程で「pot」「po」「mo」の各ファイルを生成します。(それぞれ拡張子が「.pot」「.po」「.mo」になります。)

  • POT(Potable Object Template) – ソースから翻訳する文字列を抜き出したファイル カタログファイル。(text)
  • PO (Portable Object) – POTファイルに翻訳を付け加えたファイル。(text)
  • MO (Machine Object) – POファイルをバイナリー化したファイル。Poeditで作成するとpoと同時に生成される。(binary)

gettextでプラグインの多言語化する手順

多言語化の全行程をみてもらう為に、一番面倒な多言語化を想定されていないプラグインで手順んを説明します。

① まず言語ファイルを格納する language ディレクトリを、そのプラグインディレクトリの直下に作成します。

② プラグインディレクトリの直下のプラグインスクリプトに、翻訳ファイルの場所を設定するコードを書き加えます。
プラグインスクリプト名はプラグインディレクトリ名が your-plugin なら、your-plugin.phpとなっています。

そのスクリプトに load_plugin_textdomain() を使って、ドメイン名と言語ファイルを格納する為に作成したlanguagesディレクトリへのパスを設定してやります。

具体的にはスクリプトの、コメントアウトされたヘッダー以降に

の様に記述してやります。
dirname( plugin_basename( __FILE__ ) )でyour-pluginディレクトリのパスを取得させています。

③ プラグインスクリプト内の翻訳する文字列を__関数や_e関数で囲い、

‘Read access: username not found’ の様に__関数でラップし、さらに__関数の第2引数にドメイン(この場合‘your-plugin’)を設定します。

__関数や_e関数は、

の様にフォーマット文字列やhtmlのタグを含んだ文字列も扱えます。

④ 次に翻訳用テンプレートになるPOTを作成します。
作成には

があります。

⑤ POTからPOとMOを作成します。
実際に使われるのはMOだけですが、MOはバイナリーの為、テキストエディターで編集出来るPOも一緒に置いておきます。

⑥ サイトに日本語化ファイルをアップロードする場合は、作成したPOとMOを、そのサイトの wp-contents > pluginsにある目的のプラグインディレクトリ内の、languagesディレクトリに、MOとPOをアップロードします。

あらかじめ多言語化対応として作られたプラグインの場合、すでに生成されたPOTやPOファイルが有りますから、①②③④の行程を省いてPoeditなどの言語ファイル用エディターを使って日本語訳文字列を打ち込み、簡単に日本語化MOファイルを作れます。

そうでない場合は、面倒ですが①②③④の作業も必要になります。

コマンドラインからi18n toolsを使う方法

ターミナルなどコマンドの扱えるツールでPOTを作成する方法です。
PHPが使える様にパスが通してある必要が有りますが、コマンドラインが苦手でなければ、わりと簡単に作成出来ます。

(詳細は18n for WordPress Developersの下の方のi18n toolsを参照)

まず、ターミナルを起動し、cdで作業するディレクトリに移動します。

そこでSubversionのチェックアウトコマンドを使って、http://develop.svn.wordpress.org/trunk/を移動したディレクトリにダウンロードします。

lsコマンドでカレントディレクトリ内を表示すると、

すると

trunkがダウンロードされているのが確認出来ます。

次に多言語化したいプラグインのディレクトリのシンボルリンクを、trunk/src/wp-content/plugins/にその多言語化したいプラグインのディレクトリと同名のディレクトリを作ってやります。

例えば多言語化したいプラグインのディレクトリがwp-multibyte-patchなら、trunk/src/wp-content/plugins/wp-multibyte-patchとします。
以下、多言語化したいプラグインのディレクトリをyour-plugin-directoryとします。
新しく作るディレクトリをsymbol-directoryとします。

your-plugin-directoryにlanguagesディレクトリを作成します。

cdでtrunk/src/wp-content/pluginsに移動します。

makepot.phpをwp-plugで実行します。
最初のオプションはさっき作成したsymbol-directoryのパスです。
2つ目のオプションはsymbol-directoryのパス/languages/your-plugin-directory名.potです。your-plugin-directory名がwp-multibyte-patchなら、wp-multibyte-patch.potとなります。

するとyour-plugin-directory内にlanguages/your-plugin-directory名.potが生成されます。

因にテーマを日本語化する場合は、wp-pluginの代わりにwp-themeを使い、

の様にします。

Blank-WordPress.potをPoeditで編集して作成する方法

こちらはコマンドラインを使う方法ではなく、Blank WordPress PotBlank-WordPress.potというPOTのテンプレートをPoeditで編集して作成する方法です。
感覚的には、こちらの方が馴染み易いかもしれません。

  1. まずBlank WordPress Potをダウンロードします。Blank-WordPress-Pot

2. ダウンロードしたBlank-WordPress-Pot-master.zipを解凍します。

3. 多言語化したいプラグインのディレクトリにあるlanguagesディレクトリ(無かったら作成)に、解凍して出来たBlank-WordPress-Pot-masterフォルダ内のBlank-WordPress.potを移動します。

4. Poeditをダウンロード&インストールし、Poeditを起動します。
poedit

5. Poeditで、プラグインのディレクトリ/languages/Blank-WordPress.potを開きます。
(Macの場合、メニューバーのファイル > POTファイルを元に更新… を選択します。)

すると
poedit_1とウインドウが出るので、とりあえず上部の「翻訳の言語」は「日本語(日本)」で「OK」をクリック。
そして下部の「ソースから抽出」をクリックします。

6. 次のモーダルウィンドウが表示されるので、「翻訳の設定」ボタンをクリックします。
poedit_2

7. 「翻訳の設定」で、「プロジェクト名とバージョン」にプラグイン名とバージョンを入れます。
「翻訳チーム」と「翻訳チームのメールアドレス」は必要に応じて入れておきます。
poedit_3

8. 「ソース中のキーワード」ボタンを押して表示されるキーワードは、みっちり入っていますから、このままで大丈夫です。
下部の「OK」ボタンをクリックすると、ここに登録されているキーワード・関数でラップされた文字列が抽出されます。
poedit_4

9. カタログファイルが作成されました。これをメニューバーの ファイル > 保存 を選択して上書き保存します。
poedit_5

これでPOTが出来上がりました。

次回はPOとMOについてです。
WordPressのローカライズ、つまり日本語化 – その3 poとmo

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です