Categorias
Programação Python

Turbogears 2 + i18n + formatação de datas e números

Para setar a linguagem padrão da sua aplicação utilizando o turbogears basta editar o arquivo development.ini e incluir a seguinte linha após [app:main]:

lang = pt_BR

Depois execute os seguintes comandos:

python setup.py extract_messages
python setup.py init_catalog -l pt_BR
python setup.py compile_catalog

O primeiro comando extrai todas as mensages que devem ser traduzidas (dos templates e dos códigos python). O segundo comando cria um arquivo de tradução para a linguagem pt_BR. Após esse passo, você deve editar o arquivo gerado para traduzir as mensagens. O terceiro comando compila as mensagens traduzidas.

Agora para formatar datas e números no formato da linguagem padrão (ou da linguagem selecionada pelo usuário) basta criar o arquivo lib/i18nHelpers.py:

import tg.i18n
import babel.numbers
import babel.dates

__all__ = ["format_currency", "format_datetime"]

def get_lang(lang):
    if lang:
        return lang
    return tg.i18n.get_lang()[0]

def format_currency(number, currency = "", locale = None, *args, **kargs):
    return babel.numbers.format_currency(number, currency, locale = get_lang(locale), *args, **kargs)

def format_datetime(datetime, *args, **kargs):
    return babel.dates.format_datetime(datetime, locale = get_lang(locale), *args, **kargs)

E importar essas funções no arquivo lib/helpers.py.

No seu template basta fazer algo assim:

R$ ${h.format_currency(xyz.valor)}

Não mapei todas as funções que o Babel disponibiliza, mas basta fazer como foi feito com essas duas funções.

Uma resposta em “Turbogears 2 + i18n + formatação de datas e números”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.