]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/engine/Language.java
New icon, new dictionary naming, store on code.google.com, fix Hebrew,
[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.Arrays;\r
18 import java.util.LinkedHashMap;\r
19 import java.util.List;\r
20 import java.util.Locale;\r
21 import java.util.Map;\r
22 \r
23 import com.ibm.icu.text.Collator;\r
24 \r
25 public class Language {\r
26 \r
27   public static final Map<String,String> isoCodeToWikiName = new LinkedHashMap<String,String>();\r
28   static {\r
29 //    Albanian\r
30 //    Armenian\r
31 //    Belarusian\r
32 //    Bengali\r
33 //    Bosnian\r
34 //    Bulgarian\r
35 //    Catalan\r
36 //    Esperanto\r
37 //    Estonian\r
38 //    Hungarian\r
39 //    Indonesian\r
40 //    Kurdish\r
41 //    Latin\r
42 //    Lithuanian\r
43 //    Nepali\r
44 //    Punjabi\r
45 //    Swahili\r
46     isoCodeToWikiName.put("AF", "Afrikaans");\r
47     isoCodeToWikiName.put("AR", "Arabic");\r
48     isoCodeToWikiName.put("HY", "Armenian");\r
49     isoCodeToWikiName.put("HR", "Croation");\r
50     isoCodeToWikiName.put("CS", "Czech");\r
51     isoCodeToWikiName.put("ZH", "Chinese|Mandarin|Cantonese");\r
52     isoCodeToWikiName.put("DA", "Danish");\r
53     isoCodeToWikiName.put("NL", "Dutch");\r
54     isoCodeToWikiName.put("EN", "English");\r
55     isoCodeToWikiName.put("FI", "Finish");\r
56     isoCodeToWikiName.put("FR", "French");\r
57     isoCodeToWikiName.put("DE", "German");\r
58     isoCodeToWikiName.put("EL", "Greek");\r
59     isoCodeToWikiName.put("haw", "Hawaiian");\r
60     isoCodeToWikiName.put("HE", "Hebrew");\r
61     isoCodeToWikiName.put("HI", "Hindi");\r
62     isoCodeToWikiName.put("IS", "Icelandic");\r
63     isoCodeToWikiName.put("GA", "Irish");\r
64     isoCodeToWikiName.put("IT", "Italian");\r
65     isoCodeToWikiName.put("LT", "Lithuanian");\r
66     isoCodeToWikiName.put("JA", "Japanese");\r
67     isoCodeToWikiName.put("KO", "Korean");\r
68     isoCodeToWikiName.put("KU", "Kurdish");\r
69     isoCodeToWikiName.put("MS", "Malay");\r
70     isoCodeToWikiName.put("MI", "Maori");\r
71     isoCodeToWikiName.put("MN", "Mongolian");\r
72     isoCodeToWikiName.put("NO", "Norwegian");\r
73     isoCodeToWikiName.put("FA", "Persian");\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("SU", "Sudanese");\r
82     isoCodeToWikiName.put("SV", "Swedish");\r
83     isoCodeToWikiName.put("TG", "Tajik");\r
84     isoCodeToWikiName.put("TH", "Thai");\r
85     isoCodeToWikiName.put("BO", "Tibetan");\r
86     isoCodeToWikiName.put("TR", "Turkish");\r
87     isoCodeToWikiName.put("UK", "Ukranian");\r
88     isoCodeToWikiName.put("VI", "Vietnamese");\r
89     isoCodeToWikiName.put("CI", "Welsh");\r
90     isoCodeToWikiName.put("YI", "Yiddish");\r
91     isoCodeToWikiName.put("ZU", "Zulu");\r
92   }\r
93 \r
94   static final List<String> ISO_CODES_WITH_DICTS = Arrays.asList();\r
95 \r
96   static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();\r
97 \r
98   final String symbol;\r
99   final Locale locale;\r
100   \r
101   private Collator collator;\r
102 \r
103   public Language(final Locale locale) {\r
104     this.symbol = locale.getLanguage();\r
105     this.locale = locale;\r
106 \r
107     symbolToLangauge.put(symbol.toLowerCase(), this);\r
108   }\r
109 \r
110   @Override\r
111   public String toString() {\r
112     return locale.toString();\r
113   }\r
114   \r
115   public String getSymbol() {\r
116     return symbol;\r
117   }\r
118   \r
119   public synchronized Collator getCollator() {\r
120     if (collator == null) {\r
121       this.collator = Collator.getInstance(locale);\r
122       this.collator.setStrength(Collator.IDENTICAL);\r
123     }\r
124     return collator;\r
125   }\r
126   \r
127   public String getDefaultNormalizerRules() {\r
128     return ":: Any-Latin; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";\r
129   }\r
130   // ----------------------------------------------------------------\r
131 \r
132   public static final Language en = new Language(Locale.ENGLISH);\r
133   public static final Language fr = new Language(Locale.FRENCH);\r
134   public static final Language it = new Language(Locale.ITALIAN);\r
135 \r
136   public static final Language de = new Language(Locale.GERMAN) {\r
137     @Override\r
138     public String getDefaultNormalizerRules() {\r
139       return ":: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; ";\r
140     }\r
141   };\r
142   \r
143   // ----------------------------------------------------------------\r
144 \r
145   public static synchronized Language lookup(final String symbol) {\r
146     Language lang = symbolToLangauge.get(symbol.toLowerCase());\r
147     if (lang == null) {\r
148       lang = new Language(new Locale(symbol));\r
149     }\r
150     return lang;\r
151   }\r
152 \r
153 }\r