]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/Language.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / Language.java
index 0c4b2c5f0f325fc84af0c75b5b8dd9e70fddfdf8..0f53d7ff4f0fe90700145a315402935d1f4af2fe 100755 (executable)
@@ -9,6 +9,9 @@ import com.ibm.icu.text.Collator;
 \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
@@ -18,8 +21,8 @@ public class Language {
   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
@@ -33,7 +36,8 @@ public class Language {
         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
@@ -42,6 +46,10 @@ public class Language {
 \r
   @Override\r
   public String toString() {\r
+    return locale.toString();\r
+  }\r
+  \r
+  public String getSymbol() {\r
     return symbol;\r
   }\r
   \r
@@ -65,9 +73,11 @@ public class Language {
 \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
@@ -82,28 +92,29 @@ public class Language {
       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