Windows上GTK的Python区域设置无效

4 投票
1 回答
858 浏览
提问于 2025-04-16 23:17

我在用Python 2.7和pygtk。我想在我的应用程序中设置gtk的语言,但是没有成功。我的Windows系统是斯洛伐克语的,我希望我的应用里的按钮标签用英语。该怎么解决呢?

我试过这个方法,但还是不行(所有标签还是斯洛伐克语):

import os
os.environ['LANGUAGE'] = 'en_US'  #tried en_UK as well
os.environ['LANG'] = 'en_US'
os.putenv('en_US', 'LANG')
import locale
locale.setlocale(locale.LC_ALL, 'English_United Kingdom.1252' )

但是当我做了一个cmd文件后,这个方法就有效了:


    set LANG=en_US
    something.exe 

我到底哪里做错了呢?

1 个回答

4

最近这个问题变得很常见,可能应该成为PyGTK的常见问题解答之一。比如说,这里有一个关于PyGTK的错误报告

简单来说,你可能漏掉了很多细节。比如:

1) 从Python 2.4开始,在Windows上,给os.environ赋值只会改变Python自己管理的环境变量的副本,而不会影响C库(Python用的是msvcr90,GTK+相关的dll用的是msvcrt)维护的副本。

2) 处理完上面的事情后,你还需要特别注意配置libintl。这意味着你需要使用bindtextdomain()和bind_textdomain_codeset()来处理intl.dll和Python的gettext模块。

可能还有更多我现在想不起来的内容,但你可以看看我专门为你想做的事情(还有更多功能)写的elib.intl模块。当你把它搞定后,可以简单地把LANGUAGE环境变量设置为C,这样就会使用默认的美式英语。

你可以通过.bat或.cmd文件来做到这一点,或者在导入elib.intl之前使用os.environ['LANGUAGE'] = 'C'。

撰写回答