App-Greple-xlate

 view release on metacpan or  search on metacpan

i18n/xlate.deepl-RO.md  view on Meta::CPAN

# NAME

App::Greple::xlate - modul de suport pentru traducere pentru Greple

# SYNOPSIS

    greple -Mxlate --xlate-engine gpt5 --xlate pattern target-file

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

# VERSION

Version 2.02

# DESCRIPTION

**Greple** **xlate** modulul găsește blocurile de text dorite și le înlocuiește cu textul tradus. Motorul principal este GPT-5.6 Terra (`llm/gpt5.pm`), care apelează comanda [llm](https://llm.datasette.io/); sunt incluse, de asemenea, DeepL (`d...

Traducerile sunt stocate în cache pentru fiecare fișier, astfel încât rulați din nou o comandă nu implică costuri suplimentare pentru textul nemodificat. Când un document este editat, doar paragrafele modificate sunt trimise din nou către AP...

Dacă doriți să traduceți blocuri de text normale dintr-un document scris în stilul pod al limbajului Perl, utilizați comanda **greple** împreună cu modulele `--xlate-engine gpt5` și `perl` astfel:

    greple -Mxlate --xlate-engine gpt5 -Mperl --pod --re '^([\w\pP].*\n)+' --all foo.pm

În această comandă, șirul de modele `^([\w\pP].*\n)+` înseamnă linii consecutive care încep cu litere alfanumerice și de punctuație. Această comandă afișează evidențiată zona care urmează să fie tradusă. Opțiunea **--all** este uti...

<div>
    <p>
    <img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/select-area.png">
    </p>
</div>

Apoi adăugați opțiunea `--xlate` pentru a traduce zona selectată. Astfel, se vor identifica secțiunile dorite și se vor înlocui cu rezultatul generat de motorul de traducere.

În mod implicit, textul original și cel tradus sunt tipărite în formatul "conflict marker" compatibil cu [git(1)](http://man.he.net/man1/git). Utilizând formatul `ifdef`, puteți obține cu ușurință partea dorită prin comanda [unifdef(1)](ht...

<div>
    <p>
    <img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/format-conflict.png">
    </p>
</div>

Dacă doriți să traduceți întregul text, utilizați opțiunea **--match-all**. Aceasta este o scurtătură pentru a specifica modelul `(?s).+` care se potrivește cu întregul text.

Datele din formatul markerului de conflict pot fi vizualizate în stil paralel prin comanda [sdif](https://metacpan.org/pod/App%3A%3Asdif) cu opțiunea `-V`. Deoarece nu are sens să comparați fiecare șir de caractere, este recomandată opțiunea `...

    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

Prelucrarea se face în unități specificate, dar în cazul unei secvențe de linii multiple de text nevid, acestea sunt convertite împreună într-o singură linie. Această operațiune se efectuează după cum urmează:

- Se elimină spațiul alb de la începutul și sfârșitul fiecărei linii.
- Dacă o linie se termină cu un caracter de punctuație de lățime maximă, concatenarea se face cu linia următoare.
- Dacă o linie se termină cu un caracter de lățime întreagă și următoarea linie începe cu un caracter de lățime întreagă, se concatenează liniile.
- Dacă sfârșitul sau începutul unei linii nu este un caracter de lățime maximă, concatenați-le prin inserarea unui caracter de spațiu.

Datele din cache sunt gestionate pe baza textului normalizat, astfel încât, chiar dacă sunt efectuate modificări care nu afectează rezultatele normalizării, datele de traducere din cache vor fi în continuare eficiente.

Acest proces de normalizare se efectuează numai pentru primul model (al 0-lea) și pentru cel cu număr par. Astfel, dacă sunt specificate două modele după cum urmează, textul care corespunde primului model va fi prelucrat după normalizare și ...

    greple -Mxlate -E normalized -E not-normalized

Prin urmare, utilizaÈ›i primul model pentru textul care urmează să fie prelucrat prin combinarea mai multor linii într-o singură linie È™i utilizaÈ›i al doilea model pentru textul preformattat. Dacă nu există niciun text care să se potriveascÄ...

# MASKING

Ocazional, există părți de text pe care nu le doriți traduse. De exemplu, etichetele din fișierele markdown. DeepL sugerează ca, în astfel de cazuri, partea de text care trebuie exclusă să fie convertită în etichete XML, tradusă și apoi ...

    --xlate-setopt maskfile=MASKPATTERN

Acest lucru va interpreta fiecare linie a fișierului `MASKPATTERN` ca o expresie regulată, va traduce șirurile care se potrivesc și va reveni la starea inițială după procesare. Liniile care încep cu `#` sunt ignorate.

Modelele complexe pot fi scrise pe mai multe linii, cu caracterul de linie nouă precedat de o bară oblică inversă.

Modul în care textul este transformat prin mascare poate fi văzut prin opțiunea **--xlate-mask**.

Marcatorii de substituție sunt etichete XML auto-închise, bine formate, precum `<m id="1" />`. Motoarele LLM bazate pe JSON primesc etichetele în matricile lor de intrare. Pentru DeepL, o cerere care conține etichete de marcator este escapată ș...

Mascarea protejează marcajul împotriva traducerii. Pentru a ascunde șirurile sensibile chiar de serviciul de traducere, consultați ["ANONYMIZATION AND TEMPLATES"](#anonymization-and-templates); ambele opțiuni pot fi utilizate împreună.

Această interfață este experimentală și poate fi modificată în viitor.

# ANONYMIZATION AND TEMPLATES

Șirurile sensibile pot fi ascunse înainte de a fi trimise către API-ul de traducere și restabilite în ieșire. Sunt disponibile trei surse de reguli de anonimizare: un fișier dicționar (**--xlate-anonymize**), marcaje încorporate în document...

Pentru documentele de tip formular (rapoarte trimestriale și altele asemenea), definiți actorii de la început și faceți referire la ei în corpul textului:

    ---
    報告者: 山田太郎
    発注会社: アクメ株式会社
    ---
    本件について {{ 報告者 }} が調査を行った。

Traduceți șablonul o singură dată pentru fiecare limbă cu `--xlate-template` (și `--xlate-frontmatter` când valorile sunt păstrate în fișier), apoi generați fiecare caz cu **pandoc-embedz** în modul autonom — valorile de sub `global:` d...

    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

Pentru marcajele încorporate, furnizarea unei configurații de definiție a macro-ului face ca același șablon tradus să afișeze fie numele reale, fie o versiune redactată:

    # macros.yaml           # macros-redacted.yaml
    preamble: |             preamble: |
      {% macro person(name) %}{{ name }}{% endmacro %}
                              {% macro person(name) %}(関係者){% endmacro %}

Excludeți blocurile embedz din traducere atunci când un document le conține:

    --exclude '^```embedz\n(?s:.*?)^```\n'

# OPTIONS

- **--xlate**
- **--xlate-color**
- **--xlate-fold**
- **--xlate-fold-width**=_n_ (Default: 70)

    Invocați procesul de traducere pentru fiecare zonă corespunzătoare.

    Fără această opțiune, **greple** se comportă ca o comandă de căutare normală. Astfel, puteți verifica ce parte a fișierului va face obiectul traducerii înainte de a invoca lucrul efectiv.

    Rezultatul comenzii merge la ieșire standard, deci redirecționați-l către fișier dacă este necesar sau luați în considerare utilizarea modulului [App::Greple::update](https://metacpan.org/pod/App%3A%3AGreple%3A%3Aupdate).

    Opțiunea **--xlate** apelează opțiunea **--xlate-color** cu opțiunea **--color=never**.

    Cu opÈ›iunea **--xlate-fold**, textul convertit este pliat cu lățimea specificată. Lățimea implicită este 70 È™i poate fi stabilită prin opÈ›iunea **--xlate-fold-width**. Patru coloane sunt rezervate pentru operaÈ›iunea de rulare, astfel Ã...

- **--xlate-engine**=_engine_

    Specifică motorul de traducere care urmează să fie utilizat.

    În acest moment, sunt disponibile următoarele motoare

    - **gpt5**: gpt-5.6-terra (via the `llm` command)
    - **deepl**: DeepL API (via the `deepl` command)
    - **gpt3**: gpt-3.5-turbo (legacy, via the `gpty` command)
    - **gpt4o**: gpt-4o-mini (legacy, via the `gpty` command)

    Modulele motorului sunt căutate mai întâi în spațiile de nume din backend (`llm`, apoi `gpty`), apoi direct sub `App::Greple::xlate`. Astfel, `gpt5` încarcă `App::Greple::xlate::llm::gpt5`, care apelează comanda `llm`, în timp ce `gpt4o`...

- **--xlate-labor**
- **--xlabor**

    În loc să apelați motorul de traducere, se așteaptă să lucrați pentru. După pregătirea textului care urmează să fie tradus, acestea sunt copiate în clipboard. Se așteaptă să le lipiți în formular, să copiați rezultatul în clip...

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

    Specificați limba țintă. Motoarele LLM acceptă orice nume sau cod de limbă pe care modelul îl înțelege; acesta este interpolat în promptul de traducere. Puteți obține limbile disponibile prin comanda `deepl languages` atunci când util...

- **--xlate-from** (Default: `ORIGINAL`)

    Etichetă utilizată pentru textul original în formatele de ieșire `conflict`, `colon` și `ifdef`. Cu motorul **DeepL**, o valoare non-implicită este, de asemenea, transmisă ca limbă sursă.

- **--xlate-format**=_format_ (Default: `conflict`)

    Specificați formatul de ieșire pentru textul original și cel tradus.

    Următoarele formate, altele decât `xtxt`, presupun că partea care urmează să fie tradusă este o colecție de linii. De fapt, este posibil să se traducă doar o parte a unei linii, dar specificarea unui alt format decât `xtxt` nu va produc...

    - **conflict**, **cm**

        Textul original și cel convertit sunt tipărite în formatul de marker de conflict [git(1)](http://man.he.net/man1/git).

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

        Puteți recupera fișierul original prin următoarea comandă [sed(1)](http://man.he.net/man1/sed).

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

    - **colon**, _:::::::_

        Textul original și cel tradus sunt editate într-un stil de container personalizat markdown.

            ::::::: ORIGINAL
            original text
            :::::::
            ::::::: JA
            translated Japanese text
            :::::::

        Textul de mai sus va fi tradus în următoarele în HTML.

            <div class="ORIGINAL">
            original text
            </div>
            <div class="JA">
            translated Japanese text
            </div>

        Numărul de două puncte este de 7 în mod implicit. Dacă specificați o secvență de două puncte precum `:::::`, aceasta este utilizată în locul celor 7 două puncte.

    - **ifdef**

        Textul original și cel convertit sunt tipărite în formatul [cpp(1)](http://man.he.net/man1/cpp) `#ifdef`.

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

        Puteți recupera doar textul japonez prin comanda **unifdef**:

            unifdef -UORIGINAL -DJA foo.ja.pm

    - **space**
    - **space+**

        Textul original și cel convertit sunt tipărite separate de o singură linie albă. Pentru `space+`, se tipărește și o linie nouă după textul convertit.

    - **xtxt**

        Dacă formatul este `xtxt` (text tradus) sau necunoscut, se tipărește numai textul tradus.

- **--xlate-maxlen**=_chars_ (Default: 0)

    Specificați lungimea maximă a textului care urmează să fie trimis către API într-o singură tranzacție. Valoarea implicită 0 înseamnă limita proprie a motorului: pentru serviciul gratuit DeepL, aceasta este de 128K pentru API (**--xlate...

- **--xlate-maxline**=_n_ (Default: 0)

    Specificați numărul maxim de linii de text care urmează să fie trimise simultan către API.

    Setați această valoare la 1 dacă doriți să traduceți un rând pe rând. Această opțiune are prioritate față de opțiunea `--xlate-maxlen`.

- **--xlate-prompt**=_text_

    Specificați o solicitare personalizată care să fie trimisă motorului de traducere. Această opțiune este disponibilă pentru motoarele LLM (`gpt3`, `gpt4o`, `gpt5`), dar nu și pentru DeepL. Puteți personaliza comportamentul traducerii ofer...

- **--xlate-context**=_text_

    Specificați informații contextuale suplimentare care urmează să fie trimise motorului de traducere. Această opțiune poate fi utilizată de mai multe ori pentru a furniza mai multe șiruri de context. Informațiile de context ajută motorul ...

- **--xlate-context-window**=_n_

    (Context-aware engines only, e.g. `gpt5` on the llm backend)
    Numărul de blocuri traduse înconjurătoare transmise ca context de referință la retraducerea blocurilor modificate (implicit 2). Contextul include, de asemenea, textul sursă brut din jurul regiunii modificate (titluri, structura listei, lege...

- **--xlate-cache-seed**=_file_

    Inițializați memoria cache a unui document nou pornind de la fișierul de cache al altui document. Util pentru rapoarte periodice: inițializați memoria cache a noii ediții cu cea a ediției anterioare, astfel încât paragrafele nemodificate...

- **--xlate-anonymize**=_file_

    Anonimizează șirurile sensibile înainte ca acestea să fie trimise către API-ul de traducere și le restabilește în rezultatul final. Fișierul dicționar conține o singură intrare pentru fiecare element: în format JSON (canonic, generab...

        [ { "category": "person",  "text": "山田太郎" },
          { "category": "company", "regex": "アクメ(株式会社)?" } ]

    sau într-un format simplu de linie (`category pattern`,  `/.../`pentru expresii regulate). Fiecare element este înlocuit cu o etichetă de categorie, cum ar fi `<person id="1" />`; același șir primește întotdeauna aceeași etichetă, astfel...

    Un dicționar poate fi generat de un instrument extern — de exemplu, un model local care extrage entități sensibile:

        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 ...

    Un BOM UTF-8 în fișier este tolerat. Valorile din formatul de linie de antet pot conține un comentariu final doar pe propria linie, nu după valoare.

- **--xlate-anonymize-mark**\[=_regex_\]

    Colectați intrările de anonimizare din marcajele încorporate din documentul însuși. Marcați prima apariție ca `{{ person("山田太郎") }}` și fiecare apariție a șirului în întregul document va fi anonimizată. Marca în sine rămân...

    Rețineți că, în cazul unei opțiuni cu valoare opțională precum aceasta, un argument de fișier următor ar fi considerat ca valoare: scrieți `--xlate-anonymize-mark=` (cu un `=` la sfârșit) atunci când utilizați notația implicită.

    Se pot configura notații alternative, de exemplu `--xlate-anonymize-mark='@@(?<category>[a-z][a-z0-9_]*):(?<text>[^\n]+?)@@'` pentru marcaje de tip `@@person:NAME@@`, sau o formă de comentariu HTML care rămâne invizibilă în Markdown-ul reda...

- **--xlate-template**\[=_regex_\]

    Tratează expresiile șablonului (implicit: Jinja2 `{{ ... }}`, `{% ... %}`, `{# ... #}`) ca substituenți opaci: instruiește modelul să le copieze nemodificate și verifică, pentru fiecare bloc, dacă răspunsul conține exact aceleași expre...

    Rețineți că, în cazul unei opțiuni cu valoare opțională precum aceasta, un argument de fișier care urmează ar fi considerat ca valoare: scrieți `--xlate-template=` (cu un `=` la sfârșit) atunci când utilizați notația implicită.

- **--xlate-frontmatter**

    Tratați un bloc `---` de la început... `---` ca element de front matter YAML: excludeți-l din traducere și din segmentele de context din faza 2 și adăugați valorile sale simple `key: value` la regulile de anonimizare (categoria `var`) ca m...

    Lăsați întotdeauna o linie goală după eticheta de închidere `---`. Cu un model de potrivire de tip paragraf, front matter-ul care se continuă direct în textul principal formează un bloc care se întinde pe ambele părți și pe care excl...

- **--xlate-glossary**=_glossary_

    Specificați un ID de glosar care urmează să fie utilizat pentru traducere. Această opțiune este disponibilă numai atunci când se utilizează motorul DeepL. ID-ul glosarului trebuie obținut din contul dvs. DeepL și asigură traducerea con...

- **--xlate-dryrun**

    Nu apelați API-ul de traducere; în schimb, afișați, prin intermediul indicatorului de progres, fiecare încărcătură exact așa cum ar fi transmisă (după anonimizare și mascare). Este util pentru a verifica ce părăsește sistemul și p...

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

    Vedeți rezultatul traducerii în timp real în ieșirea STDERR. Datele `From` sunt afișate așa cum sunt transmise, după anonimizare și mascare.

- **--xlate-review**

    Pentru un bloc modificat unu-la-unu, afișați cel mai mic interval contiguu modificat din sursa veche și cea nouă, urmat de intervalul corespunzător din traducerea veche și cea nouă. Raportul este scris în STDERR, nu efectuează niciun ape...

- **--xlate-stripe**

    Utilizați modulul [App::Greple::stripe](https://metacpan.org/pod/App%3A%3AGreple%3A%3Astripe) pentru a afișa partea corespunzătoare prin metoda zebrei. Acest lucru este util atunci când părțile potrivite sunt conectate spate în spate.



( run in 0.751 second using v1.01-cache-2.11-cpan-302cb4679cc )