Herbaer::Translate::NameReplacer


Zweck

Möglicherweise erkennt ein Übersetzer einen Namen nicht als Namen, sondern versucht, ihn als ein (deutsches) Wort mit einer Bedeutung zu übersetzen. Dieses Modul ersetzt Namen vor der Übersetzung durch sinnfreie Zeichenfolgen, die im übersetzten Text unverändert erscheinen. Die Zeichenfolgen werden dann in der Übersetzung durch die Namen ersetzt.

Als Name gelten Textteile, die auf einen regulären Ausdruck passen. Abhängig von den Sprachen werden Listen regulärer Ausdrücke aus Textdateien („Namensdateien”) gelesen. Die Namensdateien werden zeilenweise verarbeitet. Eine Zeile, die mit dem Zeichen # beginnt, ist ein Kommentar. Zeilen, die nur aus Leerzeichen bestehen, werden ignoriert. Von allen anderen Zeilen werden Leerzeichen am Anfang und am Ende der Zeile entfernt. Die verbleibende Zeichenfolge wird als regulärer Ausdruck interpretiert. Die regulären Ausdrücke werden in der Reihenfolge der Datei mit dem zu übersetzenden Text abgeglichen. Ein passender Textteil (Name) wird durch die Zeichenfolge XKCnCKX (Platzhalter) ersetzt. n steht für einen fortlaufenden Zähler. Jeder reguläre Ausdruck wird so oft mit dem Text abgeglichen, bis kein passender Textteil gefunden wird. Die Platzhalter (XKCnCKX) erscheinen unverändert im übersetzten Text. Im entsprechenden Namen werden Folgen aufeinanderfolgender Leerzeichen durch ein einzelnes Leerzeichen ersetzt. Dann wird der Name an Stelle des Platzhalters in der Übersetzung eingesetzt.

Für Übersetzungen aus der Sprache SRCLANG in die Sprache TARGETLANG werden der Reihe nach die Namensdateien mit dem Dateinamen SRCLANG_TARGETLANG, SRCLANG und default im angegebenen Verzeichnis (s. new) gesucht. Die erste gefundene Datei bestimmt die Liste der regulären Ausdrücke.

NameReplacer.beispiel ist ein Beispiel für eine Namensdatei.

Funktionen

$translator = Herbaer::Translate::NameReplacer->new ($directory, $translator_name, $debug)

Ergibt ein neues Übersetzer-Objekt. Diese Funktion wird normalerweise nicht direkt aufgerufen, sondern von Herbaer::Translate::new (s. Translate.pm (Quelltext)).

$directory ist der Pfad des Verzeichnisses, in dem die Namensdateien (mit Listen regulärer Ausdrücke) gesucht werden.

$translator_name ist die Kennung des „beauftragten” Übersetzers, s. Herbaer::Translate (Translate.pm (Quelltext)).

Ein logisch wahrer Wert des optionalen Parameters $debug führt zu Meldungen nach STDERR.

$translator->translate ($text, $quellsprache, $zielsprache)

Ergibt die Übersetzung des Textes $text aus der Sprache $quellsprache in die Sprache $zielsprache nach der Ersetzung von Namen im Quelltext $text durch Platzhalter und der „Rückersetzung” der Platzhalter im übersetzten Text durch die Namen.

$translator->learn ($text, $quellsprache, $zielsprache, $uebersetzung)

Ruft die Methode learn des „beauftragten” Übersetzers auf.

$translator->finish ()

Ruft die Methode finish des „beauftragten” Übersetzers auf.

$translator->translator_name ()
Ergibt nr_TRANSTOR_NAME. TRANSTOR_NAME steht für das Ergebnis der Methode translator_name des „beauftragten” Übersetzers.