diff --git a/apps/nihongo/configmap.yaml b/apps/nihongo/configmap.yaml index a13f479..4f14c22 100644 --- a/apps/nihongo/configmap.yaml +++ b/apps/nihongo/configmap.yaml @@ -57,6 +57,7 @@ data: .p-de{color:#8e44ad;font-weight:800} .p-ga{color:#2e8b57;font-weight:800} .p-wa{color:#b8860b;font-weight:800} + .p-mo{color:#0d9488;font-weight:800} .grammarnote{background:#fff;border-radius:12px;box-shadow:var(--shadow);padding:12px 16px;margin-bottom:14px; font-size:14px;border-left:4px solid var(--orange-d)} .grammarnote b{color:var(--orange-d)} @@ -125,6 +126,7 @@ data: + @@ -236,7 +238,7 @@ data: {parts:['ไปไบ',"___",'่กใฃใฆ ๅใใพใใใ'], ans:["ใซ"], hint:"zur Arbeit gehen"}, {parts:['ๅฐไธๅฎค',"___","ใใใใใพใใใ"], ans:["ใ"], hint:"das Objekt, das geputzt wird"}, ]; - const CHOICES = ["ใซ","ใ","ใง","ใฏ","ใ"]; + const CHOICES = ["ใฏ","ใ","ใซ","ใ","ใง","ใ","ใ"]; /* ================= LEKTIONEN (hier hรคngt Kody-san neue Lektionen an) ================= */ const LESSONS = [ @@ -290,6 +292,10 @@ data: {de:"Ich gehe nicht oft ins Fitnessstudio.", en:"I don't go to the gym very often.", r:'๏ผใใใใฏ๏ผใใใพใ ใธใ ใซ ใใใพใใใ', read:"ใใใใฏ ใใใพใ ใใใซ ใใใพใใใ"}, {de:"Ich mag Bier, aber ich trinke nicht viel.", en:"I like beer, but I don't drink much.", r:'ใใผใซใ ๅฅฝใใงใใใงใ ใใใพใ ้ฃฒใฟใพใใใ', read:"ใณใผใใ ใใใงใใใงใ ใใใพใ ใฎใฟใพใใใ"}, ], + adjectives:[ + {jpr:'ใใใ', read:"ใใใ", de:"scharf", type:'i', negr:'ใใใใชใ', negKana:"ใใใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + {jpr:'้ซใ', read:"ใใใ", de:"teuer / hoch", type:'i', negr:'้ซใใชใ', negKana:"ใใใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + ], particles:[ {parts:['ใจใใฉใ ใธใ ',"___",'ใใใพใใ'], ans:["ใซ"], hint:"Bewegungsziel"}, {parts:['ใซใฌใผ',"___",'้ฃในใพใใ'], ans:["ใ"], hint:"Objekt"}, @@ -348,6 +354,11 @@ data: {de:"Mein Freund ist gut in Japanisch.", en:"As for my friend, they're good at Japanese.", r:'็งใฎๅ้ใฏ ๆฅๆฌ่ชใ ไธๆใงใใ', read:"ใใใใฎใจใใ ใกใฏ ใซใปใใใ ใใใใใงใใ"}, {de:"Meine Schwester ist gut in Videospielen.", en:"My sister is good at games.", r:'็งใฎๅฆนใฏ ใฒใผใ ใ ไธๆใงใใ', read:"ใใใใฎใใใใจใฏ ใใผใใ ใใใใใงใใ"}, ], + adjectives:[ + {jpr:'ใใใใ', read:"ใใใใ", de:"lecker", type:'i', negr:'ใใใใใชใ', negKana:"ใใใใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + {jpr:'ๆๅ', read:"ใใใใ", de:"berรผhmt", type:'na', negr:'ๆๅใใใชใ', negKana:"ใใใใใใใชใ", rule:"ใช-Adj: + ใใใชใ (kein ใใชใ!)"}, + {jpr:'ไธๆ', read:"ใใใใ", de:"gut kรถnnen", type:'na', negr:'ไธๆใใใชใ', negKana:"ใใใใใใใชใ", rule:"ใช-Adj: + ใใใชใ"}, + ], particles:[ {parts:['ไธ้ขจๅ ',"___",'ใฟใใฉใผใกใณ',"___",'ใใใใใงใใ'], ans:["ใฏ","ใ"], hint:"Thema ใฏ โฆ Merkmal ใ"}, {parts:['ไบฌ้ฝ',"___",'ใๅฏบ',"___",'ๆๅใงใใ'], ans:["ใฏ","ใ"], hint:"Thema ใฏ โฆ Merkmal ใ"}, @@ -421,6 +432,9 @@ data: {de:"Nakamoto ist extrem scharf!", en:"Nakamoto is crazy spicy!", r:'ไปฒๆฌใฏ ใใฃใกใ ใใใใงใ๏ผ', read:"ใชใใใจใฏ ใใฃใกใ ใใใใงใ๏ผ"}, {de:"Erdbeer-Eis ist extrem sรผร!", en:"Strawberry ice cream is crazy sweet!", r:'ใใกใใฎ ใขใคในใฏใชใผใ ใฏ ใใฃใกใ ็ใใงใ๏ผ', read:"ใใกใใฎ ใใใใใใผใใฏ ใใฃใกใ ใใพใใงใ๏ผ"}, ], + adjectives:[ + {jpr:'็ใ', read:"ใใพใ", de:"sรผร", type:'i', negr:'็ใใชใ', negKana:"ใใพใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + ], particles:[ {parts:['ไปฒๆฌ',"___",'ใใฃใกใ ใใใใงใใ'], ans:["ใฏ"], hint:"Themenpartikel"}, ]}, @@ -443,6 +457,9 @@ data: {de:"Dieses Restaurant ist okay.", en:"This restaurant is okay.", r:'ใใฎใฌในใใฉใณใฏ ใพใใพใใงใใ', read:"ใใฎใใใจใใใฏ ใพใใพใใงใใ"}, {de:"Bescheidene Antwort auf Lob (โAch, noch lange nicht.').", en:"Response to a compliment: I still have a long way to go.", r:'ใพใ ใพใ ใงใใ', read:"ใพใ ใพใ ใงใใ"}, ], + adjectives:[ + {jpr:'ใใใใใ', read:"ใใใใใ", de:"interessant", type:'i', negr:'ใใใใใใชใ', negKana:"ใใใใใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + ], particles:[ {parts:['ใใฎใฉใผใกใณ',"___",'ใพใใพใ ใใใใงใใ'], ans:["ใฏ"], hint:"Themenpartikel"}, {parts:['ใใฎใขใใก',"___",'ใพใใพใใงใใ'], ans:["ใฏ"], hint:"Themenpartikel"}, @@ -513,6 +530,109 @@ data: {de:"ใฆ-Form von ๆฅใ (kommen)? โ unregelmรครig", en:"", r:'ๆฅใฆ', read:"ใใฆ"}, ], particles:[]}, + + /* ---------- CM_5-1 Adjectives Present Tense ---------- */ + {id:'cm5-1', code:'CM_5-1', title:'Adjectives Present Tense', + grammar:'ใ-Adj: {Nomen ใฏ}{โฆใใงใ}, verneint {โฆใใชใใงใ} (ใใใโใใใใชใ). Ausnahme ใใโใใใชใ. ใช-Adj: {โฆใงใ}, verneint {โฆใใใชใใงใ}. Achtung: ใใใใปใใใใ sehen aus wie ใ-Adj, sind aber ใช-Adj! Grad: ใจใฆใ/ใกใใฃใจ/ใใใพใ + Adj.', + vocab:[ + {jpr:'ใใใ', read:"ใใใ", de:"scharf", en:"spicy", kana:"ใใใ"}, + {jpr:'ใใใใใ', read:"ใใใใใ", de:"neu", en:"new", kana:"ใใใใใ"}, + {jpr:'ใใ', read:"ใใ", de:"gut", en:"good", kana:"ใใ"}, + {jpr:'ใใใใใ', read:"ใใใใใ", de:"warm", en:"warm", kana:"ใใใใใ"}, + {jpr:'ใใใ', read:"ใใใ", de:"kalt", en:"cold", kana:"ใใใ"}, + {jpr:'ใใใ', read:"ใใใ", de:"schรถn / sauber", en:"beautiful, clean", kana:"ใใใ"}, + {jpr:'ๆๅ', read:"ใใใใ", de:"berรผhmt", en:"famous", kana:"ใใใใ"}, + {jpr:'ไบบๆฐ', read:"ใซใใ", de:"beliebt", en:"popular", kana:"ใซใใ"}, + {jpr:'็ฐกๅ', read:"ใใใใ", de:"einfach", en:"easy", kana:"ใใใใ"}, + {jpr:'ใใฝใณใณ', read:"ใฑใใใ", de:"Computer / Laptop", en:"computer", kana:"ใฑใใใ"}, + {jpr:'ใจใฆใ', read:"ใจใฆใ", de:"sehr", en:"very", kana:"ใจใฆใ"}, + {jpr:'ใกใใฃใจ', read:"ใกใใฃใจ", de:"ein bisschen", en:"a little", kana:"ใกใใฃใจ"}, + ], + verbs:[], + adjectives:[ + {jpr:'ใใใ', read:"ใใใ", de:"scharf", type:'i', negr:'ใใใใชใ', negKana:"ใใใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + {jpr:'ใใใใใ', read:"ใใใใใ", de:"neu", type:'i', negr:'ใใใใใใชใ', negKana:"ใใใใใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + {jpr:'ใใใใใ', read:"ใใใใใ", de:"warm", type:'i', negr:'ใใใใใใชใ', negKana:"ใใใใใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + {jpr:'ใใใ', read:"ใใใ", de:"kalt", type:'i', negr:'ใใใใชใ', negKana:"ใใใใชใ", rule:"ใ-Adj: ใ weg โ ใใชใ"}, + {jpr:'ใใ', read:"ใใ", de:"gut", type:'i-exc', negr:'ใใใชใ', negKana:"ใใใชใ", rule:"โ Ausnahme: ใใ โ ใใใชใ (nicht ใใใชใ!)"}, + {jpr:'ใใใ', read:"ใใใ", de:"schรถn / sauber", type:'na', negr:'ใใใใใใชใ', negKana:"ใใใใใใชใ", rule:"ใช-Adj: + ใใใชใ (kein ใใชใ!)"}, + {jpr:'ๆๅ', read:"ใใใใ", de:"berรผhmt", type:'na', negr:'ๆๅใใใชใ', negKana:"ใใใใใใใชใ", rule:"ใช-Adj (sieht aus wie ใ-Adj!): + ใใใชใ"}, + {jpr:'ไบบๆฐ', read:"ใซใใ", de:"beliebt", type:'na', negr:'ไบบๆฐใใใชใ', negKana:"ใซใใใใใชใ", rule:"ใช-Adj: + ใใใชใ"}, + {jpr:'็ฐกๅ', read:"ใใใใ", de:"einfach", type:'na', negr:'็ฐกๅใใใชใ', negKana:"ใใใใใใใชใ", rule:"ใช-Adj: + ใใใชใ"}, + ], + sentences:[ + {de:"Dieser Ramen ist scharf.", en:"This ramen is spicy.", r:'ใใฎใฉใผใกใณใฏ ใใใใงใใ', read:"ใใฎใใผใใใฏ ใใใใงใใ"}, + {de:"Dieser Ramen ist nicht scharf.", en:"This ramen is not spicy.", r:'ใใฎใฉใผใกใณใฏ ใใใใชใใงใใ', read:"ใใฎใใผใใใฏ ใใใใชใใงใใ"}, + {de:"Dieses Sushi-Restaurant ist neu.", en:"This sushi restaurant is new.", r:'ใใฎ ใใใใใฏ ใใใใใใงใใ', read:"ใใฎ ใใใใใฏ ใใใใใใงใใ"}, + {de:"Dieser Computer ist gut.", en:"This computer is good.", r:'ใใฎใใฝใณใณใฏ ใใใงใใ', read:"ใใฎใฑใใใใฏ ใใใงใใ"}, + {de:"Dieser Computer ist nicht gut. (Ausnahme ใใโใใใชใ!)", en:"This computer is not good.", r:'ใใฎใใฝใณใณใฏ ใใใชใใงใใ', read:"ใใฎใฑใใใใฏ ใใใชใใงใใ"}, + {de:"Diese Stadt ist schรถn.", en:"This city is beautiful.", r:'ใใฎ็บใฏ ใใใใงใใ', read:"ใใฎใพใกใฏ ใใใใงใใ"}, + {de:"Diese Stadt ist nicht schรถn. (ใช-Adj โ ใใใชใ)", en:"This city is not beautiful.", r:'ใใฎ็บใฏ ใใใใใใชใใงใใ', read:"ใใฎใพใกใฏ ใใใใใใชใใงใใ"}, + {de:"Japanisches Essen ist beliebt.", en:"Japanese food is popular.", r:'ๆฅๆฌใฎ้ฃใน็ฉใฏ ไบบๆฐใงใใ', read:"ใซใปใใฎใในใใฎใฏ ใซใใใงใใ"}, + {de:"Dieses Buch ist einfach.", en:"This book is easy.", r:'ใใฎๆฌใฏ ็ฐกๅใงใใ', read:"ใใฎใปใใฏ ใใใใใงใใ"}, + {de:"Dieses Buch ist nicht einfach.", en:"This book is not easy.", r:'ใใฎๆฌใฏ ็ฐกๅใใใชใใงใใ', read:"ใใฎใปใใฏ ใใใใใใใชใใงใใ"}, + {de:"Dieser Ramen ist sehr scharf.", en:"This ramen is very spicy.", r:'ใใฎใฉใผใกใณใฏ ใจใฆใ ใใใใงใใ', read:"ใใฎใใผใใใฏ ใจใฆใ ใใใใงใใ"}, + {de:"Dieser Ramen ist ein bisschen scharf.", en:"This ramen is a little spicy.", r:'ใใฎใฉใผใกใณใฏ ใกใใฃใจ ใใใใงใใ', read:"ใใฎใใผใใใฏ ใกใใฃใจ ใใใใงใใ"}, + {de:"Dieser Ramen ist nicht sehr scharf.", en:"This ramen is not very spicy.", r:'ใใฎใฉใผใกใณใฏ ใใใพใ ใใใใชใใงใใ', read:"ใใฎใใผใใใฏ ใใใพใ ใใใใชใใงใใ"}, + ], + particles:[ + {parts:['ใใฎใฉใผใกใณ',"___",'ใใใใงใใ'], ans:["ใฏ"], hint:"Themenpartikel"}, + {parts:['ใใฎ็บ',"___",'ใใใใใใชใใงใใ'], ans:["ใฏ"], hint:"Themenpartikel"}, + ]}, + + /* ---------- CM_5-4 ใใใช (Lieblings-X) ---------- */ + {id:'cm5-4', code:'CM_5-4', title:'ใใใช (My favorite X is Y)', + grammar:'{๏ผใใใใฎ๏ผใใใช Nomen1 ใฏ}{Nomen2 ใงใ} โ โMein Lieblings-โฆ(N1) ist โฆ(N2)". Frage: {๏ผโฆใฎ๏ผใใใช Nomen ใฏ}{ใชใใงใใ}. ใใ ist ein ใช-Adj โ attributiv ใใใช. Antwort mit ใ: Pythonใใใใงใ ยท noch eins: Bashใใใใงใ.', + vocab:[ + {jpr:'ๅฅฝใใช', read:"ใใใช", de:"Lieblings- / am liebsten", en:"favorite", kana:"ใใใช"}, + {jpr:'้ฃฒใฟ็ฉ', read:"ใฎใฟใใฎ", de:"Getrรคnk", en:"drink", kana:"ใฎใฟใใฎ"}, + {jpr:'้ณๆฅฝ', read:"ใใใใ", de:"Musik", en:"music", kana:"ใใใใ"}, + {jpr:'ใใฉใ', read:"ใฉใใพ", de:"Serie / Drama", en:"drama", kana:"ใฉใใพ"}, + {jpr:'ใๅฅฝใฟ็ผใ', read:"ใใใฎใฟใใ", de:"Okonomiyaki", en:"okonomiyaki", kana:"ใใใฎใฟใใ"}, + {jpr:'ใฐใซใผใ', read:"ใใใผใท", de:"Gruppe / Band", en:"group", kana:"ใใใผใท"}, + {jpr:'่จ่ช', read:"ใใใ", de:"Sprache", en:"language", kana:"ใใใ"}, + {jpr:'ใชใ', read:"ใชใ", de:"was", en:"what", kana:"ใชใ"}, + ], + verbs:[], + sentences:[ + {de:"Mein Lieblingsessen ist Ramen.", en:"My favorite food is ramen.", r:'ๅฅฝใใช ้ฃใน็ฉใฏ ใฉใผใกใณใงใใ', read:"ใใใช ใในใใฎใฏ ใใผใใใงใใ"}, + {de:"Mein Lieblingsgetrรคnk ist Kaffee.", en:"My favorite drink is coffee.", r:'ๅฅฝใใช ้ฃฒใฟ็ฉใฏ ใณใผใใผใงใใ', read:"ใใใช ใฎใฟใใฎใฏ ใใผใฒใผใงใใ"}, + {de:"Mein Lieblingsessen ist Okonomiyaki.", en:"My favorite food is okonomiyaki.", r:'ๅฅฝใใช ้ฃใน็ฉใฏ ใๅฅฝใฟ็ผใใงใใ', read:"ใใใช ใในใใฎใฏ ใใใฎใฟใใใงใใ"}, + {de:"Was ist dein Lieblings-Anime?", en:"What is your favorite anime?", r:'Dใใใฎ ๅฅฝใใช ใขใใกใฏ ใชใใงใใใ', read:"Dใใใฎ ใใใช ใใซใใฏ ใชใใงใใใ"}, + {de:"Was ist deine Lieblingsmusik?", en:"What is your favorite music?", r:'ๅฅฝใใช ้ณๆฅฝใฏ ใชใใงใใใ', read:"ใใใช ใใใใใฏ ใชใใงใใใ"}, + {de:"Was ist deine Lieblings-Programmiersprache?", en:"What is your favorite programming language?", r:'ๅฅฝใใช ใณใณใใฅใผใฟใผ่จ่ชใฏ ใชใใงใใใ', read:"ใใใช ใใใดใ ใผใใผใใใใฏ ใชใใงใใใ"}, + {de:"Ich mag Python.", en:"I like Python.", r:'Pythonใ ๅฅฝใใงใใ', read:"Pythonใ ใใใงใใ"}, + {de:"Bash mag ich auch.", en:"I like Bash too.", r:'Bashใ ๅฅฝใใงใใ', read:"Bashใ ใใใงใใ"}, + ], + particles:[ + {parts:['ๅฅฝใใช ้ฃใน็ฉ',"___",'ใฉใผใกใณใงใใ'], ans:["ใฏ"], hint:"Thema (Lieblings-X)"}, + {parts:['Python',"___",'ๅฅฝใใงใใ'], ans:["ใ"], hint:"bei ๅฅฝใ steht ใ"}, + {parts:['Bash',"___",'ๅฅฝใใงใใ'], ans:["ใ"], hint:"auch โ ใ (noch eins dazu)"}, + ]}, + + /* ---------- CM_3-2 Question words 1 (ใชใซใ) ---------- */ + {id:'cm3-2', code:'CM_3-2', title:'Question words 1 (ใชใซใ)', + grammar:'{๏ผโฆใฏ๏ผZeitangabe}{ใชใซใ}{V ใพใใ} โ โWas machst du (wann)?". Antwort mit einem Verb: โฆใใใพใ / โฆใใในใพใ. Das Objekt (auch das Fragewort ใชใซ) trรคgt ใ.', + vocab:[ + {jpr:'ใชใซ', read:"ใชใซ", de:"was", en:"what", kana:"ใชใซ"}, + {jpr:'ๆๆฅ', read:"ใใใ", de:"morgen", en:"tomorrow", kana:"ใใใ"}, + {jpr:'้ฑๆซ', read:"ใใ ใใพใค", de:"Wochenende", en:"weekend", kana:"ใใ ใใพใค"}, + {jpr:'ใใใใฐ', read:"ใใใใฐ", de:"Yakisoba", en:"yakisoba", kana:"ใใใใฐ"}, + {jpr:'ใซใผใใฒใผใ ', read:"ใใผใฉใใผใ", de:"Kartenspiel", en:"card game", kana:"ใใผใฉใใผใ"}, + {jpr:'ไผใ', read:"ใใใ๏ผใใใฟใพใ๏ผ", de:"sich ausruhen / freihaben", en:"to rest", kana:"ใใใ"}, + ], + verbs:[], + sentences:[ + {de:"Was machst du morgen?", en:"What will you do tomorrow?", r:'Dใใใฏ ๆๆฅ ไฝใ ใใพใใใ', read:"Dใใใฏ ใใใ ใชใซใ ใใพใใใ"}, + {de:"Was machst du am Wochenende?", en:"What will you do on the weekend?", r:'้ฑๆซ ไฝใ ใใพใใใ', read:"ใใ ใใพใค ใชใซใ ใใพใใใ"}, + {de:"รhm, ich ruhe mich aus.", en:"Um, I'll rest.", r:'ใใใจ ใใใฟใพใใ', read:"ใใใจ ใใใฟใพใใ"}, + {de:"Ich spiele mit Freunden ein Kartenspiel.", en:"I'll play a card game with friends.", r:'ๅ้ใจ ใซใผใใฒใผใ ใ ใใพใใ', read:"ใจใใ ใกใจ ใใผใฉใใผใใ ใใพใใ"}, + {de:"Ich esse Yakisoba.", en:"I'll eat yakisoba.", r:'ใใใใฐใ ้ฃในใพใใ', read:"ใใใใฐใ ใในใพใใ"}, + ], + particles:[ + {parts:['ๆๆฅ ไฝ',"___",'ใใพใใใ'], ans:["ใ"], hint:"Fragewort ใชใซ als Objekt"}, + {parts:['ใซใผใใฒใผใ ',"___",'ใใพใใ'], ans:["ใ"], hint:"Objekt"}, + ]}, ]; /* ================= RลMAJI โ KANA ================= */ @@ -593,6 +713,7 @@ data: lessonsActive().forEach(L=>{ L.vocab.forEach((v,i)=>o.push({id:L.id+':v'+i, label:v.jpr+' ยท '+v.de, deck:'Vokabel'})); L.verbs.forEach((v,i)=>o.push({id:L.id+':vb'+i, label:v.jpr+' โ '+v.stemr, deck:'ใพใStamm'})); + (L.adjectives||[]).forEach((a,i)=>o.push({id:L.id+':a'+i, label:a.jpr+' โ '+(a.negr||a.negKana), deck:'Adjektiv'})); L.sentences.forEach((s,i)=>o.push({id:L.id+':s'+i, label:s.de, deck:'Satz'})); }); PHRASES.forEach((p,i)=>o.push({id:'p'+i, label:p.jpr, deck:'Unterricht'})); @@ -602,7 +723,7 @@ data: function cardIndex(){ const m={}; const savedLesson=lesson; lesson='all'; - [...vocabReview(),...verbItems(),...sentenceItems(),...phraseItems()].forEach(it=>m[it.id]=it); + [...vocabReview(),...verbItems(),...adjItems(),...sentenceItems(),...phraseItems()].forEach(it=>m[it.id]=it); lesson=savedLesson; return m; } @@ -654,6 +775,14 @@ data: lessonsActive().forEach(L=>L.particles.forEach((p,i)=>out.push({...p, id:L.id+':pt'+i}))); return out; } + function adjItems(){ + const out=[]; + lessonsActive().forEach(L=>(L.adjectives||[]).forEach((a,i)=>out.push({id:L.id+':a'+i, + front:`