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 文件中。
在此示例中,ugettext
或 ugettext_lazy
函数应仅在从数据库中提取消息后使用。
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 文件中。
在此示例中,ugettext
或 ugettext_lazy
函数应仅在从数据库中提取消息后使用。