POTの作成手順

Last-modified: 2022-11-22 (火) 23:04:22

POTを作成する手順を環境別に紹介しています。
こちらで使用するperlバージョンのwmlxgettextはここからダウンロードできます。



 
 

Linux等のUnix的な環境の場合(perlバージョンのwmlxgettextを使用)

以下では未知よりの侵略(Invasion from the Unknown)のアドオンの場合の実行例を示します。
まずは、このアドオンがインストールされている場所へ移動します。
これを書いてるヒトの環境(wesnoth-1.10 at debian testing)では
.local/share/wesnoth/1.10/data/add-ons/Invasion_from_the_Unknown になります。

 

ubuntu22.04LTSで標準リポジトリからaptやパッケージマネージャで導入した場合のアドオン格納場所は
/home/(アカウント名)/.config/wesnoth-1.16/data/add-ons/(アドオン名)
(いちいち入れなくてもwesnoth起動して何でもいいからキャンペーン起動しゲームを再開の左下の保存フォルダを開くから開いてたどればアドオン格納先に行けます)


ここで以下のようなコマンドを実行します。(どっか)や(バージョン)、ドメイン名、出力ファイル名は適宜置き換えて下さい。

% find . -iname "*.cfg" -or -iname "*.lua" | \
  xargs (どっか)/wesnoth-(バージョン)/utils/wmlxgettext --directory . \
  -domain wesnoth-Invasion_from_the_Unknown \
  > wesnoth-Invasion_from_the_Unknown.pot

現在のディレクトリ以下にある.cfgファイルからまとめてテキストを抽出しています。
domainに渡す文字列は上の項目にあるような、そのアドオンのtextdomainです(textdomainは_main.cfg 等の先頭に書いてあります)。

