Provided by: po4a_0.52-1_all bug

NAME

       Locale::Po4a::Man - konvertiert Handbuchseiten von/in PO-Dateien

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.

       Locale::Po4a::Man ist ein Modul, um bei der Übersetzung von Dokumentation im Nroff-Format
       (die Sprache der Handbuchseiten) in andere [natürliche] Sprachen zu helfen.

ÜBERSETZEN MIT PO4A::MAN

       Das Modul gibt sich sehr viel Mühe, das Leben von Übersetzern zu erleichtern. Dafür ist
       der Text, der dem Übersetzer vorgelegt wird, keine wörtliche Kopie des Textes, wie er in
       der Handbuchseite vorliegt. Tatsächlich werden die unfeinen Teile des Nroff-Formats
       versteckt, so dass die Übersetzer nicht mit ihnen Unordnung erzeugen können.

   Zeilenumbruch
       Nicht eingerückte Absätze werden für den Übersetzer automatisch umgebrochen. Dies kann zu
       ein paar kleineren Unterschieden in der erstellten Ausgabe führen, da die von Groff
       verwandten Zeilenumbruchregeln nicht sehr klar sind. Beispielsweise werden zwei
       Leerzeichen nach einer Klammer manchmal erhalten.

       Wie dem auch sei, der Unterschied besteht nur in der Position von zusätzlichen Leerzeichen
       in umgebrochenen Absätzen und ich denke, das ist es Wert.

   Schriftangabe
       Die erste Änderung besteht in der Schriftänderungsspezifikation. In Nroff gibt es mehrere
       Arten, anzugeben, ob ein Wort in kleinen Buchstaben, fett oder kursiv geschrieben werden
       soll. In dem zu übersetzenden Text gibt es nur eine Art, ausgeliehen vom POD- (Perl online
       documentation) Format:

       I<Text> -- kursiver Text
           äquivalent zu \fIText\fP or ".I Text"

       B<Text> -- fetter Text
           äquivalent zu \fBText\fP or ".B Text"

       R<text> -- aufrechter Text
           äquivalent zu \fRtext\fP

       CW<text> -- Text mit konstanter Breite
           äquivalent zu \f(CWtext\fP oder ".CW text"

       Bemerkung: Die CW-Schriftart ist nicht für alle Groff-Geräte verfügbar. Es wird empfohlen,
       sie nicht zu verwenden. Sie wird zur Bequemlichkeit bereitgestellt.

   Automatische Zeichenumschreibung
       Po4a schreibt automatisch einige Zeichen um, um die Übersetzung oder die Begutachtung der
       Übersetzung zu vereinfachen. Folgende Zeichen werden umgeschrieben:

       Gedankenstriche
           Bindestriche (-) und Minuszeichen (\-) in Handbuchseiten werden alle zu
           Gedankenstrichen (-) in der PO-Datei umgeschrieben. Dann werden alle Gedankenstriche
           in Roff-Minuszeichen (\-) umgeschrieben, wenn die Übersetzung in das Ausgabedokument
           eingefügt wird.

           Übersetzer können einen Gedankenstrich erzwingen, indem Sie das Roff-Zeichen »\[hy]«
           in ihrer Übersetzung verwenden.

       nicht trennbare Leerzeichen
           Übersetzer können nicht trennbare Leerzeichen in ihren Übersetzungen verwenden. Diese
           nicht trennbaren Leerzeichen (0xA0 in latin1) werden in ein nicht trennbares
           Leerzeichen (»\ «) von Roff umgeschrieben.

       Umschreibung von Anführungszeichen
           `` und '' werden in \*(lq und \*(rq respektive umgeschrieben.

           Um diese Umschreibung zu vermeiden, können Übersetzer ein Roff-Zeichen mit einer
           Breite von Null einfügen (d.h. »\&« oder »\&« respektive verwenden).

   »<« und »>« in Übersetzungen einbauen
       Da diese Zeichen zur Begrenzung von Teilen mit Schriftänderung verwandt werden, können Sie
       sie nicht unverändert verwenden. Verwenden Sie stattdessen E<lt> und E<gt> (wie in POD,
       nochmals).

VON DIESEM MODUL AKZEPTIERTE OPTIONEN

       Dies sind die Modul-spezifischen Optionen:

       debug
           Aktiviert Fehlersuchroutinen für einige interne Mechanismen dieses Moduls. Verwenden
           Sie den Quelltext, um zu sehen, welche Teile damit auf Fehler untersucht werden
           können.

       verbose
           Ausführlichkeit erhöhen

       groff_code
           Diese Option erlaubt es, das Verhalten des Moduls zu verändern, wenn es auf einen
           Abschnitt ».de«, ».ie« oder ».if« trifft. Sie kann die folgenden Werte annehmen:

           fail
               Dies ist der Standardwert. Das Modul wird fehlschlagen, wenn es auf einen
               Abschnitt ».de«, ».ie« oder ».if« trifft.

           verbatim
               gibt an, dass die Abschnitte ».de«, ».ie« und ».if« unverändert vom Original in
               das übersetzte Dokument kopiert werden müssen

           translate
               Gibt an, dass die Abschnitte ».de«, ».ie« und ».if« zur Übersetzung vorgeschlagen
               werden. Sie sollten diese Option nur verwenden, wenn innerhalb dieser Abschnitte
               sich eine übersetzbare Zeichenkette befindet. Andernfalls sollte verbatim
               vorgezogen werden.

       generated
           Diese Option gibt an, dass die Datei automatisch generiert wurde und dass Po4a nicht
           versuchen sollte, herauszufinden, ob die Handbuchseite aus einem anderen Format
           generiert wurde. Dies erlaubt es, Po4a auch für automatisch generierte Handbuchseiten
           einzusetzen. Diese Option erwartet kein Argument.

       mdoc
           Diese Option ist nur für Mdoc-Seiten nützlich.

           Es wählt eine strengere Unterstützung für das Mdoc-Format aus, indem Po4a angewiesen
           wird, den Abschnitt »NAME« nicht zu übersetzen. Mdoc-Seiten, deren »NAME«-Abschnitt
           übersetzt wurde, erstellen keine Kopf- oder Fußzeilen.

           Entsprechend der Groff-Mdoc-Seite, sind die Abschnitte »NAME«, »SYNOPSIS« (im
           deutschen »ÜBERSICHT«) und »DESCRIPTION« (»BESCHREIBUNG«) verpflichtend. Es gibt keine
           bekannten Probleme mit übersetzten SYNPOSIS- oder DESCRIPTION-Abschnitten, Sie können
           aber diese Abschnitte auch in dieser Art spezifizieren:
            -o mdoc=NAME,SYNOPSIS,DESCRIPTION

           Dieses Mdoc-Problem kann auch mit einem Addendum der folgenden Art behoben werden:
            PO4A-HEADER:mode=before;position=^.Dd
            .TH DOCUMENT_TITLE 1 "Monat Tag, Jahr" OS "Abschnittname"

       Die folgenden Optionen erlauben es, das Verhalten eines neuen Makros (das mit einem
       .de-Konstrukt definiert wurde) oder eines von Po4a nicht unterstützten Makros festzulegen.
       Sie erwarten als Argument eine durch Kommata getrennte Liste von Makros, beispielsweise:

        -o noarg=FO,OB,AR -o translate_joined=BA,ZQ,UX

       Hinweis: Falls ein Makro von Po4a nicht unterstützt wird und falls Sie denken, dass dies
       ein Standard-Roff-Makro ist, dann sollten Sie es dem Po4a-Entwicklungsteam mitteilen.

       untranslated
           untranslated gibt an, dass dieses Makro (und seine Argumente) nicht übersetzt werden
           müssen.

       noarg
           noarg verhält sich wie untranslated, außer dass Po4a überprüfen wird, dass kein
           Argument zu diesem Makro hinzugefügt wird.

       translate_joined
           translate_joined zeigt an, dass Po4a die Argumente dieses Makros zur Übersetzung
           vorschlagen muss.

       translate_each
           Mit translate_each werden die Argumente auch zur Übersetzung vorgeschlagen, außer dass
           jedes separat übersetzt wird.

       no_wrap
           Diese Option akzeptiert als Argument eine Komma-separierte Liste von
           Anfang:Ende-Paaren, wobei Anfang und Ende Befehle sind, die den Anfang und das Ende
           eines Abschnitts, der nicht neu umgebrochen werden soll, abgrenzen.

           Hinweis: Es erfolgt keine Überprüfung, um sicherzustellen, dass der Ende-Befehl auf
           einen Anfang-Befehl passt, jeder Beendigungsbefehl beendet den »no_wrap«-Modus. Falls
           ein Anfang- (respektive ein Ende-)Makro existiert, für das kein Ende (respektive
           Anfang) existiert, können Sie ein existierendes Ende (wie fi) oder Anfang (wie nf) als
           Gegenstück angeben. Diese Makros (und ihre Argumente) werden nicht übersetzt.

       inline
           Diese Option gibt eine Komma-separierte Liste von Makros an, die den aktuellen Absatz
           nicht trennen dürfen. Die zu übersetzende Zeichenkette wird dann foo <.bar baz qux>
           quux enthalten, wobei bar der Befehl ist, der in der Zeile bleiben soll und baz qux
           seine Argumente sind.

       unknown_macros
           Diese Option zeigt an, wie sich Po4a verhalten soll, wenn ein unbekanntes Makro
           gefunden wird. Standardmäßig schlägt Po4a mit einer Warnung fehl. Diese Option kann
           die folgenden Werte annehmen: failed (der Standardwert), untranslated, noarg,
           translate_joined oder translate_each (die Erklärung dieser Werte ist weiter oben
           erfolgt).

ERSTELLEN VON PO4A::MAN-KONFORMEN HANDBUCHSEITEN

       Dieses Modul ist noch sehr begrenzt und wird dies immer bleiben, da es kein echter Nroff-
       Interpreter ist. Es wäre möglich, einen echten Nroff-Interpreter zu erstellen, um Autoren
       die Verwendung aller existierender Makros (und sogar die Definition neuer Makros) in ihren
       Seiten zu erlauben, aber wir wollten das nicht. Es wäre zu schwierig und wir dachten, es
       wäre nicht notwendig. Wir glauben, dass Handbuchseitenautoren, die ihre Werke übersetzt
       bekommen möchten, sich anpassen müssen, um die Arbeit der Übersetzer zu erleichtern.

       Daher hat der Parser in Po4a einige bekannte Einschränkungen, die wir nicht planen, zu
       korrigieren und die einige Fallstricke enthalten, die Sie vermeiden sollten, falls Sie
       möchten, dass Übersetzer sich um Ihre Dokumentation kümmern.

   Programmieren Sie nicht in Nroff
       Nroff ist eine komplette Programmiersprache mit Makrodefinitionen, Bedingungen und so
       weiter. Da dieser Parser kein vollständiger Nroff-Interpreter ist, wird er bei Seiten
       fehlschlagen, die diese Funktionalitäten verwenden (es gibt rund 200 solche Seiten auf
       meiner Kiste).

   Verwenden Sie den Makrosatz »plain«
       Es gibt noch einige Makros, die von po4a::man nicht unterstützt werden. Das passiert nur,
       da ich keine Information über sie gefunden habe. Es folgt eine Liste von nicht
       unterstützen Makros, die ich auf meiner Kiste gefunden habe. Beachten Sie, dass diese
       Liste nicht abschließend ist, da das Programm beim ersten nicht unterstützten Makro
       abbricht. Falls Sie über einige dieser Makros Informationen haben, werde ich gerne die
       Unterstützung hierfür hinzufügen. Aufgrund dieser Makros sind rund 250 Seiten auf meinem
       Rechner nicht für po4a::man verfügbar.

        .. ." .AT             .b              .bank
        .BE              ..br            .Bu             .BUGS           .BY
        .ce              .dbmmanage      .do                             .En
        .EP              .EX             .Fi             .hw             .i
        .Id              .l              .LO             .mf
        .N               .na             .NF             .nh             .nl
        .Nm              .ns             .NXR            .OPTIONS        .PB
        .pp              .PR             .PRE            .PU             .REq
        .RH              .rn             .S<             .sh             .SI
        .splitfont       .Sx             .T              .TF             .The
        .TT              .UC             .ul             .Vb             .zZ

   Text vor Po4a verstecken
       Manchmal weiß der Autor, dass einige Teile nicht übersetzbar sind und daher von Po4a nicht
       ausgelesen werden sollten. Beispielsweise könnte eine Option other als Argument
       akzeptieren und other könnte zusätzlich als letztes Argument in einer Liste auftauchen. Im
       ersten Fall sollte other nicht übersetzt werden, im zweiten Falls dagegen schon (z.B. ins
       Deutsche als »sonstiges«).

       In diesem Fall kann der Autor durch spezielle Groff-Konstrukte Po4a anweisen, bestimmte
       Zeichenketten nicht auszulesen:

        .if !'po4a'hide' .B other

       (dies benötigt die Option -o groff_code=verbatim)

       Ein neues Makro kann auch zur Automatisierung hiervon verwandt werden:
        .de IR_untranslated
        . IR \\$@
        ..

        .IR_untranslated \-q ", " \-\-quiet

       (dies benötigt die Option -o groff_code=verbatim und -o untranslated=IR_untranslated; mit
       diesem Konstrukt wird die Bedingung .if !'po4a'hide' streng genommen nicht benötigt, da
       Po4a nicht die Interna der Makrodefinition auswerten wird)

       oder durch Verwendung eines Alias:
        .als IR_untranslated IR

        .IR_untranslated \-q ", " \-\-quiet

       (dies benötigt die Option -o untranslated=als,IR_untranslated)

   Schlussfolgerungen
       Um diesen Abschnitt zusammenzufassen: Halten Sie es einfach und versuchen Sie nicht, beim
       Verfassen Ihrer Handbuchseiten überschlau zu sein. In Nroff sind viele Dinge möglich und
       werden nicht von diesem Parser unterstützt. Versuchen Sie zum Beispiel nicht, mit \c
       herumzumurksen, um die Textverarbeitung zu unterbrechen (wie es 40 Seiten auf der Kiste
       des Verfassers tun). Oder stellen Sie sicher, dass Sie die Makro-Argumente auf die gleiche
       Zeile wie das Makro selbst legen. Es ist bekannt, dass dies in Nroff gültig ist, würde
       aber die Handhabung durch den Parser zu sehr komplizieren.

       Natürlich wäre eine weitere Möglichkeit, ein anderes, übersetzerfreundlicheres Format zu
       benutzen (wie POD unter Benutzung von po4a::pod oder einem aus der XML-Familie, wie SGML),
       aber dank po4a::man ist das nicht mehr nötig. Davon abgesehen, falls das Quellformat Ihrer
       Dokumentation POD oder XML ist, könnte es klug sein, das Quellformat und nicht das
       erzeugte zu übersetzen. In den meisten Fällen wird po4a::man erzeugte Seiten ermitteln und
       ein Warnung ausgeben. Es wird sogar die Verarbeitung der erzeugten Seiten verweigern, da
       diese Seiten perfekt durch po4a::pod gehandhabt werden und da ihr Nroff-Gegenstück eine
       große Menge neuer Makros definiert, für die der Verfasser keine Unterstützung schreiben
       möchte. Auf dessen Kiste wurden 1432 der 4323 Seiten aus POD erzeugt und werden von
       po4a::man ignoriert.

       In den meisten Fällen wird po4a::man das Problem feststellen und die Verarbeitung der
       Seite verweigern und eine angepasste Nachricht ausgeben. In einigen seltenen Fällenwird
       das Programm vollständig ohne Warnung ausgeführt, die Ausgabe ist aber falsch. Solche
       Fälle werden »Fehler« genannt. ;) Falls Sie auf einen solchen Fall stoßen, stellen Sie
       sicher, dass Sie dies melden, wenn möglich zusammen mit einer Fehlerbehebung …

STATUS DIESES MODULS

       Dieses Module kann für die meisten existierenden Handbuchseiten benutzt werden.

       Einige Tests werden regelmäßig auf Linux-Kisten ausgeführt:

       •   ein Drittel Seiten werden abgelehnt, da sie in einem anderen durch Po4a unterstützten
           Format erzeugt wurde (z.B. POD or SGML).

       •   Zehn Prozent der verbleibenden Seiten werden mit einem Fehler zurückgewiesen (z.B.
           wird ein Groff-Makro nicht unterstützt).

       •   Dann wird weniger als ein Prozent der Seiten stillschweigend durch Po4a akzeptiert,
           aber mit wesentlichen Problemen (d.h. fehlenden Wörtern oder neu eingefügten Wörtern),

       •   Die anderen Seiten werden üblicherweise ohne Unterschiede gehandhabt, die wichtiger
           sind als Leerzeichenunterschiede oder neue Zeilenaufteilung (Schriftprobleme in
           weniger als zehn Prozent der verarbeiteten Seiten).

SIEHE AUCH

       Locale::Po4a::Pod(3pm), Locale::Po4a::TransTractor(3pm), po4a(7)

AUTOREN

        Denis Barbier <barbier@linuxfr.org>
        Nicolas François <nicolas.francois@centraliens.net>
        Martin Quinson (mquinson#debian.org)

URHEBERRECHT UND LIZENZ

       Copyright 2002-2008 SPI, inc.

       Dieses Programm ist freie Software; Sie können es unter den Bedingungen der GPL (siehe die
       Datei COPYING) vertreiben und/oder verändern.