2016-01-30 1 views
0

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

./manage.py makemessages --all 

... Джанго только создает .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 fi le, но не переменные шаблона или что-то, что я перевел с помощью 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 protected]>, 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 protected]>\n" 
"Language-Team: LANGUAGE <[email protected]>\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 "" 

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

+0

Каковы имена файлов в шаблонах? 'makemessages' ищет' * .py', '* .html' и' * .txt'. Он должен искать во всех подкаталогах текущего рабочего каталога. –

+0

Если файлы отображаются с 'ls ./**/*. {Html, txt, py}' (при условии, что ваша оболочка bash) все должно быть хорошо. –

+0

И чтобы убедиться, что gettext установлен, вы можете попробовать 'gettext -h'. –

ответ

0

Я, наконец, нашел «проблему». Мне пришлось зайти в каталог моего приложения django course, а затем запустить ../manage.py makemessages -l en и т. Д. Оттуда снова. Затем файлы были созданы, и все работало нормально. Документы Django не были действительно откровенными о том, что у меня есть cd в каждое приложение.

+0

Вы также можете запустить 'django-admin makemessages ...' вместо адресации' manage.py' в корневой папке – Don

Смежные вопросы