Provided by: po4a_0.52-1_all bug

名前

       po4a - PO ファイルと翻訳済みドキュメントの両方を一括更新

書式

       po4a [options] config_file

説明

       po4a (PO for anything) プロジェクトは、gettext ツールが想定していないドキュメントのような
       領域で翻訳をしやすくすること (またより興味深いのは、翻訳文の保守がしやすくなること) を目標
       にしています。

       po4a プログラムは、翻訳対象が複数だったり、フォーマットが異なったり、ドキュメントごとに異
       なるオプションを指定する必要がある場合に、po4a-gettextize(1), po4a-updatepo(1),
       po4a-translate(1) を複雑な Makefile で呼ばなくてすむようになります。

目次

       このドキュメントは以下のような構成となっています:

   説明
   概要
   設定ファイルの書式
       テンプレート言語の指定

       翻訳者入力ファイルのパス指定

       パスや言語の自動検出

       翻訳するドキュメントの指定

       モジュールオプションの指定

       エイリアスの指定

       分割モード

   オプション
   
   欠点
   関連項目
   著者
   著作権とライセンス

概要

       po4a プログラムは、(オリジナルドキュメントと同期を取る) PO ファイルと (PO ファイルと同期を
       取る) 翻訳済みドキュメントの双方の更新を担当しています。主な目的は、コマンドラインオプショ
       ンを覚えておかなくても簡単に po4a を使用できるようにすることです。

       また、異なるフォーマットが混在したドキュメントを同じ POT ファイルにでき、プロジェクトごと
       に一つのファイルで管理できます。

       こういったことは、po4a スイートのほかのツールを (例えば Makefile とともに) 用いても同様に
       できますが、少々難しくなります。po4a を使用しているプロジェクトごとに、そのような複雑な
       Makefile を何度も作成するのは大変です。

       以下にデータフローをまとめました。マスタードキュメントの変更を PO ファイルに反映し、PO
       ファイルの変更を (手での修正でも前述のステップでも) 翻訳済みドキュメントに反映します。

        マスタードキュメント --> PO ファイル --> 翻訳

       このツールでは、データフローを逆にはできません。また、翻訳ファイルに対して変更しても、PO
       ファイルの内容で上書きされます。つまり、実のところ、このツールでは既存の翻訳を po4a システ
       ムに変換できないのです。このような用途には、po4a-gettextize(1) を参照してください。

