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

106

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

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

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

Антуан М.
источник

Ответы:

157

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

Антуан М.
источник
Спасибо, мне помогли. Просто выполните makemessagesкоманду из этого localeкаталога, если он уже доступен.
SaeX
4
В Django 1.9 вам нужно определить , LOCALE_PATHSдаже если он в localeпротивном случае скомпилированный текст не будет обнаруживаемым.
Wtower
Обратите внимание , что эта папка еще не имеет какого - либо «s», и что она должна быть в папке приложения (таким образом , вы не имеете любые LOCALE_PATHSдля настройки)
tobiasBora
28

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

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

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

mkdir -p website/locale/de
Дэвид Дехган
источник
2
на самом деле вам не нужно создавать папку для каждого из языков. django-admin makemessages сделает это за вас
MagicLAMP
Это сбивает с толку, мы должны создавать одну запись для каждого приложения? Или хранить все языковые стандарты для всех приложений в одной папке языковых стандартов?
Vadorequest
12

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

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

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

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

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

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

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

$ mkdir locale

в случае, если это не так.

jnns
источник