完全な初心者のためのWMLガイド/付録:日本語に対応させるために

Last-modified: 2021-10-19 (火) 22:10:44

このチュートリアルでは、メッセージ部分も含めて全て英語で取り組むことを推奨しています。作ったアドオンを世界中の人に見てもらうためには、基本的に英語表記で作る必要があるからです。
でも、日本のプレイヤーには日本語でプレイしてもらいたいですよね。そこで、本編では触れられていないアドオンに翻訳を被せる方法について考えてみましょう。

 

Wesnothに日本語を表示させるには2種類の方法があります。一つはWesnothの慣例通りに翻訳ファイルを添付する方法。もう一つは、最初から表示させるテキストを日本語で入力する方法です。
後者はお手軽に日本語表示できますが、他の言語圏の人は困ってしまいますし、このチュートリアル的にも却下の方針です。
という訳で翻訳テキストを添付する方向で話を進めます。

 

翻訳の仕組み

翻訳の仕組みについては、このwikiの翻訳カテゴリーにも解説がありますがWesnothのテキスト翻訳は.moというファイルを使って行われます。
.moは翻訳された文章と翻訳する箇所の情報を格納したファイルです。これは各言語ごとに1個必要でそれぞれキャンペーンフォルダ内の決められた場所に格納されます。
そして、キャンペーンの他のファイルも翻訳に対応した書式になっている必要があります。この二つの条件が揃った時にWesnothは翻訳されたテキストを表示してくれます。
それではまず、翻訳に対応した書式についておさらいします。

 

_main.cfg

_main.cfgに最初に書き込んだタグを覚えていますか?

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

これが翻訳対応への始まりです。これはmy_first_campaignは翻訳に対応しますという宣言をしていると共に、このキャンペーンに属するファイルに付ける符号を"wesnoth-my_first_campaign"と設定しています。
さらに、pathによって翻訳ファイルが格納される場所を明示しています。これが翻訳対応の第一段階です。

 

次に_main.cfgに書き込んだのは、

 
#textdomain wesnoth-my_first_campaign
 

これは最初に[textdomain]で設定した符号を_main.cfgに付加したということです。そして、他のキャンペーンファイルを作るたびに、この符号を書き込んでいったことを思い出してください。
これによって、ファイルが翻訳対象に組み込まれます。これが翻訳対応の第二段階です。

 

翻訳可能テキスト
翻訳可能なテキストを示す符号として「 _ 」を使ったことを思い出してください。例えば、

 
name= _ "My First Campaign"
 

翻訳ファイルは、この符号を目印にして翻訳可能テキストをリストアップします。翻訳させたいテキストには全てこれを付けなけれないけません。
ここまでが第3段階です。キャンペーン作成時に行う翻訳対応の準備は以上です。

 

翻訳ファイルの準備
ここからはキャンペーンが完成してからの作業になります。
WesnothはGettextというツールを利用して翻訳を実現しています。Gettextの詳しい情報についてはこのwikiの「Gettextについて」の項目を参照してください。
キャンペーンのファイルに施された翻訳のための符号をGettextが読み取り、翻訳箇所をリストアップしたファイル「.pot」を作ります。
これに対訳を書き加えたものが「.po」と呼ばれるファイルです。そして、「.po」をゲームが認識できる書式に変換したものが「.mo」と呼ばれる翻訳ファイルになります。
これを所定の場所に置くことで、翻訳が有効になります。「.mo」を作るまでの手順はアドオンの翻訳で解説がされています。unix系のOSまたはWindowsをお使いの方はそちらを参照してください。

 

Macでも「.pot」は作れます。

ユーザーが少ないためか、あまり情報が無いMacでの翻訳ファイルの作成ですが、当然Macでも可能です。実はWindowsで作業するよりも楽かもしれません。
ここではMacで.potを作成する方法を紹介します。

 

ここで紹介している方法はWesnothバージョン1.12の頃の情報です。1.14ではwmlxgettext は2種類存在しておりそれぞれ作業方法が異なります、下記の方法ではうまく行かない場合もありますので注意してください。
wmlxgettext の詳しい説明がここにあります、うまく行かなかったらこの説明書(英語)を読んで研究してみてください。

 

