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

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

P.S. Наверное вопрос туповат, за что заранее извиняюсь.
Ferroman
RTFM товарищ!
vaxXxa
Та я читал…
Без подключения ‘django.middleware.locale.LocaleMiddleware’, в MIDDLEWARE_CLASSES ничего не работало… Хотя в доках не написано, что это обязательно надо прописывать. Почему?
Ferroman
Почему не написано?
LocaleMiddleware tries to determine the user's language preference by following this algorithm:
Berg
Я просто переделал их метод для себя ….

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>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB