【问题标题】:Checking a visitor's geographical location in a Django app在 Django 应用程序中检查访问者的地理位置
【发布时间】:2010-02-24 13:28:42
【问题描述】:

我正在制作一个多语言的 Django 网站。我希望网站检查用户从哪个国家/地区访问网站,并据此决定使用哪种语言。

什么是一个很好的工具?

【问题讨论】:

标签: django geolocation django-multilingual


【解决方案1】:

当您的一个普通用户带着他的笔记本电脑到另一个国家旅行并访问您的网站时,无法理解任何事情并且无法更改语言,那会很糟糕。

我不建议检查国家(可能通过 IP)。而是选择客户端浏览器发送的 Accept-Language 标头。您仍然应该保留让用户手动更改语言的选项(例如,将首选项存储在会话中)。

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

【讨论】:

  • 我并没有说我会完全依赖地理位置——我打算结合使用它和Accept-Language。 (当然我会让用户改变。)我不明白维基百科的方法有什么用,我在这里谈论的是如何猜测用户喜欢哪种语言。
【解决方案2】:

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

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

【讨论】:

  • nginx 0.7+ 带有一个 geoip 模块,可以将用户的位置数据发送回一组标头中。效果很好。
【解决方案3】:

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

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

【讨论】:

    猜你喜欢
    • 2019-01-29
    • 2012-07-07
    • 1970-01-01
    • 1970-01-01
    • 2011-03-30
    • 2018-12-24
    • 2019-02-09
    • 2011-06-08
    相关资源
    最近更新 更多