LOCALE::PO4A::PO.3PM(1) User Contributed Perl Documentation NOME Locale::Po4a::Po - modulo para manipulacao de arquivos PO SINOPSE use Locale::Po4a::Po; my $pofile=Locale::Po4a::Po->new(); # Le um arquivo PO $pofile->read('arquivo.po'); # Adiciona uma entrada $pofile->push('msgid' => 'Hello', 'msgstr' => 'bom dia', 'flags' => "wrap", 'reference'=>'file.c:46'); # Extrai uma traducao $pofile->gettext("Hello"); # retorna "bom dia" # Escreve de volta em um arquivo $pofile->write('outroarquivo.po'); DESCRICAO Locale::Po4a::Po e um modulo que permite que voce manipule catalogo de mensagens. Voce pode carregar e escrever de/para um arquivo (cujas extensoes geralmente sao po), voce pode compilar novas entradas em tempo real ou requisitar a traducao de uma string. Para uma descricao mais completa do catalogo de mensagens no formato PO e seu uso, por favor veja a documentacao info do programa gettext. (no "`Arquivos PO"'). Este modulo e parte do projeto po4a, cujo objetivo e usar arquivos PO (projetado em sua origem para facilitar a traducao de mensagens de programas) para traduzir tudo, incluindo documentacao (paginas man, manual info), descricao de pacotes, modelos de debconf e tudo que pode se beneficiar dele. OPCOES ACEITAS POR ESTE MODULO --porefs tipo Especifica o formato de referencia. O argumento tipo pode ser um de: never para nao produzir qualquer referencia, file para especificar o arquivo sem o numero de linha, counter para substituir os numeros de linha aumentando o contador e full para incluir referencias completas. (padrao: full). --wrap-po no|newlines|number (padrao: 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 sao mais faceis de manipular automaticamente, mas mais dificeis de ler para humanos. Historicamente, o pacote gettext reformatou os arquivos po na 77a coluna para questoes cosmeticas. Esta opcao especifica o comportamento de po4a. Se definido como um valor numerico, o po4a quebrara linha do arquivo po apos esta coluna e apos novas linhas no conteudo. Se definido como newlines, o po4a dividira apenas o msgid e o msgstr apos as novas linhas no conteudo. Se definido como no, o po4a nao quebrara linha do arquivo po. Os comentarios de referencia tem sempre as linhas quebradas pelas ferramentas do gettext que nos 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 strings. --msgid-bugs-address e-mail@endereco Define o endereco para relatorios de erros em msgids. Por padrao, os arquivos POT criados possuem nenhum campo Report-Msgid-Bugs-To. --copyright-holder string Define o detentor do copyright no cabecalho do POT. O valor padrao e "Free Software Foundation, Inc." --package-name string Define o nome do pacote para o cabecalho do POT. O padrao e "PACKAGE". --package-version string Define a versao do pacote do cabecalho do POT. O padrao e "VERSION". Funcoes relativas a catalogos de mensagens inteiros new() Cria uma nova mensagem de catalogo. Se for fornecido um argumento, e o nome de um arquivo PO que nos devemos carregar. read($) Le um arquivo PO (cujo nome e fornecido como argumento). Entradas previamente existentes nele nao sao removidas, sendo as novas adicionadas ao final do catalogo. write($) Escreve o catalogo atual no arquivo fornecido. write_if_needed($$) Similar ao "write", mas se o arquivo PO ou POT ja existir, o objeto sera escrito em um arquivo temporario, o qual sera comparado com o arquivo existente para verificar se a atualizacao e necessaria (isso evita alterar um POT apenas para atualizar uma linha de referencia ou o campo POT-Creation-Date). filter($) Esta funcao extrai um catalogo de um outro existente. Apenas as entradas contendo uma referencia no arquivo fornecido serao inseridas no catalogo resultante. Esta funcao analisa seu argumento, convertendo-o para uma definicao de funcao de Perl, avalia esta definicao e filtra os campos para os quais esta funcao retorna verdadeiro. Tem vezes que eu adoro Perl ;) Funcoes para usar um catalogo de mensagens para traducoes gettext($%) Requisita a traducao de uma string fornecida como argumento no catalogo atual. A funcao retorna a string original (nao traduzida) se a string nao tiver sido encontrada. Apos a string para ser traduzida, voce pode passar um hash de argumentos extras. Aqui estao as entradas validas: wrap booleano indicando se nos podemos considerar que espacos em branco na string nao sao importantes. Se sim, a funcao canoniza a string antes de procurar por uma traducao e dimensiona o resultado. wrapcol a coluna na qual nos deveriamos dimensionar (padrao: 76). stats_get() Retorna estatisticas sobre a proporcao de acerto do gettext desde a ultima vez que stats_clear() foi chamada. Por favor, note que essa nao e a mesma estatistica impressa por msgfmt --statistic. Aqui, essa estatistica sobre uso recente do arquivo PO, enquanto msgfmt relata o estado do arquivo. Exemplo de uso: [um uso do arquivo PO para traduzir coisas] ($percent,$hit,$queries) = $pofile->stats_get(); print "Ate agora, nos encontramos traducoes para $percent\% ($hit de $queries) da strings.\n"; stats_clear() Limpa as estatisticas sobre os acertos do gettext. Funcoes para compilar um catalogo de mensagem push(%) Insere uma nova entrada no final do catalogo atual. Os argumentos deveriam formar uma tabela de hash. As chaves validas sao: msgid a string no idioma original. msgstr a traducao. reference uma indicacao de onde esta string foi encontrada. Exemplo: file.c:46 (significa em "file.c" na linha 46). Ela pode ser uma lista separada por espaco no caso de multiplas ocorrencias. comment um comentario adicionado aqui manualmente (pelos tradutores). Este formato e livre. automatic um comentario que foi adicionado automaticamente pelo programa de extracao de strings. Veja a opcao --add-comments no programa xgettext para mais informacoes. flags lista separada por espaco de todas as opcoes definidas para esta entrada. Opcoes 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 e fuzzy. Veja a documentacao do gettext para ver seu significado. type esse e basicamente um argumento interno: ele e usado ao gettextizar documentos. A ideia aqui e analisar tanto o original quanto a traducao em um objeto PO e mescla-los, usando a msgid do primeiro e o msgid do segundo como msgstr. Para certificar-se de que as coisas funcionem, a cada msgid nos objetos PO e fornecido um tipo, baseado em sua estrutura (como "chapt", "sect1", "p" e outros, em DocBook). Se os tipos de strings nao forem os mesmos, significa que ambos arquivos nao compartilham a mesma estrutura e o processa relata um erro. Esta informacao e escrita como um comentario automatico no arquivo PO ja que isso fornece aos tradutores algum contexto sobre as strings para traduzir. wrap booleano indicando se espacos em branco podem ser separados em reformatacao cosmetica. Se verdadeiro, a string e canonizada antes de ser usada. Esta informacao e escrita no arquivo PO usando as opcoes wrap ou no-wrap. wrapcol ignored; the key is kept for backward computability. Funcoes diversas count_entries() retorna o numero de entradas no catalogo (sem o cabecalho). count_entries_doc() Retorna o numero de entradas no documento. Se uma string aparece multiplas vezes no documento, ele vai ser contado multiplas vezes. msgid($) retorna o msgid do numero fornecido. msgid_doc($) retorna o msgid com a posicao fornecida no 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 a codificacao de caracteres do cabecalho do PO. Se ele nao tiver sido definido, ele vai retornar "UTF-8". AUTORES Denis Barbier Martin Quinson (mquinson#debian.org) perl v5.38.2 2024-06-26 LOCALE::PO4A::PO.3PM(1)