2011-11-21 144 views
5

這個問題可能我很搞笑,但...我已經搜索了網絡和堆棧溢出,但沒有找到令人滿意的答案。網站的語言選擇

什麼使語言選擇添加到網站的一個好開始?

我的網址將

example.com/de/ example.com/en/

指示當前的語言,再加上設置後,我確定的初始語言的cookie。

登陸example.com後,我會首先檢查(最近的)cookie,然後檢查ACCEPT_LANG,然後如果使用/ en /,/ de /給出了特定的URL。

該語言將始終是允許加入書籤的網址的一部分,即如果我確定用戶的意圖是以德語查看網站,我將重定向到example.com/de/。

現在我的問題:這些天的首選方式是向用戶選擇的服務器發信號的方式是什麼?我不是在談論視覺選擇(下拉與維基百科的語言列表),也不是地理定位與ACCEPT_LANG,而是用戶向服務器發送信號。我心裏有:(假設用戶是英文網站,並希望切換到德國網站)

  1. 待辦事項客戶端JavaScript巫術和改變location.href小號// EN ///德/
  2. 預渲染服務器上的語言改變鏈接(會給我一個機會來抑制非現有翻譯的鏈接)
  3. 回發到example.com?lang=de & orig =它做了響應重定向。如果用戶在填寫字段時決定切換語言,會給我重新填寫表單變量的機會,但我不確定這一點。

其他的可能性或什麼是技術上最好的?

+0

4。使用智能默認(瀏覽器語言?)並將用戶的任何更改存儲在cookie中。 – Jeroen

+0

「登陸example.com ...」:檢查URL中的語言存在應首先出現,而不是最後一次。 –

+0

關於解決方案3,服務器可能可能使用referer而不是'orig'參數。更清潔,更易於編碼。 –

回答

1

我個人最喜歡的是解決方案3,因爲這意味着您有特定的「更改語言」請求,您可以在其中執行特定處理,例如將首選項保存在Cookie中。

只需使用客戶端嚮導來修改URL並不告訴服務器該用戶實際上想要切換語言。這可能僅僅是因爲用戶登陸了來自Google/Bing/Whatever搜索的特定語言頁面,在這種情況下,用戶沒有主動選擇語言,因此選擇不應該存儲在cookie中。

(我不知道我明白你的解決方案#2的意思。能否請您澄清?)

BTW,pleaaaaase,沒有基於地理位置的語言選擇。我可以認識到所有這樣做的站點:它們以荷蘭語顯示,因爲我是比利時人,60%的比利時人是荷蘭人。儘管我們的接受語言設置爲法語,但運氣不好(儘管我們的接受語言設置爲法語):-(

+0

#2我的意思是一個服務器端腳本檢查請求的頁面是否可用,比如說德語。如果是,則呈現。如果沒有 - 語言切換不顯示。在#1客戶端JavaScript將只能無條件地呈現此鏈接 – JohnDoe

+0

順便說一句,我是在#1,分配給location.href將發出一個HTTP GET impresion。 – JohnDoe

0

或者,您可以使用localStorage鍵/值對,並在頁面加載時檢查是否設置了首選項,將它們引導至相應位置,就像Cookie一樣,它們可以隨時清除,但使用本地存儲確實會持續存在於所有瀏覽器選項卡和會話中。