Start work on search

Julien LepillerSat Apr 06 19:57:26+0200 2019

dd36f6d

Start work on search

app/src/main/java/eu/lepiller/nani/DictionaryDownloadActivity.java

4646
        TextView name_view = findViewById(R.id.name_view);
4747
        name_view.setText(d.getName());
4848
49-
        TextView description_view = findViewById(R.id.description_view);
49+
        TextView description_view = findViewById(R.id.additional_info_view);
5050
        description_view.setText(d.getDescription());
5151
5252
        download_bar = findViewById(R.id.download_progress);

app/src/main/java/eu/lepiller/nani/MainActivity.java

1313
import android.widget.EditText;
1414
import android.widget.ListView;
1515
16+
import java.util.ArrayList;
17+
18+
import eu.lepiller.nani.dictionary.DictionaryFactory;
19+
import eu.lepiller.nani.result.Result;
20+
import eu.lepiller.nani.result.ResultAdapter;
21+
1622
public class MainActivity extends AppCompatActivity {
1723
1824
    @Override

3036
            @Override
3137
            public void onClick(View v) {
3238
                String text = search_form.getText().toString();
33-
                //List<SearchResult> results = search(text);
34-
                //result_view.setAdapter(new SearchAdapter(results));
39+
                ArrayList<Result> searchResult = DictionaryFactory.search(getApplicationContext(), text);
40+
                result_view.setAdapter(new ResultAdapter(getApplicationContext(), searchResult));
3541
            }
3642
        });
3743
    }

app/src/main/java/eu/lepiller/nani/dictionary/DictionariesAdapter.java

22
33
import android.content.Context;
44
import android.graphics.drawable.Drawable;
5-
import android.os.Build;
6-
import android.support.graphics.drawable.VectorDrawableCompat;
75
import android.view.LayoutInflater;
86
import android.view.View;
97
import android.view.ViewGroup;
108
import android.widget.ArrayAdapter;
11-
import android.widget.ImageButton;
129
import android.widget.ImageView;
13-
import android.widget.ProgressBar;
1410
import android.widget.TextView;
1511
1612
import java.util.ArrayList;

4137
        // Lookup view for data population
4238
        ImageView icon_view = (ImageView) convertView.findViewById(R.id.icon_view);
4339
        TextView name_view = (TextView) convertView.findViewById(R.id.name_view);
44-
        TextView description_view = (TextView) convertView.findViewById(R.id.description_view);
40+
        TextView description_view = (TextView) convertView.findViewById(R.id.additional_info_view);
4541
4642
        // Populate the data into the template view using the data object
4743
        Drawable icon = dictionary.getDrawable(context);

app/src/main/java/eu/lepiller/nani/dictionary/DictionaryFactory.java

55
import java.util.ArrayList;
66
77
import eu.lepiller.nani.R;
8+
import eu.lepiller.nani.result.Result;
89
910
public class DictionaryFactory {
1011
    private static DictionaryFactory instance;

2829
                "https://xana.lepiller.eu/nani/dico/example_jmdict"));
2930
    }
3031
32+
    public static ArrayList<Result> search(Context context, String text) {
33+
        if(instance == null)
34+
            instance = new DictionaryFactory(context);
35+
36+
        ArrayList<Result> results = new ArrayList<>();
37+
        for(Dictionary d: dictionaries) {
38+
            if (d instanceof JMDict) {
39+
                results.addAll(d.search(text));
40+
            }
41+
        }
42+
        return results;
43+
    }
44+
3145
    public static Dictionary get(int position) {
3246
        return dictionaries.get(position);
3347
    }

app/src/main/java/eu/lepiller/nani/dictionary/JMDict.java

11
package eu.lepiller.nani.dictionary;
22
33
import java.io.File;
4+
import java.io.FileInputStream;
5+
import java.io.FileNotFoundException;
6+
import java.io.InputStream;
47
import java.net.MalformedURLException;
58
import java.net.URL;
9+
import java.util.ArrayList;
610
import java.util.HashMap;
711
import java.util.Map;
812
913
import eu.lepiller.nani.R;
14+
import eu.lepiller.nani.result.Result;
1015
1116
public class JMDict extends Dictionary {
1217
    private String mUrl;

5358
        File file = getFile();
5459
        file.delete();
5560
    }
