.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" 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 1p" .TH PO4A 1p "2020-12-09" "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 \- aggiorna i file \s-1PO\s0 e i documenti tradotti in un colpo solo .SH "SINTASSI" .IX Header "SINTASSI" \&\fBpo4a\fR [\fIopzioni\fR] \fIfile_config\fR .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 Quando si esegue il programma \fBpo4a\fR per la prima volta, con solo un file di configurazione e i documenti da tradurre (i documenti master), esso produce un file \s-1POT\s0 (o modello di traduzione) che contiene tutte le stringhe traducibili nel documento in un formato che semplifica il lavoro ai traduttori. .PP Questi file \s-1POT\s0 si possono tradurre con un editor specializzato come lo \&\fB\s-1GNOME\s0 Translation Editor\fR, \fBLokalize\fR di \s-1KDE\s0 o \fBpoedit\fR, o possono essere integrati su una piattaforme di traduzione online come \fBweblate\fR o \&\fBpootle\fR. Il risultato della traduzione è un insieme di file \s-1PO,\s0 uno per lingua. .PP Quando si esegue il programma \fBpo4a\fR con sia i documenti master e i file \&\s-1PO,\s0 esso produce i documenti tradotti iniettando la traduzione dei contenuti (trovata nel file \s-1PO\s0) nella struttura dei documenti master originali. .PP Se i documenti master nel frattempo sono cambiati, po4a aggiornerà i file \s-1PO\s0 e \s-1POT\s0 di conseguenza, in modo da permettere ai traduttori di rilevare facilmente le modifiche ed aggiornare il loro lavoro. A seconda delle tue impostazioni, po4a scarterà i documenti parzialmente tradotti, o produrrà un documento mescolando inglese (per i paragrafi nuovi o modificati) e la lingua obiettivo (per i paragrafi dove la traduzione è già presente nei file \&\s-1PO\s0). .PP Per impostazione predefinita, i documenti tradotti vengono prodotti solo se almeno l'80% del contenuto è stato tradotto (vedere l'opzione \fI\-\-keep\fR sotto). Scartare le traduzioni che non sono al 100% può essere scoraggiante per i traduttori, mentre mostrare \*(L"traduzioni\*(R" che sono troppo incomplete potrebbe essere un problema per gli utenti finali. .SS "Panoramica grafica" .IX Subsection "Panoramica grafica" .Vb 11 \& documenti master \-\-\-+\-\-\-\-\->\-\-\-\-\-\-\-\-\-\->\-\-\-\-\-\-\-\-+ \& (doc.ti orig.) | | \& V (esecuzioni po4a) >\-\-\-\-+\-\-> traduzioni \& | | | \& file PO esistenti \-\->\-\-> file PO aggiornati >\-+ | \& ^ | | \& | V | \& +\-\-\-\-\-\-\-\-\-\-\-\-<\-\-\-\-\-\-\-\-\-\-\-\-<\-\-\-\-\-\-+ ^ \& (processo di traduzione manuale) | \& | \& addendum \-\->\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ .Ve .PP I documenti master vengono prodotti in originale dagli autori della documentazione. Qualunque cambiamento viene propagato automaticamente da po4a nei file \s-1PO,\s0 i quali vengono poi aggiornati dai traduttori. Tutti i cambiamenti ai file \s-1PO\s0 (sia manuali effettuati da po4a) si riflettono automaticamente nei documenti tradotti. Si può mimare questo comportamento usando gli script \fBpo4a\-updatepo\fR\|(1) e \fBpo4a\-translate\fR\|(1) nei makefile, ma ciò diventa rapidamente oneroso e ripetitivo (vedere \fBpo4a\fR\|(7)). Si raccomanda caldamente di utilizzare il programma \fBpo4a\fR nei processi di compilazione. .SH "OPZIONI" .IX Header "OPZIONI" .IP "\fB\-k\fR, \fB\-\-keep\fR" 4 .IX Item "-k, --keep" Minima percentuale di traduzione richiesta affinché il file generato sia mantenuto (cioè scritto) su disco. Il valore predefinito è 80, vale a dire che una traduzione viene scritta su disco solo se è completa almeno per l'80%. .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Mostra un breve messaggio di aiuto. .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-M, --master-charset" Set di caratteri dei file contenenti i documenti da tradurre. Tutti i documenti master devono usare la stessa codifica. .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-L, --localized-charset" Set di caratteri dei file contenenti i documenti localizzati. Tutti i documenti tradotti useranno la stessa codifica. .IP "\fB\-A\fR, \fB\-\-addendum\-charset\fR" 4 .IX Item "-A, --addendum-charset" Set di caratteri degli addenda. Tutti gli addenda devono usare la stessa codifica. .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\-q\fR, \fB\-\-quiet\fR" 4 .IX Item "-q, --quiet" Rende il programma meno prolisso. .IP "\fB\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" Mostra delle informazioni di debug .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\-f\fR, \fB\-\-force\fR" 4 .IX Item "-f, --force" Genera sempre i file \s-1POT\s0 e \s-1PO,\s0 anche se \fBpo4a\fR non lo considera necessario. .Sp Il comportamento predefinito (quando non è specificato \fB\-\-force\fR) è il seguente: .RS 4 .Sp .RS 4 Se il file \s-1POT\s0 esiste già, viene rigenerato se un documento master o il file di configurazione sono più recenti (a meno che non venga fornito \&\fB\-\-no\-update\fR). Il file \s-1POT\s0 viene scritto anche in un documento temporaneo e \fBpo4a\fR verifica che i cambiamenti siano veramente necessari. .Sp Inoltre, una traduzione viene rigenerata solo se il suo documento master, il file \s-1PO,\s0 uno dei suoi addendum o il file di configurazione sono più recenti. Per evitare di provare a rigenerare le traduzioni che non passano il test di soglia (vedere \fB\-\-keep\fR), un file con estensione \fI.po4a\-stamp\fR può venir creato (vedere \fB\-\-stamp\fR). .RE .RE .RS 4 .Sp Se un documento master include dei file, si dovrebbe usare la flag \&\fB\-\-force\fR perché il tempo di modifica di questi file inclusi non sono tenuti in considerazione. .Sp I file \s-1PO\s0 vengono sempre rigenerati in base al \s-1POT\s0 con \fBmsgmerge \-U\fR. .RE .IP "\fB\-\-stamp\fR" 4 .IX Item "--stamp" Dice a \fBpo4a\fR di creare dei file stamp quando una traduzione non viene generata perché essa non raggiunge la soglia. A questi file stamp viene assegnato un nome in accordo con il nome previsto del documento tradotto, ed applicata estensione \fI.po4a\-stamp\fR. .Sp Nota: ciò attiva solo la creazione dei file \fI.po4a\-stamp\fR. I file stamp vengono sempre usati se esistono, e vengono rimossi con l'uso di \&\fB\-\-rm\-translations\fR o quando il file viene infine tradotto. .IP "\fB\-\-no\-translations\fR" 4 .IX Item "--no-translations" Non generare i documenti tradotti, aggiorna solo i file \s-1POT\s0 e \s-1PO.\s0 .IP "\fB\-\-no\-update\fR" 4 .IX Item "--no-update" Non cambiare i file \s-1POT\s0 e \s-1PO,\s0 solo la traduzione può essere aggiornata. .IP "\fB\-\-keep\-translations\fR" 4 .IX Item "--keep-translations" Mantiene i file di traduzione esistenti anche se la traduzione non incontra la soglia specificata da \-\-keep. Questa opzione non crea nuovi file di traduzione con poco contenuto, ma salverà le traduzioni esistenti che scadranno a causa dei cambiamenti ai file master. .Sp \&\s-1ATTENZIONE:\s0 questo flag cambia il comportamento di po4a in modo piuttosto radicale: i file tradotti non verranno aggiornati per nulla fino a quando la traduzione non migliorerà. Usare questo flag se si preferisce inviare una documentazione tradotta non aggiornata piuttosto che spedire solo una documentazione accurata non tradotta. .IP "\fB\-\-rm\-translations\fR" 4 .IX Item "--rm-translations" Rimuovi i file tradotti (implica \fB\-\-no\-translations\fR). .IP "\fB\-\-no\-backups\fR" 4 .IX Item "--no-backups" Questo flag non fa nulla dalla versione 0.41, e potrebbe venir rimosso dalle prossime versioni. .IP "\fB\-\-rm\-backups\fR" 4 .IX Item "--rm-backups" Questo flag non fa nulla dalla versione 0.41, e potrebbe venir rimosso dalle prossime versioni. .IP "\fB\-\-translate\-only\fR \fIfile-tradotto\fR" 4 .IX Item "--translate-only file-tradotto" Traduce solo il file specificato. Può essere utile per velocizzare il processo se un file di configurazione contiene molti file. Si noti che questa opzione non aggiorna i file \s-1PO\s0 e \s-1POT.\s0 Questa opzione può essere usata più volte. .IP "\fB\-\-variable\fR \fIvar\fR\fB=\fR\fIvalore\fR" 4 .IX Item "--variable var=valore" Definisce una variabile che verrà espansa nel file di configurazione \&\fBpo4a\fR. Ogni occorrenza di \fI$(var)\fR verrà rimpiazzata da \fIvalue\fR. Questa opzione può essere usata più volte. .IP "\fB\-\-srcdir\fR \fI\s-1SRCDIR\s0\fR" 4 .IX Item "--srcdir SRCDIR" Imposta la cartella di base per tutti i documenti in ingresso specificati nel file di configurazione \fBpo4a\fR. .Sp Se vengono specificati sia \fIdestdir\fR che \fIsrcdir\fR, i file in ingresso vengono cercati nelle seguenti cartelle, in ordine: \fIdestdir\fR, la cartella corrente e \fIsrcdir\fR. I file in uscita vengono scritti su \fIdestdir\fR se specificata, o nella cartella corrente. .IP "\fB\-\-destdir\fR \fI\s-1DESTDIR\s0\fR" 4 .IX Item "--destdir DESTDIR" Imposta la cartella di base per tutti i documenti in uscita specificati nel file di configurazione (vedere \fB\-\-srcdir\fR sopra). .SS "Ozioni che modificano l'intestazione \s-1POT\s0" .IX Subsection "Ozioni che modificano l'intestazione POT" .IP "\fB\-\-porefs\fR \fItipo\fR" 4 .IX Item "--porefs tipo" Specifica il formato di riferimento. L'argomento \fItype\fR può essere un valore qualsiasi tra: \fBnever\fR per non produrre nessun riferimento, \fBfile\fR per specificare solo il file senza il numero di riga, \fBcounter\fR per rimpiazzare il numero di riga con un contatore incrementale, e \fBfull\fR per includere il riferimento completo (valore predefinito: full). .IP "\fB\-\-wrap\-po\fR \fBno\fR|\fBnewlines\fR|\fInumero\fR (predefinito: 76)" 4 .IX Item "--wrap-po no|newlines|numero (predefinito: 76)" Specifica come il file po dovrebbe essere mandato a capo. Ciò consente di scegliere tra file con righe mandate capo ben formattate e quindi ben leggibili ma che potrebbero portare a conflitti in git o file che sono più facili da gestire automaticamente, ma più difficili da leggere per le persone. .Sp Storicamente, la suite gettext riformattava i file po alla 77a colonna per questioni estetiche. Questa opzione specifica il comportamento di po4a. Se impostato su un valore numerico, po4a manderà a capo il file po a questo numero di colonna e dopo i caratteri di a capo nel testo. Se impostato su \&\fBnewlines\fR, po4a dividerà msgstr e msgstr solo dopo i caratteri di a capo nel testo. Se impostato su \fBno\fR, po4a non metterà a capo nel testo del file po. L'andare a capo nei commenti di riferimento è controllato dagli strumenti gettext che vengono usati internamente. .Sp Si noti che questa opzione non ha alcun impatto sul modo in cui msgstr e msgstr vanno a capo, ovvero su come i caratteri di a capo vengono aggiunti al contenuto di queste stringhe. .IP "\fB\-\-master\-language\fR" 4 .IX Item "--master-language" La lingua dei file contenenti il documento da tradurre. Tutti i file devono usare la stessa lingua. .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 "Opzioni che modificano i file \s-1PO\s0" .IX Subsection "Opzioni che modificano i file PO" .IP "\fB\-\-msgmerge\-opt\fR \fIopzioni\fR" 4 .IX Item "--msgmerge-opt opzioni" Opzioni extra per \fBmsgmerge\fR(1). .Sp Nota: \fB\f(CB$lang\fB\fR verrà estesa alla lingua corrente. .IP "\fB\-\-no\-previous\fR" 4 .IX Item "--no-previous" Questa opzione rimuove \fB\-\-previous\fR dalle opzioni passate a \fBmsgmerge\fR. Ciò permette di supportare versioni di \fBgettext\fR precedenti alla 0.16. .IP "\fB\-\-previous\fR" 4 .IX Item "--previous" Questa opzione aggiunge \fB\-\-previous\fR alle opzioni passate a \fBmsgmerge\fR. Richiede \fBgettext\fR 0.16 o successive, ed è attivata come impostazione predefinita. .SH "FILE DI CONFIGURAZIONE" .IX Header "FILE DI CONFIGURAZIONE" po4a si aspetta un file di configurazione come argomento. Questo file deve contenere i seguenti elementi: .IP "\(bu" 4 Il percorso ai file \s-1PO\s0 e l'elenco delle lingue esistenti nel progetto; .IP "\(bu" 4 Opzionalmente, alcune opzioni globali e i cosidetti alias di configurazione che vengono usati come modelli per configurare i singoli file master; .IP "\(bu" 4 L'elenco dei singoli file master da tradurre, insieme a parametri specifici. .PP Tutte le righe contengono un comando tra parentesi quadre, seguito dai suoi parametri. I commenti cominciano con il carattere '#' e continuano fino alla fine della riga. Si può fare escape del carattere di fine riga per distribuire un comando su più righe. .PP Alcuni esempi completi sono presenti su questa pagina, mentre altri esempi si possono trovare nella cartella \f(CW\*(C`t/cfg\*(C'\fR della distribuzione dei sorgenti. .SS "Trovare i file \s-1POT\s0 e \s-1PO\s0" .IX Subsection "Trovare i file POT e PO" La soluzione più semplice è indicare il percorso ai file \s-1POT\s0 e \s-1PO\s0 nel modo seguente: .PP .Vb 1 \& [po4a_paths] man/po/project.pot de:man/po/de.po fr:man/po/fr.po .Ve .PP Questo specifica prima il percorso verso il file \s-1POT,\s0 e poi i percorsi ai file \s-1PO\s0 tedesco e francese. .PP La stessa informazione può essere scritta come di seguito per ridurre il rischio di errori di copia/incolla: .PP .Vb 2 \& [po4a_langs] fr de \& [po4a_paths] man/po/project.pot $lang:man/po/$lang.po .Ve .PP La componente \f(CW$lang\fR viene automaticamente espansa usando l'elenco lingue fornito, riducendo il rischio di errori di copia/incolla quando una nuova lingua viene aggiunta. .PP Si possono compattare ulteriormente le stesse informazioni fornendo solamente il percorso per la cartella contenente il progetto di traduzione, come di seguito. .PP .Vb 1 \& [po_directory] man/po/ .Ve .PP La cartella fornita deve contenere un insieme di file \s-1PO,\s0 ognuno con nome \&\fI\s-1XX\s0.po\fR dove \f(CW\*(C`XX\*(C'\fR è il codice \s-1ISO 639\-1\s0 della lingua usata in questo file. La cartella deve anche contenere un singolo file \s-1POT,\s0 con estensione file \f(CW\*(C`.pot\*(C'\fR . Nella prima esecuzione, quest'ultimo può essere vuoto ma deve esistere (po4a non può indovinare il nome da usare davanti all'estensione). .PP Si noti che bisogna scegliere solo uno tra \f(CW\*(C`po_directory\*(C'\fR e \&\f(CW\*(C`po4a_paths\*(C'\fR. Il primo (\f(CW\*(C`po_directory\*(C'\fR) è più compatto, inoltre riduce il rischio degli errori di copia/incolla, ma forza ad usare la struttura progetto e i nomi file previsti. Il secondo (\f(CW\*(C`po4a_paths\*(C'\fR), è più esplicito, probabilmente più leggibile, e suggerito quando si imposta il primo progetto con po4a. .PP \fIFile \s-1PO\s0 centralizzati o separati?\fR .IX Subsection "File PO centralizzati o separati?" .PP Per impostazione predefinita, po4a produce un singolo file \s-1PO\s0 per lingua obiettivo, con l'intero contenuto del progetto di traduzione. Come il progetto cresce, la dimensione di questi file può diventare problematica. Quando si usa weblate, è possibile specificare priorità per ogni segmento di traduzione (cioè msgid) in modo tale da far tradurre i più importanti per primi. Comunque, alcune squadre di traduzione preferiscono dividere il contenuto in più file. .PP Per avere un file \s-1PO\s0 per file master, basta semplicemente usare la stringa \&\f(CW$master\fR nel nome dei file \s-1PO\s0 nella riga \f(CW\*(C`[po4a_paths]\*(C'\fR, come di seguito. .PP .Vb 1 \& [po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po .Ve .PP Se ci sono conflitti di nomi a causa del fatto che i diversi file hanno lo stesso nomefile, il nome del file master può essere specificato aggiungendo l'opzione \f(CW\*(C`master:file=\*(C'\fR\fInome\fR: .PP .Vb 4 \& [po4a_langs] de fr ja \& [po4a_paths] l10n/po/$master.pot $lang:l10n/po/$master.$lang.po \& [type: xml] foo/gui.xml $lang:foo/gui.$lang.xml master:file=foo\-gui \& [type: xml] bar/gui.xml $lang:bar/gui.$lang.xml master:file=bar\-gui .Ve .PP In modalità split, \fBpo4a\fR crea un compendio temporaneo durante l'aggiornamento \s-1PO,\s0 per condividere le traduzioni tra tutti i file \s-1PO.\s0 Se due \s-1PO\s0 hanno traduzioni diverse per la stessa stringa, \fBpo4a\fR marcherà questa stringa come fuzzy e inserirà entrambe le traduzioni in tutti i file \&\s-1PO\s0 contenenti questa stringa. Poi, quando un traduttore aggiornerà la traduzione e rimuoverà la marcatura fuzzy in un file \s-1PO,\s0 la traduzione di questa stringa verrà aggiornata in ogni file \s-1PO\s0 automaticamente. .SS "Specificare i documenti da tradurre" .IX Subsection "Specificare i documenti da tradurre" Bisogna anche elencare i documenti che dovrebbero essere tradotti. Per ogni file master, bisogna specificare il processatore del formato da usare, la posizione del documento tradotto da produrre, e opzionalmente qualche configurazione. Ecco un esempio: .PP .Vb 5 \& [type: sgml] doc/my_stuff.sgml fr:doc/fr/mon_truc.sgml \e \& de:doc/de/mein_kram.sgml \& [type: man] script fr:doc/fr/script.1 de:doc/de/script.1 \& [type: docbook] doc/script.xml fr:doc/fr/script.xml \e \& de:doc/de/script.xml .Ve .PP Ma ancora, queste righe complesse sono difficili da leggere e da modificare, per es. quando si vuole aggiungere una lingua. È molto più semplice riorganizzare le cose usando il modello \f(CW$lang\fR come di seguito: .PP .Vb 3 \& [type: sgml] doc/my_stuff.sgml $lang:doc/$lang/my_stuff.sgml \& [type: man] script.1 $lang:po/$lang/script.1 \& [type: docbook] doc/script.xml $lang:doc/$lang/script.xml .Ve .SS "Specificare le opzioni" .IX Subsection "Specificare le opzioni" Ci sono due tipi di opzioni: le \fIopzioni po4a\fR sono valori predefiniti alle opzioni di riga di comando po4a mentre le \fIopzioni di formato\fR vengono usate per cambiare il comportamento dei parser di formato. Con una \fIopzione po4a\fR, si può per esempio specificare nel file di configurazione che il valore predefinito del parametro a riga di comando \fB\-\-keep\fR è 50% invece che 80%. Le \fIopzioni di formato\fR sono documentate nella pagina specifica di ogni modulo di elaborazione, per es. \fBLocale::Po4a::Xml\fR\|(3pm). Si può per esempio passare \fBnostrip\fR al parser \s-1XML\s0 per non eliminare gli spazi attorno alle stringhe estratte. .PP È possibile passare queste opzioni per un file master specifico, o persino per una specifica traduzione di quel file, usando \f(CW\*(C`opt:\*(C'\fR e \f(CW\*(C`opt_XX:\*(C'\fR per la lingua \f(CW\*(C`XX\*(C'\fR. Nell'esempio seguente, viene passata l'opzione \fBnostrip\fR al parser \s-1XML\s0 (per tutte le lingue), mentre la soglia viene ridotta a 0% per la traduzione francese (che significa perciò che sarà sempre mantenuta). .PP .Vb 1 \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-o nostrip" opt_fr:"\-\-keep 0" .Ve .PP In ogni caso, questi blocchi di configurazione devono essere posizionati alla fine della riga. La dichiarazione dei file viene prima, poi l'addendum se presente (vedere sotto), e solo poi le opzioni. Il raggruppamento dei blocchi di configurazione non è molto importante, dato che gli elementi sono internamente concatenati come stringhe. Gli esempi seguenti sono tutti equivalenti: .PP .Vb 3 \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-\-keep 20" opt:"\-o nostrip" opt_fr:"\-\-keep 0" \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-\-keep 20 \-o nostrip" opt_fr:"\-\-keep 0" \& [type:xml] toto.xml $lang:toto.$lang.xml opt:\-\-keep opt:20 opt:\-o opt:nostrip opt_fr:\-\-keep opt_fr:0 .Ve .PP Si noti che le opzioni specifiche della lingua non vengono usate durante la costruzione del file \s-1POT.\s0 È per esempio impossibile passare \fBnostrip\fR al parser solo quando crea la traduzione francese, perché lo stesso file \s-1POT\s0 viene usato per aggiornare tutte le lingue. Perciò le sole opzioni che possono essere specifiche per una lingua sono quelle che vengono usate durante la produzione della traduzione, come l'opzione \f(CW\*(C`\-\-keep\*(C'\fR. .PP \fIAlias di configurazione\fR .IX Subsection "Alias di configurazione" .PP Per passare le stesse opzioni a più file, è meglio definire un alias di tipo come di seguito. Nel prossimo esempio, \f(CW\*(C`\-\-keep 0\*(C'\fR viene passata ad ogni traduzione italiana usando il tipo \f(CW\*(C`test\*(C'\fR, che è un'estensione del tipo \&\f(CW\*(C`man\*(C'\fR. .PP .Vb 2 \& [po4a_alias:test] man opt_it:"\-\-keep 0" \& [type: test] man/page.1 $lang:man/$lang/page.1 .Ve .PP Si può anche estendere un tipo esistente riutilizzando lo stesso nome per l'alias come di seguito. Ciò non viene interpretato come una definizione erroneamente ricorsiva. .PP .Vb 2 \& [po4a_alias:man] man opt_it:"\-\-keep 0" \& [type: man] man/page.1 $lang:man/$lang/page.1 .Ve .PP \fIOpzioni predefinite globali\fR .IX Subsection "Opzioni predefinite globali" .PP Si può anche usare righe di \f(CW\*(C`[options]\*(C'\fR per definire opzioni che devono essere usate per tutti i file, indipendentemente dal loro tipo. .PP .Vb 1 \& [options] \-\-keep 20 \-\-option nostrip .Ve .PP Come con le opzioni a riga di comando, si possono abbreviare i parametri passati nel file di configurazione: .PP .Vb 1 \& [options] \-k 20 \-o nostrip .Ve .PP \fIPriorità delle opzioni\fR .IX Subsection "Priorità delle opzioni" .PP Le opzioni di ogni sorgente vengono concatenate, assicurando così che i valori predefiniti possano essere facilmente ridefiniti da opzioni più specifiche. L'ordine è il seguente: .IP "\(bu" 4 Le righe \f(CW\*(C`[options]\*(C'\fR forniscono i valori predefiniti che possono essere ridefiniti da qualsiasi altra sorgente. .IP "\(bu" 4 Vengono poi usati gli alias dei tipi. Le impostazioni specifiche per la lingua sovrascrivono quelle applicabili a tutte le lingue. .IP "\(bu" 4 Le impostazioni specifiche ad ogni dato file master sovrascrivono sia quelle predefinite che quelle che provengono dagli alias dei tipi. In questo caso inoltre, le impostazioni specifiche della lingua sovrascrivono quelle globali. .IP "\(bu" 4 Infine, i parametri forniti sulla riga di comando di \fBpo4a\fR sovrascrivono qualsiasi impostazione proveniente dal file di configurazione. .PP \fIEsempio\fR .IX Subsection "Esempio" .PP Ecco un esempio che mostra come commentare gli spazi e il virgolettato: .PP .Vb 1 \& [po_directory] man/po/ \& \& [options] \-\-master\-charset UTF\-8 \& \& [po4a_alias:man] man opt:"\-o \e"mdoc=NAME,SEE ALSO\e"" \& [type:man] t\-05\-config/test02_man.1 $lang:tmp/test02_man.$lang.1 \e \& opt:"\-k 75" opt_it:"\-L UTF\-8" opt_fr:\-\-verbose .Ve .SS "Addendum: aggiunta di contenuto extra nella traduzione" .IX Subsection "Addendum: aggiunta di contenuto extra nella traduzione" Se si vuole aggiungere una sezione extra alla traduzione, per esempio per dare credito al lavoro del traduttore, allora è necessario definire un addendum alla riga che difinisce il file master. Fare riferimento alla pagina \fBpo4a\fR\|(7) per ulteriori dettagli sulla sintassi dei file addendum. .PP .Vb 2 \& [type: pod] script fr:doc/fr/script.1 \e \& add_fr:doc/l10n/script.fr.add .Ve .PP Si può usare anche i modelli di lingua nel modo seguente: .PP .Vb 2 \& [type: pod] script $lang:doc/$lang/script.1 \e \& add_$lang:doc/l10n/script.$lang.add .Ve .PP Se un file addendum fallisce nell'applicazione, la traduzione viene scartata. .PP \fIModificatori per la dichiarazione dell'addendum\fR .IX Subsection "Modificatori per la dichiarazione dell'addendum" .PP I modificatori dell'addendum possono semplificare il file di configurazione nel caso in cui non tutte le lingue forniscano un addendum, o quando l'elenco degli addenda cambia da una lingua all'altra. Il modificatore è un singolo carattere posizionato prima del nome del file. .IP "\fB?\fR" 2 .IX Item "?" Include \fIaddendum_path\fR se questo file esiste, altrimenti non fa nulla. .IP "\fB@\fR" 2 .IX Item "@" \&\fIaddendum_path\fR non è un un addendum normale ma un file contenente una lista di addendum, uno per riga. Ogni addendum può essere preceduto da modificatori. .IP "\fB!\fR" 2 .IX Item "!" \&\fIpercorso_addendum\fR viene scartato, non viene caricato e non verrà caricato da nessun'altra successiva specifica di addendum. .PP Il seguente include un addendum in ogni lingua, ma solo se questo esiste. Non viene generato nessun errore se l'addendum non esiste. .PP .Vb 1 \& [type: pod] script $lang:doc/$lang/script.1 add_$lang:?doc/l10n/script.$lang.add .Ve .PP Il seguente include un elenco di addendum per ogni lingua: .PP .Vb 1 \& [type: pod] script $lang:doc/$lang/script.1 add_$lang:@doc/l10n/script.$lang.add .Ve .SS "Filtro delle stringhe tradotte" .IX Subsection "Filtro delle stringhe tradotte" Talvolta si vorrebbe nascondere alcune stringhe dal processo di traduzione. A tale scopo, si può passare un parametro \f(CW\*(C`pot_in\*(C'\fR al file master per specificare il nome del file da usare invece del master reale quando si crea il file \s-1POT.\s0 Ecco un esempio: .PP .Vb 3 \& [type:docbook] book.xml \e \& pot_in:book\-filtered.xml \e \& $lang:book.$lang.xml .Ve .PP With this setting, the strings to translate will be extracted from the \&\fIbook\-filtered.xml\fR (that must be produced before calling \fBpo4a\fR) while the translated files will be built from \fIbook.xml\fR. As a result, any string that is part of \fIbook.xml\fR but not in \fIbook\-filtered.xml\fR will not be included in the \s-1PO\s0 files, preventing the translators from providing a translation for them. So these strings will be left unmodified when producing the translated documents. This naturally decreases the level of translation, so you may need the \f(CW\*(C`\-\-keep\*(C'\fR option to ensure that the document is produced anyway. .SS "\s-1ESEMPIO DI CONFIGURAZIONE\s0" .IX Subsection "ESEMPIO DI CONFIGURAZIONE" \&\s-1DAFARE:\s0 questa sezione è veramente utile? .PP Poniamo di essere il responsabile di un programma di nome \fBfoo\fR il quale è dotato di una pagina man \fIman/foo.1\fR che naturalmente viene mantenuta solo in inglese. Ora si vorrebbe creare e mantenere anche le traduzioni. Per prima cosa è necessario creare il file \s-1POT\s0 da inviare necessariamente ai traduttori, usando \fBpo4a\-gettextize\fR\|(1). .PP Perciò nel nostro caso eseguiremmo .PP .Vb 1 \& cd man && po4a\-gettextize \-f man \-m foo.1 \-p foo.pot .Ve .PP Poi invieremmo questo file alle mailing list dei gruppi linguistici appropriati o lo renderemmo disponibile per scaricamento da qualche parte sul sito web del progetto. .PP Poniamo ora di aver ricevuto tre traduzioni prima del rilascio della prossima versione: \fIde.po\fR (incluso un file addendum \fIde.add\fR), \fIsv.po\fR e \&\fIpt.po\fR. Dato che non si vuole cambiare i propri \fIMakefile\fR ogni qualvolta arrivi una nuova traduzione si può usare \fBpo4a\fR con un file di configurazione appropriato nel proprio \fIMakefile\fR. Chiamiamolo \&\fIpo4a.cfg\fR. Nel nostro esempio questo somiglierebbe al seguente: .PP .Vb 1 \& [cartella_po] man/po4a/po/ \& \& [type: man] man/foo.1 $lang:man/translated/$lang/foo.1 \e \& add_$lang:?man/po4a/add_$lang/$lang.add opt:"\-k 80" .Ve .PP In questo esempio si presume che le pagine man generate (e tutti il file po e addendum) siano stati posti in \fIman/translated/$lang/\fR (rispettivamente in \fIman/po4a/po/\fR e \fIman/po4a/add_$lang/\fR) sotto la cartella corrente. Nel nostro esempio la cartella \fIman/po4a/po/\fR includerà \fIde.po\fR, \fIpt.po\fR e \&\fIsv.po\fR, e la cartella \fIman/po4a/add_de/\fR includerà \fIde.add\fR. .PP Si noti l'utilizzo del modificatore \fB?\fR in quanto solo la traduzione tedesca (\fIde.po\fR) è accompagnata da un addendum. .PP Per creare realmente le pagine man tradotte aggiungere (una sola volta!) la seguente riga nel target \fBbuild\fR del \fIMakefile\fR appropriato: .PP .Vb 1 \& po4a po4a.cfg .Ve .PP Una volta impostato tutto questo non è necessario toccare il \fIMakefile\fR quando arriva una nuova traduzione, cioè se la squadra francese vi spedisce \&\fIfr.po\fR e \fIfr.add\fR basta semplicemente metterli rispettivamente in \&\fIman/po4a/po/\fR e \fIman/po4a/add_fr/\fR e la prossima volta che il programma verrà compilato la traduzione francese verrà automaticamente aggiornata in \&\fIman/translated/fr/\fR. .PP Si noti che è necessario un obiettivo appropriato per installare le pagine man localizzate con quelle inglesi. .PP Infine, se non si memorizza i file generati nel proprio sistema di versionamento, sarà necessaria anche una riga nell'obiettivo \fBclean\fR: \-rm \-rf man/translated .SH "VEDERE ANCHE" .IX Header "VEDERE ANCHE" \&\fBpo4a\-gettextize\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\-2020 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).