我正在使用Django Mezzanine开发一个网站。
我有一些页面使用从夹层页面模型派生的模型和可翻译的字段(使用i18n),这样就可以了。
但是我有一些页面相对于特定国家/地区的某些事件,因此它们只使用一种语言,并且它们使用从Mezzanine Displayable模型派生的模型,没有可翻译的字段但只有语言属性。
在列表中,我尝试放置包含页面语言的链接(例如/ en / events / event / eventslug)。
我尝试将translation.activate(lang_code)
添加到视图中。
这样我就可以使用想要的语言获取页面(我使用{% trans %}
模板标签)。
当我从另一种语言访问该页面时出现问题(例如,如果我在西班牙语的过滤器页面上并参加英语活动)。然后语言切换(向/ i18n /发送POST请求的夹层表单)不再起作用(我用英语锁定) 例如,只要我不从其他语言访问其中一个页面,该开关仍然可以在私人导航中工作。
我该如何解决这个问题? 我没有想法为什么......
更新:我更改了urlpattern,因此它不再是i18n(我觉得它更有意义)但是因为translation.activate(lang_code)
标签仍然需要{% trans %}
,我的问题仍然是一样的。
答案 0 :(得分:0)
问题来自于如果您使用translation.activate(language)
,则需要使用translation.deactivate()
。
因此,需要使用中间件才能使其正常工作。
但是我发现i18next module允许覆盖模板中的语言环境,所以我定义了上下文' lang_code'在我看来,在我的模板中使用{% overridelocale lang_code %}
。