@@ -17,8 +17,275 @@
1717#include <QLocale>
1818#include <QStringList>
1919
20+#include <libintl.h>
21+
2022#include "LocalePlugin.h"
2123
24+
25+class LocalePrivate {
26+public:
27+ LocalePrivate() {
28+ m_countryNames = QHash<QLocale::Country, QString>(
29+ {{QLocale::IvoryCoast, gettext("Ivory Coast")},
30+ {QLocale::Ghana, gettext("Ghana")},
31+ {QLocale::Ethiopia, gettext("Ethiopia")},
32+ {QLocale::Algeria, gettext("Algeria")},
33+ {QLocale::Eritrea, gettext("Eritrea")},
34+ {QLocale::Mali, gettext("Mali")},
35+ {QLocale::CentralAfricanRepublic, gettext("Central African Republic")},
36+ {QLocale::Gambia, gettext("Gambia")},
37+ {QLocale::GuineaBissau, gettext("Guinea Bissau")},
38+ {QLocale::Malawi, gettext("Malawi")},
39+ {QLocale::CongoBrazzaville, gettext("Congo Brazzaville")},
40+ {QLocale::Burundi, gettext("Burundi")},
41+ {QLocale::Egypt, gettext("Egypt")},
42+ {QLocale::Morocco, gettext("Morocco")},
43+ {QLocale::Spain, gettext("Spain")},
44+ {QLocale::Guinea, gettext("Guinea")},
45+ {QLocale::Senegal, gettext("Senegal")},
46+ {QLocale::Tanzania, gettext("Tanzania")},
47+ {QLocale::Djibouti, gettext("Djibouti")},
48+ {QLocale::Cameroon, gettext("Cameroon")},
49+ {QLocale::WesternSahara, gettext("Western Sahara")},
50+ {QLocale::SierraLeone, gettext("Sierra Leone")},
51+ {QLocale::Botswana, gettext("Botswana")},
52+ {QLocale::Zimbabwe, gettext("Zimbabwe")},
53+ {QLocale::SouthAfrica, gettext("South Africa")},
54+ {QLocale::SouthSudan, gettext("South Sudan")},
55+ {QLocale::Uganda, gettext("Uganda")},
56+ {QLocale::Sudan, gettext("Sudan")},
57+ {QLocale::Rwanda, gettext("Rwanda")},
58+ {QLocale::CongoKinshasa, gettext("Congo (Kinshasa)")},
59+ {QLocale::Nigeria, gettext("Nigeria")},
60+ {QLocale::Gabon, gettext("Gabon")},
61+ {QLocale::Togo, gettext("Togo")},
62+ {QLocale::Angola, gettext("Angola")},
63+ {QLocale::Zambia, gettext("Zambia")},
64+ {QLocale::EquatorialGuinea, gettext("Equatorial Guinea")},
65+ {QLocale::Mozambique, gettext("Mozambique")},
66+ {QLocale::Lesotho, gettext("Lesotho")},
67+ {QLocale::Swaziland, gettext("Swaziland")},
68+ {QLocale::Somalia, gettext("Somalia")},
69+ {QLocale::Liberia, gettext("Liberia")},
70+ {QLocale::Kenya, gettext("Kenya")},
71+ {QLocale::Chad, gettext("Chad")},
72+ {QLocale::Niger, gettext("Niger")},
73+ {QLocale::Mauritania, gettext("Mauritania")},
74+ {QLocale::BurkinaFaso, gettext("Burkina Faso")},
75+ {QLocale::Benin, gettext("Benin")},
76+ {QLocale::SaoTomeAndPrincipe, gettext("Sao Tome And Principe")},
77+ {QLocale::Libya, gettext("Libya")},
78+ {QLocale::Tunisia, gettext("Tunisia")},
79+ {QLocale::Namibia, gettext("Namibia")},
80+ {QLocale::UnitedStates, gettext("United States")},
81+ {QLocale::Anguilla, gettext("Anguilla")},
82+ {QLocale::AntiguaAndBarbuda, gettext("Antigua And Barbuda")},
83+ {QLocale::Brazil, gettext("Brazil")},
84+ {QLocale::Argentina, gettext("Argentina")},
85+ {QLocale::Aruba, gettext("Aruba")},
86+ {QLocale::Paraguay, gettext("Paraguay")},
87+ {QLocale::Canada, gettext("Canada")},
88+ {QLocale::Mexico, gettext("Mexico")},
89+ {QLocale::Barbados, gettext("Barbados")},
90+ {QLocale::Belize, gettext("Belize")},
91+ {QLocale::Colombia, gettext("Colombia")},
92+ {QLocale::Venezuela, gettext("Venezuela")},
93+ {QLocale::FrenchGuiana, gettext("French Guiana")},
94+ {QLocale::CaymanIslands, gettext("Cayman Islands")},
95+ {QLocale::CostaRica, gettext("Costa Rica")},
96+ {QLocale::CuraSao, gettext("Cura Sao")},
97+ {QLocale::Greenland, gettext("Greenland")},
98+ {QLocale::Dominica, gettext("Dominica")},
99+ {QLocale::ElSalvador, gettext("El Salvador")},
100+ {QLocale::TurksAndCaicosIslands, gettext("Turks And Caicos Islands")},
101+ {QLocale::Grenada, gettext("Grenada")},
102+ {QLocale::Guadeloupe, gettext("Guadeloupe")},
103+ {QLocale::Guatemala, gettext("Guatemala")},
104+ {QLocale::Ecuador, gettext("Ecuador")},
105+ {QLocale::Guyana, gettext("Guyana")},
106+ {QLocale::Cuba, gettext("Cuba")},
107+ {QLocale::Jamaica, gettext("Jamaica")},
108+ {QLocale::Bonaire, gettext("Bonaire")},
109+ {QLocale::Bolivia, gettext("Bolivia")},
110+ {QLocale::Peru, gettext("Peru")},
111+ {QLocale::SintMaarten, gettext("Sint Maarten")},
112+ {QLocale::Nicaragua, gettext("Nicaragua")},
113+ {QLocale::SaintMartin, gettext("Saint Martin")},
114+ {QLocale::Martinique, gettext("Martinique")},
115+ {QLocale::SaintPierreAndMiquelon, gettext("Saint Pierre And Miquelon")},
116+ {QLocale::Uruguay, gettext("Uruguay")},
117+ {QLocale::Montserrat, gettext("Montserrat")},
118+ {QLocale::Bahamas, gettext("Bahamas")},
119+ {QLocale::Panama, gettext("Panama")},
120+ {QLocale::Suriname, gettext("Suriname")},
121+ {QLocale::Haiti, gettext("Haiti")},
122+ {QLocale::TrinidadAndTobago, gettext("Trinidad And Tobago")},
123+ {QLocale::PuertoRico, gettext("Puerto Rico")},
124+ {QLocale::Chile, gettext("Chile")},
125+ {QLocale::DominicanRepublic, gettext("Dominican Republic")},
126+ {QLocale::SaintBarthelemy, gettext("Saint Barthelemy")},
127+ {QLocale::SaintKittsAndNevis, gettext("Saint Kitts And Nevis")},
128+ {QLocale::SaintLucia, gettext("Saint Lucia")},
129+ {QLocale::UnitedStatesVirginIslands, gettext("United States Virgin Islands")},
130+ {QLocale::SaintVincentAndTheGrenadines, gettext("Saint Vincent And The Grenadines")},
131+ {QLocale::Honduras, gettext("Honduras")},
132+ {QLocale::BritishVirginIslands, gettext("British Virgin Islands")},
133+ {QLocale::Antarctica, gettext("Antarctica")},
134+ {QLocale::Australia, gettext("Australia")},
135+ {QLocale::SvalbardAndJanMayenIslands, gettext("Svalbard And Jan Mayen Islands")},
136+ {QLocale::Yemen, gettext("Yemen")},
137+ {QLocale::Kazakhstan, gettext("Kazakhstan")},
138+ {QLocale::Jordan, gettext("Jordan")},
139+ {QLocale::Russia, gettext("Russia")},
140+ {QLocale::Turkmenistan, gettext("Turkmenistan")},
141+ {QLocale::Iraq, gettext("Iraq")},
142+ {QLocale::Bahrain, gettext("Bahrain")},
143+ {QLocale::Azerbaijan, gettext("Azerbaijan")},
144+ {QLocale::Thailand, gettext("Thailand")},
145+ {QLocale::Lebanon, gettext("Lebanon")},
146+ {QLocale::Kyrgyzstan, gettext("Kyrgyzstan")},
147+ {QLocale::Brunei, gettext("Brunei")},
148+ {QLocale::Mongolia, gettext("Mongolia")},
149+ {QLocale::China, gettext("China")},
150+ {QLocale::SriLanka, gettext("Sri Lanka")},
151+ {QLocale::Syria, gettext("Syria")},
152+ {QLocale::Bangladesh, gettext("Bangladesh")},
153+ {QLocale::EastTimor, gettext("East Timor")},
154+ {QLocale::UnitedArabEmirates, gettext("United Arab Emirates")},
155+ {QLocale::Tajikistan, gettext("Tajikistan")},
156+ {QLocale::PalestinianTerritories, gettext("Palestinian Territories")},
157+ {QLocale::Vietnam, gettext("Vietnam")},
158+ {QLocale::HongKong, gettext("Hong Kong")},
159+ {QLocale::Indonesia, gettext("Indonesia")},
160+ {QLocale::Israel, gettext("Israel")},
161+ {QLocale::Afghanistan, gettext("Afghanistan")},
162+ {QLocale::Pakistan, gettext("Pakistan")},
163+ {QLocale::Nepal, gettext("Nepal")},
164+ {QLocale::India, gettext("India")},
165+ {QLocale::Malaysia, gettext("Malaysia")},
166+ {QLocale::Kuwait, gettext("Kuwait")},
167+ {QLocale::Macau, gettext("Macau")},
168+ {QLocale::Philippines, gettext("Philippines")},
169+ {QLocale::Oman, gettext("Oman")},
170+ {QLocale::Cyprus, gettext("Cyprus")},
171+ {QLocale::Cambodia, gettext("Cambodia")},
172+ {QLocale::NorthKorea, gettext("North Korea")},
173+ {QLocale::Qatar, gettext("Qatar")},
174+ {QLocale::Myanmar, gettext("Myanmar")},
175+ {QLocale::SaudiArabia, gettext("Saudi Arabia")},
176+ {QLocale::Uzbekistan, gettext("Uzbekistan")},
177+ {QLocale::SouthKorea, gettext("South Korea")},
178+ {QLocale::Singapore, gettext("Singapore")},
179+ {QLocale::Taiwan, gettext("Taiwan")},
180+ {QLocale::Georgia, gettext("Georgia")},
181+ {QLocale::Iran, gettext("Iran")},
182+ {QLocale::Bhutan, gettext("Bhutan")},
183+ {QLocale::Japan, gettext("Japan")},
184+ {QLocale::Laos, gettext("Laos")},
185+ {QLocale::Armenia, gettext("Armenia")},
186+ {QLocale::Portugal, gettext("Portugal")},
187+ {QLocale::Bermuda, gettext("Bermuda")},
188+ {QLocale::CapeVerde, gettext("Cape Verde")},
189+ {QLocale::FaroeIslands, gettext("Faroe Islands")},
190+ {QLocale::Iceland, gettext("Iceland")},
191+ {QLocale::SouthGeorgiaAndTheSouthSandwichIslands, gettext("South Georgia And The South Sandwich Islands")},
192+ {QLocale::SaintHelena, gettext("Saint Helena")},
193+ {QLocale::FalklandIslands, gettext("Falkland Islands")},
194+ {QLocale::Netherlands, gettext("Netherlands")},
195+ {QLocale::Andorra, gettext("Andorra")},
196+ {QLocale::Greece, gettext("Greece")},
197+ {QLocale::Serbia, gettext("Serbia")},
198+ {QLocale::Germany, gettext("Germany")},
199+ {QLocale::Slovakia, gettext("Slovakia")},
200+ {QLocale::Belgium, gettext("Belgium")},
201+ {QLocale::Romania, gettext("Romania")},
202+ {QLocale::Hungary, gettext("Hungary")},
203+ {QLocale::Moldova, gettext("Moldova")},
204+ {QLocale::Denmark, gettext("Denmark")},
205+ {QLocale::Ireland, gettext("Ireland")},
206+ {QLocale::Gibraltar, gettext("Gibraltar")},
207+ {QLocale::Guernsey, gettext("Guernsey")},
208+ {QLocale::Finland, gettext("Finland")},
209+ {QLocale::IsleOfMan, gettext("Isle Of Man")},
210+ {QLocale::Turkey, gettext("Turkey")},
211+ {QLocale::Jersey, gettext("Jersey")},
212+ {QLocale::Ukraine, gettext("Ukraine")},
213+ {QLocale::Slovenia, gettext("Slovenia")},
214+ {QLocale::UnitedKingdom, gettext("United Kingdom")},
215+ {QLocale::Luxembourg, gettext("Luxembourg")},
216+ {QLocale::Malta, gettext("Malta")},
217+ {QLocale::AlandIslands, gettext("Aland Islands")},
218+ {QLocale::Belarus, gettext("Belarus")},
219+ {QLocale::Monaco, gettext("Monaco")},
220+ {QLocale::Norway, gettext("Norway")},
221+ {QLocale::France, gettext("France")},
222+ {QLocale::Montenegro, gettext("Montenegro")},
223+ {QLocale::CzechRepublic, gettext("Czech Republic")},
224+ {QLocale::Latvia, gettext("Latvia")},
225+ {QLocale::Italy, gettext("Italy")},
226+ {QLocale::SanMarino, gettext("San Marino")},
227+ {QLocale::BosniaAndHerzegowina, gettext("Bosnia And Herzegowina")},
228+ {QLocale::Macedonia, gettext("Macedonia")},
229+ {QLocale::Bulgaria, gettext("Bulgaria")},
230+ {QLocale::Sweden, gettext("Sweden")},
231+ {QLocale::Estonia, gettext("Estonia")},
232+ {QLocale::Albania, gettext("Albania")},
233+ {QLocale::Liechtenstein, gettext("Liechtenstein")},
234+ {QLocale::VaticanCityState, gettext("Vatican City State")},
235+ {QLocale::Austria, gettext("Austria")},
236+ {QLocale::Lithuania, gettext("Lithuania")},
237+ {QLocale::Poland, gettext("Poland")},
238+ {QLocale::Croatia, gettext("Croatia")},
239+ {QLocale::Switzerland, gettext("Switzerland")},
240+ {QLocale::Madagascar, gettext("Madagascar")},
241+ {QLocale::BritishIndianOceanTerritory, gettext("British Indian Ocean Territory")},
242+ {QLocale::ChristmasIsland, gettext("ChristmasIsland")},
243+ {QLocale::CocosIslands, gettext("CocosIslands")},
244+ {QLocale::Comoros, gettext("Comoros")},
245+ {QLocale::FrenchSouthernTerritories, gettext("French Southern Territories")},
246+ {QLocale::Seychelles, gettext("Seychelles")},
247+ {QLocale::Maldives, gettext("Maldives")},
248+ {QLocale::Mauritius, gettext("Mauritius")},
249+ {QLocale::Mayotte, gettext("Mayotte")},
250+ {QLocale::Reunion, gettext("Reunion")},
251+ {QLocale::Samoa, gettext("Samoa")},
252+ {QLocale::NewZealand, gettext("New Zealand")},
253+ {QLocale::Micronesia, gettext("Micronesia")},
254+ {QLocale::Vanuatu, gettext("Vanuatu")},
255+ {QLocale::Kiribati, gettext("Kiribati")},
256+ {QLocale::Tokelau, gettext("Tokelau")},
257+ {QLocale::Fiji, gettext("Fiji")},
258+ {QLocale::Tuvalu, gettext("Tuvalu")},
259+ {QLocale::FrenchPolynesia, gettext("French Polynesia")},
260+ {QLocale::SolomonIslands, gettext("Solomon Islands")},
261+ {QLocale::Guam, gettext("Guam")},
262+ {QLocale::UnitedStatesMinorOutlyingIslands, gettext("United States Minor Outlying Islands")},
263+ {QLocale::MarshallIslands, gettext("Marshall Islands")},
264+ {QLocale::NauruCountry, gettext("Nauru")},
265+ {QLocale::Niue, gettext("Niue")},
266+ {QLocale::NorfolkIsland, gettext("Norfolk Island")},
267+ {QLocale::NewCaledonia, gettext("New Caledonia")},
268+ {QLocale::AmericanSamoa, gettext("American Samoa")},
269+ {QLocale::Palau, gettext("Palau")},
270+ {QLocale::Pitcairn, gettext("Pitcairn")},
271+ {QLocale::PapuaNewGuinea, gettext("Papua New Guinea")},
272+ {QLocale::CookIslands, gettext("Cook Islands")},
273+ {QLocale::NorthernMarianaIslands, gettext("Northern Mariana Islands")},
274+ {QLocale::Tonga, gettext("Tonga")},
275+ {QLocale::Kosovo, gettext("Kosovo")},
276+ {QLocale::WallisAndFutunaIslands, gettext("Wallis And Futuna Islands")} });
277+ }
278+
279+ QString countryToString(QLocale::Country c) {
280+ return m_countryNames.value(c);
281+ }
282+
283+private:
284+ QHash<QLocale::Country, QString> m_countryNames;
285+};
286+
287+Q_GLOBAL_STATIC(LocalePrivate, d)
288+
22289LocaleAttached::LocaleAttached(QObject* parent)
23290 : QObject(parent)
24291{
@@ -44,7 +311,7 @@ QJsonObject LocaleAttached::countriesForLanguage(const QString &code) const
44311 const QString countryCode = loc.name().section('_', 1, 1);
45312 //qDebug() << "Matching country:" << countryCode;
46313 if (!countryCode.isEmpty()) {
47− result.insert(countryCode, QLocale::countryToString(loc.country()));
314+ result.insert(countryCode, d->countryToString(loc.country()));
48315 }
49316 }
50317 return result;
@@ -58,13 +325,18 @@ QJsonObject LocaleAttached::countries() const
58325 Q_FOREACH(const QLocale &loc, allLocales) {
59326 const QString countryCode = loc.name().section('_', 1, 1);
60327 if (countryCode.length() == 2) {
61− result.insert(countryCode, QLocale::countryToString(loc.country()));
328+ result.insert(countryCode, d->countryToString(loc.country()));
62329 }
63330 }
64331
65332 return result;
66333}
67334
335+QString LocaleAttached::countryToString(QLocale::Country c)
336+{
337+ return d->countryToString(c);
338+}
339+
68340
69341LocalePlugin::LocalePlugin(QObject* parent)
70342 : QObject(parent)