PyQt:翻译标准按钮

时间:2009-11-10 17:03:15

标签: python qt pyqt translation button

如何从QMessageBox轻松翻译标准按钮(是,否)?我不能在这些参数上使用self.tr,所以我想以其他简单的方式实现它。我是否必须使用整个翻译系统?

4 个答案:

答案 0 :(得分:10)

我是这样做的:

首先,您需要将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_())

答案 1 :(得分:3)

你确定要自己翻译吗?在其他工具包中,标准按钮会自动转换为用户正在使用的语言。

答案 2 :(得分:2)

最快捷的方式是:

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

请参阅QMessageBox文档,了解所有可能的standard buttons

答案 3 :(得分:0)

如果您希望将Yes / No翻译成当前语言,通常设置系统语言就足够了。否则尝试Natim的建议。

如果您想要自定义文本:问题()等静态方法不允许自定义按钮文本。这是不幸的,因为“是”/“否”对话被认为是不好的风格(它们不具有描述性,必须阅读整个信息,并且容易误解是什么意味着是,什么意味着否,并且意外地否定了它们)。对于自定义文本,您必须直接使用QMessageBox。我建议编写自己的静态方法,接受可选的按钮文本。