django-cms: неправильный язык текущей страницы

У меня есть многоязычный сайт (it, en, ru), который использует django-cms с некоторыми приложениями, подключенными к разным страницам. моя проблема в том, что контент всегда подается на итальянском языке, даже если я посещаю страницы с префиксом «/en/» или «/ru/». В моем базовом шаблоне (base.html) у меня есть переменная шаблона {{ lang }}, которая позволяет мне получать текущие языки страниц, и все работало нормально... до сегодняшнего дня. Теперь, если я захожу на www.myhomepage/en (или /ru), значение 'lang' равно всегда «это».

Это настройки моих языков (cms, а не cms), а также другие настройки, связанные с языками:

LANGUAGE_CODE = 'it' 

DEFAULT_LANGUAGE = 0

LANGUAGES = (
    ('it', gettext(u'Italiano')),
    ('en', gettext(u'English')),
    ('ru', gettext(u'Russian')),     )                                                                                                                                                                  

CMS_LANGUAGES = (
    ('it', ugettext('Italian')),
    ('en', ugettext('English')),
    ('ru', ugettext('Russian')),
)

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

CMS_LANGUAGE_CONF = {
    'it': ['en'],
    'ru': ['en'],
    }  

CMS_HIDE_UNTRANSLATED = False

    MIDDLEWARE_CLASSES = (
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'cms.middleware.multilingual.MultilingualURLMiddleware',
     'cms.middleware.page.CurrentPageMiddleware',
     'cms.middleware.user.CurrentUserMiddleware',
     'cms.middleware.toolbar.ToolbarMiddleware',
     'django.middleware.common.CommonMiddleware',
     'django.contrib.sessions.middleware.SessionMiddleware',
     'django.middleware.csrf.CsrfViewMiddleware',
     'django.contrib.auth.middleware.AuthenticationMiddleware',
     'django.contrib.messages.middleware.MessageMiddleware',
     'cms.middleware.multilingual.MultilingualURLMiddleware',
     'cms.middleware.page.CurrentPageMiddleware',
     'cms.middleware.user.CurrentUserMiddleware',
     'debug_toolbar.middleware.DebugToolbarMiddleware',
     'cms.middleware.multilingual.MultilingualURLMiddleware',
     'cms.middleware.page.CurrentPageMiddleware',
     'cms.middleware.user.CurrentUserMiddleware',
     'cms.middleware.toolbar.ToolbarMiddleware'
)

Любая помощь? спасибо


person Luke    schedule 18.12.2012    source источник


Ответы (1)


У вас есть несколько промежуточных программ, которые повторяются в ваших настройках. Они должны выглядеть примерно так:

MIDDLEWARE_CLASSES = (
 'django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware',

 'cms.middleware.multilingual.MultilingualURLMiddleware',
 'cms.middleware.page.CurrentPageMiddleware',
 'cms.middleware.user.CurrentUserMiddleware',
 'cms.middleware.toolbar.ToolbarMiddleware',
)

Кроме того, можете ли вы также указать свои настройки CONTEXT_PROCESSOR?

Затем я предположил, что вы используете Django-cms ‹= 2.3.5. Это правильно? Существует бета-версия 2.4, которая избавляется от MultilingualMiddleware, если вы можете попробовать, подходит ли она вам (хотя это все еще бета-версия).

person Marc-Olivier Titeux    schedule 30.01.2013