Locale::Po4a::Sgml(3pm)

名前
Locale::Po4a::Sgml - PO ファイルと SGML ドキュメントの変換

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

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

This module uses onsgmls(1) to parse the SGML files. Make sure it is installed. Also make sure that the DTD of the SGML files are installed in the system.

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

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
    Proceed even if the DTD is unknown or if onsgmls finds errors in the input file.

include-all
    デフォルトでは、('&version;' のような) エンティティを一つだけ含む msgid は、翻訳者の便宜のためスキップします。このオプションを有効にすると、この最適化を行わなくなります。これは、"<title>&Aacute;</title>" のような構造を含むドキュメントには便利です。とはいえ、そのようなことがそんなにあるかは疑わしいです……

ignore-inclusion
    Space separated list of entities that won't be inlined. Use this option with caution: it may cause onsgmls (used internally) to add tags and render the output document invalid.

このモジュールの状態
結果は完璧です。言い換えると生成したドキュメントは完全に一致しています。しかし、まだ以下のような問題があります:

•   The error output of onsgmls is redirected to /dev/null, which is clearly bad. I don't know how to avoid that.

    The problem is that I have to "protect" the conditional inclusions (i.e. the "<! [ %foo [" and "]]>" stuff) from onsgmls. Otherwise onsgmls eats them, and I don't know how to restore them in the final document. To prevent that, I rewrite them to "{PO4A-beg-foo}" and "{PO4A-end}".

    これの問題は、"{PO4A-end}" などと私が追加するものが、(<p> タグ内などと違って) ドキュメント内で無効であることです。

    Everything works well with onsgmls's output redirected that way, but it will prevent us from detecting that the document is badly formatted.

•   DebianDoc DTD と DocBook DTD でのみ動作します。新しい DTD のサポートを追加するのは非常に簡単でしょう。仕組みはすべての DTD で同じで、既存のタグのリストとその特徴を与えるだけです。

    確かに、もっとドキュメントの記述が必要です。しかし、これはまだベータ版ですし、変わることが予想されるものの記述を行うのがイヤなのです。

•   警告: DTD のサポートは非常に実験的です。すべてのタグの定義を見つけるのに、リファレンスマニュアルを読んだわけではありません。ネットで見つかるドキュメントで動作するように、このモジュールにタグの定義を追加しました。あなたのドキュメントが私のよりも多くの種類のタグを使用している場合、動作しないでしょう。しかし前述の通り、修正は非常に簡単です。

    DocBook のテストは SAG (System Administrator Guide) でのみ行いましたが、このドキュメントは非常に大きく、DocBook の仕様のほとんどを使用していると考えています。

    DebianDoc に対しては、DDP にあるマニュアルでテストをしています。しかしまだ、すべてではありません。

•   ファイルの取り込みを行う場合、PO ファイルにあるメッセージの参照文字列 (例: "#: en/titletoc.sgml:9460" のような行) は誤りが発生するでしょう。

    This is because I preprocess the file to protect the conditional inclusion (i.e. the "<! [ %foo [" and "]]>" stuff) and some entities (like &version;) from onsgmls because I want them verbatim to the generated document. For that, I make a temp copy of the input file and do all the changes I want to this before passing it to onsgmls for parsing.

    こうするためには、与えられたファイルの内容により、ファイルの取り込みを確認しながらエンティティを置換します (サブファイルでも必要とあらば保護できるように)。ですが今のところ、後で参照 (例えばファイル名や行番号) を修正するということは行いません。どのようにするのが正しいのか、私にはよくわかりません。

著者
This module is an adapted version of sgmlspl (SGML postprocessor for the ONSGMLS parser) which was:

 Copyright (c) 1995 by 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 (c) 1995 by David Megginson <dmeggins@aix1.uottawa.ca>
 Copyright 2002, 2003, 2004, 2005 by SPI, inc.

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