globetrotter_model/
language.rs

1use serde::{Deserialize, Serialize};
2
3// spellcheck:ignore-block
4/// Language codes per ISO 639-1 Alpha-2
5#[derive(
6    Clone,
7    Copy,
8    Debug,
9    PartialEq,
10    Eq,
11    PartialOrd,
12    Ord,
13    Hash,
14    Serialize,
15    Deserialize,
16    strum::Display,
17    strum::EnumString,
18    strum::VariantNames,
19    strum::IntoStaticStr,
20    strum::EnumCount,
21    strum::EnumIter,
22)]
23pub enum Language {
24    #[serde(rename = "aa")]
25    #[strum(to_string = "aa", serialize = "aa")]
26    Aa,
27    #[serde(rename = "ab")]
28    #[strum(to_string = "ab", serialize = "ab")]
29    Ab,
30    #[serde(rename = "af")]
31    #[strum(to_string = "af", serialize = "af")]
32    Af,
33    #[serde(rename = "ak")]
34    #[strum(to_string = "ak", serialize = "ak")]
35    Ak,
36    #[serde(rename = "am")]
37    #[strum(to_string = "am", serialize = "am")]
38    Am,
39    #[serde(rename = "an")]
40    #[strum(to_string = "an", serialize = "an")]
41    An,
42    #[serde(rename = "ar")]
43    #[strum(to_string = "ar", serialize = "ar")]
44    Ar,
45    #[serde(rename = "as")]
46    #[strum(to_string = "as", serialize = "as")]
47    As,
48    #[serde(rename = "av")]
49    #[strum(to_string = "av", serialize = "av")]
50    Av,
51    #[serde(rename = "ay")]
52    #[strum(to_string = "ay", serialize = "ay")]
53    Ay,
54    #[serde(rename = "az")]
55    #[strum(to_string = "az", serialize = "az")]
56    Az,
57    #[serde(rename = "ba")]
58    #[strum(to_string = "ba", serialize = "ba")]
59    Ba,
60    #[serde(rename = "be")]
61    #[strum(to_string = "be", serialize = "be")]
62    Be,
63    #[serde(rename = "bg")]
64    #[strum(to_string = "bg", serialize = "bg")]
65    Bg,
66    #[serde(rename = "bh")]
67    #[strum(to_string = "bh", serialize = "bh")]
68    Bh,
69    #[serde(rename = "bi")]
70    #[strum(to_string = "bi", serialize = "bi")]
71    Bi,
72    #[serde(rename = "bm")]
73    #[strum(to_string = "bm", serialize = "bm")]
74    Bm,
75    #[serde(rename = "bn")]
76    #[strum(to_string = "bn", serialize = "bn")]
77    Bn,
78    #[serde(rename = "bo")]
79    #[strum(to_string = "bo", serialize = "bo")]
80    Bo,
81    #[serde(rename = "br")]
82    #[strum(to_string = "br", serialize = "br")]
83    Br,
84    #[serde(rename = "bs")]
85    #[strum(to_string = "bs", serialize = "bs")]
86    Bs,
87    #[serde(rename = "ca")]
88    #[strum(to_string = "ca", serialize = "ca")]
89    Ca,
90    #[serde(rename = "ce")]
91    #[strum(to_string = "ce", serialize = "ce")]
92    Ce,
93    #[serde(rename = "ch")]
94    #[strum(to_string = "ch", serialize = "ch")]
95    Ch,
96    #[serde(rename = "co")]
97    #[strum(to_string = "co", serialize = "co")]
98    Co,
99    #[serde(rename = "cr")]
100    #[strum(to_string = "cr", serialize = "cr")]
101    Cr,
102    #[serde(rename = "cs")]
103    #[strum(to_string = "cs", serialize = "cs")]
104    Cs,
105    #[serde(rename = "cu")]
106    #[strum(to_string = "cu", serialize = "cu")]
107    Cu,
108    #[serde(rename = "cv")]
109    #[strum(to_string = "cv", serialize = "cv")]
110    Cv,
111    #[serde(rename = "cy")]
112    #[strum(to_string = "cy", serialize = "cy")]
113    Cy,
114    #[serde(rename = "da")]
115    #[strum(to_string = "da", serialize = "da")]
116    Da,
117    #[serde(rename = "de")]
118    #[strum(to_string = "de", serialize = "de")]
119    De,
120    #[serde(rename = "dv")]
121    #[strum(to_string = "dv", serialize = "dv")]
122    Dv,
123    #[serde(rename = "dz")]
124    #[strum(to_string = "dz", serialize = "dz")]
125    Dz,
126    #[serde(rename = "ee")]
127    #[strum(to_string = "ee", serialize = "ee")]
128    Ee,
129    #[serde(rename = "el")]
130    #[strum(to_string = "el", serialize = "el")]
131    El,
132    #[serde(rename = "en")]
133    #[strum(to_string = "en", serialize = "en")]
134    En,
135    #[serde(rename = "eo")]
136    #[strum(to_string = "eo", serialize = "eo")]
137    Eo,
138    #[serde(rename = "es")]
139    #[strum(to_string = "es", serialize = "es")]
140    Es,
141    #[serde(rename = "et")]
142    #[strum(to_string = "et", serialize = "et")]
143    Et,
144    #[serde(rename = "eu")]
145    #[strum(to_string = "eu", serialize = "eu")]
146    Eu,
147    #[serde(rename = "fa")]
148    #[strum(to_string = "fa", serialize = "fa")]
149    Fa,
150    #[serde(rename = "ff")]
151    #[strum(to_string = "ff", serialize = "ff")]
152    Ff,
153    #[serde(rename = "fi")]
154    #[strum(to_string = "fi", serialize = "fi")]
155    Fi,
156    #[serde(rename = "fj")]
157    #[strum(to_string = "fj", serialize = "fj")]
158    Fj,
159    #[serde(rename = "fo")]
160    #[strum(to_string = "fo", serialize = "fo")]
161    Fo,
162    #[serde(rename = "fr")]
163    #[strum(to_string = "fr", serialize = "fr")]
164    Fr,
165    #[serde(rename = "fy")]
166    #[strum(to_string = "fy", serialize = "fy")]
167    Fy,
168    #[serde(rename = "ga")]
169    #[strum(to_string = "ga", serialize = "ga")]
170    Ga,
171    #[serde(rename = "gd")]
172    #[strum(to_string = "gd", serialize = "gd")]
173    Gd,
174    #[serde(rename = "gl")]
175    #[strum(to_string = "gl", serialize = "gl")]
176    Gl,
177    #[serde(rename = "gn")]
178    #[strum(to_string = "gn", serialize = "gn")]
179    Gn,
180    #[serde(rename = "gu")]
181    #[strum(to_string = "gu", serialize = "gu")]
182    Gu,
183    #[serde(rename = "gv")]
184    #[strum(to_string = "gv", serialize = "gv")]
185    Gv,
186    #[serde(rename = "ha")]
187    #[strum(to_string = "ha", serialize = "ha")]
188    Ha,
189    #[serde(rename = "he")]
190    #[strum(to_string = "he", serialize = "he")]
191    He,
192    #[serde(rename = "hi")]
193    #[strum(to_string = "hi", serialize = "hi")]
194    Hi,
195    #[serde(rename = "ho")]
196    #[strum(to_string = "ho", serialize = "ho")]
197    Ho,
198    #[serde(rename = "hr")]
199    #[strum(to_string = "hr", serialize = "hr")]
200    Hr,
201    #[serde(rename = "ht")]
202    #[strum(to_string = "ht", serialize = "ht")]
203    Ht,
204    #[serde(rename = "hu")]
205    #[strum(to_string = "hu", serialize = "hu")]
206    Hu,
207    #[serde(rename = "hy")]
208    #[strum(to_string = "hy", serialize = "hy")]
209    Hy,
210    #[serde(rename = "hz")]
211    #[strum(to_string = "hz", serialize = "hz")]
212    Hz,
213    #[serde(rename = "ia")]
214    #[strum(to_string = "ia", serialize = "ia")]
215    Ia,
216    #[serde(rename = "id")]
217    #[strum(to_string = "id", serialize = "id")]
218    Id,
219    #[serde(rename = "ie")]
220    #[strum(to_string = "ie", serialize = "ie")]
221    Ie,
222    #[serde(rename = "ig")]
223    #[strum(to_string = "ig", serialize = "ig")]
224    Ig,
225    #[serde(rename = "ii")]
226    #[strum(to_string = "ii", serialize = "ii")]
227    Ii,
228    #[serde(rename = "ik")]
229    #[strum(to_string = "ik", serialize = "ik")]
230    Ik,
231    #[serde(rename = "io")]
232    #[strum(to_string = "io", serialize = "io")]
233    Io,
234    #[serde(rename = "is")]
235    #[strum(to_string = "is", serialize = "is")]
236    Is,
237    #[serde(rename = "it")]
238    #[strum(to_string = "it", serialize = "it")]
239    It,
240    #[serde(rename = "iu")]
241    #[strum(to_string = "iu", serialize = "iu")]
242    Iu,
243    #[serde(rename = "ja")]
244    #[strum(to_string = "ja", serialize = "ja")]
245    Ja,
246    #[serde(rename = "jv")]
247    #[strum(to_string = "jv", serialize = "jv")]
248    Jv,
249    #[serde(rename = "ka")]
250    #[strum(to_string = "ka", serialize = "ka")]
251    Ka,
252    #[serde(rename = "kg")]
253    #[strum(to_string = "kg", serialize = "kg")]
254    Kg,
255    #[serde(rename = "ki")]
256    #[strum(to_string = "ki", serialize = "ki")]
257    Ki,
258    #[serde(rename = "kj")]
259    #[strum(to_string = "kj", serialize = "kj")]
260    Kj,
261    #[serde(rename = "kk")]
262    #[strum(to_string = "kk", serialize = "kk")]
263    Kk,
264    #[serde(rename = "kl")]
265    #[strum(to_string = "kl", serialize = "kl")]
266    Kl,
267    #[serde(rename = "km")]
268    #[strum(to_string = "km", serialize = "km")]
269    Km,
270    #[serde(rename = "kn")]
271    #[strum(to_string = "kn", serialize = "kn")]
272    Kn,
273    #[serde(rename = "ko")]
274    #[strum(to_string = "ko", serialize = "ko")]
275    Ko,
276    #[serde(rename = "kr")]
277    #[strum(to_string = "kr", serialize = "kr")]
278    Kr,
279    #[serde(rename = "ks")]
280    #[strum(to_string = "ks", serialize = "ks")]
281    Ks,
282    #[serde(rename = "ku")]
283    #[strum(to_string = "ku", serialize = "ku")]
284    Ku,
285    #[serde(rename = "kv")]
286    #[strum(to_string = "kv", serialize = "kv")]
287    Kv,
288    #[serde(rename = "kw")]
289    #[strum(to_string = "kw", serialize = "kw")]
290    Kw,
291    #[serde(rename = "ky")]
292    #[strum(to_string = "ky", serialize = "ky")]
293    Ky,
294    #[serde(rename = "la")]
295    #[strum(to_string = "la", serialize = "la")]
296    La,
297    #[serde(rename = "lb")]
298    #[strum(to_string = "lb", serialize = "lb")]
299    Lb,
300    #[serde(rename = "lg")]
301    #[strum(to_string = "lg", serialize = "lg")]
302    Lg,
303    #[serde(rename = "li")]
304    #[strum(to_string = "li", serialize = "li")]
305    Li,
306    #[serde(rename = "ln")]
307    #[strum(to_string = "ln", serialize = "ln")]
308    Ln,
309    #[serde(rename = "lo")]
310    #[strum(to_string = "lo", serialize = "lo")]
311    Lo,
312    #[serde(rename = "lt")]
313    #[strum(to_string = "lt", serialize = "lt")]
314    Lt,
315    #[serde(rename = "lu")]
316    #[strum(to_string = "lu", serialize = "lu")]
317    Lu,
318    #[serde(rename = "lv")]
319    #[strum(to_string = "lv", serialize = "lv")]
320    Lv,
321    #[serde(rename = "mg")]
322    #[strum(to_string = "mg", serialize = "mg")]
323    Mg,
324    #[serde(rename = "mh")]
325    #[strum(to_string = "mh", serialize = "mh")]
326    Mh,
327    #[serde(rename = "mi")]
328    #[strum(to_string = "mi", serialize = "mi")]
329    Mi,
330    #[serde(rename = "mk")]
331    #[strum(to_string = "mk", serialize = "mk")]
332    Mk,
333    #[serde(rename = "ml")]
334    #[strum(to_string = "ml", serialize = "ml")]
335    Ml,
336    #[serde(rename = "mn")]
337    #[strum(to_string = "mn", serialize = "mn")]
338    Mn,
339    #[serde(rename = "mo")]
340    #[strum(to_string = "mo", serialize = "mo")]
341    Mo,
342    #[serde(rename = "mr")]
343    #[strum(to_string = "mr", serialize = "mr")]
344    Mr,
345    #[serde(rename = "ms")]
346    #[strum(to_string = "ms", serialize = "ms")]
347    Ms,
348    #[serde(rename = "mt")]
349    #[strum(to_string = "mt", serialize = "mt")]
350    Mt,
351    #[serde(rename = "my")]
352    #[strum(to_string = "my", serialize = "my")]
353    My,
354    #[serde(rename = "na")]
355    #[strum(to_string = "na", serialize = "na")]
356    Na,
357    #[serde(rename = "nb")]
358    #[strum(to_string = "nb", serialize = "nb")]
359    Nb,
360    #[serde(rename = "nd")]
361    #[strum(to_string = "nd", serialize = "nd")]
362    Nd,
363    #[serde(rename = "ne")]
364    #[strum(to_string = "ne", serialize = "ne")]
365    Ne,
366    #[serde(rename = "ng")]
367    #[strum(to_string = "ng", serialize = "ng")]
368    Ng,
369    #[serde(rename = "nl")]
370    #[strum(to_string = "nl", serialize = "nl")]
371    Nl,
372    #[serde(rename = "nn")]
373    #[strum(to_string = "nn", serialize = "nn")]
374    Nn,
375    #[serde(rename = "no")]
376    #[strum(to_string = "no", serialize = "no")]
377    No,
378    #[serde(rename = "nr")]
379    #[strum(to_string = "nr", serialize = "nr")]
380    Nr,
381    #[serde(rename = "nv")]
382    #[strum(to_string = "nv", serialize = "nv")]
383    Nv,
384    #[serde(rename = "ny")]
385    #[strum(to_string = "ny", serialize = "ny")]
386    Ny,
387    #[serde(rename = "oc")]
388    #[strum(to_string = "oc", serialize = "oc")]
389    Oc,
390    #[serde(rename = "oj")]
391    #[strum(to_string = "oj", serialize = "oj")]
392    Oj,
393    #[serde(rename = "om")]
394    #[strum(to_string = "om", serialize = "om")]
395    Om,
396    #[serde(rename = "or")]
397    #[strum(to_string = "or", serialize = "or")]
398    Or,
399    #[serde(rename = "os")]
400    #[strum(to_string = "os", serialize = "os")]
401    Os,
402    #[serde(rename = "pa")]
403    #[strum(to_string = "pa", serialize = "pa")]
404    Pa,
405    #[serde(rename = "pi")]
406    #[strum(to_string = "pi", serialize = "pi")]
407    Pi,
408    #[serde(rename = "pl")]
409    #[strum(to_string = "pl", serialize = "pl")]
410    Pl,
411    #[serde(rename = "ps")]
412    #[strum(to_string = "ps", serialize = "ps")]
413    Ps,
414    #[serde(rename = "pt")]
415    #[strum(to_string = "pt", serialize = "pt")]
416    Pt,
417    #[serde(rename = "qu")]
418    #[strum(to_string = "qu", serialize = "qu")]
419    Qu,
420    #[serde(rename = "rm")]
421    #[strum(to_string = "rm", serialize = "rm")]
422    Rm,
423    #[serde(rename = "rn")]
424    #[strum(to_string = "rn", serialize = "rn")]
425    Rn,
426    #[serde(rename = "ro")]
427    #[strum(to_string = "ro", serialize = "ro")]
428    Ro,
429    #[serde(rename = "ru")]
430    #[strum(to_string = "ru", serialize = "ru")]
431    Ru,
432    #[serde(rename = "rw")]
433    #[strum(to_string = "rw", serialize = "rw")]
434    Rw,
435    #[serde(rename = "sa")]
436    #[strum(to_string = "sa", serialize = "sa")]
437    Sa,
438    #[serde(rename = "sc")]
439    #[strum(to_string = "sc", serialize = "sc")]
440    Sc,
441    #[serde(rename = "sd")]
442    #[strum(to_string = "sd", serialize = "sd")]
443    Sd,
444    #[serde(rename = "se")]
445    #[strum(to_string = "se", serialize = "se")]
446    Se,
447    #[serde(rename = "sg")]
448    #[strum(to_string = "sg", serialize = "sg")]
449    Sg,
450    #[serde(rename = "sh")]
451    #[strum(to_string = "sh", serialize = "sh")]
452    Sh,
453    #[serde(rename = "si")]
454    #[strum(to_string = "si", serialize = "si")]
455    Si,
456    #[serde(rename = "sk")]
457    #[strum(to_string = "sk", serialize = "sk")]
458    Sk,
459    #[serde(rename = "sl")]
460    #[strum(to_string = "sl", serialize = "sl")]
461    Sl,
462    #[serde(rename = "sm")]
463    #[strum(to_string = "sm", serialize = "sm")]
464    Sm,
465    #[serde(rename = "sn")]
466    #[strum(to_string = "sn", serialize = "sn")]
467    Sn,
468    #[serde(rename = "so")]
469    #[strum(to_string = "so", serialize = "so")]
470    So,
471    #[serde(rename = "sq")]
472    #[strum(to_string = "sq", serialize = "sq")]
473    Sq,
474    #[serde(rename = "sr")]
475    #[strum(to_string = "sr", serialize = "sr")]
476    Sr,
477    #[serde(rename = "ss")]
478    #[strum(to_string = "ss", serialize = "ss")]
479    Ss,
480    #[serde(rename = "st")]
481    #[strum(to_string = "st", serialize = "st")]
482    St,
483    #[serde(rename = "su")]
484    #[strum(to_string = "su", serialize = "su")]
485    Su,
486    #[serde(rename = "sv")]
487    #[strum(to_string = "sv", serialize = "sv")]
488    Sv,
489    #[serde(rename = "sw")]
490    #[strum(to_string = "sw", serialize = "sw")]
491    Sw,
492    #[serde(rename = "ta")]
493    #[strum(to_string = "ta", serialize = "ta")]
494    Ta,
495    #[serde(rename = "te")]
496    #[strum(to_string = "te", serialize = "te")]
497    Te,
498    #[serde(rename = "tg")]
499    #[strum(to_string = "tg", serialize = "tg")]
500    Tg,
501    #[serde(rename = "th")]
502    #[strum(to_string = "th", serialize = "th")]
503    Th,
504    #[serde(rename = "ti")]
505    #[strum(to_string = "ti", serialize = "ti")]
506    Ti,
507    #[serde(rename = "tk")]
508    #[strum(to_string = "tk", serialize = "tk")]
509    Tk,
510    #[serde(rename = "tl")]
511    #[strum(to_string = "tl", serialize = "tl")]
512    Tl,
513    #[serde(rename = "tn")]
514    #[strum(to_string = "tn", serialize = "tn")]
515    Tn,
516    #[serde(rename = "to")]
517    #[strum(to_string = "to", serialize = "to")]
518    To,
519    #[serde(rename = "tr")]
520    #[strum(to_string = "tr", serialize = "tr")]
521    Tr,
522    #[serde(rename = "ts")]
523    #[strum(to_string = "ts", serialize = "ts")]
524    Ts,
525    #[serde(rename = "tt")]
526    #[strum(to_string = "tt", serialize = "tt")]
527    Tt,
528    #[serde(rename = "tw")]
529    #[strum(to_string = "tw", serialize = "tw")]
530    Tw,
531    #[serde(rename = "ty")]
532    #[strum(to_string = "ty", serialize = "ty")]
533    Ty,
534    #[serde(rename = "ug")]
535    #[strum(to_string = "ug", serialize = "ug")]
536    Ug,
537    #[serde(rename = "uk")]
538    #[strum(to_string = "uk", serialize = "uk")]
539    Uk,
540    #[serde(rename = "ur")]
541    #[strum(to_string = "ur", serialize = "ur")]
542    Ur,
543    #[serde(rename = "uz")]
544    #[strum(to_string = "uz", serialize = "uz")]
545    Uz,
546    #[serde(rename = "ve")]
547    #[strum(to_string = "ve", serialize = "ve")]
548    Ve,
549    #[serde(rename = "vi")]
550    #[strum(to_string = "vi", serialize = "vi")]
551    Vi,
552    #[serde(rename = "vo")]
553    #[strum(to_string = "vo", serialize = "vo")]
554    Vo,
555    #[serde(rename = "wa")]
556    #[strum(to_string = "wa", serialize = "wa")]
557    Wa,
558    #[serde(rename = "wo")]
559    #[strum(to_string = "wo", serialize = "wo")]
560    Wo,
561    #[serde(rename = "xh")]
562    #[strum(to_string = "xh", serialize = "xh")]
563    Xh,
564    #[serde(rename = "yi")]
565    #[strum(to_string = "yi", serialize = "yi")]
566    Yi,
567    #[serde(rename = "yo")]
568    #[strum(to_string = "yo", serialize = "yo")]
569    Yo,
570    #[serde(rename = "za")]
571    #[strum(to_string = "za", serialize = "za")]
572    Za,
573    #[serde(rename = "zh")]
574    #[strum(to_string = "zh", serialize = "zh")]
575    Zh,
576    #[serde(rename = "zu")]
577    #[strum(to_string = "zu", serialize = "zu")]
578    Zu,
579}
580
581impl Language {
582    #[must_use]
583    pub fn iter() -> <Self as strum::IntoEnumIterator>::Iterator {
584        <Self as strum::IntoEnumIterator>::iter()
585    }
586
587    #[must_use]
588    pub fn code(&self) -> &'static str {
589        serde_variant::to_variant_name(self).unwrap_or_else(|_| self.into())
590    }
591
592    #[allow(clippy::too_many_lines)]
593    #[must_use]
594    pub fn name(&self) -> &'static str {
595        // spellcheck:ignore-block
596        match self {
597            Language::Aa => "Afar",
598            Language::Ab => "Abkhazian",
599            Language::Af => "Afrikaans",
600            Language::Ak => "Akan",
601            Language::Am => "Amharic",
602            Language::An => "Aragonese",
603            Language::Ar => "Arabic",
604            Language::As => "Assamese",
605            Language::Av => "Avar",
606            Language::Ay => "Aymara",
607            Language::Az => "Azerbaijani",
608            Language::Ba => "Bashkir",
609            Language::Be => "Belarusian",
610            Language::Bg => "Bulgarian",
611            Language::Bh => "Bihari",
612            Language::Bi => "Bislama",
613            Language::Bm => "Bambara",
614            Language::Bn => "Bengali",
615            Language::Bo => "Tibetan",
616            Language::Br => "Breton",
617            Language::Bs => "Bosnian",
618            Language::Ca => "Catalan",
619            Language::Ce => "Chechen",
620            Language::Ch => "Chamorro",
621            Language::Co => "Corsican",
622            Language::Cr => "Cree",
623            Language::Cs => "Czech",
624            Language::Cu => "Old Church Slavonic / Old Bulgarian",
625            Language::Cv => "Chuvash",
626            Language::Cy => "Welsh",
627            Language::Da => "Danish",
628            Language::De => "German",
629            Language::Dv => "Divehi",
630            Language::Dz => "Dzongkha",
631            Language::Ee => "Ewe",
632            Language::El => "Greek",
633            Language::En => "English",
634            Language::Eo => "Esperanto",
635            Language::Es => "Spanish",
636            Language::Et => "Estonian",
637            Language::Eu => "Basque",
638            Language::Fa => "Persian",
639            Language::Ff => "Peul",
640            Language::Fi => "Finnish",
641            Language::Fj => "Fijian",
642            Language::Fo => "Faroese",
643            Language::Fr => "French",
644            Language::Fy => "West Frisian",
645            Language::Ga => "Irish",
646            Language::Gd => "Scottish Gaelic",
647            Language::Gl => "Galician",
648            Language::Gn => "Guarani",
649            Language::Gu => "Gujarati",
650            Language::Gv => "Manx",
651            Language::Ha => "Hausa",
652            Language::He => "Hebrew",
653            Language::Hi => "Hindi",
654            Language::Ho => "Hiri Motu",
655            Language::Hr => "Croatian",
656            Language::Ht => "Haitian",
657            Language::Hu => "Hungarian",
658            Language::Hy => "Armenian",
659            Language::Hz => "Herero",
660            Language::Ia => "Interlingua",
661            Language::Id => "Indonesian",
662            Language::Ie => "Interlingue",
663            Language::Ig => "Igbo",
664            Language::Ii => "Sichuan Yi",
665            Language::Ik => "Inupiak",
666            Language::Io => "Ido",
667            Language::Is => "Icelandic",
668            Language::It => "Italian",
669            Language::Iu => "Inuktitut",
670            Language::Ja => "Japanese",
671            Language::Jv => "Javanese",
672            Language::Ka => "Georgian",
673            Language::Kg => "Kongo",
674            Language::Ki => "Kikuyu",
675            Language::Kj => "Kuanyama",
676            Language::Kk => "Kazakh",
677            Language::Kl => "Greenlandic",
678            Language::Km => "Cambodian",
679            Language::Kn => "Kannada",
680            Language::Ko => "Korean",
681            Language::Kr => "Kanuri",
682            Language::Ks => "Kashmiri",
683            Language::Ku => "Kurdish",
684            Language::Kv => "Komi",
685            Language::Kw => "Cornish",
686            Language::Ky => "Kirghiz",
687            Language::La => "Latin",
688            Language::Lb => "Luxembourgish",
689            Language::Lg => "Ganda",
690            Language::Li => "Limburgian",
691            Language::Ln => "Lingala",
692            Language::Lo => "Laotian",
693            Language::Lt => "Lithuanian",
694            Language::Lu => "Luba-Katanga",
695            Language::Lv => "Latvian",
696            Language::Mg => "Malagasy",
697            Language::Mh => "Marshallese",
698            Language::Mi => "Maori",
699            Language::Mk => "Macedonian",
700            Language::Ml => "Malayalam",
701            Language::Mn => "Mongolian",
702            Language::Mo => "Moldovan",
703            Language::Mr => "Marathi",
704            Language::Ms => "Malay",
705            Language::Mt => "Maltese",
706            Language::My => "Burmese",
707            Language::Na => "Nauruan",
708            Language::Nb => "Norwegian Bokmål",
709            Language::Nd => "North Ndebele",
710            Language::Ne => "Nepali",
711            Language::Ng => "Ndonga",
712            Language::Nl => "Dutch",
713            Language::Nn => "Norwegian Nynorsk",
714            Language::No => "Norwegian",
715            Language::Nr => "South Ndebele",
716            Language::Nv => "Navajo",
717            Language::Ny => "Chichewa",
718            Language::Oc => "Occitan",
719            Language::Oj => "Ojibwa",
720            Language::Om => "Oromo",
721            Language::Or => "Oriya",
722            Language::Os => "Ossetian / Ossetic",
723            Language::Pa => "Panjabi / Punjabi",
724            Language::Pi => "Pali",
725            Language::Pl => "Polish",
726            Language::Ps => "Pashto",
727            Language::Pt => "Portuguese",
728            Language::Qu => "Quechua",
729            Language::Rm => "Raeto Romance",
730            Language::Rn => "Kirundi",
731            Language::Ro => "Romanian",
732            Language::Ru => "Russian",
733            Language::Rw => "Rwandi",
734            Language::Sa => "Sanskrit",
735            Language::Sc => "Sardinian",
736            Language::Sd => "Sindhi",
737            Language::Se => "Northern Sami",
738            Language::Sg => "Sango",
739            Language::Sh => "Serbo-Croatian",
740            Language::Si => "Sinhalese",
741            Language::Sk => "Slovak",
742            Language::Sl => "Slovenian",
743            Language::Sm => "Samoan",
744            Language::Sn => "Shona",
745            Language::So => "Somalia",
746            Language::Sq => "Albanian",
747            Language::Sr => "Serbian",
748            Language::Ss => "Swati",
749            Language::St => "Southern Sotho",
750            Language::Su => "Sundanese",
751            Language::Sv => "Swedish",
752            Language::Sw => "Swahili",
753            Language::Ta => "Tamil",
754            Language::Te => "Telugu",
755            Language::Tg => "Tajik",
756            Language::Th => "Thai",
757            Language::Ti => "Tigrinya",
758            Language::Tk => "Turkmen",
759            Language::Tl => "Tagalog / Filipino",
760            Language::Tn => "Tswana",
761            Language::To => "Tonga",
762            Language::Tr => "Turkish",
763            Language::Ts => "Tsonga",
764            Language::Tt => "Tatar",
765            Language::Tw => "Twi",
766            Language::Ty => "Tahitian",
767            Language::Ug => "Uyghur",
768            Language::Uk => "Ukrainian",
769            Language::Ur => "Urdu",
770            Language::Uz => "Uzbek",
771            Language::Ve => "Venda",
772            Language::Vi => "Vietnamese",
773            Language::Vo => "Volapük",
774            Language::Wa => "Walloon",
775            Language::Wo => "Wolof",
776            Language::Xh => "Xhosa",
777            Language::Yi => "Yiddish",
778            Language::Yo => "Yoruba",
779            Language::Za => "Zhuang",
780            Language::Zh => "Chinese",
781            Language::Zu => "Zulu",
782        }
783    }
784}
785
786#[cfg(test)]
787mod tests {
788    use super::Language;
789    use color_eyre::eyre;
790    use similar_asserts::assert_eq as sim_assert_eq;
791
792    #[test]
793    fn test_code() -> eyre::Result<()> {
794        use std::str::FromStr;
795        crate::tests::init();
796
797        for language in Language::iter() {
798            sim_assert_eq!(have: format!("{language}"), want: language.code());
799            sim_assert_eq!(have: language.to_string(), want: language.code());
800            sim_assert_eq!(have: Language::try_from(language.code()).ok(), want: Some(language));
801            sim_assert_eq!(have: Language::from_str(language.code()).ok(), want: Some(language));
802            sim_assert_eq!(
803                have: serde_json::to_value(language)?.as_str(),
804                want: Some(language.code())
805            );
806        }
807
808        Ok(())
809    }
810}