Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Почему в шаблоне request.LANGUAGE_CODE не определен? [RSS Feed]

#1 Ноя. 20, 2009 16:59:33

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

Почему в шаблоне request.LANGUAGE_CODE не определен?

Nick2009
По данной проблеме никак, т.к. не понятно какие ошибки и где искать.
Так не ошибки надо искать, а понять почему работает так, а не иначе. Взять питонячий отладчик например и пройтись по коду. Да даже просто код почитать. Потом можно посмотреть какие заголовки отпраляет клиент и т.п.

Я конечно понимаю, что спамить все тематические форумы проще, но всё-таки.

Nick2009
Только документацию и гугл читал.
И что пишут?

http://docs.djangoproject.com/en/dev/topics/i18n/#id2

Там написано, что LANGUAGE_CODE это фолбек, если не указано ничего другого. Указано может быть (если мидлварь включена) в сессии, куке или заголовке. Соотвественно, если где-то там находится значение, то оно и применяется.

Смотрите в этом направлении.

PS: что такое DEFAULT_LANGUAGE = 2 ?



Офлайн

#2 Ноя. 20, 2009 17:23:22

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему в шаблоне request.LANGUAGE_CODE не определен?

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/#id2
MIDDLEWARE_CLASSES = (
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
)
или этот: http://www.djbook.ru/ch18s04.html
MIDDLEWARE_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
и он равен номеру языка.



Отредактировано (Ноя. 20, 2009 17:49:03)

Офлайн

#3 Ноя. 20, 2009 18:01:08

Nick2009
От:
Зарегистрирован: 2009-06-24
Сообщения: 161
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему в шаблоне request.LANGUAGE_CODE не определен?

Всё разобрался. Спасибо за наводку.



Офлайн

  • Начало
  • » Django
  • » Почему в шаблоне request.LANGUAGE_CODE не определен?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version