如何在网络应用程序中获取用户地区/国家信息?
-
25-09-2019 - |
题
我的主要目的是向不同国家(语言)的人显示不同的页面。我认为它应该基于用户地区/国家,我猜可以从IP地址中获取?
例子:*对于 EN 国家的人来说,他们会看到这一点。www.example.com
*对于日本人,他们会派遣至此。www.example.com/jp
我也看到有人说要实现这些目的,最好的方法是基于网络浏览器语言,可以从http header中获取。我不知道哪个更好,常见的方法是什么以及为什么..?
感谢您的建议!
我正在使用 Flex 和 Java。
解决方案
Zolo,您可以使用 maxmind 中的 geoip 数据库之类的东西来轻松地从 IP 地址查找地区/国家/省,但它有一些缺点:
- VPN 和缓存可能会产生错误值
- 用户无法轻易覆盖它。
使用浏览器的接受:headers 通常是首选,因为在美国讲西班牙语的人可以将其语言设置设置为“es”而不是“en”,即使他们的 IP 会得到“en”。
当我过去不得不这样做时,我最终在语言选择逻辑中得到了一个有序的偏好列表,每个级别都会覆盖后续的级别(如果存在):
- 通过在站点上滑动标记图标来表达用户偏好,存储在会话或 cookie 中
- 域名的 TLD,其中 .com 没有任何意义(例如:mycompany.jp 为您提供日语网站,但 mycomany.com 被“否决”并进入下一个级别
- 来自接受标头的浏览器语言设置
- GeoIP 最佳猜测
- 回退到英语
当然,目标是根据最准确反映用户偏好的事物进行选择。
其他提示
IP2Location 提供了几种不同的方式来获取这些信息(他们有必要做数据IP地址查询)。这包括每年花费$ 49的Web服务,或者你可以直接从他们那里购买数据以同样的价格。
确定 Web 应用程序用户选择的语言是......
生意棘手!
另一个有用的提示是使用关键字 GeoLocation
, , 虽然 找到 地点 和 语言 选择是两个相关但不同的问题。
例如,如果地理位置表明日内瓦市中心,则法语可能是首选语言,但是德语、英语和其他几种语言几乎同样可能。
我从前面提到的SO问题中得到了以下URL:
免费IP地理定位服务
- IP地理:www.ipgeo.com
- MaxMind GeoIP:http://www.maxmind.com/
商业IP地理定位服务
- 科瓦: http://quova.com/
- NetAcuity 由 Digital Element/Envoy 提供: http://www.digital-element.com/
对于语言识别(而不是位置),更方便且通常更准确 使用 HTTP 标头的“接受语言" 值,但这也可能会产生误导。尽管有人可能安装了日语版本的浏览器,但他/她可能更喜欢用英语阅读......
无论您为用户提供哪种语言, 默认情况下, ,请务必允许他们轻松切换到网站的另一个版本(如果可能的话,请在他们返回您的网站时记住此选择)