deepl_api_client/
lang.rs

1use serde::{Deserialize, Serialize};
2use strum::EnumString;
3
4#[derive(EnumString, Serialize, Deserialize, Debug, Clone, Copy, PartialEq)]
5pub enum Lang {
6    #[strum(serialize = "auto")]
7    #[serde(rename = "auto")]
8    Auto, // auto detect
9
10    DE,
11    EN,
12    ES,
13    FR,
14    IT,
15    JA,
16    NL,
17    PL,
18    PT,
19    RU,
20    ZH,
21    BG,
22    CS,
23    DA,
24    EL,
25    ET,
26    FI,
27    HU,
28    LT,
29    LV,
30    RO,
31    SK,
32    SL,
33    SV,
34}
35
36impl Default for Lang {
37    fn default() -> Self {
38        Lang::Auto
39    }
40}
41
42impl Lang {
43    pub fn description(&self) -> &'static str {
44        let lang = *self;
45        match lang {
46            Lang::Auto => "自动检测",
47            Lang::DE => "德语",
48            Lang::EN => "英语",
49            Lang::ES => "西班牙语",
50            Lang::FR => "法语",
51            Lang::IT => "意大利语",
52            Lang::JA => "日语",
53            Lang::NL => "荷兰语",
54            Lang::PL => "波兰语",
55            Lang::PT => "葡萄牙语",
56            Lang::RU => "俄语",
57            Lang::ZH => "中文",
58            Lang::BG => "保加利亚语",
59            Lang::CS => "捷克语",
60            Lang::DA => "丹麦语",
61            Lang::EL => "希腊语",
62            Lang::ET => "爱沙尼亚语",
63            Lang::FI => "芬兰语",
64            Lang::HU => "匈牙利语",
65            Lang::LT => "立陶宛语",
66            Lang::LV => "拉脱维亚语",
67            Lang::RO => "罗马尼亚语",
68            Lang::SK => "斯洛伐克语",
69            Lang::SL => "斯洛文尼亚语",
70            Lang::SV => "瑞典语",
71        }
72    }
73
74    pub fn lang_list_with_auto() -> Vec<Lang> {
75        vec![
76            Lang::Auto,
77            Lang::EN,
78            Lang::ZH,
79            Lang::ES,
80            Lang::FR,
81            Lang::IT,
82            Lang::JA,
83            Lang::NL,
84            Lang::PL,
85            Lang::PT,
86            Lang::RU,
87            Lang::ZH,
88            Lang::BG,
89            Lang::CS,
90            Lang::DA,
91            Lang::EL,
92            Lang::ET,
93            Lang::FI,
94            Lang::HU,
95            Lang::LT,
96            Lang::LV,
97            Lang::RO,
98            Lang::SK,
99            Lang::SL,
100            Lang::SV,
101        ]
102    }
103
104    pub fn lang_list() -> Vec<Lang> {
105        vec![
106            Lang::ZH,
107            Lang::EN,
108            Lang::ES,
109            Lang::FR,
110            Lang::IT,
111            Lang::JA,
112            Lang::NL,
113            Lang::PL,
114            Lang::PT,
115            Lang::RU,
116            Lang::ZH,
117            Lang::BG,
118            Lang::CS,
119            Lang::DA,
120            Lang::EL,
121            Lang::ET,
122            Lang::FI,
123            Lang::HU,
124            Lang::LT,
125            Lang::LV,
126            Lang::RO,
127            Lang::SK,
128            Lang::SL,
129            Lang::SV,
130        ]
131    }
132}