Herbaer::Translate::WordReplacer


Zweck

Es kann (deutsche) Wörter geben, die der Übersetzer nicht versteht. Das Wort erscheint dann mehr oder weniger unverändert in der Zielsprache. Möglicherweise ist die Großschreibung geändert, oder anstelle von Umlauten oder Buchstaben mit Akzenten erscheinen die Grund-Buchstaben. Dieses Modul versucht, das Wort durch ein anderes Wort zu ersetzen, ohne den Sinn wesentlich zu ändern, damit der Übersetzer den Text übersetzen kann. Die wesentliche Arbeit dieses Moduls liegt also in der Funktion translate.

Dieses Modul verarbeitet Listen von Paaren von regulären Ausdrücken und Ersetzungsausdrücken. Wenn ein ein regulärer Ausdruck zu einem übersetzten Text und zum originalen Text in der Quellsprache passt, dann werden im Text der Quellsprache die Teile, die der reguläre Ausdruck beschreibt, durch den Ersetzungsausdruck ersetzt. Der Ersetzungsausdruck kann Platzhalter der Form ${n} für das n-te Teilmuster im Text in der Quellsprache enthalten. Der modifizierte Text wird neu übersetzt. Wenn der reguläre Ausdruck noch immer zu dem neu übersetzten Text passt, werden die früheren Versionen des Quelltextes und der Übersetzung wiederhergestellt. Die Verarbeitung eines Listeneintrags ergibt eines von drei möglichen Ergebnistypen:

In allen drei Fällen wird anschließend der nächste Listeneintrag verarbeitet, bis die Liste abgearbeitet ist.

Eine besondere Rolle hat der Text /RETURN als Ersetzungstext. Wenn der reguläre Ausdruck nicht zur Übersetzung passt, wird die Übersetzung als Ergebnis der Funktion translate zurückgegeben. Die weitere Listeneinträge werden nicht mehr verarbeitet. Wenn der reguläre Ausdruck zur Übersetzung passt, wird die Verarbeitung mit dem nächsten Listeneintrag fortgesetzt.

Funktionen

$translator = Herbaer::Translate::WordReplacer->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 Dateien mit den regulären Ausdrücken und Ersetzungstexten gesucht werden. Für die Übersetzung eines Textes aus der Sprache mit der Kennung SRCLANG in die Sprache mit der Kennung TARGETLANG werden zunächst die Einträge in der Datei SRCLANG_TARGETLANG, dann die Einträge in der Datei SRCLANG, gelesen.

Die Dateien im Verzeichnis $directory sind einfache Textdateien, die zeilenweise gelesen werden. Zeilen, die mit dem Zeichen # beginnen oder nur Leerzeichen enthalten, sind Kommentare. Andere Zeilen bestehen aus beliebig vielen Leerzeichen am Zeilenanfang, dem regulären Ausdruck aus Nicht-Leerzeichen, beliebig vielen Leerzeichen und dem Ersetzungstext, gefolgt von beliebig vielen Leerzeichen und dem Zeilenende. Ein Beispiel ist die Datei WordReplacer.beispiel.

$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 oder dem Versuch der Ersetzung von Teilen des Quelltextes abhängig von den Sprachen gemäß den Ersetzungsdateien (s. new, Parameter $directory).

$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 wr_TRANSTOR_NAME. TRANSTOR_NAME steht für das Ergebnis der Methode translator_name des „beauftragten” Übersetzers.