如何使用 gettext 使 QML 文件可翻译

如何使用 gettext 使 QML 文件可翻译

我想写一篇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 的目的。

相关内容