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