diff options
Diffstat (limited to 'internal/validate/formvalidation.go')
-rw-r--r-- | internal/validate/formvalidation.go | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/internal/validate/formvalidation.go b/internal/validate/formvalidation.go index 76ce6a8de..1b5996b4b 100644 --- a/internal/validate/formvalidation.go +++ b/internal/validate/formvalidation.go @@ -99,14 +99,19 @@ func Email(email string) error { return err } -// Language checks that the given language string is a 2- or 3-letter ISO 639 code. -// Returns an error if the language cannot be parsed. See: https://pkg.go.dev/golang.org/x/text/language -func Language(lang string) error { +// Language checks that the given language string is a valid, if not necessarily canonical, BCP 47 language tag. +// Returns a canonicalized version of the tag if the language can be parsed. +// Returns an error if the language cannot be parsed. +// See: https://pkg.go.dev/golang.org/x/text/language +func Language(lang string) (string, error) { if lang == "" { - return errors.New("no language provided") + return "", errors.New("no language provided") } - _, err := language.ParseBase(lang) - return err + parsed, err := language.Parse(lang) + if err != nil { + return "", err + } + return parsed.String(), err } // SignUpReason checks that a sufficient reason is given for a server signup request |