我想写一篇QtQuick基于 Python 的应用程序(皮西德) 和量子数学。
我知道 Qt 应用有自己的翻译技术,但我想坚持获取文本对于这个。我想知道是否可以:
- 在 QML 文件中标记要翻译的字符串,以便 gettext 工具可以将它们提取到文件
.pot
中 - 让 gettext 在运行时翻译 QML 文件。
我知道这是在Unity 2D 代码,用 C++ 编写,所以我想知道如何用 Python 来实现。
注意:我说的是在运行时专门使用 gettext,而不是在 gettext 和 Qt Linguist 格式之间进行转换。
答案1
一般来说,在 QT 中没有办法使用 gettext 翻译,因为该库使用内部翻译机制(Qtranslate 和 .ts 文件),如此处所述QTBUG-2404。
然而,还有一个可行的替代方案。
QT 附带了一个名为转换可用于将 .ts 文件转换为 .po 或反之亦然。
因此,您可以使用以下方法提取所有翻译:
lupdate
然后使用转换获取 po 文件:
lconvert -of po -o file.po file.ts
翻译后,你可以将 po 文件转换回 ts:
lconvert -of ts -o file.ts file.po
然后您就可以在您的软件中使用它。
更新可以用于 QT 和 QtQuick。
答案2
您可以破解 lupdate 的源代码并使用您喜欢的东西来替代 qsTr。(很容易)然后使用您破解的 lupdate + lconvert + 您自定义的 libintl 来实现使用 gettext 的目的。