
        *****************************************************
        *           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::Sgml - 將 SGML 文件從/轉換為 PO 檔案

=head1 描述

Po4a (PO For Anything) 專案的目標是在文件等不需要翻譯的領域使用 gettext 工具簡化翻譯(更有趣的是，簡化翻譯的維護)。

Locale::Po4a::Sgml 是一個幫助將 SGML 格式的文件翻譯成其他 [人類] 語言的模組。

本模組使用 B<onsgmls>(1) 解析 SGML 檔案。確保它已安裝。還要確保 SGML 檔案的 DTD 已安裝在系統中。

=head1 此模組接受的選項

=over 4

=item B<debug>

空格分隔的關鍵字列表，指示要除錯的部件。可能的值有：標記、類屬、圖元和參照。

=item B<verbose>

給出更多關於正在發生的事情的資訊。

=item B<translate>

空格分隔的額外標記列表 (除了 DTD 提供的標記之外)，其內容應形成額外的 msgid。

=item B<section>

空格分隔的包含其他標記的額外標記列表 (除了 DTD 提供的標記之外)，其中一些標記屬於 B<translate> 類別。

=item B<indent>

增加縮排級別的以空格分隔的標記列表。

=item B<verbatim>

這些標籤內的佈局不應更改。段落不會換行，也不會新增額外的縮排空間或新行用於修飾。

=item B<empty>

標籤不需要關閉。

=item B<ignore>

標籤被 po4a 忽略並視為純字元資料。也就是說，它們可以是 msgid 的一部分。例如，E<lt>bE<gt> 是此類別的一個很好的候選者，因為將其放入翻譯部分會建立不是完整句子的 msgid，這是不好的。

=item B<attributes>

需要轉換的屬性的空格分隔列表。您可以按屬性的名稱指定屬性(例如，"lang"(語言))，但也可以在其前面加上標記層次結構，以指定此屬性僅在轉換為指定的標記時才會被轉換。例如：E<lt>bbbE<gt>E<lt>aaaE<gt> lang 指定只有當 lang 屬性在 E<lt>aaaE<gt> 標記中(該標記在 E<lt>bbbE<gt> 標記中)時，lang 屬性才會被轉換。標記名稱實際上是正則表示式，因此您還可以編寫類似 E<lt>aaa|bbbbE<gt> lang 這樣的內容，以便僅轉換 E<lt>aaaE<gt> 或 E<lt>bbbE<gt> 標記中的 lang 屬性。

=item B<qualify>

翻譯必須由屬性名稱限定的屬性的空格分隔列表。請注意，此設定會自動將給定屬性添加到"屬性"列表中。

=item B<force>

即使 DTD 未知或 onsgmls 在輸入檔案中發現錯誤，也要繼續。

=item B<include-all>

預設情況下，僅包含一個實體(如 '&version;')的 msgid 會被跳過，以方便翻譯人員使用。啟用此選項可阻止此最佳化。如果文件包含像 "<title>&Aacute;</title>" 這樣的結構，那麼它可能會很有用，即使我懷疑這樣的事情是否會發生……

=item B<ignore-inclusion>

不會內聯的實體的空格分隔列表。請謹慎使用此選項：它可能會導致 onsgmls (內部使用) 新增標記並使輸出文件無效。

=back

=head1 此模組的狀態

結果是完美的。即生成的文件完全相同。但是仍然存在一些問題：

=over 2

=item *

預設情況下，onsgmls 的錯誤輸出被重定向到 /dev/null，這顯然是錯誤的。我不知道如何避免這一點。

問題是我必須 "protect" 條件包含(即C<E<lt>! [ %foo [> and C<]]E<gt>> stuff) 不受 onsgmls 的影響。否則 onsgmls 會吃掉它們，我不知道如何在最終文件中恢復它們。為了防止出現這種情況，我將它們重寫為 C<{PO4A-beg-foo}> 和 C<{PO4A-end}>。

這樣做的問題是，C<{PO4A-end}> 和 I 新增的內容在文件中無效(不在 E<lt>pE<gt> 標記中)。

如果您想檢視在輸出，請將以下內容新增到命令列(或 po4a 配置行)：

  -o debug=onsgmls

=item *

它只適用於 DebianDoc 和 DocBook DTD。新增對新 DTD 的支援應該非常容易。該機制對於每個 DTD 都是相同的，您只需給出現有標記及其一些特徵的列表。

我同意，這需要更多的文件，但它仍然被認為是測試版，我討厭記錄可能/將會改變的東西。

=item *

警告，對 DTD 的支援只是試驗性的。我沒有閱讀任何參考手冊來查詢每個標籤的定義。我確實在模組中添加了標籤定義，直到它適用於我在網上找到的一些文件。如果你的文檔使用的標籤比我的多，它就不會起作用。但正如我上面所說的，修復這個問題應該是相當容易的。

我只針對 SAG (系統管理員指南)測試了 DocBook，但是這個文件相當大，應該使用大多數 DocBook 特性。

對於 DebianDoc，我測試了 DDP 的一些手冊，但還沒有全部測試。

=item *

在包含檔案的情況下，PO 檔案中訊息的字串引用(即類似 C<#: en/titletoc.sgml:9460> 的行)將是錯誤的。

這是因為我對檔案進行了預處理，以保護條件包含 (即 C<E<lt>! [ %foo [> and C<]]E<gt>> 內容) 和某些實體 (如 &version;) 不受 onsgmls 的影響，因為我希望它們與生成的文件保持原樣。為此，我建立了輸入檔案的臨時副本，並在將其傳遞給 onsgmls 進行解析之前對其進行了所有我想要的更改。

為了使其正常工作，我將請求包含檔案的實體替換為給定檔案的內容 (這樣我也可以保護子檔案中需要的內容)。但是到目前為止，沒有采取任何措施來糾正後面的引用 (即文件名和行號)。我不確定最好的辦法是什麼。

=back

=head1 作者

此模組是 sgmlspl (用於 ONSGMLS 解析器的 SGML 後處理器) 的改編版本，它是：

 版權所有 © 1995 David Megginson <dmeggins@aix1.uottawa.ca>

對 po4a 的改編是透過以下方式完成的：

 Denis Barbier <barbier@linuxfr.org>
 Martin Quinson (mquinson#debian.org)

=head1 版權和許可

 版權所有 © 1995 David Megginson <dmeggins@aix1.uottawa.ca>。
 版權所有 © 2002-2005 SPI, Inc.

此程式是自由軟體；您可以根據 GPL 條款重新分發和/或修改它(請參閱複製檔案)。

