2011-08-10 6 views
4

私はpython 2.7とpygtkを持っています。私はアプリケーションでgtkのロケール言語を設定しようとしていますが、運はありません。私のウィンドウはスロバキア語で書かれており、私のアプリケーションにはボタンラベルが英語で表示されます。どのようにそれを解決するには?gtkのロケールは窓では機能しません

私はこれを試していないが、運(すべてのラベルがスロバキアに残っている):

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 

私が間違って何をやっていますか?

答えて

4

これは最近よくある質問になってきており、おそらくPyGTK FAQになるはずです。 たとえば、このPyGTKを参照してください。bug report

要するに、欠落している詳細がたくさんあります。たとえば、次のように

1)のみ はPythonが管理しなくなった(Cライブラリによって維持コピー上 どんな効果を持っている環境変数のコピーを変更するはos.environに値を割り当てる、Windows上ではPython 2.4以降でPythonの場合はmsvcr90、さまざまなGTK +関連DLLの場合はmsvcrt )。

2)上記を処理したら、 libintlの設定に特別な注意を払う必要があります。つまり、bindtextdomain()と bind_textdomain_codeset()がintl.dllとPythonのgettextモジュールの両方をバインドする必要があります。

私は今覚えていないが、あなたはあなたが(そしてもっと) にしようとしている何のために特別に書かれた私のelib.intlモジュールで 見てみることができることをおそらくよりあります。それを動作させたら、LANGUAGE 環境変数をCに設定して、デフォルトのアメリカ英語を設定するだけです。

は、.batファイルまたは.cmdファイルから、またはos.environ ['LANGUAGE'] = 'C' befory から、elib.intlをインポートすることができます。

+0

こんにちはDieter、素晴らしい説明とあなたの素晴らしいモジュールをありがとう!私はあなたのモジュールを実装していますが、翻訳は正しく動作しますが、残念ながらpy2exeを使用すると問題があります。 exeファイルをクリックすると、それはエラーで終了します。トレースバック(最新の最後の呼び出し): ファイル "sss.py"、行1539、 ファイル "sss.py"、行512、__init__ ファイル "elib \ __ init__。 pyc "、行1、in ImportError:pkg_resourcesという名前のモジュールはありません---どうすればこの問題をpkg_resourcesで解決できますか?事前に感謝します – Peter

+0

ああ、py2exeの問題... Py2exeは の名前空間のパッケージをサポートしていないようで、pkg_resourcesに問題があります。 1つのオプションは、ちょうどelib /インターナショナル/ __ init__.pyファイルを取得し、 intl.pyは(あなたは「輸入国際空港」にインポートを変更し、次のようにそれを使用 を確認することとして、プロジェクト内でローカルに保存することです: "intl.install()"または "intl.install_module()"。 – dieterv

関連する問題