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

时间:2021-02-23 10:43:42

标签: python gettext

我需要在 python 中取消翻译一条消息。我的来源是英语,我使用 gettext 翻译该字符串,比如法语。我需要“返回”到英文的原始字符串。以某种方式可能吗?

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

示例:

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 调用中的消息,因为这样做我将无法查看代码来构建消息目录。

1 个答案:

答案 0 :(得分:0)

感谢@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) 返回原始字符串。就我而言,我只存储一条消息:就足够了,我只记录最后一条。最坏的情况是返回翻译后的味精,而不是原始味精。

相关问题