在Django项目

时间:2018-04-08 18:39:35

标签: python django django-admin

我正致力于翻译Django项目。几乎一切都很好。我只是不能让django收集标有_(下划线)之外的字符串。

让我再解释一下:正如文件规定的那样,我使用ugettextugettext_lazy。我想我已经理解为什么以及在哪里使用ugettext_lazy,但在某些模型中我可以在一个地方使用ugettext而在另一个地方使用ugettext_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_lazy标记的字符串,或者我的文件中是否会被强制只有ugettext_lazy as _(并替换每个非懒惰的字符串)?

THX

1 个答案:

答案 0 :(得分:0)

我有同样的问题。 在测试期间,我找到了针对这种情况的解决方案

from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy

short_description = _("Price")

caption=ugettext_lazy("Copy link")