61+
62+
    public ArrayList<Result> search(String text) {
63+
        ArrayList<Result> results = new ArrayList<>();
64+
        if (isDownloaded()) {
65+
            // Actually read the file and find something
66+
            try {
67+
                InputStream is = new FileInputStream(getFile());
68+
            } catch (FileNotFoundException ignored) {
69+
            }
70+
        }
71+
        return results;
72+
    }
5673
}

app/src/main/java/eu/lepiller/nani/result/Result.java unknown status 1

1+
package eu.lepiller.nani.result;
2+
3+
import java.lang.reflect.Array;
4+
import java.util.ArrayList;
5+
6+
public class Result {
7+
    enum Tag {
8+
        // Obtained by:
9+
        //   cat entities | cut -c 10- | sed -e 's|">$||' -e 's| "|, // |' -e 's|^\([^,]\)|\U\1|'
10+
        // and modifing things a bit ;)
11+
        MA, // martial arts term
12+
        X, // rude or X-rated term (not displayed in educational software)
13+
        Abbr, // abbreviation
14+
        Adj_i, // adjective (keiyoushi)
15+
        Adj_ix, // adjective (keiyoushi) - yoi/ii class
16+
        Adj_na, // adjectival nouns or quasi-adjectives (keiyodoshi)
17+
        Adj_no, // nouns which may take the genitive case particle `no'
18+
        Adj_pn, // pre-noun adjectival (rentaishi)
19+
        Adj_t, // `taru' adjective
20+
        Adj_1f, // noun or verb acting prenominally
21+
        Adv, // adverb (fukushi)
22+
        Adv_to, // adverb taking the `to' particle
23+
        Arch, // archaism
24+
        Ateji, // ateji (phonetic) reading
25+
        Aux, // auxiliary
26+
        Aux_v, // auxiliary verb
27+
        Aux_adj, // auxiliary adjective
28+
        Buddh, // Buddhist term
29+
        Chem, // chemistry term
30+
        Chn, // children's language
31+
        Col, // colloquialism
32+
        Comp, // computer terminology
33+
        Conj, // conjunction
34+
        Cop_da, // copula
35+
        Ctr, // counter
36+
        Derog, // derogatory
37+
        EK, // exclusively kanji
38+
        Ek, // exclusively kana
39+
        Exp, // expressions (phrases, clauses, etc.)
40+
        Fam, // familiar language
41+
        Fem, // female term or language
42+
        Food, // food term
43+
        Geom, // geometry term
44+
        Gikun, // gikun (meaning as reading) or jukujikun (special kanji reading)
45+
        Hon, // honorific or respectful (sonkeigo) language
46+
        Hum, // humble (kenjougo) language
47+
        IK, // word containing irregular kanji usage
48+
        Id, // idiomatic expression
49+
        Ik, // word containing irregular kana usage
50+
        Int, // interjection (kandoushi)
51+
        Io, // irregular okurigana usage
52+
        Iv, // irregular verb
53+
        Ling, // linguistics terminology
54+
        M_sl, // manga slang
55+
        Male, // male term or language
56+
        Male_sl, // male slang
57+
        Math, // mathematics
58+
        Mil, // military
59+
        N, // noun (common) (futsuumeishi)
60+
        N_adv, // adverbial noun (fukushitekimeishi)
61+
        N_suf, // noun, used as a suffix
62+
        N_pref, // noun, used as a prefix
63+
        N_t, // noun (temporal) (jisoumeishi)
64+
        Num, // numeric
65+
        OK, // word containing out-dated kanji
66+
        Obs, // obsolete term
67+
        Obsc, // obscure term
68+
        Ok, // out-dated or obsolete kana usage
69+
        Oik, // old or irregular kana form
70+
        On_mim, // onomatopoeic or mimetic word
71+
        Pn, // pronoun
72+
        Poet, // poetical term
73+
        Pol, // polite (teineigo) language
74+
        Pref, // prefix
75+
        Proverb, // proverb
76+
        Prt, // particle
77+
        Physics, // physics terminology
78+
        Quote, // quotation
79+
        Rare, // rare
80+
        Sens, // sensitive
81+
        Sl, // slang
82+
        Suf, // suffix
83+
        UK, // word usually written using kanji alone
84+
        Uk, // word usually written using kana alone
85+
        Unc, // unclassified
86+
        Yoji, // yojijukugo
87+
        V1, // Ichidan verb
88+
        V1_s, // Ichidan verb - kureru special class
89+
        V2a_s, // Nidan verb with 'u' ending (archaic)
90+
        V4h, // Yodan verb with `hu/fu' ending (archaic)
91+
        V4r, // Yodan verb with `ru' ending (archaic)
92+
        V5aru, // Godan verb - -aru special class
93+
        V5b, // Godan verb with `bu' ending
94+
        V5g, // Godan verb with `gu' ending
95+
        V5k, // Godan verb with `ku' ending
96+
        V5k_s, // Godan verb - Iku/Yuku special class
97+
        V5m, // Godan verb with `mu' ending
98+
        V5n, // Godan verb with `nu' ending
99+
        V5r, // Godan verb with `ru' ending
100+
        V5r_i, // Godan verb with `ru' ending (irregular verb)
101+
        V5s, // Godan verb with `su' ending
102+
        V5t, // Godan verb with `tsu' ending
103+
        V5u, // Godan verb with `u' ending
104+
        V5u_s, // Godan verb with `u' ending (special class)
105+
        V5uru, // Godan verb - Uru old class verb (old form of Eru)
106+
        Vz, // Ichidan verb - zuru verb (alternative form of -jiru verbs)
107+
        Vi, // intransitive verb
108+
        Vk, // Kuru verb - special class
109+
        Vn, // irregular nu verb
110+
        Vr, // irregular ru verb, plain form ends with -ri
111+
        Vs, // noun or participle which takes the aux. verb suru
112+
        Vs_c, // su verb - precursor to the modern suru
113+
        Vs_s, // suru verb - special class
114+
        Vs_i, // suru verb - included
115+
        Kyb, // Kyoto-ben
116+
        Osb, // Osaka-ben
117+
        Ksb, // Kansai-ben
118+
        Ktb, // Kantou-ben
119+
        Tsb, // Tosa-ben
120+
        Thb, // Touhoku-ben
121+
        Tsug, // Tsugaru-ben
122+
        Kyu, // Kyuushuu-ben
123+
        Rkb, // Ryuukyuu-ben
124+
        Nab, // Nagano-ben
125+
        Hob, // Hokkaido-ben
126+
        Vt, // transitive verb
127+
        Vulg, // vulgar expression or word
128+
        Adj_kari, // `kari' adjective (archaic)
129+
        Adj_ku, // `ku' adjective (archaic)
130+
        Adj_shiku, // `shiku' adjective (archaic)
131+
        Adj_nari, // archaic/formal form of na-adjective
132+
        N_pr, // proper noun
133+
        V_unspec, // verb unspecified
134+
        V4k, // Yodan verb with `ku' ending (archaic)
135+
        V4g, // Yodan verb with `gu' ending (archaic)
136+
        V4s, // Yodan verb with `su' ending (archaic)
137+
        V4t, // Yodan verb with `tsu' ending (archaic)
138+
        V4n, // Yodan verb with `nu' ending (archaic)
139+
        V4b, // Yodan verb with `bu' ending (archaic)
140+
        V4m, // Yodan verb with `mu' ending (archaic)
141+
        V2k_k, // Nidan verb (upper class) with `ku' ending (archaic)
142+
        V2g_k, // Nidan verb (upper class) with `gu' ending (archaic)
143+
        V2t_k, // Nidan verb (upper class) with `tsu' ending (archaic)
144+
        V2d_k, // Nidan verb (upper class) with `dzu' ending (archaic)
145+
        V2h_k, // Nidan verb (upper class) with `hu/fu' ending (archaic)
146+
        V2b_k, // Nidan verb (upper class) with `bu' ending (archaic)
147+
        V2m_k, // Nidan verb (upper class) with `mu' ending (archaic)
148+
        V2y_k, // Nidan verb (upper class) with `yu' ending (archaic)
149+
        V2r_k, // Nidan verb (upper class) with `ru' ending (archaic)
150+
        V2k_s, // Nidan verb (lower class) with `ku' ending (archaic)
151+
        V2g_s, // Nidan verb (lower class) with `gu' ending (archaic)
152+
        V2s_s, // Nidan verb (lower class) with `su' ending (archaic)
153+
        V2z_s, // Nidan verb (lower class) with `zu' ending (archaic)
154+
        V2t_s, // Nidan verb (lower class) with `tsu' ending (archaic)
155+
        V2d_s, // Nidan verb (lower class) with `dzu' ending (archaic)
156+
        V2n_s, // Nidan verb (lower class) with `nu' ending (archaic)
157+
        V2h_s, // Nidan verb (lower class) with `hu/fu' ending (archaic)
158+
        V2b_s, // Nidan verb (lower class) with `bu' ending (archaic)
159+
        V2m_s, // Nidan verb (lower class) with `mu' ending (archaic)
160+
        V2y_s, // Nidan verb (lower class) with `yu' ending (archaic)
161+
        V2r_s, // Nidan verb (lower class) with `ru' ending (archaic)
162+
        V2w_s, // Nidan verb (lower class) with `u' ending and `we' conjugation (archaic)
163+
        Archit, // architecture term
164+
        Astron, // astronomy, etc. term
165+
        Baseb, // baseball term
166+
        Biol, // biology term
167+
        Bot, // botany term
168+
        Bus, // business term
169+
        Econ, // economics term
170+
        Engr, // engineering term
171+
        Finc, // finance term
172+
        Geol, // geology, etc. term
173+
        Law, // law, etc. term
174+
        Mahj, // mahjong term
175+
        Med, // medicine, etc. term
176+
        Music, // music term
177+
        Shinto, // Shinto term
178+
        Shogi, // shogi term
179+
        Sports, // sports term
180+
        Sumo, // sumo term
181+
        Zool, // zoology term
182+
        Joc, // jocular, humorous term
183+
        Anat, // anatomical term
184+
    }
185+
186+
    public static class Sense {
187+
        private ArrayList<String> senses;
188+
        private ArrayList<Tag> tags;
189+
190+
        public Sense(ArrayList<String> senses, ArrayList<Tag> tags) {
191+
            this.senses = senses;
192+
            this.tags = tags;
193+
        }
194+
    }
195+
196+
    private String kanji, kana;
197+
    private ArrayList<Sense> senses;
198+
    private ArrayList<String> alternatives;
199+
    private ArrayList<Tag> tags;
200+
201+
    public Result(String kanji, String kana, ArrayList<Sense> senses, ArrayList<String> alternatives) {
202+
        this.kanji = kanji;
203+
        this.kana = kana;
204+
        this.senses = senses;
205+
        this.alternatives = alternatives;
206+
    }
207+
208+
    public String getKanji() {
209+
        return kanji;
210+
    }
211+
212+
    public String getKana() {
213+
        return kana;
214+
    }
215+
216+
    public ArrayList<Sense> getSenses() {
217+
        return senses;
218+
    }
219+
220+
    public ArrayList<String> getAlternatives() {
221+
        return alternatives;
222+
    }
223+
}

