【问题标题】:Getting the two letter language code of the client获取客户端的两字母语言代码
【发布时间】:2011-10-28 21:36:35
【问题描述】:

这可能是一个非常常见的问题,但经过大量谷歌搜索后,我仍然没有找到有用的答案。

我的网站只有英文,但我喜欢保留用户会话的日志,我需要获取客户的语言。我读过我可以从 HTTP_ACCEPT_LANGUAGE 标头中获取语言信息,该标头是按优先级降序排列的以逗号分隔的客户端语言列表,即第一个是主要语言。

我想在 Django 中获取客户端语言的两个字母的语言代码。例如

en-gb, en-us                       en
fr-fr, en-au                       fr
zh, en-us; q=0.8, en; q=0.6       zh

我该怎么做?我必须自己解析标题还是 Django 有一个内置的语言列表?

是否有所有语言代码的详细列表?

谢谢。

【问题讨论】:

  • 我也这么认为,但我想仔细检查它是否是完成我需要的可靠方法。谢谢。

标签: python django


【解决方案1】:

使用translation.get_language_from_request

from django.utils import translation

def view(request):

    client_lang = translation.get_language_from_request(request)

顺便问一下,你为什么要这个?你检查 django 对i18n and l10n 的支持了吗,因为 如果您启用了LocaleMiddleware,您还可以使用request.LANGUAGE_CODE 获取语言。

【讨论】:

  • 我认为这与HTTP_ACCEPT_LANGUAGE 不同——这是他们用来查看您的网站的语言,而不是他们浏览器的首选语言,不是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-05-07
  • 2013-05-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
相关资源
最近更新 更多