Как я могу удалить все 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();