在Django应用程序中检查访问者的地理位置

问题描述:

我正在制作一个多语言的Django网站。我希望网站检查用户是从哪个国家访问该网站的,并根据该网站决定使用哪种语言。在Django应用程序中检查访问者的地理位置

什么将是一个很好的工具来使用它?

+0

重复的http://stackoverflow.com/questions/2218093/django-retrieve-ip -位置 ? – msanders 2010-02-24 13:51:11

当您的其中一位普通用户与他的笔记本电脑一起旅行到另一个国家并访问您的网站时,无法理解某件事情,也无法更改语言,这会吸引人。

我不会推荐检查国家(可能是IP)。取而代之的是客户端浏览器发送的Accept-Language标头。您仍然应该让用户手动更改语言(并将该首选项存储在会话中)。

另一种选择是使用维基百科风格并通过URL(en.example.com,de.example.com或example.com/en/,example.com/de/)设置语言。

+0

我没有说我会完全依赖地理定位 - 我打算使用这个和Accept-Language的组合。 (当然我会让用户改变。) 我不明白维基百科的方法是如何有用的,我在这里谈论如何猜测用户喜欢哪种语言。 – 2010-02-24 16:13:44

有多种方法可以做到这一点,但一个好的解决方案是使用地理定位套件。根据您的预算,有免费和付费的解决方案。我过去曾使用过Digital Element's产品(NetAcuity)来处理这种类型的问题,他们的解决方案是一流的。他们提供内部服务器解决方案(针对高性能应用程序,每秒约30k次查询)以及针对更多典型应用程序的Web服务解决方案。他们有许多语言的API,包括可以在Django中使用的Python。它们将允许您根据用户IP地址查询所有信息,例如地理位置,主要和次要语言,连接速度等。基于我的经验,国家级的地理准确度非常准确。

一个免费的解决方案也是MaxMind,尽管我对他们的产品并不熟悉。

我在我的网站上有类似的问题,我用MaxMind IP免费数据库作为模型,它被称为中间件。

所以当用户访问该网站,中间件通过他的IP检测他的国家和重定向他正确的语言

+1

nginx 0.7+带有一个geoip模块,可将用户的位置数据发送回一组标题。工作得很好。 – Carson 2010-03-07 23:13:20