1 package com.hughes.android.dictionary.engine;
3 import java.util.ArrayList;
6 import com.ibm.icu.text.Transliterator;
8 public class TransliteratorManager {
10 private static boolean starting = false;
11 private static boolean ready = false;
13 private static List<Callback> callbacks = new ArrayList<TransliteratorManager.Callback>();
15 public static synchronized boolean init(final Callback callback) {
19 if (callback != null) {
20 callbacks.add(callback);
24 new Thread(init).start();
29 private static final Runnable init = new Runnable() {
32 System.out.println("Starting Transliterator load.");
33 final String transliterated =
34 Transliterator.createFromRules("", ":: Any-Latin; :: Lower; :: NFD; :: [:Nonspacing Mark:] Remove; :: NFC ;",
35 Transliterator.FORWARD).transliterate("Îñţérñåţîöñåļîžåţîờñ");
36 if (!"internationalization".equals(transliterated)) {
37 System.out.println("Wrong transliteratation: " + transliterated);
40 final List<Callback> callbacks = new ArrayList<TransliteratorManager.Callback>();
41 synchronized (TransliteratorManager.class) {
42 callbacks.addAll(TransliteratorManager.callbacks);
45 for (final Callback callback : callbacks) {
46 callback.onTransliteratorReady();
52 public interface Callback {
53 void onTransliteratorReady();