从 HTML header 获取 Django 中正确的语言代码

Get correct language code in Django from HTML header

我正在尝试从 HTML 负责人 ACCEPT-LANGUAGE header 那里获得语言选择。我为此使用了 parse_accept_lang_header() 模块。但它 return 给我所有的小字符语言代码。像这样 [('pt-pt', 1.0), ('pt-br', 0.8), ('en-us', 0.5), ('en', 0.3)] 但我想得到第一个小字符,第二个大写校正器。像这样[('pt-PT', 1.0), ('pt-BR', 0.8), ('en-US', 0.5), ('en', 0.3)]。那我该怎么做呢?

我的代码如下:

from django.utils.translation.trans_real import parse_accept_lang_header
header_locales =parse_accept_lang_header(
                                  request.META.get('HTTP_ACCEPT_LANGUAGE', None))

header_locales return 我是小字符的语言环境名称。

django 似乎为您将语言代码小写 (thx dgel)。您是否需要大写版本?我猜你总是可以自己拆分代码并将其大写。或者您可以复制不带小写位的 parse_accept_lang_header 代码的功能。我不太确定用例是什么。

如果你需要查询你的数据库,你总是可以使用类似下面的东西(来自here and the original documenation):

MyClass.objects.filter(name__iexact=my_parameter)