NOME
po4a−runtime − po4a e tradução gettext em tempo de execução sem Autotools
Introdução
Com po4a−build, po4a também inclui suporte para adicionar tradução de script de mensagens de saída em tempo de execução usando gettext mas sem exigir o pacote para adotar Autotools e o típico processo ./configure.
Usando ’snippets’ como exemplo Makefile, os pacotes podem aproveitar intltool com o mínimo de esforço.
Apresentação
Tradução de documentação NÃO deve usar o mesmo diretório po/ como a tradução em tempo de execução. Enquanto tradução tempo de execução pode usar outros diretórios além de po/, é geralmente mais fácil ir com a convenção.
Multiplos Idiomas
Apenas uma palavra sobre os pacotes que usam scripts na programação múltipla de idiomas. Uma mistura comum é Perl e shell. Note bem: gettext VAI ficar confuso e omitir sequências de um ou outro idioma a não ser que extensões de ficheiros sejam utilizadas para o idioma que for menos problemático.
Ao usar vários idiomas, experimentar com várias configurações em po/Makevars até obter todas as sequências que você precisa no ficheiro POT.
Em particular, especificando duas línguas em po/Makevars pode ser problemático. Em vez de:
# Não fazer isso: XGETTEXT_OPTIONS = −L Perl −L Shell −−from−code=iso−8859−1
Considere renomear (ou fornecer ligações simbólicas para) todos os ficheiros por um dos idiomas envolvidos e omitindo as opções explícitas −L. A extensão do ficheiro só precisa existir durante o tempo em que po/POTFILES.in está sendo processado.
A opção ’−−keywords’ também pode ser útil − consulte a documentação xgettext(1).
Preenchendo po/
Então,
crie o seu diretório de nível mais alto
po/ e, em seguida, usar os ficheiros de exemplo em
/usr/share/doc/po4a/examples/ para
preenchê−lo.
LINGUAS
Deve existir, mesmo que vazio. Consiste numa lista de traduções − cada linha não começando com um ’#’ deve corresponder a um ficheiro PO existente. por exemplo, se LINGUAS contém uma única linha, ’fr’, um arquivo fr.po deve coexistir com o ficheiro LINGUAS .
$ cat po/LINGUAS cs de fr $
Por convenção, o ficheiro LINGUAS é classificado por ordem alfabética, mas isso é um processo manual.
POTFILES .in
A lista de ficheiros contendo as mensagens que precisam de ser traduzidas em tempo de execução − ou seja, os seus scripts. Se você já usou o diretório de nível superior po/, os caminhos devem ser relativos ao diretório de nível superior, e não ao próprio diretório po/.
$ ls −l myscript.pl another.pl foo/support.pl po/ po/POTFILES.in $ cat po/POTFILES.in myscript.pl another.pl foo/support.pl $
Note que é explicitamente suportado que os próprios scripts podem conter sequências tanto para tempo de execução como para tradução da documentação, por exemplo, usando funções gettext para tempo de execução e conteúdo POD incorporado para documentação. Assim não é um problema ter o mesmo ficheiro listado em po/POTFILES.in e doc/po4a−build.conf.
Makevars−perl.example
Se seus scripts são em Perl, copie este ficheiro exemplo como po/Makevars e edite-o para se adequar.
Makevars−shell.example
Se seus scripts são em shell, copie este ficheiro exemplo como po/Makevars e edite-o para se adequar.
po4a−build.make
Copie este ficheiro exemplo como po/Makefile − não deve precisar de edição, mas você pode querer mantê−lo atualizado contra / usr/share/doc/po4a/examples/po4a−build.make como ele pode precisar de ser atualizado dentro dos lançamentos po4a como as mudanças de suporte subjacentes intltool (o ficheiro em si foi gerado a partir de outro projeto utilizando Autotools e intltool).
Construindo
Estes ’snippets’ precisam ser adicionados ao seu Makefile de nível superior ou qualquer outro método que usar para preparar as suas fontes para distribuição.
clean: $(MAKE) −C po/ clean install: $(MAKE) −C po/ install DESTDIR=$(DESTDIR) dist: $(MAKE) −C po/ pot
(Num projeto Autotools, isso iria acontecer automaticamente, basta adicionar po ao valor "SUBDIRS" em Makefile.am.)
Manutenção
Tradução em tempo de execução não é tão fácil como po4a−build em que a adição de uma nova tradução exige a edição po/LINGUAS, mas aparte disso, atualizar traduções é apenas um caso de substituir o ficheiro PO relevante com a nova versão.
Dependendo de como preparar o seu pacote de código, você também pode precisar de listar novos ficheiros PO no ficheiro manifest ou adicionar ao script(s) que preparar o ’tarball’ (isso também se aplica a po4a−build).
Qualquer ficheiro *.mo ou *.gmo em po/ pode ser apagado / limpo.
Direitos de Autor
Enquanto os ficheiros exemplo são parte do projeto po4a, você está livre para usar, modificar e distribuí−los nos seus próprios projetos sem a necessidade de remeter para po4a ou listar a equipa po4a, nos seus próprios direitos de autor, da mesma forma como outras ferramentas de construção como o próprio Automake. Se você quiser mencionar po4a, isso é bom também.
AUTORES
Neil Williams <linux [AT] codehelp.uk>