The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

App::Greple::xlate - Übersetzungsunterstützungsmodul für greple

SYNOPSIS

greple -Mxlate -e ENGINE --xlate pattern target-file

greple -Mxlate::deepl --xlate pattern target-file

VERSION

Version 0.36

DESCRIPTION

Greple xlate Modul findet gewünschte Textblöcke und ersetzt sie durch den übersetzten Text. Derzeit sind die Module DeepL (deepl.pm) und ChatGPT (gpt3.pm) als Backend-Engine implementiert. Experimentelle Unterstützung für gpt-4 und gpt-4o ist ebenfalls enthalten.

Wenn Sie normale Textblöcke in einem Dokument im Perl-Pod-Stil übersetzen möchten, verwenden Sie den greple Befehl mit xlate::deepl und perl Modul wie folgt:

greple -Mxlate::deepl -Mperl --pod --re '^(\w.*\n)+' --all foo.pm

In diesem Befehl bedeutet das Muster ^(\w.*\n)+, dass aufeinanderfolgende Zeilen mit einem alphanumerischen Buchstaben beginnen. Dieser Befehl zeigt den zu übersetzenden Bereich hervorgehoben an. Die Option --all wird verwendet, um den gesamten Text zu erzeugen.

Fügen Sie dann die --xlate Option hinzu, um den ausgewählten Bereich zu übersetzen. Dann wird es die gewünschten Abschnitte finden und sie durch die Ausgabe des deepl Befehls ersetzen.

Standardmäßig wird der ursprüngliche und der übersetzte Text im "Konfliktmarker"-Format ausgegeben, das mit git(1) kompatibel ist. Mit dem ifdef Format können Sie den gewünschten Teil mit dem unifdef(1) Befehl leicht erhalten. Das Ausgabeformat kann mit der --xlate-format Option angegeben werden.

Wenn Sie den gesamten Text übersetzen möchten, verwenden Sie die --match-all Option. Dies ist eine Abkürzung, um das Muster (?s).+ anzugeben, das den gesamten Text übereinstimmt.

Daten im Konfliktmarker-Format können im Side-by-Side-Stil mit dem sdif Befehl und der -V Option angezeigt werden. Da es keinen Sinn macht, auf einer pro-Zeichen-Basis zu vergleichen, wird die --no-cdif Option empfohlen. Wenn Sie den Text nicht einfärben müssen, geben Sie --no-textcolor (oder --no-tc) an.

sdif -V --no-tc --no-cdif data_shishin.deepl-EN-US.cm

NORMALIZATION

Die Verarbeitung erfolgt in angegebenen Einheiten, aber im Falle einer Sequenz mehrerer Zeilen mit nicht leerem Text werden sie zusammen in eine einzige Zeile umgewandelt. Dieser Vorgang wird wie folgt durchgeführt:

  • Entfernen Sie Leerzeichen am Anfang und Ende jeder Zeile.

  • Wenn eine Zeile mit einem vollbreiten Satzzeichen endet, verketten Sie sie mit der nächsten Zeile.

  • Wenn eine Zeile mit einem vollbreiten Zeichen endet und die nächste Zeile mit einem vollbreiten Zeichen beginnt, verketten Sie die Zeilen.

  • Wenn entweder das Ende oder der Anfang einer Zeile kein vollbreites Zeichen ist, verketten Sie sie, indem Sie ein Leerzeichen einfügen.

Cache-Daten werden basierend auf dem normalisierten Text verwaltet, sodass selbst wenn Änderungen vorgenommen werden, die die Normalisierungsergebnisse nicht beeinflussen, die zwischengespeicherten Übersetzungsdaten weiterhin wirksam sind.

Dieser Normalisierungsprozess wird nur für das erste (0.) und gerade nummerierte Muster durchgeführt. Wenn also zwei Muster wie folgt angegeben sind, wird der Text, der dem ersten Muster entspricht, nach der Normalisierung verarbeitet, und es wird kein Normalisierungsprozess auf den Text angewendet, der dem zweiten Muster entspricht.

