summaryrefslogtreecommitdiffstats
path: root/src/corelib/text/qlocale.cpp
diff options
context:
space:
mode:
authorMorten Sørvig <morten.sorvig@qt.io>2023-10-12 15:26:05 +0200
committerMorten Sørvig <morten.sorvig@qt.io>2023-10-31 08:09:23 +0200
commit63fc3175b499beb64888f3bf9d57d4703ea17a6a (patch)
tree90ccc8b93defcfdd6e142b0c7e86a2cdf115463e /src/corelib/text/qlocale.cpp
parentadf39eff44825ce19bd16c94089a6363c13bdd8e (diff)
wasm: Add QLocale backend
This is a simple backend based on navigator.languages, which gives us a prioritized list of languages in the form '["en-US", "zh-CN", "ja-JP"]'. Use this to implement QSystemLocale::query() for UILanguages and QSystemLocale::fallbackLocale(). Register an event handler for the native QWindow:languagechange event in the QSystemLocale constructor. This event handler stays active for the lifetime of the QSystemLocale object. Task-number: QTBUG-116613 Change-Id: Ibd176748377e891b63a3f1d57605af0c2a49edb3 Reviewed-by: Edward Welbourne <edward.welbourne@qt.io> Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
Diffstat (limited to 'src/corelib/text/qlocale.cpp')
-rw-r--r--src/corelib/text/qlocale.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/corelib/text/qlocale.cpp b/src/corelib/text/qlocale.cpp
index 7004ad9f0a..adaa1774ee 100644
--- a/src/corelib/text/qlocale.cpp
+++ b/src/corelib/text/qlocale.cpp
@@ -720,6 +720,17 @@ QSystemLocale::QSystemLocale() : next(_systemLocale)
_systemLocale = this;
systemLocaleData.m_language_id = 0;
+
+#ifdef Q_OS_WASM
+ onLanguageChanged = std::make_unique<qstdweb::EventCallback>(
+ emscripten::val::global("window"), "languagechange", [](emscripten::val) {
+ systemLocaleData.m_language_id = 0;
+ QEvent languageChangeEvent(QEvent::LanguageChange);
+ QCoreApplication::sendEvent(qApp, &languageChangeEvent);
+ QEvent localeChangeEvent(QEvent::LocaleChange);
+ QCoreApplication::sendEvent(qApp, &localeChangeEvent);
+ });
+#endif
}
/*!