226 lines
23 KiB
JSON
226 lines
23 KiB
JSON
{
|
||
"welcome": "Добро пожаловать, {user_name}!",
|
||
"main_menu_greeting": "Привет, {user_name}! 👋\nЧто бы вы хотели сделать?",
|
||
|
||
"menu_activate_trial_button": "🆓 Пробный период",
|
||
"menu_subscribe_inline": "🚀 Купить",
|
||
"menu_my_subscription_inline": "🔐 Моя подписка",
|
||
"menu_referral_inline": "🎁 Рефералы",
|
||
"menu_apply_promo_button": "🎟 Промокод",
|
||
"menu_language_settings_inline": "🌐 Язык",
|
||
"menu_server_status_button": "📊 Статус",
|
||
"menu_support_button": "💬 Поддержка",
|
||
"menu_terms_button": "📄 Условия сервиса",
|
||
"back_to_main_menu_button": "⬅️ Назад",
|
||
|
||
"choose_language": "Выберите язык / Select language:",
|
||
"language_set_alert": "Язык изменен!",
|
||
"error_occurred_try_again": "Произошла ошибка, попробуйте снова.",
|
||
"error_displaying_menu": "Ошибка отображения меню.",
|
||
"main_menu_unknown_action": "Неизвестное действие.",
|
||
|
||
"select_subscription_period": "Выберите срок подписки:",
|
||
"no_subscription_options_available": "В данный момент нет доступных вариантов подписки.",
|
||
"subscribe_for_months_button": "{months} мес. - {price} {currency_symbol}",
|
||
"choose_payment_method": "Выберите способ оплаты:",
|
||
"pay_button": "💳 Оплатить",
|
||
"pay_with_yookassa_button": "💳 ЮKassa",
|
||
"pay_with_tribute_button": "❤️ Tribute",
|
||
"pay_with_stars_button": "🌟 Звезды Telegram",
|
||
"cancel_button": "❌ Отмена",
|
||
"payment_description_subscription": "Оплата подписки на {months} мес.",
|
||
"payment_service_unavailable": "Платежный сервис временно недоступен. Пожалуйста, попробуйте позже.",
|
||
"payment_service_unavailable_alert": "Платежный сервис недоступен",
|
||
"error_creating_payment_record": "Ошибка при создании записи о платеже. Попробуйте позже.",
|
||
"error_payment_gateway_link_failed": "Не удалось получить ссылку на оплату. Пожалуйста, свяжитесь с поддержкой.",
|
||
"payment_link_message": "Для оплаты подписки на {months} мес., нажмите кнопку ниже:",
|
||
"error_payment_gateway": "Ошибка платежного шлюза. Попробуйте позже или свяжитесь с поддержкой.",
|
||
"payment_successful": "✅ Оплата прошла успешно!\nВаша подписка на {months} мес. активна до {end_date}.",
|
||
"payment_successful_with_promo": "✅ Оплата прошла успешно!\nВаша подписка на {months} мес. (с учетом промокода на +{bonus_days} дней) активна до {end_date}.",
|
||
"payment_successful_with_referral_bonus": "✅ Оплата прошла успешно!\nВаша подписка на {months} мес. (базовая дата окончания: {base_end_date}) продлена на {bonus_days} бонусных дней за приглашение от {inviter_name} и теперь активна до {final_end_date}.",
|
||
"payment_successful_error_details": "✅ Оплата прошла успешно, но возникла ошибка при отображении деталей. Ваша подписка активна. Свяжитесь с поддержкой, если что-то не так.",
|
||
"payment_failed": "❌ Оплата не удалась или была отменена. Пожалуйста, попробуйте еще раз или свяжитесь с поддержкой.",
|
||
"error_processing_your_payment": "Произошла ошибка при обработке вашего платежа после его успеха. Пожалуйста, свяжитесь с поддержкой, указав детали.",
|
||
|
||
"my_subscription_details": "<b>🔐 Моя подписка:</b>\n\nСтатус: <b>{status}</b>\nАктивна до: <b>{end_date}</b> (осталось дней: {days_left})\n\nТрафик: <b>{traffic_used}</b> из <b>{traffic_limit}</b>\n\nСсылка на конфигурацию:\n<code>{config_link}</code>",
|
||
"config_link_not_available": "недоступна, обратитесь в поддержку",
|
||
"subscription_not_active": "У вас нет активной подписки. \nХотите приобрести?",
|
||
"status_active": "Активна",
|
||
"status_expired": "Истекла",
|
||
"status_disabled": "Отключена",
|
||
"traffic_unlimited": "Безлимитный",
|
||
"traffic_na": "н/д",
|
||
"error_service_unavailable": "Сервис временно недоступен. Пожалуйста, попробуйте позже.",
|
||
|
||
"promo_code_prompt": "Пожалуйста, введите ваш промокод:",
|
||
"promo_code_not_found": "Промокод <code>{code}</code> не найден, истек или уже использован максимальное количество раз.",
|
||
"promo_code_already_used_by_user": "Вы уже активировали промокод <code>{code}</code>.",
|
||
"promo_code_no_active_subscription": "Для активации этого промокода у вас должна быть активная подписка.",
|
||
"promo_code_applied_success": "✅ Промокод <code>{code}</code> успешно применен!\nВаша подписка продлена на {bonus_days} дней и теперь активна до {new_end_date}.",
|
||
"error_applying_promo_bonus": "Не удалось применить бонус по промокоду. Пожалуйста, попробуйте позже или свяжитесь с поддержкой.",
|
||
"promo_input_cancelled_short": "Ввод промокода отменен.",
|
||
|
||
"trial_feature_disabled": "Пробный период в данный момент недоступен.",
|
||
"trial_already_had_subscription_or_trial": "Вы уже использовали пробный период или у вас была платная подписка. Пробный период доступен только один раз для новых пользователей.",
|
||
"trial_confirm_prompt": "Хотите активировать бесплатный пробный период на {days} дней с лимитом трафика {traffic_gb}?",
|
||
"trial_confirm_activate_button": "✅ Активировать!",
|
||
"trial_activated_alert": "Пробный период активирован!",
|
||
"trial_activated_details_message": "🚀 Ваш пробный период на {days} дней активирован!\n\nДействует до: <b>{end_date}</b>\nТрафик: <b>{traffic_gb}</b>\n\nВаша ссылка на конфигурацию:\n<code>{config_link}</code>",
|
||
"trial_activation_failed": "Не удалось активировать пробный период. Пожалуйста, попробуйте позже.",
|
||
"trial_activation_failed_panel_link": "Не удалось связать ваш аккаунт с сервером для активации пробного периода. Попробуйте позже.",
|
||
"trial_activation_failed_db": "Ошибка базы данных при активации пробного периода. Попробуйте позже.",
|
||
"trial_activation_failed_panel_update": "Не удалось обновить детали на сервере для пробного периода. Попробуйте позже.",
|
||
"user_not_found_for_trial": "Ваш аккаунт не найден в системе. Пожалуйста, сначала выполните команду /start.",
|
||
"yes_button": "Да",
|
||
"no_button": "Нет",
|
||
"trial_cancelled_short": "Активация отменена.",
|
||
|
||
"referral_program_info_new": "Приглашайте друзей и получайте бонусы!\n\nВаша реф. ссылка:\n<code>{referral_link}</code>\n\n<b>Бонусы:</b>{bonus_details}",
|
||
"referral_bonus_per_period": "\n\n🎁 За {months}-мес. подписку друга:\n ➢ Вы: <b>{inviter_bonus_days} дн.</b>\n ➢ Друг: <b>{referee_bonus_days} дн.</b>",
|
||
"no_bonus_days": "0",
|
||
"referral_no_bonuses_configured": "\nРеферальные бонусы не настроены.",
|
||
"referral_link_for_copying_reminder": "Ссылка выше. Нажмите и удерживайте для копирования.",
|
||
"friend_placeholder": "друг",
|
||
"referral_bonus_inviter_notification_extended": "🎉 Поздравляем! Ваш друг {referee_name} оплатил подписку. Вам начислено {days} бонусных дней! Ваша подписка теперь активна до {new_end_date}.",
|
||
"referral_bonus_inviter_notification_new_sub": "🎉 Поздравляем! Ваш друг {referee_name} оплатил подписку. Вам начислена бонусная подписка на {days} дней! Она активна до {new_end_date}.",
|
||
|
||
"user_is_banned": "🚫 Ваш аккаунт заблокирован. Пожалуйста, свяжитесь со службой поддержки.",
|
||
|
||
"admin_panel_title": "Панель администратора",
|
||
"admin_stats_button": "📊 Статистика",
|
||
"admin_broadcast_button": "📢 Рассылка",
|
||
"admin_create_promo_button": "🎁 Создать промо",
|
||
"admin_manage_promos_button": "🛠 Управление промо",
|
||
"admin_view_promos_button": "👀 Список промо",
|
||
"admin_ban_user_button": "🚫 Забанить",
|
||
"admin_unban_user_button": "✅ Разбанить",
|
||
"admin_view_banned_users_button": "📜 Бан-лист",
|
||
"admin_view_logs_menu_button": "📄 Логи",
|
||
"admin_sync_panel_button": "🔄 Синхронизация",
|
||
"admin_unknown_action": "Неизвестное действие администратора.",
|
||
"admin_action_cancelled_default": "Действие отменено. Возврат в меню.",
|
||
"admin_action_cancelled_default_alert": "Действие отменено",
|
||
"back_to_admin_panel_button": "⬅️ В админку",
|
||
|
||
"admin_stats_header": "📊 Статистика Бота",
|
||
"admin_stats_users": "👥 Пользователи: Всего - {total_users}, Забанено - {banned_users}, С активной подпиской - {active_subs}",
|
||
"admin_stats_recent_payments_header": "Последние платежи:",
|
||
"admin_stats_payment_item": "{status_emoji} {amount} {currency} от {user_info} ({p_status}) [{p_date}]",
|
||
"admin_stats_no_payments_found": "Платежей пока нет.",
|
||
"admin_stats_last_sync_header": "Последняя синхронизация с панелью:",
|
||
"admin_stats_sync_time": "Время",
|
||
"admin_stats_sync_status": "Статус",
|
||
"admin_stats_sync_users_processed": "Обработано юзеров с панели",
|
||
"admin_stats_sync_subs_synced": "Синхронизировано подписок",
|
||
"admin_stats_sync_details_label": "Детали",
|
||
"admin_sync_status_never_run": "Синхронизация с панелью еще не проводилась.",
|
||
|
||
"admin_broadcast_enter_message": "Введите сообщение для рассылки (HTML поддерживается):",
|
||
"admin_broadcast_confirm_prompt": "Вы собираетесь отправить следующее сообщение (первые 200 символов):\n\n{message_preview}\n\nПодтверждаете отправку?",
|
||
"confirm_broadcast_send_button": "✅ Отправить",
|
||
"cancel_broadcast_button": "❌ Отмена",
|
||
"admin_broadcast_sending_started": "Начинаю рассылку...",
|
||
"admin_broadcast_error_no_message": "Ошибка: сообщение для рассылки не найдено.",
|
||
"admin_broadcast_error_no_message_alert": "Сообщение для рассылки пустое!",
|
||
"admin_broadcast_finished_stats": "🏁 Рассылка завершена!\nОтправлено: {sent_count}\nНе удалось отправить: {failed_count}",
|
||
"admin_broadcast_cancelled": "Рассылка отменена.",
|
||
"admin_broadcast_cancelled_alert": "Рассылка отменена!",
|
||
"admin_broadcast_cancelled_nav_back": "Рассылка отменена. Вы возвращены в админ-панель.",
|
||
|
||
"admin_promo_create_prompt": "Введите детали промокода в формате: КОД ДНИ_БОНУСА МАКС_АКТИВАЦИЙ [СРОК_ДЕЙСТВИЯ_В_ДНЯХ_ОТ_СЕЙЧАС]\nПример: <code>{example_format}</code>\n(Срок действия необязателен, по умолчанию - бессрочный)",
|
||
"admin_promo_invalid_format": "Неверный формат ввода. Пожалуйста, используйте: КОД ДНИ_БОНУСА МАКС_АКТИВАЦИЙ [ДНИ_ДЕЙСТВИЯ]",
|
||
"admin_promo_invalid_code_format": "Код должен быть от 3 до 30 символов и содержать только буквы и цифры.",
|
||
"admin_promo_invalid_bonus_or_activations": "Количество бонусных дней и максимальных активаций должны быть положительными числами.",
|
||
"admin_promo_invalid_validity_days": "Срок действия промокода (в днях) должен быть положительным числом.",
|
||
"admin_promo_invalid_values": "Неверные значения. {error}",
|
||
"admin_promo_invalid_format_general": "Ошибка парсинга деталей промокода. Проверьте формат.",
|
||
"admin_promo_created_success": "✅ Промокод <code>{code}</code> успешно создан!\nБонус: {bonus_days} дней\nМакс. активаций: {max_activations}\nДействителен: {valid_until_str}",
|
||
"admin_promo_creation_failed_duplicate": "❌ Ошибка: Промокод <code>{code}</code> уже существует.",
|
||
"admin_promo_creation_failed": "❌ Не удалось создать промокод. Пожалуйста, попробуйте позже.",
|
||
"admin_active_promos_list_header": "Активные промокоды:",
|
||
"admin_no_active_promos": "Нет активных промокодов.",
|
||
"admin_promo_list_item": "<code>{code}</code>: +{bonus}дн, {current}/{max} акт., до {valid_until}",
|
||
"admin_promo_valid_indefinitely": "бессрочно",
|
||
"admin_promo_valid_until_display": "до {date}",
|
||
"admin_manage_promos_title": "Управление промокодами",
|
||
"admin_promo_edit_button": "✏️ Изменить",
|
||
"admin_promo_delete_button": "🗑 Удалить",
|
||
"admin_promo_edit_prompt": "Отправьте новые данные для <code>{code}</code> в формате: КОД ДНИ_БОНУСА МАКС_АКТИВАЦИЙ [СРОК]",
|
||
"admin_promo_updated_success": "Промокод <code>{code}</code> обновлен.",
|
||
"admin_promo_deleted_success": "Промокод <code>{code}</code> удален.",
|
||
"admin_promo_not_found": "Промокод не найден.",
|
||
|
||
"admin_ban_user_prompt": "Введите ID или @username пользователя для блокировки:",
|
||
"admin_user_not_found_in_bot_db": "Пользователь <code>{user_id}</code> не найден в базе данных бота.",
|
||
"admin_cannot_ban_self_or_admin": "Вы не можете заблокировать себя или другого администратора.",
|
||
"admin_user_already_banned": "Пользователь {user_id_or_username} уже заблокирован.",
|
||
"admin_user_banned_success_combined": "✅ Пользователь {user_id_or_username} успешно заблокирован в боте {panel_status_part}.",
|
||
"admin_panel_ban_success_part": "и на панели",
|
||
"admin_panel_ban_fail_part": ", но не удалось заблокировать на панели",
|
||
"admin_user_ban_failed_local_db_error": "❌ Не удалось заблокировать пользователя в локальной БД.",
|
||
"admin_unban_user_prompt": "Введите ID или @username пользователя для разблокировки:",
|
||
"admin_user_not_banned": "Пользователь {user_id_or_username} не заблокирован.",
|
||
"admin_user_unbanned_success_combined": "✅ Пользователь {user_id_or_username} успешно разблокирован в боте {panel_status_part}.",
|
||
"admin_panel_unban_success_part": "и на панели",
|
||
"admin_panel_unban_fail_part": ", но не удалось разблокировать на панели",
|
||
"admin_user_unban_failed_local_db_error": "❌ Не удалось разблокировать пользователя в локальной БД.",
|
||
"admin_no_banned_users": "В данный момент нет заблокированных пользователей.",
|
||
"admin_banned_list_title": "Список забаненных (стр. {current_page}/{total_pages}):",
|
||
"admin_banned_user_button_text": "{user_display} (ID: {user_id})",
|
||
"prev_page_button": "⬅️ Пред.",
|
||
"next_page_button": "След. ➡️",
|
||
"admin_user_card_title": "Карточка пользователя: {user_display}",
|
||
"user_card_info": "ID: <code>{user_id}</code>\nUsername: @{username}\nИмя: {first_name} {last_name}\nЯзык: {language_code}\nPanel UUID: <code>{panel_user_uuid}</code>\nСтатус: <b>{ban_status}</b>\nРегистрация: {reg_date}\nПодписка до: <b>{sub_end_date}</b>",
|
||
"user_card_banned": "ЗАБЛОКИРОВАН",
|
||
"user_card_active": "Активен",
|
||
"user_card_sub_na": "н/д",
|
||
"user_card_ban_button": "🚫 Заблокировать",
|
||
"user_card_unban_button": "✅ Разблокировать",
|
||
"user_card_back_to_banned_list_button": "⬅️ К списку забаненных",
|
||
"admin_confirm_action_title": "Подтверждение: {action_text}",
|
||
"ban_verb_l": "блокировка",
|
||
"unban_verb_l": "разблокировка",
|
||
"admin_confirm_ban_prompt": "Вы уверены, что хотите заблокировать пользователя {user_display} (ID: {user_id})?",
|
||
"admin_confirm_unban_prompt": "Вы уверены, что хотите разблокировать пользователя {user_display} (ID: {user_id})?",
|
||
"admin_user_banned_from_card_alert": "Пользователь {user_display} (ID: {user_id}) заблокирован.",
|
||
"admin_user_unbanned_from_card_alert": "Пользователь {user_display} (ID: {user_id}) разблокирован.",
|
||
"admin_user_ban_failed_db_error": "Ошибка блокировки пользователя в БД.",
|
||
"admin_user_unban_failed_db_error": "Ошибка разблокировки пользователя в БД.",
|
||
"admin_panel_status_update_fail_part": ", но статус на панели не обновлен",
|
||
|
||
"admin_logs_menu_title": "Меню логов:",
|
||
"admin_view_all_logs_button": "📜 Все логи сообщений",
|
||
"admin_view_user_logs_prompt_button": "👤 Логи пользователя",
|
||
"admin_all_logs_title": "Все логи (стр. {current_page}/{total_pages}):",
|
||
"admin_no_logs_found": "Логи не найдены.",
|
||
"admin_log_entry_format": "<code>{timestamp_str}</code> - <b>{user_display}</b> (ID: {user_id})\n <i>{event_type}</i>: {content_preview}",
|
||
"system_or_unknown_user": "Система/Неизв.",
|
||
"admin_prompt_for_user_id_or_username_logs": "Введите ID или @username пользователя для просмотра его логов:",
|
||
"admin_log_user_not_found": "Пользователь по запросу \"{input}\" не найден в базе данных бота.",
|
||
"admin_user_logs_title": "Логи пользователя {user_display} (стр. {current_page}/{total_pages}):",
|
||
|
||
"sync_started": "🔄 Начинаю синхронизацию данных с панелью...",
|
||
"sync_failed": "❌ Ошибка синхронизации с панелью. Детали: {details}",
|
||
"sync_completed": "✅ Синхронизация с панелью завершена. Статус: {status}. Детали: {details}",
|
||
"sync_completed_details": "Проверено: {total_checked} записей.\nПользователей синхронизировано/обновлено: {users_synced}.\nПодписок синхронизировано/обновлено: {subs_synced}.",
|
||
"sync_completed_with_errors_details": "Проверено: {total_checked} записей.\nПользователей синхронизировано/обновлено: {users_synced}.\nПодписок синхронизировано/обновлено: {subs_synced}.\nОшибок: {errors_count}.\n\nПервые ошибки:\n{error_details_preview}",
|
||
"no_errors_placeholder": "нет",
|
||
"admin_sync_initiated_from_panel": "Синхронизация запущена...",
|
||
"admin_panel_user_creation_failed": "❌ Не удалось создать пользователя на панели для TG ID {user_id}. Панель недоступна?",
|
||
"error_displaying_logs_too_long": "Ошибка: логи слишком длинные для отображения одним сообщением. Попробуйте найти логи по конкретному пользователю.",
|
||
"error_displaying_statistics": "Ошибка отображения статистики.",
|
||
"stub_page_display": "Страница",
|
||
|
||
"subscription_72h_notification": "👋 Привет, {user_name}!\n\n⏳ Ваша подписка на VPN истекает через 72 часа ({end_date}).\n\nПожалуйста, продлите её в главном меню бота.",
|
||
"subscription_48h_notification": "👋 Привет, {user_name}!\n\n⏳ Ваша подписка на VPN истекает через 48 часов ({end_date}).\n\nПожалуйста, продлите её в главном меню бота.",
|
||
"subscription_24h_notification": "👋 Привет, {user_name}!\n\n⏳ Ваша подписка на VPN истекает через 24 часа ({end_date}).\n\nПожалуйста, продлите её в главном меню бота.",
|
||
"subscription_expired_notification": "Срок вашей подписки истек.",
|
||
"subscription_expired_yesterday_notification": "Ваша подписка истекла сутки назад.",
|
||
|
||
"admin_new_trial_notification": "\ud83c\udf21 Пользователь {user_id} активировал пробный период до {end_date}.",
|
||
"admin_new_payment_notification": "\ud83d\udcb3 Получен платеж от пользователя {user_id}: {months} мес. за {amount} {currency}.",
|
||
"admin_promo_activation_notification": "\ud83c\udf81 Пользователь {user_id} активировал промокод {code} (+{bonus_days} дн.)",
|
||
|
||
"error_unknown": "Произошла неизвестная ошибка."
|
||
}
|