Scroll to navigation

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();

    # Read PO file
    $pofile->read('file.po');

    # Add an entry
    $pofile->push('msgid' => 'Hello', 'msgstr' => 'bonjour',
                  '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 você 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 sequência.

Para uma descrição mais completa do catálogo de mensagens no formato PO e seu uso, por favor veja a documentação info do programa gettext. (nó "`Arquivos 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 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 (default: 76)
Specify how the po file should be wrapped. This gives the choice between either files that are nicely wrapped but could lead to git conflicts, or files that are easier to handle automatically, but harder to read for humans.

Historically, the gettext suite has reformatted the po files at the 77th column for cosmetics. This option specifies the behavior of po4a. If set to a numerical value, po4a will wrap the po file after this column and after newlines in the content. If set to newlines, po4a will only split the msgid and msgstr after newlines in the content. If set to no, po4a will not wrap the po file at all. The reference comments are always wrapped by the gettext tools that we use internally.

Note that this option has no impact on how the msgid and msgstr are wrapped, ie on how newlines are added to the content of these strings.

--msgid-bugs-address email@address
Definir o endereço do relatório para msgid bugs. Por padrã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 padrão é " Free Software Foundation, Inc."
--package-name string
Definir o nome do pacote para o cabeçalho POT. O padrão é "PACOTE".
--package-version string
Definir o nome do pacote para o cabeçalho POT. O padrão é "VERSÃO".

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 para o 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á colocado no catálogo resultante.

Esta função analisa seu argumento, 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.

Eu 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 sequência não foi encontrada.

Após a sequência para traduzir, pode passar um 'hash' de argumentos adicionais. Aqui são as entradas válidas:

wrap
um booleano indica se podemos considerar que os espaços em branco na sequência não são importantes. Se sim, a função canoniza a sequência antes de procurar uma tradução, e envolve o resultado.
wrapcol
a coluna em que nos devemos envolver (padrão: 76)
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 o status 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 sequências.\n";
    
stats_clear()
Limpa as estatísticas sobre visitas 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 sequência no idioma original.
msgstr
a tradução
reference
uma indicação de onde essa sequência 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 sequência. 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 seu significado.

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, usando 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 sua estrutura (como "chapt", "sect1", "p" e assim por diante em DocBook). Se os tipos de sequências 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 sequências para traduzir.

wrap
booleano que indica se os espaços em branco podem ser mutilados em cosméticas reformatações. Se for verdade, a sequência está canonizada antes do uso.

Esta informação é gravada no ficheiro PO usando a 'flag' wrap ou B <no-wrap>.

wrapcol
a coluna em que nos devemos envolver (padrão: 76)

Esta informação não é escrita no ficheiro PO.

Funções auxiliares

count_entries()
Retorna o número de entradas no catálogo (sem o cabeçalho).
count_entries_doc()
Retorna o número de entradas no documento. Se uma sequência aparece múltiplas vezes no documento, será contado múltiplas vezes.
equals_msgid(po)
Retorna ($uptodate, $diagnostic) com $uptodate indicando 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()
Returns the character set specified in the PO header. If it hasn't been set, it will return "UTF-8".
set_charset($)
This sets the character set of the PO header to the value specified in its first argument. If you never call this function (and no file with a specified character set is read), the default value is left to "UTF-8". This value doesn't change the behavior of this module, it's just used to fill that field in the header, and to return it in get_charset().

AUTORES

 Denis Barbier <barbier@linuxfr.org>
 Martin Quinson (mquinson#debian.org)
2020-07-16 Ferramentas Po4a