Django - Adicionando traduções as suas app's

Posted on Sáb 12 janeiro 2013 in Python

Para criar as traduções para as aplicações basta:

Acessar o diretorio da app:

$ cd <app>

Criar um diretório "/locale":

$ mkdir locale

Rodar o comando que lista as strings a serem traduzidas, repare que o nome do locale é "pt_BR".

Obs: o locale deve seguir a mesma convenção dos locales utilizados na tradução do Django...nada de "pt-br" ou "pt-BR".

$ django-admin.py makemessages -a -l pt_BR

Editar o arquivo .po gerado nesse diretório com as strings traduzidas e o header conforme o exemplo abaixo:

# This file is distributed under WTFPL license.
#
# Translators:
# RPB , 2013.
msgid ""
msgstr ""
"Project-Id-Version: Bibliography\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-01-12 18:11-0200\n"
"PO-Revision-Date: 2013-01-12 18:11-0200\n"
"Last-Translator: RPB \n"
"Language-Team: Portuguese (Brazil) \n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"

Uma vez finalizado é necessário compilar as traduções

$ django-admin.py compilemessages

Dessa forma, com o diretório locale na raiz da app o Django registra as traduções automaticamente. As traduções podem ser inseridas em qualquer parte de sua aplicação, mas nesse caso precisam ser registradas no settings.py via LOCALE_PATHS.