textdomainからpoまで

Last-modified: 2022-02-22 (火) 13:07:47

Multilingual.png

ここではアドオンの制作での多言語化の実装に焦点を当てて、実際の作業手順を解説しています。
アドオンを制作する上で、翻訳ファイルを使用可能にするために必須のWMLコードの解説から、翻訳ファイルの作成と実装までを順を追って紹介していきます。
アドオン作者以外の方が既に完成しているアドオンの翻訳のみを行う場合も、この記事で扱う内容は助けになるでしょう。


 
 

アドオン製作時の多言語化実装プロセス

この章ではアドオンの多言語化(翻訳が可能な状態)を実現するために、アドオン制作時に行わなくてはいけない作業について説明します。
このが正しく行われていなければ、アドオンを翻訳することは出来なくなります。
海外の作者のアドオンを翻訳する場合でも、この章で説明する内容に沿ってそのアドオンが翻訳可能かをチェックすることが出来ます。

 

textdomain 多言語化に向けた最初のステップ

アドオンに翻訳ファイルを導入するためにはtextdomainを設定しておく必要があります。textdomainとは、翻訳されるテキストが所属するグループの名前と住所のようなものです。
Wesnothのテキストはいくつものドメインに分割されています。例えばユニットファイルに登場するテキストは"wesnoth-units"というドメイン名、ヘルプに使用されるテキストは"wesnoth-help"というドメイン名に所属しています。
そしてアドオンに登場するテキストにも固有のドメイン名が必要になります。このドメイン名を持っていないテキストは翻訳される事は無いのです。
さらに、ドメイン名には住所が必要です。翻訳ファイルにはドメイン名がファイル名として使われ、そのファイルがどこに置いてあるのかをはっきりさせておく必要があります。
ドメインが住所不明の状態ではWesnothがそのドメインの翻訳テキストを見つけることが出来ないからです。


具体的なtextdomainの設定方法は次の通りです。
アドオンの_main.cfgに[textdomain]タグを使ってドメインの名前と住所を設定します。

[textdomain]
  name="wesnoth-fighting_office_worker"
  path="data/add-ons/fighting_office_worker/translations/"
[/textdomain]

nameの値がドメイン名になります。
慣例では、アドオンの名前、または略称を使用してドメインに名前を付けます。 たとえば、wesnoth-utbsまたはwesnoth-Son_of_Haldricなどのように。 UMCの場合、別のアドオンと衝突しないようにアドオンのフルネームを使用することが推奨されています。
pathの値がドメインの住所になります。
通常はアドオンフォルダにtranslationsというフォルダを作成して、そのパスを値として設定します。


 

アドオン内のファイルをtextdomainに含める

さて、textdomainの設定が終わりましたが、これだけではテキストは翻訳されません。ドメイン名と住所は決まりましたが、まだそこに住む住人(翻訳可能なテキスト)の登録がされていません。
住人のいない家(ドメイン名)では、翻訳するべきテキストは見つかりませんね。そこで、テキストの住民登録を済ませなくてはなりません。


次に示すのがその方法です。
アドオンの中で翻訳可能なテキストが含まれるファイル全ての一行目に以下のコードを追加します。

#textdomain wesnoth-fighting_office_worker

このコードの意味は「これ以降の行に存在する翻訳可能テキストはwesnoth-fighting_office_workerというドメイン名に所属する」となります。
ちなみに、このコードが意味を持つのは翻訳可能テキストが存在するファイルだけですので、そもそも翻訳するテキストが無いファイルには書き込む必要はありません。


 

翻訳するべきテキストに印を付ける

さてさて、アドオンが翻訳可能になるまであと一息です。
先程のコードで「これ以降の行に存在する翻訳可能テキストはwesnoth-fighting_office_workerというドメイン名に所属する」事になったわけですが、翻訳可能テキストとはどのようなものでしょう?
そうです、翻訳可能テキストには目印が必要なのです。目印が付いてないと、Wesnothはそれを翻訳するべきテキストと判断しません。目印が付いたテキストを次に示します。


_"Translateable text"

上記のように、アンダーバーに続くダブルクォーテーションに挟まれた文字列が翻訳可能テキストとみなされます。
全ての翻訳可能テキストに、この目印を付けてください。


 

ここまでの作業が全て終わったら・・・おめでとうございます!
アドオンは翻訳可能な状態になりました!

 

