8

当用户访问该站点时,我可以获得他们的国家代码。我想用它来设置默认语言(如果需要,他们可以稍后修改,只是根据他们所在的国家/地区对他们可能说的语言进行一般猜测)。

是否存在从国家代码到某处存在的语言代码的明确映射?我找不到。我知道不是某个国家的每个人都说同一种语言,但我只需要一个通用的映射,用户可以稍后手动选择他们的语言。

4

2 回答 2

9

搜索“国家/地区语言映射”会显示此按国家/地区划分的语言表,您可以通过一些工作将其转换为语言代码。(有不到 200 个国家。)

一个警告:这样做几乎肯定会惹恼瑞士或加拿大等多语言国家的许多用户。对于此类国家/地区,习惯上让用户在 UI 的主页上选择他们的语言。有关示例,请参阅Google 瑞士加拿大百思买。这也惹恼了外籍人士和旅行者。

更好的是,为什么不使用 Accept-Language HTTP 标头来确定使用哪种语言?Accept-Language 标头是确定用户语言时要查看的正确内容。它甚至会按优先顺序为您提供一个列表,因此,如果用户对您不支持的某些语言最流利,但对您支持的其他语言相当流利,则可以正确回退。Accept-Language 的一个问题是大多数用户将其保留为默认设置。不过,大多数浏览器应该默认为平台的语言设置,所以还不错。(一些较旧的浏览器会默认使用英语,这有点像一场灾难,因为“en”实际上意味着未设置 Accept-Language。)

于 2009-12-09T19:18:01.930 回答
4

虽然可能有充分的理由尝试将国家(或一个国家内的特定位置/区域)映射到语言,但似乎出于您的目的,使用

HTTP 请求标头Accept-Language ,

如果仅作为您的语言选择启发式(以及mabye teh国家代码)中的一个元素可能是一个简单而安全的选择......

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

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

于 2009-12-09T19:27:45.640 回答