]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/engine/Language.java
Add Esperanto.
[Dictionary.git] / src / com / hughes / android / dictionary / engine / Language.java
1 // Copyright 2011 Google Inc. All Rights Reserved.\r
2 //\r
3 // Licensed under the Apache License, Version 2.0 (the "License");\r
4 // you may not use this file except in compliance with the License.\r
5 // You may obtain a copy of the License at\r
6 //\r
7 //     http://www.apache.org/licenses/LICENSE-2.0\r
8 //\r
9 // Unless required by applicable law or agreed to in writing, software\r
10 // distributed under the License is distributed on an "AS IS" BASIS,\r
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
12 // See the License for the specific language governing permissions and\r
13 // limitations under the License.\r
14 \r
15 package com.hughes.android.dictionary.engine;\r
16 \r
17 import java.util.LinkedHashMap;\r
18 import java.util.Locale;\r
19 import java.util.Map;\r
20 \r
21 import com.ibm.icu.text.Collator;\r
22 \r
23 public class Language {\r
24 \r
25   public static final Map<String,String> isoCodeToWikiName = new LinkedHashMap<String,String>();\r
26   static {\r
27 //    Albanian\r
28 //    Armenian\r
29 //    Belarusian\r
30 //    Bengali\r
31 //    Bosnian\r
32 //    Bulgarian\r
33 //    Catalan\r
34 //    Esperanto\r
35 //    Estonian\r
36 //    Hungarian\r
37 //    Indonesian\r
38 //    Kurdish\r
39 //    Latin\r
40 //    Lithuanian\r
41 //    Nepali\r
42 //    Punjabi\r
43 //    Swahili\r
44     isoCodeToWikiName.put("AF", "Afrikaans");\r
45     isoCodeToWikiName.put("AR", "Arabic");\r
46     isoCodeToWikiName.put("HY", "Armenian");\r
47     isoCodeToWikiName.put("HR", "Croatian");\r
48     isoCodeToWikiName.put("CS", "Czech");\r
49     isoCodeToWikiName.put("ZH", "Chinese|Mandarin|Cantonese");\r
50     isoCodeToWikiName.put("DA", "Danish");\r
51     isoCodeToWikiName.put("NL", "Dutch");\r
52     isoCodeToWikiName.put("EN", "English");\r
53     isoCodeToWikiName.put("EO", "Esperanto");\r
54     isoCodeToWikiName.put("FI", "Finnish");\r
55     isoCodeToWikiName.put("FR", "French");\r
56     isoCodeToWikiName.put("DE", "German");\r
57     isoCodeToWikiName.put("EL", "Greek");\r
58     isoCodeToWikiName.put("haw", "Hawaiian");\r
59     isoCodeToWikiName.put("HE", "Hebrew");\r
60     isoCodeToWikiName.put("HI", "Hindi");\r
61     isoCodeToWikiName.put("IS", "Icelandic");\r
62     isoCodeToWikiName.put("GA", "Irish");\r
63     isoCodeToWikiName.put("IT", "Italian");\r
64     isoCodeToWikiName.put("LT", "Lithuanian");\r
65     isoCodeToWikiName.put("JA", "Japanese");\r
66     isoCodeToWikiName.put("KO", "Korean");\r
67     isoCodeToWikiName.put("KU", "Kurdish");\r
68     isoCodeToWikiName.put("MS", "Malay");\r
69     isoCodeToWikiName.put("MI", "Maori");\r
70     isoCodeToWikiName.put("MN", "Mongolian");\r
71     isoCodeToWikiName.put("NO", "Norwegian");\r
72     isoCodeToWikiName.put("FA", "Persian");\r
73     isoCodeToWikiName.put("PL", "Polish");\r
74     isoCodeToWikiName.put("PT", "Portuguese");\r
75     isoCodeToWikiName.put("RO", "Romanian");\r
76     isoCodeToWikiName.put("RU", "Russian");\r
77     isoCodeToWikiName.put("SA", "Sanskrit");\r
78     isoCodeToWikiName.put("SR", "Serbian");\r
79     isoCodeToWikiName.put("SO", "Somali");\r
80     isoCodeToWikiName.put("ES", "Spanish");\r
81     isoCodeToWikiName.put("SV", "Swedish");\r
82     isoCodeToWikiName.put("TG", "Tajik");\r
83     isoCodeToWikiName.put("TH", "Thai");\r
84     isoCodeToWikiName.put("BO", "Tibetan");\r
85     isoCodeToWikiName.put("TR", "Turkish");\r
86     isoCodeToWikiName.put("UK", "Ukrainian");\r
87     isoCodeToWikiName.put("VI", "Vietnamese");\r
88     isoCodeToWikiName.put("CI", "Welsh");\r
89     isoCodeToWikiName.put("YI", "Yiddish");\r
90     isoCodeToWikiName.put("ZU", "Zulu");\r
91   }\r
92 \r
93   static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();\r
94 \r
95   final String symbol;\r
96   final Locale locale;\r
97   \r
98   private Collator collator;\r
99 \r
100   public Language(final Locale locale) {\r
101     this.symbol = locale.getLanguage();\r
102     this.locale = locale;\r
103 \r
104     symbolToLangauge.put(symbol.toLowerCase(), this);\r
105   }\r
106 \r
107   @Override\r
108   public String toString() {\r
109     return locale.toString();\r
110   }\r
111   \r
112   public String getSymbol() {\r
113     return symbol;\r
114   }\r
115   \r
116   public synchronized Collator getCollator() {\r
117     if (collator == null) {\r
118       this.collator = Collator.getInstance(locale);\r
119       this.collator.setStrength(Collator.IDENTICAL);\r
120     }\r
121     return collator;\r
122   }\r
123   \r
124   public String getDefaultNormalizerRules() {\r
125     return ":: Any-Latin; ' ' > ; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";\r
126   }\r
127   // ----------------------------------------------------------------\r
128 \r
129   public static final Language en = new Language(Locale.ENGLISH);\r
130   public static final Language fr = new Language(Locale.FRENCH);\r
131   public static final Language it = new Language(Locale.ITALIAN);\r
132 \r
133   public static final Language de = new Language(Locale.GERMAN) {\r
134     @Override\r
135     public String getDefaultNormalizerRules() {\r
136       return ":: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; ";\r
137     }\r
138   };\r
139   \r
140   // ----------------------------------------------------------------\r
141 \r
142   public static synchronized Language lookup(final String symbol) {\r
143     Language lang = symbolToLangauge.get(symbol.toLowerCase());\r
144     if (lang == null) {\r
145       lang = new Language(new Locale(symbol));\r
146     }\r
147     return lang;\r
148   }\r
149 \r
150 }\r