Django множественный перевод дней и часов не работает - PullRequest
0 голосов
/ 06 декабря 2011

Вот моя функция, которую я использую для отображения задержек.Задержки могут быть положительными (если есть задержка) или отрицательными.Эта функция принимает в качестве аргумента 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, пробовал "строку" - безрезультатно.

1 Ответ

2 голосов
/ 06 декабря 2011

Вместо развертывания собственного решения используйте встроенный в Django timesince шаблон фильтра (если вам нужна эта функция в шаблоне) или timesince функция в django.utils.timesince.Они будут обрабатывать перевод для вас.

...