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
- същ
-
- Съществително Feat()
-
-
-
- Прилагателно
-
-
-
-
- A
- A2
- пр
-
- Прилагателно
-
-
- Наречие
-
-
-
-
- Adv
- нар
-
- Наречие
-
-
-
-
- Prep
- пр
-
- Предлог
-
-
-
-
- V
- V2
- V3
- V2V
- V2S
- V2Q
- V2A
- VV
- VS
- VQ
- VA
- гл
-
- Глагол
- Feat ()
-
- Несвършен вид
-
- Изявително наклонение
-
- Сегашно време
-
-
- Минало свършено време (аорист)
-
-
- Минало несвършено време (имперфект)
-
-
- Повелително наклонение
-
-
- Причастия (отглаголни прилагателни)
-
- Минало страдателно причастие
-
-
- Минало свършено деятелно причастие
-
-
- Минало несвършено деятелно причастие
-
-
- Сегашно деятелно причастие
-
-
- Свършен вид
- Изявително наклонение
-
- Сегашно време
-
-
- Минало свършено време (аорист)
-
-
- Минало несвършено време (имперфект)
-
-
- Повелително наклонение
-
-
- Причастия (отглаголни прилагателни)
-
- Минало свършено деятелно причастие
-
-
- Минало несвършено деятелно причастие
-
-
- Отглаголно съществително
-
-
- Деепричастие (отглаголно наречие)
-
-
-
-
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
-
- Noun
-
-
-
-
-
- A
- A2
- a
-
- Adjective
-
-
-
-
-
- Adv
- adv
-
- Adverb
-
-
-
-
- Prep
- prep
-
- Preposition
- -
-
-
-
- V
- V2
- V3
- V2V
- V2S
- V2Q
- V2A
- VV
- VS
- VQ
- VA
- v
-
- Verb
-
-
-
-
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
-
- Noun Feat()
-
-
-
-
-
- A
- A2
- a
-
- Adjective
-
-
- Adverb
-
-
-
-
- Adv
- adv
-
- Adverb
-
-
-
-
- Prep
- prep
-
- Preposition
-
-
-
-
- V
- V2
- V3
- V2V
- V2S
- V2Q
- V2A
- VS
- VQ
- VA
- v
-
- Verb
- Feat ()
-
-
-
-
- VV
- v
-
- Verb
- Feat ()
-
-
-
-
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
-
- Substantiivi
-
-
-
-
-
- A
- A2
- a
-
- Adjektiivi
- Positiivi
-
-
- Komparatiivi
-
-
- Superlatiivi
-
-
-
-
-
-
-
-
- Adv
- adv
-
- Adverbi
-
-
-
- Prep
- prep
-
- Prepositio
-
-
-
- V
- V2
- V3
- V2V
- V2S
- V2Q
- V2A
- VS
- VQ
- VA
- v
-
- Verbi
- Finiittimuodot
-
-
- Nominaalimuodot
-
-
-
-
-
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
-
-
-
-Nom
-
-DetCN (DetQuant IndefArt NumSg) (UseN ())
-
-
-
-
-
-
-
-
-
-
-
- A
- A2
- a
-
-
-Adjectif
-
-
-
-
-
- Adv
- adv
-
- Adverb
-
-
-
-
- Prep
- prep
-
- Preposition
-
-
-
-
- V
- V2
- V3
- V2V
- V2S
- V2Q
- V2A
- VV
- VS
- VQ
- VA
- v
-
-
-
-Verbe
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
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
-
- Substantiv Feat()
-
-
-
-
-
- A
- A2
- a
-
- Adjektiv
-
-
-
-
-
- Adv
- adv
-
- Adverb
-
-
-
-
- Prep
- prep
-
- Preposition
-
-
-
-
- V
- V2
- V3
- V2V
- V2S
- V2Q
- V2A
- VV
- VS
- VQ
- VA
- v
-
- Verb
- Feat ()
-
-
- Particip Presens
-
-
- Particip Perfekt
-
-
-
-
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(""+parser.getName()+">");
- }
- 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) {