Блог Евгения Морозова

gettext

Если вы разрабатываете сайт на языке не поддерживаемом Django, то можете столкнуться с подобной ошибкой:

  File "/home/user/.virtualenvs/laos/lib/python3.7/site-packages/django/utils/translation/trans_real.py", line 102, in __init__
    raise IOError("No translation files found for default language %s." % settings.LANGUAGE_CODE)
OSError: No translation files found for default language lo.

Язык в settings.py определён правильно, ошибка довольно загадочная, и поиск не даёт разумных результатов.

Если попытаться скомпилировать переводы командой compilemessages, то она естественно не выполняется с той же самой ошибкой.

Самый простой способ обхода: перейти в каталог с переводами для данного языка и скомпилировать переводы вручную:

cd locale/lo/LC_MESSAGES
msgfmt -o django.mo django.po
msgfmt -o djangojs.mo djangojs.po

Более простой и быстрый вариант: временно поменять язык по умолчанию на en, выполнить compilemessages, поменять язык обратно.

Наверное надо создать соответствующий баг в трекере Django, если дойдут руки, дополню пост.

#django #python #gettext