greple -Mxlate -E normalized -E not-normalized

Verwenden Sie daher das erste Muster für Text, der verarbeitet werden soll, indem mehrere Zeilen in eine einzige Zeile kombiniert werden, und verwenden Sie das zweite Muster für vorformatierten Text. Wenn es keinen Text gibt, der mit dem ersten Muster übereinstimmt, verwenden Sie ein Muster, das nichts übereinstimmt, wie (?!).

MASKING

Gelegentlich gibt es Teile von Text, die Sie nicht übersetzen möchten. Zum Beispiel Tags in Markdown-Dateien. DeepL schlägt vor, in solchen Fällen den Teil des Textes, der ausgeschlossen werden soll, in XML-Tags umzuwandeln, zu übersetzen und dann nach Abschluss der Übersetzung wiederherzustellen. Um dies zu unterstützen, ist es möglich, die Teile anzugeben, die von der Übersetzung ausgeschlossen werden sollen.

--xlate-setopt maskfile=MASKPATTERN

Dies interpretiert jede Zeile der Datei `MASKPATTERN` als regulären Ausdruck, übersetzt übereinstimmende Zeichenfolgen und stellt sie nach der Verarbeitung wieder her. Zeilen, die mit # beginnen, werden ignoriert.

Diese Schnittstelle ist experimentell und kann in Zukunft Änderungen unterliegen.

OPTIONS

--xlate
--xlate-color
--xlate-fold
--xlate-fold-width=n (Default: 70)

Rufen Sie den Übersetzungsprozess für jeden übereinstimmenden Bereich auf.

Ohne diese Option verhält sich greple wie ein normaler Suchbefehl. So können Sie überprüfen, welcher Teil der Datei Gegenstand der Übersetzung sein wird, bevor Sie die eigentliche Arbeit ausführen.

Das Ergebnis des Befehls wird auf die Standardausgabe ausgegeben, leiten Sie es also bei Bedarf in eine Datei um oder ziehen Sie in Betracht, das App::Greple::update Modul zu verwenden.

Die Option --xlate ruft die --xlate-color Option mit der --color=never Option auf.

Mit der --xlate-fold Option wird der konvertierte Text nach der angegebenen Breite gefaltet. Die Standardbreite beträgt 70 und kann mit der --xlate-fold-width Option festgelegt werden. Vier Spalten sind für den Laufbetrieb reserviert, sodass jede Zeile maximal 74 Zeichen enthalten kann.

--xlate-engine=engine

Gibt die zu verwendende Übersetzungsmaschine an. Wenn Sie das Engine-Modul direkt angeben, wie -Mxlate::deepl, müssen Sie diese Option nicht verwenden.

Zurzeit sind die folgenden Engines verfügbar.

  • deepl: DeepL API

  • gpt3: gpt-3.5-turbo

  • gpt4: gpt-4-turbo

  • gpt4o: gpt-4o-mini

    gpt-4o's Schnittstelle ist instabil und kann im Moment nicht garantiert korrekt funktionieren.

--xlate-labor
--xlabor

Anstatt die Übersetzungsmaschine aufzurufen, wird von Ihnen erwartet, dass Sie arbeiten. Nach der Vorbereitung des zu übersetzenden Textes werden sie in die Zwischenablage kopiert. Sie werden erwartet, dass Sie sie in das Formular einfügen, das Ergebnis in die Zwischenablage kopieren und die Eingabetaste drücken.

--xlate-to (Default: EN-US)

Geben Sie die Zielsprache an. Sie können verfügbare Sprachen mit dem deepl languages Befehl abrufen, wenn Sie die DeepL Engine verwenden.

--xlate-format=format (Default: conflict)

Geben Sie das Ausgabeformat für den Original- und den übersetzten Text an.

