2009-11-10 54 views
3

如何從QMessageBox輕鬆翻譯標準按鈕(是,否)?我不能在這些參數上使用self.tr,所以我想以其他一些簡單的方式實現它。我必須使用整個翻譯系統嗎?PyQt:翻譯標準按鈕

回答

9

這裏是我做的事:

首先,你需要將qt_LOCALE.qm文件複製到你的應用程序目錄。我的是:

cp /usr/share/qt4/translations/qt_fr.qm . 

其次,你需要爲你的應用程序加載一個翻譯器。

application = QApplication(argv) 

locale = QLocale.system().name() 
qtTranslator = QTranslator() 
if qtTranslator.load("qt_"+locale): 
    application.installTranslator(qtTranslator) 

main_window = QMainWindow() 
main_window.show() 

exit(application.exec_()) 
3

你確定你有他們自己翻譯?在其他工具包中,標準按鈕會自動轉換爲用戶正在使用的語言。

+0

不,我寧願讓它們自動翻譯。但我不知道如何做到這一點。 – gruszczy 2009-11-12 15:11:54

+0

你在使用什麼操作系統?您是否嘗試過使用其他語言登錄? – 2009-11-12 16:21:36

+0

Ubuntu 9.10我有一切在波蘭。 – gruszczy 2009-11-13 12:13:18

2

最快的方法是這樣的:

mymessagebox.button(mymessagebox.Yes).setText("Yes, please!") 
mymessagebox.button(mymessagebox.No).setText("No, thanks.") 

見QMessageBox提示文檔所有可能standard buttons

+0

這看起來不錯。謝謝。 – gruszczy 2009-11-19 13:47:40

+1

好吧,這不是我所需要的 - 我使用的是問題方法,我無法真正訪問QMessageBox實例來設置此文本。我能以其他方式實現嗎? – gruszczy 2009-11-23 11:19:31

0

如果您想要將Yes/No翻譯成當前語言,通常設置系統語言應該足夠了。否則請嘗試使用Natim的建議。

如果你想自定義文本:靜態方法,如問題()等不允許的自定義按鈕文本。這是不幸的,因爲「是」/「否」對話被認爲是不好的風格(它們不是描述性的,必須閱讀整個信息,而且容易誤解是什麼意思,是什麼意思,否則意外否定它們)。對於自定義文本,您必須直接使用QMessageBox。我建議編寫自己的靜態方法來接受可選的按鈕文本。