-
Notifications
You must be signed in to change notification settings - Fork 7
/
Language.go
46 lines (39 loc) · 1.19 KB
/
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
package resource
import "fmt"
// Language defines the human language of a resource.
type Language byte
const (
// LangAny identifies language agnostic resources.
LangAny Language = 0xFF
// LangDefault identifies the default language, typically English - unless modded.
LangDefault Language = 0
// LangFrench identifies the French language.
LangFrench Language = 1
// LangGerman identifies the German language.
LangGerman Language = 2
// LanguageCount specifies how many languages are supported.
LanguageCount = 3
)
func (lang Language) String() string {
switch lang {
case LangAny:
return "Any"
case LangDefault:
return "Default"
case LangFrench:
return "French"
case LangGerman:
return "German"
default:
return fmt.Sprintf("Unknown%02X", int(lang))
}
}
// Languages returns a slice of all human languages. Does not include "Any" selector.
func Languages() []Language {
return []Language{LangDefault, LangFrench, LangGerman}
}
// Includes returns true if the language includes the provided one.
// This is not symmetrical. While "Any" includes "German", "German" does not include "Any".
func (lang Language) Includes(other Language) bool {
return (lang == LangAny) || (lang == other)
}