.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.40) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "PO4A 1p" .TH PO4A 1p "2020-12-09" "Ferramentas do Po4a" "Ferramentas do Po4a" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NOME" .IX Header "NOME" po4a \- atualiza ambos arquivos \s-1PO\s0 e documentações traduzidas em um tiro .SH "SINOPSE" .IX Header "SINOPSE" \&\fBpo4a\fR [\fIopções\fR] \fIarquivo_config\fR .SH "DESCRIÇÃO" .IX Header "DESCRIÇÃO" po4a (\s-1PO\s0 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 \fBpo4a\fR\|(7) para uma introdução suave a este projeto. .PP Quando você executa o programa \fBpo4a\fR pela primeira vez, com apenas um arquivo de configuração e os documentos para traduzir (chamados de documentos mestres), ele produz um arquivo \s-1POT\s0 (também chamado de modelo de tradução) que contém todas as strings traduzíveis no documento de uma forma que facilita o trabalho dos tradutores. .PP Esses arquivos \s-1POT\s0 podem ser traduzidos com um editor específico, como o \&\fBEditor de Tradução do \s-1GNOME\s0\fR, o \fBLokalize\fR do \s-1KDE\s0 ou \fBpoedit\fR, ou podem ser integrados a uma plataforma de localização online, como \fBweblate\fR ou \&\fBpootle\fR. O resultado da tradução é um conjunto de arquivos \s-1PO,\s0 um por idioma. .PP Quando você executa o programa \fBpo4a\fR com os documentos mestre e os arquivos \s-1PO,\s0 ele produz os documentos traduzidos injetando a tradução do conteúdo (encontrada nos arquivos \s-1PO\s0) na estrutura do documento mestre original. .PP Se os documentos mestre forem alterados, o po4a atualizará os arquivos \s-1PO\s0 e \&\s-1POT\s0 adequadamente, para que os tradutores possam detectar facilmente as modificações e atualizar seu trabalho. Dependendo das configurações, o po4a descartará os documentos parcialmente traduzidos ou produzirá um documento misturando inglês (para os parágrafos novos ou modificados) e o idioma de destino (para os parágrafos cuja tradução já está no arquivo \s-1PO\s0). .PP Por padrão, os documentos traduzidos são produzidos quando pelo menos 80% de seu conteúdo é traduzido (consulte a opção \fI\-\-keep\fR abaixo). Descartar traduções assim que elas não forem 100% pode ser desanimador para os tradutores, enquanto mostrar \*(L"tradução\*(R" muito incompletas pode ser preocupante para os usuários finais. .SS "Visão geral gráfica" .IX Subsection "Visão geral gráfica" .Vb 12 \& documentos mestres \-+\-\-\-\-\->\-\-\-\-\-\-\-\->\-\-\-\-\-\-\-\-\-+ \& (criação de docs) | | \& V (execuções do po4a) >\-\-\-\-+\-\-> traduções \& | | | \& arquivos PO \-\-\-\-\-\-\->\-\-\-\-\-> arquivos PO \-\->\-\-+ | \& existentes atualizados | \& ^ | | \& | V ^ \& +\-\-\-\-\-\-\-\-\-\-<\-\-\-\-\-\-\-\-\-<\-\-\-\-\-\-\-\-+ | \& (processo de tradução manual) | \& | \& adendo \-\-\-\->\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-+ .Ve .PP Os documentos principais são de autoria de quem escreve a documentação. Quaisquer alterações são automaticamente refletidas pelo po4a nos arquivos \s-1PO,\s0 que são depois atualizados pelos tradutores. Todas as alterações nos arquivos \s-1PO\s0 (seja manual ou por po4a) são automaticamente refletidas nos documentos traduzidos. Você pode imitar este comportamento usando os scripts \fBpo4a\-updatepo\fR\|(1) e \fBpo4a\-translate\fR\|(1) em makefiles, mas isto rapidamente se torna incômodo e repetitivo (veja \fBpo4a\fR\|(7)). É altamente recomendável usar o programa \fBpo4a\fR em seu processo de compilação. .SH "OPÇÕES" .IX Header "OPÇÕES" .IP "\fB\-k\fR, \fB\-\-keep\fR" 4 .IX Item "-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. .IP "\fB\-h\fR, \fB\-\-help\fR" 4 .IX Item "-h, --help" Mostra uma mensagem de ajuda. .IP "\fB\-M\fR, \fB\-\-master\-charset\fR" 4 .IX Item "-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. .IP "\fB\-L\fR, \fB\-\-localized\-charset\fR" 4 .IX Item "-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. .IP "\fB\-A\fR, \fB\-\-addendum\-charset\fR" 4 .IX Item "-A, --addendum-charset" Conjunto de caracteres dos adendos. Note que todos os adendos deveriam ser do mesmo conjunto de caracteres. .IP "\fB\-V\fR, \fB\-\-version\fR" 4 .IX Item "-V, --version" Exibe a versão do script e sai. .IP "\fB\-v\fR, \fB\-\-verbose\fR" 4 .IX Item "-v, --verbose" Aumenta o nível de detalhamento do programa. .IP "\fB\-q\fR, \fB\-\-quiet\fR" 4 .IX Item "-q, --quiet" Reduz o nível de detalhamento do programa. .IP "\fB\-d\fR, \fB\-\-debug\fR" 4 .IX Item "-d, --debug" Imprime algumas informações de depuração. .IP "\fB\-o\fR, \fB\-\-option\fR" 4 .IX Item "-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 \*(L"\-o tablecells\*(R" para o analisador AsciiDoc, enquanto o analisador de texto aceitaria \*(L"\-o tabs=split\*(R". .IP "\fB\-f\fR, \fB\-\-force\fR" 4 .IX Item "-f, --force" Sempre gera os aquivos \s-1POT\s0 e \s-1PO,\s0 mesmo se \fBpo4a\fR considera isso desnecessário. .Sp O comportamento padrão (quando \fB\-\-force\fR não é especificado) é o seguinte: .RS 4 .Sp .RS 4 Se o arquivo \s-1POT\s0 já existe, ele é regerado se uma documentação mestre ou arquivo de configuração for mais recente (a menos \fB\-\-no\-update\fR seja fornecido). O \s-1POT\s0 também é escrito em um documento temporário e \fBpo4a\fR certifica-se de que as alterações são realmente necessárias. .Sp Também, uma tradução é gerada novamente apenas se seu documento mestre, o arquivo \s-1PO,\s0 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 \fB\-\-keep\fR), um arquivo com a extensão \fI.po4a\-stamp\fR pode ser criada (veja \fB\-\-stamp\fR). .RE .RE .RS 4 .Sp Se um documento mestre inclui arquivos, você deveria usar a opção \fB\-\-force\fR porque o horário de modificação desses arquivos incluídos não são levados em consideração. .Sp Os arquivos \s-1PO\s0 são gerados novamente baseados no \s-1POT\s0 com \fBmsgmerge \-U\fR. .RE .IP "\fB\-\-stamp\fR" 4 .IX Item "--stamp" Informa ao \fBpo4a\fR 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 \fI.po4a\-stamp\fR. .Sp Nota: Isso somente ativa a criação dos arquivos \fI.po4a\-stamp\fR. Os arquivos stamp são sempre usados se existirem e eles são removidos com \&\fB\-\-rm\-translations\fR ou quando o arquivo é finalmente traduzido. .IP "\fB\-\-no\-translations\fR" 4 .IX Item "--no-translations" Não gera os documentos traduzidos, apenas atualiza os arquivos \s-1POT\s0 e \s-1PO.\s0 .IP "\fB\-\-no\-update\fR" 4 .IX Item "--no-update" Não altere os arquivos \s-1POT\s0 e \s-1PO,\s0 apenas a tradução pode ser atualizada. .IP "\fB\-\-keep\-translations\fR" 4 .IX Item "--keep-translations" Mantém os arquivos de tradução existentes mesmo se a tradução não atender o limite especificado por \fB\-\-keep\fR. 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. .Sp 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. .IP "\fB\-\-rm\-translations\fR" 4 .IX Item "--rm-translations" Remove os arquivos de tradução (implica em \fB\-\-no\-translations\fR). .IP "\fB\-\-no\-backups\fR" 4 .IX Item "--no-backups" Essa opção não faz nada desde 0.41 e pode ser removida em versões posteriores. .IP "\fB\-\-rm\-backups\fR" 4 .IX Item "--rm-backups" Essa opção não faz nada desde 0.41 e pode ser removida em versões posteriores. .IP "\fB\-\-translate\-only\fR \fIarquivo-traduzido\fR" 4 .IX Item "--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 \s-1POT\s0 e \s-1PO.\s0 Essa opção pode ser usada múltiplas vezes. .IP "\fB\-\-variable\fR \fIvar\fR\fB=\fR\fIvalor\fR" 4 .IX Item "--variable var=valor" Define uma variável que vai ser expandida no arquivo de configuração do \&\fBpo4a\fR. Toda ocorrência de \fI$(var)\fR vai ser substituída por \fIvalor\fR. Essa opção pode ser usada múltiplas vezes. .IP "\fB\-\-srcdir\fR \fI\s-1SRCDIR\s0\fR" 4 .IX Item "--srcdir SRCDIR" Define o diretório base para todos os documentos de entradas especificados no arquivo de configuração do \fBpo4a\fR. .Sp Se \fIdestdir\fR e \fIsrcdir\fR forem especificados, os arquivos de entrada serão pesquisados nos seguintes diretórios, em ordem: \fIdestdir\fR, o diretório atual e \fIsrcdir\fR. Os arquivos de saída são gravados em \fIdestdir\fR, se especificado, ou no diretório atual. .IP "\fB\-\-destdir\fR \fI\s-1DESTDIR\s0\fR" 4 .IX Item "--destdir DESTDIR" Define o diretório base para todos os documentos de saída especificados no arquivo de configuração do \fBpo4a\fR (veja \fB\-\-srcdir\fR acima). .SS "Opções que modificam o cabeçalho do \s-1POT\s0" .IX Subsection "Opções que modificam o cabeçalho do POT" .IP "\fB\-\-porefs\fR \fItipo\fR" 4 .IX Item "--porefs tipo" Especifica o formato de referência. O argumento \fItipo\fR pode ser um de: \&\fBnever\fR para não produzir qualquer referência, \fBfile\fR para especificar o arquivo sem o número de linha, \fBcounter\fR para substituir os números de linha aumentando o contador e \fBfull\fR para incluir referências completas. (padrão: full). .IP "\fB\-\-wrap\-po\fR \fBno\fR|\fBnewlines\fR|\fInumber\fR (padrão: 76)" 4 .IX Item "--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. .Sp 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 \fBnewlines\fR, o po4a dividirá apenas o msgid e o msgstr após as novas linhas no conteúdo. Se definido como \fBno\fR, 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. .Sp 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. .IP "\fB\-\-master\-language\fR" 4 .IX Item "--master-language" Idioma dos arquivos fonte contendo os documentos para traduzir. Note que todos os documentos mestres devem usar o mesmo idioma. .IP "\fB\-\-msgid\-bugs\-address\fR \fIe\-mail@endereço\fR" 4 .IX Item "--msgid-bugs-address e-mail@endereço" Define o endereço para relatórios de erros em msgids. Por padrão, os arquivos \s-1POT\s0 criados possuem nenhum campo Report-Msgid-Bugs-To. .IP "\fB\-\-copyright\-holder\fR \fIstring\fR" 4 .IX Item "--copyright-holder string" Define o detentor do copyright no cabeçalho do \s-1POT. O\s0 valor padrão é \*(L"Free Software Foundation, Inc.\*(R" .IP "\fB\-\-package\-name\fR \fIstring\fR" 4 .IX Item "--package-name string" Define o nome do pacote para o cabeçalho do \s-1POT. O\s0 padrão é \*(L"\s-1PACKAGE\*(R".\s0 .IP "\fB\-\-package\-version\fR \fIstring\fR" 4 .IX Item "--package-version string" Define a versão do pacote do cabeçalho do \s-1POT. O\s0 padrão é \*(L"\s-1VERSION\*(R".\s0 .SS "Opções para modificar os arquivos \s-1PO\s0" .IX Subsection "Opções para modificar os arquivos PO" .IP "\fB\-\-msgmerge\-opt\fR \fIopções\fR" 4 .IX Item "--msgmerge-opt opções" Opções extras para \fBmsgmerge\fR(1). .Sp Nota: \fB\f(CB$lang\fB\fR vai estar estendida do idioma atual. .IP "\fB\-\-no\-previous\fR" 4 .IX Item "--no-previous" Essa opção remove \fB\-\-previous\fR das opções passadas ao \fBmsgmerge\fR. Isso permite Isso permite o suporte a versões do \fBgettext\fR antes de 0.16. .IP "\fB\-\-previous\fR" 4 .IX Item "--previous" Essa opção adiciona \fB\-\-previous\fR às opções passadas ao \fBmsgmerge\fR. Isso requer \fBgettext\fR 0.16 ou posterior, e é ativada por padrão. .SH "ARQUIVO DE CONFIGURAÇÃO" .IX Header "ARQUIVO DE CONFIGURAÇÃO" po4a espera um arquivo de configuração como argumento. Este arquivo deve conter os seguintes elementos: .IP "\(bu" 4 O caminho para os arquivos \s-1PO\s0 e a lista de idiomas existentes no projeto; .IP "\(bu" 4 Opcionalmente, algumas opções globais e os chamados aliases de configuração que são usados como modelos para configurar arquivos mestres individuais ; .IP "\(bu" 4 A lista de cada arquivo mestre a traduzir, juntamente com parâmetros específicos. .PP Todas as linhas contêm um comando entre colchetes, seguido dos seus parâmetros. Os comentários começam com o caractere \*(L"#\*(R" e correm até ao fim da linha. Você pode escapar do fim da linha para espalhar um comando por várias linhas. .PP Alguns exemplos completos são apresentados nesta página, enquanto outros exemplos podem ser encontrados no diretório \f(CW\*(C`t/cfg\*(C'\fR da distribuição de origem. .SS "Encontrando os arquivos \s-1PO\s0 e \s-1POT\s0" .IX Subsection "Encontrando os arquivos PO e POT" A solução mais simples é dar explicitamente o caminho para arquivos \s-1POT\s0 e \&\s-1PO,\s0 da seguinte forma: .PP .Vb 1 \& [po4a_paths] man/po/project.pot de:man/po/de.po fr:man/po/fr.po .Ve .PP Isso especifica o caminho para o arquivo \s-1POT\s0 primeiro e, em seguida, os caminhos para os arquivos \s-1PO\s0 alemão e francês. .PP A mesma informação pode ser escrita da seguinte maneira para reduzir o risco de erros de copiar/colar: .PP .Vb 2 \& [po4a_langs] fr de \& [po4a_paths] man/po/project.pot $lang:man/po/$lang.po .Ve .PP O componente \f(CW$lang\fR é gasto automaticamente usando a lista de idiomas fornecidos, reduzindo o risco de erro de copiar/colar quando um novo idioma é adicionado. .PP 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. .PP .Vb 1 \& [po_directory] man/po/ .Ve .PP O diretório fornecido deve conter um conjunto de arquivos \s-1PO,\s0 cada um chamado \fI\s-1XX\s0.po\fR com \f(CW\*(C`XX\*(C'\fR o \s-1ISO 631\-1\s0 do idioma utilizado neste arquivo. O diretório deve conter também um único arquivo \s-1POT,\s0 com a extensão \f(CW\*(C`.pot\*(C'\fR 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). .PP Observe que você deve escolher apenas um entre \f(CW\*(C`po_directory\*(C'\fR e \&\f(CW\*(C`po4a_paths\*(C'\fR. O primeiro (\f(CW\*(C`po_directory\*(C'\fR) é 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 (\f(CW\*(C`po4a_paths\*(C'\fR), é mais explícito, provavelmente mais legível, e aconselhado quando você configura seu primeiro projeto com po4a. .PP \fIArquivos \s-1PO\s0 centralizados ou divididos?\fR .IX Subsection "Arquivos PO centralizados ou divididos?" .PP Por padrão, o po4a produz um único arquivo \s-1PO\s0 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. .PP Para ter um arquivo \s-1PO\s0 por arquivo mestre, basta usar a string \f(CW$master\fR no nome dos arquivos \s-1PO\s0 na linha \f(CW\*(C`[po4a_paths]\*(C'\fR, da seguinte maneira. .PP .Vb 1 \& [po4a_paths] doc/$master/$master.pot $lang:doc/$master/$lang.po .Ve .PP Se há conflitos no nome porque vários arquivos possuem o mesmo nome de arquivo, o nome do arquivo mestre pode ser especificado adicionando uma opção \f(CW\*(C`master:file=\*(C'\fR\fIname\fR: .PP .Vb 4 \& [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 master:file=foo\-gui \& [type: xml] bar/gui.xml $lang:bar/gui.$lang.xml master:file=bar\-gui .Ve .PP No modo de divisão, \fBpo4a\fR cria um compêndio temporário durante a atualização do \s-1PO,\s0 para compartilhar as traduções entre todos os arquivos do pedido. Se dois arquivos \s-1PO\s0 tiverem traduções diferentes para a mesma string, \fBpo4a\fR marcará essa string como difusa e enviará ambas as traduções em todos os arquivos \s-1PO\s0 que contêm essa string. Quando não é confundida pelo tradutor, a tradução é usada em todos os arquivos \s-1PO\s0 automaticamente. .SS "Especificando os documentos para traduzir" .IX Subsection "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. Aqui está um exemplo: .PP .Vb 5 \& [type: sgml] doc/my_stuff.sgml fr:doc/fr/mon_truc.sgml \e \& 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 \e \& de:doc/de/script.xml .Ve .PP 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 \f(CW$lang\fR da seguinte maneira: .PP .Vb 3 \& [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 .Ve .SS "Especificando opções" .IX Subsection "Especificando opções" Há dois tipos de opções: \fIopções do po4a\fR são valores padrão para as opções de linha de comando po4a enquanto \fIopções de formato\fR são usadas para alterar o comportamento dos analisadores de formato. Como uma \fIopções do po4a\fR, você pode, por exemplo, especificar em seu arquivo de configuração que o valor padrão do parâmetro de linha de comando \fB\-\-keep\fR é de 50% em vez de 80%. \fIOpções de formato\fR estão documentadas na página específica de cada módulo de análise, por exemplo, \fBLocale::Po4a::Xml\fR\|(3pm). Você pode, por exemplo, passar \fBnostrip\fR para o analisador \s-1XML\s0 para não remover os espaços ao redor das strings extraídas. .PP Você pode passar essas opções para um arquivo mestre específico, ou mesmo para uma tradução específica desse arquivo, usando \f(CW\*(C`opt:\*(C'\fR e \f(CW\*(C`opt_XX:\*(C'\fR para o idioma \f(CW\*(C`XX\*(C'\fR. No exemplo a seguir, a opção \fBnostrip\fR é passada para o analisador \s-1XML\s0 (para todos os idiomas), enquanto o limite será reduzido para 0% para a tradução em francês (que, portanto, é sempre mantida). .PP .Vb 1 \& [type:xml] toto.xml $lang:toto.$lang.xml opt:"\-o nostrip" opt_fr:"\-\-keep 0" .Ve .PP 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: .PP .Vb 3 \& [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 .Ve .PP Observe que as opções específicas do idioma não são usadas ao criar o arquivo \s-1POT.\s0 Por exemplo, é impossível passar \fBnostrip\fR para o analisador apenas ao criar a tradução em francês, porque o mesmo arquivo \s-1POT\s0 é 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 \&\f(CW\*(C`\-\-keep\*(C'\fR. .PP \fIAliases de configuração\fR .IX Subsection "Aliases de configuração" .PP Para passar as mesmas opções para vários arquivos, o melhor é definir um alias de tipo da seguinte maneira. No próximo exemplo, \f(CW\*(C`\-\-keep 0\*(C'\fR é passado para todas as traduções em italiano usando este tipo \f(CW\*(C`test\*(C'\fR, que é uma extensão do tipo \f(CW\*(C`man\*(C'\fR. .PP .Vb 2 \& [po4a_alias:test] man opt_it:"\-\-keep 0" \& [type: test] man/page.1 $lang:man/$lang/page.1 .Ve .PP 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. .PP .Vb 2 \& [po4a_alias:man] man opt_it:"\-\-keep 0" \& [type: man] man/page.1 $lang:man/$lang/page.1 .Ve .PP \fIOpções padrão globais\fR .IX Subsection "Opções padrão globais" .PP Você também pode usar as linhas \f(CW\*(C`[options]\*(C'\fR para definir opções que devem ser usadas para todos os arquivos, independentemente do seu tipo. .PP .Vb 1 \& [options] \-\-keep 20 \-\-option nostrip .Ve .PP Como nas opções da linha de comando, você pode abreviar os parâmetros passados no arquivo de configuração: .PP .Vb 1 \& [options] \-k 20 \-o nostrip .Ve .PP \fIPrioridades das opções\fR .IX Subsection "Prioridades das opções" .PP 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: .IP "\(bu" 4 As linhas \f(CW\*(C`[options]\*(C'\fR fornecem valores padrão que podem ser substituídos por qualquer outra fonte. .IP "\(bu" 4 Os aliases de tipo são então usados. As configurações específicas do idioma substituem as aplicáveis a todos os idiomas. .IP "\(bu" 4 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. .IP "\(bu" 4 Finalmente, os parâmetros fornecidos na linha de comando \fBpo4a\fR substituem quaisquer configurações do arquivo de configuração. .PP \fIExemplo\fR .IX Subsection "Exemplo" .PP Aqui está um exemplo mostrando como citar os espaços e aspas: .PP .Vb 1 \& [po_directory] man/po/ \& \& [options] \-\-master\-charset UTF\-8 \& \& [po4a_alias:man] man opt:"\-o \e"mdoc=NAME,SEE ALSO\e"" \& [type:man] t\-05\-config/test02_man.1 $lang:tmp/test02_man.$lang.1 \e \& opt:"\-k 75" opt_it:"\-L UTF\-8" opt_fr:\-\-verbose .Ve .SS "Adendo: Acréscimo de conteúdo extra na tradução" .IX Subsection "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 \fBpo4a\fR\|(7) para obter mais detalhes sobre a sintaxe dos arquivos de adendo. .PP .Vb 2 \& [type: pod] script fr:doc/fr/script.1 \e \& add_fr:doc/l10n/script.fr.add .Ve .PP Você também pode usar modelos de idioma da seguinte maneira: .PP .Vb 2 \& [type: pod] script $lang:doc/$lang/script.1 \e \& add_$lang:doc/l10n/script.$lang.add .Ve .PP Se um adendo não se aplicar, a tradução será descartada. .PP \fIModificadores para a declaração de adendo\fR .IX Subsection "Modificadores para a declaração de adendo" .PP 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. .IP "\fB?\fR" 2 .IX Item "?" Inclua \fIaddendum_path\fR se esse arquivo não existir, do contrário nada para fazer. .IP "\fB@\fR" 2 .IX Item "@" \&\fIaddendum_path\fR não é um adendo regular, mas um arquivo contendo uma lista de adendos, uma por linha. Cada adendo pode ser precedido por modificadores. .IP "\fB!\fR" 2 .IX Item "!" \&\fIaddendum_path\fR está descartado, ele não é carregado e não vai ser carregado por qualquer uma especificação de adendo. .PP O seguinte inclui um adendo em qualquer idioma, mas se existir. Nenhum erro será relatado se o adendo não existir. .PP .Vb 1 \& [type: pod] script $lang:doc/$lang/script.1 add_$lang:?doc/l10n/script.$lang.add .Ve .PP O seguinte inclui uma lista de adendos para cada idioma: .PP .Vb 1 \& [type: pod] script $lang:doc/$lang/script.1 add_$lang:@doc/l10n/script.$lang.add .Ve .SS "Filtrando as strings traduzidas" .IX Subsection "Filtrando as strings traduzidas" Às vezes, você deseja ocultar algumas strings do processo de tradução. Nesse sentido, você pode atribuir um parâmetro \f(CW\*(C`pot_in\*(C'\fR ao seu arquivo mestre para especificar o nome do arquivo a ser usado em vez do mestre real ao criar o arquivo \s-1POT.\s0 Aqui está um exemplo: .PP .Vb 3 \& [type:docbook] book.xml \e \& pot_in:book\-filtered.xml \e \& $lang:book.$lang.xml .Ve .PP Com essa configuração, as strings a serem traduzidas serão extraídas do \&\fIbook\-filter.xml\fR (que deve ser produzido antes da chamada de \fBpo4a\fR) enquanto os arquivos traduzidos serão compilados a partir do \&\fIbook.xml\fR. Como resultado, qualquer string que faça parte de \fIbook.xml\fR, mas não em \fIbook\-filter.xml\fR não será incluída nos arquivos \s-1PO,\s0 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 \f(CW\*(C`\-\-keep\*(C'\fR para garantir que o documento seja produzido de qualquer maneira. .SS "\s-1EXEMPLO DE\s0 CONFIGURAÇÃO" .IX Subsection "EXEMPLO DE CONFIGURAÇÃO" A Fazer: Esta seção é realmente útil? .PP Vamos presumir que você mantém um programa chamado \fBfoo\fR, o qual possui uma página man \fIman/foo.1\fR, a qual naturalmente é mantida em inglês somente. Agora você, como o mantenedor upstream ou downstream, quer criar e manter a tradução. Primeiro você precisa criar o arquivo \s-1POT\s0 necessário para enviar os tradutores usando \fBpo4a\-gettextize\fR\|(1). .PP Então, para o nosso caso, chamaríamos .PP .Vb 1 \& cd man && po4a\-gettextize \-f man \-m foo.1 \-p foo.pot .Ve .PP Você iria, então, enviar esse arquivo para as listas de idiomas apropriadas ou oferecê\-lo para download em algum lugar na sua página web. .PP Agora, vamos presumir que você recebeu três traduções antes de seu próximo lançamento: \fIde.po\fR (includindo um adendo \fIde.add\fR), \fIsv.po\fR e \&\fIpt.po\fR. Considerando que você não quer alterar seu \fIMakefile\fR(s) quando uma nova tradução aparece, você pode usar o \fBpo4a\fR com um arquivo de configuração apropriada em seu \fIMakefile\fR. Vamos chamá\-lo de \&\fIpo4a.cfg\fR. Em nosso exemplo, ele se pareceria com o seguinte: .PP .Vb 1 \& [po_directory] man/po4a/po/ \& \& [type: man] man/foo.1 $lang:man/translated/$lang/foo.1 \e \& add_$lang:?man/po4a/add_$lang/$lang.add opt:"\-k 80" .Ve .PP Neste exemplo, nós presumimos que suas páginas man geradas (e todos os arquivos \s-1PO\s0 e de adendos) deveriam estar armazenadas em \&\fIman/translated/$lang/\fR (respectivamente em \fIman/po4a/po/\fR e \&\fIman/po4a/add_$lang/\fR) abaixo do diretório atual. Em nosso exemplo, o diretório de \fIman/po4a/po/\fR iria incluir \fIde.po\fR, \fIpt.po\fR e \fIsv.po\fR, e o diretório de \fIman/po4a/add_de/\fR iria incluir \fIde.add\fR. .PP Note que o uso do modificador \fB?\fR em apenas tradução em alemão (\fIde.po\fR) é acompanhada por um adendo. .PP Para atualmente compilar as páginas man traduzidas você iria, então, adicionar (uma só vez!) a seguinte linha no alvo \fBbuild\fR do \fIMakefile\fR apropriado: .PP .Vb 1 \& po4a po4a.cfg .Ve .PP Assim que isso estiver sido configurado, você não precisa tocar no \&\fIMakefile\fR quando uma nova tradução aparecer , i.e. se o time francês enviar a você \fIfr.po\fR e \fIfr.add\fR, você iria simplesmente colocá\-las respectivamente em \fIman/po4a/po/\fR e \fIman/po4a/add_fr/\fR e o a próxima vez que o programa for compilado, a tradução em francês também será compilada automaticamente em \fIman/translated/fr/\fR. .PP Note que você ainda precisaria de um alvo apropriado para instalar páginas de manuais localizados com os em inglês. .PP Finalmente, se você não armazena arquivos gerados em seu sistema de controle de versão, você vai precisar de uma linha em seu alvo \fBclean\fR também: \-rm \-rf man/translated .SH "VEJA TAMBÉM" .IX Header "VEJA TAMBÉM" \&\fBpo4a\-gettextize\fR\|(1), \fBpo4a\-normalize\fR\|(1), \fBpo4a\-translate\fR\|(1), \&\fBpo4a\-updatepo\fR\|(1), \fBpo4a\fR\|(7). .SH "AUTORES" .IX Header "AUTORES" .Vb 3 \& Denis Barbier \& Nicolas François \& Martin Quinson (mquinson#debian.org) .Ve .SH "COPYRIGHT E LICENÇA" .IX Header "COPYRIGHT E LICENÇA" Copyright 2002\-2020 por \s-1SPI,\s0 inc. .PP Esse programa é um software livre; você pode redistribuí\-lo e/ou modificá\-lo sob os termos da \s-1GPL\s0 (veja o arquivo \s-1COPYING\s0).