gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:28:49 25 4
gpt4 key购买 nike

我正在翻译一个 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 _ (并替换所有非惰性字符串)?

谢谢

最佳答案

问题是 _l 别名。

只导入 ugettext_lazy 没有任何别名:

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

short_description = _("Price")

caption=ugettext_lazy("Copy link")

关于python - 在 Django 项目的同一个文件中使用 ugettext 和 ugettext_lazy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49721410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com