Noop 用例
(u)gettext_noop
允许你将字符串标记为可翻译而无需实际翻译。
一个典型的用例是当你想为开发人员记录消息时(英文),但也希望将它显示给客户端(以所请求的语言)。你可以将变量传递给 gettext
,但其内容不会被发现为可翻译字符串,因为根据定义,它是变量。。
# THIS WILL NOT WORK AS EXPECTED
import logging
from django.contrib import messages
logger = logging.getLogger(__name__)
error_message = "Oops, something went wrong!"
logger.error(error_message)
messages.error(request, _(error_message))
错误消息不会出现在 .po
文件中,你必须记住它是否存在以手动添加它。要解决此问题,你可以使用 gettext_noop
。
error_message = ugettext_noop("Oops, something went wrong!")
logger.error(error_message)
messages.error(request, _(error_message))
现在生成字符串 Oops, something went wrong!
将在 .po
文件中被发现并可用。对于开发人员,错误仍将以英语记录。