Django不工作日和时间的复数翻译

2024-07-04 07:35:21 发布

您现在位置:Python中文网/ 问答频道 /正文

这是我的函数,用来显示延迟。延迟可以是正的(如果有延迟)也可以是负的。此函数以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 days, 9 hours; -4 dni, 1 godzina; 0 days, 11 hours; 19 days, 13 hours; 34 dni, 9 hours; -1 dzień, 6 hours; -1 dzień, 2 godzin; -5 days, 4 godzin; 3 dni, 19 hours

等等。上面的所有输出都显示在同一页上。可能出了什么问题?我也试过ungettext_lazy,试过u“string”-没有结果。在


Tags: 函数参数stringdefdaystimedeltadeltaseconds
1条回答
网友
1楼 · 发布于 2024-07-04 07:35:21

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

相关问题 更多 >

    热门问题