Damit nicht zu viel Zeit benötigt wird, Übersetzer-Prozesse zu starten und zu beenden, kann dieses Modul mit einem „persistenten” Übersetzerprozess. über benannte Pipes kommunizieren. Das Programm pipe_srv.pl
(Quelltext) startet den Übersetzerprozess, das Programm pipe_srv_stop.pl
(Quelltext) beendet den Übersetzerprozess.
Die Methode _send_request
dieses Moduls Herbaer::Translate::Pipe
(Datei Pipe.pm
) sendet einen einzeiligen Befehl an den Übersetzer über die Pipe
und liest die Antwort aus der Pipe BASIS
/request
. Die Parameter einer Methode entsprechen Feldern, die durch einen Doppelpunkt getrennt werden. Der Doppelpunkt und das Zeilenendezeichen innerhalb von Parameterwerten werden daher anders kodiert („geschützt”). Dazu dient die Funktion BASIS
/response_encode
. Die Funktion _decode
macht die Kodierung durch _encode
rückgängig.
$translator = Herbaer::Translate::Pipe
->new
($basis
, $trname
, $debug
)
Ergibt ein neues Übersetzer-Objekt. Diese Funktion wird normalerweise nicht direkt aufgerufen, sondern von Herbaer::Translate::new
(s. Translate.pm
(Quelltext)).
Der Dateipfad für eine Anfrage an den Übersetzerprozess ist
, der Dateipfad der Antwort ist $base
/request
.$base
/response
$trname
ist die Kennung des Übersetzers, den der Übersetzerprozess verwenden soll. Dem Übersetzerprozess wird die Anfrage trname:
gesendet.$trname
Ein logisch wahrer Wert des optionalen Parameters $debug
führt zu Meldungen nach STDERR.
$translator->translate
($text, $quellsprache, $zielsprache)
Sendet die Anfrage translate:
an den Übersetzer. Der sendet die kodierte Übersetzung als Antwort.$text
:$quellsprache
:$zielsprache
$translator->learn
($text, $quellsprache, $zielsprache, $uebersetzung)
Sendet die Anfrage learn:
an den Übersetzerprozess und gibt dessen Antwort zurück.$text
:$quellsprache
:$zielsprache
:$uebersetzung
finish
()Sendet die Anfrage finish
an den Übersetzer und gibt dessen Antwort zurück.
trname
($trname)Sendet die Anfrage trname:
an den Übersetzerprozess und gibt dessen Antwort zurück. Der Übersetzerprozess soll ab jetzt den Übersetzer mit der Kennung $trname
$trname
verwenden.
translator_name
()Sendet die Anfrage translator_name
an den Übersetzerprozess. Wenn dessen Antwort mit der Zeichenfolge OK
beginnt, werden diese Zeichenfolge und mögliche weitere Leerzeichen am Anfang der Antwort durch pipe_
ersetzt. Die resultierende Zeichenfolge wird als Ergebnis zurückgegeben. Wenn die Anwort des Übersetzerprosesses nicht mit OK
beginnt, wird pipe_error
zurückgegeben.
stop
()Sendet die Anfrage stop
an den Übersetzerprozess und gibt dessen Antwort zurück. Der Übersetzerprozess soll sich beenden.