.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "PO4A.1P 1" .TH PO4A.1P 1 2025-11-22 "perl v5.42.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH NUME .IX Header "NUME" po4a \- actualizează atât fișierele PO, cât și documentele traduse dintr\-o singură lovitură .SH SINOPSIS .IX Header "SINOPSIS" \&\fBpo4a\fR [\fIopțiuni\fR] \fIfișier\-configurare\fR .SH DESCRIERE .IX Header "DESCRIERE" po4a (PO pentru orice) facilitează întreținerea traducerii documentației utilizând instrumentele clasice gettext. Principala caracteristică a po4a este că decuplează traducerea conținutului de structura documentului. Vă rugăm să consultați pagina \fBpo4a\fR\|(7) pentru o introducere ușoară în acest proiect. .PP La execuție, \fBpo4a\fR analizează toate fișierele de documentație specificate în fișierul său de configurare. Acesta actualizează fișierele PO (care conțin traducerea) pentru a reflecta orice modificare a documentației și produce o documentație tradusă prin injectarea traducerii conținutului (găsit în fișierele PO) în structura documentului principal original. .PP La început, fișierele PO conțin doar șirurile care trebuie traduse din documentația originală. Acest format de fișier permite traducătorilor să furnizeze manual o traducere pentru fiecare paragraf extras de \fBpo4a\fR. Dacă documentația este modificată după traducere, \fBpo4a\fR marchează traducerile corespunzătoare ca „fuzzy” (traduceri aproximative) în fișierul PO pentru a solicita o revizuire manuală de către traducători. Traducătorii pot furniza, de asemenea, așa\-numitele „addendum”, care sunt conținuturi suplimentare care precizează, de exemplu, cine a realizat traducerea și cum se pot raporta erorile. .PP .Vb 11 \& documente principale \-\-\-+\-\-\-\->\-\-\-\-\-\-\-\->\-\-\-\-\-\-\->\-\-\-\-\-\-\-+ \& (doc. redactate) | | \& V (execuții po4a) >\-\-\-\-\-+\-\-> documente \& | | | traduse \& fișiere PO existente \-\->\-\-> fişiere PO actualizate >\-+ | \& ^ | | \& | V | \& +\-\-\-\-\-\-\-\-\-\-<\-\-\-\-\-\-\-\-\-<\-\-\-\-\-\-\-+ ^ \& (procesul manual de traducere) | \& | \& addendum \-\->\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ .Ve .PP Fluxul de lucru al \fBpo4a\fR este asincron, potrivit proiectelor de cod\-sursă deschis. Autorii documentației scriu documentele principale în ritmul lor propriu. Traducătorii revizuiesc și actualizează traducerile din fișierele PO. Responsabilii de întreținere reiau \fBpo4a\fR la nevoie, pentru a reflecta în fișierele PO orice modificare a documentației originale și pentru a produce traduceri actualizate ale documentației, prin injectarea celei mai recente traduceri în cea mai recentă structură a documentului. .PP În mod implicit, un anumit document tradus este produs atunci când cel puțin 80% din conținutul său este tradus. Textul netradus este păstrat în limba originală. Documentația produsă amestecă astfel limbile dacă traducerea nu este completă. Puteți modifica pragul de 80% cu opțiunea \fI\-\-keep\fR descrisă mai jos. Rețineți totuși că eliminarea traducerilor de îndată ce acestea nu sunt 100% poate fi descurajantă pentru traducătorii a căror muncă nu va fi aproape niciodată prezentată utilizatorilor, în timp ce prezentarea „traducerilor” care sunt prea incomplete poate fi deranjantă pentru utilizatorii finali. .PP Stocarea fișierelor documentației traduse în sistemul de control al versiunii este probabil o idee proastă, deoarece acestea sunt generate automat. Fișierele prețioase sunt fișierele PO, care conțin munca grea a colegilor traducători. De asemenea, unele persoane consideră că este mai ușor să interacționeze cu traducătorii printr\-o platformă activă în Internet, cum ar fi weblate, dar acest lucru este, desigur, complet opțional. .SS "Tutorial de inițiere rapidă" .IX Subsection "Tutorial de inițiere rapidă" Să presupunem că mențineți un program numit \fBfoo\fR care are o pagină de manual \fIman/foo.1\fR scrisă în limba engleză (limba punte în majoritatea proiectelor de cod sursă deschis, dar \fBpo4a\fR poate fi utilizat din sau către orice limbă). Cu ceva timp în urmă, cineva a furnizat o traducere în limba germană numită \fIman/foo.de.1\fR și a dispărut. Aceasta este o problemă pentru că tocmai ați primit un raport de eroare care spune că documentația dvs. conține o informație grav\-înșelătoare care trebuie corectată în toate limbile, dar nu vorbiți germana, deci puteți modifica doar originalul, nu și traducerea. Acum, un alt contribuitor dorește să contribuie cu o traducere în japoneză, o limbă pe care nici tu nu o stăpânești. .PP Este timpul să vă convertiți documentația în \fBpo4a\fR pentru a vă rezolva coșmarurile legate de întreținerea documentației. Doriți să actualizați documentația atunci când este necesar, doriți să ușurați munca colegilor dvs. traducători și doriți să vă asigurați că utilizatorii dvs. nu văd niciodată o documentație învechită și, prin urmare, înșelătoare. .PP Conversia include două etape: configurarea infrastructurii po4a și convertirea traducerii germane anterioare pentru a salva munca anterioară. Această ultimă parte este realizată utilizând po4a\-gettextize, după cum urmează. După cum se detaliază în documentația \&\fBpo4a\-gettextize\fR\|(1), acest proces rareori este complet automat, dar odată realizat, fișierul \fBde.po\fR care conține traducerea germană poate fi integrat în fluxul de lucru po4a. .PP .Vb 1 \& po4a\-gettextize \-\-format man \-\-master foo.1 \-\-localized foo.de.1 \-\-po de.po .Ve .PP Să configurăm acum po4a. Cu aspectul corespunzător al fișierului, fișierul dvs. de configurare ar putea fi la fel de simplu ca acesta: .PP .Vb 1 \& [po_directory] man/po4a/ \& \& [type: man] man/foo.1 $lang:man/translated/foo.$lang.1 .Ve .PP Aceasta specifică faptul că toate fișierele PO (care conțin munca traducătorilor) se află în directorul \fIman/po4a/\fR și că aveți un singur fișier principal, \fIman/foo.1\fR. Dacă ați avea mai multe fișiere principale, ați avea mai multe linii similare celei de\-a doua. Fiecare astfel de linie specifică, de asemenea, unde să se scrie fișierele de traducere corespunzătoare. Aici, traducerea în limba germană a fișierului \fIman/foo.1\fR este în \fIman/translated/foo.de.1\fR. .PP Ultimul lucru de care avem nevoie pentru a finaliza configurarea \fBpo4a\fR este un fișier POT care conține materialul șablon care ar trebui utilizat pentru a începe o nouă traducere. Creați pur și simplu un fișier gol cu extensia .pot în directorul po_directory specificat (de exemplu, \&\fIman/po4a/foo.pot\fR), iar \fBpo4a\fR îl va umple cu conținutul așteptat. .PP Iată o recapitulare a fișierelor din această configurație: .PP .Vb 7 \& ├── man/ \& │ ├── foo.1 <\- Pagina de manual originală, în limba engleză \& │ ├── po4a/ \& │ │ ├── de.po <\- Traducerea PO în limba germană, de la gettextizare \& │ │ └── foo.pot <\- Șablonul POT al viitoarelor traduceri (gol la început) \& │ └── translated/ <\- Directorul în care vor fi create traducerile \& └── po4a.cfg <\- Fișierul de configurare .Ve .PP Odată configurat, execuția \fBpo4a\fR va analiza documentația, va actualiza fișierul șablon POT, îl va utiliza pentru a actualiza fișierele de traducere PO și le va utiliza pentru a actualiza fișierele de traducere a documentației. Totul într\-o singură comandă: .PP .Vb 1 \& po4a \-\-verbose po4a.cfg .Ve .PP Asta este tot. \fBpo4a\fR este acum complet configurat. După ce ați corectat eroarea din \fIman/foo.1\fR, paragraful incorect din traducerea în germană va fi înlocuit cu textul corectat în engleză. Amestecarea limbilor nu este optimă, dar este singura modalitate de a elimina erorile din traduceri pe care nici măcar nu le înțelegeți și de a vă asigura că conținutul prezentat utilizatorilor nu este niciodată înșelător. Actualizarea traducerii în limba germană este, de asemenea, mult mai ușoară în fișierul PO corespunzător, astfel încât amestecul de limbi poate să nu dureze mult. În cele din urmă, atunci când un traducător japonez dorește să contribuie cu o nouă traducere, ar trebui să redenumească fișierul foo.pot în ja.po și să completeze traducerea. Odată ce aveți acest fișier, introduceți\-l în \fIman/po4a/po/\fR. O pagină tradusă va apărea ca \fIman/translated/foo.ja.1\fR (cu condiția ca o cantitate suficientă de conținut să fie tradusă) atunci când executați din nou \fBpo4a\fR. .SH OPȚIUNI .IX Header "OPȚIUNI" .IP "\fB\-k\fR, \fB\-\-keep\fR" 4 .IX Item "-k, --keep" Pragul minim pentru procentul de traducere pentru a păstra (adică a scrie) fișierul rezultat (implicit: 80). Adică, în mod implicit, fișierele trebuie să fie traduse la cel puțin 80% pentru a fi scrise pe disc. .IP "\fB\-w\fR, \fB\-\-width\fR" 4 .IX Item "-w, --width" Coloana la care ar trebui să încadrăm fișierul rezultat dacă formatul acceptă acest lucru (implicit: 76). Dacă valoarea furnizată este 0 sau negativă, atunci fișierul rezultat nu va fi încadrat deloc. Acest lucru este util în cazul anumitor formate care s\-ar putea rupe atunci când sunt re\-încadrate. .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Afișează un scurt mesaj de ajutor. .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-M, --master-charset" Setul de caractere al fișierelor care conțin documentele de tradus. Rețineți că toate documentele principale trebuie să utilizeze același set de caractere. .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-L, --localized-charset" Setul de caractere al fișierelor care conțin documentele de tradus. Rețineți că toate documentele traduse vor utiliza același set de caractere. .IP "\fB\-A\fR, \fB\-\-addendum\-charset\fR" 4 .IX Item "-A, --addendum-charset" Setul de caractere al addendei. Rețineți că toate addendele trebuie să fie în același set de caractere. .IP "\fB\-V\fR, \fB\-\-version\fR" 4 .IX Item "-V, --version" Afișează versiunea scriptului și iese. .IP "\fB\-v\fR, \fB\-\-verbose\fR" 4 .IX Item "-v, --verbose" Crește nivelul de detaliere al programului. .IP "\fB\-q\fR, \fB\-\-quiet\fR" 4 .IX Item "-q, --quiet" Reduce nivelul de detaliere al programului. .IP "\fB\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" Afișează unele informații de depanare. .IP "\fB\-o\fR, \fB\-\-option\fR" 4 .IX Item "-o, --option" Opțiuni suplimentare pe care să le transmiteți modulului de format. Consultați documentația fiecărui modul pentru mai multe informații despre opțiunile valide și semnificațiile acestora. De exemplu, ați putea transmite „\-o tablecells” analizatorului AsciiDoc, în timp ce analizatorul de text ar accepta „\-o tabs=split”. .IP "\fB\-f\fR, \fB\-\-force\fR" 4 .IX Item "-f, --force" Generează întotdeauna fișierele POT și PO, chiar dacă \fBpo4a\fR consideră că nu este necesar. .Sp Comportamentul implicit (atunci când opțiunea \fB\-\-force\fR nu este specificată) este următorul: .RS 4 .Sp .RS 4 În cazul în care fișierul POT există deja, acesta este regenerat dacă un document principal sau fișierul de configurare este mai recent (cu excepția cazului în care se furnizează \fB\-\-no\-update\fR). De asemenea, fișierul POT este scris într\-un document temporar, iar \fBpo4a\fR verifică dacă modificările sunt într\-adevăr necesare. .Sp De asemenea, o traducere este regenerată numai dacă documentul său principal, fișierul PO, unul dintre addenda sau fișierul de configurare este mai recent. Pentru a evita încercarea de regenerare a traducerilor care nu trec testul pragului (a se vedea \fB\-\-keep\fR), poate fi creat un fișier cu extensia \fI.po4a\-stamp\fR (a se vedea \fB\-\-stamp\fR). .RE .RE .RS 4 .Sp Dacă un document principal include fișiere, trebuie să utilizați marcajul \&\fB\-\-force\fR deoarece timpul de modificare al acestor fișiere incluse nu este luat în considerare. .Sp Fișierele PO sunt întotdeauna re\-generate pe baza POT cu \fBmsgmerge \-U\fR. .RE .IP \fB\-\-stamp\fR 4 .IX Item "--stamp" Îi indică lui \fBpo4a\fR să creeze fișiere ștampilă (marcă\-de\-timp) atunci când o traducere nu este generată deoarece nu atinge pragul. Aceste fișiere ștampilă sunt denumite în funcție de documentul tradus așteptat, cu extensia \&\fI.po4a\-stamp\fR. .Sp Notă: Aceasta activează doar crearea fișierelor \fI.po4a\-stamp\fR. Fișierele ștampilă sunt întotdeauna utilizate dacă există și sunt eliminate cu \&\fB\-\-rm\-translations\fR sau atunci când fișierul este tradus definitiv. .IP \fB\-\-no\-translations\fR 4 .IX Item "--no-translations" Nu generează documentele traduse, ci doar actualizează fișierele POT și PO. .IP \fB\-\-no\-update\fR 4 .IX Item "--no-update" Nu modifică fișierele POT și PO, doar traducerea poate fi actualizată. .IP \fB\-\-keep\-translations\fR 4 .IX Item "--keep-translations" Păstrează fișierele de traducere existente chiar dacă traducerea nu atinge pragul specificat de \fB\-\-keep\fR. Această opțiune nu creează noi fișiere de traducere cu conținut redus, dar va salva traducerile existente care se degradează din cauza modificărilor aduse fișierelor principale. .Sp AVERTISMENT: Această opțiune schimbă comportamentul po4a într\-un mod destul de drastic: fișierele dvs. traduse nu vor fi actualizate deloc până când traducerea nu se îmbunătățește. Utilizați această opțiune numai dacă preferați să trimiteți o documentație tradusă învechită în loc să trimiteți o documentație netradusă corectă. .IP \fB\-\-rm\-translations\fR 4 .IX Item "--rm-translations" Elimină fișierele traduse (implică \fB\-\-no\-translations\fR). .IP \fB\-\-no\-backups\fR 4 .IX Item "--no-backups" Această opțiune nu are niciun efect de la versiunea 0.41 și poate fi eliminată în versiunile ulterioare. .IP \fB\-\-rm\-backups\fR 4 .IX Item "--rm-backups" Această opțiune nu are niciun efect de la versiunea 0.41 și poate fi eliminată în versiunile ulterioare. .IP "\fB\-\-translate\-only\fR \fIfișier\-traducere\fR" 4 .IX Item "--translate-only fișier-traducere" Traduce numai fișierul specificat. Aceasta poate fi utilă pentru a accelera procesarea dacă un fișier de configurare conține multe fișiere. Rețineți că această opțiune nu actualizează fișierele PO și POT. Această opțiune poate fi utilizată de mai multe ori. .IP "\fB\-\-variable\fR \fIvariabilă\fR\fB=\fR\fIvaloare\fR" 4 .IX Item "--variable variabilă=valoare" Definește o variabilă care va fi extinsă în fișierul de configurare \&\fBpo4a\fR. Fiecare apariție a lui \fI$(var)\fR va fi înlocuită cu \&\fIvaloare\fR. Această opțiune poate fi utilizată de mai multe ori. .IP "\fB\-\-target\-lang\fR \fILIMBA\fR" 4 .IX Item "--target-lang LIMBA" Actualizează fișierele PO și generează documente traduse numai pentru limba specificată. Această opțiune poate fi utilizată de mai multe ori. .IP "\fB\-\-srcdir\fR \fIDIR_SURSĂ\fR" 4 .IX Item "--srcdir DIR_SURSĂ" Definește directorul de bază pentru toate documentele de intrare specificate în fișierul de configurare \fBpo4a\fR. .Sp Dacă sunt specificate atât \fIDIR_DESTINAȚIE\fR, cât și \fIDIR_SURSĂ\fR, fișierele de intrare sunt căutate în următoarele directoare, în ordine: \&\fIDIR_DESTINAȚIE\fR, directorul curent și \fIDIR_SURSĂ\fR. Fișierele de ieșire sunt scrise în \fIDIR_DESTINAȚIE\fR, dacă este specificat, sau în directorul curent. .IP "\fB\-\-destdir\fR \fIDIR_DESTINAȚIE\fR" 4 .IX Item "--destdir DIR_DESTINAȚIE" Definește directorul de bază pentru toate documentele de ieșire specificate în fișierul de configurare \fBpo4a\fR (a se vedea opțiunea \fB\-\-srcdir\fR de mai sus). .SS "Opțiuni ce modifică antetul POT" .IX Subsection "Opțiuni ce modifică antetul POT" .IP "\fB\-\-porefs\fR \fItip\fR" 4 .IX Item "--porefs tip" Specifică formatul referinței. Argumentul \fItip\fR poate fi unul dintre \&\fBnever\fR pentru a nu produce nicio referință, \fBfile\fR pentru a specifica doar fișierul fără numărul de linie, \fBcounter\fR pentru a înlocui numărul de linie cu un contor crescător și \fBfull\fR pentru a include referințe complete (implicit: full). .IP "\fB\-\-wrap\-po\fR \fBno\fR|\fBnewlines\fR|\fInumăr\fR (implicit: 76)" 4 .IX Item "--wrap-po no|newlines|număr (implicit: 76)" Specifică modul în care liniile din fișierul po ar trebui să fie încadrate. Acest lucru oferă posibilitatea de a alege între fișiere care sunt bine ajustate ca încadrare, dar ar putea duce la conflicte git, sau fișiere care sunt mai ușor de gestionat automat, dar mai greu de citit pentru oameni. .Sp Din punct de vedere istoric, suita gettext a reformatat fișierele po la a 77\-a coloană pentru cosmetică. Această opțiune specifică comportamentul lui po4a. Dacă este definită la o valoare numerică, po4a va împacheta fișierul po după această coloană și după noile linii din conținut. Dacă este definită la \fBnewlines\fR, po4a va împărți doar msgid și msgstr după linii noi din conținut. Dacă este definită la \fBno\fR, po4a nu va încadra deloc fișierul po. Comentariile de referință sunt întotdeauna încadrate de instrumentele gettext pe care le folosim intern. .Sp Rețineți că această opțiune nu are niciun impact asupra modului în care msgid și msgstr sunt încadrate, adică asupra modului în care sunt adăugate linii noi la conținutul acestor șiruri. .IP \fB\-\-master\-language\fR 4 .IX Item "--master-language" Limba fișierelor sursă care conțin documentele de tradus. Rețineți că toate documentele principale trebuie să utilizeze aceeași limbă. .IP "\fB\-\-msgid\-bugs\-address\fR \fIadresă@poștă.electronică\fR" 4 .IX Item "--msgid-bugs-address adresă@poștă.electronică" Definește adresa de raportare pentru erori din msgid. În mod implicit, fișierele POT create nu au câmpuri Report\-Msgid\-Bugs\-To. .IP "\fB\-\-copyright\-holder\fR \fIșir\fR" 4 .IX Item "--copyright-holder șir" Definește deținătorul drepturilor de autor în antetul POT. Valoarea implicită este „Free Software Foundation, Inc.” .IP "\fB\-\-package\-name\fR \fIșir\fR" 4 .IX Item "--package-name șir" Definește numele pachetului pentru antetul POT. Valoarea implicită este „PACKAGE”. .IP "\fB\-\-package\-version\fR \fIșir\fR" 4 .IX Item "--package-version șir" Definește versiunea pachetului pentru antetul POT. Valoarea implicită este „VERSION”. .SS "Opțiuni pentru modificarea fișierelor PO" .IX Subsection "Opțiuni pentru modificarea fișierelor PO" .IP "\fB\-\-msgmerge\-opt\fR \fIopțiuni\fR" 4 .IX Item "--msgmerge-opt opțiuni" Opțiuni suplimentare pentru \fBmsgmerge\fR(1). .Sp Notă: \fR\f(CB$lang\fR\fB\fR va fi extins la limba curentă. .IP \fB\-\-no\-previous\fR 4 .IX Item "--no-previous" Această opțiune elimină \fB\-\-previous\fR din opțiunile transmise către \&\fBmsgmerge\fR. Acest lucru este necesar pentru a oferi suport versiunilor de \&\fBgettext\fR anterioare versiunii 0.16. .IP \fB\-\-previous\fR 4 .IX Item "--previous" Această opțiune adaugă \fB\-\-previous\fR la opțiunile transmise către \&\fBmsgmerge\fR. Aceasta necesită \fBgettext\fR 0.16 sau o versiune ulterioară și este activată implicit. .SH "FIȘIERUL DE CONFIGURARE" .IX Header "FIȘIERUL DE CONFIGURARE" po4a așteaptă ca argument un fișier de configurare. Acest fișier trebuie să conțină următoarele elemente: .IP \(bu 4 Ruta către fișierele PO și lista de limbi existente în proiect; .IP \(bu 4 Opțional, unele opțiuni globale și așa\-numitele alias de configurare care sunt utilizate ca șabloane pentru a configura fișiere principale individual; .IP \(bu 4 Lista fiecărui fișier principal de tradus, împreună cu parametrii specifici. .PP Toate liniile conțin o comandă între paranteze drepte, urmată de parametrii acesteia. Comentariile încep cu caracterele „#” și continuă până la sfârșitul liniei. Puteți eluda sfârșitul liniei pentru a întinde o comandă pe mai multe linii. .PP Unele exemple complete sunt prezentate pe această pagină, în timp ce alte exemple pot fi găsite în directorul \f(CW\*(C`t/cfg\*(C'\fR al distribuției sursă. .SS "Găsirea fișierelor PO și POT" .IX Subsection "Găsirea fișierelor PO și POT" Cea mai simplă soluție este de a indica în mod explicit ruta către fișierele POT și PO, după cum urmează: .PP .Vb 1 \& [po4a_paths] man/po/project.pot de:man/po/de.po fr:man/po/fr.po .Ve .PP Aceasta specifică mai întâi ruta către fișierul POT și apoi rutele către fișierele PO în limbile germană și franceză. .PP Aceleași informații pot fi scrise după cum urmează pentru a reduce riscul de erori de copiere/lipire: .PP .Vb 2 \& [po4a_langs] fr de \& [po4a_paths] man/po/project.pot $lang:man/po/$lang.po .Ve .PP Componenta \f(CW$lang\fR este extinsă automat folosind lista de limbi furnizată, reducând riscul de erori de copiere/lipire atunci când este adăugată o limbă nouă. .PP Puteți compacta în continuare aceleași informații furnizând doar ruta către directorul care conține proiectul dvs. de traducere, după cum urmează. .PP .Vb 1 \& [po_directory] man/po/ .Ve .PP Directorul furnizat trebuie să conțină un set de fișiere PO, fiecare denumit \&\fIXX.po\fR, \f(CW\*(C`XX\*(C'\fR fiind codul ISO 639\-1 al limbii utilizate în acest fișier. Directorul trebuie să conțină, de asemenea, un singur fișier POT, cu extensia de fișier \f(CW\*(C`.pot\*(C'\fR. Pentru prima rulare, acest fișier poate fi gol, dar trebuie să existe (po4a nu poate ghici numele de utilizat înainte de extensie). .PP Rețineți că trebuie să alegeți doar una dintre variantele \f(CW\*(C`po_directory\*(C'\fR și \&\f(CW\*(C`po4a_paths\*(C'\fR. Prima (\f(CW\*(C`po_directory\*(C'\fR) este mai compactă, reduce și mai mult riscul erorilor de copiere/lipire, dar vă obligă să utilizați structura de proiect și numele de fișiere așteptate. A doua (\f(CW\*(C`po4a_paths\*(C'\fR), este mai explicită, probabil mai ușor de citit și este recomandată atunci când configurați primul proiect cu po4a. .PP \fIFișiere PO centralizate sau divizate?\fR .IX Subsection "Fișiere PO centralizate sau divizate?" .PP În mod implicit, po4a produce un singur fișier PO pentru fiecare limbă țintă, conținând întregul conținut al proiectului dvs. de traducere. Pe măsură ce proiectul dumneavoastră crește, dimensiunea acestor fișiere poate deveni problematică. Atunci când utilizați weblate, este posibil să specificați priorități pentru fiecare segment de traducere (de exemplu, msgid), astfel încât cele importante să fie traduse primele. Totuși, unele echipe de traducători preferă să împartă conținutul în mai multe fișiere. .PP Pentru a avea un fișier PO pentru fiecare fișier principal, trebuie doar să utilizați șirul \f(CW$master\fR în numele fișierelor PO de pe linia \&\f(CW\*(C`[po4a_paths]\*(C'\fR, după cum urmează. .PP .Vb 1 \& [po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po .Ve .PP Cu această linie, po4a va produce fișiere POT și PO separate pentru fiecare document de tradus. De exemplu, dacă aveți 3 documente și 5 limbi, aceasta va avea ca rezultat 3 fișiere POT și 15 fișiere PO. Aceste fișiere sunt denumite după cum se specifică în șablonul \f(CW\*(C`po4a_paths\*(C'\fR, cu \f(CW$master\fR înlocuit cu numele de bază al fiecărui document de tradus. În caz de conflict de nume, puteți specifica fișierul POT de utilizat după cum urmează, cu parametrul \f(CW\*(C`pot=\*(C'\fR. .PP Această caracteristică poate fi utilizată și pentru a grupa mai multe fișiere traduse în același fișier POT. Următorul exemplu produce doar 2 fișiere POT: \fIl10n/po/foo.pot\fR (conținând materialul din \fIfoo/gui.xml\fR) și \&\fIl10n/po/bar.pot\fR (conținând materialul din \fIbar/gui.xml\fR și \&\fIbar/cli.xml\fR). .PP .Vb 5 \& [po4a_langs] de fr ja \& [po4a_paths] l10n/po/$master.pot $lang:l10n/po/$master.$lang.po \& [type: xml] foo/gui.xml $lang:foo/gui.$lang.xml pot=foo \& [type: xml] bar/gui.xml $lang:bar/gui.$lang.xml pot=bar \& [type: xml] bar/cli.xml $lang:bar/cli.$lang.xml pot=bar .Ve .PP În modul divizare, \fBpo4a\fR construiește un compendiu temporar în timpul actualizării PO, pentru a partaja traducerile între toate fișierele PO. În cazul în care două fișiere PO au traduceri diferite pentru același șir de caractere, \fBpo4a\fR va marca acest șir ca fiind fuzzy și va prezenta ambele traduceri în toate fișierele PO care conțin acest șir de caractere. În cazul în care traductorul a eliminat fuzzy\-ul, traducerea este utilizată automat în toate fișierele PO. .SS "Specificarea documentelor de tradus" .IX Subsection "Specificarea documentelor de tradus" De asemenea, trebuie să listați documentele care trebuie traduse. Pentru fiecare fișier principal, trebuie să specificați analizatorul de format care urmează să fie utilizat, locația documentului tradus care urmează să fie produs și, opțional, o anumită configurare. Numele fișierelor trebuie să fie puse între ghilimele sau eludate dacă conțin spații. Iată un exemplu: .PP .Vb 4 \& [type: sgml] "doc/my stuff.sgml" "fr:doc/fr/mon truc.sgml" de:doc/de/mein\e kram.sgml \& [type: man] script fr:doc/fr/script.1 de:doc/de/script.1 \& [type: docbook] doc/script.xml fr:doc/fr/script.xml \e \& de:doc/de/script.xml .Ve .PP Dar, din nou, aceste linii complexe sunt dificil de citit și de modificat, de exemplu atunci când se adaugă un nou limbaj. Este mult mai simplu să reorganizați lucrurile folosind șablonul \f(CW$lang\fR după cum urmează: .PP .Vb 3 \& [type: sgml] doc/my_stuff.sgml $lang:doc/$lang/my_stuff.sgml \& [type: man] script.1 $lang:po/$lang/script.1 \& [type: docbook] doc/script.xml $lang:doc/$lang/script.xml .Ve .SS "Specificarea opțiunilor" .IX Subsection "Specificarea opțiunilor" Există două tipuri de opțiuni: \fIopțiuni po4a\fR sunt valorile implicite ale opțiunilor din linia de comandă po4a, în timp ce \fIopțiuni format\fR sunt utilizate pentru a modifica comportamentul analizatorilor de format. Ca \&\fIopțiuni po4a\fR, ați putea, de exemplu, să specificați în fișierul dvs. de configurare că valoarea implicită a parametrului de linie de comandă \&\fB\-\-keep\fR este 50% în loc de 80%. \fIOpțiunile de format\fR sunt documentate pe pagina specifică a fiecărui modul de analizare, de exemplu \&\fBLocale::Po4a::Xml\fR\|(3pm). Ați putea, de exemplu, să treceți \fBnostrip\fR analizorului XML pentru a nu elimina spațiile din jurul șirurilor extrase. .PP Puteți trece aceste opțiuni pentru un anumit fișier principal sau chiar pentru o anumită traducere a fișierului respectiv, utilizând \f(CW\*(C`opt:\*(C'\fR și \&\f(CW\*(C`opt_XX:\*(C'\fR pentru limba \f(CW\*(C`XX\*(C'\fR. În exemplul următor, opțiunea \fBnostrip\fR este transmisă analizatorului XML (pentru toate limbile), în timp ce pragul va fi redus la 0% pentru traducerea în franceză (care este astfel păstrată întotdeauna). .PP .Vb 1 \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-o nostrip" opt_fr:"\-\-keep 0" .Ve .PP În orice caz, aceste bucăți de configurare trebuie să fie situate la sfârșitul liniei. Declarația fișierelor trebuie să fie prima, apoi addendumul, dacă există (a se vedea mai jos), și apoi doar opțiunile. Gruparea bucăților de configurare nu este foarte importantă, deoarece elementele sunt concatenate intern ca șiruri de caractere. Exemplele următoare sunt toate echivalente: .PP .Vb 3 \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-\-keep 20" opt:"\-o nostrip" opt_fr:"\-\-keep 0" \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-\-keep 20 \-o nostrip" opt_fr:"\-\-keep 0" \& [type:xml] toto.xml $lang:toto.$lang.xml opt:\-\-keep opt:20 opt:\-o opt:nostrip opt_fr:\-\-keep opt_fr:0 .Ve .PP Rețineți că opțiunile specifice fiecărei limbi nu sunt utilizate la crearea fișierului POT. De exemplu, este imposibil să transmiteți \fBnostrip\fR analizatorului doar atunci când creați traducerea în franceză, deoarece același fișier POT este utilizat pentru actualizarea fiecărei limbi. Prin urmare, singurele opțiuni care pot fi specifice unei limbi sunt cele care sunt utilizate la realizarea traducerii, cum ar fi opțiunea \f(CW\*(C`\-\-keep\*(C'\fR. .PP \fIAlias de configurare\fR .IX Subsection "Alias de configurare" .PP Pentru a transmite aceleași opțiuni mai multor fișiere, cel mai bine este să definiți un alias de tip după cum urmează. În exemplul următor, \f(CW\*(C`\-\-keep 0\*(C'\fR este transmis la fiecare traducere italiană folosind acest tip \f(CW\*(C`test\*(C'\fR, adică o extensie a tipului \f(CW\*(C`man\*(C'\fR. .PP .Vb 2 \& [po4a_alias:test] man opt_it:"\-\-keep 0" \& [type: test] man/page.1 $lang:man/$lang/page.1 .Ve .PP De asemenea, puteți extinde un tip existent reutilizând același nume pentru alias, după cum urmează. Aceasta nu este interpretată ca o definiție recursivă eronată. .PP .Vb 2 \& [po4a_alias:man] man opt_it:"\-\-keep 0" \& [type: man] man/page.1 $lang:man/$lang/page.1 .Ve .PP \fIOpțiuni implicite globale\fR .IX Subsection "Opțiuni implicite globale" .PP De asemenea, puteți utiliza liniile \f(CW\*(C`[options]\*(C'\fR pentru a defini opțiuni care trebuie utilizate pentru toate fișierele, indiferent de tipul acestora. .PP .Vb 1 \& [options] \-\-keep 20 \-\-option nostrip .Ve .PP Ca și în cazul opțiunilor din linia de comandă, puteți abrevia parametrii trecuți în fișierul de configurare: .PP .Vb 1 \& [options] \-k 20 \-o nostrip .Ve .PP \fIPrioritatea opțiunilor\fR .IX Subsection "Prioritatea opțiunilor" .PP Opțiunile fiecărei surse sunt concatenate, asigurându\-se că valorile implicite pot fi ușor anulate prin opțiuni mai specifice. Ordinea este următoarea: .IP \(bu 4 Liniile \f(CW\*(C`[options]\*(C'\fR furnizează valori implicite care pot fi anulate de orice altă sursă. .IP \(bu 4 Se utilizează apoi alias de tip. Opțiuniile specifice limbii prevalează asupra celor aplicabile tuturor limbilor. .IP \(bu 4 Opțiunile specifice unui anumit fișier principal prevalează atât asupra celor implicite, cât și asupra celor care provin din pseudonimul de tip. De asemenea, în acest caz, opțiunile specifice limbii prevalează asupra celor globale. .IP \(bu 4 În cele din urmă, parametrii furnizați în linia de comandă \fBpo4a\fR prevalează asupra oricăror opțiuni din fișierul de configurare. .PP \fIExemplu\fR .IX Subsection "Exemplu" .PP Iată un exemplu care arată cum să citați spațiile și ghilimelele: .PP .Vb 1 \& [po_directory] man/po/ \& \& [options] \-\-master\-charset UTF\-8 \& \& [po4a_alias:man] man opt:"\-o \e"mdoc=NAME,SEE ALSO\e"" \& [type:man] t\-05\-config/test02_man.1 $lang:tmp/test02_man.$lang.1 \e \& opt:"\-k 75" opt_it:"\-L UTF\-8" opt_fr:\-\-verbose .Ve .SS "Addendum: Adăugarea de conținut suplimentar în traducere" .IX Subsection "Addendum: Adăugarea de conținut suplimentar în traducere" Dacă doriți să adăugați o secțiune suplimentară la traducere, de exemplu pentru a acorda mulțumiri traducătorului, atunci trebuie să definiți un addendum la linia care definește fișierul principal. Vă rugăm să consultați pagina \fBpo4a\fR\|(7) pentru mai multe detalii privind sintaxa fișierelor addendum. .PP .Vb 2 \& [type: pod] script fr:doc/fr/script.1 \e \& add_fr:doc/l10n/script.fr.add .Ve .PP De asemenea, puteți utiliza șabloane de limbă după cum urmează: .PP .Vb 2 \& [type: pod] script $lang:doc/$lang/script.1 \e \& add_$lang:doc/l10n/script.$lang.add .Ve .PP Dacă un addendum eșuează la aplicare, traducerea este respinsă. .PP \fIModificatori pentru declarația de addendum\fR .IX Subsection "Modificatori pentru declarația de addendum" .PP Modificatorii de addendum pot simplifica fișierul de configurare în cazul în care nu toate limbile furnizează un addendum sau atunci când lista de addendumuri se modifică de la o limbă la alta. Modificatorul este un singur caracter situat înaintea numelui fișierului. .IP \fB?\fR 2 .IX Item "?" Include \fIruta_la_addendum\fR dacă acest fișier există, altfel nu face nimic. .IP \fB@\fR 2 .IX Item "@" \&\fIruta_la_addendum\fR nu este un addendum obișnuit, ci un fișier care conține o listă de addenda, rând pe rând. Fiecare addendum poate fi precedat de modificatori. .IP \fB!\fR 2 .IX Item "!" \&\fIruta_la_addendum\fR (fișierul către care arată) este înlăturat, nu este încărcat și nu va fi încărcat de nicio altă specificație de addendum. .PP Următoarele includ un addendum în orice limbă, dar numai dacă acesta există. Nu este raportată nicio eroare dacă addendumul nu există. .PP .Vb 1 \& [type: pod] script $lang:doc/$lang/script.1 add_$lang:?doc/l10n/script.$lang.add .Ve .PP Următoarele includ o listă de addendumuri pentru fiecare limbă: .PP .Vb 1 \& [type: pod] script $lang:doc/$lang/script.1 add_$lang:@doc/l10n/script.$lang.add .Ve .SS "Filtrarea șirurilor traduse" .IX Subsection "Filtrarea șirurilor traduse" Uneori, doriți să ascundeți anumite șiruri de caractere de procesul de traducere. În acest scop, puteți oferi un parametru \f(CW\*(C`pot_in\*(C'\fR fișierului principal pentru a specifica numele fișierului care urmează să fie utilizat în locul fișierului principal real la construirea fișierului POT. Iată un exemplu: .PP .Vb 3 \& [type:docbook] book.xml \e \& pot_in:book\-filtered.xml \e \& $lang:book.$lang.xml .Ve .PP Cu această configurare, șirurile de caractere de tradus vor fi extrase din \&\fIbook\-filtered.xml\fR (care trebuie produs înainte de a apela \fBpo4a\fR), în timp ce fișierele traduse vor fi construite din \fIbook.xml\fR. Ca urmare, orice șir care face parte din \fIbook.xml\fR, dar nu din \fIbook\-filtered.xml\fR nu va fi inclus în fișierele PO, împiedicând traducătorii să furnizeze o traducere pentru acestea. Astfel, aceste șiruri de caractere vor rămâne nemodificate la producerea documentelor traduse. Acest lucru scade în mod natural nivelul de traducere, astfel încât este posibil să aveți nevoie de opțiunea \f(CW\*(C`\-\-keep\*(C'\fR pentru a vă asigura că documentul este produs oricum. .SH "CONSULTAȚI ȘI" .IX Header "CONSULTAȚI ȘI" \&\fBpo4a\-gettextize\fR\|(1), \fBpo4a\fR\|(7). .SH AUTORI .IX Header "AUTORI" .Vb 3 \& Denis Barbier \& Nicolas François \& Martin Quinson (mquinson#debian.org) .Ve .SH "DREPTURI DE AUTOR și LICENȚĂ" .IX Header "DREPTURI DE AUTOR și LICENȚĂ" Drepturi de autor 2002\-2023 pentru SPI, inc. .PP Acest program este software liber; îl puteți redistribui și/sau modifica în conformitate cu termenii GPL v2.0 sau o versiune ulterioară (consultați fișierul COPYING).