summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/nicksnyder/go-i18n/v2/internal/plural/rules.go
diff options
context:
space:
mode:
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.go24
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]
+}