.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.43) .\" .\" 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 .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . 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 .\" ======================================================================== .\" .IX Title "Locale::Po4a::Man 3pm" .TH Locale::Po4a::Man 3pm "2023-01-03" "Strumenti Po4a" "Strumenti Po4a" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NOME" .IX Header "NOME" Locale::Po4a::Man \- converte pagine di manuale da/a file \s-1PO\s0 .SH "DESCRIZIONE" .IX Header "DESCRIZIONE" L'obiettivo del progetto po4a (\s-1PO\s0 per tutto) è di facilitare le traduzioni (e cosa più interessante, la manutenzione delle traduzioni) usando gli strumenti associati a gettext in aree inaspettate come la documentazione. .PP Locale::Po4a::Man è un modulo che aiuta la traduzione in altre lingue della documentazione in formato nroff (il linguaggio delle pagine di manuale). .SH "TRADURRE CON PO4A::MAN" .IX Header "TRADURRE CON PO4A::MAN" Questo modulo prova fortemente a facilitare la vita ai traduttori. Per far ciò, il testo presentato ai traduttori non è una fotocopia del testo trovato nella pagina man. Infatti, le parti più grezze del formato nroff vengono nascoste, in modo che i traduttori non possano rovinarle. .SS "A capo del testo" .IX Subsection "A capo del testo" I paragrafi non indentati vengono formattati automaticamente per il traduttore. Ciò può portare ad alcune differenze minori nel risultato generato, dato che le regole del portare a capo usate da groff non sono molto chiare. Per esempio, due spazi dopo una parentesi alle volte vengono conservati. .PP Comunque, la differenza riguarderà solamente la posizione degli spazi extra nei paragrafi riformattati, e dovrebbe valere la pena. .SS "Indicazione font" .IX Subsection "Indicazione font" Il primo cambiamento riguarda le specifiche del cambiamento del font. In nroff, ci sono diversi modi per specificare se una data parola dovrebbe essere scritta in minuscolo, grassetto o corsivo. Nel testo da tradurre, c'è un unico modo, preso a prestito dal formato \s-1POD\s0 (Perl online documentation): .IP "I \*(-- testo in corsivo" 4 .IX Item "I testo in corsivo" equivalente a \efItesto\efP o \*(L".I testo\*(R" .IP "B \*(-- testo in grassetto" 4 .IX Item "B testo in grassetto" equivalente a \efBtesto\efP or \*(L".B testo\*(R" .IP "R \*(-- testo con grazie" 4 .IX Item "R testo con grazie" equivalente a \efRtesto\efP .IP "CW \*(-- testo a larghezza costante" 4 .IX Item "CW testo a larghezza costante" equivalente a \ef(CWtesto\efP or \*(L".CW testo\*(R" .PP Nota: il \s-1CW\s0 face non è disponibile per tutti i dispositivi groff. Se ne sconsiglia l'uso. Viene fornito solo per comodità dell'utente. .SS "Transliterazione automatica caratteri" .IX Subsection "Transliterazione automatica caratteri" Po4a automaticamente translitera alcuni caratteri per facilitarne la traduzione o la revisione della traduzione. Ecco l'elenco delle transliterazioni: .IP "trattino" 4 .IX Item "trattino" Trattini (\-) e segni meno (\e\-) nelle pagine man vengono transliterati come semplici lineette (\-) nei file \s-1PO.\s0 Poi tutte le lineette sono transliterate in segni meno di roff (\e\-) quando la traduzione viene inserita nel documento in uscita. .Sp I traduttori possono forzare un trattino usando il glifo roff '\e[hy]' nelle loro traduzioni. .IP "spazi non interrompenti" 4 .IX Item "spazi non interrompenti" I traduttori possono usare spazi non interrompenti nelle loro traduzioni. Questi spazi non interrompenti (0xA0 in latin1) verranno transliterati in uno spazio non interrompente roff ('\e '). .IP "transliterazione apici" 4 .IX Item "transliterazione apici" `` e '' vengono transliterati rispettivamente in \e*(lq e \e*(rq. .Sp Per evitare queste transliterazioni, i traduttori possono inserire un carattere nroff di larghezza zero (cioè, usando rispettivamente `\e&` o '\e&'). .SS "Mettere '<' e '>' nelle traduzioni" .IX Subsection "Mettere '<' e '>' nelle traduzioni" Siccome questi caratteri vengono usati per delimitare parti sottoposte a modifiche del font, non si possono usare direttamente. In alternativa si consiglia di usare E e E (ancora una volta, come nei \s-1POD\s0). .SH "OPZIONI ACCETTATE DA QUESTO MODULO" .IX Header "OPZIONI ACCETTATE DA QUESTO MODULO" Queste sono le opzioni speciali per questo modulo: .IP "\fBdebug\fR" 4 .IX Item "debug" Attiva il debug per alcuni meccanismi interni di questo modulo. Usare i sorgenti per vedere quali parti possono essere controllate. .IP "\fBverbose\fR" 4 .IX Item "verbose" Rende il programma più prolisso. .IP "\fBgroff_code\fR" 4 .IX Item "groff_code" Questa opzione controlla il comportamento del modulo quando questo incontra una sezione un .de, .ie o .if . Può prendere i seguenti valori: .RS 4 .IP "\fIfail\fR" 4 .IX Item "fail" È il valore predefinito. Il modulo fallirà quando incontrerà una sezione .de, .ie o .if . .IP "\fIverbatim\fR" 4 .IX Item "verbatim" Indica che le sezioni .de, .ie o .if devono venir copiate come sono dall'originale nel documento tradotto. .IP "\fItranslate\fR" 4 .IX Item "translate" Indica che le sezioni .de, .ie o .if verranno proposte per la traduzione. Si dovrebbe usare questa opzione solo se una stringa traducibile fosse presente in una di dette sezioni. Altrimenti, sarebbe preferibile \fIverbatim\fR. .RE .RS 4 .RE .IP "\fBgenerated\fR" 4 .IX Item "generated" Questa opzione specifica che il file è un file generato, e che quindi po4a non dovrebbe cercare di rilevare se le pagine man siano state generate da un altro formato. Questa opzione è necessaria per usare po4a su pagine man generate. Si noti che tradurre pagine generate invece di quelle sorgenti è spesso più fragile (N.d.T: è più facile fare errori), e quindi una cattiva idea. .IP "\fBmdoc\fR" 4 .IX Item "mdoc" Questa opzione è utile solo per le pagine mdoc. .Sp Seleziona un supporto più stringente del formato mdoc indicando a po4a di non tradurre la sezione '\s-1NAME\s0'. Le pagine mdoc la cui sezione '\s-1NAME\s0' è tradotta non genereranno alcuna intestazione o piè di pagina. .Sp Secondo la pagina groff_mdoc, le sezioni \s-1NOME, SINTASSI\s0 e \s-1DESCRIZIONE\s0 sono obbligatorie. Non sembrano esserci problemi conosciuti nel tradurre le sezioni \s-1SINTASSI\s0 o \s-1DESCRIZIONE,\s0 ma si può specificare queste sezioni anche in questo modo: \-o mdoc=NOME,SINTASSI,DESCRIZIONE .Sp Questo problema di mdoc può essere risolto anche con un addendum come questo: PO4A\-HEADER:mode=before;position=^.Dd .TH \s-1DOCUMENT_TITLE 1\s0 \*(L"Month day, year\*(R" \s-1OS\s0 \*(L"Section Name\*(R" .PP Le opzioni seguenti specificano il comportamento di una macro personalizzata (definita con una richiesta .de), o di una macro classica non supportata da po4a. Prendono come argomento un elenco separato da virgole di macro. Per esempio: .PP .Vb 1 \& \-o noarg=FO,OB,AR \-o translate_joined=BA,ZQ,UX .Ve .PP Nota: se una macro macro non è supportata da po4a e si ritiene che sia una macro standard roff, sarebbe desiderabile comunicarlo al team di sviluppo di po4a (N.d.T. per un'eventuale inclusione in una prossima versione di po4a). .IP "\fBuntranslated\fR" 4 .IX Item "untranslated" \&\fBuntranslated\fR indica che questa macro (ed i suoi argomenti) non deve essere tradotta. .IP "\fBnoarg\fR" 4 .IX Item "noarg" \&\fBnoarg\fR è come \fBuntranslated\fR, eccetto per il fatto che po4a verificherà che non venga aggiunto nessun argomento a questa macro. .IP "\fBtranslate_joined\fR" 4 .IX Item "translate_joined" \&\fBtranslate_joined\fR indica che po4a deve proporre di tradurre gli argomenti della macro. .IP "\fBtranslate_each\fR" 4 .IX Item "translate_each" Anche con \fBtranslate_each\fR, gli argomenti verranno proposti per la traduzione, ma ognuno verrà tradotto separatamente. .IP "\fBno_wrap\fR" 4 .IX Item "no_wrap" Questa opzione prende come argomento un elenco di coppie separate da virgole \fIbegin\fR:\fIend\fR, dove \fIbegin\fR e \fIend\fR sono comandi che delimitano rispettivamente l'inizio e la fine di una sezione che non dovrebbe essere riformattata. .Sp Nota: non viene effettuata nessuna prova per assicurare che il comando \fIend\fR corrisponda al suo comando \fIbegin\fR; qualunque comando di fine interrompe la modalità no_wrap. Se si ha una macro \fIbegin\fR (o rispettivamente \fIend\fR) che non ha un \fIend\fR (o rispettivamente \fIbegin\fR), si può specificare un \fIend\fR esistente (come fi) o \fIbegin\fR (come nf) come controparte. Queste macro (ed i loro argomenti) non verranno tradotte. .IP "\fBinline\fR" 4 .IX Item "inline" Questa opzione specifica un elenco separato da virgole di macro che non devono spezzare il paragrafo corrente. La stringa da tradurre conterrà perciò \fIfoo <.bar baz qux> quux\fR, dove \fIbar\fR è il comando che dovrebbe essere messo sulla stessa riga, e \fIbaz qux\fR i suoi argomenti. .IP "\fBunknown_macros\fR" 4 .IX Item "unknown_macros" Questa opzione indica come po4a dovrebbe comportarsi quando trova una macro sconosciuta. Per impostazione predefinita, po4a fallisce con un avvertimento. Può prendere i seguenti valori: \fBfailed\fR (il valore predefinito), \fBuntranslated\fR, \fBnoarg\fR, \fBtranslate_joined\fR, o \fBtranslate_each\fR (vedere sopra per una spiegazione di questi valori). .SH "CREAZIONE DI PAGINE COMPATIBILI MAN CON PO4A::MAN" .IX Header "CREAZIONE DI PAGINE COMPATIBILI MAN CON PO4A::MAN" Questo modulo è ancora molto limitato, e lo sarà sempre, perché non è un vero interprete nroff. Sarebbe possibile fare un vero interprete nroff, per consentire agli autori di utilizzare tutte le macro esistenti, o anche definirne di nuove nelle loro pagine, ma non abbiamo voluto. Sarebbe stato troppo difficile, e pensavamo che non fosse necessario. Pensiamo che se gli autori delle manpage vogliono vedere le loro produzioni tradotte, potrebbero doversi adattare per facilitare il lavoro dei traduttori. .PP Perciò, il parser man implementato in po4a ha alcune limitazioni note, che non abbiamo intenzione di correggere, e che potranno presentare dei problemi che sarà necessario evitare se si vuole che i traduttori si prendano cura della propria documentazione. .SS "Non programmare in nroff" .IX Subsection "Non programmare in nroff" nroff è un linguaggio di programmazione completo, con definizione di macro, condizionali e così via. Poiché questo parser non è un interprete nroff completo, non funzionerà sulle pagine che utilizzano queste funzionalità (ci sono circa 200 di queste pagine sul mio sistema). .SS "Usare l'insieme di macro di base" .IX Subsection "Usare l'insieme di macro di base" Ci sono ancora alcune macro che non sono supportate da po4a::man. Questo solo perché non siamo riusciti a trovare nessuna documentazione su di esse. Ecco l'elenco delle macro non supportate utilizzate sul mio sistema. Si noti che questo elenco non è esaustivo poiché il programma non riesce sulla prima macro non supportata incontrata. Se potete fornire informazioni su alcune di queste macro, aggiungeremo volentieri il supporto per esse. A causa di queste macro, circa 250 pagine del mio sistema sono inaccessibili a po4a::man. .PP .Vb 11 \& .. ." .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 .Ve .SS "Nascondere il testo a po4a" .IX Subsection "Nascondere il testo a po4a" A volte, l'autore sa che alcune parti non vanno tradotte e non dovrebbero essere estratte da po4a. Ad esempio, un'opzione potrebbe accettare un argomento \fIother\fR e \fIother\fR potrebbe apparire anche come ultimo elemento di un elenco. Nel primo caso, \fIother\fR non dovrebbe essere traducibile. E nel secondo caso, \fIother\fR dovrebbe essere tradotto. .PP In tal caso, l'autore può evitare che po4a estragga alcune stringhe, utilizzando alcuni costrutti groff speciali: .PP .Vb 1 \& .if !\*(Aqpo4a\*(Aqhide\*(Aq .B other .Ve .PP (ciò richiederà l'opzione \fB\-o groff_code=verbatim\fR) .PP Si può anche definire una nuova macro per automatizzare l'operazione: .de IR_untranslated . \s-1IR\s0 \e\e$@ .. .PP .Vb 1 \& .IR_untranslated \e\-q ", " \e\-\e\-quiet .Ve .PP (questo richiederà le opzioni \fB\-o groff_code=verbatim\fR e \fB\-o untranslated=IR_untranslated\fR; con questo costrutto, il condizionale \fB.if !'po4a'hide'\fR non è strettamente necessario dato che po4a non analizzerà l'interno della definizione della macro) .PP o usando un'alias: .als IR_untranslated \s-1IR\s0 .PP .Vb 1 \& .IR_untranslated \e\-q ", " \e\-\e\-quiet .Ve .PP Ciò richiederà l'opzione \fB\-o untranslated=als,IR_untranslated\fR. .SS "Conclusione" .IX Subsection "Conclusione" Per riassumere, fare le cose semplicemente non cercando trucchi complessi nella creazione delle pagine man. Molte cose possibili in nroff non sono supportate da questo parser. Ad esempio, non si provi a pasticciare con \ec per interrompere l'elaborazione del testo (come fanno 40 pagine sul mio sistema). In alternativa, assicurarsi di inserire gli argomenti della macro sulla stessa unica riga della macro. È valido in nroff, ma complicherebbe troppo la gestione del parser. .PP Naturalmente, un'altra possibilità è usare un altro formato, più facile da tradurre (come il formato \s-1POD\s0 usando po4a::pod, o uno della famiglia \s-1XML\s0 come \s-1SGML\s0), ma grazie a po4a::man, ciò non è comunque più necessario. Detto questo, se il formato sorgente della documentazione è \s-1POD\s0 o \s-1XML,\s0 potrebbe essere conveniente tradurre il formato sorgente e non quello generato. Nella maggior parte dei casi, po4a::man rileverà le pagine generate ed emetterà un avviso. Si rifiuterà persino di elaborare le pagine generate dal \s-1POD,\s0 perché quelle pagine sono perfettamente gestite da po4a::pod e perché la loro controparte nroff definisce molte nuove macro per le quali non si è voluto darne supporto. Per esempio, sulla macchina di uno degli autori, 1432 delle 4323 pagine presenti vengono generate da file \s-1POD\s0 e sono ignorate da po4a::man. .PP Nella maggior parte dei casi, po4a::man rileverà il problema e si rifiuterà di elaborare la pagina, inviando un messaggio conforme. In alcuni rari casi, il programma verrà completato senza preavviso, ma l'output sarà comunque errato. Tali casi sono chiamati \*(L"bug\*(R" ;) Se incontra un caso del genere, sarebbe gradita la segnalazione, insieme a una correzione se possibile... .SH "STATO DI QUESTO MODULO" .IX Header "STATO DI QUESTO MODULO" Questo modulo può essere usato per la maggior parte delle pagine man esistenti. .PP Alcuni test vengono effettuati con regolarità su macchine Linux: .IP "\(bu" 4 un terzo delle pagine vengono rifiutate perché sono state generate da un altro formato supportato da po4a (per es. \s-1POD\s0 o \s-1SGML\s0). .IP "\(bu" 4 il 10% delle pagine rimanenti vengono rifiutate con un errore (perché per es. una macro groff non è supportata). .IP "\(bu" 4 Poi, meno dell'1% delle pagine vengono accettate da po4a silenziosamente (N.d.T. ovvero senza segnalazioni), ma con problemi significativi (cioè parole mancanti, o nuove parole inserite) .IP "\(bu" 4 Le altre pagine vengono solitamente gestite senza differenze più rilevanti delle differenze di spaziatura o dell'andare a capo delle righe (problemi relativi ai font in meno del 10% delle pagine elaborate). .SH "VEDERE ANCHE" .IX Header "VEDERE ANCHE" \&\fBLocale::Po4a::Pod\fR\|(3pm), \fBLocale::Po4a::TransTractor\fR\|(3pm), \fBpo4a\fR\|(7) .SH "AUTORI" .IX Header "AUTORI" .Vb 3 \& Denis Barbier \& Nicolas François \& Martin Quinson (mquinson#debian.org) .Ve .SH "TRADUZIONE" .IX Header "TRADUZIONE" .Vb 2 \& Danilo Piazzalunga \& Marco Ciampa .Ve .SH "COPYRIGHT E LICENZA" .IX Header "COPYRIGHT E LICENZA" Copyright © 2002\-2008 by \s-1SPI,\s0 inc. .PP Questo programma è software libero; è lecito ridistribuirlo o modificarlo secondo i termini della licenza \s-1GPL\s0 (vedere il file \s-1COPYING\s0).