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 工具 |