PO4A.1P(1)

NOME
po4a - atualiza ambos arquivos PO e documentações traduzidas em um tiro

SINOPSE
po4a [opções] arquivo_config

DESCRIÇÃO
po4a (PO for anything) facilita a manutenção de tradução da documentação usando as ferramentas clássicas do gettext. A principal característica 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 arquivos de documentação especificados em seu arquivo de configuração. Ele atualiza os arquivos 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 arquivos PO) na estrutura do documento mestre original.

Inicialmente, os arquivos PO apenas contêm as strings para traduzir da documentação original. Este formato de arquivo 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 arquivo 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
                     |                        |    |
  arquivos PO ------->-----> arquivos PO -->--+    |
   existentes                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 em seu próprio ritmo. Os tradutores revisam e atualizam as traduções nos arquivos PO. Os mantenedores executam novamente po4a quando necessário, para refletir qualquer alteração na documentação original para os arquivos PO e para produzir traduções de documentação atualizadas, injetando a mais recente tradução para a mais recente estrutura de documentos.

Por padrão, um documento traduzido é produzido quando pelo menos 80% de 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. Você 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 usuários, ao mostrar "traduções" que são muito incompletas pode ser um problema para os usuários finais.

Armazenar os arquivos de documentação traduzidos no sistema de controle de versão é provavelmente uma má ideia, uma vez que eles são gerados automaticamente. Os arquivos preciosos são os arquivos PO, que contêm o trabalho duro de 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 isso é naturalmente totalmente opcional.

  Tutorial de início rápido
Vamos supor que você mantenha 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 você acabou de ter um relatório de bug dizendo que sua documentação contém uma informação gravemente enganosa que deve ser corrigida em todos os idiomas, mas você não fala alemão para que você 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 você também não domina.

É hora de converter sua documentação para po4a para resolver seus pesadelos de manutenção de documentação. Você quer atualizar o documento quando necessário, você quer facilitar o trabalho de seus colegas tradutores, e você quer garantir que seus usuários 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 salvar o trabalho anterior. Esta última parte é feita usando po4a-gettextize, como segue. Como detalhado na documentação de po4a-gettextize(1), este processo raramente totalmente automático, mas uma vez feito, o arquivo 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 o layout de arquivo apropriado, seu arquivo 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 arquivos PO (contendo o trabalho dos tradutores) estão no diretório man/po4a/, e que você tem apenas um arquivo mestre, man/foo.1. Se você tivesse vários arquivos mestres, você teria várias linhas semelhantes à segunda. Cada linha também especifica onde escrever os arquivos 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 arquivo POT contendo o material do modelo que deve ser usado para iniciar uma nova tradução. Basta criar um arquivo vazio com a extensão .pot no especificado po_directory (por exemplo, man/po4a/foo.pot), e po4a o preencherá com o conteúdo esperado.

Aqui está uma recapitulação dos arquivos 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 arquivo de configuração

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

        po4a --verbose po4a.cfg

É isto. po4a está agora totalmente configurado. Uma vez que você tenha corrigido 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 você não entende e garantir que o conteúdo apresentado aos usuários nunca seja enganoso. A atualização da tradução alemã também é muito mais fácil no arquivo 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, ela deve renomear o foo.pot em ja.po e completar a tradução. Uma vez que você tem este arquivo, 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 você executar po4a novamente.

OPÇÕES

-k, --keep
    Limite mínimo de porcentagem de tradução para manter (i.e. escrever) o arquivo resultante (padrão: 80). Isto é, por padrão, arquivos têm que estar traduzidos em pelo menos 80% para serem escritos no disco.

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

-h, --help
    Mostra uma mensagem de ajuda.

-M, --master-charset
    Conjunto de caracteres dos arquivos contendo os documentos para traduzir. Note que todos os documentos mestres devem usar o mesmo conjunto de caracteres.

-L, --localized-charset
    Conjunto de caracteres dos arquivos contendo os documentos localizados. Note que todos os documentos traduzidos devem usar o mesmo conjunto de caracteres.

-A, --addendum-charset
    Conjunto de caracteres dos adendos. Note que todos os adendos deveriam ser do mesmo conjunto de caracteres.

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

-v, --verbose
    Aumenta o nível de detalhamento do programa.

-q, --quiet
    Reduz o nível de detalhamento do programa.

-d, --debug
    Imprime algumas informações de depuração.

-o, --option
    Opções extras para passar o plug-in de formato. Veja a documentação de cada plug-in para mais informações sobre as opções válidas e seus significados. Por exemplo, você poderia passar "-o tablecells" para o analisador AsciiDoc, enquanto o analisador de texto aceitaria "-o tabs=split".

