STRINGS: dict[str, dict[str, str]] = {
# /start, /help
"welcome": {
"en": (
"Telegram Channel Analyzer\n\n"
"Analyze any public Telegram channel using AI.\n\n"
"Commands:\n"
"/analyze @channel — Start analysis\n"
"/lang en|ru — Change language\n"
"/features — Available focus areas\n"
"/prices — Pricing info\n"
),
"ru": (
"Анализатор Telegram-каналов\n\n"
"Анализ любого публичного канала с помощью ИИ.\n\n"
"Команды:\n"
"/analyze @channel — Начать анализ\n"
"/lang en|ru — Сменить язык\n"
"/features — Доступные области анализа\n"
"/prices — Информация о ценах\n"
),
},
# /analyze
"provide_channel": {
"en": "Please provide a channel: /analyze @channel",
"ru": "Укажите канал: /analyze @канал",
},
"bad_channel": {
"en": "Could not parse channel name. Use @username or t.me/username.",
"ru": "Не удалось разобрать имя канала. Используйте @username или t.me/username.",
},
"choose_depth": {
"en": "Channel: @{channel}\n\nChoose analysis depth:",
"ru": "Канал: @{channel}\n\nВыберите глубину анализа:",
},
"choose_focus": {
"en": "Select focus areas (tap to toggle, then Done):",
"ru": "Выберите области анализа (нажмите для выбора, затем Готово):",
},
"choose_model": {
"en": "Choose AI model:",
"ru": "Выберите модель ИИ:",
},
"session_expired": {
"en": "Session expired. Please run /analyze again.",
"ru": "Сессия истекла. Запустите /analyze снова.",
},
"no_focus_selected": {
"en": "Please select at least one focus area.",
"ru": "Выберите хотя бы одну область анализа.",
},
# Depth labels
"depth_basic": {
"en": "Basic (fast)",
"ru": "Базовый (быстрый)",
},
"depth_standard": {
"en": "Standard",
"ru": "Стандартный",
},
"depth_full": {
"en": "Full (detailed)",
"ru": "Полный (детальный)",
},
# Focus area labels
"focus_psychology": {
"en": "Psychology & Influence",
"ru": "Психология и влияние",
},
"focus_business": {
"en": "Business & Monetization",
"ru": "Бизнес и монетизация",
},
"focus_marketing": {
"en": "Marketing & Growth",
"ru": "Маркетинг и рост",
},
"focus_content": {
"en": "Content Strategy",
"ru": "Контент-стратегия",
},
"focus_audience": {
"en": "Audience & Engagement",
"ru": "Аудитория и вовлечённость",
},
"focus_sentiment": {
"en": "Sentiment Analysis",
"ru": "Анализ тональности",
},
# Analysis progress
"fetching": {
"en": "Fetching messages...",
"ru": "Загрузка сообщений...",
},
"fetched_n": {
"en": "Fetched {n} messages. Chunking...",
"ru": "Загружено {n} сообщений. Разбиение...",
},
"chunked": {
"en": "{n} messages in {c} chunks. Analyzing...",
"ru": "{n} сообщений в {c} частях. Анализ...",
},
"analyzing_chunk": {
"en": "Analyzing chunk {i}/{total}...",
"ru": "Анализ части {i}/{total}...",
},
"chunk_done_cooldown": {
"en": "Chunk {i}/{total} done. Cooling down 60s...",
"ru": "Часть {i}/{total} готова. Пауза 60с...",
},
"generating_report": {
"en": "Generating final report...",
"ru": "Генерация финального отчёта...",
},
"sending_report": {
"en": "Sending report...",
"ru": "Отправка отчёта...",
},
"analysis_starting": {
"en": "Starting analysis for @{channel}...\n\n{status}",
"ru": "Начинаю анализ @{channel}...\n\n{status}",
},
# Errors
"channel_private": {
"en": "Channel is private or does not exist.",
"ru": "Канал приватный или не существует.",
},
"channel_not_found": {
"en": "Channel username not found.",
"ru": "Имя канала не найдено.",
},
"flood_wait": {
"en": "Rate limited by Telegram. Retry in {s}s.",
"ru": "Ограничение Telegram. Повторите через {s}с.",
},
"fetch_failed": {
"en": "Failed to fetch channel: {e}",
"ru": "Ошибка получения канала: {e}",
},
"no_messages": {
"en": "No text messages found in this channel.",
"ru": "В канале не найдено текстовых сообщений.",
},
"analysis_failed": {
"en": "Analysis failed: {e}",
"ru": "Ошибка анализа: {e}",
},
"internal_error": {
"en": "Internal error: Telethon client not configured.",
"ru": "Внутренняя ошибка: клиент Telethon не настроен.",
},
"rate_limited": {
"en": "Rate limited, waiting {s}s...",
"ru": "Лимит запросов, ожидание {s}с...",
},
# Payment
"free_analysis": {
"en": "This analysis is free ({used}/{max} free trial).",
"ru": "Этот анализ бесплатный ({used}/{max} пробный).",
},
"payment_required": {
"en": "This analysis costs {price} Stars.",
"ru": "Этот анализ стоит {price} Stars.",
},
"invoice_title": {
"en": "Channel Analysis — {depth}",
"ru": "Анализ канала — {depth}",
},
"invoice_description": {
"en": "Analysis of @{channel} ({depth} depth)",
"ru": "Анализ @{channel} ({depth})",
},
"payment_success": {
"en": "Payment received! Starting analysis...",
"ru": "Оплата получена! Начинаю анализ...",
},
# /lang
"lang_set": {
"en": "Language set to English.",
"ru": "Язык установлен: Русский.",
},
"lang_usage": {
"en": "Usage: /lang en or /lang ru",
"ru": "Использование: /lang en или /lang ru",
},
# /features
"features_title": {
"en": "Available Focus Areas\n",
"ru": "Доступные области анализа\n",
},
"features_psychology": {
"en": "Psychology & Influence — Persuasion techniques, cognitive biases, emotional triggers",
"ru": "Психология и влияние — Техники убеждения, когнитивные искажения, эмоциональные триггеры",
},
"features_business": {
"en": "Business & Monetization — Revenue models, product placement, conversion patterns",
"ru": "Бизнес и монетизация — Модели доходов, продвижение продуктов, воронки конверсии",
},
"features_marketing": {
"en": "Marketing & Growth — Growth tactics, viral mechanics, audience acquisition",
"ru": "Маркетинг и рост — Тактики роста, вирусные механики, привлечение аудитории",
},
"features_content": {
"en": "Content Strategy — Topics, formats, posting patterns, narrative arcs",
"ru": "Контент-стратегия — Темы, форматы, паттерны публикаций, нарративы",
},
"features_audience": {
"en": "Audience & Engagement — Interaction patterns, community dynamics, engagement drivers",
"ru": "Аудитория и вовлечённость — Паттерны взаимодействия, динамика сообщества",
},
"features_sentiment": {
"en": "Sentiment Analysis — Tone distribution, emotional shifts, sentiment by topic",
"ru": "Анализ тональности — Распределение тона, эмоциональные сдвиги, тональность по темам",
},
# /prices
"prices": {
"en": (
"Pricing\n\n"
"First analysis is free!\n\n"
"• Basic — {basic} Stars\n"
"• Standard — {standard} Stars\n"
"• Full — {full} Stars\n\n"
"Payment via Telegram Stars."
),
"ru": (
"Цены\n\n"
"Первый анализ бесплатно!\n\n"
"• Базовый — {basic} Stars\n"
"• Стандартный — {standard} Stars\n"
"• Полный — {full} Stars\n\n"
"Оплата через Telegram Stars."
),
},
# Report download
"download_report": {
"en": "Download report",
"ru": "Скачать отчёт",
},
# Done button
"done": {
"en": "Done",
"ru": "Готово",
},
}