Provided by: po4a_0.52-1_all bug

NOME

       Locale::Po4a::Xml - converte documentos XML e derivados de/para ficheiros PO

DESCRIÇÃO

       O objetivo do projeto po4a (PO para tudo) é facilitar traduções (e mais interessante, a manutenção das
       traduções) usando ferramentas gettext em áreas onde eles não eram esperados como documentação.

       Locale::Po4a::Xml é um módulo para ajudar a tradução de documentos XML em outro idioma [humano]. Também
       pode ser usado como uma base para a construção de módulos de documentos com base em XML.

TRADUZIR COM PO4A::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, não atributos, 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.

OPÇÕES ACEITES POR ESTE MÓDULO

       A opção de depuração global faz com que este módulo mostre as sequências excluídas, para ver se ele
       ignora algo importante.

       Estas são as opções particulares deste módulo:

       nostrip
           Impede-o para tirar os espaços em torno das sequências extraídas.

       wrap
           Canonicalizes  the string to translate, considering that whitespaces are not important, and wraps the
           translated document. This option can be overridden by custom  tag  options.  See  the  "tags"  option
           below.

       unwrap_attributes
           Attributes are wrapped by default. This option disables wrapping.

       caseinsensitive
           Faz  as  etiquetas  e  atributos  procurando  trabalhar  de  forma em maiúsculas e minúsculas. Se for
           definido, ele vai tratar <BooKe<gt>laNG e <BOOK>Lang como <book>lang.

       escapequotes
           Escape quotes in output strings.  Necessary, for example, for creating string resources  for  use  by
           Android build tools.

           See also: https://developer.android.com/guide/topics/resources/string-resource.html

       includeexternal
           Quando  definido,  entidades  externas  estão  incluídas  no  documento  gerado (traduzido) e, para a
           extração  de  sequências.  Se  não  for  definido,  você  vaiter  que  traduzir  entidades   externas
           separadamente como documentos independentes.

       ontagerror
           This  option  defines the behavior of the module when it encounters invalid XML syntax (a closing tag
           which does not match the last opening tag, or a tag's attribute without  value).   It  can  take  the
           following values:

           fail
               Este é o valor padrão. O módulo irá sair com um erro.

           warn
               O módulo continuará e emitirá um aviso

           silent
               O módulo vai continuar sem emitir um aviso.

           Tenha cuidado ao usar esta opção. Recomenda-se geralmente para corrigir o arquivo de entrada.

       tagsonly
           Extrai  apenas  as  etiquetas especificados na opção "tags". Caso contrário, ele irá extrair todas as
           marcas, exceto os especificados.

           Nota: Esta opção está obsoleta.

       doctype
           A sequência que vai tentar combinar com a primeira linha do doctype do documento  (se  definido).  Se
           isso não acontecer, um aviso indicará que o documento poderáser de um tipo mau.

       addlang
           A sequência indicando o caminho (por exemplo, <bbb><AAA>) de uma etiqueta onde um atributo lang="..."
           deve ser adicionado. o idioma será definido como o nome base do ficheiro PO sem qualquer extensão po.

       tags
           Lista  de  etiquetas  separada  por  espaços que deseja traduzir ou ignorar. Por padrão, as etiquetas
           especificadas serão excluídas, mas se você 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 de que o conteúdo da etiqueta <aaa> só será traduzido quando está numaetiqueta <bbb>.

           Você também pode especificar algumas opções de etiquetas, colocando alguns  carateres  em  frente  da
           hierarquia  de  etiquetas.  Por  exemplo,  você  pode  colocar  'w'  (wrap)  ou 'W' (don't wrap) para
           substituir o comportamento padrão especificado pela opção global "wrap".

           Exemplo: W<chapter><title>

           Nota: Esta opção está obsoleta. Você deve usar as opções translated e untranslated em vez.

       attributes
           Space-separated list of tag's attributes you want to translate.  You can specify  the  attributes  by
           their  name  (for  example, "lang"), but you can prefix it with a tag hierarchy, to specify that this
           attribute will only be translated when  it's  in  the  specified  tag.  For  example:  <bbb><aaa>lang
           specifies  that  the  lang  attribute  will only be translated if it's in an <aaa> tag, and it's in a
           <bbb> tag.

       foldattributes
           Não traduzir atributos em etiquetas em linha. Vez disso, substitua todos os atributos  duma  etiqueta
           por po4a-id=<id>.

           Isto é útil quando atributos não serão traduzidas, como isso simplifica as sequências para tradutores
           e evita erros de digitação.

       customtag
           lista de etiquietas separadas por espaços que não deviam ser tratadas como etiquetas. Estas etiquetas
           são tradadas com em linha e, não precisam de ser fechadas.

       break
           Lisat de etiquetas separada por espaços que devem quebrar a sequência. Por padrão, todas as etiquetas
           quebrar a sequência.

           The  tags must be in the form <aaa>, but you can join some (<bbb><aaa>), if a tag (<aaa>) should only
           be considered when it's within another tag (<bbb>).

       inline
           Lista de etiquetas separada por espaços que devem ser tratados como em linha. Por  padrão,  todas  as
           etiquetas quebram a sequência.

           The  tags must be in the form <aaa>, but you can join some (<bbb><aaa>), if a tag (<aaa>) should only
           be considered when it's within another tag (<bbb>).

       placeholder
           Lista de etiquetas separadas por espaços que devem ser tratadas como espaços reservados.  Os  espaços
           reservados não quebram a sequência, mas o conteúdo dos espaços reservados é traduzido separadamente.

           A localização do espaço reservado no seu bloco será marcado com uma sequência semelhante a:

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

           The  tags must be in the form <aaa>, but you can join some (<bbb><aaa>), if a tag (<aaa>) should only
           be considered when it's within another tag (<bbb>).

       nodefault
           lista de etiquetas separadas por espaço que o módulo não deve tentar definir por padrão  em  qualquer
           categoria.

       cpp Diretivas  de  suporte  do pré-processador C. Quando esta opção está definida, po4a irá considerar as
           diretivas de pré-processamento como separadores de parágrafo. Isso é importante  se  o  ficheiro  XML
           deve  ser  processado,  porque  senão  as  directivas podem ser inseridas no meio de linhas se o po4a
           considerar que pertencem ao parágrafo corrente, que não será reconhecido pelo pré-processador.  Nota:
           as  directivas  de  pré-processamento  só  devem  aparecer  entre etiquetas (que não deve quebrar uma
           etiqueta).

       translated
           Listas de etiquetas separadas por espaços que quer traduzir.

           The tags must be in the form <aaa>, but you can join some (<bbb><aaa>), if a tag (<aaa>) should  only
           be considered when it's within another tag (<bbb>).

           Você  também  pode  especificar  algumas opções de etiquetas, colocando alguns carateres em frente da
           hierarquia de etiquetas. Por exemplo,  você  pode  colocar  'w'  (wrap)  ou  'W'  (don't  wrap)  para
           substituir o comportamento padrão especificado pela opção global "wrap".

           Exemplo: W<chapter><title>

       untranslated
           Listas de etiquetas separadas por espaços que não quer traduzir.

           The  tags must be in the form <aaa>, but you can join some (<bbb><aaa>), if a tag (<aaa>) should only
           be considered when it's within another tag (<bbb>).

       defaulttranslateoption
           As categorias padrão para etiquetas que não estão em nenhum dos traduzidosnão  traduzidos,  partidos,
           em  linha, ou espaço reservado.

           Trata-se de um conjunto da cartas:

           w   Etiquetas devem ser traduzidos e o conteúdo pode ser re-envolvido.

           W   Etiquetas devem ser traduzidos e o conteúdo não pode ser re-envolvido

           i   As tags deverão ser traduzidas em linha

           p   Etiquetas devem ser traduzidos em linha.

ESCREVENDO MÓDULOS DERIVADOS

   DEFINIR QUE ETIQUETAS E ATRIBUTOS PARA TRADUÇÃO
       A  mais  simples personalização é definir quais as etiquetas e atributos mais desejados para o analisador
       de traduzir. Isto deve ser feito na função 'initialize'.  Primeiro,  você  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 algumas novas opções de linha de comando,  você
       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   o  _default_inline,  _default_break,  _default_placeholder,  _default_translated  e,
       _default_untranslated e opções _default_attributes em módulos derivados. Isso  permite  aos  utilizadores
       substituir o comportamento padrão definido no seu módulo com as opções da linha de comando.

   SUBSTITUINDO A FUNÇÃO found_string
       Outro  passo  simples  é  substituir  a  função  "found_string",  que  recebe  as sequências extraídas do
       analisador, a fim de traduzi-las.Lá pode controlar quais linhas você 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 o que sequências a traduzir, como traduzi-las e gerar o comentário.

       O conteúdo dessas opções depende do tipo de sequência é (especificado numa entrada do 'hash'):

       type="tag"
           A  sequência  encontrada  é  o conteúdo de uma etiqueta traduzível. A entrada "tag_options" contém os
           carateres de opção na frente da hierarquia das etiquetas na opção do módulo "tags".

       type="attribute"
           Significa que a sequência encontrada é o valor de um atributo traduzível. A entrada "attribute" tem o
           nome do atributo.

       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 sequências.

   MODIFICANDO TIPOS DE ETIQUETAS (A FAZER)
       This  is  a  more  complex  one,  but it enables a (almost) total customization.  It's based on a list of
       hashes, each one defining a tag type's behavior. The list should be sorted so that the most general  tags
       are  after  the  most concrete ones (sorted first by the beginning and then by the end keys). To define a
       tag type you'll have to make a hash with the following keys:

       beginning
           Especifice o princípio da etiqueta, depois de "<".

       end Especifice o fim da etiqueta, depois de ">".

       breaking
           Ele diz que se esta é uma classe de etiquetas quebradas. Uma etiqueta não-quebrada (inline) é uma que
           pode ser tomada como parte do conteúdo  de  uma  outra  etiqueta.  Pode  levar  o  valor  falso  (0),
           verdadeiro  (1)  ou  indefinido.  Se  você  deixar este indefinido, você vai ter que definir a função
           f_breaking que vai dizer se uma etiqueta concreta desta classe é uma etiqueta de quebrar ou não.

       f_breaking
           É uma função que vai dizer se a próxima etiqueta é uma quebra ou não. Ele  deve  ser  definido  se  a
           opção breaking não é.

       f_extract
           Se  você  deixar esta chave indefinida, a função de extração de genéricos terá que extrair a etiqueta
           em si. É útil para as etiquetas que podem ter outras etiquetas ou estruturas especiais em si, de modo
           que o analisador principal não fica louco. Esta função recebe um booleano que diz se a etiqueta  deve
           ser removida do fluxo de entrada ou não.

       f_translate
           Esta  função  recebe  a  etiqueta  (no  formato  get_string_until())  e  retorna a etiqueta traduzida
           (atributos traduzidos ou todos as necessárias transformações) como uma única sequência.

FUNÇÕES INTERNAS usadas para escrever analises derivadas

   TRABALHANDO COM ETIQUETAS
       get_path()
           Esta função retorna o caminho para a etiqueta corrente  a  partir  da  raiz  do  documento  na  forma
           <html><body><p>.

           Um  conjunto adicional de etiquetas (sem parênteses) pode ser passado como argumento. Estes elementos
           de caminho são adicionados ao fim do caminho da corrente.

       tag_type()
           Esta função retorna o índice da lista tag_types que cabe na etiqueta seguinte no fluxo de entrada, ou
           -1, se é no fim do ficheiro de entrada.

       extract_tag($$)
           Esta função retorna a próxima etiqueta do fluxo de entrada sem o  início  e  o  fim,  numa  forma  de
           matriz,  para  manter  as  referências do ficheiro de entrada tem dois parâmetros: o tipo de etiqueta
           (como retornado por tag_type) e um booleano, que indica se deve ser removido a  partir  do  fluxo  de
           entrada.

       get_tag_name(@)
           Esta  função  retorna o nome da etiqueta passada como um argumento, no formulário da matriz retornada
           por extract_tag.

       breaking_tag()
           Esta função retorna um booleano que diz que se a próxima etiqueta no fluxo de entrada é uma  etiqueta
           quebrada ou não (etiqueta inline). Ele deixa o fluxo de entrada intacto.

       treat_tag()
           Essa  função  converte a próxima etiqueta a partir do fluxo de entrada. Usando em cada etiqueta tipos
           personalizados de funções de tradução.

       tag_in_list($@)
           Esta função retorna um valor de sequência que diz que se  o  primeiro  argumento  (a  hierarquia  das
           etiquetas)  corresponde  a qualquer uma das etiquetas do segundo argumento (a lista de etiquetas ou a
           sua hierarquia). Se não corresponder, ele  retorna  0.  contrário,  retorna  as  opções  de  etiqueta
           correspondentes (os carateres de frente da etiqueta) ou 1 (se a etiqueta não tem opções).

   TRABALHANDO COM ATRIBUTOS
       treat_attributes(@)
           Essa  função  manipula  a  tradução  de  atributos  das etiquetas. Recebe a etiqueta sem as marcas de
           início/fim e, em seguida encontram os atributos, e traduz as traduzíveis (especificado pela opção  do
           módulo "atributos"). Este retorna uma sequência simples com a etiqueta traduzida.

   TRABALHANDO COM OPÇÕES DE MÓDULOS
       treat_options()
           Esta  função  preenche as estruturas internas que contêm as etiquetas, atributos e dados em linha com
           as opções do módulo (especificado na linha de comando ou na função de inicialização).

   OBTENÇÃO DE TEXTO A PARTIR DO DOCUMENTO DE ENTRADA
       get_string_until($%)
           Esta função retorna uma matriz com as linhas (e referências) do documento de entrada até encontrar  o
           primeiro  argumento.  O  segundo  argumento  é  um  'hash' de opções. Valor 0 significa desativado (o
           padrão) e 1, ativado.

           As opções válidas são:

           include
               Isto faz com que a matriz retornada contenha o texto procurado

           remove
               Isto remove o fluxo retornado a partir da entrada

           unquoted
               Isto assegura que o text procurado está fora de qualquer citação

       skip_spaces(\@)
           Esta  função  recebe  como  argumento  a  referência  a  um  parágrafo  (no  formato  retornado   por
           get_string_until), ignora seus espaços de título e retorna-os como uma sequência simples.

       join_lines(@)
           Esta  função  retorna  uma  sequência  simples  com  o  texto  do argumento da matriz (descartando as
           referências).

STATUS DESTE MÓDULO

       Este módulo pode traduzir etiquetas e atributos.

LISTA PARAFAZER

       DOCTYPE (ENTITIES)

       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 suportados 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?)

VER TAMBÉM

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

AUTORES

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

DIREITOS DE AUTOR E LICENÇA

        Direitos de Autor (c) 2004 por Jordi Vilalta  <jvprat@gmail.com>
        Direitos de Autor (c) 2008-2009 porNicolas François <nicolas.francois@centraliens.net>

       Este  programa é software livre, você pode redistribuí-lo e/ou modificá-lo sob os termos da GPL (consulte
       o ficheiro CÓPIA).

Ferramentas Po4a                                   2017-08-26                             Locale::Po4a::Xml(3pm)