我怎样才能轻松地翻译标准按钮(是,否)从QMessageBox提示?我不能对这些参数使用self.tr,所以我想实现它在其他一些简单的方法。我一定要使用整个翻译系统?

有帮助吗?

解决方案

下面是如何我:

首先,你需要的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提示文档。

如果你想有是/否转换为当前的语言,通常设置系统语言就足够了。否则,与Natim的建议尝试。

如果您想自定义文本:静态方法,如问题()等不允许的自定义按钮文本。这是不幸的,因为“是” /“否”的对话被认为是不好的风格(他们不是描述性的,人们必须读取整个消息,它容易让人误会是什么意思是什么意思,并没有否定意外它们)。对于自定义文本,你必须直接使用QMessageBox提示。我建议编写自己的静态方法接受可选的按钮文本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top