mirror of
https://github.com/BEDOLAGA-DEV/remnawave-bedolaga-telegram-bot.git
synced 2026-03-03 20:34:10 +00:00
309 lines
22 KiB
Python
309 lines
22 KiB
Python
TRANSLATIONS = {
|
||
'ru': {
|
||
'select_language': '🌍 Выберите язык / Choose language',
|
||
'language_selected': '🇷🇺 Язык выбран: Русский',
|
||
'main_menu': '📱 Главное меню',
|
||
'balance': 'Баланс',
|
||
'my_subscriptions': 'Мои подписки',
|
||
'buy_subscription': 'Купить подписку',
|
||
'support': 'Техподдержка',
|
||
'promocode': 'Промокод',
|
||
'admin_panel': 'Админ панель',
|
||
'trial_subscription': '🆓 Тестовая подписка',
|
||
'trial_not_available': '❌ Тестовая подписка недоступна',
|
||
'trial_success': '🎉 Тестовая подписка успешно активирована!\n\nТеперь вы можете найти её в разделе "Мои подписки".',
|
||
'trial_error': '❌ Ошибка при создании тестовой подписки',
|
||
'trial_info': '🧪 Тестовая подписка выдается на три дня!\n\nНа тарифе действует ограничение в 3 дня\n\nОграничение по трафику - 2гб',
|
||
'subscriptions_list': '📋 Список подписок в продаже:',
|
||
'your_balance': '💰 Ваш баланс: {balance:.2f} руб.',
|
||
'topup_balance': 'Пополнить баланс',
|
||
'payment_history': 'История платежей',
|
||
'topup_card': 'Пополнение картой',
|
||
'topup_support': 'Через саппорт',
|
||
'back': 'Назад',
|
||
'system_management': 'Управление системой',
|
||
'nodes_management': 'Управление нодами',
|
||
'system_users': 'Системные пользователи',
|
||
'system_statistics': 'Системная статистика',
|
||
'subscription_expired_message': '❌ Ваша подписка \'{name}\' истекла!\n\n🔄 Для возобновления доступа продлите подписку в разделе \'Мои подписки\'.\n\n💡 Подписку можно продлить в любой момент - срок действия будет увеличен с текущего момента.',
|
||
'subscription_expires_today': '⚠️ Срочно! Ваша подписка \'{name}\' истекает сегодня!\n\n🔄 Продлите её прямо сейчас в разделе \'Мои подписки\', чтобы не потерять доступ.\n\n⏰ У вас есть несколько часов до истечения!',
|
||
'subscription_expires_tomorrow': '⚠️ Внимание! Ваша подписка \'{name}\' истекает завтра!\n\n🔄 Чтобы не потерять доступ, продлите её сейчас в разделе \'Мои подписки\'.\n\n✨ При продлении срок действия будет увеличен с момента истечения.',
|
||
'subscription_expires_day_after_tomorrow': '⏰ Ваша подписка \'{name}\' истекает послезавтра ({days} дня)!\n\n🔄 Рекомендуем продлить её заранее в разделе \'Мои подписки\'.\n\n💰 Проверьте баланс - возможно, стоит пополнить его заранее.',
|
||
'subscription_expires_in_days': '⏳ Ваша подписка \'{name}\' истекает через {days} дн.!\n\n🔄 Продлить подписку можно в разделе \'Мои подписки\'.\n\n💡 Продление заранее увеличивает срок с момента истечения текущей подписки.',
|
||
'restart_nodes': 'Перезагрузить ноды',
|
||
'bulk_operations': 'Массовые операции',
|
||
'search_user': 'Поиск пользователя',
|
||
'user_details': 'Детали пользователя',
|
||
'reset_traffic': 'Сбросить трафик',
|
||
'disable_user': 'Отключить пользователя',
|
||
'enable_user': 'Включить пользователя',
|
||
'send_message': 'Отправить сообщение',
|
||
'send_to_user': 'Отправить пользователю',
|
||
'send_to_all': 'Отправить всем',
|
||
'enter_message_text': 'Введите текст сообщения:',
|
||
'enter_user_id_message': 'Введите Telegram ID пользователя:',
|
||
'message_sent': '✅ Сообщение отправлено',
|
||
'broadcast_sent': '✅ Рассылка завершена',
|
||
'broadcast_stats': 'Отправлено: {sent}, Ошибок: {errors}',
|
||
'change_language': 'Сменить язык',
|
||
'language_changed': '✅ Язык изменен',
|
||
'extend_subscription': 'Продлить',
|
||
'subscription_extended': '✅ Подписка продлена',
|
||
'extend_confirmation': 'Продлить подписку "{name}" на {days} дней за {price:.2f} руб.?',
|
||
'subscription_expires_soon': 'Подписка истекает через {days} дней',
|
||
'no_subscriptions': '❌ У вас нет активных подписок',
|
||
'subscription_info': '📋 Подписка: {name}\n💰 Цена: {price:.2f} руб.\n⏱ Длительность: {days} дней\n📊 Трафик: {traffic}\n\n{description}',
|
||
'unlimited_traffic': 'Безлимитный',
|
||
'gb_traffic': '{gb} ГБ',
|
||
'buy_subscription_btn': '🛒 Купить за {price:.2f} руб.',
|
||
'get_connection': '🔗 Получить подключение',
|
||
'subscription_expires': 'Истекает: {date}',
|
||
'subscription_expired': 'Истекла',
|
||
'subscription_active': 'Активна до: {date}',
|
||
'your_subscriptions': '👀 Список ваших подписок:',
|
||
'payment_created': '✅ Заявка на пополнение создана.\nОбратитесь к @{support} для оплаты.',
|
||
'enter_amount': '💰 Введите сумму для пополнения (руб.):',
|
||
'invalid_amount': '❌ Неверная сумма',
|
||
'payment_card_info': '💳 Для пополнения картой свяжитесь с @{support}',
|
||
'no_payments': '❌ История платежей пуста',
|
||
'payment_item': '{date}: {amount:.2f} руб. - {description} ({status})',
|
||
'enter_promocode': '🎁 Введите промокод:',
|
||
'promocode_success': '✅ Промокод активирован! Скидка: {discount}',
|
||
'promocode_not_found': '❌ Промокод не найден',
|
||
'promocode_expired': '❌ Промокод истек',
|
||
'promocode_used': '❌ Промокод уже использован',
|
||
'promocode_limit': '❌ Лимит использований исчерпан',
|
||
'referral_program': 'Реферальная программа',
|
||
'referral_conditions': 'Условия программы',
|
||
'referral_link': 'Ваша реферальная ссылка',
|
||
'referral_code': 'Ваш промокод',
|
||
'referral_stats': 'Статистика',
|
||
'total_referrals': 'Всего приглашено',
|
||
'active_referrals': 'Активных рефералов',
|
||
'total_earned': 'Заработано',
|
||
'my_referrals': 'Мои рефералы',
|
||
'referral_reward_referrer': 'За каждого приглашенного: 150₽',
|
||
'referral_reward_referred': 'Бонус новичку: 150₽ после пополнения на 300₽',
|
||
'referral_percentage': 'Процент с платежей: 25%',
|
||
'no_referrals': 'У вас пока нет рефералов',
|
||
'referral_welcome': 'Добро пожаловать по реферальной ссылке!',
|
||
'insufficient_balance': '❌ Недостаточно средств на балансе',
|
||
'subscription_purchased': '✅ Подписка успешно приобретена!',
|
||
'purchase_error': '❌ Ошибка при покупке подписки',
|
||
'support_message': '🎧 Для получения поддержки обратитесь к @{support}',
|
||
'admin_menu': '⚙️ Админ панель',
|
||
'manage_subscriptions': 'Управление подписками',
|
||
'manage_users': 'Управление пользователями',
|
||
'manage_balance': 'Управление балансом',
|
||
'manage_promocodes': 'Управление промокодами',
|
||
'statistics': 'Статистика',
|
||
'not_admin': '❌ У вас нет прав администратора',
|
||
'create_subscription': 'Создать подписку',
|
||
'enter_sub_name': 'Введите название подписки:',
|
||
'enter_sub_description': 'Введите описание подписки:',
|
||
'enter_sub_price': 'Введите цену подписки (руб.):',
|
||
'enter_sub_days': 'Введите длительность (дней):',
|
||
'enter_sub_traffic': 'Введите лимит трафика (ГБ, 0 для безлимита):',
|
||
'enter_squad_uuid': 'Введите UUID squad из панели:',
|
||
'subscription_created': '✅ Подписка создана',
|
||
'extend_subscription_btn': '🔄 Продлить подписку',
|
||
'my_subscriptions_btn': '📋 Мои подписки',
|
||
'buy_new_subscription_btn': '🛒 Купить новую подписку',
|
||
'restore_subscription_btn': '🔄 Восстановить подписку',
|
||
'user_list': 'Список пользователей:',
|
||
'user_item': 'ID: {id}, @{username}, Баланс: {balance:.2f} руб.',
|
||
'enter_user_id': 'Введите Telegram ID пользователя:',
|
||
'enter_balance_amount': 'Введите сумму для пополнения:',
|
||
'balance_added': '✅ Баланс пополнен',
|
||
'user_not_found': '❌ Пользователь не найден',
|
||
'create_promocode': 'Создать промокод',
|
||
'enter_promo_code': 'Введите код промокода:',
|
||
'enter_promo_discount': 'Введите размер скидки (руб.):',
|
||
'enter_promo_limit': 'Введите лимит использований:',
|
||
'promocode_created': '✅ Промокод создан',
|
||
'promocode_exists': '❌ Промокод уже существует',
|
||
'stats_info': '📊 Статистика:\n👥 Пользователей: {users}\n📋 Подписок: {subscriptions}\n💰 Выручка: {revenue:.2f} руб.',
|
||
'error_occurred': '❌ Произошла ошибка',
|
||
'try_again': 'Попробуйте еще раз',
|
||
'invalid_input': '❌ Неверный ввод',
|
||
'cancel': 'Отмена',
|
||
'connection_link': '🔗 Ссылка для подключения:\n\n`{link}`\n\nНажмите на ссылку чтобы скопировать',
|
||
'connection_error': '❌ Ошибка получения ссылки подключения',
|
||
'lucky_game': 'Игра удачи',
|
||
'lucky_game_title': '🎰 Проверь свою удачу!',
|
||
'lucky_game_description': 'Выберите число от 1 до {numbers} и попытайтесь угадать выигрышное!',
|
||
'lucky_game_reward': 'Награда за выигрыш: {reward}₽',
|
||
'lucky_game_rules': 'Правила игры',
|
||
'lucky_game_play': 'Играть!',
|
||
'lucky_game_history': 'История игр',
|
||
'lucky_game_stats': 'Ваша статистика',
|
||
'lucky_game_choose_number': 'Выберите число от 1 до {numbers}',
|
||
'lucky_game_winner': '🎉 ПОЗДРАВЛЯЕМ! ВЫ ВЫИГРАЛИ!',
|
||
'lucky_game_loser': '😔 Не повезло в этот раз...',
|
||
'lucky_game_your_number': 'Ваше число: {number}',
|
||
'lucky_game_winning_numbers': 'Выигрышные числа: {numbers}',
|
||
'lucky_game_reward_added': 'Награда {reward}₽ зачислена на баланс!',
|
||
'lucky_game_new_balance': 'Новый баланс: {balance}₽',
|
||
'lucky_game_try_tomorrow': 'Попробуйте завтра!',
|
||
'lucky_game_already_played': 'Вы уже играли сегодня! Приходите завтра.',
|
||
'lucky_game_come_back_in': 'Приходи через {time}',
|
||
'lucky_game_no_history': 'Вы еще не играли в игру удачи.',
|
||
'lucky_game_start_playing': 'Начните играть, чтобы увидеть историю!',
|
||
'lucky_game_games_played': 'Игр сыграно: {count}',
|
||
'lucky_game_wins': 'Выигрышей: {count}',
|
||
'lucky_game_total_won': 'Всего выиграно: {amount}₽',
|
||
'lucky_game_win_rate': 'Процент побед: {rate}%'
|
||
},
|
||
|
||
'en': {
|
||
'select_language': '🌍 Choose language / Выберите язык',
|
||
'language_selected': '🇺🇸 Language selected: English',
|
||
'main_menu': '📱 Main Menu',
|
||
'balance': 'Balance',
|
||
'my_subscriptions': 'My Subscriptions',
|
||
'buy_subscription': 'Buy Subscription',
|
||
'support': 'Support',
|
||
'promocode': 'Promocode',
|
||
'admin_panel': 'Admin Panel',
|
||
'change_language': 'Change Language',
|
||
'send_message': 'Send messsage',
|
||
'send_to_user': 'Send to user',
|
||
'send_to_all': 'Send to all',
|
||
'enter_user_id_message': 'Enter user id message',
|
||
'enter_message_text': 'Enter message text',
|
||
'trial_subscription': 'Trial subscription',
|
||
'system_management': 'System Management',
|
||
'nodes_management': 'Nodes Management',
|
||
'system_users': 'System Users',
|
||
'system_statistics': 'System Statistics',
|
||
'restart_nodes': 'Restart Nodes',
|
||
'bulk_operations': 'Bulk Operations',
|
||
'search_user': 'Search User',
|
||
'user_details': 'User Details',
|
||
'reset_traffic': 'Reset Traffic',
|
||
'disable_user': 'Disable User',
|
||
'enable_user': 'Enable User',
|
||
'your_balance': '💰 Your balance: ${balance:.2f}',
|
||
'topup_balance': 'Top up balance',
|
||
'payment_history': 'Payment history',
|
||
'topup_card': 'Card payment',
|
||
'topup_support': 'Through support',
|
||
'back': 'Back',
|
||
'no_subscriptions': '❌ You have no active subscriptions',
|
||
'subscription_info': '📋 Subscription: {name}\n💰 Price: ${price:.2f}\n⏱ Duration: {days} days\n📊 Traffic: {traffic}\n\n{description}',
|
||
'unlimited_traffic': 'Unlimited',
|
||
'gb_traffic': '{gb} GB',
|
||
'buy_subscription_btn': '🛒 Buy for ${price:.2f}',
|
||
'get_connection': '🔗 Get connection',
|
||
'subscription_expires': 'Expires: {date}',
|
||
'subscription_expired': 'Expired',
|
||
'subscription_active': 'Active until: {date}',
|
||
'subscription_expired_message': '❌ Your subscription \'{name}\' has expired!\n\nTo renew, go to \'My Subscriptions\'.\n\n💡 You can renew at any time - the term will be extended from the current moment.',
|
||
'subscription_expires_today': '⚠️ Urgent! Your subscription \'{name}\' expires today!\n\nRenew it now in \'My Subscriptions\' to keep access.\n\n⏰ You have a few hours left!',
|
||
'subscription_expires_tomorrow': '⚠️ Your subscription \'{name}\' expires tomorrow!\n\nDon\'t forget to renew it in \'My Subscriptions\'.\n\n✨ Renewal will extend the term from expiration date.',
|
||
'subscription_expires_day_after_tomorrow': '⏰ Your subscription \'{name}\' expires in {days} days!\n\nWe recommend renewing it in advance in \'My Subscriptions\'.\n\n💰 Check your balance - you might want to top it up.',
|
||
'subscription_expires_in_days': '⏳ Your subscription \'{name}\' expires in {days} days!\n\nYou can renew it in \'My Subscriptions\'.\n\n💡 Early renewal extends from current expiration date.',
|
||
'extend_subscription_btn': '🔄 Extend Subscription',
|
||
'my_subscriptions_btn': '📋 My Subscriptions',
|
||
'buy_new_subscription_btn': '🛒 Buy New Subscription',
|
||
'restore_subscription_btn': '🔄 Restore Subscription',
|
||
'payment_created': '✅ Top-up request created.\nContact @{support} for payment.',
|
||
'enter_amount': '💰 Enter amount to top up ($):',
|
||
'invalid_amount': '❌ Invalid amount',
|
||
'payment_card_info': '💳 For card payment contact @{support}',
|
||
'no_payments': '❌ Payment history is empty',
|
||
'payment_item': '{date}: ${amount:.2f} - {description} ({status})',
|
||
'referral_program': 'Referral Program',
|
||
'referral_conditions': 'Program Conditions',
|
||
'referral_link': 'Your referral link',
|
||
'referral_code': 'Your promo code',
|
||
'referral_stats': 'Statistics',
|
||
'total_referrals': 'Total invited',
|
||
'active_referrals': 'Active referrals',
|
||
'total_earned': 'Total earned',
|
||
'my_referrals': 'My referrals',
|
||
'referral_reward_referrer': 'For each invited: $150',
|
||
'referral_reward_referred': 'Newbie bonus: $150 after topping up $300',
|
||
'referral_percentage': 'Percentage from payments: 25%',
|
||
'no_referrals': 'You have no referrals yet',
|
||
'referral_welcome': 'Welcome via referral link!',
|
||
'enter_promocode': '🎁 Enter promocode:',
|
||
'promocode_success': '✅ Promocode activated! Discount: {discount}',
|
||
'promocode_not_found': '❌ Promocode not found',
|
||
'promocode_expired': '❌ Promocode expired',
|
||
'promocode_used': '❌ Promocode already used',
|
||
'promocode_limit': '❌ Usage limit reached',
|
||
'insufficient_balance': '❌ Insufficient balance',
|
||
'subscription_purchased': '✅ Subscription purchased successfully!',
|
||
'purchase_error': '❌ Error purchasing subscription',
|
||
'support_message': '🎧 For support contact @{support}',
|
||
'admin_menu': '⚙️ Admin Panel',
|
||
'manage_subscriptions': 'Manage Subscriptions',
|
||
'manage_users': 'Manage Users',
|
||
'manage_balance': 'Manage Balance',
|
||
'manage_promocodes': 'Manage Promocodes',
|
||
'statistics': 'Statistics',
|
||
'not_admin': '❌ You don\'t have admin rights',
|
||
'create_subscription': 'Create Subscription',
|
||
'enter_sub_name': 'Enter subscription name:',
|
||
'enter_sub_description': 'Enter subscription description:',
|
||
'enter_sub_price': 'Enter subscription price ($):',
|
||
'enter_sub_days': 'Enter duration (days):',
|
||
'enter_sub_traffic': 'Enter traffic limit (GB, 0 for unlimited):',
|
||
'enter_squad_uuid': 'Enter squad UUID from panel:',
|
||
'subscription_created': '✅ Subscription created',
|
||
'user_list': '👥 User list:',
|
||
'user_item': 'ID: {id}, @{username}, Balance: ${balance:.2f}',
|
||
'enter_user_id': 'Enter user Telegram ID:',
|
||
'enter_balance_amount': 'Enter amount to add:',
|
||
'balance_added': '✅ Balance added',
|
||
'user_not_found': '❌ User not found',
|
||
'create_promocode': 'Create Promocode',
|
||
'enter_promo_code': 'Enter promocode:',
|
||
'enter_promo_discount': 'Enter discount amount ($):',
|
||
'enter_promo_limit': 'Enter usage limit:',
|
||
'promocode_created': '✅ Promocode created',
|
||
'promocode_exists': '❌ Promocode already exists',
|
||
'stats_info': '📊 Statistics:\n👥 Users: {users}\n📋 Subscriptions: {subscriptions}\n💰 Revenue: ${revenue:.2f}',
|
||
'error_occurred': '❌ An error occurred',
|
||
'try_again': 'Try again',
|
||
'invalid_input': '❌ Invalid input',
|
||
'cancel': 'Cancel',
|
||
'connection_link': '🔗 Connection link:\n\n`{link}`\n\nClick the link to copy',
|
||
'connection_error': '❌ Error getting connection link',
|
||
'lucky_game': 'Lucky Game',
|
||
'lucky_game_title': '🎰 Test Your Luck!',
|
||
'lucky_game_description': 'Choose a number from 1 to {numbers} and try to guess the winning one!',
|
||
'lucky_game_reward': 'Winning reward: ${reward}',
|
||
'lucky_game_rules': 'Game Rules',
|
||
'lucky_game_play': 'Play!',
|
||
'lucky_game_history': 'Game History',
|
||
'lucky_game_stats': 'Your Statistics',
|
||
'lucky_game_choose_number': 'Choose a number from 1 to {numbers}',
|
||
'lucky_game_winner': '🎉 CONGRATULATIONS! YOU WON!',
|
||
'lucky_game_loser': '😔 Better luck next time...',
|
||
'lucky_game_your_number': 'Your number: {number}',
|
||
'lucky_game_winning_numbers': 'Winning numbers: {numbers}',
|
||
'lucky_game_reward_added': 'Reward ${reward} added to balance!',
|
||
'lucky_game_new_balance': 'New balance: ${balance}',
|
||
'lucky_game_try_tomorrow': 'Try again tomorrow!',
|
||
'lucky_game_already_played': 'You already played today! Come back tomorrow.',
|
||
'lucky_game_come_back_in': 'Come back in {time}',
|
||
'lucky_game_no_history': 'You haven\'t played the lucky game yet.',
|
||
'lucky_game_start_playing': 'Start playing to see history!',
|
||
'lucky_game_games_played': 'Games played: {count}',
|
||
'lucky_game_wins': 'Wins: {count}',
|
||
'lucky_game_total_won': 'Total won: ${amount}',
|
||
'lucky_game_win_rate': 'Win rate: {rate}%'
|
||
}
|
||
}
|
||
|
||
def t(key: str, lang: str = 'ru', **kwargs) -> str:
|
||
translation = TRANSLATIONS.get(lang, TRANSLATIONS['ru']).get(key, key)
|
||
if kwargs:
|
||
try:
|
||
return translation.format(**kwargs)
|
||
except KeyError:
|
||
return translation
|
||
return translation
|