PO4A.1P(1)

NOME
po4a - atualizar ambos os ficheiros PO e documentos traduzidos numa só vez

RESUMO
po4a [options] config_file

DESCRIÇÃO
po4a (PO for anything) facilita a manutenção de tradução da documentação a usar as ferramentas clássicas do gettext. A característica principal do po4a é que ele dissocia a tradução do conteúdo da estrutura documental. Consulte a página po4a(7) para uma introdução suave a este projeto.

Ao executar, po4a analisa todos os ficheiros de documentação especificados no seu ficheiro de configuração. Atualiza os ficheiros PO (contendo a tradução) para refletir qualquer alteração na documentação e produzir uma documentação traduzida, injetando a tradução do conteúdo (encontrado nos ficheiros PO) na estrutura do documento mestre original.

Inicialmente, os ficheiros PO apenas contêm as cadeias para traduzir da documentação original. Este formato de ficheiro permite que os tradutores forneçam manualmente uma tradução para cada parágrafo extraído por po4a. Se a documentação for modificada após a tradução, po4a marca as traduções correspondentes como "fuzzy" no ficheiro PO para solicitar uma revisão manual pelos tradutores. Os tradutores também podem fornecer o chamado "addendum" (adendo), que são conteúdo extra afirmando por exemplo quem fez a tradução e como relatar bugs.

 documentos mestres -+----->-------->---------+
  (criação de docs)  |                        |
                     V  (execuções do po4a)   >----+--> documentos
                     |                        |    |    traduzidos
  ficheiros PO existentes ------->-----> ficheiros PO atualizados-->--+    |
     ^                             |               |
     |                             V               ^
     +----------<---------<--------+               |
      (processo de tradução manual)                |
                                                   |
 adendo ---->--------------------------------------+

O fluxo de trabalho de po4a é assíncrono, conforme adequado para projetos de código aberto. Os autores de documentação escrevem os documentos mestre no seu próprio ritmo. Os tradutores revisam e atualizam as traduções nos ficheiros PO. Os mantenedores executam novamente po4a quando necessário, para refletir qualquer alteração na documentação original para os ficheiros PO e para produzir traduções de documentação atualizadas, injetando a mais recente tradução para a mais recente estrutura de documentos.

Por predefinição, um documento traduzido é produzido quando pelo menos 80% do seu conteúdo é traduzido. O texto não traduzido é mantido no idioma original. A documentação produzida mistura idiomas se a tradução não estiver completa. Pode alterar o limite de 80% com a opção -keep descrita abaixo. Note no entanto que descartar traduções assim que não são 100% pode ser desanimador para os tradutores cujo trabalho quase nunca será mostrado aos utilizadores, enquanto mostrar "traduções" que são muito incompletas pode ser um problema para os utilizadores finais.

Armazenar os ficheiros de documentação traduzidos no sistema de controle de versão é provavelmente uma má ideia, uma vez que eles são gerados automaticamente. Os ficheiros preciosos são os ficheiros PO, que contêm o trabalho duro dos seus colegas tradutores. Além disso, algumas pessoas acham mais fácil interagir com os tradutores através de uma plataforma online como o weblate, mas naturalmente que isto é totalmente opcional.

  Tutorial de início rápido
Vamos supor que mantém um programa chamado foo que tem uma página man man/foo.1 escrito em inglês (o idioma-ponte na maioria dos projetos de código aberto, mas po4a pode ser usado de ou para qualquer idioma). Um tempo atrás, alguém forneceu uma tradução em alemão chamada man/foo.de.1 e desapareceu. Este é um problema porque acabou de ter um relatório de bug dizendo que a sua documentação contém uma informação gravemente enganosa que deve ser corrigida em todos os idiomas, mas não fala alemão para que só possa modificar o original, não a tradução. Agora, outro colaborador quer contribuir com uma tradução para japonês, um idioma que também não domina.

É hora de converter a sua documentação para po4a para resolver os seus pesadelos de manutenção de documentação. Quer atualizar o documento quando necessário, quer facilitar o trabalho dos seus colegas tradutores e quer garantir que os seus utilizadores nunca vejam nenhuma documentação desatualizada e, portanto, enganosa.

