如何从应用程序中删除所有 QTranslator?

How can I remove all QTranslator from the app?

我想使用 QCoreApplication::installTranslator 更改语言,每种语言都有几个不同的 .qm 文件(项目的不同部分产生不同的 .qm 文件)。

可以使用多个 .qm 文件:

QCoreApplication::installTranslator(QTranslator *translationFile)
Multiple translation files can be installed. Translations are searched for in the reverse order in which they were installed, so the most recently installed translation file is searched first and the first translation file installed is searched last.

但是,如果我不remove老译者,他们仍然是翻译的候选人。即使他们是最近安装的翻译器。

如何在加载需要的文件之前清除之前加载的任何文件?

我看到的唯一方法是保留我安装的指针并在我想更改时将它们一个一个地删除,但是有没有更直接的方法?

我维护一个已安装翻译器的列表:

// Install the translators
for (auto fileName : qAsConst(fileList)) {
    auto translator = QSharedPointer<QTranslator>::create();
    translator->load(fileName);

    m_currentTranslators << translator;
    QCoreApplication::installTranslator(translator.data());
}

然后将它们全部删除:

for (auto translator : qAsConst(m_currentTranslators)) {
    QCoreApplication::removeTranslator(translator.data());
}
m_currentTranslators.clear();