Daevaorn
Так не ошибки надо искать, а понять почему работает так, а не иначе. Взять питонячий отладчик например и пройтись по коду. Да даже просто код почитать. Потом можно посмотреть какие заголовки отпраляет клиент и т.п.
Клиент отправляет ‘en’, хотя интерфейс русский. Как сделать, чтобы при Первом входе от этого не зависел язык по умолчанию?
Если верить отчету Django, списке переменных request отсутсвует LANGUAGE_CODE.
Однако …
if request.LANGUAGE_CODE: # он там есть
translation.activate(request.LANGUAGE_CODE) # причем = ‘en’
else:
translation.activate(settings.LANGUAGE_CODE) # а не ‘ru’
Daevaorn
Там написано, что LANGUAGE_CODE это фолбек, если не указано ничего другого. Указано может быть (если мидлварь включена) в сессии, куке или заголовке. Соотвественно, если где-то там находится значение, то оно и применяется.
Кэш браузера очищен, сессии еще нет, точнее есть та что по дефолту, куки по дефолту. Это первый вход на домашнюю страницу без авторизации. Допустим, нас интересует только значение LANGUAGE_CODE в шаблоне. RequestContext передается. Какой порядок правильный в данном случае?
Этот:
http://docs.djangoproject.com/en/dev/topics/i18n/#id2MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
)
или этот:
http://www.djbook.ru/ch18s04.htmlMIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware'
)
Или такой:
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'multilingual.middleware.DefaultLanguageMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.locale.LocaleMiddleware',
)
Я всяко пробовал.
Daevaorn
PS: что такое DEFAULT_LANGUAGE = 2 ?
Пробовал DEFAULT_LANGUAGE = ‘ru’, одинаково.
Вообще, это параметр django_multilingual
и он равен номеру языка.