public override void Generate(StringBuilder builder, string fullClassName, PluralTermDefinition definition) { var zero = GetTerm(definition, Plurality.Zero); CSharpGenerationHelper.GenerateTermDeclaration_Property(builder, this.settings, fullClassName, zero, '_' + definition.Key + "_Zero"); var one = GetTerm(definition, Plurality.One); CSharpGenerationHelper.GenerateTermDeclaration_Property(builder, this.settings, fullClassName, one, '_' + definition.Key + "_One"); var two = GetTerm(definition, Plurality.Two); CSharpGenerationHelper.GenerateTermDeclaration_Property(builder, this.settings, fullClassName, two, '_' + definition.Key + "_Two"); var few = GetTerm(definition, Plurality.Few); CSharpGenerationHelper.GenerateTermDeclaration_Property(builder, this.settings, fullClassName, few, '_' + definition.Key + "_Few"); var many = GetTerm(definition, Plurality.Many); CSharpGenerationHelper.GenerateTermDeclaration_Property(builder, this.settings, fullClassName, many, '_' + definition.Key + "_Many"); var other = GetTerm(definition, Plurality.Other); CSharpGenerationHelper.GenerateTermDeclaration_Property(builder, this.settings, fullClassName, other, '_' + definition.Key + "_Other"); CSharpGenerationHelper.GenerateXmlDocComments(builder, settings, other); builder.AppendLine($@" public static Term {definition.Key}({string.Join(", ", definition.AllParameters.Select(p => p.Type + ' ' + p.Name))}) {{ return new ParameterisedTerm(new DelegatedTerm(""{definition.Key}"", culture => {{ var plurality = PluralRules.GetPlurality(culture, {definition.PluralParameterName}); switch (plurality) {{ case Plurality.Zero: return _{definition.Key}_Zero; case Plurality.One: return _{definition.Key}_One; case Plurality.Two: return _{definition.Key}_Two; case Plurality.Few: return _{definition.Key}_Few; case Plurality.Many: return _{definition.Key}_Many; case Plurality.Other: default: return _{definition.Key}_Other; }} }}), {string.Join(", ", definition.AllParameters.Select(p => p.Name))}); }}" ); }