如何取消翻译用 gettext 翻译的消息?

How to un-translate a message translated with gettext?

我需要取消翻译 python 中的一条消息。我的来源是英文,我使用 gettext 翻译该字符串,比如法语。我需要将“return”改为英文原字符串。有可能吗?

原因如下:我在用户界面中显示了一些消息,因此需要翻译消息。相同的函数将该消息记录在数据库中(用于调试)。我想以原始形式(英文)将消息存储在数据库中。

一个例子:

alert_please( _("message to be shown and stored") )

这里是定义:

def alert_please(translated_message):
   show_the_message(translated_message)
   store_the_message(translated_message)

仅供参考,我不会翻译 show_the_message 调用中的消息,因为这样做我将无法查看构建消息目录的代码。

感谢@martineau 我以这种方式定义了自己的新 _() 函数:

reverse_dict = {}
def translate(msg_to_translate, get_ori=False):
    global reverse_dict

    if get_ori:
        return reverse_dict.get(msg_to_translate, msg_to_translate)

    translation = en.gettext(msg_to_translate)
    reverse_dict = {translation: msg_to_translate}

    return translation

import builtins
builtins.__dict__['_'] = translate

这个调用_(msg)只是翻译了消息,_(msg, True)调用了return的原始字符串。在我的例子中,我只存储一条消息:就足够了,我只记录最后一条。最坏的情况是翻译后的消息 return,而不是原始消息。