A conversão inclui dois passos: configurar a infraestrutura do po4a e converter a tradução anterior alemã para gravar o trabalho anterior. Esta última parte é feita usando po4a-gettextize, como se segue. Como detalhado na documentação de po4a-gettextize(1), este processo raramente é totalmente automático, mas uma vez feito, o ficheiro de.po contendo a tradução alemã pode ser integrado no seu fluxo de trabalho do po4a.

  po4a-gettextize --format man --master foo.1 --localized foo.de.1 --po de.po

Vamos agora configurar o po4a. Com a disposição de ficheiro apropriada, o seu ficheiro de configuração pode ser tão simples como este:

 [po_directory] man/po4a/

 [type: man] man/foo.1 $lang:man/translated/foo.$lang.1

Isso especifica que todos os ficheiros PO (contendo o trabalho dos tradutores) estão no diretório man/po4a/ e que tem apenas um ficheiro mestre, man/foo.1. Se tivesse vários ficheiros mestres, teria várias linhas semelhantes à segunda. Cada linha também especifica onde escrever os ficheiros de tradução correspondentes. Aqui, a tradução alemã de man/foo.1 está em man/translated/foo.de.1.

A última coisa que precisamos para completar a configuração do po4a é um ficheiro POT contendo o material do modelo que deve ser usado para iniciar uma nova tradução. Basta criar um ficheiro vazio com a extensão .pot no po_directory especificado (por exemplo, man/po4a/foo.pot) e o po4a irá preencher com o conteúdo esperado.

Aqui está uma recapitulação dos ficheiros nesta configuração:

  ├── man/
  │   ├── foo.1        <- A página man original, em inglês
  │   ├── po4a/
  │   │   ├── de.po    <- O PO com tradução alemã, da gettextização
  │   │   └── foo.pot  <- O POT, modelo de futuras traduções (vazio no início)
  │   └── translated/  <- Diretório onde as traduções serão criadas
  └── po4a.cfg         <- O ficheiro de configuração

Uma vez configurado, a execução do po4a analisará a sua documentação, atualizará o ficheiro de modelo POT, vai usá-lo para atualizar os ficheiros de tradução PO e vai usá-los para atualizar os ficheiros de tradução da documentação. Tudo num comando:

        po4a --verbose po4a.cfg

É isto. po4a está agora totalmente configurado. Uma vez que tenha corrigido o seu erro no man/foo.1, o parágrafo problemático na tradução alemã será substituído pelo texto corrigido em inglês. Misturar idiomas não é o melhor, mas é a única maneira de remover erros nas traduções que nem se percebem e garantir que o conteúdo apresentado aos utilizadores nunca seja enganoso. A atualização da tradução alemã também é muito mais fácil no ficheiro PO correspondente, então a mistura de idiomas pode não durar muito. Finalmente, quando um tradutor japonês quer contribuir com uma nova tradução, ele deve renomear o foo.pot em ja.po e completar a tradução. Uma vez que tem este ficheiro, basta deixá-lo em man/po4a/po/. Uma página traduzida aparecerá como man/translated/foo.ja.1 (desde que o conteúdo suficiente seja traduzido) quando executar po4a novamente.

OPÇÕES

-k, --keep
    Limite mínimo de percentagem de tradução para manter (ou seja, escrever) o ficheiro resultante (predefinição: 80). Ou seja, por predefinição, ficheiros têm que ser traduzidos pelo menos a 80% para serem escritos no disco.

-w, --width
    Coluna na qual devemos quebrar linha no ficheiro resultante se o formato suportar (padrão: 76). Se o valor fornecido for 0 ou negativo, o ficheiro resultante não terá quebra de linha. Isto é útil com alguns formatos que podem ficar danificados ao quebrar linha novamente.

-h, --help
    Mostrar uma pequena mensagem de ajuda.

-M, --master-charset
    Conjunto de caracteres dos ficheiros que contém os documentos a traduzir. Note que todos os ficheiros mestres devem ter o mesmo conjunto de caracteres.

-L, --localized-charset
    Conjunto de caracteres dos ficheiros que contêm os documentos localizados. Note que todos os documentos traduzidos utilizarão o mesmo conjunto de caracteres.

