【发布时间】:2015-01-08 17:10:47
【问题描述】:
我必须为具有 i18n 模式的某些 url 的应用程序切换语言,例如我们想要翻译的所有带有前缀的页面,以便获得良好的 SEO,以及我们不想拥有的其他页面网址中的前缀。
所以我将这两种模式分开,直到一切正常,当我在处理切换语言的表单时,我只遇到了问题:
这是我的表格:
<form action="{% url 'set_language' %}" method="POST" class="langform" style="display:none;">
{% csrf_token %}
<input name="next" type="hidden" value="{{ request.get_full_path|strip_lang }}" />
<input name="language" id="language" type="hidden" value="" />
</form>
我通过 javascript 进行验证。一切都很好,我填写了语言值并且表格很好提交。 我真正的问题是下一个值,因为我需要一个通用的下一个值,所以我用这样的过滤器做了一个 request.path :
@register.filter(name="strip_lang")
def strip_lang(value):
lang = get_language()
return '/%s/' % value.lstrip('/%s/' % lang)
这个过滤器的目的是观察 url 是否有语言前缀,如果有,它会删除它以便在下一个值中只有没有前缀的 url。
这个过滤器的输出是这样的:如果我们在 /fr/pages/default 它将是 /pages/default/
我点击切换语言,但没有任何效果。它仍然是同一种语言。所以我删除了一个斜线,但它是一个 404,因为它不是正确的路径......
我可以做些什么来管理我拥有的 2 种网址?一种带有 URL 前缀,一种没有...
该语言在某些情况下可以很好地激活。
提前致谢!
【问题讨论】:
标签: python django python-2.7 internationalization django-i18n