Перевод названий месяцев и дней недели в шаблонах django

Я хотел бы напечатать названия дней и месяцев на выбранном в данный момент языке, но django продолжает отображать их на английском, даже если выбор языка работает нормально.

В моем шаблоне:

{{ LANGUAGE_CODE }}
{% localize on %}
  {{ day|date:"l" }}
{% endlocalize %}

В результате получается:

сегодня Пятница

Я ожидал:

это Венерди

Если я попытаюсь отобразить дату в формате по умолчанию, используя этот код: {{ day }} , формат даты корректно изменится в зависимости от выбранного языка, но названия дня или месяца по-прежнему не будут локализованы..

Так, например, если выбран английский, я получаю April 25th 2025, а если выбран итальянский, я получаю 25th April 2025. Формат даты другой, но апрель всегда указан на английском.

Как я могу перевести названия дней и месяцев?

Это мой settings.py:

USE_I18N = True
USE_L10N = True
USE_TZ = True

Если я правильно понял, то localize это не то, что вы хотите.

Вероятно, вам понадобится тег шаблона language.

Например, у меня это работает:

    {% load i18n %}
    {% language 'it' %}
    <div id='header'>{{ today|date:"l" }} </div>
    {% endlanguage 'it' %}

В результате я вижу:

<div id="header">Sabato </div>

Значение today - это дата и время:

{'today': datetime.now()}

Подробнее о теге шаблона language здесь:

https://docs.djangoproject.com/en/5.1/topics/i18n/translation/#switching-language-in-templates

Используйте django.utils.formats.date_format в своем шаблоне:

{% load l10n %}
{{ day|date_format:"l" }}  {# Outputs localized full weekday name #}
{{ day|date_format:"F" }}  {# Outputs localized full month name #}

При этом используется date_format Django, который соответствует текущему активному языку.

Проблема в том, что по какой-то причине, которую мне все еще нужно выяснить, файл default .po в env/lib/python3.9/site-packages/django/conf/locale/it/LC_MESSAGES был "поврежден" со всеми записями для названий дней вот так:

#~ msgid "Friday"
#~ msgstr "Venerdì"

Исправление файла .po путем переустановки django устранило проблему:

pip uninstall django
pip install django
Вернуться на верх