Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 29, 2009 19:23:54

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование i18n

Задание:
Есть сайт и 2 перевода: uk (украинский) и en (английский).
Сделал 3 <img> в виде флагов этих стран и хочу, чтобы при клике на любой флаг текущая страница перегружалась снова, но уже на выбраном языке.

Кто-то такое уже делал? Какие есть идеи?

P.S. Наверное вопрос туповат, за что заранее извиняюсь.



Офлайн

#2 Сен. 29, 2009 19:30:08

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Использование i18n

Офлайн

#3 Сен. 30, 2009 01:34:22

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование i18n

Та я читал…
Без подключения ‘django.middleware.locale.LocaleMiddleware’, в MIDDLEWARE_CLASSES ничего не работало… Хотя в доках не написано, что это обязательно надо прописывать. Почему?



Офлайн

#4 Сен. 30, 2009 19:28:28

Ferroman
От:
Зарегистрирован: 2006-11-16
Сообщения: 2759
Репутация: +  1  -
Профиль   Отправить e-mail  

Использование i18n

Почему не написано?

LocaleMiddleware tries to determine the user's language preference by following this algorithm:

Офлайн

#5 Июнь 18, 2010 15:55:25

Berg
От: Украина
Зарегистрирован: 2010-03-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Использование i18n

Я просто переделал их метод для себя ….

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
а в urls.py

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)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version