]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/engine/Language.java
Font size pref, reorder a few EntryTypes.
[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("FI", "Finnish");\r
54     isoCodeToWikiName.put("FR", "French");\r
55     isoCodeToWikiName.put("DE", "German");\r
56     isoCodeToWikiName.put("EL", "Greek");\r
57     isoCodeToWikiName.put("haw", "Hawaiian");\r
58     isoCodeToWikiName.put("HE", "Hebrew");\r
59     isoCodeToWikiName.put("HI", "Hindi");\r
60     isoCodeToWikiName.put("IS", "Icelandic");\r
61     isoCodeToWikiName.put("GA", "Irish");\r
62     isoCodeToWikiName.put("IT", "Italian");\r
63     isoCodeToWikiName.put("LT", "Lithuanian");\r
64     isoCodeToWikiName.put("JA", "Japanese");\r
65     isoCodeToWikiName.put("KO", "Korean");\r
66     isoCodeToWikiName.put("KU", "Kurdish");\r
67     isoCodeToWikiName.put("MS", "Malay");\r
68     isoCodeToWikiName.put("MI", "Maori");\r
69     isoCodeToWikiName.put("MN", "Mongolian");\r
70     isoCodeToWikiName.put("NO", "Norwegian");\r
71     isoCodeToWikiName.put("FA", "Persian");\r
72     isoCodeToWikiName.put("PL", "Polish");\r
73     isoCodeToWikiName.put("PT", "Portuguese");\r
74     isoCodeToWikiName.put("RO", "Romanian");\r
75     isoCodeToWikiName.put("RU", "Russian");\r
76     isoCodeToWikiName.put("SA", "Sanskrit");\r
77     isoCodeToWikiName.put("SR", "Serbian");\r
78     isoCodeToWikiName.put("SO", "Somali");\r
79     isoCodeToWikiName.put("ES", "Spanish");\r
80     isoCodeToWikiName.put("SV", "Swedish");\r
81     isoCodeToWikiName.put("TG", "Tajik");\r
82     isoCodeToWikiName.put("TH", "Thai");\r
83     isoCodeToWikiName.put("BO", "Tibetan");\r
84     isoCodeToWikiName.put("TR", "Turkish");\r
85     isoCodeToWikiName.put("UK", "Ukrainian");\r
86     isoCodeToWikiName.put("VI", "Vietnamese");\r
87     isoCodeToWikiName.put("CI", "Welsh");\r
88     isoCodeToWikiName.put("YI", "Yiddish");\r
89     isoCodeToWikiName.put("ZU", "Zulu");\r
90   }\r
91 \r
92   static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();\r
93 \r
94   final String symbol;\r
95   final Locale locale;\r
96   \r
97   private Collator collator;\r
98 \r
99   public Language(final Locale locale) {\r
100     this.symbol = locale.getLanguage();\r
101     this.locale = locale;\r
102 \r
103     symbolToLangauge.put(symbol.toLowerCase(), this);\r
104   }\r
105 \r
106   @Override\r
107   public String toString() {\r
108     return locale.toString();\r
109   }\r
110   \r
111   public String getSymbol() {\r
112     return symbol;\r
113   }\r
114   \r
115   public synchronized Collator getCollator() {\r
116     if (collator == null) {\r
117       this.collator = Collator.getInstance(locale);\r
118       this.collator.setStrength(Collator.IDENTICAL);\r
119     }\r
120     return collator;\r
121   }\r
122   \r
123   public String getDefaultNormalizerRules() {\r
124     return ":: Any-Latin; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";\r
125   }\r
126   // ----------------------------------------------------------------\r
127 \r
128   public static final Language en = new Language(Locale.ENGLISH);\r
129   public static final Language fr = new Language(Locale.FRENCH);\r
130   public static final Language it = new Language(Locale.ITALIAN);\r
131 \r
132   public static final Language de = new Language(Locale.GERMAN) {\r
133     @Override\r
134     public String getDefaultNormalizerRules() {\r
135       return ":: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; ";\r
136     }\r
137   };\r
138   \r
139   // ----------------------------------------------------------------\r
140 \r
141   public static synchronized Language lookup(final String symbol) {\r
142     Language lang = symbolToLangauge.get(symbol.toLowerCase());\r
143     if (lang == null) {\r
144       lang = new Language(new Locale(symbol));\r
145     }\r
146     return lang;\r
147   }\r
148 \r
149 }\r