feat: JLPT levels for Japanese, custom practice scenarios, UI improvements
- Add separate level systems: CEFR (A1-C2) for European languages, JLPT (N5-N1) for Japanese - Store levels per language in new `levels_by_language` JSON field - Add custom scenario option in AI practice mode - Show action buttons after practice ends (new dialogue, tasks, words) - Fix level display across all handlers to use correct level system - Add Alembic migration for levels_by_language field - Update all locale files (ru, en, ja) with new keys 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -81,7 +81,15 @@
|
||||
"end_keep": "Отличная работа! Продолжай практиковаться.",
|
||||
"end_hint": "Используй /practice для нового диалога.",
|
||||
"translation_unavailable": "Перевод недоступен",
|
||||
"translation_already": "Перевод уже показан"
|
||||
"translation_already": "Перевод уже показан",
|
||||
"custom_scenario_btn": "✏️ Свой сценарий",
|
||||
"custom_scenario_prompt": "✏️ <b>Опиши свой сценарий</b>\n\nНапиши тему или ситуацию для разговора.\n\nПримеры:\n• Собеседование на работу программистом\n• Заказ пиццы по телефону\n• Обсуждение фильма с другом\n• Планирование путешествия в Японию",
|
||||
"custom_scenario_too_short": "⚠️ Слишком короткое описание. Напиши хотя бы несколько слов о сценарии.",
|
||||
"new_practice_btn": "🔄 Новый диалог",
|
||||
"to_tasks_btn": "🧠 Задания",
|
||||
"to_words_btn": "🎯 Слова",
|
||||
"go_tasks_hint": "Используй /task для тренировки слов",
|
||||
"go_words_hint": "Используй /words [тема] для подборки слов"
|
||||
},
|
||||
"tasks": {
|
||||
"no_words": "📚 У тебя пока нет слов для практики!\n\nДобавь несколько слов командой /add, а затем возвращайся.",
|
||||
@@ -159,6 +167,87 @@
|
||||
"cancelled": "❌ Тест отменён",
|
||||
"q_header": "❓ <b>Вопрос {i} из {n}</b>"
|
||||
},
|
||||
"settings": {
|
||||
"title": "⚙️ <b>Настройки</b>\n\n",
|
||||
"level_prefix": "📊 Уровень: ",
|
||||
"learning_prefix": "🎯 Язык изучения: ",
|
||||
"interface_prefix": "🌐 Язык интерфейса: ",
|
||||
"choose": "Выбери, что хочешь изменить:",
|
||||
"close": "❌ Закрыть",
|
||||
"back": "⬅️ Назад",
|
||||
"back_to_settings": "⬅️ К настройкам",
|
||||
"level_title": "📊 <b>Выбери свой уровень:</b>\n\n",
|
||||
"level_groups": "<b>A1-A2</b> - Начинающий\n<b>B1-B2</b> - Средний\n<b>C1-C2</b> - Продвинутый\n\n",
|
||||
"level_hint": "Это влияет на сложность предлагаемых слов и заданий.",
|
||||
"level": {
|
||||
"a1": "A1 - Начальный",
|
||||
"a2": "A2 - Элементарный",
|
||||
"b1": "B1 - Средний",
|
||||
"b2": "B2 - Выше среднего",
|
||||
"c1": "C1 - Продвинутый",
|
||||
"c2": "C2 - Профессиональный"
|
||||
},
|
||||
"jlpt": {
|
||||
"n5": "N5 - Базовый",
|
||||
"n4": "N4 - Начальный",
|
||||
"n3": "N3 - Средний",
|
||||
"n2": "N2 - Продвинутый",
|
||||
"n1": "N1 - Свободный"
|
||||
},
|
||||
"jlpt_groups": "<b>N5-N4</b> - Начинающий\n<b>N3</b> - Средний\n<b>N2-N1</b> - Продвинутый\n\n",
|
||||
"level_changed": "✅ Уровень изменен на <b>{level}</b>\n\n",
|
||||
"level_changed_hint": "Теперь ты будешь получать слова и задания, соответствующие твоему уровню!",
|
||||
"lang_title": "🌐 <b>Выбери язык интерфейса:</b>\n\n",
|
||||
"lang_desc": "Это изменит язык всех сообщений бота.",
|
||||
"lang_changed": "✅ Язык интерфейса: <b>Русский</b>",
|
||||
"learning_title": "🎯 <b>Выбери язык изучения:</b>\n\n",
|
||||
"learning_changed": "✅ Язык изучения: <b>{code}</b>",
|
||||
"menu_updated": "Клавиатура обновлена ⤵️",
|
||||
"lang_name": {
|
||||
"ru": "🇷🇺 Русский",
|
||||
"en": "🇬🇧 English",
|
||||
"ja": "🇯🇵 日本語"
|
||||
},
|
||||
"learning_lang": {
|
||||
"en": "🇬🇧 Английский",
|
||||
"es": "🇪🇸 Испанский",
|
||||
"de": "🇩🇪 Немецкий",
|
||||
"fr": "🇫🇷 Французский",
|
||||
"ja": "🇯🇵 Японский"
|
||||
}
|
||||
},
|
||||
"import_extra": {
|
||||
"cancelled": "❌ Импорт отменён."
|
||||
},
|
||||
"level_test_extra": {
|
||||
"generating": "🔄 Генерирую вопросы...",
|
||||
"generate_failed": "❌ Не удалось сгенерировать тест. Попробуй позже или используй /settings для ручной установки уровня.",
|
||||
"translation_unavailable": "Перевод недоступен",
|
||||
"translation_marker": "Перевод вопроса:",
|
||||
"translation_already": "Перевод уже показан",
|
||||
"correct": "✅ Правильно!",
|
||||
"incorrect": "❌ Неправильно",
|
||||
"correct_answer": "Правильный ответ: <b>{answer}</b>",
|
||||
"result_title": "🎉 <b>Тест завершён!</b>\n\n",
|
||||
"results_header": "📊 Результаты:\n",
|
||||
"correct_count": "Правильных ответов: <b>{correct}</b> из {total}\n",
|
||||
"accuracy": "Точность: <b>{accuracy}%</b>\n\n",
|
||||
"your_level": "🎯 Твой уровень: <b>{level}</b>\n",
|
||||
"level_set_hint": "Теперь задания и материалы будут подбираться под твой уровень!\nТы можешь изменить уровень в любое время через /settings",
|
||||
"level_desc": {
|
||||
"A1": "Начальный - понимаешь основные фразы и можешь представиться",
|
||||
"A2": "Элементарный - можешь общаться на простые темы",
|
||||
"B1": "Средний - можешь поддержать беседу на знакомые темы",
|
||||
"B2": "Выше среднего - свободно общаешься в большинстве ситуаций",
|
||||
"C1": "Продвинутый - используешь язык гибко и эффективно",
|
||||
"C2": "Профессиональный - владеешь языком на уровне носителя",
|
||||
"N5": "Базовый - понимаешь хирагану, катакану и базовые кандзи",
|
||||
"N4": "Начальный - понимаешь повседневные разговоры",
|
||||
"N3": "Средний - понимаешь обычные тексты и разговоры",
|
||||
"N2": "Продвинутый - понимаешь большинство контента",
|
||||
"N1": "Свободный - полное владение японским языком"
|
||||
}
|
||||
},
|
||||
"words": {
|
||||
"generating": "🔄 Генерирую подборку слов по теме '{theme}'...",
|
||||
"generate_failed": "❌ Не удалось сгенерировать подборку. Попробуй позже.",
|
||||
|
||||
Reference in New Issue
Block a user