-
Notifications
You must be signed in to change notification settings - Fork 0
/
enum_language.go
215 lines (199 loc) · 5.36 KB
/
enum_language.go
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
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
package client
import "fmt"
type languageSet struct {
Afrikanns Language
Amharic Language
Arabic Language
Armenian Language
Azerbaijan Language
Basque Language
Belarusian Language
Bengali Language
Bosnian Language
Catalan Language
Chechen Language
Cherokee Language
Chinese Language
Croatian Language
Czech Language
Danish Language
Dutch Language
English Language
Estonian Language
Fijian Language
Filipino Language
Finnish Language
French Language
Galician Language
Georgian Language
German Language
Greek Language
Gujarati Language
Haitian Language
Hebrew Language
Hindi Language
Hungarian Language
Icelandic Language
Indonesian Language
Irish Language
Italian Language
Japanese Language
Kannada Language
Kazakh Language
Korean Language
Latvian Language
Lithuanian Language
Macedonian Language
Malay1 Language
Malay2 Language
Malayalam Language
Maltese Language
Marathi Language
Nepali Language
Norwegian Language
Persian Language
Polish Language
Portuguese Language
Romanian Language
Russian Language
Samoan Language
Serbian Language
Slovak Language
Slovenian Language
Slavonic Language
Spanish Language
Swahili Language
Swedish Language
Tamil Language
Telugu Language
Thai Language
Turkish Language
Ukrainian Language
Urdu Language
Welsh Language
Vietnamese Language
}
// Languages represents the set of languages that can be used.
var Languages = languageSet{
Afrikanns: newLanguage("afr"),
Amharic: newLanguage("amh"),
Arabic: newLanguage("ara"),
Armenian: newLanguage("hye"),
Azerbaijan: newLanguage("aze"),
Basque: newLanguage("eus"),
Belarusian: newLanguage("bel"),
Bengali: newLanguage("ben"),
Bosnian: newLanguage("bos"),
Catalan: newLanguage("cat"),
Chechen: newLanguage("che"),
Cherokee: newLanguage("chr"),
Chinese: newLanguage("zho"),
Croatian: newLanguage("hrv"),
Czech: newLanguage("ces"),
Danish: newLanguage("dan"),
Dutch: newLanguage("nld"),
English: newLanguage("eng"),
Estonian: newLanguage("est"),
Fijian: newLanguage("fij"),
Filipino: newLanguage("fil"),
Finnish: newLanguage("fin"),
French: newLanguage("fra"),
Galician: newLanguage("glg"),
Georgian: newLanguage("kat"),
German: newLanguage("deu"),
Greek: newLanguage("ell"),
Gujarati: newLanguage("guj"),
Haitian: newLanguage("hat"),
Hebrew: newLanguage("heb"),
Hindi: newLanguage("hin"),
Hungarian: newLanguage("hun"),
Icelandic: newLanguage("isl"),
Indonesian: newLanguage("ind"),
Irish: newLanguage("gle"),
Italian: newLanguage("ita"),
Japanese: newLanguage("jpn"),
Kannada: newLanguage("kan"),
Kazakh: newLanguage("kaz"),
Korean: newLanguage("kor"),
Latvian: newLanguage("lav"),
Lithuanian: newLanguage("lit"),
Macedonian: newLanguage("mkd"),
Malay1: newLanguage("msa"),
Malay2: newLanguage("zlm"),
Malayalam: newLanguage("mal"),
Maltese: newLanguage("mlt"),
Marathi: newLanguage("mar"),
Nepali: newLanguage("nep"),
Norwegian: newLanguage("nor"),
Persian: newLanguage("fas"),
Polish: newLanguage("pol"),
Portuguese: newLanguage("por"),
Romanian: newLanguage("ron"),
Russian: newLanguage("rus"),
Samoan: newLanguage("smo"),
Serbian: newLanguage("srp"),
Slovak: newLanguage("slk"),
Slovenian: newLanguage("slv"),
Slavonic: newLanguage("chu"),
Spanish: newLanguage("spa"),
Swahili: newLanguage("swh"),
Swedish: newLanguage("swe"),
Tamil: newLanguage("tam"),
Telugu: newLanguage("tel"),
Thai: newLanguage("tha"),
Turkish: newLanguage("tur"),
Ukrainian: newLanguage("ukr"),
Urdu: newLanguage("urd"),
Welsh: newLanguage("cym"),
Vietnamese: newLanguage("vie"),
}
// Parse parses the string value and returns a language if one exists.
func (languageSet) Parse(value string) (Language, error) {
lang, exists := languages[value]
if !exists {
return Language{}, fmt.Errorf("invalid language %q", value)
}
return lang, nil
}
// MustParse parses the string value and returns a language if one
// exists. If an error occurs the function panics.
func (languageSet) MustParse(value string) Language {
lang, err := Languages.Parse(value)
if err != nil {
panic(err)
}
return lang
}
// =============================================================================
// Set of known languages.
var languages = make(map[string]Language)
// Language represents a language in the system.
type Language struct {
value string
}
func newLanguage(code string) Language {
l := Language{code}
languages[code] = l
return l
}
// String returns the ISO-639 code of the language.
func (l Language) String() string {
return l.value
}
// UnmarshalText implement the unmarshal interface for JSON conversions.
func (l *Language) UnmarshalText(data []byte) error {
lang, err := Languages.Parse(string(data))
if err != nil {
return err
}
l.value = lang.value
return nil
}
// MarshalText implement the marshal interface for JSON conversions.
func (l Language) MarshalText() ([]byte, error) {
return []byte(l.value), nil
}
// Equal provides support for the go-cmp package and testing.
func (l Language) Equal(l2 Language) bool {
return l.value == l2.value
}