Django多语言与一种语言的页面禁用开关

时间:2017-02-01 17:53:28

标签: django translation mezzanine

我正在使用Django Mezzanine开发一个网站。

我有一些页面使用从夹层页面模型派生的模型和可翻译的字段(使用i18n),这样就可以了。

但是我有一些页面相对于特定国家/地区的某些事件,因此它们只使用一种语言,并且它们使用从Mezzanine Displayable模型派生的模型,没有可翻译的字段但只有语言属性。

在列表中,我尝试放置包含页面语言的链接(例如/ en / events / event / eventslug)。 我尝试将translation.activate(lang_code)添加到视图中。

这样我就可以使用想要的语言获取页面(我使用{% trans %}模板标签)。

当我从另一种语言访问该页面时出现问题(例如,如果我在西班牙语的过滤器页面上并参加英语活动)。然后语言切换(向/ i18n /发送POST请求的夹层表单)不再起作用(我用英语锁定) 例如,只要我不从其他语言访问其中一个页面,该开关仍然可以在私人导航中工作。

我该如何解决这个问题? 我没有想法为什么......

更新:我更改了urlpattern,因此它不再是i18n(我觉得它更有意义)但是因为translation.activate(lang_code)标签仍然需要{% trans %},我的问题仍然是一样的。

1 个答案:

答案 0 :(得分:0)

问题来自于如果您使用translation.activate(language),则需要使用translation.deactivate()。 因此,需要使用中间件才能使其正常工作。

但是我发现i18next module允许覆盖模板中的语言环境,所以我定义了上下文' lang_code'在我看来,在我的模板中使用{% overridelocale lang_code %}