代码拉取完成,页面将自动刷新
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]
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。