这是我的功能,用于显示延迟。延迟可以是正数(如果有延迟)或负数。该函数将timedelta作为参数。
def delta_string(delta):
days = delta.days
hours = delta.seconds/3600
if days < 0 and hours > 0:
days = days + 1
hours = 24 - hours
days_string = ungettext("%(day)s day","%(day)s days", abs(days)) % {'day': days}
hours_string = ungettext("%(hour)s hour","%(hour)s hours", hours) % {'hour': hours}
return "%s, %s" % (days_string, hours_string)
当然,所有字符串都在po文件中翻译(并编译)。然而,结果很奇怪 - 有时翻译是正确的,有时不是。例子:
35天,9小时; -4 dni,1 godzina; 0天,11小时; 19天,13 小时; 34 dni,9小时; -1dzień,6小时; -1dzień,2 godzin; -5 天,4 godzin; 3 dni,19小时
等等。上面的整个输出显示在同一页面上。可能有什么问题?我也尝试了ungettext_lazy,试过你的“字符串” - 没有结果。
答案 0 :(得分:2)
使用Django的内置timesince
template filter(如果您需要模板中的此功能)或timesince
中的django.utils.timesince
功能,而不是推出自己的解决方案。这些将为您处理翻译。