mirror of
https://github.com/superseriousbusiness/gotosocial.git
synced 2025-10-29 05:52:24 -05:00
[feature] Allow full BCP 47 in language inputs (#2067)
* Allow full BCP 47 in language inputs Fixes #2066 * Fuse validation and normalization for languages * Remove outdated comment line * Move post language canonicalization test
This commit is contained in:
parent
303a6a6b1d
commit
0f812746b7
9 changed files with 132 additions and 70 deletions
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue