Locale::Po4a::Sgml(3pm) | Po4a 工具 | Locale::Po4a::Sgml(3pm) |
Locale::Po4a::Sgml - 将 SGML 文档从/转换为 PO 文件
Po4a (PO For Anything) 项目的目标是在文档等不需要翻译的领域使用 gettext 工具简化翻译(更有趣的是,简化翻译的维护)。
Locale::Po4a::Sgml 是一个帮助将 SGML 格式的文档翻译成其他 [人类] 语言的模块。
本模块使用 onsgmls(1) 解析 SGML 文件。确保它已安装。还要确保 SGML 文件的 DTD 已安装在系统中。
结果是完美的。即生成的文档完全相同。但是仍然存在一些问题:
问题是我必须 "protect" 条件包含(即"<! [ %foo [" and "]]>" stuff) 不受 onsgmls 的影响。否则 onsgmls 会吃掉它们,我不知道如何在最终文档中恢复它们。为了防止出现这种情况,我将它们重写为 "{PO4A-beg-foo}" 和 "{PO4A-end}"。
这样做的问题是,"{PO4A-end}" 和 I 添加的内容在文档中无效(不在 <p> 标记中)。
如果您想查看在输出,请将以下内容添加到命令行(或 po4a 配置行):
-o debug=onsgmls
我同意,这需要更多的文档,但它仍然被认为是测试版,我讨厌记录可能/将会改变的东西。
我只针对 SAG (系统管理员指南)测试了 DocBook,但是这个文档相当大,应该使用大多数 DocBook 特性。
对于 DebianDoc,我测试了 DDP 的一些手册,但还没有全部测试。
这是因为我对文件进行了预处理,以保护条件包含 (即 "<! [ %foo [" and "]]>" 内容) 和某些实体 (如 &version;) 不受 onsgmls 的影响,因为我希望它们与生成的文档保持原样。为此,我创建了输入文件的临时副本,并在将其传递给 onsgmls 进行解析之前对其进行了所有我想要的更改。
为了使其正常工作,我将请求包含文件的实体替换为给定文件的内容 (这样我也可以保护子文件中需要的内容)。但是到目前为止,没有采取任何措施来纠正后面的引用 (即文件名和行号)。我不确定最好的办法是什么。
此模块是 sgmlspl (用于 ONSGMLS 解析器的 SGML 后处理器) 的改编版本,它是:
版权所有 © 1995 David Megginson <dmeggins@aix1.uottawa.ca>
对 po4a 的改编是通过以下方式完成的:
Denis Barbier <barbier@linuxfr.org> Martin Quinson (mquinson#debian.org)
版权所有 © 1995 David Megginson <dmeggins@aix1.uottawa.ca>。 版权所有 © 2002-2005 SPI, Inc.
此程序是自由软件;您可以根据 GPL 条款重新分发和/或修改它(请参阅复制文件)。
2023-01-03 | Po4a 工具 |