2016-12-12 9 views
0

現在、PythonとtkinterでクロスプラットフォームのGUIアプリケーションを開発中です。tkinterを強制的に「話す」英語

私はドイツ語ですが、すべてのボタンラベルを英語で表示したいと思います。今のところ、tkMessageBoxesのメッセージは英語ですが、button labelsfile dialog boxesはドイツ語です。

英語のラベルのみをPython/tkinterに強制的に適用する方法はありますか?

+0

ラベルはドイツ語でどういう意味ですか?ソースに英語を入力するとドイツ語が出ますか?サンプルコードを提供してください。 – kabanus

+0

あなたが何らかの翻訳ライブラリを使用していない限り、あなたが入力したものは何でも表示されます。もっと良いアイデアを得るためにあなたのソースを提供してください –

+0

「はい」または「いいえ」とラベル付けされたボタンは「Ja」und「Nein」またはファイルダイアログボックスがドイツ語で、プログラム自体は完全に英語です。あるいは、もっと正確に言えば、すべてのテキスト、メッセージなどは英語で書かれているため英語で書かれています。 – Grendel

答えて

0

私はGUIの言語を変更するTCLコマンドが見つかりました:

EDITを:それはLinuxではなく、ウィンドウで動作するので、私はそれがすべてのプラットフォームで動作させるために見る唯一の選択肢は、書き換えることですカスタムメッセージボックス。 LinuxとWindowsの両方で

import tkinter as tk 
import tkinter.messagebox as mbox 

root = tk.Tk() 

def english(): 
    root.tk.eval('::msgcat::mclocale en') 
    mbox.askyesno('Messagebox', 'Buttons in English') 

def german(): 
    root.tk.eval('::msgcat::mclocale de') 
    mbox.askyesno('Messagebox', 'Buttons in German') 

tk.Button(root, text='English messagebox', command=english).pack() 
tk.Button(root, text='German messagebox', command=german).pack() 

root.mainloop() 
+0

私にとってはうまくいかず、 'mbox.askyesno'ボタンは英語で書かれていました。 – martineau

+0

私のために働いていますが、Linuxを使用しています –

+1

Windows上のTkは、yesnoやその他のダイアログ用の標準Windows MessageBox共通ダイアログを使用しています。これらはシステムによって提供されるため、Windowsからシステムロケールを取得します。 Tkはメッセージボックスダイアログのボタンのテキストをまったく指定することはできません。ちょうど一連のIDからボタンを選択するだけです。 – patthoyts

0

設定した場合、Tclはロケールを初期化するためにLANG環境変数の値が使用されます。したがって、LANG=enを設定すると、英語のロケールが取得されます。これが設定されていない場合は、Windows上でレジストリを調べて、使用中のロケールを識別し、そのロケールを設定します。これを行うTclコードはmsgcat.tclファイル(registryを検索)で見つけることができます。

環境から順にLC_ALL,LC_MESSAGESまたはLANGの順で使用されます。

+0

スクリプト内で 'LC_ALL'を' locale.setlocale(LC_ALL、 'en_US.utf8') 'に変更したとき、ボタンはフランス語(デフォルトロケール)のままです。しかし、私が 'LANG = en 'をしたとき、ボタンは英語であった。 python myscript.py'を実行します。 –

+0

よろしくお願いします。このような状況(標準的なもののためのカスタムメッセージボックスのコーディングや、Windowsのレジストリへの潜入)では、私はさまざまな国で一貫した外観を持たずに暮らすことができると思います。 – Grendel

関連する問題