языковой стандарт Python для GTK не работает на Windows - PullRequest
4 голосов
/ 10 августа 2011

У меня есть Python 2.7 и pygtk.Я пытаюсь установить язык локали для gtk в моем приложении, но не повезло.Мои окна на словацком языке, и я хотел бы, чтобы в моем приложении были надписи на английском.Как это решить?

Я пробовал это, но не повезло (все метки все еще на словацком языке): </p> <pre><code>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 голосов
/ 11 августа 2011

В наши дни это становится распространенным вопросом и, вероятно, должно стать FAQ по PyGTK. Посмотрите, например, отчет об ошибке PyGTK

Короче говоря, вы упускаете множество деталей. Например:

1) Начиная с Python 2.4, в Windows, присваивая значения только os.environ изменяет копию переменных среды, которыми управляет Python и больше не имеет любой эффект на копию, поддерживаемую библиотекой C (msvcr90 для Python, msvcrt для различных GTK + связанных DLL).

2) После того, как вы позаботились о вышеперечисленном, вам также необходимо настройка libintl. Это означает, что вам нужно bindtextdomain () и bind_textdomain_codeset () и intl.dll, и модуль gettext Python.

Возможно, сейчас я не помню еще кое-что, но вы могли бы взять посмотрите на мой elib.intl модуль, написанный специально для того, что вы пытаетесь делать (и больше). Когда у вас это работает, вы можете просто установить ЯЗЫК переменная окружения C для использования по умолчанию американского английского.

Вы можете сделать это либо из файла .bat или .cmd, либо с помощью os.environ ['LANGUAGE'] = 'C', пожалуйста Вы импортируете elib.intl.

...