【问题标题】:Detecting user language with Django使用 Django 检测用户语言
【发布时间】:2014-12-05 05:24:46
【问题描述】:

我正在寻找一种检测用户语言的方法。我将默认语言设置为“en_US”,并将网站翻译为“pt_BR”。如何切换语言并为巴西人显示“pt_BR”版本,为世界其他地区显示“en_US”?

我阅读了这些文档链接:

https://docs.djangoproject.com/en/dev/topics/http/sessions/

https://docs.djangoproject.com/en/1.7/topics/i18n/translation/

我相信也许我必须从用户 cookie 或浏览器首选项中获取这些信息,但我该怎么做呢?

此外,我如何测试不同的语言?我必须更改我的浏览器语言?操作系统语言?使用代理?

【问题讨论】:

    标签: django django-templates django-views django-sessions


    【解决方案1】:

    每个用户的HTTP请求都包含在头参数Accept-Language中。

    例如:

    user_langs = request.META.get('HTTP_ACCEPT_LANGUAGE', ['en-US', ])
    

    【讨论】:

    • 是否有中间件或设置选项可以自动将此标头应用于响应语言?
    • 假设我的答案已经过时了。 Django 引入了LocaleMiddleware,它动态地确定用户的正确语言。请注意,总是有一些边缘情况。更多信息请参考Django's i18n page和How Django discovers language preference
    【解决方案2】:

    尝试将 navigator.language 添加到您的帖子数据并在您的视图中解决它。

    http://www.w3schools.com/jsref/prop_nav_language.asp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-04
      • 2017-01-06
      • 1970-01-01
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      • 2010-12-04
      • 2012-05-20
      相关资源
      最近更新 更多