oracular (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 空白区切りのキーワードのリストです。それぞれ、表示される追加の不具合修正文言の分類を示します。取り得 る値は "entities", "generic", "onsgml", "refs", "tag" です。 verbose どのように実行しているかのより詳細な情報を出力します。 translate (DTDで規定されているもの以外の)追加タグの空白区切りリストです。該当する内容がmsgidに追加されま す。つまり、翻訳の対象となります。 section translate カテゴリ内のほかのタグを中に含む追加タグ (DTD の範囲外) の空白区切りリストです。 indent 字下げの水準を増やすタグの空白区切りリストです。結果的な文書中の字下げに作用します。 verbatim そのタグのレイアウトは変更されません。段落は折り返されず、インデントのための空白は追加されず、見栄え のための空行追加もされません。 empty 閉じる必要のないタグです。 ignore po4aにより無視され、素の文字データと見做すタグです。つまり、msgidの一部になります。例えば <b> はこの 分類の好例です。というのも translate 節に含めると内容のみがあるmsgidが作られてしまう(そして大抵は完 全な文でなくなってしまう)からです。そうなってはまずいですよね。 attributes 翻訳する必要がある属性の、空白区切りのリストです。(例えば "lang" のように)名前で属性を指定できます が、タグの継承を伴う前置詞も付けられます。そうするとこの属性は指定されたタグの中にあるもののみが翻訳 されます。例えば、 "<bbb><aaa>lan" はlang属性を指定していますが、更にその属性は "<aaa>" タグ内にあ り、且つこのタグは "<bbb>" タグ内になければなりません。タグ名は実際には正規表現となります。そのため "<aaa|bbb>lang のように書くと、 "<aaa>" または "<bbb>" タグ内にある "lang" 属性のみが翻訳されます。" qualify 属性の空白区切りのリストです。この翻訳は属性名で修飾されていなければなりません。つまり、翻訳用に抽出 されるテキストには、属性名と値が両方とも含まれるということです。例えば "<aaa lang_en="foo">" のような タグについては、翻訳者には文字列 "lang_en="foo"" >> のようにタグが表示されます。なお、ここで与えた属 性は自動的に attributes のリストにも加えられます。 force DTD が分からない場合や onsgmls が入力ファイルでエラーを検出する場合のいずれでも処理します。 include-all デフォルトでは、("&version;" のような) エンティティを一つだけ含む msgid は、翻訳者の便宜のためスキッ プします。このオプションを有効にすると、この最適化を行わなくなります。これは、 "<title>Á</title>" のような構造を含むドキュメントには便利です。とはいえ、そのようなことがそん なにあるかは疑わしいです…… ignore-inclusion インラインにしたくないエンティティの空白区切りリストです。このオプションは注意して使用してください。 onsgmls (内部で使用)がタグを追加し、無効な出力ドキュメントを表示する原因になる可能性があります。
このモジュールの状態
結果は完璧です。言い換えると生成した文書は元の文書と完全に一致しています。しかし、まだ以下のような問題が あります。 • 既定では onsgmls のエラー出力を /dev/null にリダイレクトしています。明らかにまずいのですが、どのように 回避したらよいのかがわかりません。 問題は、 onsgmls から条件付き取り込み(つまり "<! [ %foo [" and "]]>" のようなもの)を「保護」しなけれ ばならないということです。そうしないと、 onsgmls が展開してしまい、最終ドキュメントで復元する方法がわか りません。これを防ぐために、私は "{PO4A-beg-foo}" と "{PO4A-end}" に書き直しました。 これの問題は、"{PO4A-end}" などと私が追加するものが、(<p> タグ内などと違って) ドキュメント内で無効であ ることです。 もし onsgmls の出力を見たかったら、以下をコマンドライン(ないしpo4aの設定行)に加えるだけです。 -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 v2.0以降の条項に基づき再頒布と変更を行えます(COPYINGファイルを参 照)。
POD ERRORS
Hey! The above document had some coding errors, which are explained below: Around line 65: Unterminated C< ... > sequence