Esse pequeno exemplo foi escrito tomando como base o tutorial em [1] e a documentação oficial dos módulos gettext[2] e locale[3].
Para usar a internacionalização (i18n) em seus programas
Python é preciso ter o módulos gettext e locale instalados.
Os módulos msgfmt e pygettext serão utilizados para a geração dos arquivos de tradução e se encontram no Subdiretório "Tools\i18n" da instalação do Python.
Para exemplo vamos escrever o "Hello Word!!!" para testar a internacionalização. A linha abaixo será salva no arquivo "hello.py".
print "Hello Word!!!"
Para internacionalizar seus programas em Python são necessários 4 passos básicos: alteração do seu programa para possuir strings candidatas a serem traduzidas, criar o arquivo de tradução em formato de texto, gerar o arquivo de tradução "compilado" e instalar a tradução no seu programa.
1) Alteração do seu programa para possuir strings candidatas a serem traduzidas
Altere a linha do arquivo "hello.py" para ficar como a linha abaixo:
print _("Hello Word!!!")
Se você executar o arquivo "hello.py" receberá um erro, pois o nome _ não está definido, posteriormente definiremos esse nome.
2) Criar o arquivo de tradução em formato de texto
Crie um arquivo de texto com qualquer nome, nesse exemplo vou denominar o arquivo como "translate.po", a extenão .po é necessária para que o módulo msgfmt reconheça esse arquivo. Coloque nesse arquivo as linhas abaixo:
msgid "Hello Word!!!"
msgstr "Alô Mundo!!!"
O msgid é a linha que será candidata a tradução, a linha msgstr será a tradução corresponde a string "Hello Word!!!".
3) Gerar o arquivo de tradução "compilado"
No diretório onde foi salvo o arquivo "translate.po" execute "msgfmt.py translate.po" e será gerado um arquivo denominado "translate.mo", que é um arquivo "compilado" correspondente ao "translate.po". O arquivo "translate.mo" deverá ser salvo no subdiretório "locale\pt_BR\LC_MESSAGES" dentro do diretório que se encontra o arquivo "hello.py".
4) Instalar a tradução no seu programa
Nesse passo é que usaremos o módulo gettext, que é o responsável por conseguir traduzir nossas strings. Altere o arquivo "hello.py" para ficar com as seguintes linhas:
import gettext
nameFileTraduction = 'translate' # nome do arquivo de tradução
namefolderLocationFileTraduction = 'locale' # localização inicial do arquivo de tradução, a localização completa é locale\pt_BR\LC_MESSAGES
language = gettext.translation(nameFileTraduction, namefolderLocationFileTraduction, languages=["pt_BR"])
language.install() # instalação da Linguagem requerida
_ = language.gettext # renomeando o gettext para _
print _("Hello World!!!") # O seu programa continua basicamento o mesmo
Agora execute seu programa e veja ele vai imprimir "Alô Mundo!!!".
O módulo pygettext é utilizado para gerar os arquivos de tradução em formato de texto, como no passo 2, o módulo pygettext percorre todo o módulo passado como parâmetro é gera a estrutura msgid e msgstr para todas as strings que estiverem no formato _("String a ser traduzida").
[1]
http://softwarelivre.org/furusho/blog/python-internacionalizacao-no-windows
[2]
http://docs.python.org/library/gettext
[3]
http://docs.python.org/library/locale