Skip to content

Commit

Permalink
cache supported languages in order to make preferences dialog open fa…
Browse files Browse the repository at this point in the history
…ster
  • Loading branch information
wwmayer committed Oct 23, 2018
1 parent 409fec0 commit 7c4ab45
Showing 1 changed file with 9 additions and 12 deletions.
21 changes: 9 additions & 12 deletions src/Gui/Language/Translator.cpp
Expand Up @@ -105,6 +105,7 @@ class TranslatorP
public:
std::string activatedLanguage; /**< Active language */
std::map<std::string, std::string> mapLanguageTopLevelDomain;
TStringMap mapSupportedLocales;
std::list<QTranslator*> translators; /**< A list of all created translators */
QStringList paths;
};
Expand Down Expand Up @@ -177,34 +178,30 @@ Translator::~Translator()

TStringList Translator::supportedLanguages() const
{
// List all .qm files
TStringList languages;
QDir dir(QLatin1String(":/translations"));
for (std::map<std::string,std::string>::const_iterator it = d->mapLanguageTopLevelDomain.begin();
it != d->mapLanguageTopLevelDomain.end(); ++it) {
QString filter = QString::fromLatin1("*_%1.qm").arg(QLatin1String(it->second.c_str()));
QStringList fileNames = dir.entryList(QStringList(filter), QDir::Files, QDir::Name);
if (!fileNames.isEmpty())
languages.push_back(it->first);
}
TStringMap locales = supportedLocales();
for (auto it : locales)
languages.push_back(it.first);

return languages;
}

TStringMap Translator::supportedLocales() const
{
if (!d->mapSupportedLocales.empty())
return d->mapSupportedLocales;

// List all .qm files
TStringMap languages;
QDir dir(QLatin1String(":/translations"));
for (std::map<std::string,std::string>::const_iterator it = d->mapLanguageTopLevelDomain.begin();
it != d->mapLanguageTopLevelDomain.end(); ++it) {
QString filter = QString::fromLatin1("*_%1.qm").arg(QLatin1String(it->second.c_str()));
QStringList fileNames = dir.entryList(QStringList(filter), QDir::Files, QDir::Name);
if (!fileNames.isEmpty())
languages[it->first] = it->second;
d->mapSupportedLocales[it->first] = it->second;
}

return languages;
return d->mapSupportedLocales;
}

void Translator::activateLanguage (const char* lang)
Expand Down

0 comments on commit 7c4ab45

Please sign in to comment.