Django复数天和小时的翻译不起作用

时间:2011-12-06 14:21:01

标签: python django localization translation

这是我的功能,用于显示延迟。延迟可以是正数(如果有延迟)或负数。该函数将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,试过你的“字符串” - 没有结果。

1 个答案:

答案 0 :(得分:2)

使用Django的内置timesince template filter(如果您需要模板中的此功能)或timesince中的django.utils.timesince功能,而不是推出自己的解决方案。这些将为您处理翻译。