2 Star 1 Fork 0

法马智慧 / fmgo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
translor.go 1.55 KB
一键复制 编辑 原始数据 按行查看 历史
零海 提交于 2022-11-17 11:03 . gorm缓存插件基本完成
package languagex
import (
"golang.org/x/text/language"
"sync"
)
var translator *Translator
// Translator 翻译器
type Translator struct {
sync.RWMutex
Dictionary map[language.Tag]map[int32]string
}
// NewTranslator 创建新的翻译器
func NewTranslator() *Translator {
translator = &Translator{
Dictionary: make(map[language.Tag]map[int32]string),
}
return translator
}
// GetTranslator 获取翻译器
func GetTranslator() *Translator {
if translator == nil {
translator = NewTranslator()
}
return translator
}
// Register 注册翻译
func (t *Translator) Register(lan language.Tag, id int32, msg string) {
t.Lock()
defer t.Unlock()
if _, ok := t.Dictionary[lan]; !ok {
t.Dictionary[lan] = make(map[int32]string)
}
t.Dictionary[lan][id] = msg
}
// Registers 批量注册
func (t *Translator) Registers(lan language.Tag, msgs map[int32]string) {
t.Lock()
defer t.Unlock()
if _, ok := t.Dictionary[lan]; !ok {
t.Dictionary[lan] = make(map[int32]string)
}
for k, v := range msgs {
t.Dictionary[lan][k] = v
}
}
// ReRegisters 批量重新注册
func (t *Translator) ReRegisters(lan language.Tag, msgs map[int32]string) {
t.Lock()
defer t.Unlock()
t.Dictionary[lan] = msgs
}
// ReRegister 重新注册
func (t *Translator) ReRegister(lan language.Tag, id int32, msg string) {
t.Lock()
defer t.Unlock()
t.Dictionary[lan][id] = msg
}
// Translate 翻译
func (t *Translator) Translate(lan language.Tag, id int32) string {
t.RLock()
defer t.RUnlock()
if _, ok := t.Dictionary[lan]; !ok {
return ""
}
return t.Dictionary[lan][id]
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/fmpt/fmgo.git
git@gitee.com:fmpt/fmgo.git
fmpt
fmgo
fmgo
v1.2.14

搜索帮助

344bd9b3 5694891 D2dac590 5694891