我需要将当前语言环境嵌入到Django模板的输出中(作为URL的一部分)。我知道我可以访问当前语言如{{ LANGUAGE_CODE }}
如果我{ load i18n }
但是有没有类似的方式来访问当前的区域设置?Django:在模板中显示当前语言环境
我想我可以在视图逻辑中使用to_locale()
并将其放在模板的上下文中,但我在寻找更通用的东西,可能是Django框架本身的一部分。有这样的语法吗?
我需要将当前语言环境嵌入到Django模板的输出中(作为URL的一部分)。我知道我可以访问当前语言如{{ LANGUAGE_CODE }}
如果我{ load i18n }
但是有没有类似的方式来访问当前的区域设置?Django:在模板中显示当前语言环境
我想我可以在视图逻辑中使用to_locale()
并将其放在模板的上下文中,但我在寻找更通用的东西,可能是Django框架本身的一部分。有这样的语法吗?
我解决了这个由包括在模板
{% load i18n %}
{% get_current_language as LANGUAGE_CODE %}
和可变LANGUAGE_CODE
下面的代码有你想要的值(见django docs为例使用)。
您可能想要write your own context processor,它会调用to_locale
并自动用结果填充上下文 - 它只会是这样的。
from django.utils.translation import to_locale, get_language
def locale(request):
return {'LOCALE': to_locale(get_language())}
我需要补充的是,上下文处理器将只在使用RequestContext时才起作用。我不是这样,我正在寻找自定义模板标签。 – urig 2011-06-17 06:38:58
我想实现我自己的custom template tag会简单地输出to_locale(get_language())
但上面的答案是更容易实现,所以我比较喜欢的。
LANGUAGE_CODE与区域设置名称不同,如问题中所述。比较“en-gb”和“en_GB”。它们采用不同的标准格式。 – trojjer 2013-06-12 08:56:33
这与在问题中提到的仅仅使用“{{LANGUAGE_CODE}}”有什么不同?在这两种情况下我都得到相同的输出。 – kasperd 2015-09-10 15:43:50