+ \r
+ static final String normalizeTokenForSort(final String token, final boolean vowelETranslation) {\r
+ final StringBuilder result = new StringBuilder();\r
+ for (int i = 0; i < token.length(); ++i) {\r
+ Character c = token.charAt(i);\r
+ c = Character.toLowerCase(c);\r
+ // only check for lowercase 'e' in subsequent position means don't treat acronyms as umlauted: SAE.\r
+ if (vowelETranslation && (c == 'a' || c == 'o' || c == 'u') && i + 1 < token.length() && token.charAt(i + 1) == 'e') {\r
+ if (c == 'a') {\r
+ result.append('ä');\r
+ } else if (c == 'o') {\r
+ result.append('ö');\r
+ } else if (c == 'u') {\r
+ result.append('ü');\r
+ }\r
+ ++i;\r
+ } else if (c >= 'a' && c <= 'z' || c >= '0' && c <= '9') {\r
+ result.append(c);\r
+ } else if (c == 'ß') {\r
+ result.append("ss");\r
+ } else if (c == 'ä') {\r
+ result.append(c);\r
+ } else if (c == 'ö') {\r
+ result.append(c);\r
+ } else if (c == 'ü') {\r
+ result.append(c);\r
+ }\r
+ }\r
+ return result.toString();\r
+ }\r