@syllst/th 0.2.2 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (208) hide show
  1. package/LICENSE +21 -0
  2. package/dist/index.d.ts +10 -15
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +65 -62
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.umd.cjs +71 -0
  7. package/dist/index.umd.cjs.map +1 -0
  8. package/dist/syllabi/alphabet/index.d.ts +2 -5
  9. package/dist/syllabi/alphabet/index.d.ts.map +1 -0
  10. package/dist/syllabi/dialogue/index.d.ts +2 -5
  11. package/dist/syllabi/dialogue/index.d.ts.map +1 -0
  12. package/dist/syllabi/essentials/index.d.ts +2 -5
  13. package/dist/syllabi/essentials/index.d.ts.map +1 -0
  14. package/dist/syllabi/food/index.d.ts +2 -5
  15. package/dist/syllabi/food/index.d.ts.map +1 -0
  16. package/dist/syllabi/grammar/index.d.ts +2 -5
  17. package/dist/syllabi/grammar/index.d.ts.map +1 -0
  18. package/dist/syllabi/numbers/index.d.ts +2 -5
  19. package/dist/syllabi/numbers/index.d.ts.map +1 -0
  20. package/dist/syllabi/reading/index.d.ts +2 -5
  21. package/dist/syllabi/reading/index.d.ts.map +1 -0
  22. package/dist/syllabi/travel/index.d.ts +2 -5
  23. package/dist/syllabi/travel/index.d.ts.map +1 -0
  24. package/dist/syllabi/vowels-tones/index.d.ts +2 -5
  25. package/dist/syllabi/vowels-tones/index.d.ts.map +1 -0
  26. package/package.json +27 -15
  27. package/dist/index-BM-LWlCm.js +0 -52
  28. package/dist/index-BM-LWlCm.js.map +0 -1
  29. package/dist/index-Bjym0crS.js +0 -48
  30. package/dist/index-Bjym0crS.js.map +0 -1
  31. package/dist/index-BuKXw7-Z.js +0 -46
  32. package/dist/index-BuKXw7-Z.js.map +0 -1
  33. package/dist/index-ByS0o5dz.js +0 -52
  34. package/dist/index-ByS0o5dz.js.map +0 -1
  35. package/dist/index-C9VnG7dT.js +0 -52
  36. package/dist/index-C9VnG7dT.js.map +0 -1
  37. package/dist/index-CPQkjFjV.js +0 -50
  38. package/dist/index-CPQkjFjV.js.map +0 -1
  39. package/dist/index-CkHd3Fal.js +0 -56
  40. package/dist/index-CkHd3Fal.js.map +0 -1
  41. package/dist/index-DBkPBXe2.js +0 -52
  42. package/dist/index-DBkPBXe2.js.map +0 -1
  43. package/dist/index-DdRhLqkM.js +0 -82
  44. package/dist/index-DdRhLqkM.js.map +0 -1
  45. package/dist/lesson-01-B0wtSaSl.js +0 -118
  46. package/dist/lesson-01-B0wtSaSl.js.map +0 -1
  47. package/dist/lesson-01-C9vbUlA4.js +0 -138
  48. package/dist/lesson-01-C9vbUlA4.js.map +0 -1
  49. package/dist/lesson-01-CPmBFTe0.js +0 -132
  50. package/dist/lesson-01-CPmBFTe0.js.map +0 -1
  51. package/dist/lesson-01-Cc4Ws8eR.js +0 -158
  52. package/dist/lesson-01-Cc4Ws8eR.js.map +0 -1
  53. package/dist/lesson-01-Cm5k-m-9.js +0 -136
  54. package/dist/lesson-01-Cm5k-m-9.js.map +0 -1
  55. package/dist/lesson-01-DELblCNj.js +0 -97
  56. package/dist/lesson-01-DELblCNj.js.map +0 -1
  57. package/dist/lesson-01-Djl_72e7.js +0 -153
  58. package/dist/lesson-01-Djl_72e7.js.map +0 -1
  59. package/dist/lesson-01-LEHTeGQQ.js +0 -155
  60. package/dist/lesson-01-LEHTeGQQ.js.map +0 -1
  61. package/dist/lesson-01-ih_-OO_O.js +0 -111
  62. package/dist/lesson-01-ih_-OO_O.js.map +0 -1
  63. package/dist/lesson-02-B2aZrKUQ.js +0 -120
  64. package/dist/lesson-02-B2aZrKUQ.js.map +0 -1
  65. package/dist/lesson-02-BI1Vnwiz.js +0 -169
  66. package/dist/lesson-02-BI1Vnwiz.js.map +0 -1
  67. package/dist/lesson-02-BXbwEMaL.js +0 -180
  68. package/dist/lesson-02-BXbwEMaL.js.map +0 -1
  69. package/dist/lesson-02-CbJJ5Amt.js +0 -201
  70. package/dist/lesson-02-CbJJ5Amt.js.map +0 -1
  71. package/dist/lesson-02-DGrALAgG.js +0 -203
  72. package/dist/lesson-02-DGrALAgG.js.map +0 -1
  73. package/dist/lesson-02-DcMDDBDL.js +0 -116
  74. package/dist/lesson-02-DcMDDBDL.js.map +0 -1
  75. package/dist/lesson-02-Dk59HZWp.js +0 -222
  76. package/dist/lesson-02-Dk59HZWp.js.map +0 -1
  77. package/dist/lesson-02-L8oNhBej.js +0 -145
  78. package/dist/lesson-02-L8oNhBej.js.map +0 -1
  79. package/dist/lesson-02-VDOme3ES.js +0 -204
  80. package/dist/lesson-02-VDOme3ES.js.map +0 -1
  81. package/dist/lesson-03-9WioSe19.js +0 -196
  82. package/dist/lesson-03-9WioSe19.js.map +0 -1
  83. package/dist/lesson-03-BZutWzMD.js +0 -124
  84. package/dist/lesson-03-BZutWzMD.js.map +0 -1
  85. package/dist/lesson-03-Bj5hWZ9t.js +0 -152
  86. package/dist/lesson-03-Bj5hWZ9t.js.map +0 -1
  87. package/dist/lesson-03-CSIF5xRS.js +0 -181
  88. package/dist/lesson-03-CSIF5xRS.js.map +0 -1
  89. package/dist/lesson-03-CSKig363.js +0 -225
  90. package/dist/lesson-03-CSKig363.js.map +0 -1
  91. package/dist/lesson-03-DPJOG2M_.js +0 -138
  92. package/dist/lesson-03-DPJOG2M_.js.map +0 -1
  93. package/dist/lesson-03-DkjCuJ26.js +0 -237
  94. package/dist/lesson-03-DkjCuJ26.js.map +0 -1
  95. package/dist/lesson-03-DucbRMOQ.js +0 -171
  96. package/dist/lesson-03-DucbRMOQ.js.map +0 -1
  97. package/dist/lesson-03-MIne1PbH.js +0 -185
  98. package/dist/lesson-03-MIne1PbH.js.map +0 -1
  99. package/dist/lesson-04-0Pj_x1DU.js +0 -233
  100. package/dist/lesson-04-0Pj_x1DU.js.map +0 -1
  101. package/dist/lesson-04-B9h0p9kE.js +0 -190
  102. package/dist/lesson-04-B9h0p9kE.js.map +0 -1
  103. package/dist/lesson-04-BLuPI1-X.js +0 -216
  104. package/dist/lesson-04-BLuPI1-X.js.map +0 -1
  105. package/dist/lesson-04-CmDvofL4.js +0 -230
  106. package/dist/lesson-04-CmDvofL4.js.map +0 -1
  107. package/dist/lesson-04-DGKHK4LW.js +0 -178
  108. package/dist/lesson-04-DGKHK4LW.js.map +0 -1
  109. package/dist/lesson-04-DUcHZzsk.js +0 -218
  110. package/dist/lesson-04-DUcHZzsk.js.map +0 -1
  111. package/dist/lesson-04-DnVIXXk-.js +0 -141
  112. package/dist/lesson-04-DnVIXXk-.js.map +0 -1
  113. package/dist/lesson-04-FZnIE7tu.js +0 -187
  114. package/dist/lesson-04-FZnIE7tu.js.map +0 -1
  115. package/dist/lesson-04-ToX3nRz1.js +0 -172
  116. package/dist/lesson-04-ToX3nRz1.js.map +0 -1
  117. package/dist/lesson-05-2aTCGXMh.js +0 -181
  118. package/dist/lesson-05-2aTCGXMh.js.map +0 -1
  119. package/dist/lesson-05-BvitRdE8.js +0 -206
  120. package/dist/lesson-05-BvitRdE8.js.map +0 -1
  121. package/dist/lesson-05-CgXGkcjS.js +0 -143
  122. package/dist/lesson-05-CgXGkcjS.js.map +0 -1
  123. package/dist/lesson-05-ClfrUrvX.js +0 -244
  124. package/dist/lesson-05-ClfrUrvX.js.map +0 -1
  125. package/dist/lesson-05-D2zf9n7k.js +0 -201
  126. package/dist/lesson-05-D2zf9n7k.js.map +0 -1
  127. package/dist/lesson-05-DWquBfdl.js +0 -220
  128. package/dist/lesson-05-DWquBfdl.js.map +0 -1
  129. package/dist/lesson-05-DpIkwhJ8.js +0 -244
  130. package/dist/lesson-05-DpIkwhJ8.js.map +0 -1
  131. package/dist/lesson-05-UYz39ORV.js +0 -189
  132. package/dist/lesson-05-UYz39ORV.js.map +0 -1
  133. package/dist/lesson-05-t6XuANiZ.js +0 -180
  134. package/dist/lesson-05-t6XuANiZ.js.map +0 -1
  135. package/dist/lesson-06-B2y08mKv.js +0 -238
  136. package/dist/lesson-06-B2y08mKv.js.map +0 -1
  137. package/dist/lesson-06-CHqaVQix.js +0 -202
  138. package/dist/lesson-06-CHqaVQix.js.map +0 -1
  139. package/dist/lesson-06-CaCZBX1V.js +0 -273
  140. package/dist/lesson-06-CaCZBX1V.js.map +0 -1
  141. package/dist/lesson-06-ClplsJBT.js +0 -204
  142. package/dist/lesson-06-ClplsJBT.js.map +0 -1
  143. package/dist/lesson-06-CzGnNKo5.js +0 -141
  144. package/dist/lesson-06-CzGnNKo5.js.map +0 -1
  145. package/dist/lesson-06-Dg_bQLNC.js +0 -172
  146. package/dist/lesson-06-Dg_bQLNC.js.map +0 -1
  147. package/dist/lesson-06-OWFMgO0a.js +0 -231
  148. package/dist/lesson-06-OWFMgO0a.js.map +0 -1
  149. package/dist/lesson-06-Q2aRAzws.js +0 -190
  150. package/dist/lesson-06-Q2aRAzws.js.map +0 -1
  151. package/dist/lesson-07-BLDUA_Ff.js +0 -194
  152. package/dist/lesson-07-BLDUA_Ff.js.map +0 -1
  153. package/dist/lesson-07-BpyF1Ssq.js +0 -236
  154. package/dist/lesson-07-BpyF1Ssq.js.map +0 -1
  155. package/dist/lesson-07-C4GrfDTW.js +0 -234
  156. package/dist/lesson-07-C4GrfDTW.js.map +0 -1
  157. package/dist/lesson-07-CVCUt1Jn.js +0 -206
  158. package/dist/lesson-07-CVCUt1Jn.js.map +0 -1
  159. package/dist/lesson-07-DQFXCZsZ.js +0 -197
  160. package/dist/lesson-07-DQFXCZsZ.js.map +0 -1
  161. package/dist/lesson-07-Dcry2Yjo.js +0 -248
  162. package/dist/lesson-07-Dcry2Yjo.js.map +0 -1
  163. package/dist/lesson-07-JS_cqdNr.js +0 -142
  164. package/dist/lesson-07-JS_cqdNr.js.map +0 -1
  165. package/dist/lesson-08-18gscaS0.js +0 -227
  166. package/dist/lesson-08-18gscaS0.js.map +0 -1
  167. package/dist/lesson-08-2kBUq_B2.js +0 -220
  168. package/dist/lesson-08-2kBUq_B2.js.map +0 -1
  169. package/dist/lesson-08-BP5lpiGe.js +0 -287
  170. package/dist/lesson-08-BP5lpiGe.js.map +0 -1
  171. package/dist/lesson-08-BXm9GgdN.js +0 -146
  172. package/dist/lesson-08-BXm9GgdN.js.map +0 -1
  173. package/dist/lesson-08-Bru0PdEK.js +0 -277
  174. package/dist/lesson-08-Bru0PdEK.js.map +0 -1
  175. package/dist/lesson-08-Dd-8cbGW.js +0 -205
  176. package/dist/lesson-08-Dd-8cbGW.js.map +0 -1
  177. package/dist/lesson-09-B1qWE3Yl.js +0 -221
  178. package/dist/lesson-09-B1qWE3Yl.js.map +0 -1
  179. package/dist/lesson-09-B5Vb70xj.js +0 -143
  180. package/dist/lesson-09-B5Vb70xj.js.map +0 -1
  181. package/dist/lesson-10-00qNLc7A.js +0 -233
  182. package/dist/lesson-10-00qNLc7A.js.map +0 -1
  183. package/dist/lesson-10-Dw-Jtm3D.js +0 -156
  184. package/dist/lesson-10-Dw-Jtm3D.js.map +0 -1
  185. package/dist/lesson-11-BM3R_S7I.js +0 -260
  186. package/dist/lesson-11-BM3R_S7I.js.map +0 -1
  187. package/dist/lesson-12-D1Wx7CyK.js +0 -277
  188. package/dist/lesson-12-D1Wx7CyK.js.map +0 -1
  189. package/dist/skills-hcn-pGD0.js +0 -244
  190. package/dist/skills-hcn-pGD0.js.map +0 -1
  191. package/dist/syllabi/alphabet/index.js +0 -9
  192. package/dist/syllabi/alphabet/index.js.map +0 -1
  193. package/dist/syllabi/dialogue/index.js +0 -10
  194. package/dist/syllabi/dialogue/index.js.map +0 -1
  195. package/dist/syllabi/essentials/index.js +0 -10
  196. package/dist/syllabi/essentials/index.js.map +0 -1
  197. package/dist/syllabi/food/index.js +0 -10
  198. package/dist/syllabi/food/index.js.map +0 -1
  199. package/dist/syllabi/grammar/index.js +0 -10
  200. package/dist/syllabi/grammar/index.js.map +0 -1
  201. package/dist/syllabi/numbers/index.js +0 -10
  202. package/dist/syllabi/numbers/index.js.map +0 -1
  203. package/dist/syllabi/reading/index.js +0 -10
  204. package/dist/syllabi/reading/index.js.map +0 -1
  205. package/dist/syllabi/travel/index.js +0 -10
  206. package/dist/syllabi/travel/index.js.map +0 -1
  207. package/dist/syllabi/vowels-tones/index.js +0 -10
  208. package/dist/syllabi/vowels-tones/index.js.map +0 -1
