現在、PythonとtkinterでクロスプラットフォームのGUIアプリケーションを開発中です。tkinterを強制的に「話す」英語
私はドイツ語ですが、すべてのボタンラベルを英語で表示したいと思います。今のところ、tkMessageBoxes
のメッセージは英語ですが、button labels
とfile dialog boxes
はドイツ語です。
英語のラベルのみをPython/tkinterに強制的に適用する方法はありますか?
現在、PythonとtkinterでクロスプラットフォームのGUIアプリケーションを開発中です。tkinterを強制的に「話す」英語
私はドイツ語ですが、すべてのボタンラベルを英語で表示したいと思います。今のところ、tkMessageBoxes
のメッセージは英語ですが、button labels
とfile dialog boxes
はドイツ語です。
英語のラベルのみをPython/tkinterに強制的に適用する方法はありますか?
私は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()
設定した場合、Tclはロケールを初期化するためにLANG
環境変数の値が使用されます。したがって、LANG=en
を設定すると、英語のロケールが取得されます。これが設定されていない場合は、Windows上でレジストリを調べて、使用中のロケールを識別し、そのロケールを設定します。これを行うTclコードはmsgcat.tclファイル(registry
を検索)で見つけることができます。
環境から順にLC_ALL
,LC_MESSAGES
またはLANG
の順で使用されます。
スクリプト内で 'LC_ALL'を' locale.setlocale(LC_ALL、 'en_US.utf8') 'に変更したとき、ボタンはフランス語(デフォルトロケール)のままです。しかし、私が 'LANG = en 'をしたとき、ボタンは英語であった。 python myscript.py'を実行します。 –
よろしくお願いします。このような状況(標準的なもののためのカスタムメッセージボックスのコーディングや、Windowsのレジストリへの潜入)では、私はさまざまな国で一貫した外観を持たずに暮らすことができると思います。 – Grendel
ラベルはドイツ語でどういう意味ですか?ソースに英語を入力するとドイツ語が出ますか?サンプルコードを提供してください。 – kabanus
あなたが何らかの翻訳ライブラリを使用していない限り、あなたが入力したものは何でも表示されます。もっと良いアイデアを得るためにあなたのソースを提供してください –
「はい」または「いいえ」とラベル付けされたボタンは「Ja」und「Nein」またはファイルダイアログボックスがドイツ語で、プログラム自体は完全に英語です。あるいは、もっと正確に言えば、すべてのテキスト、メッセージなどは英語で書かれているため英語で書かれています。 – Grendel