2011-06-15 89 views
19

我需要将当前语言环境嵌入到Django模板的输出中(作为URL的一部分)。我知道我可以访问当前语言{{ LANGUAGE_CODE }}如果我{ load i18n }但是有没有类似的方式来访问当前的区域设置Django:在模板中显示当前语言环境

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

回答

26

我解决了这个由包括在模板

{% load i18n %} 
{% get_current_language as LANGUAGE_CODE %} 

和可变LANGUAGE_CODE下面的代码有你想要的值(见django docs为例使用)。

+7

LANGUAGE_CODE与区域设置名称不同,如问题中所述。比较“en-gb”和“en_GB”。它们采用不同的标准格式。 – trojjer 2013-06-12 08:56:33

+0

这与在问题中提到的仅仅使用“{{LANGUAGE_CODE}}”有什么不同?在这两种情况下我都得到相同的输出。 – kasperd 2015-09-10 15:43:50

9

您可能想要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())} 
+0

我需要补充的是,上下文处理器将只在使用RequestContext时才起作用。我不是这样,我正在寻找自定义模板标签。 – urig 2011-06-17 06:38:58

2

我想实现我自己的custom template tag会简单地输出to_locale(get_language())但上面的答案是更容易实现,所以我比较喜欢的。

相关问题