Wesnothが多言語化を実現するために採用しているのがGettextです。ここではGettextについての大まかな解説とその使用法について説明しています。
こちらの記事はある程度プログラミング知識を持った方向けに書かれているものもあり、コマンドラインでの作業に慣れていない方には意味不明な部分もあるかもしれません。
でも安心してください。翻訳作業をするだけならプログラムが動く仕組みや書かれたコードの正確な意味を必死に学習する必要はありません。ふ~ん、そうなんだぁ・・・的なスタンスで問題ありません。
Gettext
Gettextはソフトウェアの国際化と地域化のための開発ライブラリ・コマンド群です。wesnothもGettextを採用する事での国際化(翻訳)を実現しています。GettextはWesnothソフトウェア内の翻訳可能なテキストを抽出し、リスト化したデータを作成します。そのデータに対して翻訳作業を行う事になります。リスト化された翻訳可能テキストのデータファイルはPOTと呼ばれ、このデータファイルを元にして言語別に独立した翻訳プロジェクトを設置することができます。
GettextはWebコンテンツのように国際化が強みになるプロジェクトで使用されることが多く、WordPress等がその好例として上げられます。Wesnothでは、Gettextをさらにカスタムした専用スクリプトファイル wmlxgettext を使っています。
- Gettextのインストール
Unix系のOSならばgettextパッケージが用意されていると思います。
Windowsの場合は、mingwに同梱されているものを使えるようです。
が、↓のPoeditが編集から変換までまとめてやってくれるので、そっちをインストールした方が良いです。 - Poedit
Gettextを利用した翻訳支援ツールであり、.poファイルのエディタでもあります。
.pot→.po、.po→.moなどの変換もGUIでできます。
非常に扱いやすいツールなので、お勧めです。
OSDNよりダウンロードできます。
Gettextで作成されるファイルについて
POT
対象となるコンテンツから一定のルールに従って抽出された、翻訳元となるテキストをリスト化したファイルで、翻訳ファイルのテンプレートとなるデータファイルです。
あまり目にかかることはありませんが、アドオンの翻訳時にはwmlxgettextで生成する事になります。翻訳作業をする時は、このPOTをPOへ変換して作業を行います。
- POへの変換
コンソール等を使用する場合は、次のようにしてmsginitコマンドで変換します。% msginit --locale=ja -i 入力ファイル -o 出力ファイル
入力ファイルは.pot、出力ファイルは.poです。出力ファイルには拡張子.poを付けておきましょう。
Poeditのような編集エディターを使う場合は、自動で変換してくれます。
PO
翻訳者が編集し、対訳を記述していくデータファイルです。実体はただのテキストファイルなのでテキストエディタでも編集できます(ただし、文字コードはUTF-8,改行コードはunix(LF)で保存する必要があります)。
どう考えても、Poeditのような編集エディターを使う方が効率的なのですが、どうしてもテキストエディタでやりたい人は「テキストエディタでPOの編集」を参考にしてください。
翻訳作業が完了したら、MOに変換します。
- MOへの変換
コンソール等を使用する場合は、msgfmtコマンドを使います。% msgfmt -o (出力ファイル名) (入力ファイル名)
出力されるのは.mo、入力は.poファイルです。出力ファイル名の末尾には拡張子(.mo)を付けておきましょう。
Poeditのような編集エディターを使う場合は、自動で変換してくれます。 - 更新されたPOTデータをマージする
元となるテキストが更新されPOTが新しくなった場合、POも更新する必要があります。
コンソール等を使用する場合は、msgmergeコマンドを使います。% msgmerge -U old.po new.pot
みたいな感じです。new.potが新しく作った翻訳テンプレートで、old.poは既存の翻訳データです。このコマンドを実行すると、old.poの方に新しいテキストが登録されます。
Poeditのような編集エディターを使う場合は、カタログメニューから更新できます。
transifexみたいなプラットフォームを使っていれば、元データを更新するだけでこの辺を結構自動的に片付けてくれます。
MO
対象のソフトウェアが実際にデータを読み込んで使用する、翻訳テキストが含まれたバイナリデータのファイルです。
- POへの逆変換
必要な場合は、MOからPOへ逆変換することもできます。
コンソール等を使用して、gettextのパッケージに同梱されているmsgfmtコマンドを使います。% msgunfmt -o (出力ファイル名) (入力ファイル名)
入力ファイルは.mo、出力ファイルは.poとなります。出力ファイル名には.poの拡張子を付けておきましょう。
なおこの場合は通常のPOに含まれているような、ファイル中のコメント(その文章がどのファイルの、どの位置で扱われているかなど)は全て失われてしまいます。そのため、このファイルを直接使用するのは避けて、wmlxgettextで生成した最新のPOTにマージするような利用法が良いでしょう。
翻訳関連の技術資料
- POTの作成方法に関する説明
pythonでPOT作成
WMLxGettext2.0_forPOT
- POとMOの変換に関する説明
Mac OSXでpoからmo変換の国際化環境を構築する ~MacPortsをインストールする~ | aguuu
Mac OSXでpoからmo変換の国際化環境を構築する ~gettextをインストールしてpoからmoにコンバートする~ | aguuu
- POの編集
テキストエディタでのPO編集