1

我開發了一個AppEngine/Python/Django應用程序,該應用程序目前以西班牙語工作,我正在使用多語言支持進行國際化。它基本上是一個交友網站,用戶可以在其中瀏覽其他個人資料併發送消息。以不同語言查看配置文件將導致某些文本(菜單等)以選擇的語言顯示,但用戶生成的內容(即用戶配置文件或消息)將以寫入它的原始語言顯示。多語言網站 - 不同語言所需的唯一網址(以防止緩存)?

我的問題是:是否有必要(或好主意)爲使用不同語言顯示的同一頁面使用唯一的URL,或者是否可以爲以不同語言顯示的給定頁面重複相同的URL。特別是,我擔心如果我爲多種語言使用相同的URL,那麼可能會緩存一些頁面(可能是由Google或我可能不知道的其他某個代理),這可能會導致語言不正確顯示給用戶。

有誰知道這是否是一個合理的問題,或者如果我擔心的事情不會發生?

回答

4

原則上,你可以使用Content-LanguageVary響應頭和Accept-Language請求頭控制緩存的行爲,並防止他們服務了錯誤的語言給用戶。

但實際上,Accept-Language在瀏覽器中經常設置不正確,這就是爲什麼大多數站點不依賴它或者至少提供輔助機制。關於尊重Vary標題,緩存可能同樣不可靠,但我不確定。具有語言特定的URL當然是一種切實可行的方法,並且可以避免任何緩存問題。

3

我不知道這是如何工作使用Django,但是從一般的Web開發的角度看它,你可以:

  • 使用查詢參數來確定語言(例如/foo/bar/page.py?lang=en

  • 將語言代碼添加到url路徑(例如/foo/bar/en/page.py),並可以選擇使用mod_rewrite,以便該路徑的那部分作爲查詢參數傳遞給腳本。