LOCALE::PO4A::MAN.3PM(1) User Contributed Perl Documentation NUME Locale::Po4a::Man - convertete pagini de manual din/in fiiere PO DESCRIERE Scopul proiectului po4a (PO pentru orice) este de a uura traducerile (i mai interesant, intreinerea traducerilor) folosind instrumente gettext in domenii in care nu erau ateptate, cum ar fi documentaia. Locale::Po4a::Man este un modul care ajuta la traducerea documentaiei in format nroff (limba paginilor de manual) in alte limbi [umane]. TRADUCEREA CU PO4A::MAN Acest modul incearca din rasputeri sa faca viaa traducatorului mai uoara. Pentru aceasta, textul prezentat traducatorilor nu este o copie literala a textului gasit in pagina de manual. Intr-adevar, parile mai grosolane ale formatului nroff sunt ascunse, astfel incat traducatorii sa nu se poata incurca cu ele. Incadrarea textului Paragrafele neindentate sunt in mod automat re-incadrate pentru traducator. Acest lucru poate duce la unele diferene minore in rezultatul generat, deoarece regulile de reformulare utilizate de groff nu sunt foarte clare. De exemplu, doua spaii dupa o paranteza sunt uneori pastrate. Oricum, diferena va fi doar in ceea ce privete poziia spaiilor suplimentare in paragraful incadrat, i cred ca merita. Specificarea fontului Prima modificare se refera la specificaiile de schimbare a fontului. In nroff, exista mai multe modalitai de a specifica daca un anumit cuvant ar trebui sa fie scris cu litere mici, aldine sau cursive. In textul de tradus, exista o singura modalitate, imprumutata din formatul POD (documentaia in linie Perl): I -- text cursiv echivalent cu \fItext\fP sau ".I text" B -- text aldin echivalent cu \fBtext\fP sau ".B text" R -- text normal (roman) echivalent cu \fRtext\fP CW -- text cu laime constanta echivalent cu \f(CWtext\fP sau ".CW text" Observaie: Aspectul CW al fontului nu este disponibil pentru toate dispozitivele Groff. Nu este recomandata utilizarea acestuia. Acesta este furnizat pentru confortul dumneavoastra. Transliterarea automata a caracterelor Po4a translitera automat unele caractere pentru a facilita traducerea sau revizuirea traducerii. Aici este lista transliterarilor: cratime Cratimele (-) i semnele minus (\-) din paginile de manual sunt toate transliterate ca liniue simple (-) in fiierul PO. Apoi, toate liniuele sunt transliterate in semne minus roff (\-) atunci cand traducerea este inserata in documentul de ieire. Traducatorii pot fora o cratima prin utilizarea glifului roff ,,\[hy]" in traducerile lor. spaii rigide Traducatorii pot utiliza spaii fara pauza in traducerile lor. Aceste spaii rigide (0xA0 in latin1) vor fi transliterate intr-un spaiu fara pauza roff ('\ '). transliteraii de ghilimele Ghilimelele `` i '' sunt transliterate in \*(lq i respectiv \*(rq. Pentru a evita aceste transliterari, traducatorii pot introduce un caracter roff de laime zero (de exemplu, folosind ,,\&" sau, respectiv, ,,\&"). Introducerea ,,<" i ,,>" in traduceri Deoarece aceste caractere sunt utilizate pentru a delimita parile in care se modifica fontul, nu le putei utiliza textual. Utilizai in schimb E i E (ca in POD, inca o data). OPIUNI ACCEPTATE DE ACEST MODUL Acestea sunt opiunile particulare ale acestui modul: debug Activeaza depanarea pentru unele mecanisme interne ale acestui modul. Utilizai sursa pentru a vedea care pari pot fi depanate. verbose Marete nivelul de detaliere al ieirii. groff_code Aceasta opiune controleaza comportamentul modulului atunci cand intalnete o seciune .de, .ie sau .if. Aceasta poate lua urmatoarele valori: fail Aceasta este valoarea implicita. Modulul va eua atunci cand este intalnita o seciune .de, .ie sau .if. verbatim Indica faptul ca seciunile .de, .ie sau .if trebuie copiate ca atare din original in documentul tradus. translate Indica faptul ca seciunile .de, .ie sau .if vor fi propuse pentru traducere. Ar trebui sa utilizai aceasta opiune numai daca un ir traductibil este coninut in una dintre aceste seciuni. In caz contrar, ar trebui preferata opiunea verbatim. generated Aceasta opiune specifica faptul ca fiierul a fost generat i ca po4a nu trebuie sa incerce sa detecteze daca paginile de manual au fost generate din alt format. Aceasta opiune este obligatorie pentru a utiliza po4a pe paginile de manual generate. Reinei ca traducerea paginilor generate in locul celor sursa este adesea mai fragila i, prin urmare, o idee proasta. mdoc Aceasta opiune este utila numai pentru paginile mdoc. Aceasta selecteaza un suport mai strict al formatului mdoc, spunandu-i lui po4a sa nu traduca seciunea ,,NAME". Paginile mdoc a caror seciune ,,NAME" este tradusa nu vor genera niciun antet sau nota de subsol. Conform paginii groff_mdoc, seciunile NAME, SYNOPSIS i DESCRIPTION sunt obligatorii. Nu exista probleme cunoscute cu seciunile SYNOPSIS sau DESCRIPTION traduse, dar putei specifica aceste seciuni i in acest mod: -o mdoc=NAME,SYNOPSIS,DESCRIPTION Aceasta problema mdoc poate fi rezolvata i cu un addendum ca acesta: PO4A-HEADER:mode=before;position=^.Dd .TH DOCUMENT_TITLE 1 ,,Luna ziua, anul" OS ,,Numele seciunii" Urmatoarele opiuni specifica comportamentul unei macrodefiniii definite de utilizator (cu o cerere .de) sau al unei macrodefiniii clasice care nu este acceptata de po4a. Acestea iau ca argument o lista de nume de macrodefiniii separate prin virgula. De exemplu: -o noarg=FO,OB,AR -o translate_joined=BA,ZQ,UX Nota: daca o macrodefiniie nu este acceptata de po4a i daca considerai ca este o macrodefiniie roff standard, trebuie sa o trimitei echipei de dezvoltare po4a. untranslated untranslated indica faptul ca aceasta macrodefiniie (sau argumentele sale) nu trebuie sa fie tradusa. noarg noarg este ca untranslated, cu excepia faptului ca po4a va verifica daca nu este adaugat niciun argument la aceasta macrodefiniie. translate_joined translate_joined indica faptul ca po4a trebuie sa propuna traducerea argumentelor macrodefiniiei. translate_each Cu translate_each, argumentele vor fi, de asemenea, propuse pentru traducere, doar ca fiecare va fi tradus separat. no_wrap Aceasta opiune primete ca argument o lista de cupluri separate prin virgula begin:end, unde begin i end sunt comenzi care delimiteaza inceputul i sfaritul unei seciuni care nu ar trebui sa fie reincadrata. Nota: nu se efectueaza niciun test pentru a se asigura ca o comanda end corespunde comenzii sale begin; orice comanda de sfarit oprete modul no_wrap. Daca avei o macrocomanda begin (respectiv end) care nu are end (respectiv begin), putei specifica o macrocomanda end ( precum fi) sau begin (precum nf) existenta ca o contrapartida. Aceste macrocomenzi (i argumentele lor) nu vor fi traduse. inline Aceasta opiune specifica o lista de macro-uri separate prin virgula care nu trebuie sa desparta paragraful curent. irul de caractere de tradus va conine atunci foo <.bar baz qux> quux, unde bar este comanda care trebuie introdusa, iar baz qux argumentele sale. unknown_macros Aceasta opiune indica modul in care po4a ar trebui sa se comporte atunci cand este gasita o macrocomanda necunoscuta. In mod implicit, po4a eueaza cu un avertisment. Aceasta poate lua urmatoarele valori: failed (valoarea implicita), untranslated, noarg, translate_joined sau translate_each ( a se vedea mai sus pentru o explicaie a acestor valori). CREAREA DE PAGINI DE MANUAL CONFORME CU PO4A::MAN Acest modul este inca foarte limitat, i va fi intotdeauna, deoarece nu este un interpret nroff real. Ar fi posibil sa realizam un interpret nroff real, pentru a permite autorilor sa utilizeze toate macrocomenzile existente sau chiar sa defineasca altele noi in paginile lor, dar nu am dorit acest lucru. Ar fi prea dificil i am considerat ca nu este necesar. Ne gandim ca, daca autorii paginilor de manual doresc ca produsele lor sa fie traduse, ar trebui sa se adapteze pentru a uura munca traducatorilor. Aadar, analizatorul man implementat in po4a are unele limitari cunoscute pe care nu prea suntem inclinai sa le corectam i care vor constitui unele capcane pe care va trebui sa le evitai daca dorii ca traducatorii sa aiba grija de documentaia dumneavoastra. Nu programai in nroff nroff este un limbaj de programare complet, cu definiie macro, condiionale i aa mai departe. Deoarece acest analizator nu este un interpret nroff complet, el va eua pe paginile care utilizeaza aceste facilitai (exista aproximativ 200 de astfel de pagini pe calculatorul meu). Utilizai un set de macrocomenzi simplu Exista inca unele macrocomenzi care nu sunt acceptate de po4a::man. Acest lucru se datoreaza doar faptului ca nu am reuit sa gasesc nicio documentaie despre acestea. Iata lista macrocomenzilor neacceptate utilizate pe calculatorul meu. Reinei ca aceasta lista nu este exhaustiva, deoarece programul eueaza la prima macrocomanda neacceptata intalnita. Daca avei informaii despre unele dintre aceste macrocomenzi, voi adauga cu placere suport pentru acestea. Din cauza acestor macrocomenzi, aproximativ 250 de pagini din calculatorul meu sunt inaccesibile pentru po4a::man. .. ." .AT .b .bank .BE ..br .Bu .BUGS .BY .ce .dbmmanage .do .En .EP .EX .Fi .hw .i .Id .l .LO .mf .N .na .NF .nh .nl .Nm .ns .NXR .OPTIONS .PB .pp .PR .PRE .PU .REq .RH .rn .S< .sh .SI .splitfont .Sx .T .TF .The .TT .UC .ul .Vb .zZ Ascunderea textului de po4a Uneori, autorul tie ca unele pari nu sunt traductibile i nu ar trebui extrase de po4a. De exemplu, o opiune poate accepta un argument other, iar other poate aparea i ca ultimul element al unei liste. In primul caz, other nu ar trebui sa poata fi tradus. Iar in al doilea caz, other ar trebui sa fie tradus. In acest caz, autorul poate evita po4a pentru a extrage unele iruri de caractere, folosind unele construcii groff speciale: .if !'po4a'hide' .B other (aceasta va necesita opiunea -o groff_code=verbatim) De asemenea, poate fi definit o noua macrocomanda pentru a automatiza acest lucru: .de IR_untranslated . IR \\$@ .. .IR_untranslated \-q ", " \-\-quiet (aceasta va necesita opiunile -o groff_code=verbatim i -o untranslated=IR_untranslated; cu aceasta construcie, condiionalul .if !'po4a'hide' nu este strict necesar deoarece po4a nu va analiza interiorul definiiei macro) sau folosind un alias: .als IR_untranslated IR .IR_untranslated \-q ", " \-\-quiet Acesta va necesita opiunea -o untranslated=als,IR_untranslated. Concluzie Pentru a rezuma aceasta seciune, pastrai simplitatea i nu incercai sa fii inteligeni atunci cand va scriei paginile de manual. O mulime de lucruri sunt posibile in nroff i nu sunt acceptate de acest analizator. De exemplu, nu incercai sa va jucai cu \c pentru a intrerupe procesarea textului (aa cum fac 40 de pagini de pe calculatorul meu). Sau, asigurai-va ca punei argumentele macro pe aceeai linie cu macroul in sine. tiu ca este valabil in nroff, dar ar complica prea mult analizatorul pentru a fi gestionat. Desigur, o alta posibilitate este de a utiliza un alt format, mai uor de tradus (cum ar fi POD folosind po4a::pod, sau unul din familia XML cum ar fi SGML), dar datorita po4a::man nu mai este necesar. Acestea fiind spuse, daca formatul sursa al documentaiei dvs. este POD sau XML, poate fi inteligent sa traducei formatul sursa i nu acest format generat. In majoritatea cazurilor, po4a::man va detecta paginile generate i va emite un avertisment. Acesta va refuza chiar sa proceseze paginile generate de POD, deoarece aceste pagini sunt gestionate perfect de po4a::pod i deoarece omologul lor nroff definete o mulime de macrocomenzi noi pentru care nu am vrut sa scriu suport. Pe calculatorul meu, 1432 din cele 4323 de pagini sunt generate de POD i vor fi ignorate de po4a::man. In majoritatea cazurilor, po4a::man va detecta problema i va refuza sa proceseze pagina, emiand un mesaj adaptat. In unele cazuri rare, programul se va finaliza fara avertisment, dar rezultatul va fi greit. Astfel de cazuri sunt numite ,,erori" ;) Daca intalnii un astfel de caz, asigurai-va ca raportai acest lucru, impreuna cu o remediere atunci cand este posibil STAREA ACESTUI MODUL Acest modul poate fi utilizat pentru majoritatea paginilor de manual existente. Unele teste sunt efectuate in mod regulat pe cutii Linux: o o treime din pagini sunt refuzate deoarece au fost generate dintr-un alt format acceptat de po4a (de exemplu, POD sau SGML). o 10% din paginile ramase sunt respinse cu o eroare (de exemplu, macrocomanda groff nu este acceptata). o Apoi, mai puin de 1% din pagini sunt acceptate silenios de po4a, dar cu probleme semnificative (de exemplu, cuvinte lipsa sau cuvinte noi introduse) o Celelalte pagini sunt, de obicei, tratate fara diferene mai importante decat diferenele de spaiere sau de linie (probleme de font in mai puin de 10% din paginile procesate). CONSULTAI I Locale::Po4a::Pod(3pm), Locale::Po4a::TransTractor(3pm), po4a(7) AUTORI Denis Barbier Nicolas Francois Martin Quinson (mquinson#debian.org) DREPTURI DE AUTOR i LICENA Drepturi de autor (C) 2002-2008 SPI, Inc. Acest program este software liber; il putei redistribui i/sau modifica in conformitate cu termenii GPL v2.0 sau o versiune ulterioara (consultai fiierul COPYING). perl v5.42.0 2025-11-22 LOCALE::PO4A::MAN.3PM(1)