mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-06-27 00:42:03 +08:00
- 提交 internal/db 多驱动用户可见错误与状态文案多语言化 - 补齐数据库驱动多语言测试与六语言 catalog - 修复 frontend i18n catalog 的 4 个失效 guard
57 lines
1.2 KiB
Go
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)
|
|
}
|