Files
MyGoNavi/internal/db/driver_i18n.go
tianqijiuyun-latiao d13c153f5e feat(i18n): 收口数据库驱动多语言代码
- 提交 internal/db 多驱动用户可见错误与状态文案多语言化

- 补齐数据库驱动多语言测试与六语言 catalog

- 修复 frontend i18n catalog 的 4 个失效 guard
2026-06-22 10:09:45 +08:00

57 lines
1.2 KiB
Go

package db
import (
"sync"
"GoNavi-Wails/shared/i18n"
)
var (
driverRuntimeTextMu sync.RWMutex
driverRuntimeTextLanguage = i18n.LanguageZhCN
driverRuntimeTextLocalizer *i18n.Localizer
)
func SetBackendLanguage(language i18n.Language) {
normalized, ok := i18n.NormalizeLanguage(string(language))
if !ok {
return
}
driverRuntimeTextMu.Lock()
defer driverRuntimeTextMu.Unlock()
driverRuntimeTextLanguage = normalized
if driverRuntimeTextLocalizer == nil {
localizer, err := i18n.NewLocalizer(normalized)
if err != nil {
return
}
driverRuntimeTextLocalizer = localizer
return
}
driverRuntimeTextLocalizer.SetLanguage(normalized)
}
func localizedDriverRuntimeText(key string, params map[string]any) string {
driverRuntimeTextMu.RLock()
if driverRuntimeTextLocalizer != nil {
text := driverRuntimeTextLocalizer.T(key, params)
driverRuntimeTextMu.RUnlock()
return text
}
driverRuntimeTextMu.RUnlock()
driverRuntimeTextMu.Lock()
defer driverRuntimeTextMu.Unlock()
if driverRuntimeTextLocalizer == nil {
localizer, err := i18n.NewLocalizer(driverRuntimeTextLanguage)
if err != nil {
return key
}
driverRuntimeTextLocalizer = localizer
}
return driverRuntimeTextLocalizer.T(key, params)
}