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": "🧠 課題",
"practice": "💬 練習",
"exercises": "📖 文法練習",
"games": "🎮 ミニゲーム",
"words": "🎯 テーマ別単語",
"import": "📖 インポート",
"stats": "📊 統計",
@@ -420,5 +421,63 @@
"score": "スコア: {total}問中{correct}問正解",
"no_topics": "あなたのレベルで利用可能なトピックはまだありません。",
"write_answer": "回答を入力してください:"
},
"minigames": {
"menu_title": "🎮 <b>ミニゲーム</b>\n\nゲームを選んでください:",
"start_btn": "開始",
"back_btn": "戻る",
"play_again": "もう一度",
"speed_round": {
"name": "スピード翻訳",
"rules": "📋 <b>ルール:</b>\n\n• 単語帳から単語が表示されます\n• {time}秒以内に回答してください\n• できるだけ早く翻訳を入力\n• 速いほどポイントが高い!\n\n🎯 ラウンド数: {count}",
"mode_ai": "AIチェックモード",
"mode_simple": "シンプルモード",
"premium_hint": "サブスクリプションがあります!回答チェックモードを選択してください。",
"ai_mode_warning": "⚠️ <b>AIチェックモード</b>\n\nこのモードでは、AIが<b>ゲーム終了後</b>にすべての回答をチェックします。\nゲーム中は辞書で回答を確認します。\n\nAIは同義語や翻訳のバリエーションを考慮します。",
"not_enough_words": "❌ 単語帳の単語が足りません\n\n最低: {min}語\n現在: {current}語\n\n/add または /words で単語を追加してください",
"round": "ラウンド {current}/{total}",
"seconds": "秒",
"score": "スコア",
"points": "ポイント",
"time_up": "時間切れ!",
"correct": "正解!",
"wrong": "不正解!",
"correct_was": "正解",
"finished": "ゲーム終了!",
"final_score": "最終スコア",
"correct_answers": "正解数",
"accuracy": "正答率",
"ai_checking": "AIが回答をチェック中...",
"answers_list": "回答一覧",
"result": {
"excellent": "🔥 素晴らしい!マスターですね!",
"good": "👏 良い結果です!この調子で!",
"average": "📚 悪くないです!練習を続けましょう。",
"practice": "💪 諦めないで!練習あるのみ!"
}
},
"match_game": {
"name": "ペアを見つけよう",
"rules": "📋 <b>ルール:</b>\n\n• {count}個の単語と{count}個の翻訳がシャッフルされて表示されます\n• 正しいペアを見つけてください\n• 回答形式: 1A, 2B, 3C...\n• 時間が計測されます",
"title": "ペアを合わせよう",
"words_col": "単語",
"translations_col": "翻訳",
"hint": "ペアを入力してください(例: 1C, 2A, 3B, 4D, 5E",
"cancel": "キャンセル",
"cancelled": "❌ ゲームがキャンセルされました",
"not_enough_words": "❌ 単語帳の単語が足りません\n\n最低: {min}語\n現在: {current}語\n\n/add または /words で単語を追加してください",
"not_all_pairs": "⚠️ すべてのペアを入力してください!\n\n入力済み: {entered}\n必要: {needed}",
"finished": "ゲーム終了!",
"score": "スコア",
"correct_pairs": "正解ペア数",
"time": "時間",
"results": "結果",
"result": {
"perfect": "🎯 完璧!すべて正解!",
"excellent": "🔥 素晴らしい!ほぼ完璧!",
"good": "👍 良い結果!",
"practice": "💪 練習を続けましょう!"
}
}
}
}