-f, --force
    Sempre gera os aquivos POT e PO, mesmo se po4a considera isso desnecessário.

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

        Se o arquivo POT já existe, ele é regerado se uma documentação mestre ou arquivo de configuração for mais recente (a menos --no-update seja fornecido). O POT também é escrito em um documento temporário e po4a certifica-se de que as alterações são realmente necessárias.

        Também, uma tradução é gerada novamente apenas se seu documento mestre, o arquivo PO, um desses adendos ou arquivo de configuração é mais recente. Para evitar tentativa de gerar traduções que não passam no teste de limite (veja --keep), um arquivo com a extensão .po4a-stamp pode ser criada (veja --stamp).

    Se um documento mestre inclui arquivos, você deveria usar a opção --force porque o horário de modificação desses arquivos incluídos não são levados em consideração.

    Os arquivos PO são gerados novamente baseados no POT com msgmerge -U.

--stamp
    Informa ao po4a para criar arquivos stamp quando uma tradução não é gerada porque ela não atingiu o limite. Esses arquivos stamp são nomeados de acordo com o documento de tradução esperado, com a extensão .po4a-stamp.

    Nota: Isso somente ativa a criação dos arquivos .po4a-stamp. Os arquivos stamp são sempre usados se existirem e eles são removidos com --rm-translations ou quando o arquivo é finalmente traduzido.

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

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

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

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

--rm-translations
    Remove os arquivos de tradução (implica em --no-translations).

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

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

--translate-only arquivo-traduzido
    Traduz apenas o arquivo especificado. Pode ser útil para agilizar o processamento se um arquivo de configuração contém muitos arquivos. Note que essa opção não atualiza arquivos POT e PO. Essa opção pode ser usada múltiplas vezes.

--variable var=valor
    Define uma variável que vai ser expandida no arquivo de configuração do po4a. Toda ocorrência de $(var) vai ser substituída por valor. Essa opção pode ser usada múltiplas vezes.

--target-lang LANG
    Atualiza arquivos 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 base para todos os documentos de entradas especificados no arquivo de configuração do po4a.

    Se destdir e srcdir forem especificados, os arquivos de entrada serão pesquisados nos seguintes diretórios, em ordem: destdir, o diretório atual e srcdir. Os arquivos de saída 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 arquivo de configuração do po4a (veja --srcdir acima).

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

--porefs tipo
    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 arquivo sem o número de linha, counter para substituir os números de linha aumentando o contador e full para incluir referências completas. (padrão: full).

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

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

--master-language
    Idioma dos arquivos fonte contendo os documentos para traduzir. Note que todos os documentos mestres devem usar o mesmo idioma.

--msgid-bugs-address e-mail@endereço
    Define o endereço para relatórios de erros em msgids. Por padrão, os arquivos POT criados possuem nenhum campo Report-Msgid-Bugs-To.

--copyright-holder string
    Define o detentor do copyright no cabeçalho do POT. O valor padrão é "Free Software Foundation, Inc."

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

--package-version string
    Define a versão do pacote do cabeçalho do POT. O padrão é "VERSION".

  Opções para modificar os arquivos PO

--msgmerge-opt opções
    Opções extras para msgmerge(1).

    Nota: $lang vai estar estendida do idioma atual.

--no-previous
    Essa opção remove --previous das opções passadas ao msgmerge. Isso é necessário para oferecer suporte a versões do gettext antes de 0.16.

--previous
    Essa opção adiciona --previous às opções passadas ao msgmerge. Isso requer gettext 0.16 ou posterior, e é ativada por padrão.

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

•   O caminho para os arquivos 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 arquivos mestres individuais ;

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

Todas as linhas contêm um comando entre colchetes, seguido dos seus parâmetros. Os comentários começam com o caractere "#" e correm até ao fim da linha. Você 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 podem ser encontrados no diretório "t/cfg" da distribuição de origem.

  Encontrando os arquivos PO e POT
A solução mais simples é dar explicitamente o caminho para arquivos POT e PO, da seguinte forma:

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

Isso especifica o caminho para o arquivo POT primeiro e, em seguida, os caminhos para os arquivos PO alemão e francês.

A mesma informação pode ser escrita da seguinte maneira para reduzir o risco de erros de copiar/colar:

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

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

Você pode compactar ainda mais as mesmas informações fornecendo apenas o caminho para o diretório contendo seu projeto de tradução, da forma a seguir.

 [po_directory] man/po/

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

Observe que você deve escolher apenas um entre "po_directory" e "po4a_paths". O primeiro ("po_directory") é mais compacto, reduz ainda mais o risco de erro de cópia/pasta, mas força você a usar a estrutura de projeto esperada e nomes de arquivos. O segundo ("po4a_paths"), é mais explícito, provavelmente mais legível, e aconselhado quando você configura seu primeiro projeto com po4a.

Arquivos PO centralizados ou divididos?

