簡體   English   中英

使用接受語言標題來猜測用戶的國家/地區(如果可用)

[英]Using accept language header to guess user's country, if available

我想使用 Javascript/PHP 來確定用戶的瀏覽器是否在接受語言標頭中定義了國家/地區(區域設置變體)。

知道 accept-language 標頭值的內容可能會有所不同,並且並不總是准確的,有沒有辦法從邏輯上確定某個國家/地區是否存在於 accept-language 標頭字符串中? 然后通過JS提取它?

例如,如果用戶的接受語言標頭包含 en-US,我想設置一個局部變量 =“US”。

我最初的想法是創建一個包含所有接受頭語言和區域設置值的非常大的數組並進行檢查,但這似乎不是一種非常有效的方法。

Accept-Language標頭有幾種可以采用的格式, 請參閱 MDN 上的文檔 將首選語言作為結構化列表(如按 q-factor 排序的數組)只是以一種對標頭值的所有可能排列具有彈性的方式解析該列表的問題。

與其嘗試自己編寫此邏輯,不如使用為此確切目的構建的庫更簡單,這將更好地處理各種奇怪的邊緣情況。 例如, willdurand/Negotiation允許您解析Accept-Language標頭並將其與站點支持的區域設置列表相匹配,以找到要使用的最佳語言。

您必須在服務器端(在 PHP 中)執行此操作。 一旦您了解了該語言,您就可以通過多種方式將其傳遞給客戶端 JavaScript。 例如,您可以使用JS 標記在您的頁面模板中包含一段 JavaScript,它使用確定的語言設置全局變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM