Django:在模板中显示当前区域设置

uri*_*rig 25 django localization internationalization

我需要在Django模板的输出中嵌入当前的语言环境(准确地说,作为URL的一部分).我知道我可以访问当前语言{{ LANGUAGE_CODE }},如果我{ load i18n }但有访问当前类似的方式现场

我想我可以to_locale()在视图逻辑中使用并将其放在模板的上下文中,但我正在寻找可能是Django框架本身的一部分的更通用的东西.有这样的语法吗?

小智 33

我通过在模板中包含以下代码解决了这个问题

{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
Run Code Online (Sandbox Code Playgroud)

并且变量LANGUAGE_CODE具有您想要的值(有关示例用法,另请参阅django docs).

  • LANGUAGE_CODE与区域设置名称不同,如问题中所述.将"en-gb"与"en_GB"进行比较.它们采用不同的标准格式. (9认同)
  • 这与仅使用问题中所述的“{{ LANGUAGE_CODE }}”有何不同?我在两种情况下都得到相同的输出。 (2认同)

Ism*_*awi 9

您可能希望编写自己的上下文处理器,它将调用to_locale并自动使用结果填充上下文 - 它就是这样的.

from django.utils.translation import to_locale, get_language
def locale(request):
    return {'LOCALE': to_locale(get_language())}
Run Code Online (Sandbox Code Playgroud)