diff options
Diffstat (limited to 'internal/language')
| -rw-r--r-- | internal/language/language.go | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/internal/language/language.go b/internal/language/language.go index 233ae5a1d..376364a42 100644 --- a/internal/language/language.go +++ b/internal/language/language.go @@ -18,6 +18,8 @@ package language import ( + "errors" + "code.superseriousbusiness.org/gotosocial/internal/gtserror" "golang.org/x/text/language" "golang.org/x/text/language/display" @@ -95,13 +97,35 @@ func (l *Language) UnmarshalText(text []byte) error { if err != nil { return err } - *l = *lang return nil } type Languages []*Language +func (l *Languages) Set(in string) error { + if l == nil { + return errors.New("nil receiver") + } + prefix, err := Parse(in) + if err != nil { + return err + } + (*l) = append((*l), prefix) + return nil +} + +func (l *Languages) Strings() []string { + if l == nil || len(*l) == 0 { + return nil + } + strs := make([]string, len(*l)) + for i, lang := range *l { + strs[i] = lang.TagStr + } + return strs +} + func (l Languages) Tags() []language.Tag { tags := make([]language.Tag, len(l)) for i, lang := range l { |
