fix: switch method loadTranslators from QDirIterator to QDir

There is issue with QDirIterator not loading some of translation from resource files. Switching to QDir allows us to load all of translations.
This commit is contained in:
AlexSP0 2023-04-11 13:51:02 +04:00 committed by GitHub
parent c587a4aac9
commit 46ab925906
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -46,38 +46,28 @@ bool TranslatorStorage::loadTranslators(const QString &language)
bool TranslatorStorage::loadTranslators(const QString &language, const QString &path)
{
auto languageToLoad = language.split("-").at(0);
QString languageToLoad = language.split("-").at(0);
QDirIterator it(path, QDirIterator::Subdirectories);
while (it.hasNext())
QDir dir(path);
for (auto &entry : dir.entryList())
{
QString currentFilename = it.fileName();
if (!it.fileInfo().isFile())
{
it.next();
}
if (currentFilename.endsWith(languageToLoad + ".qm"))
if (entry.endsWith(languageToLoad + ".qm"))
{
std::unique_ptr<QTranslator> translator = std::make_unique<QTranslator>();
bool currentLoadResult = translator->load(it.fileName(), path);
if (currentLoadResult)
if (translator->load(entry, path))
{
QCoreApplication::installTranslator(translator.get());
d->translators.push_back(std::move(translator));
}
else
{
setErrorString("WARNING! Can't load translate from file: " + currentFilename);
setErrorString("WARNING! Can't load translate from file: " + entry);
return false;
}
}
it.next();
}
return true;
@ -85,8 +75,7 @@ bool TranslatorStorage::loadTranslators(const QString &language, const QString &
bool TranslatorStorage::loadQtTranslations(const QString &language, const QString &prefix)
{
return loadTranslators(QString(prefix + "%1").arg(language),
QLibraryInfo::location(QLibraryInfo::TranslationsPath));
return loadTranslators(QString(prefix + "%1").arg(language), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
}
void TranslatorStorage::clearTranslators()