PyQt:翻译标准按钮

4

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

4个回答

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_())

5
最快的方法类似于这样:
mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
mymessagebox.button(mymessagebox.No).setText("No, thanks.")

查看QMessageBox文档以获取所有可能的标准按钮


1
好的,这并不是我需要的 - 我正在使用问题方法,我无法真正访问QMessageBox实例来设置此文本。我能以其他方式实现这个吗? - gruszczy

3

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


不,我更喜欢让它们自动翻译。但我不知道如何实现这一点。 - gruszczy
你使用的是哪个操作系统?你尝试过使用不同的语言登录吗? - Isaiah
Ubuntu 9.10 我的一切都是波兰语。 - gruszczy

0
如果您想要将"Yes/No"翻译成当前语言,通常设置系统语言就足够了。否则可以尝试使用Natim的建议。
如果您需要自定义文本:像question()等静态方法不允许自定义按钮文本。这很不幸,因为"Yes"/"No"对话框被认为是不好的风格(它们没有描述性,必须读整个消息,并且很容易误解什么是Yes,什么是No,从而意外地否定它们)。对于自定义文本,您必须直接使用QMessageBox。我建议编写自己的静态方法,以接受可选的按钮文本。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接