.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "Locale::Po4a::Sgml 3pm" .TH Locale::Po4a::Sgml 3pm "2023-01-03" "Po4a 工具" "Po4a 工具" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "名稱" .IX Header "名稱" Locale::Po4a::Sgml \- 將 \s-1SGML\s0 文件從/轉換為 \s-1PO\s0 檔案 .SH "描述" .IX Header "描述" Po4a (\s-1PO\s0 For Anything) 專案的目標是在文件等不需要翻譯的領域使用 gettext 工具簡化翻譯(更有趣的是,簡化翻譯的維護)。 .PP Locale::Po4a::Sgml 是一個幫助將 \s-1SGML\s0 格式的文件翻譯成其他 [人類] 語言的模組。 .PP 本模組使用 \fBonsgmls\fR(1) 解析 \s-1SGML\s0 檔案。確保它已安裝。還要確保 \s-1SGML\s0 檔案的 \s-1DTD\s0 已安裝在系統中。 .SH "此模組接受的選項" .IX Header "此模組接受的選項" .IP "\fBdebug\fR" 4 .IX Item "debug" 空格分隔的關鍵字列表,指示要除錯的部件。可能的值有:標記、類屬、圖元和參照。 .IP "\fBverbose\fR" 4 .IX Item "verbose" 給出更多關於正在發生的事情的資訊。 .IP "\fBtranslate\fR" 4 .IX Item "translate" 空格分隔的額外標記列表 (除了 \s-1DTD\s0 提供的標記之外),其內容應形成額外的 msgid。 .IP "\fBsection\fR" 4 .IX Item "section" 空格分隔的包含其他標記的額外標記列表 (除了 \s-1DTD\s0 提供的標記之外),其中一些標記屬於 \fBtranslate\fR 類別。 .IP "\fBindent\fR" 4 .IX Item "indent" 增加縮排級別的以空格分隔的標記列表。 .IP "\fBverbatim\fR" 4 .IX Item "verbatim" 這些標籤內的佈局不應更改。段落不會換行,也不會新增額外的縮排空間或新行用於修飾。 .IP "\fBempty\fR" 4 .IX Item "empty" 標籤不需要關閉。 .IP "\fBignore\fR" 4 .IX Item "ignore" 標籤被 po4a 忽略並視為純字元資料。也就是說,它們可以是 msgid 的一部分。例如, 是此類別的一個很好的候選者,因為將其放入翻譯部分會建立不是完整句子的 msgid,這是不好的。 .IP "\fBattributes\fR" 4 .IX Item "attributes" 需要轉換的屬性的空格分隔列表。您可以按屬性的名稱指定屬性(例如,\*(L"lang\*(R"(語言)),但也可以在其前面加上標記層次結構,以指定此屬性僅在轉換為指定的標記時才會被轉換。例如: lang 指定只有當 lang 屬性在 標記中(該標記在 標記中)時,lang 屬性才會被轉換。標記名稱實際上是正則表示式,因此您還可以編寫類似 lang 這樣的內容,以便僅轉換 標記中的 lang 屬性。 .IP "\fBqualify\fR" 4 .IX Item "qualify" 翻譯必須由屬性名稱限定的屬性的空格分隔列表。請注意,此設定會自動將給定屬性添加到\*(L"屬性\*(R"列表中。 .IP "\fBforce\fR" 4 .IX Item "force" 即使 \s-1DTD\s0 未知或 onsgmls 在輸入檔案中發現錯誤,也要繼續。 .IP "\fBinclude-all\fR" 4 .IX Item "include-all" 預設情況下,僅包含一個實體(如 '&version;')的 msgid 會被跳過,以方便翻譯人員使用。啟用此選項可阻止此最佳化。如果文件包含像 \*(L"Á\*(R" 這樣的結構,那麼它可能會很有用,即使我懷疑這樣的事情是否會發生…… .IP "\fBignore-inclusion\fR" 4 .IX Item "ignore-inclusion" 不會內聯的實體的空格分隔列表。請謹慎使用此選項:它可能會導致 onsgmls (內部使用) 新增標記並使輸出文件無效。 .SH "此模組的狀態" .IX Header "此模組的狀態" 結果是完美的。即生成的文件完全相同。但是仍然存在一些問題: .IP "\(bu" 2 預設情況下,onsgmls 的錯誤輸出被重定向到 /dev/null,這顯然是錯誤的。我不知道如何避免這一點。 .Sp 問題是我必須 \*(L"protect\*(R" 條件包含(即\f(CW\*(C`\*(C'\fR stuff) 不受 onsgmls 的影響。否則 onsgmls 會吃掉它們,我不知道如何在最終文件中恢復它們。為了防止出現這種情況,我將它們重寫為 \f(CW\*(C`{PO4A\-beg\-foo}\*(C'\fR 和 \f(CW\*(C`{PO4A\-end}\*(C'\fR。 .Sp 這樣做的問題是,\f(CW\*(C`{PO4A\-end}\*(C'\fR 和 I 新增的內容在文件中無效(不在

標記中)。 .Sp 如果您想檢視在輸出,請將以下內容新增到命令列(或 po4a 配置行): .Sp .Vb 1 \& \-o debug=onsgmls .Ve .IP "\(bu" 2 它只適用於 DebianDoc 和 DocBook DTD。新增對新 \s-1DTD\s0 的支援應該非常容易。該機制對於每個 \s-1DTD\s0 都是相同的,您只需給出現有標記及其一些特徵的列表。 .Sp 我同意,這需要更多的文件,但它仍然被認為是測試版,我討厭記錄可能/將會改變的東西。 .IP "\(bu" 2 警告,對 \s-1DTD\s0 的支援只是試驗性的。我沒有閱讀任何參考手冊來查詢每個標籤的定義。我確實在模組中添加了標籤定義,直到它適用於我在網上找到的一些文件。如果你的文檔使用的標籤比我的多,它就不會起作用。但正如我上面所說的,修復這個問題應該是相當容易的。 .Sp 我只針對 \s-1SAG\s0 (系統管理員指南)測試了 DocBook,但是這個文件相當大,應該使用大多數 DocBook 特性。 .Sp 對於 DebianDoc,我測試了 \s-1DDP\s0 的一些手冊,但還沒有全部測試。 .IP "\(bu" 2 在包含檔案的情況下,PO 檔案中訊息的字串引用(即類似 \f(CW\*(C`#: en/titletoc.sgml:9460\*(C'\fR 的行)將是錯誤的。 .Sp 這是因為我對檔案進行了預處理,以保護條件包含 (即 \f(CW\*(C`\*(C'\fR 內容) 和某些實體 (如 &version;) 不受 onsgmls 的影響,因為我希望它們與生成的文件保持原樣。為此,我建立了輸入檔案的臨時副本,並在將其傳遞給 onsgmls 進行解析之前對其進行了所有我想要的更改。 .Sp 為了使其正常工作,我將請求包含檔案的實體替換為給定檔案的內容 (這樣我也可以保護子檔案中需要的內容)。但是到目前為止,沒有采取任何措施來糾正後面的引用 (即文件名和行號)。我不確定最好的辦法是什麼。 .SH "作者" .IX Header "作者" 此模組是 sgmlspl (用於 \s-1ONSGMLS\s0 解析器的 \s-1SGML\s0 後處理器) 的改編版本,它是: .PP .Vb 1 \& 版權所有 © 1995 David Megginson .Ve .PP 對 po4a 的改編是透過以下方式完成的: .PP .Vb 2 \& Denis Barbier \& Martin Quinson (mquinson#debian.org) .Ve .SH "版權和許可" .IX Header "版權和許可" .Vb 2 \& 版權所有 © 1995 David Megginson 。 \& 版權所有 © 2002\-2005 SPI, Inc. .Ve .PP 此程式是自由軟體;您可以根據 \s-1GPL\s0 條款重新分發和/或修改它(請參閱複製檔案)。