1#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
5pub enum Language {
6 #[default]
8 En,
9 Fr,
11 De,
13 Es,
15 It,
17 Nl,
19 Pt,
21 Ar,
23 Sw,
25}
26
27impl Language {
28 pub fn language_code(&self) -> &'static str {
30 match self {
31 Self::En => "en",
32 Self::Fr => "fr",
33 Self::De => "de",
34 Self::Es => "es",
35 Self::It => "it",
36 Self::Nl => "nl",
37 Self::Pt => "pt",
38 Self::Ar => "ar",
39 Self::Sw => "sw",
40 }
41 }
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47
48 #[test]
49 fn language_code_mapping() {
50 assert_eq!(Language::En.language_code(), "en");
51 assert_eq!(Language::Fr.language_code(), "fr");
52 assert_eq!(Language::De.language_code(), "de");
53 assert_eq!(Language::Es.language_code(), "es");
54 assert_eq!(Language::It.language_code(), "it");
55 assert_eq!(Language::Nl.language_code(), "nl");
56 assert_eq!(Language::Pt.language_code(), "pt");
57 assert_eq!(Language::Ar.language_code(), "ar");
58 assert_eq!(Language::Sw.language_code(), "sw");
59 }
60
61 #[test]
62 fn language_default_is_en() {
63 assert_eq!(Language::default(), Language::En);
64 }
65}