我正致力于翻译Django项目。几乎一切都很好。我只是不能让django收集标有_
(下划线)之外的字符串。
让我再解释一下:正如文件规定的那样,我使用ugettext
和ugettext_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
答案 0 :(得分:0)
我有同样的问题。 在测试期间,我找到了针对这种情况的解决方案:
from django.utils.translation import ugettext as _
from django.utils.translation import ugettext_lazy
short_description = _("Price")
caption=ugettext_lazy("Copy link")