focal (3) Locale::Po4a::Sgml.3pm.gz

名前
Locale::Po4a::Sgml - PO ファイルと SGML ドキュメントの変換
説明
po4a (PO for anything) プロジェクトは、gettext ツールが想定していないドキュメントのような領域で翻訳をしや すくすること (またより興味深いのは、翻訳文の保守がしやすくなること) を目標にしています。 Locale::Po4a::Sgml は、SGML フォーマットのドキュメントをほかの [自然] 言語へ翻訳するのを助けるモジュール です。 このモジュールは SGML ファイルのパースに onsgmls(1) を利用します。必ずインストールしてください。ま た、SGML ファイルの DTD を、システムに必ずインストールしてください。
このモジュールで使用できるオプション
debug デバッグしたい場所を示す空白区切りのキーワードリストを表示します。取り得る値は、tag, generic, entities, refs です。 verbose どのように実行しているかのより詳細な情報を出力します。 translate 内容が追加 msgid の形になる追加タグ (DTD で規定されているもの以外) の空白区切りリストです。 section translate カテゴリ内のほかのタグを中に含む追加タグ (DTD の範囲外) の空白区切りリストです。 indent インデントレベルを増やすタグの空白区切りリストです。 verbatim そのタグのレイアウトは変更されません。段落は折り返されず、インデントのための空白は追加されず、見栄え のための空行追加もされません。 empty 閉じる必要のないタグです。 ignore 無視され、po4a がただの文字列として扱うタグです。つまり、msgid の一部として扱えます。例えば、<b> はこ のカテゴリの良い例です。<b> が翻訳セクションに入ってしまうと、文全体が入った msgid が作られなくなって しまいます。これはまずいです。 attributes 翻訳する必要のある属性の空白区切りリストです。属性を名前 (例: "lang") で指定できますが、特定のタグの 中にあるときだけこの属性を翻訳するように、タグ階層を前につけることもできます。例えば、<bbb><aaa>lang は、<bbb> タグの中にある <aaa> タグの中にある場合に、lang 属性を翻訳するということを示しています。タ グ名は、実際には正規表現ですから、<aaa|bbbb>lang のように書いた場合は、<aaa> タグか <bbb> タグの中に ある lang 属性のみを翻訳できます。 qualify 翻訳が属性名で修飾しなければならない属性の空白区切りのリストです。この設定に与えた属性は、自動的に 'attributes' リストにも追加されることに注意してください。 force DTD が分からない場合や onsgmls が入力ファイルでエラーを検出する場合のいずれでも処理します。 include-all デフォルトでは、('&version;' のような) エンティティを一つだけ含む msgid は、翻訳者の便宜のためスキッ プします。このオプションを有効にすると、この最適化を行わなくなります。これ は、"<title>Á</title>" のような構造を含むドキュメントには便利です。とはいえ、そのようなことが そんなにあるかは疑わしいです…… ignore-inclusion インラインにしたくないエンティティの空白区切りリストです。このオプションは注意して使用してくださ い。onsgmls (内部で使用) がタグを追加し、無効な出力ドキュメントを表示する原因になる可能性があります。
このモジュールの状態
結果は完璧です。言い換えると生成したドキュメントは完全に一致しています。しかし、まだ以下のような問題があ ります: • The error output of onsgmls is redirected to /dev/null by default, which is clearly bad. I don't know how to avoid that. 問題は、onsgmls から条件付き取り込み (つまり "<! [ %foo [" and "]]>" のようなもの) を "保護" しなければ ならないということです。そうしないと、onsgmls が展開してしまい、最終ドキュメントで復元する方法がわかり ません。これを防ぐために、私は "{PO4A-beg-foo}" と "{PO4A-end}" に書き直しました。 これの問題は、"{PO4A-end}" などと私が追加するものが、(<p> タグ内などと違って) ドキュメント内で無効であ ることです。 If you want to view the onsgmls output, just add the following to your command line (or po4a configuration line): -o debug=onsgmls • DebianDoc DTD と DocBook DTD でのみ動作します。新しい DTD のサポートを追加するのは非常に簡単でしょ う。仕組みはすべての DTD で同じで、既存のタグのリストとその特徴を与えるだけです。 確かに、もっとドキュメントの記述が必要です。しかし、これはまだベータ版ですし、変わることが予想されるも のの記述を行うのがイヤなのです。 • 警告: DTD のサポートは非常に実験的です。すべてのタグの定義を見つけるのに、リファレンスマニュアルを読ん だわけではありません。ネットで見つかるドキュメントで動作するように、このモジュールにタグの定義を追加し ました。あなたのドキュメントが私のよりも多くの種類のタグを使用している場合、動作しないでしょう。しかし 前述の通り、修正は非常に簡単です。 DocBook のテストは SAG (System Administrator Guide) でのみ行いましたが、このドキュメントは非常に大き く、DocBook の仕様のほとんどを使用していると考えています。 DebianDoc に対しては、DDP にあるマニュアルでテストをしています。しかしまだ、すべてではありません。 • ファイルの取り込みを行う場合、PO ファイルにあるメッセージの参照文字列 (例: "#: en/titletoc.sgml:9460" のような行) は誤りが発生するでしょう。 これにより、生成したドキュメントでは、条件付き取り込み (例; the "<! [ %foo [" and "]]>" など) やいくつ かのエンティティ (&version; のような) がそのまま扱われてほしいので、onsgmls から保護するため前処理を行 うことになります。そこで、入力ファイルの一時コピーを作成し、onsgmls に渡してパースする前に、それらすべ てを変更します。 こうするためには、与えられたファイルの内容により、ファイルの取り込みを確認しながらエンティティを置換し ます (サブファイルでも必要とあらば保護できるように)。ですが今のところ、後で参照 (例えばファイル名や行番 号) を修正するということは行いません。どのようにするのが正しいのか、私にはよくわかりません。
著者
このモジュールは、以下の方による sgmlspl (SGMLS パーサや ONSGMLS パーサの SGML ポストプロセッサ) の適合版 です: Copyright © 1995 David Megginson <dmeggins@aix1.uottawa.ca> po4a への適合は以下のメンバーが行いました: Denis Barbier <barbier@linuxfr.org> Martin Quinson (mquinson#debian.org)
訳者
倉澤 望 <nabetaro@debian.or.jp> Debian JP Documentation ML <debian-doc@debian.or.jp>
著作権とライセンス
Copyright © 1995 David Megginson <dmeggins@aix1.uottawa.ca>. Copyright © 2002-2005 SPI, Inc. 本プログラムはフリーソフトウェアです。GPL の条項に基づき再頒布と変更を行うことができます (COPYING ファイ ルを参照してください)。