Как я могу удалить все QTranslator из приложения?

Я хочу изменить язык с помощью QCoreApplication::installTranslator с несколькими разными .qm файлы для каждого языка (разные части проекта приводят к разным файлам.qm).

Можно использовать более одного файла.qm:

QCoreApplication:: installTranslator (QTranslator * translationFile)
Можно установить несколько файлов перевода. Переводы ищутся в обратном порядке, в котором они были установлены, поэтому сначала выполняется поиск самого последнего установленного файла перевода, а поиск первого установленного файла перевода - последним.

Но если я не уберу старых переводчиков, они все равно будут кандидатами на перевод. Даже при том, что они будут менее недавно установленными переводчиками.

Как я могу очистить любой файл, загруженный ранее, перед загрузкой нужных?

Единственный способ, которым я вижу, - это сохранить установленные мной указатели и удалить их один за другим, когда я хочу измениться, но есть ли что-то более простое?

1 ответ

Решение

Я веду список установленных переводчиков:

// 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();
Другие вопросы по тегам