Make locale ordering transitive
The ordering function used to sort the locale data generated for QLocale attempted to sort the default territory for a given language and script before other territories, but was too tangled for it to be obvious this is what it was doing. The result turned out to be non-transitive. Replace with code that implements the same preference but only applies it where the result is compatible with transitivity. This leads to a shuffling of the order of the Serbian-language locales, which sorts the Cyrillic ones before the Latin ones. This is consistent with my reading of the CLDR data, which fills in Cyrillic and Serbia for Serbian; Serbian/Cyrillic/Serbia did previously sort before all other Serbian variants. Thanks to Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> for discovering the non-transitivity. Pick-to: 6.2 Change-Id: I0ce9f78e620e714f980f32b85b7100ed0f92ad74 Reviewed-by: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io> Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
This commit is contained in:
parent
41a5480cc7
commit
7dec56c6a5
@ -77,7 +77,7 @@ static const int ImperialMeasurementSystemsCount =
|
||||
// GENERATED PART STARTS HERE
|
||||
|
||||
/*
|
||||
This part of the file was generated on 2021-04-09 from the
|
||||
This part of the file was generated on 2021-07-06 from the
|
||||
Common Locale Data Repository v39
|
||||
|
||||
http://www.unicode.org/cldr/
|
||||
@ -1641,13 +1641,13 @@ static const QLocaleData locale_data[] = {
|
||||
{ 249, 66, 117, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 0, 0, 56, 56, 56, 56, 83, 83, 0, 0, 0, 5, 22, 13, 0, 4, 0, 0, 0, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 27, 27, 27, 27, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 0, 0, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Sardinian/Latin/Italy
|
||||
{ 251, 66, 160, 0, 0, 0, 0, 6, 1, 0, 2, 3, 4, 5, 9, 10, 11, 12, 13, 751, 87, 0, 0,16712,16712,16766,16766,16793,16793, 0, 0, 0, 5, 22, 272, 4324, 0, 0, 5023, 4690, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 27, 8, 10, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 21, 4, 0, 4, 10, {77,90,78}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Sena/Latin/Mozambique
|
||||
{ 252, 27, 207, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16806,16806,16857,16857, 2341, 2341, 589, 608, 916, 5, 22, 303, 4345, 19, 24, 5027, 5033, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 51, 51, 27, 27, 13, 13, 9, 8, 7, 17, 23, 3, 12, 5, 7, 6, 6, {82,83,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Serbia
|
||||
{ 252, 66, 29, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0, 2149, 2149, 2206,16884, 2233, 2233, 598, 616, 216, 5, 22, 133, 575, 19, 24, 5039, 581, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 57, 57, 27, 27, 13, 13, 11, 8, 7, 17, 23, 2, 40, 5, 7, 6, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Bosnia And Herzegovina
|
||||
{ 252, 66, 207, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16911,16911,16884,16884, 2233, 2233, 609, 616, 216, 5, 22, 303, 4357, 19, 24, 5039, 5045, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 53, 53, 27, 27, 13, 13, 9, 8, 7, 17, 23, 3, 12, 5, 7, 6, 6, {82,83,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Serbia
|
||||
{ 252, 27, 29, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0, 2259, 2259, 2314,16857, 2341, 2341, 101, 608, 916, 5, 22, 135, 4369, 19, 24, 5027, 608, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 55, 55, 27, 27, 13, 13, 11, 8, 7, 17, 23, 2, 40, 5, 7, 6, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Bosnia And Herzegovina
|
||||
{ 252, 27, 126, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16806,16806,16857,16857, 2341, 2341, 589, 608, 916, 5, 22, 13, 4409, 19, 24, 5027, 5051, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 51, 51, 27, 27, 13, 13, 9, 8, 7, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Kosovo
|
||||
{ 252, 27, 157, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16964,16964,16857,16857, 2341, 2341, 101, 608, 916, 5, 22, 13, 4409, 19, 24, 5027, 5057, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 54, 54, 27, 27, 13, 13, 11, 8, 7, 17, 23, 1, 4, 5, 7, 6, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Montenegro
|
||||
{ 252, 66, 126, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16911,16911,16884,16884, 2233, 2233, 609, 616, 216, 5, 22, 13, 4413, 19, 24, 5039, 5066, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 53, 53, 27, 27, 13, 13, 9, 8, 7, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Kosovo
|
||||
{ 252, 66, 157, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,17018,17018,16884,16884, 2233, 2233, 598, 616, 216, 5, 22, 13, 4413, 19, 24, 5039, 5072, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 56, 56, 27, 27, 13, 13, 11, 8, 7, 17, 23, 1, 4, 5, 7, 6, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Montenegro
|
||||
{ 252, 27, 29, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0, 2259, 2259, 2314,16857, 2341, 2341, 101, 608, 916, 5, 22, 135, 4357, 19, 24, 5027, 608, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 55, 55, 27, 27, 13, 13, 11, 8, 7, 17, 23, 2, 40, 5, 7, 6, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Bosnia And Herzegovina
|
||||
{ 252, 27, 126, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16806,16806,16857,16857, 2341, 2341, 589, 608, 916, 5, 22, 13, 4397, 19, 24, 5027, 5039, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 51, 51, 27, 27, 13, 13, 9, 8, 7, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Kosovo
|
||||
{ 252, 27, 157, 0, 0, 117, 117, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16884,16884,16857,16857, 2341, 2341, 101, 608, 916, 5, 22, 13, 4397, 19, 24, 5027, 5045, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 54, 54, 27, 27, 13, 13, 11, 8, 7, 17, 23, 1, 4, 5, 7, 6, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Cyrillic/Montenegro
|
||||
{ 252, 66, 29, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0, 2149, 2149, 2206,16938, 2233, 2233, 598, 616, 216, 5, 22, 133, 575, 19, 24, 5054, 581, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 57, 57, 27, 27, 13, 13, 11, 8, 7, 17, 23, 2, 40, 5, 7, 6, 19, {66,65,77}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Bosnia And Herzegovina
|
||||
{ 252, 66, 126, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16965,16965,16938,16938, 2233, 2233, 609, 616, 216, 5, 22, 13, 4401, 19, 24, 5054, 5060, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 53, 53, 27, 27, 13, 13, 9, 8, 7, 17, 23, 1, 4, 5, 7, 6, 6, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Kosovo
|
||||
{ 252, 66, 157, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,17018,17018,16938,16938, 2233, 2233, 598, 616, 216, 5, 22, 13, 4401, 19, 24, 5054, 5066, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 56, 56, 27, 27, 13, 13, 11, 8, 7, 17, 23, 1, 4, 5, 7, 6, 9, {69,85,82}, 2, 1, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Montenegro
|
||||
{ 252, 66, 207, 0, 0, 110, 110, 6, 1, 0, 2, 3, 4, 5, 9, 15, 10, 12, 12, 375, 395, 0, 0,16965,16965,16938,16938, 2233, 2233, 609, 616, 216, 5, 22, 303, 4405, 19, 24, 5054, 5075, 6, 6, 7, 7, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 20, 7, 10, 5, 53, 53, 27, 27, 13, 13, 9, 8, 7, 17, 23, 3, 12, 5, 7, 6, 6, {82,83,68}, 0, 0, 1, 6, 7, 1, 3, 3 }, // Serbian/Latin/Serbia
|
||||
{ 253, 66, 230, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 0, 127, 0, 0,17074,17074,17136,17136,17163,17163, 618, 624, 0, 5, 22, 118, 4417, 0, 0, 5081, 2025, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 62, 62, 27, 27, 13, 13, 5, 8, 4, 17, 23, 3, 20, 4, 0, 9, 8, {84,90,83}, 2, 0, 1, 6, 7, 1, 3, 3 }, // Shambala/Latin/Tanzania
|
||||
{ 254, 66, 261, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 11, 11, 13, 13, 27, 44, 0, 0,17176,17176,17230,17230,17257,17257, 0, 0, 0, 5, 22, 145, 4437, 9, 13, 5090, 2191, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 10, 5, 54, 54, 27, 27, 13, 13, 2, 2, 4, 17, 23, 3, 15, 4, 6, 8, 8, {85,83,68}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Shona/Latin/Zimbabwe
|
||||
{ 255, 141, 50, 0, 0, 0, 0, 6, 0, 1, 2, 3, 4, 5, 9, 10, 11, 12, 13, 27, 44, 10, 22,17270,17270,17297,17297,17317,17317, 623, 632, 0, 5, 22, 151, 0, 4, 0, 5098, 5101, 6, 6, 6, 6, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 17, 10, 12, 7, 27, 27, 20, 20, 13, 13, 2, 2, 4, 17, 23, 1, 0, 5, 0, 3, 2, {67,78,89}, 2, 1, 7, 6, 7, 1, 3, 3 }, // Sichuan Yi/Yi/China
|
||||
@ -2799,13 +2799,13 @@ static const char16_t days_data[] = {
|
||||
0x430, 0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442, 0x432,
|
||||
0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x43d, 0x435, 0x434,
|
||||
0x3b, 0x43f, 0x43e, 0x43d, 0x3b, 0x443, 0x442, 0x43e, 0x3b, 0x441, 0x440, 0x435, 0x3b, 0x447, 0x435, 0x442, 0x3b, 0x43f, 0x435, 0x442,
|
||||
0x3b, 0x441, 0x443, 0x431, 0x6e, 0x65, 0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x65, 0x3b,
|
||||
0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65, 0x74, 0x3b, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70,
|
||||
0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x65,
|
||||
0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75,
|
||||
0x62, 0x6f, 0x74, 0x61, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430,
|
||||
0x3b, 0x441, 0x443, 0x431, 0x43d, 0x435, 0x434, 0x458, 0x435, 0x459, 0x430, 0x3b, 0x43f, 0x43e, 0x43d, 0x435, 0x434, 0x435, 0x459, 0x430,
|
||||
0x43a, 0x3b, 0x443, 0x442, 0x43e, 0x440, 0x430, 0x43a, 0x3b, 0x441, 0x440, 0x438, 0x458, 0x435, 0x434, 0x430, 0x3b, 0x447, 0x435, 0x442,
|
||||
0x432, 0x440, 0x442, 0x430, 0x43a, 0x3b, 0x43f, 0x435, 0x442, 0x430, 0x43a, 0x3b, 0x441, 0x443, 0x431, 0x43e, 0x442, 0x430, 0x6e, 0x65,
|
||||
0x64, 0x3b, 0x70, 0x6f, 0x6e, 0x3b, 0x75, 0x74, 0x6f, 0x3b, 0x73, 0x72, 0x65, 0x3b, 0x10d, 0x65, 0x74, 0x3b, 0x70, 0x65,
|
||||
0x74, 0x3b, 0x73, 0x75, 0x62, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c,
|
||||
0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74, 0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74,
|
||||
0x76, 0x72, 0x74, 0x61, 0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x6e, 0x65,
|
||||
0x64, 0x6a, 0x65, 0x6c, 0x6a, 0x61, 0x3b, 0x70, 0x6f, 0x6e, 0x65, 0x64, 0x65, 0x6c, 0x6a, 0x61, 0x6b, 0x3b, 0x75, 0x74,
|
||||
0x6f, 0x72, 0x61, 0x6b, 0x3b, 0x73, 0x72, 0x69, 0x6a, 0x65, 0x64, 0x61, 0x3b, 0x10d, 0x65, 0x74, 0x76, 0x72, 0x74, 0x61,
|
||||
0x6b, 0x3b, 0x70, 0x65, 0x74, 0x61, 0x6b, 0x3b, 0x73, 0x75, 0x62, 0x6f, 0x74, 0x61, 0x4a, 0x75, 0x6d, 0x61, 0x61, 0x70,
|
||||
@ -3446,10 +3446,10 @@ static const char16_t currency_display_name_data[] = {
|
||||
0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x92d, 0x93e, 0x930, 0x924, 0x940, 0x92f, 0x20,
|
||||
0x930, 0x942, 0x92a, 0x94d, 0x92f, 0x915, 0x92e, 0x94d, 0x1c65, 0x1c64, 0x1c67, 0x1c5a, 0x1c5b, 0x20, 0x1c68, 0x1c6e, 0x1c71, 0x1c5f, 0x1c5c, 0x20,
|
||||
0x1c74, 0x1c5f, 0x1c60, 0x1c5f, 0x4d, 0x65, 0x74, 0x69, 0x63, 0x61, 0x6c, 0x20, 0x64, 0x65, 0x20, 0x4d, 0x6f, 0xe7, 0x61, 0x6d,
|
||||
0x62, 0x69, 0x71, 0x75, 0x65, 0x421, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x53, 0x72, 0x70,
|
||||
0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x411, 0x43e, 0x441, 0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x445, 0x435, 0x440,
|
||||
0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e, 0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438,
|
||||
0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x415, 0x432, 0x440, 0x43e, 0x45, 0x76, 0x72, 0x6f, 0x73, 0x68, 0x69,
|
||||
0x62, 0x69, 0x71, 0x75, 0x65, 0x421, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x20, 0x434, 0x438, 0x43d, 0x430, 0x440, 0x411, 0x43e, 0x441,
|
||||
0x430, 0x43d, 0x441, 0x43a, 0x43e, 0x445, 0x435, 0x440, 0x446, 0x435, 0x433, 0x43e, 0x432, 0x430, 0x447, 0x43a, 0x430, 0x20, 0x43a, 0x43e,
|
||||
0x43d, 0x432, 0x435, 0x440, 0x442, 0x438, 0x431, 0x438, 0x43b, 0x43d, 0x430, 0x20, 0x43c, 0x430, 0x440, 0x43a, 0x430, 0x415, 0x432, 0x440,
|
||||
0x43e, 0x45, 0x76, 0x72, 0x6f, 0x53, 0x72, 0x70, 0x73, 0x6b, 0x69, 0x20, 0x64, 0x69, 0x6e, 0x61, 0x72, 0x73, 0x68, 0x69,
|
||||
0x6c, 0x69, 0x6e, 0x67, 0x69, 0x20, 0x79, 0x61, 0x20, 0x54, 0x61, 0x6e, 0x7a, 0x61, 0x6e, 0x69, 0x61, 0x44, 0x6f, 0x72,
|
||||
0x61, 0x20, 0x72, 0x65, 0x20, 0x41, 0x6d, 0x65, 0x72, 0x69, 0x6b, 0x61, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x64a,
|
||||
0x20, 0x631, 0x67e, 0x64a, 0x939, 0x93f, 0x902, 0x926, 0x941, 0x938, 0x94d, 0x924, 0x93e, 0x928, 0x940, 0x20, 0x930, 0x941, 0x92a, 0x92f,
|
||||
@ -3761,9 +3761,9 @@ static const char16_t endonyms_data[] = {
|
||||
0xea, 0x73, 0x65, 0x20, 0x74, 0xee, 0x20, 0x42, 0xea, 0x61, 0x66, 0x72, 0xee, 0x6b, 0x61, 0x49, 0x73, 0x68, 0x69, 0x73,
|
||||
0x61, 0x6e, 0x67, 0x75, 0x54, 0x61, 0x6e, 0x73, 0x61, 0x6e, 0x69, 0x79, 0x61, 0x938, 0x902, 0x938, 0x94d, 0x915, 0x943, 0x924,
|
||||
0x20, 0x92d, 0x93e, 0x937, 0x93e, 0x92d, 0x93e, 0x930, 0x924, 0x903, 0x1c65, 0x1c5f, 0x1c71, 0x1c5b, 0x1c5f, 0x1c72, 0x1c64, 0x1c64, 0x1c71, 0x1c70,
|
||||
0x1c64, 0x1c6d, 0x1c5f, 0x73, 0x65, 0x6e, 0x61, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x421, 0x440, 0x431, 0x438, 0x458, 0x430, 0x73,
|
||||
0x72, 0x70, 0x73, 0x6b, 0x69, 0x53, 0x72, 0x62, 0x69, 0x6a, 0x61, 0x41a, 0x43e, 0x441, 0x43e, 0x432, 0x43e, 0x426, 0x440, 0x43d,
|
||||
0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x4b, 0x6f, 0x73, 0x6f, 0x76, 0x6f, 0x43, 0x72, 0x6e, 0x61, 0x20, 0x47, 0x6f, 0x72,
|
||||
0x1c64, 0x1c6d, 0x1c5f, 0x73, 0x65, 0x6e, 0x61, 0x441, 0x440, 0x43f, 0x441, 0x43a, 0x438, 0x421, 0x440, 0x431, 0x438, 0x458, 0x430, 0x41a,
|
||||
0x43e, 0x441, 0x43e, 0x432, 0x43e, 0x426, 0x440, 0x43d, 0x430, 0x20, 0x413, 0x43e, 0x440, 0x430, 0x73, 0x72, 0x70, 0x73, 0x6b, 0x69,
|
||||
0x4b, 0x6f, 0x73, 0x6f, 0x76, 0x6f, 0x43, 0x72, 0x6e, 0x61, 0x20, 0x47, 0x6f, 0x72, 0x61, 0x53, 0x72, 0x62, 0x69, 0x6a,
|
||||
0x61, 0x4b, 0x69, 0x73, 0x68, 0x61, 0x6d, 0x62, 0x61, 0x61, 0x63, 0x68, 0x69, 0x53, 0x68, 0x6f, 0x6e, 0x61, 0xa188, 0xa320,
|
||||
0xa259, 0xa34f, 0xa1e9, 0x633, 0x646, 0x68c, 0x64a, 0x67e, 0x627, 0x6aa, 0x633, 0x62a, 0x627, 0x646, 0x938, 0x93f, 0x928, 0x94d, 0x927, 0x940,
|
||||
0xdc3, 0xdd2, 0xd82, 0xdc4, 0xdbd, 0xdc1, 0xdca, 0x200d, 0xdbb, 0xdd3, 0x20, 0xdbd, 0xd82, 0xd9a, 0xdcf, 0xdc0, 0x73, 0x6c, 0x6f, 0x76,
|
||||
|
@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE
|
||||
// GENERATED PART STARTS HERE
|
||||
|
||||
/*
|
||||
This part of the file was generated on 2021-04-09 from the
|
||||
This part of the file was generated on 2021-07-06 from the
|
||||
Common Locale Data Repository v39
|
||||
|
||||
http://www.unicode.org/cldr/
|
||||
@ -561,13 +561,13 @@ static const QCalendarLocale locale_data[] = {
|
||||
{ 249, 66, 117, 0, 0, 106, 106, 184, 184,106,106, 78, 78, 26, 26 },// Sardinian/Latin/Italy
|
||||
{ 251, 66, 160, 0, 0, 106, 106, 184, 184,106,106, 78, 78, 26, 26 },// Sena/Latin/Mozambique
|
||||
{ 252, 27, 207, 1032, 1122, 1219, 1219, 184, 184, 90, 97, 69, 69, 26, 26 },// Serbian/Cyrillic/Serbia
|
||||
{ 252, 66, 29, 7959, 8053, 8150, 8150, 184, 184, 94, 97, 72, 72, 26, 26 },// Serbian/Latin/Bosnia And Herzegovina
|
||||
{ 252, 66, 207, 7959, 8053, 8150, 8150, 184, 184, 94, 97, 72, 72, 26, 26 },// Serbian/Latin/Serbia
|
||||
{ 252, 27, 29, 1032, 1122, 1219, 1219, 184, 184, 90, 97, 69, 69, 26, 26 },// Serbian/Cyrillic/Bosnia And Herzegovina
|
||||
{ 252, 27, 126, 1032, 1122, 1219, 1219, 184, 184, 90, 97, 69, 69, 26, 26 },// Serbian/Cyrillic/Kosovo
|
||||
{ 252, 27, 157, 1032, 1122, 1219, 1219, 184, 184, 90, 97, 69, 69, 26, 26 },// Serbian/Cyrillic/Montenegro
|
||||
{ 252, 66, 29, 7959, 8053, 8150, 8150, 184, 184, 94, 97, 72, 72, 26, 26 },// Serbian/Latin/Bosnia And Herzegovina
|
||||
{ 252, 66, 126, 7959, 8053, 8150, 8150, 184, 184, 94, 97, 72, 72, 26, 26 },// Serbian/Latin/Kosovo
|
||||
{ 252, 66, 157, 7959, 8053, 8150, 8150, 184, 184, 94, 97, 72, 72, 26, 26 },// Serbian/Latin/Montenegro
|
||||
{ 252, 66, 207, 7959, 8053, 8150, 8150, 184, 184, 94, 97, 72, 72, 26, 26 },// Serbian/Latin/Serbia
|
||||
{ 253, 66, 230, 0, 0, 106, 106, 184, 184,106,106, 78, 78, 26, 26 },// Shambala/Latin/Tanzania
|
||||
{ 254, 66, 261, 0, 0, 106, 106, 184, 184,106,106, 78, 78, 26, 26 },// Shona/Latin/Zimbabwe
|
||||
{ 255, 141, 50, 0, 0, 106, 106, 184, 184,106,106, 78, 78, 26, 26 },// Sichuan Yi/Yi/China
|
||||
|
@ -59,7 +59,7 @@ QT_BEGIN_NAMESPACE
|
||||
// GENERATED PART STARTS HERE
|
||||
|
||||
/*
|
||||
This part of the file was generated on 2021-04-09 from the
|
||||
This part of the file was generated on 2021-07-06 from the
|
||||
Common Locale Data Repository v39
|
||||
|
||||
http://www.unicode.org/cldr/
|
||||
@ -561,13 +561,13 @@ static const QCalendarLocale locale_data[] = {
|
||||
{ 249, 66, 117, 0, 0, 0, 0, 153, 153, 83, 83, 83, 83, 26, 26 },// Sardinian/Latin/Italy
|
||||
{ 251, 66, 160, 0, 0, 0, 0, 153, 153, 83, 83, 83, 83, 26, 26 },// Sena/Latin/Mozambique
|
||||
{ 252, 27, 207, 447, 447, 447, 447, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Cyrillic/Serbia
|
||||
{ 252, 66, 29, 3513, 3513, 3513, 3513, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Latin/Bosnia And Herzegovina
|
||||
{ 252, 66, 207, 3513, 3513, 3513, 3513, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Latin/Serbia
|
||||
{ 252, 27, 29, 447, 447, 447, 447, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Cyrillic/Bosnia And Herzegovina
|
||||
{ 252, 27, 126, 447, 447, 447, 447, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Cyrillic/Kosovo
|
||||
{ 252, 27, 157, 447, 447, 447, 447, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Cyrillic/Montenegro
|
||||
{ 252, 66, 29, 3513, 3513, 3513, 3513, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Latin/Bosnia And Herzegovina
|
||||
{ 252, 66, 126, 3513, 3513, 3513, 3513, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Latin/Kosovo
|
||||
{ 252, 66, 157, 3513, 3513, 3513, 3513, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Latin/Montenegro
|
||||
{ 252, 66, 207, 3513, 3513, 3513, 3513, 153, 153, 80, 80, 80, 80, 26, 26 },// Serbian/Latin/Serbia
|
||||
{ 253, 66, 230, 0, 0, 0, 0, 153, 153, 83, 83, 83, 83, 26, 26 },// Shambala/Latin/Tanzania
|
||||
{ 254, 66, 261, 0, 0, 0, 0, 153, 153, 83, 83, 83, 83, 26, 26 },// Shona/Latin/Zimbabwe
|
||||
{ 255, 141, 50, 0, 0, 0, 0, 153, 153, 83, 83, 83, 83, 26, 26 },// Sichuan Yi/Yi/China
|
||||
|
@ -59,8 +59,8 @@ QT_BEGIN_NAMESPACE
|
||||
// GENERATED PART STARTS HERE
|
||||
|
||||
/*
|
||||
This part of the file was generated on 2021-03-12 from the
|
||||
Common Locale Data Repository v38
|
||||
This part of the file was generated on 2021-07-06 from the
|
||||
Common Locale Data Repository v39
|
||||
|
||||
http://www.unicode.org/cldr/
|
||||
|
||||
@ -561,13 +561,13 @@ static const QCalendarLocale locale_data[] = {
|
||||
{ 249, 66, 117, 181, 181, 181, 181, 155, 155, 47, 47, 47, 47, 26, 26 },// Sardinian/Latin/Italy
|
||||
{ 251, 66, 160,31965,31965,32052,32052, 132, 132, 87, 87, 47, 47, 23, 23 },// Sena/Latin/Mozambique
|
||||
{ 252, 27, 207,32099,32099,32179,32179, 5154, 5154, 80, 80, 47, 47, 23, 23 },// Serbian/Cyrillic/Serbia
|
||||
{ 252, 66, 29,32226,32226,32306,32306, 5002, 5002, 80, 80, 47, 47, 23, 23 },// Serbian/Latin/Bosnia And Herzegovina
|
||||
{ 252, 66, 207,32226,32226,32306,32306, 5002, 5002, 80, 80, 47, 47, 23, 23 },// Serbian/Latin/Serbia
|
||||
{ 252, 27, 29,32099,32099,32179,32179, 5154, 5154, 80, 80, 47, 47, 23, 23 },// Serbian/Cyrillic/Bosnia And Herzegovina
|
||||
{ 252, 27, 126,32099,32099,32353,32353, 5154, 5154, 80, 80, 49, 49, 23, 23 },// Serbian/Cyrillic/Kosovo
|
||||
{ 252, 27, 157,32099,32099,32353,32353, 5154, 5154, 80, 80, 49, 49, 23, 23 },// Serbian/Cyrillic/Montenegro
|
||||
{ 252, 66, 126,32226,32226,32402,32402, 5002, 5002, 80, 80, 49, 49, 23, 23 },// Serbian/Latin/Kosovo
|
||||
{ 252, 66, 157,32226,32226,32402,32402, 5002, 5002, 80, 80, 49, 49, 23, 23 },// Serbian/Latin/Montenegro
|
||||
{ 252, 27, 126,32099,32099,32226,32226, 5154, 5154, 80, 80, 49, 49, 23, 23 },// Serbian/Cyrillic/Kosovo
|
||||
{ 252, 27, 157,32099,32099,32226,32226, 5154, 5154, 80, 80, 49, 49, 23, 23 },// Serbian/Cyrillic/Montenegro
|
||||
{ 252, 66, 29,32275,32275,32355,32355, 5002, 5002, 80, 80, 47, 47, 23, 23 },// Serbian/Latin/Bosnia And Herzegovina
|
||||
{ 252, 66, 126,32275,32275,32402,32402, 5002, 5002, 80, 80, 49, 49, 23, 23 },// Serbian/Latin/Kosovo
|
||||
{ 252, 66, 157,32275,32275,32402,32402, 5002, 5002, 80, 80, 49, 49, 23, 23 },// Serbian/Latin/Montenegro
|
||||
{ 252, 66, 207,32275,32275,32355,32355, 5002, 5002, 80, 80, 47, 47, 23, 23 },// Serbian/Latin/Serbia
|
||||
{ 253, 66, 230,32451,32451,22360,22360, 132, 132, 83, 83, 47, 47, 23, 23 },// Shambala/Latin/Tanzania
|
||||
{ 254, 66, 261,32534,32534,32633,32633,32680,32680, 99, 99, 47, 47, 23, 23 },// Shona/Latin/Zimbabwe
|
||||
{ 255, 141, 50,32703,32703,32703,32703, 155, 155, 37, 37, 37, 37, 26, 26 },// Sichuan Yi/Yi/China
|
||||
@ -2303,16 +2303,16 @@ static const char16_t months_data[] = {
|
||||
0x440, 0x3b, 0x43d, 0x43e, 0x432, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x3b, 0x434, 0x435, 0x446, 0x435, 0x43c, 0x431, 0x430, 0x440, 0x458,
|
||||
0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458,
|
||||
0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d,
|
||||
0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x6a, 0x61, 0x6e, 0x75, 0x61, 0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72,
|
||||
0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b,
|
||||
0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72,
|
||||
0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f, 0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x64, 0x65,
|
||||
0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70,
|
||||
0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65,
|
||||
0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431,
|
||||
0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430, 0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443,
|
||||
0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441, 0x435, 0x43f, 0x442, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434,
|
||||
0x435, 0x446, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d,
|
||||
0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x458, 0x430, 0x43d, 0x3b, 0x444, 0x435, 0x431, 0x3b, 0x43c, 0x430, 0x440, 0x442, 0x3b, 0x430,
|
||||
0x43f, 0x440, 0x3b, 0x43c, 0x430, 0x458, 0x3b, 0x458, 0x443, 0x43d, 0x3b, 0x458, 0x443, 0x43b, 0x3b, 0x430, 0x432, 0x433, 0x3b, 0x441,
|
||||
0x435, 0x43f, 0x442, 0x3b, 0x43e, 0x43a, 0x442, 0x3b, 0x43d, 0x43e, 0x432, 0x3b, 0x434, 0x435, 0x446, 0x6a, 0x61, 0x6e, 0x75, 0x61,
|
||||
0x72, 0x3b, 0x66, 0x65, 0x62, 0x72, 0x75, 0x61, 0x72, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x69, 0x6c,
|
||||
0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x75, 0x73, 0x74, 0x3b,
|
||||
0x73, 0x65, 0x70, 0x74, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x6f, 0x6b, 0x74, 0x6f, 0x62, 0x61, 0x72, 0x3b, 0x6e, 0x6f,
|
||||
0x76, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x3b, 0x64, 0x65, 0x63, 0x65, 0x6d, 0x62, 0x61, 0x72, 0x6a, 0x61, 0x6e, 0x3b, 0x66,
|
||||
0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d, 0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a,
|
||||
0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x3b, 0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64,
|
||||
0x65, 0x63, 0x6a, 0x61, 0x6e, 0x3b, 0x66, 0x65, 0x62, 0x3b, 0x6d, 0x61, 0x72, 0x74, 0x3b, 0x61, 0x70, 0x72, 0x3b, 0x6d,
|
||||
0x61, 0x6a, 0x3b, 0x6a, 0x75, 0x6e, 0x3b, 0x6a, 0x75, 0x6c, 0x3b, 0x61, 0x76, 0x67, 0x3b, 0x73, 0x65, 0x70, 0x74, 0x3b,
|
||||
0x6f, 0x6b, 0x74, 0x3b, 0x6e, 0x6f, 0x76, 0x3b, 0x64, 0x65, 0x63, 0x4a, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x46,
|
||||
0x65, 0x62, 0x6c, 0x75, 0x61, 0x6c, 0x69, 0x3b, 0x4d, 0x61, 0x63, 0x68, 0x69, 0x3b, 0x41, 0x70, 0x6c, 0x69, 0x6c, 0x69,
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env python2
|
||||
#############################################################################
|
||||
##
|
||||
## Copyright (C) 2020 The Qt Company Ltd.
|
||||
## Copyright (C) 2021 The Qt Company Ltd.
|
||||
## Contact: https://www.qt.io/licensing/
|
||||
##
|
||||
## This file is part of the test suite of the Qt Toolkit.
|
||||
@ -39,40 +39,49 @@ import datetime
|
||||
from qlocalexml import QLocaleXmlReader
|
||||
from localetools import unicode2hex, wrap_list, Error, Transcriber, SourceFileEditor
|
||||
|
||||
def compareLocaleKeys(key1, key2):
|
||||
if key1 == key2:
|
||||
def compareLocaleKeys(left, right):
|
||||
"""Compares two (language, script, territory) triples.
|
||||
|
||||
Returns a negative value if left should sort before right,
|
||||
positive if left should sort after right and zero if they are
|
||||
equal.
|
||||
|
||||
Loosely, it sorts by (language, script, territory) *but* sorts a
|
||||
triple with the default territory for its language and script
|
||||
before all other triples for that language, unless they meet the
|
||||
same condition. In the case of the same language in two scripts,
|
||||
if just one triple does have its default territory then it wins;
|
||||
but if both have their respective default the special treatment of
|
||||
default territory is skipped."""
|
||||
|
||||
# TODO: study the relationship between this and CLDR's likely
|
||||
# sub-tags algorithm. Work out how locale sort-order impacts
|
||||
# QLocale's likely sub-tag matching algorithms. Make sure this is
|
||||
# sorting in an order compatible with those algorithms.
|
||||
# TODO: should we compare territory before or after script ?
|
||||
|
||||
if left == right:
|
||||
return 0
|
||||
|
||||
if key1[0] != key2[0]: # First sort by language:
|
||||
return key1[0] - key2[0]
|
||||
if left[0] != right[0]: # First sort by language:
|
||||
return left[0] - right[0]
|
||||
|
||||
defaults = compareLocaleKeys.default_map
|
||||
# maps {(language, script): territory} by ID
|
||||
try:
|
||||
territory = defaults[key1[:2]]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
if key1[2] == territory:
|
||||
return -1
|
||||
if key2[2] == territory:
|
||||
leftLand = defaults.get(left[:2])
|
||||
rightLand = defaults.get(right[:2])
|
||||
|
||||
# If just one matches its default territory, it wins:
|
||||
if leftLand is None or left[2] != leftLand:
|
||||
if rightLand is not None and right[2] == rightLand:
|
||||
return 1
|
||||
# else: Neither matches
|
||||
elif rightLand is None or right[2] != rightLand:
|
||||
return -1
|
||||
# else: Both match
|
||||
|
||||
if key1[1] == key2[1]:
|
||||
return key1[2] - key2[2]
|
||||
|
||||
try:
|
||||
territory = defaults[key2[:2]]
|
||||
except KeyError:
|
||||
pass
|
||||
else:
|
||||
if key2[2] == territory:
|
||||
return 1
|
||||
if key1[2] == territory:
|
||||
return -1
|
||||
|
||||
return key1[1] - key2[1]
|
||||
|
||||
# Compare script first, territory after:
|
||||
return left[1] - right[1] or left[2] - right[2]
|
||||
|
||||
class StringDataToken:
|
||||
def __init__(self, index, length, bits):
|
||||
|
Loading…
x
Reference in New Issue
Block a user