Por padrão, o po4a produz um único arquivo PO por idioma de destino, contendo todo o conteúdo do seu projeto de tradução. Conforme o seu projeto cresce, o tamanho desses arquivos pode se tornar 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 equipes de tradução preferem dividir o conteúdo em vários arquivos.

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

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

Com esta linha, po4a produzirá arquivos POT e PO separados para cada documento a ser traduzido. Por exemplo, se você tiver 3 documentos e 5 idiomas, isso resultará em 3 arquivos POT e 15 arquivos PO. Esses arquivos 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, você pode especificar o arquivo POT a ser usado da seguinte maneira, com o parâmetro "pot=".

Este recurso também pode ser usado para agrupar vários arquivos traduzidos no mesmo arquivo POT. O exemplo a seguir só produz 2 arquivos 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 de divisão, po4a cria um compêndio temporário durante a atualização do PO, para compartilhar as traduções entre todos os arquivos do pedido. Se dois arquivos PO tiverem traduções diferentes para a mesma string, po4a marcará essa string como difusa e enviará ambas as traduções em todos os arquivos PO que contêm essa string. Quando não é confundida pelo tradutor, a tradução é usada em todos os arquivos PO automaticamente.

  Especificando os documentos para traduzir
Você também deve listar os documentos que devem ser traduzidos. Para cada arquivo mestre, você deve especificar o analisador de formato a ser usado, o local do documento traduzido a ser produzido e, opcionalmente, alguma configuração. Nomes de arquivos 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 usando 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 padrão 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, você pode, por exemplo, especificar em seu arquivo de configuração que o valor padrão 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). Você pode, por exemplo, passar nostrip para o analisador XML para não remover os espaços ao redor das strings extraídas.

Você pode passar essas opções para um arquivo mestre específico, ou mesmo para uma tradução específica desse arquivo, usando "opt:" e "opt_XX:" para o idioma "XX". No exemplo a seguir, a opção nostrip é passada para o analisador XML (para todos os idiomas), enquanto o limite será reduzido para 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 arquivos 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 strings. 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 arquivo POT. Por exemplo, é impossível passar nostrip para o analisador apenas ao criar a tradução em francês, porque o mesmo arquivo 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".

Aliases de configuração

Para passar as mesmas opções para vários arquivos, o melhor é definir um alias de tipo da seguinte maneira. No próximo exemplo, "--keep 0" é passado para todas as traduções em italiano usando 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

Você também pode estender um tipo existente de reutilizar o mesmo nome para o alias da seguinte forma. Este não é interpretada como uma errônea definição recursiva.

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

Opções padrão globais

Você também pode usar as linhas "[options]" para definir opções que devem ser usadas para todos os arquivos, independentemente do seu tipo.

  [options] --keep 20 --option nostrip

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

  [options] -k 20 -o nostrip

Prioridades das opções

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

•   As linhas "[options]" fornecem valores padrão 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 arquivo mestre substituem as padrão e as provenientes do alias de tipo. Também neste caso, as configurações específicas do idioma substituem as globais.

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

Exemplo

Aqui está um exemplo mostrando 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: Acréscimo de conteúdo extra na tradução
Se você deseja adicionar uma seção extra à tradução, por exemplo, para dar crédito ao tradutor, é necessário definir um adendo à linha que define seu arquivo mestre. Consulte a página po4a(7) para obter mais detalhes sobre a sintaxe dos arquivos de adendo.

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

Você também pode usar modelos de idioma da seguinte maneira:

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

Se um adendo não se aplicar, a tradução será descartada.

Modificadores para a declaração de adendo

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

?   Inclua addendum_path se esse arquivo não existir, do contrário nada para fazer.

@   addendum_path não é um adendo regular, mas um arquivo contendo uma lista de adendos, uma por linha. Cada adendo pode ser precedido por modificadores.

!   addendum_path está descartado, ele não é carregado e não vai ser carregado por qualquer uma especificação de adendo.

O seguinte inclui um adendo em qualquer idioma, mas 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

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

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

Com essa configuração, as strings a serem traduzidas serão extraídas do book-filtered.xml (que deve ser produzido antes da chamada de po4a) enquanto os arquivos traduzidos serão compilados a partir do book.xml. Como resultado, qualquer string que faça parte de book.xml, mas não em book-filtered.xml não será incluída nos arquivos PO, impedindo que os tradutores forneçam uma tradução para eles. Portanto, essas strings não serão modificadas ao produzir os documentos traduzidos. Isso naturalmente diminui o nível de tradução, portanto, você 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)

TRADUÇÃO
 Luiz Fernando Ranghetti <elchevive@opensuse.org>
 Rafael Fontenelle <rafaelff@gnome.org>

COPYRIGHT E LICENÇA
Copyright 2002-2023 por SPI, inc.

Esse programa é um software livre; você pode redistribuí-lo e/ou modificá-lo sob os termos da GPL v2.0 ou posterior (veja o arquivo COPYING).