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 XKC
(Platzhalter) ersetzt. n
CKXn
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 (XKC
) 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.n
CKX
Für Übersetzungen aus der Sprache
in die Sprache SRCLANG
werden der Reihe nach die Namensdateien mit dem Dateinamen TARGETLANG
, SRCLANG
_TARGETLANG
und SRCLANG
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.
$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.
finish
()Ruft die Methode finish
des „beauftragten” Übersetzers auf.
translator_name
()nr_TRANSTOR_NAME
. TRANSTOR_NAME
steht für das Ergebnis der Methode translator_name
des „beauftragten” Übersetzers.