baseid_core/
language.rs

1//! Multilingual language support for international identity systems.
2
3/// Supported languages for multilingual output.
4#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, serde::Serialize, serde::Deserialize)]
5pub enum Language {
6    /// English
7    #[default]
8    En,
9    /// French / Français
10    Fr,
11    /// German / Deutsch
12    De,
13    /// Spanish / Español
14    Es,
15    /// Italian / Italiano
16    It,
17    /// Dutch / Nederlands
18    Nl,
19    /// Portuguese / Português
20    Pt,
21    /// Arabic / العربية
22    Ar,
23    /// Swahili / Kiswahili
24    Sw,
25}
26
27impl Language {
28    /// Return the ISO 639-1 two-letter language code.
29    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}