.\" -*- 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-GETTEXTIZE.1P 1" .TH PO4A-GETTEXTIZE.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\-gettextize \- convertește un fișier original (și traducerea sa) într\-un fișier PO .SH SINOPSIS .IX Header "SINOPSIS" \&\fBpo4a\-gettextize\fR \fB\-f\fR \fIfmt\fR \fB\-m\fR \fIprincipal.doc\fR \fB\-l\fR \fIXX.doc\fR \fB\-p\fR \&\fIXX.po\fR .PP (\fIXX.po\fR este ieșirea, toate celelalte sunt intrările) .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 Scriptul \fBpo4a\-gettextize\fR vă ajută să convertiți traducerile existente anterior într\-un flux de lucru bazat pe po4a. Acest lucru trebuie făcut o singură dată pentru a salva o traducere existentă în timpul conversiei în po4a, nu în mod regulat după conversia proiectului dvs. Acest proces anevoios este explicat în detaliu în secțiunea „Conversia unei traduceri manuale în po4a” de mai jos. .PP Trebuie să furnizați atât un fișier principal (de exemplu, sursa în limba engleză), cât și un fișier tradus existent (de exemplu, o încercare anterioară de traducere fără po4a). Dacă furnizați mai multe fișiere principale sau de traducere, acestea vor fi utilizate în succesiune, dar poate fi mai ușor să „gettextizați” fiecare pagină sau capitol separat și apoi să utilizați \fBmsgmerge\fR pentru a fuziona toate fișierele PO produse. După cum doriți. .PP Dacă documentul principal are caractere non\-ASCII, noul fișier PO generat va fi în UTF\-8. Dacă documentul principal este complet în ASCII, PO generat va utiliza codificarea documentului de intrare tradus. .SH OPȚIUNI .IX Header "OPȚIUNI" .IP "\fB\-f\fR, \fB\-\-format\fR" 4 .IX Item "-f, --format" Formatul documentației pe care doriți să o gestionați. Utilizați opțiunea \&\fB\-\-help\-format\fR pentru a vedea lista de formate disponibile. .IP "\fB\-m\fR, \fB\-\-master\fR" 4 .IX Item "-m, --master" Fișier care conține documentul principal de tradus. Puteți utiliza această opțiune de mai multe ori dacă doriți să „gettextizați” mai multe documente. .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-M, --master-charset" Setul de caractere al fișierului care conține documentul de tradus. .IP "\fB\-l\fR, \fB\-\-localized\fR" 4 .IX Item "-l, --localized" Fișier care conține documentul localizat (tradus). Dacă ați furnizat mai multe fișiere principale, este posibil să doriți să furnizați mai multe fișiere localizate prin utilizarea acestei opțiuni de mai multe ori. .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-L, --localized-charset" Setul de caractere al fișierului care conține documentul localizat. .IP "\fB\-p\fR, \fB\-\-po\fR" 4 .IX Item "-p, --po" Fișier în care ar trebui scris catalogul de mesaje. Dacă nu este dat, catalogul de mesaje va fi scris la ieșirea standard. .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\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Afișează un scurt mesaj de ajutor. .IP \fB\-\-help\-format\fR 4 .IX Item "--help-format" Enumeră formatele de documentație înțelese de po4a. .IP "\fB\-k\fR \fB\-\-keep\-temps\fR" 4 .IX Item "-k --keep-temps" Păstrează fișierele principale temporare și fișierele POT localizate construite înainte de fuzionare. Acest lucru poate fi util pentru a înțelege de ce aceste fișiere se desincronizează, ducând la probleme de gettextizare. .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\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" Afișează unele informații de depanare. .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 "Conversia unei traduceri manuale în po4a" .IX Subsection "Conversia unei traduceri manuale în po4a" \&\fBpo4a\-gettextize\fR sincronizează fișierele principale și localizate pentru a extrage conținutul acestora într\-un fișier PO. Conținutul fișierului principal dă \fBmsgid\fR, în timp ce conținutul fișierului localizat dă \&\fBmsgstr\fR. Acest proces este oarecum fragil: al N\-lea șir din fișierul tradus ar trebui să fie traducerea celui de\-al N\-lea șir din original. .PP Gettextizarea funcționează cel mai bine dacă reușiți să recuperați versiunea exactă a documentului original care a fost utilizat pentru traducere. Chiar și așa, este posibil să fie nevoie să vă descurcați atât cu fișierele principale, cât și cu cele localizate pentru a le alinia structura dacă aceasta a fost modificată de traducătorul original, astfel încât este recomandat să lucrați pe copii ale fișierelor. .PP La nivel intern, fiecare analizator po4a raportează tipul sintactic al fiecărui șir de caractere extras. Acesta este modul în care sunt detectate desincronizările în timpul gettextizării. În exemplul prezentat mai jos, este foarte puțin probabil ca al 4\-lea șir din traducere (de tip „capitol”) să fie traducerea celui de\-al 4\-lea șir din original (de tip „paragraf”). Este mai probabil ca un nou paragraf să fi fost adăugat la original sau ca două paragrafe originale să fi fost fuzionate în traducere. .PP .Vb 1 \& Original Traducerea \& \& capitol capitol \& paragraf paragraf \& paragraf paragraf \& paragraf capitol \& capitol paragraf \& paragraf paragraf .Ve .PP \&\fBpo4a\-gettextize\fR va diagnostica foarte detaliat orice desincronizare a structurii. Atunci când se întâmplă acest lucru, ar trebui să editați manual fișierele pentru a adăuga paragrafe false sau pentru a elimina unele conținuturi ici și colo până când structura ambelor fișiere se potrivește cu adevărat. Mai jos sunt prezentate câteva trucuri pentru a salva cea mai mare parte din traducerea existentă în acest timp. .PP Dacă sunteți suficient de norocos să aveți o potrivire perfectă în structurile de fișiere din cutie, construirea unui fișier PO corect este o chestiune de secunde. În caz contrar, veți înțelege în curând de ce acest proces are un nume atât de urât :) Chiar și așa, „gettextizarea” rămâne adesea mai rapidă decât traducerea din nou a tot. Am „gettextizat” traducerea în franceză a întregii documentații Perl într\-o singură zi, în ciuda \fImultor\fR probleme de sincronizare. Având în vedere cantitatea de text (2 Mo de text original), reînceperea traducerii fără a salva mai întâi vechile traduceri ar fi necesitat mai multe luni de muncă. În plus, această muncă brută este prețul de plătit pentru a obține confortul po4a. Odată convertită, sincronizarea între documentele principale și traduceri va fi întotdeauna complet automată. .PP După o gettextizare reușită, documentele produse ar trebui să fie verificate manual pentru disparități nedetectate și erori silențioase, după cum se explică mai jos. .PP \fISfaturi și trucuri pentru procesul de „gettextizare”\fR .IX Subsection "Sfaturi și trucuri pentru procesul de „gettextizare”" .PP Gettextizarea se oprește imediat ce este detectată o desincronizare. Când se întâmplă acest lucru, trebuie să editați fișierele atât cât este necesar pentru a realinia structurile fișierelor. \fBpo4a\-gettextize\fR este destul de „guraliv” atunci când lucrurile merg prost. Acesta raportează șirurile care nu se potrivesc, pozițiile lor în text și tipul fiecăruia dintre ele. În plus, fișierul PO generat până acum este transferat ca \&\fIgettextization.failed.po\fR pentru o inspecție ulterioară. .PP Iată câteva trucuri pentru a vă ajuta în acest proces anevoios și pentru a vă asigura că salvați cea mai mare parte din traducerea anterioară: .IP \(bu 4 Eliminați tot conținutul suplimentar al traducerilor, cum ar fi secțiunea care oferă credite (recunoașterea meritelor, mulțumiri, ș.a.) traducătorilor. Acestea ar trebui adăugate separat la \fBpo4a\fR ca addenda (a se vedea \fBpo4a\fR\|(7)). .IP \(bu 4 Când editați fișierele pentru a le alinia structurile, preferați editarea traducerii, dacă este posibil. Într\-adevăr, dacă modificările aduse originalului sunt prea intruzive, versiunile veche și nouă nu vor fi comparate în timpul primei execuții po4a după „gettextizarea” (a se vedea mai jos). Orice traducere nepotrivită va fi oricum abandonată. Acestea fiind spuse, doriți în continuare să editați documentul original în cazul în care este prea greu să obțineți „gettextizarea” pentru a continua altfel, chiar dacă aceasta înseamnă că un paragraf din traducere este aruncat. Important este să obțineți un prim fișier PO pentru a începe. .IP \(bu 4 Nu ezitați să eliminați orice conținut original care nu ar exista în versiunea tradusă. Acest conținut va fi reintrodus automat ulterior, la sincronizarea fișierului PO cu documentul. .IP \(bu 4 Probabil că ar trebui să informați autorul original cu privire la orice modificare structurală în traducere care pare justificată. Problemele din documentul original ar trebui raportate autorului. Rezolvarea lor în traducerea dvs. le rezolvă doar pentru o parte a comunității. În plus, este imposibil să faceți acest lucru atunci când utilizați po4a ;) Dar probabil doriți să așteptați până la sfârșitul conversiei la \fBpo4a\fR înainte de a modifica fișierele originale. .IP \(bu 4 Uneori, conținutul paragrafelor se potrivește, dar nu și tipurile lor. Rezolvarea depinde mai degrabă de format. În POD și man, aceasta provine adesea din faptul că unul dintre ele conține un rând care începe cu un spațiu alb, în timp ce celălalt nu. În aceste formate, un astfel de paragraf nu poate fi încadrat și devine astfel un tip diferit. Îndepărtați spațiul și sunteți în regulă. De asemenea, poate fi vorba de o greșeală de dactilografiere a numelui etichetei în XML. .Sp De asemenea, două paragrafe pot fi îmbinate în POD atunci când linia de separare conține câteva spații sau când nu există o linie goală între linia \&\fB=item\fR și conținutul articolului. .IP \(bu 4 Uneori, mesajul de desincronizare pare ciudat deoarece traducerea este atașată la paragraful original greșit. Acesta este semnul unei probleme nedetectate mai devreme în proces. Căutați punctul real de desincronizare prin inspectarea fișierului \fIgettextization.failed.po\fR care a fost produs și rezolvați problema acolo unde este cu adevărat. .IP \(bu 4 Alte probleme pot proveni din șiruri de caractere duplicate, fie în original, fie în traducere. Șirurile duplicate sunt fuzionate în fișierele PO, cu două referințe. Acest lucru constituie o dificultate pentru algoritmul de gettextizare, care este o simplă împerechere unu la unu între \&\fBmsgid\fR\-urile din fișierele principale și cele localizate. Cu toate acestea, se crede că versiunile recente ale po4a tratează în mod corespunzător șirurile duplicate, astfel încât ar trebui să raportați orice problemă rămasă pe care o puteți întâlni. .SS "Revizuirea fișierelor produse de \fBpo4a\-gettextize\fP" .IX Subsection "Revizuirea fișierelor produse de po4a-gettextize" Orice fișier produs de \fBpo4a\-gettextize\fR trebuie revizuit manual, chiar și atunci când scriptul se încheie cu succes. Ar trebui să treceți cu vederea fișierul PO, asigurându\-vă că \fBmsgid\fR și \fBmsgstr\fR corespund efectiv. Nu este încă necesar să vă asigurați că traducerea este perfect corectă, deoarece toate intrările sunt oricum marcate ca traduceri neclare. Trebuie doar să verificați dacă există probleme evidente de potrivire, deoarece traducerile cu potrivire proastă vor fi abandonate în etapele următoare, în timp ce ceea ce doriți, este să le salvați. .PP Din fericire, acest pas nu necesită cunoașterea limbilor țintă, deoarece doriți doar să recunoașteți elemente similare în fiecare \fBmsgid\fR și \&\fBmsgstr\fR corespunzător. În calitate de vorbitor de franceză, engleză și ceva germană, pot face acest lucru cel puțin pentru toate limbile europene, chiar dacă nu pot spune un cuvânt din majoritatea acestor limbi. Uneori reușesc să detectez probleme de potrivire în limbile non\-latine uitându\-mă la lungimea șirurilor de caractere, la structura frazelor (se potrivește cantitatea de semne de interogație?) și la alte indicii, dar prefer ca altcineva să revizuiască aceste limbi. .PP Dacă detectați o nepotrivire, editați fișierele original și de traducere ca și cum \fBpo4a\-gettextize\fR ar fi raportat o eroare și încercați din nou. Odată ce aveți un fișier PO decent pentru traducerea dvs. anterioară, faceți o copie de rezervă a acestuia până când po4a funcționează corect. .SS "Rulând \fBpo4a\fP pentru prima dată" .IX Subsection "Rulând po4a pentru prima dată" Cel mai simplu mod de a configura po4a este să scrieți un fișier de configurare \fBpo4a.conf\fR și să utilizați programul integrat \fBpo4a\fR (\fBpo4a\-updatepo\fR și \fBpo4a\-translate\fR sunt depreciate). Vă rugăm să consultați secțiunea „FIȘIERUL DE CONFIGURARE” din documentația \fBpo4a\fR\|(1) pentru mai multe detalii. .PP Când \fBpo4a\fR rulează pentru prima dată, versiunea curentă a documentelor principale va fi utilizată pentru a actualiza fișierele PO care conțin traducerile vechi pe care le\-ați salvat prin „gettextizare”. Acest lucru poate dura destul de mult timp, deoarece multe dintre \fBmsgid\fR\-urile de la „gettextizare” nu corespund exact elementelor din fișierul POT construit din fișierele principale recente. Acest lucru forțează gettext să caute cel mai apropiat folosind un algoritm costisitor de proximitate a șirurilor. De exemplu, prima rulare a traducerii în franceză a documentației Perl (fișier PO de 5,5 MB) a durat aproximativ 48 de ore (da, două zile), în timp ce cele ulterioare durează doar câteva secunde. .SS "Trecerea traducerilor dvs. în producție" .IX Subsection "Trecerea traducerilor dvs. în producție" După această primă execuție, fișierele PO sunt gata pentru a fi revizuite de traducători. Toate intrările au fost marcate ca aproximative (fuzzy) în fișierul PO de către \fBpo4a\-gettextization\fR, forțând revizuirea lor atentă înainte de utilizare. Traducătorii trebuie să examineze fiecare intrare pentru a verifica dacă traducerea salvată corespunde de fapt textului original actual, să actualizeze traducerea în funcție de necesități și să elimine marcajele de traducere aproximativă. .PP Odată ce sunt eliminate suficiente marcaje „fuzzy” (de traducere aproximativă), \fBpo4a\fR va începe să genereze fișierele de traducere pe disc și sunteți gata să treceți fluxul de lucru de traducere la producție. Unele proiecte consideră că este util să se bazeze pe weblate pentru coordonarea între traducători și întreținători, dar acest lucru depășește domeniul de aplicare al \fBpo4a\fR. .SH "CONSULTAȚI ȘI" .IX Header "CONSULTAȚI ȘI" \&\fBpo4a\fR\|(1), \fBpo4a\-normalize\fR\|(1), \fBpo4a\-translate\fR\|(1), \fBpo4a\-updatepo\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).