Question

I have a multilanguage site (it, en, ru) that use django-cms with some apps hooked on various page. my problem is that the content is always served in italian, even if i visit pages with '/en/' or '/ru/' as prefix. On my base template (base.html) i have a {{ lang }} template variable that allow me to retrieve current page languages, and it worked fine...till today. Now if i visit wwww.myhomepage/en (or /ru), the value of 'lang' is always 'it'.

These are mine languages settings (cms and not cms) and also other settings related with languages:

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'
)

ANY help? Thanx

Was it helpful?

Solution

You have several middleware that repeated inside your settings. They should look something like this:

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',
)

Plus, can you give your CONTEXT_PROCESSOR settings as well?

Then, I assumed you are using Django-cms <= 2.3.5. Is this right? There is a 2.4 beta that is getting rid of MultilingualMiddleware, if you can try if it fits to you (even though it is a beta still).

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top