diff --git a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java index d9530fc124a8..120b26e8deba 100644 --- a/platform/util/src/com/intellij/openapi/util/text/StringUtil.java +++ b/platform/util/src/com/intellij/openapi/util/text/StringUtil.java @@ -795,11 +795,21 @@ public class StringUtil extends StringUtilRt { return suggestion; } + int len = suggestion.length(); + if (endsWithIgnoreCase(suggestion, "ex") || endsWithIgnoreCase(suggestion, "ix")) { + return suggestion.substring(0, len - 2) + "ices"; + } + if (endsWithIgnoreCase(suggestion, "um")) { + return suggestion.substring(0, len - 2) + "a"; + } + if (endsWithIgnoreCase(suggestion, "an")) { + return suggestion.substring(0, len - 2) + "en"; + } + if (endsWithIgnoreCase(suggestion, "s") || endsWithIgnoreCase(suggestion, "x") || endsWithIgnoreCase(suggestion, "ch")) { return suggestion + "es"; } - int len = suggestion.length(); if (endsWithIgnoreCase(suggestion, "y") && len > 1 && !isVowel(toLowerCase(suggestion.charAt(len - 2)))) { return suggestion.substring(0, len - 1) + "ies"; } diff --git a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java index 1bd1353604f2..b9b3f6fa08a6 100644 --- a/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java +++ b/platform/util/testSrc/com/intellij/util/text/StringUtilTest.java @@ -87,6 +87,10 @@ public class StringUtilTest { public void testPluralize() { assertEquals("values", StringUtil.pluralize("value")); assertEquals("values", StringUtil.pluralize("values")); + assertEquals("indices", StringUtil.pluralize("index")); + assertEquals("matrices", StringUtil.pluralize("matrix")); + assertEquals("men", StringUtil.pluralize("man")); + assertEquals("media", StringUtil.pluralize("medium")); } @Test