package humanize import ( "log" "strings" "sync" "unicode" "github.com/Xuanwo/go-locale" "github.com/goodsign/monday" ) var Locale monday.Locale = monday.LocaleEnUS // changed on init var localeOnce sync.Once func lettersOnly(str string) string { return strings.Map(func(r rune) rune { if unicode.IsLetter(r) { return r } return -1 }, str) } func ensureLocale() { localeOnce.Do(func() { if tag, err := locale.Detect(); err == nil { Locale = monday.Locale(lettersOnly(tag.String())) } // Check if locale is supported for _, locale := range monday.ListLocales() { if lettersOnly(string(locale)) == string(Locale) { return } } log.Println("Locale", Locale, "not found, defaulting to en_US") Locale = monday.LocaleEnUS }) }