diff --git a/src/ui/android/res/xml/inflection_bg.xml b/src/ui/android/res/xml/inflection_bg.xml deleted file mode 100644 index 17b59460f..000000000 --- a/src/ui/android/res/xml/inflection_bg.xml +++ /dev/null @@ -1,650 +0,0 @@ - - - N - N2 - същ - - - - A - A2 - пр - - - - Adv - нар - - - - Prep - пр - - - - V - V2 - V3 - V2V - V2S - V2Q - V2A - VV - VS - VQ - VA - гл - - - diff --git a/src/ui/android/res/xml/inflection_cmn.xml b/src/ui/android/res/xml/inflection_cmn.xml deleted file mode 100644 index 82cc6926a..000000000 --- a/src/ui/android/res/xml/inflection_cmn.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - N - N2 - n - - - - A - A2 - a - - - - Adv - adv - - - - Prep - prep - - - - V - V2 - V3 - V2V - V2S - V2Q - V2A - VV - VS - VQ - VA - v - - - diff --git a/src/ui/android/res/xml/inflection_en.xml b/src/ui/android/res/xml/inflection_en.xml deleted file mode 100644 index 88dd60770..000000000 --- a/src/ui/android/res/xml/inflection_en.xml +++ /dev/null @@ -1,146 +0,0 @@ - - - N - N2 - n - - - - A - A2 - a - - - - Adv - adv - - - - Prep - prep - - - - V - V2 - V3 - V2V - V2S - V2Q - V2A - VS - VQ - VA - v - - - - VV - v - - - diff --git a/src/ui/android/res/xml/inflection_fi.xml b/src/ui/android/res/xml/inflection_fi.xml deleted file mode 100644 index 14ea7efef..000000000 --- a/src/ui/android/res/xml/inflection_fi.xml +++ /dev/null @@ -1,540 +0,0 @@ - - - N - N2 - s - - - - A - A2 - a - - - - Adv - adv - - - - Prep - prep - - - - V - V2 - V3 - V2V - V2S - V2Q - V2A - VS - VQ - VA - v - - - diff --git a/src/ui/android/res/xml/inflection_fr.xml b/src/ui/android/res/xml/inflection_fr.xml deleted file mode 100644 index 10bb17282..000000000 --- a/src/ui/android/res/xml/inflection_fr.xml +++ /dev/null @@ -1,242 +0,0 @@ - - - N - N2 - n - - - - - - - - A - A2 - a - - - - - Adv - adv - - - - Prep - prep - - - - V - V2 - V3 - V2V - V2S - V2Q - V2A - VV - VS - VQ - VA - v - - - diff --git a/src/ui/android/res/xml/inflection_sv.xml b/src/ui/android/res/xml/inflection_sv.xml deleted file mode 100644 index e05774f6e..000000000 --- a/src/ui/android/res/xml/inflection_sv.xml +++ /dev/null @@ -1,248 +0,0 @@ - - - N - N2 - s - - - - A - A2 - a - - - - Adv - adv - - - - Prep - prep - - - - V - V2 - V3 - V2V - V2S - V2Q - V2A - VV - VS - VQ - VA - v - - - diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Language.java b/src/ui/android/src/org/grammaticalframework/ui/android/Language.java index 6b63bb8f2..51f4c39fa 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Language.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Language.java @@ -8,15 +8,13 @@ public class Language implements Serializable { private final String mLangCode; private final String mLangName; private final String mConcrete; - private final int mInflResource; private final int mKeyboardResource; public Language(String langCode, String langName, String concrete, - int inflResource, int keyboardResource) { + int keyboardResource) { mLangCode = langCode; mLangName = langName; mConcrete = concrete; - mInflResource = inflResource; mKeyboardResource = keyboardResource; } @@ -27,11 +25,7 @@ public class Language implements Serializable { public String getLangName() { return mLangName; } - - public int getInflectionResource() { - return mInflResource; - } - + public int getKeyboardResource() { return mKeyboardResource; } diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/TTS.java b/src/ui/android/src/org/grammaticalframework/ui/android/TTS.java index 2a77c950a..e52f9cdee 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/TTS.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/TTS.java @@ -23,6 +23,9 @@ public class TTS { // TODO: handle speak() calls before service connects public void speak(String language, String text) { if (mAudioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL) { + if (language.equals("cmn-Hans-CN")) { + language = "yue"; + } Locale locale = LocaleUtils.parseJavaLocale(language.replace('-', '_'), Locale.getDefault()); diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java index e6f64146f..d84aa4e55 100644 --- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java +++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java @@ -26,19 +26,18 @@ public class Translator { private static final String TAG = "Translator"; // TODO: allow changing - private String mGrammar = "Parse8.pgf"; + private String mGrammar = "ParseEngAbs.pgf"; // TODO: build dynamically? private Language[] mLanguages = { - - new Language("en-US", "English", "ParseEng", R.xml.inflection_en, R.xml.qwerty), - new Language("bg-BG", "Bulgarian", "ParseBul", R.xml.inflection_bg, R.xml.cyrillic), - new Language("cmn-Hans-CN", "Chinese", "ParseChi", R.xml.inflection_cmn, R.xml.qwerty), - new Language("fi-FI", "Finnish", "ParseFin", R.xml.inflection_fi, R.xml.qwerty), - new Language("fr-FR", "French", "ParseFre", R.xml.inflection_fr, R.xml.qwerty), - new Language("de-DE", "German", "ParseGer", 0, R.xml.qwerty), - new Language("hi-IN", "Hindi", "ParseHin", 0, R.xml.qwerty), /// - new Language("sv-SE", "Swedish", "ParseSwe", R.xml.inflection_sv, R.xml.qwerty), + new Language("en-US", "English", "ParseEng", R.xml.qwerty), + new Language("bg-BG", "Bulgarian", "ParseBul", R.xml.cyrillic), + new Language("cmn-Hans-CN", "Chinese", "ParseChi", R.xml.qwerty), + new Language("fr-FR", "French", "ParseFre", R.xml.qwerty), + new Language("de-DE", "German", "ParseGer", R.xml.qwerty), + new Language("hi-IN", "Hindi", "ParseHin", R.xml.qwerty), /// + new Language("sv-SE", "Swedish", "ParseSwe", R.xml.qwerty), + new Language("fi-FI", "Finnish", "ParseFin", R.xml.qwerty), }; private Context mContext; @@ -254,208 +253,44 @@ public class Translator { } } - private String getLemmaTag(String lemma) { - String cat = getGrammar().getFunctionType(lemma).getCategory(); - - int res = getTargetLanguage().getInflectionResource(); - if (res == 0) - return ""; - - XmlResourceParser parser = mContext.getResources().getXml(res); - - try { - int state = 0; - int event = parser.next(); - String tag = null; - boolean found = false; - while (event != XmlResourceParser.END_DOCUMENT) { - switch (event) { - case XmlResourceParser.START_TAG: - if (state == 0 && "inflection".equals(parser.getName())) { - state = 1; - tag = null; - found = false; - } else if (state == 1 && "cat".equals(parser.getName())) { - state = 2; - } else if (state == 1 && "tag".equals(parser.getName())) { - state = 3; - } else if (state == 1 && "template".equals(parser.getName())) { - state = 4; - } - break; - case XmlResourceParser.END_TAG: - if (state == 1 && "inflection".equals(parser.getName())) { - state = 0; - if (found) - return tag+"."; - } else if (state == 2 && "cat".equals(parser.getName())) { - state = 1; - } else if (state == 3 && "tag".equals(parser.getName())) { - state = 1; - } else if (state == 4 && "template".equals(parser.getName())) { - state = 1; - } - break; - case XmlResourceParser.TEXT: - if (state == 2) { - if (cat.equals(parser.getText())) { - found = true; - } - } else if (state == 3) { - tag = parser.getText(); - } - break; - } - event = parser.next(); - } - } catch (IOException e) { - Log.e(TAG, "getLemmaTag", e); - } catch (XmlPullParserException e) { - Log.e(TAG, "getLemmaTag", e); - } finally { - parser.close(); - } - - return ""; - } - public String generateLexiconEntry(String lemma) { - Expr e = Expr.readExpr(lemma); Concr sourceLang = getSourceConcr(); Concr targetLang = getTargetConcr(); - if (targetLang.hasLinearization(lemma)) - return sourceLang.linearize(e) + " - " + getLemmaTag(lemma) + " " + targetLang.linearize(e); - else - return sourceLang.linearize(e) + " " + getLemmaTag(lemma); + String cat = getGrammar().getFunctionType(lemma).getCategory(); + + Expr e1 = Expr.readExpr(lemma); + Expr e2 = Expr.readExpr("MkTag (Inflection"+cat+" "+lemma+")"); + + if (targetLang.hasLinearization("Inflection"+cat)) { + if (targetLang.hasLinearization(lemma)) + return sourceLang.linearize(e1) + " - " + targetLang.linearize(e2) + ". " + targetLang.linearize(e1); + else + return sourceLang.linearize(e1) + " " + targetLang.linearize(e2)+"."; + } else { + if (targetLang.hasLinearization(lemma)) + return sourceLang.linearize(e1) + " - " + targetLang.linearize(e1); + else + return sourceLang.linearize(e1); + } } public String getInflectionTable(String lemma) { Concr targetLang = getTargetConcr(); - + String cat = getGrammar().getFunctionType(lemma).getCategory(); + if (!targetLang.hasLinearization(lemma)) return null; - int res = getTargetLanguage().getInflectionResource(); - if (res == 0) - return ""; + if (!targetLang.hasLinearization("Inflection"+cat)) + return null; - Map> cache = new HashMap>(); + Expr e = Expr.readExpr("MkDocument \"\" (Inflection"+cat+" "+lemma+") \"\""); + String html = + "" + + targetLang.linearize(e) + + ""; - String cat = getGrammar().getFunctionType(lemma).getCategory(); - - XmlResourceParser parser = mContext.getResources().getXml(res); - StringBuilder builder = new StringBuilder(); - builder.append(""); - - try { - int state = 0; - int event = parser.next(); - boolean emit = false; - boolean form = false; - boolean lin = false; - String formName = null; - StringBuilder abstrBuilder = null; - while (event != XmlResourceParser.END_DOCUMENT) { - switch (event) { - case XmlResourceParser.START_TAG: - if (state == 0 && "inflection".equals(parser.getName())) { - state = 1; - } else if (state == 1 && "cat".equals(parser.getName())) { - state = 2; - } else if (state == 1 && "template".equals(parser.getName())) { - state = 4; - } else if (state == 4 && "form".equals(parser.getName())) { - form = true; - } else if (state == 4 && emit && "lin".equals(parser.getName())) { - lin = true; - emit = false; - abstrBuilder = new StringBuilder(); - formName = parser.getAttributeValue(null, "form"); - } else if (state == 4 && lin && "cat".equals(parser.getName())) { - abstrBuilder.append(cat); - } else if (state == 4 && lin && "lemma".equals(parser.getName())) { - abstrBuilder.append(lemma); - } else if (state == 4 && emit) { - builder.append("<"+parser.getName()); - int n_attrs = parser.getAttributeCount(); - for (int i = 0; i < n_attrs; i++) { - builder.append(' '); - builder.append(parser.getAttributeName(i)); - builder.append("=\""); - builder.append(parser.getAttributeValue(i)); - builder.append("\""); - } - builder.append(">"); - } - break; - case XmlResourceParser.END_TAG: - if (state == 1 && "inflection".equals(parser.getName())) { - state = 0; - } else if (state == 2 && "cat".equals(parser.getName())) { - state = 1; - } else if (state == 4 && "template".equals(parser.getName())) { - state = 1; - emit = false; - } else if (state == 4 && "form".equals(parser.getName())) { - form = false; - } else if (state == 4 && lin && "lin".equals(parser.getName())) { - String s = abstrBuilder.toString(); - if (formName == null) { - Expr expr = Expr.readExpr(s); - builder.append(TextUtils.htmlEncode(targetLang.linearize(expr))); - } else { - Map elins = cache.get(s); - if (elins == null) { - Expr expr = Expr.readExpr(s); - elins = targetLang.tabularLinearize(expr); - cache.put(s, elins); - } - String elin = elins.get(formName); - builder.append(TextUtils.htmlEncode(elin)); - } - - lin = false; - emit = true; - } else if (state == 4 && emit) { - builder.append(""); - } - break; - case XmlResourceParser.TEXT: - if (state == 2) { - if (cat.equals(parser.getText())) - emit = true; - } else if (state == 4 && emit) { - if (form) { - Map elins = cache.get(lemma); - if (elins == null) { - Expr expr = Expr.readExpr(lemma); - elins = targetLang.tabularLinearize(expr); - cache.put(lemma, elins); - } - String s = elins.get(parser.getText()); - if (s != null) - builder.append(TextUtils.htmlEncode(s)); - } else { - builder.append(parser.getText()); - } - } else if (state == 4 && lin) { - abstrBuilder.append(parser.getText()); - } - break; - } - event = parser.next(); - } - } catch (IOException e) { - e.printStackTrace(); - } catch (XmlPullParserException e) { - e.printStackTrace(); - } finally { - parser.close(); - } - - builder.append(""); - - return builder.toString(); + return html; } public List lookupMorpho(String sentence) {