LOCALE::PO4A::PO.3PM(1) User Contributed Perl Documentation NOME Locale::Po4a::Po - modulo de manipulacao dum ficheiro PO RESUMO 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'); # Extract a translation $pofile->gettext("Hello"); # returns 'bonjour' # Write back to a file $pofile->write('otherfile.po'); DESCRICAO Locale::po4a:: Po e um modulo que permite que manipule catalogos de mensagens. Pode carregar e escrever de/para um ficheiro (cuja extensao e muitas vezes po), pode construir novas entradas na execucao ou pedir uma traducao de uma cadeia. Para uma descricao mais completa do catalogo de mensagens no formato PO e o uso dele, por favor veja a documentacao info do programa gettext. (no "`Ficheiros PO"'). Este modulo e parte do projeto po4a, cujo objetivo e usar ficheiros PO (projetado na origem para facilitar a traducao de mensagens do programa) para traduzir tudo, inclusive a documentacao (pagina do manual, manual de informacao), descricao do pacote, modelos debconf e tudo o que pode beneficiar a partir deste. OPCOES ACEITES POR ESTE MODULO --porefs type Especifica o formato de referencia. O argumento tipo pode ser um de: never para nao produzir qualquer referencia, file para especificar o ficheiro sem o numero da linha, counter para substituir os numeros de linha a aumentar o contador e full para incluir referencias completas. (predefinicao: full). --wrap-po no|newlines|number (predefinicao: 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 sao mais faceis de manipular automaticamente, mas mais dificeis de ler para humanos. Historicamente, o pacote gettext reformatou os ficheiros po na 77a coluna para questoes cosmeticas. Esta opcao especifica o comportamento de po4a. Se for definido como um valor numerico, o po4a quebrara linha do ficheiro po apos esta coluna e apos novas linhas no conteudo. Se for definido como newlines, o po4a dividira apenas o msgid e o msgstr apos as novas linhas no conteudo. Se for definido como no, o po4a nao quebrara linha do ficheiro po. Os comentarios de referencia tem sempre as linhas quebradas pelas ferramentas do gettext que usamos internamente. Observe que esta opcao nao afeta a maneira como o msgid e o msgstr sofrem quebra de linhas ou seja, como os caracteres de nova linha sao adicionados ao conteudo dessas cadeias. --msgid-bugs-address e-mail@endereco Define o endereco do relatorio para bugs de msgid. Por predefinicao, os ficheiros POT criados nao tem campos Report-Msgid-bugs-To. --copyright-holder string Define o titular dos direitos de autor no cabecalho POT. O valor predefinido e " Free Software Foundation, Inc." --package-name string Define o nome do pacote para o cabecalho POT. A predefinicao e "PACKAGE". --package-version string Define a versao do pacote para o cabecalho POT. A predefinicao e "VERSION". Funcoes relativas a catalogos de mensagens inteiros novo() Cria um catalogo de mensagem novo. Se um argumento e fornecido, e o nome dum ficheiro PO que deve carregar. ler($) Le um ficheiro PO (que o nome e dado como argumento). Entradas previamente existentes em si nao sao removidas, os novos sao adicionados ao fim do catalogo. escrever($) Escreve o catalogo atual no ficheiro dado. write_if_needed($$) Como escrever, mas se o ficheiro PO ou POT ja existe, o objeto sera escrito num ficheiro temporario, que sera comparado com o ficheiro existente para verificar se a atualizacao e necessaria (isso evita mudar um POT apenas para atualizar uma linha de referencia ou o campo POT-Creation-Date). filtro($) Esta funcao extrai um catalogo a partir de um ja existente. Somente as entradas que tem uma referencia no ficheiro dado serao postas no catalogo resultante. Esta funcao analisa o seu argumento, converte-o para uma definicao funcao Perl, avalia esta definicao e filtra os campos para os quais esta funcao retornara verdadeiro. Algumas vezes gosto de Perl ;) Funcoes para utilizar um catalogo de mensagens para traducoes gettext($%) Pede a traducao duma dada sequencia como argumento no catalogo atual. Esta funcao retorna a sequencia (nao traduzida) original, se a cadeia nao foi encontrada. Apos a cadeia para traduzir, pode passar um 'hash' de argumentos adicionais. Aqui sao as entradas validas: wrap um booleano que indica se podemos considerar que os espacos em branco na cadeia nao sao importantes. Se sim, a funcao canoniza a cadeia antes de procurar uma traducao e envolve o resultado. wrapcol a coluna em que devemos envolver (predefinicao: 76). stats_get() Retorna estatisticas sobre a taxa de acerto de gettext desde a ultima vez que stats_clear() foi chamado. Por favor, note que nao sao as mesmas estatisticas que sao impressas por msgfmt --statistic. Aqui, sao as estatisticas 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 "Ate agora, encontramos traducoes para $percent\% ($hit de $queries) de cadeias.\n"; stats_clear() Limpa as estatisticas sobre os exitos do gettext. Funcoes para a construcao de um catalogo de mensagens push(%) Forca uma nova entrada no final do catalogo atual. Os argumentos devem formar uma tabela hash. As chaves validas sao: msgid a cadeia no idioma original. msgstr a traducao. reference uma indicacao de onde essa cadeia foi encontrada. Exemplo: file.c:46 (ou seja, em 'file.c' na linha 46). Pode ser uma lista separada por espacos em caso de multiplas ocorrencias. comment um comentario adicionado aqui manualmente (pelo tradutor). O formato e livre. automatic um comentario que foi adicionado automaticamente pelo programa de extracao da cadeia. Veja a opcao --add-comments do programa xgettext para obter mais informacoes. flags lista separada por espacos de todas as bandeiras definidas para esta entrada. As bandeiras validas sao: 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 documentacao do gettext para o significado delas. type este e mais um argumento interno: e usado enquanto os documentos sao 'gettextizados'. A ideia aqui e analisar tanto o original como a traducao 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 nao sao as mesmas, significa que ambos os ficheiros nao partilham a mesma estrutura e, o processo e informa um erro. Esta informacao e escrita como comentario automatico no ficheiro PO uma vez que da aos tradutores algum contexto sobre as cadeias para traduzir. wrap booleano que indica se os espacos em branco podem ser mutilados em cosmeticas reformatacoes. Se for verdade, a cadeia esta canonizada antes do uso. Esta informacao e gravada no ficheiro PO que usa a bandeira wrap ou B . wrapcol ignorada; a chave e mantida para computabilidade retroativa. Funcoes variadas count_entries() Retorna a quantidade de entradas no catalogo (sem o cabecalho). count_entries_doc() Retorna a quantidade de entradas no documento. Se uma cadeia aparece multiplas vezes no documento, sera contada multiplas vezes. msgid($) Retorna o identificador de mensagem do numero dado. msgid_doc($) Retorna o identificador de mensagem na posicao dado do documento. type_doc($) Retorna o tipo de msgid com a posicao dada no documento. Provavelmente, isso so e util para gettextizacao e e armazenado separadamente de {$msgid}{'type'} porque o local posterior pode ser substituido por outro tipo quando $msgid e duplicado no documento mestre. get_charset() Retorna o conjunto de caracteres especificado no cabecalho PO. Se nao foi definido, ira retornar "UTF-8". AUTORES Denis Barbier Martin Quinson (mquinson#debian.org) perl v5.42.0 2025-11-22 LOCALE::PO4A::PO.3PM(1)