Python 在Django项目的同一个文件中使用ugettext和ugettext_lazy
我正在翻译一个Django项目。几乎一切都很好。我只是无法让django收集标记有Python 在Django项目的同一个文件中使用ugettext和ugettext_lazy,python,django,django-admin,Python,Django,Django Admin,我正在翻译一个Django项目。几乎一切都很好。我只是无法让django收集标记有(下划线)以外内容的字符串 让我再解释一下:按照doc的规定,我使用的是ugettext和ugettext\u lazy。我想我已经很清楚为什么应该在哪里使用ugettext\u lazy,但是在一些模型中,我可以在一个地方使用ugettext,在另一个地方使用ugettext\u lazy(例如,因为第一个是在用户发出请求时才请求的函数中,第二个是模型定义的一部分)(例如字段名)) 所以我就是这样做的 from
(下划线)以外内容的字符串
让我再解释一下:按照doc的规定,我使用的是ugettext
和ugettext\u lazy
。我想我已经很清楚为什么应该在哪里使用ugettext\u lazy
,但是在一些模型中,我可以在一个地方使用ugettext
,在另一个地方使用ugettext\u lazy
(例如,因为第一个是在用户发出请求时才请求的函数中,第二个是模型定义的一部分)(例如字段名))
所以我就是这样做的
from django.utils.translations import ugettext as _
from django.utils.translations import ugettext_lazy as _l
class MyModel():
myfield = CharField(..., verbose_name=_l("My Field"), ...)
# Here it is needed to use the lazy version
def edit_my_model():
msg = _('You are going to edit this model')
# For performance, I prefer to use the non-lazy version when I can
....
只要我有带所有翻译的.po文件,一切都正常。但我的问题是这些翻译都在.po文件中。事实上,当我运行django admin makemessages
收集所有标记的字符串时,它只收集“非惰性”字符串(用标记的字符串)甚至删除我以前手动添加的那些
有人知道告诉django admin也收集ugettext\u惰性标记字符串吗?或者我会被迫在我的文件中只包含ugettext\u惰性as
(并替换所有非惰性字符串)
Thx问题在于\u l
别名
只需导入ugettext\u lazy
,无需任何别名:
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy
short_description = _("Price")
caption=ugettext_lazy("Copy link")