App-Greple-xlate
view release on metacpan or search on metacpan
README.gpt5-DE.md view on Meta::CPAN
In diesem Befehl bedeutet die Zeichenkette `^([\w\pP].*\n)+` aufeinanderfolgende Zeilen, die mit alphanumerischen und Interpunktionszeichen beginnen. Dieser Befehl zeigt den zu übersetzenden Bereich hervorgehoben an. Die Option **--all** wird verwen...
<div>
<p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/select-area.png">
</p>
</div>
Fügen Sie dann die Option `--xlate` hinzu, um den ausgewählten Bereich zu übersetzen. Dann werden die gewünschten Abschnitte gefunden und durch die Ausgabe der Ãbersetzungs-Engine ersetzt.
StandardmäÃig werden Original- und übersetzter Text im âKonfliktmarkerâ-Format ausgegeben, das mit [git(1)](http://man.he.net/man1/git) kompatibel ist. Mit dem Format `ifdef` können Sie den gewünschten Teil einfach mit dem Befehl [unifdef(1)...
<div>
<p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/format-conflict.png">
</p>
</div>
Wenn Sie den gesamten Text übersetzen möchten, verwenden Sie die Option **--match-all**. Dies ist eine Abkürzung, um das Muster `(?s).+` anzugeben, das den gesamten Text erfasst.
Daten im Konfliktmarker-Format können im Side-by-Side-Stil mit dem Befehl [sdif](https://metacpan.org/pod/App%3A%3Asdif) und der Option `-V` angezeigt werden. Da ein Vergleich pro Zeichenkette keinen Sinn ergibt, wird die Option `--no-cdif` empfohle...
sdif -V --no-filename --no-tc --no-cdif data_shishin.deepl-EN-US.cm
<div>
<p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/sdif-cm-view.png">
</p>
</div>
# NORMALIZATION
Die Verarbeitung erfolgt in angegebenen Einheiten, aber bei einer Folge mehrerer Zeilen nichtleeren Textes werden diese zusammen in eine einzelne Zeile konvertiert. Dieser Vorgang wird wie folgt durchgeführt:
- Entfernen Sie Leerzeichen am Anfang und Ende jeder Zeile.
- Wenn eine Zeile mit einem vollbreiten Satzzeichen endet, mit der nächsten Zeile verketten.
- Wenn eine Zeile mit einem vollbreiten Zeichen endet und die nächste Zeile mit einem vollbreiten Zeichen beginnt, die Zeilen verketten.
- Wenn entweder das Ende oder der Anfang einer Zeile kein vollbreites Zeichen ist, sie durch Einfügen eines Leerzeichens verketten.
Cache-Daten werden auf Basis des normalisierten Textes verwaltet, sodass zwischengespeicherte Ãbersetzungsdaten weiterhin wirksam sind, selbst wenn Ãnderungen vorgenommen werden, die das Normalisierungsergebnis nicht beeinflussen.
Dieser Normalisierungsprozess wird nur für das erste (0.) und die geradzahligen Muster durchgeführt. Wenn also zwei Muster wie folgt angegeben werden, wird der Text, der dem ersten Muster entspricht, nach der Normalisierung verarbeitet, und für de...
greple -Mxlate -E normalized -E not-normalized
Verwenden Sie daher das erste Muster für Text, der durch das Kombinieren mehrerer Zeilen zu einer einzelnen Zeile verarbeitet werden soll, und das zweite Muster für vorformatierten Text. Wenn es keinen Text gibt, der auf das erste Muster passt, ver...
# MASKING
Gelegentlich gibt es Textteile, die nicht übersetzt werden sollen. Zum Beispiel Tags in Markdown-Dateien. DeepL schlägt in solchen Fällen vor, den auszuschlieÃenden Teil des Textes in XML-Tags umzuwandeln, zu übersetzen und nach Abschluss der Ã...
--xlate-setopt maskfile=MASKPATTERN
Dies interpretiert jede Zeile der Datei `MASKPATTERN` als regulären Ausdruck, übersetzt Zeichenfolgen, die damit übereinstimmen, und stellt nach der Verarbeitung den ursprünglichen Zustand wieder her. Zeilen, die mit `#` beginnen, werden ignorier...
Komplexe Muster können mit einem durch Backslash maskierten Zeilenumbruch über mehrere Zeilen geschrieben werden.
Wie der Text durch Maskierung transformiert wird, kann mit der Option **--xlate-mask** gesehen werden.
Maskierungsplatzhalter sind wohlgeformte selbstschlieÃende XML-Tags wie `<m id="1" />`. JSON-basierte LLM-Engines erhalten die Tags in ihren Eingabe-Arrays. Für DeepL wird eine Anfrage mit Marker-Tags maskiert und in ein temporäres Wurzelelement `...
Maskierung schützt Markup davor, übersetzt zu werden. Um sensible Zeichenfolgen vor dem Ãbersetzungsdienst selbst zu verbergen, siehe ["ANONYMIZATION AND TEMPLATES"](#anonymization-and-templates); beides kann zusammen verwendet werden.
Diese Schnittstelle ist experimentell und kann sich in Zukunft ändern.
# ANONYMIZATION AND TEMPLATES
Sensible Zeichenketten können verborgen werden, bevor sie an die Ãbersetzungs-API gesendet werden, und in der Ausgabe wiederhergestellt werden. Drei Quellen für Anonymisierungsregeln stehen zur Verfügung: eine Wörterbuchdatei (**--xlate-anonymiz...
Definieren Sie bei Formulardokumenten (Quartalsberichte und dergleichen) die Akteure im Voraus und verweisen Sie im Haupttext auf sie:
---
å ±åè
: å±±ç°å¤ªé
çºæ³¨ä¼ç¤¾: ã¢ã¯ã¡æ ªå¼ä¼ç¤¾
---
æ¬ä»¶ã«ã¤ã㦠{{ å ±åè
}} ã調æ»ãè¡ã£ãã
Ãbersetzen Sie die Vorlage einmal pro Sprache mit `--xlate-template` (und `--xlate-frontmatter`, wenn die Werte in der Datei verbleiben), und rendern Sie dann jeden Fall im eigenständigen Modus **pandoc-embedz** -- Werte unter `global:` in einer ex...
greple -Mxlate --xlate --xlate-engine=gpt5 --xlate-to=EN-US \
--xlate-template= --xlate-format=xtxt \
--match-paragraph --all --need=0 \
report-template.md > report-template.EN.md
pandoc-embedz --standalone report-template.EN.md \
-c case-123.yaml -o report-123.EN.md < /dev/null
Für Inline-Markierungen sorgt eine Konfiguration für Makrodefinitionen dafür, dass dieselbe übersetzte Vorlage entweder die echten Namen oder eine redigierte Version rendert:
# macros.yaml # macros-redacted.yaml
preamble: | preamble: |
{% macro person(name) %}{{ name }}{% endmacro %}
{% macro person(name) %}(é¢ä¿è
){% endmacro %}
SchlieÃen Sie embedz-Blöcke von der Ãbersetzung aus, wenn ein Dokument sie enthält:
--exclude '^```embedz\n(?s:.*?)^```\n'
# 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 prüfen, welcher Teil der Datei Gegenstand der Ãbersetzung wird, bevor die eigentliche Arbeit gestartet wird.
Das Kommandoergebnis geht an die Standardausgabe; leiten Sie es bei Bedarf in eine Datei um oder erwägen Sie die Verwendung des Moduls [App::Greple::update](https://metacpan.org/pod/App%3A%3AGreple%3A%3Aupdate).
Option **--xlate** ruft die Option **--xlate-color** mit der Option **--color=never** auf.
Mit der Option **--xlate-fold** wird der konvertierte Text auf die angegebene Breite umgebrochen. Die Standardbreite beträgt 70 und kann mit der Option **--xlate-fold-width** gesetzt werden. Vier Spalten sind für die Einlaufoperation reserviert...
- **--xlate-engine**=_engine_
Gibt die zu verwendende Ãbersetzungs-Engine an.
Derzeit sind die folgenden Engines verfügbar
README.gpt5-DE.md view on Meta::CPAN
sed -e '/^<<<<<<< /d' -e '/^=======$/,/^>>>>>>> /d'
- **colon**, _:::::::_
Der Original- und der übersetzte Text werden in einem benutzerdefinierten Containerstil von Markdown ausgegeben.
::::::: ORIGINAL
original text
:::::::
::::::: JA
translated Japanese text
:::::::
Der obige Text wird im HTML in Folgendes übersetzt.
<div class="ORIGINAL">
original text
</div>
<div class="JA">
translated Japanese text
</div>
Die Anzahl der Doppelpunkte beträgt standardmäÃig 7. Wenn Sie eine Doppelpunktsfolge wie `:::::` angeben, wird diese anstelle von 7 Doppelpunkten verwendet.
- **ifdef**
Original- und konvertierter Text werden im Format [cpp(1)](http://man.he.net/man1/cpp) `#ifdef` ausgegeben.
#ifdef ORIGINAL
original text
#endif
#ifdef JA
translated Japanese text
#endif
Sie können nur den japanischen Text mit dem Befehl **unifdef** abrufen:
unifdef -UORIGINAL -DJA foo.ja.pm
- **space**
- **space+**
Original- und konvertierter Text werden durch eine einzelne Leerzeile getrennt ausgegeben. Für `space+` wird nach dem konvertierten Text zusätzlich ein Zeilenumbruch 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 Textlänge an, die auf einmal an die API gesendet wird. Der Standardwert 0 bedeutet das eigene Limit der Engine: Für den kostenlosen DeepL-Konto-Dienst sind das 128K für die API (**--xlate**) und 5000 für die Zwischenabl...
- **--xlate-maxline**=_n_ (Default: 0)
Geben Sie die maximale Anzahl von Textzeilen an, die auf einmal an die API gesendet werden.
Setzen Sie diesen Wert auf 1, wenn Sie eine Zeile nach der anderen übersetzen möchten. Diese Option hat Vorrang vor der Option `--xlate-maxlen`.
- **--xlate-prompt**=_text_
Geben Sie einen benutzerdefinierten Prompt an, der an die Ãbersetzungs-Engine gesendet werden soll. Diese Option ist für die LLM-Engines (`gpt3`, `gpt4o`, `gpt5`) verfügbar, jedoch nicht für DeepL. Sie können das Ãbersetzungsverhalten anpas...
- **--xlate-context**=_text_
Geben Sie zusätzliche Kontextinformationen an, die an die Ãbersetzungs-Engine gesendet werden. Diese Option kann mehrfach verwendet werden, um mehrere Kontextzeichenfolgen bereitzustellen. Die Kontextinformationen helfen der Ãbersetzungs-Engin...
- **--xlate-context-window**=_n_
(Context-aware engines only, e.g. `gpt5` on the llm backend)
Anzahl der umgebenden übersetzten Blöcke, die beim erneuten Ãbersetzen geänderter Blöcke als Referenzkontext übergeben werden (Standard: 2). Der Kontext umfasst auÃerdem den unverarbeiteten Quelltext um den geänderten Bereich (Ãberschrif...
- **--xlate-cache-seed**=_file_
Initialisieren Sie den Cache eines neuen Dokuments aus der Cache-Datei eines anderen Dokuments. Nützlich für periodische Berichte: Befüllen Sie den Cache der neuen Ausgabe mit dem der vorherigen Ausgabe, sodass unveränderte Absätze nicht ern...
- **--xlate-anonymize**=_file_
Anonymisieren Sie sensible Zeichenfolgen, bevor sie an die Ãbersetzungs-API gesendet werden, und stellen Sie sie in der Ausgabe wieder her. Die Wörterbuchdatei enthält einen Eintrag pro Element: in JSON (kanonisch, maschinell generierbar)
[ { "category": "person", "text": "å±±ç°å¤ªé" },
{ "category": "company", "regex": "ã¢ã¯ã¡(æ ªå¼ä¼ç¤¾)?" } ]
oder in einem einfachen Zeilenformat (`category pattern`, `/.../` für Regex). Jedes Element wird durch ein Kategorie-Tag wie `<person id="1" />` ersetzt; dieselbe Zeichenfolge erhält immer dasselbe Tag, sodass das Modell nachverfolgen kann, wer...
Ein Wörterbuch kann von einem externen Tool erzeugt werden â zum Beispiel von einem lokalen Modell, das sensible Entitäten extrahiert:
llm -m <local-model> \
-s 'Extract sensitive entities as a JSON array of objects
with "category" and "text" fields.' \
< report.md > report.anon.json
greple -Mxlate --xlate-anonymize=report.anon.json ...
Eine UTF-8-BOM in der Datei wird toleriert. Werte im Front-Matter-Zeilenformat dürfen einen nachgestellten Kommentar nur in einer eigenen Zeile enthalten, nicht nach dem Wert.
- **--xlate-anonymize-mark**\[=_regex_\]
Sammeln Sie Anonymisierungseinträge aus Inline-Markierungen im Dokument selbst. Markieren Sie das erste Vorkommen wie `{{ person("å±±ç°å¤ªé") }}`, und jedes Vorkommen der Zeichenfolge im gesamten Dokument wird anonymisiert. Die Markierung sel...
Beachten Sie, dass bei einer Option mit optionalem Wert wie dieser ein folgendes Dateiargument als Wert interpretiert würde: Schreiben Sie `--xlate-anonymize-mark=` (mit nachgestelltem `=`), wenn Sie die Standardnotation verwenden.
Alternative Notationen können konfiguriert werden, zum Beispiel `--xlate-anonymize-mark='@@(?<category>[a-z][a-z0-9_]*):(?<text>[^\n]+?)@@'` für Markierungen im Stil von `@@person:NAME@@` oder eine HTML-Kommentarform, die in gerendertem Markdow...
- **--xlate-template**\[=_regex_\]
Behandeln Sie Template-Ausdrücke (Standard: Jinja2 `{{ ... }}`, `{% ... %}`, `{# ... #}`) als undurchsichtige Platzhalter: Weisen Sie das Modell an, sie unverändert zu kopieren, und überprüfen Sie pro Block, dass die Antwort genau dieselben A...
Beachten Sie, dass bei einer Option mit optionalem Wert wie dieser ein folgendes Dateiargument als Wert genommen würde: Schreiben Sie `--xlate-template=` (mit einem nachgestellten `=`), wenn Sie die Standardnotation verwenden.
- **--xlate-frontmatter**
Behandeln Sie einen führenden `---` ... `---`-Block als YAML-Front-Matter: SchlieÃen Sie ihn von der Ãbersetzung und von den Kontext-Slices der Phase 2 aus, und fügen Sie seine flachen `key: value`-Werte den Anonymisierungsregeln (Kategorie `...
Lassen Sie immer eine Leerzeile nach dem abschlieÃenden `---`. Bei einem Absatzstil-Match-Pattern bildet Front-Matter, die direkt in den FlieÃtext übergeht, einen überspannenden Block, den der Ausschluss nicht unterdrücken kann (in diesem Fa...
- **--xlate-glossary**=_glossary_
Geben Sie eine Glossar-ID an, die für die Ãbersetzung verwendet werden soll. Diese Option ist nur bei Verwendung der DeepL-Engine verfügbar. Die Glossar-ID sollte aus Ihrem DeepL-Konto stammen und sorgt für eine konsistente Ãbersetzung spezi...
- **--xlate-dryrun**
Rufen Sie die Ãbersetzungs-API nicht auf; zeigen Sie stattdessen über die Fortschrittsanzeige jede Payload genau so an, wie sie übertragen würde (nach Anonymisierung und Maskierung). Nützlich, um zu prüfen, was die Maschine verlässt, und u...
- **--**\[**no-**\]**xlate-progress** (Default: True)
Sehen Sie das Ãbersetzungsergebnis in Echtzeit in der STDERR-Ausgabe. Die `From`-Payload wird so angezeigt, wie sie nach Anonymisierung und Maskierung übertragen wurde.
- **--xlate-review**
Zeigen Sie bei einem eins-zu-eins geänderten Block den kleinsten zusammenhängenden geänderten Bereich im alten und neuen Quelltext, gefolgt vom entsprechenden Bereich in der alten und neuen Ãbersetzung. Der Bericht wird nach STDERR geschriebe...
- **--xlate-stripe**
Verwenden Sie das Modul [App::Greple::stripe](https://metacpan.org/pod/App%3A%3AGreple%3A%3Astripe), um den übereinstimmenden Teil im Zebra-Streifen-Stil anzuzeigen. Dies ist nützlich, wenn die übereinstimmenden Teile nahtlos aneinandergrenzen...
Die Farbpalette wird entsprechend der Hintergrundfarbe des Terminals umgeschaltet. Wenn Sie dies explizit angeben möchten, können Sie **--xlate-stripe-light** oder **--xlate-stripe-dark** verwenden.
- **--xlate-mask**
Führen Sie die Maskierungsfunktion aus und zeigen Sie den konvertierten Text unverändert ohne Wiederherstellung an.
- **--match-all**
Setzen Sie den gesamten Text der Datei als Zielbereich.
- **--lineify-cm**
- **--lineify-colon**
Bei den Formaten `cm` und `colon` wird die Ausgabe zeilenweise aufgeteilt und formatiert. Wenn daher nur ein Teil einer Zeile übersetzt werden soll, kann das erwartete Ergebnis nicht erzielt werden. Diese Filter korrigieren Ausgaben, die durch d...
In der aktuellen Implementierung werden mehrere übersetzte Teile einer Zeile als unabhängige Zeilen ausgegeben.
# CACHE OPTIONS
Das Modul **xlate** kann für jede Datei zwischengespeicherten Ãbersetzungstext speichern und ihn vor der Ausführung einlesen, um den Overhead von Serveranfragen zu vermeiden. Mit der Standard-Cache-Strategie `auto` werden Cache-Daten nur beibehalt...
Verwenden Sie **--xlate-cache=clear**, um die Cache-Verwaltung zu starten oder alle vorhandenen Cache-Daten zu bereinigen. Wenn diese Option einmal ausgeführt wurde, wird eine neue Cache-Datei erstellt, falls keine vorhanden ist, und anschlieÃend a...
- --xlate-cache=_strategy_
- `auto` (Default)
Pflegen Sie die Cache-Datei, falls sie existiert.
- `create`
Leere Cache-Datei erstellen und beenden.
- `always`, `yes`, `1`
Den Cache dennoch beibehalten, solange das Ziel eine normale Datei ist.
- `clear`
Zuerst die Cache-Daten löschen.
- `never`, `no`, `0`
Cache-Datei niemals verwenden, selbst wenn sie existiert.
- `accumulate`
StandardmäÃig werden ungenutzte Daten aus der Cache-Datei entfernt. Wenn Sie sie nicht entfernen und in der Datei behalten möchten, verwenden Sie `accumulate`.
- **--xlate-update**
Diese Option erzwingt das Aktualisieren der Cache-Datei, auch wenn es nicht notwendig ist.
# COMMAND LINE INTERFACE
Sie können dieses Modul einfach über die Kommandozeile verwenden, indem Sie den in der Distribution enthaltenen Befehl `xlate` verwenden. Siehe die `xlate`-Manpage zur Verwendung.
Der `xlate`-Befehl unterstützt GNU-ähnliche Long-Optionen wie `--to-lang`, `--from-lang`, `--engine` und `--file`. Verwenden Sie `xlate -h`, um alle verfügbaren Optionen anzuzeigen.
Der Befehl `xlate` arbeitet mit der Docker-Umgebung zusammen. Selbst wenn Sie lokal nichts installiert haben, können Sie ihn verwenden, solange Docker verfügbar ist. Verwenden Sie die Option `-D` oder `-C`.
Docker-Operationen werden von [App::dozo](https://metacpan.org/pod/App%3A%3Adozo) gehandhabt, das auch als eigenständiger Befehl verwendet werden kann. Der Befehl `dozo` unterstützt die Konfigurationsdatei `.dozorc` für persistente Container-Einst...
Da Makefiles für verschiedene Dokumentstile bereitgestellt werden, ist die Ãbersetzung in andere Sprachen ohne besondere Spezifikation möglich. Verwenden Sie die Option `-M`.
Sie können die Optionen Docker und `make` auch kombinieren, sodass Sie `make` in einer Docker-Umgebung ausführen können.
Das Ausführen wie `xlate -C` startet eine Shell mit dem aktuell eingehängten Git-Repository als Arbeitsverzeichnis.
Lesen Sie den japanischen Artikel im Abschnitt ["SEE ALSO"](#see-also) für Details.
# EMACS
Laden Sie die im Repository enthaltene Datei `xlate.el`, um den Befehl `xlate` aus dem Emacs-Editor zu verwenden. Die Funktion `xlate-region` übersetzt den angegebenen Bereich. Die Standardsprache ist `EN-US`, und Sie können die Sprache angeben, in...
<div>
<p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/emacs.png">
</p>
</div>
# ENVIRONMENT
( run in 1.648 second using v1.01-cache-2.11-cpan-b16cb0d3907 )