package language import ( "fmt" ) // Plural represents a language pluralization form as defined here: // http://cldr.unicode.org/index/cldr-spec/plural-rules type Plural string // All defined plural categories. const ( Invalid Plural = "invalid" Zero = "zero" One = "one" Two = "two" Few = "few" Many = "many" Other = "other" ) // NewPlural returns src as a Plural // or Invalid and a non-nil error if src is not a valid Plural. func NewPlural(src string) (Plural, error) { switch src { case "zero": return Zero, nil case "one": return One, nil case "two": return Two, nil case "few": return Few, nil case "many": return Many, nil case "other": return Other, nil } return Invalid, fmt.Errorf("invalid plural category %s", src) }