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 private Collator collator;
\r
18 public Language(final Locale locale) {
\r
19 this.symbol = locale.getLanguage();
\r
20 this.locale = locale;
\r
22 symbolToLangauge.put(symbol.toLowerCase(), this);
\r
26 public String toString() {
\r
27 return locale.toString();
\r
30 public String getSymbol() {
\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
42 public String getDefaultNormalizerRules() {
\r
43 return ":: Any-Latin; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;";
\r
45 // ----------------------------------------------------------------
\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
51 public static final Language de = new Language(Locale.GERMAN) {
\r
53 public String getDefaultNormalizerRules() {
\r
54 return ":: Lower; 'ae' > 'ä'; 'oe' > 'ö'; 'ue' > 'ü'; 'ß' > 'ss'; ";
\r
58 // ----------------------------------------------------------------
\r
60 public static synchronized Language lookup(final String symbol) {
\r
61 Language lang = symbolToLangauge.get(symbol.toLowerCase());
\r
63 lang = new Language(new Locale(symbol));
\r