wmlxgettextの入手
最初にやることはwmlxgettextを入手することです。これはMac以外のユーザーも同じですね。
wmlxgettextとは、Wesnoth用にセッティングされたGettextのことで、Wesnothのバージョン毎に微妙な差があり、プログラミング素人にも使いやすいのは1.12.6バージョンのようです。
wmlxgettextはWesnothのソースコードに含まれていますので、そこから入手します。ソースコードのどこにあるかはアドオンの翻訳のwmlxgettextで生成するの項目に書いてあります。
wmlxgettextを入手したら、キャンペーンフォルダがある場所と同じ「add-ons」フォルダに入れておきます。(これはMacユーザーの場合です)

 

Poeditの入手
Poeditは名前の通り、「.po」を編集するためのアプリケーションです。通常のテキストエディタでも作業は可能なようですが、これが有るのと無いのとでは作業効率が全然違いますから私としてはこれを使用することをお勧めします。

 

Potを作る
これで、ツール類は揃いました。続いて実作業に移ります。まず、テキストエディタで新規に書類を作って次のテキストをコピーペーストしてください。

 
find "/Users/ユーザー名/Library/Application Support/Wesnoth_1.12/
data/add-ons/キャンペーン名" -iname "*.cfg" -print0 | xargs -0 "/Users/
ユーザー名/Library/Application Support/Wesnoth_1.12/data/add-ons/wmlxgettext" --
directory . -domain wesnoth-ドメイン名 > ドメイン名.pot
 

wiki上では改行されているかも知れませんが、これは1行である必要があります。そして、日本語で「キャンペーン名」と書いてある場所にキャンペーンフォルダの名前をコピペします。今回は「my_first_campaign」ですね。
そして、一番後ろの方の「ドメイン名」となっている2箇所に「#textdomain wesnoth-my_first_campaign」の - より後ろの部分(my_first_campaign)をコピペします。

 

次はアプリケーション/ユーティリティフォルダの中にある「ターミナル」というアプリケーションを起動します。これはプログラミングに縁の無い方はほぼ目にする機会の無いコマンドラインツールです。
「ターミナル」が起動するとウインドーに次のような2行のテキストが表示されます。

 
Last login: "日付の表示"
"Macの名前":~ "ユーザー名"$
 

一応言っておきますが、日本語の部分は便宜的にそうしているだけで実際は英語表記です。そして、この表示の「ユーザー名」を先ほど作成したテキストの「ユーザー名」の部分にコピペします。
もしあなたが「J_R_R_Tolkien」という名前でMacのユーザー名を登録しているとするなら、テキストはこのようになっているはずです。

 
find "/Users/J_R_R_Tolkien/Library/Application Support/Wesnoth_1.12/data/add-ons/
my_first_campaign" -iname "*.cfg" -print0 | xargs -0 "/Users/J_R_R_Tolkien/Library/
Application Support/Wesnoth_1.12/data/add-ons/wmlxgettext" --
directory . -domain wesnoth-my_first_campaign > my_first_campaign.pot
 

次に「wmlxgettext」をターミナルのウインドーにドラッグ&ドロップし、リターンキーを押します。すると、十数行のテキストが出力されます。
(裏で何が起こっているのかは聞かないでください、私は知りません。)

 
Last login: 日付
Mac名:~ J_R_R_Tolkien$ /Users/J_R_R_Tolkien/Library/Application\ Support/
Wesnoth_1.12/data/add-ons/wmlxgettext
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: http://bugs.wesnoth.org/\n"
"POT-Creation-Date: 2017-03-25 20:26+0900\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
Mac名:~ J_R_R_Tolkien$
 

これに続けて、半角小文字で「cd 」(cdの後にスペースが1個必要です)と入力し、今度はキャンペーンフォルダ(my_first_campaignフォルダです)をドラッグ&ドロップし、リターンキーを押します。
最後の行がこうなっていることを確認してください。

 
Mac名:my_first_campaign J_R_R_Tolkien$
 

確認したら、先ほど作った長~い一行のテキストをコピーし、ターミナルのウインドーにペーストし、リターンキーを押します。
すると、大量のテキストが表示されますが、特に読む必要はありません。ターミナルの動きが止まったらターミナルは終了して構いません。

 

my_first_campaignフォルダの中に「my_first_campaign.pot」というファイルができているなら、それが目的の.potです。

 

ここから先はMacユーザーも他のユーザーとやることは同じです。後はこのwikiの翻訳カテゴリーを参考にすると良いでしょう。

 

目次に戻る