微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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" ,一切都按预期工作。

有任何想法吗?

全球自创的对象

如何重新激活Windows上的活动程序?

Python:打破SteamCMD提示

Windows中Paint事件中的exception和访问冲突

HDFS WebUI Kerberos身份validation失败凭证无法从IE中find

通用Windows平台和SignalR(无法加载文件或程序集'System.Net,版本= 2.0.5.0)

Helvetica Neue Pro在Windows中是可读的CSS屏幕字体?

IE8将dynamiciframe内容从caching重新加载到错误的iframe中

如何从安全日志获取用户的原始login和注销事件?

无论如何有程序共享Windows资源pipe理器图标叠加?

Python 中的标准gettext模块不使用 Windows设置中的startdard语言设置,而是依赖于存在以下环境变量之一: LANGUAGE , LC_MESSAGES , LC_ALL或LANG 。 (我会说这是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上测试过,所以请在使用前检查其他版本。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