【问题标题】:Context Menu not displaying correct language with PyQt5上下文菜单未使用 PyQt5 显示正确的语言
【发布时间】:2018-01-08 20:46:01
【问题描述】:

当我尝试使用 PyQt5 创建 Qt 应用程序时,我注意到 QPlainTextEdit 标准上下文菜单以 English 显示,这不是我系统的语言(葡萄牙语),尽管它的语言环境是从其父小部件正确继承的.这是预期的行为吗?如果是这样,我怎样才能添加翻译而不必重写该上下文菜单中已经存在的功能(如剪切/复制/粘贴)?

示例

此程序重现上述行为;它显示一个窗口(因此textEditor.locale().language() 与QLocale.Portuguese 具有相同的值)但上下文菜单以英文显示。

import sys
from PyQt5.QtWidgets import QApplication, QPlainTextEdit, QMainWindow
from PyQt5.QtCore import QLocale

def main():
    app = QApplication(sys.argv)

    window = QMainWindow()  

    assert(window.locale().language() == QLocale.Portuguese)    
    textEditor = QPlainTextEdit(window)

    assert(textEditor.locale().language() == QLocale.Portuguese)
    window.setCentralWidget(textEditor)
    window.show()
    sys.exit(app.exec_())


if __name__ == '__main__':
    main()

【问题讨论】:

    标签: python qt pyqt pyqt5


    【解决方案1】:

    您需要安装QTranslator 来为您的系统语言环境添加翻译。

    import sys
    from PyQt5.QtWidgets import QApplication, QPlainTextEdit, QMainWindow
    from PyQt5.QtCore import QLocale, QTranslator, QLibraryInfo
    
    def main():
        app = QApplication(sys.argv)
    
        # Install provided system translations for current locale
        translator = QTranslator()
        translator.load('qt_' + QLocale.system().name(), QLibraryInfo.location(QLibraryInfo.TranslationsPath))
        app.installTranslator(translator)
    
        window = QMainWindow()
    
        assert(window.locale().language() == QLocale.Portuguese)
        textEditor = QPlainTextEdit(window)
    
        assert(textEditor.locale().language() == QLocale.Portuguese)
        window.setCentralWidget(textEditor)
        window.show()
        sys.exit(app.exec_())
    
    
    if __name__ == '__main__':
        main()
    

    【讨论】:

    • 虽然translator.load返回了True,这似乎表示语言已正确加载,但上下文菜单仍为英文:(
    • 断言语句在这里没有意义:设置翻译器不会改变语言环境。
    • @danielbb。葡萄牙语的翻译文件似乎还没有完全移植到 qt5。如果您尝试使用 pyqt4,您将看到翻译按预期工作。
    • @ekhumoro 哦,好吧,你是对的。我尝试加载波兰语翻译文件并且它有效。我想我现在会在我的项目中跳过这个翻译。谢谢大家
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2015-09-07
    • 2020-05-01
    • 1970-01-01
    相关资源
    最近更新 更多