.\" 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 "PO4A-GETTEXTIZE 1p" .TH PO4A-GETTEXTIZE 1p "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" po4a\-gettextize \- converte un documento originale (e la sua traduzione) in un file \s-1PO\s0 .SH "SINTASSI" .IX Header "SINTASSI" \&\fBpo4a\-gettextize\fR \fB\-f\fR \fIformato\fR \fB\-m\fR \fImaster.doc\fR \fB\-l\fR \fI\s-1XX\s0.doc\fR \fB\-p\fR \fI\s-1XX\s0.po\fR .PP (\fI\s-1XX\s0.po\fR è l'output, tutti gli altri sono input) .SH "DESCRIZIONE" .IX Header "DESCRIZIONE" po4a (\s-1PO\s0 for anything \- N.d.T. \s-1PO\s0 per tutto) semplifica la manutenzione delle traduzioni della documentazione usando i classici strumenti forniti da gettext. La caratteristica principale di po4a è che separa la traduzione dei contenuti dalla struttura del relativo documento. Fare riferimento alla pagina \fBpo4a\fR\|(7) per un'introduzione a questo progetto. .PP Lo script \fBpo4a\-gettextize\fR aiuta a convertire le traduzioni già esistenti in un flusso di lavoro basato su po4a. Effettua il salvataggio della traduzione esistente in modo che sia pronta per la conversione a po4a, e quindi non serve più usarlo dopo la conversione del progetto. Questo noioso processo è spiegato in dettaglio nella sezione seguente 'Convertire la traduzione di un manuale a po4a'. .PP È necessario fornire sia un file master (ad es. la sorgente in inglese) sia un file tradotto esistente (ad es. un precedente tentativo di traduzione senza po4a). Se si fornisce più di un file master o di traduzione, verranno utilizzati in sequenza, ma potrebbe essere più semplice gettext-izzare ciascuna pagina o capitolo separatamente e quindi utilizzare \fBmsgmerge\fR per unire tutti i file \s-1PO\s0 prodotti. Fate come volete. .PP Se il documento master contiene dei caratteri non \s-1ASCII,\s0 il file \s-1PO\s0 generato sarà in \s-1UTF\-8.\s0 Se il documento master è completamente in \s-1ASCII,\s0 il \s-1PO\s0 generato userà la codifica del documento tradotto in ingresso. .SH "OPZIONI" .IX Header "OPZIONI" .IP "\fB\-f\fR, \fB\-\-format\fR" 4 .IX Item "-f, --format" Formato del documento in questione. L'opzione \fB\-\-help\-format\fR mostra l'elenco dei formati disponibili. .IP "\fB\-m\fR, \fB\-\-master\fR" 4 .IX Item "-m, --master" Il file contenente il documento master da tradurre. Si può usare questa opzione più volte se si vuole \*(L"gettext-izzare\*(R" più documenti. .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-M, --master-charset" Set di caratteri del file contenente il documento da tradurre. .IP "\fB\-l\fR, \fB\-\-localized\fR" 4 .IX Item "-l, --localized" Il file contenente la versione localizzata (tradotta) del documento. Se si hanno più documenti master, è probabile si voglia anche fornire più documenti localizzati usando quest'opzione più di una volta. .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-L, --localized-charset" Set di caratteri del file contenente il documento tradotto. .IP "\fB\-p\fR, \fB\-\-po\fR" 4 .IX Item "-p, --po" File su cui scrivere il catalogo messaggi. Se non specificato, il catalogo messaggi viene scritto sullo standard output. .IP "\fB\-o\fR, \fB\-\-option\fR" 4 .IX Item "-o, --option" Opzioni extra da passare al plugin di formato. Vedere la documentazione per ogni plugin per ulteriori informazioni sulle opzioni valide e sul loro significato. Per esempio si può passare \*(L"\-o tablecells\*(R" al parser AsciiDoc mentre il parser di testo semplice accetta \*(L"\-o tabs=split\*(R". .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Mostra un breve messaggio di aiuto. .IP "\fB\-\-help\-format\fR" 4 .IX Item "--help-format" Elenca i formati di documento gestiti da po4a. .IP "\fB\-k\fR \fB\-\-keep\-temps\fR" 4 .IX Item "-k --keep-temps" Mantiene il master temporaneo e i file \s-1POT\s0 localizzati creati prima della fusione. Può essere utile per capire perché questi file vengono desincronizzati, causando i problemi di gettex-tizzazione .IP "\fB\-V\fR, \fB\-\-version\fR" 4 .IX Item "-V, --version" Mostra la versione del programma ed esce. .IP "\fB\-v\fR, \fB\-\-verbose\fR" 4 .IX Item "-v, --verbose" Rende il programma più prolisso. .IP "\fB\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" Mostra delle informazioni di debug .IP "\fB\-\-msgid\-bugs\-address\fR \fIindirizzo@email\fR" 4 .IX Item "--msgid-bugs-address indirizzo@email" Imposta l'indirizzo a cui inviare i rapporti di errore per i msgid. Come impostazione predefinita, i file \s-1POT\s0 creati non hanno campi Report-Msgid-Bugs-To. .IP "\fB\-\-copyright\-holder\fR \fIstringa\fR" 4 .IX Item "--copyright-holder stringa" Imposta l'intestatario del copyright nell'intestazione del \s-1POT.\s0 Il valore predefinito è \*(L"Free Software Foundation, Inc.\*(R" .IP "\fB\-\-package\-name\fR \fIstringa\fR" 4 .IX Item "--package-name stringa" Imposta il nome del pacchetto nell'intestazione del \s-1POT.\s0 Il valore predefinito è \*(L"\s-1PACKAGE\*(R".\s0 .IP "\fB\-\-package\-version\fR \fIstringa\fR" 4 .IX Item "--package-version stringa" Imposta la versione del pacchetto nell'intestazione del \s-1POT.\s0 Il valore predefinito è \*(L"\s-1VERSION\*(R".\s0 .SS "Convertire la traduzione di un manuale a po4a" .IX Subsection "Convertire la traduzione di un manuale a po4a" \&\fBpo4a\-gettextize\fR sincronizza il master i e file localizzati per estrarre i loro contenuti e metterli in un file \s-1PO.\s0 Il contenuto del master file produce i \fBmsgid\fR mentre i contenuti dei file localizzati danno i \fBmsgstr\fR. Questo processo è un po' fragile: la N\-esima stringa del file tradotto si suppone sia la traduzione dell'N-esima stringa nell'originale. .PP La gettext-izzazione funziona meglio se si riesce a recuperare la versione esatta del documento originale che è stato utilizzato per la traduzione. Anche così, potrebbe essere necessario giocherellare con i file master e localizzati per allineare la loro struttura se è stata modificata dal traduttore originale, quindi si consiglia di lavorare su copie dei file originali. .PP Internamente, ogni analizzatore po4a riporta il tipo di sintassi di ogni stringa estratta. Questo è il modo in cui la desincronizzazione viene rilevata durante la fase di gettext-izzazione. Nell'esempio mostrato sotto, è molto improbabile che la quarta stringa nella traduzione (di tipo 'chapter') sia la traduzione della quarta stringa nell'originale (di tipo 'paragraph'). È più probabile che un nuovo paragrafo sia stato aggiunto all'originale, o che due paragrafi nell'originale siano stati fusi assieme nella traduzione. .PP .Vb 1 \& Originale Traduzione \& \& capitolo capitolo \& paragrafo paragrafo \& paragrafo paragrafo \& paragrafo chapter \& capitolo paragrafo \& paragrafo paragrafo .Ve .PP \&\fBpo4a\-gettextize\fR diagnostica in modo prolisso qualsiasi desincronizzazione della struttura rilevata. Quando ciò accade, è necessario modificare manualmente i file per aggiungere paragrafi falsi o rimuovere alcuni contenuti in uno dei documenti (o entrambe le cose) per correggere le disparità segnalate, fino a quando la struttura di entrambi i documenti non corrisponde perfettamente. Di seguito alcuni trucchi per recuperare il più possibile della traduzione esistente. .PP Se si è abbastanza fortunati da avere le strutture di entrambi i documenti che combaciano perfettamente, si lavorerà senza intoppi e si otterranno risultati in pochi secondi. Altrimenti, si scoprirà il perché questo processo ha un nome così brutto :). In ogni caso, la gettext-izzazione spesso è sempre più veloce che ritradurre tutto daccapo. L'autore della documentazione ha gettext-izzato l'intera traduzione della documentazione Perl in un giorno malgrado \fImolti\fR problemi di sincronizzazione. Data la quantità di testo (2MB di testo originale), la traduzione senza il recupero delle vecchie traduzioni avrebbe richiesto diversi mesi di lavoro. Inoltre, questo brutto lavoro è il prezzo da pagare per ottenere in seguito la comodità di po4a. Una volta fatta la conversione, la sincronizzazione tra documenti master e le loro traduzioni sarà per sempre completamente automatica. .PP Dopo una corretta gettext-izzazione, i documenti prodotti si dovrebbero controllare manualmente per le disparità non rilevate e gli errori silenziosi, come spiegato di seguito. .PP \fISuggerimenti e trucchi per il processo di gettext-izzazione\fR .IX Subsection "Suggerimenti e trucchi per il processo di gettext-izzazione" .PP La gettext-izzazione si ferma non appena viene rilevata una desincronizzazione. Quando ciò accade, bisogna modificare i file quel tanto che basta per riallinearne le strutture. \fBpo4a\-gettextize\fR è piuttosto prolisso quando qualcosa non funziona: indica le stringhe che non corrispondono, la loro posizione nel testo, e il tipo di ognuna di esse. Inoltre, il file \s-1PO\s0 generato fino a quel punto viene salvato in \fIgettextization.failed.po\fR per consentirne la successiva analisi. .PP Ecco alcuni altri trucchi per alleviare questo noioso lavoro e assicurarsi che non si distrugga buona parte del precedente lavoro di traduzione: .IP "\(bu" 4 Rimuovere tutto il contenuto extra delle traduzioni, come per esempio la sezione riconoscimenti ai traduttori. Le si potranno riaggiungere con \fBpo4a\fR in seguito, usando un'addenda (vedere \fBpo4a\fR\|(7)). .IP "\(bu" 4 Se si sta modificando i file per allineare le loro strutture, è preferibile modificare la traduzione, se possibile. Infatti, se le modifiche all'originale sono troppe, la vecchia e la nuova versione non collimeranno durante la prima esecuzione di po4a dopo la gettext-izzazione (vedere più avanti). Ogni traduzione non corrispondente verrà comunque scaricata. Detto questo, si vorrà comunque modificare il documento originale se è troppo difficile ottenere la continuazione del processo di gettext-izzazione in altro modo, anche se ciò significherà che un paragrafo della traduzione venga gettato via. L'importante è ottenere un primo file \s-1PO\s0 con cui iniziare. .IP "\(bu" 4 Non fatevi problemi a eliminare qualsiasi contenuto originale che non esisterebbe nella versione tradotta. Questo contenuto verrà reintrodotto automaticamente in seguito, durante la sincronizzazione del file \s-1PO\s0 con il documento. .IP "\(bu" 4 Si dovrebbe probabilmente informare l'autore originale di ogni cambiamento strutturale nella traduzione che sembra giustificato. Problemi nell'originale andrebbero comunicati all'autore. La correzione nella traduzione corregge solo per una parte della comunità. Inoltre è impossibile usando po4a ;). Ma è probabile si voglia aspettare la fine della conversione a \fBpo4a\fR prima di cambiare i file originali. .IP "\(bu" 4 A volte, il contenuto dei paragrafi corrisponde, ma i loro tipi no. La correzione è abbastanza dipendente dal formato. Nel \s-1POD\s0 e nelle pagine man, spesso deriva dal fatto che uno dei due paragrafi contiene una riga che inizia con uno spazio bianco mentre l'altro paragrafo no. In quei formati, tali paragrafi non possono essere mandati a capo e quindi diventare di un tipo diverso. In tal caso basta rimuovere lo spazio e si è a posto. Alle volte si tratta anche di un semplice refuso nel nome del marcatore \s-1XML.\s0 .Sp Allo stesso modo, due paragrafi possono venire uniti assieme nel \s-1POD\s0 quando la riga di separazione contiene alcuni spazi, o quando non c'è una riga vuota tra la riga \fB=elemento\fR e il contenuto dell'elemento stesso. .IP "\(bu" 4 A volte, il messaggio di desincronizzazione sembra strano perché la traduzione viene collegata al paragrafo originale sbagliato. È il segno di problema non rilevato prima nel processo. Cercare il punto di desincronizzazione ispezionando il file \fIgettextization.failed.po\fR prodotto, per vedere quando inizia veramente il problema e correggerlo dov'è effettivamente. .IP "\(bu" 4 Altri problemi possono derivare da stringhe duplicate nell'originale o nella traduzione. Le stringhe duplicate vengono fuse nei file \s-1PO,\s0 con due riferimenti. Ciò costituisce un problema per l'algoritmo di gettext-izzazione, che consiste in un semplice accoppiamento uno a uno tra i \fBmsgid\fR del file master e quelli dei file localizzati. Le versioni recenti di po4a dovrebbero però gestire correttamente le stringhe duplicate, quindi, per qualsiasi problema residuo riscontrato, si prega di segnalarlo agli sviluppatori. .SS "Revisione dei file prodotti da \fBpo4a\-gettextize\fP" .IX Subsection "Revisione dei file prodotti da po4a-gettextize" Qualsiasi file prodotto da \fBpo4a\-gettextize\fR dovrebbe essere rivisto manualmente, anche quando lo script viene terminato correttamente. Si dovrebbe scorrere il file \s-1PO,\s0 assicurandosi che \fBmsgid\fR e \fBmsgstr\fR corrispondano effettivamente. Non è ancora necessario assicurarsi che la traduzione sia perfettamente corretta, poiché tutte le voci sono comunque contrassegnate come traduzioni fuzzy. Bisogna solo verificare la presenza di evidenti problemi di corrispondenza poiché le traduzioni con corrispondenza errata verranno scaricate nei passaggi successivi mentre (è probabile) si desideri salvarle. .PP Fortunatamente, questo passaggio non richiede la padronanza delle lingue di destinazione poiché si desidera solo riconoscere elementi simili in ogni \fBmsgid\fR e nel corrispondente \fBmsgstr\fR. In quanto madrelingua francese, inglese e un po' di tedesco, l'autore di questa guida può farlo almeno per tutte le lingue europee, mentre non può dire una parola della maggior parte di queste lingue. A volte riesco a rilevare problemi di corrispondenza nelle lingue non latine osservando la lunghezza delle stringhe, le strutture delle frasi (la quantità di punti di interrogazione corrisponde?) e altri indizi, ma preferisco che qualcun altro riveda la traduzione di quelle lingue. .PP Se si rileva una mancata corrispondenza, modificare i file originale e di traduzione come se \fBpo4a\-gettextize\fR segnalasse un errore e riprovare. Una volta che si ha un file \s-1PO\s0 decente per la traduzione precedente, eseguire il backup fino a quando po4a non funziona correttamente. .SS "Eseguire \fBpo4a\fP per la prima volta" .IX Subsection "Eseguire po4a per la prima volta" Il modo più semplice per configurare po4a è scrivere un file di configurazione \fBpo4a.conf\fR e utilizzare il programma integrato po4a (\fBpo4a\-updatepo\fR e \fBpo4a\-translate\fR sono deprecati). Si prega di controllare la sezione \*(L"\s-1FILE DI CONFIGURAZIONE\*(R"\s0 nella documentazione \fBpo4a\fR\|(1) per maggiori dettagli. .PP Quando \fBpo4a\fR viene eseguito per la prima volta, la versione corrente dei documenti master verrà usata per aggiornare i file \s-1PO\s0 contenenti le vecchie traduzioni salvate tramite gettext-izzazione. Ciò può richiedere molto tempo, perché molti dei \fBmsgid\fR prodotti dalla gettext-izzazione non corrispondono esattamente agli elementi del file \s-1POT\s0 creato dai file master recenti. Ciò costringe gettext a cercare quello più simile utilizzando un algoritmo computazionalmente pesante di similitudine di stringa. Ad esempio, la prima esecuzione della traduzione francese della documentazione Perl (file \s-1PO\s0 da 5,5 \s-1MB\s0) ha richiesto circa 48 ore (sì, due giorni), mentre le successive solo pochi secondi. .SS "Spostare la traduzione in produzione" .IX Subsection "Spostare la traduzione in produzione" Dopo questa prima esecuzione, i file \s-1PO\s0 sono pronti per essere esaminati dai traduttori. Tutte le voci sono state contrassegnate come fuzzy nel file \s-1PO\s0 dalla \fBpo4a\-gettext\-izzazione\fR, imponendo così la loro attenta revisione prima dell'uso. I traduttori devono: esaminare ogni voce per verificare che la traduzione salvata corrisponda effettivamente al testo originale corrente, aggiornare la traduzione ove necessario, rimuovere i marcatori fuzzy. .PP Una volta rimossi un numero sufficiente di marcatori fuzzy, \fBpo4a\fR inizierà a generare i file di traduzione su disco e sarà il momento di spostare il flusso di lavoro di traduzione alla produzione. Alcuni progetti trovano utile affidarsi a weblate per coordinare traduttori e manutentori, ma questo va oltre lo scopo di \fBpo4a\fR. .SH "VEDERE ANCHE" .IX Header "VEDERE ANCHE" \&\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 "TRADUZIONE" .IX Header "TRADUZIONE" .Vb 2 \& Danilo Piazzalunga \& Marco Ciampa .Ve .SH "COPYRIGHT E LICENZA" .IX Header "COPYRIGHT E LICENZA" Copyright 2002\-2022 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).