LOCALE::PO4A::SGML.3PM(1)

NUME
Locale::Po4a::Sgml - convertește documente SGML din/în fișiere PO

DESCRIERE
Scopul proiectului po4a (PO pentru orice) este de a ușura traducerile (și mai interesant, întreținerea traducerilor) folosind instrumente gettext în domenii în care nu erau așteptate, cum ar fi documentația.

Locale::Po4a::Sgml este un modul care ajută la traducerea documentației în format SGML în alte limbi [umane].

Acest modul utilizează onsgmls(1) pentru a analiza fișierele SGML. Asigurați-vă că acesta este instalat. De asemenea, asigurați-vă că DTD-ul fișierelor SGML este instalat în sistem.

OPȚIUNI ACCEPTATE DE ACEST MODUL

debug
    Listă de cuvinte cheie separate prin spații care indică categoria de mesaje suplimentare de depanare care ar trebui afișate. Valorile posibile sunt: "entities", "generic", "onsgml", "refs" și "tag".

verbose
    Oferă mai multe informații despre ceea ce se întâmplă.

translate
    Listă separată prin spații de etichete suplimentare (pe lângă cele furnizate de DTD) al căror conținut ar trebui să formeze un msgid suplimentar, adică care ar trebui tradus.

section
    Listă separată prin spații de etichete suplimentare (pe lângă cele furnizate de DTD) care conțin alte etichete, unele dintre ele fiind din categoria translate.

indent
    Listă de etichete separate prin spații care măresc nivelul de indentare. Acest lucru va afecta indentarea în documentul rezultat.

verbatim
    Aspectul din cadrul acestor etichete nu trebuie modificat. Paragraful nu va fi încadrat și nu vor fi adăugate spații suplimentare de indentare sau linii noi în scop cosmetic.

empty
    Etichetele nu trebuie să fie închise.

ignore
    Etichete ignorate și considerate de po4a ca date simple de tip caracter. Aceasta înseamnă că ele pot face parte dintr-un msgid. De exemplu, <b> este un bun candidat pentru această categorie, deoarece plasarea sa în secțiunea translate ar crea un msgids numai cu conținutul său, (și de obicei nu este o propoziție întreagă), ceea ce este greșit.

attributes
    O listă de atribute separate prin spații care trebuie să fie traduse. Puteți specifica atributele după numele lor (de exemplu, "lang"), dar puteți, de asemenea, să le prefixați cu o ierarhie de etichete, pentru a specifica faptul că acest atribut va fi tradus numai atunci când se află în eticheta specificată. De exemplu: "<bbb><aaa>lang" specifică faptul că atributul lang va fi tradus numai dacă se află într-un tag "<aaa>", care se află într-un tag "<bbb>". Numele etichetelor sunt de fapt expresii regulate, astfel încât puteți scrie și lucruri precum "<aaa|bbb>lang" pentru a traduce numai atributele "lang" care sunt într-o etichetă "<aaa>" sau "<bbb>".

qualify
    O listă de atribute separate prin spații pentru care traducerea trebuie calificată prin numele atributului, adică textul extras pentru traducere va include atât numele atributului, cât și valoarea acestuia. de exemplu, pentru o etichetă precum "<aaa lang_en="foo">" traducătorilor li se va prezenta șirul "lang_en="foo"". Rețineți că acest lucru adaugă automat atributul dat și în lista attributes.

force
    Continuă chiar dacă DTD-ul este necunoscut sau dacă onsgmls găsește erori în fișierul de intrare.

include-all
    În mod implicit, msgid-urile care conțin o singură entitate (precum "&version;") sunt ignorate pentru confortul traducătorilor. Activarea acestei opțiuni împiedică această optimizare. Poate fi utilă dacă documentul conține o construcție precum "<title>&Aacute;</title>", chiar dacă mă îndoiesc că astfel de lucruri se vor întâmpla vreodată...

