我遇到了这个问题:
我有一个包含de
和en
翻译的网页。在de
页面中,有德语视频。
usecase:John用德语观看其中一个视频并喜欢它。他说:"我想与我在美国的朋友查理分享这段视频。他把这个链接发给他:
http://blabla.com/de/das-video/12/
我想要的是,如果查理打开链接,他应该被重定向到英文版,到这个链接:
http://blabla.com/en/the-video/13/
我的问题是:
一旦查理打开链接,request.LANGUAGE_CODE
在他身边将成为de
因为i18n set_language。
如何将他重定向到此视频的英文版?
答案 0 :(得分:2)
Django i18n以这样的方式构建,如果url包含语言前缀,那么将显示该语言。
但是,如果你要从url中删除语言前缀,那么django将首先发现用户的首选语言,然后显示相应的页面版本。
因此,在您的情况下,我认为最好的方法是创建一个共享按钮,或者可能在页面上显示共享的URL。用户必须复制此网址而不是浏览器地址栏中的网址。 该网址必须没有语言前缀:
http://blabla.com/das-video/12/
<强>已更新强>
如果您仍想更改默认的django i18n逻辑,则需要子类化
django.middleware.locale.LocaleMiddleware
然后修改其部分方法(process_request
,process_response
)并使用此修改后的中间件而不是LocaleMiddleware