Не удалось найти путь к языку для хранения переводов для файла __init__.py

Я пытаюсь перевести приложение Django. Я создал несколько строк с {% trans %} в моих шаблонах. Однако, когда я выполняю следующую команду в моей папке приложения, я получаю сообщение об ошибке:

$ django-admin.py makemessages -l fr 
CommandError: Unable to find a locale path to store translations for file __init__.py`

Что я сделал не так?

Ответ 1

Оказывается, вам нужно создать locale папку первого использования mkdir locale. Если вы запускаете команду из папки приложения, вам нужна папка locale в этой папке приложения.

Ответ 2

На самом деле вы можете настроить, где находится папка локали. В файле settings.py добавьте:

LOCALE_PATHS = (
    PROJECT_ROOT + '/website/locale', )

Затем создайте папку для каждого из языков, которые вы хотите перевести:

mkdir -p website/locale/de

Ответ 3

Проблема заключается в том, что команда не запускается из каталога приложения, а из каталога проекта. Этот фрагмент из документов объясняет это:

Оказывается, вам нужно сначала создать папку locale, используя mkdir locale.

./manage.py makemessages [...] Запускает все дерево исходных текстов текущего каталога и вытаскивает все строки, помеченные для перевода. Он создает (или обновляет) файл сообщения в каталоге conf/locale (в дереве Django) или локали (для проекта и приложения).

Итак, вы либо запускаете команду из каталога приложения:

$ cd app
$ django-admin makemessages -l <locale>

... или вы определяете каталог с широким локали проекта с помощью LOCALE_PATHS, и вы можете запустить makemessages из основного каталога там.

В любом случае, вы должны убедиться, что каталог ./locale/ присутствует и создать его с помощью

$ mkdir locale

если это не так.