]> gitweb.fperrin.net Git - Dictionary.git/blobdiff - src/com/hughes/android/dictionary/engine/Language.java
Add Esperanto.
[Dictionary.git] / src / com / hughes / android / dictionary / engine / Language.java
old mode 100755 (executable)
new mode 100644 (file)
index 42ad7b6..51ab7ba
@@ -1,3 +1,17 @@
+// Copyright 2011 Google Inc. All Rights Reserved.\r
+//\r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+//     http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+\r
 package com.hughes.android.dictionary.engine;\r
 \r
 import java.util.LinkedHashMap;\r
@@ -8,18 +22,84 @@ import com.ibm.icu.text.Collator;
 \r
 public class Language {\r
 \r
+  public static final Map<String,String> isoCodeToWikiName = new LinkedHashMap<String,String>();\r
+  static {\r
+//    Albanian\r
+//    Armenian\r
+//    Belarusian\r
+//    Bengali\r
+//    Bosnian\r
+//    Bulgarian\r
+//    Catalan\r
+//    Esperanto\r
+//    Estonian\r
+//    Hungarian\r
+//    Indonesian\r
+//    Kurdish\r
+//    Latin\r
+//    Lithuanian\r
+//    Nepali\r
+//    Punjabi\r
+//    Swahili\r
+    isoCodeToWikiName.put("AF", "Afrikaans");\r
+    isoCodeToWikiName.put("AR", "Arabic");\r
+    isoCodeToWikiName.put("HY", "Armenian");\r
+    isoCodeToWikiName.put("HR", "Croatian");\r
+    isoCodeToWikiName.put("CS", "Czech");\r
+    isoCodeToWikiName.put("ZH", "Chinese|Mandarin|Cantonese");\r
+    isoCodeToWikiName.put("DA", "Danish");\r
+    isoCodeToWikiName.put("NL", "Dutch");\r
+    isoCodeToWikiName.put("EN", "English");\r
+    isoCodeToWikiName.put("EO", "Esperanto");\r
+    isoCodeToWikiName.put("FI", "Finnish");\r
+    isoCodeToWikiName.put("FR", "French");\r
+    isoCodeToWikiName.put("DE", "German");\r
+    isoCodeToWikiName.put("EL", "Greek");\r
+    isoCodeToWikiName.put("haw", "Hawaiian");\r
+    isoCodeToWikiName.put("HE", "Hebrew");\r
+    isoCodeToWikiName.put("HI", "Hindi");\r
+    isoCodeToWikiName.put("IS", "Icelandic");\r
+    isoCodeToWikiName.put("GA", "Irish");\r
+    isoCodeToWikiName.put("IT", "Italian");\r
+    isoCodeToWikiName.put("LT", "Lithuanian");\r
+    isoCodeToWikiName.put("JA", "Japanese");\r
+    isoCodeToWikiName.put("KO", "Korean");\r
+    isoCodeToWikiName.put("KU", "Kurdish");\r
+    isoCodeToWikiName.put("MS", "Malay");\r
+    isoCodeToWikiName.put("MI", "Maori");\r
+    isoCodeToWikiName.put("MN", "Mongolian");\r
+    isoCodeToWikiName.put("NO", "Norwegian");\r
+    isoCodeToWikiName.put("FA", "Persian");\r
+    isoCodeToWikiName.put("PL", "Polish");\r
+    isoCodeToWikiName.put("PT", "Portuguese");\r
+    isoCodeToWikiName.put("RO", "Romanian");\r
+    isoCodeToWikiName.put("RU", "Russian");\r
+    isoCodeToWikiName.put("SA", "Sanskrit");\r
+    isoCodeToWikiName.put("SR", "Serbian");\r
+    isoCodeToWikiName.put("SO", "Somali");\r
+    isoCodeToWikiName.put("ES", "Spanish");\r
+    isoCodeToWikiName.put("SV", "Swedish");\r
+    isoCodeToWikiName.put("TG", "Tajik");\r
+    isoCodeToWikiName.put("TH", "Thai");\r
+    isoCodeToWikiName.put("BO", "Tibetan");\r
+    isoCodeToWikiName.put("TR", "Turkish");\r
+    isoCodeToWikiName.put("UK", "Ukrainian");\r
+    isoCodeToWikiName.put("VI", "Vietnamese");\r
+    isoCodeToWikiName.put("CI", "Welsh");\r
+    isoCodeToWikiName.put("YI", "Yiddish");\r
+    isoCodeToWikiName.put("ZU", "Zulu");\r
+  }\r
+\r
   static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();\r
 \r
   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,12 +113,16 @@ 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
   public String getDefaultNormalizerRules() {\r
-    return ":: Any-Latin; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";\r
+    return ":: Any-Latin; ' ' > ; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";\r
   }\r
   // ----------------------------------------------------------------\r
 \r
@@ -53,18 +137,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