我正在使用PyQt5开发应用程序,并且我遇到了与框架的i18n功能相关的问题,特别是所有与QTranslator相关的代码。
正如文档所说,我使用QTranslator对象加载已编译的.qm文件,如下所示:
tr_object = QTranslator()
tr_object.load(current, "lang")
QCoreApplication.installTranslator(tr_object)
问题在于它似乎只是暂时安装它#34;,即如果我之后立即调用translate()它可以正常工作,那么它就像翻译器立即被卸载一样。 / p>
我当前(丑陋)的解决方法是通过每次重新安装翻译器的包装器替换QCoreApplication中的translate()函数,但这会产生非常大的开销,从而减慢所有内容。
我也尝试过使用我的QApplication实例而不是静态QCoreApplication,同样的问题。 QT_TR_NOOP宏也不起作用。
答案 0 :(得分:0)
Qt并不取得翻译的所有权,因此您需要在python端保留对它的引用,以阻止它被垃圾收集。