【发布时间】:2015-02-13 00:59:07
【问题描述】:
按照建议,我想在 URL 中显示语言前缀,并允许访问我网站的访问者使用模板中的表单更改语言。到目前为止,我一直使用 Django 文档的 "Translation" page 中的 URL prefix 和 set_language redirect view 部分作为指南。我的代码大部分是从这个来源复制而来的。
问题
在我的 URLconf 中不使用“i18n_pattern”(在“pattern”中同时调用“url”),我设法在 index.html 页面上选择语言,并让 Django 使用我拥有的新语言将我重定向到同一页面选择。但是,当然不会显示语言 URL 前缀。
当我使用“i18n_pattern”时,语言前缀出现在 URL 中,但似乎破坏了从 index.html 表单更改语言的能力。例如,如果我设置为英语并且我在表单中从“English (en)”更改为“Türkçe (tr)”,则页面本质上会刷新而不更改为土耳其语(仍然显示英语)。但是,我可以通过将 URL 语言前缀从“/en/”更改为“/tr/”来更改语言。
页面/模板/页面/index.html:
{% load i18n %}
<html>
<head>
...
</head>
<body>
<form action="{% url 'set_language' %}" method="post">
{% csrf_token %}
<input name="next" type="hidden" value="{{ redirect_to }}" />
<select name="language">
{% get_language_info_list for LANGUAGES as languages %}
{% for language in languages %}
<option value="{{ language.code }}"{% if language.code == LANGUAGE_CODE %} selected="selected"{% endif %}>
{{ language.name_local }} ({{ language.code }})
</option>
{% endfor %}
</select>
<input type="submit" value="Go" />
</form>
...
</body>
</html>
[项目名称]/urls.py:
from django.conf.urls import patterns, include, url
from django.conf.urls.i18n import i18n_patterns
urlpatterns = patterns('',
url(r'^i18n/', include('django.conf.urls.i18n')),
)
urlpatterns += i18n_patterns('',
url(r'', include('pages.urls', namespace='pages')),
)
注意:我使用的模板位于名为“pages”的应用中。
如果能帮助它们一起工作,我们将不胜感激!到目前为止,我在 stackoverflow 上找不到与此问题相关的任何内容。如果需要更多信息,请询问!
【问题讨论】:
标签: django internationalization django-templates translation django-urls