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.
$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
in die Sprache mit der Kennung SRCLANG
werden zunächst die Einträge in der Datei TARGETLANG
, dann die Einträge in der Datei SRCLANG
_TARGETLANG
, gelesen.SRCLANG
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.
finish
()Ruft die Methode finish
des „beauftragten” Übersetzers auf.
translator_name
()wr_TRANSTOR_NAME
. TRANSTOR_NAME
steht für das Ergebnis der Methode translator_name
des „beauftragten” Übersetzers.