-
-
Notifications
You must be signed in to change notification settings - Fork 771
/
Copy pathlanguage.py
137 lines (122 loc) · 4.31 KB
/
language.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
class _LanguageInfo:
def __init__(self, code: str, zhsname: str, engname: str, nativename: str):
self.code = code
self.zhsname = zhsname
self.engname = engname
self.nativename = nativename
self.space = "" if (code in ("zh", "ja", "cht")) else " "
def __eq__(self, value):
if isinstance(value, _LanguageInfo):
value = value.code
return value == self.code
def __str__(self):
return self.code
def __hash__(self):
return self.code.__hash__()
def upper(self):
return self.code.upper()
def lower(self):
return self.code.lower()
def encode(self, *argc, **kwargv):
return self.code.encode(*argc, **kwargv)
class Languages(_LanguageInfo):
Auto = _LanguageInfo("auto", "", "", "")
Chinese = _LanguageInfo("zh", "简体中文", "Simplified Chinese", "简体中文")
Japanese = _LanguageInfo("ja", "日语", "Japanese", "日本語")
TradChinese = _LanguageInfo("cht", "繁体中文", "Traditional Chinese", "繁體中文")
English = _LanguageInfo("en", "英语", "English", "English")
Russian = _LanguageInfo("ru", "俄语", "Russian", "Русский язык")
Spanish = _LanguageInfo("es", "西班牙语", "Spanish", "Español")
Korean = _LanguageInfo("ko", "韩语", "Korean", "한국어")
French = _LanguageInfo("fr", "法语", "French", "Français")
Vietnamese = _LanguageInfo("vi", "越南语", "Vietnamese", "Tiếng Việt")
Turkish = _LanguageInfo("tr", "土耳其语", "Turkish", "Türkçe")
Polish = _LanguageInfo("pl", "波兰语", "Polish", "Polski")
Ukrainian = _LanguageInfo("uk", "乌克兰语", "Ukrainian", "Українська Мова")
Italian = _LanguageInfo("it", "意大利语", "Italian", "Italiano")
Arabic = _LanguageInfo("ar", "阿拉伯语", "Arabic", "اللغة العربية")
Thai = _LanguageInfo("th", "泰语", "Thai", "ภาษาไทย")
Tibetan = _LanguageInfo("bo", "藏语", "Tibetan", "བོད་པ་")
German = _LanguageInfo("de", "德语", "German", "Deutsch")
Swedish = _LanguageInfo("sv", "瑞典语", "Swedish", "Svenska")
Dutch = _LanguageInfo("nl", "荷兰语", "Dutch", "Nederlands")
Czech = _LanguageInfo("cs", "捷克语", "Czech", "Čeština")
Portuguese = _LanguageInfo("pt", "葡萄牙语", "Portuguese", "Português")
Hungarian = _LanguageInfo("hu", "匈牙利语", "Hungarian", "Magyar")
Latin = _LanguageInfo("la", "拉丁语", "Latin language", "Lingua Latīna")
@staticmethod
def fromcode(code):
for v in vars(Languages).values():
if isinstance(v, _LanguageInfo):
if v.code == code:
return v
raise Exception("unknown")
@staticmethod
def create_langmap(langmap=None):
_ = dict(
zip(
TransLanguages,
[_.code for _ in TransLanguages],
)
)
_.update({Languages.TradChinese: "zh", Languages.Auto: "auto"})
if langmap:
_.update(langmap)
return _
@staticmethod
def createenglishlangmap():
mp = dict(
zip(
TransLanguages,
[_.engname for _ in TransLanguages],
)
)
mp.update({Languages.Auto: ""})
return mp
UILanguages = [
Languages.Chinese,
Languages.TradChinese,
Languages.English,
Languages.Russian,
Languages.Japanese,
Languages.Spanish,
Languages.Korean,
Languages.French,
Languages.Vietnamese,
Languages.Turkish,
Languages.Polish,
Languages.Ukrainian,
Languages.Italian,
Languages.Arabic,
Languages.Thai,
Languages.German,
Languages.Swedish,
Languages.Dutch,
Languages.Czech,
Languages.Portuguese,
]
TransLanguages = [
Languages.Chinese,
Languages.Japanese,
Languages.TradChinese,
Languages.English,
Languages.Russian,
Languages.Spanish,
Languages.Korean,
Languages.French,
Languages.Vietnamese,
Languages.Turkish,
Languages.Polish,
Languages.Ukrainian,
Languages.Italian,
Languages.Arabic,
Languages.Thai,
Languages.Tibetan,
Languages.German,
Languages.Swedish,
Languages.Dutch,
Languages.Czech,
Languages.Portuguese,
Languages.Hungarian,
Languages.Latin,
]