- // ----------------------------------------------------------------\r
- \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
+ public static final Language DE = new Language("DE", Locale.GERMAN) {\r
+ @Override\r
+ public String textNorm(String token) {\r
+ boolean sub = false;\r
+ for (int ePos = token.indexOf('e', 1); ePos != -1; ePos = token.indexOf(\r
+ 'e', ePos + 1)) {\r
+ final char pre = Character.toLowerCase(token.charAt(ePos - 1));\r
+ if (pre == 'a' || pre == 'o' || pre == 'u') {\r
+ sub = true;\r
+ break;\r