
        *****************************************************
        *           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 条款重新分发和/或修改它(请参阅复制文件)。

