]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/engine/Language.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / engine / Language.java
index 42ad7b60c43b758399db8a4e59a95de773ea6578..cc1c3325c972beeebc31ce1171c9c84c5433df66 100755 (executable)
@@ -13,13 +13,11 @@ public class Language {
   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
@@ -33,7 +31,11 @@ public class Language {
     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
@@ -53,18 +55,14 @@ public class Language {
     }\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