diff options
author | Morten Sørvig <morten.sorvig@qt.io> | 2023-10-12 15:26:05 +0200 |
---|---|---|
committer | Morten Sørvig <morten.sorvig@qt.io> | 2023-10-31 08:09:23 +0200 |
commit | 63fc3175b499beb64888f3bf9d57d4703ea17a6a (patch) | |
tree | 90ccc8b93defcfdd6e142b0c7e86a2cdf115463e /src/corelib/text/qlocale.cpp | |
parent | adf39eff44825ce19bd16c94089a6363c13bdd8e (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.cpp | 11 |
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 } /*! |