【问题标题】:Unable to set language after using "i18n_pattern" to show language prefix in URL使用“i18n_pattern”在 URL 中显示语言前缀后无法设置语言
【发布时间】:2015-02-13 00:59:07
【问题描述】:

按照建议,我想在 URL 中显示语言前缀,并允许访问我网站的访问者使用模板中的表单更改语言。到目前为止,我一直使用 Django 文档的 "Translation" page 中的 URL prefixset_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


    【解决方案1】:

    StackOverflow question 包含更多详细信息和问题的一些可能答案。没有一个解决方案真的很吸引人。也不应该真的被要求。不幸的是,这似乎是 Django 的一个问题,其中两个所需的“功能”不能以“开箱即用”的方式协同工作以达到所需的效果。就我而言,由于我的网站是单页网站,我可以通过设置上下文变量“redirect_to”='/'(在视图中)来解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-07
      • 2021-10-21
      • 1970-01-01
      • 2011-02-18
      • 2017-03-02
      • 1970-01-01
      • 2016-06-27
      • 1970-01-01
      相关资源
      最近更新 更多