PO4A-RUNTIME(7)

NOME
po4a-runtime - po4a e tradução com gettext em tempo de execução sem Autotools

Introdução
Com po4a-build, po4a também incluir suporte a adição de tradução de mensagens de saída de scripts em tempo de execução usando gettext, mas sem exigir o pacote para adotar Autotools e o processo de ./configure comum.

Usando pedaços de Makefile exemplo, pacotes podem aproveitar intltool com esforço mínimo.

Layout
Tradução de documentação NÃO usa o mesmo diretório po/ que a tradução em tempo de execução. Embora tradução em tempo de execução possa usar diretórios diferentes de po/, normalmente é mais fácil seguir nesta convenção.

Múltiplas linguagens
Apenas uma palavras sobre pacotes que usam scripts em múltiplas linguagens de programação. Uma mistura comum é Perl e shell. Note bem: gettext VAI ficar confuso e vai omitir strings de uma ou outra linguagem a menos que extensões de arquivos sejam usadas seja qual for a linguagem menos problemática.

Quando se está usando múltiplas linguagens, experimente com várias configurações em po/Makevars até que você obtenha todas as strings que você precisa no arquivo POT.

Em particular, ao especificar duas linguagens no po/Makevars pode ser problemático. Ao invés de:

 # Não faça isso:
 XGETTEXT_OPTIONS = -L Perl -L Shell --from-code=iso-8859-1

Considere renomear (o fornecer links simbólicos para) todos arquivos de uma linguagem envolvida e omitir as opções explícitas -L. A extensão de arquivo apenas precisa existir durante o momento em que po/POTFILES.in está sendo processado.

The --keywords option can also be useful - see the xgettext(1) documentation.

Populando po/
Então, crie seu diretório po/ nível de topo e use os arquivos exemplos em /usr/share/doc/po4a/examples/ para populá-lo.

LINGUAS
    Must exist, even if empty. Consists of a list of translations - each line not starting with a '#' must match an existing PO file. E.g. if LINGUAS contains a single line, 'fr', an fr.po file must exist alongside the LINGUAS file.

     $ cat po/LINGUAS
     cs
     de
     fr
     $

    Por convenção, o arquivo LINGUAS é organizado em ordem alfabética, mas esse é um processo manual.

POTFILES.in
    A lista de arquivos contendo as mensagens que precisam ser traduzidas em tempo de execução, isto é, seus scripts. Se você usou o diretório po/ de nível de topo, os caminhos devem ser relativos ao diretório de nível de topo, e não ao próprio diretório po/.

     $ ls -l
     meuscript.pl
     outro.pl
     foo/suporte.pl
     po/
     po/POTFILES.in
     $ cat po/POTFILES.in
     meuscript.pl
     outro.pl
     foo/suporte.pl
     $

    Note que há suporte explícito a scripts conterem eles mesmo strings para tradução de ambos tempo de execução e documentação. ex: usando funções do gettext para tempo de execução e conteúdo de POD embutido para documentação. Então, não é um problema ter o mesmo arquivo listado no po/POTFILES.in e doc/po4a-build.conf

Makevars-perl.example
    Se os seus scripts são Perl, copie este arquivo exemplo como po/Makevars e edite-o para adequá-lo.

Makevars-shell.example
    Se os seus scripts são shell, copie este arquivo exemplo como po/Makevars e edite-o para adequá-lo.

po4a-build.make
    Copie este exemplo como po/Makefile - ele não deveria precisar de ser editado, mas você pode desejar mantê-lo atualizado em relação ao /usr/share/doc/po4a/examples/po4a-build.make, pois ele pode precisar ser atualizado com o passar das versões do po4a porque o intltool permite alterações. (O arquivo em si é gerado em um outro projeto usando Autotools e intltool.)

Compilação
Esses excertos precisam ser adicionados ao seu Makefile de nível de topo ou qualquer outro método que você usar para preparar seus fontes para distribuição.

 clean:
        $(MAKE) -C po/ clean

 install:
        $(MAKE) -C po/ install DESTDIR=$(DESTDIR)

 dist:
        $(MAKE) -C po/ pot

(Em um projeto com Autotools, isso aconteceria automaticamente simplesmente adicionando po ao valor "SUBDIRS" em Makefile.am.)

Manutenção
Tradução de tempo de execução não é tão fácil, pois po4a-build no processo de adicionar uma nova tradução requer edição do po/LINGUAS, mas, tirando essa questão, atualização de traduções é meramente uma questão de substituir o arquivo PO relevante com sua nova versão.

Dependendo em como você prepara o seu tarball fonte, você pode também precisar listar os novos arquivos PO no arquivo MANIFEST ou adicionar scripts que preparam o tarball. (que também se aplica a po4a-build.)

Quaisquer arquivos *.mo ou *.gmo em po/ podem ser excluídos / apagados.

Copyright
Enquanto os arquivos exemplos são parte do projeto po4a, você é livre para usá-los, modificá-los e distribuí-los em seus próprios projetos sem precisar avisar o po4a ou listar a equipe do po4a no seu aviso de direitos autorais, da mesma maneira que outras ferramentas de compilação, como o próprio Autotools. Se você deseja mencionar o po4a, não tem problema.

AUTORES
 Neil Williams <linux@codehelp.co.uk>