]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/engine/Language.java
Latvian.
[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     isoCodeToWikiName.put("AF", "Afrikaans");\r
28     isoCodeToWikiName.put("SQ", "Albanian");\r
29     isoCodeToWikiName.put("AR", "Arabic");\r
30     isoCodeToWikiName.put("HY", "Armenian");\r
31     isoCodeToWikiName.put("BE", "Belarusian");\r
32     isoCodeToWikiName.put("BN", "Bengali");\r
33     isoCodeToWikiName.put("BS", "Bosnian");\r
34     isoCodeToWikiName.put("BG", "Bulgarian");\r
35     isoCodeToWikiName.put("CA", "Catalan");\r
36     isoCodeToWikiName.put("HR", "Croatian");\r
37     isoCodeToWikiName.put("CS", "Czech");\r
38     isoCodeToWikiName.put("ZH", "Chinese|Mandarin|Cantonese");\r
39     isoCodeToWikiName.put("DA", "Danish");\r
40     isoCodeToWikiName.put("NL", "Dutch");\r
41     isoCodeToWikiName.put("EN", "English");\r
42     isoCodeToWikiName.put("EO", "Esperanto");\r
43     isoCodeToWikiName.put("ET", "Estonian");\r
44     isoCodeToWikiName.put("FI", "Finnish");\r
45     isoCodeToWikiName.put("FR", "French");\r
46     isoCodeToWikiName.put("DE", "German");\r
47     isoCodeToWikiName.put("EL", "Greek");\r
48     isoCodeToWikiName.put("haw", "Hawaiian");\r
49     isoCodeToWikiName.put("HE", "Hebrew");\r
50     isoCodeToWikiName.put("HI", "Hindi");\r
51     isoCodeToWikiName.put("HU", "Hungarian");\r
52     isoCodeToWikiName.put("IS", "Icelandic");\r
53     isoCodeToWikiName.put("ID", "Indonesian");\r
54     isoCodeToWikiName.put("GA", "Irish");\r
55     isoCodeToWikiName.put("IT", "Italian");\r
56     isoCodeToWikiName.put("LA", "Latin");\r
57     isoCodeToWikiName.put("LV", "Latvian");\r
58     isoCodeToWikiName.put("LT", "Lithuanian");\r
59     isoCodeToWikiName.put("JA", "Japanese");\r
60     isoCodeToWikiName.put("KO", "Korean");\r
61     isoCodeToWikiName.put("KU", "Kurdish");\r
62     isoCodeToWikiName.put("MS", "Malay");\r
63     isoCodeToWikiName.put("MI", "Maori");\r
64     isoCodeToWikiName.put("MN", "Mongolian");\r
65     isoCodeToWikiName.put("NE", "Nepali");\r
66     isoCodeToWikiName.put("NO", "Norwegian");\r
67     isoCodeToWikiName.put("FA", "Persian");\r
68     isoCodeToWikiName.put("PL", "Polish");\r
69     isoCodeToWikiName.put("PT", "Portuguese");\r
70     isoCodeToWikiName.put("PA", "Punjabi");\r
71     isoCodeToWikiName.put("RO", "Romanian");\r
72     isoCodeToWikiName.put("RU", "Russian");\r
73     isoCodeToWikiName.put("SA", "Sanskrit");\r
74     isoCodeToWikiName.put("SR", "Serbian");\r
75     isoCodeToWikiName.put("SO", "Somali");\r
76     isoCodeToWikiName.put("ES", "Spanish");\r
77     isoCodeToWikiName.put("SW", "Swahili");\r
78     isoCodeToWikiName.put("SV", "Swedish");\r
79     isoCodeToWikiName.put("TG", "Tajik");\r
80     isoCodeToWikiName.put("TH", "Thai");\r
81     isoCodeToWikiName.put("BO", "Tibetan");\r
82     isoCodeToWikiName.put("TR", "Turkish");\r
83     isoCodeToWikiName.put("UK", "Ukrainian");\r
84     isoCodeToWikiName.put("VI", "Vietnamese");\r
85     isoCodeToWikiName.put("CI", "Welsh");\r
86     isoCodeToWikiName.put("YI", "Yiddish");\r
87     isoCodeToWikiName.put("ZU", "Zulu");\r
88   }\r
89 \r
90   static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();\r
91 \r
92   final String symbol;\r
93   final Locale locale;\r
94   \r
95   private Collator collator;\r
96 \r
97   public Language(final Locale locale) {\r
98     this.symbol = locale.getLanguage();\r
99     this.locale = locale;\r
100 \r
101     symbolToLangauge.put(symbol.toLowerCase(), this);\r
102   }\r
103 \r
104   @Override\r
105   public String toString() {\r
106     return locale.toString();\r
107   }\r
108   \r
109   public String getSymbol() {\r
110     return symbol;\r
111   }\r
112   \r
113   public synchronized Collator getCollator() {\r
114     if (collator == null) {\r
115       this.collator = Collator.getInstance(locale);\r
116       this.collator.setStrength(Collator.IDENTICAL);\r
117     }\r
118     return collator;\r
119   }\r
120   \r
121   public String getDefaultNormalizerRules() {\r
122     return ":: Any-Latin; ' ' > ; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";\r
123   }\r
124   // ----------------------------------------------------------------\r
125 \r
126   public static final Language en = new Language(Locale.ENGLISH);\r
127   public static final Language fr = new Language(Locale.FRENCH);\r
128   public static final Language it = new Language(Locale.ITALIAN);\r
129 \r
130   public static final Language de = new Language(Locale.GERMAN) {\r
131     @Override\r
132     public String getDefaultNormalizerRules() {\r
133       return ":: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; ";\r
134     }\r
135   };\r
136   \r
137   // ----------------------------------------------------------------\r
138 \r
139   public static synchronized Language lookup(final String symbol) {\r
140     Language lang = symbolToLangauge.get(symbol.toLowerCase());\r
141     if (lang == null) {\r
142       lang = new Language(new Locale(symbol));\r
143     }\r
144     return lang;\r
145   }\r
146 \r
147 }\r