Команда Django makemessage не обрабатывает приложение

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

./manage.py makemessages --all

... django создает только файл.po, который содержит переводы моих settings.py (см. ниже). Он полностью игнорирует все, что находится внутри моего приложения и его шаблонов.

Это моя файловая структура:

myproject
  |- myproject
      |- course
          |- templates
          |- static
          |- ...
          |- apps.py
          |- models.py
          |- views.py
          |- ...
      |- locale
      |- myproject
          |- settings.py
          |- ...
      |- manage.py

Мой файл настроек выглядит так:

from django.utils.translation import ugettext_lazy as _

...

INSTALLED_APPS = [
     ...
     'course.apps.CourseConfig',
]

MIDDLEWARE_CLASSES = [
    ...
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    ...
]

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [],
        'APP_DIRS': False,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.i18n',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'CET'
USE_I18N = True
USE_L10N = True
USE_TZ = True


LANGUAGES = [
    ('en', _('English')),
    ('kr', _('Korean')),
    ('cn', _('Chinese')),
    ('pt', _('Portuguese')),
]

LOCALE_PATHS = (
    os.path.join(BASE_DIR, 'locale'),
)

Мои шаблоны содержат перевод текста:

{% extends "course/base.html" %}

{% load i18n %}    
{% trans "Back to modules" %}
...

Если я запускаю команду "makemessages", единственное, что включается в файл.po, - это имена языков в файле settings.py, но не переменные шаблона или что-то, что я перевел с помощью ugettext в представлении.

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-01-30 20:25+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: myproject/settings.py:146
msgid "English"
msgstr ""

#: myproject/settings.py:147
msgid "Korean"
msgstr ""

#: myproject/settings.py:148
msgid "Chinese"
msgstr ""

#: myproject/settings.py:149
msgid "Portuguese"
msgstr ""

Кто-нибудь может сказать, что мне не хватает? Приложение работает отлично, все шаблоны находятся во время выполнения. Большое спасибо.

1 ответ

Я наконец нашел "проблему". Я должен был пойти в каталог моего приложения Django course а потом беги ../manage.py makemessages -l enи т.д. оттуда снова. Затем файлы были созданы, и все работало просто отлично. В Django docs не было откровенно обо мне необходимости cd в мое каждое приложение.

Другие вопросы по тегам