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

Dav*_*lla 10 internationalization qt application-development gettext qml

我想编写一个基于 Python ( PySide ) 和QMLQtQuick应用程序。

我知道 Qt 应用程序有自己的翻译技术,但我想坚持使用gettext来解决这个问题。我想知道是否可以:

  • 在某种程度上翻译标记串在QML文件的gettext工具可以解压缩到一个.pot文件
  • 在运行时让 gettext 翻译 QML 文件。

我知道这是在Unity 2D 代码中完成的,在 C++ 中,所以我想知道如何使用 Python 完成它。

注意:我说的是在运行时只使用 gettext,而不是在 gettext 和 Qt Linguist 格式之间进行转换。

Ang*_*elo 6

一般来说,没有办法在 QT 中使用 gettext 翻译,因为库使用内部翻译机制(Qtranslate 和 .ts 文件),如此处QTBUG-2404 所述

但是,有一个可行的替代方案。

QT 附带有一个名为lconvert的工具包,可用于将 .ts 文件转换为 .po,反之亦然。

因此,您可以使用以下命令提取所有翻译:

lupdate

然后使用lconvert获取一个 po 文件:

lconvert -of po -o file.po file.ts

翻译后,您可以将 po 文件转换回 ts:

lconvert -of ts -o file.ts file.po

然后你可以在你的软件中使用它。

lupdate可以同时用于 QT 和 QtQuick。