ignore-inclusion
    Listă de entități separate prin spații care nu vor fi inserate. Utilizați această opțiune cu precauție: poate determina onsgmls (utilizat intern) să adauge etichete și să facă documentul de ieșire nevalid.

STAREA ACESTUI MODUL
Rezultatul este perfect. Adică, documentele generate sunt exact la fel ca originalele. Dar există încă unele probleme:

•   Ieșirea de eroare a onsgmls este redirecționată implicit către „/dev/null”, ceea ce este clar rău. Nu știu cum să evit asta.

    Problema este că trebuie să „protejez” incluziunile condiționate (adică chestiile "<! [ %foo [" și "]]>") de onsgmls. În caz contrar, onsgmls le mănâncă, iar eu nu știu cum să le restaurez în documentul final. Pentru a preveni acest lucru, le rescriu în "{PO4A-beg-foo}" și "{PO4A-end}".

    Problema este că "{PO4A-end}" și altele pe care le adaug nu sunt valide în document (nu într-o etichetă <p> sau așa ceva).

    Dacă doriți să vizualizați rezultatul onsgmls, trebuie doar să adăugați următorul text la linia de comandă (sau la linia de configurare po4a):

      -o debug=onsgmls

•   Funcționează numai cu DTD-urile DebianDoc și DocBook. Adăugarea suportului pentru un nou DTD ar trebui să fie foarte ușoară. Mecanismul este același pentru fiecare DTD, trebuie doar să furnizați o listă a etichetelor existente și unele dintre caracteristicile lor.

    Sunt de acord, acest lucru are nevoie de mai multă documentație, dar este încă considerat beta și nu-mi place să documentez lucruri care se pot/vor schimba.

•   Atenție, suportul pentru DTD-uri este destul de experimental. Nu am citit niciun manual de referință pentru a găsi definiția fiecărei etichete. Am adăugat definiții de etichete la modul până când a funcționat pentru unele documente pe care le-am găsit în internet. Dacă documentul dvs. utilizează mai multe etichete decât al meu, nu va funcționa. Dar, așa cum am spus mai sus, remedierea acestui lucru ar trebui să fie destul de ușoară.

    Am testat DocBook doar pe SAG („System Administrator Guide”: Ghidul administratorului de sistem), dar acest document este destul de mare și ar trebui să utilizeze majoritatea specificităților DocBook.

    Pentru DebianDoc, am testat unele dintre manualele din DDP, dar nu toate încă.

•   În cazul includerii unui fișier, referința de șir de caractere a mesajelor din fișierele PO (de exemplu, linii precum "#: en/titletoc.sgml:9460") va fi greșită.

    Acest lucru se datorează faptului că preprocesez fișierul pentru a proteja includerea condiționată (de exemplu, chestiunea "<! [ %foo [" and "]]>") și unele entități (cum ar fi "&version;") de onsgmls, deoarece le vreau textuale pentru documentul generat. Pentru aceasta, fac o copie temporară a fișierului de intrare și efectuez toate modificările pe care le doresc la acesta înainte de a-l transmite lui onsgmls pentru analizare.

    Pentru a funcționa, înlocuiesc entitățile care solicită includerea unui fișier cu conținutul fișierului dat (astfel încât să pot proteja și ceea ce trebuie să fie într-un subfișier). Dar nimic nu se face până acum pentru a corecta referințele (adică numele fișierului și numărul liniei) după aceea. Nu sunt sigur care este cel mai bun lucru de făcut.

AUTORI
Acest modul este o versiune adaptată a sgmlspl (postprocesor SGML pentru analizatorul ONSGMLS) care a avut:

 Drepturi de autor © 1995 David Megginson <dmeggins@aix1.uottawa.ca>

Adaptarea pentru po4a a fost făcută de:

 Denis Barbier <barbier@linuxfr.org>
 Martin Quinson (mquinson#debian.org)

DREPTURI DE AUTOR și LICENȚĂ
 Drepturi de autor © 1995 David Megginson <dmeggins@aix1.uottawa.ca>.
 Drepturi de autor © 2002-2005 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).