package cacheApi import ( "epur-pay/model" "epur-pay/pkg/rds" "epur-pay/pkg/utils" "sync" ) type Language struct { List []model.SysLanguage Map *sync.Map TranslateMap *sync.Map DefaultLanguage string duplicate *Language } func (p *Language) Refresh() *Language { p.duplicate = &Language{} p.duplicate.Map = new(sync.Map) p.duplicate.TranslateMap = new(sync.Map) utils.Error(rds.DB.Raw(`select * from sys_language order by sort`).Scan(&p.duplicate.List).Error) for _, v := range p.duplicate.List { if v.IsDefault == "0" { p.duplicate.DefaultLanguage = v.Akey } } if len(p.duplicate.DefaultLanguage) <= 0 { p.duplicate.DefaultLanguage = "en_US" } // 资源文件 translate := []model.Translate{} utils.Error(rds.DB.Table(model.Translate{}.TableName()).Where(`type = ?`, 0).Order(`id asc`).Scan(&translate).Error) for idx, v := range translate { p.duplicate.TranslateMap.Store(v.LanguageKey, translate[idx].To) } return p.duplicate } func (p *Language) GetLang(lang string, key string) string { if trans, ok := p.TranslateMap.Load(key); ok { for _, v := range trans.(model.TranslateTos) { if v.GoogleKey == lang { return v.To } } } return "" } func (p *Language) GetTranslate(key string) model.TranslateTos { if row, ok := p.TranslateMap.Load(key); ok { return row.(model.TranslateTos) } return nil } func (p *Language) GetDefaultLang(key string) string { row, _ := p.Map.Load(p.DefaultLanguage) result, _ := row.(*sync.Map).Load(key) return result.(string) }