aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp38
1 files changed, 15 insertions, 23 deletions
diff --git a/src/main.cpp b/src/main.cpp
index ad51822..a86f2bd 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -375,22 +375,15 @@ MainWindow * kristall::openNewWindow(QVector<NamedUrl> const & urls)
return window;
}
-
-//! Changes the currently used locale
-void kristall::setLocale(QLocale const & locale)
-{
- auto & i18n = kristall::globals().localization;
- i18n.locale = locale;
- i18n.qt.load(i18n.locale, "qt", "_", QLibraryInfo::location(QLibraryInfo::TranslationsPath));
- i18n.kristall.load(i18n.locale, "kristall", "_", ":/i18n");
-}
-
//! Saves the currently used locale
void kristall::saveLocale()
{
if(app_settings_ptr == nullptr)
return;
- app_settings_ptr->setValue("language", kristall::globals().localization.locale.bcp47Name());
+ if(auto const locale = kristall::globals().localization->locale; locale != std::nullopt)
+ app_settings_ptr->setValue("language", locale->bcp47Name());
+ else
+ app_settings_ptr->setValue("language", QString(""));
app_settings_ptr->sync();
}
@@ -450,20 +443,19 @@ int main(int argc, char *argv[])
// Initialize localization
{
+ auto & i18n = kristall::globals().localization;
- // Load the currently selected locale
- auto const lang_id = app_settings.value("language", QString()).toString();
- if(not lang_id.isEmpty()) {
- kristall::setLocale( QLocale(lang_id) );
- }
- else {
- kristall::setLocale ( QLocale() );
- }
+ i18n = std::make_unique<Localization>();
- auto & i18n = kristall::globals().localization;
- app.installTranslator(&i18n.qt);
- app.installTranslator(&i18n.kristall);
- qDebug() << "current locale" << i18n.locale.nativeLanguageName();
+ auto const locale_id = app_settings.value("language", QString("")).toString();
+
+ if(not locale_id.isEmpty())
+ i18n->setLocale(QLocale(locale_id));
+ else
+ i18n->setLocale(std::nullopt);
+
+ qApp->installTranslator(&i18n->qt);
+ qApp->installTranslator(&i18n->kristall);
}
addEmojiSubstitutions();