]> 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   private Collator collator;\r
17 \r
18   public Language(final Locale locale) {\r
19     this.symbol = locale.getLanguage();\r
20     this.locale = locale;\r
21 \r
22     symbolToLangauge.put(symbol.toLowerCase(), this);\r
23   }\r
24 \r
25   @Override\r
26   public String toString() {\r
27     return locale.toString();\r
28   }\r
29   \r
30   public String getSymbol() {\r
31     return symbol;\r
32   }\r
33   \r
34   public synchronized Collator getCollator() {\r
35     if (collator == null) {\r
36       this.collator = Collator.getInstance(locale);\r
37       this.collator.setStrength(Collator.IDENTICAL);\r
38     }\r
39     return collator;\r
40   }\r
41   \r
42   public String getDefaultNormalizerRules() {\r
43     return ":: Any-Latin; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";\r
44   }\r
45   // ----------------------------------------------------------------\r
46 \r
47   public static final Language en = new Language(Locale.ENGLISH);\r
48   public static final Language fr = new Language(Locale.FRENCH);\r
49   public static final Language it = new Language(Locale.ITALIAN);\r
50 \r
51   public static final Language de = new Language(Locale.GERMAN) {\r
52     @Override\r
53     public String getDefaultNormalizerRules() {\r
54       return ":: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; ";\r
55     }\r
56   };\r
57   \r
58   // ----------------------------------------------------------------\r
59 \r
60   public static synchronized Language lookup(final String symbol) {\r
61     Language lang = symbolToLangauge.get(symbol.toLowerCase());\r
62     if (lang == null) {\r
63       lang = new Language(new Locale(symbol));\r
64     }\r
65     return lang;\r
66   }\r
67 \r
68 }\r