locales.h 31 KB

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