{"id":40,"date":"2009-10-23T08:39:21","date_gmt":"2009-10-23T11:39:21","guid":{"rendered":"http:\/\/www.fnbrandao.com.br\/blog\/2009\/10\/turbogears-2-i18n-formatacao-de-datas-e-numeros\/"},"modified":"2009-10-23T08:39:21","modified_gmt":"2009-10-23T11:39:21","slug":"turbogears-2-i18n-formatacao-de-datas-e-numeros","status":"publish","type":"post","link":"https:\/\/www.fnbrandao.com.br\/blog\/2009\/10\/turbogears-2-i18n-formatacao-de-datas-e-numeros\/","title":{"rendered":"Turbogears 2 + i18n + formata\u00e7\u00e3o de datas e n\u00fameros"},"content":{"rendered":"<p>Para setar a linguagem padr\u00e3o da sua aplica\u00e7\u00e3o utilizando o turbogears basta editar o arquivo <em>development.ini<\/em> e incluir a seguinte linha ap\u00f3s <em>[app:main]<\/em>:<\/p>\n<p><code><\/p>\n<pre>lang = pt_BR<\/pre>\n<p><\/code><\/p>\n<p>Depois execute os seguintes comandos:<\/p>\n<p><code><\/p>\n<pre>python setup.py extract_messages\r\npython setup.py init_catalog -l pt_BR\r\npython setup.py compile_catalog<\/pre>\n<p><\/code><\/p>\n<p>O primeiro comando extrai todas as mensages que devem ser traduzidas (dos templates e dos c\u00f3digos python). O segundo comando cria um arquivo de tradu\u00e7\u00e3o para a linguagem pt_BR. Ap\u00f3s esse passo, voc\u00ea deve editar o arquivo gerado para traduzir as mensagens. O terceiro comando compila as mensagens traduzidas.<\/p>\n<p>Agora para formatar datas e n\u00fameros no formato da linguagem padr\u00e3o (ou da linguagem selecionada pelo usu\u00e1rio) basta criar o arquivo <em>lib\/i18nHelpers.py<\/em>:<\/p>\n<p><code><\/p>\n<pre>import tg.i18n\r\nimport babel.numbers\r\nimport babel.dates\r\n\r\n__all__ = [\"format_currency\", \"format_datetime\"]\r\n\r\ndef get_lang(lang):\r\n    if lang:\r\n        return lang\r\n    return tg.i18n.get_lang()[0]\r\n\r\ndef format_currency(number, currency = \"\", locale = None, *args, **kargs):\r\n    return babel.numbers.format_currency(number, currency, locale = get_lang(locale), *args, **kargs)\r\n\r\ndef format_datetime(datetime, *args, **kargs):\r\n    return babel.dates.format_datetime(datetime, locale = get_lang(locale), *args, **kargs)<\/pre>\n<p><\/code><\/p>\n<p>E importar essas fun\u00e7\u00f5es no arquivo <em>lib\/helpers.py<\/em>.<\/p>\n<p>No seu template basta fazer algo assim:<\/p>\n<p><code><\/p>\n<pre>R$ ${h.format_currency(xyz.valor)}<\/pre>\n<p><\/code><\/p>\n<p>N\u00e3o mapei todas as fun\u00e7\u00f5es que o Babel disponibiliza, mas basta fazer como foi feito com essas duas fun\u00e7\u00f5es.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Para setar a linguagem padr\u00e3o da sua aplica\u00e7\u00e3o utilizando o turbogears basta editar o arquivo development.ini e incluir a seguinte linha ap\u00f3s [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 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3,96],"tags":[103,101,102,100,37,97],"class_list":["post-40","post","type-post","status-publish","format-standard","hentry","category-programacao","category-python-programacao","tag-babel","tag-formatacao-datas","tag-formatacao-numeros","tag-i18n","tag-locale","tag-turbogears"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/posts\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":0,"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/posts\/40\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/media?parent=40"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/categories?post=40"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.fnbrandao.com.br\/blog\/wp-json\/wp\/v2\/tags?post=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}