package utils import ( "fmt" "time" ) // SupportedLanguages contains the list of supported ISO 639-1 language codes var SupportedLanguages = []string{ "en", "fr", "es", "de", "it", "pt", "ru", "ja", "zh", "ko", "ar", "hi", "nl", "sv", "pl", "tr", "cs", "ro", "hu", "fi", } // SupportedThemes contains the list of supported theme values var SupportedThemes = []string{"light", "dark", "auto"} // ValidateLanguage validates an ISO 639-1 language code // Returns nil if valid or empty, error otherwise func ValidateLanguage(language string) error { if language == "" { return nil // Optional field } for _, lang := range SupportedLanguages { if language == lang { return nil } } return fmt.Errorf("unsupported language code: %s. Supported: %v", language, SupportedLanguages) } // ValidateTimezone validates an IANA timezone string // Returns nil if valid or empty, error otherwise func ValidateTimezone(timezone string) error { if timezone == "" { return nil // Optional field } _, err := time.LoadLocation(timezone) if err != nil { return fmt.Errorf("invalid timezone: %s. Must be a valid IANA timezone", timezone) } return nil } // ValidateTheme validates a theme enum value // Returns nil if valid or empty, error otherwise func ValidateTheme(theme string) error { if theme == "" { return nil // Optional field } for _, t := range SupportedThemes { if theme == t { return nil } } return fmt.Errorf("invalid theme: %s. Allowed: %v", theme, SupportedThemes) }