WordPress 1.5以降、ソースコード内の各国語に翻訳すべき文字列をmoファイルに格納し、国際化に対応しているのは周知の事実。wordpress/wp-content/languagesに入っている.moファイルがWordPress本体のものです。しかし、後付けプラグインの言語までは網羅できません。英語がわかる人はまるで問題ないですが、やはり、日本語に変換されているほうがわかりやすいし、見た目も統一されていいものだと思います。
このプロジェクトの基本の「き」、Poeditについてまとめておきたいと思います。(執筆時のPoeditのバージョンは v1.3.6 でした。)
準備編
1. Poedit入手
PoeditからDLします。(2008年3月現在、1.4が最新です) Windowsユーザーなら poedit-1.*-setup.exe をダウンロードします。(Mac用は開発中) あと解凍・設置します。
Poeditが起動したら、自動的に次のことを求められます。「名前」「メールアドレス」の入力(これがpoファイルに記入されます)、使用する言語(ここでは「Japanese」)の選択をしましょう。
日本語変換の原理
例えば、bsuite日本語版で説明します。まず本体のbsuite.phpをテキストエディタで開くと・・・
27行目あたりに
load_plugin_textdomain('bsuite');
とあります。ローカライズされたプラグインはこの記載が必ずあります。これは、bsuite-∼.moを読み込むことを意味しています。逆に言えば、ローカライズするファイルの先頭にこの文言を挿入しなければならないということです。
例えば957行目あたりに
$notice = "<div id='bstat_hilite'>".__("The following search terms have been highlighted: ","bsuite");
とあります。ローカライズされる文章は必ず__or_eのコードが先頭についています。そして「The following search terms have been highlighted: 」をbuite-∼.moファイルの中の翻訳された言語に入れ替えられてブラウザに表示するというわけです。
Poeditのファイル
Poeditに関係するファイルは、.pot、.po、.moの3ファイル。
.pot・・・翻訳する文字列のみ抽出したファイル。プラグインに同梱されていれば、プラグイン本体を改造することなく、翻訳可能だ。
.po・・・翻訳済みの編集用ファイル。ちょっとした修正が可能。自分なりの表現に変えてmoファイルを作り出すことが出来る。
.mo・・・ローカライズの本体ファイル。プラグイン本体はこのファイルを読み込んでいる。アップロードはこのファイルだけでいい。
なお、UTF-8、EUC-JP、Shift-JISのエンコードに対応できます。
Poeditの使い方
1. プラグイン編集編
まだまだpotファイルを同梱してくれている作者さんは少ないので、プラグインを編集しなければなりません。
<?php ∼ ?>内に記載されている場合は__を、それ以外では_eを使うような認識しかないのですが、
The following search terms have been highlighted: の場合・・
例1:
例2:
みたいな感じになります。いろいろなパターンがあるので、日本語版を数多く入手して参考にしてみてください。
//---Otsukareさんフォロー START-------------------------------
$letters = echo __('words');
と
$letters = _e('words');
が等価になります。
__('') は値を返す、_e('') は文字列を出力すると覚えておけばいいでしょう。
前者は他の関数内で利用されることが多く、後者は直接文字列を出力するときに利用されます。printf()とsprintf() の違いのようなものです。
//---Otsukareさんフォロー END-------------------------------
2. 翻訳準備編
poファイルをテキストエディタで開いてみればわかりますが、
ヘッダーのあと、この3行の繰り返しで構成されています。
1行目:格納場所/表示行数
2行目:翻訳する文字列
3行目:置き換える日本語
ということで、Cドライブ(Dドライブ)にwordpressフォルダを設置して、実際の配置どおりに翻訳したいプラグインを設置します。
3. Poedit操作
○ Poeditを起動させ、ファイル>新規カタログをクリック。
○ 上記のように記入する。
○ 最後にOKをクリックし、格納場所(同じプラグインフォルダ内)とファイル名を決定する。
○ すると翻訳箇所が自動的に取り込まれる。(よくファイルがないと怒られることあり)
○ 上が翻訳する文章で下に翻訳した文章を”∼”に記入する。作業中断時は左から2番目の「カタログの保存」をクリックすると保存され、自動的にmoファイルも生成される。(moファイル自動生成を設定の場合)
○ 配布する場合など、まず1種類(例えばUTF-8)のpoファイルを完成させる。完成したpoファイルをテキストエディタで開き、他のエンコード(例えばEUC-JP)で保存しなおす。その際、ヘッダー部分の・・・
"Content-Type: text/plain; charset=utf-8\n"
の”utf-8”の部分を”EUC-JP”に書き換えること。これをPoeditで読み込み、保存をクリックするとEUC-JPのmoファイルが出来上がるわけです。
こうしてまとめるとかなり長い手順ですね。ちょっとずつ触ってみてはどうでしょうか。既に日本語化されたpoファイルを編集してお国の方言に書き換えてみるとか・・・。(苦笑) Let’s try!
参考にさせていただいた記事
高度テクニック編
hiromasa zone 『WordPress プラグイン日本語化 Tips』より一部抜粋しています。(ひろまささんに許可いただきました。ありがとうございました。)
この場合における『メッセージの __ 関数 _e 関数 でのくくりだし』ですが・・・
このままでくくりだしてしまうと・・・
となってしまい・・・
こんな風に無理やりなものになってしまいます。日本語訳だとこれでもいいかもしれませんが、他言語だと一体どうなってしまうのか
ともってくれば・・・
となり、不自然になりません。
あまりローカライズを意識していない作者さんはこのようなコードをとっていることが多いので是非マスターしておきたいです。
コメント
RSS
を使用するとこの投稿のコメントが確認できます。
TrackBack URI
コメントしてみる?
こんにちは。
細かいですが、、下から2番目のソースですが、
$s じゃなくって、%s ですね!
きれいなドキュメントありがとうございます! 参考になります∼。
…。
DBおちているので、確認できないのですが。。
ひょっとするとぼくがやらかしていたでしょうか。。(笑)
Googleキャッシュで確認したところ、ひろまさ師匠はあってます。私がやらかしました・・・orz
酔ってたんですかね。
早速修正しましたんで・・・。ご指摘、ありがとうございました。
こんにちは。はじめまして。
日本語化、国際化されているというプラグインを設置しても
英語のままというものが多くて、悲しくなっていたので
それなら自分でできないだろうか。。。と思って
こちらのサイトに飛んできました。
こちらを参考に挑戦してみたいと思います。