2014-11-17 69 views
0

我被這個問題困住了:django - i18n - 它怎麼可能?

我有一個頁面deen翻譯。在de-頁面中,有德語視頻。

用例:約翰在德國觀看其中一個視頻並喜歡它。他說:「我想和我的朋友查理·誰是美國分享這個視頻」,他把這個鏈接,他說:

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

我想要的東西,如果查理打開的鏈接,他應該被重定向到英文版本,此鏈接:

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

我的問題是:

一次查理打開鏈接,request.LANGUAGE_CODE在他的身邊將成爲de因爲國際化的set_language

我該如何將他重定向到此視頻的英文版本?

回答

2

Django i18n以這種方式構建,如果url包含語言前綴,那麼該語言就會顯示出來。

但是,如果您要從網址中刪除語言前綴,則django會首先發現用戶的首選語言,然後顯示相應的頁面版本。

因此,在你的情況下,我認爲最好的辦法是創建一個分享按鈕或可能顯示頁面上的共享網址。用戶必須複製此網址,而不是瀏覽器地址欄中的網址。 該URL必須是沒有語言的前綴:

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

修訂

如果您仍然希望更改默認的Django國際化的邏輯,那麼你需要繼承

django.middleware.locale.LocaleMiddleware 

然後修改一些其方法(process_request,process_response)並使用此修改的中間件代替LocaleMiddleware

+0

你點了重要的一點,謝謝..分享只是一個例子。所以在英文瀏覽器中打開'/ de/..''會顯示''de''版本,不管是什麼語言環境,對吧? – doniyor

+0

@ doniyor是的,正好是 – stalk

+0

但我可以編寫一箇中間件,刪除語言前綴並將請求交給localemiddleware,對嗎? – doniyor