Browse Source

Apply locale changes immediately in WebUI

adaptive-webui-19844
Chocobo1 6 years ago
parent
commit
92a4e73a22
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
  1. 16
      src/webui/webapplication.cpp
  2. 1
      src/webui/webapplication.h

16
src/webui/webapplication.cpp

@ -95,15 +95,15 @@ namespace @@ -95,15 +95,15 @@ namespace
return ret;
}
void translateDocument(QString &data)
void translateDocument(const QString &locale, QString &data)
{
const QRegExp regex("QBT_TR\\((([^\\)]|\\)(?!QBT_TR))+)\\)QBT_TR(\\[CONTEXT=([a-zA-Z_][a-zA-Z0-9_]*)\\])");
const QRegExp mnemonic("\\(?&([a-zA-Z]?\\))?");
int i = 0;
bool found = true;
const QString locale = Preferences::instance()->getLocale();
bool isTranslationNeeded = !locale.startsWith("en") || locale.startsWith("en_AU") || locale.startsWith("en_GB");
bool isTranslationNeeded = !locale.startsWith("en")
|| locale.startsWith("en_AU") || locale.startsWith("en_GB");
while (i < data.size() && found) {
i = regex.indexIn(data, i);
@ -420,7 +420,7 @@ void WebApplication::configure() @@ -420,7 +420,7 @@ void WebApplication::configure()
{
const auto pref = Preferences::instance();
m_domainList = Preferences::instance()->getServerDomains().split(';', QString::SkipEmptyParts);
m_domainList = pref->getServerDomains().split(';', QString::SkipEmptyParts);
std::for_each(m_domainList.begin(), m_domainList.end(), [](QString &entry) { entry = entry.trimmed(); });
const QString rootFolder = Utils::Fs::expandPathAbs(
@ -429,6 +429,12 @@ void WebApplication::configure() @@ -429,6 +429,12 @@ void WebApplication::configure()
m_translatedFiles.clear();
m_rootFolder = rootFolder;
}
const QString newLocale = pref->getLocale();
if (m_currentLocale != newLocale) {
m_currentLocale = newLocale;
m_translatedFiles.clear();
}
}
void WebApplication::registerAPIController(const QString &scope, APIController *controller)
@ -476,7 +482,7 @@ void WebApplication::sendFile(const QString &path) @@ -476,7 +482,7 @@ void WebApplication::sendFile(const QString &path)
// Translate the file
if (isTranslatable) {
QString dataStr {data};
translateDocument(dataStr);
translateDocument(m_currentLocale, dataStr);
data = dataStr.toUtf8();
m_translatedFiles[path] = {data, lastModified}; // caching translated file

1
src/webui/webapplication.h

@ -141,4 +141,5 @@ private: @@ -141,4 +141,5 @@ private:
QDateTime lastModified;
};
QMap<QString, TranslatedFile> m_translatedFiles;
QString m_currentLocale;
};

Loading…
Cancel
Save