久々にVMware上で動作するLinux環境をopen-vm-tool含めて整えて上記作業をと思ったら「xargs」が仕事してくれない。

  • Windowsで上記のコマンドテキストコピー>該当アドオン向けに編集したのがマズかったようだ
  • (試しに 「xargs」以降省略しFind以下のみのコマンド入れたらfindは問題なく結果を吐いていた
  • 半ばパニックになりあーだこーだといじっても改善せず
  • 結局はLinux上のブラウザからLinux上のテキストエディタにコピペして編集...一発で終わりました
  • (WindowsとLinuxの文字コードの不一致?からくるエラーかもしれませんが...備忘録的な事すんません)

なお、上のコマンドについては、

% (どっか)/wesnoth-(バージョン)/utils/wmlxgettext --directory . \
 -domain wesnoth-Invasion_from_the_Unknown *.cfg */*.cfg */*/*.cfg \
 */*/*/*.cfg */*/*/*/*.cfg > wesnoth-Invasion_from_the_Unknown.po

のようにも書けます。あらかじめディレクトリ階層を調べないといけないのでちょっと面倒くさいですが、こちらのほうがわかりやすいかもしれません。
ちなみに、.luaファイルにも翻訳可能な文字列が存在する場合があるので、その時はそれらのファイルも読み込ませる必要があります。


 

Windowsの場合(perlバージョン/pythonバージョン)

perlバージョンのwmlxgettextによる作成:
公式フォーラムにWindowsでの場合の手順とスクリプトへのリンクがあります。
ただし、最低でもPerlのインストールなんかは事前にやっとく必要がありそうな気がします。

pythonバージョンのwmlxgettextによる作成:
Wesnoth本体付属のpythonバージョンを使ったPOT作成は、pythonでPOT作成で紹介しています。
MacやLinuxでも、perlバージョンでの作成経験があれば、pythonバージョンを使う時の参考になるはずです。

 

Macの場合(perlバージョンのwmlxgettextを使用)

Macの場合も基本的にはLinux等のUnix的な環境の場合と同じなのですが、コマンドの書き方が微妙に違ったりします。
また、Macではドラッグ&ドロップを駆使してコマンド入力を省く事が出来るのでコマンドラインでの作業に慣れていない方でも、なんとか出来るのが嬉しい限りです。
ここで紹介するのは、できる限りの手順をマウス操作で済ませるなんとも素人っぽい方法ですが、知識が乏しくても目的のPOTは手に入ります。

 

ここでは例としてアドオン「The_Sojournings_of_Grog」を使用しています。

1.前準備
まず、対象のアドオンをadd-onsフォルダからダウンロードかデスクトップ(ディレクトリ的に浅い階層の場所)に移動します。

POT_01.png

これは、作成するコマンドがなるべく少ない文字数になるようにするためなので、必須の作業ではないです。

 

2.前準備2
wmlxgettextをThe_Sojournings_of_Grogフォルダに入れる。

POT_02.png
 

3.コマンド作成1
適当なテキストエディターを開いて、次のコマンドをコピペしてください。

find "場所" -iname "*.cfg" -print0 | xargs -0 "場所/wmlxgettext" --directory . -domain wesnoth-ドメイン名 > wesnoth-ドメイン名.pot
 

4.コマンド作成2
The_Sojournings_of_Grogの_main.cfgなどを開き、ドメイン名をコピーし先程のコマンドの「ドメイン名」の部分2箇所にペーストします。
ドメイン名は「#textdomain wesnoth-The_Sojournings_of_Grog」の赤い部分

 

5.コマンド作成3
アプリケーションフォルダのユーティリティの中に「ターミナル」というツールがあるので、これを起動します。
ターミナルの起動画面が出たら、The_Sojournings_of_Grogフォルダをターミナルの画面にドラッグ&ドロップします。

POT_03.png

すると、The_Sojournings_of_Grogフォルダのパスがターミナルに入力されますので、それをコピーし先程のコマンドの「場所」の部分2箇所にペーストします。

POT_04.png

これで、最終的にターミナルに入力するコマンドが完成しました。この完成した一行をクリップボードにコピーしてください。

下の例のような感じになっているはずです。

find "/Users/Wesyama_Westaro/Desktop/The_Sojournings_of_Grog" -iname "*.cfg" -print0 | xargs -0 "/Users/Wesyama_Westaro/Desktop/The_Sojournings_of_Grog/wmlxgettext" --directory . -domain wesnoth-The_Sojournings_of_Grog > wesnoth-The_Sojournings_of_Grog.pot
 

6.コマンド実行1
ターミナルに戻りリターンキーを一度押してください。その後、半角文字で「cd 」(シー・デー・半角スペース)と入力し、The_Sojournings_of_Grogフォルダを再度ターミナルの画面にドラッグ&ドロップし、リターンキーを押します。

POT_06.png
 

7.コマンド実行2
The_Sojournings_of_Grogフォルダのwmlxgettextをターミナルの画面にドラッグ&ドロップし、リターンキーを押します。

POT_07.png
 

8.コマンド実行3
クリップボードにコピーしたコマンドをターミナルにペーストし、リターンキーを押します。

POT_09.png
 

9.POTの完成
The_Sojournings_of_Grogフォルダの中に「wesnoth-The_Sojournings_of_Grog.pot」が出現したら作業完了です。
ターミナルを終了しwmlxgettextをフォルダから外し、The_Sojournings_of_Grogフォルダを元の場所に戻してください。

 

10.最後の仕上げ
出来上がったPOTファイルをテキストエディタで開くと、
#: /Users/Wesyama_Westaro/Desktop/The_Sojournings_of_Grog/・・・
というパスの記述が随所に見られると思いますが、これはテキストが.cfgのどこに書かれているかを示すコメント行です。このパスは絶対パスで書かれており、そのままにしておくとユーザー名がもろバレなのはもちろん、フォルダを移動するとパスとしても機能しませんので、これを相対パスに変更します。一括変換機能があるテキストエディタを使って、/Users/Wesyama_Westaro/Desktop の部分を「 . (ピリオド)」に変換してください。

 

そのほかの方法


  • Wesnoth公式ページよりダウンロードする
    http://www.wesnoth.org/gettext/ では、Wesnoth本体だけでなく一部のアドオンの翻訳データ(.poファイル)が用意されています。
    しかし、アドオンの翻訳を支援するプロジェクトWesCampは長らく放置されており現在は機能していません。ここにあるデータは何年も前から更新されていないので使用はオススメしません。

  • 既にほかの言語の翻訳がある場合
    アドオンの中には既にほかの言語で翻訳されているものもありますが、おまけでPOTやPOが含まれているケースもあります。
    ちなみに、Macの場合で例に挙げた「The_Sojournings_of_Grog」はPOとMOの両方が含まれています。