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”
Have you seen the Format class in babel? it kind of does what you are trying to do with those helpers.