thread-master/apps/backend/internal/module/notification/domain/lang.go

27 lines
690 B
Go

package domain
import "strings"
// NormalizeLanguage maps FE / Accept-Language / preferred_language → template Language.
// FE locales: zh-TW | en
func NormalizeLanguage(raw string) Language {
s := strings.ToLower(strings.TrimSpace(raw))
if s == "" {
return LangZhTW
}
// take first tag only (e.g. "en-US,en;q=0.9")
if i := strings.IndexAny(s, ",;"); i >= 0 {
s = strings.TrimSpace(s[:i])
}
s = strings.ReplaceAll(s, "_", "-")
switch {
case s == "en" || strings.HasPrefix(s, "en-"):
return LangEnUS
case s == "zh" || strings.HasPrefix(s, "zh-"):
// zh-TW / zh-Hant / zh-CN → 目前模板只有繁中,統一 zh-tw
return LangZhTW
default:
return LangZhTW
}
}