我需要在 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
调用中的消息,因为这样做我将无法查看代码来构建消息目录。
答案 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)
返回原始字符串。就我而言,我只存储一条消息:就足够了,我只记录最后一条。最坏的情况是返回翻译后的味精,而不是原始味精。