summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrique <henrique@sw.eng.br>2022-02-07 11:35:32 -0300
committerkali kaneko (leap communications) <kali@leap.se>2022-11-08 21:26:17 +0100
commitdbc9327fc55302cc21ad7daac8a56b7a743a811b (patch)
treec4836c567932ed371373788897af906086b0a156
parent83a1d818b833bca8ac2a35ca5affd973d2645796 (diff)
[i18n] store locale change in settings and retranslate app
-rw-r--r--gui/main.cpp26
1 files changed, 20 insertions, 6 deletions
diff --git a/gui/main.cpp b/gui/main.cpp
index 1cb2d0e..affbabd 100644
--- a/gui/main.cpp
+++ b/gui/main.cpp
@@ -36,11 +36,11 @@ std::string getEnv(std::string const& key)
return val == NULL ? std::string() : std::string(val);
}
-QString getAppName(QJsonValue info, QString provider) {
+QString getProviderConfig(QJsonValue info, QString provider, QString key, QString defaultValue) {
for (auto p: info.toArray()) {
QJsonObject item = p.toObject();
- if (item["name"].toString().toLower() == provider.toLower()) {
- return item["applicationName"].toString();
+ if (item["name"].toString().toLower() == provider.toLower() && item[key].toString() != "") {
+ return item[key].toString();
}
}
return "BitmaskVPN";
@@ -101,9 +101,11 @@ int main(int argc, char **argv) {
providers->loadJson(providerJsonBytes);
QJsonValue defaultProvider = providers->json().object().value("default");
QJsonValue providersInfo = providers->json().object().value("providers");
- QString appName = getAppName(providersInfo, defaultProvider.toString());
+ QString appName = getProviderConfig(providersInfo, defaultProvider.toString(), "applicationName", "BitmaskVPN");
+ QString organizationDomain = getProviderConfig(providersInfo, defaultProvider.toString(), "providerURL", "riseup.net");
QApplication::setApplicationName(appName);
+ QApplication::setOrganizationDomain(organizationDomain);
QCommandLineParser parser;
parser.setApplicationDescription(
@@ -203,12 +205,15 @@ int main(int argc, char **argv) {
app.setWindowIcon(QIcon(":/vendor/riseup.svg"));
}
+ QSettings settings;
+ QString locale = settings.value("locale", QLocale().name()).toString();
+ settings.setValue("locale", locale);
+
/* load translations */
QTranslator translator;
- translator.load(QLocale(), QLatin1String("main"), QLatin1String("_"), QLatin1String(":/i18n"));
+ translator.load(QLocale(locale), QLatin1String("main"), QLatin1String("_"), QLatin1String(":/i18n"));
app.installTranslator(&translator);
-
QQmlApplicationEngine engine;
QQmlContext *ctx = engine.rootContext();
@@ -247,6 +252,15 @@ int main(int argc, char **argv) {
model->loadJson(js.toUtf8());
});
+ QObject::connect(&backend, &Backend::localeChanged, [&app, &translator, &engine, &settings](QString locale) {
+ settings.setValue("locale", locale);
+
+ app.removeTranslator(&translator);
+ translator.load(QLocale(locale), QLatin1String("main"), QLatin1String("_"), QLatin1String(":/i18n"));
+ app.installTranslator(&translator);
+ engine.retranslate();
+ });
+
/* connect quitDone signal, exit app */
QObject::connect(&backend, &Backend::quitDone, []() {
QApplication::quit();