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, 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}