PO4A-GETTEXTIZE.1P(1)

NUME
po4a-gettextize - convertește un fișier original (și traducerea sa) într-un fișier PO

SINOPSIS
po4a-gettextize -f fmt -m principal.doc -l XX.doc -p XX.po

(XX.po este ieșirea, toate celelalte sunt intrările)

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 po4a(7) pentru o introducere ușoară în acest proiect.

Scriptul po4a-gettextize 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.

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 msgmerge pentru a fuziona toate fișierele PO produse. După cum doriți.

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.

OPȚIUNI

-f, --format
    Formatul documentației pe care doriți să o gestionați. Utilizați opțiunea --help-format pentru a vedea lista de formate disponibile.

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

-M, --master-charset
    Setul de caractere al fișierului care conține documentul de tradus.

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

-L, --localized-charset
    Setul de caractere al fișierului care conține documentul localizat.

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

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

-h, --help
    Afișează un scurt mesaj de ajutor.

--help-format
    Enumeră formatele de documentație înțelese de po4a.

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

-V, --version
    Afișează versiunea scriptului și iese.

-v, --verbose
    Crește nivelul de detaliere al programului.

-d, --debug
    Afișează unele informații de depanare.

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

--copyright-holder șir
    Definește deținătorul drepturilor de autor în antetul POT. Valoarea implicită este „Free Software Foundation, Inc.”

--package-name șir
    Definește numele pachetului pentru antetul POT. Valoarea implicită este „PACKAGE”.

--package-version șir
    Definește versiunea pachetului pentru antetul POT. Valoarea implicită este „VERSION”.

  Conversia unei traduceri manuale în po4a
po4a-gettextize sincronizează fișierele principale și localizate pentru a extrage conținutul acestora într-un fișier PO. Conținutul fișierului principal dă msgid, în timp ce conținutul fișierului localizat dă msgstr. 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.

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.

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.

    Original         Traducerea

  capitol            capitol
    paragraf           paragraf
    paragraf           paragraf
    paragraf         capitol
  capitol              paragraf
    paragraf           paragraf

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

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

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.

Sfaturi și trucuri pentru procesul de „gettextizare”

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. po4a-gettextize 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 gettextization.failed.po pentru o inspecție ulterioară.

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ă:

•   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 po4a ca addenda (a se vedea po4a(7)).

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

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

•   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 po4a înainte de a modifica fișierele originale.

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

    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 =item și conținutul articolului.

•   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 gettextization.failed.po care a fost produs și rezolvați problema acolo unde este cu adevărat.

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

  Revizuirea fișierelor produse de po4a-gettextize
Orice fișier produs de po4a-gettextize 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ă msgid și msgstr 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.

Din fericire, acest pas nu necesită cunoașterea limbilor țintă, deoarece doriți doar să recunoașteți elemente similare în fiecare msgid și msgstr 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.

Dacă detectați o nepotrivire, editați fișierele original și de traducere ca și cum po4a-gettextize 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.

  Rulând po4a pentru prima dată
Cel mai simplu mod de a configura po4a este să scrieți un fișier de configurare po4a.conf și să utilizați programul integrat po4a (po4a-updatepo și po4a-translate sunt depreciate). Vă rugăm să consultați secțiunea „FIȘIERUL DE CONFIGURARE” din documentația po4a(1) pentru mai multe detalii.

Când po4a 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 msgid-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.

  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 po4a-gettextization, 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ă.

Odată ce sunt eliminate suficiente marcaje „fuzzy” (de traducere aproximativă), po4a 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 po4a.

CONSULTAȚI ȘI
po4a(1), po4a-normalize(1), po4a-translate(1), po4a-updatepo(1), po4a(7).

AUTORI
 Denis Barbier <barbier@linuxfr.org>
 Nicolas François <nicolas.francois@centraliens.net>
 Martin Quinson (mquinson#debian.org)

DREPTURI DE AUTOR și LICENȚĂ
Drepturi de autor 2002-2023 pentru SPI, inc.

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