.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "PO4A 1p" .TH PO4A 1p "2016-01-05" "Po4a Tools" "Po4a Tools" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "名前" .IX Header "名前" po4a \- \s-1PO\s0 ファイルと翻訳済みドキュメントを一括更新 .SH "書式" .IX Header "書式" \&\fBpo4a\fR [\fIoptions\fR] \fIconfig_file\fR .SH "説明" .IX Header "説明" po4a (\s-1PO\s0 for anything) プロジェクトは、gettext ツールが想定していないドキュメントのような領域で翻訳をしやすくすること (またより興味深いのは、翻訳文の保守がしやすくなること) を目標にしています。 .PP \&\fBpo4a\fR プログラムは、翻訳対象が複数だったり、フォーマットが異なったり、ドキュメントごとに異なるオプションを指定する必要がある場合に、\fIpo4a\-gettextize\fR\|(1), \&\fIpo4a\-updatepo\fR\|(1), \fIpo4a\-translate\fR\|(1) を複雑な Makefile で呼ばなくてすむようになります。 .SH "目次" .IX Header "目次" このドキュメントは以下のような構成となっています。 .SS "説明" .IX Subsection "説明" .SS "概要" .IX Subsection "概要" .SS "設定ファイルの書式" .IX Subsection "設定ファイルの書式" \fIテンプレート言語の指定\fR .IX Subsection "テンプレート言語の指定" .PP \fI翻訳者入力ファイルのパス指定\fR .IX Subsection "翻訳者入力ファイルのパス指定" .PP \fIパスや言語の自動検出\fR .IX Subsection "パスや言語の自動検出" .PP \fI翻訳するドキュメントの指定\fR .IX Subsection "翻訳するドキュメントの指定" .PP \fIモジュールオプションの指定\fR .IX Subsection "モジュールオプションの指定" .PP \fIエイリアスの指定\fR .IX Subsection "エイリアスの指定" .PP \fI分割モード\fR .IX Subsection "分割モード" .SS "オプション" .IX Subsection "オプション" .SS "例" .IX Subsection "例" .SS "欠点" .IX Subsection "欠点" .SS "関連項目" .IX Subsection "関連項目" .SS "著者" .IX Subsection "著者" .SS "著作権・ライセンス" .IX Subsection "著作権・ライセンス" \fI\fR .IX Subsection "" .SH "概要" .IX Header "概要" \&\fBpo4a\fR プログラムは、(オリジナルドキュメントと同期を取る) \s-1PO\s0 ファイルと (\s-1PO\s0 ファイルと同期を取る) 翻訳済みドキュメントの双方の更新を担当しています。主な目的は、コマンドラインオプションを覚えておかなくても、簡単に po4a を使用できるようにすることです。 .PP また、異なるフォーマットが混在したドキュメントを同じ \s-1POT\s0 ファイルにでき、プロジェクトごとにひとつのファイルで管理できます。 .PP こういったことは、po4a スイートの他のツールを (例えば Makefile とともに) 用いても同様にできますが、少々難しくなります。po4a を使用しているプロジェクトごとに、そのような複雑な Makefile を、何度も作成するのは大変です。 .PP 以下にデータフローをまとめました。マスタードキュメントの変更を \s-1PO\s0 ファイルに反映し、PO ファイルの変更を、(手での修正でも前述のステップでも) 翻訳済みドキュメントに反映します。 .PP .Vb 1 \& マスタードキュメント \-\-> PO ファイル \-\-> 翻訳 .Ve .PP このツールでは、データフローを逆にはできません。また、翻訳ファイルに対して変更しても、PO ファイルの内容で上書かれます。つまり、実のところ、このツールでは既存の翻訳を po4a システムに変換できないのです。このような用途には、\fIpo4a\-gettextize\fR\|(1) を参照してください。 .SH "設定ファイルの書式" .IX Header "設定ファイルの書式" (必須の) 引数は、使用する設定ファイルのパスです。この文法は単純であることを目指しており、intl\-tools プロジェクトで使う設定ファイルに似ています。 .PP このファイルでは、'#' に続けてコメントを記述でき、行末までをすべてコメントにします。行末をエスケープして、行をつなげることもできます。空行でない行は [] コマンドで始め、引数が続かなければなりません (こういうと難しく聞こえますが、思ったより簡単だと思います ;) )。 .SS "テンプレート言語の指定" .IX Subsection "テンプレート言語の指定" \&\fB注意:\fR \fB[po4a_langs]\fR と \fB[po4a_paths]\fR よりも \fB[po_directory]\fR の使用をお勧めします。後述する \fBパスや言語の自動検出\fR をご覧ください。 .PP これは、設定ファイル全体を単純にし、より柔軟にするオプションコマンドです。ドキュメントを翻訳したい言語のリストを指定しなければなりません。単純に以下のようになります。 .PP .Vb 1 \& [po4a_langs] fr de .Ve .PP これ以降の設定ファイル内で、\fB\f(CB$lang\fB\fR を指定した言語に展開するようになります。 .SS "翻訳者入力ファイルのパス指定" .IX Subsection "翻訳者入力ファイルのパス指定" \&\fB注意:\fR \fB[po4a_langs]\fR と \fB[po4a_paths]\fR よりも \fB[po_directory]\fR の使用をお勧めします。後述する \fBパスや言語の自動検出\fR をご覧ください。 .PP まず、翻訳者入力ファイル (翻訳者が自分の作業に使用するファイル) の位置を指定する必要があります。以下のような行で行います。 .PP .Vb 2 \& [po4a_paths] doc/l10n/project.doc.pot \e \& fr:doc/l10n/fr.po de:doc/l10n/de.po .Ve .PP コマンドは上記より \fB[po4a_paths]\fR です。第一引数は、使用する \s-1POT\s0 ファイルのパスです。続くすべての引数は、次のように一目瞭然な形をしています。 .PP .Vb 1 \& <言語>:<この言語の PO ファイルへのパス> .Ve .PP テンプレート言語を定義している場合、上記の行は以下のように書き換えられます。 .PP .Vb 1 \& [po4a_paths] doc/l10n/project.doc.pot $lang:doc/l10n/$lang.po .Ve .PP ドキュメントのファイル名を参照するのに \fB\f(CB$master\fB\fR も使用できます。この場合、\fBpo4a\fR は分割モードとなります。これは \fBpo4a\fR の設定ファイルで指定した各ドキュメントについて、POT ファイルと (言語ごとの) \s-1PO\s0 ファイルを一つずつ作成します。\fB分割モード\fR セクションをご覧ください。 .PP .Vb 1 \& [po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po .Ve .SS "パスや言語の自動検出" .IX Subsection "パスや言語の自動検出" \&\s-1PO\s0 ファイルや \s-1POT\s0 ファイルの場所を、ディレクトリ名で指定するのに使用する、別のコマンドがあります。これを使用する場合、\fBpo4a\fR は、指定したディレクトリにある \fI*.pot\fR ファイルのみを \s-1POT\s0 ファイルとして検出します。また \fBpo4a\fR は、\fI*.po\fR ファイルのリストを、言語のリストとして (拡張子を除いて) 定義します。この言語は、続く設定ファイル内で \fB\f(CB$lang\fB\fR 変数を置換するのに使用されます。 .PP このコマンドは、\fB[po4a_langs]\fR コマンドや \fB[po4a_paths]\fR コマンドと同時に使用するべきではありません。 .PP このコマンドを使用する際、POT ファイルの名前を知らせるため、\fBpo4a\fR の初回起動時に空の \s-1POT\s0 ファイルを作る必要があります。 .PP .Vb 1 \& [po_directory] po4a/po/ .Ve .SS "翻訳するドキュメントの指定" .IX Subsection "翻訳するドキュメントの指定" さて、当たり前ですが、「どのドキュメントを翻訳するのか?」「そのフォーマットは?」「翻訳はどこに出力するのか?」といったことを指定しなければなりません。以下の行のように指定できます。 .PP .Vb 4 \& [type: sgml] doc/my_stuff.sgml fr:doc/fr/mon_truc.sgml \e \& de:doc/de/mein_kram.sgml \& [type: pod] script fr:doc/fr/script.1 de:doc/de/script.1 \e \& add_fr:doc/l10n/script.fr.add .Ve .PP これもまたかなり自己説明的だと思います。2 番目のケースでは、\fIdoc/l10n/script.fr.add\fR は、このドキュメントのフランス語版に追加する追加内容です。追加内容についての詳細情報は \fIpo4a\fR\|(7) を参照してください。 .PP もっと形式張って言うとフォーマットは以下のようになります。 .PP .Vb 2 \& [type: ] (:)* \e \& (add_:*)* .Ve .PP 修飾子がない場合、\fIaddendum_path\fR は追加内容へのパスになります。修飾子は以下になります。 .IP "\fB?\fR" 2 .IX Item "?" ファイルが存在する場合 \fIaddendum_path\fR を含めます。なければ何もしません。 .IP "\fB@\fR" 2 .IX Item "@" \&\fIaddendum_path\fR は通常の追加内容ファイルではなく、追加内容ファイルのリスト (1 行 1 ファイル) です。各追加内容ファイルの前に修飾子を追加できます。 .IP "\fB!\fR" 2 .IX Item "!" \&\fIaddendum_path\fR は読み込まれません。また、その他の追加内容で読み込まれるように指定してあっても読み込まれません。 .PP テンプレート言語を定義している場合、上記の行は以下のように書き換えられます。 .PP .Vb 2 \& [type: pod] script $lang:doc/$lang/script.1 \e \& add_fr:doc/l10n/script.fr.add .Ve .PP すべての言語が、似たようなパスで追加内容を持つ場合は、以下のようにも書けます。 .PP .Vb 2 \& [type: pod] script $lang:doc/$lang/script.1 \e \& add_$lang:doc/l10n/script.$lang.add .Ve .SS "モジュールオプションの指定" .IX Subsection "モジュールオプションの指定" \&\fBpo4a\fR はモジュールに渡すオプションを受け付けます。このオプションはモジュール固有で、 \fB\-o\fR スイッチにより指定されます。 .PP 翻訳したいドキュメントの一つに、特定のオプションが必要な場合、設定ファイルで指定することもできます。オプションは \fBopt\fR キーワードで表します。\fBopt\fR キーワードの引数は、空白を含む場合 (複数のオプションを指定する場合や、引数を取るオプションの場合など)、ダブルクォートで囲まなければなりません。\fBopt_\fR\fIlang\fR キーワードを使用して、特定の言語だけにオプションを指定することもできます。 .PP 以下はサンプルです。 [type:man] data\-05/test2_man.1 \f(CW$lang:tmp\fR/test2_man.$lang.1 \e opt:\*(L"\-k 75\*(R" opt_it:\*(L"\-L \s-1UTF\-8\*(R"\s0 opt_fr:\-v .PP シングルクォートかエスケープしたダブルクォートで、以下のように引数に空白を含められます。 [po4a_alias:man] man opt:\*(L"\-o \e\*(R"mdoc=NAME,SEE ALSO\e\*(L" \-k 20\*(R" .PP たくさんのドキュメントで同じオプションを指定したい場合は、エイリアスを利用できます (以下の \fBエイリアスの指定\fR セクションをご覧ください)。 .PP 設定ファイルの中で、すべてのドキュメントに対するオプションの指定もできます。 [options] opt:\*(L"...\*(R" opt_fr:\*(L"...\*(R" .SS "エイリアスの指定" .IX Subsection "エイリアスの指定" 複数のファイルに同じオプションを指定しなければならない場合は、モジュールエイリアスを定義することに興味がわくかと思います。以下の様にしてください。 .PP .Vb 1 \& [po4a_alias:test] man opt:"\-k 21" opt_es:"\-o debug=splitargs" .Ve .PP これは、\fBman\fR モジュールを元にして全言語に \fB\-k 21\fRを適用し、スペイン語の翻訳には \fB\-o debug=splitargs\fR を適用する、\fBtest\fR というモジュールエイリアスを定義します。 .PP このモジュールエイリアスは、以下のようにして通常のモジュールと同様に使用できます。 .PP .Vb 2 \& [type:test] data\-05/test2_man.1 $lang:tmp/test2_man.$lang.1 \e \& opt_it:"\-L UTF\-8" opt_fr:\-v .Ve .PP ファイルごとの追加オプションも指定できることに注意してください。 .SS "分割モード" .IX Subsection "分割モード" 分割モードは、\fB[po4a_paths]\fR に \fB\f(CB$master\fB\fR を使うことで使用できます。 .PP 分割モードを使用する際、一時的に大きな \s-1POT\s0 ファイルと大きな \s-1PO\s0 ファイルを使用します。これにより、すべての \s-1PO\s0 間で翻訳を共有できます。 .PP 2 つの \s-1PO\s0 で、同じ文字列に対して異なる翻訳がされている場合、\fBpo4a\fR はその文字列を fuzzy としてマークし、その文字列を持つすべての \&\s-1PO\s0 に、両方の訳を出力します。その場合、翻訳者は訳を更新し、ひとつの \s-1PO\s0 から fuzzy タグを取り除くと、この文字列の訳は、すべての \s-1PO\s0 で自動的に更新されます。 .PP 複数のファイルで名前が同じで、名前に競合がある場合、次のように \f(CW\*(C`master:file=\*(C'\fR\fIname\fR オプションを追加して、マスターファイル名を指定できます。 .PP .Vb 4 \& [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 .Ve .SH "オプション" .IX Header "オプション" .IP "\fB\-k\fR, \fB\-\-keep\fR" 4 .IX Item "-k, --keep" 生成したファイルで維持する (つまり書き出す) 最低限の翻訳率 (デフォルト: 80) です。言い換えると、デフォルトでは、書き出されるために少なくとも 80% は、翻訳されていなければならないということです。 .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" 短いヘルプメッセージを表示します。 .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-M, --master-charset" 翻訳するドキュメントを含むファイルの文字セットです。すべてのマスタードキュメントが、同じ文字セットを使用していなければならないことに注意してください。これは既知の制限で、これを解消しようと作業をしています。 .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-L, --localized-charset" 地域化したドキュメントを含むファイルの文字セットです。すべての翻訳済みドキュメントが、同じ文字セットを使用することに注意してください。これは既知の制限で、これを解消しようと作業をしています。 .IP "\fB\-A\fR, \fB\-\-addendum\-charset\fR" 4 .IX Item "-A, --addendum-charset" 追加内容の文字セット。追加内容では、すべて同じ文字セットを使用することに注意してください。 .IP "\fB\-V\fR, \fB\-\-version\fR" 4 .IX Item "-V, --version" スクリプトのバージョンを表示し、終了します。 .IP "\fB\-v\fR, \fB\-\-verbose\fR" 4 .IX Item "-v, --verbose" プログラムの冗長度を上げます。 .IP "\fB\-q\fR, \fB\-\-quiet\fR" 4 .IX Item "-q, --quiet" プログラムの冗長度を下げます。 .IP "\fB\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" デバッグ情報を出力します。 .IP "\fB\-o\fR, \fB\-\-option\fR" 4 .IX Item "-o, --option" フォーマットプラグインに渡す追加オプションです。各オプションは、'\fIname\fR\fB=\fR\fIvalue\fR' のフォーマットで指定してください。有効なオプションやその意味の詳細は、各プラグインのドキュメントをご覧ください。 .IP "\fB\-f\fR, \fB\-\-force\fR" 4 .IX Item "-f, --force" \&\fBpo4a\fR が必要ないと見なしても、常に \s-1POT\s0 ファイルと \s-1PO\s0 ファイルを生成します。 .Sp デフォルトの動作 (\fB\-\-force\fR を指定しない場合) は以下のようになります。 .RS 4 .Sp .RS 4 \&\s-1POT\s0 ファイルが存在する場合、マスターのドキュメントや設定ファイルの方が新しければ、再生成します。POT ファイルが一時ドキュメントに書き出され、変更が本当に必要かどうか \fBpo4a\fR が検証も行います。 .Sp また、マスタードキュメント、PO ファイル、追加内容のどれか、設定ファイルのいずれかが翻訳より新しい場合にのみ、翻訳を再生成します。閾値テスト (\fB\-\-keep\fR 参照) に合格しない翻訳を再生成しないように、\fI.po4a\-stamp\fR 拡張子を持つファイルを作成します (\fB\-\-stamp\fR 参照)。 .RE .RE .RS 4 .Sp マスタードキュメントにファイルをインクルードする場合、インクルードするファイルの更新時間は考慮に入らないため、\fB\-\-force\fR フラグを使用するべきです。 .Sp \&\s-1PO\s0 ファイルは、常に \s-1POT\s0 を元に \fBmsgmerge \-U\fR で再生成されます。 .RE .IP "\fB\-\-stamp\fR" 4 .IX Item "--stamp" 翻訳が閾値に到達せず生成されないとき、\fBpo4a\fR に stamp ファイルを作成するように指示します。この stamp ファイルは翻訳済みドキュメントが期待する名前に \fI.po4a\-stamp\fR 拡張子をつけた名前となります。 .Sp 注意: これは \fI.po4a\-stamp\fR ファイルの作成を行うだけです。stamp ファイルがある場合は常に使用され、\fB\-\-rm\-translations\fR を指定した場合や、最終的にファイルの翻訳が完了した場合に削除されます。 .IP "\fB\-\-no\-translations\fR" 4 .IX Item "--no-translations" 翻訳済みドキュメントを生成せず、POT ファイルや \s-1PO\s0 ファイルの更新のみ行います。 .IP "\fB\-\-rm\-translations\fR" 4 .IX Item "--rm-translations" 翻訳済みファイルを削除します。(暗黙的に \fB\-\-no\-translations\fR) .IP "\fB\-\-no\-backups\fR" 4 .IX Item "--no-backups" このフラグは 0.41 から何もしなくなりました。また今後のリリースで削除される可能性があります。 .IP "\fB\-\-rm\-backups\fR" 4 .IX Item "--rm-backups" このフラグは 0.41 から何もしなくなりました。また今後のリリースで削除される可能性があります。 .IP "\fB\-\-translate\-only\fR \fItranslated-file\fR" 4 .IX Item "--translate-only translated-file" 指定したファイルに対して、翻訳のみ行います。設定ファイル内にファイルがたくさん指定されている場合、処理の高速化に役立つことでしょう。このオプションは、PO ファイルと \s-1POT\s0 ファイルの更新を行わないことに注意してください。このオプションは複数回指定できます。 .IP "\fB\-\-variable\fR \fIvar\fR\fB=\fR\fIvalue\fR" 4 .IX Item "--variable var=value" \&\fBpo4a\fR 設定ファイル内で展開する変数を定義します。現れるすべての \fI$(var)\fR は、\fIvalue\fR に置換されます。このオプションは複数回使用できます。 .IP "\fB\-\-srcdir\fR \fI\s-1SRCDIR\s0\fR" 4 .IX Item "--srcdir SRCDIR" \&\fBpo4a\fR 設定ファイルで指定した、すべての入力ドキュメントに対するベースディレクトリを指定します。 .IP "\fB\-\-destdir\fR \fI\s-1DESTDIR\s0\fR" 4 .IX Item "--destdir DESTDIR" \&\fBpo4a\fR 設定ファイルで指定した、すべての出力ドキュメントに対するベースディレクトリを指定します。 .SS "\s-1POT\s0 ヘッダを変更するオプション" .IX Subsection "POT ヘッダを変更するオプション" .IP "\fB\-\-porefs\fR \fItype\fR[,\fBwrap\fR|\fBnowrap\fR]" 4 .IX Item "--porefs type[,wrap|nowrap]" リファレンスフォーマットを指定します。引数 \fItype\fR には、いずれのリファレンスも提供しない \fBnone\fR、行番号を明示しない \&\fBnoline\fR (正確に言うと行番号は 1 に置換されます)、行番号をカウントアップする \fBcounter\fR、完全なリファレンスを含む \&\fBfull\fR のどれか一つを指定できます。 .Sp 引数にはコンマで続けて、\fBwrap\fR か \fBnowrap\fR というキーワードを後に付けられます。デフォルトでは、リファレンスを 1 行で書き出します。\fBwrap\fR オプションは、\fBgettext\fR ツール (\fBxgettext\fR や \fBmsgmerge\fR) のように、リファレンスを複数行に折り返します。このオプションは、より気が利いているため、将来のリリースでデフォルトとなります。元の挙動のままにしておきたいユーザは、\fBnowrap\fR オプションを使用できます。 .IP "\fB\-\-msgid\-bugs\-address\fR \fIemail@address\fR" 4 .IX Item "--msgid-bugs-address email@address" msgid のバグレポートを送るアドレスをセットします。デフォルトでは、生成した \s-1POT\s0 ファイルに Report-Msgid-Bugs-To フィールドはありません。 .IP "\fB\-\-copyright\-holder\fR \fIstring\fR" 4 .IX Item "--copyright-holder string" \&\s-1POT\s0 ヘッダの著作権者 (copyright holder) をセットします。デフォルト値は \*(L"Free Software Foundation, Inc.\*(R" です。 .IP "\fB\-\-package\-name\fR \fIstring\fR" 4 .IX Item "--package-name string" \&\s-1POT\s0 ヘッダのパッケージ名をセットします。デフォルト値は \*(L"\s-1PACKAGE\*(R"\s0 です。 .IP "\fB\-\-package\-version\fR \fIstring\fR" 4 .IX Item "--package-version string" \&\s-1POT\s0 ヘッダのパッケージバージョンをセットします。デフォルト値は \*(L"\s-1VERSION\*(R"\s0 です。 .SS "\s-1PO\s0 ファイルを変更するオプション" .IX Subsection "PO ファイルを変更するオプション" .IP "\fB\-\-msgmerge\-opt\fR \fIoptions\fR" 4 .IX Item "--msgmerge-opt options" Extra options for \fBmsgmerge\fR(1). .Sp 注意: \fB\f(CB$lang\fB\fR は現在の言語へ展開されます。 .IP "\fB\-\-no\-previous\fR" 4 .IX Item "--no-previous" このオプションは、\fBmsgmerge\fR に渡すオプションから \fB\-\-previous\fR を削除します。 これにより 0.16 より前の \&\fBgettext\fR をサポートできます。 .IP "\fB\-\-previous\fR" 4 .IX Item "--previous" このオプションは、\fBmsgmerge\fR に渡すオプションに \fB\-\-previous\fR を追加します。\fBgettext\fR 0.16 以降が必要で、デフォルトで有効です。 .SS "例" .IX Subsection "例" あなたは \fBfoo\fR というプログラムを保守しており、そのプログラムには、当然のように英語のみで書かれている、 \fIman/foo.1\fR という man ページがあると仮定しましょう。今、上流ないし下流のメンテナとしてのあなたは、翻訳を作成し、保守したいと考えています。まず、\fIpo4a\-gettextize\fR\|(1) を使用して、翻訳者に送るために必要な \s-1POT\s0 ファイルを作成する必要があります。 .PP この場合、以下のように実行します。 .PP .Vb 1 \& cd man && po4a\-gettextize \-f man \-m foo.1 \-p foo.pot .Ve .PP 次にこのファイルを、適切な言語のメーリングリストに送るか、ダウンロードできるようウェブサイトのどこかに用意することになります。 .PP ここで、次のリリースまでの間に、\fIde.po\fR (追加内容 \fIde.add\fR を含む), \fIsv.po\fR, \fIpt.po\fR の三つの翻訳を受け取ったとしましょう。新しい翻訳が届いたからといって、\fIMakefile\fR を変更したくはありません。この場合、適切な設定ファイルを用意した \fBpo4a\fR を、\fIMakefile\fR 内で利用できます。これを \&\fIpo4a.cfg\fR と呼びましょう。先ほどの例は、以下のようになります。 .PP .Vb 1 \& [po_directory] man/po4a/po/ \& \& [type: man] man/foo.1 $lang:man/translated/$lang/foo.1 \e \& add_$lang:?man/po4a/add_$lang/$lang.add opt:"\-k 80" .Ve .PP この例では、生成した man ページ (とすべての \s-1PO\s0 ファイルと追加内容ファイル) は、カレントディレクトリ以下の \&\fIman/translated/$lang/\fR (それぞれ \fIman/po4a/po/\fR と \fIman/po4a/add_$lang/\fR) に格納するとします。この例では、\fIman/po4a/po/\fR に \fIde.po\fR, \fIpt.po\fR, \fIsv.po\fR があり、\fIman/po4a/add_de/\fR ディレクトリに \fIde.add\fR があります。 .PP 追加内容を添付されたドイツ語翻訳 (\fIde.po\fR) でのみ、修飾子 \fB?\fR の使用に注意が必要です。 .PP その後、実際に翻訳済み man ページを構築するため、適切な \fIMakefile\fR の構築ターゲットに以下の行を (一度だけ!) 追加します。 .PP .Vb 1 \& po4a po4a.cfg .Ve .PP 一度この設定をしておけば、新しい翻訳が届いても \fIMakefile\fR に触れる必要はありません。言い換えると、フランス語チームが \fIfr.po\fR と \&\fIfr.add\fR を送って来た時に、それぞれ \fIman/po4a/po/\fR と \fIman/po4a/add_fr/\fR へ、単に置くだけだということです。次回プログラム構築時に、フランス語翻訳が \fIman/translated/fr/\fR に自動的に構築されます。 .PP 英語のマニュアルページと翻訳されたマニュアルページを同時にインストールするために、適切なターゲットが必要なことに注意してください。 .PP 最後に、生成したファイルをバージョン管理システムに格納したくなければ、 \&\fBclean\fR ターゲットに以下のような行が必要になるでしょう。 \-rm \-rf man/translated .SH "欠点" .IX Header "欠点" .IP "\(bu" 4 いくつかのコードは \fBpo4a\-\fR\fI*\fR プログラムと重複しています。 .PP パッチを歓迎します。;) .SH "関連項目" .IX Header "関連項目" \&\fIpo4a\-build\fR\|(1), \fIpo4a\-gettextize\fR\|(1), \fIpo4a\-normalize\fR\|(1), \&\fIpo4a\-translate\fR\|(1), \fIpo4a\-updatepo\fR\|(1), \fIpo4a\-build.conf\fR\|(5), \fIpo4a\fR\|(7) .SH "著者" .IX Header "著者" .Vb 3 \& Denis Barbier \& Nicolas François \& Martin Quinson (mquinson#debian.org) .Ve .SH "訳者" .IX Header "訳者" .Vb 2 \& 倉澤 望 \& Debian JP Documentation ML .Ve .SH "著作権・ライセンス" .IX Header "著作権・ライセンス" Copyright 2002\-2012 by \s-1SPI,\s0 inc. .PP 本プログラムはフリーソフトウェアです。GPL の条項に基づき再頒布と変更を行うことができます (\s-1COPYING\s0 ファイルをご覧ください)。