table of contents
PO4A-RUNTIME(7) | Ferramentas do Po4a | 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.
A opção --keywords também pode ser útil - veja a documentação do xgettext(1).
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
- Deve existir, mesmo se vazio. Consiste em uma lista de
traduções - cada linha não iniciando com um
"#" deve corresponder a um arquivo PO existente. Por ex.: se
LINGUAS contém um único arquivo, "fr", um
fr.po deve existir também no arquivo LINGUAS.
$ 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>
2018-05-27 | Ferramentas do Po4a |