
        *****************************************************
        *           GENERATED FILE, DO NOT EDIT             *
        * THIS IS NO SOURCE FILE, BUT RESULT OF COMPILATION *
        *****************************************************

This file was generated by po4a(7). Do not store it (in VCS, for example),
but store the PO file used as source file by po4a-translate.

In fact, consider this as a binary, and the PO file as a regular .c file:
If the PO get lost, keeping this translation up-to-date will be harder.

=encoding UTF-8

=head1 名前

Locale::Po4a::Man - PO ファイルと man ページの変換

=head1 説明

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

Locale::Po4a::Man は、nroff フォーマット (man ページの言語) のドキュメントをほかの [自然]
言語へ翻訳するのを助けるモジュールです。

=head1 PO4A::MAN での翻訳

このモジュールは、翻訳者を楽にするためにちょっと面倒な動作をします。 というのは、翻訳者に提供されたテキストは、man
ページに現れるテキストの逐語コピーではないということです。実際に、nroff フォーマットの生の部分は隠され、翻訳者がそれにより混乱しなくてすみます。

=head2 テキストの折り返し

インデントされていない段落は、翻訳者向けに自動的に折り返し直します。groff
で使用される折り返し直すルールはあまり明確ではないため、これで生成した出力は多少差異が発生します。例えば、丸括弧の後の二つの空白が、しばしば保持されます。

いずれにしろ、違いは折り返した段落にある余分な空白の位置についてのみとなるでしょう。そしてそこに価値があると思います。

=head2 フォント指定

最初の変更は、フォントの変更仕様についてです。nroff
には、与えられた単語を縮小、太字、斜体で書くべきかどうかを指定する方法が複数あります。翻訳するテキストには、POD (Perl online
documentation) フォーマットから借りてきた、以下の一つの方法しかありません:

=over

=item IE<lt>textE<gt> -- イタリックテキスト

\fItext\fP や ".I text" と等価

=item BE<lt>textE<gt> -- 太字テキスト

\fBtext\fP や ".B text" と等価

=item RE<lt>textE<gt> -- 通常テキスト

\fRtext\fP と等価

=item CWE<lt>textE<gt> -- 等幅テキスト