設定ファイルの書式

       (必須の) 引数は、使用する設定ファイルのパスです。この文法は単純であることを目指してお
       り、intl-tools プロジェクトで使う設定ファイルに似ています。

       このファイルでは、'#' に続けてコメントを記述でき、行末までをすべてコメントにします。行末を
       エスケープして、行をつなげることもできます。空行でない行は [] コマンドで始め、引数が続かな
       ければなりません (こういうと難しく聞こえますが、思ったより簡単だと思います ;) )。

   テンプレート言語の指定
       注意: [po4a_langs][po4a_paths] よりも [po_directory] の使用をお勧めします。後述する 
       スや言語の自動検出 を参照してください。

       これは設定ファイル全体を単純にし、より柔軟にするオプションコマンドです。ドキュメントを翻訳
       したい言語のリストを指定しなければなりません。これは、以下のように単純です:

        [po4a_langs] fr de

       設定ファイルの残りの部分で $lang を指定した言語に展開するようになります。

   翻訳者入力ファイルのパス指定
       注意: [po4a_langs][po4a_paths] よりも [po_directory] の使用をお勧めします。後述する 
       スや言語の自動検出 を参照してください。

       まず、翻訳者入力ファイル (翻訳者が自分の作業に使用するファイル) の位置を指定する必要があり
       ます。以下のような行で行います:

        [po4a_paths] doc/l10n/project.doc.pot \
                     fr:doc/l10n/fr.po de:doc/l10n/de.po

       コマンドは、したがって [po4a_paths] です。第一引数は、使用する POT ファイルのパスです。以
       降の引数はすべて自明の形式です:

           <言語>:<この言語の PO ファイルへのパス>

       テンプレート言語を定義していれば、前述の行は以下のようにも書き直せます:

        [po4a_paths] doc/l10n/project.doc.pot $lang:doc/l10n/$lang.po

       ドキュメントのファイル名を参照するのに $master も使用できます。この場合、po4a は分割モード
       となり、po4a の設定ファイルで指定した各ドキュメントについて、POT ファイルと (言語ごとの)
       PO ファイルを一つずつ作成します。分割モード 節を参照してください。

        [po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po

   パスや言語の自動検出
       PO ファイルや POT ファイルの位置をディレクトリの名前で指定するために使用する別のコマンドが
       あります。これを使用すると、po4a は、指定したディレクトリにある *.pot ファイルのみを POT
       ファイルとして検出します。また po4a は、*.po ファイルのリストを言語のリストとして (拡張子
       を除いて) 定義します。この言語は、設定ファイルの残りの部分で $lang 変数を置換するのに使用
       されます。

       このコマンドは、[po4a_langs] コマンドや [po4a_paths] コマンドと同時に使用するべきではあり
       ません。

       このコマンドを使用する際、POT ファイルの名前を知らせるため、po4a の初回起動時に空の POT
       ファイルを作る必要があります。

        [po_directory] po4a/po/

   翻訳するドキュメントの指定
       さて、当たり前ですが、翻訳対象のドキュメントやそのフォーマット、翻訳の置き場所を指定しなけ
       ればなりません。以下の行のように指定できます:

        [type: sgml] doc/my_stuff.sgml fr:doc/fr/mon_truc.sgml \
                     de:doc/de/mein_kram.sgml
        [type: pod] script fr:doc/fr/script.1 de:doc/de/script.1 \
                    add_fr:doc/l10n/script.fr.add

       これもまたかなり自己説明的だと思います。二番目のケースでは、doc/l10n/script.fr.add は、こ
       のドキュメントのフランス語版に追加する追加内容です。追加内容についての詳細情報は po4a(7)
       を参照してください。

       もっと形式張って言うと、フォーマットは以下のようになります:

        [type: <format>] <master_doc> (<lang>:<localized_doc>)* \
                         (add_<lang>:<modifier>*<addendum_path>)*

       修飾子がない場合、addendum_path は追加内容へのパスになります。修飾子は以下になります。

       ? ファイルが存在する場合 addendum_path を含めます。なければ何もしません。

       @ addendum_path は通常の追加内容ファイルではなく、追加内容ファイルのリスト (1 行 1 ファイ
         ル) です。各追加内容ファイルの前に修飾子を追加できます。

       ! addendum_path は読み込まれません。また、その他の追加内容で読み込まれるように指定してあっ
         ても読み込まれません。

       テンプレート言語を定義していれば、前述の行は以下のようにも書き直せます:

        [type: pod] script $lang:doc/$lang/script.1 \
                    add_fr:doc/l10n/script.fr.add

       すべての言語が同様のパスで追加内容を持っていた場合、以下のようにも書くことができます:

        [type: pod] script $lang:doc/$lang/script.1 \
                    add_$lang:doc/l10n/script.$lang.add

   モジュールオプションの指定
       po4a はモジュールに渡すオプションを受け付けます。渡すオプションはモジュール固有で、-o ス
       イッチにより指定されます。

       翻訳したいドキュメントの一つに特定のオプションが必要な場合、設定ファイルで指定することもで
       きます。オプションは opt キーワードで表します。opt キーワードの引数は、空白を含む場合 (複
       数のオプションを指定する場合や、引数を取るオプションの場合など)、ダブルクォートで囲まなけ
       ればなりません。opt_lang キーワードを使用して、特定の言語だけにオプションを指定することも
       できます。

       例を示します:
        [type:man] data-05/test2_man.1 $lang:tmp/test2_man.$lang.1 \
                   opt:"-k 75" opt_it:"-L UTF-8" opt_fr:-v

       シングルクォートまたはエスケープしたダブルクォートを使うと、引数に 空白を含めることができ
       ます:
        [po4a_alias:man] man opt:"-o \"mdoc=NAME,SEE ALSO\" -k 20"

       たくさんのドキュメントで同じオプションを指定したい場合は、エイリアスを利用できます (以下の
       エイリアスの指定 節を参照してください)。

       設定ファイルの中で、すべてのドキュメントに対するオプションの指定も できます:
        [options] opt:"..." opt_fr:"..."

   エイリアスの指定
       複数のファイルに同じオプションを指定しなければならない場合は、モジュールエイリアスを定義す
       ると便利です。以下のようにしてください:

        [po4a_alias:test] man opt:"-k 21" opt_es:"-o debug=splitargs"

       この例では man モジュールを元にした test というモジュールエイリアスを定義し、全言語に -k
       21 を適用し、スペイン語の翻訳には -o debug=splitargs を適用します。

       定義したモジュールエイリアスは、通常のモジュールと同様に使用できます:

        [type:test] data-05/test2_man.1 $lang:tmp/test2_man.$lang.1 \
                   opt_it:"-L UTF-8" opt_fr:-v

       ファイルごとの追加オプションも指定できることに注意してください。

   分割モード
       [po4a_paths] 行に $master を使うと分割モードになります。

       分割モードを使用する際、一時的に大きな POT ファイルと大きな PO ファイルを使用します。これ
       により、すべての PO 間で翻訳を共有できます。

       二つの PO で同じ文字列に対して異なる翻訳がされている場合、po4a はその文字列を fuzzy として
       マークし、その文字列を持つすべての PO に両方の訳を出力します。その場合、翻訳者は訳を更新
       し、一つの PO から fuzzy タグを取り除くと、この文字列の訳はすべての PO で自動的に更新され
       ます。

       同一のファイル名が存在するため競合を起こす場合、次のように "master:file="name オプションを
       追加してマスターファイル名を指定できます:

        [po4a_langs] de fr ja
        [po4a_paths] l10n/po/$master.pot $lang:l10n/po/$master.$lang.po
        [type: xml] foo/gui.xml $lang:foo/gui.$lang.xml master:file=foo-gui
        [type: xml] bar/gui.xml $lang:bar/gui.$lang.xml master:file=bar-gui

オプション

       -k, --keep
           生成するファイルを維持する (つまり書き出す) 翻訳率のしきい値 (デフォルト: 80)。言い換
           えると、デフォルトでは、書き出されるために少なくとも 80% は翻訳されていなければならな
           いということです。

       -h, --help
           短いヘルプメッセージを表示します。

       -M, --master-charset
           翻訳するドキュメントを含むファイルの文字セットです。すべてのマスタードキュメントが、同
           じ文字セットを使用していなければならないことに注意してください。これは既知の制限で、こ
           れを解消しようと作業をしています。

       -L, --localized-charset
           地域化したドキュメントを含むファイルの文字セットです。すべての翻訳済みドキュメント
           が、同じ文字セットを使用することに注意してください。これは既知の制限で、これを解消しよ
           うと作業をしています。

       -A, --addendum-charset
           追加内容の文字セットです。追加内容では、すべて同じ文字セットを使用することに注意してく
           ださい。

       -V, --version
           スクリプトのバージョンを表示して終了します。

       -v, --verbose
           プログラムの冗長度を上げます。

       -q, --quiet
           プログラムの冗長度を下げます。

       -d, --debug
           デバッグ情報を出力します。

       -o, --option
           フォーマットプラグインに渡す追加オプションです。各オプションは、'name=value' のフォー
           マットで指定してください。有効なオプションやその意味の詳細は、各プラグインのドキュメン
           トを参照してください。

       -f, --force
           生成の必要はないと po4a が判断した場合でも、常に POT ファイルと PO ファイルを生成しま
           す。

           デフォルトの動作 (--force を指定しない場合) は以下のようになります:

               POT ファイルが存在する場合、マスタードキュメントや設定ファイルの方が新しければ、再
               生成します。POT ファイルが一時ドキュメントに書き出され、変更が本当に必要かどうか
               po4a が検証も行います。

               また、マスタードキュメント、PO ファイル、追加内容のどれか、設定ファイルのいずれか
               が翻訳より新しい場合にのみ、翻訳を再生成します。しきい値に達しない翻訳を再生成しな
               いように (--keep を参照)、.po4a-stamp 拡張子を持つファイルを作成します (--stamp を
               参照)。

           マスタードキュメントがファイルをインクルードする場合、インクルードするファイルの更新時
           刻は考慮されないため、--force フラグを使用するべきです。

           PO ファイルは、常に POT を元に msgmerge -U で再生成されます。

       --stamp
           翻訳が閾値に到達せず生成されないとき、po4a にスタンプファイルを作成するように指示しま
           す。このスタンプファイルは翻訳済みドキュメントが期待する名前に .po4a-stamp 拡張子をつ
           けた名前となります。

           注意: これは .po4a-stamp ファイルの作成を行うだけです。スタンプファイルは存在すれば使
           用され、--rm-translations を指定した場合や、最終的にファイルの翻訳が完了した場合に削除
           されます。

       --no-translations
           翻訳済みドキュメントを生成せず、POT ファイルや PO ファイルの更新のみ行います。

       --no-update
           Do not change the POT and PO files, only the translation may be updated.

       --rm-translations
           翻訳済みファイルを削除します (--no-translations を暗に意味します)。

       --no-backups
           このフラグは 0.41 から何もしなくなりました。また今後のリリースで削除される可能性があり
           ます。

       --rm-backups
           このフラグは 0.41 から何もしなくなりました。また今後のリリースで削除される可能性があり
           ます。

       --translate-only translated-file
           指定したファイルに対する翻訳のみ行います。設定ファイル内にファイルがたくさん指定されて
           いる場合、処理の高速化に役立つことでしょう。このオプションは、PO ファイルと POT ファイ
           ルの更新を行わないことに注意してください。このオプションは複数回指定できます。

       --variable var=value
           po4a 設定ファイル内で展開する変数を定義します。現れるすべての $(var) は、value に置換
           されます。このオプションは複数回使用できます。

       --srcdir SRCDIR
           po4a 設定ファイルで指定されたすべての入力ドキュメントに対するベースディレクトリを指定
           します。

       --destdir DESTDIR
           po4a 設定ファイルで指定されたすべての出力ドキュメントに対するベースディレクトリを指定
           します。

   POT ヘッダを変更するオプション
       --porefs type[,wrap|nowrap]
           Specify the reference format. Argument type can be one of never to not produce any
           reference, file to only specify the file without the line number, counter to replace
           line number by an increasing counter, and full to include complete references
           (default: full).

           引数にはコンマを続けた後に wrap または nowrap キーワードのどちらかを付けられます。デ
           フォルトでは、リファレンスは 1 行で書き出されます。wrap オプションは、gettext ツール
           (xgettextmsgmerge) のようにリファレンスを複数行に折り返します。こちらのオプション
           の方がより気が利いているため、将来のリリースでデフォルトとなります。元の挙動のままにし
           ておきたいユーザは、nowrap オプションを使用できます。

       --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" です。

   PO ファイルを変更するオプション
       --msgmerge-opt options
           msgmerge(1) 用の追加オプションです。

           注意: $lang は現在の言語へ展開されます。

       --no-previous
           このオプションは、msgmerge に渡すオプションから --previous を削除します。これにより
           0.16 より前の gettext をサポートできます。

       --previous
           このオプションは、msgmerge に渡すオプションに --previous を追加します。gettext 0.16 以
           降が必要で、デフォルトで有効です。

   
       あなたは foo というプログラムを保守しており、そのプログラムには当然のように英語のみで書か
       れている man/foo.1 という man ページがあると仮定しましょう。今、上流ないし下流のメンテナと
       してのあなたは、翻訳を作成し、保守したいと考えています。まず、po4a-gettextize(1) を使用し
       て、翻訳者に送るために必要な POT ファイルを作成する必要があります。

       この場合、以下のように実行します

        cd man && po4a-gettextize -f man -m foo.1 -p foo.pot

       次にこのファイルを、適切な言語のメーリングリストに送るか、ダウンロードできるようウェブサイ
       トのどこかに用意することになります。

       ここで、次のリリースまでの間に、de.po (追加内容 de.add を含む)、sv.popt.po の三つの翻訳
       を受け取ったとしましょう。新しい翻訳が届くたびに、Makefile を変更したくはありません。この
       場合、適切な設定ファイルを用意した po4aMakefile 内で使用できます。これを po4a.cfg と呼
       びましょう。先ほどの例は、以下のようになります:

        [po_directory] man/po4a/po/

        [type: man] man/foo.1 $lang:man/translated/$lang/foo.1 \
                   add_$lang:?man/po4a/add_$lang/$lang.add opt:"-k 80"

       この例では、生成した man ページ (とすべての PO ファイルと追加内容ファイル) は、カレント
       ディレクトリ以下の man/translated/$lang/  (それぞれ man/po4a/po/man/po4a/add_$lang/)
       に格納するとします。この例では、man/po4a/po/de.po, pt.po, sv.po があ
       り、man/po4a/add_de/ ディレクトリに de.add があります。

       追加内容があるのはドイツ語翻訳 (de.po) だけであるために修飾子 ? を使っていることに注意して
       ください。

       実際に翻訳済み man ページをビルドするには、適切な Makefileビルド ターゲットに次の行を
       (一度だけ!) 追加します:

               po4a po4a.cfg

       一度この設定をしておけば、新しい翻訳が届いても Makefile に触れる必要はありません。言い換え
       ると、フランス語チームが fr.pofr.add を送って来た時に、それぞれ man/po4a/po/man/po4a/add_fr/ へ単に置くだけだということです。次回のプログラムビルド時に、フランス語の
       翻訳が man/translated/fr/ に自動的にビルドされます。

       英語のマニュアルページと翻訳されたマニュアルページを同時にインストールするために、適切な
       ターゲットが必要なことに注意してください。

       最後に、生成したファイルをバージョン管理システムに格納したくなければ、 clean ターゲットに
       以下のような行が必要になるでしょう:
               -rm -rf man/translated

欠点

       •   いくつかのコードは po4a-* プログラムと重複しています。

       パッチを歓迎します ;)

関連項目

       po4a-build(1), po4a-gettextize(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1),
       po4a-build.conf(5), 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-2012 by SPI, inc.

       本プログラムはフリーソフトウェアです。GPL の条項に基づき再頒布と変更を行うことができます
       (COPYING ファイルを参照してください)。