Для вашего удобства Django поставляется с представлением django.views.i18n.set_language, которое устанавливает языковую настройку пользователя и перенаправляет браузер обратно на предыдущую страницу.
Для активации этого представления добавьте следующую строку в схему URL:
(r'^i18n/', include('django.conf.urls.i18n')),
Следует отметить, что данный пример делает это представление доступным на /i18n/setlang/.
Это представление вызывается через метод GET[15] с указанием параметра language в строке запроса. Если поддержка сессий активна, представление сохраняет информацию о выбранном языке в сессии пользователя. В противном случае, сохранение производится в cookie django_language.
После определения выбора пользователя Django перенаправляет браузер, следуя алгоритму:
Проверяется параметр next в строке запроса.
Если такого параметра нет или он пуст, проверяется заголовок Referer.
Если заголовок пуст (браузер мог запретить его отправку), тогда пользователь будет перенаправлен на корень сайта.
Ниже представлен пример HTML шаблона:
<form action="/i18n/setlang/" method="post">
<input name="next" type="hidden" value="/next/page/" />
<select name="language">
{% for lang in LANGUAGES %}
<option value="{{ lang.0 }}">{{ lang.1 }}</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
| Пред. | Уровень выше | След. |
| Как Django получает языковые настройки | Начало | Использование переводов в ваших проектах |
2 комментария | Оставьте комментарий
Внимание!!!
В django 1.0 и выше заменили GET на POST!
<form action="/i18n/setlang/" method="post">
Спасибо за заметку. Как раз скоро придется это использовать.