pythonでPOT作成

Last-modified: 2023-06-25 (日) 23:08:18

Python版 wmlxgetext によるPOT作成の手順
(主にWindowsユーザーのための)

能書き:正しい手順を踏みさえすれば、必ずPOTを作成できます。その「正しい手順」(のつもり)を、初心者でも理解できるように心がけて書いてあるつもりです。
 ただ、説明を読むには、POTwmlxgettextの名前と目的を何となくでも理解していることが前提です。分からない時は、このサイトの右上にある サイト内検索POTwmlxgettextを検索し、雰囲気をつかんでからまた戻ってきてください。

 

見出し一覧

 

python版wmlxgettext と perl版wmlxgetext の違い

python版の wmlxgettext は 英文サイトWMLxGettext 2.x --- WMLxGettext 2.0.0 documentation にあるエンドユーザー向けドキュメントによると

From now on, the (old) perl script will be called “wmlxgettext 1.0”, while the new python3 script will be called “wmlxgettext 2.x”

「以下、(古い)pelr版を "wmlxgettext 1.0"と、新python3版を "wmlxgettext 2.x" と書きます。」

とあります。
 python版wmlxgettextはwesnoth1.8と1.10に、perl版と並行してユーザーに配布されましたが一旦姿を消し、1,14で大幅に改修され改めて配布されて、1.16では若干の改良が加えられています。(2022.02時点)
 一方perl版は1.0当初から配布されていたようですが、1.14,1.16では配布されていません。このサイトの POTの作成手順 でperl版wmlxgettextを入手できます。
 python版の、perl版との大きな違いは、ファイル探索を自前で行うことでファイル指定が簡素化されてコマンドラインが簡素化したことでしょうか。他に、エラーメッセージが分かりやすくなったことや、コメントの追加位置が適確になったことなどがあります。詳細は上記ドキュメントで確認してください。:P
今までPOTを作ったことがない方は次項はスキップして、その次の WindowsユーザーのためのPOT作成 へどうぞ。

 

エッセンスだけの短い説明(perl版に慣れている人向け)

