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 ファイルを参照してください)。