whatlang/scripts/
lang_mapping.rs

1use super::Script;
2use crate::Lang;
3
4const LATIN_LANGS: [Lang; 36] = [
5    Lang::Spa,
6    Lang::Eng,
7    Lang::Por,
8    Lang::Ind,
9    Lang::Fra,
10    Lang::Deu,
11    Lang::Jav,
12    Lang::Vie,
13    Lang::Ita,
14    Lang::Tur,
15    Lang::Pol,
16    Lang::Ron,
17    Lang::Hrv,
18    Lang::Nld,
19    Lang::Uzb,
20    Lang::Hun,
21    Lang::Aze,
22    Lang::Ces,
23    Lang::Zul,
24    Lang::Swe,
25    Lang::Aka,
26    Lang::Sna,
27    Lang::Afr,
28    Lang::Fin,
29    Lang::Slk,
30    Lang::Tgl,
31    Lang::Tuk,
32    Lang::Dan,
33    Lang::Nob,
34    Lang::Cat,
35    Lang::Lit,
36    Lang::Slv,
37    Lang::Epo,
38    Lang::Lav,
39    Lang::Est,
40    Lang::Lat,
41];
42const CYRILLIC_LANGS: [Lang; 6] = [
43    Lang::Rus,
44    Lang::Ukr,
45    Lang::Srp,
46    Lang::Bel,
47    Lang::Bul,
48    Lang::Mkd,
49];
50const ARABIC_LANGS: [Lang; 3] = [Lang::Ara, Lang::Urd, Lang::Pes];
51const DEVANAGARI_LANGS: [Lang; 3] = [Lang::Hin, Lang::Mar, Lang::Nep];
52const HEBREW_LANGS: [Lang; 2] = [Lang::Heb, Lang::Yid];
53
54pub fn script_langs(script: Script) -> &'static [Lang] {
55    match script {
56        Script::Latin => &LATIN_LANGS,
57        Script::Cyrillic => &CYRILLIC_LANGS,
58        Script::Devanagari => &DEVANAGARI_LANGS,
59        Script::Hebrew => &HEBREW_LANGS,
60        Script::Arabic => &ARABIC_LANGS,
61        Script::Mandarin => &[Lang::Cmn],
62        Script::Bengali => &[Lang::Ben],
63        Script::Hangul => &[Lang::Kor],
64        Script::Georgian => &[Lang::Kat],
65        Script::Greek => &[Lang::Ell],
66        Script::Kannada => &[Lang::Kan],
67        Script::Tamil => &[Lang::Tam],
68        Script::Thai => &[Lang::Tha],
69        Script::Gujarati => &[Lang::Guj],
70        Script::Gurmukhi => &[Lang::Pan],
71        Script::Telugu => &[Lang::Tel],
72        Script::Malayalam => &[Lang::Mal],
73        Script::Oriya => &[Lang::Ori],
74        Script::Myanmar => &[Lang::Mya],
75        Script::Sinhala => &[Lang::Sin],
76        Script::Khmer => &[Lang::Khm],
77        Script::Ethiopic => &[Lang::Amh],
78        Script::Armenian => &[Lang::Hye],
79        Script::Katakana | Script::Hiragana => &[Lang::Jpn],
80    }
81}
82
83#[cfg(test)]
84mod tests {
85    use super::*;
86
87    #[test]
88    fn test_script_langs() {
89        assert_eq!(script_langs(Script::Hebrew), &[Lang::Heb, Lang::Yid])
90    }
91}