如何使用django.views.i18n.set_language()函数?

时间:2011-08-09 08:57:41

标签: django localization internationalization

我阅读了教程in Django site,但我不明白如何使用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 个答案:

答案 0 :(得分:4)

使用您正在使用的代码,您无需编写自己的视图。表单将向/ i18n / setlang /发出POST请求,语言代码和(可选)重定向到(下一页)页面作为参数。

django视图执行以下操作(来自django文档)

Django在POST数据中查找下一个参数。 - 如果它不存在,或者为空,Django会在Referrer标头中尝试URL。 - 如果那是空的 - 比如,如果用户的浏览器抑制了该标题 - 那么用户将被重定向到/(站点根目录)作为后备。

因此,实质上,用户将在提交表单后重定向,而django视图将根据提交的内容为该用户设置语言。

希望这有帮助,

霍夫