gettext é uma biblioteca do Projeto GNU que faz a internacionalização de softwares, ou seja, a escrita de multiplas línguas em softwares, a mais recente versão disponível é a 0.22.4.

Processo de trabalho do GNU gettext

Programação editar

O código fonte é primeiro modificado para as chamadas do GNU gettext. Isto é, para a maioria das linguagens de programação, é feito uma encapsulação das strings e o gettext irá chamar qual strings o usuário irá visualizar. Esta função é usualmente modificada para _ (underline), veja por exemplo o código em C:

printf(gettext("My name is %s.\n"), my_name);

é escrito assim:

printf(_("My name is %s.\n"), my_name);

Outras linguagens também possuem a funcionalidade do gettext como: C++, Objective-C, shell script, bash, LISP, Smalltalk, Java, awk, Pascal, wxWidgets, Tcl, Perl, PHP, Ruby e outras mais.

Tradução editar

Para a tradução da string é necessário junto ao programa um arquivo com extensão .po, ou um template, que contenha uma lista de todas as frases e palavras que precisam ser traduzidas no código fonte. Dentro do arquivo .po de um programa escrito em C é necessário conter:

#: src/name.c:36
msgid "My name is %s.\n"
msgstr "Meu nome é %s.\n."

Em um software que contenha várias linguagens de programação, as mensagens de tradução funcionam normalmente, basta somente referenciar o nome do arquivo fonte e a linha.

Funcionamento editar

Para a tradução das frases da língua nativa do programa para a língua que deseja traduzir é necessário um programa que edite arquivos .po e depois de traduzidas as mensagens é necessário ter um compilador para gerar o arquivo .mo, os programas mais comuns são o Kbabel para KDE e Poedit que é multiplataforma, estes programas fazem com que as strings de tradução estejam alinhadas no arquivo, facilitando a localização das frases que não foram traduzidas ou com tradução incompletas e também podem compilar o arquivo "po" e gerar o arquivo "mo".

Para gerar o arquivo .po a partir dos arquivos de código:

xgettext -o lang/template.po glade/*.glade lib/program/Main.c

e para compilar o arquivo de tradução .po para .mo digite:

msgfmt minha_traducao.po -o minha_traducao.mo

Veja também editar

Ligações externas editar