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

标签 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?

谢谢

最佳答案

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

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

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

因此本质上,用户在提交表单后将被重定向,并且 django View 将根据提交的内容为该用户设置语言。

希望这有帮助,

霍夫

关于django - 如何使用 django.views.i18n.set_language() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993689/

相关文章:

python - 没有显示任何错误的 Django 表单无效

ios - 如何强制 ios 应用程序使用特定的本地化?

ios - 如何从坐标中获取本地化的街道名称?

用于动态生成内容的 GWT 国际化

python - Zope 中 Python 脚本的 i18n(受限 python)

c++ - Qt 国际化 : QT_TR_NOOP in c++ qstr() in qml

python - 为什么我不能用同一个模型注册多个 Django ModelAdmin?

python - 在django-tastypie中,选择可以显示在schema中吗?

python - 第一次使用 Django 数据库 SQL 还是 NoSQL?

xcode - 如何在 xcode4 中本地化 Settings.bundle?