Django天数和小时的复数翻译无效
这是我用来显示延迟的一个函数。延迟可以是正数(表示有延迟)或负数。这个函数接受一个时间差作为参数。
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天,1小时;0天,11小时;19天,13小时;34天,9小时;-1天,6小时;-1天,2小时;-5天,4小时;3天,19小时
等等。上面的所有输出都是在同一页面上显示的。可能出什么问题了呢?我也尝试过ungettext_lazy,还试过u"字符串"——但没有结果。
1 个回答
2
与其自己去做一个解决方案,不如直接使用Django自带的timesince
模板过滤器(如果你需要在模板中使用这个功能)或者在django.utils.timesince
里的timesince
函数。这些工具会帮你处理翻译的问题。