ugettext_noop 在 Django 中的用途是什么?

What's the purpose of ugettext_noop in Django?

this section of Translation | Django documentation, the function ugettext_noop中提到的是国际化的效用函数:

ugettext_noop(message)

Marks strings for translation but doesn’t translate them now. This can be used to store strings in global variables that should stay in the base language (because they might be used externally) and will be translated later.

此外,this answer 提供了其用法示例:

import logging
from django.http import HttpResponse
from django.utils.translation import ugettext as _, ugettext_noop as _noop

def view(request):
    msg = _noop("An error has occurred")
    logging.error(msg)
    return HttpResponse(_(msg))

尽管有这些文档,我仍然不明白为什么要将字符串标记为可提取以供翻译。在我看来ugettext_noop不过是一个提醒,即便如此,提醒程序员一些字符串(msg在这种情况下)稍后要翻译的目的是什么?

一旦我有一个任务来制作事件日志并将其消息存储在数据库中。它必须支持 i18n。所以首先我用 ugettext_noop 函数标记了所有事件日志消息。在这种情况下,它们在添加到数据库之前没有被翻译。但同时它们被添加到 *.po 文件中。

在此示例中,ugettextugettext_lazy 函数应仅在从数据库中提取消息后使用。