1/**************************************************************************/
2/* locales.h */
3/**************************************************************************/
4/* This file is part of: */
5/* GODOT ENGINE */
6/* https://godotengine.org */
7/**************************************************************************/
8/* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */
9/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur. */
10/* */
11/* Permission is hereby granted, free of charge, to any person obtaining */
12/* a copy of this software and associated documentation files (the */
13/* "Software"), to deal in the Software without restriction, including */
14/* without limitation the rights to use, copy, modify, merge, publish, */
15/* distribute, sublicense, and/or sell copies of the Software, and to */
16/* permit persons to whom the Software is furnished to do so, subject to */
17/* the following conditions: */
18/* */
19/* The above copyright notice and this permission notice shall be */
20/* included in all copies or substantial portions of the Software. */
21/* */
22/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, */
23/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF */
24/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. */
25/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY */
26/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, */
27/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE */
28/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */
29/**************************************************************************/
30
31#ifndef LOCALES_H
32#define LOCALES_H
33
34// Windows has some weird locale identifiers which do not honor the ISO 639-1
35// standardized nomenclature. Whenever those don't conflict with existing ISO
36// identifiers, we override them.
37//
38// Reference:
39// - https://msdn.microsoft.com/en-us/library/windows/desktop/ms693062(v=vs.85).aspx
40
41static const char *locale_renames[][2] = {
42 { "in", "id" }, // Indonesian
43 { "iw", "he" }, // Hebrew
44 { "no", "nb" }, // Norwegian Bokmål
45 { "C", "en" }, // Locale is not set, fallback to English.
46 { nullptr, nullptr }
47};
48
49// Additional script information to preferred scripts.
50// Language code, script code, default country, supported countries.
51// Reference:
52// - https://lh.2xlibre.net/locales/
53// - https://www.localeplanet.com/icu/index.html
54// - https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-lcid/70feba9f-294e-491e-b6eb-56532684c37f
55
56static const char *locale_scripts[][4] = {
57 { "az", "Latn", "", "AZ" },
58 { "az", "Arab", "", "IR" },
59 { "bs", "Latn", "", "BA" },
60 { "ff", "Latn", "", "BF,CM,GH,GM,GN,GW,LR,MR,NE,NG,SL,SN" },
61 { "pa", "Arab", "PK", "PK" },
62 { "pa", "Guru", "IN", "IN" },
63 { "sd", "Arab", "PK", "PK" },
64 { "sd", "Deva", "IN", "IN" },
65 { "shi", "Tfng", "", "MA" },
66 { "sr", "Cyrl", "", "BA,RS,XK" },
67 { "sr", "Latn", "", "ME" },
68 { "uz", "Latn", "", "UZ" },
69 { "uz", "Arab", "AF", "AF" },
70 { "vai", "Vaii", "", "LR" },
71 { "yue", "Hans", "CN", "CN" },
72 { "yue", "Hant", "HK", "HK" },
73 { "zh", "Hans", "CN", "CN,SG" },
74 { "zh", "Hant", "TW", "HK,MO,TW" },
75 { nullptr, nullptr, nullptr, nullptr }
76};
77
78// Additional mapping for outdated, temporary or exceptionally reserved country codes.
79// Reference:
80// - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
81// - https://www.iso.org/obp/ui/#search/code/
82
83static const char *country_renames[][2] = {
84 { "BU", "MM" }, // Burma, name changed to Myanmar.
85 { "KV", "XK" }, // Kosovo (temporary FIPS code to European Commission code), no official ISO code assigned.
86 { "TP", "TL" }, // East Timor, name changed to Timor-Leste.
87 { "UK", "GB" }, // United Kingdom, exceptionally reserved code.
88 { nullptr, nullptr }
89};
90
91// Country code, country name.
92// Reference:
93// - https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2
94// - https://www.iso.org/obp/ui/#search/code/
95
96static const char *country_names[][2] = {
97 { "AC", "Ascension Island" }, // Exceptionally reserved.
98 { "AD", "Andorra" },
99 { "AE", "United Arab Emirates" },
100 { "AF", "Afghanistan" },
101 { "AG", "Antigua and Barbuda" },
102 { "AI", "Anguilla" },
103 { "AL", "Albania" },
104 { "AM", "Armenia" },
105 { "AN", "Netherlands Antilles" }, // Transitionally reserved, divided into BQ, CW and SX.
106 { "AO", "Angola" },
107 { "AQ", "Antarctica" },
108 { "AR", "Argentina" },
109 { "AS", "American Samoa" },
110 { "AT", "Austria" },
111 { "AU", "Australia" },
112 { "AW", "Aruba" },
113 { "AX", "Åland Islands" },
114 { "AZ", "Azerbaijan" },
115 { "BA", "Bosnia and Herzegovina" },
116 { "BB", "Barbados" },
117 { "BD", "Bangladesh" },
118 { "BE", "Belgium" },
119 { "BF", "Burkina Faso" },
120 { "BG", "Bulgaria" },
121 { "BH", "Bahrain" },
122 { "BI", "Burundi" },
123 { "BJ", "Benin" },
124 { "BL", "St. Barthélemy" },
125 { "BM", "Bermuda" },
126 { "BN", "Brunei" },
127 { "BO", "Bolivia" },
128 { "BQ", "Caribbean Netherlands" },
129 { "BR", "Brazil" },
130 { "BS", "Bahamas" },
131 { "BT", "Bhutan" },
132 { "BV", "Bouvet Island" },
133 { "BW", "Botswana" },
134 { "BY", "Belarus" },
135 { "BZ", "Belize" },
136 { "CA", "Canada" },
137 { "CC", "Cocos (Keeling) Islands" },
138 { "CD", "Congo - Kinshasa" },
139 { "CF", "Central African Republic" },
140 { "CG", "Congo - Brazzaville" },
141 { "CH", "Switzerland" },
142 { "CI", "Côte d'Ivoire" },
143 { "CK", "Cook Islands" },
144 { "CL", "Chile" },
145 { "CM", "Cameroon" },
146 { "CN", "China" },
147 { "CO", "Colombia" },
148 { "CP", "Clipperton Island" }, // Exceptionally reserved.
149 { "CR", "Costa Rica" },
150 { "CQ", "Island of Sark" }, // Exceptionally reserved.
151 { "CU", "Cuba" },
152 { "CV", "Cabo Verde" },
153 { "CW", "Curaçao" },
154 { "CX", "Christmas Island" },
155 { "CY", "Cyprus" },
156 { "CZ", "Czechia" },
157 { "DE", "Germany" },
158 { "DG", "Diego Garcia" }, // Exceptionally reserved.
159 { "DJ", "Djibouti" },
160 { "DK", "Denmark" },
161 { "DM", "Dominica" },
162 { "DO", "Dominican Republic" },
163 { "DZ", "Algeria" },
164 { "EA", "Ceuta and Melilla" }, // Exceptionally reserved.
165 { "EC", "Ecuador" },
166 { "EE", "Estonia" },
167 { "EG", "Egypt" },
168 { "EH", "Western Sahara" },
169 { "ER", "Eritrea" },
170 { "ES", "Spain" },
171 { "ET", "Ethiopia" },
172 { "EU", "European Union" }, // Exceptionally reserved.
173 { "EZ", "Eurozone" }, // Exceptionally reserved.
174 { "FI", "Finland" },
175 { "FJ", "Fiji" },
176 { "FK", "Falkland Islands" },
177 { "FM", "Micronesia" },
178 { "FO", "Faroe Islands" },
179 { "FR", "France" },
180 { "FX", "France, Metropolitan" }, // Exceptionally reserved.
181 { "GA", "Gabon" },
182 { "GB", "United Kingdom" },
183 { "GD", "Grenada" },
184 { "GE", "Georgia" },
185 { "GF", "French Guiana" },
186 { "GG", "Guernsey" },
187 { "GH", "Ghana" },
188 { "GI", "Gibraltar" },
189 { "GL", "Greenland" },
190 { "GM", "Gambia" },
191 { "GN", "Guinea" },
192 { "GP", "Guadeloupe" },
193 { "GQ", "Equatorial Guinea" },
194 { "GR", "Greece" },
195 { "GS", "South Georgia and South Sandwich Islands" },
196 { "GT", "Guatemala" },
197 { "GU", "Guam" },
198 { "GW", "Guinea-Bissau" },
199 { "GY", "Guyana" },
200 { "HK", "Hong Kong" },
201 { "HM", "Heard Island and McDonald Islands" },
202 { "HN", "Honduras" },
203 { "HR", "Croatia" },
204 { "HT", "Haiti" },
205 { "HU", "Hungary" },
206 { "IC", "Canary Islands" }, // Exceptionally reserved.
207 { "ID", "Indonesia" },
208 { "IE", "Ireland" },
209 { "IL", "Israel" },
210 { "IM", "Isle of Man" },
211 { "IN", "India" },
212 { "IO", "British Indian Ocean Territory" },
213 { "IQ", "Iraq" },
214 { "IR", "Iran" },
215 { "IS", "Iceland" },
216 { "IT", "Italy" },
217 { "JE", "Jersey" },
218 { "JM", "Jamaica" },
219 { "JO", "Jordan" },
220 { "JP", "Japan" },
221 { "KE", "Kenya" },
222 { "KG", "Kyrgyzstan" },
223 { "KH", "Cambodia" },
224 { "KI", "Kiribati" },
225 { "KM", "Comoros" },
226 { "KN", "St. Kitts and Nevis" },
227 { "KP", "North Korea" },
228 { "KR", "South Korea" },
229 { "KW", "Kuwait" },
230 { "KY", "Cayman Islands" },
231 { "KZ", "Kazakhstan" },
232 { "LA", "Laos" },
233 { "LB", "Lebanon" },
234 { "LC", "St. Lucia" },
235 { "LI", "Liechtenstein" },
236 { "LK", "Sri Lanka" },
237 { "LR", "Liberia" },
238 { "LS", "Lesotho" },
239 { "LT", "Lithuania" },
240 { "LU", "Luxembourg" },
241 { "LV", "Latvia" },
242 { "LY", "Libya" },
243 { "MA", "Morocco" },
244 { "MC", "Monaco" },
245 { "MD", "Moldova" },
246 { "ME", "Montenegro" },
247 { "MF", "St. Martin" },
248 { "MG", "Madagascar" },
249 { "MH", "Marshall Islands" },
250 { "MK", "North Macedonia" },
251 { "ML", "Mali" },
252 { "MM", "Myanmar" },
253 { "MN", "Mongolia" },
254 { "MO", "Macao" },
255 { "MP", "Northern Mariana Islands" },
256 { "MQ", "Martinique" },
257 { "MR", "Mauritania" },
258 { "MS", "Montserrat" },
259 { "MT", "Malta" },
260 { "MU", "Mauritius" },
261 { "MV", "Maldives" },
262 { "MW", "Malawi" },
263 { "MX", "Mexico" },
264 { "MY", "Malaysia" },
265 { "MZ", "Mozambique" },
266 { "NA", "Namibia" },
267 { "NC", "New Caledonia" },
268 { "NE", "Niger" },
269 { "NF", "Norfolk Island" },
270 { "NG", "Nigeria" },
271 { "NI", "Nicaragua" },
272 { "NL", "Netherlands" },
273 { "NO", "Norway" },
274 { "NP", "Nepal" },
275 { "NR", "Nauru" },
276 { "NU", "Niue" },
277 { "NZ", "New Zealand" },
278 { "OM", "Oman" },
279 { "PA", "Panama" },
280 { "PE", "Peru" },
281 { "PF", "French Polynesia" },
282 { "PG", "Papua New Guinea" },
283 { "PH", "Philippines" },
284 { "PK", "Pakistan" },
285 { "PL", "Poland" },
286 { "PM", "St. Pierre and Miquelon" },
287 { "PN", "Pitcairn Islands" },
288 { "PR", "Puerto Rico" },
289 { "PS", "Palestine" },
290 { "PT", "Portugal" },
291 { "PW", "Palau" },
292 { "PY", "Paraguay" },
293 { "QA", "Qatar" },
294 { "RE", "Réunion" },
295 { "RO", "Romania" },
296 { "RS", "Serbia" },
297 { "RU", "Russia" },
298 { "RW", "Rwanda" },
299 { "SA", "Saudi Arabia" },
300 { "SB", "Solomon Islands" },
301 { "SC", "Seychelles" },
302 { "SD", "Sudan" },
303 { "SE", "Sweden" },
304 { "SG", "Singapore" },
305 { "SH", "St. Helena, Ascension and Tristan da Cunha" },
306 { "SI", "Slovenia" },
307 { "SJ", "Svalbard and Jan Mayen" },
308 { "SK", "Slovakia" },
309 { "SL", "Sierra Leone" },
310 { "SM", "San Marino" },
311 { "SN", "Senegal" },
312 { "SO", "Somalia" },
313 { "SR", "Suriname" },
314 { "SS", "South Sudan" },
315 { "ST", "Sao Tome and Principe" },
316 { "SV", "El Salvador" },
317 { "SX", "Sint Maarten" },
318 { "SY", "Syria" },
319 { "SZ", "Eswatini" },
320 { "TA", "Tristan da Cunha" }, // Exceptionally reserved.
321 { "TC", "Turks and Caicos Islands" },
322 { "TD", "Chad" },
323 { "TF", "French Southern Territories" },
324 { "TG", "Togo" },
325 { "TH", "Thailand" },
326 { "TJ", "Tajikistan" },
327 { "TK", "Tokelau" },
328 { "TL", "Timor-Leste" },
329 { "TM", "Turkmenistan" },
330 { "TN", "Tunisia" },
331 { "TO", "Tonga" },
332 { "TR", "Turkey" },
333 { "TT", "Trinidad and Tobago" },
334 { "TV", "Tuvalu" },
335 { "TW", "Taiwan" },
336 { "TZ", "Tanzania" },
337 { "UA", "Ukraine" },
338 { "UG", "Uganda" },
339 { "UM", "U.S. Outlying Islands" },
340 { "US", "United States of America" },
341 { "UY", "Uruguay" },
342 { "UZ", "Uzbekistan" },
343 { "VA", "Holy See" },
344 { "VC", "St. Vincent and the Grenadines" },
345 { "VE", "Venezuela" },
346 { "VG", "British Virgin Islands" },
347 { "VI", "U.S. Virgin Islands" },
348 { "VN", "Viet Nam" },
349 { "VU", "Vanuatu" },
350 { "WF", "Wallis and Futuna" },
351 { "WS", "Samoa" },
352 { "XK", "Kosovo" }, // Temporary code, no official ISO code assigned.
353 { "YE", "Yemen" },
354 { "YT", "Mayotte" },
355 { "ZA", "South Africa" },
356 { "ZM", "Zambia" },
357 { "ZW", "Zimbabwe" },
358 { nullptr, nullptr }
359};
360
361// Languages code, language name.
362// Reference:
363// - https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes
364// - https://www.localeplanet.com/icu/index.html
365// - https://lh.2xlibre.net/locales/
366
367static const char *language_list[][2] = {
368 { "aa", "Afar" },
369 { "ab", "Abkhazian" },
370 { "ace", "Achinese" },
371 { "ach", "Acoli" },
372 { "ada", "Adangme" },
373 { "ady", "Adyghe" },
374 { "ae", "Avestan" },
375 { "aeb", "Tunisian Arabic" },
376 { "af", "Afrikaans" },
377 { "afh", "Afrihili" },
378 { "agq", "Aghem" },
379 { "ain", "Ainu" },
380 { "agr", "Aguaruna" },
381 { "ak", "Akan" },
382 { "akk", "Akkadian" },
383 { "akz", "Alabama" },
384 { "ale", "Aleut" },
385 { "aln", "Gheg Albanian" },
386 { "alt", "Southern Altai" },
387 { "am", "Amharic" },
388 { "an", "Aragonese" },
389 { "ang", "Old English" },
390 { "anp", "Angika" },
391 { "ar", "Arabic" },
392 { "arc", "Aramaic" },
393 { "arn", "Mapudungun" },
394 { "aro", "Araona" },
395 { "arp", "Arapaho" },
396 { "arq", "Algerian Arabic" },
397 { "ars", "Najdi Arabic" },
398 { "arw", "Arawak" },
399 { "ary", "Moroccan Arabic" },
400 { "arz", "Egyptian Arabic" },
401 { "as", "Assamese" },
402 { "asa", "Asu" },
403 { "ase", "American Sign Language" },
404 { "ast", "Asturian" },
405 { "av", "Avaric" },
406 { "avk", "Kotava" },
407 { "awa", "Awadhi" },
408 { "ayc", "Southern Aymara" },
409 { "ay", "Aymara" },
410 { "az", "Azerbaijani" },
411 { "ba", "Bashkir" },
412 { "bal", "Baluchi" },
413 { "ban", "Balinese" },
414 { "bar", "Bavarian" },
415 { "bas", "Bassa" },
416 { "bax", "Bamun" },
417 { "bbc", "Batak Toba" },
418 { "bbj", "Ghomala" },
419 { "be", "Belarusian" },
420 { "bej", "Beja" },
421 { "bem", "Bemba" },
422 { "ber", "Berber" },
423 { "bew", "Betawi" },
424 { "bez", "Bena" },
425 { "bfd", "Bafut" },
426 { "bfq", "Badaga" },
427 { "bg", "Bulgarian" },
428 { "bhb", "Bhili" },
429 { "bgn", "Western Balochi" },
430 { "bho", "Bhojpuri" },
431 { "bi", "Bislama" },
432 { "bik", "Bikol" },
433 { "bin", "Bini" },
434 { "bjn", "Banjar" },
435 { "bkm", "Kom" },
436 { "bla", "Siksika" },
437 { "bm", "Bambara" },
438 { "bn", "Bengali" },
439 { "bo", "Tibetan" },
440 { "bpy", "Bishnupriya" },
441 { "bqi", "Bakhtiari" },
442 { "br", "Breton" },
443 { "brh", "Brahui" },
444 { "brx", "Bodo" },
445 { "bs", "Bosnian" },
446 { "bss", "Akoose" },
447 { "bua", "Buriat" },
448 { "bug", "Buginese" },
449 { "bum", "Bulu" },
450 { "byn", "Bilin" },
451 { "byv", "Medumba" },
452 { "ca", "Catalan" },
453 { "cad", "Caddo" },
454 { "car", "Carib" },
455 { "cay", "Cayuga" },
456 { "cch", "Atsam" },
457 { "ccp", "Chakma" },
458 { "ce", "Chechen" },
459 { "ceb", "Cebuano" },
460 { "cgg", "Chiga" },
461 { "ch", "Chamorro" },
462 { "chb", "Chibcha" },
463 { "chg", "Chagatai" },
464 { "chk", "Chuukese" },
465 { "chm", "Mari" },
466 { "chn", "Chinook Jargon" },
467 { "cho", "Choctaw" },
468 { "chp", "Chipewyan" },
469 { "chr", "Cherokee" },
470 { "chy", "Cheyenne" },
471 { "cic", "Chickasaw" },
472 { "ckb", "Central Kurdish" },
473 { "csb", "Kashubian" },
474 { "cmn", "Mandarin Chinese" },
475 { "co", "Corsican" },
476 { "cop", "Coptic" },
477 { "cps", "Capiznon" },
478 { "cr", "Cree" },
479 { "crh", "Crimean Tatar" },
480 { "crs", "Seselwa Creole French" },
481 { "cs", "Czech" },
482 { "csb", "Kashubian" },
483 { "cu", "Church Slavic" },
484 { "cv", "Chuvash" },
485 { "cy", "Welsh" },
486 { "da", "Danish" },
487 { "dak", "Dakota" },
488 { "dar", "Dargwa" },
489 { "dav", "Taita" },
490 { "de", "German" },
491 { "del", "Delaware" },
492 { "den", "Slave" },
493 { "dgr", "Dogrib" },
494 { "din", "Dinka" },
495 { "dje", "Zarma" },
496 { "doi", "Dogri" },
497 { "dsb", "Lower Sorbian" },
498 { "dtp", "Central Dusun" },
499 { "dua", "Duala" },
500 { "dum", "Middle Dutch" },
501 { "dv", "Dhivehi" },
502 { "dyo", "Jola-Fonyi" },
503 { "dyu", "Dyula" },
504 { "dz", "Dzongkha" },
505 { "dzg", "Dazaga" },
506 { "ebu", "Embu" },
507 { "ee", "Ewe" },
508 { "efi", "Efik" },
509 { "egl", "Emilian" },
510 { "egy", "Ancient Egyptian" },
511 { "eka", "Ekajuk" },
512 { "el", "Greek" },
513 { "elx", "Elamite" },
514 { "en", "English" },
515 { "enm", "Middle English" },
516 { "eo", "Esperanto" },
517 { "es", "Spanish" },
518 { "esu", "Central Yupik" },
519 { "et", "Estonian" },
520 { "eu", "Basque" },
521 { "ewo", "Ewondo" },
522 { "ext", "Extremaduran" },
523 { "fa", "Persian" },
524 { "fan", "Fang" },
525 { "fat", "Fanti" },
526 { "ff", "Fulah" },
527 { "fi", "Finnish" },
528 { "fil", "Filipino" },
529 { "fit", "Tornedalen Finnish" },
530 { "fj", "Fijian" },
531 { "fo", "Faroese" },
532 { "fon", "Fon" },
533 { "fr", "French" },
534 { "frc", "Cajun French" },
535 { "frm", "Middle French" },
536 { "fro", "Old French" },
537 { "frp", "Arpitan" },
538 { "frr", "Northern Frisian" },
539 { "frs", "Eastern Frisian" },
540 { "fur", "Friulian" },
541 { "fy", "Western Frisian" },
542 { "ga", "Irish" },
543 { "gaa", "Ga" },
544 { "gag", "Gagauz" },
545 { "gan", "Gan Chinese" },
546 { "gay", "Gayo" },
547 { "gba", "Gbaya" },
548 { "gbz", "Zoroastrian Dari" },
549 { "gd", "Scottish Gaelic" },
550 { "gez", "Geez" },
551 { "gil", "Gilbertese" },
552 { "gl", "Galician" },
553 { "glk", "Gilaki" },
554 { "gmh", "Middle High German" },
555 { "gn", "Guarani" },
556 { "goh", "Old High German" },
557 { "gom", "Goan Konkani" },
558 { "gon", "Gondi" },
559 { "gor", "Gorontalo" },
560 { "got", "Gothic" },
561 { "grb", "Grebo" },
562 { "grc", "Ancient Greek" },
563 { "gsw", "Swiss German" },
564 { "gu", "Gujarati" },
565 { "guc", "Wayuu" },
566 { "gur", "Frafra" },
567 { "guz", "Gusii" },
568 { "gv", "Manx" },
569 { "gwi", "Gwichʼin" },
570 { "ha", "Hausa" },
571 { "hai", "Haida" },
572 { "hak", "Hakka Chinese" },
573 { "haw", "Hawaiian" },
574 { "he", "Hebrew" },
575 { "hi", "Hindi" },
576 { "hif", "Fiji Hindi" },
577 { "hil", "Hiligaynon" },
578 { "hit", "Hittite" },
579 { "hmn", "Hmong" },
580 { "ho", "Hiri Motu" },
581 { "hne", "Chhattisgarhi" },
582 { "hr", "Croatian" },
583 { "hsb", "Upper Sorbian" },
584 { "hsn", "Xiang Chinese" },
585 { "ht", "Haitian" },
586 { "hu", "Hungarian" },
587 { "hup", "Hupa" },
588 { "hus", "Huastec" },
589 { "hy", "Armenian" },
590 { "hz", "Herero" },
591 { "ia", "Interlingua" },
592 { "iba", "Iban" },
593 { "ibb", "Ibibio" },
594 { "id", "Indonesian" },
595 { "ie", "Interlingue" },
596 { "ig", "Igbo" },
597 { "ii", "Sichuan Yi" },
598 { "ik", "Inupiaq" },
599 { "ilo", "Iloko" },
600 { "inh", "Ingush" },
601 { "io", "Ido" },
602 { "is", "Icelandic" },
603 { "it", "Italian" },
604 { "iu", "Inuktitut" },
605 { "izh", "Ingrian" },
606 { "ja", "Japanese" },
607 { "jam", "Jamaican Creole English" },
608 { "jbo", "Lojban" },
609 { "jgo", "Ngomba" },
610 { "jmc", "Machame" },
611 { "jpr", "Judeo-Persian" },
612 { "jrb", "Judeo-Arabic" },
613 { "jut", "Jutish" },
614 { "jv", "Javanese" },
615 { "ka", "Georgian" },
616 { "kaa", "Kara-Kalpak" },
617 { "kab", "Kabyle" },
618 { "kac", "Kachin" },
619 { "kaj", "Jju" },
620 { "kam", "Kamba" },
621 { "kaw", "Kawi" },
622 { "kbd", "Kabardian" },
623 { "kbl", "Kanembu" },
624 { "kcg", "Tyap" },
625 { "kde", "Makonde" },
626 { "kea", "Kabuverdianu" },
627 { "ken", "Kenyang" },
628 { "kfo", "Koro" },
629 { "kg", "Kongo" },
630 { "kgp", "Kaingang" },
631 { "kha", "Khasi" },
632 { "kho", "Khotanese" },
633 { "khq", "Koyra Chiini" },
634 { "khw", "Khowar" },
635 { "ki", "Kikuyu" },
636 { "kiu", "Kirmanjki" },
637 { "kj", "Kuanyama" },
638 { "kk", "Kazakh" },
639 { "kkj", "Kako" },
640 { "kl", "Kalaallisut" },
641 { "kln", "Kalenjin" },
642 { "km", "Central Khmer" },
643 { "kmb", "Kimbundu" },
644 { "kn", "Kannada" },
645 { "ko", "Korean" },
646 { "koi", "Komi-Permyak" },
647 { "kok", "Konkani" },
648 { "kos", "Kosraean" },
649 { "kpe", "Kpelle" },
650 { "kr", "Kanuri" },
651 { "krc", "Karachay-Balkar" },
652 { "kri", "Krio" },
653 { "krj", "Kinaray-a" },
654 { "krl", "Karelian" },
655 { "kru", "Kurukh" },
656 { "ks", "Kashmiri" },
657 { "ksb", "Shambala" },
658 { "ksf", "Bafia" },
659 { "ksh", "Colognian" },
660 { "ku", "Kurdish" },
661 { "kum", "Kumyk" },
662 { "kut", "Kutenai" },
663 { "kv", "Komi" },
664 { "kw", "Cornish" },
665 { "ky", "Kirghiz" },
666 { "lag", "Langi" },
667 { "la", "Latin" },
668 { "lad", "Ladino" },
669 { "lag", "Langi" },
670 { "lah", "Lahnda" },
671 { "lam", "Lamba" },
672 { "lb", "Luxembourgish" },
673 { "lez", "Lezghian" },
674 { "lfn", "Lingua Franca Nova" },
675 { "lg", "Ganda" },
676 { "li", "Limburgan" },
677 { "lij", "Ligurian" },
678 { "liv", "Livonian" },
679 { "lkt", "Lakota" },
680 { "lmo", "Lombard" },
681 { "ln", "Lingala" },
682 { "lo", "Lao" },
683 { "lol", "Mongo" },
684 { "lou", "Louisiana Creole" },
685 { "loz", "Lozi" },
686 { "lrc", "Northern Luri" },
687 { "lt", "Lithuanian" },
688 { "ltg", "Latgalian" },
689 { "lu", "Luba-Katanga" },
690 { "lua", "Luba-Lulua" },
691 { "lui", "Luiseno" },
692 { "lun", "Lunda" },
693 { "luo", "Luo" },
694 { "lus", "Mizo" },
695 { "luy", "Luyia" },
696 { "lv", "Latvian" },
697 { "lzh", "Literary Chinese" },
698 { "lzz", "Laz" },
699 { "mad", "Madurese" },
700 { "maf", "Mafa" },
701 { "mag", "Magahi" },
702 { "mai", "Maithili" },
703 { "mak", "Makasar" },
704 { "man", "Mandingo" },
705 { "mas", "Masai" },
706 { "mde", "Maba" },
707 { "mdf", "Moksha" },
708 { "mdr", "Mandar" },
709 { "men", "Mende" },
710 { "mer", "Meru" },
711 { "mfe", "Morisyen" },
712 { "mg", "Malagasy" },
713 { "mga", "Middle Irish" },
714 { "mgh", "Makhuwa-Meetto" },
715 { "mgo", "Metaʼ" },
716 { "mh", "Marshallese" },
717 { "mhr", "Eastern Mari" },
718 { "mi", "Māori" },
719 { "mic", "Mi'kmaq" },
720 { "min", "Minangkabau" },
721 { "miq", "Mískito" },
722 { "mjw", "Karbi" },
723 { "mk", "Macedonian" },
724 { "ml", "Malayalam" },
725 { "mn", "Mongolian" },
726 { "mnc", "Manchu" },
727 { "mni", "Manipuri" },
728 { "mnw", "Mon" },
729 { "mos", "Mossi" },
730 { "moh", "Mohawk" },
731 { "mr", "Marathi" },
732 { "mrj", "Western Mari" },
733 { "ms", "Malay" },
734 { "mt", "Maltese" },
735 { "mua", "Mundang" },
736 { "mus", "Muscogee" },
737 { "mwl", "Mirandese" },
738 { "mwr", "Marwari" },
739 { "mwv", "Mentawai" },
740 { "my", "Burmese" },
741 { "mye", "Myene" },
742 { "myv", "Erzya" },
743 { "mzn", "Mazanderani" },
744 { "na", "Nauru" },
745 { "nah", "Nahuatl" },
746 { "nan", "Min Nan Chinese" },
747 { "nap", "Neapolitan" },
748 { "naq", "Nama" },
749 { "nan", "Min Nan Chinese" },
750 { "nb", "Norwegian Bokmål" },
751 { "nd", "North Ndebele" },
752 { "nds", "Low German" },
753 { "ne", "Nepali" },
754 { "new", "Newari" },
755 { "nhn", "Central Nahuatl" },
756 { "ng", "Ndonga" },
757 { "nia", "Nias" },
758 { "niu", "Niuean" },
759 { "njo", "Ao Naga" },
760 { "nl", "Dutch" },
761 { "nmg", "Kwasio" },
762 { "nn", "Norwegian Nynorsk" },
763 { "nnh", "Ngiemboon" },
764 { "nog", "Nogai" },
765 { "non", "Old Norse" },
766 { "nov", "Novial" },
767 { "nqo", "N'ko" },
768 { "nr", "South Ndebele" },
769 { "nso", "Pedi" },
770 { "nus", "Nuer" },
771 { "nv", "Navajo" },
772 { "nwc", "Classical Newari" },
773 { "ny", "Nyanja" },
774 { "nym", "Nyamwezi" },
775 { "nyn", "Nyankole" },
776 { "nyo", "Nyoro" },
777 { "nzi", "Nzima" },
778 { "oc", "Occitan" },
779 { "oj", "Ojibwa" },
780 { "om", "Oromo" },
781 { "or", "Odia" },
782 { "os", "Ossetic" },
783 { "osa", "Osage" },
784 { "ota", "Ottoman Turkish" },
785 { "pa", "Panjabi" },
786 { "pag", "Pangasinan" },
787 { "pal", "Pahlavi" },
788 { "pam", "Pampanga" },
789 { "pap", "Papiamento" },
790 { "pau", "Palauan" },
791 { "pcd", "Picard" },
792 { "pcm", "Nigerian Pidgin" },
793 { "pdc", "Pennsylvania German" },
794 { "pdt", "Plautdietsch" },
795 { "peo", "Old Persian" },
796 { "pfl", "Palatine German" },
797 { "phn", "Phoenician" },
798 { "pi", "Pali" },
799 { "pl", "Polish" },
800 { "pms", "Piedmontese" },
801 { "pnt", "Pontic" },
802 { "pon", "Pohnpeian" },
803 { "pr", "Pirate" },
804 { "prg", "Prussian" },
805 { "pro", "Old Provençal" },
806 { "prs", "Dari" },
807 { "ps", "Pushto" },
808 { "pt", "Portuguese" },
809 { "qu", "Quechua" },
810 { "quc", "K'iche" },
811 { "qug", "Chimborazo Highland Quichua" },
812 { "quy", "Ayacucho Quechua" },
813 { "quz", "Cusco Quechua" },
814 { "raj", "Rajasthani" },
815 { "rap", "Rapanui" },
816 { "rar", "Rarotongan" },
817 { "rgn", "Romagnol" },
818 { "rif", "Riffian" },
819 { "rm", "Romansh" },
820 { "rn", "Rundi" },
821 { "ro", "Romanian" },
822 { "rof", "Rombo" },
823 { "rom", "Romany" },
824 { "rtm", "Rotuman" },
825 { "ru", "Russian" },
826 { "rue", "Rusyn" },
827 { "rug", "Roviana" },
828 { "rup", "Aromanian" },
829 { "rw", "Kinyarwanda" },
830 { "rwk", "Rwa" },
831 { "sa", "Sanskrit" },
832 { "sad", "Sandawe" },
833 { "sah", "Sakha" },
834 { "sam", "Samaritan Aramaic" },
835 { "saq", "Samburu" },
836 { "sas", "Sasak" },
837 { "sat", "Santali" },
838 { "saz", "Saurashtra" },
839 { "sba", "Ngambay" },
840 { "sbp", "Sangu" },
841 { "sc", "Sardinian" },
842 { "scn", "Sicilian" },
843 { "sco", "Scots" },
844 { "sd", "Sindhi" },
845 { "sdc", "Sassarese Sardinian" },
846 { "sdh", "Southern Kurdish" },
847 { "se", "Northern Sami" },
848 { "see", "Seneca" },
849 { "seh", "Sena" },
850 { "sei", "Seri" },
851 { "sel", "Selkup" },
852 { "ses", "Koyraboro Senni" },
853 { "sg", "Sango" },
854 { "sga", "Old Irish" },
855 { "sgs", "Samogitian" },
856 { "sh", "Serbo-Croatian" },
857 { "shi", "Tachelhit" },
858 { "shn", "Shan" },
859 { "shs", "Shuswap" },
860 { "shu", "Chadian Arabic" },
861 { "si", "Sinhala" },
862 { "sid", "Sidamo" },
863 { "sk", "Slovak" },
864 { "sl", "Slovenian" },
865 { "sli", "Lower Silesian" },
866 { "sly", "Selayar" },
867 { "sm", "Samoan" },
868 { "sma", "Southern Sami" },
869 { "smj", "Lule Sami" },
870 { "smn", "Inari Sami" },
871 { "sms", "Skolt Sami" },
872 { "sn", "Shona" },
873 { "snk", "Soninke" },
874 { "so", "Somali" },
875 { "sog", "Sogdien" },
876 { "son", "Songhai" },
877 { "sq", "Albanian" },
878 { "sr", "Serbian" },
879 { "srn", "Sranan Tongo" },
880 { "srr", "Serer" },
881 { "ss", "Swati" },
882 { "ssy", "Saho" },
883 { "st", "Southern Sotho" },
884 { "stq", "Saterland Frisian" },
885 { "su", "Sundanese" },
886 { "suk", "Sukuma" },
887 { "sus", "Susu" },
888 { "sux", "Sumerian" },
889 { "sv", "Swedish" },
890 { "sw", "Swahili" },
891 { "swb", "Comorian" },
892 { "swc", "Congo Swahili" },
893 { "syc", "Classical Syriac" },
894 { "syr", "Syriac" },
895 { "szl", "Silesian" },
896 { "ta", "Tamil" },
897 { "tcy", "Tulu" },
898 { "te", "Telugu" },
899 { "tem", "Timne" },
900 { "teo", "Teso" },
901 { "ter", "Tereno" },
902 { "tet", "Tetum" },
903 { "tg", "Tajik" },
904 { "th", "Thai" },
905 { "the", "Chitwania Tharu" },
906 { "ti", "Tigrinya" },
907 { "tig", "Tigre" },
908 { "tiv", "Tiv" },
909 { "tk", "Turkmen" },
910 { "tkl", "Tokelau" },
911 { "tkr", "Tsakhur" },
912 { "tl", "Tagalog" },
913 { "tlh", "Klingon" },
914 { "tli", "Tlingit" },
915 { "tly", "Talysh" },
916 { "tmh", "Tamashek" },
917 { "tn", "Tswana" },
918 { "to", "Tongan" },
919 { "tog", "Nyasa Tonga" },
920 { "tpi", "Tok Pisin" },
921 { "tr", "Turkish" },
922 { "tru", "Turoyo" },
923 { "trv", "Taroko" },
924 { "ts", "Tsonga" },
925 { "tsd", "Tsakonian" },
926 { "tsi", "Tsimshian" },
927 { "tt", "Tatar" },
928 { "ttt", "Muslim Tat" },
929 { "tum", "Tumbuka" },
930 { "tvl", "Tuvalu" },
931 { "tw", "Twi" },
932 { "twq", "Tasawaq" },
933 { "ty", "Tahitian" },
934 { "tyv", "Tuvinian" },
935 { "tzm", "Central Atlas Tamazight" },
936 { "udm", "Udmurt" },
937 { "ug", "Uyghur" },
938 { "uga", "Ugaritic" },
939 { "uk", "Ukrainian" },
940 { "umb", "Umbundu" },
941 { "unm", "Unami" },
942 { "ur", "Urdu" },
943 { "uz", "Uzbek" },
944 { "vai", "Vai" },
945 { "ve", "Venda" },
946 { "vec", "Venetian" },
947 { "vep", "Veps" },
948 { "vi", "Vietnamese" },
949 { "vls", "West Flemish" },
950 { "vmf", "Main-Franconian" },
951 { "vo", "Volapük" },
952 { "vot", "Votic" },
953 { "vro", "Võro" },
954 { "vun", "Vunjo" },
955 { "wa", "Walloon" },
956 { "wae", "Walser" },
957 { "wal", "Wolaytta" },
958 { "war", "Waray" },
959 { "was", "Washo" },
960 { "wbp", "Warlpiri" },
961 { "wo", "Wolof" },
962 { "wuu", "Wu Chinese" },
963 { "xal", "Kalmyk" },
964 { "xh", "Xhosa" },
965 { "xmf", "Mingrelian" },
966 { "xog", "Soga" },
967 { "yao", "Yao" },
968 { "yap", "Yapese" },
969 { "yav", "Yangben" },
970 { "ybb", "Yemba" },
971 { "yi", "Yiddish" },
972 { "yo", "Yoruba" },
973 { "yrl", "Nheengatu" },
974 { "yue", "Yue Chinese" },
975 { "yuw", "Papua New Guinea" },
976 { "za", "Zhuang" },
977 { "zap", "Zapotec" },
978 { "zbl", "Blissymbols" },
979 { "zea", "Zeelandic" },
980 { "zen", "Zenaga" },
981 { "zgh", "Standard Moroccan Tamazight" },
982 { "zh", "Chinese" },
983 { "zu", "Zulu" },
984 { "zun", "Zuni" },
985 { "zza", "Zaza" },
986 { nullptr, nullptr }
987};
988
989// Additional regional variants.
990// Variant name, supported languages.
991
992static const char *locale_variants[][2] = {
993 { "valencia", "ca" },
994 { "iqtelif", "tt" },
995 { "saaho", "aa" },
996 { "tradnl", "es" },
997 { nullptr, nullptr },
998};
999
1000// Script names and codes (excludes typographic variants, special codes, reserved codes and aliases for combined scripts).
1001// Reference:
1002// - https://en.wikipedia.org/wiki/ISO_15924
1003
1004static const char *script_list[][2] = {
1005 { "Adlam", "Adlm" },
1006 { "Afaka", "Afak" },
1007 { "Caucasian Albanian", "Aghb" },
1008 { "Ahom", "Ahom" },
1009 { "Arabic", "Arab" },
1010 { "Imperial Aramaic", "Armi" },
1011 { "Armenian", "Armn" },
1012 { "Avestan", "Avst" },
1013 { "Balinese", "Bali" },
1014 { "Bamum", "Bamu" },
1015 { "Bassa Vah", "Bass" },
1016 { "Batak", "Batk" },
1017 { "Bengali", "Beng" },
1018 { "Bhaiksuki", "Bhks" },
1019 { "Blissymbols", "Blis" },
1020 { "Bopomofo", "Bopo" },
1021 { "Brahmi", "Brah" },
1022 { "Braille", "Brai" },
1023 { "Buginese", "Bugi" },
1024 { "Buhid", "Buhd" },
1025 { "Chakma", "Cakm" },
1026 { "Unified Canadian Aboriginal", "Cans" },
1027 { "Carian", "Cari" },
1028 { "Cham", "Cham" },
1029 { "Cherokee", "Cher" },
1030 { "Chorasmian", "Chrs" },
1031 { "Cirth", "Cirt" },
1032 { "Coptic", "Copt" },
1033 { "Cypro-Minoan", "Cpmn" },
1034 { "Cypriot", "Cprt" },
1035 { "Cyrillic", "Cyrl" },
1036 { "Devanagari", "Deva" },
1037 { "Dives Akuru", "Diak" },
1038 { "Dogra", "Dogr" },
1039 { "Deseret", "Dsrt" },
1040 { "Duployan", "Dupl" },
1041 { "Egyptian demotic", "Egyd" },
1042 { "Egyptian hieratic", "Egyh" },
1043 { "Egyptian hieroglyphs", "Egyp" },
1044 { "Elbasan", "Elba" },
1045 { "Elymaic", "Elym" },
1046 { "Ethiopic", "Ethi" },
1047 { "Khutsuri", "Geok" },
1048 { "Georgian", "Geor" },
1049 { "Glagolitic", "Glag" },
1050 { "Gunjala Gondi", "Gong" },
1051 { "Masaram Gondi", "Gonm" },
1052 { "Gothic", "Goth" },
1053 { "Grantha", "Gran" },
1054 { "Greek", "Grek" },
1055 { "Gujarati", "Gujr" },
1056 { "Gurmukhi", "Guru" },
1057 { "Hangul", "Hang" },
1058 { "Han", "Hani" },
1059 { "Hanunoo", "Hano" },
1060 { "Simplified Han", "Hans" },
1061 { "Traditional Han", "Hant" },
1062 { "Hatran", "Hatr" },
1063 { "Hebrew", "Hebr" },
1064 { "Hiragana", "Hira" },
1065 { "Anatolian Hieroglyphs", "Hluw" },
1066 { "Pahawh Hmong", "Hmng" },
1067 { "Nyiakeng Puachue Hmong", "Hmnp" },
1068 { "Old Hungarian", "Hung" },
1069 { "Indus", "Inds" },
1070 { "Old Italic", "Ital" },
1071 { "Javanese", "Java" },
1072 { "Jurchen", "Jurc" },
1073 { "Kayah Li", "Kali" },
1074 { "Katakana", "Kana" },
1075 { "Kawi", "Kawi" },
1076 { "Kharoshthi", "Khar" },
1077 { "Khmer", "Khmr" },
1078 { "Khojki", "Khoj" },
1079 { "Khitan large script", "Kitl" },
1080 { "Khitan small script", "Kits" },
1081 { "Kannada", "Knda" },
1082 { "Kpelle", "Kpel" },
1083 { "Kaithi", "Kthi" },
1084 { "Tai Tham", "Lana" },
1085 { "Lao", "Laoo" },
1086 { "Latin", "Latn" },
1087 { "Leke", "Leke" },
1088 { "Lepcha", "Lepc" },
1089 { "Limbu", "Limb" },
1090 { "Linear A", "Lina" },
1091 { "Linear B", "Linb" },
1092 { "Lisu", "Lisu" },
1093 { "Loma", "Loma" },
1094 { "Lycian", "Lyci" },
1095 { "Lydian", "Lydi" },
1096 { "Mahajani", "Mahj" },
1097 { "Makasar", "Maka" },
1098 { "Mandaic", "Mand" },
1099 { "Manichaean", "Mani" },
1100 { "Marchen", "Marc" },
1101 { "Mayan Hieroglyphs", "Maya" },
1102 { "Medefaidrin", "Medf" },
1103 { "Mende Kikakui", "Mend" },
1104 { "Meroitic Cursive", "Merc" },
1105 { "Meroitic Hieroglyphs", "Mero" },
1106 { "Malayalam", "Mlym" },
1107 { "Modi", "Modi" },
1108 { "Mongolian", "Mong" },
1109 { "Moon", "Moon" },
1110 { "Mro", "Mroo" },
1111 { "Meitei Mayek", "Mtei" },
1112 { "Multani", "Mult" },
1113 { "Myanmar / Burmese", "Mymr" },
1114 { "​Nag Mundari", "Nagm" },
1115 { "Nandinagari", "Nand" },
1116 { "Old North Arabian", "Narb" },
1117 { "Nabataean", "Nbat" },
1118 { "Newa", "Newa" },
1119 { "Naxi Dongba", "Nkdb" },
1120 { "Nakhi Geba", "Nkgb" },
1121 { "N'ko", "Nkoo" },
1122 { "Nüshu", "Nshu" },
1123 { "Ogham", "Ogam" },
1124 { "Ol Chiki", "Olck" },
1125 { "Old Turkic", "Orkh" },
1126 { "Oriya", "Orya" },
1127 { "Osage", "Osge" },
1128 { "Osmanya", "Osma" },
1129 { "Old Uyghur", "Ougr" },
1130 { "Palmyrene", "Palm" },
1131 { "Pau Cin Hau", "Pauc" },
1132 { "Proto-Cuneiform", "Pcun" },
1133 { "Proto-Elamite", "Pelm" },
1134 { "Old Permic", "Perm" },
1135 { "Phags-pa", "Phag" },
1136 { "Inscriptional Pahlavi", "Phli" },
1137 { "Psalter Pahlavi", "Phlp" },
1138 { "Book Pahlavi", "Phlv" },
1139 { "Phoenician", "Phnx" },
1140 { "Klingon", "Piqd" },
1141 { "Miao", "Plrd" },
1142 { "Inscriptional Parthian", "Prti" },
1143 { "Proto-Sinaitic", "Psin" },
1144 { "Ranjana", "Ranj" },
1145 { "Rejang", "Rjng" },
1146 { "Hanifi Rohingya", "Rohg" },
1147 { "Rongorongo", "Roro" },
1148 { "Runic", "Runr" },
1149 { "Samaritan", "Samr" },
1150 { "Sarati", "Sara" },
1151 { "Old South Arabian", "Sarb" },
1152 { "Saurashtra", "Saur" },
1153 { "SignWriting", "Sgnw" },
1154 { "Shavian", "Shaw" },
1155 { "Sharada", "Shrd" },
1156 { "Shuishu", "Shui" },
1157 { "Siddham", "Sidd" },
1158 { "Khudawadi", "Sind" },
1159 { "Sinhala", "Sinh" },
1160 { "Sogdian", "Sogd" },
1161 { "Old Sogdian", "Sogo" },
1162 { "Sora Sompeng", "Sora" },
1163 { "Soyombo", "Soyo" },
1164 { "Sundanese", "Sund" },
1165 { "Syloti Nagri", "Sylo" },
1166 { "Syriac", "Syrc" },
1167 { "Tagbanwa", "Tagb" },
1168 { "Takri", "Takr" },
1169 { "Tai Le", "Tale" },
1170 { "New Tai Lue", "Talu" },
1171 { "Tamil", "Taml" },
1172 { "Tangut", "Tang" },
1173 { "Tai Viet", "Tavt" },
1174 { "Telugu", "Telu" },
1175 { "Tengwar", "Teng" },
1176 { "Tifinagh", "Tfng" },
1177 { "Tagalog", "Tglg" },
1178 { "Thaana", "Thaa" },
1179 { "Thai", "Thai" },
1180 { "Tibetan", "Tibt" },
1181 { "Tirhuta", "Tirh" },
1182 { "Tangsa", "Tnsa" },
1183 { "Toto", "Toto" },
1184 { "Ugaritic", "Ugar" },
1185 { "Vai", "Vaii" },
1186 { "Visible Speech", "Visp" },
1187 { "Vithkuqi", "Vith" },
1188 { "Warang Citi", "Wara" },
1189 { "Wancho", "Wcho" },
1190 { "Woleai", "Wole" },
1191 { "Old Persian", "Xpeo" },
1192 { "Cuneiform", "Xsux" },
1193 { "Yezidi", "Yezi" },
1194 { "Yi", "Yiii" },
1195 { "Zanabazar Square", "Zanb" },
1196 { nullptr, nullptr }
1197};
1198
1199#endif // LOCALES_H
1200