260 lines
9.3 KiB
HTML
260 lines
9.3 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Lesson 1 — V2 Word Order</title>
|
||
<link rel="stylesheet" href="../assets/style.css">
|
||
</head>
|
||
<body>
|
||
<div class="page">
|
||
|
||
<p class="subtitle">Lesson 1 of your German course</p>
|
||
<h1>V2 Word Order: The Rule That Fixes 40% of Your Errors</h1>
|
||
<p class="subtitle">B1.2 · Grammar · ~15 minutes</p>
|
||
|
||
<h2>Why this matters</h2>
|
||
|
||
<p>
|
||
German verbs are obsessed with position. In a main clause, the <strong>finite verb always occupies the second slot</strong> — the second grammatical unit, not the second word. This is called the <em>Verb-Second</em> (V2) rule and it affects every sentence you speak or write in German.
|
||
</p>
|
||
|
||
<p>
|
||
In English, the subject almost always comes first. German doesn't care. You can put a time expression, a location, a reason, or an adverb in front — but the moment you do, the subject has to step aside and the verb takes slot two.
|
||
</p>
|
||
|
||
<div class="rule-box">
|
||
<strong>The Rule</strong>
|
||
<div class="formula">[ Front element ] → VERB → Subject → rest of sentence</div>
|
||
</div>
|
||
|
||
<h2>The pattern in your own sentences</h2>
|
||
|
||
<p>These are the exact constructions you've been writing — and the correction each time:</p>
|
||
|
||
<table>
|
||
<tr>
|
||
<th>What you wrote</th>
|
||
<th>What it should be</th>
|
||
<th>Front element</th>
|
||
</tr>
|
||
<tr>
|
||
<td class="wrong">Heute <em>ich werde</em> Code-Review machen</td>
|
||
<td class="right">Heute <em>werde ich</em> Code-Review machen</td>
|
||
<td>Heute (time)</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="wrong">Am Freitag <em>ich hat</em> gearbeitet</td>
|
||
<td class="right">Am Freitag <em>habe ich</em> gearbeitet</td>
|
||
<td>Am Freitag (time)</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="wrong">Danach <em>ich werde</em> weiter</td>
|
||
<td class="right">Danach <em>werde ich</em> weiter</td>
|
||
<td>Danach (sequence)</td>
|
||
</tr>
|
||
<tr>
|
||
<td class="wrong"><em>Weiss ich nicht</em> was...</td>
|
||
<td class="right"><em>Ich weiß</em> nicht, was...</td>
|
||
<td>Subject first → no inversion needed</td>
|
||
</tr>
|
||
</table>
|
||
|
||
<p>
|
||
Notice the last row: when the subject is already in front, there is <em>no inversion</em>. The rule only triggers when something other than the subject occupies slot one.
|
||
</p>
|
||
|
||
<h2>Common front elements that trigger inversion</h2>
|
||
|
||
<table>
|
||
<tr><th>Type</th><th>Examples</th></tr>
|
||
<tr><td>Time</td><td><code>Heute, Gestern, Am Freitag, Um 9 Uhr, Letzte Woche</code></td></tr>
|
||
<tr><td>Sequence</td><td><code>Dann, Danach, Zuerst, Anschließend, Zuletzt</code></td></tr>
|
||
<tr><td>Contrast / addition</td><td><code>Trotzdem, Also, Außerdem, Dennoch</code></td></tr>
|
||
<tr><td>Reason phrase</td><td><code>Deshalb, Daher, Deswegen</code></td></tr>
|
||
<tr><td>Location</td><td><code>In Heitersheim, Im Büro, Zu Hause</code></td></tr>
|
||
<tr><td>Object moved to front</td><td><code>Das Ticket habe ich gestern geschlossen.</code></td></tr>
|
||
</table>
|
||
|
||
<h2>A trick that never fails</h2>
|
||
|
||
<p>
|
||
After you write a sentence, hold up one finger for the first unit. Ask: <em>is this the verb?</em> If no — your next word <strong>must</strong> be the verb, and the subject comes after it. Count on your fingers if needed. This catches the error every time before it leaves your head.
|
||
</p>
|
||
|
||
<hr style="border:none; border-top: 1px solid #ddd; margin: 2.5rem 0;">
|
||
|
||
<h2>Drill — choose the correct word order</h2>
|
||
|
||
<p>All sentences are grounded in your actual life. Eight questions. Immediate feedback after each answer.</p>
|
||
|
||
<div class="quiz-section" id="quiz"></div>
|
||
|
||
<div class="score-bar" id="score-bar">
|
||
<span class="score-number" id="score-number"></span> — <span id="score-comment"></span>
|
||
</div>
|
||
|
||
<hr style="border:none; border-top: 1px solid #ddd; margin: 2.5rem 0;">
|
||
|
||
<h2>Primary source for this lesson</h2>
|
||
|
||
<p>
|
||
<a href="https://learngerman.dw.com/en/nicos-weg/c-36519691" target="_blank">DW Nicos Weg — B1</a> covers V2 word order with video examples in natural conversational German. Episodes 31–35 are particularly good for this pattern. Free, no account needed.
|
||
</p>
|
||
|
||
<div class="ask-teacher">
|
||
<strong>Ask your teacher:</strong> Anything from this lesson that felt unclear — a sentence that confused you, or a case where you're unsure whether inversion applies — paste it into the chat and ask. The teacher is here to dig into it with you.
|
||
</div>
|
||
|
||
<div class="lesson-nav">
|
||
<strong>Related:</strong>
|
||
<a href="../reference/word-order.html">Word Order Reference Sheet</a> ·
|
||
Lesson 2 coming next session
|
||
</div>
|
||
|
||
</div>
|
||
|
||
<script>
|
||
const questions = [
|
||
{
|
||
prefix: "Heute",
|
||
suffix: "einen Code-Review gemacht.",
|
||
correct: "habe ich",
|
||
distractor: "ich habe",
|
||
feedback: "<strong>Heute</strong> is a fronted time element → verb comes second: <em>Heute habe ich …</em>"
|
||
},
|
||
{
|
||
prefix: "Am Freitag",
|
||
suffix: "an dem Sprint gearbeitet.",
|
||
correct: "habe ich",
|
||
distractor: "ich habe",
|
||
feedback: "<strong>Am Freitag</strong> is a fronted time phrase → inversion required: <em>Am Freitag habe ich …</em>"
|
||
},
|
||
{
|
||
prefix: "Danach",
|
||
suffix: "die E-Mail an Herrn Amann geschrieben.",
|
||
correct: "habe ich",
|
||
distractor: "ich habe",
|
||
feedback: "<strong>Danach</strong> (sequence adverb) triggers inversion: <em>Danach habe ich …</em>"
|
||
},
|
||
{
|
||
prefix: "In Heitersheim",
|
||
suffix: "viele schöne Spazierwege.",
|
||
correct: "gibt es",
|
||
distractor: "es gibt",
|
||
feedback: "<strong>In Heitersheim</strong> is a fronted location → verb second: <em>In Heitersheim gibt es …</em>"
|
||
},
|
||
{
|
||
prefix: "Normalerweise",
|
||
suffix: "um acht Uhr im Büro.",
|
||
correct: "bin ich",
|
||
distractor: "ich bin",
|
||
feedback: "<strong>Normalerweise</strong> (manner adverb) triggers inversion: <em>Normalerweise bin ich …</em>"
|
||
},
|
||
{
|
||
prefix: "Nach der Schule",
|
||
suffix: "die Kinder oft Hunger.",
|
||
correct: "haben",
|
||
distractor: "die Kinder haben",
|
||
feedback: "When the <em>subject</em> would immediately follow the verb anyway, the result is: <em>Nach der Schule haben die Kinder …</em> — subject slides one slot to the right."
|
||
},
|
||
{
|
||
prefix: "Letzte Woche",
|
||
suffix: "wir das Deployment abgeschlossen.",
|
||
correct: "haben",
|
||
distractor: "wir haben",
|
||
feedback: "<strong>Letzte Woche</strong> fronted → verb second: <em>Letzte Woche haben wir …</em>"
|
||
},
|
||
{
|
||
prefix: "Deshalb",
|
||
suffix: "ich dir eine kurze Nachricht.",
|
||
correct: "schreibe ich",
|
||
distractor: "ich schreibe",
|
||
feedback: "<strong>Deshalb</strong> (reason connector) triggers inversion: <em>Deshalb schreibe ich …</em>"
|
||
}
|
||
];
|
||
|
||
// Build quiz HTML
|
||
const quiz = document.getElementById('quiz');
|
||
let answered = 0;
|
||
let correct = 0;
|
||
const total = questions.length;
|
||
|
||
questions.forEach((q, i) => {
|
||
// Shuffle options
|
||
const opts = Math.random() > 0.5
|
||
? [q.correct, q.distractor]
|
||
: [q.distractor, q.correct];
|
||
|
||
const block = document.createElement('div');
|
||
block.className = 'question-block';
|
||
block.id = 'q' + i;
|
||
|
||
block.innerHTML = `
|
||
<div class="question-text">
|
||
<strong>${i + 1}.</strong> “${q.prefix} <span class="blank">___________</span> ${q.suffix}”
|
||
</div>
|
||
<div class="options">
|
||
${opts.map((opt, j) => `<button class="option-btn" onclick="answer(${i}, '${opt.replace(/'/g, "\\'")}', this)">${opt}</button>`).join('')}
|
||
</div>
|
||
<div class="feedback" id="fb${i}"></div>
|
||
`;
|
||
|
||
quiz.appendChild(block);
|
||
});
|
||
|
||
function answer(i, chosen, btn) {
|
||
const q = questions[i];
|
||
const block = document.getElementById('q' + i);
|
||
const fb = document.getElementById('fb' + i);
|
||
const buttons = block.querySelectorAll('.option-btn');
|
||
|
||
// Disable all buttons in this block
|
||
buttons.forEach(b => b.disabled = true);
|
||
|
||
const isCorrect = chosen === q.correct;
|
||
answered++;
|
||
|
||
if (isCorrect) {
|
||
correct++;
|
||
block.classList.add('correct');
|
||
btn.classList.add('selected-correct');
|
||
fb.className = 'feedback show correct-fb';
|
||
fb.innerHTML = '✓ Correct. ' + q.feedback;
|
||
} else {
|
||
block.classList.add('incorrect');
|
||
btn.classList.add('selected-incorrect');
|
||
fb.className = 'feedback show incorrect-fb';
|
||
fb.innerHTML = '✗ Not quite. ' + q.feedback;
|
||
// Reveal correct answer
|
||
buttons.forEach(b => {
|
||
if (b.textContent.trim() === q.correct) b.classList.add('reveal-correct');
|
||
});
|
||
}
|
||
|
||
if (answered === total) showScore();
|
||
}
|
||
|
||
function showScore() {
|
||
const bar = document.getElementById('score-bar');
|
||
const num = document.getElementById('score-number');
|
||
const comment = document.getElementById('score-comment');
|
||
|
||
bar.classList.add('show');
|
||
num.textContent = correct + ' / ' + total;
|
||
|
||
if (correct === total) {
|
||
comment.textContent = 'Perfect. V2 is clicking. Ready to drill the next pattern.';
|
||
} else if (correct >= 6) {
|
||
comment.textContent = 'Solid — V2 is mostly there. Review the ones you missed and revisit tomorrow.';
|
||
} else if (correct >= 4) {
|
||
comment.textContent = 'The pattern is forming. Run this lesson again in 24 hours to consolidate it.';
|
||
} else {
|
||
comment.textContent = 'Keep the rule visible when you write today. Run this drill again before tomorrow\'s session.';
|
||
}
|
||
}
|
||
</script>
|
||
|
||
</body>
|
||
</html>
|