[英]How to detect if the browser supports a language?
我正在建立一個多語言網站。 是否可以使用PHP或Javascript檢查用戶計算機上是否安裝/支持特定語言? 如果不支持/未安裝該語言,我想檢測並向用戶顯示一條消息。
謝謝馬克。
檢測安裝哪種語言可能不太可能...
...但是您可以檢測到用戶願意從網站中獲得哪些語言-即通常來說,他可以理解哪些語言。
大多數瀏覽器都會發送一個名為“ 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中進行解析的示例; 例如: 解析Accept-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)
即:
而且,如果該網站無法為這些網站提供任何服務...那么,我想我沒有太多選擇,它將得到想要發送給我的一切...
瀏覽器通常會發送一個Accept-Language標頭,該標頭可能會為您提供一些有關人們期望看到的語言的提示。 就我而言,我的瀏覽器將此標頭發送到stackoverflow.com:
Accept-Language: en-us,en;q=0.5
假設您在服務器端使用PHP,則可以在$ _SERVER變量中查找以下信息:
$_SERVER["HTTP_ACCEPT_LANGUAGE"]
通過檢查Accept標頭可以了解用戶的語言首選項。 <selfpromotion type =“ shameless”>幾年前,我寫了一篇有關該主題的論文 (2000年, phe! ),探討了這一主題以及一些其他機制。</ selfpromotion>
此后,出現了很多有趣的資源。 特別是,我喜歡本文 ,它對PHP采用了務實的方法。
祝好運!
在過去的十年中,我一直在做多語種工作,而我的印象是您試圖超越它:您以錯誤的方式看待它。 您不必在意用戶計算機上安裝了哪種語言(針對操作系統還是瀏覽器):操作系統語言無關緊要,現代瀏覽器幾乎支持所有語言(自NN4淘汰以來,所有文字在Unicode標准中找到位置的系統/字母)。 您應該追求的是用戶喜歡哪種語言。 用戶是有關“受支持”語言數量的瓶頸。
如果可以,Accept-Language標頭可能是一個很好的解決方案。 根據我的經驗,它不是-經常出現。 如今,普通用戶仍然必須了解URL進入地址欄而不是進入其主頁搜索表單-我不希望超過1-2%的網絡用戶知道HTTP標頭(是的,今晚心情樂觀)。 用戶將很高興使用最初設置為要求使用其瀏覽器的任何語言來訪問您的網站。 其中包括來自世界各地網吧的游客,為具有強大的“不要搞砸配置”政策而在國外工作的公司的外籍人士,懷有IT技術能力的孫子們的幽默感,共享機器等等。 您經常會猜錯。
對於不支持的語言顯示消息的概念也是可疑的。 如果說使用旁遮普語瀏覽器的用戶能夠導航到您的站點,則他可能會看到您自己沒有提供旁遮普語-無需中斷他的瀏覽消息。
綜上所述,有時候最簡單的解決方案是最好的:我建議您讓用戶選擇。 列出可用語言列表,用戶將很樂意將猜測從代碼中刪除。 而且他/她每次都會做對。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.