-A, --addendum-charset
    Conjunto de caracteres da adenda. Note-se que todas as adendas devem estar no mesmo conjunto de caracteres.

-V, --version
    Mostrar a versão do script e sai.

-v, --verbose
    Aumenta os detalhes do programa.

-q, --quiet
    Diminui os detalhes do programa.

-d, --debug
    Produz alguma informação de depuração.

-o, --option
    Opção/ções adicional/ais para passar ao plugin de formato. Veja a documentação de cada plugin para mais informações sobre as opções válidas e os significados deles. Por exemplo, poderia passar '-o tablecells' para o analisador AsciiDoc, enquanto o analisador de texto aceitaria '-o tabs=split'.

-f, --force
    Gera sempre os ficheiros POT e PO, mesmo se po4a considerar que não é necessário.

    O comportamento predefinido (quando --force não é especificado) é o seguinte:

        Se o ficheiro POT já existe, ele é regenerado se um documento mestre ou o ficheiro de configuração é mais recente (a menos que --no-update seja fornecido). O ficheiro POT também é escrito num documento temporário e po4a verifica que as mudanças são realmente necessárias.

        Além disso, uma tradução é regenerada somente se o documento mestre dela, o ficheiro PO, uma das suas adendas ou o ficheiro de configuração é mais recente. Para evitar tentar regenerar traduções que não passam no teste de limite (ver --keep), um ficheiro com a extensão .po4a-stamp pode ser criado (ver --stamp).

    Se um documento mestre incluir ficheiros, deve usar a flag --force porque o tempo de modificação dos ficheiros incluídos não é tomado em conta.

    Os ficheiros PO são sempre regenerados com base em POT com msgmerge -U.

--stamp
    Diz ao po4a para criar ficheiros de informação quando uma tradução não é gerada porque não atingiu o limiar. Esses ficheiros de informação são nomeados de acordo com o documento traduzido esperado, com a extensão .po4a-stamp.

    Nota: Isso só ativa a criação dos ficheiros .po4a-stamp. Os ficheiros de informação são sempre utilizados se existirem e são removidos com --rm-translations ou quando o ficheiro é finalmente traduzido.

--no-translations
    Não gera os documentos traduzidos, apenas atualiza os ficheiros POT e PO.

--no-update
    Não altera os ficheiros POT e PO, apenas a tradução pode ser atualizada.

--keep-translations
    Mantém os ficheiros de tradução existentes mesmo se a tradução não atingir o limite especificado por --keep. Essa opção não cria ficheiros de tradução com pouco conteúdo, mas vai gravar traduções existentes que cujo nível decai devido a alterações nos ficheiros de mestre.

    ATENÇÃO: esta opção muda o comportamento do po4a de uma maneira bastante drástica: os seus ficheiros traduzidos não serão atualizados até que a tradução melhore. Use esta opção somente se preferir enviar uma documentação traduzida desatualizada em vez de enviar apenas uma documentação não traduzida precisa.

--rm-translations
    Remove os ficheiros traduzidos (implica --no-translations).

--no-backups
    Esta bandeira não faz nada desde 0.41 e pode ser removida em versões posteriores.

--rm-backups
    Esta bandeira não faz nada desde 0.41 e pode ser removida em versões posteriores.

--translate-only translated-file
    Traduzir apenas o ficheiro especificado. Pode ser útil para acelerar o processamento se um ficheiro de configuração contém muitos ficheiros. Note que o que esta opção não atualiza ficheiros PO e POT. Esta opção pode ser usada várias vezes.

--variable var=value
    Define uma variável que será expandida no ficheiro de configuração po4a. Cada ocorrência de $(var) será substituída por value. Esta opção pode ser usada várias vezes.

--target-lang LANG
    Atualiza ficheiros PO e gera documentos traduzidos apenas para o idioma especificado. Esta opção pode ser usada várias vezes.

--srcdir SRCDIR
    Define o diretório de base para todos os documentos de entrada especificados no ficheiro de configuração do po4a.

    Se ambos destdir e srcdir forem especificados, os ficheiros de entrada serão pesquisados nos diretórios seguintes, em ordem: destdir, o diretório atual e srcdir. Os ficheiros resultantes são gravados em destdir se especificado, ou no diretório atual.

