Я пытаюсь интернационализировать приложение 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 <[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 ""
Кто-нибудь может сказать, что мне не хватает? Приложение работает нормально, все шаблоны находятся во время выполнения. Большое спасибо.
makemessages
ищет*.py
,*.html
и*.txt
. Он должен искать во всех подкаталогах текущего рабочего каталога. - person Håken Lid   schedule 31.01.2016ls ./**/*.{html,txt,py}
(при условии, что ваша оболочка bash), все должно быть в порядке. - person Håken Lid   schedule 31.01.2016gettext -h
. - person Håken Lid   schedule 31.01.2016ls ./**/*.{html,txt,py}
. Я запустил его на уровнеmanage.py
. В нем перечислены файлы внутри папокmyproject/myproject/course
иmyproject/myproject/myproject
. Поскольку шаблоны находятся вmyproject/myproject/course/templates/course
, они не отображаются. Также у меня есть переводы вmyproject/myproject/course/views.py
, которые не учитываются при запускеmakemessages
. А идеи? Моя структура папок неверна? Тем не менее, я следовал руководствам по django. - person Chris   schedule 31.01.2016