Не вдається знайти локальний шлях для зберігання перекладів для файлу __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

Насправді ви можете налаштувати, де знаходиться папка локалів. У налаштуваннях.py додайте:

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

Потім створіть папку для кожної з мов, які потрібно перекласти:

mkdir -p website/locale/de

2
вам фактично не потрібно створювати папку для кожної з мов. demago-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

на випадок, якщо це не так.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.