2009-12-09 102 views
7

當用戶訪問該網站時,我可以獲取他們的國家代碼。我想用它來設置默認語言(如果有必要,他們可以稍後修改它們,只是根據他們所在的國家可能會說什麼語言的一般猜測)。我有一個國家代碼列表和一個語言代碼列表。如何從國家代碼映射到語言代碼?

是否存在從國家代碼到某處存在的語言代碼的確切映射?我找不到。我知道並非所有國家/地區的每個人都說同一種語言,但我只需要一個通用映射,用戶可以稍後手動選擇他們的語言。

+2

我建議你使用「Accept-Language」http請求頭來確定用戶喜歡哪種語言。爲什麼你想猜測用戶明確要求什麼? – andcoz

+0

http://en.wikipedia.org/wiki/List_of_official_languages或http://www.infoplease.com/ipa/A0855611.html –

+0

我一直在尋找完全相同的東西。奇怪的是,它很難找到。最終我遇到了這個:
http://download.geonames.org/export/dump/countryInfo.txt
這一切都在那裏。非常感謝這裏的海報:
http://gis.stackexchange。com/questions/1514 /按國家列出語言代碼 – Cosmicnet

回答

8

對「國家語言映射」的搜索顯示了這個Languages by Countries表,您可能將其轉換爲具有一定工作量的語言代碼。 (有不到200個國家。)

但是警告:這樣做可以保證讓很多用戶在瑞士或加拿大這樣的多語言國家受到影響。對於這樣的國家,習慣上讓用戶在用戶界面的主頁上選擇他們的語言。一些示例參見Google SwitzerlandBest Buy Canada。這也令外籍人士和旅客感到不安。

更好的是,爲什麼不使用Accept-Language HTTP頭來決定使用哪種語言?在確定用戶的語言時,Accept-Language頭是正確的事情。它甚至會按照首選項的順序給出一個列表,所以如果用戶最流行的一種語言不支持,但在您支持的某種其他語言中相當流利,則可以正確回退。 Accept-Language的一個問題是大多數用戶將其保留爲默認設置。不過,大多數瀏覽器應該默認使用平臺的語言設置,所以它不是太糟糕。 (一些較舊的瀏覽器會默認使用英文,這是一種災難,因爲「en」實際上意味着接受語言未被設置。)

+1

** Accept-Language HTTP標頭**不是另一個的正確方法。如果你可以編輯你的答案並解釋它,那將是很好的。選擇基於國家的語言是一種非常錯誤的方式。 – sorin

+1

@Sorin我認爲它已經說過了,但沒關係,我已經編輯過,詳細說明爲什麼Accept-Language是上帝,而國家制圖不是。 –

+1

我只是想要一些大膽的方式,讓那些懶惰閱讀您的完整文章的人更容易閱讀主要信息;) – sorin

4

雖然可能有很好的理由嘗試映射國家(或者確實具體位置/一國之內),以語言的區域,似乎是你的目的,使用

HTTP請求頭Accept-Language

如果只在您的語言選擇啓發式的元素之一(另一個是mabye德國家代碼一起)可能是一種簡單而安全的選擇...

這種方法偶爾因爲與給定網絡瀏覽器安裝相關聯的默認語言(當底層用戶沒有花時間爲他/她的首選自然語言選擇安裝包/設置時)。另一方面,即使地理位置/語言關聯完全錯誤,它也爲許多外籍人士提供了更好的語言提示(他們按照首選語言安裝/設置瀏覽器)。

一般來說,這種方法應該超越僅基於地理位置(和查找表)的方法,在諸如瑞士,盧森堡等許多國家以及許多大都市地區都會說紐約,日內瓦或邁阿密。