app/src/main/java/eu/lepiller/nani/result/ResultAdapter.java unknown status 1

1+
package eu.lepiller.nani.result;
2+
3+
import android.content.Context;
4+
import android.view.LayoutInflater;
5+
import android.view.View;
6+
import android.view.ViewGroup;
7+
import android.widget.ArrayAdapter;
8+
import android.widget.TextView;
9+
10+
import java.util.ArrayList;
11+
12+
import eu.lepiller.nani.R;
13+
14+
public class ResultAdapter extends ArrayAdapter<Result> {
15+
    Context context;
16+
    public ResultAdapter(Context context, ArrayList<Result> results) {
17+
        super(context, 0, results);
18+
        this.context = context;
19+
    }
20+
21+
    @Override
22+
    public View getView(int position, View convertView, ViewGroup parent) {
23+
        // Get the data item for this position
24+
        Result result = getItem(position);
25+
26+
        // Check if an existing view is being reused, otherwise inflate the view
27+
        if (convertView == null) {
28+
            convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout_result, parent, false);
29+
        }
30+
31+
        if (result == null) {
32+
            return convertView;
33+
        }
34+
35+
        // Lookup view for data population
36+
        TextView kanji_view = convertView.findViewById(R.id.kanji_view);
37+
38+
        // Populate the data into the template view using the data object
39+
        kanji_view.setText(result.getKanji());
40+
41+
        // Return the completed view to render on screen
42+
        return convertView;
43+
    }
