有一个 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);
如何打破这个循环,以便在应用程序中使用应用程序翻译而在插件中使用插件的翻译?