Quiz – Leçon 20: How to Teach French Effectively

1. Quel élément culturel est le plus efficace pour engager les apprenants en début de leçon ?

Which cultural element is most effective to engage learners at the start of a lesson?

2. Quelle structure de leçon est recommandée pour une mini‑leçon efficace ?

What lesson structure is recommended for an effective mini‑lesson?

3. Dans l'introduction de votre leçon, que devriez-vous inclure pour capter l'attention ?

In the introduction of your lesson, what should you include to capture attention?

4. Pourquoi est-il important d'utiliser des traductions entre parenthèses dans vos leçons ?

Why is it important to include parenthetical translations in your lessons?

5. Quelles ressources en ligne recommanderiez-vous pour créer des supports visuels engageants (ex: slides) ?

Which online tools would you recommend for creating engaging visual aids (e.g., slides)?

6. Dans le développement d'une leçon, quel est le but principal de présenter un point de grammaire avec des exemples ?

In the development section of a lesson, what is the primary purpose of presenting a grammar point with examples?

7. Quelles sont les trois parties essentielles d'une leçon structurée ?

What are the three essential parts of a structured lesson?

8. Quel est l'avantage de répéter et d'enregistrer sa leçon avant de l'enseigner ?

What is the benefit of rehearsing and recording your lesson before teaching it?

9. Quel outil numérique recommanderiez-vous pour créer des supports visuels attractifs ?

Which digital tool would you recommend for creating attractive visual aids?

10. Comment exprimeriez-vous, en français, "I would like to learn more" en utilisant le conditionnel présent ?

How do you express "I would like to learn more" in the conditionnel présent?

]; // LocalStorage keys and settings for quiz 19 const STORAGE_KEY = "quiz20_answers"; const ATTEMPT_KEY = "quiz20_attempts"; const MAX_ATTEMPTS = 3; const STORAGE_EXPIRY_MS = 2 * 60 * 60 * 1000; // 2 hours // Utility: Get today's date as YYYY-MM-DD function getTodayString() { return new Date().toISOString().split('T')[0]; } // Check attempt count and disable quiz if exceeded function checkAttempts() { const storedAttempts = JSON.parse(localStorage.getItem(ATTEMPT_KEY)) || {}; const today = getTodayString(); const attemptsToday = storedAttempts[today] || 0; if (attemptsToday >= MAX_ATTEMPTS) { disableQuiz(`Vous avez atteint la limite de ${MAX_ATTEMPTS} essais aujourd'hui.`); return false; } return true; } // Increment attempt counter and save in localStorage function incrementAttempts() { const storedAttempts = JSON.parse(localStorage.getItem(ATTEMPT_KEY)) || {}; const today = getTodayString(); storedAttempts[today] = (storedAttempts[today] || 0) + 1; localStorage.setItem(ATTEMPT_KEY, JSON.stringify(storedAttempts)); } // Save current answers with timestamp to localStorage function saveAnswers() { const formData = new FormData(document.getElementById("quiz-form")); const answers = {}; for (const [key, value] of formData.entries()) { answers[key] = value; } const dataToStore = { time: Date.now(), answers: answers }; localStorage.setItem(STORAGE_KEY, JSON.stringify(dataToStore)); } // Load saved answers if still valid from localStorage function loadSavedAnswers() { const dataString = localStorage.getItem(STORAGE_KEY); if (!dataString) return; const data = JSON.parse(dataString); if (Date.now() - data.time > STORAGE_EXPIRY_MS) { localStorage.removeItem(STORAGE_KEY); return; } const answers = data.answers; for (const key in answers) { const elem = document.querySelector(`input[name="${key}"][value="${answers[key]}"]`); if (elem) elem.checked = true; } } // Disable the quiz interface if maximum attempts are reached function disableQuiz(message) { document.getElementById("submit-btn").disabled = true; document.querySelectorAll("#quiz-form input").forEach(input => input.disabled = true); document.getElementById("result").innerHTML = `
${message}
`; } // Dynamically build quiz questions into the container function buildQuiz() { const container = document.getElementById("quiz-container"); container.innerHTML = ""; quizData.forEach(q => { let cardHTML = `

${q.number}. ${q.question_en}
${q.question_fr}

`; const options = [...q.options].sort(() => Math.random() - 0.5); options.forEach((option, idx) => { cardHTML += `
`; }); cardHTML += `
`; container.innerHTML += cardHTML; }); } // Evaluate quiz answers, compute score and generate feedback function evaluateQuiz() { let score = 0; let feedback = ""; quizData.forEach(q => { const qName = "q" + q.number; const selected = document.querySelector(`input[name="${qName}"]:checked`); const correctOption = q.options.find(opt => opt.isCorrect); if (selected && selected.value === correctOption.text) { score++; } else { feedback += `
Question ${q.number}:
Correction: La bonne réponse est ${correctOption.text}.
Explication (FR): ${q.explanation_fr}
Explanation (EN): ${q.explanation_en}
`; } }); return { score, feedback }; } // Submit button event listener document.getElementById("submit-btn").addEventListener("click", function() { if (!checkAttempts()) return; saveAnswers(); incrementAttempts(); const resultObj = evaluateQuiz(); const resultDiv = document.getElementById("result"); resultDiv.innerHTML = `
Votre score final est ${resultObj.score} / ${quizData.length}.
`; resultDiv.innerHTML += resultObj.feedback; document.querySelectorAll("#quiz-form input").forEach(input => input.disabled = true); document.getElementById("submit-btn").disabled = true; }); // Save answers on any change document.getElementById("quiz-form").addEventListener("change", saveAnswers); // On page load, build quiz and load saved answers if available document.addEventListener("DOMContentLoaded", function() { buildQuiz(); checkAttempts(); loadSavedAnswers(); }); })();