44+
}

app/src/main/res/layout/activity_dictionary_download.xml

3838
    </LinearLayout>
3939
4040
    <TextView
41-
        android:id="@+id/description_view"
41+
        android:id="@+id/additional_info_view"
4242
        android:layout_width="wrap_content"
4343
        android:layout_height="wrap_content"
4444
        android:layout_margin="8dp"

6464
        android:orientation="horizontal"
6565
        app:layout_constraintEnd_toEndOf="parent"
6666
        app:layout_constraintStart_toStartOf="parent"
67-
        app:layout_constraintTop_toBottomOf="@+id/description_view">
67+
        app:layout_constraintTop_toBottomOf="@+id/additional_info_view">
6868
6969
        <ProgressBar
7070
            android:id="@+id/download_progress"

app/src/main/res/layout/layout_dictionary.xml

3434
            android:text="Name" />
3535
3636
        <TextView
37-
            android:id="@+id/description_view"
37+
            android:id="@+id/additional_info_view"
3838
            android:layout_width="match_parent"
3939
            android:layout_height="wrap_content"
4040
            android:layout_marginStart="8dp"

app/src/main/res/layout/layout_result.xml unknown status 1

1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout
3+
    xmlns:android="http://schemas.android.com/apk/res/android"
4+
    xmlns:app="http://schemas.android.com/apk/res-auto"
