我如何本地化以获得像
这样的文章的时间的人性化输出今天
16时48
或
昨天
17:10
或
12月13日
11:20
from webapp2_extras.i18n import gettext as _
import datetime
from datetime import date, datetime, time
from babel.dates import format_date, format_datetime, format_time
from babel.numbers import format_number, format_decimal, format_percent
def datetimeformat_jinja(value, format='%H:%M / %d-%m-%Y', locale='en'):
now= datetime.now()
if datetime.date(value) == datetime.date(now):
info= _('Today')
elif (now - value).days < 2:
info= _('Yesterday')
else:
info=format_datetime(value, "MMMM dd", locale=locale)
return info+'<br>'+format_time(value, 'hh:mm', locale=locale)
使用上面的代码,我可以为实体显示人性化输出的时间进行过滤:
{{ entity.modified|datetimeformat_jinja(locale='pt_BR') }}
但是我如何本地化字符串“今天”和“昨天”以及如何从像Jan这样的babel而不是1月而不是2月获得abbrieviated表单当我知道哪个时候如何为这个项目添加时区?该实体在修改时所在的国家/地区?我有一个变量entity.url,告诉我自哪个域以来我的应用程序服务于多个域,所以它基本上只是时区,取决于entity.url(巴西时区和印度时区),我的基本本地化主要是针对巴西葡萄牙语和英语但它应该更有效,即它应该易于添加和语言并切换到一种语言。
感谢您对评论的任何回答
它现在正确呈现,但我不能直接从django的时间拿它,因为我还不能让时区工作。但现在剩下的唯一部分是时区,我想:
def datetimeformat_jinja(value, format='%H:%M / %d-%m-%Y', locale='en'):
now= datetime.now()
info = None
if datetime.date(value) == datetime.date(now):
info= _('Today')
elif (now - value).days < 2:
info= _('Yesterday')
else:
month = value.month
if month == 1:
info = str(value.day)+' '+_('Jan.')
elif month == 2:
info = str(value.day)+' '+_('Feb.')
elif month == 3:
info = str(value.day)+' '+_('Mar.')
elif month == 4:
info = str(value.day)+' '+_('April')
elif month == 5:
info = str(value.day)+' '+_('May')
elif month == 6:
info = str(value.day)+' '+_('June')
elif month == 7:
info = str(value.day)+' '+_('July')
elif month == 8:
info = str(value.day)+' '+_('Aug.')
elif month == 9:
info = str(value.day)+' '+_('Sep.')
elif month == 10:
info = str(value.day)+' '+_('Oct.')
elif month == 11:
info = str(value.day)+' '+_('Nov.')
else:
info = str(value.day)+' '+_('Dec.')
return info+'<br>'+format_time(value, 'hh:mm', locale=locale)
我必须像上面那样才能获得翻译的短片形式,例如Dez.对于巴西的Dezember葡萄牙语)现在它本地化更好:
以上是巴西葡萄牙语的本地化版本
答案 0 :(得分:2)
Django有一个很好的时间功能:
您可以根据自己的需要进行调整(可能需要删除翻译部分)。