Provided by: po4a_0.69-1_all 

名前
po4a-gettextize - オリジナルファイル (とその翻訳) を PO ファイルに変換
書式
po4a-gettextize -f fmt -m master.doc -l XX.doc -p XX.po
(XX.po は出力ファイル。その他すべては入力ファイル)
説明
po4a (PO for anything) は従来のgettextツールを使った文書翻訳の保守作業を容易にします。po4aの主な特徴は内
容の翻訳を文書構造から切り離すところにあります。このプロジェクトのやさしい導入についてはページpo4a(7)を参
照してください。
po4a-gettextizeスクリプトは、既存の翻訳をpo4aベースの作業工程で使えるものに変換するのに役立ちます。この作
業はプロジェクトでの変換作業後に定期的に行うものではなく、po4aへの変換中に既存の翻訳を拾い上げる際に一度
だけ行う必要があります。この手間の掛かる作業については、以下の節「手動翻訳をpo4aに変換する」で詳しく説明
します。
マスターファイル(例:英語のソース)と既存の翻訳ファイル(例:po4a を使わずに以前に翻訳を試みたもの)の両
方を与える必要があります。複数のマスターファイルや翻訳ファイルを与えた場合、それらは順番に使用されま
す。しかし各ページや章を別々に gettextize したのち、 msgmerge を使用して生成されたすべての PO ファイルを
統一する方が簡単かもしれません。お好きなように。
マスター文書に非 ASCII 文字が含まれる場合、生成した PO ファイルは UTF-8 となります。もしマスター文書が完
全に ASCII の場合、生成した PO ファイルは入力された翻訳文書のエンコーディングを使います。
オプション
-f, --format
扱うドキュメントのフォーマットです。有効なフォーマットの一覧を見るには、--help-format オプションを使
用してください。
-m, --master
翻訳するマスタードキュメントのファイルです。複数のドキュメントを gettext 化する場合は、このオプション
を複数回使用してください。
-M, --master-charset
翻訳するドキュメントファイルの文字セットです。
-l, --localized
地域化 (翻訳済み) ドキュメントのファイル。マスターに複数のファイルを指定する場合、このオプションを複
数回使って、複数の地域化ファイルを指定してください。
-L, --localized-charset
地域化ドキュメントファイルの文字セットです。
-p, --po
メッセージカタログが書き出されるファイルです。与えられない場合、メッセージカタログを標準出力に書き出
します。
-o, --option
書式プラグインに渡す追加オプションです。有効なオプションやその意味の詳細は、各プラグインの説明書を参
照してください。例えば、AsciiDocパーサーには '-o tablecells' を、テキストパーサーには '-o tabs=split'
を渡すことができます。
-h, --help
短いヘルプメッセージを表示します。
--help-format
po4a が理解できるドキュメントフォーマットの一覧を表示します。
-k --keep-temps
統合する前にビルドした一時的なマスターファイルとローカライズされた POT ファイルは控えておいてくださ
い。なぜこれらのファイルが同期されず、gettextizationの問題につながったのかを理解するのに役立つためで
す
-V, --version
スクリプトのバージョンを表示して終了します。
-v, --verbose
プログラムの冗長度を上げます。
-d, --debug
デバッグ情報を出力します。
--msgid-bugs-address email@address
msgid のバグレポートを送るアドレスをセットします。デフォルトでは、生成した POT ファイルに Report-
Msgid-Bugs-To フィールドはありません。
--copyright-holder string
POT ヘッダの著作権者 (copyright holder) を設定します。既定値は "Free Software Foundation, Inc." で
す。
--package-name string
POT ヘッダのパッケージ名をセットします。デフォルト値は "PACKAGE" です。
--package-version string
POT ヘッダのパッケージバージョンをセットします。デフォルト値は "VERSION" です。
手動の翻訳をpo4aに変換する
po4a-gettextizeはマスターファイルとローカライズファイルを同期させ、その内容をPOファイルに抽出します。マス
ターファイルの内容が msgid となり、ローカライズされたファイルの内容が msgstr となります。この工程はどこか
しら頼りないところがあります。翻訳されたファイルの N 番目の文字列は、元の N 番目の文字列の翻訳であること
が前提となっているのです。
gettextization は、翻訳に使用された元文書の正確なバージョンをなんとかして取得することができれば、一番うま
くいきます。それでも、元の翻訳者によって構造が変更された場合、マスターファイルとローカライズされたファイ
ルの両方をいじって構造を揃える必要がある場合があります。そのためファイルの複製を取って作業することをお勧
めします。
内部的には、それぞれのpo4aの構文解析器は抽出された文字列の構文種別を報告します。これは、gettextizationの
際に非同期が検出される方法です。下の例では、翻訳中の4番目の文字列(種別 'chapter')が、原文の4番目の文字
列(種別'paragraph')の翻訳である可能性は非常に低いでしょう。原文に新しい段落が追加されたか、原文の2つの
段落が翻訳時に統合された可能性が高いです。
オリジナル 翻訳
章 章
段落 段落
段落 段落
段落 章
章 段落
段落 段落
po4a-gettextizeは構造の非同期箇所を冗長に診断します。この場合、両方のファイルの構造が実際に一致するま
で、手動でファイルを編集し、張りぼての段落を追加したり、あちこちの内容を削除したりする必要があります。そ
の際、既存の翻訳を最大限活用するためのいくつかのコツを以下に示します。
もし幸運にもファイル構造が完全に一致するのであれば、正しいPOファイルを作るのには数秒しか掛かりません。そ
うでない場合は、このプロセスがなぜこのような醜い名前を付けられているのか、すぐに理解できるでしょう :) そ
れでも、すべてを翻訳し直すより、gettextization の方が速いことがしばしばです。私は、多くの 同期の問題が
あったにもかかわらず、1 日で Perl の文書全体のフランス語翻訳を gettextize しました。テキストの量(原文
2Mb )を考えると、まず古い翻訳から拾い上げることなく翻訳を再開すると、数ヶ月の作業が必要だったでしょ
う。さらに、この手間のかかる作業は、po4aの快適さを手に入れるための代償でもあるのです。一度変換してしまえ
ば、マスター文書と翻訳の同期はいつも完全に自動で行われます。
gettextizationに成功したら、以下に説明するように、生成された文書に未検出の不一致や表面化していない誤りが
ないか手作業で検査する必要があります。
gettextization の工程のヒントとコツ
非同期箇所が検出されると同時に、gettextizationは停止します。このような場合、ファイルの構造を再調整するた
めに必要なだけのファイルを編集する必要があります。po4a-gettextize は、うまくいかないときにはかなり口数が
多くなります。一致しない文字列とその位置、そしてそれぞれの型が報告されます。さらに、これまでに生成された
PO ファイルは gettextization.failed.po として吐き出され、さらに詳しく調べられるようになっています。
ここでは、この面倒な作業をお手伝いするために、前回の翻訳を最大限に生かすためのコツをご紹介します。
• 翻訳者のクレジットを示す節など、翻訳の余分な内容をすべて削除してください。これらはpo4aにaddendasとし
て別途追加してください(po4a(7)を参照)。
• ファイルを編集して構造を揃える場合、可能であれば翻訳を編集するのが望ましいです。実際、元文書への変更
があまりにも割り込んでくる場合、gettextization後の最初のpo4a実行時に新旧バージョンが噛み合いません(
下記参照)。噛み合わない翻訳はいずれにせよ切り落とされます。とはいえ、gettextizationを進めるのが難し
い場合は、翻訳の1段落が切り落とされることになっても、元の文書を編集したいものです。重要なのは、まず最
初のPOファイルを手に入れることです。
• 翻訳版には存在しない元の内容は遠慮なく削除してください。この内容はその後、POファイルと文書を同期させ
る際に自動的に再導入されます。
• 翻訳の構造的な変更が正当化されると思われる場合は、おそらく原著者に報告すべきです。原文にある問題
は、原作者に報告すべきです。翻訳側で修正しても、コミュニティの一部で修正されるだけです。さら
に、po4aを使用している場合は、そうすることは不可能です ;)しかし、po4aへの変換が終わるまで待ってか
ら、元のファイルが変更されてほしいかもしれません。
• 時には、段落の内容は一致するけれども、型があわない場合があります。その修正法はフォーマットに依存しま
す。POD や man では、片方の行は空白で始まっているのに、もう片方はそうではない、ということが実際にあり
ます。こういったフォーマットでは、そのような段落は改行できず、別の型となります。そのようなときは空白
を削除してください。XMLの場合ではおそらくタグ名のタイプミスでしょう。
同様に、POD では、分割行に空白が入っていたり、=item 行と item の内容の間に空行がない場合、二つの段落
を一つにまとめてしまいます。
• 翻訳が間違った元の段落に添付されているため、非同期箇所の文言が奇妙に見えることがあります。これは、工
程の早い段階で検出されていない問題があったことを示すものです。生成されたファイル
gettextization.failed.po を検査することによって実際の非同期的な箇所を探し、本当にあるべきところにある
ように直します。
• その他の問題としては、原文または訳文のいずれかに重複する文字列があることが考えられます。重複した文字
列は PO ファイルに統合され、2 つの参照先を持ちます。これは、マスターとローカライズの両ファイルの
msgids を1対1で対応させるという単純な gettextization アルゴリズムにとって難題となります。しかし、最近
のバージョンの po4a は重複した文字列を適切に処理していると思われますので、問題が残っている場合は報告
するべきです。
po4a-gettextizeが生成したファイルを確認する
po4a-gettextizeによって生成されたファイルは、スクリプトが正常に終了した場合であったとしても、手作業で確認
するべきです。msgid と msgstr が実際に一致しているかどうか、PO ファイルにざっと目を通すべきです。ひとまず
全項目が曖昧な翻訳としてマークされるので、翻訳が完璧に正しいことを確認する必要はありません。対応が取れて
いない翻訳を吸い上げたいと思っても、その後の工程で捨てられてしまうことになるので、明らかに一致に問題がな
いかだけを確認する必要があります。
幸いなことに、この工程では各 msgid とそれに対応する msgstr の類似した要素を認識したいだけなので、対象の言
語を修得する必要はありません。私自身、フランス語、英語、ドイツ語の一部を話すので、これらの言語のほとんど
を一単語も話せないとしても、少なくともすべてのヨーロッパ言語についてはこの工程ができます。時々、文字列の
長さやフレーズの構造(疑問符の量は一致しているか)、その他の手がかりを見ることによって、非ラテン語の言語
の一致の問題を検出することができますが、他の誰かがそれらの言語を確認することが望ましいと思っています。
不一致を検出したら、po4a-gettextizeがエラーを報告したかのように元のファイルと翻訳ファイルを編集し、再試行
してください。以前の翻訳を元にして一定水準以上のPOファイルができたら、po4aが正しく動作するようになるまで
それをバックアップしてください。
初めてのpo4aの実行
po4aを立ち上げる最も簡単な方法は、po4a.conf設定ファイルを書き、統合されたpo4aプログラムを使うことです
(po4a-updatepoとpo4a-translateは非推奨です)。詳しくは、po4a(1)のドキュメントの「設定ファイル」の節を参
照してください。
po4a が初めて実行されるとき、gettextization によって吸い上げられた古い翻訳を含む PO ファイルを更新するた
めに、現在のバージョンのマスター文書が使用されます。gettextization から得られた msgids の多くは、最近のマ
スターファイルから構築された POT ファイルの要素と正確に一致しないため、これにはかなり長い時間がかかること
があります。このため、gettext はコストのかかる文字列近接アルゴリズムを使って最も近いものを探さざるを得ま
せん。例えば、Perl ドキュメントのフランス語翻訳(5.5 MB の PO ファイル)に対する最初の実行は約 48 時間(
そう、2 日間です)かかりましたが、その後の実行は数秒しかかかりません。
翻訳を本番環境に移行する
この最初の実行の後、POファイルは翻訳者によるレビューの準備ができています。全項目は、po4a-gettextizationに
よってPOファイル内でfuzzyとして印が付けられており、使用前に慎重にレビューするようにさせています。翻訳者
は、各項目を取り上げて、吸い上げられた翻訳が実際に現在の原文と一致しているかどうかを確認し、必要に応じて
翻訳を更新し、fuzzyの印を削除する必要があります。
fuzzyの印が充分に取り除かれると、po4aは翻訳ファイルをディスク上に生成し始め、翻訳の作業工程を本番に移行す
る準備が整います。プロジェクトによっては、翻訳者と保守者の間の調整にWeblateを利用するのが便利な場合もあり
ますが、それはpo4aの範囲外です。
関連項目
po4a(1)、po4a-normalize(1)、po4a-translate(1)、po4a-updatepo(1)、po4a(7)。
著者
Denis Barbier <barbier@linuxfr.org>
Nicolas François <nicolas.francois@centraliens.net>
Martin Quinson (mquinson#debian.org)
訳者
倉澤 望 <nabetaro@debian.or.jp>
Debian JP Documentation ML <debian-doc@debian.or.jp>
著作権とライセンス
Copyright 2002-2022 by SPI, inc.
本プログラムはフリーソフトウェアです。GPL の条項に基づき再頒布と変更を行うことができます (COPYING ファイ
ルを参照してください)。
Po4a Tools 2023-01-03 PO4A-GETTEXTIZE(1p)