繁体   English   中英

带有变量的PyQt5国际化问题

[英]PyQt5 internationalization issue with variables

我正在尝试将我的申请从芬兰语翻译成英语。 我查看了Riverbank的简短文档,并使其大部分正常工作。 在运行应用程序之前,我打电话给:

translator = QTranslator()
translator.load("gui/translations/mainwindow.qm")
app = QApplication(sys.argv)
app.installTranslator(translator)

如果我在代码上输入以下内容,该应用程序将正确翻译大多数文本: QCoreApplication.translate("setapikeyheading", "Aseta tunnisteavain")

现在,我的应用程序很少出现在不同上下文中可能会出现相同错误消息的情况。 我喜欢DRY,所以我设置了一些“常量”作为静态变量:

_UNKNOWN_ERROR = QCoreApplication.translate("unknown_error", "Tuntematon virhe: ")

然后,我运行pylupdate5并用Linguist翻译了字符串。 但是,在运行时,这些消息不会被翻译,而是仍然显示芬兰语原始文本。

为什么以及如何解决? 我有一个预感,它与上下文有关,但是由于我无法找到有关PyQt翻译的任何深入文档(Riverbank的语言非常模糊),因此我还没有弄清楚。

另外,考虑到Riverbank建议使用translation()而不是tr(),我应该如何使用PyQt翻译Designer生成的UI?

看来我发现了上下文问题的骇客。 Qt语言学家用来定义翻译的.ts文件和上下文中的<location filename="messages.py" line="9"/>行使我推断出源文件中字符串的实际位置很重要。

尽管我的问题中的变量不起作用,但根据Ling​​uist / QTranslate,函数似乎可以保持上下文不变,因此可以起作用:

def unknown_error(self):
    return QCoreApplication.translate("unknown_error", "Tuntematon virhe: ")

要显示文本,我只需要调用print(messages.unknown_error()) 对我来说,这感觉很像黑客,但确实有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM