1// Copyright (C) 2021 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:significant reason:trivial-impl-only
4
5#ifndef QLOCALE_H
6#define QLOCALE_H
7
8#include <QtCore/qvariant.h>
9#include <QtCore/qstring.h>
10#include <QtCore/qobjectdefs.h>
11#include <QtCore/qshareddata.h>
12
13QT_BEGIN_NAMESPACE
14
15class QCalendar;
16class QDataStream;
17class QDate;
18class QDateTime;
19class QLocale;
20class QTime;
21class QVariant;
22class QTextStream;
23class QTextStreamPrivate;
24
25class QLocalePrivate;
26
27Q_CORE_EXPORT size_t qHash(const QLocale &key, size_t seed = 0) noexcept;
28
29class Q_CORE_EXPORT QLocale
30{
31 Q_GADGET
32 friend class QString;
33 friend class QByteArray;
34 friend class QIntValidator;
35 friend class QDoubleValidatorPrivate;
36 friend class QTextStream;
37 friend class QTextStreamPrivate;
38
39public:
40 static constexpr int DefaultTwoDigitBaseYear = 1900;
41
42// see qlocale_data_p.h for more info on generated data
43// GENERATED PART STARTS HERE
44 enum Language : ushort {
45 AnyLanguage = 0,
46 C = 1,
47 Abkhazian = 2,
48 Afar = 3,
49 Afrikaans = 4,
50 Aghem = 5,
51 Akan = 6,
52 Akkadian = 7,
53 Akoose = 8,
54 Albanian = 9,
55 AmericanSignLanguage = 10,
56 Amharic = 11,
57 AncientEgyptian = 12,
58 AncientGreek = 13,
59 Arabic = 14,
60 Aragonese = 15,
61 Aramaic = 16,
62 Armenian = 17,
63 Assamese = 18,
64 Asturian = 19,
65 Asu = 20,
66 Atsam = 21,
67 Avaric = 22,
68 Avestan = 23,
69 Aymara = 24,
70 Azerbaijani = 25,
71 Bafia = 26,
72 Balinese = 27,
73 Bambara = 28,
74 Bamun = 29,
75 Bangla = 30,
76 Basaa = 31,
77 Bashkir = 32,
78 Basque = 33,
79 BatakToba = 34,
80 Belarusian = 35,
81 Bemba = 36,
82 Bena = 37,
83 Bhojpuri = 38,
84 Bislama = 39,
85 Blin = 40,
86 Bodo = 41,
87 Bosnian = 42,
88 Breton = 43,
89 Buginese = 44,
90 Bulgarian = 45,
91 Burmese = 46,
92 Cantonese = 47,
93 Catalan = 48,
94 Cebuano = 49,
95 CentralAtlasTamazight = 50,
96 CentralKurdish = 51,
97 Chakma = 52,
98 Chamorro = 53,
99 Chechen = 54,
100 Cherokee = 55,
101 Chickasaw = 56,
102 Chiga = 57,
103 Chinese = 58,
104 Church = 59,
105 Chuvash = 60,
106 Colognian = 61,
107 Coptic = 62,
108 Cornish = 63,
109 Corsican = 64,
110 Cree = 65,
111 Croatian = 66,
112 Czech = 67,
113 Danish = 68,
114 Divehi = 69,
115 Dogri = 70,
116 Duala = 71,
117 Dutch = 72,
118 Dzongkha = 73,
119 Embu = 74,
120 English = 75,
121 Erzya = 76,
122 Esperanto = 77,
123 Estonian = 78,
124 Ewe = 79,
125 Ewondo = 80,
126 Faroese = 81,
127 Fijian = 82,
128 Filipino = 83,
129 Finnish = 84,
130 French = 85,
131 Friulian = 86,
132 Fulah = 87,
133 Gaelic = 88,
134 Ga = 89,
135 Galician = 90,
136 Ganda = 91,
137 Geez = 92,
138 Georgian = 93,
139 German = 94,
140 Gothic = 95,
141 Greek = 96,
142 Guarani = 97,
143 Gujarati = 98,
144 Gusii = 99,
145 Haitian = 100,
146 Hausa = 101,
147 Hawaiian = 102,
148 Hebrew = 103,
149 Herero = 104,
150 Hindi = 105,
151 HiriMotu = 106,
152 Hungarian = 107,
153 Icelandic = 108,
154 Ido = 109,
155 Igbo = 110,
156 InariSami = 111,
157 Indonesian = 112,
158 Ingush = 113,
159 Interlingua = 114,
160 Interlingue = 115,
161 Inuktitut = 116,
162 Inupiaq = 117,
163 Irish = 118,
164 Italian = 119,
165 Japanese = 120,
166 Javanese = 121,
167 Jju = 122,
168 JolaFonyi = 123,
169 Kabuverdianu = 124,
170 Kabyle = 125,
171 Kako = 126,
172 Kalaallisut = 127,
173 Kalenjin = 128,
174 Kamba = 129,
175 Kannada = 130,
176 Kanuri = 131,
177 Kashmiri = 132,
178 Kazakh = 133,
179 Kenyang = 134,
180 Khmer = 135,
181 Kiche = 136,
182 Kikuyu = 137,
183 Kinyarwanda = 138,
184 Komi = 139,
185 Kongo = 140,
186 Konkani = 141,
187 Korean = 142,
188 Koro = 143,
189 KoyraboroSenni = 144,
190 KoyraChiini = 145,
191 Kpelle = 146,
192 Kuanyama = 147,
193 Kurdish = 148,
194 Kwasio = 149,
195 Kyrgyz = 150,
196 Lakota = 151,
197 Langi = 152,
198 Lao = 153,
199 Latin = 154,
200 Latvian = 155,
201 Lezghian = 156,
202 Limburgish = 157,
203 Lingala = 158,
204 LiteraryChinese = 159,
205 Lithuanian = 160,
206 Lojban = 161,
207 LowerSorbian = 162,
208 LowGerman = 163,
209 LubaKatanga = 164,
210 LuleSami = 165,
211 Luo = 166,
212 Luxembourgish = 167,
213 Luyia = 168,
214 Macedonian = 169,
215 Machame = 170,
216 Maithili = 171,
217 MakhuwaMeetto = 172,
218 Makonde = 173,
219 Malagasy = 174,
220 Malayalam = 175,
221 Malay = 176,
222 Maltese = 177,
223 Mandingo = 178,
224 Manipuri = 179,
225 Manx = 180,
226 Maori = 181,
227 Mapuche = 182,
228 Marathi = 183,
229 Marshallese = 184,
230 Masai = 185,
231 Mazanderani = 186,
232 Mende = 187,
233 Meru = 188,
234 Meta = 189,
235 Mohawk = 190,
236 Mongolian = 191,
237 Morisyen = 192,
238 Mundang = 193,
239 Muscogee = 194,
240 Nama = 195,
241 NauruLanguage = 196,
242 Navajo = 197,
243 Ndonga = 198,
244 Nepali = 199,
245 Newari = 200,
246 Ngiemboon = 201,
247 Ngomba = 202,
248 NigerianPidgin = 203,
249 Nko = 204,
250 NorthernLuri = 205,
251 NorthernSami = 206,
252 NorthernSotho = 207,
253 NorthNdebele = 208,
254 NorwegianBokmal = 209,
255 NorwegianNynorsk = 210,
256 Nuer = 211,
257 Nyanja = 212,
258 Nyankole = 213,
259 Occitan = 214,
260 Odia = 215,
261 Ojibwa = 216,
262 OldIrish = 217,
263 OldNorse = 218,
264 OldPersian = 219,
265 Oromo = 220,
266 Osage = 221,
267 Ossetic = 222,
268 Pahlavi = 223,
269 Palauan = 224,
270 Pali = 225,
271 Papiamento = 226,
272 Pashto = 227,
273 Persian = 228,
274 Phoenician = 229,
275 Polish = 230,
276 Portuguese = 231,
277 Prussian = 232,
278 Punjabi = 233,
279 Quechua = 234,
280 Romanian = 235,
281 Romansh = 236,
282 Rombo = 237,
283 Rundi = 238,
284 Russian = 239,
285 Rwa = 240,
286 Saho = 241,
287 Sakha = 242,
288 Samburu = 243,
289 Samoan = 244,
290 Sango = 245,
291 Sangu = 246,
292 Sanskrit = 247,
293 Santali = 248,
294 Sardinian = 249,
295 Saurashtra = 250,
296 Sena = 251,
297 Serbian = 252,
298 Shambala = 253,
299 Shona = 254,
300 SichuanYi = 255,
301 Sicilian = 256,
302 Sidamo = 257,
303 Silesian = 258,
304 Sindhi = 259,
305 Sinhala = 260,
306 SkoltSami = 261,
307 Slovak = 262,
308 Slovenian = 263,
309 Soga = 264,
310 Somali = 265,
311 SouthernKurdish = 266,
312 SouthernSami = 267,
313 SouthernSotho = 268,
314 SouthNdebele = 269,
315 Spanish = 270,
316 StandardMoroccanTamazight = 271,
317 Sundanese = 272,
318 Swahili = 273,
319 Swati = 274,
320 Swedish = 275,
321 SwissGerman = 276,
322 Syriac = 277,
323 Tachelhit = 278,
324 Tahitian = 279,
325 TaiDam = 280,
326 Taita = 281,
327 Tajik = 282,
328 Tamil = 283,
329 Taroko = 284,
330 Tasawaq = 285,
331 Tatar = 286,
332 Telugu = 287,
333 Teso = 288,
334 Thai = 289,
335 Tibetan = 290,
336 Tigre = 291,
337 Tigrinya = 292,
338 TokelauLanguage = 293,
339 TokPisin = 294,
340 Tongan = 295,
341 Tsonga = 296,
342 Tswana = 297,
343 Turkish = 298,
344 Turkmen = 299,
345 TuvaluLanguage = 300,
346 Tyap = 301,
347 Ugaritic = 302,
348 Ukrainian = 303,
349 UpperSorbian = 304,
350 Urdu = 305,
351 Uyghur = 306,
352 Uzbek = 307,
353 Vai = 308,
354 Venda = 309,
355 Vietnamese = 310,
356 Volapuk = 311,
357 Vunjo = 312,
358 Walloon = 313,
359 Walser = 314,
360 Warlpiri = 315,
361 Welsh = 316,
362 WesternBalochi = 317,
363 WesternFrisian = 318,
364 Wolaytta = 319,
365 Wolof = 320,
366 Xhosa = 321,
367 Yangben = 322,
368 Yiddish = 323,
369 Yoruba = 324,
370 Zarma = 325,
371 Zhuang = 326,
372 Zulu = 327,
373 Kaingang = 328,
374 Nheengatu = 329,
375 Haryanvi = 330,
376 NorthernFrisian = 331,
377 Rajasthani = 332,
378 Moksha = 333,
379 TokiPona = 334,
380 Pijin = 335,
381 Obolo = 336,
382 Baluchi = 337,
383 Ligurian = 338,
384 Rohingya = 339,
385 Torwali = 340,
386 Anii = 341,
387 Kangri = 342,
388 Venetian = 343,
389 Kuvi = 344,
390 KaraKalpak = 345,
391 SwampyCree = 346,
392
393 Afan = Oromo,
394 Bengali = Bangla,
395 Bhutani = Dzongkha,
396 Byelorussian = Belarusian,
397 Cambodian = Khmer,
398 CentralMoroccoTamazight = CentralAtlasTamazight,
399 Chewa = Nyanja,
400 Frisian = WesternFrisian,
401 Greenlandic = Kalaallisut,
402 Inupiak = Inupiaq,
403 Kirghiz = Kyrgyz,
404 Kurundi = Rundi,
405 Kwanyama = Kuanyama,
406 Navaho = Navajo,
407 Oriya = Odia,
408 RhaetoRomance = Romansh,
409 Uighur = Uyghur,
410 Uigur = Uyghur,
411 Walamo = Wolaytta,
412
413 LastLanguage = SwampyCree
414 };
415
416 enum Script : ushort {
417 AnyScript = 0,
418 AdlamScript = 1,
419 AhomScript = 2,
420 AnatolianHieroglyphsScript = 3,
421 ArabicScript = 4,
422 ArmenianScript = 5,
423 AvestanScript = 6,
424 BalineseScript = 7,
425 BamumScript = 8,
426 BanglaScript = 9,
427 BassaVahScript = 10,
428 BatakScript = 11,
429 BhaiksukiScript = 12,
430 BopomofoScript = 13,
431 BrahmiScript = 14,
432 BrailleScript = 15,
433 BugineseScript = 16,
434 BuhidScript = 17,
435 CanadianAboriginalScript = 18,
436 CarianScript = 19,
437 CaucasianAlbanianScript = 20,
438 ChakmaScript = 21,
439 ChamScript = 22,
440 CherokeeScript = 23,
441 CopticScript = 24,
442 CuneiformScript = 25,
443 CypriotScript = 26,
444 CyrillicScript = 27,
445 DeseretScript = 28,
446 DevanagariScript = 29,
447 DuployanScript = 30,
448 EgyptianHieroglyphsScript = 31,
449 ElbasanScript = 32,
450 EthiopicScript = 33,
451 FraserScript = 34,
452 GeorgianScript = 35,
453 GlagoliticScript = 36,
454 GothicScript = 37,
455 GranthaScript = 38,
456 GreekScript = 39,
457 GujaratiScript = 40,
458 GurmukhiScript = 41,
459 HangulScript = 42,
460 HanScript = 43,
461 HanunooScript = 44,
462 HanWithBopomofoScript = 45,
463 HatranScript = 46,
464 HebrewScript = 47,
465 HiraganaScript = 48,
466 ImperialAramaicScript = 49,
467 InscriptionalPahlaviScript = 50,
468 InscriptionalParthianScript = 51,
469 JamoScript = 52,
470 JapaneseScript = 53,
471 JavaneseScript = 54,
472 KaithiScript = 55,
473 KannadaScript = 56,
474 KatakanaScript = 57,
475 KayahLiScript = 58,
476 KharoshthiScript = 59,
477 KhmerScript = 60,
478 KhojkiScript = 61,
479 KhudawadiScript = 62,
480 KoreanScript = 63,
481 LannaScript = 64,
482 LaoScript = 65,
483 LatinScript = 66,
484 LepchaScript = 67,
485 LimbuScript = 68,
486 LinearAScript = 69,
487 LinearBScript = 70,
488 LycianScript = 71,
489 LydianScript = 72,
490 MahajaniScript = 73,
491 MalayalamScript = 74,
492 MandaeanScript = 75,
493 ManichaeanScript = 76,
494 MarchenScript = 77,
495 MeiteiMayekScript = 78,
496 MendeScript = 79,
497 MeroiticCursiveScript = 80,
498 MeroiticScript = 81,
499 ModiScript = 82,
500 MongolianScript = 83,
501 MroScript = 84,
502 MultaniScript = 85,
503 MyanmarScript = 86,
504 NabataeanScript = 87,
505 NewaScript = 88,
506 NewTaiLueScript = 89,
507 NkoScript = 90,
508 OdiaScript = 91,
509 OghamScript = 92,
510 OlChikiScript = 93,
511 OldHungarianScript = 94,
512 OldItalicScript = 95,
513 OldNorthArabianScript = 96,
514 OldPermicScript = 97,
515 OldPersianScript = 98,
516 OldSouthArabianScript = 99,
517 OrkhonScript = 100,
518 OsageScript = 101,
519 OsmanyaScript = 102,
520 PahawhHmongScript = 103,
521 PalmyreneScript = 104,
522 PauCinHauScript = 105,
523 PhagsPaScript = 106,
524 PhoenicianScript = 107,
525 PollardPhoneticScript = 108,
526 PsalterPahlaviScript = 109,
527 RejangScript = 110,
528 RunicScript = 111,
529 SamaritanScript = 112,
530 SaurashtraScript = 113,
531 SharadaScript = 114,
532 ShavianScript = 115,
533 SiddhamScript = 116,
534 SignWritingScript = 117,
535 SimplifiedHanScript = 118,
536 SinhalaScript = 119,
537 SoraSompengScript = 120,
538 SundaneseScript = 121,
539 SylotiNagriScript = 122,
540 SyriacScript = 123,
541 TagalogScript = 124,
542 TagbanwaScript = 125,
543 TaiLeScript = 126,
544 TaiVietScript = 127,
545 TakriScript = 128,
546 TamilScript = 129,
547 TangutScript = 130,
548 TeluguScript = 131,
549 ThaanaScript = 132,
550 ThaiScript = 133,
551 TibetanScript = 134,
552 TifinaghScript = 135,
553 TirhutaScript = 136,
554 TraditionalHanScript = 137,
555 UgariticScript = 138,
556 VaiScript = 139,
557 VarangKshitiScript = 140,
558 YiScript = 141,
559 HanifiScript = 142,
560
561 BengaliScript = BanglaScript,
562 MendeKikakuiScript = MendeScript,
563 OriyaScript = OdiaScript,
564 SimplifiedChineseScript = SimplifiedHanScript,
565 TraditionalChineseScript = TraditionalHanScript,
566
567 LastScript = HanifiScript
568 };
569
570 // ### Qt 7: Rename to Territory
571 enum Country : ushort {
572 AnyTerritory = 0,
573 Afghanistan = 1,
574 AlandIslands = 2,
575 Albania = 3,
576 Algeria = 4,
577 AmericanSamoa = 5,
578 Andorra = 6,
579 Angola = 7,
580 Anguilla = 8,
581 Antarctica = 9,
582 AntiguaAndBarbuda = 10,
583 Argentina = 11,
584 Armenia = 12,
585 Aruba = 13,
586 AscensionIsland = 14,
587 Australia = 15,
588 Austria = 16,
589 Azerbaijan = 17,
590 Bahamas = 18,
591 Bahrain = 19,
592 Bangladesh = 20,
593 Barbados = 21,
594 Belarus = 22,
595 Belgium = 23,
596 Belize = 24,
597 Benin = 25,
598 Bermuda = 26,
599 Bhutan = 27,
600 Bolivia = 28,
601 BosniaAndHerzegovina = 29,
602 Botswana = 30,
603 BouvetIsland = 31,
604 Brazil = 32,
605 BritishIndianOceanTerritory = 33,
606 BritishVirginIslands = 34,
607 Brunei = 35,
608 Bulgaria = 36,
609 BurkinaFaso = 37,
610 Burundi = 38,
611 Cambodia = 39,
612 Cameroon = 40,
613 Canada = 41,
614 CanaryIslands = 42,
615 CapeVerde = 43,
616 CaribbeanNetherlands = 44,
617 CaymanIslands = 45,
618 CentralAfricanRepublic = 46,
619 CeutaAndMelilla = 47,
620 Chad = 48,
621 Chile = 49,
622 China = 50,
623 ChristmasIsland = 51,
624 ClippertonIsland = 52,
625 CocosIslands = 53,
626 Colombia = 54,
627 Comoros = 55,
628 CongoBrazzaville = 56,
629 CongoKinshasa = 57,
630 CookIslands = 58,
631 CostaRica = 59,
632 Croatia = 60,
633 Cuba = 61,
634 Curacao = 62,
635 Cyprus = 63,
636 Czechia = 64,
637 Denmark = 65,
638 DiegoGarcia = 66,
639 Djibouti = 67,
640 Dominica = 68,
641 DominicanRepublic = 69,
642 Ecuador = 70,
643 Egypt = 71,
644 ElSalvador = 72,
645 EquatorialGuinea = 73,
646 Eritrea = 74,
647 Estonia = 75,
648 Eswatini = 76,
649 Ethiopia = 77,
650 Europe = 78,
651 EuropeanUnion = 79,
652 FalklandIslands = 80,
653 FaroeIslands = 81,
654 Fiji = 82,
655 Finland = 83,
656 France = 84,
657 FrenchGuiana = 85,
658 FrenchPolynesia = 86,
659 FrenchSouthernTerritories = 87,
660 Gabon = 88,
661 Gambia = 89,
662 Georgia = 90,
663 Germany = 91,
664 Ghana = 92,
665 Gibraltar = 93,
666 Greece = 94,
667 Greenland = 95,
668 Grenada = 96,
669 Guadeloupe = 97,
670 Guam = 98,
671 Guatemala = 99,
672 Guernsey = 100,
673 GuineaBissau = 101,
674 Guinea = 102,
675 Guyana = 103,
676 Haiti = 104,
677 HeardAndMcDonaldIslands = 105,
678 Honduras = 106,
679 HongKong = 107,
680 Hungary = 108,
681 Iceland = 109,
682 India = 110,
683 Indonesia = 111,
684 Iran = 112,
685 Iraq = 113,
686 Ireland = 114,
687 IsleOfMan = 115,
688 Israel = 116,
689 Italy = 117,
690 IvoryCoast = 118,
691 Jamaica = 119,
692 Japan = 120,
693 Jersey = 121,
694 Jordan = 122,
695 Kazakhstan = 123,
696 Kenya = 124,
697 Kiribati = 125,
698 Kosovo = 126,
699 Kuwait = 127,
700 Kyrgyzstan = 128,
701 Laos = 129,
702 LatinAmerica = 130,
703 Latvia = 131,
704 Lebanon = 132,
705 Lesotho = 133,
706 Liberia = 134,
707 Libya = 135,
708 Liechtenstein = 136,
709 Lithuania = 137,
710 Luxembourg = 138,
711 Macao = 139,
712 Macedonia = 140,
713 Madagascar = 141,
714 Malawi = 142,
715 Malaysia = 143,
716 Maldives = 144,
717 Mali = 145,
718 Malta = 146,
719 MarshallIslands = 147,
720 Martinique = 148,
721 Mauritania = 149,
722 Mauritius = 150,
723 Mayotte = 151,
724 Mexico = 152,
725 Micronesia = 153,
726 Moldova = 154,
727 Monaco = 155,
728 Mongolia = 156,
729 Montenegro = 157,
730 Montserrat = 158,
731 Morocco = 159,
732 Mozambique = 160,
733 Myanmar = 161,
734 Namibia = 162,
735 NauruTerritory = 163,
736 Nepal = 164,
737 Netherlands = 165,
738 NewCaledonia = 166,
739 NewZealand = 167,
740 Nicaragua = 168,
741 Nigeria = 169,
742 Niger = 170,
743 Niue = 171,
744 NorfolkIsland = 172,
745 NorthernMarianaIslands = 173,
746 NorthKorea = 174,
747 Norway = 175,
748 Oman = 176,
749 OutlyingOceania = 177,
750 Pakistan = 178,
751 Palau = 179,
752 PalestinianTerritories = 180,
753 Panama = 181,
754 PapuaNewGuinea = 182,
755 Paraguay = 183,
756 Peru = 184,
757 Philippines = 185,
758 Pitcairn = 186,
759 Poland = 187,
760 Portugal = 188,
761 PuertoRico = 189,
762 Qatar = 190,
763 Reunion = 191,
764 Romania = 192,
765 Russia = 193,
766 Rwanda = 194,
767 SaintBarthelemy = 195,
768 SaintHelena = 196,
769 SaintKittsAndNevis = 197,
770 SaintLucia = 198,
771 SaintMartin = 199,
772 SaintPierreAndMiquelon = 200,
773 SaintVincentAndGrenadines = 201,
774 Samoa = 202,
775 SanMarino = 203,
776 SaoTomeAndPrincipe = 204,
777 SaudiArabia = 205,
778 Senegal = 206,
779 Serbia = 207,
780 Seychelles = 208,
781 SierraLeone = 209,
782 Singapore = 210,
783 SintMaarten = 211,
784 Slovakia = 212,
785 Slovenia = 213,
786 SolomonIslands = 214,
787 Somalia = 215,
788 SouthAfrica = 216,
789 SouthGeorgiaAndSouthSandwichIslands = 217,
790 SouthKorea = 218,
791 SouthSudan = 219,
792 Spain = 220,
793 SriLanka = 221,
794 Sudan = 222,
795 Suriname = 223,
796 SvalbardAndJanMayen = 224,
797 Sweden = 225,
798 Switzerland = 226,
799 Syria = 227,
800 Taiwan = 228,
801 Tajikistan = 229,
802 Tanzania = 230,
803 Thailand = 231,
804 TimorLeste = 232,
805 Togo = 233,
806 TokelauTerritory = 234,
807 Tonga = 235,
808 TrinidadAndTobago = 236,
809 TristanDaCunha = 237,
810 Tunisia = 238,
811 Turkey = 239,
812 Turkmenistan = 240,
813 TurksAndCaicosIslands = 241,
814 TuvaluTerritory = 242,
815 Uganda = 243,
816 Ukraine = 244,
817 UnitedArabEmirates = 245,
818 UnitedKingdom = 246,
819 UnitedStatesOutlyingIslands = 247,
820 UnitedStates = 248,
821 UnitedStatesVirginIslands = 249,
822 Uruguay = 250,
823 Uzbekistan = 251,
824 Vanuatu = 252,
825 VaticanCity = 253,
826 Venezuela = 254,
827 Vietnam = 255,
828 WallisAndFutuna = 256,
829 WesternSahara = 257,
830 World = 258,
831 Yemen = 259,
832 Zambia = 260,
833 Zimbabwe = 261,
834
835 AnyCountry = AnyTerritory,
836 Bonaire = CaribbeanNetherlands,
837 BosniaAndHerzegowina = BosniaAndHerzegovina,
838 CuraSao = Curacao,
839 CzechRepublic = Czechia,
840 DemocraticRepublicOfCongo = CongoKinshasa,
841 DemocraticRepublicOfKorea = NorthKorea,
842 EastTimor = TimorLeste,
843 LatinAmericaAndTheCaribbean = LatinAmerica,
844 Macau = Macao,
845 NauruCountry = NauruTerritory,
846 PeoplesRepublicOfCongo = CongoBrazzaville,
847 RepublicOfKorea = SouthKorea,
848 RussianFederation = Russia,
849 SaintVincentAndTheGrenadines = SaintVincentAndGrenadines,
850 SouthGeorgiaAndTheSouthSandwichIslands = SouthGeorgiaAndSouthSandwichIslands,
851 SvalbardAndJanMayenIslands = SvalbardAndJanMayen,
852 Swaziland = Eswatini,
853 SyrianArabRepublic = Syria,
854 TokelauCountry = TokelauTerritory,
855 TuvaluCountry = TuvaluTerritory,
856 UnitedStatesMinorOutlyingIslands = UnitedStatesOutlyingIslands,
857 VaticanCityState = VaticanCity,
858 WallisAndFutunaIslands = WallisAndFutuna,
859
860 LastTerritory = Zimbabwe,
861 LastCountry = LastTerritory
862 };
863// GENERATED PART ENDS HERE
864
865 using Territory = Country; // ### Qt 7: reverse
866
867 Q_ENUM(Language)
868 Q_ENUM(Country)
869 Q_ENUM(Script)
870
871 enum MeasurementSystem {
872 MetricSystem,
873 ImperialUSSystem,
874 ImperialUKSystem,
875 ImperialSystem = ImperialUSSystem // Qt 4 compatibility
876 };
877 Q_ENUM(MeasurementSystem)
878
879 enum FormatType { LongFormat, ShortFormat, NarrowFormat };
880 Q_ENUM(FormatType)
881 enum NumberOption {
882 DefaultNumberOptions = 0x0,
883 OmitGroupSeparator = 0x01,
884 RejectGroupSeparator = 0x02,
885 OmitLeadingZeroInExponent = 0x04,
886 RejectLeadingZeroInExponent = 0x08,
887 IncludeTrailingZeroesAfterDot = 0x10,
888 RejectTrailingZeroesAfterDot = 0x20
889 };
890 Q_DECLARE_FLAGS(NumberOptions, NumberOption)
891 Q_FLAG(NumberOptions)
892
893 enum FloatingPointPrecisionOption {
894 FloatingPointShortest = -128
895 };
896
897 enum class TagSeparator : char { Dash = '-', Underscore = '_' };
898 Q_ENUM(TagSeparator)
899
900 enum CurrencySymbolFormat {
901 CurrencyIsoCode,
902 CurrencySymbol,
903 CurrencyDisplayName
904 };
905 Q_ENUM(CurrencySymbolFormat)
906
907 enum DataSizeFormat {
908 // Single-bit values, for internal use.
909 DataSizeBase1000 = 1, // use factors of 1000 instead of IEC's 1024;
910 DataSizeSIQuantifiers = 2, // use SI quantifiers instead of IEC ones.
911
912 // Flags values for use in API:
913 DataSizeIecFormat = 0, // base 1024, KiB, MiB, GiB, ...
914 DataSizeTraditionalFormat = DataSizeSIQuantifiers, // base 1024, kB, MB, GB, ...
915 DataSizeSIFormat = DataSizeBase1000 | DataSizeSIQuantifiers // base 1000, kB, MB, GB, ...
916 };
917 Q_DECLARE_FLAGS(DataSizeFormats, DataSizeFormat)
918 Q_FLAG(DataSizeFormats)
919
920 QLocale();
921 QT_CORE_INLINE_SINCE(6, 4)
922 explicit QLocale(const QString &name);
923 explicit QLocale(QStringView name);
924 QLocale(Language language, Territory territory);
925 QLocale(Language language, Script script = AnyScript, Territory territory = AnyTerritory);
926 QLocale(const QLocale &other) noexcept;
927 QT_MOVE_ASSIGNMENT_OPERATOR_IMPL_VIA_PURE_SWAP(QLocale)
928 QLocale &operator=(const QLocale &other) noexcept;
929 ~QLocale();
930
931 void swap(QLocale &other) noexcept { d.swap(other&: other.d); }
932
933 Language language() const;
934 Script script() const;
935 Territory territory() const;
936#if QT_DEPRECATED_SINCE(6, 6)
937 QT_DEPRECATED_VERSION_X_6_6("Use territory() instead")
938 Country country() const;
939#endif
940
941#if QT_CORE_REMOVED_SINCE(6, 7)
942 QString name() const;
943 QString bcp47Name() const;
944#endif
945 QString name(TagSeparator separator = TagSeparator::Underscore) const;
946 QString bcp47Name(TagSeparator separator = TagSeparator::Dash) const;
947
948 QString nativeLanguageName() const;
949 QString nativeTerritoryName() const;
950#if QT_DEPRECATED_SINCE(6, 6)
951 QT_DEPRECATED_VERSION_X_6_6("Use nativeTerritoryName() instead")
952 QString nativeCountryName() const;
953#endif
954
955 short toShort(const QString &s, bool *ok = nullptr) const
956 { return toShort(s: qToStringViewIgnoringNull(s), ok); }
957 ushort toUShort(const QString &s, bool *ok = nullptr) const
958 { return toUShort(s: qToStringViewIgnoringNull(s), ok); }
959 int toInt(const QString &s, bool *ok = nullptr) const
960 { return toInt(s: qToStringViewIgnoringNull(s), ok); }
961 uint toUInt(const QString &s, bool *ok = nullptr) const
962 { return toUInt(s: qToStringViewIgnoringNull(s), ok); }
963 long toLong(const QString &s, bool *ok = nullptr) const
964 { return toLong(s: qToStringViewIgnoringNull(s), ok); }
965 ulong toULong(const QString &s, bool *ok = nullptr) const
966 { return toULong(s: qToStringViewIgnoringNull(s), ok); }
967 qlonglong toLongLong(const QString &s, bool *ok = nullptr) const
968 { return toLongLong(s: qToStringViewIgnoringNull(s), ok); }
969 qulonglong toULongLong(const QString &s, bool *ok = nullptr) const
970 { return toULongLong(s: qToStringViewIgnoringNull(s), ok); }
971 float toFloat(const QString &s, bool *ok = nullptr) const
972 { return toFloat(s: qToStringViewIgnoringNull(s), ok); }
973 double toDouble(const QString &s, bool *ok = nullptr) const
974 { return toDouble(s: qToStringViewIgnoringNull(s), ok); }
975
976 short toShort(QStringView s, bool *ok = nullptr) const;
977 ushort toUShort(QStringView s, bool *ok = nullptr) const;
978 int toInt(QStringView s, bool *ok = nullptr) const;
979 uint toUInt(QStringView s, bool *ok = nullptr) const;
980 long toLong(QStringView s, bool *ok = nullptr) const;
981 ulong toULong(QStringView s, bool *ok = nullptr) const;
982 qlonglong toLongLong(QStringView s, bool *ok = nullptr) const;
983 qulonglong toULongLong(QStringView s, bool *ok = nullptr) const;
984 float toFloat(QStringView s, bool *ok = nullptr) const;
985 double toDouble(QStringView s, bool *ok = nullptr) const;
986
987 QString toString(qlonglong i) const;
988 QString toString(qulonglong i) const;
989 QString toString(long i) const { return toString(i: qlonglong(i)); }
990 QString toString(ulong i) const { return toString(i: qulonglong(i)); }
991 QString toString(short i) const { return toString(i: qlonglong(i)); }
992 QString toString(ushort i) const { return toString(i: qulonglong(i)); }
993 QString toString(int i) const { return toString(i: qlonglong(i)); }
994 QString toString(uint i) const { return toString(i: qulonglong(i)); }
995 QString toString(qlonglong number, int fieldWidth, char32_t fillChar) const;
996 QString toString(qulonglong number, int fieldWidth, char32_t fillChar) const;
997 QString toString(int number, int fieldWidth, char32_t fillChar) const
998 { return toString(number: qlonglong(number), fieldWidth, fillChar); }
999 QString toString(uint number, int fieldWidth, char32_t fillChar) const
1000 { return toString(number: qulonglong(number), fieldWidth, fillChar); }
1001 QString toString(long number, int fieldWidth, char32_t fillChar) const
1002 { return toString(number: qlonglong(number), fieldWidth, fillChar); }
1003 QString toString(ulong(number), int fieldWidth, char32_t fillChar) const
1004 { return toString(number: qulonglong(number), fieldWidth, fillChar); }
1005 QString toString(short number, int fieldWidth, char32_t fillChar) const
1006 { return toString(number: qlonglong(number), fieldWidth, fillChar); }
1007 QString toString(ushort number, int fieldWidth, char32_t fillChar) const
1008 { return toString(number: qulonglong(number), fieldWidth, fillChar); }
1009 QString toString(double f, char format = 'g', int precision = 6) const;
1010 QString toString(float f, char format = 'g', int precision = 6) const
1011 { return toString(f: double(f), format, precision); }
1012
1013 // (Can't inline first two: passing by value doesn't work when only forward-declared.)
1014 QString toString(QDate date, const QString &format) const;
1015 QString toString(QTime time, const QString &format) const;
1016 QString toString(const QDateTime &dateTime, const QString &format) const
1017 { return toString(dateTime, format: qToStringViewIgnoringNull(s: format)); }
1018 QString toString(QDate date, QStringView format) const;
1019 QString toString(QTime time, QStringView format) const;
1020 QString toString(const QDateTime &dateTime, QStringView format) const;
1021 QString toString(QDate date, FormatType format = LongFormat) const;
1022 QString toString(QTime time, FormatType format = LongFormat) const;
1023 QString toString(const QDateTime &dateTime, FormatType format = LongFormat) const;
1024
1025 /* We can't pass a default for QCalendar (its declaration mentions
1026 * QLocale::FormatType, so it has to #include this header, which thus can't
1027 * #include its, so we can't instantiate QCalendar() as default). This
1028 * precludes any default for format, too.
1029 */
1030 QString toString(QDate date, QStringView format, QCalendar cal) const;
1031 QString toString(QDate date, FormatType format, QCalendar cal) const;
1032 QString toString(const QDateTime &dateTime, FormatType format, QCalendar cal) const;
1033 QString toString(const QDateTime &dateTime, QStringView format, QCalendar cal) const;
1034
1035 QString dateFormat(FormatType format = LongFormat) const;
1036 QString timeFormat(FormatType format = LongFormat) const;
1037 QString dateTimeFormat(FormatType format = LongFormat) const;
1038 // QCalendar's header has to #include QLocale's, preventing the reverse, so
1039 // QCalendar parameters can't have defaults here.
1040#if QT_CONFIG(datestring)
1041 QTime toTime(const QString &string, FormatType = LongFormat) const;
1042 QTime toTime(const QString &string, const QString &format) const;
1043# if QT_CORE_REMOVED_SINCE(6, 7)
1044 QDate toDate(const QString &string, FormatType = LongFormat) const;
1045 QDate toDate(const QString &string, const QString &format) const;
1046 QDateTime toDateTime(const QString &string, FormatType format = LongFormat) const;
1047 QDateTime toDateTime(const QString &string, const QString &format) const;
1048 // Calendar-aware API
1049 QDate toDate(const QString &string, FormatType format, QCalendar cal) const;
1050 QDate toDate(const QString &string, const QString &format, QCalendar cal) const;
1051 QDateTime toDateTime(const QString &string, FormatType format, QCalendar cal) const;
1052 QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal) const;
1053# endif
1054 QDate toDate(const QString &string, FormatType = LongFormat,
1055 int baseYear = DefaultTwoDigitBaseYear) const;
1056 QDate toDate(const QString &string, const QString &format,
1057 int baseYear = DefaultTwoDigitBaseYear) const;
1058 QDateTime toDateTime(const QString &string, FormatType format = LongFormat,
1059 int baseYear = DefaultTwoDigitBaseYear) const;
1060 QDateTime toDateTime(const QString &string, const QString &format,
1061 int baseYear = DefaultTwoDigitBaseYear) const;
1062 // Calendar-aware API
1063 QDate toDate(const QString &string, FormatType format, QCalendar cal,
1064 int baseYear = DefaultTwoDigitBaseYear) const;
1065 QDate toDate(const QString &string, const QString &format, QCalendar cal,
1066 int baseYear = DefaultTwoDigitBaseYear) const;
1067 QDateTime toDateTime(const QString &string, FormatType format, QCalendar cal,
1068 int baseYear = DefaultTwoDigitBaseYear) const;
1069 QDateTime toDateTime(const QString &string, const QString &format, QCalendar cal,
1070 int baseYear = DefaultTwoDigitBaseYear) const;
1071#endif
1072
1073 QString decimalPoint() const;
1074 QString groupSeparator() const;
1075 QString percent() const;
1076 QString zeroDigit() const;
1077 QString negativeSign() const;
1078 QString positiveSign() const;
1079 QString exponential() const;
1080
1081 QString monthName(int, FormatType format = LongFormat) const;
1082 QString standaloneMonthName(int, FormatType format = LongFormat) const;
1083 QString dayName(int, FormatType format = LongFormat) const;
1084 QString standaloneDayName(int, FormatType format = LongFormat) const;
1085
1086 Qt::DayOfWeek firstDayOfWeek() const;
1087 QList<Qt::DayOfWeek> weekdays() const;
1088
1089 QString amText() const;
1090 QString pmText() const;
1091
1092 MeasurementSystem measurementSystem() const;
1093 QLocale collation() const;
1094 Qt::LayoutDirection textDirection() const;
1095
1096 QString toUpper(const QString &str) const;
1097 QString toLower(const QString &str) const;
1098
1099 QString currencySymbol(CurrencySymbolFormat = CurrencySymbol) const;
1100 QString toCurrencyString(qlonglong, const QString &symbol = QString()) const;
1101 QString toCurrencyString(qulonglong, const QString &symbol = QString()) const;
1102 QString toCurrencyString(short i, const QString &symbol = QString()) const
1103 { return toCurrencyString(qlonglong(i), symbol); }
1104 QString toCurrencyString(ushort i, const QString &symbol = QString()) const
1105 { return toCurrencyString(qulonglong(i), symbol); }
1106 QString toCurrencyString(int i, const QString &symbol = QString()) const
1107 { return toCurrencyString(qlonglong(i), symbol); }
1108 QString toCurrencyString(uint i, const QString &symbol = QString()) const
1109 { return toCurrencyString(qulonglong(i), symbol); }
1110 QString toCurrencyString(double, const QString &symbol = QString(), int precision = -1) const;
1111 QString toCurrencyString(float i, const QString &symbol = QString(), int precision = -1) const
1112 { return toCurrencyString(double(i), symbol, precision); }
1113
1114 QString formattedDataSize(qint64 bytes, int precision = 2, DataSizeFormats format = DataSizeIecFormat) const;
1115
1116#if QT_CORE_REMOVED_SINCE(6, 7)
1117 QStringList uiLanguages() const;
1118#endif
1119 QStringList uiLanguages(TagSeparator separator = TagSeparator::Dash) const;
1120
1121 enum LanguageCodeType {
1122 ISO639Part1 = 1 << 0,
1123 ISO639Part2B = 1 << 1,
1124 ISO639Part2T = 1 << 2,
1125 ISO639Part3 = 1 << 3,
1126 LegacyLanguageCode = 1 << 15,
1127
1128 ISO639Part2 = ISO639Part2B | ISO639Part2T,
1129 ISO639Alpha2 = ISO639Part1,
1130 ISO639Alpha3 = ISO639Part2 | ISO639Part3,
1131 ISO639 = ISO639Alpha2 | ISO639Alpha3,
1132
1133 AnyLanguageCode = -1
1134 };
1135 Q_DECLARE_FLAGS(LanguageCodeTypes, LanguageCodeType)
1136 Q_FLAG(LanguageCodeTypes)
1137
1138#if QT_CORE_REMOVED_SINCE(6, 3)
1139 static QString languageToCode(Language language);
1140 static Language codeToLanguage(QStringView languageCode) noexcept;
1141#endif
1142 static QString languageToCode(Language language, LanguageCodeTypes codeTypes = AnyLanguageCode);
1143 static Language codeToLanguage(QStringView languageCode,
1144 LanguageCodeTypes codeTypes = AnyLanguageCode) noexcept;
1145 static QString territoryToCode(Territory territory);
1146 static Territory codeToTerritory(QStringView territoryCode) noexcept;
1147#if QT_DEPRECATED_SINCE(6, 6)
1148 QT_DEPRECATED_VERSION_X_6_6("Use territoryToCode(Territory) instead")
1149 static QString countryToCode(Country country);
1150 QT_DEPRECATED_VERSION_X_6_6("Use codeToTerritory(QStringView) instead")
1151 static Country codeToCountry(QStringView countryCode) noexcept;
1152#endif
1153 static QString scriptToCode(Script script);
1154 static Script codeToScript(QStringView scriptCode) noexcept;
1155
1156 static QString languageToString(Language language);
1157 static QString territoryToString(Territory territory);
1158#if QT_DEPRECATED_SINCE(6, 6)
1159 QT_DEPRECATED_VERSION_X_6_6("Use territoryToString(Territory) instead")
1160 static QString countryToString(Country country);
1161#endif
1162 static QString scriptToString(Script script);
1163 static void setDefault(const QLocale &locale);
1164
1165 static QLocale c() { return QLocale(C); }
1166 static QLocale system();
1167
1168 static QList<QLocale> matchingLocales(QLocale::Language language, QLocale::Script script,
1169 QLocale::Territory territory);
1170#if QT_DEPRECATED_SINCE(6, 6)
1171 QT_DEPRECATED_VERSION_X_6_6("Query territory() on each entry from matchingLocales() instead")
1172 static QList<Country> countriesForLanguage(Language lang);
1173#endif
1174
1175 void setNumberOptions(NumberOptions options);
1176 NumberOptions numberOptions() const;
1177
1178 enum QuotationStyle { StandardQuotation, AlternateQuotation };
1179 Q_ENUM(QuotationStyle)
1180 QString quoteString(const QString &str, QuotationStyle style = StandardQuotation) const
1181 { return quoteString(str: QStringView(str), style); }
1182 QString quoteString(QStringView str, QuotationStyle style = StandardQuotation) const;
1183
1184 QString createSeparatedList(const QStringList &strl) const;
1185
1186private:
1187 QLocale(QLocalePrivate &dd);
1188 bool equals(const QLocale &other) const noexcept;
1189 friend class QLocalePrivate;
1190 friend class QSystemLocale;
1191 friend class QTimeZonePrivate;
1192 friend class QCalendarBackend;
1193 friend class QRomanCalendar;
1194 friend Q_CORE_EXPORT size_t qHash(const QLocale &key, size_t seed) noexcept;
1195
1196 friend bool comparesEqual(const QLocale &lhs, const QLocale &rhs) noexcept
1197 {
1198 return lhs.equals(other: rhs);
1199 }
1200 Q_DECLARE_EQUALITY_COMPARABLE(QLocale)
1201
1202 friend Q_CORE_EXPORT bool comparesEqual(const QLocale &lhs, Language rhs);
1203 Q_DECLARE_EQUALITY_COMPARABLE_NON_NOEXCEPT(QLocale, Language)
1204
1205 QSharedDataPointer<QLocalePrivate> d;
1206};
1207Q_DECLARE_SHARED(QLocale)
1208Q_DECLARE_OPERATORS_FOR_FLAGS(QLocale::NumberOptions)
1209Q_DECLARE_OPERATORS_FOR_FLAGS(QLocale::LanguageCodeTypes)
1210
1211#if QT_CORE_INLINE_IMPL_SINCE(6, 4)
1212QLocale::QLocale(const QString &name)
1213 : QLocale(qToStringViewIgnoringNull(s: name)) {}
1214#endif
1215
1216#ifndef QT_NO_DATASTREAM
1217Q_CORE_EXPORT QDataStream &operator<<(QDataStream &, const QLocale &);
1218Q_CORE_EXPORT QDataStream &operator>>(QDataStream &, QLocale &);
1219#endif
1220
1221#ifndef QT_NO_DEBUG_STREAM
1222Q_CORE_EXPORT QDebug operator<<(QDebug, const QLocale &);
1223#endif
1224
1225QT_END_NAMESPACE
1226
1227#endif // QLOCALE_H
1228

source code of qtbase/src/corelib/text/qlocale.h