--destdir DESTDIR
    Define o diretório base para todos os documentos de saída especificados no ficheiro de configuração po4a (veja --srcdir em cima).

  Opções que modificam o cabeçalho do POT

--porefs type
    Especifica o formato de referência. O argumento tipo pode ser um de: never para não produzir qualquer referência, file para especificar o ficheiro sem o número da linha, counter para substituir os números de linha a aumentar o contador e full para incluir referências completas. (predefinição: full).

--wrap-po no|newlines|number (predefinição: 76)
    Especifica como o ficheiro po deve ter a quebra de linha. Isso permite escolher entre ficheiros que tem boa quebra de linha, mas que podem levar a conflitos de git ou ficheiros que são mais fáceis de manipular automaticamente, mas mais difíceis de ler para humanos.

    Historicamente, o pacote gettext reformatou os ficheiros po na 77ª coluna para questões cosméticas. Esta opção especifica o comportamento de po4a. Se for definido como um valor numérico, o po4a quebrará linha do ficheiro po após esta coluna e após novas linhas no conteúdo. Se for definido como newlines, o po4a dividirá apenas o msgid e o msgstr após as novas linhas no conteúdo. Se for definido como no, o po4a não quebrará linha do ficheiro po. Os comentários de referência têm sempre as linhas quebradas pelas ferramentas do gettext que usamos internamente.

    Observe que esta opção não afeta a maneira como o msgid e o msgstr sofrem quebra de linhas ou seja, como os caracteres de nova linha são adicionados ao conteúdo dessas cadeias.

--master-language
    Idioma dos ficheiros fonte que contêm os documentos a traduzir. Note que todos os documentos mestre devem usar o mesmo idioma.

--msgid-bugs-address e-mail@endereço
    Define o endereço do relatório para bugs de msgid. Por predefinição, os ficheiros POT criados não têm campos Report-Msgid-bugs-To.

--copyright-holder string
    Define o titular dos direitos de autor no cabeçalho POT. O valor predefinido é " Free Software Foundation, Inc."

--package-name string
    Define o nome do pacote para o cabeçalho POT. A predefinição é "PACKAGE".

--package-version string
    Define a versão do pacote para o cabeçalho POT. A predefinição é "VERSION".

  Opções para modificar os ficheiros PO

--msgmerge-opt options
    Opções extra para msgmerge(1).

    Nota: $lang será estendida ao idioma atual.

--no-previous
    Esta opção remove --previous a partir das opções passadas para msgmerge . Isto é necessário para suportar versões do gettext antes de 0.16.

--previous
    Esta opção acrescenta --previous ás opções passadas para msgmerge. Isso requer gettext 0.16 ou posterior e é ativado por predefinição.

FICHEIRO DE CONFIGURAÇÃO
O po4a espera um ficheiro de configuração como argumento. Este ficheiro deve conter os elementos seguintes:

•   O caminho aos ficheiros PO e a lista de idiomas existentes no projeto;

•   Opcionalmente, algumas opções globais e os chamados aliases de configuração que são usados como modelos para configurar ficheiros mestre individuais ;

•   A lista de cada ficheiro mestre a traduzir, juntamente com parâmetros específicos.

Todas as linhas contêm um comando entre colchetes, seguido pelos seus parâmetros. Os comentários começam com o caractere "#" e correm até ao fim da linha. Pode escapar do fim da linha para espalhar um comando por várias linhas.

Alguns exemplos completos são apresentados nesta página, enquanto outros exemplos encontram-se no diretório "t/cfg" da distribuição fonte.

  Encontrar os ficheiros PO e POT
A solução mais simples é fornecer o caminho aos ficheiros POT e PO, da maneira seguinte:

 [po4a_paths] man/po/project.pot de:man/po/de.po fr:man/po/fr.po

Isto especifica o caminho ao ficheiro POT primeiro e, em seguida, os caminhos aos ficheiros PO Alemão e Francês.

