summaryrefslogtreecommitdiff
path: root/src/ui
diff options
context:
space:
mode:
authorkr.angelov <kr.angelov@gmail.com>2013-11-27 22:16:05 +0000
committerkr.angelov <kr.angelov@gmail.com>2013-11-27 22:16:05 +0000
commitf5ec987c5d1fe5b05a84d1f9b20bc70f26a385f0 (patch)
tree2a09acdb54119fdee5ac9403b01c723b500c4315 /src/ui
parenteea636966d2ff59fa4185fa6a25ef3707181522c (diff)
better dictionary visualization in the Android App
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/android/res/xml/inflection_bg.xml1245
-rw-r--r--src/ui/android/res/xml/inflection_cmn.xml161
-rw-r--r--src/ui/android/res/xml/inflection_en.xml193
-rw-r--r--src/ui/android/res/xml/inflection_sv.xml457
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java92
-rw-r--r--src/ui/android/src/org/grammaticalframework/ui/android/Translator.java191
6 files changed, 1262 insertions, 1077 deletions
diff --git a/src/ui/android/res/xml/inflection_bg.xml b/src/ui/android/res/xml/inflection_bg.xml
index 6d666fddf..4b3d599cb 100644
--- a/src/ui/android/res/xml/inflection_bg.xml
+++ b/src/ui/android/res/xml/inflection_bg.xml
@@ -1,615 +1,642 @@
-<inflection_temlate>
- <noun>
- <h1>Съществително</h1>
+<inflection_template>
+ <inflection>
+ <cat>N</cat>
+ <cat>N2</cat>
+ <tag>същ</tag>
+ <template>
+ <h1>Съществително <lin>Feat<cat/>(<lemma/>)</lin></h1>
- <table class="forms-table" rules="all">
- <tr>
- <th rowspan="3">ед.ч.</th>
- <th>нечленувано</th>
- <td><form>s (NF Sg Indef)</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s (NF Sg Def)</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>s NFSgDefNom</form></td>
- </tr>
- <tr>
- <th rowspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s (NF Pl Indef)</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s (NF Pl Def)</form></td>
- </tr>
- <tr>
- <th colspan="2">звателна форма</th>
- <td><form>s NFVocative</form></td>
- </tr>
- <tr>
- <th colspan="2">бройна форма</th>
- <td><form>s NFPlCount</form></td>
- </tr>
- </table>
-
- <h1>Прилагателно</h1>
- <table class="forms-table" rules="all">
- <tr>
- <th rowspan="7">ед.ч.</th>
- <th rowspan="3">м.р.</th>
- <th>нечленувано</th>
- <td><form>rel (ASg Masc Indef)</form></td>
- </tr>
- <tr>
- <th>непълен член</th>
- <td><form>rel (ASg Masc Def)</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>rel ASgMascDefNom</form></td>
- </tr>
- <tr>
- <th rowspan="2">ж.р.</th>
- <th>нечленувано</th>
- <td><form>rel (ASg Fem Indef)</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>rel (ASg Fem Def)</form></td>
- </tr>
- <tr>
- <th rowspan="2">ср.р.</th>
- <th>нечленувано</th>
- <td><form>rel (ASg Neut Indef)</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>rel (ASg Neut Def)</form></td>
- </tr>
- <tr>
- <th rowspan="2" colspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>rel (APl Indef)</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>rel (APl Def)</form></td>
- </tr>
- </table>
- </noun>
- <adjective>
- <h1>Прилагателно</h1>
- <table class="forms-table" rules="all">
- <tr>
- <th rowspan="7">ед.ч.</th>
- <th rowspan="3">м.р.</th>
- <th>нечленувано</th>
- <td><form>s (ASg Masc Indef)</form></td>
- </tr>
- <tr>
- <th>непълен член</th>
- <td><form>s (ASg Masc Def)</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>s ASgMascDefNom</form></td>
- </tr>
- <tr>
- <th rowspan="2">ж.р.</th>
- <th>нечленувано</th>
- <td><form>s (ASg Fem Indef)</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s (ASg Fem Def)</form></td>
- </tr>
- <tr>
- <th rowspan="2">ср.р.</th>
- <th>нечленувано</th>
- <td><form>s (ASg Neut Indef)</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s (ASg Neut Def)</form></td>
- </tr>
- <tr>
- <th rowspan="2" colspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s (APl Indef)</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s (APl Def)</form></td>
- </tr>
- </table>
-
- <h1>Наречие</h1>
- <p><form>adv</form></p>
- </adjective>
- <adverb>
- <h1>Наречие</h1>
- <p><form>s</form></p>
- </adverb>
- <prep>
- <h1>Предлог</h1>
- <p><form>s</form></p>
- </prep>
- <verb>
- <h1>Глагол от несвършен вид</h1>
-
- <h2>Изявително наклонение</h2>
-
- <h3>Сегашно време</h3>
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>ед.ч.</th>
- <th>мн.ч.</th>
- </tr>
- <tr>
- <th>1 л.</th>
- <td><form>s Imperf (VPres Sg P1)</form></td>
- <td><form>s Imperf (VPres Pl P1)</form></td>
- </tr>
- <tr>
- <th>2 л.</th>
- <td><form>s Imperf (VPres Sg P2)</form></td>
- <td><form>s Imperf (VPres Pl P2)</form></td>
- </tr>
- <tr>
- <th>3 л.</th>
- <td><form>s Imperf (VPres Sg P3)</form></td>
- <td><form>s Imperf (VPres Pl P3)</form></td>
- </tr>
- </table>
-
- <h3>Минало свършено време (аорист)</h3>
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>ед.ч.</th>
- <th>мн.ч.</th>
- </tr>
- <tr>
- <th>1 л.</th>
- <td><form>s Imperf (VAorist Sg P1)</form></td>
- <td><form>s Imperf (VAorist Pl P1)</form></td>
- </tr>
- <tr>
- <th>2 л.</th>
- <td><form>s Imperf (VAorist Sg P2)</form></td>
- <td><form>s Imperf (VAorist Pl P2)</form></td>
- </tr>
- <tr>
- <th>3 л.</th>
- <td><form>s Imperf (VAorist Sg P3)</form></td>
- <td><form>s Imperf (VAorist Pl P3)</form></td>
- </tr>
- </table>
-
- <h3>Минало несвършено време (имперфект)</h3>
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>ед.ч.</th>
- <th>мн.ч.</th>
- </tr>
- <tr>
- <th>1 л.</th>
- <td><form>s Imperf (VImperfect Sg P1)</form></td>
- <td><form>s Imperf (VImperfect Pl P1)</form></td>
- </tr>
- <tr>
- <th>2 л.</th>
- <td><form>s Imperf (VImperfect Sg P2)</form></td>
- <td><form>s Imperf (VImperfect Pl P2)</form></td>
- </tr>
- <tr>
- <th>3 л.</th>
- <td><form>s Imperf (VImperfect Sg P3)</form></td>
- <td><form>s Imperf (VImperfect Pl P3)</form></td>
- </tr>
- </table>
-
- <h2>Повелително наклонение</h2>
- <table class="forms-table" rules="all">
- <tr>
- <th>ед.ч.</th>
- <th>мн.ч.</th>
- </tr>
- <tr>
- <td><form>s Imperf (VImperative Sg)</form></td>
- <td><form>s Imperf (VImperative Pl)</form></td>
- </tr>
- </table>
-
- <h2>Причастия (отглаголни прилагателни)</h2>
-
- <h3>Минало страдателно причастие</h3>
<table class="forms-table" rules="all">
- <tr>
- <th rowspan="7">ед.ч.</th>
- <th rowspan="3">м.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPassive (ASg Masc Indef))</form></td>
- </tr>
- <tr>
- <th>непълен член</th>
- <td><form>s Imperf (VPassive (ASg Masc Def))</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>s Imperf (VPassive ASgMascDefNom)</form></td>
- </tr>
- <tr>
- <th rowspan="2">ж.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPassive (ASg Fem Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPassive (ASg Fem Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2">ср.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPassive (ASg Neut Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPassive (ASg Neut Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2" colspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPassive (APl Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPassive (APl Def))</form></td>
- </tr>
- </table>
+ <tr>
+ <th rowspan="3">ед.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s (NF Sg Indef)</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s (NF Sg Def)</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>s NFSgDefNom</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s (NF Pl Indef)</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s (NF Pl Def)</form></td>
+ </tr>
+ <tr>
+ <th colspan="2">звателна форма</th>
+ <td><form>s NFVocative</form></td>
+ </tr>
+ <tr>
+ <th colspan="2">бройна форма</th>
+ <td><form>s NFPlCount</form></td>
+ </tr>
+ </table>
- <h3>Минало свършено деятелно причастие</h3>
+ <h1>Прилагателно</h1>
<table class="forms-table" rules="all">
- <tr>
- <th rowspan="7">ед.ч.</th>
- <th rowspan="3">м.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPerfect (ASg Masc Indef))</form></td>
- </tr>
- <tr>
- <th>непълен член</th>
- <td><form>s Imperf (VPerfect (ASg Masc Def))</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>s Imperf (VPerfect ASgMascDefNom)</form></td>
- </tr>
- <tr>
- <th rowspan="2">ж.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPerfect (ASg Fem Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPerfect (ASg Fem Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2">ср.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPerfect (ASg Neut Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPerfect (ASg Neut Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2" colspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPerfect (APl Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPerfect (APl Def))</form></td>
- </tr>
- </table>
-
- <h3>Минало несвършено деятелно причастие</h3>
- <table class="forms-table" rules="all">
- <tr>
- <th rowspan="7">ед.ч.</th>
- <th rowspan="3">м.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPluPerfect (ASg Masc Indef))</form></td>
- </tr>
- <tr>
- <th>непълен член</th>
- <td><form>s Imperf (VPluPerfect (ASg Masc Def))</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>s Imperf (VPluPerfect ASgMascDefNom)</form></td>
- </tr>
- <tr>
- <th rowspan="2">ж.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPluPerfect (ASg Fem Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPluPerfect (ASg Fem Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2">ср.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPluPerfect (ASg Neut Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPluPerfect (ASg Neut Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2" colspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPluPerfect (APl Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPluPerfect (APl Def))</form></td>
- </tr>
- </table>
-
- <h3>Сегашно деятелно причастие</h3>
+ <tr>
+ <th rowspan="7">ед.ч.</th>
+ <th rowspan="3">м.р.</th>
+ <th>нечленувано</th>
+ <td><form>rel (ASg Masc Indef)</form></td>
+ </tr>
+ <tr>
+ <th>непълен член</th>
+ <td><form>rel (ASg Masc Def)</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>rel ASgMascDefNom</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ж.р.</th>
+ <th>нечленувано</th>
+ <td><form>rel (ASg Fem Indef)</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>rel (ASg Fem Def)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ср.р.</th>
+ <th>нечленувано</th>
+ <td><form>rel (ASg Neut Indef)</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>rel (ASg Neut Def)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2" colspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>rel (APl Indef)</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>rel (APl Def)</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>A</cat>
+ <cat>A2</cat>
+ <tag>пр</tag>
+ <template>
+ <h1>Прилагателно</h1>
<table class="forms-table" rules="all">
- <tr>
- <th rowspan="7">ед.ч.</th>
- <th rowspan="3">м.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPresPart (ASg Masc Indef))</form></td>
- </tr>
- <tr>
- <th>непълен член</th>
- <td><form>s Imperf (VPresPart (ASg Masc Def))</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>s Imperf (VPresPart ASgMascDefNom)</form></td>
- </tr>
- <tr>
- <th rowspan="2">ж.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPresPart (ASg Fem Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPresPart (ASg Fem Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2">ср.р.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPresPart (ASg Neut Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPresPart (ASg Neut Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2" colspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VPresPart (APl Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VPresPart (APl Def))</form></td>
- </tr>
- </table>
-
- <h2>Деепричастие (отглаголно наречие)</h2>
- <p><form>s Imperf VGerund</form></p>
-
- <h1>Глагол от свършен вид</h1>
- <h2>Изявително наклонение</h2>
-
- <h3>Сегашно време</h3>
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>ед.ч.</th>
- <th>мн.ч.</th>
- </tr>
- <tr>
- <th>1 л.</th>
- <td><form>s Perf (VPres Sg P1)</form></td>
- <td><form>s Perf (VPres Pl P1)</form></td>
- </tr>
- <tr>
- <th>2 л.</th>
- <td><form>s Perf (VPres Sg P2)</form></td>
- <td><form>s Perf (VPres Pl P2)</form></td>
- </tr>
- <tr>
- <th>3 л.</th>
- <td><form>s Perf (VPres Sg P3)</form></td>
- <td><form>s Perf (VPres Pl P3)</form></td>
- </tr>
- </table>
-
- <h3>Минало свършено време (аорист)</h3>
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>ед.ч.</th>
- <th>мн.ч.</th>
- </tr>
- <tr>
- <th>1 л.</th>
- <td><form>s Perf (VAorist Sg P1)</form></td>
- <td><form>s Perf (VAorist Pl P1)</form></td>
- </tr>
- <tr>
- <th>2 л.</th>
- <td><form>s Perf (VAorist Sg P2)</form></td>
- <td><form>s Perf (VAorist Pl P2)</form></td>
- </tr>
- <tr>
- <th>3 л.</th>
- <td><form>s Perf (VAorist Sg P3)</form></td>
- <td><form>s Perf (VAorist Pl P3)</form></td>
- </tr>
- </table>
-
- <h3>Минало несвършено време (имперфект)</h3>
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>ед.ч.</th>
- <th>мн.ч.</th>
- </tr>
- <tr>
- <th>1 л.</th>
- <td><form>s Perf (VImperfect Sg P1)</form></td>
- <td><form>s Perf (VImperfect Pl P1)</form></td>
- </tr>
- <tr>
- <th>2 л.</th>
- <td><form>s Perf (VImperfect Sg P2)</form></td>
- <td><form>s Perf (VImperfect Pl P2)</form></td>
- </tr>
- <tr>
- <th>3 л.</th>
- <td><form>s Perf (VImperfect Sg P3)</form></td>
- <td><form>s Perf (VImperfect Pl P3)</form></td>
- </tr>
- </table>
-
- <h2>Повелително наклонение</h2>
- <table class="forms-table" rules="all">
- <tr>
- <th>ед.ч.</th>
- <th>мн.ч.</th>
- </tr>
- <tr>
- <td><form>s Perf (VImperative Sg)</form></td>
- <td><form>s Perf (VImperative Pl)</form></td>
- </tr>
- </table>
-
- <h2>Причастия (отглаголни прилагателни)</h2>
-
- <h3>Минало свършено деятелно причастие</h3>
+ <tr>
+ <th rowspan="7">ед.ч.</th>
+ <th rowspan="3">м.р.</th>
+ <th>нечленувано</th>
+ <td><form>s (ASg Masc Indef)</form></td>
+ </tr>
+ <tr>
+ <th>непълен член</th>
+ <td><form>s (ASg Masc Def)</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>s ASgMascDefNom</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ж.р.</th>
+ <th>нечленувано</th>
+ <td><form>s (ASg Fem Indef)</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s (ASg Fem Def)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ср.р.</th>
+ <th>нечленувано</th>
+ <td><form>s (ASg Neut Indef)</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s (ASg Neut Def)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2" colspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s (APl Indef)</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s (APl Def)</form></td>
+ </tr>
+ </table>
+
+ <h1>Наречие</h1>
+ <p><form>adv</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>Adv</cat>
+ <tag>нар</tag>
+ <template>
+ <h1>Наречие</h1>
+ <p><form>s</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>Prep</cat>
+ <tag>пр</tag>
+ <template>
+ <h1>Предлог</h1>
+ <p><form>s</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>V</cat>
+ <cat>V2</cat>
+ <cat>V3</cat>
+ <cat>V2V</cat>
+ <cat>VV</cat>
+ <cat>VS</cat>
+ <tag>гл</tag>
+ <template>
+ <h1>Глагол от несвършен вид</h1>
+
+ <h2>Изявително наклонение</h2>
+
+ <h3>Сегашно време</h3>
<table class="forms-table" rules="all">
- <tr>
- <th rowspan="7">ед.ч.</th>
- <th rowspan="3">м.р.</th>
- <th>нечленувано</th>
- <td><form>s Perf (VPerfect (ASg Masc Indef))</form></td>
- </tr>
- <tr>
- <th>непълен член</th>
- <td><form>s Perf (VPerfect (ASg Masc Def))</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>s Perf (VPerfect ASgMascDefNom)</form></td>
- </tr>
- <tr>
- <th rowspan="2">ж.р.</th>
- <th>нечленувано</th>
- <td><form>s Perf (VPerfect (ASg Fem Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Perf (VPerfect (ASg Fem Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2">ср.р.</th>
- <th>нечленувано</th>
- <td><form>s Perf (VPerfect (ASg Neut Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Perf (VPerfect (ASg Neut Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2" colspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s Perf (VPerfect (APl Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Perf (VPerfect (APl Def))</form></td>
- </tr>
- </table>
-
- <h3>Минало несвършено деятелно причастие</h3>
- <table class="forms-table" rules="all">
- <tr>
- <th rowspan="7">ед.ч.</th>
- <th rowspan="3">м.р.</th>
- <th>нечленувано</th>
- <td><form>s Perf (VPluPerfect (ASg Masc Indef))</form></td>
- </tr>
- <tr>
- <th>непълен член</th>
- <td><form>s Perf (VPluPerfect (ASg Masc Def))</form></td>
- </tr>
- <tr>
- <th>пълен член</th>
- <td><form>s Perf (VPluPerfect ASgMascDefNom)</form></td>
- </tr>
- <tr>
- <th rowspan="2">ж.р.</th>
- <th>нечленувано</th>
- <td><form>s Perf (VPluPerfect (ASg Fem Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Perf (VPluPerfect (ASg Fem Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2">ср.р.</th>
- <th>нечленувано</th>
- <td><form>s Perf (VPluPerfect (ASg Neut Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Perf (VPluPerfect (ASg Neut Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2" colspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s Perf (VPluPerfect (APl Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Perf (VPluPerfect (APl Def))</form></td>
- </tr>
- </table>
-
- <h1>Отглаголно съществително</h1>
- <table class="forms-table" rules="all">
- <tr>
- <th rowspan="2">ед.ч.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VNoun (NF Sg Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VNoun (NF Sg Def))</form></td>
- </tr>
- <tr>
- <th rowspan="2">мн.ч.</th>
- <th>нечленувано</th>
- <td><form>s Imperf (VNoun (NF Pl Indef))</form></td>
- </tr>
- <tr>
- <th>членувано</th>
- <td><form>s Imperf (VNoun (NF Pl Def))</form></td>
- </tr>
- </table>
- </verb>
-</inflection_temlate>
+ <tr>
+ <th></th>
+ <th>ед.ч.</th>
+ <th>мн.ч.</th>
+ </tr>
+ <tr>
+ <th>1 л.</th>
+ <td><form>s Imperf (VPres Sg P1)</form></td>
+ <td><form>s Imperf (VPres Pl P1)</form></td>
+ </tr>
+ <tr>
+ <th>2 л.</th>
+ <td><form>s Imperf (VPres Sg P2)</form></td>
+ <td><form>s Imperf (VPres Pl P2)</form></td>
+ </tr>
+ <tr>
+ <th>3 л.</th>
+ <td><form>s Imperf (VPres Sg P3)</form></td>
+ <td><form>s Imperf (VPres Pl P3)</form></td>
+ </tr>
+ </table>
+
+ <h3>Минало свършено време (аорист)</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th></th>
+ <th>ед.ч.</th>
+ <th>мн.ч.</th>
+ </tr>
+ <tr>
+ <th>1 л.</th>
+ <td><form>s Imperf (VAorist Sg P1)</form></td>
+ <td><form>s Imperf (VAorist Pl P1)</form></td>
+ </tr>
+ <tr>
+ <th>2 л.</th>
+ <td><form>s Imperf (VAorist Sg P2)</form></td>
+ <td><form>s Imperf (VAorist Pl P2)</form></td>
+ </tr>
+ <tr>
+ <th>3 л.</th>
+ <td><form>s Imperf (VAorist Sg P3)</form></td>
+ <td><form>s Imperf (VAorist Pl P3)</form></td>
+ </tr>
+ </table>
+
+ <h3>Минало несвършено време (имперфект)</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th></th>
+ <th>ед.ч.</th>
+ <th>мн.ч.</th>
+ </tr>
+ <tr>
+ <th>1 л.</th>
+ <td><form>s Imperf (VImperfect Sg P1)</form></td>
+ <td><form>s Imperf (VImperfect Pl P1)</form></td>
+ </tr>
+ <tr>
+ <th>2 л.</th>
+ <td><form>s Imperf (VImperfect Sg P2)</form></td>
+ <td><form>s Imperf (VImperfect Pl P2)</form></td>
+ </tr>
+ <tr>
+ <th>3 л.</th>
+ <td><form>s Imperf (VImperfect Sg P3)</form></td>
+ <td><form>s Imperf (VImperfect Pl P3)</form></td>
+ </tr>
+ </table>
+
+ <h2>Повелително наклонение</h2>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th>ед.ч.</th>
+ <th>мн.ч.</th>
+ </tr>
+ <tr>
+ <td><form>s Imperf (VImperative Sg)</form></td>
+ <td><form>s Imperf (VImperative Pl)</form></td>
+ </tr>
+ </table>
+
+ <h2>Причастия (отглаголни прилагателни)</h2>
+
+ <h3>Минало страдателно причастие</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th rowspan="7">ед.ч.</th>
+ <th rowspan="3">м.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPassive (ASg Masc Indef))</form></td>
+ </tr>
+ <tr>
+ <th>непълен член</th>
+ <td><form>s Imperf (VPassive (ASg Masc Def))</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>s Imperf (VPassive ASgMascDefNom)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ж.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPassive (ASg Fem Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPassive (ASg Fem Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ср.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPassive (ASg Neut Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPassive (ASg Neut Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2" colspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPassive (APl Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPassive (APl Def))</form></td>
+ </tr>
+ </table>
+
+ <h3>Минало свършено деятелно причастие</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th rowspan="7">ед.ч.</th>
+ <th rowspan="3">м.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPerfect (ASg Masc Indef))</form></td>
+ </tr>
+ <tr>
+ <th>непълен член</th>
+ <td><form>s Imperf (VPerfect (ASg Masc Def))</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>s Imperf (VPerfect ASgMascDefNom)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ж.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPerfect (ASg Fem Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPerfect (ASg Fem Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ср.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPerfect (ASg Neut Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPerfect (ASg Neut Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2" colspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPerfect (APl Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPerfect (APl Def))</form></td>
+ </tr>
+ </table>
+
+ <h3>Минало несвършено деятелно причастие</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th rowspan="7">ед.ч.</th>
+ <th rowspan="3">м.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPluPerfect (ASg Masc Indef))</form></td>
+ </tr>
+ <tr>
+ <th>непълен член</th>
+ <td><form>s Imperf (VPluPerfect (ASg Masc Def))</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>s Imperf (VPluPerfect ASgMascDefNom)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ж.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPluPerfect (ASg Fem Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPluPerfect (ASg Fem Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ср.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPluPerfect (ASg Neut Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPluPerfect (ASg Neut Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2" colspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPluPerfect (APl Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPluPerfect (APl Def))</form></td>
+ </tr>
+ </table>
+
+ <h3>Сегашно деятелно причастие</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th rowspan="7">ед.ч.</th>
+ <th rowspan="3">м.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPresPart (ASg Masc Indef))</form></td>
+ </tr>
+ <tr>
+ <th>непълен член</th>
+ <td><form>s Imperf (VPresPart (ASg Masc Def))</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>s Imperf (VPresPart ASgMascDefNom)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ж.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPresPart (ASg Fem Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPresPart (ASg Fem Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ср.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPresPart (ASg Neut Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPresPart (ASg Neut Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2" colspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VPresPart (APl Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VPresPart (APl Def))</form></td>
+ </tr>
+ </table>
+
+ <h2>Деепричастие (отглаголно наречие)</h2>
+ <p><form>s Imperf VGerund</form></p>
+
+ <h1>Глагол от свършен вид</h1>
+ <h2>Изявително наклонение</h2>
+
+ <h3>Сегашно време</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th></th>
+ <th>ед.ч.</th>
+ <th>мн.ч.</th>
+ </tr>
+ <tr>
+ <th>1 л.</th>
+ <td><form>s Perf (VPres Sg P1)</form></td>
+ <td><form>s Perf (VPres Pl P1)</form></td>
+ </tr>
+ <tr>
+ <th>2 л.</th>
+ <td><form>s Perf (VPres Sg P2)</form></td>
+ <td><form>s Perf (VPres Pl P2)</form></td>
+ </tr>
+ <tr>
+ <th>3 л.</th>
+ <td><form>s Perf (VPres Sg P3)</form></td>
+ <td><form>s Perf (VPres Pl P3)</form></td>
+ </tr>
+ </table>
+
+ <h3>Минало свършено време (аорист)</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th></th>
+ <th>ед.ч.</th>
+ <th>мн.ч.</th>
+ </tr>
+ <tr>
+ <th>1 л.</th>
+ <td><form>s Perf (VAorist Sg P1)</form></td>
+ <td><form>s Perf (VAorist Pl P1)</form></td>
+ </tr>
+ <tr>
+ <th>2 л.</th>
+ <td><form>s Perf (VAorist Sg P2)</form></td>
+ <td><form>s Perf (VAorist Pl P2)</form></td>
+ </tr>
+ <tr>
+ <th>3 л.</th>
+ <td><form>s Perf (VAorist Sg P3)</form></td>
+ <td><form>s Perf (VAorist Pl P3)</form></td>
+ </tr>
+ </table>
+
+ <h3>Минало несвършено време (имперфект)</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th></th>
+ <th>ед.ч.</th>
+ <th>мн.ч.</th>
+ </tr>
+ <tr>
+ <th>1 л.</th>
+ <td><form>s Perf (VImperfect Sg P1)</form></td>
+ <td><form>s Perf (VImperfect Pl P1)</form></td>
+ </tr>
+ <tr>
+ <th>2 л.</th>
+ <td><form>s Perf (VImperfect Sg P2)</form></td>
+ <td><form>s Perf (VImperfect Pl P2)</form></td>
+ </tr>
+ <tr>
+ <th>3 л.</th>
+ <td><form>s Perf (VImperfect Sg P3)</form></td>
+ <td><form>s Perf (VImperfect Pl P3)</form></td>
+ </tr>
+ </table>
+
+ <h2>Повелително наклонение</h2>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th>ед.ч.</th>
+ <th>мн.ч.</th>
+ </tr>
+ <tr>
+ <td><form>s Perf (VImperative Sg)</form></td>
+ <td><form>s Perf (VImperative Pl)</form></td>
+ </tr>
+ </table>
+
+ <h2>Причастия (отглаголни прилагателни)</h2>
+
+ <h3>Минало свършено деятелно причастие</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th rowspan="7">ед.ч.</th>
+ <th rowspan="3">м.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Perf (VPerfect (ASg Masc Indef))</form></td>
+ </tr>
+ <tr>
+ <th>непълен член</th>
+ <td><form>s Perf (VPerfect (ASg Masc Def))</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>s Perf (VPerfect ASgMascDefNom)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ж.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Perf (VPerfect (ASg Fem Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Perf (VPerfect (ASg Fem Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ср.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Perf (VPerfect (ASg Neut Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Perf (VPerfect (ASg Neut Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2" colspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s Perf (VPerfect (APl Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Perf (VPerfect (APl Def))</form></td>
+ </tr>
+ </table>
+
+ <h3>Минало несвършено деятелно причастие</h3>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th rowspan="7">ед.ч.</th>
+ <th rowspan="3">м.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Perf (VPluPerfect (ASg Masc Indef))</form></td>
+ </tr>
+ <tr>
+ <th>непълен член</th>
+ <td><form>s Perf (VPluPerfect (ASg Masc Def))</form></td>
+ </tr>
+ <tr>
+ <th>пълен член</th>
+ <td><form>s Perf (VPluPerfect ASgMascDefNom)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ж.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Perf (VPluPerfect (ASg Fem Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Perf (VPluPerfect (ASg Fem Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">ср.р.</th>
+ <th>нечленувано</th>
+ <td><form>s Perf (VPluPerfect (ASg Neut Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Perf (VPluPerfect (ASg Neut Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2" colspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s Perf (VPluPerfect (APl Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Perf (VPluPerfect (APl Def))</form></td>
+ </tr>
+ </table>
+
+ <h1>Отглаголно съществително</h1>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th rowspan="2">ед.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VNoun (NF Sg Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VNoun (NF Sg Def))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">мн.ч.</th>
+ <th>нечленувано</th>
+ <td><form>s Imperf (VNoun (NF Pl Indef))</form></td>
+ </tr>
+ <tr>
+ <th>членувано</th>
+ <td><form>s Imperf (VNoun (NF Pl Def))</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+</inflection_template>
diff --git a/src/ui/android/res/xml/inflection_cmn.xml b/src/ui/android/res/xml/inflection_cmn.xml
index fa3fa7c8b..58cb7607c 100644
--- a/src/ui/android/res/xml/inflection_cmn.xml
+++ b/src/ui/android/res/xml/inflection_cmn.xml
@@ -1,67 +1,94 @@
-<inflection_temlate>
- <noun>
- <h1>Noun</h1>
-
- <table class="forms-table" rules="all">
- <tr>
- <th>s</th>
- <td><form>s</form></td>
- </tr>
- <tr>
- <th>c</th>
- <td><form>c</form></td>
- </tr>
- </table>
- </noun>
- <adjective>
- <h1>Adjective</h1>
-
- <table class="forms-table" rules="all">
- <tr>
- <th>s</th>
- <td><form>s</form></td>
- </tr>
- </table>
- </adjective>
- <adverb>
- <h1>Adverb</h1>
- <p><form>s</form></p>
- </adverb>
- <prep>
- <h1>Preposition</h1>
- <p><form>prepPre</form> - <form>prepPost</form></p>
- </prep>
- <verb>
- <h1>Verb</h1>
- <table class="forms-table" rules="all">
- <tr>
- <th>s</th>
- <td><form>s</form></td>
- </tr>
- <tr>
- <th>dp</th>
- <td><form>dp</form></td>
- </tr>
- <tr>
- <th>ds</th>
- <td><form>ds</form></td>
- </tr>
- <tr>
- <th>ep</th>
- <td><form>ep</form></td>
- </tr>
- <tr>
- <th>neg</th>
- <td><form>neg</form></td>
- </tr>
- <tr>
- <th>pp</th>
- <td><form>pp</form></td>
- </tr>
- <tr>
- <th>sn</th>
- <td><form>sn</form></td>
- </tr>
- </table>
- </verb>
-</inflection_temlate>
+<inflection_template>
+ <inflection>
+ <cat>N</cat>
+ <cat>N2</cat>
+ <tag>n</tag>
+ <template>
+ <h1>Noun</h1>
+
+ <table class="forms-table" rules="all">
+ <tr>
+ <th>s</th>
+ <td><form>s</form></td>
+ </tr>
+ <tr>
+ <th>c</th>
+ <td><form>c</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>A</cat>
+ <cat>A2</cat>
+ <tag>a</tag>
+ <template>
+ <h1>Adjective</h1>
+
+ <table class="forms-table" rules="all">
+ <tr>
+ <th>s</th>
+ <td><form>s</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>Adv</cat>
+ <tag>adv</tag>
+ <template>
+ <h1>Adverb</h1>
+ <p><form>s</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>Prep</cat>
+ <tag>prep</tag>
+ <template>
+ <h1>Preposition</h1>
+ <p><form>prepPre</form> - <form>prepPost</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>V</cat>
+ <cat>V2</cat>
+ <cat>V3</cat>
+ <cat>V2V</cat>
+ <cat>VV</cat>
+ <cat>VS</cat>
+ <tag>v</tag>
+ <template>
+ <h1>Verb</h1>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th>s</th>
+ <td><form>s</form></td>
+ </tr>
+ <tr>
+ <th>dp</th>
+ <td><form>dp</form></td>
+ </tr>
+ <tr>
+ <th>ds</th>
+ <td><form>ds</form></td>
+ </tr>
+ <tr>
+ <th>ep</th>
+ <td><form>ep</form></td>
+ </tr>
+ <tr>
+ <th>neg</th>
+ <td><form>neg</form></td>
+ </tr>
+ <tr>
+ <th>pp</th>
+ <td><form>pp</form></td>
+ </tr>
+ <tr>
+ <th>sn</th>
+ <td><form>sn</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+</inflection_template>
diff --git a/src/ui/android/res/xml/inflection_en.xml b/src/ui/android/res/xml/inflection_en.xml
index 83ea1259c..47ec449a5 100644
--- a/src/ui/android/res/xml/inflection_en.xml
+++ b/src/ui/android/res/xml/inflection_en.xml
@@ -1,84 +1,111 @@
-<inflection_temlate>
- <noun>
- <h1>Noun</h1>
+<inflection_template>
+ <inflection>
+ <cat>N</cat>
+ <cat>N2</cat>
+ <tag>n</tag>
+ <template>
+ <h1>Noun</h1>
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>nom</th>
- <th>gen</th>
- </tr>
- <tr>
- <th>sg</th>
- <td><form>s Sg Nom</form></td>
- <td><form>s Sg Gen</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s Pl Nom</form></td>
- <td><form>s Pl Gen</form></td>
- </tr>
- </table>
- </noun>
- <adjective>
- <h1>Adjective</h1>
-
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>nom</th>
- <th>gen</th>
- </tr>
- <tr>
- <th>posit</th>
- <td><form>s (AAdj Posit Nom)</form></td>
- <td><form>s (AAdj Posit Gen)</form></td>
- </tr>
- <tr>
- <th>compar</th>
- <td><form>s (AAdj Compar Nom)</form></td>
- <td><form>s (AAdj Compar Gen)</form></td>
- </tr>
- <tr>
- <th>superl</th>
- <td><form>s (AAdj Superl Nom)</form></td>
- <td><form>s (AAdj Superl Gen)</form></td>
- </tr>
- </table>
- <h1>Adverb</h1>
- <p><form>s AAdv</form></p>
- </adjective>
- <adverb>
- <h1>Adverb</h1>
- <p><form>s</form></p>
- </adverb>
- <prep>
- <h1>Preposition</h1>
- <p><form>s</form></p>
- </prep>
- <verb>
- <h1>Verb</h1>
- <table class="forms-table" rules="all">
- <tr>
- <th>infitive</th>
- <td><form>s VInf</form></td>
- </tr>
- <tr>
- <th>present</th>
- <td><form>s VPres</form></td>
- </tr>
- <tr>
- <th>past</th>
- <td><form>s VPast</form></td>
- </tr>
- <tr>
- <th>past part.</th>
- <td><form>s VPPart</form></td>
- </tr>
- <tr>
- <th>present part.</th>
- <td><form>s VPresPart</form></td>
- </tr>
- </table>
- </verb>
-</inflection_temlate>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th></th>
+ <th>nom</th>
+ <th>gen</th>
+ </tr>
+ <tr>
+ <th>sg</th>
+ <td><form>s Sg Nom</form></td>
+ <td><form>s Sg Gen</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s Pl Nom</form></td>
+ <td><form>s Pl Gen</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>A</cat>
+ <cat>A2</cat>
+ <tag>a</tag>
+ <template>
+ <h1>Adjective</h1>
+
+ <table class="forms-table" rules="all">
+ <tr>
+ <th></th>
+ <th>nom</th>
+ <th>gen</th>
+ </tr>
+ <tr>
+ <th>posit</th>
+ <td><form>s (AAdj Posit Nom)</form></td>
+ <td><form>s (AAdj Posit Gen)</form></td>
+ </tr>
+ <tr>
+ <th>compar</th>
+ <td><form>s (AAdj Compar Nom)</form></td>
+ <td><form>s (AAdj Compar Gen)</form></td>
+ </tr>
+ <tr>
+ <th>superl</th>
+ <td><form>s (AAdj Superl Nom)</form></td>
+ <td><form>s (AAdj Superl Gen)</form></td>
+ </tr>
+ </table>
+ <h1>Adverb</h1>
+ <p><form>s AAdv</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>Adv</cat>
+ <tag>adv</tag>
+ <template>
+ <h1>Adverb</h1>
+ <p><form>s</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>Prep</cat>
+ <tag>prep</tag>
+ <template>
+ <h1>Preposition</h1>
+ <p><form>s</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>V</cat>
+ <cat>V2</cat>
+ <cat>V3</cat>
+ <cat>V2V</cat>
+ <cat>VV</cat>
+ <cat>VS</cat>
+ <tag>v</tag>
+ <template>
+ <h1>Verb</h1>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th>infitive</th>
+ <td><form>s VInf</form></td>
+ </tr>
+ <tr>
+ <th>present</th>
+ <td><form>s VPres</form></td>
+ </tr>
+ <tr>
+ <th>past</th>
+ <td><form>s VPast</form></td>
+ </tr>
+ <tr>
+ <th>past part.</th>
+ <td><form>s VPPart</form></td>
+ </tr>
+ <tr>
+ <th>present part.</th>
+ <td><form>s VPresPart</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+</inflection_template>
diff --git a/src/ui/android/res/xml/inflection_sv.xml b/src/ui/android/res/xml/inflection_sv.xml
index 578cc8ee7..229762cae 100644
--- a/src/ui/android/res/xml/inflection_sv.xml
+++ b/src/ui/android/res/xml/inflection_sv.xml
@@ -1,215 +1,242 @@
-<inflection_temlate>
- <noun>
- <h1>Substantiv</h1>
-
- <table class="forms-table" rules="all">
- <tr>
- <th colspan="2"></th>
- <th>obest</th>
- <th>best</th>
- </tr>
- <tr>
- <th rowspan="2">nom</th>
- <th>sg</th>
- <td><form>s Sg Indef Nom</form></td>
- <td><form>s Sg Def Nom</form></td>
-
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s Pl Indef Nom</form></td>
- <td><form>s Pl Def Nom</form></td>
- </tr>
- <tr>
- <th rowspan="2">gen</th>
- <th>sg</th>
- <td><form>s Sg Indef Gen</form></td>
- <td><form>s Sg Def Gen</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s Pl Indef Gen</form></td>
- <td><form>s Pl Def Gen</form></td>
- </tr>
- </table>
- </noun>
- <adjective>
- <h1>Adjektiv</h1>
-
- <table class="forms-table" rules="all">
- <tr>
- <th colspan="5">nominativ</th>
- </tr>
- <tr>
- <th colspan="2"></th>
- <th>posit</th>
- <th>kompar</th>
- <th>superl</th>
- </tr>
- <tr>
- <th rowspan="3">obest</th>
- <th>utr</th>
- <td><form>s (AF (APosit (Strong (GSg Utr))) Nom)</form></td>
- <td rowspan="5"><form>s (AF ACompar Nom)</form></td>
- <td rowspan="3"><form>s (AF (ASuperl SupStrong) Nom)</form></td>
- </tr>
- <tr>
- <th>neut</th>
- <td><form>s (AF (APosit (Strong (GSg Neutr))) Nom)</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s (AF (APosit (Strong GPl)) Nom)</form></td>
- </tr>
- <tr>
- <th rowspan="2">best</th>
- <th>sg</th>
- <td><form>s (AF (APosit (Weak Sg)) Nom)</form></td>
- <td rowspan="2"><form>s (AF (ASuperl SupWeak) Nom)</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s (AF (APosit (Weak Pl)) Nom)</form></td>
- </tr>
- <tr>
- <th colspan="5">genitiv</th>
- </tr>
- <tr>
- <th rowspan="3">obest</th>
- <th>utr</th>
- <td><form>s (AF (APosit (Strong (GSg Utr))) Gen)</form></td>
- <td rowspan="5"><form>s (AF ACompar Gen)</form></td>
- <td rowspan="3"><form>s (AF (ASuperl SupStrong) Gen)</form></td>
- </tr>
- <tr>
- <th>neut</th>
- <td><form>s (AF (APosit (Strong (GSg Neutr))) Gen)</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s (AF (APosit (Strong GPl)) Gen)</form></td>
- </tr>
- <tr>
- <th rowspan="2">best</th>
- <th>sg</th>
- <td><form>s (AF (APosit (Weak Sg)) Gen)</form></td>
- <td rowspan="2"><form>s (AF (ASuperl SupWeak) Gen)</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s (AF (APosit (Weak Pl)) Gen)</form></td>
- </tr>
- </table>
- </adjective>
- <adverb>
- <h1>Adverb</h1>
- <p><form>s</form></p>
- </adverb>
- <prep>
- <h1>Preposition</h1>
- <p><form>s</form></p>
- </prep>
- <verb>
- <h1>Verb</h1>
- <table class="forms-table" rules="all">
- <tr>
- <th></th>
- <th>active</th>
- <th>passive</th>
- </tr>
- <tr>
- <th>infitiv</th>
- <td><form>s (VI (VInfin Act))</form></td>
- <td><form>s (VI (VInfin Pass))</form></td>
- </tr>
- <tr>
- <th>presens</th>
- <td><form>s (VF (VPres Act))</form></td>
- <td><form>s (VF (VPres Pass))</form></td>
- </tr>
- <tr>
- <th>preteritum</th>
- <td><form>s (VF (VPret Act))</form></td>
- <td><form>s (VF (VPret Pass))</form></td>
- </tr>
- <tr>
- <th>supinum</th>
- <td><form>s (VI (VSupin Act))</form></td>
- <td><form>s (VI (VSupin Pass))</form></td>
- </tr>
- <tr>
- <th>imperativ</th>
- <td><form>s (VF (VImper Act))</form></td>
- <td><form>s (VF (VImper Pass))</form></td>
- </tr>
- </table>
-
- <h2>Particip Presens</h2>
- <table class="forms-table" rules="all">
- <tr>
- <th colspan="2"></th>
- <th>obest</th>
- <th>best</th>
- </tr>
- <tr>
- <th rowspan="2">nom</th>
- <th>sg</th>
- <td><form>s (VI (VPtPres Sg Indef Nom))</form></td>
- <td><form>s (VI (VPtPres Sg Def Nom))</form></td>
-
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s (VI (VPtPres Pl Indef Nom))</form></td>
- <td><form>s (VI (VPtPres Pl Def Nom))</form></td>
- </tr>
- <tr>
- <th rowspan="2">gen</th>
- <th>sg</th>
- <td><form>s (VI (VPtPres Sg Indef Gen))</form></td>
- <td><form>s (VI (VPtPres Sg Def Gen))</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s (VI (VPtPres Pl Indef Gen))</form></td>
- <td><form>s (VI (VPtPres Pl Def Gen))</form></td>
- </tr>
- </table>
-
- <h2>Particip Perfekt</h2>
- <table class="forms-table" rules="all">
- <tr>
- <th colspan="2"></th>
- <th>nominativ</th>
- <th>genitiv</th>
- </tr>
- <tr>
- <th rowspan="3">obest</th>
- <th>utr</th>
- <td><form>s (VI (VPtPret (Strong (GSg Utr)) Nom))</form></td>
- <td><form>s (VI (VPtPret (Strong (GSg Utr)) Gen))</form></td>
- </tr>
- <tr>
- <th>neut</th>
- <td><form>s (VI (VPtPret (Strong (GSg Neutr)) Nom))</form></td>
- <td><form>s (VI (VPtPret (Strong (GSg Neutr)) Gen))</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s (VI (VPtPret (Strong GPl) Nom))</form></td>
- <td><form>s (VI (VPtPret (Strong GPl) Gen))</form></td>
- </tr>
- <tr>
- <th rowspan="2">best</th>
- <th>sg</th>
- <td><form>s (VI (VPtPret (Weak Sg) Nom))</form></td>
- <td><form>s (VI (VPtPret (Weak Sg) Gen))</form></td>
- </tr>
- <tr>
- <th>pl</th>
- <td><form>s (VI (VPtPret (Weak Pl) Nom))</form></td>
- <td><form>s (VI (VPtPret (Weak Pl) Gen))</form></td>
- </tr>
- </table>
- </verb>
-</inflection_temlate>
+<inflection_template>
+ <inflection>
+ <cat>N</cat>
+ <cat>N2</cat>
+ <tag>s</tag>
+ <template>
+ <h1>Substantiv <lin>Feat<cat/>(<lemma/>)</lin></h1>
+
+ <table class="forms-table" rules="all">
+ <tr>
+ <th colspan="2"></th>
+ <th>obest</th>
+ <th>best</th>
+ </tr>
+ <tr>
+ <th rowspan="2">nom</th>
+ <th>sg</th>
+ <td><form>s Sg Indef Nom</form></td>
+ <td><form>s Sg Def Nom</form></td>
+
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s Pl Indef Nom</form></td>
+ <td><form>s Pl Def Nom</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">gen</th>
+ <th>sg</th>
+ <td><form>s Sg Indef Gen</form></td>
+ <td><form>s Sg Def Gen</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s Pl Indef Gen</form></td>
+ <td><form>s Pl Def Gen</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>A</cat>
+ <cat>A2</cat>
+ <tag>a</tag>
+ <template>
+ <h1>Adjektiv</h1>
+
+ <table class="forms-table" rules="all">
+ <tr>
+ <th colspan="5">nominativ</th>
+ </tr>
+ <tr>
+ <th colspan="2"></th>
+ <th>posit</th>
+ <th>kompar</th>
+ <th>superl</th>
+ </tr>
+ <tr>
+ <th rowspan="3">obest</th>
+ <th>utr</th>
+ <td><form>s (AF (APosit (Strong (GSg Utr))) Nom)</form></td>
+ <td rowspan="5"><form>s (AF ACompar Nom)</form></td>
+ <td rowspan="3"><form>s (AF (ASuperl SupStrong) Nom)</form></td>
+ </tr>
+ <tr>
+ <th>neut</th>
+ <td><form>s (AF (APosit (Strong (GSg Neutr))) Nom)</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s (AF (APosit (Strong GPl)) Nom)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">best</th>
+ <th>sg</th>
+ <td><form>s (AF (APosit (Weak Sg)) Nom)</form></td>
+ <td rowspan="2"><form>s (AF (ASuperl SupWeak) Nom)</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s (AF (APosit (Weak Pl)) Nom)</form></td>
+ </tr>
+ <tr>
+ <th colspan="5">genitiv</th>
+ </tr>
+ <tr>
+ <th rowspan="3">obest</th>
+ <th>utr</th>
+ <td><form>s (AF (APosit (Strong (GSg Utr))) Gen)</form></td>
+ <td rowspan="5"><form>s (AF ACompar Gen)</form></td>
+ <td rowspan="3"><form>s (AF (ASuperl SupStrong) Gen)</form></td>
+ </tr>
+ <tr>
+ <th>neut</th>
+ <td><form>s (AF (APosit (Strong (GSg Neutr))) Gen)</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s (AF (APosit (Strong GPl)) Gen)</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">best</th>
+ <th>sg</th>
+ <td><form>s (AF (APosit (Weak Sg)) Gen)</form></td>
+ <td rowspan="2"><form>s (AF (ASuperl SupWeak) Gen)</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s (AF (APosit (Weak Pl)) Gen)</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>Adv</cat>
+ <tag>adv</tag>
+ <template>
+ <h1>Adverb</h1>
+ <p><form>s</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>Prep</cat>
+ <tag>prep</tag>
+ <template>
+ <h1>Preposition</h1>
+ <p><form>s</form></p>
+ </template>
+ </inflection>
+ <inflection>
+ <cat>V</cat>
+ <cat>V2</cat>
+ <cat>V3</cat>
+ <cat>V2V</cat>
+ <cat>VV</cat>
+ <cat>VS</cat>
+ <tag>v</tag>
+ <template>
+ <h1>Verb</h1>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th></th>
+ <th>active</th>
+ <th>passive</th>
+ </tr>
+ <tr>
+ <th>infitiv</th>
+ <td><form>s (VI (VInfin Act))</form></td>
+ <td><form>s (VI (VInfin Pass))</form></td>
+ </tr>
+ <tr>
+ <th>presens</th>
+ <td><form>s (VF (VPres Act))</form></td>
+ <td><form>s (VF (VPres Pass))</form></td>
+ </tr>
+ <tr>
+ <th>preteritum</th>
+ <td><form>s (VF (VPret Act))</form></td>
+ <td><form>s (VF (VPret Pass))</form></td>
+ </tr>
+ <tr>
+ <th>supinum</th>
+ <td><form>s (VI (VSupin Act))</form></td>
+ <td><form>s (VI (VSupin Pass))</form></td>
+ </tr>
+ <tr>
+ <th>imperativ</th>
+ <td><form>s (VF (VImper Act))</form></td>
+ <td><form>s (VF (VImper Pass))</form></td>
+ </tr>
+ </table>
+
+ <h2>Particip Presens</h2>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th colspan="2"></th>
+ <th>obest</th>
+ <th>best</th>
+ </tr>
+ <tr>
+ <th rowspan="2">nom</th>
+ <th>sg</th>
+ <td><form>s (VI (VPtPres Sg Indef Nom))</form></td>
+ <td><form>s (VI (VPtPres Sg Def Nom))</form></td>
+
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s (VI (VPtPres Pl Indef Nom))</form></td>
+ <td><form>s (VI (VPtPres Pl Def Nom))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">gen</th>
+ <th>sg</th>
+ <td><form>s (VI (VPtPres Sg Indef Gen))</form></td>
+ <td><form>s (VI (VPtPres Sg Def Gen))</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s (VI (VPtPres Pl Indef Gen))</form></td>
+ <td><form>s (VI (VPtPres Pl Def Gen))</form></td>
+ </tr>
+ </table>
+
+ <h2>Particip Perfekt</h2>
+ <table class="forms-table" rules="all">
+ <tr>
+ <th colspan="2"></th>
+ <th>nominativ</th>
+ <th>genitiv</th>
+ </tr>
+ <tr>
+ <th rowspan="3">obest</th>
+ <th>utr</th>
+ <td><form>s (VI (VPtPret (Strong (GSg Utr)) Nom))</form></td>
+ <td><form>s (VI (VPtPret (Strong (GSg Utr)) Gen))</form></td>
+ </tr>
+ <tr>
+ <th>neut</th>
+ <td><form>s (VI (VPtPret (Strong (GSg Neutr)) Nom))</form></td>
+ <td><form>s (VI (VPtPret (Strong (GSg Neutr)) Gen))</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s (VI (VPtPret (Strong GPl) Nom))</form></td>
+ <td><form>s (VI (VPtPret (Strong GPl) Gen))</form></td>
+ </tr>
+ <tr>
+ <th rowspan="2">best</th>
+ <th>sg</th>
+ <td><form>s (VI (VPtPret (Weak Sg) Nom))</form></td>
+ <td><form>s (VI (VPtPret (Weak Sg) Gen))</form></td>
+ </tr>
+ <tr>
+ <th>pl</th>
+ <td><form>s (VI (VPtPret (Weak Pl) Nom))</form></td>
+ <td><form>s (VI (VPtPret (Weak Pl) Gen))</form></td>
+ </tr>
+ </table>
+ </template>
+ </inflection>
+</inflection_template>
diff --git a/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java b/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java
index 72ce457ed..60c6b45b2 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/LexicalEntryActivity.java
@@ -1,14 +1,11 @@
package org.grammaticalframework.ui.android;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import android.app.Activity;
import android.app.ListActivity;
import android.content.Context;
-import android.content.res.XmlResourceParser;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -23,7 +20,6 @@ import android.widget.TextView;
import org.grammaticalframework.pgf.*;
import org.grammaticalframework.ui.android.LanguageSelector.OnLanguageSelectedListener;
-import org.xmlpull.v1.XmlPullParserException;
public class LexicalEntryActivity extends ListActivity {
@@ -93,27 +89,6 @@ public class LexicalEntryActivity extends ListActivity {
}
private void expand(View view, String lemma) {
- String tag = null;
- if (lemma.endsWith("_N") || lemma.endsWith("_N2"))
- tag = "noun";
- else if (lemma.endsWith("_V") || lemma.endsWith("_V2") ||
- lemma.endsWith("_V3") || lemma.endsWith("_V2V") ||
- lemma.endsWith("_VV") || lemma.endsWith("_VS"))
- tag = "verb";
- else if (lemma.endsWith("_A") || lemma.endsWith("_A2"))
- tag = "adjective";
- else if (lemma.endsWith("_Prep"))
- tag = "prep";
- else if (lemma.endsWith("_Adv"))
- tag = "adverb";
-
- if (tag == null)
- return;
-
- int res = mTranslator.getTargetLanguage().getInflectionResource();
- if (res == 0)
- return;
-
ImageView arrow = (ImageView) view.findViewById(R.id.arrow);
arrow.setImageResource(R.drawable.close_arrow);
@@ -127,69 +102,8 @@ public class LexicalEntryActivity extends ListActivity {
((RelativeLayout) view).addView(inflectionView, params);
}
- Expr expr = Expr.readExpr(lemma);
- Map<String,String> lins = mTranslator.tabularLinearize(expr);
- XmlResourceParser parser = getResources().getXml(res);
- StringBuilder builder = new StringBuilder();
- builder.append("<html><head><meta charset=\"UTF-8\"/></head><body>");
-
- try {
- boolean emit = false;
- boolean form = false;
- int event = parser.next();
- while (event != XmlResourceParser.END_DOCUMENT) {
- switch (event) {
- case XmlResourceParser.START_TAG:
- if (tag.equals(parser.getName())) {
- emit = true;
- } if ("form".equals(parser.getName())) {
- form = true;
- } else if (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 (tag.equals(parser.getName())) {
- emit = false;
- } else if ("form".equals(parser.getName())) {
- form = false;
- } else if (emit) {
- builder.append("</"+parser.getName()+">");
- }
- break;
- case XmlResourceParser.TEXT:
- if (emit) {
- if (form) {
- String s = lins.get(parser.getText());
- if (s != null)
- builder.append(s);
- } else {
- builder.append(parser.getText());
- }
- }
- break;
- }
- event = parser.next();
- }
- } catch (IOException e) {
- e.printStackTrace();
- } catch (XmlPullParserException e) {
- e.printStackTrace();
- } finally {
- parser.close();
- }
-
- builder.append("</body>");
- inflectionView.loadData(builder.toString(), "text/html; charset=UTF-8", null);
+ String html = mTranslator.getInflectionTable(lemma);
+ inflectionView.loadData(html, "text/html; charset=UTF-8", null);
expandedView = view;
}
@@ -211,7 +125,7 @@ public class LexicalEntryActivity extends ListActivity {
TextView descView =
(TextView) convertView.findViewById(R.id.lexical_desc);
- String phrase = mTranslator.generateTranslationEntry(lemma);
+ String phrase = mTranslator.generateLexiconEntry(lemma);
descView.setText(phrase);
convertView.setOnClickListener(new OnClickListener() {
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 f25e07e2f..d4709ed7d 100644
--- a/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java
+++ b/src/ui/android/src/org/grammaticalframework/ui/android/Translator.java
@@ -2,6 +2,7 @@ package org.grammaticalframework.ui.android;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.res.XmlResourceParser;
import android.util.Log;
import org.grammaticalframework.pgf.Concr;
@@ -9,6 +10,7 @@ import org.grammaticalframework.pgf.Expr;
import org.grammaticalframework.pgf.MorphoAnalysis;
import org.grammaticalframework.pgf.PGF;
import org.grammaticalframework.pgf.ParseError;
+import org.xmlpull.v1.XmlPullParserException;
import java.io.FileNotFoundException;
import java.io.IOException;
@@ -38,6 +40,8 @@ public class Translator {
new Language("sv-SE", "Swedish", "ParseSwe", R.xml.inflection_sv, R.xml.qwerty),
};
+ private Context mContext;
+
private Language mSourceLanguage;
private Language mTargetLanguage;
@@ -69,9 +73,11 @@ public class Translator {
}
public Translator(Context context) {
- mGrammarLoader = new GrammarLoader(context);
+ mContext = context;
+
+ mGrammarLoader = new GrammarLoader();
mGrammarLoader.start();
-
+
mSharedPref = context.getSharedPreferences(
context.getString(R.string.global_preferences_key), Context.MODE_PRIVATE);
@@ -131,20 +137,183 @@ public class Translator {
}
}
- public String generateTranslationEntry(String lemma) {
+ 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 = getConcr(getSourceLanguage().getConcrete());
Concr targetLang = getConcr(getTargetLanguage().getConcrete());
if (targetLang.hasLinearization(lemma))
- return sourceLang.linearize(e) + " - " + targetLang.linearize(e);
+ return sourceLang.linearize(e) + " - " + getLemmaTag(lemma) + " " + targetLang.linearize(e);
else
- return sourceLang.linearize(e);
+ return sourceLang.linearize(e) + " " + getLemmaTag(lemma);
}
- public Map<String,String> tabularLinearize(Expr e) {
+ public String getInflectionTable(String lemma) {
+ String cat = getGrammar().getFunctionType(lemma).getCategory();
+
+ int res = getTargetLanguage().getInflectionResource();
+ if (res == 0)
+ return "";
+
+ Expr expr = Expr.readExpr(lemma);
Concr targetLang = getConcr(getTargetLanguage().getConcrete());
- return targetLang.tabularLinearize(e);
- }
+ Map<String,String> lins = targetLang.tabularLinearize(expr);
+ XmlResourceParser parser = mContext.getResources().getXml(res);
+ StringBuilder builder = new StringBuilder();
+ builder.append("<html><head><meta charset=\"UTF-8\"/></head><body>");
+
+ try {
+ int state = 0;
+ int event = parser.next();
+ boolean emit = false;
+ boolean form = false;
+ boolean lin = false;
+ 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();
+ } 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())) {
+ Expr expr2 = Expr.readExpr(abstrBuilder.toString());
+ builder.append(targetLang.linearize(expr2));
+ 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) {
+ String s = lins.get(parser.getText());
+ if (s != null)
+ builder.append(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("</body>");
+
+ return builder.toString();
+ }
public List<MorphoAnalysis> lookupMorpho(String sentence) {
return getConcr(getSourceLanguage().getConcrete()).lookupMorpho(sentence);
@@ -164,12 +333,6 @@ public class Translator {
}
private class GrammarLoader extends Thread {
- private final Context mContext;
-
- public GrammarLoader(Context context) {
- mContext = context;
- }
-
public void run() {
InputStream in = null;