如何取消翻译用 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,而不是原始消息。
我需要取消翻译 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,而不是原始消息。