A mesma informação pode ser escrita da seguinte forma para reduzir o risco de erros de cópia/colagem:

 [po4a_langs] fr de
 [po4a_paths] man/po/project.pot $lang:man/po/$lang.po

O componente $lang é expandido automaticamente a usar a lista de idiomas fornecidos, a reduzir o risco de erro de copiar/colar quando um novo idioma é adicionado.

Pode compactar ainda mais as mesmas informações a fornecer apenas o caminho ao diretório que contém o seu projeto de tradução, como a seguir.

 [po_directory] man/po/

O diretório fornecido deve conter um conjunto de ficheiros PO, cada um chamado XX.po, o "XX" a ser o ISO 631-1 do idioma utilizado neste ficheiro. O diretório também deve conter um único ficheiro POT, com a extensão ".pot". Para a primeira execução, este ficheiro pode estar vazio, mas deve existir (o po4a não pode adivinhar o nome a usar antes da extensão).

Note que deve escolher apenas um de "po_directory" e "po4a_paths". O primeiro ("po_directory") é mais compacto, reduz ainda mais o risco de erro de copiar/colar, mas obriga-o a usar a estrutura de projeto e os nomes de ficheiro esperados. O segundo ("po4a_paths") é mais explícito, provavelmente mais legível e é aconselhado quando configura o seu primeiro projeto com o po4a.

Ficheiros PO centralizados ou divididos?

Por predefinição, o po4a produz um único ficheiro PO por idioma de destino, a conter todo o conteúdo do seu projeto de tradução. Conforme o seu projeto cresce, o tamanho desses ficheiros pode tornar-se problemático. Ao utilizar weblate, é possível especificar prioridades para cada segmento de tradução (isto é, msgid), de modo que os importantes sejam traduzidos primeiro. Mesmo assim, algumas equipas de tradução preferem dividir o conteúdo em vários ficheiros.

