func (p pluralStem) Convert(l ginta.Locale, input interface{}) interface{} { base := PluralStemResourcesPath + string(p) bundle := l.GetResourceBundle(base) if f, convert := value(input); convert { priority := nothingFoundGlobal var translation string for key, val := range bundle { var nextPriority int var op func(float64) bool switch { case strings.HasPrefix(key, EqualOperation): op = equals(key[len(EqualOperation):]) nextPriority = 0 case strings.HasPrefix(key, GreaterEqualOperation): op = greaterEqual(key[len(GreaterEqualOperation):]) nextPriority = 1 case strings.HasPrefix(key, LessEqualOperation): op = lessEqual(key[len(LessEqualOperation):]) nextPriority = 2 case strings.HasPrefix(key, GreaterOperation): op = greater(key[len(GreaterOperation):]) nextPriority = 3 case strings.HasPrefix(key, LessOperation): op = less(key[len(LessOperation):]) nextPriority = 4 case strings.HasPrefix(key, RangeOperation): op = inRange(key[len(RangeOperation):]) nextPriority = 5 case strings.HasPrefix(key, ModuloOperation): op = moduleVal(key[len(ModuloOperation):]) nextPriority = 6 case key == DefaultOperation: op = _true nextPriority = nothingFoundGlobal - 1 } if op != nil && nextPriority < priority && op(f) { priority = nextPriority translation = val } } if priority < nothingFoundGlobal { return translation } } return input }