django - i18n - 怎么可能?

时间:2014-11-17 12:49:48

标签: django

我遇到了这个问题:

我有一个包含deen翻译的网页。在de页面中,有德语视频。

usecase:John用德语观看其中一个视频并喜欢它。他说:"我想与我在美国的朋友查理分享这段视频。他把这个链接发给他:

http://blabla.com/de/das-video/12/

我想要的是,如果查理打开链接,他应该被重定向到英文版,到这个链接:

http://blabla.com/en/the-video/13/

我的问题是:

一旦查理打开链接,request.LANGUAGE_CODE在他身边将成为de因为i18n set_language

如何将他重定向到此视频的英文版?

1 个答案:

答案 0 :(得分:2)

Django i18n以这样的方式构建,如果url包含语言前缀,那么将显示该语言。

但是,如果你要从url中删除语言前缀,那么django将首先发现用户的首选语言,然后显示相应的页面版本。

因此,在您的情况下,我认为最好的方法是创建一个共享按钮,或者可能在页面上显示共享的URL。用户必须复制此网址而不是浏览器地址栏中的网址。 该网址必须没有语言前缀:

http://blabla.com/das-video/12/

<强>已更新

如果您仍想更改默认的django i18n逻辑,则需要子类化

django.middleware.locale.LocaleMiddleware

然后修改其部分方法(process_requestprocess_response)并使用此修改后的中间件而不是LocaleMiddleware