Locale::Po4a::Xml
converte documentos XML e derivados de/para ficheiros PO
- Provided by: po4a (Version: 0.74-3)
- Report a bug
converte documentos XML e derivados de/para ficheiros PO
O objetivo do projeto po4a (PO for anything: PO para qualquer coisa) é facilitar traduções (e o mais interessante, a manutenção das traduções) a usar as ferramentas do gettext em áreas em que não se esperava, como na documentação.
Locale::Po4a::Xml é um módulo para ajudar a tradução de documentos XML em outros idiomas [humanos]. Também pode ser usado como uma base para a construção de módulos de documentos com base em XML.
Este módulo pode ser usado diretamente para lidar com documentos XML genéricos. Isto irá extrair todo o conteúdo das etiquetas e, e nenhum atributo, já que é onde o texto é escrito na maioria dos documentos com base XML.
Existem algumas opções (descrito na próxima secção), que podem personalizar este comportamento. Se isto não se encaixa no seu formato de documento que está encorajado a escrever o seu próprio módulo derivado deste, para descrever os detalhes do seu formato. Consulte a secção WRITING DERIVATE MODULES abaixo, para descrição do processo.
A opção de depuração global faz com que este módulo mostre as cadeia excluídas, para ver se ele salta algo importante.
Estas são as opções particulares deste módulo:
Veja também: https://developer.android.com/guide/topics/resources/string-resource.html
Tenha cuidado ao usar esta opção. Recomenda-se geralmente para corrigir o ficheiro de entrada.
Extrai apenas as marcações especificadas na opção tags. Caso contrário, ela extrairá todas as marcações, com exceção daquelas especificadas.
Lista de etiquetas separadas por espaços que deseja traduzir ou ignorar. Por predefinição, as etiquetas especificadas serão excluídas, mas se usar a opção "tagsonly", etiquetas especificadas serão as únicas incluídas. As etiquetas devem estar em forma <aaa>, mas podem-se juntar a algum (<bbb><aaa>) para dizer que o conteúdo da etiqueta <aaa> só será traduzido quando está numa etiqueta <bbb>.
Também pode especificar algumas opções de marcação para pôr alguns caracteres na frente da hierarquia de marcações. Por exemplo, pode pôr um w (wrap) ou W (não aplica wrap) para sobrescrever o comportamento predefinido especificado pela opção global wrap.
Exemplo: W<chapter><title>
Isto é útil quando atributos não serão traduzidas, como isso simplifica as cadeias para tradutores e evita erros de digitação.
As etiquetas devem estar na forma <aaa>, mas pode juntar algumas (<bbb><aaa>), se a etiqueta (<aaa>) só deve ser considerada quando está em outra etiqueta (<bbb>).
Note que uma marcação deve ser listada em apenas uma cadeia de configuração de break, inline placeholder ou customtag.
As etiquetas devem estar na forma <aaa>, mas pode juntar algumas (<bbb><aaa>), se a etiqueta (<aaa>) só deve ser considerada quando está em outra etiqueta (<bbb>).
A localização do espaço reservado no bloco dele será marcado com uma cadeia semelhante a:
<placeholder type=\"footnote\" id=\"0\"/>
As etiquetas devem estar na forma <aaa>, mas pode juntar algumas (<bbb><aaa>), se a etiqueta (<aaa>) só deve ser considerada quando está em outra etiqueta (<bbb>).
Se tiver uma marcação que tenha a configuração predefinida dela pela subclasse deste módulo, mas desejar definir uma configuração alternativa, será necessário listar essa marcação como parte da cadeia de configuração nodefault.
As etiquetas devem estar na forma <aaa>, mas pode juntar algumas (<bbb><aaa>), se a etiqueta (<aaa>) só deve ser considerada quando está em outra etiqueta (<bbb>).
Também pode especificar algumas opções de marcação para por alguns caracteres na frente da hierarquia de marcações. Isso sobrepõe o comportamento predefinido especificado pelas opções globais wrap e defaulttranslateoption.
Internamente, o analisador XML só se preocupa com essas quatro opções: w W i p.
* As etiquetas listadas em break são definidas como w ou W dependendo da opção wrap.
* As etiquetas listadas em inline são definidas como i.
* As etiquetas listadas em placeholder são definidas como p.
* As etiquetas listadas em untranslated não têm nenhuma dessas opções definidas.
Pode verificar o comportamento real do parâmetro interno ao invocar po4a com a opção --debug.
Exemplo: W<chapter><title>
Note que uma marcação deve estar listada na cadeia de configuração translated ou untranslated.
As etiquetas devem estar na forma <aaa>, mas pode juntar algumas (<bbb><aaa>), se a etiqueta (<aaa>) só deve ser considerada quando está em outra etiqueta (<bbb>).
Note que uma etiqueta em linha traduzível numa etiqueta não traduzível é tratada como uma etiqueta de quebra traduzível, a configuração i é descartada e w ou W é definido dependendo da opção wrap.
Este é um conjunto de letras, conforme definido em translated e essa configuração é válida apenas para etiquetas traduzíveis.
A mais simples personalização é definir quais as etiquetas e atributos mais desejados para o analisador traduzir. Isto deve ser feito na função 'initialize'. Primeiro, deve invocar o 'initialize' principal, para obter as opções de linha de comando e, em seguida, acrescentar as suas definições personalizadas para as opções de 'hash'. Se quiser tratar de algumas novas opções na linha de comando, deve defini-las antes invocar o 'initialize' principal:
$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;
Você deve usar as opções _default_inline, _default_break, _default_placeholder, _default_translated, _default_untranslated e _default_attributes nos módulos derivados. Isso permite que utilizadores sobreponham o comportamento predefinido definido no seu módulo com opções de linha de comando.
Se não gostar do comportamento predefinido deste módulo xml e módulos derivados dele, poderá fornecer opções de linha de comando para alterar o comportamento deles.
Outro passo simples é sobrepor a função "found_string", que recebe as cadeias extraídas do analisador, a fim de traduzi-las. Lá pode controlar quais cadeias deseja traduzir e realizar neles as transformações antes ou depois da tradução em si.
Ele recebe o texto extraído, a referência de onde ele estava, e um 'hash' que contém informações extras para controlar que cadeias a traduzir, como traduzi-las e gerar o comentário.
O conteúdo dessas opções depende do tipo de cadeia é (especificado numa entrada deste 'hash'):
Ela deve retornar o texto que irá substituir o original no documento traduzido. Aqui está um exemplo básico desta função:
sub found_string {
my ($self,$text,$ref,$options)=@_;
$text = $self->translate($text,$ref,"type ".$options->{'type'},
'wrap'=>$self->{options}{'wrap'});
return $text;
}
Aqui está outro exemplo simples no novo módulo Dia , que só filtra algumas cadeias.
Este é mais complexo, mas permite uma personalização (quase) total. É baseado numa lista de 'hashes', cada um define o comportamento de um tipo de etiqueta. A lista deve ser ordenada para que as etiquetas mais gerais estejam antes das mais concretas (ordenadas primeiro no início e, depois, pelas chaves de fecho). Para definir um tipo de etiqueta vai ter que fazer um hash com as seguintes chaves:
Um conjunto adicional de etiquetas (sem parênteses) pode ser passado como argumento. Estes elementos de caminho são adicionados ao fim do caminho atual.
Aqui, a marcação tem estrutura iniciada por < e finalizada por > e pode conter várias linhas.
Isso funciona na matriz "@{$self->{TT}{doc_in}}" que detém os dados do documento de entrada e referência indiretamente via "$self->shiftline()" e "$self->unshiftline($$)".
Isso funciona na matriz "@{$self->{TT}{doc_in}}" que detém os dados do documento de entrada e referência indiretamente via "$self->shiftline()" e "$self->unshiftline($$)".
Isso funciona na matriz "@{$self->{TT}{doc_in}}" que detém os dados do documento de entrada e referência indiretamente via "$self->shiftline()" e "$self->unshiftline($$)".
Isso funciona na matriz "@{$self->{TT}{doc_in}}" que detém os dados do documento de entrada e referência indiretamente via "$self->shiftline()" e "$self->unshiftline($$)".
As opções válidas são:
Este módulo pode traduzir etiquetas e atributos.
DOCTYPE (ENTIDADES)
Há um suporte mínimo para a tradução de entidades. Elas são traduzida como um todo e as etiquetas não são tidas em conta. As entidades multi linhas não são suportadas e as entidades são sempre re-envolvidas durante a tradução.
MODIFICAR TIPOS DE ETIQUETAS A PARTIR DE MÓDULOS HERDADOS (move a estrutura tag_types dentro de hash $self hash?)
Jordi Vilalta <jvprat@gmail.com> Nicolas François <nicolas.francois@centraliens.net>
Copyright © 2004 Jordi Vilalta <jvprat@gmail.com> Copyright © 2008-2009 Nicolas François <nicolas.francois@centraliens.net>
Este programa é um software livre; pode redistribuí-lo e/ou modificá-lo sob os termos da GPL v2.0 ou posterior (veja o ficheiro COPYING).