const LESSONS = { accounting: { name: "📊 Бухгалтерия", words: [ { en: "Advance report", kk: "Аванстық есеп" }, { en: "Business trip", kk: "Іссапар" }, { en: "Invoice", kk: "Шот-фактура" }, { en: "Receipt", kk: "Түбіртек/чек" }, { en: "Expense", kk: "Шығын" }, { en: "Budget", kk: "Бюджет" }, { en: "Tax", kk: "Салық" }, { en: "Audit", kk: "Аудит/тексеру" }, { en: "Payroll", kk: "Жалақы ведомості" }, { en: "Reimbursement", kk: "Шығындарды өтеу" } ] }, travel: { name: "✈️ Командировка", words: [ { en: "Flight ticket", kk: "Ұшақ билеті" }, { en: "Hotel booking", kk: "Қонақүй бронь" }, { en: "Per diem", kk: "Тәуліктік" }, { en: "Travel allowance", kk: "Көтерме ақы" }, { en: "Boarding pass", kk: "Бортқа отырғызу талоны" }, { en: "Departure", kk: "Ұшу/жөнелу" }, { en: "Arrival", kk: "Қону/келу" }, { en: "Luggage", kk: "Жүк" }, { en: "Customs", kk: "Кеден" }, { en: "Itinerary", kk: "Маршруттық парақ" } ] }, business: { name: "💼 Іс қағаздары", words: [ { en: "Dear colleague", kk: "Құрметті әріптес" }, { en: "Best regards", kk: "Құрметпен" }, { en: "Please find attached", kk: "Қоса берілген" }, { en: "In response to your request", kk: "Сұранысыңызға жауап ретінде" }, { en: "We confirm", kk: "Растаймыз" }, { en: "Please note", kk: "Назар аударыңыз" }, { en: "For your information", kk: "Ақпарат үшін" }, { en: "Kindly request", kk: "Сыпайы түрде сұраймыз" }, { en: "As discussed", kk: "Талқыланғандай" }, { en: "Looking forward", kk: "Күтеміз" } ] }, phrases: { name: "💬 Пайдалы фразалар", words: [ { en: "Could you please clarify?", kk: "Нақтылай аласыз ба?" }, { en: "I'll get back to you shortly", kk: "Жақын арада қайта хабарласамын" }, { en: "Please let me know", kk: "Маған хабарлаңызшы" }, { en: "I'm afraid I can't", kk: "Қорқамын, мен істей алмаймын" }, { en: "Thank you for your cooperation", kk: "Ынтымақтастық үшін рахмет" }, { en: "Is everything clear?", kk: "Бәрі түсінікті ме?" }, { en: "Keep me updated", kk: "Мені хабардар етіңіз" }, { en: "I'll check and confirm", kk: "Тексеріп, растаймын" } ] } }; let currentTopic = "accounting"; let currentTestWord = null; let progress = { total: 0, correct: 0 }; function loadProgress() { const saved = localStorage.getItem("englishProgress"); if (saved) { progress = JSON.parse(saved); } updateProgressDisplay(); } function saveProgress() { localStorage.setItem("englishProgress", JSON.stringify(progress)); updateProgressDisplay(); } function updateProgressDisplay() { document.getElementById("total-answered").textContent = progress.total; document.getElementById("correct-answered").textContent = progress.correct; const accuracy = progress.total > 0 ? Math.round((progress.correct / progress.total) * 100) : 0; document.getElementById("accuracy").textContent = accuracy + "%"; } function renderWords() { const wordList = document.getElementById("word-list"); const words = LESSONS[currentTopic].words; wordList.innerHTML = words.map(w => `
${w.en}
${w.kk}
`).join(""); document.getElementById("topic-title").textContent = LESSONS[currentTopic].name; } function generateTest() { const allWords = Object.values(LESSONS).flatMap(l => l.words); const randomWord = allWords[Math.floor(Math.random() * allWords.length)]; currentTestWord = randomWord; const wrongOptions = allWords .filter(w => w.en !== randomWord.en) .sort(() => Math.random() - 0.5) .slice(0, 3) .map(w => w.kk); const options = [...wrongOptions, randomWord.kk].sort(() => Math.random() - 0.5); document.getElementById("test-question").textContent = `"${randomWord.en}" сөзінің аудармасын таңда:`; const optionsContainer = document.getElementById("test-options"); optionsContainer.innerHTML = options.map((opt, i) => ` `).join(""); document.getElementById("test-result").textContent = ""; document.querySelectorAll(".test-option").forEach(btn => { btn.addEventListener("click", handleTestAnswer); }); } function handleTestAnswer(e) { const buttons = document.querySelectorAll(".test-option"); buttons.forEach(btn => btn.disabled = true); const isCorrect = e.target.dataset.correct === "true"; if (isCorrect) { e.target.classList.add("correct"); document.getElementById("test-result").textContent = "✅ Дұрыс!"; document.getElementById("test-result").style.color = "#48bb78"; progress.correct++; } else { e.target.classList.add("wrong"); buttons.forEach(btn => { if (btn.dataset.correct === "true") { btn.classList.add("correct"); } }); document.getElementById("test-result").textContent = `❌ Қате. Дұрыс жауап: "${currentTestWord.kk}"`; document.getElementById("test-result").style.color = "#f56565"; } progress.total++; saveProgress(); setTimeout(() => { generateTest(); }, 2000); } document.querySelectorAll(".topic-btn").forEach(btn => { btn.addEventListener("click", () => { document.querySelectorAll(".topic-btn").forEach(b => b.classList.remove("active")); btn.classList.add("active"); currentTopic = btn.dataset.topic; renderWords(); }); }); document.getElementById("start-test-btn").addEventListener("click", () => { generateTest(); }); document.getElementById("reset-btn").addEventListener("click", () => { if (confirm("Прогрессті тазалағыңыз келе ме?")) { progress = { total: 0, correct: 0 }; saveProgress(); } }); loadProgress(); renderWords();