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 dos catálogos de mensagens no formato PO e o seu uso, por favor consulte a documentação do programa gettext.
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[,wrap|nowrap]
- Especificar o formato de referência. Argumento type pode ser
um none para não produzir qualquer referência,
noline para não especificar o número da linha (mais
exactamente todos os números de linha são
substituídos por 1), counter para substituir o número
de linha por um contador crescente, e full para incluir
referências completas.
O argumento pode ser seguido por uma vírgula ou pela palavra-chave wrap ou nowrap. Referências são escritas por padrão em uma única linha. A opção wrap envolve referências sobre várias linhas, para imitar as ferramentas gettext (xgettext e msgmerge). Esta opção irá tornar-se o padrão num lançamento futuro, porque é mais sensível. A opção nowrap é acessível para os utilizadores que querem manter o comportamento antigo.
- --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 sobre catálogos de mensagens inteiras¶
- 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:
- 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.
- 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, ele irá retornar "CHARSET".
- set_charset($)
- Isso define o conjunto de caracteres do cabeçalho PO para o valor especificado no seu primeiro argumento. Se você nunca invocar esta função (e nenhum ficheiro com um conjunto de caracteres especificado é lido), o valor padrão é deixada para "CHARSET". 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)
2014-05-02 | Ferramentas Po4a |