翻訳作業へ取り掛かる

この章ではアドオンが完成した後、実際の翻訳ファイルを作成する方法とその実装について説明します。

 

翻訳作業の第一歩POTを作成する

アドオンが翻訳可能になったなら、いよいよ翻訳作業の開始です。しかし、翻訳作業といっても具体的に何をするのでしょう?
まず最初に行う作業は、翻訳するテキストをアドオンからリストアップし一つのファイルにまとめる事です。このファイルのことをPOTと言います。
WesnothではPOTファイルを作るためにwmlxgettextというコマンドファイルが用意されており、コンソールなどのコマンドラインツールでwmlxgettextコマンドを実行することでPOTを作成できます。


ここで、wmlxgettextについて説明しておきましょう。
wmlxgettextとはGettextをWesnoth用にカスタマイズしたコマンドファイルです。そして、wmlxgettextには2種類のバージョンが存在しており、一つは最新のWesnothパッケージにバンドルされているpythonバージョン、もう一つは以前のWesnothのソースコードに含まれていたperlバージョンです。

pythonバージョン では、同じくWesnothパッケージにバンドルされているGUI.pywという支援ツールが使えるのですが、python3をインストールするなど前準備が面倒な印象です。
perlバージョン は、GUIインターフェイスは無いもののwmlxgettextだけでコマンドが完結しているため、使用するときの手間が少なくて済みます。

POTの作成方法についてはこちらを参考にしてください。

wes_icon.png

POTの作成手順

wes_icon.png

pythonでPOT作成


  • wmlxgettextの入手
    pythonバージョンは最新版のWesnothパッケージに含まれています。
    perlバージョンはPOTの作成手順のページでダウンロードできます。

 

テキストを翻訳しPOを作成する

POTが用意できたら、それを元にPOを作成して実際の翻訳作業に入りますが、この作業には二つの選択肢があります。


1.Web上の翻訳プラットフォーム(例えばtransifex)を利用して作業する。
この方法は複数のメンバーで協力して作業する場合にオススメです。POファイルは翻訳プラットフォーム内の個別プロジェクトに設置され、それを編集する形になります。さまざまな設定作業はプラットフォームの機能を利用して行う事ができ、ヘルプ等も充実しています。
日本語翻訳チームのメンテナに相談すれば、transifexでのプロジェクト設置等を手伝ってもらえます。大規模な翻訳作業があるなら、利用を考えてみましょう。
日本語翻訳チームのメンテナへコンタクトを取りたい場合は、wesnoth公式Discordのjapaneseチャンネルを利用してください。


2.個人的にローカルディスクでの作業をする。
アドオン作者自身が翻訳もする場合や、テキストボリュームがそれほどでも無い場合は個人で一気に翻訳作業を進める方が効率的かもしれません。

こちらの方法ではPoeditのような編集エディターを使用するのが、もっとも確実で簡単です。以下にPoeditを使用した翻訳を始めるまでの手順を紹介します。

  • Poeditを起動すると図のような画面になります。
    Poedit_01.png
    新しい翻訳を作成を選ぶと、開くファイルを聞いてきますので用意したPOTまたはPOを選択します。
     
  • ファイルを選ぶと、言語選択画面になります。
    Poedit_02.png
     
  • 言語を選択したら、POの編集画面になりますのでそのまま翻訳作業に入れます。
    Poedit_03.png
     
  • 翻訳作業を始める前に、ファイルを保存しましょう。
    として保存を実行すると「ja.po」および「ja.mo」が生成されます。(jaの部分は選んだ言語によって変化します)

 

翻訳ファイルを実装する

POの編集が終わり翻訳ファイルが完成したら、翻訳を実際に適用するために翻訳ファイルをアドオン内の所定の位置に設置しなくてはなりません。Wesnothはバージョン1.14以降ではPOも直接読み込めるようになっていますので、設置する翻訳ファイルにはPOとMOのどちらでも使用できます。
また、POとMOではファイルの設置方法が若干違いますので、間違えないように注意しましょう。
ちなみに、設置する翻訳ファイルはどちらか片方だけです。


翻訳ファイルの所定の位置はtextdomainのパスに依存し、そのパスは通常アドオンの_main.cfgに記載されています。_main.cfgを開いてみましょう。次のような記載があるはずです。

