【发布时间】:2009-11-10 17:03:15
【问题描述】:
如何轻松翻译 QMessageBox 中的标准按钮(是、否)?我不能在这些参数上使用 self.tr,所以我想以其他一些简单的方式来实现它。我必须使用整个翻译系统吗?
【问题讨论】:
标签: python qt pyqt translation button
如何轻松翻译 QMessageBox 中的标准按钮(是、否)?我不能在这些参数上使用 self.tr,所以我想以其他一些简单的方式来实现它。我必须使用整个翻译系统吗?
【问题讨论】:
标签: python qt pyqt translation button
我是这样做的:
首先您需要将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_())
【讨论】:
您确定要自己翻译吗?在其他工具包中,标准按钮会自动翻译成用户使用的语言。
【讨论】:
最快的方法是这样的:
mymessagebox.button(mymessagebox.Yes).setText("Yes, please!")
mymessagebox.button(mymessagebox.No).setText("No, thanks.")
请参阅 QMessageBox 文档了解所有可能的standard buttons。
【讨论】:
如果您想将 Yes/No 翻译成当前语言,通常设置系统语言就足够了。否则请尝试 Natim 的建议。
如果您想要自定义文本:question() 等静态方法不允许自定义按钮文本。这是不幸的,因为“是”/“否”对话框被认为是不好的风格(它们不是描述性的,人们必须阅读整个消息,并且很容易误解什么是“是”和什么是“否”并意外否定它们)。对于自定义文本,您必须直接使用 QMessageBox。我建议编写自己的静态方法,接受可选的按钮文本。
【讨论】: