翻訳ファイル作成の 3 ステップ
先日、プラグインとテーマのローカライズについて主にプラグインやテーマの開発者の視点に立って書きましたが、今度は翻訳をする人の立場で見てみたいと思います。
gettext の翻訳ファイル作成をサポートするツールはいくつかあるようですが、Windows では poEdit が使えます。poEdit の現時点での最新バージョンは 1.3.4 です。
poEdit を使った翻訳ファイル作成作業の流れは次の各段階に分かれます。
- ソースコードから翻訳対象のテキストを自動抜粋、.po ファイルを生成する。
翻訳対象となるテキストは
__()
と_e()
のところなので、poEdit はソースファイルをサーチして自動で収集してくれます。生成される .po ファイルはテキストフォーマットのファイルで、次の翻訳作業で編集に使われます。 - .po ファイルを編集、翻訳作業を行なう。
この段階が実際の翻訳作業です。作業は poEdit のインタフェイスから行ないますが、.po ファイルは普通のテキストファイルなので他のエディタで編集することも可能です。
- .po ファイルを保存、同時に .mo ファイルが生成される。
編集した .po ファイルを保存すると同時に .mo ファイルが自動生成されます。.po は人間が読み書きするのに適したテキストファイルであるのに対して、.mo はマシンが高速に読み込むことに適したバイナリファイルです。
既に誰かが .po ファイルを公開していてそれを一部手直しして使いたいだけなら、1 を飛ばして 2 の手順から始めることになります。1 は少々ややこしいので先に 2 の説明から始めます。
.po ファイルを編集する
.po ファイルを poEdit で開くと下のような画面が現れます。
上部にオリジナル文字列と翻訳後の文字列の対がリストアップされて、各対が選択可能になっています。選択された文字列対が下部に2段になって表示され、1段目がオリジナル、2段目が翻訳後です。各段とも右側にコメント欄が設けられていて、チームで翻訳作業をする場合などには便利だと思います。
なお、poEdit 1.3.4 では開くと毎回かならずこのようにコメント欄が大きくスペースを占有してしまいます。おそらくこれはバグだと思うのですが、マウスドラッグでサイズ変更が可能なので使いやすいように変更すると良いでしょう。
このように。
編集はまず修正が必要な行を上部のリストから探して、その行をマウスで選択、それから下部の2段目の翻訳後のフィールドに修正を加えます。修正された行には緑の丸印で印が付けられます。
ソースで文脈を確認する
単に英語のフレーズを日本語に訳しただけでは不自然な翻訳になってしまう場合もあります。どのような場面のどのような文脈でそのフレーズが使われているかを確認した上で翻訳することが大事です。
使われている文脈を確認するためには PHP のソースコードをチェックするのが確実です。気になるフレーズにカーソルを合わせて右クリックすると、下のように [参照位置] にフレーズが使われているソースファイルがリストアップされます。この中から1つを選ぶと該当するソースを表示してくれます。
ソースを正常に開けない場合は .po ファイルの配置場所を確認してみて下さい。
.po ファイルを保存して .mo ファイルを生成する
poEdit は .po ファイルを保存すると同時に .mo ファイルを自動生成してくれます。もし自動生成しない場合は、[ファイル] » [設定] で設定ウィンドウを開いて、[編集] タブで [保存時に .mo ファイルを自動生成する] にチェックが入っていることを確認して下さい。
ここまでが既存の .po ファイルを編集する場合の手順です。まだ誰も .po ファイルを作成していなくて新規で作るなら続きを読んでください。
PHP のソースコードから .po ファイルを生成する
poEdit は様々な言語のソースコードを読み込んで、その中から gettext の翻訳対象テキストを自動的に抜粋し、.po ファイルを生成する機能を備えています。以下その手順です。
- poEdit を起動して [ファイル] » [新規カタログ] を開く
- [情報] タブにプロジェクトの情報を入力する
これらの情報は .po ファイルのヘッダに記載されます。なお、ヘッダには [ファイル] » [設定] の [パーソナライズ] タブで指定された名前とメールアドレスも記載されます。
- [パス] タブにソースファイルのパスを入力する
翻訳対象のソースファイルがあるディレクトリまでのパスを入力します。パスの中で作業中の PC 環境固有の部分はベースのパスとして分けて書くようにします。こうすることで他の環境で再編集する場合にもどこまでが固有でどこからが共通か判別可能になります。
操作にかなりクセがあるので注意が必要です。5個横に並んでいる左から2番目が新規作成のボタンで、一見すると押せなさそうですが実は押せます。新規作成してパスを入力したら、必ず一度 Enter キーを打つようにして下さい。そうせずに次に進むと入力した内容がいつの間にか消えていたりします。
- [キーワード] タブに関数名を入力する
WordPress (PHP) の場合は
__
と_e
を入力します。[パス] タブと同様、操作にクセがあるので気をつけて下さい。 - 最後に OK を押すとパスで指定されたディレクトリ中のソースファイルのパースが始まり、.po ファイルとして保存されます。
プラグインとテーマの翻訳ファイルのファイル名についてはルールがあるのでそれに従って設定して下さい。
翻訳メモリを活用する
WordPress で使われる語彙は限られているものです。例えば、多くの場面で “Edit” とか “Comment” といった文言が共通して使われています。従ってプラグインやテーマが違っても翻訳作業の大半は同じ作業の繰り返しということになります。
poEdit には翻訳メモリ (Translation Memory) というとても便利な機能があり、過去の翻訳データを元に翻訳を自動化させることができます。翻訳メモリを有効に活用すれば、繰り返しの多い作業を大幅に短縮させることができます。
翻訳メモリを使う前にまず翻訳データベースを準備しておきます。[ファイル] » [設定] を開き、[翻訳メモリ] タブで利用できる言語として日本語ロケール (ja) を追加、[データベースの作成] ボタンを押して、過去の翻訳ファイルが置かれているパスを指定します。
他の人が作成したものでも参考にしたい翻訳ファイルがあればデータベースに取り込んでおくと良いかもしれません。その方が楽だというだけではなく、翻訳の語彙を揃えた方がユーザにとっても混乱が少なくありがたいからです。
データベースが準備された状態で [ファイル] » [新規カタログ] から新しい .po ファイルを作ると、翻訳メモリから翻訳が可能な行は自動翻訳され、下のようにリストの左端に自動翻訳されたことを示すグレーのマークが表示され、背景がオレンジ色になります。
オレンジの背景はこの訳がファジー翻訳であることを示すものです。ファジー翻訳というのはチーム作業で翻訳を進めるような場合に使われる設定で、翻訳が未完成であるとか、翻訳に確信が持てないから意見が欲しい、というような意味を与えます。
自動翻訳は完全ではないので必ずすべて目を通した方が良いでしょう。特にデータベースのデータが十分でないうちはかなり無理矢理なマッチングを試みるので、十分注意が必要です。
翻訳の候補が複数ある場合には、右クリックすると [自動翻訳] に候補がリストアップされるので、適当なものを選びます。
翻訳の成果を共有する
パブリックなプラグインやテーマの翻訳を行なったなら、その成果をひとりで使わず、他のユーザも使えるよう一般公開すると良いでしょう。日本の WordPress コミュニティでもプラグインの日本語化について情報を集めています。
翻訳の成果を公開することはオープンソースの WordPress コミュニティに対する立派な貢献になるので、積極的に参加すると良いでしょう。
4 replies on “poEdit で翻訳ファイルを作る”
[…] iDeasilo: poEdit で翻訳ファイルを作る by Miyoshiさん poEditを使った翻訳作業の流れがスクリーンショット付きで分かりやすく説明されています。 […]
[…] 次に参考にさせて頂いたのは、iDeasiloさんのpoEditで翻訳ファイルを作るです。 これは、wordpressのプラグインやテーマを翻訳するツールです。 […]
[…] 参考: poEdit で翻訳ファイルを作る […]
[…] 添付の日本語ファイルja_JP.moを→a.moにリネーム(でないと日本語になってくれない)し、日本語化してみるも、一部英語のままの部分があるので、言語ファイルを触ることのできるフリーソフト“poedit”で開いてみました。でも原因が分かりません。 と、いうことで、フォーラムやpoeditの使い方のサイトなどを読みあさってみると、poeditの便利な使い方が。(poEdit で翻訳ファイルを作る by iDeasiloさん) 今までは既存のpoファイルの手直しだけに使っていたけれど、これで、phpファイルなどから多言語化できるテキストを自動で抽出し、それを元に翻訳作業ができることが分かりました。Freshy2テーマではcomments.phpが多言語化対応になっていないのですが、勢いでこのファイルも多言語化し、全部poファイル(moファイル)で操ることにしました。 […]