「perl版は使ったことがあるから、端的に。」という方へ、要点だけを書きます。
一例として、以下のように仮定します。

  • textdomain= wesnoth_camcam
  • (add-on's sub directory)= camcam
  • (current working directory)= data/add-ons/
  • POT出力先= current working directory

一部の関数やクラス定義等がライブラリ化されているため、<Wesnoth installed dir>/data/tools から

  • wmlxgettext (main file)
  • pywmlx (library directory)

data/add-ons/ にコピーしておきます。

あとは引数を設定して実行するだけです。以下は一般的な記述例です。

./wmlxgettext --domain=wesnoth_camcam --directory=camcam --recursive -o wesnoth_camcam.pot

引数なしで実行するとusageが表示されますので、その他のオプションも確認できます。
(なお、wmlxgettextのシバンは "#!/usr/bin/env python3" となっています。ご参考まで。)

$ ./wmlxgettext
usage: wmlxgettext --domain=DOMAIN -o OUTPUT_FILE
                   [--directory=START_PATH]
                   [--recursive] [--initialdomain=INITIAL_DOMAIN]
                   [--package-version=PACKAGE_VERSION]
                   [--no-text-colors] [--fuzzy] [--warnall]
                   FILE1 FILE2 ... FILEN
$

(オリジナルライブラリのimport元をpythonのimport検索パスに追加設定してもよいでしょうが、今回は手っ取り早く wmlxgettext と同じディレクトリにコピーしています。)

「読み足りない。」という方は、以下の説明を流し読みしてください...。

WindowsユーザーのためのPOT作成

先達の記述と重複する内容もありますが、ご勘弁を。
 この前書きを読んでもらって少しの準備運動をした後は、すぐに作業手順の説明が始まります。知らない用語があっても、「そういうものがあるのね」と、気にせず読んでください。使い方だけ分かれば大丈夫です。
 Windowsユーザー向けに書いてありますが、python3が走る環境なら、MacでもLinuxでも同様の作業でPOTが作れます。結局は、"Wmlxgettext ver.2"を動作させるためにどんなパラーメータを設定するかの話ですので(前セクションを参照)OSに合わせて読み替えてもらえば、どんな環境でもよいわけです。

作業のために必要な知識(準備運動)

翻訳用ファイルを作成するために必要なPOファイルの元「POTファイル」の作成は、慣れれば簡単です。もしもこれまでWindowsパソコンしか使ったことがない"コマンドプロンプト"は使ったことがないという方は戸惑いがあるかもしれません。でも、一度操作の流れをつかめば、あとはアドオンごとに同じ手順を繰り返すだけです。手際が良くなれば作業開始から5分とかからずにPOTができるかもしれません。
 まずは、この作業に必要な知識を以下に列挙しておきます。

  1. "Microsoft Store"アプリを起動する方法
  2. "コマンドプロンプト"アプリの起動方法
    起動後の操作は後ほど説明しますので、そのとおりに操作すれば大丈夫です。
  3. エクスプローラ関連の操作
    1. エクスプローラの起動方法
    2. エクスプローラで任意のフォルダを見る操作方法
    3. ファイルやフォルダをコピーして他の場所にペーストする操作方法

コマンドプロンプト以外は、ほぼ日常的に行っている操作だと思います。

POT作成を一から始める場合の作業内容は、大まかには次のとおりです。

  1. POT作成のための環境を作る(これまでPOTを作ったことがない場合だけ) ... 実質の作業時間は20分くらい?
  2. POTの作成 ... (アドオンごとに1回)これも15分くらい?
    時間はおおよその目安です。では、次にざっくりと説明しましょう。

POT作成のための環境を作る(初めてPOTを作るときだけ)

お品書き

  • 用意するもの: wesnothがインストールされている、ネット接続済みPC(Microsoft Storeに接続します)
  • 使うアプリ:エクスプローラ、コマンドプロンプト(ターミナル、パワーシェル等でもOK)
  • 必要な知識:ファイルやフォルダのコピー&ペーストの方法

ここでは、一例として、以下の場面を想定して記述します。適宜読み替えてください。

  • Wesnothのバージョン: 1.16.2
  • Python のバージョン:3.10.2
  • あなたのusername: hogehoge (ちなみに、usernameが何かは...知らなくても大丈夫です)
  • アドオン: camcam という名前のキャンペーン

手順

  1. wesnothのインストール先にあるファイルとフォルダのコピー&ペースト
    必要なファイルとフォルダをコピーします。
    wesnoth関連のフォルダは、wesnothを起動して確認することができます。
    確認方法:
    wesnothのオープニング画面の左下に情報アイコンが表示されます。これをクリックすると、情報ウィンドウが表示されます。7種類の見出しとフォルダのパスが表示されます。
    今回のお目当てのフォルダは
     ゲームデータ:本体がインストールされているフォルダ
     アドオン:アドオンデータがインストールされるフォルダ
    の2つです。
    各欄の右端にあるフォルダアイコンをクリックするとエクスプローラが個別に起動して、フォルダ内が表示されます。

    コピー元:wesnothをインストールした場所(の下層部)
     Windows版 1.16.2(64-bit)の場合、標準的なインストール先は
    C:\Program Files\Battle for Wesnoth 1.16.2\
     になっています。

    コピー先:wesnothをインストールした時に自動作成される、専用のデータフォルダ(の下層部)
     標準的なアドオンフォルダは、
    C:\Users\hogehoge\OneDrive\ドキュメント\My Games\Wesnoth1.16\data\add-ons\
     です。(このパスの中の hogehoge の部分は、あなたのWindows上のユーザーネームです。)

    コピーするフォルダとファイル: フォルダ pywmlx とファイル wmlxgettext
     インストールしたフォルダの下にある
    C:\Program Files\Battle for Wesnoth 1.16.2\data\tools\
     の中に フォルダ pywmlx とファイル wmlxgettext があります。この2つがコピー対象です。
      wmlxgettext:POを作成する、python3 で書かれたスクリプトファイル
      pywmlx:wmlxgettext が使用するファイルが収められたフォルダ
     これを、先に確認したアドオンフォルダの中にコピーしてください。(他の場所でもかまいません。)
     
  2. Microsoft Store のアプリを起動し、python 3.10をインストールする
    インストール方法:
    MicrosoftStoreをスタートメニューから起動して、検索枠に python と入力すると、いくつかの候補が表示されます。その中の python3.10 をクリックして「入手」をクリックしてインストールを開始してください。3.9 や 3.8 などでも大丈夫です。インストールが終了したら、Storeアプリを終了してください。

  3. pythonをちょっとだけ試しに使ってみる
    python3.10 がインストールされているか確認してみましょう。"コマンドプロンプト"アプリを起動すると
    C:\Users\hogehoge>
    のように表示されます。(パワーシェル等、アプリによって多少変わりますが、基本は同じです)
    入力待ち部分が点滅していますので*1、そこに python -V と入力し、エンターキーを押してください。(全て半角の英数文字・記号です。 V はアルファベットの大文字)
    C:\Users\hogehoge> python -V
    インストールした python のバージョンが以下のように表示され,最初と同じ表示になります。
    python 3.10.2
    C:\Users\hogehoge>
    "コマンドプロンプト"アプリを終了するため、exit と入力し、エンターキーを押してください。ウィンドウが閉じます。
    これで環境が整いました。
     
    注意:もしも python -v (小文字の v )と入力してエンターキーを押してしまったら、違う表示になります。文字列がずらりと並び、最後の部分に
    import 'atexit' # <class '_frozen_importlib.BuiltinImporter'>
    >>>
    のように表示されているはずです。その時は、この状態で exit() (最後のカッコ文字2つを忘れずに。)と入力してエンターキーを押してください。再び、文字列が数十行表示され、pythonが終了して前の表示に戻ります。ここであらためて exit と入力してエンターキーを押し、コマンドプロンプトを終了してください。
    import 'atexit' # <class '_frozen_importlib.BuiltinImporter'>
    >>> exit()  ←これを入力してエンターキーを押すとpythonが終了します
       :
       :
    C:\Users\hogehoge> exit  ←これを入力してエンターキーを押すとコマンドプロンプトが終了します


POTの作成~POT作成用バッチファイルの作成と実行

お品書き

  • 使うアプリ:エクスプローラ
  • 新たなに使うアプリ:テキストエディタ("メモ帳"や"ノートパッド"等でOK)

ファイルが揃い、Pythonも動かせるようになりました。まずは、POT作成のための最後の準備です。
python で書かれた wmlxgettext にアドオンのファイルを読み込ませ、その出力としてPOTファイルが得られます。
コマンドプロンプトアプリを使って python を実行してもよいのですが、長めの文字列になりますので、コマンド文字列のバッチファイル*2を作り、それを実行することにしましょう。そのために、基本パターンのテンプレートファイル(原型になるファイル)を作っておけば、次回からは、そのファイルを使い回せばよい*3のです。先ずは、そのテンプレートファイルをテキストエディタで作成しましょう。

手順

  1. テキストエディタでPOT作成用バッチファイルのテンプレートファイルを作成する

    テキストエディタを起動して、先頭の1行に次の文字列を入力します。最後は改行しないでください。
    python3 wmlxgettext --domain=DDD --directory=FFF --recursive -o DDD.pot
    (この画面の文字列をコピーして貼り付けるのが簡単です。)
    これが実行するコマンドのテンプレートです。保存してください。名前は wmlxgettext-.bat としておきましょう。この、"DDD" 2箇所と "FFF" 1箇所は、あとからアドオン用の文字列に置き換える部分です。
     
  2. そのアドオンのインストール先のフォルダ名を確認
     アドオンのインストール先フォルダは、通常はアドオンフォルダ内の
    camcam
    ですが、稀に、似通った名前のフォルダ(例えば the_camcam とか)にインストールされることがあります。アドオン(の作者)に依存しますので、その場合は当たりをつけて探すしかありません。(頑張って。)
    これが、先の FFF と入れ替える文字列です。
     
  3. そのアドオンで、キーワード textdomain に設定されている文字列を確認
    アドオンのインストール先フォルダの直下のファイル _main.cfg をテキストエディタで開いてみると、先頭付近に
    [textdomain]
        name="wesnoth-camcam"
    [/textdomain]
    という記述があります。この name= の右側 wesnoth-camcam が、textdomain に設定されている文字列です。_main.cfg 自身にも翻訳対象文字列が含まれることが多いので、ファイルの先頭に
    #textdomain wesnoth-camcam
    と書いてあるはずです。このファイルが wesnoth-camcam というドメインにあるファイルであることを宣言しているわけです。
    wmlxgettext は、各ファイルの中からこの textdomain に設定されている文字列を参照して翻訳部分を抽出しています。この文字列はアドオンごとに異なります。
    これが、先の DDD 2箇所と入れ替える文字列です。
     
  4. 目的のアドオン用バッチファイルを作成する
    先に作った wmlxgettext-.bat を同じフォルダ内にコピーして 名前を wmlxgettext-camcam.bat にします。このファイルをテキストエディタで編集して、目的のアドオン用に記述を変更します。
     テキストエディタを起動して、エディタのメニューからこのファイルを開いてください。( ファイル名が .bat で終わっているファイルをエクスプローラやデスクトップ上でダブルクリックすると、中のコマンド文字列が実行されてしまいます(このまま実行するとDDD.potというファイルが作成されますので、ゴミ箱に入れてください)。エディタのメニューから開くのが無難です。
    先ほど作ったファイルのコピーですから、中はこうなっています。
    python3 wmlxgettext --domain=DDD --directory=FFF --recursive -o DDD.pot
    これを一部書き換えます。以下の文字列を置き換えてください。
  • アドオンのフォルダ名: FFF を camcam に変える
  • textdomain の文字列: DDD を2箇所とも wesnoth-camcam に変える
    つまり、こうなります。
    python3 ./wmlxgettext --domain=wesnoth-camcam --directory=camcam --recursive -o wesnoth-camcam.pot
    もう一度確認しましょう。以下の3箇所を書き換えます。「=」の前後にスペース文字が入らないようにしてください。
  • --domain=wesnoth-camcam
  • --directory=camcam
  • (行の右端部分) wesnoth-camcam.pot

確認したら、このバッチファイルを保存してください。これで準備万端です。このバッチファイルを実行すれば、POTファイルが作成されます。

エクスプローラで wesnoth_camcam.bat をダブルクリックしてください(または、ファイルを選択してエンターキーを打つ)。同じフォルダに

wesnoth-camcam.pot

ができているはずです。これでおしまいです。
このあとは、PoEditなどで wesnoth-camcam.po を作成し、その poファイルを編集(翻訳)することになります。

 別の新たなアドオンのPOTを作るときは、アドオンをインストールし、さきほど作った wmlxgettext-.bat をコピーして、同様の作業でバッチファイルを作成・実行して、新たなPOTファイルを作ってください。


以上、お疲れさまでした。

 - - - * * * - - -


*1 本来は、この点滅している部分を"コマンドプロンプト"と呼びます
*2 バッチファイルはメモ帳でも作れるファイルで、中に実行コマンドが書かれたものです。
*3 全アドオン用テンプレートですから、2回目以降にも利用可能です。