static string Pluralize (string word)
{
if (string.IsNullOrEmpty (word))
return "s";
var last = word [word.Length - 1];
if (last == 'y') {
if (word.Length <= 1)
return "ies";
var prev = word [word.Length - 2];
if (prev == 'a' || prev == 'e' || prev == 'i' || prev == 'o')
return word + "s";
if (prev == 'u' && !word.EndsWith ("quy", StringComparison.Ordinal))
return word + "s";
return word.Substring (0, word.Length - 1) + "ies";
}
if (last == 'o' ||
last == 's' ||
last == 'z' ||
word.EndsWith ("sh", StringComparison.Ordinal) ||
word.EndsWith ("ch", StringComparison.Ordinal))
return word + "es";
return word + "s";
}