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.3401
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 nichtxtxt
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
-
Original- und konvertierter Text werden durch eine einzelne Leerzeile getrennt 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
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
https://qiita.com/kaz-utashiro/items/1c1a51a4591922e18250
Greple-Modul zur Übersetzung und Ersetzung nur der notwendigen Teile mit der DeepL API (auf Japanisch)
https://qiita.com/kaz-utashiro/items/a5e19736416ca183ecf6
Dokumente in 15 Sprachen mit dem DeepL API Modul generieren (auf Japanisch)
https://qiita.com/kaz-utashiro/items/1b9e155d6ae0620ab4dd
Automatische Übersetzung Docker-Umgebung mit DeepL API (auf Japanisch)
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.