Как использовать функцию django.views.i18n.set_language ()? - PullRequest
3 голосов
/ 09 августа 2011

Я прочитал учебник на сайте Django , но я не понимаю, как использовать функцию set_language ().Например, у меня есть следующее демо:

index.html

{% trans "Hello World." %}

<form action="/i18n/setlang/" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="/next/page/" />
<select name="language">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}">{{ language.name_local }} ({{ language.code}})</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>

urls.py

urlpatterns = patterns('',
    (r'^i18n/', include('django.conf.urls.i18n')),
)

views.py

What need I write to display the languages, which were chosen from user in this file?

Спасибо,

Thinh

1 Ответ

4 голосов
/ 09 августа 2011

С кодом, который вы используете, вам не нужно писать свои собственные представления. Форма отправит запрос POST в / i18n / setlang / с кодом языка и (необязательно) страницей перенаправления на следующую страницу в качестве параметров.

Представление django выполняет следующие действия (из документации по django)

Django ищет следующий параметр в данных POST. - Если этого не существует или он пуст, Django пробует URL в заголовке Referrer. - Если он пуст - скажем, если браузер пользователя подавляет этот заголовок - тогда пользователь будет перенаправлен на / (корень сайта) как запасной вариант.

Таким образом, по сути, пользователь будет перенаправлен после отправки формы, и представление django установит язык для этого пользователя в соответствии с тем, что было отправлено.

Надеюсь, это поможет,

Hoff

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...