获取客户端的双字母语言代码

Mri*_*lla 4 python django

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

我的网站只有英文版,但我喜欢记录用户会话的日志,我需要获取客户端的语言.我已经读过,我可以从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
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?我是否必须自己解析标题或者Django是否有内置的语言列表?

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

谢谢.

mou*_*uad 5

用途translation.get_language_from_request:

from django.utils import translation

def view(request):

    client_lang = translation.get_language_from_request(request)
Run Code Online (Sandbox Code Playgroud)

顺便问一下你为什么要这个?你检查了django对i18n和l10n的支持,因为如果你有LocaleMiddleware启用,你也可以使用该语言request.LANGUAGE_CODE.