feat: мини-игры, premium подписка, улучшенные контексты

Мини-игры (/games):
- Speed Round: 10 раундов, 10 секунд на ответ, очки за скорость
- Match Pairs: 5 слов + 5 переводов, соединить пары

Premium-функции:
- Поля is_premium и premium_until для пользователей
- AI режим проверки ответов (учитывает синонимы)
- Batch проверка всех ответов одним запросом

Улучшения:
- Примеры использования для всех добавляемых слов
- Разбиение переводов по запятой на отдельные записи
- Полные предложения в контекстах (без ___)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-12-10 19:42:10 +03:00
parent b74ea2170c
commit adc8a6bf8e
18 changed files with 1819 additions and 34 deletions

View File

@@ -6,6 +6,7 @@
"task": "🧠 Task",
"practice": "💬 Practice",
"exercises": "📖 Exercises",
"games": "🎮 Mini Games",
"words": "🎯 Thematic words",
"import": "📖 Import",
"stats": "📊 Stats",
@@ -428,5 +429,63 @@
"score": "Score: {correct} of {total}",
"no_topics": "No topics available for your level yet.",
"write_answer": "Write your answer:"
},
"minigames": {
"menu_title": "🎮 <b>Mini Games</b>\n\nChoose a game:",
"start_btn": "Start",
"back_btn": "Back",
"play_again": "Play again",
"speed_round": {
"name": "Speed Translation",
"rules": "📋 <b>Rules:</b>\n\n• A word from your vocabulary appears\n• You have {time} seconds to answer\n• Type the translation as fast as you can\n• Faster = more points!\n\n🎯 Rounds: {count}",
"mode_ai": "AI Check Mode",
"mode_simple": "Simple Mode",
"premium_hint": "You have a subscription! Choose answer checking mode.",
"ai_mode_warning": "⚠️ <b>AI Check Mode</b>\n\nIn this mode AI will check all answers <b>after the game ends</b>.\nDuring the game, answers are checked against dictionary.\n\nAI considers synonyms and translation variations.",
"ai_checking": "AI is checking answers",
"not_enough_words": "❌ Not enough words in vocabulary\n\nMinimum: {min} words\nYou have: {current}\n\nAdd words via /add or /words",
"round": "Round {current}/{total}",
"seconds": "sec",
"score": "Score",
"points": "points",
"time_up": "Time's up!",
"correct": "Correct!",
"wrong": "Wrong!",
"correct_was": "Correct answer",
"finished": "Game Over!",
"final_score": "Final score",
"correct_answers": "Correct answers",
"accuracy": "Accuracy",
"answers_list": "Answers",
"result": {
"excellent": "🔥 Excellent! You're a master!",
"good": "👏 Great result! Keep it up!",
"average": "📚 Not bad! Keep practicing.",
"practice": "💪 Don't give up! Practice makes perfect."
}
},
"match_game": {
"name": "Match Pairs",
"rules": "📋 <b>Rules:</b>\n\n• {count} words and {count} translations will appear shuffled\n• Match the correct pairs\n• Enter answer in format: 1A, 2B, 3C...\n• Time is tracked",
"title": "Match the pairs",
"words_col": "Words",
"translations_col": "Translations",
"hint": "Enter pairs (e.g.: 1C, 2A, 3B, 4D, 5E)",
"cancel": "Cancel",
"cancelled": "❌ Game cancelled",
"not_enough_words": "❌ Not enough words in vocabulary\n\nMinimum: {min} words\nYou have: {current}\n\nAdd words via /add or /words",
"not_all_pairs": "⚠️ Enter all pairs!\n\nEntered: {entered}\nNeeded: {needed}",
"finished": "Game Over!",
"score": "Score",
"correct_pairs": "Correct pairs",
"time": "Time",
"results": "Results",
"result": {
"perfect": "🎯 Perfect! All pairs correct!",
"excellent": "🔥 Excellent! Almost flawless!",
"good": "👍 Good result!",
"practice": "💪 Keep practicing!"
}
}
}
}