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.
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@codehelp.co.uk>