-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlocale.go
61 lines (54 loc) · 1.09 KB
/
locale.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
package errcode
import (
"fmt"
"reflect"
"strconv"
)
func TryLoadErrCodeConfig(lan, filename string) error {
l, err := from(lan, filename)
if err != nil {
return err
}
if !store.addLocale(l) {
return langAlreadyExist
}
return nil
}
type Locale struct {
Lan string
}
func (l Locale) GetErrMessage(format int, args ...any) string {
return GetErrMessage(l.Lan, format, args...)
}
func GetErrMessage(lan string, format int, args ...any) string {
value, ok := store.getFormat(lan, format)
if ok {
if len(args) > 0 {
//return fmt.Sprintf(value, parseParams(args...)...)
return fmt.Sprintf(value, args...)
}
return value
}
return strconv.Itoa(format)
}
func parseParams(args ...any) []any {
params := make([]any, 0, len(args))
for _, arg := range args {
if arg == nil {
continue
}
val := reflect.ValueOf(arg)
if val.Kind() == reflect.Slice {
for i := 0; i < val.Len(); i++ {
tmp := val.Index(i).Interface()
if len(tmp.(string)) == 0 {
continue
}
params = append(params, tmp)
}
} else {
params = append(params, arg)
}
}
return params
}