Уведомления

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

#1 Сен. 8, 2009 17:35:39

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

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

Вызываю по очереди шаблоны унаследованные от базового и имеющие одинаковые блоки. Представления разные, но там ничего с request.LANGUAGE_CODE не делается. В одном шаблоне он возвращает ‘ru’, в другом возвращает пустую строку, переключаюсь на первую, опять ‘ru’. При переключении никаких параметров или действий для изменения языка не делается.

Если же в первой странице попытаться устанавливать язык через GET запрос - /i18n/setlang/?language=en
то ничего не происходит, request.LANGUAGE_CODE не меняется с ‘ru’ на ‘en’

Урл стандартный
(r'^i18n/', include('django.conf.urls.i18n')),




тэкс…

1)контекст процессор добавил - ‘django.core.context_processors.request’,

2)параметр RequestContext во все render_to_response добавил
render_to_response(“index.html”, locals(),context_instance=RequestContext(request))

3), import сделал.
from django.template.context import RequestContext

Вообще ничего не изменилось. Что еще забыл?



Отредактировано (Сен. 8, 2009 18:45:38)

Офлайн

#2 Сен. 8, 2009 18:45:10

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

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

/i18n/setlang/?language=en делать надо через post запрос, смотри сорцы
'django.middleware.locale.LocaleMiddleware' подключил?

Офлайн

#3 Сен. 8, 2009 18:50:52

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

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

slav0nic
/i18n/setlang/?language=en делать надо через post запрос, смотри сорцы
'django.middleware.locale.LocaleMiddleware' подключил?
Вот тут http://djbook.ru/ch18s05.html пишут, что GET должен быть, опять врут. Эх через POST немного больше писать придется.

TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.auth',
'django.core.context_processors.debug',
'django.core.context_processors.i18n',
'django.core.context_processors.request',
'multilingual.context_processors.multilingual',
)

MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.locale.LocaleMiddleware',
'multilingual.middleware.DefaultLanguageMiddleware',
)



Офлайн

#4 Сен. 8, 2009 19:04:51

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

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

slav0nic
/i18n/setlang/?language=en делать надо через post запрос, смотри сорцы
Спасибо! POST работает. Теперь на первой странице языки переключаются. Эта часть вопроса решена.

Но, когда я перехожу на вторую страницу request.LANGUAGE_CODE становится неопределенным (пустая строка) и языки не переключаются и при переходе на любую другую страницу тоже самое.

Отличие между страницами только в урлах и HTML.
Урл работающей страницы index.html - ‘^$’

у остальных /blabla/bla/1/2/3/



Отредактировано (Сен. 8, 2009 19:38:16)

Офлайн

#5 Сен. 8, 2009 19:35:47

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

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

RequestContext передаётся в той вьюхе? в доках же написано

If you don't use the RequestContext extension, you can get those values with three tags:

{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_current_language_bidi as LANGUAGE_BIDI %}

Офлайн

#6 Сен. 8, 2009 19:49:41

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

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

slav0nic
RequestContext передаётся в той вьюхе? в доках же написано
If you don't use the RequestContext extension, you can get those values with three tags:
Это я читал.
В первом сообщении я добавил, что во все вьюхи я добавил RequestContext, но это не помогло.
request.LANGUAGE_CODE тоже взято из док, наверное тоже неправильных, т.к. помогли эти тэги
{% get_current_language as LANGUAGE_CODE %}
{% get_available_languages as LANGUAGES %}
{% get_current_language_bidi as LANGUAGE_BIDI %}
которые я не стал использовать т.к. юзаю RequestContext extension.

Спасибо огромное! В общем, проблему победили, но почему оно так происходит, я не понял.



Отредактировано (Сен. 8, 2009 19:55:31)

Офлайн

#7 Ноя. 19, 2009 13:49:24

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

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

И снова непонятки. Не воспринимаются установки settings по умолчанию.

LANGUAGES = (
('en', _('English')),
('ru', _('Russian')),
)

DEFAULT_LANGUAGE = 2
LANGUAGE_CODE = 'ru'
Однако, во вьюхе для index.htm:
def index(request):
print request.LANGUAGE_CODE
равно ‘en’

При выборе языка вручную(<form name=“FormSetLanguage” action=“/i18n/setlang/” method=“post” >) на данной странице, те же самые установки устанавливаются правильно.
translation.activate(request.LANGUAGE_CODE)
Попробовал принудительно в urs.py устанавливливать язык по умолчанию, не прокатило
urls.py
from django.conf import settings
from django.conf.urls.defaults import *
from django.utils import translation
translation.activate(settings.LANGUAGE_CODE)
Хотя settings.LANGUAGE_CODE равен ‘ru’ во вьюхе всё равно ‘en’, пока явно в запросе не инициализирую этот параметр при выборе языка.

И самое неприятное, во всем этом то, что при перелогине, по истечении времени жизни сессии, страница с логином опять ‘en’, хотя в сессии был ‘ru’. Естественно, при перелогине настройки языка из-за этого сбиваются.

При первом входе на домашнюю страницу язык должен быть установлен согласно settings.LANGUAGE_CODE.

Почему не воспринимаются настройки settings по умолчанию и почему они сбиваются по истечении времени жизни сессии?!



Отредактировано (Ноя. 20, 2009 15:47:01)

Офлайн

#8 Ноя. 20, 2009 13:22:03

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

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

? :( Пепельницу вытряхивал, стекла протирал, ничего не помогает…



Отредактировано (Ноя. 20, 2009 14:33:25)

Офлайн

#9 Ноя. 20, 2009 16:07:18

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

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

Как вы проводили отладку? Какие были результаты? Какое окружение?



Офлайн

#10 Ноя. 20, 2009 16:31:26

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

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

Daevaorn
Как вы проводили отладку? Какие были результаты? Какое окружение?
По данной проблеме никак, т.к. не понятно какие ошибки и где искать. Только документацию и гугл читал. Дефолтная настройка устанавливается фреймворком на основе settings. Окружение? Что имеется в виду? Windows, свежий Django, Chery, Python 2.5
Чем отлаживать такого рода неошибки ?

Вставил сейчас явную ошибку в код. Посмотрел состояние переменных. Там всё нормально. Текста много, что именно нужно, могу сообщить.



Отредактировано (Ноя. 20, 2009 16:53:13)

Офлайн

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

Board footer

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

Powered by DjangoBB

Lo-Fi Version