Django中的ugettext和ugettext_lazy

时间:2010-12-22 15:47:13

标签: python django

你能解释一下ugettext和ugettext_lazy的主要区别。

当我尝试

return HttpResponse(ugettext_lazy("Hello"))

我什么也没看到,但是

return HttpResponse(ugettext("Hello"))

正在运作。

为什么?

感谢。

1 个答案:

答案 0 :(得分:38)

ugettext用于加载字符串的翻译ugettext_lazy返回一个最终可以转换为字符串的对象。如果在设置正确的语言环境之前评估ugettext_lazy调用,则需要这样做。

在使用Unicode对象的地方可以使用

ugettext_lazy。仔细检查您的HTML输出,它可能如下所示:

<django.utils.functional...>

并且浏览器将其全部忽略为无法识别的标记。

在这种情况下,您不需要延迟翻译,因为您正在使用该字符串。如果你真的想因某种原因继续使用ugettext_lazy,试试这个:

return HttpResponse(ugettext_lazy("Hello").encode('utf-8'))

有关详细信息,请参阅docs