LOCALE::PO4A::SGML.3PM(1) User Contributed Perl Documentation NAME Locale::Po4a::Sgml - konvertiert SGML-Dokumente von/in PO-Dateien BESCHREIBUNG Das Projektziel von Po4a (PO fur alles) ist es, die Ubersetzung (und interessanter, die Wartung der Ubersetzung) zu vereinfachen, indem die Gettext-Werkzeuge auch fur Gebiete verwendet werden, wo diese nicht erwartet werden, wie Dokumentation. Locale::Po4a::Sgml ist ein Modul, um bei der Ubersetzung von Dokumentation im SGML-Format in andere [naturliche] Sprachen zu helfen. Dieses Module verwendet onsgmls(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. VON DIESEM MODUL AKZEPTIERTE OPTIONEN debug Durch Leerzeichen getrennte Liste von Schlusselwortern, die angeben, welche Kategorie von zusatzlichen Fehlersuchmeldungen angezeigt werden soll. Moglich Werte sind: "entities", "generic", "onsgml", "refs" und "tag". verbose mehr Informationen daruber ausgeben, was vorgeht translate durch Leerzeichen getrennte Liste von zusatzlichen Markierungen (>>Tags<<) (neben denen von der DTD vorgegebenen), deren Inhalt eine zusatzliche >>msgid<< ergeben soll, d.h. die ubersetzt werden sollten. section durch Leerzeichen getrennte Liste von zusatzlichen Markierungen (>>Tags<<) (neben denen von der DTD vorgegebenen), die andere Markierungen enthalten, wobei einige in die Kategorie translate fallen indent durch Leerzeichen getrennte Liste von Markierungen (>>Tags<<), die die Einzugsstufe erhohen. Dies wird die Einruckung des Ergebnisdokuments beeinflussen. verbatim Das Layout innerhalb dieser Markierungen (>>Tags<<) sollte nicht geandert werden. Der Absatz erfahrt keinen Zeilenumbruch und keine zusatzliche Einruckung und keine zusatzliche Zeilen werden fur kosmetische Zwecke eingefugt. empty Markierungen (>>Tags<<), die nicht geschlossen werden mussen ignore Markierungen (>>Tags<<), die von Po4a ignoriert und als reine Zeichendaten betrachtet werden. Das bedeutet, dass sie Teil einer Msgid sein konnen. Beispielsweise ist ein guter Kandidat fur diese Kategorie, da das Hinzufugen in den Abschnitt translate Msgids nur mit ihrem Inhalt erzeugen wurde (der normalerweise kein ganzer Satz ist), was schlecht ware. attributes Eine durch Leerzeichen getrennte Liste von Attributen, die nicht ubersetzt werden mussen. Sie konnen die Attribute mit ihrem Namen (beispielsweise "lang") angeben, aber Sie konnen ihnen auch eine Markierungs- (>>Tag<<-)Hierarchie voranstellen, um anzugeben, dass dieses Attribut nur ubersetzt wird, wenn es Teil der angegebenen Markierung ist. Beispielsweise spezifiziert "lang", dass das Attribut "lang" nur ubersetzt werden soll, wenn es Teil der Markierung "" ist, die wiederum Teil der Markierung "" ist. Die Namen der Markierungen sind eigentlich regulare Ausdrucke, daher konnen Sie auch Formulierungen wie "lang" wahlen, um das Attribut "lang" nur zu ubersetzen, wenn es sich in der Markierung "" oder a ""befindet. qualify Eine durch Leerzeichen getrennte Liste von Attributen, fur die die Ubersetzung uber den Attributnamen qualifiziert werden muss, d.h. der fur die Ubersetzung herausgeloste Text wird sowohl den Attributnamen als auch seinen Werte enthalten. Fur eine Markierung wie "" wird Ubersetzern beispielsweise die Zeichenkette "lang_en="foo"" angeboten. Beachten Sie, dass diese Einstellung das angegebene Attribut auch automatisch zu der Liste attributes hinzufugt. force fortfahren, selbst falls die DTD unbekannt ist oder falls onsgmls(1) Fehler in der Eingabedatei findet include-all Standardmassig werden Msgids, die nur eine Entitat enthalten (wie "&version;") fur angenehmeres Ubersetzen ubersprungen. Durch Aktivierung dieser Option wird diese Optimierung vermieden. Dies konnte nutzlich sein, falls das Dokumente Konstrukte wie "Á" enthalt, selbst wenn ich daran zweifle, dass das jemals passieren wird ignore-inclusion Durch Leerzeichen getrennte Liste, die nicht eingefugt wird. Benutzen Sie diese Option mit Vorsicht: Sie konnte onsgmls(1) (intern benutzt) veranlassen, Markierungen hinzuzufugen und das Ausgabedokument ungultig zu berechnen. STATUS DIESES MODULS Das Ergebnis ist perfekt, d.h. die erstellten Dokumente sind identisch mit den ursprunglichen. Aber es gibt noch ein paar Probleme: o Die Fehlerausgabe von onsgmls(1) wird standardmassig nach /dev/null umgeleitet. Dies ist eindeutig schlecht. Ich weiss nicht, wie ich das vermeiden kann. Das Problem liegt darin, dass ich die bedingte Einbindung (d.h. das Zeug "") vor onsgmls(1) >>schutzen<< muss. Andernfalls futtert onsgmls(1) das auf und ich weiss nicht, wie ich das im letztendlichen Dokument wieder herstellen kann. Um das zu vermeiden, schreibe ich sie in "{PO4A-beg-foo}" und "{PO4A-end}" um. Das Problem dabei ist, dass "{PO4A-end}" und so etwas im Dokument ungultig sind (nicht in einer

-Markierung oder so). Falls Sie die onsgmls(1)-Ausgabe sehen wollen, fugen Sie einfach Folgendes zu Ihrer Befehlszeile (oder der Po4a-Konfigurationszeile) hinzu: -o debug=onsgmls o Es funktioniert nur mit der DebianDoc- und DocBook-DTD. Hinzunahme der Unterstutzung fur eine neue DTD sollte sehr leicht sein. Der Mechanismus ist fur alle DTD identisch, Sie mussen nur eine Liste der existierenden Markierungen und einige ihrer Charakteristika angeben. Ich stimme zu, dass dies weitere Dokumentation benotigt, aber es wird immer noch als Beta betrachtet und ich hasse es, Zeug zu dokumentieren, dass sich noch andern kann oder wird. o Warnung: Die Unterstutzung fur DTDs ist noch recht experimentell. Ich habe kein Referenzhandbuch gelesen, um die Definition jeder Markierung herauszufinden. Ich habe die Makierungsdefinitionen zum Modul hinzugefugt, bis es fur 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. Ich habe DocBook nur mit der SAG (System Administrator Guide) getestet, allerdings ist dieses Dokument sehr gross und sollte den Grossteil der DocBook-Spezialitaten verwenden. Fur DebianDoc habe ich einige der Handbucher vom DDP getestet, aber noch nicht alle. o Im Falle von Dateieinbindungen werden Zeichenkettenreferenzen von Meldungen in PO-Dateien (d.h. Zeilen der Art "#: en/titletoc.sgml:9460") falsch sein. Dies ruhrt daher, dass die Datei vorbearbeitet wird, um die bedingten Einbindungen (d.h. das "" Zeug) und einige Entitaten (wie "&version;") vor onsgmls(1) zu schutzen, da ich sie unverandert im automatisch erstellten Dokument bekommen mochte. Daher wird eine temporare Kopie der Eingabedatei angelegt und alle Anderungen werden daran vorgenommen, bevor sie an onsgmls(1) zur Auswertung ubergeben wird. Damit dies funktioniert, werden die Entitaten, die eine Dateieinbindung durch den Inhalt der angegebenen Datei erbitten, ersetzt (so dass auch geschutzt werden kann, was in einer Unterdatei ist). Allerdings erfolgt derzeit anschliessend nichts, um die Referenzen zu schutzen (d.h. Dateiname und Zeilennummer). Mir ist nicht klar, was hier das beste Vorgehen ist. AUTOREN Dieses Modul ist eine angepasste Version von Sgmlspl (SGML postprocessor for the ONSGMLS parsers), fur den galt: Copyright (C) 1995 David Megginson Die Anpassung fur Po4a wurde erledigt durch: Denis Barbier Martin Quinson (mquinson#debian.org) URHEBERRECHT UND LIZENZ Copyright (C) 1995 David Megginson . Copyright (C) 2002-2005 SPI, Inc. Dieses Programm ist freie Software; Sie konnen es unter den Bedingungen der GPL v2.0 oder neuer (siehe die Datei COPYING) vertreiben und/oder verandern. perl v5.42.0 2025-11-22 LOCALE::PO4A::SGML.3PM(1)