feat: мини-истории, слово дня, меню практики
- Добавлены мини-истории для чтения с выбором жанра и вопросами - Кнопка показа/скрытия перевода истории - Количество вопросов берётся из настроек пользователя - Слово дня генерируется глобально в 00:00 UTC - Кнопка "Практика" открывает меню выбора режима - Убран автоматический create_all при запуске (только миграции) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
101
locales/en.json
101
locales/en.json
@@ -1,15 +1,34 @@
|
||||
{
|
||||
"menu": {
|
||||
"wordofday": "🌅 Word of Day",
|
||||
"add": "➕ Add word",
|
||||
"vocab": "📚 Vocabulary",
|
||||
"task": "🧠 Task",
|
||||
"practice": "💬 Practice",
|
||||
"exercises": "📖 Exercises",
|
||||
"words": "🎯 Thematic words",
|
||||
"import": "📖 Import",
|
||||
"stats": "📊 Stats",
|
||||
"settings": "⚙️ Settings",
|
||||
"below": "Main menu below ⤵️"
|
||||
},
|
||||
"practice_menu": {
|
||||
"title": "Practice",
|
||||
"choose": "Choose practice mode:",
|
||||
"stories": "Mini Stories",
|
||||
"ai_chat": "AI Chat"
|
||||
},
|
||||
"wod": {
|
||||
"title": "Word of the Day",
|
||||
"generating": "🔄 Generating word of the day...",
|
||||
"failed": "❌ Failed to generate word of the day. Try again later.",
|
||||
"not_available": "🕐 Word of the day is not ready yet.\n\nWords are generated daily at 00:00 UTC.\nTry again later!",
|
||||
"examples": "Examples",
|
||||
"synonyms": "Synonyms",
|
||||
"add_btn": "➕ Add to vocabulary",
|
||||
"added": "Added to vocabulary!",
|
||||
"not_found": "Word not found"
|
||||
},
|
||||
"add_menu": {
|
||||
"title": "➕ <b>Add words</b>\n\nChoose method:",
|
||||
"manual": "📝 Manual",
|
||||
@@ -55,7 +74,7 @@
|
||||
"skip_msg": "✅ Okay!\n\nYou can take the test later with /level_test\nor set level manually in /settings\n\nLet's start! Try:\n• /words travel - thematic words\n• /practice - AI dialogue\n• /add hello - add a word"
|
||||
},
|
||||
"add": {
|
||||
"prompt": "Send the word you want to add:\nFor example: <code>/add elephant</code>\n\nOr just send the word without a command!",
|
||||
"prompt": "Send the word you want to add:\n• Single word: <code>/add elephant</code>\n• Multiple: <code>/add apple, banana, orange</code>\n\nOr just send the word without a command!",
|
||||
"searching": "⏳ Looking up translation and examples...",
|
||||
"examples_header": "<b>Examples:</b>",
|
||||
"translations_header": "<b>Translations:</b>",
|
||||
@@ -69,6 +88,13 @@
|
||||
"added_success": "✅ Word '<b>{word}</b>' added!\n\nTotal words in vocabulary: {count}\n\nKeep adding new words or use /task to practice!",
|
||||
"cancelled": "Cancelled. You can add another word with /add"
|
||||
},
|
||||
"add_batch": {
|
||||
"header": "📝 <b>Words to add ({n}):</b>",
|
||||
"translating": "⏳ Translating {n} words...",
|
||||
"choose": "Select words to add or add all at once:",
|
||||
"truncated": "⚠️ Too many words. Showing first {n}.",
|
||||
"failed": "❌ Failed to get translations. Try again later."
|
||||
},
|
||||
"vocab": {
|
||||
"empty": "📚 Your vocabulary is empty!\n\nAdd your first word with /add or just send me a word.",
|
||||
"header": "<b>📚 Your vocabulary:</b>",
|
||||
@@ -191,7 +217,54 @@
|
||||
"invalid_format": "❌ Invalid time format!\n\nUse <b>HH:MM</b> (e.g., 09:00 or 18:30)\nOr send /cancel to abort",
|
||||
"time_set_title": "✅ <b>Time set!</b>",
|
||||
"status_on_line": "Status: <b>Enabled</b>",
|
||||
"use_settings": "Use /reminder to change settings."
|
||||
"use_settings": "Use /reminder to change settings.",
|
||||
"daily_title": "⏰ <b>Time to practice!</b>",
|
||||
"daily_wod": "🌅 <b>Word of the Day:</b>",
|
||||
"daily_tips": "Don't forget to practice today:\n• /task - complete tasks\n• /practice - practice dialogue\n• /words - add new words",
|
||||
"daily_motivation": "💪 Regular practice is the key to success!"
|
||||
},
|
||||
"story": {
|
||||
"title": "Mini Stories",
|
||||
"choose_genre": "Choose a story genre:",
|
||||
"genre": {
|
||||
"dialogue": "Dialogues",
|
||||
"news": "News",
|
||||
"story": "Stories",
|
||||
"letter": "Letters",
|
||||
"recipe": "Recipes"
|
||||
},
|
||||
"generating": "🔄 Generating story...",
|
||||
"failed": "❌ Failed to generate story. Try again.",
|
||||
"try_again": "Try again",
|
||||
"level": "Level",
|
||||
"words": "words",
|
||||
"questions_btn": "Questions",
|
||||
"vocab_btn": "Vocabulary",
|
||||
"new_btn": "New story",
|
||||
"back": "Back",
|
||||
"not_found": "Story not found",
|
||||
"no_vocab": "No vocabulary words",
|
||||
"no_questions": "No questions",
|
||||
"vocabulary": "Story Vocabulary",
|
||||
"add_all": "Add all",
|
||||
"word_added": "✅ Word '{word}' added!",
|
||||
"words_added": "✅ Added words: {n}",
|
||||
"word_not_found": "Word not found",
|
||||
"question": "Question",
|
||||
"question_not_found": "Question not found",
|
||||
"correct": "✅ Correct!",
|
||||
"incorrect": "❌ Incorrect",
|
||||
"next_question": "Next question",
|
||||
"show_results": "Results",
|
||||
"results_title": "Results",
|
||||
"correct_answers": "Correct answers",
|
||||
"accuracy": "Accuracy",
|
||||
"result_excellent": "Excellent! You understood the text well.",
|
||||
"result_good": "Good job! You understood most of the text.",
|
||||
"result_practice": "Try reading the story more carefully.",
|
||||
"translation": "Translation",
|
||||
"show_translation": "Show translation",
|
||||
"hide_translation": "Hide translation"
|
||||
},
|
||||
"level_test": {
|
||||
"show_translation_btn": "👁️ Show question translation",
|
||||
@@ -330,5 +403,29 @@
|
||||
"err_not_found": "❌ Error: word not found",
|
||||
"already_exists": "The word '{word}' is already in your vocabulary",
|
||||
"added_single": "✅ Word '{word}' added to vocabulary"
|
||||
},
|
||||
"exercises": {
|
||||
"title": "📖 <b>Grammar Exercises</b>",
|
||||
"choose_topic": "Choose a topic for exercises:",
|
||||
"your_level": "Your level: <b>{level}</b>",
|
||||
"generating_rule": "🔄 Generating grammar explanation...",
|
||||
"generating": "🔄 Generating exercises...",
|
||||
"generate_failed": "❌ Failed to generate exercise. Please try again later.",
|
||||
"start_btn": "▶️ Start exercises",
|
||||
"task_header": "📝 <b>Exercise: {topic}</b>",
|
||||
"instruction": "Fill in the blanks with the correct form:",
|
||||
"check_btn": "✅ Check",
|
||||
"next_btn": "➡️ Next",
|
||||
"results_btn": "📊 Results",
|
||||
"back_btn": "⬅️ Back to topics",
|
||||
"close_btn": "❌ Close",
|
||||
"correct": "✅ <b>Correct!</b>",
|
||||
"incorrect": "❌ <b>Incorrect</b>",
|
||||
"your_answer": "Your answer: {answer}",
|
||||
"right_answer": "Correct answer: {answer}",
|
||||
"explanation": "💡 {text}",
|
||||
"score": "Score: {correct} of {total}",
|
||||
"no_topics": "No topics available for your level yet.",
|
||||
"write_answer": "Write your answer:"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user