Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qlocale_wasm.cpp
Go to the documentation of this file.
1// Copyright (C) 2023 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3// Qt-Security score:critical reason:data-parser
4
5#include "qlocale_p.h"
6
7#include <emscripten/val.h>
8
9#include <string>
10#include <vector>
11
12QT_BEGIN_NAMESPACE
13
14#ifndef QT_NO_SYSTEMLOCALE
15
16namespace {
17
18QStringList navigatorLanguages()
19{
20 using emscripten::val;
21 const val navigator = val::global("navigator");
22 const auto languages = emscripten::vecFromJSArray<std::string>(navigator["languages"]);
23 QStringList qtLanguages;
24 for (const std::string& language : languages)
25 qtLanguages.append(QString::fromStdString(language));
26 return qtLanguages;
27}
28
29}
30
31QVariant QSystemLocale::query(QueryType query, QVariant &&in) const
32{
33 Q_UNUSED(in);
34
35 switch (query) {
36 case QSystemLocale::UILanguages:
37 return QVariant(navigatorLanguages());
38 default:
39 break;
40 }
41
42 return QVariant();
43}
44
45QLocale QSystemLocale::fallbackLocale() const
46{
47 const QStringList languages = navigatorLanguages();
48 if (languages.isEmpty())
49 return QLocale(u"en-US");
50 return QLocale(languages[0]);
51}
52
53#endif // QT_NO_SYSTEMLOCALE
54
55QT_END_NAMESPACE