QTranslator 没有在 PyQt5 中持久安装
Posted
技术标签:
【中文标题】QTranslator 没有在 PyQt5 中持久安装【英文标题】:QTranslator not installing persistently in PyQt5 【发布时间】:2018-03-17 11:32:50 【问题描述】:我正在使用 PyQt5 开发一个应用程序,我遇到了与框架的 i18n 函数相关的问题,特别是所有与 QTranslator 相关的代码。
正如文档所说,我正在使用 QTranslator 对象来加载已编译的 .qm 文件,如下所示:
tr_object = QTranslator()
tr_object.load(current, "lang")
QCoreApplication.installTranslator(tr_object)
问题在于它似乎只是“临时”安装它,即如果我在之后立即调用 translate() 它可以工作,但是就好像翻译器被立即卸载了。
我目前(丑陋的)解决方法是用包装器替换 QCoreApplication 中的 translate() 函数,该包装器每次都重新安装翻译器,但这会产生非常大的开销,从而减慢一切。
我也尝试过使用我的 QApplication 实例而不是静态 QCoreApplication,同样的问题。 QT_TR_NOOP 宏也不起作用。
【问题讨论】:
@ekhumoro 哦。好。哈哈。我觉得我好笨。你能把你的评论放在答案中吗?这样我就可以接受了 【参考方案1】:Qt 不拥有翻译器的所有权,因此您需要在 python 端保留对它的引用以阻止它被垃圾收集。
【讨论】:
以上是关于QTranslator 没有在 PyQt5 中持久安装的主要内容,如果未能解决你的问题,请参考以下文章
为啥我需要一个 QTranslator 来在 Windows 上的 QMessageBox 中本地化按钮文本?