Provided by: po4a_0.73-2ubuntu1_all bug

NOME

       Locale::Po4a::Xml - converte documenti XML e derivati da/verso file PO

DESCRIZIONE

       L'obiettivo del progetto po4a (PO 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.

       Locale::Po4a::Xml è un modulo che aiuta la traduzione in altre lingue della documentazione in formato
       XML. Può anche essere usato come base per scrivere moduli per documenti basati su XML.

TRADURRE CON PO4A::XML

       Questo modulo può essere utilizzato direttamente per gestire documenti XML generici. Estrarrà tutto il
       contenuto del tag e nessun attributo, poiché è lì che viene scritto il testo nella gran parte dei
       documenti basati su XML.

       Ci sono alcune opzioni (descritte nella sezione successiva) che possono personalizzare questo
       comportamento. Se questo non dovesse adattarsi sufficientemente al formato del proprio documento si
       incoraggia a scriverne uno per il proprio modulo derivandolo da questo, per descrivere i dettagli del
       proprio formato. Consultare la prossima sezione SCRIVERE MODULI DERIVATI più sotto, per la descrizione
       del processo.

OPZIONI ACCETTATE DA QUESTO MODULO

       L'opzione di debug globale fa sì che questo modulo mostri le stringhe escluse, per vedere se salta
       qualcosa di importante.

       Queste sono le opzioni speciali per questo modulo:

       nostrip
           Previene la rimozione degli spazi attorno alle stringhe estratte.

       wrap
           Canonizza la stringa da tradurre, considerando che gli spazi bianchi non siano importanti, e formatta
           il  documento  tradotto.  Questa  opzione  può  essere superata da opzioni tag personalizzate. Vedere
           l'opzione translated sotto.

       unwrap_attributes
           Gli  attributi  vengono  formattati  per  impostazione  predefinita.  Questa  opzione  disabilita  la
           formattazione.

       caseinsensitive
           Fa in modo che la ricerca di tag e attributi funzioni senza distinzione tra maiuscole e minuscole. Se
           è definito, tratterà <Book>laNG ed <BOOK>Lang come <book>lang.

       escapequotes
           Virgolette  di escape nelle stringhe in uscita. Necessario, ad esempio, per creare risorse stringa da
           utilizzare con gli strumenti di build Android.

           Vedere anche: https://developer.android.com/guide/topics/resources/string-resource.html

       includeexternal
           Se definite, le entità esterne verranno incluse nel documento generato (tradotto) e per  l'estrazione
           delle  stringhe.  Se  non  è  definito,  si  dovrà  tradurre  gli elementi esterni separatamente come
           documenti indipendenti.

       ontagerror
           Questa opzione definisce il comportamento del modulo quando incontra una sintassi XML non valida  (un
           tag di chiusura che non corrisponde all'ultimo tag di apertura). Può assumere i seguenti valori:

           fail
               Questo è il valore predefinito. Il modulo uscirà con un errore.

           warn
               L'esecuzione del modulo continuerà, e genererà un avvertimento.

           silent
               Il modulo continuerà senza alcun avvertimento.

           Attenzione a usare questa opzione. Generalmente si raccomanda di sistemare il file in ingresso.

       tagsonly
           Nota: questa opzione è sconsigliata.

           Estrae  solo  i  tag  specificati  nell'opzione  tags. Altrimenti, estrarrà tutti i tag tranne quelli
           specificati.

       doctype
           Stringa di cui verrà verificata la corrispondenza con la prima riga del  doctype  del  documento  (se
           definito). Nel caso non corrisponda, un avviso indicherà che il documento potrebbe essere di tipo non
           valido.

       addlang
           Stringa  indicante  il  percorso  (es.  <bbb><aaa>) di un tag a cui deve essere aggiunto un attributo
           lang="...". La lingua sarà definita come il nome di base del file PO senza alcuna estensione .po.

       optionalclosingtag
           Valore booleano indicante se i tag di chiusura sono facoltativi  (come  in  HTML).  Per  impostazione
           predefinita, i tag di chiusura mancanti generano un errore gestito secondo ontagerror.

       tags
           Nota:  questa  opzione  è  sconsigliata. In alternativa si consiglia di usare le opzioni translated e
           untranslated.

           Elenco separato da spazi di tag che si vuole tradurre o saltare. Per impostazione predefinita, i  tag
           specificati  verranno esclusi, ma se si usa l'opzione "tagsonly", i tag specificati saranno gli unici
           inclusi. I tag devono essere nella forma <aaa>, ma si può unirne alcuni (<bbb><aaa>) per dire che  il
           contenuto del tag <aaa> verrà tradotto solo quando è in un tag <bbb>.

           Si  può anche specificare alcune opzioni di tag inserendo alcuni caratteri davanti alla gerarchia dei
           tag. Ad esempio, si può inserire w (a capo) o W (non  a  capo)  per  sovrascrivere  il  comportamento
           predefinito specificato dall'opzione globale wrap.

           Esempio: W<chapter><title>

       attributes
           Elenco  separato  da  spazi  di  attributi  del  tag che si desidera tradurre. Si può specificare gli
           attributi in base al loro nome (ad esempio, "lang"), ma si può anche anteporre una gerarchia di  tag,
           per  specificare  che  questo  attributo  verrà tradotto solo quando si trova nel tag specificato. Ad
           esempio: <bbb><aaa>lang specifica che l'attributo lang verrà tradotto solo se  si  trova  in  un  tag
           <aaa> in un tag <bbb>.

       foldattributes
           Non  tradurre  gli  attributi nei tag in linea. Invece, sostituisci tutti gli attributi di un tag con
           po4a-id=<id>.

           Utile quando gli attributi non devono essere tradotti, poiché semplifica le stringhe per i traduttori
           ed evita errori di battitura.

       customtag
           Elenco separato da spazi di tag che non devono essere trattati come tag.  Questi  tag  sono  trattati
           come in linea e non devono essere chiusi.

       break
           Elenco  separato  da  spazi  di  tag  che  dovrebbero  interrompere  la  sequenza.  Per  impostazione
           predefinita, tutti i tag interrompono la sequenza.

           I tag devono essere nella forma <aaa>, ma si possono unire ad altri, ad esempio (<bbb><aaa>),  se  il
           tag (<aaa>) deve essere considerato solo quando si trova all'interno di un altro tag (<bbb>).

           Tenere  presente  che  un  tag deve essere elencato solo in una delle stringhe di impostazione break,
           inline placeholder o customtag.

       inline
           Elenco separato da spazi  di  tag  che  devono  essere  trattati  come  in  linea.  Per  impostazione
           predefinita, tutti i tag interrompono la sequenza.

           I  tag  devono essere nella forma <aaa>, ma si possono unire ad altri, ad esempio (<bbb><aaa>), se il
           tag (<aaa>) deve essere considerato solo quando si trova all'interno di un altro tag (<bbb>).

       placeholder
           Elenco separato da spazi di tag  che  devono  essere  trattati  come  segnaposto.  I  segnaposto  non
           interrompono la sequenza, ma il contenuto dei segnaposto viene tradotto separatamente.

           La posizione del segnaposto nel suo blocco sarà contrassegnata da una stringa simile a:

             <placeholder type=\"footnote\" id=\"0\"/>

           I  tag  devono essere nella forma <aaa>, ma si possono unire ad altri, ad esempio (<bbb><aaa>), se il
           tag (<aaa>) deve essere considerato solo quando si trova all'interno di un altro tag (<bbb>).

       break-pi
           Per impostazione predefinita, le istruzioni di elaborazione  (ovvero  i  tag  "<?  ...  ?>")  vengono
           gestite  come  tag  in  linea. Passare questa opzione se si vuole che il PI venga gestito come tag di
           rottura. Si noti che i tag  PHP  non  elaborati  vengono  gestiti  come  istruzioni  di  elaborazione
           dall'analizzatore.

       nodefault
           Elenco  di  tag  separati  da  spazi  che il modulo non dovrebbe provare a impostare per impostazione
           predefinita in nessuna categoria.

           Se si ha un tag che ha la sua impostazione predefinita dalla sottoclasse di questo modulo ma si vuole
           impostare un'impostazione alternativa, si  deve  elencare  quel  tag  come  parte  della  stringa  di
           impostazione nodefault.

       cpp Supporta  le  direttive  del  preprocessore C. Quando questa opzione è impostata, po4a considererà le
           direttive del preprocessore come separatori di paragrafo. Ciò è importante se il file XML deve essere
           preprocessato perché altrimenti le direttive potrebbero essere inserite in mezzo alle righe, se  po4a
           le  considerasse  appartenenti  al  paragrafo  corrente,  e  quindi  non  verrebbero riconosciute dal
           preprocessore. Nota: le direttive del preprocessore devono  apparire  solo  tra  i  tag  (non  devono
           interrompere un tag).

       translated
           Elenco separato da spazi di marcatori che si intende tradurre.

           I  tag  devono essere nella forma <aaa>, ma si possono unire ad altri, ad esempio (<bbb><aaa>), se il
           tag (<aaa>) deve essere considerato solo quando si trova all'interno di un altro tag (<bbb>).

           Si può inoltre specificare alcune opzioni di tag, inserendo alcuni caratteri davanti  alla  gerarchia
           dei  tag.  Ciò  supera  il  comportamento  predefinito  specificato  dalle  opzioni  globali  wrap  e
           defaulttranslateoption.

           w   I tag devono essere tradotti e il contenuto può essere riformattatato.

           W   I tag devono essere tradotti e il contenuto non può essere riformattatato.

           i   I tag devono essere tradotti in linea.

           p   I tag devono essere tradotti come segnaposto.

           Internamente, l'analizzatore XML si preoccupa solo di queste quattro opzioni: w W i p.

           * I tag elencati in break sono impostati a w o W a seconda dell'opzione wrap.

           * I tag elencati in inline sono impostati a i.

           * I tag elencati in placeholder sono impostati a p.

           * I tag elencati in untranslated sono senza alcuna di queste opzioni impostate.

           È possibile verificare il comportamento effettivo dei parametri interni invocando po4a con  l'opzione
           --debug.

           Esempio: W<chapter><title>

           Si noti che un tag va elencato nella stringa di impostazione translated o untranslated.

       untranslated
           Elenco separato da spazi di marcatori che non si intende tradurre.

           I  tag  devono essere nella forma <aaa>, ma si possono unire ad altri, ad esempio (<bbb><aaa>), se il
           tag (<aaa>) deve essere considerato solo quando si trova all'interno di un altro tag (<bbb>).

           Si noti che un tag in linea traducibile in un tag non tradotto viene trattato come un tag di  rottura
           traducibile, l'impostazione i viene eliminata e w o W viene impostato a seconda dell'opzione wrap.

       defaulttranslateoption
           Le  categorie predefinite, per i tag che non fanno parte di translated, untranslated, break, inline o
           placeholder.

           È un insieme di lettere come definito in translated e questa impostazione è valida  solo  per  i  tag
           traducibili.

SCRIVERE MODULI DERIVATI

   DEFINIRE CHE MARCATORI E ATTRIBUTI TRADURRE
       La  personalizzazione  più  semplice  consiste  nel  definire  quali  tag  e  attributi  si  desidera che
       l'analizzatore traduca. Ciò dovrebbe essere fatto nella funzione di inizializzazione. Per prima  cosa  si
       dovrebbe  chiamare  l'inizializzazione  principale, per ottenere le opzioni della riga di comando, quindi
       aggiungere le proprie definizioni personalizzate all'hash delle opzioni. Se vuole trattare  alcune  nuove
       opzioni dalla riga di comando, si deve definirle prima di chiamare l'inizializzazione principale:

         $self->{options}{'new_option'}='';
         $self->SUPER::initialize(%options);
         $self->{options}{'_default_translated'}.=' <p> <head><title>';
         $self->{options}{'attributes'}.=' <p>lang id';
         $self->{options}{'_default_inline'}.=' <br>';
         $self->treat_options;

       Si  dovrebbe usare le opzioni _default_inline, _default_break, _default_placeholder, _default_translated,
       _default_untranslated  e  _default_attributes  nei  moduli  derivati.  Ciò  consente   di   superare   il
       comportamento predefinito definito nel modulo, con le opzioni a riga di comando.

   SUPERARE IL COMPORTAMENTO PREDEFINITO CON OPZIONI DA RIGA DI COMANDO
       Se  non  ci  piace  il  comportamento predefinito di questo modulo xml e dei suoi moduli derivati, si può
       fornire delle opzioni a riga di comando per modificarne il comportamento.

       Consultare Locale::Po4a::Docbook(3pm),

   OVERRIDING THE found_string FUNCTION
       Un altro semplice passo è fare l'override della funzione "found_string", che riceve le stringhe  estratte
       dall'analizzatore,  in  modo  da  tradurle.  Lì  si  può  controllare quali stringhe si vuole tradurre ed
       eseguire trasformazioni su esse, prima o dopo la traduzione stessa.

       Riceve il testo estratto, il riferimento su dove si trovava e un hash che contiene informazioni extra per
       controllare quali stringhe tradurre, come tradurle e generare il commento.

       Il contenuto di queste opzioni dipende dal tipo di stringa (specificato in una voce di questo hash):

       type="tag"
           La stringa trovata è il contenuto di un tag traducibile. La voce "tag_options" contiene  i  caratteri
           dell'opzione prima della gerarchia delle variabili nell'opzione "tag" del modulo.

       type="attributo"
           Significa  che  la stringa trovata è il valore di un attributo traducibile. La voce "attributo" ha il
           nome dell'attributo.

       Deve restituire il testo che sostituirà l'originale nel documento tradotto. Ecco un esempio  di  base  di
       questa funzione:

         sub found_string {
           my ($self,$text,$ref,$options)=@_;
           $text = $self->translate($text,$ref,"type ".$options->{'type'},
             'wrap'=>$self->{options}{'wrap'});
           return $text;
         }

       C'è un altro semplice esempio nel nuovo modulo Dia, che filtra solo alcune stringhe.

   MODIFICA DEI TIPI DI TAG (TODO)
       Questo  è  più complesso, ma consente una personalizzazione (quasi) totale. Si basa su un elenco di hash,
       ognuno dei quali definisce il comportamento di un tipo di tag. L'elenco dovrebbe essere ordinato in  modo
       che i tag più generali vengano dopo quelli più specifici (ordinati prima per l'inizio e poi per le chiavi
       di fine). Per definire un tipo di tag si dovrà creare un hash con le seguenti chiavi:

       beginning
           Specifica l'inizio del tag, dopo del "<".

       end Specifica la fine del tag, prima del ">".

       breaking
           Indica  se  la  classe tag è una classe di tag di interruzione (breaking). Un tag di non interruzione
           (non-breaking) (in linea) è untag che può essere preso come parte del contenuto di un altro tag.  Può
           assumere  i  valori falso (0), vero (1) o non definito. Se si lascia indefinito, si dovrà definire la
           funzione f_breaking che dirà se un tag effettivamente di questa classe è un  tag  di  interruzione  o
           meno.

       f_breaking
           È  una  funzione  che dirà se il tag successivo è di interruzione o meno. Dovrebbe essere definita se
           l'opzione breaking non lo è.

       f_extract
           Se si lascia questa chiave indefinita, la funzione di  estrazione  generica  dovrà  estrarre  il  tag
           stesso.  È  utile per i tag che possono avere altri tag o strutture speciali al loro interno, in modo
           che l'analizzatore principale non vada in confusione. Questa funzione riceve un booleano che dice  se
           il tag deve essere rimosso o meno dal flusso di ingresso.

       f_translate
           Questa  funzione  riceve  il  tag  (nel  formato  get_string_until())  e  restituisce il tag tradotto
           (attributi tradotti o tutte le trasformazioni necessarie) in forma di stringa singola.

FUNZIONI INTERNE usate per scrivere parser derivati

   LAVORARE CON I TAG
       get_path()
           Questa funzione restituisce il percorso del tag corrente dalla  radice  del  documento,  nella  forma
           <html><body><p>.

           Si  può  passare  come  argomento anche una schiera array di tag (senza parentesi) aggiuntivi. Questi
           elementi del percorso vengono aggiunti alla fine del percorso corrente.

       tag_type()
           Questa funzione restituisce l'indice dall'elenco tag_types che si adatta al tag successivo nel flusso
           di ingresso o -1 se si trova alla fine del file di ingresso.

           Qui, il tag ha una struttura che inizia con < e finisce con > e può contenere più righe.

           Questo funziona sull'array "@{$self->{TT}{doc_in}}" che contiene i dati del documento in  ingresso  e
           fa riferimento indirettamente tramite "$self->shiftline()" e "$self- >unshiftline($$)".

       extract_tag($$)
           Questa  funzione  restituisce  il  tag successivo dal flusso di ingresso senza l'inizio e la fine, in
           forma di matrice, per mantenere i riferimenti dal file di ingresso. Ha due parametri: il tipo del tag
           (come restituito da tag_type) e un valore booleano, che indica se deve essere rimosso dal  flusso  di
           ingresso.

           Questo  funziona  sull'array "@{$self->{TT}{doc_in}}" che contiene i dati del documento in ingresso e
           fa riferimento indirettamente tramite "$self->shiftline()" e "$self- >unshiftline($$)".

       get_tag_name(@)
           Questa funzione restituisce il nome del tag passato come argomento, nel formato array  restituito  da
           extract_tag.

       breaking_tag()
           Questa funzione restituisce un valore booleano che dice se il tag successivo nel flusso di ingresso è
           un tag di interruzione o meno (tag in linea). Lascia intatto il flusso di ingresso.

       treat_tag()
           Questa  funzione traduce il tag successivo dal flusso di ingresso. Usata dalle funzioni di traduzione
           personalizzate di tutti i tipi di tag.

           Questo funziona sull'array "@{$self->{TT}{doc_in}}" che contiene i dati del documento in  ingresso  e
           fa riferimento indirettamente tramite "$self->shiftline()" e "$self- >unshiftline($$)".

       tag_in_list($@)
           Questa funzione restituisce un valore stringa che indica se il primo argomento (una gerarchia di tag)
           corrisponde  a  uno  dei  tag  del  secondo  argomento  (un elenco di tag o gerarchie di tag). Se non
           corrisponde, restituisce 0. Altrimenti, restituisce le opzioni del tag  corrispondente  (i  caratteri
           davanti al tag) o 1 (se quel tag non ha opzioni).

   LAVORARE CON GLI ATTRIBUTI
       treat_attributes(@)
           Questa  funzione  gestisce  la  traduzione  degli  attributi  dei tag. Riceve il tag senza i segni di
           inizio/fine, quindi trova gli attributi e traduce quelli traducibili  (specificati  dall'opzione  del
           modulo attributes). Ciò restituisce una stringa semplice con il tag tradotto.

   LAVORARE CON CONTENUTI MARCATI
       treat_content()
           Questa  funzione ottiene il testo fino al successivo tag di interruzione (non in linea) dal flusso di
           ingresso. La si traduca usando le funzioni di traduzione personalizzate di ciascun tipo di tag.

           Questo funziona sull'array "@{$self->{TT}{doc_in}}" che contiene i dati del documento in  ingresso  e
           fa riferimento indirettamente tramite "$self->shiftline()" e "$self- >unshiftline($$)".

   LAVORARE CON LE OPZIONI DEL MODULO
       treat_options()
           Questa  funzione  riempie  le strutture interne che contengono i tag, gli attributi e i dati in linea
           con le opzioni del modulo (specificate nella riga di comando o nella funzione di inizializzazione).

   RICAVARE IL TESTO DAL DOCUMENTO IN INGRESSO
       get_string_until($%)
           Questa funzione restituisce un array con le righe (e i riferimenti) dal documento di ingresso  finché
           non  trova  il  primo  argomento.  Il  secondo  argomento è un hash di opzioni. Il valore 0 significa
           disabilitata (valore predefinito) e 1, abilitata.

           Le opzioni valide sono:

           include
               Questo fa in modo che l'array restituito contenga il testo cercato

           remove
               Questo rimuove il flusso restituito dall'ingresso

           unquoted
               Questo si assicura che il testo cercato sia fuori da ogni virgolettatura

           regex
               Indica che il primo argomento è un'espressione regolare piuttosto che una semplice stringa

       skip_spaces(\@)
           Questa funzione riceve come argomento il riferimento  a  un  paragrafo  (nel  formato  restituito  da
           get_string_until), salta i suoi spazi di intestazione e li restituisce come stringa semplice.

       join_lines(@)
           Questa  funzione  restituisce  una  stringa  semplice  con  il testo dall'array di argomenti (senza i
           riferimenti).

