480 lines
37 KiB
JSON
480 lines
37 KiB
JSON
{
|
||
"welcome": "Welcome, {user_name}!",
|
||
"channel_subscription_required": "To use the bot, join the channel and tap \"Check subscription\".",
|
||
"channel_subscription_join_button": "Open channel",
|
||
"channel_subscription_verify_button": "Check subscription",
|
||
"channel_subscription_check_failed": "Couldn't verify the subscription. Please try again later or contact support.",
|
||
"channel_subscription_verified_success": "✅ Subscription confirmed! You're good to go.",
|
||
"main_menu_greeting": "Hi, {user_name}! 👋\nWhat would you like to do?",
|
||
"menu_activate_trial_button": "🆓 Free Trial",
|
||
"menu_subscribe_inline": "🚀 Purchase",
|
||
"menu_my_subscription_inline": "🔐 My Subscription",
|
||
"no_subscription_options_available": "Subscription issuance is not configured by the bot administrator",
|
||
"menu_referral_inline": "🎁 Referrals",
|
||
"referral_no_bonuses_configured": "Sorry, the referral program is currently disabled",
|
||
"menu_apply_promo_button": "🎟 Promo Code",
|
||
"menu_language_settings_inline": "🌐 Language",
|
||
"menu_server_status_button": "📊 Status",
|
||
"menu_support_button": "💬 Support",
|
||
"menu_terms_button": "📄 Terms of Service",
|
||
"back_to_main_menu_button": "⬅️ Back",
|
||
"choose_language": "Choose language:",
|
||
"language_set_alert": "Language changed!",
|
||
"error_occurred_try_again": "An error occurred, please try again.",
|
||
"error_try_again": "Please try again.",
|
||
"error_displaying_menu": "Error displaying menu.",
|
||
"main_menu_unknown_action": "Unknown action.",
|
||
"select_subscription_period": "Select subscription period:",
|
||
"subscribe_for_months_button": "{months} mo. - {price} {currency_symbol}",
|
||
"choose_payment_method": "Choose payment method:",
|
||
"pay_button": "💳 Pay",
|
||
"pay_with_yookassa_button": "💳 YooKassa",
|
||
"yookassa_autopay_flow_prompt": "Auto-renew is enabled. Choose how you'd like to pay:",
|
||
"yookassa_autopay_pay_saved_card_button": "💳 Pay with saved card",
|
||
"yookassa_autopay_pay_new_card_button": "➕ Pay with new card",
|
||
"yookassa_autopay_choose_saved_card": "Choose a saved card to charge:",
|
||
"yookassa_autopay_no_saved_cards": "No saved cards found. Pay with a new card or link one in Payment Methods.",
|
||
"back_to_autopay_method_choice_button": "⬅️ Back",
|
||
"yookassa_autopay_charge_initiated": "Charge request sent to the selected card. We'll notify you once the payment completes.",
|
||
"pay_with_sbp_button": "📱 SBP",
|
||
"back_to_payment_methods_button": "⬅️ Back",
|
||
"pay_with_cryptopay_button": "💎 CryptoBot",
|
||
"pay_with_tribute_button": "❤️ Tribute",
|
||
"pay_with_stars_button": "🌟 Telegram Stars",
|
||
"connect_button": "🔗 Connect",
|
||
"cancel_button": "❌ Cancel",
|
||
|
||
"devices_button": "📱 My Devices ({current_devices}/{max_devices})",
|
||
"my_devices_details": "📱 <b>My Devices ({current_devices}/{max_devices})</b>\n\n{devices}\n\nYou can disconnect a device by selecting it from the list below.\n<blockquote><i>Note: If you disconnect a device, it will be automatically connected again when you use it next. Before deleting, make sure you have deleted the subscription from the application.</i></blockquote>",
|
||
"no_devices_details_found_message": "📱 <b>My Devices</b>\n\nYou don't have any devices yet.\nYou have {max_devices} devices available. You can connect them by clicking the \"🔗 Connect\" button in the subscription menu.",
|
||
"device_details": "{index}) <b>{device_model} ({platform} {os_version})</b>\nDate connected: <b>{created_at_str}</b>\nUser Agent: <b>{user_agent}</b>\nHWID: <code>{hwid}</code>",
|
||
"disconnect_device_button": "🚫 Disconnect {hwid} ({index})",
|
||
"device_disconnected": "Device disconnected successfully.",
|
||
"no_devices_found": "Error loading device list.",
|
||
"devices_unlimited_label": "Unlimited",
|
||
"my_devices_feature_disabled": "The My Devices section is currently unavailable.",
|
||
|
||
"payment_description_subscription": "Subscription payment for {months} mo.",
|
||
"payment_link_message": "To pay for {months} mo. subscription, click the button below:",
|
||
"free_kassa_order_info": "Order #{order_id} from {date}",
|
||
"payment_invoice_sent_message": "Telegram has sent the invoice above. Complete the payment or pick another method below.",
|
||
"payment_successful_error_details": "✅ Payment succeeded, but an error occurred displaying details. Your subscription is active. Contact support if anything is wrong.",
|
||
"payment_successful_full": "✅ Payment successful!\nYour {months}-month subscription is active until {end_date}.\n\nConnection key:\n<code>{config_link}</code>\n\nTo connect, open the link and follow the instructions 👇",
|
||
"payment_successful_with_referral_bonus_full": "✅ Payment successful!\nYour {months}-month subscription (base end date: {base_end_date}) has been extended by {bonus_days} bonus days for referral from {inviter_name} and is now active until {final_end_date}.\n\nConnection key:\n<code>{config_link}</code>\n\nTo connect, open the link and follow the instructions 👇",
|
||
"payment_failed": "❌ Payment failed or was cancelled. Please try again or contact support.",
|
||
"config_link_not_available": "not available, contact support",
|
||
"traffic_unlimited": "Unlimited",
|
||
"promo_code_prompt": "Please enter your promo code:",
|
||
"promo_code_not_found": "Promo code <code>{code}</code> not found, expired, or already used the maximum number of times.",
|
||
"promo_code_already_used_by_user": "You have already used promo code <code>{code}</code>.",
|
||
"promo_code_applied_success_full": "✅ Promo code applied successfully!\nSubscription active until {end_date}.\n\nConnection key:\n<code>{config_link}</code>\n\nTo connect, open the link and follow the instructions 👇",
|
||
"error_applying_promo_bonus": "Failed to apply promo bonus. Please try again later or contact support.",
|
||
"promo_input_cancelled_short": "Promo code entry cancelled.",
|
||
"trial_feature_disabled": "Free trial is currently unavailable.",
|
||
"trial_already_had_subscription_or_trial": "You have already used a free trial or had a paid subscription. Free trial is available only once for new users.",
|
||
"trial_confirm_activate_button": "✅ Activate!",
|
||
"trial_activated_alert": "Trial activated!",
|
||
"trial_activated_details_message": "✅ Trial activated!\nYour {days}-day trial is active until {end_date}.\n\nConnection key:\n<code>{config_link}</code>\n\nTo connect, open the link and follow the instructions 👇",
|
||
"yes_button": "Yes",
|
||
"no_button": "No",
|
||
"referral_program_info_new": "🎁 <b>Referral Program</b>\n\n📊 <b>Your stats:</b>\n👥 Friends invited: <b>{invited_count}</b>\n💳 Purchased subscription: <b>{purchased_count}</b>\n\n🔗 Your link:\n<code>{referral_link}</code>\n\n💰 <b>Invitation bonuses:</b>\n{bonus_details}\n\n📢 Share the link with friends and get bonuses!",
|
||
"referral_bonus_per_period": "\n\n🎁 For a friend's {months}-month subscription:\n ➢ You: <b>{inviter_bonus_days} days</b>\n ➢ Friend: <b>{referee_bonus_days} days</b>",
|
||
"referral_share_message_button": "📩 Message for friend",
|
||
"referral_friend_message": "🚀 Hey! Try this VPN - it's fast, reliable and affordable!\n\n🎁 Use my link to get bonus days with your subscription!\n\n{referral_link}",
|
||
"friend_placeholder": "friend",
|
||
"referral_bonus_inviter_notification_extended": "🎉 Congrats! Your friend {referee_name} paid for a subscription. You received {days} bonus days! Your subscription is now active until {new_end_date}.",
|
||
"referral_bonus_inviter_notification_new_sub": "🎉 Congrats! Your friend {referee_name} paid for a subscription. You received a {days}-day bonus subscription! It is active until {new_end_date}.",
|
||
"user_is_banned": "🚫 Your account is banned. Please contact support.",
|
||
"admin_panel_title": "Admin Panel",
|
||
"admin_stats_button": "📊 Statistics",
|
||
"admin_broadcast_button": "📢 Broadcast",
|
||
"admin_create_promo_button": "🎁 Create Promo",
|
||
"admin_create_bulk_promo_button": "📦 Bulk Create",
|
||
"admin_ban_user_button": "🚫 Ban",
|
||
"admin_unban_user_button": "✅ Unban",
|
||
"admin_view_banned_users_button": "📜 Ban List",
|
||
"admin_view_logs_menu_button": "📄 Logs",
|
||
"admin_sync_panel_button": "🔄 Sync",
|
||
"admin_unknown_action": "Unknown admin action.",
|
||
"admin_stats_and_monitoring_section": "📊 Statistics",
|
||
"admin_user_management_section": "👥 Users",
|
||
"admin_promo_marketing_section": "🎁 Promos",
|
||
"admin_system_functions_section": "⚙️ System",
|
||
"admin_ban_management_section": "🚫 Bans",
|
||
"admin_users_search_button": "🔍 Search",
|
||
"admin_users_management_button": "👥 User List",
|
||
"admin_users_list_header": "👥 <b>User List</b>\n\nPage {current}/{total} ({total_users} users)",
|
||
"admin_user_back_to_list_button": "⬅️ Back to List",
|
||
"back_to_user_management_button": "⬅️ To Users",
|
||
"back_to_admin_panel_button": "⬅️ To Admin",
|
||
"admin_stats_header": "📊 Bot Statistics",
|
||
"admin_enhanced_users_stats_header": "Users",
|
||
"admin_financial_stats_header": "Financial Statistics",
|
||
"admin_stats_recent_payments_header": "Recent Payments:",
|
||
"admin_stats_payment_item": "{status_emoji} {amount} {currency} from {user_info} ({p_status}) [{p_date}]",
|
||
"admin_stats_no_payments_found": "No payments found yet.",
|
||
"admin_view_payments_button": "💰 Payments",
|
||
"admin_payments_header": "💰 <b>All Payments</b>",
|
||
"admin_no_payments_found": "No payments found.",
|
||
"admin_export_payments_csv": "📊 Export CSV",
|
||
"admin_refresh_payments": "🔄 Refresh",
|
||
"admin_no_payments_to_export": "No payments to export.",
|
||
"admin_payments_export_success": "📊 Payments export completed!\nTotal records: {count}",
|
||
"admin_export_sent": "File sent!",
|
||
"admin_csv_payment_id": "ID",
|
||
"admin_csv_user_id": "User ID",
|
||
"admin_csv_username": "Username",
|
||
"admin_csv_first_name": "First Name",
|
||
"admin_csv_amount": "Amount",
|
||
"admin_csv_currency": "Currency",
|
||
"admin_csv_provider": "Provider",
|
||
"admin_csv_status": "Status",
|
||
"admin_csv_description": "Description",
|
||
"admin_csv_months": "Months",
|
||
"admin_csv_created_at": "Created At",
|
||
"admin_csv_provider_payment_id": "Provider Payment ID",
|
||
"admin_stats_last_sync_header": "Last Panel Sync:",
|
||
"admin_stats_sync_time": "Time",
|
||
"admin_stats_sync_status": "Status",
|
||
"admin_stats_sync_users_processed": "Users Processed",
|
||
"admin_stats_sync_subs_synced": "Subscriptions Synced",
|
||
"admin_stats_sync_details_label": "Details",
|
||
"admin_sync_status_never_run": "Panel sync never run.",
|
||
"admin_broadcast_enter_message": "Enter the broadcast message (HTML supported):",
|
||
"admin_broadcast_confirm_prompt_short": "The message above will be sent. Confirm?",
|
||
"broadcast_target_all_button": "👥 All",
|
||
"broadcast_target_active_button": "✅ Active",
|
||
"broadcast_target_inactive_button": "⌛ Inactive",
|
||
"confirm_broadcast_send_button": "✅ Send",
|
||
"cancel_broadcast_button": "❌ Cancel",
|
||
"admin_broadcast_sending_started": "Starting broadcast...",
|
||
"admin_broadcast_error_no_message": "Error: no message to broadcast.",
|
||
"admin_broadcast_error_no_message_alert": "Broadcast message is empty!",
|
||
"admin_broadcast_cancelled": "Broadcast cancelled.",
|
||
"admin_broadcast_cancelled_alert": "Broadcast cancelled!",
|
||
"admin_broadcast_cancelled_nav_back": "Broadcast cancelled. You are returned to the admin panel.",
|
||
"broadcast_queue_result": "🚀 Broadcast queued!\n📤 Enqueued: {sent_count}\n❌ Errors: {failed_count}\n\n📊 Queue Status:\n👥 User queue: {user_queue_size} messages\n📢 Group queue: {group_queue_size} messages\n\nℹ️ Messages will be sent automatically within Telegram limits.",
|
||
"admin_promo_invalid_code_format": "Code must be 3–30 alphanumeric characters.",
|
||
"admin_promo_invalid_bonus_days": "Bonus days must be a positive number.",
|
||
"admin_promo_invalid_max_activations": "Max activations must be a positive number.",
|
||
"admin_promo_invalid_validity_days": "Validity period (in days) must be a positive number.",
|
||
"admin_promo_created_success": "✅ Promo code <code>{code}</code> created successfully!\nBonus: {bonus_days} days\nMax uses: {max_activations}\nValid until: {valid_until_str}.",
|
||
"admin_promo_set_validity_days": "⏰ Set validity (days)",
|
||
"admin_back_to_panel": "⬅️ Back to panel",
|
||
"admin_promo_unlimited": "♾️ Unlimited",
|
||
"admin_bulk_promo_created_title": "📦 Bulk creation completed",
|
||
"admin_bulk_promo_created_stats": "📊 Created: <b>{created}</b> of <b>{total}</b>",
|
||
"admin_bulk_promo_settings": "🎁 Bonus days: <b>{bonus_days}</b>\n📊 Max activations: <b>{max_activations}</b>\n⏰ Validity: <b>{validity}</b>",
|
||
"admin_promo_list_page_info": "Page {current}/{total} ({count} promo codes)",
|
||
"admin_queue_status_button": "📊 Queue Status",
|
||
"admin_queue_status_title": "📊 Message Queue Status",
|
||
"admin_queue_status_info": "📤 <b>Message Queues:</b>\n\n👥 <b>Users (25 msg/sec):</b>\n 📋 In queue: {user_queue_size}\n 🔄 Processing: {user_processing}\n 📈 Sent per minute: {user_recent}\n\n📢 <b>Groups/channels (15 msg/min):</b>\n 📋 In queue: {group_queue_size}\n 🔄 Processing: {group_processing}\n 📈 Sent per minute: {group_recent}",
|
||
"admin_active_promos_list_header": "Active Promo Codes:",
|
||
"admin_no_active_promos": "No active promo codes.",
|
||
"admin_promo_valid_indefinitely": "indefinite",
|
||
"admin_promo_edit_button": "✏️ Edit",
|
||
"admin_promo_delete_button": "🗑 Delete",
|
||
"admin_promo_deleted_success": "Promo {code} deleted.",
|
||
"admin_promo_not_found": "Promo not found.",
|
||
"admin_promo_export_csv_button": "📄 Export to CSV",
|
||
"admin_promo_export_caption": "📄 Activations for promo code {code}",
|
||
"admin_promo_export_all_generating": "📄 Generating CSV...",
|
||
"admin_promo_export_all_caption": "📄 Export of all promo codes\n📊 Total: {count} promo codes",
|
||
"admin_promo_csv_code": "Code",
|
||
"admin_promo_csv_bonus_days": "Bonus Days",
|
||
"admin_promo_csv_max_activations": "Max Activations",
|
||
"admin_promo_csv_current_activations": "Current Activations",
|
||
"admin_promo_csv_status": "Status",
|
||
"admin_promo_csv_is_active": "Active",
|
||
"admin_promo_csv_valid_until": "Valid Until",
|
||
"admin_promo_csv_created_at": "Created",
|
||
"admin_promo_csv_created_by_admin_id": "Created By (Admin ID)",
|
||
"csv_yes": "Yes",
|
||
"csv_no": "No",
|
||
"admin_promo_edit_select_field": "Select a field to edit:",
|
||
"admin_promo_prompt_bonus_days": "Enter the new number of bonus days:",
|
||
"admin_promo_prompt_max_activations": "Enter the new maximum number of activations:",
|
||
"admin_promo_prompt_validity_days": "Enter the new validity period in days (0 for indefinite):",
|
||
"admin_promo_edit_success": "Promo code updated successfully.",
|
||
"admin_promo_invalid_input": "Invalid input, please try again.",
|
||
"admin_promo_edit_bonus_days": "🎁 Bonus Days",
|
||
"admin_promo_edit_max_activations": "🔢 Max Activations",
|
||
"admin_promo_edit_validity": "⏰ Validity",
|
||
"admin_ban_user_prompt": "Enter user ID or @username to ban:",
|
||
"admin_user_already_banned": "User {user_id_or_username} is already banned.",
|
||
"admin_unban_user_prompt": "Enter user ID or @username to unban:",
|
||
"admin_user_not_banned": "⚠️ User is not banned",
|
||
"admin_banned_user_button_text": "{user_display} (ID: {user_id})",
|
||
"prev_page_button": "⬅️ Prev.",
|
||
"next_page_button": "Next ➡️",
|
||
"admin_user_card_title": "User Card",
|
||
"user_card_ban_button": "🚫 Ban",
|
||
"user_card_unban_button": "✅ Unban",
|
||
"user_card_open_profile_button": "👤 Open profile",
|
||
"user_card_open_referrer_profile_button": "👤 Referrer profile",
|
||
"user_card_back_to_banned_list_button": "⬅️ Back to Ban List",
|
||
"admin_logs_menu_title": "Logs Menu:",
|
||
"admin_view_all_logs_button": "📜 All Message Logs",
|
||
"admin_view_user_logs_prompt_button": "👤 User Logs",
|
||
"admin_export_logs_csv_button": "📄 Export to CSV",
|
||
"admin_no_logs_found": "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}",
|
||
"admin_prompt_for_user_id_or_username_logs": "Enter user ID or @username to view logs:",
|
||
"admin_log_user_not_found": "User \"{input}\" not found in bot database.",
|
||
"sync_started_simple": "🔄 Starting synchronization...",
|
||
"sync_success_simple": "✅ Synchronization completed successfully",
|
||
"sync_failed_simple": "❌ Synchronization failed",
|
||
"sync_errors_simple": "⚠️ Synchronization completed with errors ({errors_count} errors)",
|
||
"sync_critical_error": "❌ Critical synchronization error",
|
||
"admin_sync_initiated_from_panel": "Sync initiated...",
|
||
"admin_broadcast_invalid_html": "❌ Invalid HTML in message. Please send valid HTML (Telegram-supported tags) or remove tags.",
|
||
"error_displaying_logs_too_long": "Error: logs too long to display in one message. Try viewing logs for a specific user.",
|
||
"error_displaying_statistics": "Error displaying statistics.",
|
||
"subscription_72h_notification": "👋 Hi, {user_name}!\n\n⏳ Your VPN subscription expires in 3 days — {end_date}.\n\nPlease renew it using the button below.",
|
||
"subscription_48h_notification": "👋 Hi, {user_name}!\n\n⏳ Your VPN subscription expires in 2 days — {end_date}.\n\nPlease renew it using the button below.",
|
||
"subscription_24h_notification": "👋 Hi, {user_name}!\n\n⏳ Your VPN subscription expires in 1 day — {end_date}.\n\nPlease renew it using the button below.",
|
||
"subscription_expired_notification": "👋 Hi, {user_name}!\n\n⛔ Your VPN subscription expired on {end_date}.\n\nPlease renew it using the button below.",
|
||
"subscription_expired_yesterday_notification": "👋 Hi, {user_name}!\n\n⏳ Your VPN subscription expired yesterday ({end_date}).\n\nPlease renew it using the button below.",
|
||
"autorenew_48h_charge_tomorrow_notice": "🔔 Reminder\n\nTomorrow an automatic charge will occur to renew your subscription. If you don't want auto-renew, disable it using the button below.",
|
||
"autorenew_confirm_enable": "🔄 Enable auto-renew? An automatic charge will be attempted before your subscription ends.",
|
||
"autorenew_confirm_disable": "🛑 Disable auto-renew? No further automatic charges will occur.",
|
||
"tribute_subscription_cancelled": "🚨 <b>Subscription Cancelled</b>\n\nYour Tribute subscription has been cancelled. You have 24 hours to restore access, after which the subscription will be blocked.\n\nTo renew your subscription, press the button below.",
|
||
"tribute_auto_renewal": "🔄 <b>Subscription Auto-Renewed</b>\n\nYour Tribute subscription has been automatically renewed for {months} months.\nNew expiration date: {end_date}",
|
||
"yookassa_auto_renewal": "🔄 <b>Subscription Auto-Renewed</b>\n\nYour subscription was automatically renewed for {months} month(s).\nNew expiration date: {end_date}",
|
||
"admin_user_management_prompt": "👤 User Management\n\nEnter user ID or @username to search:",
|
||
"admin_user_subscription_info": "Subscription Information:",
|
||
"admin_user_reset_trial_button": "🔄 Reset Trial",
|
||
"admin_user_add_subscription_button": "➕ Add Days",
|
||
"admin_user_toggle_ban_button": "🚫 Block/Unblock",
|
||
"admin_user_send_message_button": "✉️ Send Message",
|
||
"admin_user_view_logs_button": "📜 User Actions",
|
||
"admin_user_refresh_button": "🔄 Refresh",
|
||
"admin_user_delete_button": "❌ Delete User",
|
||
"admin_user_delete_not_allowed": "❌ You are not permitted to delete users.",
|
||
"admin_user_delete_confirmation_prompt": "⚠️ You are about to delete user {user_id} completely.\n\nSend the exact Telegram ID of this user to confirm.\nAny other reply will cancel the operation.",
|
||
"admin_user_delete_state_missing": "⚠️ No active delete operation. Start again.",
|
||
"admin_user_delete_cancelled": "Deletion cancelled.",
|
||
"admin_user_delete_mismatch": "⚠️ ID mismatch. Deletion aborted.",
|
||
"admin_user_delete_already_removed": "ℹ️ The user is already removed.",
|
||
"admin_user_delete_panel_error": "❌ Failed to remove the user from the panel. Operation aborted.",
|
||
"admin_user_delete_success": "✅ User {user_id} was removed from the bot and the panel.",
|
||
"admin_user_delete_error": "❌ Unable to delete the user. Please try again later.",
|
||
"admin_user_search_new_button": "🔍 Find Another",
|
||
"admin_user_view_all_logs_button": "📋 All Actions",
|
||
"admin_user_back_to_card_button": "🔙 Back to Card",
|
||
"admin_user_recent_actions_title": "📜 Recent actions of user {user_id}:",
|
||
"admin_user_not_found": "❌ User not found: {input}",
|
||
"admin_user_not_found_action": "User not found",
|
||
"admin_user_card_error": "❌ Error displaying user card",
|
||
"admin_user_trial_reset_success": "✅ Trial reset! User can activate trial again.",
|
||
"admin_user_trial_reset_error": "❌ Error resetting trial",
|
||
"admin_user_add_subscription_prompt": "➕ Adding subscription days for user {user_id}\n\nEnter number of days to add:",
|
||
"admin_user_invalid_days": "❌ Invalid number of days. Enter number from 1 to 3650.",
|
||
"admin_user_subscription_added_success": "✅ Successfully added {days} days to user {user_id}",
|
||
"admin_user_subscription_added_error": "❌ Error adding subscription days",
|
||
"admin_panel_user_creation_failed": "❌ Failed to create or link panel user for ID {user_id}. Manual intervention required.",
|
||
"admin_user_ban_toggle_success": "✅ User {status}",
|
||
"admin_user_ban_toggle_error": "❌ Error changing ban status",
|
||
"admin_user_ban_success": "✅ User {input} has been banned",
|
||
"admin_user_unban_success": "✅ User {input} has been unbanned",
|
||
"admin_user_ban_error": "❌ Error banning user",
|
||
"admin_user_unban_error": "❌ Error unbanning user",
|
||
"admin_user_send_message_prompt": "✉️ Sending message to user {user_id}\n\nEnter message text:",
|
||
"admin_user_message_too_long": "❌ Message too long (maximum 4000 characters)",
|
||
"admin_user_message_sent_success": "✅ Message sent to user {user_id}",
|
||
"admin_user_message_sent_error": "❌ Error sending message",
|
||
"admin_user_no_logs": "📜 User has no actions",
|
||
"admin_user_logs_error": "❌ Error loading user actions",
|
||
"admin_direct_message_signature": "\n\n---\n💬 Message from administrator",
|
||
"inline_user_stats_message": "👥 <b>User Statistics</b>\n\n📊 Total: <b>{total}</b>\n📈 Active today: <b>{active_today}</b>\n💳 With paid subscription: <b>{paid}</b>\n🆓 On trial period: <b>{trial}</b>\n😴 Inactive: <b>{inactive}</b>\n🚫 Banned: <b>{banned}</b>\n🎁 Via referral program: <b>{referral}</b>",
|
||
"inline_user_stats_description": "Total: {total}, Paid: {active}",
|
||
"inline_admin_user_stats_title": "👥 User Statistics",
|
||
"inline_financial_stats_message": "💰 <b>Financial Statistics</b>\n\n📅 Today: <b>{today:.2f} RUB</b>\n ({today_count} payments)\n📅 Week: <b>{week:.2f} RUB</b>\n📅 Month: <b>{month:.2f} RUB</b>\n🏆 All time: <b>{all_time:.2f} RUB</b>",
|
||
"inline_admin_financial_stats_title": "💰 Financial Statistics",
|
||
"inline_system_stats_message": "🖥 <b>Panel Statistics</b>\n\n🟢 Online: <b>{online}</b>\n📊 Active: <b>{active}</b>\n🔴 Disabled: <b>{disabled}</b>\n⏰ Expired: <b>{expired}</b>\n⚠️ Limited: <b>{limited}</b>\n👥 Total users: <b>{total}</b>\n💾 RAM Usage: <b>{memory:.1f}%</b>\n📊 Week traffic: <b>{week_traffic}</b>\n📊 Month traffic: <b>{month_traffic}</b>\n🔗 Active nodes: <b>{active_nodes}/{total_nodes}</b>",
|
||
"inline_admin_system_stats_title": "🖥 System Statistics",
|
||
"log_referral_suffix": " (referral from {referrer_link})",
|
||
"log_open_profile_link": "👤 Open profile",
|
||
"log_open_referrer_profile_button": "👤 Referrer profile",
|
||
"log_new_user_registration": "👤 <b>New User</b>\n\n🆔 ID: <code>{user_id}</code>\n👤 Name: {user_display}{referral_text}\n📅 Time: {timestamp}",
|
||
"log_payment_received": "{provider_emoji} <b>Payment Received</b>\n\n👤 User: {user_display}\n💰 Amount: <b>{amount} {currency}</b>\n📅 Period: <b>{months} mo.</b>\n🏦 Provider: {payment_provider}\n🕐 Time: {timestamp}",
|
||
"log_promo_activation": "🎁 <b>Promo Code Activated</b>\n\n👤 User: {user_display}\n🏷 Code: <code>{promo_code}</code>\n🎯 Bonus: <b>+{bonus_days}d</b>\n🕐 Time: {timestamp}",
|
||
"log_trial_activation": "🆓 <b>Trial Activated</b>\n\n👤 User: {user_display}\n⏰ Valid until: <b>{end_date}</b>\n🕐 Time: {timestamp}",
|
||
"log_panel_sync": "{status_emoji} <b>Panel Synchronization</b>\n\n📊 Status: <b>{status}</b>\n👥 Users processed: <b>{users_processed}</b>\n📋 Subscriptions synced: <b>{subs_synced}</b>\n🕐 Time: {timestamp}\n\n📝 Details:\n{details}",
|
||
"log_suspicious_promo": "⚠️ <b>Suspicious Promo Code Attempt</b>\n\n👤 User: {user_display}\n🆔 ID: <code>{user_id}</code>\n📝 Input: <pre>{suspicious_input}</pre>\n🕐 Time: {timestamp}",
|
||
"admin_logs_csv_export_started": "📄 Starting log export to CSV...",
|
||
"admin_logs_csv_export_success": "✅ Logs exported! File attached above.",
|
||
"admin_user_logs_title": "Logs for {user_display} (page {current_page}/{total_pages}):",
|
||
"admin_all_logs_title": "All Logs (page {current_page}/{total_pages}):",
|
||
"admin_csv_header_log_id": "Log ID",
|
||
"admin_csv_header_timestamp": "Timestamp",
|
||
"admin_csv_header_user_id": "User ID",
|
||
"admin_csv_header_telegram_username": "Username",
|
||
"admin_csv_header_telegram_first_name": "First Name",
|
||
"admin_csv_header_event_type": "Event Type",
|
||
"admin_csv_header_content": "Content",
|
||
"admin_csv_header_is_admin_event": "Admin Event",
|
||
"admin_csv_header_target_user_id": "Target User ID",
|
||
"admin_csv_header_raw_update_preview": "Update Preview",
|
||
"admin_banned_users_empty": "📋 Banned Users\n\nList is empty",
|
||
"admin_banned_users_list": "📋 Banned Users ({count}):\n\n{users}",
|
||
"admin_panel_stats_header": "Panel Statistics",
|
||
"admin_bulk_promo_step1_quantity": "📦 <b>Bulk Promo Code Creation</b>\n\n<b>Step 1 of 4:</b> Quantity\n\nEnter the number of promo codes to create (1-1000):",
|
||
"admin_bulk_promo_step2_bonus_days": "📦 <b>Bulk Promo Code Creation</b>\n\n<b>Step 2 of 4:</b> Bonus Days\n\nQuantity: <b>{quantity}</b>\n\nEnter the number of bonus days (1-365):",
|
||
"admin_bulk_promo_step3_max_activations": "📦 <b>Bulk Promo Code Creation</b>\n\n<b>Step 3 of 4:</b> Max Activations\n\nQuantity: <b>{quantity}</b>\nBonus days: <b>{bonus_days}</b>\n\nEnter the maximum number of activations for each promo code (1-10000):",
|
||
"admin_bulk_promo_step4_validity": "📦 <b>Bulk Promo Code Creation</b>\n\n<b>Step 4 of 4:</b> Validity Period\n\nQuantity: <b>{quantity}</b>\nBonus days: <b>{bonus_days}</b>\nMax activations: <b>{max_activations}</b>\n\nChoose the validity period for promo codes:",
|
||
"admin_bulk_promo_invalid_quantity": "❌ Quantity must be between 1 and 1000",
|
||
"admin_bulk_promo_enter_validity_days": "⏰ Enter the number of validity days for promo codes (1-365):",
|
||
"admin_bulk_promo_creating": "⏳ Creating {quantity} promo codes...",
|
||
"admin_promo_step1_code": "🎟 <b>Create Promo Code</b>\n\n<b>Step 1 of 4:</b> Promo Code\n\nEnter promo code (3-30 characters, letters and numbers only):",
|
||
"admin_promo_step2_bonus_days": "🎟 <b>Create Promo Code</b>\n\n<b>Step 2 of 4:</b> Bonus Days\n\nCode: <b>{code}</b>\n\nEnter the number of bonus days (1-365):",
|
||
"admin_promo_step3_max_activations": "🎟 <b>Create Promo Code</b>\n\n<b>Step 3 of 4:</b> Max Activations\n\nCode: <b>{code}</b>\nBonus days: <b>{bonus_days}</b>\n\nEnter the maximum number of activations (1-10000):",
|
||
"admin_promo_step4_validity": "🎟 <b>Create Promo Code</b>\n\n<b>Step 4 of 4:</b> Validity Period\n\nCode: <b>{code}</b>\nBonus days: <b>{bonus_days}</b>\nMax activations: <b>{max_activations}</b>\n\nChoose the validity period for the promo code:",
|
||
"admin_promo_code_already_exists": "❌ A promo code with this code already exists",
|
||
"admin_promo_unlimited_validity": "♾️ Unlimited",
|
||
"admin_promo_enter_validity_days": "⏰ Enter the number of validity days for the promo code (1-365):",
|
||
"admin_user_id_label": "🆔 <b>ID:</b>",
|
||
"admin_user_name_label": "👤 <b>Name:</b>",
|
||
"admin_user_username_label": "📱 <b>Username:</b>",
|
||
"admin_user_language_label": "🌍 <b>Language:</b>",
|
||
"admin_user_registration_label": "📅 <b>Registration:</b>",
|
||
"admin_user_status_label": "🛡 <b>Status:</b>",
|
||
"admin_user_referral_label": "🎁 <b>Referred by:</b>",
|
||
"admin_user_panel_uuid_label": "🔗 <b>Panel UUID:</b>",
|
||
"admin_user_panel_status_label": "📊 <b>Panel Status:</b>",
|
||
"admin_user_traffic_label": "📊 <b>Traffic:</b>",
|
||
"admin_user_subscription_label": "💼 <b>Subscription:</b>",
|
||
"admin_user_trial_label": "🏡 <b>Trial:</b>",
|
||
"admin_user_status_banned": "🚫 Banned",
|
||
"admin_user_status_active": "✅ Active",
|
||
"admin_user_trial_used": "Used",
|
||
"admin_user_trial_not_used": "Not used",
|
||
"admin_user_ban_action_banned": "banned",
|
||
"admin_user_ban_action_unbanned": "unbanned",
|
||
"admin_user_na_value": "N/A",
|
||
"admin_user_subscription_none": "No active subscription",
|
||
"admin_user_actions_count_label": "📜 <b>Total actions:</b>",
|
||
"admin_user_total_paid_label": "💰 <b>Total Paid:</b>",
|
||
"admin_user_referral_revenue_label": "💸 <b>Referral Revenue:</b>",
|
||
"admin_user_invited_friends_label": "👥 <b>Friends invited:</b>",
|
||
"admin_user_ref_purchased_label": "💳 <b>Purchased subscription:</b>",
|
||
"admin_user_subscription_active_until": "⏰ <b>Active until:</b>",
|
||
"admin_user_subscription_error": "Loading error",
|
||
"admin_promo_management_button": "🎟 Promo Management",
|
||
"admin_promo_management_title": "🎟 <b>Promo Code Management</b>\n\nSelect a promo code for detailed view:",
|
||
"admin_promo_management_empty": "📭 No promo codes available",
|
||
"admin_promo_card_title": "🎟 <b>Promo Code: {code}</b>",
|
||
"admin_promo_card_bonus_days": "🎁 Bonus days: <b>{days}</b>",
|
||
"admin_promo_card_activations": "🔢 Activations: <b>{current}/{max}</b>",
|
||
"admin_promo_card_validity": "⏰ Valid until: <b>{validity}</b>",
|
||
"admin_promo_card_status": "📊 Status: <b>{status}</b>",
|
||
"admin_promo_card_created": "📅 Created: <b>{created}</b>",
|
||
"admin_promo_card_created_by": "👤 Created by: <b>{creator}</b>",
|
||
"admin_promo_status_active": "✅ Active",
|
||
"admin_promo_status_inactive": "🚫 Inactive",
|
||
"admin_promo_status_activated": "activated",
|
||
"admin_promo_status_deactivated": "deactivated",
|
||
"admin_promo_status_expired": "⏰ Expired",
|
||
"admin_promo_status_used_up": "🔄 Used up",
|
||
"admin_promo_toggle_status_button": "🔄 On/Off",
|
||
"admin_promo_view_activations_button": "📋 Activations",
|
||
"admin_promo_back_to_list_button": "⬅️ Back to list",
|
||
"admin_promo_toggle_success": "✅ Promo code {code} {status}",
|
||
"admin_promo_no_activations": "📋 <b>Activations of promo code: {code}</b>\n\n❌ No activations found",
|
||
"admin_promo_activations_header": "📋 <b>Activations of promo code: {code}</b>\n\n",
|
||
"admin_promo_activation_item": "👤 User ID: <b>{user_id}</b>\n📅 Date: <b>{date}</b>\n",
|
||
"admin_promo_back_to_detail_button": "⬅️ Back to promo",
|
||
"admin_panel_online_label": "Online",
|
||
"admin_panel_active_label": "Active",
|
||
"admin_panel_disabled_label": "Disabled",
|
||
"admin_panel_expired_label": "Expired",
|
||
"admin_panel_limited_label": "Limited",
|
||
"admin_panel_total_users_label": "Total users",
|
||
"admin_panel_memory_usage_label": "RAM Usage",
|
||
"admin_panel_traffic_week_label": "Traffic this week",
|
||
"admin_panel_traffic_month_label": "Traffic this month",
|
||
"admin_panel_nodes_label": "Active nodes",
|
||
"admin_panel_system_stats_error": "Error getting system statistics",
|
||
"admin_panel_bandwidth_stats_error": "Error getting bandwidth statistics",
|
||
"admin_panel_stats_fetch_error": "Error fetching panel data",
|
||
"admin_panel_stats_error_details": "Details",
|
||
"inline_referral_title": "Referral link",
|
||
"inline_referral_description": "Share referral link to get bonuses",
|
||
"inline_financial_description": "Today: {today} RUB",
|
||
"inline_system_description": "🟢 Online: {online}, 📊 Active: {active}",
|
||
"admin_user_stats_total_label": "Total",
|
||
"admin_user_stats_paid_subs_label": "With paid subscription",
|
||
"admin_user_stats_trial_label": "On trial period",
|
||
"admin_user_stats_inactive_label": "Inactive",
|
||
"admin_user_stats_banned_label": "Banned",
|
||
"admin_user_stats_referral_label": "Attracted via referral program",
|
||
"admin_financial_today_label": "Today",
|
||
"admin_financial_week_label": "This week",
|
||
"admin_financial_month_label": "This month",
|
||
"admin_financial_all_time_label": "All time",
|
||
"admin_financial_payments_label": "payments",
|
||
"admin_sync_details": "📊 Synchronization Statistics:\n🔍 Panel records checked: {panel_records_checked}\n👥 Users found in DB: {users_found_in_db}\n✨ New users created: {users_created}\n🔄 Users updated: {users_updated}\n📋 Subscriptions synced: {subscriptions_synced_count}\n ├── Created new: {subscriptions_created}\n └── Updated existing: {subscriptions_updated}{additional_stats}",
|
||
"admin_sync_no_telegram_id": "\n⚠️ Records without telegramId: {count}",
|
||
"admin_sync_not_found_in_db": "\n❌ Not found in DB: {count}",
|
||
"admin_payments_pagination_info": "📊 Showing {shown} of {total} payments (page {current_page}/{total_pages})",
|
||
"my_subscription_details": "🔐 <b>My Subscription</b>\n\n⏰ Status: <b>{status}</b>\n📅 Active until: <b>{end_date}</b>\n📆 Days left: <b>{days_left}</b>\n\n🔗 Configuration link:\n<code>{config_link}</code>\n\n📊 Traffic:\nLimit: <b>{traffic_limit}</b>\nUsed: <b>{traffic_used}</b>",
|
||
"autorenew_enable_button": "🔄 Enable auto-renew",
|
||
"autorenew_disable_button": "🛑 Disable auto-renew",
|
||
"subscription_autorenew_updated": "Auto-renew settings updated.",
|
||
"payment_methods_manage_button": "💳 Payment Methods",
|
||
"payment_methods_title": "💳 <b>Payment Methods</b>",
|
||
"payment_method_bind_button": "➕ Add method",
|
||
"payment_method_delete_button": "🗑 Remove",
|
||
"payment_method_view_button": "ℹ️ Details",
|
||
"payment_method_none": "You don't have a saved payment method yet.",
|
||
"payment_method_bound_success": "✅ Payment method added.",
|
||
"payment_method_deleted_success": "✅ Payment method removed.",
|
||
"payment_method_delete_confirm": "Remove saved payment method?",
|
||
"payment_method_card_title": "💳 {network} ••••{last4}",
|
||
"payment_method_generic_title": "💳 {network}",
|
||
"payment_method_wallet_title": "💼 YooMoney wallet ••••{last4}",
|
||
"payment_network_card": "Card",
|
||
"payment_network_generic": "Payment method",
|
||
"payment_method_added_at": "Added: {date}",
|
||
"payment_method_last_tx": "Last transaction: {date}",
|
||
"payment_method_tx_history_title": "📜 Transactions history",
|
||
"payment_method_no_history": "No transactions history.",
|
||
"subscription_purchase_title": "Subscription purchase for {months} mo.",
|
||
"subscription_tribute_notice": "Paid via Tribute. Renew using your Tribute link.",
|
||
"subscription_tribute_notice_with_link": "Paid via Tribute. Renew: {link}",
|
||
"subscription_autorenew_not_supported_for_tribute": "Auto-renew is handled by Tribute. Manage renewal in the Tribute app/link.",
|
||
"autorenew_enable_requires_card": "Link a payment card in Payment Methods before enabling auto-renew.",
|
||
"subscription_not_active": "You don't have an active subscription.",
|
||
"error_service_unavailable": "Service unavailable. Please try again later.",
|
||
"error_payment_gateway": "Payment service error. Please try again later.",
|
||
"traffic_na": "N/A",
|
||
"payment_service_unavailable": "Payment service is unavailable.",
|
||
"payment_service_unavailable_alert": "Payment service is unavailable. Please try again later.",
|
||
"error_creating_payment_record": "Error creating payment record. Please try again later.",
|
||
"error_payment_gateway_link_failed": "Error creating payment link. Please try again later.",
|
||
"status_active": "Active",
|
||
"status_inactive": "Inactive",
|
||
"admin_ads_section": "📈 Ads",
|
||
"admin_ads_header": "📈 Ad Campaigns:",
|
||
"admin_ads_empty": "📭 No ad campaigns. Click \"Create\" to add one.",
|
||
"admin_ads_item": "ID: {id}\nSource: <b>{source}</b>\nstart={start_param}\nCost: {cost} RUB\nActive: {active}\n— Starts: {starts}\n— Trials: {trials}\n— Payers: {payers}\n— Revenue: {revenue} RUB",
|
||
"admin_ads_create_button": "➕ Create campaign",
|
||
"admin_ads_create_source_prompt": "Enter source (e.g., AEZA, VK, TG-channel):",
|
||
"admin_ads_create_start_param_prompt": "Enter start link parameter (e.g., AEZA). Will be used as start=AEZA",
|
||
"admin_ads_create_cost_prompt": "Enter campaign cost (RUB):",
|
||
"admin_ads_invalid_source": "❌ Invalid source. Enter up to 64 characters.",
|
||
"admin_ads_invalid_start_param": "❌ Invalid parameter. Allowed letters/digits/underscore/dash (2-64).",
|
||
"admin_ads_invalid_cost": "❌ Invalid amount. Enter a non-negative number.",
|
||
"admin_ads_start_param_exists": "❌ A campaign with this start parameter already exists.",
|
||
"admin_ads_created_success": "✅ Campaign created!\nID: {id}\nSource: {source}\nParam: {start_param}\nCost: {cost} RUB",
|
||
"admin_ads_back_to_menu_hint": "Done. Back to Ads section:",
|
||
"admin_ads_overview": "📈 <b>Ads</b>\n💰 Revenue: <b>{revenue} RUB</b>\n💸 Spent: <b>{cost} RUB</b>",
|
||
"back_to_ads_list_button": "⬅️ Back to list",
|
||
"admin_ads_card": "📈 <b>Campaign #{id}</b>\nSource: <b>{source}</b>\nstart=<code>{start_param}</code>\nCost: <b>{cost} RUB</b>\nActive: {active}\n\n👥 Starts: <b>{starts}</b>\n🆓 Trials: <b>{trials}</b>\n💳 Payers: <b>{payers}</b>\n💵 Revenue: <b>{revenue} RUB</b>",
|
||
"admin_ads_delete_button": "🗑 Delete campaign",
|
||
"admin_ads_delete_confirm": "Are you sure you want to delete campaign #{id}? This action is irreversible.",
|
||
"admin_ads_deleted_success": "Campaign deleted.",
|
||
"admin_ads_not_found": "Campaign not found.",
|
||
"free_kassa_order_full": "Order #{order_id} from {date}\n\n"
|
||
}
|