2009-12-09 53 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德国家代码一起)可能是一种简单而安全的选择...

这种方法偶尔因为与给定网络浏览器安装相关联的默认语言(当底层用户没有花时间为他/她的首选自然语言选择安装包/设置时)。另一方面,即使地理位置/语言关联完全错误,它也为许多外籍人士提供了更好的语言提示(他们按照首选语言安装/设置浏览器)。

一般来说,这种方法应该超越仅基于地理位置(和查找表)的方法,在诸如瑞士,卢森堡等许多国家以及许多大都市地区都会说纽约,日内瓦或迈阿密。