Start work on search
app/src/main/java/eu/lepiller/nani/DictionaryDownloadActivity.java
46 | 46 | TextView name_view = findViewById(R.id.name_view); | |
47 | 47 | name_view.setText(d.getName()); | |
48 | 48 | ||
49 | - | TextView description_view = findViewById(R.id.description_view); | |
49 | + | TextView description_view = findViewById(R.id.additional_info_view); | |
50 | 50 | description_view.setText(d.getDescription()); | |
51 | 51 | ||
52 | 52 | download_bar = findViewById(R.id.download_progress); |
app/src/main/java/eu/lepiller/nani/MainActivity.java
13 | 13 | import android.widget.EditText; | |
14 | 14 | import android.widget.ListView; | |
15 | 15 | ||
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 | + | ||
16 | 22 | public class MainActivity extends AppCompatActivity { | |
17 | 23 | ||
18 | 24 | @Override | |
… | |||
30 | 36 | @Override | |
31 | 37 | public void onClick(View v) { | |
32 | 38 | 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)); | |
35 | 41 | } | |
36 | 42 | }); | |
37 | 43 | } |
app/src/main/java/eu/lepiller/nani/dictionary/DictionariesAdapter.java
2 | 2 | ||
3 | 3 | import android.content.Context; | |
4 | 4 | import android.graphics.drawable.Drawable; | |
5 | - | import android.os.Build; | |
6 | - | import android.support.graphics.drawable.VectorDrawableCompat; | |
7 | 5 | import android.view.LayoutInflater; | |
8 | 6 | import android.view.View; | |
9 | 7 | import android.view.ViewGroup; | |
10 | 8 | import android.widget.ArrayAdapter; | |
11 | - | import android.widget.ImageButton; | |
12 | 9 | import android.widget.ImageView; | |
13 | - | import android.widget.ProgressBar; | |
14 | 10 | import android.widget.TextView; | |
15 | 11 | ||
16 | 12 | import java.util.ArrayList; | |
… | |||
41 | 37 | // Lookup view for data population | |
42 | 38 | ImageView icon_view = (ImageView) convertView.findViewById(R.id.icon_view); | |
43 | 39 | 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); | |
45 | 41 | ||
46 | 42 | // Populate the data into the template view using the data object | |
47 | 43 | Drawable icon = dictionary.getDrawable(context); |
app/src/main/java/eu/lepiller/nani/dictionary/DictionaryFactory.java
5 | 5 | import java.util.ArrayList; | |
6 | 6 | ||
7 | 7 | import eu.lepiller.nani.R; | |
8 | + | import eu.lepiller.nani.result.Result; | |
8 | 9 | ||
9 | 10 | public class DictionaryFactory { | |
10 | 11 | private static DictionaryFactory instance; | |
… | |||
28 | 29 | "https://xana.lepiller.eu/nani/dico/example_jmdict")); | |
29 | 30 | } | |
30 | 31 | ||
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 | + | ||
31 | 45 | public static Dictionary get(int position) { | |
32 | 46 | return dictionaries.get(position); | |
33 | 47 | } |
app/src/main/java/eu/lepiller/nani/dictionary/JMDict.java
1 | 1 | package eu.lepiller.nani.dictionary; | |
2 | 2 | ||
3 | 3 | import java.io.File; | |
4 | + | import java.io.FileInputStream; | |
5 | + | import java.io.FileNotFoundException; | |
6 | + | import java.io.InputStream; | |
4 | 7 | import java.net.MalformedURLException; | |
5 | 8 | import java.net.URL; | |
9 | + | import java.util.ArrayList; | |
6 | 10 | import java.util.HashMap; | |
7 | 11 | import java.util.Map; | |
8 | 12 | ||
9 | 13 | import eu.lepiller.nani.R; | |
14 | + | import eu.lepiller.nani.result.Result; | |
10 | 15 | ||
11 | 16 | public class JMDict extends Dictionary { | |
12 | 17 | private String mUrl; | |
… | |||
53 | 58 | File file = getFile(); | |
54 | 59 | file.delete(); | |
55 | 60 | } | |
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 | + | } | |
56 | 73 | } |
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
38 | 38 | </LinearLayout> | |
39 | 39 | ||
40 | 40 | <TextView | |
41 | - | android:id="@+id/description_view" | |
41 | + | android:id="@+id/additional_info_view" | |
42 | 42 | android:layout_width="wrap_content" | |
43 | 43 | android:layout_height="wrap_content" | |
44 | 44 | android:layout_margin="8dp" | |
… | |||
64 | 64 | android:orientation="horizontal" | |
65 | 65 | app:layout_constraintEnd_toEndOf="parent" | |
66 | 66 | app:layout_constraintStart_toStartOf="parent" | |
67 | - | app:layout_constraintTop_toBottomOf="@+id/description_view"> | |
67 | + | app:layout_constraintTop_toBottomOf="@+id/additional_info_view"> | |
68 | 68 | ||
69 | 69 | <ProgressBar | |
70 | 70 | android:id="@+id/download_progress" |
app/src/main/res/layout/layout_dictionary.xml
34 | 34 | android:text="Name" /> | |
35 | 35 | ||
36 | 36 | <TextView | |
37 | - | android:id="@+id/description_view" | |
37 | + | android:id="@+id/additional_info_view" | |
38 | 38 | android:layout_width="match_parent" | |
39 | 39 | android:layout_height="wrap_content" | |
40 | 40 | 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 | < | ||
0 | 47 | < | \ No newline at end of file |
app/src/main/res/values/strings.xml
15 | 15 | <!-- Dictionnary descriptions --> | |
16 | 16 | <string name="dico_example">An example dictionary with only an entry for ?????? (gathering up). Used in development.</string> | |
17 | 17 | ||
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 | + | ||
18 | 197 | <!-- About activity --> | |
19 | 198 | <string name="nani_about">Hi, tyreunom here!\n | |
20 | 199 | I\'m a japanese learner and programmer. I found that there were no app for my use case, |