App-Greple-xlate
view release on metacpan or search on metacpan
i18n/src/xlate.gpt5-RO.pod view on Meta::CPAN
=encoding utf-8
=head1 NAME
App::Greple::xlate - modul de suport pentru traducere pentru greple
=head1 SYNOPSIS
greple -Mxlate --xlate-engine gpt5 --xlate pattern target-file
greple -Mxlate --xlate-engine deepl --xlate pattern target-file
=head1 VERSION
Version 2.00
=head1 DESCRIPTION
B<Greple> B<xlate> gÄseÈte blocurile de text dorite Èi le înlocuieÈte cu textul tradus. Motorul principal este GPT-5.5 (F<llm/gpt5.pm>), care apeleazÄ comanda L<llm|https://llm.datasette.io/>; DeepL (F<deepl.pm>) Èi motoarele moÈtenite bazate...
Traducerile sunt puse în cache pe fiÈier, astfel încât rerularea unei comenzi nu costÄ nimic pentru textul neschimbat. Când un document este editat, numai paragrafele modificate sunt trimise din nou la API; un motor conÈtient de context primeÈ...
DacÄ doriÈi sÄ traduceÈi blocuri de text obiÈnuite într-un document scris în stilul pod al Perl, utilizaÈi comanda B<greple> cu C<--xlate-engine gpt5> Èi modulul C<perl> astfel:
greple -Mxlate --xlate-engine gpt5 -Mperl --pod --re '^([\w\pP].*\n)+' --all foo.pm
Ãn aceastÄ comandÄ, Èirul de tipar C<^([\w\pP].*\n)+> înseamnÄ linii consecutive care încep cu litere Èi cifre Èi semne de punctuaÈie. AceastÄ comandÄ aratÄ zona ce urmeazÄ a fi tradusÄ evidenÈiatÄ. OpÈiunea B<--all> este folositÄ ...
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/select-area.png">
</p>
Apoi adÄugaÈi opÈiunea C<--xlate> pentru a traduce zona selectatÄ. Atunci va gÄsi secÈiunile dorite Èi le va înlocui cu ieÈirea motorului de traducere.
Implicit, textul original Èi cel tradus sunt tipÄrite în formatul âconflict markerâ compatibil cu L<git(1)>. Folosind formatul C<ifdef>, puteÈi obÈine partea doritÄ cu comanda L<unifdef(1)> uÈor. Formatul ieÈirii poate fi specificat prin ...
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/format-conflict.png">
</p>
DacÄ doriÈi sÄ traduceÈi întregul text, folosiÈi opÈiunea B<--match-all>. Aceasta este o scurtÄturÄ pentru a specifica tiparul C<(?s).+> care se potriveÈte întregului text.
Datele în format conflict marker pot fi vizualizate în stil side-by-side cu comanda L<sdif|App::sdif> Èi opÈiunea C<-V>. Deoarece nu are sens sÄ comparaÈi pe bazÄ de Èir, se recomandÄ opÈiunea C<--no-cdif>. DacÄ nu aveÈi nevoie sÄ colora...
sdif -V --no-filename --no-tc --no-cdif data_shishin.deepl-EN-US.cm
=for html <p>
<img width="750" src="https://raw.githubusercontent.com/kaz-utashiro/App-Greple-xlate/main/images/sdif-cm-view.png">
</p>
=head1 NORMALIZATION
Procesarea se face în unitÄÈile specificate, dar în cazul unei secvenÈe de mai multe linii de text ne-gol, acestea sunt convertite împreunÄ Ã®ntr-o singurÄ linie. AceastÄ operaÈie se efectueazÄ dupÄ cum urmeazÄ:
=over 2
=item *
EliminaÈi spaÈiile albe de la începutul Èi sfârÈitul fiecÄrei linii.
=item *
DacÄ o linie se terminÄ cu un caracter de punctuaÈie full-width, concatenaÈi cu linia urmÄtoare.
=item *
DacÄ o linie se terminÄ cu un caracter full-width Èi linia urmÄtoare începe cu un caracter full-width, concatenaÈi liniile.
=item *
DacÄ fie sfârÈitul, fie începutul unei linii nu este un caracter full-width, concatenaÈi-le inserând un caracter spaÈiu.
=back
Datele din cache sunt gestionate pe baza textului normalizat, astfel încât, chiar dacÄ se fac modificÄri care nu afecteazÄ rezultatele normalizÄrii, datele de traducere din cache vor rÄmâne valabile.
Acest proces de normalizare se efectueazÄ numai pentru modelul (tiparul) primul (al 0-lea) Èi pentru cele cu numÄr par. Astfel, dacÄ sunt specificate douÄ tipare ca mai jos, textul care se potriveÈte primului tipar va fi procesat dupÄ normaliz...
greple -Mxlate -E normalized -E not-normalized
Prin urmare, folosiÈi primul tipar pentru textul care urmeazÄ sÄ fie procesat prin combinarea mai multor linii într-o singurÄ linie Èi folosiÈi al doilea tipar pentru text preformatat. DacÄ nu existÄ text care sÄ se potriveascÄ primului ti...
=head1 MASKING
Ocazional, existÄ pÄrÈi din text pe care nu doriÈi sÄ le traduceÈi. De exemplu, etichete în fiÈiere markdown. DeepL sugereazÄ ca, în astfel de cazuri, partea de text care trebuie exclusÄ sÄ fie convertitÄ Ã®n etichete XML, tradusÄ, apoi...
--xlate-setopt maskfile=MASKPATTERN
Aceasta va interpreta fiecare linie a fiÈierului C<MASKPATTERN> ca o expresie regulatÄ, va traduce Èirurile care se potrivesc cu aceasta Èi va reveni dupÄ procesare. Liniile care încep cu C<#> sunt ignorate.
Un tipar complex poate fi scris pe mai multe linii cu newline scÄpat prin backslash.
Modul în care textul este transformat prin mascarea poate fi vÄzut prin opÈiunea B<--xlate-mask>.
Mascarea protejeazÄ marcajul împotriva traducerii. Pentru a ascunde Èirurile sensibile de serviciul de traducere însuÈi, consultaÈi L</ANONYMIZATION AND TEMPLATES>; ambele pot fi utilizate împreunÄ.
AceastÄ interfaÈÄ este experimentalÄ Èi poate suferi modificÄri în viitor.
=head1 ANONYMIZATION AND TEMPLATES
Èirurile sensibile pot fi ascunse înainte de a fi trimise cÄtre API-ul de traducere Èi restaurate în ieÈire. Sunt disponibile trei surse de reguli de anonimizare: un fiÈier dicÈionar (B<--xlate-anonymize>), marcaje inline în documentul însu...
Pentru documente de tip formular (rapoarte trimestriale Èi altele asemenea), definiÈi actorii în avans Èi faceÈi referire la ei în corp:
---
å ±åè
: å±±ç°å¤ªé
çºæ³¨ä¼ç¤¾: ã¢ã¯ã¡æ ªå¼ä¼ç¤¾
---
æ¬ä»¶ã«ã¤ã㦠{{ å ±åè
}} ã調æ»ãè¡ã£ãã
TraduceÈi Èablonul o singurÄ datÄ pentru fiecare limbÄ cu C<--xlate-template> (Èi C<--xlate-frontmatter> când valorile sunt pÄstrate în fiÈier), apoi redaÈi fiecare caz cu modul autonom B<pandoc-embedz> -- valorile de sub C<global:> dintr-...
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 marcaje inline, furnizarea unei configuraÈii de definiÈie a macrocomenzilor face ca acelaÈi Èablon tradus sÄ redea 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 de la traducere atunci când un document le conÈine:
--exclude '^```embedz\n(?s:.*?)^```\n'
=head1 OPTIONS
=over 7
=item B<--xlate>
=item B<--xlate-color>
=item B<--xlate-fold>
=item B<--xlate-fold-width>=I<n> (Default: 70)
PorneÈte procesul de traducere pentru fiecare zonÄ potrivitÄ.
FÄrÄ aceastÄ opÈiune, B<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 porni munca efectivÄ.
Rezultatul comenzii merge la ieÈirea standard, deci redirecÈionaÈi cÄtre fiÈier dacÄ este necesar sau luaÈi în considerare folosirea modulului L<App::Greple::update>.
OpÈiunea B<--xlate> apeleazÄ opÈiunea B<--xlate-color> cu opÈiunea B<--color=never>.
Cu opÈiunea B<--xlate-fold>, textul convertit este împÄrÈit la lÄÈimea specificatÄ. LÄÈimea implicitÄ este 70 Èi poate fi setatÄ prin opÈiunea B<--xlate-fold-width>. Patru coloane sunt rezervate pentru operaÈia run-in, astfel încât fi...
=item B<--xlate-engine>=I<engine>
SpecificÄ motorul de traducere care va fi utilizat.
Ãn acest moment, sunt disponibile urmÄtoarele motoare
=over 2
=item * B<gpt5>: gpt-5.5 (via the C<llm> command)
=item * B<deepl>: DeepL API (via the C<deepl> command)
=item * B<gpt3>: gpt-3.5-turbo (legacy, via the C<gpty> command)
=item * B<gpt4o>: gpt-4o-mini (legacy, via the C<gpty> command)
=back
Modulele de motor sunt cÄutate mai întâi în spaÈiile de nume backend (C<llm>, apoi C<gpty>), apoi direct sub C<App::Greple::xlate>. Astfel, C<gpt5> încarcÄ C<App::Greple::xlate::llm::gpt5>, care apeleazÄ comanda C<llm>, în timp ce C<gpt4o> r...
=item B<--xlate-labor>
=item B<--xlabor>
Ãn loc sÄ apelaÈi motorul de traducere, se aÈteaptÄ sÄ lucraÈi manual. DupÄ pregÄtirea textului de tradus, acesta este copiat în clipboard. Se aÈteaptÄ sÄ Ã®l lipiÈi în formular, sÄ copiaÈi rezultatul în clipboard Èi sÄ apÄsaÈi ...
=item B<--xlate-to> (Default: C<EN-US>)
SpecificaÈi limba ÈintÄ. Motoarele LLM acceptÄ orice nume de limbÄ sau cod pe care modelul îl înÈelege; acesta este interpolat în promptul de traducere. PuteÈi obÈine limbile disponibile cu comanda C<deepl languages> când folosiÈi motoru...
=item B<--xlate-from> (Default: C<ORIGINAL>)
EtichetÄ utilizatÄ pentru textul original în formatele de ieÈire C<conflict>, C<colon> Èi C<ifdef>. Cu motorul B<DeepL>, o valoare diferitÄ de cea implicitÄ este transmisÄ Èi ca limbÄ sursÄ.
=item B<--xlate-format>=I<format> (Default: C<conflict>)
SpecificaÈi formatul de ieÈire pentru textul original Èi tradus.
UrmÄtoarele formate, altele decât C<xtxt>, presupun cÄ partea de tradus este o colecÈie de linii. De fapt, este posibil sÄ traduceÈi doar o porÈiune a unei linii, dar specificarea unui format diferit de C<xtxt> nu va produce rezultate semnific...
=over 4
=item B<conflict>, B<cm>
Textul original Èi cel convertit sunt tipÄrite în formatul marcatorilor de conflict L<git(1)>.
<<<<<<< ORIGINAL
original text
=======
translated Japanese text
>>>>>>> JA
PuteÈi recupera fiÈierul original cu urmÄtoarea comandÄ L<sed(1)>.
sed -e '/^<<<<<<< /d' -e '/^=======$/,/^>>>>>>> /d'
=item B<colon>, I<:::::::>
Textul original Èi cel tradus sunt afiÈate într-un stil de container personalizat pentru markdown.
::::::: ORIGINAL
original text
:::::::
::::::: JA
translated Japanese text
:::::::
Textul de mai sus va fi tradus în urmÄtorul format HTML.
<div class="ORIGINAL">
original text
</div>
<div class="JA">
translated Japanese text
</div>
NumÄrul de douÄ puncte este 7 în mod implicit. DacÄ specificaÈi o secvenÈÄ de douÄ puncte precum C<:::::>, aceasta este folositÄ Ã®n locul celor 7 douÄ puncte.
=item B<ifdef>
Textul original Èi cel convertit sunt tipÄrite în formatul L<cpp(1)> C<#ifdef>.
#ifdef ORIGINAL
original text
#endif
#ifdef JA
translated Japanese text
#endif
PuteÈi prelua doar textul japonez cu comanda B<unifdef>:
unifdef -UORIGINAL -DJA foo.ja.pm
=item B<space>
=item B<space+>
Textul original Èi cel convertit sunt tipÄrite separate de o linie goalÄ. Pentru C<space+>, se afiÈeazÄ Èi un rând nou dupÄ textul convertit.
=item B<xtxt>
DacÄ formatul este C<xtxt> (text tradus) sau necunoscut, se tipÄreÈte doar textul tradus.
=back
=item B<--xlate-maxlen>=I<chars> (Default: 0)
SpecificaÈi lungimea maximÄ a textului care va fi trimis la API dintr-o singurÄ datÄ. Valoarea implicitÄ 0 înseamnÄ limita proprie a motorului: pentru serviciul contului DeepL gratuit, aceasta este 128K pentru API (B<--xlate>) Èi 5000 pentru ...
=item B<--xlate-maxline>=I<n> (Default: 0)
SpecificaÈi numÄrul maxim de linii de text care vor fi trimise la API dintr-o singurÄ datÄ.
SetaÈi aceastÄ valoare la 1 dacÄ doriÈi sÄ traduceÈi câte o linie pe rând. AceastÄ opÈiune are prioritate faÈÄ de opÈiunea C<--xlate-maxlen>.
=item B<--xlate-prompt>=I<text>
SpecificaÈi un prompt personalizat care sÄ fie trimis motorului de traducere. AceastÄ opÈiune este disponibilÄ pentru motoarele LLM (C<gpt3>, C<gpt4o>, C<gpt5>), dar nu pentru DeepL. PuteÈi personaliza comportamentul traducerii furnizând instr...
=item B<--xlate-context>=I<text>
SpecificaÈi informaÈii contextuale suplimentare care sÄ fie trimise motorului de traducere. AceastÄ opÈiune poate fi utilizatÄ de mai multe ori pentru a furniza multiple Èiruri de context. InformaÈiile de context ajutÄ motorul de traducere s...
=item B<--xlate-context-window>=I<n>
(Context-aware engines only, e.g. C<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 Èi textul sursÄ brut din jurul regiunii modificate (titluri, structura listelor, legende) Èi, cÃ...
=item B<--xlate-cache-seed>=I<file>
IniÈializaÈi cache-ul unui document nou din fiÈierul cache al altui document. Util pentru rapoarte periodice: iniÈializaÈi cache-ul noului numÄr cu cel al numÄrului anterior, astfel încât paragrafele neschimbate sÄ nu fie retraduse Èi para...
=item B<--xlate-anonymize>=I<file>
AnonimizaÈi Èirurile sensibile înainte ca acestea sÄ fie trimise cÄtre API-ul de traducere Èi restauraÈi-le în ieÈire. FiÈierul dicÈionar oferÄ câte o intrare pentru fiecare element: în JSON (canonic, generabil de maÈinÄ)
[ { "category": "person", "text": "å±±ç°å¤ªé" },
{ "category": "company", "regex": "ã¢ã¯ã¡(æ ªå¼ä¼ç¤¾)?" } ]
sau într-un format simplu pe linii (C<category pattern>, C</.../> pentru regex). Fiecare element este înlocuit cu o etichetÄ de categorie precum C<< <person id=1 /> >>; acelaÈi Èir primeÈte întotdeauna aceeaÈi etichetÄ, astfel încât modelu...
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 front matter pot avea un comentariu final numai pe propria lor linie, nu dupÄ valoare.
=item B<--xlate-anonymize-mark>[=I<regex>]
ColectaÈi intrÄri de anonimizare din marcaje inline în documentul însuÈi. MarcaÈi prima apariÈie ca C<{{ person("å±±ç°å¤ªé") }}> Èi fiecare apariÈie a Èirului în întregul document este anonimizatÄ. Marcajul însuÈi rÄmâne în sursÄ...
ReÈineÈi cÄ, pentru o opÈiune cu valoare opÈionalÄ ca aceasta, un argument de fiÈier urmÄtor ar fi luat drept valoare: scrieÈi C<--xlate-anonymize-mark=> (cu un C<=> final) când folosiÈi notaÈia implicitÄ.
NotaÈii alternative pot fi configurate, de exemplu C<< --xlate-anonymize-mark='@@(?<category>[a-z][a-z0-9_]*):(?<text>[^\n]+?)@@' >> pentru marcaje în stil C<@@person:NAME@@>, sau o formÄ de comentariu HTML care rÄmâne invizibilÄ Ã®n Markdown r...
=item B<--xlate-template>[=I<regex>]
TrataÈi expresiile de Èablon (implicit: Jinja2 C<{{ ... }}>, C<{% ... %}>, C<{# ... #}>) ca substituenÈi opaci: instruiÈi modelul sÄ le copieze neschimbate Èi verificaÈi, pentru fiecare bloc, cÄ rÄspunsul conÈine exact aceleaÈi expresii, f...
ReÈineÈi cÄ, în cazul unei opÈiuni cu valoare opÈionalÄ ca aceasta, un argument de fiÈier care urmeazÄ ar fi luat drept valoare: scrieÈi C<--xlate-template=> (cu un C<=> la sfârÈit) când utilizaÈi notaÈia implicitÄ.
=item B<--xlate-frontmatter>
TrataÈi un bloc iniÈial C<---> ... C<---> ca front matter YAML: excludeÈi-l de la traducere Èi din feliile de context din faza 2 Èi adÄugaÈi valorile sale plate C<key: value> la regulile de anonimizare (categoria C<var>) ca plasÄ de siguranÈ...
LÄsaÈi întotdeauna o linie goalÄ dupÄ C<---> de închidere. Cu un tipar de potrivire de tip paragraf, front matter-ul care intrÄ direct în textul corpului formeazÄ un singur bloc suprapus pe care excluderea nu îl poate suprima (în acest caz...
=item B<--xlate-glossary>=I<glossary>
SpecificaÈi un ID de glosar care sÄ fie utilizat pentru traducere. AceastÄ opÈiune este disponibilÄ doar atunci când se foloseÈte motorul DeepL. ID-ul glosarului trebuie obÈinut din contul dvs. DeepL Èi asigurÄ traducerea consecventÄ a ter...
=item B<--xlate-dryrun>
Nu apelaÈi API-ul de traducere; în schimb, afiÈaÈi prin afiÈajul de progres fiecare payload exact aÈa cum ar fi transmis (dupÄ anonimizare Èi mascare). Util pentru a verifica ce pÄrÄseÈte maÈina Èi pentru a estima costul unei rulÄri.
=item B<-->[B<no->]B<xlate-progress> (Default: True)
VedeÈi rezultatul traducerii în timp real în ieÈirea STDERR. Payload-ul C<From> este afiÈat aÈa cum a fost transmis, dupÄ anonimizare Èi mascare.
=item B<--xlate-stripe>
FolosiÈi modulul L<App::Greple::stripe> pentru a afiÈa partea potrivitÄ Ã®n stil zebra striping. Acest lucru este util atunci când pÄrÈile potrivite sunt conectate consecutiv.
Paleta de culori este comutatÄ Ã®n funcÈie de culoarea fundalului terminalului. DacÄ doriÈi sÄ specificaÈi explicit, puteÈi folosi B<--xlate-stripe-light> sau B<--xlate-stripe-dark>.
=item B<--xlate-mask>
( run in 0.312 second using v1.01-cache-2.11-cpan-cd2fffc590a )