1

我想为每种语言使用QCoreApplication::installTranslator几个不同的.qm文件来更改语言(项目的不同部分导致不同的 .qm 文件)。

可以使用多个 .qm 文件:

QCoreApplication::installTranslator(QTranslator *translationFile)
可以安装多个翻译文件。翻译按安装时的相反顺序搜索,因此首先搜索最近安装的翻译文件,最后搜索安装的第一个翻译文件。

但是,如果我不删除年长的翻译人员,他们仍然是翻译的候选者。即使他们是最近安装较少的翻译器。

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

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

4

1 回答 1

0

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

// 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();
于 2017-09-06T10:13:17.243 回答