@@ -1,201 +0,0 @@
1
- const n = `---
2
- type: lesson
3
- id: thai-script-lesson-02
4
- title: "บทที่ 2 — พยัญชนะกลาง II"
5
- description: "Middle-Class Consonants Part 2: ม ย ร ล อ — Nasals, liquids, and the silent consonant"
6
- order: 2
7
- parentId: thai-script-alphabet
8
- difficulty: beginner
9
- cefrLevel: A1
10
- categories:
11
- - consonants
12
- - middle-class
13
- - nasal
14
- - approximant
15
- - basic-characters
16
- metadata:
17
- estimatedTime: 25
18
- prerequisites:
19
- - thai-script-lesson-01
20
- learningObjectives:
21
- - id: obj-complete-mid
22
- description: "Complete your knowledge of middle-class consonants"
23
- skill: character-recognition
24
- references: [horse, ogre, boat, monkey, bowl]
25
- - id: obj-nasal-approx
26
- description: "Understand nasals and approximants"
27
- skill: character-sound-mapping
28
- - id: obj-silent-consonant
29
- description: "Learn the special role of อ as a silent consonant"
30
- skill: character-sound-mapping
31
- references: [bowl]
32
- - id: obj-syllable-reading
33
- description: "Practice reading simple syllables"
34
- skill: character-sound-mapping
35
- ---
36
-
37
- # บทที่ 2 (Lesson 2) — Middle-Class Consonants II
38
-
39
- ## Introduction
40
-
41
- In this lesson, you'll complete the middle-class consonants with 5 more characters. These include **nasals** (ม), **liquids** (ร ล), **approximants** (ย ว), and the unique **silent consonant** (อ).
42
-
43
- ## Why These Are Different
44
-
45
- The consonants in Lesson 1 were all **stops** — sounds made by completely blocking airflow then releasing. Today's consonants are different:
46
-
47
- - **Nasals** (ม): Air flows through the nose
48
- - **Liquids** (ร ล): Air flows around the tongue
49
- - **Approximants** (ย): Tongue approaches but doesn't touch
50
-
51
- This affects their behavior in final position — they don't become unreleased stops like the Lesson 1 consonants.
52
-
53
- ## Characters
54
-
55
- :::character-set{id="thai-middle-consonants-2" title="Middle-Class Consonants II"}
56
-
57
- ::character{id="horse" canonicalRef="horse" data:class="low" char="ม" name="ม ม้า (mɔɔ máa)" nativeName="ม ม้า" transliteration="m" charType="consonant"}
58
-
59
- ::character{id="ogre" canonicalRef="ogre" data:class="low" char="ย" name="ย ยักษ์ (yɔɔ yák)" nativeName="ย ยักษ์" transliteration="y" charType="consonant"}
60
-
61
- ::character{id="boat" canonicalRef="boat" data:class="low" char="ร" name="ร เรือ (rɔɔ rʉa)" nativeName="ร เรือ" transliteration="r/n" charType="consonant"}
62
-
63
- ::character{id="monkey" canonicalRef="monkey" data:class="low" char="ล" name="ล ลิง (lɔɔ ling)" nativeName="ล ลิง" transliteration="l/n" charType="consonant"}
64
-
65
- ::character{id="bowl" canonicalRef="bowl" data:class="middle" char="อ" name="อ อ่าง (ɔɔ àang)" nativeName="อ อ่าง" transliteration="-/vowel" charType="consonant"}
66
-
67
- :::
68
-
69
- ## The Special Case: อ (Ɔɔ Àang)
70
-
71
- **อ** is the most unusual Thai consonant. It has **two completely different roles**:
72
-
73
- ### As Initial Consonant
74
- When starting a syllable that begins with a vowel sound, อ serves as a **silent placeholder**:
75
- - อา (aa) — the อ is silent, you just hear "aa"
76
- - Without อ, there would be no consonant to "carry" the vowel
77
-
78
- ### As Vowel Component
79
- In certain vowel combinations, อ represents the sound /ɔɔ/:
80
- - เมือง (mʉang) — the อ makes the /ɔ/ sound
81
-
82
- This dual nature makes อ essential despite being "silent" in many words.
83
-
84
- ## Sound Changes for Nasals and Liquids
85
-
86
- Unlike the stop consonants from Lesson 1, these consonants keep their basic sound quality in final position:
87
-
88
- | Consonant | Initial Sound | Final Sound | Example |
89
- |-----------|---------------|-------------|---------|
90
- | ม | **m** | **m** | มา (maa) / ลม (lom) |
91
- | ย | **y** | **i** (as vowel) | ยา (yaa) / สาย (sǎai) |
92
- | ร | **r** (rolled) | **n** | รัก (rák) / ตอร์ (dton) |
93
- | ล | **l** | **n** | ลา (laa) / กล (gon) |
94
-
95
- **Important**: Both ร and ล become /n/ in final position. This surprises many learners!
96
-
97
- ## The Thai R Sound
98
-
99
- Thai **ร** is a rolled or flapped R, similar to Spanish. In casual speech, many Thai speakers substitute **ล** for **ร** (so "ร เรือ" sounds like "ล เลือ"). This is very common but considered informal.
100
-
101
- In careful speech:
102
- - **ร** = alveolar trill or flap (tongue tip vibrates)
103
- - **ล** = lateral (air flows around tongue sides)
104
-
105
- ## Middle-Class Complete
106
-
107
- You've now learned all 9 middle-class consonants! Here's the complete set:
108
-
109
- | Stop Consonants | Nasals/Liquids |
110
- |-----------------|----------------|
111
- | ก จ ด ต ป บ | ม ย ร ล อ |
112
-
113
- Why only 9 middle-class versus 24 low-class? Historical sound shifts moved many consonants to the low class over time. The remaining middle-class consonants are the "original" unvoiced stops plus sonorants.
114
-
115
- ## Tone Behavior of Middle Class
116
-
117
- With no tone mark, middle-class consonants produce:
118
- - **Live syllable** (open or nasal ending): **Mid tone**
119
- - **Dead syllable** (stop ending, short vowel): **Low tone**
120
-
121
- Examples:
122
- - กา (gaa) — live, mid tone
123
- - กับ (gàp) — dead, low tone
124
-
125
- This will make more sense after you learn vowels and tone marks!
126
-
127
- ## Key Points
128
-
129
- 1. **ม** is a nasal — air through nose, same sound initial and final
130
- 2. **ย** becomes a vowel sound (/i/) in final position
131
- 3. **ร and ล** both become /n/ at syllable end
132
- 4. **อ** is the "silent" consonant for vowel-initial words
133
- 5. **All 9 middle-class** consonants share the same tone rules
134
-
135
- ## Practice Tip: Shape Recognition
136
-
137
- - **ม** looks like a "3" with a tail
138
- - **ย** has a distinctive curving shape
139
- - **ร and ล** can be confusing — ร has the loop on top, ล doesn't
140
- - **อ** looks like a circle with a tail
141
-
142
- ## Practice Exercises
143
-
144
- :::exercise{id="middle-2-final-sounds" type="matching" title="Final Position Sounds" skill="character-sound-mapping" tests="boat,monkey,ogre,horse" objectiveId="obj-nasal-approx"}
145
-
146
- **Question:** Match each consonant to its final position sound
147
-
148
- - ร (boat)
149
- - ล (monkey)
150
- - ย (ogre)
151
- - ม (horse)
152
-
153
- **Answer:**
154
-
155
- - ร → /n/ (becomes N in final position)
156
- - ล → /n/ (becomes N in final position)
157
- - ย → /i/ (becomes vowel-like sound)
158
- - ม → /m/ (stays M in final position)
159
-
160
- **Explanation:** Unlike stop consonants, these sonorants maintain or transform their sound. Both ร and ล become /n/ finally, which surprises many learners. ย becomes vowel-like, and ม stays the same.
161
-
162
- :::
163
-
164
- :::exercise{id="middle-2-special-case" type="multiple-choice" title="The Special อ Consonant" skill="character-sound-mapping" tests="bowl" objectiveId="obj-silent-consonant"}
165
-
166
- **Question:** What makes อ (bowl) special?
167
-
168
- **Options:**
169
- - It's the only vowel
170
- - It serves as both silent consonant carrier and vowel component
171
- - It's never used
172
- - It's always pronounced
173
-
174
- **Answer:** 2
175
-
176
- **Explanation:** อ has dual functions: (1) as a silent placeholder for vowel-initial syllables (อา = "aa"), and (2) as a vowel component representing /ɔɔ/ in certain combinations. This makes it unique among Thai consonants.
177
-
178
- :::
179
-
180
- :::exercise{id="middle-2-complete-set" type="fill-in-blank" title="Complete Middle-Class Set" skill="character-recognition" objectiveId="obj-complete-mid"}
181
-
182
- **Question:** How many middle-class consonants are there, and what are they?
183
-
184
- **Answer:**
185
-
186
- There are **9 middle-class consonants** total:
187
- - Stop consonants: ก จ ด ต ป บ
188
- - Nasals/Liquids: ม ย ร ล อ
189
-
190
- **Explanation:** Middle-class is the smallest group (9 consonants) compared to high-class (11) and low-class (24). They're called "middle" because they produce mid tones in basic patterns, forming the baseline for the tone system.
191
-
192
- :::
193
-
194
- ## What's Next
195
-
196
- In Lesson 3, you'll start learning **high-class consonants** — these create rising tones and are the "aspirated" (breathy) versions of sounds you already know.
197
- `;
198
- export {
199
- n as default
200
- };
201
- //# sourceMappingURL=lesson-02-CbJJ5Amt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-CbJJ5Amt.js","sources":["../src/syllabi/alphabet/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-script-lesson-02\\ntitle: \\\"บทที่ 2 — พยัญชนะกลาง II\\\"\\ndescription: \\\"Middle-Class Consonants Part 2: ม ย ร ล อ — Nasals, liquids, and the silent consonant\\\"\\norder: 2\\nparentId: thai-script-alphabet\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - consonants\\n - middle-class\\n - nasal\\n - approximant\\n - basic-characters\\nmetadata:\\n estimatedTime: 25\\n prerequisites:\\n - thai-script-lesson-01\\n learningObjectives:\\n - id: obj-complete-mid\\n description: \\\"Complete your knowledge of middle-class consonants\\\"\\n skill: character-recognition\\n references: [horse, ogre, boat, monkey, bowl]\\n - id: obj-nasal-approx\\n description: \\\"Understand nasals and approximants\\\"\\n skill: character-sound-mapping\\n - id: obj-silent-consonant\\n description: \\\"Learn the special role of อ as a silent consonant\\\"\\n skill: character-sound-mapping\\n references: [bowl]\\n - id: obj-syllable-reading\\n description: \\\"Practice reading simple syllables\\\"\\n skill: character-sound-mapping\\n---\\n\\n# บทที่ 2 (Lesson 2) — Middle-Class Consonants II\\n\\n## Introduction\\n\\nIn this lesson, you'll complete the middle-class consonants with 5 more characters. These include **nasals** (ม), **liquids** (ร ล), **approximants** (ย ว), and the unique **silent consonant** (อ).\\n\\n## Why These Are Different\\n\\nThe consonants in Lesson 1 were all **stops** — sounds made by completely blocking airflow then releasing. Today's consonants are different:\\n\\n- **Nasals** (ม): Air flows through the nose\\n- **Liquids** (ร ล): Air flows around the tongue\\n- **Approximants** (ย): Tongue approaches but doesn't touch\\n\\nThis affects their behavior in final position — they don't become unreleased stops like the Lesson 1 consonants.\\n\\n## Characters\\n\\n:::character-set{id=\\\"thai-middle-consonants-2\\\" title=\\\"Middle-Class Consonants II\\\"}\\n\\n::character{id=\\\"horse\\\" canonicalRef=\\\"horse\\\" data:class=\\\"low\\\" char=\\\"ม\\\" name=\\\"ม ม้า (mɔɔ máa)\\\" nativeName=\\\"ม ม้า\\\" transliteration=\\\"m\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"ogre\\\" canonicalRef=\\\"ogre\\\" data:class=\\\"low\\\" char=\\\"ย\\\" name=\\\"ย ยักษ์ (yɔɔ yák)\\\" nativeName=\\\"ย ยักษ์\\\" transliteration=\\\"y\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"boat\\\" canonicalRef=\\\"boat\\\" data:class=\\\"low\\\" char=\\\"ร\\\" name=\\\"ร เรือ (rɔɔ rʉa)\\\" nativeName=\\\"ร เรือ\\\" transliteration=\\\"r/n\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"monkey\\\" canonicalRef=\\\"monkey\\\" data:class=\\\"low\\\" char=\\\"ล\\\" name=\\\"ล ลิง (lɔɔ ling)\\\" nativeName=\\\"ล ลิง\\\" transliteration=\\\"l/n\\\" charType=\\\"consonant\\\"}\\n\\n::character{id=\\\"bowl\\\" canonicalRef=\\\"bowl\\\" data:class=\\\"middle\\\" char=\\\"อ\\\" name=\\\"อ อ่าง (ɔɔ àang)\\\" nativeName=\\\"อ อ่าง\\\" transliteration=\\\"-/vowel\\\" charType=\\\"consonant\\\"}\\n\\n:::\\n\\n## The Special Case: อ (Ɔɔ Àang)\\n\\n**อ** is the most unusual Thai consonant. It has **two completely different roles**:\\n\\n### As Initial Consonant\\nWhen starting a syllable that begins with a vowel sound, อ serves as a **silent placeholder**:\\n- อา (aa) — the อ is silent, you just hear \\\"aa\\\"\\n- Without อ, there would be no consonant to \\\"carry\\\" the vowel\\n\\n### As Vowel Component\\nIn certain vowel combinations, อ represents the sound /ɔɔ/:\\n- เมือง (mʉang) — the อ makes the /ɔ/ sound\\n\\nThis dual nature makes อ essential despite being \\\"silent\\\" in many words.\\n\\n## Sound Changes for Nasals and Liquids\\n\\nUnlike the stop consonants from Lesson 1, these consonants keep their basic sound quality in final position:\\n\\n| Consonant | Initial Sound | Final Sound | Example |\\n|-----------|---------------|-------------|---------|\\n| ม | **m** | **m** | มา (maa) / ลม (lom) |\\n| ย | **y** | **i** (as vowel) | ยา (yaa) / สาย (sǎai) |\\n| ร | **r** (rolled) | **n** | รัก (rák) / ตอร์ (dton) |\\n| ล | **l** | **n** | ลา (laa) / กล (gon) |\\n\\n**Important**: Both ร and ล become /n/ in final position. This surprises many learners!\\n\\n## The Thai R Sound\\n\\nThai **ร** is a rolled or flapped R, similar to Spanish. In casual speech, many Thai speakers substitute **ล** for **ร** (so \\\"ร เรือ\\\" sounds like \\\"ล เลือ\\\"). This is very common but considered informal.\\n\\nIn careful speech:\\n- **ร** = alveolar trill or flap (tongue tip vibrates)\\n- **ล** = lateral (air flows around tongue sides)\\n\\n## Middle-Class Complete\\n\\nYou've now learned all 9 middle-class consonants! Here's the complete set:\\n\\n| Stop Consonants | Nasals/Liquids |\\n|-----------------|----------------|\\n| ก จ ด ต ป บ | ม ย ร ล อ |\\n\\nWhy only 9 middle-class versus 24 low-class? Historical sound shifts moved many consonants to the low class over time. The remaining middle-class consonants are the \\\"original\\\" unvoiced stops plus sonorants.\\n\\n## Tone Behavior of Middle Class\\n\\nWith no tone mark, middle-class consonants produce:\\n- **Live syllable** (open or nasal ending): **Mid tone**\\n- **Dead syllable** (stop ending, short vowel): **Low tone**\\n\\nExamples:\\n- กา (gaa) — live, mid tone\\n- กับ (gàp) — dead, low tone\\n\\nThis will make more sense after you learn vowels and tone marks!\\n\\n## Key Points\\n\\n1. **ม** is a nasal — air through nose, same sound initial and final\\n2. **ย** becomes a vowel sound (/i/) in final position\\n3. **ร and ล** both become /n/ at syllable end\\n4. **อ** is the \\\"silent\\\" consonant for vowel-initial words\\n5. **All 9 middle-class** consonants share the same tone rules\\n\\n## Practice Tip: Shape Recognition\\n\\n- **ม** looks like a \\\"3\\\" with a tail\\n- **ย** has a distinctive curving shape\\n- **ร and ล** can be confusing — ร has the loop on top, ล doesn't\\n- **อ** looks like a circle with a tail\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"middle-2-final-sounds\\\" type=\\\"matching\\\" title=\\\"Final Position Sounds\\\" skill=\\\"character-sound-mapping\\\" tests=\\\"boat,monkey,ogre,horse\\\" objectiveId=\\\"obj-nasal-approx\\\"}\\n\\n**Question:** Match each consonant to its final position sound\\n\\n- ร (boat)\\n- ล (monkey)\\n- ย (ogre)\\n- ม (horse)\\n\\n**Answer:**\\n\\n- ร → /n/ (becomes N in final position)\\n- ล → /n/ (becomes N in final position)\\n- ย → /i/ (becomes vowel-like sound)\\n- ม → /m/ (stays M in final position)\\n\\n**Explanation:** Unlike stop consonants, these sonorants maintain or transform their sound. Both ร and ล become /n/ finally, which surprises many learners. ย becomes vowel-like, and ม stays the same.\\n\\n:::\\n\\n:::exercise{id=\\\"middle-2-special-case\\\" type=\\\"multiple-choice\\\" title=\\\"The Special อ Consonant\\\" skill=\\\"character-sound-mapping\\\" tests=\\\"bowl\\\" objectiveId=\\\"obj-silent-consonant\\\"}\\n\\n**Question:** What makes อ (bowl) special?\\n\\n**Options:**\\n- It's the only vowel\\n- It serves as both silent consonant carrier and vowel component\\n- It's never used\\n- It's always pronounced\\n\\n**Answer:** 2\\n\\n**Explanation:** อ has dual functions: (1) as a silent placeholder for vowel-initial syllables (อา = \\\"aa\\\"), and (2) as a vowel component representing /ɔɔ/ in certain combinations. This makes it unique among Thai consonants.\\n\\n:::\\n\\n:::exercise{id=\\\"middle-2-complete-set\\\" type=\\\"fill-in-blank\\\" title=\\\"Complete Middle-Class Set\\\" skill=\\\"character-recognition\\\" objectiveId=\\\"obj-complete-mid\\\"}\\n\\n**Question:** How many middle-class consonants are there, and what are they?\\n\\n**Answer:**\\n\\nThere are **9 middle-class consonants** total:\\n- Stop consonants: ก จ ด ต ป บ\\n- Nasals/Liquids: ม ย ร ล อ\\n\\n**Explanation:** Middle-class is the smallest group (9 consonants) compared to high-class (11) and low-class (24). They're called \\\"middle\\\" because they produce mid tones in basic patterns, forming the baseline for the tone system.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll start learning **high-class consonants** — these create rising tones and are the \\\"aspirated\\\" (breathy) versions of sounds you already know.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,203 +0,0 @@
1
- const n = `---
2
- type: lesson
3
- id: thai-numbers-lesson-02
4
- title: "บทที่ 2 — นับ ๑-๑๐๐"
5
- description: "Counting 1-100: Teens, tens, and special rules"
6
- order: 2
7
- parentId: thai-numbers
8
- difficulty: beginner
9
- cefrLevel: A1
10
- categories:
11
- - numbers
12
- - counting
13
- - basics
14
- metadata:
15
- estimatedTime: 25
16
- prerequisites:
17
- - thai-numbers-lesson-01
18
- learningObjectives:
19
- - id: obj-count-1-100
20
- description: "Count from 1 to 100 fluently"
21
- skill: word-pronunciation
22
- references: [num-one, num-two, num-three, num-four, num-five, num-six, num-seven, num-eight, num-nine]
23
- - id: obj-special-rule-teens
24
- description: "Understand the special rule for 11-19"
25
- skill: word-production
26
- references: [num-one]
27
- - id: obj-twenty-rule
28
- description: "Know why 20 uses ยี่ instead of สอง"
29
- skill: word-production
30
- references: [num-two]
31
- - id: obj-two-digit-numbers
32
- description: "Form any two-digit number correctly"
33
- skill: word-production
34
- references: [num-one, num-two, num-three, num-four, num-five, num-six, num-seven, num-eight, num-nine]
35
- ---
36
-
37
- # บทที่ 2 (Lesson 2) — Counting 1-100
38
-
39
- ## Introduction
40
-
41
- Thai counting follows a logical pattern, but with a few important exceptions that every learner must know. The rules for teens (11-19) and the word for 20 are different from what you might expect.
42
-
43
- ## The Basic Pattern
44
-
45
- Thai numbers follow a place-value system like English:
46
- - **Tens place** + สิบ (sìp) = "ten"
47
- - **Ones place** = the digit
48
-
49
- Example: 35 = สาม (3) + สิบ (10) + ห้า (5) = สามสิบห้า (sǎam-sìp-hâa)
50
-
51
- ## The Teens (11-19): Special Rule #1
52
-
53
- For 11-19, Thai uses สิบ (sìp) first, then adds the ones digit. But there's a catch:
54
-
55
- **หนึ่ง becomes เอ็ด (èt) when it's not alone.**
56
-
57
- | Number | Wrong | Correct | Pronunciation |
58
- |--------|-------|---------|---------------|
59
- | 10 | — | สิบ | sìp |
60
- | 11 | ~~สิบหนึ่ง~~ | สิบเอ็ด | sìp-èt |
61
- | 12 | — | สิบสอง | sìp-sǒng |
62
- | 13 | — | สิบสาม | sìp-sǎam |
63
- | 14 | — | สิบสี่ | sìp-sìi |
64
- | 15 | — | สิบห้า | sìp-hâa |
65
- | 16 | — | สิบหก | sìp-hòk |
66
- | 17 | — | สิบเจ็ด | sìp-jèt |
67
- | 18 | — | สิบแปด | sìp-bpàet |
68
- | 19 | — | สิบเก้า | sìp-gâo |
69
-
70
- **Key rule**: หนึ่ง (nʉ̀ng) is only used when it stands alone. In compounds, it becomes เอ็ด (èt).
71
-
72
- ## Twenty: Special Rule #2
73
-
74
- Here's the second exception: 20 is NOT สองสิบ!
75
-
76
- **20 = ยี่สิบ (yîi-sìp)**
77
-
78
- Why? Historical reasons — ยี่ is an older word for "two" that survives only in this context.
79
-
80
- | Number | Thai | Pronunciation |
81
- |--------|------|---------------|
82
- | 20 | ยี่สิบ | yîi-sìp |
83
- | 21 | ยี่สิบเอ็ด | yîi-sìp-èt |
84
- | 22 | ยี่สิบสอง | yîi-sìp-sǒng |
85
- | 29 | ยี่สิบเก้า | yîi-sìp-gâo |
86
-
87
- ## The Regular Tens (30-90)
88
-
89
- After 20, the pattern is regular:
90
-
91
- | Number | Thai | Pronunciation |
92
- |--------|------|---------------|
93
- | 30 | สามสิบ | sǎam-sìp |
94
- | 40 | สี่สิบ | sìi-sìp |
95
- | 50 | ห้าสิบ | hâa-sìp |
96
- | 60 | หกสิบ | hòk-sìp |
97
- | 70 | เจ็ดสิบ | jèt-sìp |
98
- | 80 | แปดสิบ | bpàet-sìp |
99
- | 90 | เก้าสิบ | gâo-sìp |
100
- | 100 | ร้อย | rɔ́ɔi |
101
-
102
- ## Building Any Number 1-99
103
-
104
- Formula: **[tens word] + สิบ + [ones word]**
105
-
106
- Remember:
107
- - Use เอ็ด for 1 in compounds (21, 31, 41...)
108
- - Use ยี่สิบ for 20-29
109
- - Everything else is regular
110
-
111
- | Number | Breakdown | Thai |
112
- |--------|-----------|------|
113
- | 47 | 4×10 + 7 | สี่สิบเจ็ด |
114
- | 63 | 6×10 + 3 | หกสิบสาม |
115
- | 81 | 8×10 + 1 | แปดสิบเอ็ด |
116
- | 99 | 9×10 + 9 | เก้าสิบเก้า |
117
-
118
- ## Key Points
119
-
120
- 1. **เอ็ด replaces หนึ่ง**: Always in compound numbers (11, 21, 31...)
121
- 2. **ยี่สิบ for 20**: Never สองสิบ
122
- 3. **สิบ = 10**: The building block for all two-digit numbers
123
- 4. **Pattern is logical**: Once you know the exceptions, it's predictable
124
-
125
- ## Common Mistakes
126
-
127
- - ❌ ยี่สิบหนึ่ง → ✓ ยี่สิบเอ็ด (21)
128
- - ❌ สองสิบ → ✓ ยี่สิบ (20)
129
- - ❌ สามสิบหนึ่ง → ✓ สามสิบเอ็ด (31)
130
-
131
- ## Practice Counting
132
-
133
- Try saying these out loud:
134
- - 15, 25, 35, 45, 55
135
- - 11, 22, 33, 44, 55
136
- - 19, 29, 39, 49, 59
137
-
138
- ## Practice Exercises
139
-
140
- :::exercise{id="numbers-2-special-rules" type="fill-in-blank" title="Special Rules Practice" skill="word-production" tests="num-one,num-two" objectiveId="obj-special-rule-teens"}
141
-
142
- **Question:** Write these numbers in Thai:
143
-
144
- - 11 (ten + one)
145
- - 20 (twenty)
146
- - 21 (twenty + one)
147
- - 31 (thirty + one)
148
-
149
- **Answer:**
150
-
151
- - 11 → สิบ**เอ็ด** (not สิบหนึ่ง)
152
- - 20 → **ยี่**สิบ (not สองสิบ)
153
- - 21 → ยี่สิบ**เอ็ด** (not ยี่สิบหนึ่ง)
154
- - 31 → สามสิบ**เอ็ด** (not สามสิบหนึ่ง)
155
-
156
- **Explanation:** Remember the two special rules: (1) หนึ่ง becomes เอ็ด in compound numbers, and (2) 20 uses ยี่สิบ, not สองสิบ. These are the only exceptions to the regular pattern.
157
-
158
- :::
159
-
160
- :::exercise{id="numbers-2-building-numbers" type="matching" title="Building Two-Digit Numbers" skill="word-recognition" objectiveId="obj-two-digit-numbers"}
161
-
162
- **Question:** Match each number to its Thai form
163
-
164
- - 47
165
- - 63
166
- - 81
167
- - 99
168
-
169
- **Answer:**
170
-
171
- - 47 → สี่สิบเจ็ด (4×10 + 7)
172
- - 63 → หกสิบสาม (6×10 + 3)
173
- - 81 → แปดสิบเอ็ด (8×10 + 1, remember เอ็ด!)
174
- - 99 → เก้าสิบเก้า (9×10 + 9)
175
-
176
- **Explanation:** The pattern is [tens word] + สิบ + [ones word]. For numbers ending in 1, use เอ็ด instead of หนึ่ง.
177
-
178
- :::
179
-
180
- :::exercise{id="numbers-2-common-mistakes" type="multiple-choice" title="Common Mistakes" skill="word-pronunciation" tests="num-one,num-two" objectiveId="obj-twenty-rule"}
181
-
182
- **Question:** Which is the correct way to say 21 in Thai?
183
-
184
- **Options:**
185
- - ยี่สิบหนึ่ง
186
- - ยี่สิบเอ็ด
187
- - สองสิบเอ็ด
188
- - ยี่สิบยี่
189
-
190
- **Answer:** 2
191
-
192
- **Explanation:** 21 is ยี่สิบเอ็ด. Remember: (1) 20 uses ยี่สิบ (not สองสิบ), and (2) หนึ่ง becomes เอ็ด in compounds. So ยี่สิบ + เอ็ด = ยี่สิบเอ็ด.
193
-
194
- :::
195
-
196
- ## What's Next
197
-
198
- In Lesson 3, you'll learn large numbers — hundreds, thousands, and millions — including how Thai groups numbers differently than English.
199
- `;
200
- export {
201
- n as default
202
- };
203
- //# sourceMappingURL=lesson-02-DGrALAgG.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-DGrALAgG.js","sources":["../src/syllabi/numbers/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-numbers-lesson-02\\ntitle: \\\"บทที่ 2 — นับ ๑-๑๐๐\\\"\\ndescription: \\\"Counting 1-100: Teens, tens, and special rules\\\"\\norder: 2\\nparentId: thai-numbers\\ndifficulty: beginner\\ncefrLevel: A1\\ncategories:\\n - numbers\\n - counting\\n - basics\\nmetadata:\\n estimatedTime: 25\\n prerequisites:\\n - thai-numbers-lesson-01\\n learningObjectives:\\n - id: obj-count-1-100\\n description: \\\"Count from 1 to 100 fluently\\\"\\n skill: word-pronunciation\\n references: [num-one, num-two, num-three, num-four, num-five, num-six, num-seven, num-eight, num-nine]\\n - id: obj-special-rule-teens\\n description: \\\"Understand the special rule for 11-19\\\"\\n skill: word-production\\n references: [num-one]\\n - id: obj-twenty-rule\\n description: \\\"Know why 20 uses ยี่ instead of สอง\\\"\\n skill: word-production\\n references: [num-two]\\n - id: obj-two-digit-numbers\\n description: \\\"Form any two-digit number correctly\\\"\\n skill: word-production\\n references: [num-one, num-two, num-three, num-four, num-five, num-six, num-seven, num-eight, num-nine]\\n---\\n\\n# บทที่ 2 (Lesson 2) — Counting 1-100\\n\\n## Introduction\\n\\nThai counting follows a logical pattern, but with a few important exceptions that every learner must know. The rules for teens (11-19) and the word for 20 are different from what you might expect.\\n\\n## The Basic Pattern\\n\\nThai numbers follow a place-value system like English:\\n- **Tens place** + สิบ (sìp) = \\\"ten\\\"\\n- **Ones place** = the digit\\n\\nExample: 35 = สาม (3) + สิบ (10) + ห้า (5) = สามสิบห้า (sǎam-sìp-hâa)\\n\\n## The Teens (11-19): Special Rule #1\\n\\nFor 11-19, Thai uses สิบ (sìp) first, then adds the ones digit. But there's a catch:\\n\\n**หนึ่ง becomes เอ็ด (èt) when it's not alone.**\\n\\n| Number | Wrong | Correct | Pronunciation |\\n|--------|-------|---------|---------------|\\n| 10 | — | สิบ | sìp |\\n| 11 | ~~สิบหนึ่ง~~ | สิบเอ็ด | sìp-èt |\\n| 12 | — | สิบสอง | sìp-sǒng |\\n| 13 | — | สิบสาม | sìp-sǎam |\\n| 14 | — | สิบสี่ | sìp-sìi |\\n| 15 | — | สิบห้า | sìp-hâa |\\n| 16 | — | สิบหก | sìp-hòk |\\n| 17 | — | สิบเจ็ด | sìp-jèt |\\n| 18 | — | สิบแปด | sìp-bpàet |\\n| 19 | — | สิบเก้า | sìp-gâo |\\n\\n**Key rule**: หนึ่ง (nʉ̀ng) is only used when it stands alone. In compounds, it becomes เอ็ด (èt).\\n\\n## Twenty: Special Rule #2\\n\\nHere's the second exception: 20 is NOT สองสิบ!\\n\\n**20 = ยี่สิบ (yîi-sìp)**\\n\\nWhy? Historical reasons — ยี่ is an older word for \\\"two\\\" that survives only in this context.\\n\\n| Number | Thai | Pronunciation |\\n|--------|------|---------------|\\n| 20 | ยี่สิบ | yîi-sìp |\\n| 21 | ยี่สิบเอ็ด | yîi-sìp-èt |\\n| 22 | ยี่สิบสอง | yîi-sìp-sǒng |\\n| 29 | ยี่สิบเก้า | yîi-sìp-gâo |\\n\\n## The Regular Tens (30-90)\\n\\nAfter 20, the pattern is regular:\\n\\n| Number | Thai | Pronunciation |\\n|--------|------|---------------|\\n| 30 | สามสิบ | sǎam-sìp |\\n| 40 | สี่สิบ | sìi-sìp |\\n| 50 | ห้าสิบ | hâa-sìp |\\n| 60 | หกสิบ | hòk-sìp |\\n| 70 | เจ็ดสิบ | jèt-sìp |\\n| 80 | แปดสิบ | bpàet-sìp |\\n| 90 | เก้าสิบ | gâo-sìp |\\n| 100 | ร้อย | rɔ́ɔi |\\n\\n## Building Any Number 1-99\\n\\nFormula: **[tens word] + สิบ + [ones word]**\\n\\nRemember:\\n- Use เอ็ด for 1 in compounds (21, 31, 41...)\\n- Use ยี่สิบ for 20-29\\n- Everything else is regular\\n\\n| Number | Breakdown | Thai |\\n|--------|-----------|------|\\n| 47 | 4×10 + 7 | สี่สิบเจ็ด |\\n| 63 | 6×10 + 3 | หกสิบสาม |\\n| 81 | 8×10 + 1 | แปดสิบเอ็ด |\\n| 99 | 9×10 + 9 | เก้าสิบเก้า |\\n\\n## Key Points\\n\\n1. **เอ็ด replaces หนึ่ง**: Always in compound numbers (11, 21, 31...)\\n2. **ยี่สิบ for 20**: Never สองสิบ\\n3. **สิบ = 10**: The building block for all two-digit numbers\\n4. **Pattern is logical**: Once you know the exceptions, it's predictable\\n\\n## Common Mistakes\\n\\n- ❌ ยี่สิบหนึ่ง → ✓ ยี่สิบเอ็ด (21)\\n- ❌ สองสิบ → ✓ ยี่สิบ (20)\\n- ❌ สามสิบหนึ่ง → ✓ สามสิบเอ็ด (31)\\n\\n## Practice Counting\\n\\nTry saying these out loud:\\n- 15, 25, 35, 45, 55\\n- 11, 22, 33, 44, 55\\n- 19, 29, 39, 49, 59\\n\\n## Practice Exercises\\n\\n:::exercise{id=\\\"numbers-2-special-rules\\\" type=\\\"fill-in-blank\\\" title=\\\"Special Rules Practice\\\" skill=\\\"word-production\\\" tests=\\\"num-one,num-two\\\" objectiveId=\\\"obj-special-rule-teens\\\"}\\n\\n**Question:** Write these numbers in Thai:\\n\\n- 11 (ten + one)\\n- 20 (twenty)\\n- 21 (twenty + one)\\n- 31 (thirty + one)\\n\\n**Answer:**\\n\\n- 11 → สิบ**เอ็ด** (not สิบหนึ่ง)\\n- 20 → **ยี่**สิบ (not สองสิบ)\\n- 21 → ยี่สิบ**เอ็ด** (not ยี่สิบหนึ่ง)\\n- 31 → สามสิบ**เอ็ด** (not สามสิบหนึ่ง)\\n\\n**Explanation:** Remember the two special rules: (1) หนึ่ง becomes เอ็ด in compound numbers, and (2) 20 uses ยี่สิบ, not สองสิบ. These are the only exceptions to the regular pattern.\\n\\n:::\\n\\n:::exercise{id=\\\"numbers-2-building-numbers\\\" type=\\\"matching\\\" title=\\\"Building Two-Digit Numbers\\\" skill=\\\"word-recognition\\\" objectiveId=\\\"obj-two-digit-numbers\\\"}\\n\\n**Question:** Match each number to its Thai form\\n\\n- 47\\n- 63\\n- 81\\n- 99\\n\\n**Answer:**\\n\\n- 47 → สี่สิบเจ็ด (4×10 + 7)\\n- 63 → หกสิบสาม (6×10 + 3)\\n- 81 → แปดสิบเอ็ด (8×10 + 1, remember เอ็ด!)\\n- 99 → เก้าสิบเก้า (9×10 + 9)\\n\\n**Explanation:** The pattern is [tens word] + สิบ + [ones word]. For numbers ending in 1, use เอ็ด instead of หนึ่ง.\\n\\n:::\\n\\n:::exercise{id=\\\"numbers-2-common-mistakes\\\" type=\\\"multiple-choice\\\" title=\\\"Common Mistakes\\\" skill=\\\"word-pronunciation\\\" tests=\\\"num-one,num-two\\\" objectiveId=\\\"obj-twenty-rule\\\"}\\n\\n**Question:** Which is the correct way to say 21 in Thai?\\n\\n**Options:**\\n- ยี่สิบหนึ่ง\\n- ยี่สิบเอ็ด\\n- สองสิบเอ็ด\\n- ยี่สิบยี่\\n\\n**Answer:** 2\\n\\n**Explanation:** 21 is ยี่สิบเอ็ด. Remember: (1) 20 uses ยี่สิบ (not สองสิบ), and (2) หนึ่ง becomes เอ็ด in compounds. So ยี่สิบ + เอ็ด = ยี่สิบเอ็ด.\\n\\n:::\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn large numbers — hundreds, thousands, and millions — including how Thai groups numbers differently than English.\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
@@ -1,116 +0,0 @@
1
- const n = `---
2
- type: lesson
3
- id: thai-grammar-lesson-02
4
- title: "บทที่ 2 — การถามคำถาม"
5
- description: "Questions: Question words and yes/no questions"
6
- order: 2
7
- parentId: thai-grammar
8
- difficulty: intermediate
9
- cefrLevel: A2
10
- categories:
11
- - grammar
12
- - questions
13
- metadata:
14
- estimatedTime: 30
15
- prerequisites:
16
- - thai-grammar-lesson-01
17
- learningObjectives:
18
- - id: obj-02-yes-no-questions
19
- description: "Form yes/no questions"
20
- skill: pattern-application
21
- - id: obj-02-question-words
22
- description: "Use question words"
23
- skill: word-production
24
- - id: obj-02-question-intonation
25
- description: "Understand question intonation"
26
- skill: pattern-recognition
27
- ---
28
-
29
- # บทที่ 2 (Lesson 2) — Questions
30
-
31
- ## Introduction
32
-
33
- Thai has two main question types: **yes/no questions** (add ไหม at the end) and **wh-questions** (use question words).
34
-
35
- ## Yes/No Questions: Add ไหม (mái)
36
-
37
- Simply add **ไหม** at the end of a statement:
38
-
39
- | Statement | Question |
40
- |-----------|----------|
41
- | คุณกินข้าว (you eat rice) | คุณกินข้าวไหม? (Do you eat rice?) |
42
- | เขาไปตลาด (he goes to market) | เขาไปตลาดไหม? (Does he go to market?) |
43
- | มีห้องว่าง (there's a room) | มีห้องว่างไหม? (Is there a room?) |
44
-
45
- ## Answering Yes/No Questions
46
-
47
- | Response | Meaning |
48
- |----------|---------|
49
- | ครับ/ค่ะ | Yes (polite) |
50
- | ใช่ (châi) | Yes/correct |
51
- | ไม่ (mâi) + verb | No (repeat verb with ไม่) |
52
- | ไม่ครับ/ค่ะ | No (polite) |
53
-
54
- Example:
55
- - Q: คุณชอบอาหารไทยไหม? (Do you like Thai food?)
56
- - A: ชอบครับ (Yes, I like it) or ไม่ชอบครับ (No, I don't like it)
57
-
58
- ## Question Words
59
-
60
- | Thai | Romanization | Meaning |
61
- |------|--------------|---------|
62
- | อะไร | à-rai | what |
63
- | ใคร | khrai | who |
64
- | ที่ไหน | thîi-nǎi | where |
65
- | เมื่อไหร่ | mûuea-rài | when |
66
- | ทำไม | tham-mai | why |
67
- | อย่างไร/ยังไง | yàang-rai/yang-ngai | how |
68
- | เท่าไหร่ | thâo-rài | how much |
69
- | กี่ | gìi | how many |
70
-
71
- ## Question Word Placement
72
-
73
- Question words go **where the answer would go**:
74
-
75
- | Question | Answer |
76
- |----------|--------|
77
- | คุณกินอะไร? (What do you eat?) | ผมกินข้าว (I eat rice) |
78
- | ใครมา? (Who came?) | เพื่อนมา (A friend came) |
79
- | คุณไปที่ไหน? (Where do you go?) | ผมไปตลาด (I go to market) |
80
- | นี่อะไร? (What is this?) | นี่หนังสือ (This is a book) |
81
-
82
- ## Common Question Patterns
83
-
84
- | Pattern | Example | Meaning |
85
- |---------|---------|---------|
86
- | ...อะไร? | ชื่ออะไร? | What is (your) name? |
87
- | ...ที่ไหน? | ห้องน้ำอยู่ที่ไหน? | Where is the bathroom? |
88
- | ...เท่าไหร่? | ราคาเท่าไหร่? | How much (is the price)? |
89
- | กี่...? | กี่โมง? | What time? (How many hours?) |
90
- | ...หรือเปล่า? | ร้อนหรือเปล่า? | Is it hot? |
91
-
92
- ## Alternative: หรือเปล่า (rǔue bplào)
93
-
94
- Another way to ask yes/no questions:
95
-
96
- | With ไหม | With หรือเปล่า |
97
- |----------|----------------|
98
- | คุณหิวไหม? | คุณหิวหรือเปล่า? |
99
-
100
- Both mean "Are you hungry?" but หรือเปล่า sounds slightly softer.
101
-
102
- ## Key Points
103
-
104
- 1. **ไหม at the end** makes any statement a yes/no question
105
- 2. **Answer by repeating the verb** (with or without ไม่)
106
- 3. **Question words** replace the unknown information
107
- 4. **No subject-verb inversion** like in English
108
-
109
- ## What's Next
110
-
111
- In Lesson 3, you'll learn about Thai negation — how to say "no" and "not" in different contexts, including the important distinction between ไม่ (mâi) and ไม่ใช่ (mâi châi).
112
- `;
113
- export {
114
- n as default
115
- };
116
- //# sourceMappingURL=lesson-02-DcMDDBDL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lesson-02-DcMDDBDL.js","sources":["../src/syllabi/grammar/lessons/lesson-02.mdx?raw"],"sourcesContent":["export default \"---\\ntype: lesson\\nid: thai-grammar-lesson-02\\ntitle: \\\"บทที่ 2 — การถามคำถาม\\\"\\ndescription: \\\"Questions: Question words and yes/no questions\\\"\\norder: 2\\nparentId: thai-grammar\\ndifficulty: intermediate\\ncefrLevel: A2\\ncategories:\\n - grammar\\n - questions\\nmetadata:\\n estimatedTime: 30\\n prerequisites:\\n - thai-grammar-lesson-01\\n learningObjectives:\\n - id: obj-02-yes-no-questions\\n description: \\\"Form yes/no questions\\\"\\n skill: pattern-application\\n - id: obj-02-question-words\\n description: \\\"Use question words\\\"\\n skill: word-production\\n - id: obj-02-question-intonation\\n description: \\\"Understand question intonation\\\"\\n skill: pattern-recognition\\n---\\n\\n# บทที่ 2 (Lesson 2) — Questions\\n\\n## Introduction\\n\\nThai has two main question types: **yes/no questions** (add ไหม at the end) and **wh-questions** (use question words).\\n\\n## Yes/No Questions: Add ไหม (mái)\\n\\nSimply add **ไหม** at the end of a statement:\\n\\n| Statement | Question |\\n|-----------|----------|\\n| คุณกินข้าว (you eat rice) | คุณกินข้าวไหม? (Do you eat rice?) |\\n| เขาไปตลาด (he goes to market) | เขาไปตลาดไหม? (Does he go to market?) |\\n| มีห้องว่าง (there's a room) | มีห้องว่างไหม? (Is there a room?) |\\n\\n## Answering Yes/No Questions\\n\\n| Response | Meaning |\\n|----------|---------|\\n| ครับ/ค่ะ | Yes (polite) |\\n| ใช่ (châi) | Yes/correct |\\n| ไม่ (mâi) + verb | No (repeat verb with ไม่) |\\n| ไม่ครับ/ค่ะ | No (polite) |\\n\\nExample:\\n- Q: คุณชอบอาหารไทยไหม? (Do you like Thai food?)\\n- A: ชอบครับ (Yes, I like it) or ไม่ชอบครับ (No, I don't like it)\\n\\n## Question Words\\n\\n| Thai | Romanization | Meaning |\\n|------|--------------|---------|\\n| อะไร | à-rai | what |\\n| ใคร | khrai | who |\\n| ที่ไหน | thîi-nǎi | where |\\n| เมื่อไหร่ | mûuea-rài | when |\\n| ทำไม | tham-mai | why |\\n| อย่างไร/ยังไง | yàang-rai/yang-ngai | how |\\n| เท่าไหร่ | thâo-rài | how much |\\n| กี่ | gìi | how many |\\n\\n## Question Word Placement\\n\\nQuestion words go **where the answer would go**:\\n\\n| Question | Answer |\\n|----------|--------|\\n| คุณกินอะไร? (What do you eat?) | ผมกินข้าว (I eat rice) |\\n| ใครมา? (Who came?) | เพื่อนมา (A friend came) |\\n| คุณไปที่ไหน? (Where do you go?) | ผมไปตลาด (I go to market) |\\n| นี่อะไร? (What is this?) | นี่หนังสือ (This is a book) |\\n\\n## Common Question Patterns\\n\\n| Pattern | Example | Meaning |\\n|---------|---------|---------|\\n| ...อะไร? | ชื่ออะไร? | What is (your) name? |\\n| ...ที่ไหน? | ห้องน้ำอยู่ที่ไหน? | Where is the bathroom? |\\n| ...เท่าไหร่? | ราคาเท่าไหร่? | How much (is the price)? |\\n| กี่...? | กี่โมง? | What time? (How many hours?) |\\n| ...หรือเปล่า? | ร้อนหรือเปล่า? | Is it hot? |\\n\\n## Alternative: หรือเปล่า (rǔue bplào)\\n\\nAnother way to ask yes/no questions:\\n\\n| With ไหม | With หรือเปล่า |\\n|----------|----------------|\\n| คุณหิวไหม? | คุณหิวหรือเปล่า? |\\n\\nBoth mean \\\"Are you hungry?\\\" but หรือเปล่า sounds slightly softer.\\n\\n## Key Points\\n\\n1. **ไหม at the end** makes any statement a yes/no question\\n2. **Answer by repeating the verb** (with or without ไม่)\\n3. **Question words** replace the unknown information\\n4. **No subject-verb inversion** like in English\\n\\n## What's Next\\n\\nIn Lesson 3, you'll learn about Thai negation — how to say \\\"no\\\" and \\\"not\\\" in different contexts, including the important distinction between ไม่ (mâi) and ไม่ใช่ (mâi châi).\\n\""],"names":["lesson02"],"mappings":"AAAA,MAAAA,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}