final String symbol;\r
final Locale locale;\r
\r
- final Collator collator;\r
+ private Collator collator;\r
\r
public Language(final Locale locale) {\r
this.symbol = locale.getLanguage();\r
this.locale = locale;\r
- this.collator = Collator.getInstance(locale);\r
- this.collator.setStrength(Collator.IDENTICAL);\r
\r
symbolToLangauge.put(symbol.toLowerCase(), this);\r
}\r
return symbol;\r
}\r
\r
- public Collator getCollator() {\r
+ public synchronized Collator getCollator() {\r
+ if (collator == null) {\r
+ this.collator = Collator.getInstance(locale);\r
+ this.collator.setStrength(Collator.IDENTICAL);\r
+ }\r
return collator;\r
}\r
\r
}\r
};\r
\r
- static {\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
- public static Language lookup(final String symbol) {\r
- return symbolToLangauge.get(symbol.toLowerCase());\r
+ public static synchronized Language lookup(final String symbol) {\r
+ Language lang = symbolToLangauge.get(symbol.toLowerCase());\r
+ if (lang == null) {\r
+ lang = new Language(new Locale(symbol));\r
+ }\r
+ return lang;\r
}\r
\r
}\r