为什么 Django 在 f 字符串中使用 gettext 时会从 django.po 中删除翻译

问题描述 投票:0回答:1

出于某种奇怪的原因,如果我在格式化字符串文字(F 字符串)中使用

django.po
gettext
,Django 会从
gettext_lazy
文件中删除翻译!

例如:

from django.contrib.admin import admin
from django.utils.translation import gettext_lazy as _

class fooAdmin(admin.ModelAdmin):
    def bar(self, foo):
        return format_html(f'''{_("Variable")}: {value1}<br />''')

当我通过

python manage.py makemessages --all --symlinks
更新消息时,Django 会从
Variable
翻译文件中删除
django.po
,只要
Variable
不在上面的代码之外的任何其他地方使用!

这是为什么?

python django gettext
1个回答
0
投票

这是 Django 翻译机器使用的

xgettext
的限制; (截至撰写本文时)它还不支持 Python f 字符串,因此不知道如何从其中提取字符串。请参阅 Django 文档中本节的结尾。

它从

django.po
文件中消失的原因是,当以前存在的源字符串消失时(因为
xgettext
不再看到它,所以它在这里有效地执行),它要么在末尾变成注释过时的字符串.po 文件,或将
--no-obsolete
参数设置为
makemessages
,完全删除。

© www.soinside.com 2019 - 2024. All rights reserved.