| LOCALE::PO4A::XML.3PM(1) | User Contributed Perl Documentation | LOCALE::PO4A::XML.3PM(1) |
Locale::Po4a::Xml - converte documenti XML e derivati da/verso file PO
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.
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.
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:
Vedere anche: https://developer.android.com/guide/topics/resources/string-resource.html
Attenzione a usare questa opzione. Generalmente si raccomanda di sistemare il file in ingresso.
Estrae solo i tag specificati nell'opzione tags. Altrimenti, estrarrà tutti i tag tranne quelli specificati.
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>
Utile quando gli attributi non devono essere tradotti, poiché semplifica le stringhe per i traduttori ed evita errori di battitura.
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.
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>).
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>).
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.
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.
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.
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.
È un insieme di lettere come definito in translated e questa impostazione è valida solo per i tag traducibili.
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.
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),
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):
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.
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:
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.
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($$)".
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($$)".
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($$)".
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($$)".
Le opzioni valide sono:
Questo modulo può tradurre tag e attributi.
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?)
Jordi Vilalta <jvprat@gmail.com> Nicolas François <nicolas.francois@centraliens.net>
Danilo Piazzalunga <danilopiazza@libero.it> Marco Ciampa <ciampix@posteo.net>
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).
| 2024-08-06 | perl v5.38.2 |