Перевод Django для uz-вместо cyrl возвращает uz

Я настроил свои языки django следующим образом

import os

from django.utils.translation import gettext_lazy as \_

from config.settings.base import BASE_DIR

LANGUAGE_CODE = "en"
USE_I18N = True

LANGUAGES = (
("uz", _("Uzbek")),
("uz-cyrl", _("Cyrillic")),
("ru", _("Russian")),
("en", _("English")),
("ar", _("Arabic")),
)

LOCALE_PATHS = [os.path.join(BASE_DIR, "locale")]

Я перевел тексты во всех po-файлах и скомпилировал их. На локальном сервере запуска он работает с Accept-Language: uz-cyrl должным образом, но через docker-compose он возвращает перевод uz, в чем может быть причина?

Я использовал разные базовые образы docker, такие как python3.11-slim, сам python3.11, но это не сработало.

Наконец-то я нашел причину. Когда я выполняю

python manage.py makemessages -l uz-cyrl

Это выглядит как

неверный языковой стандарт uz-cyrl, вы имели в виду uz_CYrl?

итак, я выполняю

python manage.py makemessages -l uz_CYrl

и он создал папку uz_CYrl внутри папки locale, она работает в Windows и Mac локально, но в docker-compose запускаемый проект возвращает uz перевод вместо uz-cyrl всегда.

Когда я выполняю команду makemessages внутри контейнера, и она вызывает разные

неверный языковой стандарт uz-cyrl, вы имели в виду uz_Cyrl?

Итак, я изменил название папки с uz_CYrl на uz_Cyrl, и это работает как локально, так и через docker-compose.

Итак, я понимаю, что uz-cyrперевод l .po и .mo файлы должны находиться в папке uz_Cyrl, а не в папке uz_CYrl.

Вернуться на верх