Locale::Po4a::Po(3pm) | Ferramentas Po4a | Locale::Po4a::Po(3pm) |
NOME¶
Locale::Po4a::Po - módulo de manipulação dum ficheiro PO
SINOPSE¶
use Locale::Po4a::Po; my $pofile=Locale::Po4a::Po->new(); # Ler ficheiro PO $pofile->read('file.po'); # Adicionar uma entrada $pofile->push('msgid' => 'Hello', 'msgstr' => 'olá', 'flags' => "wrap", 'reference'=>'file.c:46'); # Extrair uma tradução $pofile->gettext("bom dia"); # returns 'bonjour' # Escrever de volta para um ficheiro $pofile->write('otherfile.po');
DESCRIÇÃO¶
Locale::po4a:: Po é um módulo que permite que manipule catálogos de mensagens. Pode carregar e escrever de/para um ficheiro (cuja extensão é muitas vezes po), pode construir novas entradas na execução ou pedir uma tradução de uma cadeia.
Para uma descrição mais completa do catálogo de mensagens no formato PO e o uso dele, por favor veja a documentação info do programa gettext. (nó "`Ficheiros PO"').
Este módulo é parte do projeto po4a, cujo objetivo é usar ficheiros PO (projetado na origem para facilitar a tradução de mensagens do programa) para traduzir tudo, inclusive a documentação (página do manual, manual de informação), descrição do pacote, modelos debconf e tudo o que pode beneficiar a partir deste.
OPÇÕES ACEITES POR ESTE MÓDULO¶
- --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.
- --msgid-bugs-address e-mail@endereço
- Definir o endereço do relatório para msgid bugs. Por predefinição, os ficheiros POT criados não têm campos Report-Msgid-bugs-To.
- --copyright-holder string
- Definir o titular dos direitos de autor no cabeçalho POT. O valor predefinido é " Free Software Foundation, Inc."
- --package-name string
- Definir o nome do pacote para o cabeçalho POT. A predefinição é "PACKAGE".
- --package-version string
- Definir o nome do pacote para o cabeçalho POT. A predefinição é "VERSION".
Funções relativas a catálogos de mensagens inteiros¶
- novo()
- Cria um catálogo de mensagem novo. Se um argumento é fornecido, é o nome dum ficheiro PO que deve carregar.
- ler($)
- Lê um ficheiro PO (que o nome é dado como argumento). Entradas previamente existentes em si não são removidas, os novos são adicionados ao fim do catálogo.
- escrever($)
- Escreve o catálogo atual ao ficheiro dado.
- write_if_needed($$)
- Como escrever, mas se o ficheiro PO ou POT já existe, o objeto será escrito num ficheiro temporário, que será comparado com o ficheiro existente para verificar se a atualização é necessária (isso evita mudar um POT apenas para atualizar uma linha de referência ou o campo POT-Creation-Date).
- gettextize($$)
- Esta função produz um catálogo mensagem traduzida a partir de dois catálogos, um original e uma tradução. Este processo é descrito em po4a(7) secção Gettextization: como é que funciona?.
- filtro($)
- Esta função extrai um catálogo a partir de um
já existente. Somente as entradas têm uma referência
no ficheiro dado será posto no catálogo resultante.
Esta função analisa o argumento dele, converte-o para uma definição função Perl, avalia esta definição e filtra os campos para os quais esta função retornará verdadeiro.
Algumas vezes gosto de Perl ;)
- para_utf8()
- Recodifica para UTF-8 as mensagens traduzidas do PO. Não faz nada se o conjunto de carteres não é especificado no ficheio PO ("charset" value), ou se já é UTF-8 ou ASCII.
Funções para utilizar um catálogo de mensagens para traduções¶
- gettext($%)
- Pede a tradução duma dada sequência como argumento no
catálogo atual. Esta função retorna a
sequência (não traduzida) original, se a cadeia não
foi encontrada.
Após a cadeia para traduzir, pode passar um 'hash' de argumentos adicionais. Aqui são as entradas válidas:
- stats_get()
- Retorna estatísticas sobre a taxa de acerto de gettext desde a
última vez que stats_clear() foi chamado. Por favor, note
que não são as mesmas estatísticas que são
impressas por msgfmt --statistic. Aqui, são as estatísticas
sobre o recente uso do ficheiro PO, enquanto msgfmt informa sobre o estado
do ficheiro. Exemplo de uso:
[algum uso do ficheiro PO para traduzir coisas] ($percent,$hit,$queries) = $pofile->stats_get(); print "Até agora, encontramos traduções para $percent\% ($hit de $queries) de cadeias.\n";
- stats_clear()
- Limpa as estatísticas sobre os êxitos do gettext.
Funções para a construção de um catálogo de mensagens¶
- push(%)
- Empurrar uma nova entrada no final do catálogo atual. Os argumentos devem formar uma tabela hash. As chaves válidas são:
- msgid
- a cadeia no idioma original.
- msgstr
- a tradução.
- reference
- uma indicação de onde essa cadeia foi encontrada. Exemplo: file.c:46 (ou seja, em 'file.c' na linha 46). Pode ser uma lista separada por espaços em caso de múltiplas ocorrências.
- comment
- um comentário adicionado aqui manualmente (pelo tradutor). O formato é livre.
- automatic
- um comentário que foi adicionado automaticamente pelo programa de extração da cadeia. Veja a opção --add-comments do programa xgettext para obter mais informações.
- flags
- lista separada por espaços de todas as 'flags' definidas para esta
entrada.
As 'flags' válidas são: c-text, python-text, lisp-text, elisp-text, librep-text, smalltalk-text, java-text, awk-text, object-pascal-text, ycp-text, tcl-text, wrap, no-wrap and fuzzy.
Consulte a documentação do gettext para o significado deles.
- type
- este é mais um argumento interno: é usado enquanto os
documentos são 'gettextizados'. A ideia aqui é analisar
tanto o original como a tradução num objeto PO e fundi-los,
a usar um 'msgid' como 'msgid' e os outros 'msgid' como 'msgstr'. Para ter
certeza de que as coisas ficam bem, cada 'msgid em objetos PO recebem um
tipo, com base na estrutura deles (como "chapt",
"sect1", "p" e assim por diante em DocBook). Se os
tipos de cadeias não são as mesmas, significa que ambos os
ficheiros não partilham a mesma estrutura e, o processo e informa
um erro.
Esta informação é escrita como comentário automático no ficheiro PO uma vez que dá aos tradutores algum contexto sobre as cadeias para traduzir.
- wrap
- booleano que indica se os espaços em branco podem ser mutilados em
cosméticas reformatações. Se for verdade, a cadeia
está canonizada antes do uso.
Esta informação é gravada no ficheiro PO a usar a 'flag' wrap ou B <no-wrap>.
- wrapcol
- a coluna em que devemos envolver (predefinição: 76).
Esta informação não é escrita no ficheiro PO.
Funções auxiliares¶
- count_entries()
- Retorna a quantidade de entradas no catálogo (sem o cabeçalho).
- count_entries_doc()
- Retorna a quantidade de entradas no documento. Se uma cadeia aparece múltiplas vezes no documento, será contado múltiplas vezes.
- equals_msgid(po)
- Retorna ($uptodate, $diagnostic) com
$uptodate a indicar se todas as msgid do ficheiro
po atual também estão presentes naquele que foi passado como
parâmetro (todos os outros campos são ignorados na
comparação de ficheiros). Informalmente se
$uptodate retornar falso, então os
ficheiros po podem ser alterados quando forem através do
po4a-updatepo.
Se $uptodate for falso, então $diagnostic contém um diagnóstico de por que isto é assim.
- msgid($)
- Retorna o identificador de mensagem do número dado.
- msgid_doc($)
- Retorna o identificador de mensagem na posição do documento dada.
- get_charset()
- Retorna o conjunto de caracteres especificado no cabeçalho PO. Se não foi definido, irá retornar "UTF-8".
- set_charset($)
- Isso define o conjunto de caracteres do cabeçalho PO ao valor especificado no primeiro argumento dele. Se nunca invocar esta função (e nenhum ficheiro com um conjunto de caracteres especificado é lido), o valor predefinido é "UTF-8". Este valor não altera o comportamento deste módulo, que é utilizado apenas para preencher esse campo no cabeçalho e devolvê-lo em get_charset().
AUTORES¶
Denis Barbier <barbier@linuxfr.org> Martin Quinson (mquinson#debian.org)
2021-09-20 | Ferramentas Po4a |