Mirror of https://github.com/roostorg/coop
github.com/roostorg/coop
1import { makeEnumLike } from '@roostorg/types';
2
3// https://gist.github.com/jrnk/8eb57b065ea0b098d571
4export const ISO_LANG_MAP = {
5 aa: 'AFAR',
6 ab: 'ABKHAZIAN',
7 ae: 'AVESTAN',
8 af: 'AFRIKAANS',
9 ak: 'AKAN',
10 am: 'AMHARIC',
11 an: 'ARAGONESE',
12 ar: 'ARABIC',
13 as: 'ASSAMESE',
14 av: 'AVARIC',
15 ay: 'AYMARA',
16 az: 'AZERBAIJANI',
17 ba: 'BASHKIR',
18 be: 'BELARUSIAN',
19 bg: 'BULGARIAN',
20 bh: 'BIHARI',
21 bi: 'BISLAMA',
22 bm: 'BAMBARA',
23 bn: 'BENGALI',
24 bo: 'TIBETAN',
25 br: 'BRETON',
26 bs: 'BOSNIAN',
27 ca: 'CATALAN',
28 ce: 'CHECHEN',
29 ch: 'CHAMORRO',
30 co: 'CORSICAN',
31 cr: 'CREE',
32 cs: 'CZECH',
33 cu: 'CHURCH_SLAVIC',
34 cv: 'CHUVASH',
35 cy: 'WELSH',
36 da: 'DANISH',
37 de: 'GERMAN',
38 dv: 'DHIVEHI',
39 dz: 'DZONGKHA',
40 ee: 'EWE',
41 el: 'GREEK',
42 en: 'ENGLISH',
43 eo: 'ESPERANTO',
44 es: 'SPANISH',
45 et: 'ESTONIAN',
46 eu: 'BASQUE',
47 fa: 'PERSIAN',
48 ff: 'FULAH',
49 fi: 'FINNISH',
50 fj: 'FIJIAN',
51 fo: 'FAROESE',
52 fr: 'FRENCH',
53 fy: 'WESTERN_FRISIAN',
54 ga: 'IRISH',
55 gd: 'GAELIC',
56 gl: 'GALICIAN',
57 gn: 'GUARANI',
58 gu: 'GUJARATI',
59 gv: 'MANX',
60 ha: 'HAUSA',
61 he: 'HEBREW',
62 hi: 'HINDI',
63 ho: 'HIRI_MOTU',
64 hr: 'CROATIAN',
65 ht: 'HAITIAN',
66 hu: 'HUNGARIAN',
67 hy: 'ARMENIAN',
68 hz: 'HERERO',
69 ia: 'INTERLINGUA',
70 id: 'INDONESIAN',
71 ig: 'IGBO',
72 ii: 'SICHUAN_YI',
73 ik: 'INUPIAQ',
74 io: 'IDO',
75 is: 'ICELANDIC',
76 it: 'ITALIAN',
77 iu: 'INUKTITUT',
78 ja: 'JAPANESE',
79 jv: 'JAVANESE',
80 ka: 'GEORGIAN',
81 kg: 'KONGO',
82 ki: 'KIKUYU',
83 kj: 'KUANYAMA',
84 kk: 'KAZAKH',
85 kl: 'KALAALLISUT',
86 km: 'CENTRAL_KHMER',
87 kn: 'KANNADA',
88 ko: 'KOREAN',
89 kr: 'KANURI',
90 ks: 'KASHMIRI',
91 ku: 'KURDISH',
92 kv: 'KOMI',
93 kw: 'CORNISH',
94 ky: 'KYRGYZ',
95 la: 'LATIN',
96 lb: 'LUXEMBOURGISH',
97 lg: 'GANDA',
98 li: 'LIMBURGAN',
99 ln: 'LINGALA',
100 lo: 'LAO',
101 lt: 'LITHUANIAN',
102 lu: 'LUBA_KATANGA',
103 lv: 'LATVIAN',
104 mg: 'MALAGASY',
105 mh: 'MARSHALLESE',
106 mi: 'MAORI',
107 mk: 'MACEDONIAN',
108 ml: 'MALAYALAM',
109 mn: 'MONGOLIAN',
110 mr: 'MARATHI',
111 ms: 'MALAY',
112 mt: 'MALTESE',
113 my: 'BURMESE',
114 na: 'NAURU',
115 nb: 'NORWEGIAN',
116 nd: 'NORTH_NDEBELE',
117 ne: 'NEPALI',
118 ng: 'NDONGA',
119 nl: 'DUTCH',
120 nn: 'NORWEGIAN',
121 no: 'NORWEGIAN',
122 nr: 'SOUTH_NDEBELE',
123 nv: 'NAVAJO',
124 ny: 'NYANJA',
125 oc: 'OCCITAN',
126 oj: 'OJIBWA',
127 om: 'OROMO',
128 or: 'ORIYA',
129 os: 'OSSETIAN',
130 pa: 'PUNJABI',
131 pi: 'PALI',
132 pl: 'POLISH',
133 ps: 'PASHTO',
134 pt: 'PORTUGUESE',
135 qu: 'QUECHUA',
136 rm: 'ROMANSH',
137 rn: 'RUNDI',
138 ro: 'ROMANIAN',
139 ru: 'RUSSIAN',
140 rw: 'KINYARWANDA',
141 sa: 'SANSKRIT',
142 sc: 'SARDINIAN',
143 sd: 'SINDHI',
144 se: 'NORTHERN_SAMI',
145 sg: 'SANGO',
146 si: 'SINHALESE',
147 sk: 'SLOVAK',
148 sl: 'SLOVENE',
149 sm: 'SAMOAN',
150 sn: 'SHONA',
151 so: 'SOMALI',
152 sq: 'ALBANIAN',
153 sr: 'SERBIAN',
154 ss: 'SWATI',
155 st: 'SOUTHERN_SOTHO',
156 su: 'SUNDANESE',
157 sv: 'SWEDISH',
158 sw: 'SWAHILI',
159 ta: 'TAMIL',
160 te: 'TELUGU',
161 tg: 'TAJIK',
162 th: 'THAI',
163 ti: 'TIGRINYA',
164 tk: 'TURKMEN',
165 tl: 'TAGALOG',
166 tn: 'TSWANA',
167 to: 'TONGA',
168 tr: 'TURKISH',
169 ts: 'TSONGA',
170 tt: 'TATAR',
171 tw: 'TWI',
172 ty: 'TAHITIAN',
173 ug: 'UYGHUR',
174 uk: 'UKRAINIAN',
175 ur: 'URDU',
176 uz: 'UZBEK',
177 ve: 'VENDA',
178 vi: 'VIETNAMESE',
179 vo: 'VOLAPUK',
180 wa: 'WALLOON',
181 wo: 'WOLOF',
182 xh: 'XHOSA',
183 yi: 'YIDDISH',
184 yo: 'YORUBA',
185 za: 'ZHUANG',
186 zh: 'CHINESE',
187 zu: 'ZULU',
188} satisfies { [k: string]: Language };
189
190export const Language = makeEnumLike([
191 'ABKHAZIAN',
192 'AFAR',
193 'AFRIKAANS',
194 'AKAN',
195 'ALBANIAN',
196 'AMHARIC',
197 'ARABIC',
198 'ARAGONESE',
199 'ARMENIAN',
200 'ASSAMESE',
201 'AVARIC',
202 'AVESTAN',
203 'AYMARA',
204 'AZERBAIJANI',
205 'AZERI',
206 'BAMBARA',
207 'BASHKIR',
208 'BASQUE',
209 'BELARUSIAN',
210 'BENGALI',
211 'BIHARI',
212 'BISLAMA',
213 'BOKMAL',
214 'BOSNIAN',
215 'BRETON',
216 'BULGARIAN',
217 'BURMESE',
218 'CATALAN',
219 'CEBUANO',
220 'CENTRAL_KHMER',
221 'CHAMORRO',
222 'CHECHEN',
223 'CHINESE',
224 'CHURCH_SLAVIC',
225 'CHUVASH',
226 'CORNISH',
227 'CORSICAN',
228 'CREE',
229 'CROATIAN',
230 'CZECH',
231 'DANISH',
232 'DHIVEHI',
233 'DUTCH',
234 'DZONGKHA',
235 'ENGLISH',
236 'ESPERANTO',
237 'ESTONIAN',
238 'EWE',
239 'FAROESE',
240 'FARSI',
241 'FIJIAN',
242 'FINNISH',
243 'FLEMISH',
244 'FRENCH',
245 'FULAH',
246 'GAELIC',
247 'GALICIAN',
248 'GANDA',
249 'GEORGIAN',
250 'GERMAN',
251 'GREEK',
252 'GUARANI',
253 'GUJARATI',
254 'HAITIAN',
255 'HAUSA',
256 'HAWAIIAN',
257 'HEBREW',
258 'HERERO',
259 'HINDI',
260 'HIRI_MOTU',
261 'HUNGARIAN',
262 'ICELANDIC',
263 'IDO',
264 'IGBO',
265 'INDONESIAN',
266 'INTERLINGUA',
267 'INUKTITUT',
268 'INUPIAQ',
269 'IRISH',
270 'ITALIAN',
271 'JAPANESE',
272 'JAVANESE',
273 'KALAALLISUT',
274 'KANNADA',
275 'KANURI',
276 'KASHMIRI',
277 'KAZAKH',
278 'KIKUYU',
279 'KINYARWANDA',
280 'KOMI',
281 'KONGO',
282 'KOREAN',
283 'KUANYAMA',
284 'KURDISH',
285 'KYRGYZ',
286 'LAO',
287 'LATIN',
288 'LATVIAN',
289 'LIMBURGAN',
290 'LINGALA',
291 'LITHUANIAN',
292 'LUBA_KATANGA',
293 'LUXEMBOURGISH',
294 'MACEDONIAN',
295 'MALAGASY',
296 'MALAY',
297 'MALAYALAM',
298 'MALTESE',
299 'MANX',
300 'MAORI',
301 'MARATHI',
302 'MARSHALLESE',
303 'MOLDOVIAN',
304 'MONGOLIAN',
305 'NAURU',
306 'NAVAJO',
307 'NDONGA',
308 'NEPALI',
309 'NORTH_NDEBELE',
310 'NORTHERN_SAMI',
311 'NORWEGIAN',
312 'NYANJA',
313 'OCCITAN',
314 'OJIBWA',
315 'ORIYA',
316 'OROMO',
317 'OSSETIAN',
318 'PALI',
319 'PASHTO',
320 'PERSIAN',
321 'PIDGIN',
322 'POLISH',
323 'PORTUGUESE',
324 'PUNJABI',
325 'QUECHUA',
326 'ROMANIAN',
327 'ROMANSH',
328 'RUNDI',
329 'RUSSIAN',
330 'SAMOAN',
331 'SANGO',
332 'SANSKRIT',
333 'SARDINIAN',
334 'SERBIAN',
335 'SHONA',
336 'SICHUAN_YI',
337 'SINDHI',
338 'SINHALESE',
339 'SLOVAK',
340 'SLOVENE',
341 'SOMALI',
342 'SOUTH_NDEBELE',
343 'SOUTHERN_SOTHO',
344 'SPANISH',
345 'SUNDANESE',
346 'SWAHILI',
347 'SWATI',
348 'SWEDISH',
349 'TAGALOG',
350 'TAHITIAN',
351 'TAJIK',
352 'TAMIL',
353 'TATAR',
354 'TELUGU',
355 'THAI',
356 'TIBETAN',
357 'TIGRINYA',
358 'TONGA',
359 'TSONGA',
360 'TSWANA',
361 'TURKISH',
362 'TURKMEN',
363 'TWI',
364 'UKRAINIAN',
365 'URDU',
366 'UYGHUR',
367 'UZBEK',
368 'VENDA',
369 'VIETNAMESE',
370 'VOLAPUK',
371 'WALLOON',
372 'WELSH',
373 'WESTERN_FRISIAN',
374 'WOLOF',
375 'XHOSA',
376 'YIDDISH',
377 'YORUBA',
378 'ZHUANG',
379 'ZULU',
380]);
381
382export function getLanguageFromCode(countryCode: string) {
383 if (countryCode in ISO_LANG_MAP) {
384 return ISO_LANG_MAP[countryCode as keyof typeof ISO_LANG_MAP];
385 }
386 return null;
387}
388
389export type Language = keyof typeof Language;