@syllst/ko 0.1.1
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.
- package/dist/index.d.ts +80 -0
- package/dist/index.js +30 -0
- package/dist/shared.js +26 -0
- package/dist/syllabi/alphabet/index.d.ts +7 -0
- package/dist/syllabi/alphabet/index.js +47 -0
- package/dist/syllabi/alphabet/lessons/lesson-01.mdx.js +154 -0
- package/dist/syllabi/alphabet/lessons/lesson-02.mdx.js +169 -0
- package/dist/syllabi/alphabet/lessons/lesson-03.mdx.js +164 -0
- package/dist/syllabi/alphabet/lessons/lesson-04.mdx.js +154 -0
- package/dist/syllabi/alphabet/lessons/lesson-05.mdx.js +147 -0
- package/dist/syllabi/alphabet/lessons/lesson-06.mdx.js +169 -0
- package/dist/syllabi/alphabet/lessons/lesson-07.mdx.js +147 -0
- package/dist/syllabi/alphabet/lessons/lesson-08.mdx.js +172 -0
- package/dist/syllabi/alphabet/lessons/lesson-09.mdx.js +159 -0
- package/dist/syllabi/alphabet/lessons/lesson-10.mdx.js +175 -0
- package/dist/syllabi/essentials/index.d.ts +7 -0
- package/dist/syllabi/essentials/index.js +39 -0
- package/dist/syllabi/essentials/lessons/lesson-01.mdx.js +187 -0
- package/dist/syllabi/essentials/lessons/lesson-02.mdx.js +206 -0
- package/dist/syllabi/essentials/lessons/lesson-03.mdx.js +221 -0
- package/dist/syllabi/essentials/lessons/lesson-04.mdx.js +190 -0
- package/dist/syllabi/essentials/lessons/lesson-05.mdx.js +211 -0
- package/dist/syllabi/essentials/lessons/lesson-06.mdx.js +224 -0
- package/dist/syllabi/numbers/index.d.ts +7 -0
- package/dist/syllabi/numbers/index.js +37 -0
- package/dist/syllabi/numbers/lessons/lesson-01.mdx.js +175 -0
- package/dist/syllabi/numbers/lessons/lesson-02.mdx.js +200 -0
- package/dist/syllabi/numbers/lessons/lesson-03.mdx.js +193 -0
- package/dist/syllabi/numbers/lessons/lesson-04.mdx.js +166 -0
- package/dist/syllabi/numbers/lessons/lesson-05.mdx.js +237 -0
- package/package.json +72 -0
- package/src/syllabi/alphabet/lessons/lesson-01.mdx +150 -0
- package/src/syllabi/alphabet/lessons/lesson-02.mdx +165 -0
- package/src/syllabi/alphabet/lessons/lesson-03.mdx +160 -0
- package/src/syllabi/alphabet/lessons/lesson-04.mdx +150 -0
- package/src/syllabi/alphabet/lessons/lesson-05.mdx +143 -0
- package/src/syllabi/alphabet/lessons/lesson-06.mdx +165 -0
- package/src/syllabi/alphabet/lessons/lesson-07.mdx +143 -0
- package/src/syllabi/alphabet/lessons/lesson-08.mdx +168 -0
- package/src/syllabi/alphabet/lessons/lesson-09.mdx +155 -0
- package/src/syllabi/alphabet/lessons/lesson-10.mdx +171 -0
- package/src/syllabi/essentials/lessons/lesson-01.mdx +183 -0
- package/src/syllabi/essentials/lessons/lesson-02.mdx +202 -0
- package/src/syllabi/essentials/lessons/lesson-03.mdx +217 -0
- package/src/syllabi/essentials/lessons/lesson-04.mdx +186 -0
- package/src/syllabi/essentials/lessons/lesson-05.mdx +207 -0
- package/src/syllabi/essentials/lessons/lesson-06.mdx +220 -0
- package/src/syllabi/numbers/lessons/lesson-01.mdx +171 -0
- package/src/syllabi/numbers/lessons/lesson-02.mdx +196 -0
- package/src/syllabi/numbers/lessons/lesson-03.mdx +189 -0
- package/src/syllabi/numbers/lessons/lesson-04.mdx +162 -0
- package/src/syllabi/numbers/lessons/lesson-05.mdx +233 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types and utilities for SYLLST content
|
|
3
|
+
* (Inlined from @syllst/content-shared to make package self-contained)
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* CEFR language proficiency levels
|
|
7
|
+
*/
|
|
8
|
+
declare type CEFRLevel = 'A1' | 'A2' | 'B1' | 'B2' | 'C1' | 'C2';
|
|
9
|
+
|
|
10
|
+
export declare const config: SyllabusConfig;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Content loader interface
|
|
14
|
+
*/
|
|
15
|
+
declare interface ContentLoader {
|
|
16
|
+
/** Syllabus configuration */
|
|
17
|
+
config: SyllabusConfig;
|
|
18
|
+
/** Load a single lesson by number */
|
|
19
|
+
loadLesson(lessonNumber: number): Promise<LoadedLesson>;
|
|
20
|
+
/** Load all lessons */
|
|
21
|
+
loadAllLessons(): Promise<LoadedLesson[]>;
|
|
22
|
+
/** Get list of available lesson numbers */
|
|
23
|
+
getAvailableLessons(): number[];
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Difficulty levels
|
|
28
|
+
*/
|
|
29
|
+
declare type Difficulty = 'beginner' | 'intermediate' | 'advanced';
|
|
30
|
+
|
|
31
|
+
export declare const getAvailableLessons: () => number[];
|
|
32
|
+
|
|
33
|
+
export declare const loadAllLessons: () => Promise<LoadedLesson[]>;
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Result of loading a lesson
|
|
37
|
+
*/
|
|
38
|
+
declare interface LoadedLesson {
|
|
39
|
+
/** Lesson number (1-indexed) */
|
|
40
|
+
number: number;
|
|
41
|
+
/** Raw MDX content */
|
|
42
|
+
rawContent: string;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export declare const loader: ContentLoader;
|
|
46
|
+
|
|
47
|
+
export declare const loadLesson: (lessonNumber: number) => Promise<LoadedLesson>;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Configuration for a syllabus content package
|
|
51
|
+
*/
|
|
52
|
+
declare interface SyllabusConfig {
|
|
53
|
+
/** Unique syllabus ID (e.g., "ko-alphabet") */
|
|
54
|
+
id: string;
|
|
55
|
+
/** Display title */
|
|
56
|
+
title: string;
|
|
57
|
+
/** Description */
|
|
58
|
+
description: string;
|
|
59
|
+
/** Language code (ISO 639-1) */
|
|
60
|
+
language: string;
|
|
61
|
+
/** Locale code (e.g., "ko-KR") */
|
|
62
|
+
locale: string;
|
|
63
|
+
/** Number of lessons */
|
|
64
|
+
lessonCount: number;
|
|
65
|
+
/** Difficulty level */
|
|
66
|
+
difficulty: Difficulty;
|
|
67
|
+
/** CEFR level */
|
|
68
|
+
cefrLevel: CEFRLevel;
|
|
69
|
+
/** Icon for display */
|
|
70
|
+
icon?: SyllabusIcon;
|
|
71
|
+
/** Package version */
|
|
72
|
+
version: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Icon types for syllabi
|
|
77
|
+
*/
|
|
78
|
+
declare type SyllabusIcon = 'alphabet' | 'dialogue' | 'vocabulary' | 'grammar' | 'reading' | 'numbers' | 'food' | 'travel';
|
|
79
|
+
|
|
80
|
+
export { }
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { config as s } from "./syllabi/alphabet/index.js";
|
|
2
|
+
import * as t from "./syllabi/alphabet/index.js";
|
|
3
|
+
import { loader as x } from "./syllabi/alphabet/index.js";
|
|
4
|
+
import { config as e } from "./syllabi/numbers/index.js";
|
|
5
|
+
import * as l from "./syllabi/numbers/index.js";
|
|
6
|
+
import { loader as u } from "./syllabi/numbers/index.js";
|
|
7
|
+
import { config as r } from "./syllabi/essentials/index.js";
|
|
8
|
+
import * as p from "./syllabi/essentials/index.js";
|
|
9
|
+
import { loader as C } from "./syllabi/essentials/index.js";
|
|
10
|
+
const i = [
|
|
11
|
+
s,
|
|
12
|
+
e,
|
|
13
|
+
r
|
|
14
|
+
];
|
|
15
|
+
function d(o) {
|
|
16
|
+
return i.find((a) => a.id === o);
|
|
17
|
+
}
|
|
18
|
+
export {
|
|
19
|
+
i as allConfigs,
|
|
20
|
+
t as alphabet,
|
|
21
|
+
s as alphabetConfig,
|
|
22
|
+
x as alphabetLoader,
|
|
23
|
+
p as essentials,
|
|
24
|
+
r as essentialsConfig,
|
|
25
|
+
C as essentialsLoader,
|
|
26
|
+
d as getConfigById,
|
|
27
|
+
l as numbers,
|
|
28
|
+
e as numbersConfig,
|
|
29
|
+
u as numbersLoader
|
|
30
|
+
};
|
package/dist/shared.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
function s(o, e) {
|
|
2
|
+
return {
|
|
3
|
+
config: o,
|
|
4
|
+
async loadLesson(n) {
|
|
5
|
+
if (n < 1 || n > o.lessonCount)
|
|
6
|
+
throw new Error(`Lesson ${n} not found. Valid range: 1-${o.lessonCount}`);
|
|
7
|
+
const t = await e(n);
|
|
8
|
+
return {
|
|
9
|
+
number: n,
|
|
10
|
+
rawContent: t.default
|
|
11
|
+
};
|
|
12
|
+
},
|
|
13
|
+
async loadAllLessons() {
|
|
14
|
+
const n = [];
|
|
15
|
+
for (let t = 1; t <= o.lessonCount; t++)
|
|
16
|
+
n.push(await this.loadLesson(t));
|
|
17
|
+
return n;
|
|
18
|
+
},
|
|
19
|
+
getAvailableLessons() {
|
|
20
|
+
return Array.from({ length: o.lessonCount }, (n, t) => t + 1);
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
s as createContentLoader
|
|
26
|
+
};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SyllabusConfig, ContentLoader } from '../../shared.js';
|
|
2
|
+
export declare const config: SyllabusConfig;
|
|
3
|
+
export declare const loader: ContentLoader;
|
|
4
|
+
export declare const loadLesson: (lessonNumber: number) => Promise<import('../../shared.js').LoadedLesson>;
|
|
5
|
+
export declare const loadAllLessons: () => Promise<import('../../shared.js').LoadedLesson[]>;
|
|
6
|
+
export declare const getAvailableLessons: () => number[];
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createContentLoader as n } from "../../shared.js";
|
|
2
|
+
const s = {
|
|
3
|
+
id: "ko-alphabet",
|
|
4
|
+
title: "한글 (Hangul)",
|
|
5
|
+
description: "Learn the Korean Hangul script — basic vowels, consonants, double consonants, and compound vowels across 10 lessons",
|
|
6
|
+
language: "ko",
|
|
7
|
+
locale: "ko-KR",
|
|
8
|
+
lessonCount: 10,
|
|
9
|
+
difficulty: "beginner",
|
|
10
|
+
cefrLevel: "A1",
|
|
11
|
+
icon: "alphabet",
|
|
12
|
+
version: "0.1.0"
|
|
13
|
+
};
|
|
14
|
+
async function t(e) {
|
|
15
|
+
switch (e) {
|
|
16
|
+
case 1:
|
|
17
|
+
return import("./lessons/lesson-01.mdx.js");
|
|
18
|
+
case 2:
|
|
19
|
+
return import("./lessons/lesson-02.mdx.js");
|
|
20
|
+
case 3:
|
|
21
|
+
return import("./lessons/lesson-03.mdx.js");
|
|
22
|
+
case 4:
|
|
23
|
+
return import("./lessons/lesson-04.mdx.js");
|
|
24
|
+
case 5:
|
|
25
|
+
return import("./lessons/lesson-05.mdx.js");
|
|
26
|
+
case 6:
|
|
27
|
+
return import("./lessons/lesson-06.mdx.js");
|
|
28
|
+
case 7:
|
|
29
|
+
return import("./lessons/lesson-07.mdx.js");
|
|
30
|
+
case 8:
|
|
31
|
+
return import("./lessons/lesson-08.mdx.js");
|
|
32
|
+
case 9:
|
|
33
|
+
return import("./lessons/lesson-09.mdx.js");
|
|
34
|
+
case 10:
|
|
35
|
+
return import("./lessons/lesson-10.mdx.js");
|
|
36
|
+
default:
|
|
37
|
+
throw new Error(`Lesson ${e} not found`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
const o = n(s, t), a = o.loadLesson.bind(o), c = o.loadAllLessons.bind(o), i = o.getAvailableLessons.bind(o);
|
|
41
|
+
export {
|
|
42
|
+
s as config,
|
|
43
|
+
i as getAvailableLessons,
|
|
44
|
+
c as loadAllLessons,
|
|
45
|
+
a as loadLesson,
|
|
46
|
+
o as loader
|
|
47
|
+
};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
const n = `---
|
|
2
|
+
type: lesson
|
|
3
|
+
id: korean-hangul-lesson-01
|
|
4
|
+
title: "Lesson 1 — Basic Vowels I (ㅏ, ㅑ, ㅓ, ㅕ)"
|
|
5
|
+
description: "Learn the first four Korean basic vowels: a, ya, eo, yeo"
|
|
6
|
+
order: 1
|
|
7
|
+
parentId: ko-alphabet
|
|
8
|
+
difficulty: beginner
|
|
9
|
+
cefrLevel: A1
|
|
10
|
+
categories:
|
|
11
|
+
- vowels
|
|
12
|
+
- basic-characters
|
|
13
|
+
metadata:
|
|
14
|
+
estimatedTime: 20
|
|
15
|
+
prerequisites: []
|
|
16
|
+
learningObjectives:
|
|
17
|
+
- id: obj-ko-alph-01-recognize
|
|
18
|
+
description: "Recognize the vowels ㅏ, ㅑ, ㅓ, ㅕ"
|
|
19
|
+
skill: character-recognition
|
|
20
|
+
references: [a, ya, eo, yeo]
|
|
21
|
+
- id: obj-ko-alph-01-sounds
|
|
22
|
+
description: "Map each vowel to its sound"
|
|
23
|
+
skill: character-sound-mapping
|
|
24
|
+
references: [a, ya, eo, yeo]
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Lesson 1 — Basic Vowels I (ㅏ, ㅑ, ㅓ, ㅕ)
|
|
28
|
+
|
|
29
|
+
## Introduction
|
|
30
|
+
|
|
31
|
+
Welcome to Hangul, the Korean writing system. Hangul was created in 1443 by King Sejong the Great to promote literacy. Unlike Chinese characters or Japanese kanji, Hangul is a phonemic alphabet — each symbol represents a sound, not a word or idea.
|
|
32
|
+
|
|
33
|
+
Hangul is made up of two types of letters: **자음 (jaeum)** — consonants — and **모음 (moeum)** — vowels. These letters are combined into syllable blocks to write Korean words.
|
|
34
|
+
|
|
35
|
+
In this first lesson, you will learn four of the ten basic vowels.
|
|
36
|
+
|
|
37
|
+
## What Is a Vowel in Hangul?
|
|
38
|
+
|
|
39
|
+
Korean vowels are written as vertical or horizontal strokes. They cannot stand alone as syllables — they are always combined with a consonant. The silent consonant **ㅇ (ieung)** is used as a placeholder when a vowel starts a syllable.
|
|
40
|
+
|
|
41
|
+
For example: **아** = ㅇ (silent) + ㅏ (a sound) = "a"
|
|
42
|
+
|
|
43
|
+
## Characters
|
|
44
|
+
|
|
45
|
+
:::character-set{id="ko-vowels-1" title="Basic Vowels I"}
|
|
46
|
+
|
|
47
|
+
::character{id="a" canonicalRef="a" char="ㅏ" name="ㅏ 아 (a)" charType="vowel" data:romanization="a" data:ipa="a"}
|
|
48
|
+
|
|
49
|
+
::character{id="ya" canonicalRef="ya" char="ㅑ" name="ㅑ 야 (ya)" charType="vowel" data:romanization="ya" data:ipa="ja"}
|
|
50
|
+
|
|
51
|
+
::character{id="eo" canonicalRef="eo" char="ㅓ" name="ㅓ 어 (eo)" charType="vowel" data:romanization="eo" data:ipa="ʌ"}
|
|
52
|
+
|
|
53
|
+
::character{id="yeo" canonicalRef="yeo" char="ㅕ" name="ㅕ 여 (yeo)" charType="vowel" data:romanization="yeo" data:ipa="jʌ"}
|
|
54
|
+
|
|
55
|
+
:::
|
|
56
|
+
|
|
57
|
+
## Pronunciation Guide
|
|
58
|
+
|
|
59
|
+
| Character | Romanization | Sound | English Approximation |
|
|
60
|
+
|-----------|-------------|-------|----------------------|
|
|
61
|
+
| ㅏ | a | /a/ | "a" in "father" |
|
|
62
|
+
| ㅑ | ya | /ja/ | "ya" in "yard" |
|
|
63
|
+
| ㅓ | eo | /ʌ/ | "u" in "but" (but lower) |
|
|
64
|
+
| ㅕ | yeo | /jʌ/ | "yuh" — like "ya" but with eo sound |
|
|
65
|
+
|
|
66
|
+
**Note on ㅓ (eo):** This vowel is often difficult for English speakers. It sounds like the "u" in "but" but with your mouth more open. Try keeping your lips relaxed and slightly open.
|
|
67
|
+
|
|
68
|
+
## Shape Pattern
|
|
69
|
+
|
|
70
|
+
Notice the visual pattern:
|
|
71
|
+
|
|
72
|
+
- **ㅏ** — a vertical line with a short horizontal stroke pointing right
|
|
73
|
+
- **ㅑ** — same as ㅏ but with **two** short strokes (the "y" prefix doubles the stroke)
|
|
74
|
+
- **ㅓ** — a vertical line with a short horizontal stroke pointing **left**
|
|
75
|
+
- **ㅕ** — same as ㅓ but with **two** short strokes (the "y" prefix doubles the stroke)
|
|
76
|
+
|
|
77
|
+
This pattern continues throughout Hangul: adding an extra stroke creates the "y" version of any vowel.
|
|
78
|
+
|
|
79
|
+
## Syllable Formation
|
|
80
|
+
|
|
81
|
+
When these vowels combine with the silent consonant ㅇ:
|
|
82
|
+
|
|
83
|
+
| Vowel | Syllable | Pronunciation |
|
|
84
|
+
|-------|----------|---------------|
|
|
85
|
+
| ㅏ | 아 | a |
|
|
86
|
+
| ㅑ | 야 | ya |
|
|
87
|
+
| ㅓ | 어 | eo |
|
|
88
|
+
| ㅕ | 여 | yeo |
|
|
89
|
+
|
|
90
|
+
## Practice Words
|
|
91
|
+
|
|
92
|
+
| Korean | Romanization | Meaning |
|
|
93
|
+
|--------|-------------|---------|
|
|
94
|
+
| 아이 | a-i | child |
|
|
95
|
+
| 야구 | ya-gu | baseball |
|
|
96
|
+
| 어머니 | eo-meo-ni | mother |
|
|
97
|
+
| 여기 | yeo-gi | here |
|
|
98
|
+
|
|
99
|
+
## Key Points
|
|
100
|
+
|
|
101
|
+
1. **Hangul is systematic**: Vowels follow visual patterns (extra stroke = "y" prefix)
|
|
102
|
+
2. **ㅇ is the silent placeholder**: Used when a vowel opens a syllable
|
|
103
|
+
3. **ㅓ is unique**: The sound has no perfect English equivalent; keep lips relaxed
|
|
104
|
+
4. **Vertical vowels** (ㅏ, ㅑ, ㅓ, ㅕ) go to the right of a consonant in a syllable block
|
|
105
|
+
|
|
106
|
+
## Practice Recognition
|
|
107
|
+
|
|
108
|
+
:::exercise{id="ko-alph-01-recognition" type="matching" title="Match Vowels to Sounds" skill="character-recognition" tests="a,ya,eo,yeo" objectiveId="obj-ko-alph-01-recognize"}
|
|
109
|
+
|
|
110
|
+
**Question:** Match each Hangul vowel to its romanization
|
|
111
|
+
|
|
112
|
+
- ㅏ
|
|
113
|
+
- ㅑ
|
|
114
|
+
- ㅓ
|
|
115
|
+
- ㅕ
|
|
116
|
+
|
|
117
|
+
**Answer:**
|
|
118
|
+
|
|
119
|
+
- ㅏ = a
|
|
120
|
+
- ㅑ = ya
|
|
121
|
+
- ㅓ = eo
|
|
122
|
+
- ㅕ = yeo
|
|
123
|
+
|
|
124
|
+
**Explanation:** The four vowels follow a clear visual pattern. ㅏ and ㅓ are mirror images of each other. ㅑ and ㅕ add an extra stroke to create the "y" variants.
|
|
125
|
+
|
|
126
|
+
:::
|
|
127
|
+
|
|
128
|
+
:::exercise{id="ko-alph-01-sounds" type="fill-in-blank" title="Sound Mapping" skill="character-sound-mapping" tests="a,ya,eo,yeo" objectiveId="obj-ko-alph-01-sounds"}
|
|
129
|
+
|
|
130
|
+
**Question:** What sound does each vowel make?
|
|
131
|
+
|
|
132
|
+
- ㅏ sounds like ___
|
|
133
|
+
- ㅑ sounds like ___
|
|
134
|
+
- ㅓ sounds like ___
|
|
135
|
+
- ㅕ sounds like ___
|
|
136
|
+
|
|
137
|
+
**Answer:**
|
|
138
|
+
|
|
139
|
+
- ㅏ = /a/ as in "father"
|
|
140
|
+
- ㅑ = /ja/ as in "yard"
|
|
141
|
+
- ㅓ = /ʌ/ as in "but" (lips more open)
|
|
142
|
+
- ㅕ = /jʌ/ — "yuh" sound
|
|
143
|
+
|
|
144
|
+
**Explanation:** These four vowels form two pairs: ㅏ/ㅑ and ㅓ/ㅕ. The "y" variants simply add a "y" sound before the base vowel.
|
|
145
|
+
|
|
146
|
+
:::
|
|
147
|
+
|
|
148
|
+
## What's Next
|
|
149
|
+
|
|
150
|
+
In Lesson 2, you will learn three more basic vowels: ㅗ (o), ㅛ (yo), and ㅜ (u) — the horizontal vowels of Hangul.
|
|
151
|
+
`;
|
|
152
|
+
export {
|
|
153
|
+
n as default
|
|
154
|
+
};
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
const n = `---
|
|
2
|
+
type: lesson
|
|
3
|
+
id: korean-hangul-lesson-02
|
|
4
|
+
title: "Lesson 2 — Basic Vowels II (ㅗ, ㅛ, ㅜ, ㅠ, ㅡ, ㅣ)"
|
|
5
|
+
description: "Learn the remaining six Korean basic vowels: o, yo, u, yu, eu, i"
|
|
6
|
+
order: 2
|
|
7
|
+
parentId: ko-alphabet
|
|
8
|
+
difficulty: beginner
|
|
9
|
+
cefrLevel: A1
|
|
10
|
+
categories:
|
|
11
|
+
- vowels
|
|
12
|
+
- basic-characters
|
|
13
|
+
metadata:
|
|
14
|
+
estimatedTime: 25
|
|
15
|
+
prerequisites: [korean-hangul-lesson-01]
|
|
16
|
+
learningObjectives:
|
|
17
|
+
- id: obj-ko-alph-02-recognize
|
|
18
|
+
description: "Recognize the vowels ㅗ, ㅛ, ㅜ, ㅠ, ㅡ, ㅣ"
|
|
19
|
+
skill: character-recognition
|
|
20
|
+
references: [o, yo, u, yu, eu, i]
|
|
21
|
+
- id: obj-ko-alph-02-sounds
|
|
22
|
+
description: "Map each vowel to its sound"
|
|
23
|
+
skill: character-sound-mapping
|
|
24
|
+
references: [o, yo, u, yu, eu, i]
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Lesson 2 — Basic Vowels II (ㅗ, ㅛ, ㅜ, ㅠ, ㅡ, ㅣ)
|
|
28
|
+
|
|
29
|
+
## Introduction
|
|
30
|
+
|
|
31
|
+
In Lesson 1, you learned the four vertical vowels with strokes pointing left or right. In this lesson, you will complete the ten basic Korean vowels. The next set includes **horizontal vowels** — vowels whose base line is horizontal — plus the final two: ㅡ and ㅣ.
|
|
32
|
+
|
|
33
|
+
## Characters
|
|
34
|
+
|
|
35
|
+
:::character-set{id="ko-vowels-2" title="Basic Vowels II"}
|
|
36
|
+
|
|
37
|
+
::character{id="o" canonicalRef="o" char="ㅗ" name="ㅗ 오 (o)" charType="vowel" data:romanization="o" data:ipa="o"}
|
|
38
|
+
|
|
39
|
+
::character{id="yo" canonicalRef="yo" char="ㅛ" name="ㅛ 요 (yo)" charType="vowel" data:romanization="yo" data:ipa="jo"}
|
|
40
|
+
|
|
41
|
+
::character{id="u" canonicalRef="u" char="ㅜ" name="ㅜ 우 (u)" charType="vowel" data:romanization="u" data:ipa="u"}
|
|
42
|
+
|
|
43
|
+
::character{id="yu" canonicalRef="yu" char="ㅠ" name="ㅠ 유 (yu)" charType="vowel" data:romanization="yu" data:ipa="ju"}
|
|
44
|
+
|
|
45
|
+
::character{id="eu" canonicalRef="eu" char="ㅡ" name="ㅡ 으 (eu)" charType="vowel" data:romanization="eu" data:ipa="ɯ"}
|
|
46
|
+
|
|
47
|
+
::character{id="i" canonicalRef="i" char="ㅣ" name="ㅣ 이 (i)" charType="vowel" data:romanization="i" data:ipa="i"}
|
|
48
|
+
|
|
49
|
+
:::
|
|
50
|
+
|
|
51
|
+
## Pronunciation Guide
|
|
52
|
+
|
|
53
|
+
| Character | Romanization | Sound | English Approximation |
|
|
54
|
+
|-----------|-------------|-------|----------------------|
|
|
55
|
+
| ㅗ | o | /o/ | "o" in "go" |
|
|
56
|
+
| ㅛ | yo | /jo/ | "yo" in "yoke" |
|
|
57
|
+
| ㅜ | u | /u/ | "oo" in "moon" |
|
|
58
|
+
| ㅠ | yu | /ju/ | "you" |
|
|
59
|
+
| ㅡ | eu | /ɯ/ | No English equivalent — "uh" with lips spread flat |
|
|
60
|
+
| ㅣ | i | /i/ | "ee" in "see" |
|
|
61
|
+
|
|
62
|
+
**Note on ㅡ (eu):** This is the most difficult vowel for English speakers. Keep your lips spread flat (like you are smiling) and say "uh." It is the same sound as the Russian ы.
|
|
63
|
+
|
|
64
|
+
## Shape Pattern
|
|
65
|
+
|
|
66
|
+
The horizontal vowels follow the same rule as vertical vowels:
|
|
67
|
+
|
|
68
|
+
- **ㅗ** — horizontal line with a short vertical stroke pointing **up**
|
|
69
|
+
- **ㅛ** — same as ㅗ but with **two** vertical strokes (the "y" prefix)
|
|
70
|
+
- **ㅜ** — horizontal line with a short vertical stroke pointing **down**
|
|
71
|
+
- **ㅠ** — same as ㅜ but with **two** vertical strokes (the "y" prefix)
|
|
72
|
+
- **ㅡ** — just a horizontal line — the "flat" vowel
|
|
73
|
+
- **ㅣ** — just a vertical line — the simplest vowel
|
|
74
|
+
|
|
75
|
+
## Syllable Formation
|
|
76
|
+
|
|
77
|
+
When combined with the silent consonant ㅇ:
|
|
78
|
+
|
|
79
|
+
| Vowel | Syllable | Pronunciation |
|
|
80
|
+
|-------|----------|---------------|
|
|
81
|
+
| ㅗ | 오 | o |
|
|
82
|
+
| ㅛ | 요 | yo |
|
|
83
|
+
| ㅜ | 우 | u |
|
|
84
|
+
| ㅠ | 유 | yu |
|
|
85
|
+
| ㅡ | 으 | eu |
|
|
86
|
+
| ㅣ | 이 | i |
|
|
87
|
+
|
|
88
|
+
## Placement in Syllable Blocks
|
|
89
|
+
|
|
90
|
+
Korean consonants and vowels are assembled into syllable blocks. The vowel's orientation determines where it goes:
|
|
91
|
+
|
|
92
|
+
- **Vertical vowels** (ㅏ, ㅑ, ㅓ, ㅕ, ㅣ): consonant goes **to the left**
|
|
93
|
+
- **Horizontal vowels** (ㅗ, ㅛ, ㅜ, ㅠ, ㅡ): consonant goes **above**
|
|
94
|
+
|
|
95
|
+
| Vowel | Example syllable | Description |
|
|
96
|
+
|-------|-----------------|-------------|
|
|
97
|
+
| ㅏ | 가 (ga) | ㄱ left, ㅏ right |
|
|
98
|
+
| ㅗ | 고 (go) | ㄱ above, ㅗ below |
|
|
99
|
+
|
|
100
|
+
## Practice Words
|
|
101
|
+
|
|
102
|
+
| Korean | Romanization | Meaning |
|
|
103
|
+
|--------|-------------|---------|
|
|
104
|
+
| 오이 | o-i | cucumber |
|
|
105
|
+
| 유리 | yu-ri | glass (material) |
|
|
106
|
+
| 으로 | eu-ro | toward / with |
|
|
107
|
+
| 이유 | i-yu | reason |
|
|
108
|
+
| 우유 | u-yu | milk |
|
|
109
|
+
|
|
110
|
+
## Key Points
|
|
111
|
+
|
|
112
|
+
1. **All 10 basic vowels**: You now know all 10 (ㅏ, ㅑ, ㅓ, ㅕ, ㅗ, ㅛ, ㅜ, ㅠ, ㅡ, ㅣ)
|
|
113
|
+
2. **Horizontal vowels go below consonants**: ㅗ, ㅛ, ㅜ, ㅠ, ㅡ position the consonant above
|
|
114
|
+
3. **ㅡ is unique**: No close English equivalent — spread lips flat for "uh"
|
|
115
|
+
4. **ㅣ is the simplest**: Just a vertical line, sounds like "ee"
|
|
116
|
+
|
|
117
|
+
## Practice Recognition
|
|
118
|
+
|
|
119
|
+
:::exercise{id="ko-alph-02-recognition" type="matching" title="Match Vowels to Sounds" skill="character-recognition" tests="o,yo,u,yu,eu,i" objectiveId="obj-ko-alph-02-recognize"}
|
|
120
|
+
|
|
121
|
+
**Question:** Match each Hangul vowel to its romanization
|
|
122
|
+
|
|
123
|
+
- ㅗ
|
|
124
|
+
- ㅛ
|
|
125
|
+
- ㅜ
|
|
126
|
+
- ㅠ
|
|
127
|
+
- ㅡ
|
|
128
|
+
- ㅣ
|
|
129
|
+
|
|
130
|
+
**Answer:**
|
|
131
|
+
|
|
132
|
+
- ㅗ = o
|
|
133
|
+
- ㅛ = yo
|
|
134
|
+
- ㅜ = u
|
|
135
|
+
- ㅠ = yu
|
|
136
|
+
- ㅡ = eu
|
|
137
|
+
- ㅣ = i
|
|
138
|
+
|
|
139
|
+
**Explanation:** Horizontal vowels pair with their "y" versions just like the vertical vowels did in Lesson 1. ㅡ and ㅣ stand alone as the base horizontal and vertical lines.
|
|
140
|
+
|
|
141
|
+
:::
|
|
142
|
+
|
|
143
|
+
:::exercise{id="ko-alph-02-sounds" type="fill-in-blank" title="Sound Mapping" skill="character-sound-mapping" tests="o,yo,u,yu,eu,i" objectiveId="obj-ko-alph-02-sounds"}
|
|
144
|
+
|
|
145
|
+
**Question:** What sound does each vowel make?
|
|
146
|
+
|
|
147
|
+
- ㅗ sounds like ___
|
|
148
|
+
- ㅜ sounds like ___
|
|
149
|
+
- ㅡ sounds like ___
|
|
150
|
+
- ㅣ sounds like ___
|
|
151
|
+
|
|
152
|
+
**Answer:**
|
|
153
|
+
|
|
154
|
+
- ㅗ = /o/ as in "go"
|
|
155
|
+
- ㅜ = /u/ as in "moon"
|
|
156
|
+
- ㅡ = /ɯ/ — spread lips flat and say "uh"
|
|
157
|
+
- ㅣ = /i/ as in "see"
|
|
158
|
+
|
|
159
|
+
**Explanation:** ㅗ and ㅜ are the most common horizontal vowels. ㅡ is the only vowel with no close English equivalent. ㅣ is the simplest — just a straight line making the "ee" sound.
|
|
160
|
+
|
|
161
|
+
:::
|
|
162
|
+
|
|
163
|
+
## What's Next
|
|
164
|
+
|
|
165
|
+
In Lesson 3, you will learn your first consonants: ㄱ, ㄴ, and ㄷ. Combined with the vowels you already know, you can begin reading real Korean syllables.
|
|
166
|
+
`;
|
|
167
|
+
export {
|
|
168
|
+
n as default
|
|
169
|
+
};
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
const n = `---
|
|
2
|
+
type: lesson
|
|
3
|
+
id: korean-hangul-lesson-03
|
|
4
|
+
title: "Lesson 3 — Basic Vowels Review & Syllable Blocks"
|
|
5
|
+
description: "Review all 10 basic vowels and learn how syllable blocks are assembled"
|
|
6
|
+
order: 3
|
|
7
|
+
parentId: ko-alphabet
|
|
8
|
+
difficulty: beginner
|
|
9
|
+
cefrLevel: A1
|
|
10
|
+
categories:
|
|
11
|
+
- vowels
|
|
12
|
+
- syllable-structure
|
|
13
|
+
metadata:
|
|
14
|
+
estimatedTime: 25
|
|
15
|
+
prerequisites: [korean-hangul-lesson-01, korean-hangul-lesson-02]
|
|
16
|
+
learningObjectives:
|
|
17
|
+
- id: obj-ko-alph-03-review
|
|
18
|
+
description: "Recall all 10 basic vowels and their sounds"
|
|
19
|
+
skill: character-recognition
|
|
20
|
+
references: [a, ya, eo, yeo, o, yo, u, yu, eu, i]
|
|
21
|
+
- id: obj-ko-alph-03-syllables
|
|
22
|
+
description: "Understand how vowels and consonants combine into syllable blocks"
|
|
23
|
+
skill: syllable-analysis
|
|
24
|
+
references: [a, eo, o, u, eu, i]
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
# Lesson 3 — Basic Vowels Review & Syllable Blocks
|
|
28
|
+
|
|
29
|
+
## Introduction
|
|
30
|
+
|
|
31
|
+
You have now learned all 10 basic Korean vowels. Before moving on to consonants, it is important to understand **how Korean syllable blocks work**. This knowledge will let you read and write any Korean syllable correctly.
|
|
32
|
+
|
|
33
|
+
## All 10 Basic Vowels at a Glance
|
|
34
|
+
|
|
35
|
+
:::character-set{id="ko-vowels-all" title="All 10 Basic Vowels"}
|
|
36
|
+
|
|
37
|
+
::character{id="a" canonicalRef="a" char="ㅏ" name="ㅏ 아 (a)" charType="vowel" data:romanization="a" data:ipa="a"}
|
|
38
|
+
|
|
39
|
+
::character{id="ya" canonicalRef="ya" char="ㅑ" name="ㅑ 야 (ya)" charType="vowel" data:romanization="ya" data:ipa="ja"}
|
|
40
|
+
|
|
41
|
+
::character{id="eo" canonicalRef="eo" char="ㅓ" name="ㅓ 어 (eo)" charType="vowel" data:romanization="eo" data:ipa="ʌ"}
|
|
42
|
+
|
|
43
|
+
::character{id="yeo" canonicalRef="yeo" char="ㅕ" name="ㅕ 여 (yeo)" charType="vowel" data:romanization="yeo" data:ipa="jʌ"}
|
|
44
|
+
|
|
45
|
+
::character{id="o" canonicalRef="o" char="ㅗ" name="ㅗ 오 (o)" charType="vowel" data:romanization="o" data:ipa="o"}
|
|
46
|
+
|
|
47
|
+
::character{id="yo" canonicalRef="yo" char="ㅛ" name="ㅛ 요 (yo)" charType="vowel" data:romanization="yo" data:ipa="jo"}
|
|
48
|
+
|
|
49
|
+
::character{id="u" canonicalRef="u" char="ㅜ" name="ㅜ 우 (u)" charType="vowel" data:romanization="u" data:ipa="u"}
|
|
50
|
+
|
|
51
|
+
::character{id="yu" canonicalRef="yu" char="ㅠ" name="ㅠ 유 (yu)" charType="vowel" data:romanization="yu" data:ipa="ju"}
|
|
52
|
+
|
|
53
|
+
::character{id="eu" canonicalRef="eu" char="ㅡ" name="ㅡ 으 (eu)" charType="vowel" data:romanization="eu" data:ipa="ɯ"}
|
|
54
|
+
|
|
55
|
+
::character{id="i" canonicalRef="i" char="ㅣ" name="ㅣ 이 (i)" charType="vowel" data:romanization="i" data:ipa="i"}
|
|
56
|
+
|
|
57
|
+
:::
|
|
58
|
+
|
|
59
|
+
## The Vowel Chart
|
|
60
|
+
|
|
61
|
+
| Group | Characters | Base Sound |
|
|
62
|
+
|-------|-----------|------------|
|
|
63
|
+
| Vertical (right) | ㅏ, ㅑ | a, ya |
|
|
64
|
+
| Vertical (left) | ㅓ, ㅕ | eo, yeo |
|
|
65
|
+
| Horizontal (up) | ㅗ, ㅛ | o, yo |
|
|
66
|
+
| Horizontal (down) | ㅜ, ㅠ | u, yu |
|
|
67
|
+
| Solo | ㅡ, ㅣ | eu, i |
|
|
68
|
+
|
|
69
|
+
## How Syllable Blocks Work
|
|
70
|
+
|
|
71
|
+
Korean words are written in **syllable blocks**, not as individual letters in a row. Each block contains exactly one vowel, at least one consonant, and sometimes a final consonant (called a **받침, batchim**).
|
|
72
|
+
|
|
73
|
+
### Block Structure
|
|
74
|
+
|
|
75
|
+
There are four possible block shapes:
|
|
76
|
+
|
|
77
|
+
1. **CV** — consonant + vertical vowel: **가** (ga = ㄱ+ㅏ)
|
|
78
|
+
2. **CV** — consonant above horizontal vowel: **고** (go = ㄱ+ㅗ)
|
|
79
|
+
3. **CVC** — consonant + vertical vowel + final consonant: **강** (gang = ㄱ+ㅏ+ㅇ)
|
|
80
|
+
4. **CVC** — consonant above horizontal vowel + final consonant: **공** (gong = ㄱ+ㅗ+ㅇ)
|
|
81
|
+
|
|
82
|
+
### The Silent Consonant ㅇ
|
|
83
|
+
|
|
84
|
+
When a syllable starts with a vowel sound, the silent consonant **ㅇ (ieung)** is used as a placeholder:
|
|
85
|
+
|
|
86
|
+
| Vowel | Syllable | Pronunciation |
|
|
87
|
+
|-------|----------|---------------|
|
|
88
|
+
| ㅏ | 아 | a |
|
|
89
|
+
| ㅓ | 어 | eo |
|
|
90
|
+
| ㅗ | 오 | o |
|
|
91
|
+
| ㅜ | 우 | u |
|
|
92
|
+
| ㅡ | 으 | eu |
|
|
93
|
+
| ㅣ | 이 | i |
|
|
94
|
+
|
|
95
|
+
## Reading Practice
|
|
96
|
+
|
|
97
|
+
Now that you know all vowels, you can read these simple words:
|
|
98
|
+
|
|
99
|
+
| Korean | Parts | Pronunciation | Meaning |
|
|
100
|
+
|--------|-------|---------------|---------|
|
|
101
|
+
| 아이 | 아+이 | a-i | child |
|
|
102
|
+
| 오이 | 오+이 | o-i | cucumber |
|
|
103
|
+
| 유이 | 유+이 | yu-i | (a name) |
|
|
104
|
+
| 이유 | 이+유 | i-yu | reason |
|
|
105
|
+
| 으이 | 으+이 | eu-i | (exclamation of disgust) |
|
|
106
|
+
|
|
107
|
+
## Key Points
|
|
108
|
+
|
|
109
|
+
1. **10 basic vowels**: ㅏ ㅑ ㅓ ㅕ ㅗ ㅛ ㅜ ㅠ ㅡ ㅣ — memorize them in order
|
|
110
|
+
2. **Syllable blocks, not linear**: Korean is written in blocks, not letter by letter
|
|
111
|
+
3. **ㅇ is silent at the start**: When a syllable begins with a vowel, ㅇ fills the consonant slot
|
|
112
|
+
4. **Vowel position determines layout**: Vertical vowels → consonant left; horizontal → consonant above
|
|
113
|
+
|
|
114
|
+
## Practice Recognition
|
|
115
|
+
|
|
116
|
+
:::exercise{id="ko-alph-03-review" type="matching" title="Vowel Review — All 10" skill="character-recognition" tests="a,ya,eo,yeo,o,yo,u,yu,eu,i" objectiveId="obj-ko-alph-03-review"}
|
|
117
|
+
|
|
118
|
+
**Question:** Match each Hangul vowel to its romanization
|
|
119
|
+
|
|
120
|
+
- ㅏ, ㅑ, ㅓ, ㅕ
|
|
121
|
+
- ㅗ, ㅛ, ㅜ, ㅠ
|
|
122
|
+
- ㅡ, ㅣ
|
|
123
|
+
|
|
124
|
+
**Answer:**
|
|
125
|
+
|
|
126
|
+
- ㅏ = a, ㅑ = ya, ㅓ = eo, ㅕ = yeo
|
|
127
|
+
- ㅗ = o, ㅛ = yo, ㅜ = u, ㅠ = yu
|
|
128
|
+
- ㅡ = eu, ㅣ = i
|
|
129
|
+
|
|
130
|
+
**Explanation:** The ten basic vowels divide into five pairs. Each base vowel (ㅏ, ㅓ, ㅗ, ㅜ) has a "y" variant formed by adding an extra stroke. ㅡ and ㅣ are the two "singleton" vowels.
|
|
131
|
+
|
|
132
|
+
:::
|
|
133
|
+
|
|
134
|
+
:::exercise{id="ko-alph-03-syllables" type="fill-in-blank" title="Syllable Block Reading" skill="syllable-analysis" tests="a,eo,o,u,eu,i" objectiveId="obj-ko-alph-03-syllables"}
|
|
135
|
+
|
|
136
|
+
**Question:** Read these syllables written with the silent consonant ㅇ:
|
|
137
|
+
|
|
138
|
+
- 아 = ___
|
|
139
|
+
- 어 = ___
|
|
140
|
+
- 오 = ___
|
|
141
|
+
- 우 = ___
|
|
142
|
+
- 으 = ___
|
|
143
|
+
- 이 = ___
|
|
144
|
+
|
|
145
|
+
**Answer:**
|
|
146
|
+
|
|
147
|
+
- 아 = a
|
|
148
|
+
- 어 = eo
|
|
149
|
+
- 오 = o
|
|
150
|
+
- 우 = u
|
|
151
|
+
- 으 = eu
|
|
152
|
+
- 이 = i
|
|
153
|
+
|
|
154
|
+
**Explanation:** Each syllable uses ㅇ (silent) + vowel. The ㅇ at the start of a syllable has no sound — it is purely a structural placeholder. When ㅇ appears at the **end** of a syllable (as batchim), it makes an "ng" sound.
|
|
155
|
+
|
|
156
|
+
:::
|
|
157
|
+
|
|
158
|
+
## What's Next
|
|
159
|
+
|
|
160
|
+
In Lesson 4, you will learn your first group of consonants: ㄱ (giyeok), ㄴ (nieun), and ㄷ (digeut). With consonants added to the vowels you know, you can start reading real Korean words.
|
|
161
|
+
`;
|
|
162
|
+
export {
|
|
163
|
+
n as default
|
|
164
|
+
};
|