App-Greple-xlate
view release on metacpan or search on metacpan
i18n/src/xlate.deepl-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> modulul identificÄ 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/>; Sunt incluse, de asemenea, DeepL (F<deepl...
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 B<greple> împreunÄ cu modulele C<--xlate-engine gpt5> Èi C<perl> astfel:
greple -Mxlate --xlate-engine gpt5 -Mperl --pod --re '^([\w\pP].*\n)+' --all foo.pm
Ãn aceastÄ comandÄ, Èirul de modele C<^([\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 B<--all> este uti...
=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Ä. 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 L<git(1)>. Utilizând formatul C<ifdef>, puteÈi obÈine cu uÈurinÈÄ partea doritÄ prin comanda L<unifdef(1)>. Formatul de ieÈire poate ...
=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, utilizaÈi opÈiunea B<--match-all>. Aceasta este o scurtÄturÄ pentru a specifica modelul C<(?s).+> care se potriveÈte cu întregul text.
Datele din formatul markerului de conflict pot fi vizualizate în stil paralel prin comanda L<sdif|App::sdif> cu opÈiunea C<-V>. Deoarece nu are sens sÄ comparaÈi fiecare Èir de caractere, este recomandatÄ opÈiunea C<--no-cdif>. DacÄ nu trebui...
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
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Ä:
=over 2
=item *
Se eliminÄ spaÈiul alb de la începutul Èi sfârÈitul fiecÄrei linii.
=item *
DacÄ o linie se terminÄ cu un caracter de punctuaÈie de lÄÈime maximÄ, concatenarea se face cu linia urmÄtoare.
=item *
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.
=item *
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.
=back
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Ä...
=head1 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 C<MASKPATTERN> ca o expresie regulatÄ, va traduce Èirurile care se potrivesc Èi va reveni la starea iniÈialÄ dupÄ procesare. Liniile care încep cu C<#> 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 B<--xlate-mask>.
Mascarea protejeazÄ marcajul împotriva traducerii. Pentru a ascunde Èirurile sensibile chiar de serviciul de traducere, consultaÈi L</ANONYMIZATION AND TEMPLATES>; ambele opÈiuni pot fi utilizate împreunÄ.
AceastÄ interfaÈÄ este experimentalÄ Èi poate fi modificatÄ Ã®n viitor.
=head1 ANONYMIZATION AND TEMPLATES
Èirurile sensibile pot fi ascunse înainte de a fi trimise cÄtre API-ul de traducere Èi restabilite în rezultatul final. Sunt disponibile trei surse de reguli de anonimizare: un fiÈier dicÈionar (B<--xlate-anonymize>), marcaje încorporate în ...
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 C<--xlate-template> (Èi C<--xlate-frontmatter> când valorile sunt pÄstrate în fiÈier), apoi generaÈi fiecare caz cu B<pandoc-embedz> în modul autonom â valorile de sub C<global:>...
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'
=head1 OPTIONS
=over 7
=item B<--xlate>
=item B<--xlate-color>
=item B<--xlate-fold>
=item B<--xlate-fold-width>=I<n> (Default: 70)
InvocaÈi procesul de traducere pentru fiecare zonÄ corespunzÄtoare.
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 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 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 pliat cu lÄÈimea specificatÄ. LÄÈimea implicitÄ este 70 Èi poate fi stabilitÄ prin opÈiunea B<--xlate-fold-width>. Patru coloane sunt rezervate pentru operaÈiunea de rulare, astfel încât...
=item B<--xlate-engine>=I<engine>
SpecificÄ motorul de traducere care urmeazÄ sÄ fie 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 motorului sunt cÄutate mai întâi în spaÈiile de nume din 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<gpt...
=item B<--xlate-labor>
=item B<--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 clipboar...
=item B<--xlate-to> (Default: C<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 C<deepl languages> atunci când utiliza...
=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 non-implicitÄ este, de asemenea, transmisÄ ca limbÄ sursÄ.
=item B<--xlate-format>=I<format> (Default: C<conflict>)
SpecificaÈi formatul de ieÈire pentru textul original Èi cel tradus.
UrmÄtoarele formate, altele decât C<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 C<xtxt> nu va produce ...
=over 4
=item B<conflict>, B<cm>
Textul original Èi cel convertit sunt tipÄrite în formatul de marker de conflict L<git(1)>.
<<<<<<< ORIGINAL
original text
=======
translated Japanese text
>>>>>>> JA
PuteÈi recupera fiÈierul original prin urmÄtoarea comandÄ L<sed(1)>.
sed -e '/^<<<<<<< /d' -e '/^=======$/,/^>>>>>>> /d'
=item B<colon>, I<:::::::>
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 C<:::::>, aceasta este utilizatÄ Ã®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 recupera doar textul japonez prin 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 singurÄ linie albÄ. Pentru C<space+>, se tipÄreÈte Èi o linie nouÄ dupÄ textul convertit.
=item B<xtxt>
DacÄ formatul este C<xtxt> (text tradus) sau necunoscut, se tipÄreÈte numai textul tradus.
=back
=item B<--xlate-maxlen>=I<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 (B<--xlate>) È...
=item B<--xlate-maxline>=I<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 C<--xlate-maxlen>.
=item B<--xlate-prompt>=I<text>
SpecificaÈi o solicitare personalizatÄ care sÄ fie trimisÄ motorului de traducere. AceastÄ opÈiune este disponibilÄ pentru motoarele LLM (C<gpt3>, C<gpt4o>, C<gpt5>), dar nu Èi pentru DeepL. PuteÈi personaliza comportamentul traducerii oferi...
=item B<--xlate-context>=I<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 de t...
=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, de asemenea, textul sursÄ brut din jurul regiunii modificate (titluri, structura listei, legende)...
=item B<--xlate-cache-seed>=I<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 sÄ...
=item B<--xlate-anonymize>=I<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, generabil a...
[ { "category": "person", "text": "å±±ç°å¤ªé" },
{ "category": "company", "regex": "ã¢ã¯ã¡(æ ªå¼ä¼ç¤¾)?" } ]
sau într-un format simplu pe linii (C<category pattern>, C</.../> pentru expresii regulate). Fiecare element este înlocuit cu o etichetÄ de categorie, cum ar fi C<< <person id=1 /> >>; acelaÈi Èir primeÈte întotdeauna aceeaÈi etichetÄ, astfe...
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.
=item B<--xlate-anonymize-mark>[=I<regex>]
ColectaÈi intrÄrile de anonimizare din marcajele încorporate din documentul însuÈi. MarcaÈi prima apariÈie ca C<{{ person("å±±ç°å¤ªé") }}> Èi fiecare apariÈie a Èirului în întregul document va fi anonimizatÄ. Marca în sine rÄmâne Ã...
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 C<--xlate-anonymize-mark=> (cu un C<=> la sfârÈit) atunci când utilizaÈi notaÈia implicitÄ.
Se pot configura notaÈii alternative, de exemplu C<< --xlate-anonymize-mark='@@(?<category>[a-z][a-z0-9_]*):(?<text>[^\n]+?)@@' >> pentru marcaje de tip C<@@person:NAME@@>, sau o formÄ de comentariu HTML care rÄmâne invizibilÄ Ã®n Markdown-ul re...
=item B<--xlate-template>[=I<regex>]
TrateazÄ expresiile Èablonului (implicit: Jinja2 C<{{ ... }}>, C<{% ... %}>, C<{# ... #}>) ca substituenÈi opaci: instruieÈte modelul sÄ le copieze nemodificate Èi verificÄ, pentru fiecare bloc, dacÄ rÄspunsul conÈine exact aceleaÈi expres...
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 C<--xlate-template=> (cu un C<=> la sfârÈit) atunci când utilizaÈi notaÈia implicitÄ.
=item B<--xlate-frontmatter>
TrataÈi un bloc C<---> de la început... C<---> 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 C<key: value> la regulile de anonimizare (categoria C<var>) ca m...
LÄsaÈi întotdeauna o linie goalÄ dupÄ eticheta de închidere C<--->. 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 exclude...
=item B<--xlate-glossary>=I<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 consecv...
=item B<--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 pentr...
=item B<-->[B<no->]B<xlate-progress> (Default: True)
VedeÈi rezultatul traducerii în timp real în ieÈirea STDERR. Datele C<From> sunt afiÈate aÈa cum sunt transmise, dupÄ anonimizare Èi mascare.
=item B<--xlate-stripe>
UtilizaÈi modulul L<App::Greple::stripe> 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.
Paleta de culori este comutatÄ Ã®n funcÈie de culoarea de fundal a terminalului. DacÄ doriÈi sÄ specificaÈi explicit, puteÈi utiliza B<--xlate-stripe-light> sau B<--xlate-stripe-dark>.
=item B<--xlate-mask>
( run in 0.326 second using v1.01-cache-2.11-cpan-cd2fffc590a )