[textdomain]
    name="wesnoth-After_the_Storm"
    path="data/add-ons/After_the_Storm/translations"
[/textdomain]

pathというキーが場所を示しています。

  • POを設置する場合
    pathの場所にnameの値のフォルダを作ってください。
    この例では、「data/add-ons/After_the_Storm/translations/wesnoth-After_the_Storm」となります。それがPOの設置場所になります。
    設置するPOは、ファイル名が「言語名.po」となっている必要があります。日本語の場合は「ja.po」となります。
  • MOを設置する場合
    pathの値に/言語キー/LC_MESSAGESを加えたディレクトリが翻訳ファイルの設置場所になります。
    日本語の場合は言語キーがjaとなるので、この例では
    「data/add-ons/After_the_Storm/translations/ja/LC_MESSAGES」となります。
    また、MOのファイル名はtextdomain内のnameの値にする必要があります。
    この例では「wesnoth-After_the_Storm.mo」となります。

Poeditを使用している場合は、これらの設定をPO保存時に一緒に済ませる事ができます。
transifex等からダウンロードした翻訳ファイルを使用する場合は、自分で設置する必要があります。


アドオンが格納されている場所を調べたい時は次のコマンドを使用して位置を確認できます。

% wesnoth --config-path
 

テストプレイ

翻訳ファイルの実装が終わったら、正常に翻訳が適用されるか確かめるためにテストプレイをしてみましょう。
その際、たとえ面倒でもテキストをスキップしたり斜め読みで済ませようとはせずに、一文字ずつしっかり読んで誤字脱字等が無い事、文章に不自然な所が無い事を確認していきましょう。
また、テストプレイはなるべく複数の人間が行うのが理想です。人の目が多くなるほどミスを事前に見つけられる可能性が高くなります。

 

テキスト修飾について

WesnothはPangoマークアップフォーマットを利用してテキストを修飾する事ができます。(例えば太字や斜体を適用したり文字色を変えたりなど)
修飾されたテキストはPangoのタグがテキストに含まれており、翻訳文にも同じようにタグを含める必要があります。

Pangoマークアップフォーマットの解説ページ(英語)

 

Poeditを使用している場合、少し注意が必要です。
修飾されたテキストの場合、一旦原文を修飾タグごと翻訳欄にコピペしてテキスト部分を翻訳に置き換えるようにしてタグの打ち間違えを防ぐのが良いと思いますが・・・
タグの一部に(')シングルクォーテーションが含まれていると、Poeditのスペルチェックが働いて下図のような変換が起こる事があります。

conversion_3.png

この変換が起きるとタグが正しく認識されなくなるので、アンドゥ機能を使って変換前の状態に戻してから作業の続きをするようにしてください。

  • この変換が起きると、タグ部分が強調表示されなくなります。
    conversion_1.png
  • アンドゥをかけると強調表示が戻ります。
    conversion_2.png

 

_server.pblの翻訳について

_server.pblはアドオンサーバーがアドオンを管理するための書類です。この書類の中には、ユーザーがアドオンサーバーアクセスしアドオン一覧画面で目にする「アドオンのタイトル」と「説明文」が含まれています。
Wesnothはバージョン1.16から_server.pblの説明文を翻訳可能になりました。ただし、_server.pblの翻訳は通常の翻訳のようにPOに基づくものではなく、[translation]タグを使用して行われます。
ここでは、その使用法を説明しています。


_server.pblに含まれるタイトルと説明文の記述は次のようになります。ここでは「_(アンダーバー)」が使用されていないことに注目してください。

title="Add-on title text"
description="Add-on description text"

タイトルと説明文の翻訳は[translation]タグを追加する事で可能になります。ここでも「_(アンダーバー)」は使用されません。

[translation]
  language="ja"
  title="アドオンのタイトルテキスト"
  description="アドオンの説明テキスト"
[/translation]

[/translation]で使用されるキーは3つです。
language、言語を指定するキーです。日本語の場合は"ja"とします。
title、アドオンのタイトルの翻訳テキストが値となります。
description、説明文の翻訳テキストが値となります。

 

_server.pblに日本語翻訳が適用されるとこのようになります。

  • タイトル一覧
    pbl_1.png
  • アドオンの説明画面
    pbl_2.png
     
    戻る