\f(CWtext\fP や ".CW text" と等価

=back

所見: CW フェイスはどの groff デバイスでも有効というわけではありません。使用はお奨めしません。利便性のために提供しています。

=head2 自動文字列変換

po4a  は、翻訳や翻訳のレビューが簡単になるように、特定の文字を自動的に変換します。以下に変換する文字を列挙します:

=over

=item ハイフン

man ページ中のハイフン (-) とマイナス記号 (\-) を、PO ファイル内ではシンプルなダッシュ(-)
に変換します。さらに出力ドキュメントに訳を挿入する際に、すべてのダッシュを roff のマイナス記号 (\-) に変換します。

翻訳者は、自分の翻訳内では roff グリフ '\[hy]' の使用を押し通せます。

=item 非改行スペース

翻訳者は、非改行スペースを翻訳内で使用できます。非改行スペース (latin1 では 0xA0) を roff 非改行スペース ('\ ')
に変換します。

=item 引用符の変換

`` と '' を、それぞれ\*(lq と \*(rq に字訳します。

変換しないようにするには、翻訳者は幅なし roff 文字を挿入してください (例: それぞれ `\&` や '\&' とします)。

=back

=head2 翻訳内に 'E<lt>' や 'E<gt>' を書く方法

こういった文字はフォント変更の区切り文字として使われるので、そのままでは使用できません。(POD のようにもう一度) 代わりに
EE<lt>ltE<gt> や EE<lt>gtE<gt> を使用してください。

=head1 このモジュールで使用できるオプション

以下は、このモジュール固有のオプションです:

=over

=item B<debug>

このモジュールの内部メカニズムのデバッグ機能を有効にします。どの部分でデバッグできるか確認するには、ソースを利用してください。

=item B<verbose>

プログラムの冗長度を上げます。

=item B<groff_code>

このオプションは、.de、.ie または .if 節があった場合のモジュールの振る舞いを制御します。以下の値を取ることができます:

=over

=item I<fail>

これはデフォルト値です。.de、.ie または .if 節がある場合、モジュールは失敗します。

=item I<verbatim>

.de、.ie または .if 節は、オリジナルから翻訳済みドキュメントへそのままコピーする必要があることを示します。

=item I<translate>

.de、.ie または .if
節は翻訳するように提案されることを表します。それらの節に、翻訳可能な文字列が含まれている場合にのみ、このオプションを指定するべきです。そうでなければ、I<verbatim>
を選択するべきです。

=back

=item B<generated>

このオプションは、ファイルが生成されたこと、そして、po4a が man
ページが別の形式から生成されたかどうかを検出しようとしないことを指定します。このオプションは生成されたman
ページに対してpo4aを使う上で不可欠です。ただし大元のページの代わりに生成された方を翻訳することはしばしばより脆いものであり関心しません。

=item B<mdoc>

このオプションは mdoc ページでのみ有用です。

'NAME' 節の翻訳を行わないように po4a に伝えることで mdoc 形式の厳密なサポートを選択します。'NAME' 節が翻訳された mdoc
ページは、任意のヘッダやフッタを生成しません。

groff_mdoc ページによると、NAME, SYNOPSIS, DESCRIPTION 節は
必須です。
SYNOPSIS, DESCRIPTION 節を翻訳することによる問題は知られていませんが、
以下のようにも指定できます:
 -o mdoc=NAME,SYNOPSIS,DESCRIPTION

この mdoc の問題は、以下のように補遺を活用して解決することもできます:
 PO4A-HEADER:mode=before;position=^.Dd
 .TH DOCUMENT_TITLE 1 "Month day, year" OS "Section Name"

=back

以下のオプションにより、（.de要求を伴う）ユーザー定義マクロやpo4aで対応していない古来のマクロの振舞いを指定します。これらは引数としてコンマ区切りのマクロのリストを取ります。例えば以下です。

 -o noarg=FO,OB,AR -o translate_joined=BA,ZQ,UX

注: po4a にサポートされていないマクロがあって、それが標準 roff マクロと考えられる場合は、それを po4a 開発チームに提出してください。

=over

=item B<untranslated>

B<untranslated> は、この (引数に指定された) マクロを翻訳する必要はないと指定します。

=item B<noarg>

B<noarg> は、B<untranslated> と同様ですが、このマクロに引数が追加されていないことを、po4a が確認するところが異なります。

=item B<translate_joined>

B<translate_joined> は、po4a がそのマクロの引数を翻訳しなければならないと指定します。

=item B<translate_each>

B<translate_each> を使っても、引数を翻訳するよう指定しますが、それぞれ別々に翻訳するようになるところが異なります。

=item B<no_wrap>

このオプションは、コンマで区切った I<begin>:I<end> のリストを引数に取ります。ここで、I<begin> と I<end>
は、折り返し直すべきでない節の始めと終わりを区切るコマンドです。

注意: I<end> コマンドが I<begin> コマンドと一致するかどうかのテストはしません。終了コマンドがあればそこで no_wrap
モードは終了します。対応する I<end> がない I<begin> マクロや対応する I<begin> がない I<end> マクロがある場合、既存の
I<end> (fi など) や I<begin> (nf など) を対応するものとして指定できます。これらのマクロ (とその引数) は翻訳されません。

=item B<inline>

このオプションは、段落を分けるべきでないコンマ区切りマクロのリストを指定します。翻訳する文字列に I<foo E<lt>.bar baz
quxE<gt> quux> が含まれるとき、I<bar> がインラインにすべきコマンドで、I<baz qux> がその引数です。

=item B<unknown_macros>

このオプションは、不明なマクロを検出した場合の po4a の挙動を指定します。デフォルトでは、po4a
は警告を表示して失敗します。以下の値を取ることができます: B<failed> (デフォルト値), B<untranslated>, B<noarg>,
B<translate_joined>, B<translate_each> (値の説明は上記参照)。

=back

=head1 PO4A::MAN 準拠の man ページの作成

このモジュールは、真の nroff
インタプリタでないので、まだ非常に制限があり解消のめどは立ちません。既存のマクロがすべて使え、さらに新しいマクロを定義できるような真の nroff
インタプリタであれば、制限を解消できたでしょうが、私たちはそうしませんでした。それは難しすぎましたし、必要でないと考えたのです。man
ページの作者が、自身の創作物を翻訳したものを目にしたいのであれば、翻訳者にとって作業しやすいように適合した方がいいと思います。

ですから、po4a で実装した man
のパーサは、修正したいと思っていない既知の制限があります。そして、これはいくつかの落とし穴を構成します。翻訳者にドキュメントの翻訳を維持して欲しかったら、回避する必要があります。

=head2 nroff 内にプログラムを書かないでください

nroff は、一つの完成したプログラミング言語です。マクロ定義や条件分岐等を備えています。このパーサはフル機能の nroff
インタープリタではないので、これらの機能を使ったページは失敗します (私の元に 200 ほどそのようなページがあります)。

=head2 プレーンマクロセットを使用してください

po4a::man
がサポートしていないマクロはまだあります。これは単に、それについてのドキュメントが見つからなかったからです。以下にサポートしていないマクロのリストを掲げます。サポートされていないマクロが最初に出てきた時点で、プログラムが失敗してしまいますので、このリストは完全ではないことに注意してください。このマクロに関して何か情報がありましたら、ありがたくサポートに追加します。これらのマクロのために、私の機械にある
250 ページは po4a::man でアクセスできないのです。

 ..               ."              .AT             .b              .bank
 .BE              ..br            .Bu             .BUGS           .BY
 .ce              .dbmmanage      .do                             .En
 .EP              .EX             .Fi             .hw             .i
 .Id              .l              .LO             .mf
 .N               .na             .NF             .nh             .nl
 .Nm              .ns             .NXR            .OPTIONS        .PB
 .pp              .PR             .PRE            .PU             .REq
 .RH              .rn             .S<             .sh             .SI
 .splitfont       .Sx             .T              .TF             .The
 .TT              .UC             .ul             .Vb             .zZ

=head2 po4a から隠したいテキスト

ときどき、筆者は、翻訳できず po4a により抽出すべきでない部分があることを認識しています。例えば、あるオプションが引数として I<other>
を受け入れてもよく、さらに、リストの最後の項目としても I<other> が現れてよいとします。前者は、I<other>
を翻訳するべきではありません。そして、後者は I<other> を翻訳すべきです。

この場合、作者は、以下のような特殊な groff 構造を利用して、po4a がテキストを抽出しないようにできます:

 .if !'po4a'hide' .B other

(これには B<-o groff_code=verbatim> オプションが必要になります)

以下のような新しいマクロを定義すると、これを自動化できます：
 .de IR_untranslated
 .    IR \\$@
 ..

 .IR_untranslated \-q ", " \-\-quiet

(この構造には、B<-o groff_code=verbatim> オプションと B<-o untranslated=IR_untranslated>
オプションが必要です。po4a はマクロ定義の内部をパースする必要はないため、B<.if !'po4a'hide'> 条件文は、厳密には必要ありません)

または、以下のようにエイリアスを使用します:
 .als IR_untranslated IR

 .IR_untranslated \-q ", " \-\-quiet

これには B<-o untranslated=als,IR_untranslated> オプションが必要になります.

=head2 結論

この節をまとめると、シンプルさを維持してください。そして、man ページを書く際に巧妙なことをしようとしないでください。nroff
では多くのことが可能ですが、このパーサによってサポートされていません。例えば、テキスト処理を中断する \c を下手にいじろうとしないでください
(私の元にある 40 ページのように)。また、マクロの引数はそのマクロと必ず同じ行に配置してください。それが nroff
で有効だということは知っています。でも、パーサが扱うにはあまりに複雑すぎるのです。

もちろん別の可能性として、もっと翻訳者に優しい (po4a::pod で使用する POD や、SGML のような XML ファミリーなど)
別のフォーマットを使用することが挙げられます。しかし po4a::man
のおかげで、もう必要ありません。そうはいっても、あなたのドキュメントのソースフォーマットが POD や XML
の場合、生成物ではなくソースフォーマットを翻訳する方が賢いでしょう。多くの場合、po4a::man
は生成されたページを検出し、警告を出します。po4a::pod がそのページを完璧に扱え、その対応する nroff
では、サポートするように書きたくない新しいマクロが多く定義されているため、POD
が生成したページを処理するのを、拒否することさえあります。私の機械では、1432/4323 ページが POD から生成され、po4a::man
に無視されます。

多くの場合、po4a::man
は問題を検出し、適合するメッセージを出力して、ページの処理を拒否します。まれなケースでは、プログラムが警告なく完了したのに、出力が誤っている場合があります。そのような場合は、"バグ"と呼びます
;) そのような場合は、可能であれば直し方とともに、ぜひ報告してください……

=head1 このモジュールの状態

既存の man ページの大半に、このモジュールを使用できます。

以下の複数のテストを Linux 機で定期的に実行しています:

=over 4

=item *

全 man ページの 1/3 は、po4a でサポートされている別のフォーマット (例: POD や SGML) から生成されたため拒否されます。

=item *

残りのページの 10% はエラーで通りません (例: groff マクロがサポートされていないなど)。

=item *

そして、1% に満たないページについて po4a
は何も言いませんが、重要な問題があります（つまり単語が消えていたり、新しい単語が挿入されてしまっていたりします）

=item *

その他のページは、通常、空白のみの差異や行の折り返しなどよりも、もっと重要な差異がないとして扱われます (フォントの問題は処理したページの 10%
以下です)。

=back

=head1 関連項目

L<Locale::Po4a::Pod(3pm)>, L<Locale::Po4a::TransTractor(3pm)>,
L<po4a(7)|po4a.7>

=head1 著者

 Denis Barbier <barbier@linuxfr.org>
 Nicolas François <nicolas.francois@centraliens.net>
 Martin Quinson (mquinson#debian.org)


=head1 訳者

 倉澤 望 <nabetaro@debian.or.jp>
 Debian JP Documentation ML <debian-doc@debian.or.jp>

=head1 著作権とライセンス

Copyright © 2002-2008 SPI, Inc.

本プログラムは自由ソフトウェアです。GPL v2.0以降の条項に基づき再頒布と変更を行えます（COPYINGファイルを参照）。
