我正在使用
gettext
进行本地化,并将gettext()
函数安装到全局变量_
中。然而,我用于调试目的的readline控制台也使用_
作为特殊变量,用于引用上一条命令的输出。因此,每次在控制台中键入任何内容时,它都会覆盖_
变量并且我的所有本地化都失效了。
所以,我希望能够实现以下两种方式之一:
- 将
gettext()
安装到另一个变量中,或者其他本地化Python包的最佳实践方法。 - 停止Readline将上一次的输出分配给
_
变量。
以下是类中各个点的情况:
#Install gettext() to global scope
import gettext
gettext.translation('projectname', localedir=os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))+'/locales', languages=[locale]).install()
#Debug console
import code, readline
env = globals().copy()
env['self'] = self
shell = code.InteractiveConsole(env)
shell.interact()
我尝试从env
字典中删除和覆盖下划线_
(即env['_'] = None
),但不幸的是,Readline似乎无论如何都会在全局范围内设置_
。
_
一次,并在每个文件的顶部执行from mymodule.helpers import *
,那么我会很满意,但显然import *
会跳过_
函数,我想避免在每个文件的顶部放置这三行代码。现在我通过将函数命名为ï
而不是_
来实现这一点,这样做虽然可行,但似乎并不理想。 - Signum Ignitum