如何在 Web 应用程序中获取用户的地区/国家信息?

3
我的主要目的是向不同国家(语言)的人展示不同的页面。我认为这应该基于用户所在的地区/国家,这可以从IP地址中获取吗?
例如: *对于英语国家的人,他们将看到此内容。 www.example.com
*对于日本人,他们将被分配到此内容。 www.example.com/jp 此外,我看到有些人说要实现这些目的,最好的方法是基于Web浏览器语言,可以从HTTP头中获取。我不知道哪种更好,什么是常见的方式以及为什么..?
感谢您的建议!
我正在使用Flex和Java。
3个回答

5
Zolo,您可以使用类似于maxmind的geoip数据库来轻松查找IP地址的区域/国家/省份,但它有一些缺点:
  • VPN和缓存可能会产生错误值
  • 用户不能轻易地覆盖它。

通常情况下,使用浏览器的Accept: headers更为可取,因为即使在IP地址获取到'en'的情况下,美国的西班牙语用户也可以设置其语言设置以获取'es'。

过去我做过这个时,我最终得到了一个有序的优先级列表,其中每个级别都会覆盖随后的级别(如果存在):

  1. 通过在网站上点击旗帜图标表达用户偏好,存储在会话或Cookie中
  2. 域名的TLD,.com表示无意义(例如mycompany.jp可以让您进入日本网站,但mycomany.com则是“无效”的并且会通过到下一级
  3. 浏览器从accept header中获取的语言设置
  4. GeoIP最佳猜测
  5. 回退到英语

当然,目标是基于最准确反映用户偏好的信息进行选择。


Ry4an,感谢您的回答。我认为您的有序优先级列表是实现我的目标的最佳方式。我还是一个充满思想但缺乏技术的初学者... 您的答案让我知道了可能性。非常感谢! - kinopyo

2
IP2Location提供了几种不同的方式来获取这些信息(他们拥有执行IP地址查找所需的数据)。其中包括一个每年需要支付49美元的Web服务,或者您可以以同样的价格直接从他们那里购买数据。

我想我会先尝试一些免费的IP地理位置服务。无论如何,还是谢谢。 - kinopyo

2

确定Web应用程序用户的语言选择是一件棘手的事情!

难度很大!

参见相关的SO问题或者这个问题

另一个有用的提示是使用关键字GeoLocation,尽管发现偏好语言和位置是两个相关但不同的问题。例如,如果地理位置指示日内瓦市中心,则法语可能是首选语言,但德语、英语和其他几种语言也同样可能。

我从上述SO问题中获得了以下URL:

免费IP地理位置服务

商业IP地理位置服务

为了识别语言(而不是位置),使用HTTP标头的“accept-language”值通常更准确方便,但这也可能会误导。尽管某人可能安装了浏览器的日语版本,但他/她可能更喜欢阅读英文...

无论您提供什么语言给用户,默认情况下,请确保让他们轻松切换到站点的另一个版本(如果可能,请在他们返回站点时记住这个选择)。


1
谢谢你的回答。你发布的链接真的很有帮助。 - kinopyo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接