1 package com.hughes.android.dictionary.engine;
\r
3 import java.util.LinkedHashMap;
\r
4 import java.util.Locale;
\r
5 import java.util.Map;
\r
7 import com.ibm.icu.text.Collator;
\r
9 public class Language {
\r
11 static final Map<String, Language> symbolToLangauge = new LinkedHashMap<String, Language>();
\r
13 final String symbol;
\r
14 final Locale locale;
\r
16 final Collator collator;
\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
24 symbolToLangauge.put(symbol.toLowerCase(), this);
\r
28 public String toString() {
\r
29 return locale.toString();
\r
32 public String getSymbol() {
\r
36 public Collator getCollator() {
\r
40 public String getDefaultNormalizerRules() {
\r
41 return ":: Any-Latin; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";
\r
43 // ----------------------------------------------------------------
\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
49 public static final Language de = new Language(Locale.GERMAN) {
\r
51 public String getDefaultNormalizerRules() {
\r
52 return ":: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; ";
\r
57 for (final String lang : Locale.getISOLanguages()) {
\r
58 if (lookup(lang) == null) {
\r
59 new Language(new Locale(lang));
\r
64 // ----------------------------------------------------------------
\r
66 public static Language lookup(final String symbol) {
\r
67 return symbolToLangauge.get(symbol.toLowerCase());
\r