2009-10-07 93 views
1

我正在建設一個多語言網站。是否可以使用PHP或Javascript來檢查用戶計算機上是否安裝/支持特定語言?我想檢測到這一點,並顯示一條消息給用戶,如果語言不支持/安裝。如何檢測瀏覽器是否支持語言?

謝謝, 馬克。

+0

你的意思是說語言不是一種編程語言,對吧? – 2009-10-07 11:00:05

+0

這是正確的馬克拉姆。 – 2009-10-08 08:52:36

回答

2

瀏覽器通常會發送Accept-Language標頭,這可能會爲您提供有關該用戶希望看到的語言的一些提示。就我而言,我的瀏覽器發送這個頭stackoverflow.com:

Accept-Language: en-us,en;q=0.5 

假設你正在使用服務器端PHP,你可以查找在$ _ SERVER變量這樣的信息:

$_SERVER["HTTP_ACCEPT_LANGUAGE"] 
6

檢測哪些語言是安裝可能不是很有可能...

...但是,您可以檢測用戶願意從網站獲得哪些語言 - 即通常,他可以理解哪些語言。

大多數瀏覽器發送名爲「Accept-Language」的HTTP報頭,它可以有一個值,如「fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3(這是我目前的瀏覽器發送到網站,我訪問)

在PHP端,您可以在$_SERVER數組中得到這樣的:

var_dump($_SERVER['HTTP_ACCEPT_LANGUAGE']); 

將輸出:

string 'fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3' (length=35) 

這裏表示我希望網站向我發送法文內容;但我也接受英語(最好是美國英語,但我也可以用簡單的默認英語)


你可以找到很多如何在PHP中解析這個例子;例如:Parse Accept-Language to detect a user's language

使用該文章中提供的代碼,我得到這個數組的語言:

array 
    'fr' => int 1 
    'fr-fr' => string '0.8' (length=3) 
    'en-us' => string '0.5' (length=3) 
    'en' => string '0.3' (length=3) 

即:

  • 我喜歡法國
  • 如果 「FR」 是不可能的,我喜歡「來自法國的法語」
  • 如果這也是不可能的,我接受「來自美國的英語」
  • 如果也是不可能的,我可以用英文輸入

如果網站不能提供任何這些...呃,我想我沒有太多的選擇,並會得到任何它想要發送給我...

+0

服務器何時不能提供'fr'但能提供'fr-fr'?這些是否有其他更好的理由? – Alohci 2009-10-07 11:26:36

+0

@Alohci:hu ...我想你是對的^^(我不記得配置我正在使用的當前瀏覽器 - 我想我做得有點太快) – 2009-10-07 11:28:48

+0

感謝詳細的響應Pascal - 很很有幫助。 – 2009-10-08 08:53:28

0

通過檢查Accept標頭可以瞭解用戶的語言偏好。< selfpromotion type =「shameless」>我在幾年前寫了a paper on the subject(2000,phew!)探索了這個和其他一些替代機制。 </selfpromotion >

不少有趣的資源出現以來;特別是,我喜歡this article,它採用了一種實用的PHP方法。

祝你好運!

+0

感謝您的鏈接 - 發現他們是一個很好的閱讀:) – 2009-10-08 08:56:51

0

過去十年來我一直在做多種語言的東西,我的印象是你想要做得過分:你看着它錯誤的方式。你不應該在意用戶的機器上安裝了什麼語言(用於操作系統或瀏覽器):操作系統語言並不重要,現代瀏覽器幾乎支持所有的語言(自從NN4消亡以來,所有的寫作在Unicode標準中找到位置的系統/字母)。您應該追求的是用戶更喜歡哪種語言。用戶是「支持」語言數量的瓶頸。

Accept-Language頭可能是一個很好的解決方案 - 如果它工作。根據我的經驗,這並不常見。今天的普通用戶仍然需要知道網址進入地址欄,而不是進入他的主頁搜索表單 - 我不希望超過1-2%的網民瞭解HTTP頭信息(是的,今晚有樂觀的心情)。用戶會很高興地來到您的網站,無論他們的瀏覽器最初設置要聲明的任何語言。這包括來自世界各地的網吧的遊客,在國外爲擁有強大「不要混淆配置」政策的公司工作的外籍人士,擁有IT能力的孫子的老年人擁有非凡的幽默感,共享機器等等。你會經常猜錯。

爲不支持的語言顯示消息的概念也值得懷疑。如果帶有旁遮普語瀏覽器的用戶能夠導航到您的站點,他可能會看到您自己不提供旁遮普語 - 無需中斷用消息瀏覽他的內容。

所有這一切說,有時最簡單的解決方案是最好的:我建議你讓用戶選擇。列出可用語言的列表,用戶將非常樂意從您的代碼中剔除猜測。而且他/她每次都會做對。

+0

有趣的是,我從我的研究得出了相同的結論,因爲從昨天開始,即接受語言不可靠。我最不希望的事情是客戶無緣無故地看到「錯誤」。出於這個原因,我打算退出「自動檢測」解決方案。 感謝您的建議和分享您的觀點。 – 2009-10-08 08:56:13

相關問題