【问题标题】:PyQt: translating standard buttonsPyQt:翻译标准按钮
【发布时间】:2009-11-10 17:03:15
【问题描述】:

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

【问题讨论】:

    标签: python qt pyqt translation button


    【解决方案1】:

    我是这样做的:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 不,我希望它们自动翻译。但我不知道如何实现这一点。
      • 您使用的是什么操作系统?您是否尝试过使用其他语言登录?
      • Ubuntu 9.10 我的一切都在波兰语中。
      【解决方案3】:

      最快的方法是这样的:

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

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

      【讨论】:

      • 好的,这不是我真正需要的——我正在使用问题方法,我无法真正访问 QMessageBox 实例来设置此文本。我可以通过其他方式实现这一目标吗?
      【解决方案4】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-22
        • 1970-01-01
        • 2017-12-22
        • 2018-05-13
        • 2016-08-20
        • 2015-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多