\r
public class Language {\r
\r
+ static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();\r
+\r
+ \r
final String symbol;\r
final Locale locale;\r
\r
private Collator findCollator;\r
final Comparator<String> findComparator;\r
\r
- public Language(final String symbol, final Locale locale) {\r
- this.symbol = symbol;\r
+ public Language(final Locale locale) {\r
+ this.symbol = locale.getLanguage();\r
this.locale = locale;\r
\r
this.sortComparator = new Comparator<String>() {\r
return getFindCollator().compare(textNorm(s1), textNorm(s2));\r
}\r
};\r
-\r
+ \r
+ symbolToLangauge.put(symbol.toLowerCase(), this);\r
}\r
\r
public String textNorm(final String s) {\r
\r
@Override\r
public String toString() {\r
+ return locale.toString();\r
+ }\r
+ \r
+ public String getSymbol() {\r
return symbol;\r
}\r
\r
\r
// ----------------------------------------------------------------\r
\r
- public static final Language EN = new Language("EN", Locale.ENGLISH);\r
+ public static final Language en = new Language(Locale.ENGLISH);\r
+ public static final Language fr = new Language(Locale.FRENCH);\r
+ public static final Language it = new Language(Locale.ITALIAN);\r
\r
- public static final Language DE = new Language("DE", Locale.GERMAN) {\r
+ public static final Language de = new Language(Locale.GERMAN) {\r
@Override\r
public String textNorm(String token) {\r
boolean sub = false;\r
if (!sub) {\r
return token;\r
}\r
- token = token.replaceAll("ae", "ä");\r
- token = token.replaceAll("oe", "ö");\r
- token = token.replaceAll("ue", "ü");\r
-\r
- token = token.replaceAll("Ae", "Ä");\r
- token = token.replaceAll("Oe", "Ö");\r
- token = token.replaceAll("Ue", "Ü");\r
- return token;\r
+ token = token.replaceAll("ae", "ä");\r
+ token = token.replaceAll("oe", "ö");\r
+ token = token.replaceAll("ue", "ü");\r
+\r
+ token = token.replaceAll("Ae", "Ä");\r
+ token = token.replaceAll("Oe", "Ö");\r
+ token = token.replaceAll("Ue", "Ü");\r
+ return token; \r
}\r
};\r
-\r
- // ----------------------------------------------------------------\r
-\r
- private static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();\r
-\r
+ \r
static {\r
- symbolToLangauge.put(EN.symbol, EN);\r
- symbolToLangauge.put(DE.symbol, DE);\r
+ for (final String lang : Locale.getISOLanguages()) {\r
+ if (lookup(lang) == null) {\r
+ new Language(new Locale(lang));\r
+ }\r
+ }\r
}\r
\r
+ // ----------------------------------------------------------------\r
+\r
static Language lookup(final String symbol) {\r
- return symbolToLangauge.get(symbol);\r
+ return symbolToLangauge.get(symbol.toLowerCase());\r
}\r
\r
}\r