Die folgenden Formate, die nicht xtxt sind, gehen davon aus, dass der zu übersetzende Teil eine Sammlung von Zeilen ist. Tatsächlich ist es möglich, nur einen Teil einer Zeile zu übersetzen, und die Angabe eines Formats, das nicht xtxt ist, wird keine sinnvollen Ergebnisse liefern.

conflict, cm

Original- und konvertierter Text werden im git(1) Konfliktmarkierungsformat ausgegeben.

<<<<<<< ORIGINAL
original text
=======
translated Japanese text
>>>>>>> JA

Sie können die Originaldatei mit dem nächsten sed(1) Befehl wiederherstellen.

sed -e '/^<<<<<<< /d' -e '/^=======$/,/^>>>>>>> /d'
ifdef

Original- und konvertierter Text werden im cpp(1) #ifdef Format ausgegeben.

#ifdef ORIGINAL
original text
#endif
#ifdef JA
translated Japanese text
#endif

Sie können nur japanischen Text mit dem unifdef Befehl abrufen:

unifdef -UORIGINAL -DJA foo.ja.pm
space
space+

Original and converted text are printed separated by single blank line. Der Original- und konvertierte Text wird durch eine einzelne Leerzeile getrennt. For space+, it also outputs a newline after the converted text. Für space+ wird auch eine neue Zeile nach dem konvertierten Text ausgegeben.

xtxt

Wenn das Format xtxt (übersetzter Text) oder unbekannt ist, wird nur der übersetzte Text ausgegeben.

--xlate-maxlen=chars (Default: 0)

Geben Sie die maximale Länge des Textes an, der auf einmal an die API gesendet werden soll. Der Standardwert ist für den kostenlosen DeepL-Kontodienst festgelegt: 128K für die API (--xlate) und 5000 für die Zwischenablage-Schnittstelle (--xlate-labor). Möglicherweise können Sie diese Werte ändern, wenn Sie den Pro-Service verwenden.

--xlate-maxline=n (Default: 0)

Geben Sie die maximale Anzahl von Zeilen an, die auf einmal an die API gesendet werden sollen.

Setzen Sie diesen Wert auf 1, wenn Sie eine Zeile nach der anderen übersetzen möchten. Diese Option hat Vorrang vor der --xlate-maxlen Option.

--[no-]xlate-progress (Default: True)

Sehen Sie das Übersetzungsergebnis in Echtzeit in der STDERR-Ausgabe.

--match-all

Setzen Sie den gesamten Text der Datei als Zielbereich.

CACHE OPTIONS

Das xlate Modul kann den zwischengespeicherten Text der Übersetzung für jede Datei speichern und ihn vor der Ausführung lesen, um die Überlastung durch Anfragen an den Server zu vermeiden. Mit der Standard-Cache-Strategie auto werden Cache-Daten nur dann beibehalten, wenn die Cache-Datei für die Zieldatei existiert.

--cache-clear

Die --cache-clear Option kann verwendet werden, um das Cache-Management zu initiieren oder um alle vorhandenen Cache-Daten zu aktualisieren. Sobald diese Option ausgeführt wird, wird eine neue Cache-Datei erstellt, wenn keine existiert, und anschließend automatisch verwaltet.

--xlate-cache=strategy
auto (Default)

Behalten Sie die Cache-Datei bei, wenn sie existiert.

create

Erstellen Sie eine leere Cache-Datei und beenden Sie.

always, yes, 1

Behalten Sie den Cache trotzdem bei, solange das Ziel eine normale Datei ist.

clear

Löschen Sie zuerst die Cache-Daten.

never, no, 0

Verwenden Sie niemals die Cache-Datei, auch wenn sie existiert.

accumulate

Im Standardverhalten werden ungenutzte Daten aus der Cache-Datei entfernt. Wenn Sie sie nicht entfernen und in der Datei behalten möchten, verwenden Sie accumulate.

COMMAND LINE INTERFACE

Sie können dieses Modul ganz einfach über die Befehlszeile mit dem im Distribution enthaltenen xlate Befehl verwenden. Siehe die xlate Hilfeinformationen zur Verwendung.

