根据建议,我想在网址中显示语言前缀,并允许我网站的访问者使用模板中的表单更改语言。到目前为止,我一直在使用Django文档URL prefix中的set_language redirect view和"Translation" page部分作为指南。我的代码很大程度上是从这个来源复制的。
在我的URLconf中不使用“i18n_pattern”(在“pattern”中同时使用“url”调用),我设法在index.html页面上选择语言,并让Django使用我所拥有的新语言将我重定向到同一页面选择。但是,当然,未显示语言URL前缀。
当我使用“i18n_pattern”时,语言前缀出现在URL中,但似乎打破了从index.html表单更改语言的能力。例如,如果我设置为英语并且我在表单中从“英语(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>
的 [PROJECT_NAME] /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上找到任何内容。如果需要更多信息,请询问!
答案 0 :(得分:1)
此StackOverflow question包含更多详细信息以及问题的一些可能答案。没有一个解决方案真的很吸引人;也不应该真的需要。不幸的是,这似乎是Django的一个问题,它既有所需的特性,也有#34;不能一起工作&#34;开箱即用&#34;具有预期的效果。就我而言,由于我的网站是单页网站,我可以通过&#34; redirect_to&#34;设置上下文变量。 =&#39; /&#39; (在视图中)否定问题。