I have configured my django LANGUAGES like
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")]
I have translated texts in all .po files and compiled them. In local runserver it works with Accept-Language: uz-cyrl properly, but through docker-compose it returns uz translation instead, what might be the reason?
I have used different base docker images like python3.11-slim, python3.11 itself but not worked.
Finally, I found the reason. When I execute
python manage.py makemessages -l uz-cyrl
It raise like
invalid locale uz-cyrl, did you mean uz_CYrl?
so I execute
python manage.py makemessages -l uz_CYrl
and it created uz_CYrl folder inside locale folder, it works in Windows and Mac locally but in docker-compose running project returns uz translation instead of uz-cyrl always.
When I execute makemessages command inside container and it raise different
invalid locale uz-cyrl, did you mean uz_Cyrl?
So I changed folder name from uz_CYrl to uz_Cyrl and it works both local and through docker-compose also.
So I understand that uz-cyrl translation .po and .mo files should be inside uz_Cyrl folder not uz_CYrl.