Der xlate Befehl funktioniert in Verbindung mit der Docker-Umgebung, sodass Sie ihn verwenden können, auch wenn Sie nichts installiert haben, solange Docker verfügbar ist. Verwenden Sie die -D oder -C Option.

Außerdem, da Makefiles für verschiedene Dokumentstile bereitgestellt werden, ist die Übersetzung in andere Sprachen ohne spezielle Spezifikation möglich. Verwenden Sie die -M Option.

Sie können auch die Docker- und Make-Optionen kombinieren, sodass Sie Make in einer Docker-Umgebung ausführen können.

Ein Befehl wie xlate -GC startet eine Shell mit dem aktuellen Arbeits-Git-Repository eingebunden.

Lesen Sie den japanischen Artikel im "SEE ALSO" Abschnitt für Details.

    xlate [ options ] -t lang file [ greple options ]
	-h   help
	-v   show version
	-d   debug
	-n   dry-run
	-a   use API
	-c   just check translation area
	-r   refresh cache
	-s   silent mode
	-e # translation engine (default "deepl")
	-p # pattern to determine translation area
	-w # wrap line by # width
	-o # output format (default "xtxt", or "cm", "ifdef")
	-f # from lang (ignored)
	-t # to lang (required, no default)
	-m # max length per API call
	-l # show library files (XLATE.mk, xlate.el)
        --   terminate option parsing
    Make options
	-M   run make
	-n   dry-run
    Docker options
	-G   mount git top-level directory
	-B   run in non-interactive (batch) mode
	-R   mount read-only
	-E * specify environment variable to be inherited
	-I * specify altanative docker image (default: tecolicom/xlate:version)
	-D * run xlate on the container with the rest parameters
	-C * run following command on the container, or run shell

    Control Files:
	*.LANG    translation languates
	*.FORMAT  translation foramt (xtxt, cm, ifdef)
	*.ENGINE  translation engine (deepl or gpt3)

EMACS

Laden Sie die xlate.el Datei, die im Repository enthalten ist, um den xlate Befehl aus dem Emacs-Editor zu verwenden. Die xlate-region Funktion übersetzt den angegebenen Bereich. Die Standardsprache ist EN-US und Sie können die Sprache angeben, indem Sie sie mit einem Präfix-Argument aufrufen.

ENVIRONMENT

DEEPL_AUTH_KEY

Setzen Sie Ihren Authentifizierungsschlüssel für den DeepL-Dienst.

OPENAI_API_KEY

OpenAI Authentifizierungsschlüssel.

INSTALL

CPANMINUS

$ cpanm App::Greple::xlate

TOOLS

Sie müssen die Befehlszeilentools für DeepL und ChatGPT installieren.

https://github.com/DeepLcom/deepl-python

https://github.com/tecolicom/App-gpty

SEE ALSO

App::Greple::xlate

App::Greple::xlate::deepl

App::Greple::xlate::gpt3

https://hub.docker.com/r/tecolicom/xlate

https://github.com/DeepLcom/deepl-python

DeepL Python-Bibliothek und CLI-Befehl.

https://github.com/openai/openai-python

OpenAI Python-Bibliothek

https://github.com/tecolicom/App-gpty

OpenAI Befehlszeilenschnittstelle

App::Greple

Siehe das greple Handbuch für Details zum Zieltextmuster. Verwenden Sie die --inside, --outside, --include, --exclude Optionen, um den Übereinstimmungsbereich einzuschränken.

App::Greple::update

Sie können das -Mupdate Modul verwenden, um Dateien basierend auf dem Ergebnis des greple Befehls zu modifizieren.

App::sdif

Verwenden Sie sdif, um das Konfliktmarkierungsformat nebeneinander mit der -V Option anzuzeigen.

ARTICLES

AUTHOR

Kazumasa Utashiro

LICENSE

Copyright © 2023-2024 Kazumasa Utashiro.

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.