0

服务器如何知道来自特定区域的传入请求,以便以该特定区域的语言环境提供网页服务。?

4

2 回答 2

2

服务器查看传入 HTTP 请求的 Accept-Language 标头。标头的值指示用户希望在响应中应用的语言和/或国家/地区。例如:

Accept-Language: en-us,fr;q=0.5

可能有一些深奥的技术可以根据 IP 地址确定位置,但通常不需要这些技术。

于 2013-08-29T13:11:10.193 回答
0

尽管我同意使用Accept-Language是最简单的技术,但我相信这并不是 OP 所需要的,因为他询问的是区域,即地理位置。

问题Accept-Language在于它可以根据系统上安装的语言包含支持的语言列表。此外,默认(第一种)语言并不总是意味着这是您想要用来呈现 Web 内容的语言。

在地理位置基础上做出的决定非常受欢迎。它基于客户端浏览器的 IP 地址。HttpRequest您可以通过调用getRemoteAddress()或来获取远程地址getRemoteHost()

下一个问题是区分用户的国家。使用一种可用的解决方案。搜索“通过 ip api 进行地理定位”并选择一项。有带有 rest api 和独立解决方案的托管服务,它们为您提供 IP 地址数据库,并且通常是用于在此数据库中搜索的 API。

下一个问题是从国家/地区确定语言。我不知道为此准备好的解决方案。您需要创建将国家映射到那里使用的语言列表的数据库。如果您的应用程序仍然不支持所需的语言,请不要忘记后备。

要在多种语言中进行选择,您确实可以使用Accept-LanguageHTTP 标头。例如,加拿大有两种官方语言:EN 和 FR。如果Accept-Language看起来像

Accept-Language: en-us,fr;q=0.5

为加拿大用户选择英语。如果标题看起来像

Accept-Language: fr,en;q=0.5

选择法语。但是,如果标题看起来像

Accept-Language: de,el;q=0.5

选择默认(在大多数情况下可能是英语)。

于 2013-08-29T13:25:21.460 回答