.\" 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::Sgml 3pm" .TH Locale::Po4a::Sgml 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::Sgml \- converte documenti \s-1SGML\s0 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::Sgml è un modulo che aiuta la traduzione in altre lingue della documentazione in formato \s-1SGML.\s0 .PP Questo modulo usa \fBonsgmls\fR(1) per analizzare i file \s-1SGML.\s0 Assicurati che sia installato. Assicurati anche che i \s-1DTD\s0 dei file \s-1SGML\s0 siano installati nel sistema. .SH "OPZIONI ACCETTATE DA QUESTO MODULO" .IX Header "OPZIONI ACCETTATE DA QUESTO MODULO" .IP "\fBdebug\fR" 4 .IX Item "debug" Elenco di parole chiave, separate da spazi, indicanti le parti di cui fare il debug. I valori ammessi sono: «tag», «generic», «entities» e «refs». .IP "\fBverbose\fR" 4 .IX Item "verbose" Mostra più informazioni su quello che sta accadendo. .IP "\fBtranslate\fR" 4 .IX Item "translate" Elenco separato da spazi di tag extra (oltre a quelli forniti da \s-1DTD\s0) il cui contenuto dovrebbe formare un msgstr in più. .IP "\fBsection\fR" 4 .IX Item "section" Elenco separato da spazi di tag extra (oltre a quelli forniti dalla \s-1DTD\s0) contenenti altri tag, alcuni dei quali sono di categoria \fBtranslate\fR. .IP "\fBindent\fR" 4 .IX Item "indent" Elenco separato da spazi di tag che aumentano il livello di indentazione. .IP "\fBverbatim\fR" 4 .IX Item "verbatim" Il layout all'interno di questi tag non deve essere modificato: i paragrafi non verranno mandati a capo, non verrà aumentata l'indentazione né verranno aggiunte nuove linee per ragioni estetiche. .IP "\fBempty\fR" 4 .IX Item "empty" Tag che non è necessario chiudere. .IP "\fBignore\fR" 4 .IX Item "ignore" Tag ignorati e considerati come testo semplice da po4a, vale a dire che possono far parte di un msgid. Ad esempio, è un buon candidato per questa categoria: metterlo nella sezione traducibile darebbe luogo a dei msgid che non contengono frasi complete, condizione non ideale. .IP "\fBattributes\fR" 4 .IX Item "attributes" Un elenco di attributi separati da spazi che devono essere tradotti. È possibile specificare gli attributi in base al loro nome (ad esempio, \*(L"lang\*(R"), ma è anche possibile anteporre una gerarchia di tag, per specificare che questo attributo verrà tradotto solo quando si trova nel tag specificato. Ad esempio: lang specifica che l'attributo lang verrà tradotto solo se si trova in un tag , che è in un tag . I nomi dei tag sono in realtà espressioni regolari, quindi si possono anche scrivere cose come lang per tradurre solo attributi lang che sono in nei tag o . .IP "\fBqualify\fR" 4 .IX Item "qualify" Un elenco di attributi separati da spazi per i quali la traduzione deve essere qualificata dal nome dell'attributo. Si noti che questa impostazione aggiunge automaticamente l'attributo dato anche nell'elenco 'attributes'. .IP "\fBforce\fR" 4 .IX Item "force" Procede anche se il \s-1DTD\s0 è sconosciuto o se onsgmls trova errori nel file in ingresso. .IP "\fBinclude-all\fR" 4 .IX Item "include-all" I msgid che contengono solo un'entità (come «&version;») vengono saltati per comodità del traduttore. Attivare questa opzione impedisce questa ottimizzazione. Può essere utile se il documento contiene una costruzione del tipo «È», anche se è difficile possa succedere... .IP "\fBignore-inclusion\fR" 4 .IX Item "ignore-inclusion" Elenco separato da spazi di entità che non saranno accodate. Usare quest'opzione con cautela: può provocare in onsgmls (usato internamente) l'aggiunta di tag ed invalidare così il documento in uscita. .SH "STATO DI QUESTO MODULO" .IX Header "STATO DI QUESTO MODULO" Il risultato è perfetto, ossia i documenti generati sono identici. Rimane però ancora qualche problema: .IP "\(bu" 2 Gli errori scritti in uscita da onsgmls vengono rediretti in maniera predefinita su /dev/null, il che è chiaramente sbagliato, ma non so come fare per evitarlo. .Sp Il problema è che devo \*(L"proteggere\*(R" l'inclusione condizionale (cioè i vari \f(CW\*(C`\*(C'\fR) da onsgmls. Altrimenti onsgmls se li mangia e non so come fare per farli ricomparire nel documento finale. Per impedirlo, li riscrivo come \f(CW\*(C`{PO4A\-beg\-foo}\*(C'\fR e \f(CW\*(C`{PO4A\-end}\*(C'\fR. .Sp Il problema con questo approccio è che i vari \f(CW\*(C`{PO4A\-end}\*(C'\fR che aggiungo non sono validi nel documento (non in un tag

o simili). .Sp Se si vuole visualizzare l'uscita di onsgmls, aggiungere quanto segue alla riga di comando (o alla riga di configurazione di po4a): .Sp .Vb 1 \& \-o debug=onsgmls .Ve .IP "\(bu" 2 Funziona solo con i \s-1DTD\s0 DebianDoc e DocBook. Aggiungere supporto per un nuovo dtd dovrebbe essere molto facile. Il meccanismo è lo stesso per ogni \s-1DTD,\s0 basta soltanto fornire l'elenco dei tag esistenti e alcune delle loro caratteristiche. .Sp Sono d'accordo, avrebbe bisogno di maggiore documentazione, ma è ancora considerato in fase di beta, e detesto documentare qualcosa che potrebbe venir modificato in seguito. .IP "\(bu" 2 Attenzione, il supporto per i \s-1DTD\s0 è piuttosto sperimentale. Non ho letto nessun manuale di riferimento per trovare le definizioni di tutti i tag. Ho aggiunto definizioni dei tag al modulo finché non ha funzionato per qualche documento che ho trovato in rete. Non funzionerà se il documento fornito usa più tag del mio. Ma, come ho appena detto, sistemarlo dovrebbe essere davvero facile. .Sp Ho testato DocBook soltanto con \s-1SAG\s0 (acronimo di System Administrator Guide, la famosa Guida degli amministratori di sistema di Linux), ma si tratta di un documento piuttosto grosso, e dovrebbe usare gran parte delle caratteristiche di DocBook. .Sp Per quanto riguarda DebianDoc, ho testato qualche manuale del \s-1DDP,\s0 ma non ancora tutti. .IP "\(bu" 2 Nel caso in cui si includano file, i riferimenti ai messaggi nei file po (cioè le righe del tipo \f(CW\*(C`#: en/titletoc.sgml:9460\*(C'\fR) risulteranno sbagliati. .Sp Questo perché prima il file viene pre-elaborato per proteggere l'inclusione condizionale (cioè i vari \f(CW\*(C`\*(C'\fR) e qualche entità (come &version;) da onsgmls perché le voglio così come sono nel documento generato. Per questo motivo, faccio una copia temporanea del file di input e applico alla copia tutte le modifiche che voglio prima di sottoporlo all'analisi di onsgmls. .Sp Per far sì che funzioni, sostituisco le entità che richiedono l'inclusione di un file con il contenuto del file dato (così posso proteggere anche ciò che si deve trovare anche nei sotto-file). Ma nulla viene fatto fin'ora per correggere i riferimenti (cioè i nomi dei file e i numeri di riga) successivamente. Non sono sicuro di quale sia la cosa migliore da fare. .SH "AUTORI" .IX Header "AUTORI" Questo modulo è un adattamento di sgmlspl, (un postprocessore \s-1SGML\s0 per il parser \s-1ONSGMLS\s0) che era: .PP .Vb 1 \& Copyright © 1995 by David Megginson .Ve .PP Adattato per po4a da: .PP .Vb 2 \& Denis Barbier \& 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" .Vb 2 \& Copyright © 1995 by David Megginson \& Copyright © 2002\-2005 by SPI, inc. .Ve .PP Questo programma è software libero; è lecito ridistribuirlo o modificarlo secondo i termini della licenza \s-1GPL\s0 (vedere il file \s-1COPYING\s0).