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

标签 python windows translation gettext

这段特殊的代码在 Linux 上运行良好,但在 Windows 上运行不佳:

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

代码来自 here

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

有什么想法吗?

最佳答案

Python 中的标准 gettext 模块不使用来自 Windows 设置的标准语言设置,而是依赖于环境变量之一的存在:LANGUAGELC_MESSAGESLC_ALLLANG。 (我想说这是将 Unix/Linux 库移植到 Windows 的 slack 示例。)

上述环境变量不会出现在典型的 Windows 机器上,因为 OS Windows 和 native 应用程序使用注册表中的设置。因此,您需要从 Windows 注册表中获取语言设置并将它们放入进程环境中。

您可以为此使用我的辅助模块:https://launchpad.net/gettext-py-windows

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

因此,如果有问题的应用程序不是您的,您可以执行以下操作。像往常一样使用 python setup.py install 安装我的 gettext 助手。然后在 locale.setlocale(locale.LC_ALL, '') 之前添加这些行:

import gettext_windows
gettext_windows.setup_env()

就这些。

关于Python:gettext 不会在 Windows 上加载翻译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678174/

相关文章:

python - 在python中显示对象的属性

c++ - 不显示由 CreateFile() 函数创建的文本文件

javascript - 我可以将 onclick 用于第二个事件吗?

python - 如何在 Django 应用程序中安装翻译 ".po"?

python - 如何控制python中迭代器结果的顺序

jquery - Django 。 ajax调用后数量不会增加

python - 在 Python 中读取文件并绘制 CDF

c# - Windows 服务器上的 Hadoop

c++ - CBT_CREATEWND 结构名称无效

arrays - 使用 Fortran 中的序列初始化数组