5+
    xmlns:tools="http://schemas.android.com/tools"
6+
    android:layout_width="match_parent"
7+
    android:layout_height="wrap_content">
8+
9+
    <TextView
10+
        android:id="@+id/kanji_view"
11+
        android:layout_width="64dp"
12+
        android:layout_height="64dp"
13+
        android:layout_gravity="center"
14+
        android:layout_weight="0"
15+
        android:contentDescription="@string/icon_description" />
16+
17+
    <ScrollView
18+
        android:layout_width="match_parent"
19+
        android:layout_height="match_parent"
20+
        android:layout_weight="0">
21+
22+
        <LinearLayout
23+
            android:layout_width="wrap_content"
24+
            android:layout_height="wrap_content"
25+
            android:layout_gravity="center"
26+
            android:layout_weight="100"
27+
            android:orientation="vertical">
28+
29+
            <ListView
30+
                android:id="@+id/sense_view"
31+
                android:layout_width="wrap_content"
32+
                android:layout_height="wrap_content" />
33+
34+
            <TextView
35+
                android:id="@+id/additional_info_view"
36+
                android:layout_width="match_parent"
37+
                android:layout_height="wrap_content"
38+
                android:layout_marginStart="8dp"
39+
                android:layout_marginLeft="8dp"
40+
                android:layout_marginTop="8dp"
41+
                android:layout_marginEnd="8dp"
42+
                android:layout_marginRight="8dp" />
43+
        </LinearLayout>
44+
    </ScrollView>
45+
46+
</LinearLayout>
46<
047<
\ No newline at end of file

app/src/main/res/values/strings.xml

1515
    <!-- Dictionnary descriptions -->
1616
    <string name="dico_example">An example dictionary with only an entry for ?????? (gathering up). Used in development.</string>
1717
18+
    <!-- JMdict tags, obtained with
19+
         cat entities | cut -c 10- | sed -e 's|">$||' -e 's|.* "|<item>|' -e 's|$|</item>|' -e "s|\`|'|g" | sed "s|'|\\\'|g"
20+
         -->
21+
    <string-array name="jmdict_tags">
22+
        <item id="MA">martial arts term</item>
23+
        <item id="X">rude or X-rated term (not displayed in educational software)</item>
24+
        <item id="abbr">abbreviation</item>
25+
        <item>adjective (keiyoushi)</item>
26+
        <item>adjective (keiyoushi) - yoi/ii class</item>
27+
        <item>adjectival nouns or quasi-adjectives (keiyodoshi)</item>
28+
        <item>nouns which may take the genitive case particle \'no\'</item>
29+
        <item>pre-noun adjectival (rentaishi)</item>
30+
        <item>\'taru\' adjective</item>
31+
        <item>noun or verb acting prenominally</item>
32+
        <item>adverb (fukushi)</item>
33+
        <item>adverb taking the \'to\' particle</item>
34+
        <item>archaism</item>
35+
        <item>ateji (phonetic) reading</item>
36+
        <item>auxiliary</item>
37+
        <item>auxiliary verb</item>
38+
        <item>auxiliary adjective</item>
39+
        <item>Buddhist term</item>
40+
        <item>chemistry term</item>
41+
        <item>children\'s language</item>
42+
        <item>colloquialism</item>
43+
        <item>computer terminology</item>
44+
        <item>conjunction</item>
