on 85fefaa help sign in
unity8/plugins/Wizard/LocalePlugin.cpp
602 lines 28 kB history raw
1/*
2 * Copyright (C) 2015 Canonical Ltd.
3 *
4 * This program is free software: you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License version 3, as published
6 * by the Free Software Foundation.
7 *
8 * This program is distributed in the hope that it will be useful, but
9 * WITHOUT ANY WARRANTY; without even the implied warranties of
10 * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR
11 * PURPOSE. See the GNU General Public License for more details.
12 *
13 * You should have received a copy of the GNU General Public License along
14 * with this program. If not, see <http://www.gnu.org/licenses/>.
15 */
17#include <QLocale>
18#include <QStringList>
20#include <libintl.h>
22#include "LocalePlugin.h"
24class LocalePrivate {
25public:
26 LocalePrivate() {
27 m_countryNames = QHash<QLocale::Country, QString>(
28 {{QLocale::IvoryCoast, gettext("Ivory Coast")},
29 {QLocale::Ghana, gettext("Ghana")},
30 {QLocale::Ethiopia, gettext("Ethiopia")},
31 {QLocale::Algeria, gettext("Algeria")},
32 {QLocale::Eritrea, gettext("Eritrea")},
33 {QLocale::Mali, gettext("Mali")},
34 {QLocale::CentralAfricanRepublic, gettext("Central African Republic")},
35 {QLocale::Gambia, gettext("Gambia")},
36 {QLocale::GuineaBissau, gettext("Guinea Bissau")},
37 {QLocale::Malawi, gettext("Malawi")},
38 {QLocale::CongoBrazzaville, gettext("Congo Brazzaville")},
39 {QLocale::Burundi, gettext("Burundi")},
40 {QLocale::Egypt, gettext("Egypt")},
41 {QLocale::Morocco, gettext("Morocco")},
42 {QLocale::Spain, gettext("Spain")},
43 {QLocale::Guinea, gettext("Guinea")},
44 {QLocale::Senegal, gettext("Senegal")},
45 {QLocale::Tanzania, gettext("Tanzania")},
46 {QLocale::Djibouti, gettext("Djibouti")},
47 {QLocale::Cameroon, gettext("Cameroon")},
48 {QLocale::WesternSahara, gettext("Western Sahara")},
49 {QLocale::SierraLeone, gettext("Sierra Leone")},
50 {QLocale::Botswana, gettext("Botswana")},
51 {QLocale::Zimbabwe, gettext("Zimbabwe")},
52 {QLocale::SouthAfrica, gettext("South Africa")},
53 {QLocale::SouthSudan, gettext("South Sudan")},
54 {QLocale::Uganda, gettext("Uganda")},
55 {QLocale::Sudan, gettext("Sudan")},
56 {QLocale::Rwanda, gettext("Rwanda")},
57 {QLocale::CongoKinshasa, gettext("Congo (Kinshasa)")},
58 {QLocale::Nigeria, gettext("Nigeria")},
59 {QLocale::Gabon, gettext("Gabon")},
60 {QLocale::Togo, gettext("Togo")},
61 {QLocale::Angola, gettext("Angola")},
62 {QLocale::Zambia, gettext("Zambia")},
63 {QLocale::EquatorialGuinea, gettext("Equatorial Guinea")},
64 {QLocale::Mozambique, gettext("Mozambique")},
65 {QLocale::Lesotho, gettext("Lesotho")},
66 {QLocale::Swaziland, gettext("Swaziland")},
67 {QLocale::Somalia, gettext("Somalia")},
68 {QLocale::Liberia, gettext("Liberia")},
69 {QLocale::Kenya, gettext("Kenya")},
70 {QLocale::Chad, gettext("Chad")},
71 {QLocale::Niger, gettext("Niger")},
72 {QLocale::Mauritania, gettext("Mauritania")},
73 {QLocale::BurkinaFaso, gettext("Burkina Faso")},
74 {QLocale::Benin, gettext("Benin")},
75 {QLocale::SaoTomeAndPrincipe, gettext("Sao Tome And Principe")},
76 {QLocale::Libya, gettext("Libya")},
77 {QLocale::Tunisia, gettext("Tunisia")},
78 {QLocale::Namibia, gettext("Namibia")},
79 {QLocale::UnitedStates, gettext("United States")},
80 {QLocale::Anguilla, gettext("Anguilla")},
81 {QLocale::AntiguaAndBarbuda, gettext("Antigua And Barbuda")},
82 {QLocale::Brazil, gettext("Brazil")},
83 {QLocale::Argentina, gettext("Argentina")},
84 {QLocale::Aruba, gettext("Aruba")},
85 {QLocale::Paraguay, gettext("Paraguay")},
86 {QLocale::Canada, gettext("Canada")},
87 {QLocale::Mexico, gettext("Mexico")},
88 {QLocale::Barbados, gettext("Barbados")},
89 {QLocale::Belize, gettext("Belize")},
90 {QLocale::Colombia, gettext("Colombia")},
91 {QLocale::Venezuela, gettext("Venezuela")},
92 {QLocale::FrenchGuiana, gettext("French Guiana")},
93 {QLocale::CaymanIslands, gettext("Cayman Islands")},
94 {QLocale::CostaRica, gettext("Costa Rica")},
95 {QLocale::CuraSao, gettext("Cura Sao")},
96 {QLocale::Greenland, gettext("Greenland")},
97 {QLocale::Dominica, gettext("Dominica")},
98 {QLocale::ElSalvador, gettext("El Salvador")},
99 {QLocale::TurksAndCaicosIslands, gettext("Turks And Caicos Islands")},
100 {QLocale::Grenada, gettext("Grenada")},
101 {QLocale::Guadeloupe, gettext("Guadeloupe")},
102 {QLocale::Guatemala, gettext("Guatemala")},
103 {QLocale::Ecuador, gettext("Ecuador")},
104 {QLocale::Guyana, gettext("Guyana")},
105 {QLocale::Cuba, gettext("Cuba")},
106 {QLocale::Jamaica, gettext("Jamaica")},
107 {QLocale::Bonaire, gettext("Bonaire")},
108 {QLocale::Bolivia, gettext("Bolivia")},
109 {QLocale::Peru, gettext("Peru")},
110 {QLocale::SintMaarten, gettext("Sint Maarten")},
111 {QLocale::Nicaragua, gettext("Nicaragua")},
112 {QLocale::SaintMartin, gettext("Saint Martin")},
113 {QLocale::Martinique, gettext("Martinique")},
114 {QLocale::SaintPierreAndMiquelon, gettext("Saint Pierre And Miquelon")},
115 {QLocale::Uruguay, gettext("Uruguay")},
116 {QLocale::Montserrat, gettext("Montserrat")},
117 {QLocale::Bahamas, gettext("Bahamas")},
118 {QLocale::Panama, gettext("Panama")},
119 {QLocale::Suriname, gettext("Suriname")},
120 {QLocale::Haiti, gettext("Haiti")},
121 {QLocale::TrinidadAndTobago, gettext("Trinidad And Tobago")},
122 {QLocale::PuertoRico, gettext("Puerto Rico")},
123 {QLocale::Chile, gettext("Chile")},
124 {QLocale::DominicanRepublic, gettext("Dominican Republic")},
125 {QLocale::SaintBarthelemy, gettext("Saint Barthelemy")},
126 {QLocale::SaintKittsAndNevis, gettext("Saint Kitts And Nevis")},
127 {QLocale::SaintLucia, gettext("Saint Lucia")},
128 {QLocale::UnitedStatesVirginIslands, gettext("United States Virgin Islands")},
129 {QLocale::SaintVincentAndTheGrenadines, gettext("Saint Vincent And The Grenadines")},
130 {QLocale::Honduras, gettext("Honduras")},
131 {QLocale::BritishVirginIslands, gettext("British Virgin Islands")},
132 {QLocale::Antarctica, gettext("Antarctica")},
133 {QLocale::Australia, gettext("Australia")},
134 {QLocale::SvalbardAndJanMayenIslands, gettext("Svalbard And Jan Mayen Islands")},
135 {QLocale::Yemen, gettext("Yemen")},
136 {QLocale::Kazakhstan, gettext("Kazakhstan")},
137 {QLocale::Jordan, gettext("Jordan")},
138 {QLocale::Russia, gettext("Russia")},
139 {QLocale::Turkmenistan, gettext("Turkmenistan")},
140 {QLocale::Iraq, gettext("Iraq")},
141 {QLocale::Bahrain, gettext("Bahrain")},
142 {QLocale::Azerbaijan, gettext("Azerbaijan")},
143 {QLocale::Thailand, gettext("Thailand")},
144 {QLocale::Lebanon, gettext("Lebanon")},
145 {QLocale::Kyrgyzstan, gettext("Kyrgyzstan")},
146 {QLocale::Brunei, gettext("Brunei")},
147 {QLocale::Mongolia, gettext("Mongolia")},
148 {QLocale::China, gettext("China")},
149 {QLocale::SriLanka, gettext("Sri Lanka")},
150 {QLocale::Syria, gettext("Syria")},
151 {QLocale::Bangladesh, gettext("Bangladesh")},
152 {QLocale::EastTimor, gettext("East Timor")},
153 {QLocale::UnitedArabEmirates, gettext("United Arab Emirates")},
154 {QLocale::Tajikistan, gettext("Tajikistan")},
155 {QLocale::PalestinianTerritories, gettext("Palestinian Territories")},
156 {QLocale::Vietnam, gettext("Vietnam")},
157 {QLocale::HongKong, gettext("Hong Kong")},
158 {QLocale::Indonesia, gettext("Indonesia")},
159 {QLocale::Israel, gettext("Israel")},
160 {QLocale::Afghanistan, gettext("Afghanistan")},
161 {QLocale::Pakistan, gettext("Pakistan")},
162 {QLocale::Nepal, gettext("Nepal")},
163 {QLocale::India, gettext("India")},
164 {QLocale::Malaysia, gettext("Malaysia")},
165 {QLocale::Kuwait, gettext("Kuwait")},
166 {QLocale::Macau, gettext("Macau")},
167 {QLocale::Philippines, gettext("Philippines")},
168 {QLocale::Oman, gettext("Oman")},
169 {QLocale::Cyprus, gettext("Cyprus")},
170 {QLocale::Cambodia, gettext("Cambodia")},
171 {QLocale::NorthKorea, gettext("North Korea")},
172 {QLocale::Qatar, gettext("Qatar")},
173 {QLocale::Myanmar, gettext("Myanmar")},
174 {QLocale::SaudiArabia, gettext("Saudi Arabia")},
175 {QLocale::Uzbekistan, gettext("Uzbekistan")},
176 {QLocale::SouthKorea, gettext("South Korea")},
177 {QLocale::Singapore, gettext("Singapore")},
178 {QLocale::Taiwan, gettext("Taiwan")},
179 {QLocale::Georgia, gettext("Georgia")},
180 {QLocale::Iran, gettext("Iran")},
181 {QLocale::Bhutan, gettext("Bhutan")},
182 {QLocale::Japan, gettext("Japan")},
183 {QLocale::Laos, gettext("Laos")},
184 {QLocale::Armenia, gettext("Armenia")},
185 {QLocale::Portugal, gettext("Portugal")},
186 {QLocale::Bermuda, gettext("Bermuda")},
187 {QLocale::CapeVerde, gettext("Cape Verde")},
188 {QLocale::FaroeIslands, gettext("Faroe Islands")},
189 {QLocale::Iceland, gettext("Iceland")},
190 {QLocale::SouthGeorgiaAndTheSouthSandwichIslands, gettext("South Georgia And The South Sandwich Islands")},
191 {QLocale::SaintHelena, gettext("Saint Helena")},
192 {QLocale::FalklandIslands, gettext("Falkland Islands")},
193 {QLocale::Netherlands, gettext("Netherlands")},
194 {QLocale::Andorra, gettext("Andorra")},
195 {QLocale::Greece, gettext("Greece")},
196 {QLocale::Serbia, gettext("Serbia")},
197 {QLocale::Germany, gettext("Germany")},
198 {QLocale::Slovakia, gettext("Slovakia")},
199 {QLocale::Belgium, gettext("Belgium")},
200 {QLocale::Romania, gettext("Romania")},
201 {QLocale::Hungary, gettext("Hungary")},
202 {QLocale::Moldova, gettext("Moldova")},
203 {QLocale::Denmark, gettext("Denmark")},
204 {QLocale::Ireland, gettext("Ireland")},
205 {QLocale::Gibraltar, gettext("Gibraltar")},
206 {QLocale::Guernsey, gettext("Guernsey")},
207 {QLocale::Finland, gettext("Finland")},
208 {QLocale::IsleOfMan, gettext("Isle Of Man")},
209 {QLocale::Turkey, gettext("Turkey")},
210 {QLocale::Jersey, gettext("Jersey")},
211 {QLocale::Ukraine, gettext("Ukraine")},
212 {QLocale::Slovenia, gettext("Slovenia")},
213 {QLocale::UnitedKingdom, gettext("United Kingdom")},
214 {QLocale::Luxembourg, gettext("Luxembourg")},
215 {QLocale::Malta, gettext("Malta")},
216 {QLocale::AlandIslands, gettext("Aland Islands")},
217 {QLocale::Belarus, gettext("Belarus")},
218 {QLocale::Monaco, gettext("Monaco")},
219 {QLocale::Norway, gettext("Norway")},
220 {QLocale::France, gettext("France")},
221 {QLocale::Montenegro, gettext("Montenegro")},
222 {QLocale::CzechRepublic, gettext("Czech Republic")},
223 {QLocale::Latvia, gettext("Latvia")},
224 {QLocale::Italy, gettext("Italy")},
225 {QLocale::SanMarino, gettext("San Marino")},
226 {QLocale::BosniaAndHerzegowina, gettext("Bosnia And Herzegowina")},
227 {QLocale::Macedonia, gettext("Macedonia")},
228 {QLocale::Bulgaria, gettext("Bulgaria")},
229 {QLocale::Sweden, gettext("Sweden")},
230 {QLocale::Estonia, gettext("Estonia")},
231 {QLocale::Albania, gettext("Albania")},
232 {QLocale::Liechtenstein, gettext("Liechtenstein")},
233 {QLocale::VaticanCityState, gettext("Vatican City State")},
234 {QLocale::Austria, gettext("Austria")},
235 {QLocale::Lithuania, gettext("Lithuania")},
236 {QLocale::Poland, gettext("Poland")},
237 {QLocale::Croatia, gettext("Croatia")},
238 {QLocale::Switzerland, gettext("Switzerland")},
239 {QLocale::Madagascar, gettext("Madagascar")},
240 {QLocale::BritishIndianOceanTerritory, gettext("British Indian Ocean Territory")},
241 {QLocale::ChristmasIsland, gettext("ChristmasIsland")},
242 {QLocale::CocosIslands, gettext("CocosIslands")},
243 {QLocale::Comoros, gettext("Comoros")},
244 {QLocale::FrenchSouthernTerritories, gettext("French Southern Territories")},
245 {QLocale::Seychelles, gettext("Seychelles")},
246 {QLocale::Maldives, gettext("Maldives")},
247 {QLocale::Mauritius, gettext("Mauritius")},
248 {QLocale::Mayotte, gettext("Mayotte")},
249 {QLocale::Reunion, gettext("Reunion")},
250 {QLocale::Samoa, gettext("Samoa")},
251 {QLocale::NewZealand, gettext("New Zealand")},
252 {QLocale::Micronesia, gettext("Micronesia")},
253 {QLocale::Vanuatu, gettext("Vanuatu")},
254 {QLocale::Kiribati, gettext("Kiribati")},
255 {QLocale::Tokelau, gettext("Tokelau")},
256 {QLocale::Fiji, gettext("Fiji")},
257 {QLocale::Tuvalu, gettext("Tuvalu")},
258 {QLocale::FrenchPolynesia, gettext("French Polynesia")},
259 {QLocale::SolomonIslands, gettext("Solomon Islands")},
260 {QLocale::Guam, gettext("Guam")},
261 {QLocale::UnitedStatesMinorOutlyingIslands, gettext("United States Minor Outlying Islands")},
262 {QLocale::MarshallIslands, gettext("Marshall Islands")},
263 {QLocale::NauruCountry, gettext("Nauru")},
264 {QLocale::Niue, gettext("Niue")},
265 {QLocale::NorfolkIsland, gettext("Norfolk Island")},
266 {QLocale::NewCaledonia, gettext("New Caledonia")},
267 {QLocale::AmericanSamoa, gettext("American Samoa")},
268 {QLocale::Palau, gettext("Palau")},
269 {QLocale::Pitcairn, gettext("Pitcairn")},
270 {QLocale::PapuaNewGuinea, gettext("Papua New Guinea")},
271 {QLocale::CookIslands, gettext("Cook Islands")},
272 {QLocale::NorthernMarianaIslands, gettext("Northern Mariana Islands")},
273 {QLocale::Tonga, gettext("Tonga")},
274 {QLocale::Kosovo, gettext("Kosovo")},
275 {QLocale::WallisAndFutunaIslands, gettext("Wallis And Futuna Islands")} });
277 m_mccCodes = QHash<int, QString>
278 ({{202,"gr"},
279 {204,"nl"},
280 {206,"be"},
281 {208,"fr"},
282 {212,"mc"},
283 {213,"ad"},
284 {214,"es"},
285 {216,"hu"},
286 {218,"ba"},
287 {219,"hr"},
288 {220,"rs"},
289 {222,"it"},
290 {226,"ro"},
291 {228,"ch"},
292 {230,"cz"},
293 {231,"sk"},
294 {232,"at"},
295 {234,"gb"},
296 {235,"gb"},
297 {238,"dk"},
298 {240,"se"},
299 {242,"no"},
300 {244,"fi"},
301 {246,"lt"},
302 {247,"lv"},
303 {248,"ee"},
304 {250,"ru"},
305 {255,"ua"},
306 {257,"by"},
307 {259,"md"},
308 {260,"pl"},
309 {262,"de"},
310 {266,"gi"},
311 {268,"pt"},
312 {270,"lu"},
313 {272,"ie"},
314 {274,"is"},
315 {276,"al"},
316 {278,"mt"},
317 {280,"cy"},
318 {282,"ge"},
319 {283,"am"},
320 {284,"bg"},
321 {286,"tr"},
322 {288,"fo"},
323 {289,"ge"},
324 {290,"gl"},
325 {292,"sm"},
326 {293,"si"},
327 {294,"mk"},
328 {295,"li"},
329 {297,"me"},
330 {302,"ca"},
331 {308,"pm"},
332 {310,"gu"},
333 {310,"us"},
334 {311,"gu"},
335 {311,"us"},
336 {312,"us"},
337 {316,"us"},
338 {330,"pr"},
339 {334,"mx"},
340 {338,"jm"},
341 {340,"fg"},
342 {340,"gp"},
343 {340,"mq"},
344 {342,"bb"},
345 {344,"ag"},
346 {346,"ky"},
347 {348,"vg"},
348 {350,"bm"},
349 {352,"gd"},
350 {354,"ms"},
351 {356,"kn"},
352 {358,"lc"},
353 {360,"vc"},
354 {362,"an"},
355 {362,"cw"},
356 {363,"aw"},
357 {364,"bs"},
358 {365,"ai"},
359 {366,"dm"},
360 {368,"cu"},
361 {370,"do"},
362 {372,"ht"},
363 {374,"tt"},
364 {376,"tc"},
365 {376,"vi"},
366 {400,"az"},
367 {401,"kz"},
368 {402,"bt"},
369 {404,"in"},
370 {405,"in"},
371 {410,"pk"},
372 {412,"af"},
373 {413,"lk"},
374 {414,"mm"},
375 {415,"lb"},
376 {416,"jo"},
377 {417,"sy"},
378 {418,"iq"},
379 {419,"kw"},
380 {420,"sa"},
381 {421,"ye"},
382 {422,"om"},
383 {424,"ae"},
384 {425,"il"},
385 {425,"ps"},
386 {426,"bh"},
387 {427,"qa"},
388 {428,"mn"},
389 {429,"np"},
390 {430,"ae"},
391 {431,"ae"},
392 {432,"ir"},
393 {434,"uz"},
394 {436,"tk"},
395 {437,"kg"},
396 {438,"tm"},
397 {440,"jp"},
398 {441,"jp"},
399 {450,"kr"},
400 {452,"vn"},
401 {454,"hk"},
402 {455,"mo"},
403 {456,"kh"},
404 {457,"la"},
405 {460,"cn"},
406 {466,"tw"},
407 {467,"kp"},
408 {470,"bd"},
409 {472,"mv"},
410 {502,"my"},
411 {505,"au"},
412 {510,"id"},
413 {514,"tp"},
414 {515,"ph"},
415 {520,"th"},
416 {525,"sg"},
417 {528,"bn"},
418 {530,"nz"},
419 {537,"pg"},
420 {539,"to"},
421 {540,"sb"},
422 {541,"vu"},
423 {542,"fj"},
424 {544,"as"},
425 {545,"ki"},
426 {546,"nc"},
427 {547,"pf"},
428 {548,"ck"},
429 {549,"ws"},
430 {550,"fm"},
431 {552,"pw"},
432 {553,"tv"},
433 {555,"nu"},
434 {602,"eg"},
435 {603,"dz"},
436 {604,"ma"},
437 {605,"tn"},
438 {606,"ly"},
439 {607,"gm"},
440 {608,"sn"},
441 {609,"mr"},
442 {610,"ml"},
443 {611,"gn"},
444 {612,"ci"},
445 {613,"bf"},
446 {614,"ne"},
447 {615,"tg"},
448 {616,"bj"},
449 {617,"mu"},
450 {618,"lr"},
451 {619,"sl"},
452 {620,"gh"},
453 {621,"ng"},
454 {622,"td"},
455 {623,"cf"},
456 {624,"cm"},
457 {625,"cv"},
458 {626,"st"},
459 {627,"gq"},
460 {628,"ga"},
461 {629,"cg"},
462 {630,"cd"},
463 {631,"ao"},
464 {632,"gw"},
465 {633,"sc"},
466 {634,"sd"},
467 {635,"rw"},
468 {636,"et"},
469 {637,"so"},
470 {638,"dj"},
471 {639,"ke"},
472 {640,"tz"},
473 {641,"ug"},
474 {642,"bi"},
475 {643,"mz"},
476 {645,"zm"},
477 {646,"mg"},
478 {647,"re"},
479 {648,"zw"},
480 {649,"na"},
481 {650,"mw"},
482 {651,"ls"},
483 {652,"bw"},
484 {653,"sz"},
485 {654,"km"},
486 {655,"za"},
487 {657,"er"},
488 {659,"ss"},
489 {702,"bz"},
490 {704,"gt"},
491 {706,"sv"},
492 {708,"hn"},
493 {710,"ni"},
494 {712,"cr"},
495 {714,"pa"},
496 {716,"pe"},
497 {722,"ar"},
498 {724,"br"},
499 {730,"cl"},
500 {732,"co"},
501 {734,"ve"},
502 {736,"bo"},
503 {738,"gy"},
504 {740,"ec"},
505 {744,"py"},
506 {746,"sr"},
507 {748,"uy"},
508 {750,"fk"}}
509 );
510 }
512 QString countryToString(QLocale::Country c) const {
513 return m_countryNames.value(c);
514 }
516 QString mccToCountryCode(int mcc) const {
517 return m_mccCodes.value(mcc, "us").toUpper();
518 }
520private:
521 QHash<QLocale::Country, QString> m_countryNames;
522 QHash<int,QString> m_mccCodes;
523};
525Q_GLOBAL_STATIC(LocalePrivate, d)
527LocaleAttached::LocaleAttached(QObject* parent)
528 : QObject(parent)
532QJsonObject LocaleAttached::languages() const
534 QJsonObject result;
536 const QList<QLocale> allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry);
537 Q_FOREACH(const QLocale &loc, allLocales) {
538 result.insert(loc.name().split('_').first(), loc.nativeLanguageName());
539 }
541 return result;
544QJsonObject LocaleAttached::countriesForLanguage(const QString &code) const
546 QLocale tmp(code);
547 const QList<QLocale> allLocales = QLocale::matchingLocales(tmp.language(), QLocale::AnyScript, QLocale::AnyCountry);
548 QJsonObject result;
549 Q_FOREACH(const QLocale &loc, allLocales) {
550 const QString countryCode = loc.name().section('_', 1, 1);
551 //qDebug() << "Matching country:" << countryCode;
552 if (!countryCode.isEmpty()) {
553 result.insert(countryCode, d->countryToString(loc.country()));
554 }
555 }
556 return result;
559QJsonObject LocaleAttached::countries() const
561 const QList<QLocale> allLocales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, QLocale::AnyCountry);
562 QJsonObject result;
564 Q_FOREACH(const QLocale &loc, allLocales) {
565 const QString countryCode = loc.name().section('_', 1, 1);
566 if (countryCode.length() == 2) {
567 result.insert(countryCode, d->countryToString(loc.country()));
568 }
569 }
571 return result;
574QString LocaleAttached::countryToString(QLocale::Country c)
576 return d->countryToString(c);
579QString LocaleAttached::qlocToCountryCode(QLocale::Country c)
581 const QList<QLocale> locales = QLocale::matchingLocales(QLocale::AnyLanguage, QLocale::AnyScript, c);
582 if (!locales.isEmpty()) {
583 return locales.first().name().section('_', 1, 1);
584 }
586 return QString();
589QString LocaleAttached::mccToCountryCode(int mcc) const
591 return d->mccToCountryCode(mcc);
594LocalePlugin::LocalePlugin(QObject* parent)
595 : QObject(parent)
599LocaleAttached* LocalePlugin::qmlAttachedProperties(QObject* parent)
601 return new LocaleAttached(parent);