]> gitweb.fperrin.net Git - Dictionary.git/blob - src/com/hughes/android/dictionary/engine/Language.java
go
[Dictionary.git] / src / com / hughes / android / dictionary / engine / Language.java
1 package com.hughes.android.dictionary.engine;\r
2 \r
3 import java.util.LinkedHashMap;\r
4 import java.util.Locale;\r
5 import java.util.Map;\r
6 \r
7 import com.ibm.icu.text.Collator;\r
8 \r
9 public class Language {\r
10 \r
11   static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();\r
12 \r
13   final String symbol;\r
14   final Locale locale;\r
15   \r
16   final Collator collator;\r
17 \r
18   public Language(final Locale locale) {\r
19     this.symbol = locale.getLanguage();\r
20     this.locale = locale;\r
21     this.collator = Collator.getInstance(locale);\r
22     this.collator.setStrength(Collator.IDENTICAL);\r
23 \r
24     symbolToLangauge.put(symbol.toLowerCase(), this);\r
25   }\r
26 \r
27   @Override\r
28   public String toString() {\r
29     return locale.toString();\r
30   }\r
31   \r
32   public String getSymbol() {\r
33     return symbol;\r
34   }\r
35   \r
36   public Collator getCollator() {\r
37     return collator;\r
38   }\r
39   \r
40   public String getDefaultNormalizerRules() {\r
41     return ":: Any-Latin; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";\r
42   }\r
43   // ----------------------------------------------------------------\r
44 \r
45   public static final Language en = new Language(Locale.ENGLISH);\r
46   public static final Language fr = new Language(Locale.FRENCH);\r
47   public static final Language it = new Language(Locale.ITALIAN);\r
48 \r
49   public static final Language de = new Language(Locale.GERMAN) {\r
50     @Override\r
51     public String getDefaultNormalizerRules() {\r
52       return ":: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; ";\r
53     }\r
54   };\r
55   \r
56   static {\r
57     for (final String lang : Locale.getISOLanguages()) {\r
58       if (lookup(lang) == null) {\r
59         new Language(new Locale(lang));\r
60       }\r
61     }\r
62   }\r
63 \r
64   // ----------------------------------------------------------------\r
65 \r
66   public static Language lookup(final String symbol) {\r
67     return symbolToLangauge.get(symbol.toLowerCase());\r
68   }\r
69 \r
70 }\r