Python:gettext不会在Windows上加载翻译

这段代码在Linux上运行得非常好,但在Windows上却不行:

locale.setlocale(locale.LC_ALL, '') gettext.bindtextdomain('exposong', LOCALE_PATH) gettext.textdomain('exposong') 

代码从这里

即使我指定locale.setlocale (我尝试不同的格式)的区域设置它不起作用。 一个问题可能是环境variables中没有设置语言环境(但是我使用德语Windows版本;在XP和Vista上testing)。 如果我在命令行上"Set Lang=de_DE" ,一切都按预期工作。

有任何想法吗?

Solutions Collecting From Web of "Python:gettext不会在Windows上加载翻译"

Python 中的标准gettext模块不使用 Windows设置中的startdard语言设置,而是依赖于存在以下环境变量之一: LANGUAGELC_MESSAGESLC_ALLLANG 。 (我会说这是Unix / Linux库到Windows的松散移植的例子。)

上面提到的环境变量在典型的Windows机器上不存在,因为OS Windows和本地应用程序使用注册表中的设置。 所以你需要从Windows注册表中获取语言设置,并把它们放到过程环境中。

你可以使用我的帮手模块: https : //launchpad.net/gettext-py-windows

这个助手从Windows设置获取语言设置,并为当前进程设置LANG变量,所以gettext可以使用这个设置。

所以,如果有问题的应用程序不是你的,你可以做以下的事情。 像往常一样安装我的gettext助手与python setup.py install 。 然后在locale.setlocale(locale.LC_ALL, '')之前添加这些行:

 import gettext_windows gettext_windows.setup_env() 

就这样。

用户bialix的解释是正确的。 但是,而不是使用另一个模块,这为我工作:

 if sys.platform.startswith('win'): import locale if os.getenv('LANG') is None: lang, enc = locale.getdefaultlocale() os.environ['LANG'] = lang 

也就是说,从语言环境模块获取语言环境并设置环境变量。

它只在Windows 7上测试过,所以请在使用前检查其他版本。