翻译闭源 Qt/QML 应用程序
Translating a closed-source Qt/QML application
我有一个废弃的二进制文件,它使用Qt4+QML。 QML 文件是使用 qrc 嵌入的。由于使用该应用程序会受益的人不会说英语,因此我想翻译该应用程序。
可翻译的字符串已经用qsTr
:
标记
$ strings abplayer | grep qsTr
? qsTr("Disable auto-play next track")
: qsTr("Enable auto-play next track")
text: qsTr("Now playing");
text: qsTr("About");
message: "<small>" + qsTr("Version") + " " + appVersion + "</small><br><br>" +
qsTr("A simple audio book player.") + "<br><br>" +
qsTr("is empty")
text: qsTr("indexing")
有什么方法可以旁加载翻译吗?可执行文件是 Linux armel 二进制文件。
有两种方法:
如果应用程序使用 Qt 的动态链接副本,您应该能够弄清楚它编译时使用的确切编译器版本,然后:
- 编译您自己的二进制兼容 Qt 4 副本。
- 将捆绑的 Qt dll 替换为您的,并验证它是否仍然有效。
- 修改您的 Qt 副本以在
QApplication
构造函数中注入翻译。
您也可以直接将新的翻译文件追加到可执行文件中,并修补现有的资源目录以指向新的资源文件。
我有一个废弃的二进制文件,它使用Qt4+QML。 QML 文件是使用 qrc 嵌入的。由于使用该应用程序会受益的人不会说英语,因此我想翻译该应用程序。
可翻译的字符串已经用qsTr
:
$ strings abplayer | grep qsTr
? qsTr("Disable auto-play next track")
: qsTr("Enable auto-play next track")
text: qsTr("Now playing");
text: qsTr("About");
message: "<small>" + qsTr("Version") + " " + appVersion + "</small><br><br>" +
qsTr("A simple audio book player.") + "<br><br>" +
qsTr("is empty")
text: qsTr("indexing")
有什么方法可以旁加载翻译吗?可执行文件是 Linux armel 二进制文件。
有两种方法:
如果应用程序使用 Qt 的动态链接副本,您应该能够弄清楚它编译时使用的确切编译器版本,然后:
- 编译您自己的二进制兼容 Qt 4 副本。
- 将捆绑的 Qt dll 替换为您的,并验证它是否仍然有效。
- 修改您的 Qt 副本以在
QApplication
构造函数中注入翻译。
您也可以直接将新的翻译文件追加到可执行文件中,并修补现有的资源目录以指向新的资源文件。