LOCALE::PO4A::SGML.3PM(1) User Contributed Perl Documentation NOME Locale::Po4a::Sgml - converte documenti SGML da/a file PO DESCRIZIONE L'obiettivo del progetto po4a (PO per tutto) e di facilitare le traduzioni (e cosa piu interessante, la manutenzione delle traduzioni) usando gli strumenti associati a gettext in aree inaspettate come la documentazione. Locale::Po4a::Sgml e un modulo che aiuta la traduzione in altre lingue della documentazione in formato SGML. Questo modulo usa onsgmls(1) per analizzare i file SGML. Assicurati che sia installato. Assicurati anche che i DTD dei file SGML siano installati nel sistema. OPZIONI ACCETTATE DA QUESTO MODULO debug Elenco di parole chiave, separate da spazi, indicanti le categorie di messaggi extra da mostrare a scopo diagnostico. I valori ammessi sono: "entities", "generic", "onsgml", "refs" e "tag". verbose Mostra piu informazioni su quello che sta accadendo. translate Elenco separato da spazi di tag extra (oltre a quelli forniti dalla DTD) il cui contenuto dovrebbe formare un msgstr in piu, cioe che dovrebbe essere tradotto. section Elenco separato da spazi di tag extra (oltre a quelli forniti dalla DTD) contenenti altri tag, alcuni dei quali sono di categoria translate. indent Elenco separato da spazi di tag che aumentano il livello di indentazione. Cio influenzera l'indentazione nel documento risultante. verbatim Il layout all'interno di questi tag non deve essere modificato: i paragrafi non verranno mandati a capo, non verra aumentata l'indentazione ne verranno aggiunte nuove linee per ragioni estetiche. empty Tag che non e necessario chiudere. ignore Tag ignorati e considerati come testo semplice da po4a, vale a dire che possono far parte di un msgid. Ad esempio, e un buon candidato per questa categoria dato che metterlo nella sezione translate darebbe luogo a dei msgid contenenti solo il suo contenuto (e normalmente non sono frasi complete), condizione non ideale. attributes Un elenco di attributi separati da spazi che devono essere tradotti. E possibile specificare gli attributi in base al loro nome (ad esempio, "lang"), ma e anche possibile anteporre una gerarchia di tag, per specificare che questo attributo verra tradotto solo quando si trova nel tag specificato. Ad esempio: "lang" specifica che l'attributo lang verra tradotto solo se si trova in un tag "", che e in un tag "". I nomi dei tag sono in realta espressioni regolari, quindi si possono anche scrivere cose come "lang" per tradurre solo attributi lang che sono nei tag "" o "". qualify Un elenco di attributi separati da spazi per i quali la traduzione deve essere qualificata dal nome dell'attributo, ovvero il testo estratto per la traduzione includera sia il nome dell'attributo che il suo valore, ad es. per un tag come "" ai traduttori verra presentata la stringa "lang_en="foo"". Si noti che questa impostazione aggiunge automaticamente l'attributo dato anche nell'elenco attributes. force Procede anche se il DTD e sconosciuto o se onsgmls trova errori nel file in ingresso. include-all I msgid che contengono solo un'entita (come "&version;") vengono saltati per comodita del traduttore. Attivare questa opzione impedisce questa ottimizzazione. Puo essere utile se il documento contiene una costruzione del tipo "Á", anche se e difficile possa succedere... ignore-inclusion Elenco separato da spazi di entita che non saranno accodate. Usare quest'opzione con cautela: puo provocare in onsgmls (usato internamente) l'aggiunta di tag ed invalidare cosi il documento in uscita. STATO DI QUESTO MODULO Il risultato e perfetto, ossia i documenti generati sono identici. Rimane pero ancora qualche problema: o Gli errori scritti in uscita da onsgmls vengono rediretti in maniera predefinita su /dev/null, il che e chiaramente sbagliato, ma non si sa come fare per evitarlo. Il problema e che bisogna "proteggere" l'inclusione condizionale (cioe i vari "") da onsgmls. Altrimenti onsgmls se li mangia e non si sa come fare per farli ricomparire nel documento finale. Per impedirlo, li si riscrivono come "{PO4A-beg-foo}" e "{PO4A-end}". Il problema con questo approccio e che i vari "{PO4A-end}" che aggiungo non sono validi nel documento (non in un tag

o simili). Se si vuole visualizzare l'uscita di onsgmls, aggiungere quanto segue alla riga di comando (o alla riga di configurazione di po4a): -o debug=onsgmls o Funziona solo con i DTD DebianDoc e DocBook. Aggiungere supporto per un nuovo dtd dovrebbe essere molto facile. Il meccanismo e lo stesso per ogni DTD, basta soltanto fornire l'elenco dei tag esistenti e alcune delle loro caratteristiche. Sono d'accordo, avrebbe bisogno di maggiore documentazione, ma e ancora considerato in fase di beta, e detesto documentare qualcosa che potrebbe venir modificato in seguito. o Attenzione, il supporto per i DTD e piuttosto sperimentale. Non ho letto nessun manuale di riferimento per trovare le definizioni di tutti i tag. Ho aggiunto definizioni dei tag al modulo finche non ha funzionato per qualche documento che ho trovato in rete. Non funzionera se il documento fornito usa piu tag del mio. Ma, come ho appena detto, sistemarlo dovrebbe essere davvero facile. Ho testato DocBook soltanto con SAG (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. Per quanto riguarda DebianDoc, ho testato qualche manuale del DDP, ma non ancora tutti. o Nel caso in cui si includano file, i riferimenti ai messaggi nei file po (cioe le righe del tipo "#: en/titletoc.sgml:9460") risulteranno sbagliati. Questo perche prima il file viene pre-elaborato per proteggere l'inclusione condizionale (cioe i vari "") e qualche entita (come "&version;") da onsgmls perche le si vuole cosi come sono nel documento generato. Per questo motivo, faccio una copia temporanea del file di ingresso e applico alla copia tutte le modifiche che voglio prima di sottoporlo all'analisi di onsgmls. Per far si che funzioni, sostituisco le entita che richiedono l'inclusione di un file con il contenuto del file dato (cosi posso proteggere anche cio che si deve trovare anche nei sotto-file). Ma nulla viene fatto fin'ora per correggere i riferimenti (cioe i nomi dei file e i numeri di riga) successivamente. Non sono sicuro di quale sia la cosa migliore da fare. AUTORI Questo modulo e un adattamento di sgmlspl, (un postprocessore SGML per il parser ONSGMLS) che era: Copyright (C) 1995 by David Megginson Adattato per po4a da: Denis Barbier Martin Quinson (mquinson#debian.org) TRADUZIONE Danilo Piazzalunga Marco Ciampa COPYRIGHT E LICENZA Copyright (C) 1995 by David Megginson Copyright (C) 2002-2005 by SPI, inc. Questo programma e software libero; e lecito ridistribuirlo o modificarlo secondo i termini della licenza GPL v2.0 o successive (vedere il file COPYING). perl v5.38.2 2024-06-26 LOCALE::PO4A::SGML.3PM(1)