| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package conf
- import (
- "io/ioutil"
- "strings"
- yaml "gopkg.in/yaml.v2"
- )
- // Dictinary 字典
- var Dictinary *map[interface{}]interface{}
- // LoadLocales 读取国际化文件
- func LoadLocales(path string) error {
- //dir, _ := os.Getwd()
- //fmt.Println(dir + path)
- data, err := ioutil.ReadFile(path)
- if err != nil {
- return err
- }
- m := make(map[interface{}]interface{})
- err = yaml.Unmarshal([]byte(data), &m)
- if err != nil {
- return err
- }
- Dictinary = &m
- return nil
- }
- // T 翻译
- func T(key string) string {
- dic := *Dictinary
- keys := strings.Split(key, ".")
- for index, path := range keys {
- // 如果到达了最后一层,寻找目标翻译
- if len(keys) == (index + 1) {
- for k, v := range dic {
- if k, ok := k.(string); ok {
- if k == path {
- if value, ok := v.(string); ok {
- return value
- }
- }
- }
- }
- return path
- }
- // 如果还有下一层,继续寻找
- for k, v := range dic {
- if ks, ok := k.(string); ok {
- if ks == path {
- if dic, ok = v.(map[interface{}]interface{}); ok == false {
- return path
- }
- }
- } else {
- return ""
- }
- }
- }
- return ""
- }
|