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

时间:2010-02-03 04:25:10

标签: web-applications geolocation country

我的主要目的是向不同国家(语言)的人展示不同的页面。我认为它应该基于用户区域/国家,我想可以从IP地址中获取?

例如: *对于EN国家的人,他们会看到这一点。 www.example.com

*对于日本人,他们会派遣这个。 www.example.com/jp

另外我看到有人说要实现这些目的,最好的方法是基于网络浏览器语言,可以从http标头获取。我不知道哪个更好,常见的方式是什么,为什么......?

感谢您的建议!

我正在使用Flex和Java。

3 个答案:

答案 0 :(得分:5)

Zolo,你可以使用maxmind的geoip数据库之类的东西轻松地从IP地址中找到地区/国家/地区,但它有一些缺点:

  • VPN和缓存可能会产生错误值
  • 用户无法轻易覆盖它。

使用浏览器的Accept:标题通常是首选,因为美国的西班牙语人士可以设置他们的语言设置来获取'es'而不是'en',即使他们的IP会让他们'en'。

当我在过去必须这样做的时候,我最终在语言选择逻辑中找到了一个有序的首选项列表,每个级别都覆盖了后续的列表(如果存在):

  1. 通过点击网站上的标记图标,存储在会话或Cookie中
  2. 来表达用户首选项
  3. 域名的顶级域名,.com不代表任何内容(例如:mycompany.jp为您提供日语网站,但mycomany.com是“无投票”并传递到下一个级别
  4. 接受标题中的浏览器语言设置
  5. GeoIP最佳猜测
  6. 回归英语
  7. 目标当然是将选择基于最准确反映用户偏好的事物。

答案 1 :(得分:2)

IP2Location提供了几种获取此信息的方法(它们具有进行IP地址查找所需的数据)。这包括每年49美元的网络服务,或者您可以以相同的价格直接从他们那里购买数据。

答案 2 :(得分:2)

确定Web应用程序用户的首选语言是......

棘手的事业!

请参阅此related SO Questionthis one

另一个有用的提示是使用关键字GeoLocation,但找到位置语言是两个相关但不同的问题。
例如,如果地理定位表明日内瓦市中心,法语可能是首选语言,但德语,英语和其他几种语言几乎是可能的。

我从前面提到的SO问题中得到了以下网址:

免费IP地理定位服务

商业IP地理定位服务

对于语言识别(而不是位置),使用HTTP标头的“接受语言值非常方便且通常更准确,但也可以误导。虽然有人可能安装了日语版的浏览器,但他/她可能更喜欢用英语阅读......

无论您为用户提供哪种语言,默认情况下,请务必让他们轻松切换到该网站的其他版本(如果可能,请记住此选项,以便他们返回时你的网站)