45+
        <item>copula</item>
46+
        <item>counter</item>
47+
        <item>derogatory</item>
48+
        <item>exclusively kanji</item>
49+
        <item>exclusively kana</item>
50+
        <item>expressions (phrases, clauses, etc.)</item>
51+
        <item>familiar language</item>
52+
        <item>female term or language</item>
53+
        <item>food term</item>
54+
        <item>geometry term</item>
55+
        <item>gikun (meaning as reading) or jukujikun (special kanji reading)</item>
56+
        <item>honorific or respectful (sonkeigo) language</item>
57+
        <item>humble (kenjougo) language</item>
58+
        <item>word containing irregular kanji usage</item>
59+
        <item>idiomatic expression</item>
60+
        <item>word containing irregular kana usage</item>
61+
        <item>interjection (kandoushi)</item>
62+
        <item>irregular okurigana usage</item>
63+
        <item>irregular verb</item>
64+
        <item>linguistics terminology</item>
65+
        <item>manga slang</item>
66+
        <item>male term or language</item>
67+
        <item>male slang</item>
68+
        <item>mathematics</item>
69+
        <item>military</item>
70+
        <item>noun (common) (futsuumeishi)</item>
71+
        <item>adverbial noun (fukushitekimeishi)</item>
72+
        <item>noun, used as a suffix</item>
73+
        <item>noun, used as a prefix</item>
74+
        <item>noun (temporal) (jisoumeishi)</item>
75+
        <item>numeric</item>
76+
        <item>word containing out-dated kanji</item>
77+
        <item>obsolete term</item>
78+
        <item>obscure term</item>
79+
        <item>out-dated or obsolete kana usage</item>
80+
        <item>old or irregular kana form</item>
81+
        <item>onomatopoeic or mimetic word</item>
82+
        <item>pronoun</item>
83+
        <item>poetical term</item>
84+
        <item>polite (teineigo) language</item>
85+
        <item>prefix</item>
86+
        <item>proverb</item>
87+
        <item>particle</item>
88+
        <item>physics terminology</item>
89+
        <item>quotation</item>
90+
        <item>rare</item>
91+
        <item>sensitive</item>
92+
        <item>slang</item>
93+
        <item>suffix</item>
94+
        <item>word usually written using kanji alone</item>
95+
        <item>word usually written using kana alone</item>
96+
        <item>unclassified</item>
97+
        <item>yojijukugo</item>
98+
        <item>Ichidan verb</item>
99+
        <item>Ichidan verb - kureru special class</item>
100+
        <item>Nidan verb with \'u\' ending (archaic)</item>
101+
        <item>Yodan verb with \'hu/fu\' ending (archaic)</item>
102+
        <item>Yodan verb with \'ru\' ending (archaic)</item>
103+
        <item>Godan verb - -aru special class</item>
104+
        <item>Godan verb with \'bu\' ending</item>
105+
        <item>Godan verb with \'gu\' ending</item>
106+
        <item>Godan verb with \'ku\' ending</item>
107+
        <item>Godan verb - Iku/Yuku special class</item>
108+
        <item>Godan verb with \'mu\' ending</item>
109+
        <item>Godan verb with \'nu\' ending</item>
110+
        <item>Godan verb with \'ru\' ending</item>
111+
        <item>Godan verb with \'ru\' ending (irregular verb)</item>
112+
        <item>Godan verb with \'su\' ending</item>
113+
        <item>Godan verb with \'tsu\' ending</item>
114+
        <item>Godan verb with \'u\' ending</item>
115+
        <item>Godan verb with \'u\' ending (special class)</item>
116+
        <item>Godan verb - Uru old class verb (old form of Eru)</item>
117+
        <item>Ichidan verb - zuru verb (alternative form of -jiru verbs)</item>
118+
        <item>intransitive verb</item>
119+
        <item>Kuru verb - special class</item>
120+
        <item>irregular nu verb</item>
121+
        <item>irregular ru verb, plain form ends with -ri</item>
122+
        <item>noun or participle which takes the aux. verb suru</item>
123+
        <item>su verb - precursor to the modern suru</item>
124+
        <item>suru verb - special class</item>
125+
        <item>suru verb - included</item>
126+
        <item>Kyoto-ben</item>
127+
        <item>Osaka-ben</item>
128+
        <item>Kansai-ben</item>
129+
        <item>Kantou-ben</item>
