-
Notifications
You must be signed in to change notification settings - Fork 0
/
lang.go
65 lines (55 loc) · 1.38 KB
/
lang.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
//go:generate go-bindata -o bin_data.go --pkg lang --nometadata --prefix ../../../../lang ../../../../lang/...
package lang
import (
"encoding/json"
"meguca/config"
"path/filepath"
)
var (
// Currently used language pack
pack Pack
// Precompiled table of relations between browser Accept-Language HTTP
// header values and internal POSIX language codes
languageCodes map[string]string
)
// Pack contains a localization language pack for a single language
type Pack struct {
ID string
Tabs, SortModes []string
Forms map[string][2]string
UI, Options map[string]string
Templates map[string][]string
Common struct {
Posts map[string]string `json:"posts"`
Plurals map[string][2]string `json:"plurals"`
Time map[string][]string `json:"time"`
UI map[string]string `json:"ui"`
Sync []string `json:"sync"`
}
}
// Loads and parses the selected JSON language pack
func Load() (err error) {
lang := config.Get().DefaultLang
buf, err := Asset(filepath.Join(lang, "server.json"))
if err != nil {
return
}
err = json.Unmarshal(buf, &pack)
if err != nil {
return
}
buf, err = Asset(filepath.Join(lang, "common.json"))
if err != nil {
return
}
err = json.Unmarshal(buf, &pack.Common)
if err != nil {
return
}
pack.ID = lang
return
}
// Returns the loaded language pack
func Get() Pack {
return pack
}