27 lines
690 B
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
|
|
}
|
|
}
|