diff options
Diffstat (limited to 'vendor/github.com/nicksnyder/go-i18n/v2/internal/plural/rules.go')
-rw-r--r-- | vendor/github.com/nicksnyder/go-i18n/v2/internal/plural/rules.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/vendor/github.com/nicksnyder/go-i18n/v2/internal/plural/rules.go b/vendor/github.com/nicksnyder/go-i18n/v2/internal/plural/rules.go new file mode 100644 index 000000000..87eb8369d --- /dev/null +++ b/vendor/github.com/nicksnyder/go-i18n/v2/internal/plural/rules.go @@ -0,0 +1,24 @@ +package plural + +import "golang.org/x/text/language" + +// Rules is a set of plural rules by language tag. +type Rules map[language.Tag]*Rule + +// Rule returns the closest matching plural rule for the language tag +// or nil if no rule could be found. +func (r Rules) Rule(tag language.Tag) *Rule { + t := tag + for { + if rule := r[t]; rule != nil { + return rule + } + t = t.Parent() + if t.IsRoot() { + break + } + } + base, _ := tag.Base() + baseTag, _ := language.Parse(base.String()) + return r[baseTag] +} |