130+
        <item>Tosa-ben</item>
131+
        <item>Touhoku-ben</item>
132+
        <item>Tsugaru-ben</item>
133+
        <item>Kyuushuu-ben</item>
134+
        <item>Ryuukyuu-ben</item>
135+
        <item>Nagano-ben</item>
136+
        <item>Hokkaido-ben</item>
137+
        <item>transitive verb</item>
138+
        <item>vulgar expression or word</item>
139+
        <item>\'kari\' adjective (archaic)</item>
140+
        <item>\'ku\' adjective (archaic)</item>
141+
        <item>\'shiku\' adjective (archaic)</item>
142+
        <item>archaic/formal form of na-adjective</item>
143+
        <item>proper noun</item>
144+
        <item>verb unspecified</item>
145+
        <item>Yodan verb with \'ku\' ending (archaic)</item>
146+
        <item>Yodan verb with \'gu\' ending (archaic)</item>
147+
        <item>Yodan verb with \'su\' ending (archaic)</item>
148+
        <item>Yodan verb with \'tsu\' ending (archaic)</item>
149+
        <item>Yodan verb with \'nu\' ending (archaic)</item>
150+
        <item>Yodan verb with \'bu\' ending (archaic)</item>
151+
        <item>Yodan verb with \'mu\' ending (archaic)</item>
152+
        <item>Nidan verb (upper class) with \'ku\' ending (archaic)</item>
153+
        <item>Nidan verb (upper class) with \'gu\' ending (archaic)</item>
154+
        <item>Nidan verb (upper class) with \'tsu\' ending (archaic)</item>
155+
        <item>Nidan verb (upper class) with \'dzu\' ending (archaic)</item>
156+
        <item>Nidan verb (upper class) with \'hu/fu\' ending (archaic)</item>
157+
        <item>Nidan verb (upper class) with \'bu\' ending (archaic)</item>
158+
        <item>Nidan verb (upper class) with \'mu\' ending (archaic)</item>
159+
        <item>Nidan verb (upper class) with \'yu\' ending (archaic)</item>
160+
        <item>Nidan verb (upper class) with \'ru\' ending (archaic)</item>
161+
        <item>Nidan verb (lower class) with \'ku\' ending (archaic)</item>
162+
        <item>Nidan verb (lower class) with \'gu\' ending (archaic)</item>
163+
        <item>Nidan verb (lower class) with \'su\' ending (archaic)</item>
164+
        <item>Nidan verb (lower class) with \'zu\' ending (archaic)</item>
165+
        <item>Nidan verb (lower class) with \'tsu\' ending (archaic)</item>
166+
        <item>Nidan verb (lower class) with \'dzu\' ending (archaic)</item>
167+
        <item>Nidan verb (lower class) with \'nu\' ending (archaic)</item>
168+
        <item>Nidan verb (lower class) with \'hu/fu\' ending (archaic)</item>
169+
        <item>Nidan verb (lower class) with \'bu\' ending (archaic)</item>
170+
        <item>Nidan verb (lower class) with \'mu\' ending (archaic)</item>
171+
        <item>Nidan verb (lower class) with \'yu\' ending (archaic)</item>
172+
        <item>Nidan verb (lower class) with \'ru\' ending (archaic)</item>
173+
        <item>Nidan verb (lower class) with \'u\' ending and \'we\' conjugation (archaic)</item>
174+
        <item>architecture term</item>
175+
        <item>astronomy, etc. term</item>
176+
        <item>baseball term</item>
177+
        <item>biology term</item>
178+
        <item>botany term</item>
179+
        <item>business term</item>
180+
        <item>economics term</item>
181+
        <item>engineering term</item>
182+
        <item>finance term</item>
183+
        <item>geology, etc. term</item>
184+
        <item>law, etc. term</item>
185+
        <item>mahjong term</item>
186+
        <item>medicine, etc. term</item>
187+
        <item>music term</item>
188+
        <item>Shinto term</item>
189+
        <item>shogi term</item>
190+
        <item>sports term</item>
191+
        <item>sumo term</item>
192+
        <item>zoology term</item>
193+
        <item>jocular, humorous term</item>
194+
        <item>anatomical term</item>
195+
    </string-array>
196+
18197
    <!-- About activity -->
19198
    <string name="nani_about">Hi, tyreunom here!\n
20199
I\'m a japanese learner and programmer. I found that there were no app for my use case,