Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django项目的同一个文件中使用ugettext和ugettext_lazy_Python_Django_Django Admin - Fatal编程技术网

Python 在Django项目的同一个文件中使用ugettext和ugettext_lazy

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

我正在翻译一个Django项目。几乎一切都很好。我只是无法让django收集标记有
(下划线)以外内容的字符串

让我再解释一下:按照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")