Para ter um ficheiro PO por ficheiro mestre, basta usar a cadeia $master no nome dos ficheiros PO na linha "[po4a_paths]", da maneira seguinte.

 [po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po

Com esta linha, o po4a produzirá ficheiros POT e PO separados para cada documento a ser traduzido. Por exemplo, se tiver 3 documentos e 5 idiomas, isto resultará em 3 ficheiros POT e 15 ficheiros PO. Estes ficheiros são nomeados conforme especificado no modelo "po4a_paths", com $master substituído no nome de base de cada documento a ser traduzido. Em caso de conflito de nome, pode especificar o ficheiro POT a ser usado da seguinte maneira, com o parâmetro "pot=".

Este recurso também pode ser usado para agrupar vários ficheiros traduzidos no mesmo ficheiro POT. O exemplo a seguir só produz 2 ficheiros POT: l10n/po/foo.pot (contendo o material de foo/gui.xml) e l10n/po/bar.pot (contendo o material de ambos bar/gui.xml e bar/cli.xml).

 [po4a_langs] de fr ja
 [po4a_paths] l10n/po/$master.pot $lang:l10n/po/$master.$lang.po
 [type: xml] foo/gui.xml $lang:foo/gui.$lang.xml pot=foo
 [type: xml] bar/gui.xml $lang:bar/gui.$lang.xml pot=bar
 [type: xml] bar/cli.xml $lang:bar/cli.$lang.xml pot=bar

No modo split, o po4a constrói um compêndio temporário durante a atualização do PO, para compartilhar as traduções entre todos os ficheiros do PO. Se dois ficheiros PO tiverem traduções diferentes para a mesma cadeia, po4a marcará esta cadeia como difusa e enviará ambas as traduções em todos os ficheiros PO a conter esta cadeia. Quando atualizada pelo tradutor, a tradução é automaticamente utilizada em todos os ficheiros PO.

  Especificando os documentos para traduzir
Também deve listar os documentos que devem ser traduzidos. Para cada ficheiro mestre, deve especificar o analisador de formato a ser usado, o local do documento traduzido a ser produzido e, opcionalmente, alguma configuração. Nomes de ficheiros devem estar entre aspas ou escapados se eles contiverem espaços. Aqui está um exemplo:

 [type: sgml] "doc/my stuff.sgml"  "fr:doc/fr/mon truc.sgml"  de:doc/de/mein\ kram.sgml
 [type: man] script fr:doc/fr/script.1 de:doc/de/script.1
 [type: docbook] doc/script.xml fr:doc/fr/script.xml \
             de:doc/de/script.xml

Mas novamente, essas linhas complexas são difíceis de ler e modificar, por exemplo, ao adicionar um novo idioma. É muito mais simples reorganizar as coisas a usar o modelo $lang da seguinte maneira:

 [type: sgml]    doc/my_stuff.sgml $lang:doc/$lang/my_stuff.sgml
 [type: man]     script.1          $lang:po/$lang/script.1
 [type: docbook] doc/script.xml    $lang:doc/$lang/script.xml

  Especificando opções
Há dois tipos de opções: opções do po4a são valores predefinidos para as opções de linha de comando po4a enquanto opções de formato são usadas para alterar o comportamento dos analisadores de formato. Como uma opções do po4a, pode por exemplo, especificar no seu ficheiro de configuração que o valor predefinido do parâmetro de linha de comando --keep é de 50% em vez de 80%. Opções de formato estão documentadas na página específica de cada módulo de análise, por exemplo, Locale::Po4a::Xml(3pm). Pode por exemplo, passar nostrip para o analisador XML para não remover os espaços ao redor das cadeias extraídas.

Pode passar essas opções a um ficheiro mestre específico ou mesmo a uma tradução específica desse ficheiro, a usar "opt:" e "opt_XX:" para o idioma "XX". No exemplo a seguir, a opção nostrip é passada ao analisador XML (para todos os idiomas), enquanto o limite será reduzido a 0% para a tradução em francês (que, portanto, é sempre mantida).

 [type:xml] toto.xml $lang:toto.$lang.xml opt:"-o nostrip" opt_fr:"--keep 0"

De qualquer forma, esses blocos de configuração devem estar localizados no final da linha. A declaração dos ficheiros deve vir primeiro, depois o adendo, se houver (veja abaixo) e somente as opções. O agrupamento de pedaços de configuração não é muito importante, pois os elementos são internamente concatenados como cadeias. Os exemplos a seguir são todos equivalentes:

  [type:xml] toto.xml $lang:toto.$lang.xml opt:"--keep 20" opt:"-o nostrip" opt_fr:"--keep 0"
  [type:xml] toto.xml $lang:toto.$lang.xml opt:"--keep 20 -o nostrip" opt_fr:"--keep 0"
  [type:xml] toto.xml $lang:toto.$lang.xml opt:--keep opt:20 opt:-o opt:nostrip opt_fr:--keep opt_fr:0

Observe que as opções específicas do idioma não são usadas ao criar o ficheiro POT. Por exemplo, é impossível passar nostrip para o analisador apenas ao criar a tradução em francês, porque o mesmo ficheiro POT é usado para atualizar todos os idiomas. Portanto, as únicas opções que podem ser específicas do idioma são as usadas na produção da tradução, como a opção "--keep".

Nomes alternativos de configuração

Para passar as mesmas opções para vários ficheiros, o melhor é definir um alias de tipo da maneira seguinte. No próximo exemplo, "--keep 0" é passado para todas as traduções em italiano a usar este tipo "test", que é uma extensão do tipo "man".

  [po4a_alias:test] man opt_it:"--keep 0"
  [type: test] man/page.1 $lang:man/$lang/page.1

Também pode estender um tipo existente de reutilizar o mesmo nome ao alias da forma seguinte. Este não é interpretado como uma definição recursiva errada.

  [po4a_alias:man] man opt_it:"--keep 0"
  [type: man] man/page.1 $lang:man/$lang/page.1

Opções predefinidas globais

Também pode usar as linhas "[options]" para definir opções que devem ser usadas para todos os ficheiros, independentemente do tipo dele.

  [options] --keep 20 --option nostrip

Como nas opções da linha de comando, pode abreviar os parâmetros passados no ficheiro de configuração:

  [options] -k 20 -o nostrip

Prioridades das opções

As opções de todas as fontes são concatenadas, a garantir que os valores predefinidos possam ser facilmente substituídos por opções mais específicas. A ordem é a seguinte:

•   As linhas "[options]" fornecem valores predefinidos que podem ser substituídos por qualquer outra fonte.

•   Os aliases de tipo são então usados. As configurações específicas do idioma substituem as aplicáveis a todos os idiomas.

•   As configurações específicas de um determinado ficheiro mestre substituem as predefinidas e as provenientes do alias de tipo. Neste caso, as configurações específicas do idioma também substituem as globais.

•   Finalmente, os parâmetros fornecidos na linha de comando po4a substituem todas as configurações do ficheiro de configuração.

Exemplo

Aqui está um exemplo a mostrar como citar os espaços e aspas:

 [po_directory] man/po/

 [options] --master-charset UTF-8

 [po4a_alias:man] man opt:"-o \"mdoc=NAME,SEE ALSO\""
 [type:man] t-05-config/test02_man.1 $lang:tmp/test02_man.$lang.1 \
            opt:"-k 75" opt_it:"-L UTF-8" opt_fr:--verbose

  Adendo: Adicionar conteúdo extra na tradução
Se deseja adicionar uma secção adicional à tradução, por exemplo, para dar mérito ao tradutor, é necessário definir um adendo à linha que define o seu ficheiro mestre. Consulte a página po4a(7) para obter mais detalhes sobre a sintaxe dos ficheiros de adendo.

 [type: pod] script fr:doc/fr/script.1 \
             add_fr:doc/l10n/script.fr.add

Também pode usar modelos de idioma da maneira seguinte:

 [type: pod] script $lang:doc/$lang/script.1 \
             add_$lang:doc/l10n/script.$lang.add

Se um adendo falhar ao aplicar, a tradução será descartada.

Modificadores para a declaração de adendo

Os modificadores de adendo podem simplificar o ficheiro de configuração no caso em que nem todos os idiomas fornecem um adendo ou quando a lista de adendos muda de um idioma ao outro. O modificador é um único caractere localizado antes do nome do ficheiro.

?   Inclui addendum_path se este ficheiro existir, caso contrário não faz nada.

@   addendum_path não é uma adenda regular, mas um ficheiro a conter uma lista de adendas, uma por linha. Cada adenda pode ser precedida por modificadores.

!   addendum_path é descartado, não é carregado e não será carregado por qualquer especificação de adenda.

O seguinte inclui um adendo em qualquer idioma, mas só se existir. Nenhum erro será relatado se o adendo não existir.

 [type: pod] script $lang:doc/$lang/script.1  add_$lang:?doc/l10n/script.$lang.add

O seguinte inclui uma lista de adendos para cada idioma:

 [type: pod] script $lang:doc/$lang/script.1  add_$lang:@doc/l10n/script.$lang.add

  Filtrar as cadeias traduzidas
Às vezes, deseja ocultar algumas cadeias do processo de tradução. Nesse sentido, pode atribuir um parâmetro "pot_in" ao seu ficheiro mestre para especificar o nome do ficheiro a ser usado em vez do mestre real ao criar o ficheiro POT. Aqui está um exemplo:

  [type:docbook] book.xml          \
          pot_in:book-filtered.xml \
          $lang:book.$lang.xml

Com essa configuração, as cadeias a serem traduzidas serão extraídas do book-filtered.xml (que deve ser produzido antes da chamada de po4a) enquanto os ficheiros traduzidos serão compilados do book.xml. Como resultado, qualquer cadeia que faça parte de book.xml, mas não em book-filtered.xml não será incluída nos ficheiros PO, a impedir que os tradutores forneçam uma tradução para eles. Portanto, essas cadeias não serão modificadas ao produzir os documentos traduzidos. Isso naturalmente diminui o nível de tradução, portanto, pode precisar da opção "--keep" para garantir que o documento seja produzido de qualquer maneira.

VEJA TAMBÉM
po4a-gettextize(1), po4a(7).

AUTORES
 Denis Barbier <barbier@linuxfr.org>
 Nicolas François <nicolas.francois@centraliens.net>
 Martin Quinson (mquinson#debian.org)

DIREITOS DE AUTOR E LICENÇA
Copyright 2002-2023 por SPI, inc.

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).