STATO DI QUESTO MODULO

       Questo modulo può tradurre tag e attributi.

ELENCO DEI DAFARE

       TIPO DI DOCUMENTO (ENTITÀ)

       C'è un supporto minimo per la traduzione di entità. Vengono tradotte in un blocco e  i  tag  non  vengono
       presi  in considerazione. Le entità multilinea non sono supportate; le entità vengono sempre riformattate
       durante la traduzione.

       MODIFICA I TIPI DI TAG DAI MODULI EREDITATI (sposta la struttura tag_types all'interno dell'hash $self?)

VEDERE ANCHE

       Locale::Po4a::TransTractor(3pm), po4a(7)

AUTORI

        Jordi Vilalta <jvprat@gmail.com>
        Nicolas François <nicolas.francois@centraliens.net>

TRADUZIONE

        Danilo Piazzalunga <danilopiazza@libero.it>
        Marco Ciampa <ciampix@posteo.net>

COPYRIGHT E LICENZA

        Copyright © 2004 by Jordi Vilalta  <jvprat@gmail.com>
        Copyright © 2008-2009 by Nicolas François <nicolas.francois@centraliens.net>

       Questo programma è software libero; è lecito ridistribuirlo o modificarlo secondo i termini della licenza
       GPL v2.0 o successive (vedere il file COPYING).

perl v5.38.2                                       2024-08-28                           LOCALE::PO4A::XML.3PM(1)