您能解释一下ugettext
和ugettext_lazy
之间的主要区别吗?
当我尝试时...
return HttpResponse(ugettext_lazy("Hello"))
我什么都看不到,但是
return HttpResponse(ugettext("Hello"))
正常工作。
为什么?
您能解释一下ugettext
和ugettext_lazy
之间的主要区别吗?
当我尝试时...
return HttpResponse(ugettext_lazy("Hello"))
我什么都看不到,但是
return HttpResponse(ugettext("Hello"))
正常工作。
为什么?
ugettext
用于立即加载字符串的翻译。 ugettext_lazy
返回一个对象,最终可以转换为字符串。如果在正确的区域设置之前评估了ugettext_lazy
调用,则需要该对象。
ugettext_lazy
可以用于使用Unicode对象的任何地方。请仔细检查您的HTML输出,它可能看起来像这样:
<django.utils.functional...>
浏览器将其视为未识别的标签而忽略了它们。
在这种情况下,您不需要懒惰执行翻译,因为您正在立即使用字符串。如果出于某种原因确实希望继续使用ugettext_lazy,请尝试以下方法:
return HttpResponse(ugettext_lazy("Hello").encode('utf-8'))
请查看文档以获取更多信息。
models.py
中使用ugettext_lazy
更加有用。 - Sergey Orshanskiyugettext
很有用。当想要翻译类属性等(如@SergeyOrshanskiy在定义模型或表单时建议的那样)时,ugettext_lazy
更有用,这些内容在服务器启动时加载并需要延迟加载。对吗? - Eduard Luca