.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" 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 .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . 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 .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "LOCALE::PO4A::SGML.3PM 1" .TH LOCALE::PO4A::SGML.3PM 1 2025-11-22 "perl v5.42.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NAME Locale::Po4a::Sgml \- konvertiert SGML\-Dokumente von/in PO\-Dateien .SH BESCHREIBUNG .IX Header "BESCHREIBUNG" Das Projektziel von Po4a (PO für alles) ist es, die Übersetzung (und interessanter, die Wartung der Übersetzung) zu vereinfachen, indem die Gettext\-Werkzeuge auch für Gebiete verwendet werden, wo diese nicht erwartet werden, wie Dokumentation. .PP Locale::Po4a::Sgml ist ein Modul, um bei der Übersetzung von Dokumentation im SGML\-Format in andere [natürliche] Sprachen zu helfen. .PP Dieses Module verwendet \fBonsgmls\fR(1), um SGML\-Dateien auszuwerten. Stellen Sie daher sicher, dass es installiert ist. Stellen Sie auch sicher, dass die DTD\- der SGML\-Dateien im System installiert sind. .SH "VON DIESEM MODUL AKZEPTIERTE OPTIONEN" .IX Header "VON DIESEM MODUL AKZEPTIERTE OPTIONEN" .IP \fBdebug\fR 4 .IX Item "debug" Durch Leerzeichen getrennte Liste von Schlüsselwörtern, die angeben, welche Kategorie von zusätzlichen Fehlersuchmeldungen angezeigt werden soll. Möglich Werte sind: \f(CW\*(C`entities\*(C'\fR, \f(CW\*(C`generic\*(C'\fR, \f(CW\*(C`onsgml\*(C'\fR, \f(CW\*(C`refs\*(C'\fR und \&\f(CW\*(C`tag\*(C'\fR. .IP \fBverbose\fR 4 .IX Item "verbose" mehr Informationen darüber ausgeben, was vorgeht .IP \fBtranslate\fR 4 .IX Item "translate" durch Leerzeichen getrennte Liste von zusätzlichen Markierungen (»Tags«) (neben denen von der DTD vorgegebenen), deren Inhalt eine zusätzliche »msgid« ergeben soll, d.h. die übersetzt werden sollten. .IP \fBsection\fR 4 .IX Item "section" durch Leerzeichen getrennte Liste von zusätzlichen Markierungen (»Tags«) (neben denen von der DTD vorgegebenen), die andere Markierungen enthalten, wobei einige in die Kategorie \fBtranslate\fR fallen .IP \fBindent\fR 4 .IX Item "indent" durch Leerzeichen getrennte Liste von Markierungen (»Tags«), die die Einzugsstufe erhöhen. Dies wird die Einrückung des Ergebnisdokuments beeinflussen. .IP \fBverbatim\fR 4 .IX Item "verbatim" Das Layout innerhalb dieser Markierungen (»Tags«) sollte nicht geändert werden. Der Absatz erfährt keinen Zeilenumbruch und keine zusätzliche Einrückung und keine zusätzliche Zeilen werden für kosmetische Zwecke eingefügt. .IP \fBempty\fR 4 .IX Item "empty" Markierungen (»Tags«), die nicht geschlossen werden müssen .IP \fBignore\fR 4 .IX Item "ignore" Markierungen (»Tags«), die von Po4a ignoriert und als reine Zeichendaten betrachtet werden. Das bedeutet, dass sie Teil einer Msgid sein können. Beispielsweise ist ein guter Kandidat für diese Kategorie, da das Hinzufügen in den Abschnitt \fBtranslate\fR Msgids nur mit ihrem Inhalt erzeugen würde (der normalerweise kein ganzer Satz ist), was schlecht wäre. .IP \fBattributes\fR 4 .IX Item "attributes" Eine durch Leerzeichen getrennte Liste von Attributen, die nicht übersetzt werden müssen. Sie können die Attribute mit ihrem Namen (beispielsweise \&\f(CW\*(C`lang\*(C'\fR) angeben, aber Sie können ihnen auch eine Markierungs\- (»Tag«\-)Hierarchie voranstellen, um anzugeben, dass dieses Attribut nur übersetzt wird, wenn es Teil der angegebenen Markierung ist. Beispielsweise spezifiziert \f(CW\*(C`lang\*(C'\fR, dass das Attribut \f(CW\*(C`lang\*(C'\fR nur übersetzt werden soll, wenn es Teil der Markierung \f(CW\*(C`\*(C'\fR ist, die wiederum Teil der Markierung \f(CW\*(C`\*(C'\fR ist. Die Namen der Markierungen sind eigentlich reguläre Ausdrücke, daher können Sie auch Formulierungen wie \f(CW\*(C`lang\*(C'\fR wählen, um das Attribut \f(CW\*(C`lang\*(C'\fR nur zu übersetzen, wenn es sich in der Markierung \f(CW\*(C`\*(C'\fR oder a \f(CW\*(C`\*(C'\fRbefindet. .IP \fBqualify\fR 4 .IX Item "qualify" Eine durch Leerzeichen getrennte Liste von Attributen, für die die Übersetzung über den Attributnamen qualifiziert werden muss, d.h. der für die Übersetzung herausgelöste Text wird sowohl den Attributnamen als auch seinen Werte enthalten. Für eine Markierung wie \f(CW\*(C`\*(C'\fR wird Übersetzern beispielsweise die Zeichenkette \f(CW\*(C`lang_en="foo"\*(C'\fR angeboten. Beachten Sie, dass diese Einstellung das angegebene Attribut auch automatisch zu der Liste \fBattributes\fR hinzufügt. .IP \fBforce\fR 4 .IX Item "force" fortfahren, selbst falls die DTD unbekannt ist oder falls \fBonsgmls\fR(1) Fehler in der Eingabedatei findet .IP \fBinclude\-all\fR 4 .IX Item "include-all" Standardmäßig werden Msgids, die nur eine Entität enthalten (wie \&\f(CW\*(C`&version;\*(C'\fR) für angenehmeres Übersetzen übersprungen. Durch Aktivierung dieser Option wird diese Optimierung vermieden. Dies könnte nützlich sein, falls das Dokumente Konstrukte wie \f(CW\*(C`Á\*(C'\fR enthält, selbst wenn ich daran zweifle, dass das jemals passieren wird … .IP \fBignore\-inclusion\fR 4 .IX Item "ignore-inclusion" Durch Leerzeichen getrennte Liste, die nicht eingefügt wird. Benutzen Sie diese Option mit Vorsicht: Sie könnte \fBonsgmls\fR(1) (intern benutzt) veranlassen, Markierungen hinzuzufügen und das Ausgabedokument ungültig zu berechnen. .SH "STATUS DIESES MODULS" .IX Header "STATUS DIESES MODULS" Das Ergebnis ist perfekt, d.h. die erstellten Dokumente sind identisch mit den ursprünglichen. Aber es gibt noch ein paar Probleme: .IP \(bu 2 Die Fehlerausgabe von \fBonsgmls\fR(1) wird standardmäßig nach /dev/null umgeleitet. Dies ist eindeutig schlecht. Ich weiß nicht, wie ich das vermeiden kann. .Sp Das Problem liegt darin, dass ich die bedingte Einbindung (d.h. das Zeug \&\f(CW\*(C`\*(C'\fR) vor \fBonsgmls\fR(1) »schützen« muss. Andernfalls futtert \fBonsgmls\fR(1) das auf und ich weiß nicht, wie ich das im letztendlichen Dokument wieder herstellen kann. Um das zu vermeiden, schreibe ich sie in \f(CW\*(C`{PO4A\-beg\-foo}\*(C'\fR und \f(CW\*(C`{PO4A\-end}\*(C'\fR um. .Sp Das Problem dabei ist, dass \f(CW\*(C`{PO4A\-end}\*(C'\fR und so etwas im Dokument ungültig sind (nicht in einer

\-Markierung oder so). .Sp Falls Sie die \fBonsgmls\fR(1)\-Ausgabe sehen wollen, fügen Sie einfach Folgendes zu Ihrer Befehlszeile (oder der Po4a\-Konfigurationszeile) hinzu: .Sp .Vb 1 \& \-o debug=onsgmls .Ve .IP \(bu 2 Es funktioniert nur mit der DebianDoc\- und DocBook\-DTD. Hinzunahme der Unterstützung für eine neue DTD sollte sehr leicht sein. Der Mechanismus ist für alle DTD identisch, Sie müssen nur eine Liste der existierenden Markierungen und einige ihrer Charakteristika angeben. .Sp Ich stimme zu, dass dies weitere Dokumentation benötigt, aber es wird immer noch als Beta betrachtet und ich hasse es, Zeug zu dokumentieren, dass sich noch ändern kann oder wird. .IP \(bu 2 Warnung: Die Unterstützung für DTDs ist noch recht experimentell. Ich habe kein Referenzhandbuch gelesen, um die Definition jeder Markierung herauszufinden. Ich habe die Makierungsdefinitionen zum Modul hinzugefügt, bis es für einige Dokumente funktionierte, die ich im Netz fand. Falls Ihr Dokument mehr Markierungen verwendet als meins, wird es nicht funktionieren. Aber wie oben geschrieben, sollte das leicht zu beheben sein. .Sp Ich habe DocBook nur mit der SAG (System Administrator Guide) getestet, allerdings ist dieses Dokument sehr groß und sollte den Großteil der DocBook\-Spezialitäten verwenden. .Sp Für DebianDoc habe ich einige der Handbücher vom DDP getestet, aber noch nicht alle. .IP \(bu 2 Im Falle von Dateieinbindungen werden Zeichenkettenreferenzen von Meldungen in PO\-Dateien (d.h. Zeilen der Art \f(CW\*(C`#: en/titletoc.sgml:9460\*(C'\fR) falsch sein. .Sp Dies rührt daher, dass die Datei vorbearbeitet wird, um die bedingten Einbindungen (d.h. das \f(CW\*(C`\*(C'\fR Zeug) und einige Entitäten (wie \f(CW\*(C`&version;\*(C'\fR) vor \fBonsgmls\fR(1) zu schützen, da ich sie unverändert im automatisch erstellten Dokument bekommen möchte. Daher wird eine temporäre Kopie der Eingabedatei angelegt und alle Änderungen werden daran vorgenommen, bevor sie an \fBonsgmls\fR(1) zur Auswertung übergeben wird. .Sp Damit dies funktioniert, werden die Entitäten, die eine Dateieinbindung durch den Inhalt der angegebenen Datei erbitten, ersetzt (so dass auch geschützt werden kann, was in einer Unterdatei ist). Allerdings erfolgt derzeit anschließend nichts, um die Referenzen zu schützen (d.h. Dateiname und Zeilennummer). Mir ist nicht klar, was hier das beste Vorgehen ist. .SH AUTOREN .IX Header "AUTOREN" Dieses Modul ist eine angepasste Version von Sgmlspl (SGML postprocessor for the ONSGMLS parsers), für den galt: .PP .Vb 1 \& Copyright © 1995 David Megginson .Ve .PP Die Anpassung für Po4a wurde erledigt durch: .PP .Vb 2 \& Denis Barbier \& Martin Quinson (mquinson#debian.org) .Ve .SH "URHEBERRECHT UND LIZENZ" .IX Header "URHEBERRECHT UND LIZENZ" .Vb 2 \& Copyright © 1995 David Megginson . \& Copyright © 2002\-2005 SPI, Inc. .Ve .PP Dieses Programm ist freie Software; Sie können es unter den Bedingungen der GPL v2.0 oder neuer (siehe die Datei COPYING) vertreiben und/oder verändern.