Форум сайта python.su
Задание:
Есть сайт и 2 перевода: uk (украинский) и en (английский).
Сделал 3 <img> в виде флагов этих стран и хочу, чтобы при клике на любой флаг текущая страница перегружалась снова, но уже на выбраном языке.
Кто-то такое уже делал? Какие есть идеи?
P.S. Наверное вопрос туповат, за что заранее извиняюсь.
Офлайн
Офлайн
Та я читал…
Без подключения ‘django.middleware.locale.LocaleMiddleware’, в MIDDLEWARE_CLASSES ничего не работало… Хотя в доках не написано, что это обязательно надо прописывать. Почему?
Офлайн
Почему не написано?
LocaleMiddleware tries to determine the user's language preference by following this algorithm:
…
Офлайн
Я просто переделал их метод для себя ….
from django.http import HttpResponseRedirect
from django.utils.translation import check_for_language
def set_language_get(request):
"""
Redirect to a given url while setting the chosen
language in the
session or cookie. The url and the language code
need to be
specified in the request parameters.
Since this view changes how the user will see the
rest of the site, it must
only be accessed as a GET request. If called as a
POST request, it will
redirect to the page in the request (the 'next'
parameter) without changing
any state.
"""
next = request.REQUEST.get('next', None)
if not next:
next = request.META.get('HTTP_REFERER',
None)
if not next:
next = '/'
response = HttpResponseRedirect(next)
if request.method == 'GET':
lang_code = request.GET.get('language', None)
if lang_code and check_for_language(lang_code):
if hasattr(request, 'session'):
request.session['django_language'] = lang_code
else:
response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang_code)
return response
from mysite.views import set_language_get
urlpatterns = patterns('',
(r'^lang/cur/', set_language_get),
)
<ul>
{% for lang in LANGUAGES %}
{% ifequal lang.0 LANGUAGE_CODE %}
<li><b>{{ lang.1 }}</b></li>
{% else %}
<li><a href="lang/cur/?language={{ lang.0 }}">{{ lang.1 }}</a></li>
{% endifequal%}
{% endfor %}
</ul>
Отредактировано (Июнь 18, 2010 15:58:45)
Офлайн