Вот моя функция, которую я использую для отображения задержек.Задержки могут быть положительными (если есть задержка) или отрицательными.Эта функция принимает в качестве аргумента 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 дня, 1 годзина;0 дней, 11 часов;19 дней, 13 часов;34 дня, 9 часов;-1 дзень, 6 часов;-1 дзень, 2 годзина;-5 дней, 4 годзина;3 дня, 19 часов
и так далее.Весь вышеприведенный вывод отображается на той же странице.Что может быть не так?Я также пробовал ungettext_lazy, пробовал "строку" - безрезультатно.