0

有一个 Qt/QML 应用程序qsTr()用于本地化它在.qml文件中的字符串,还有一个Qt 插件(通过 加载QPluginLoader)执行相同的操作。

Text { text: qsTr("back") }

假设有一个相同的字符串,在应用程序中具有一种含义,而在插件中具有另一种含义。在同一上下文中使用的两个字符串(如组件MyWindow.qml

// plugin: "back" -> go back
// app:    "back" -> not front

当我们将不同的插件安装QTranslator到应用程序中时,它们会以相反的顺序查找,这意味着应用程序翻译被插件覆盖插件翻译被应用程序覆盖(更不用说两个插件何时可以相互覆盖)。

QCoreApplication::instance()->installTranslator(appTranslator);
QCoreApplication::instance()->installTranslator(pluginTranslator);

如何打破这个循环,以便在应用程序中使用应用程序翻译而在插件中使用插件的翻译?

4

0 回答 0