diff --git a/.gitignore b/.gitignore index 178d6060..93a0d52b 100644 --- a/.gitignore +++ b/.gitignore @@ -15,8 +15,6 @@ # Разрешаем папку app/ и все её содержимое рекурсивно !app/ !app/** -!locales/ -!locales/** !tests/ !tests/** diff --git a/README.md b/README.md index a96b5b60..48985e87 100644 --- a/README.md +++ b/README.md @@ -85,9 +85,9 @@ git clone https://github.com/Fr1ngg/remnawave-bedolaga-telegram-bot.git cd remnawave-bedolaga-telegram-bot # 2. Создай необходимые директории -mkdir -p ./logs ./data ./data/backups ./data/referral_qr -chmod -R 755 ./logs ./data -sudo chown -R 1000:1000 ./logs ./data +mkdir -p ./logs ./data ./locales ./data/backups ./data/referral_qr +chmod -R 755 ./logs ./data ./locales +sudo chown -R 1000:1000 ./logs ./data ./locales # 3. Запусти мастер установки chmod +x install_bot.sh # один раз, если файл не исполняемый @@ -129,9 +129,9 @@ cp .env.example .env nano .env # Заполни токены и настройки # 3. Создай необходимые директории -mkdir -p ./logs ./data ./data/backups ./data/referral_qr -chmod -R 755 ./logs ./data -sudo chown -R 1000:1000 ./logs ./data +mkdir -p ./logs ./data ./locales ./data/backups ./data/referral_qr +chmod -R 755 ./logs ./data ./locales +sudo chown -R 1000:1000 ./logs ./data ./locales # 4. Запусти всё разом docker compose up -d diff --git a/app/localization/loader.py b/app/localization/loader.py index a586d791..f5941fa0 100644 --- a/app/localization/loader.py +++ b/app/localization/loader.py @@ -1,8 +1,10 @@ from __future__ import annotations import json +import os import logging import shutil +import tempfile from functools import lru_cache from pathlib import Path from typing import Any, Dict @@ -161,6 +163,41 @@ def _normalize_locale_dict(data: Dict[str, Any]) -> Dict[str, Any]: return normalized +def _directory_is_writable(directory: Path) -> bool: + try: + current_user = f"{os.geteuid()}:{os.getegid()}" + user_hint = f" (running as UID:GID {current_user})" + except Exception: # pragma: no cover - best effort only + user_hint = "" + + try: + with tempfile.NamedTemporaryFile(dir=directory, prefix=".locale_write_test_", delete=True): + pass + return True + except PermissionError as error: + _logger.warning( + "Locale directory %s is not writable%s. Ensure the mounted directory allows writes for the container user or configure LOCALES_PATH to a writable path. (%s)", + directory, + user_hint, + error, + ) + except OSError as error: + _logger.warning( + "Unable to prepare locale directory %s for writing%s: %s. Configure LOCALES_PATH to a writable path.", + directory, + user_hint, + error, + ) + except Exception as error: # pragma: no cover - defensive logging + _logger.warning( + "Unexpected error while checking locale directory %s%s: %s", + directory, + user_hint, + error, + ) + return False + + def ensure_locale_templates() -> None: destination = _resolve_user_locales_dir() try: @@ -169,27 +206,48 @@ def ensure_locale_templates() -> None: _logger.warning("Unable to create locales directory %s: %s", destination, error) return - if any(destination.glob("*")): - return - if not _DEFAULT_LOCALES_DIR.exists(): _logger.debug("Default locales directory %s is missing", _DEFAULT_LOCALES_DIR) return - for template in _DEFAULT_LOCALES_DIR.iterdir(): - if not template.is_file(): - continue - target_path = destination / template.name + if not _directory_is_writable(destination): + return + + destination_has_files = any(destination.glob("*")) + + def _copy_locale(source: Path, target: Path) -> None: try: - shutil.copyfile(template, target_path) + shutil.copyfile(source, target) except Exception as error: _logger.warning( "Failed to copy default locale %s to %s: %s", - template, - target_path, + source, + target, error, ) + if not destination_has_files: + for template in _DEFAULT_LOCALES_DIR.iterdir(): + if not template.is_file(): + continue + _copy_locale(template, destination / template.name) + return + + for locale_code in ("ru", "en"): + source_path = _DEFAULT_LOCALES_DIR / f"{locale_code}.json" + target_path = destination / f"{locale_code}.json" + + if target_path.exists(): + continue + + if not source_path.exists(): + _logger.debug( + "Default locale template %s is missing at %s", locale_code, source_path + ) + continue + + _copy_locale(source_path, target_path) + def _load_default_locale(language: str) -> Dict[str, Any]: default_path = _DEFAULT_LOCALES_DIR / f"{language}.json" diff --git a/app/localization/locales/en.json b/app/localization/locales/en.json index 139a07e0..975bf141 100644 --- a/app/localization/locales/en.json +++ b/app/localization/locales/en.json @@ -1,539 +1,319 @@ { - "ADD_COUNTRIES_BUTTON": "🌐 Add countries", - "COUNTRY_MANAGEMENT_UNAVAILABLE": "ℹ️ Server management is unavailable — only one server is accessible", - "COUNTRY_MANAGEMENT_PROMPT": "🌍 Manage subscription countries\n\n📋 Current countries ({current_count}):\n{current_list}\n\n💡 How it works:\n✅ — currently connected\n➕ — will be added (paid)\n➖ — will be removed (free)\n⚪ — not selected\n\n⚠️ Important: Reconnecting removed countries will be charged again!", - "COUNTRY_MANAGEMENT_NONE": "No countries connected", - "PAID_FEATURE_ONLY": "⚠ This feature is available only for paid subscriptions", - "PAID_FEATURE_ONLY_SHORT": "⚠ Paid subscriptions only", - "SUSPICIOUS_DISPLAY_NAME_BLOCKED": "🚫 We detected that your display name looks like a link or an official account. Please change your Telegram name and try again.", - "COUNTRY_NOT_AVAILABLE_PROMOGROUP": "❌ This server is not available for your promo group", - "COUNTRY_CHANGES_NOT_FOUND": "⚠️ No changes detected", - "COUNTRY_CHANGES_SUCCESS_HEADER": "✅ Countries updated!\n\n", - "COUNTRY_CHANGES_ADDED_HEADER": "➕ Added countries:\n", - "COUNTRY_CHANGES_CHARGED": "💰 Charged: {amount} (for {months} mo)", - "COUNTRY_CHANGES_DISCOUNT_INFO": " (discount {percent}%: -{amount})", - "COUNTRY_CHANGES_REMOVED_HEADER": "➖ Removed countries:\n", - "COUNTRY_CHANGES_REMOVED_WARNING": "ℹ️ Reconnecting later will be charged", - "COUNTRY_CHANGES_ACTIVE_COUNT": "🌐 Active countries: {count}", - "ADMIN_MAIN_MENU": "🏠 Main menu", - "ADMIN_CAMPAIGNS": "📣 Promotional campaigns", - "AUTOPAY_BUTTON": "💳 Auto payment", - "AUTOPAY_SET_DAYS_BUTTON": "⚙️ Configure days", - "AUTOPAY_STATUS_ENABLED": "enabled", - "AUTOPAY_STATUS_DISABLED": "disabled", - "AUTOPAY_MENU_TEXT": "💳 Auto payment\n\n📊 Status: {status}\n⏰ Charge: {days} days before expiry\n\nChoose an action:", - "AUTOPAY_TOGGLE_SUCCESS": "✅ Autopay {status}!", - "AUTOPAY_SELECT_DAYS_PROMPT": "⏰ Choose how many days before expiry to charge the payment:", - "AUTOPAY_DAYS_SET": "✅ Set to {days} days!", - "BACK": "⬅️ Back", - "BACK_TO_SUBSCRIPTION": "⬅️ Back to subscription", - "BALANCE_BUTTON_DEFAULT": "💰 Balance: {balance}", - "CANCEL": "❌ Cancel", - "CHANGE_DEVICES_BUTTON": "📱 Change devices", - "CHANGE_DEVICES_PROMPT": "📱 Adjust device limit\n\nCurrent limit: {current_devices} devices\nChoose the new number of devices:\n\n💡 Important:\n• Increasing — extra cost prorated by remaining time\n• Decreasing — payments are not refunded", - "CHANNEL_CHECK_BUTTON": "✅ I have joined", - "CHANNEL_REQUIRED_TEXT": "🔒 Please join the announcement channel to access the bot, then press the button below.", - "CHANNEL_SUBSCRIBE_BUTTON": "🔗 Subscribe", - "CHANNEL_SUBSCRIBE_REQUIRED_ALERT": "❌ You haven't joined the channel!", - "CHANNEL_SUBSCRIBE_THANKS": "✅ Thanks for subscribing", - "TRIAL_CHANNEL_UNSUBSCRIBED": "\n🚫 Access paused\n\nWe couldn't find your subscription to our channel, so the trial plan has been disabled.\n\nJoin the channel and tap “{check_button}” to restore access.", - "CHECK_STATUS_BUTTON": "📊 Check status", - "CHOOSE_ANOTHER_DEVICE": "📱 Choose another device", - "CONFIRM": "✅ Confirm", - "CONFIRM_CHANGE_BUTTON": "✅ Confirm change", - "CONNECT_BUTTON": "🔗 Connect", - "HAPP_DOWNLOAD_BUTTON": "⬇️ Download Happ", - "HAPP_DOWNLOAD_PROMPT": "📥 Download Happ\nChoose your device:", - "HAPP_PLATFORM_IOS": "🍎 iOS", - "HAPP_PLATFORM_ANDROID": "🤖 Android", - "HAPP_PLATFORM_MACOS": "🖥️ Mac OS", - "HAPP_PLATFORM_WINDOWS": "💻 Windows", - "HAPP_PLATFORM_PC": "💻 PC", - "HAPP_DOWNLOAD_LINK_MESSAGE": "⬇️ Download Happ for {platform}:", - "HAPP_DOWNLOAD_LINK_NOT_SET": "❌ Download link for this device is not configured", - "HAPP_DOWNLOAD_OPEN_LINK": "🔗 Open link", - "CONTINUE": "➡️ Continue", - "CONTINUE_BUTTON": "➡️ Continue", - "COPY_SUBSCRIPTION_LINK": "📋 Copy subscription link", - "CREATE_INVITE_BUTTON": "📝 Create invite", - "DEVICE_CONNECTION_HELP": "❓ How to reconnect a device?", - "DEVICE_GUIDE_ANDROID": "🤖 Android", - "DEVICE_GUIDE_ANDROID_TV": "📺 Android TV", - "DEVICE_GUIDE_APPLE_TV": "📺 Apple TV", - "DEVICE_GUIDE_IOS": "📱 iOS (iPhone/iPad)", - "DEVICE_GUIDE_MAC": "🎯 macOS", - "DEVICE_GUIDE_WINDOWS": "💻 Windows", - "DISABLE_BUTTON": "❌ Disable", - "ENABLE_BUTTON": "✅ Enable", - "ERROR": "❌ An error occurred", - "ERROR_TRY_AGAIN": "❌ An error occurred. Please try again.", - "ERROR_RULES_RETRY": "An error occurred. Please try accepting the rules again:", - "GO_TO_BALANCE_TOP_UP": "💳 Go to balance top up", - "RETURN_TO_SUBSCRIPTION_CHECKOUT": "⬅️ Return to subscription checkout", - "INSUFFICIENT_BALANCE": "❌ Insufficient balance.\n\nTop up {amount} and try again.", - "ADDON_INSUFFICIENT_FUNDS_MESSAGE": "⚠️ Insufficient funds\n\nService price: {required}\nBalance: {balance}\nMissing: {missing}\n\nChoose a top-up method. The amount will be filled in automatically.", - "LANGUAGE_PROMPT": "🌐 Choose the interface language:", - "LANGUAGE_SELECTED": "🌐 Interface language set: English", - "LOADING": "⏳ Loading...", - "MAIN_MENU": "👤 {user_name}\n\n📱 Subscription: {subscription_status}\n\nChoose an option:\n", - "MAIN_MENU_ACTION_PROMPT": "Choose an option:", - "MAIN_MENU_TEST_ACCESS_HEADER": "🧪 Test servers active: {servers}", - "MAIN_MENU_TEST_ACCESS_TIMER": "⏳ Access active for {time_left}\n{bar}", - "MAIN_MENU_BUTTON": "🏠 Main menu", - "MANAGE_DEVICES_BUTTON": "🔧 Manage devices", - "DEVICE_UUID_NOT_FOUND": "❌ User UUID not found", - "DEVICE_NONE_CONNECTED": "ℹ️ You have no connected devices", - "DEVICE_FETCH_INFO_ERROR": "❌ Failed to load device information", - "DEVICE_MANAGEMENT_OVERVIEW": "🔄 Device management\n\n📊 Total connected: {total} devices\n📄 Page {page} of {pages}\n\n", - "DEVICE_MANAGEMENT_CONNECTED_HEADER": "Connected devices:\n", - "DEVICE_MANAGEMENT_LIST_ITEM": "• {device}\n", - "DEVICE_MANAGEMENT_ACTIONS": "\n💡 Actions:\n• Select a device to reset\n• Or reset all devices at once", - "DEVICE_FETCH_ERROR": "❌ Failed to load devices", - "DEVICE_PAGE_LOAD_ERROR": "❌ Failed to open the page", - "DEVICE_RESET_INVALID_REQUEST": "❌ Error: invalid request", - "DEVICE_RESET_PARSE_ERROR": "❌ Failed to process the request", - "DEVICE_RESET_SUCCESS": "✅ Device {device} has been reset!", - "DEVICE_RESET_ALL_DONE": "ℹ️ All devices have been reset", - "DEVICE_RESET_ID_FAILED": "❌ Unable to get device ID", - "DEVICE_RESET_NOT_FOUND": "❌ Device not found", - "DEVICE_RESET_ERROR": "❌ Failed to reset the device", - "DEVICE_LIST_FETCH_ERROR": "❌ Failed to load device list", - "DEVICE_RESET_ALL_SUCCESS_MESSAGE": "✅ All devices have been reset!\n\n🔄 Reset: {count} devices\n📱 You can now reconnect your devices\n\n💡 Use the link from the 'My subscription' section to reconnect", - "DEVICE_RESET_PARTIAL_MESSAGE": "⚠️ Devices reset partially\n\n✅ Removed: {success} devices\n❌ Failed to remove: {failed} devices\n\nTry again or contact support.", - "DEVICE_RESET_ALL_FAILED_MESSAGE": "❌ Couldn't reset devices\n\nPlease try again later or contact support.\n\nTotal devices: {total}", - "MENU_BALANCE": "💰 Balance", - "MENU_SUBSCRIPTION": "📱 Subscription", - "MENU_TRIAL": "🎁 Trial subscription", - "MY_BALANCE_BUTTON": "💰 My balance", - "MY_SUBSCRIPTION_BUTTON": "📱 My subscription", - "NO": "❌ No", - "NO_SERVERS_AVAILABLE": "❌ No servers available", - "NO_TRAFFIC_PACKAGES": "❌ No packages available", - "OTHER_APPS_BUTTON": "📋 Other apps", - "PAGINATION_NEXT": "➡️", - "PAGINATION_PREV": "⬅️", - "PAYMENTS_TEMPORARILY_UNAVAILABLE": "⚠️ Payment methods are temporarily unavailable", - "PAYMENT_CARD_TRIBUTE": "💳 Bank card (Tribute)", - "PAYMENT_CARD_YOOKASSA": "💳 Bank card (YooKassa)", - "PAYMENT_CRYPTOBOT": "🪙 Cryptocurrency (CryptoBot)", - "PAYMENT_SBP_YOOKASSA": "🏦 Pay via SBP (YooKassa)", - "PAYMENT_TELEGRAM_STARS": "⭐ Telegram Stars", - "PAYMENT_VIA_SUPPORT": "🛠️ Via support", - "PAY_NOW_BUTTON": "💳 Pay", - "PAY_WITH_COINS_BUTTON": "🪙 Pay", - "PENDING_CANCEL_BUTTON": "⌛ Cancel", - "POST_REGISTRATION_TRIAL_BUTTON": "🚀 Activate free trial 🚀", - "REFERRAL_ANALYTICS_BUTTON": "📊 Analytics", - "REFERRAL_CODE_ACCEPTED": "✅ Referral code accepted!", - "REFERRAL_CODE_INVALID": "❌ Invalid referral code", - "REFERRAL_CODE_INVALID_HELP": "❌ Invalid referral code.\n\n💡 If you have a referral code, please double-check the spelling.\n⏭️ To continue without a referral code, use the /start command.", - "REFERRAL_CODE_QUESTION": "\n🤝 Do you have a friend's referral code?\n\nIf you have a promo code or referral link, enter it now to receive a bonus!\n\nSend the code or tap \"Skip\":\n", - "REFERRAL_CODE_SKIP": "⏭️ Skip", - "ALREADY_REGISTERED_REFERRAL": "ℹ️ You are already registered. A referral link cannot be applied.", - "REFERRAL_LIST_BUTTON": "👥 Referral list", - "RESET_ALL_DEVICES_BUTTON": "🔄 Reset all devices", - "RESET_DEVICE_CONFIRM_BUTTON": "✅ Reset this device", - "RESET_TRAFFIC_BUTTON": "🔄 Reset traffic", - "RULES_HEADER": "📋 Service Rules", - "RULES_ACCEPTED_PROCESSING": "✅ Rules accepted! Completing registration...", - "RULES_TEXT_DEFAULT": "📋 Service Usage Rules\n\n1. Do not use the service for illegal activity\n2. Avoid sharing pirated or malicious content\n3. Spam and phishing are prohibited\n4. Using the service for DDoS attacks is forbidden\n5. One account is intended for one person\n6. Refunds are provided only in exceptional cases\n7. The administration may block accounts that violate the rules\n\nBy using the service you agree to follow these rules.", - "SEND_CONTACT_BUTTON": "📱 Share contact", - "SEND_LOCATION_BUTTON": "📍 Share location", - "SHOW_QR_BUTTON": "📱 Show QR code", - "SHOW_SUBSCRIPTION_LINK": "📋 Show subscription link", - "SKIP_BUTTON": "Skip ➡️", - "SUBSCRIPTION_SETTINGS_BUTTON": "⚙️ Subscription settings", - "SUBSCRIPTION_SETTINGS_PAID_ONLY": "⚠️ Settings are available only for paid subscriptions", - "SUBSCRIPTION_SETTINGS_OVERVIEW": "⚙️ Subscription settings\n\n📊 Current parameters:\n🌐 Countries: {countries_count}\n📈 Traffic: {traffic_used} / {traffic_limit}\n📱 Devices: {devices_used} / {devices_limit}\n\nChoose what you want to change:", - "SUBSCRIPTION_ACTIVE_REQUIRED": "⚠️ You don't have an active subscription!", - "SUB_STATUS_ACTIVE_FEW_DAYS": "💎 Active\n⚠️ expires in {days} days", - "SUB_STATUS_ACTIVE_LONG": "💎 Active\n📅 until {end_date} ({days} days)", - "SUB_STATUS_ACTIVE_TODAY": "💎 Active\n⚠️ expires today!", - "SUB_STATUS_ACTIVE_TOMORROW": "💎 Active\n⚠️ expires tomorrow!", - "SUB_STATUS_EXPIRED": "🔴 Expired\n📅 {end_date}", - "SUB_STATUS_NONE": "❌ Not available", - "SUB_STATUS_TRIAL_ACTIVE": "🎁 Trial subscription\n📅 until {end_date} ({days} days)", - "SUB_STATUS_TRIAL_TODAY": "🎁 Trial subscription\n⚠️ expires today!", - "SUB_STATUS_TRIAL_TOMORROW": "🎁 Trial subscription\n⚠️ expires tomorrow!", - "SUBSCRIPTION_ACTIVE": "✅ Active", - "SUCCESS": "✅ Success", - "REGISTRATION_COMPLETING": "✅ Completing registration...", - "SWITCH_TRAFFIC_BUTTON": "🔄 Switch traffic", - "TOPUP_BALANCE_BUTTON": "💳 Top up balance", - "TRAFFIC_PACKAGES_NOT_CONFIGURED": "⚠️ Traffic packages are not configured", - "TRIAL_ACTIVATE_BUTTON": "🎁 Activate", - "PROMOCODE_EMPTY_INPUT": "❌ Please enter a valid promo code", - "STARS_PAYMENT_ENROLLMENT_ERROR": "❌ Failed to credit funds. Please contact support; the payment will be verified manually.", - "STARS_PAYMENT_PROCESSING_ERROR": "❌ Technical error processing the payment. Please contact support for assistance.", - "STARS_PAYMENT_SUCCESS": "🎉 Payment processed successfully!\n\n⭐ Stars spent: {stars_spent}\n💰 Added to balance: {amount} ₽\n🆔 Transaction ID: {transaction_id}...\n\nThank you for topping up! 🚀", - "STARS_PAYMENT_USER_NOT_FOUND": "❌ Error: user not found. Please contact support.", - "STARS_PRECHECK_INVALID_PAYLOAD": "Payment validation error. Please try again.", - "STARS_PRECHECK_TECHNICAL_ERROR": "Technical error. Please try again later.", - "STARS_PRECHECK_USER_NOT_FOUND": "User not found. Please contact support.", - "UNKNOWN_CALLBACK_ALERT": "❓ Unknown action. Please try again.", - "UNKNOWN_COMMAND_MESSAGE": "❓ I didn't understand that command. Use the menu buttons.", - "WELCOME": "\n🎉 Welcome to VPN Service!\n\nOur service provides fast and secure internet access without restrictions.\n\n🔐 Advantages:\n• High connection speed\n• Servers in different countries \n• Reliable data protection\n• 24/7 support\n\nTo get started, select interface language:\n", - "WELCOME_FALLBACK": "Welcome, {user_name}!", - "YES": "✅ Yes", "ACCESS_DENIED": "❌ Access denied", - "ADMIN_MESSAGES": "📨 Broadcasts", - "ADMIN_MONITORING": "🔍 Monitoring", - "ADMIN_PANEL": "\n⚙️ Administration panel\n\nSelect a section to manage:\n", - "ADMIN_PROMOCODES": "🎫 Promo codes", - "ADMIN_REFERRALS": "🤝 Referral program", - "ADMIN_REMNAWAVE": "🖥️ Remnawave", - "ADMIN_RULES": "📋 Rules", - "ADMIN_STATISTICS": "📊 Statistics", - "ADMIN_PROMO_GROUPS": "💳 Promo groups", - "ADMIN_PROMO_GROUPS_TITLE": "💳 Promo groups", - "ADMIN_PROMO_GROUPS_SUMMARY": "Groups total: {count}\nMembers total: {members}", - "ADMIN_PROMO_GROUP_DISCOUNTS_HEADER": "💸 Promo group discounts:", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_SERVERS": "• Servers: {percent}%", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_TRAFFIC": "• Traffic: {percent}%", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_DEVICES": "• Devices: {percent}%", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_ENABLED": "🧩 Add-on discounts: enabled", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_DISABLED": "🧩 Add-on discounts: disabled", - "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_ENABLE": "🧩 Enable add-on discounts", - "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_DISABLE": "🧩 Disable add-on discounts", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_ENABLED": "🧩 Add-on purchase discounts are enabled.", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_DISABLED": "🧩 Add-on purchase discounts are disabled.", - "ADMIN_PROMO_GROUPS_DEFAULT_LABEL": " (default)", - "ADMIN_PROMO_GROUPS_MEMBERS_COUNT": "Members: {count}", - "ADMIN_PROMO_GROUPS_EMPTY": "No promo groups found.", - "ADMIN_USER_PROMO_GROUP_BUTTON": "👥 Promo group", - "ADMIN_USER_PROMO_GROUP_TITLE": "👥 User promo group", - "ADMIN_USER_PROMO_GROUP_CURRENT": "Current group: {name}", - "ADMIN_USER_PROMO_GROUP_CURRENT_NONE": "Current group: not assigned", - "ADMIN_USER_PROMO_GROUP_DISCOUNTS": "Discounts — servers: {servers}%, traffic: {traffic}%, devices: {devices}%", - "ADMIN_USER_PROMO_GROUP_DISCOUNTS_NONE": "No discounts configured.", - "ADMIN_USER_PROMO_GROUP_SELECT": "Select a promo group to assign:", - "ADMIN_USER_PROMO_GROUP_UPDATED": "✅ User promo group updated: “{name}”", - "ADMIN_USER_PROMO_GROUP_ALREADY": "ℹ️ The user is already in this promo group.", - "ADMIN_USER_PROMO_GROUP_ERROR": "❌ Failed to update the user's promo group.", - "ADMIN_USER_PROMO_GROUP_BACK": "⬅️ Back to user", - "ADMIN_USER_MANAGEMENT_PROFILE": "👤 User management\n\nMain information:\n• Name: {name}\n• ID: {telegram_id}\n• Username: {username}\n• Status: {status}\n• Language: {language}\n\nFinances:\n• Balance: {balance}\n• Transactions: {transactions}\n\nActivity:\n• Registration: {registration}\n• Last activity: {last_activity}\n• Days since registration: {registration_days}", - "ADMIN_USER_USERNAME_NOT_SET": "not set", - "ADMIN_USER_STATUS_ACTIVE": "✅ Active", - "ADMIN_USER_STATUS_BLOCKED": "🚫 Blocked", - "ADMIN_USER_STATUS_DELETED": "🗑️ Deleted", - "ADMIN_USER_STATUS_UNKNOWN": "❓ Unknown", - "ADMIN_USER_LAST_ACTIVITY_UNKNOWN": "Unknown", - "ADMIN_USER_SUBSCRIPTION_TYPE_TRIAL": "🎁 Trial", - "ADMIN_USER_SUBSCRIPTION_TYPE_PAID": "💎 Paid", - "ADMIN_USER_SUBSCRIPTION_STATUS_ACTIVE": "✅ Active", - "ADMIN_USER_SUBSCRIPTION_STATUS_INACTIVE": "❌ Inactive", - "ADMIN_USER_TRAFFIC_USAGE": "{used}/{limit} GB", - "ADMIN_USER_MANAGEMENT_SUBSCRIPTION": "Subscription:\n• Type: {type}\n• Status: {status}\n• Until: {end_date}\n• Traffic: {traffic}\n• Devices: {devices}\n• Countries: {countries}", - "ADMIN_USER_MANAGEMENT_SUBSCRIPTION_NONE": "Subscription: None", - "ADMIN_USER_MANAGEMENT_PROMO_GROUP": "Promo group:\n• Name: {name}\n• Server discount: {server_discount}%\n• Traffic discount: {traffic_discount}%\n• Device discount: {device_discount}%", - "ADMIN_USER_MANAGEMENT_PROMO_GROUP_NONE": "Promo group: Not assigned", - "ADMIN_PROMO_GROUP_DETAILS_TITLE": "💳 Promo group: {name}", - "ADMIN_PROMO_GROUP_DETAILS_MEMBERS": "Members: {count}", - "ADMIN_PROMO_GROUP_DETAILS_DEFAULT": "This is the default group.", - "ADMIN_PROMO_GROUP_MEMBERS_BUTTON": "👥 Members", - "ADMIN_PROMO_GROUP_EDIT_BUTTON": "✏️ Edit", - "ADMIN_PROMO_GROUP_DELETE_BUTTON": "🗑️ Delete", - "ADMIN_PROMO_GROUP_CREATE_NAME_PROMPT": "Enter a name for the new promo group:", - "ADMIN_PROMO_GROUP_INVALID_NAME": "Name cannot be empty.", - "ADMIN_PROMO_GROUP_CREATE_TRAFFIC_PROMPT": "Enter traffic discount (0-100):", - "ADMIN_PROMO_GROUP_CREATE_SERVERS_PROMPT": "Enter server discount (0-100):", - "ADMIN_PROMO_GROUP_CREATE_DEVICES_PROMPT": "Enter device discount (0-100):", - "ADMIN_PROMO_GROUP_INVALID_PERCENT": "Enter a number from 0 to 100.", - "ADMIN_PROMO_GROUP_CREATED": "Promo group “{name}” created.", - "ADMIN_PROMO_GROUP_CREATED_BACK_BUTTON": "↩️ Back to promo groups", - "ADMIN_PROMO_GROUP_EDIT_NAME_PROMPT": "Enter a new name (current: {name}):", - "ADMIN_PROMO_GROUP_EDIT_TRAFFIC_PROMPT": "Enter new traffic discount (0-100):", - "ADMIN_PROMO_GROUP_EDIT_SERVERS_PROMPT": "Enter new server discount (0-100):", - "ADMIN_PROMO_GROUP_EDIT_DEVICES_PROMPT": "Enter new device discount (0-100):", - "ADMIN_PROMO_GROUP_UPDATED": "Promo group “{name}” updated.", - "ADMIN_PROMO_GROUP_MEMBERS_TITLE": "👥 Members of {name}", - "ADMIN_PROMO_GROUP_MEMBERS_EMPTY": "This group has no members yet.", - "ADMIN_PROMO_GROUP_DELETE_FORBIDDEN": "The default promo group cannot be deleted.", - "ADMIN_PROMO_GROUP_DELETE_CONFIRM": "Delete promo group “{name}”? All users will be moved to the default group.", - "ADMIN_PROMO_GROUP_DELETED": "Promo group “{name}” deleted.", - "ADMIN_SUBSCRIPTIONS": "📱 Subscriptions", - "ADMIN_USERS": "👥 Users", - "AUTOPAY_DISABLED_TEXT": "Disabled — don't forget to renew manually!", - "AUTOPAY_ENABLED_TEXT": "Enabled — the subscription will renew automatically", - "AUTOPAY_FAILED": "\n❌ Autopay failed\n\nWe couldn't charge the renewal payment.\nBalance available: {balance}\nRequired: {required}\n\nPlease top up your balance and renew manually.\n", - "AUTOPAY_SUCCESS": "\n✅ Autopay completed\n\nYour subscription was automatically renewed for {days} days.\nCharged from balance: {amount}\n", - "BALANCE_BUTTON": "💰 Balance: {balance}", - "BALANCE_BUTTON_ZERO": "💰 Balance: 0 ₽", - "BALANCE_HISTORY": "📊 Transaction history", - "BALANCE_INFO": "\n💰 Balance: {balance}\n\nChoose an action:\n", - "BALANCE_SUPPORT_REQUEST": "🛠️ Request via support", - "BALANCE_TOP_UP": "💳 Top up", - "CAMPAIGN_EXISTING_USER": "ℹ️ This promo link is available only to new users.", - "CAMPAIGN_BONUS_BALANCE": "🎉 You received {amount} for registering via the \"{name}\" campaign!", - "CAMPAIGN_BONUS_SUBSCRIPTION": "🎉 You’ve been granted a {days}-day subscription (traffic: {traffic}, devices: {devices}) from the \"{name}\" campaign!", - "BUY_SUBSCRIPTION_START": "\n💎 Subscription setup\n\nLet's configure a plan that fits you.\n\nFirst, choose the subscription period:\n", - "PROMO_GROUP_DISCOUNTS_HEADER": "🎁 Your promo group discounts", - "PROMO_GROUP_DISCOUNT_SERVERS": "🌍 Servers: {percent}%", - "PROMO_GROUP_DISCOUNT_TRAFFIC": "📊 Traffic: {percent}%", - "PROMO_GROUP_DISCOUNT_DEVICES": "📱 Extra devices: {percent}%", - "PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Long-term period discounts:", - "PROMO_GROUP_PERIOD_DISCOUNT_ITEM": "{period} — {percent}%", - "CHANGE_DEVICES_CONFIRM": "\n📱 Confirm change\n\nCurrent amount: {current_devices} devices\nNew amount: {new_devices} devices\n\nAction: {action}\n💰 {cost}\n\nApply this change?\n", - "CHANGE_DEVICES_INFO": "\n📱 Adjust device limit\n\nCurrent limit: {current_devices} devices\n\nChoose the new number of devices:\n\n💡 Important:\n• Increasing — extra charge proportional to the remaining time\n• Decreasing — funds are not refunded\n", - "CHANGE_DEVICES_SUCCESS_DECREASE": "\n✅ Device limit decreased!\n\n📱 Was: {old_count} → Now: {new_count}\nℹ️ Payments are not refunded\n", - "CHANGE_DEVICES_SUCCESS_INCREASE": "\n✅ Device limit increased!\n\n📱 Was: {old_count} → Now: {new_count}\n💰 Charged: {amount}\n", - "CHANGE_DEVICES_TITLE": "📱 Change device limit", - "CONTACT_SUPPORT": "💬 Contact support", - "PRIVACY_RESTRICTED_BUTTON_HINT": "⚠️ Telegram blocked the contact request button because of your privacy settings.\n\nAllow sharing your contact details in Telegram settings or send the required information manually in the chat.", - "CREATE_INVITE": "📝 Create invite", - "DEVICES_INSUFFICIENT_BALANCE": "⚠️ Insufficient balance!\nRequired: {required} (for {months} mo)\nYou have: {balance}", - "DEVICES_LIMIT_EXCEEDED": "⚠️ Maximum device limit exceeded ({limit})", - "DEVICES_MINIMUM_LIMIT": "⚠️ Minimum number of devices: {limit}", - "DEVICES_NO_CHANGE": "ℹ️ Device limit was not changed", - "PAYMENT_CHARGE_ERROR": "⚠️ Failed to charge the payment", - "DEVICE_CHANGE_ACTION_INCREASE": "increase to {count}", - "DEVICE_CHANGE_EXTRA_COST": "Extra payment: {amount} (for {months} mo)", - "DEVICE_CHANGE_DISCOUNT_INFO": " (discount {percent}%: -{amount})", - "DEVICE_CHANGE_FREE": "Free", - "DEVICE_CHANGE_ACTION_DECREASE": "decrease to {count}", - "DEVICE_CHANGE_NO_REFUND": "Payments are not refunded", - "DEVICE_CHANGE_CONFIRMATION": "📱 Confirm change\n\nCurrent amount: {current} devices\nNew amount: {new} devices\n\nAction: {action}\n💰 {cost}\n\nApply this change?", - "DEVICE_CHANGE_INCREASE_SUCCESS": "✅ Device limit increased!\n\n", - "DEVICE_CHANGE_RESULT_LINE": "📱 Was: {old} → Now: {new}\n", - "DEVICE_CHANGE_CHARGED": "💰 Charged: {amount}", - "DEVICE_CHANGE_DECREASE_SUCCESS": "✅ Device limit decreased!\n\n", - "DEVICE_CHANGE_NO_REFUND_INFO": "ℹ️ Payments are not refunded", - "INVALID_AMOUNT": "❌ Invalid amount", - "MAINTENANCE_MODE_ACTIVE": "\n🔧 Maintenance in progress!\n\nThe service is temporarily unavailable while we improve performance.\n\n⏰ Estimated completion time: unknown\n🔄 Please try again later\n\nWe apologize for the inconvenience.\n", - "MAINTENANCE_MODE_API_ERROR": "\n🔧 Maintenance in progress!\n\nThe service is temporarily unavailable due to connection issues with the servers.\n\n⏰ We're working on it. Please try again in a few minutes.\n\n🔄 Last check: {last_check}\n", - "MENU_ADMIN": "⚙️ Admin panel", - "MENU_BUY_SUBSCRIPTION": "💎 Buy subscription", - "MENU_EXTEND_SUBSCRIPTION": "⏰ Extend subscription", - "MENU_INFO": "ℹ️ Info", - "MENU_INFO_HEADER": "ℹ️ Info", - "MENU_INFO_PROMPT": "Choose a section:", - "MENU_PROMO_GROUPS_INFO": "🎯 Promo groups", - "PROMO_GROUPS_INFO_HEADER": "🎯 Promo groups", - "PROMO_GROUPS_INFO_TOTAL_SPENT": "💰 Spent in the bot: {amount}", - "PROMO_GROUPS_INFO_CURRENT_LEVEL": "🏆 Current level: {name}", - "PROMO_GROUPS_INFO_NO_LEVEL": "🏆 Current level: not unlocked yet", - "PROMO_GROUPS_INFO_NEXT_LEVEL": "📈 Until level “{name}”: spend {amount} more", - "PROMO_GROUPS_INFO_MAX_LEVEL": "🏆 You already have the highest discount level!", - "PROMO_GROUPS_INFO_LEVELS_HEADER": "📋 Auto-assigned levels:", - "PROMO_GROUPS_INFO_LEVEL_LINE": "{status} {name} — from {amount}", - "PROMO_GROUPS_INFO_EMPTY": "Auto-assigned promo groups are not configured yet.", - "MENU_PROMOCODE": "🎫 Promo code", - "MENU_REFERRALS": "🤝 Referral program", - "MENU_RULES": "📋 Service rules", - "MENU_SERVER_STATUS": "📊 Server status", - "MENU_SUPPORT": "🛠️ Support", - "OPERATION_CANCELLED": "❌ Operation cancelled", - "PERIOD_14_DAYS": "📅 14 days - {settings.format_price(settings.PRICE_14_DAYS)}", - "PERIOD_30_DAYS": "📅 30 days - {settings.format_price(settings.PRICE_30_DAYS)}", - "PERIOD_60_DAYS": "📅 60 days - {settings.format_price(settings.PRICE_60_DAYS)}", - "PERIOD_90_DAYS": "📅 90 days - {settings.format_price(settings.PRICE_90_DAYS)}", - "PERIOD_180_DAYS": "📅 180 days - {settings.format_price(settings.PRICE_180_DAYS)}", - "PERIOD_360_DAYS": "📅 360 days - {settings.format_price(settings.PRICE_360_DAYS)}", - "PROMOCODE_ENTER": "🎫 Enter promo code", - "PROMOCODE_EXPIRED": "❌ Promo code has expired", - "PROMOCODE_INVALID": "❌ Invalid promo code", - "PROMOCODE_SUCCESS": "🎉 Promo code applied!", - "PROMOCODE_USED": "ℹ️ Promo code has already been used", - "REFERRAL_CODE_APPLIED": "🎁 Referral code applied! You will receive a bonus after the first purchase.", - "REFERRAL_INFO": "\n🤝 Referral program\n\n👥 Invited: {referrals_count} friends\n💰 Earned: {earned_amount}\n\n🔗 Your referral link:\n{referral_link}\n\n🎫 Your promo code:\n{referral_code}\n\n💰 Terms:\n• Per friend: {registration_bonus}\n• Top-up commission: {commission_percent}%\n", - "REFERRAL_INVITE_MESSAGE": "\n🎯 Invitation to the VPN service\n\nHi! I invite you to an excellent VPN service!\n\n🎁 Use my link to get a bonus: {bonus}\n\n🔗 Join: {link}\n🎫 Or use promo code: {code}\n\n💪 Fast, reliable, affordable!\n", - "RULES_ACCEPT": "✅ I accept the rules", - "RULES_DECLINE": "❌ I do not accept", - "RULES_REQUIRED": "❗️ You must accept the rules to use the service!", - "SELECT_COUNTRIES": "Select countries:", - "SELECT_DEVICES": "Number of devices:", - "SELECT_PERIOD": "Choose period:", - "SELECT_TRAFFIC": "Choose traffic package:", - "SUBSCRIPTION_EXPIRED": "\n❌ Subscription expired\n\nYour subscription has ended. Renew it to restore access.\n", - "SUBSCRIPTION_EXPIRING": "\n⚠️ Subscription expiring!\n\nYour subscription expires in {days} days.\n\nRenew it now so you don't lose access.\n", - "SUBSCRIPTION_EXPIRING_PAID": "\n⚠️ Subscription expires in {days_text}!\n\nYour paid subscription ends on {end_date}.\n\n💳 Autopay: {autopay_status}\n\n{action_text}\n", - "SUBSCRIPTION_INFO": "\n📱 Subscription details\n\n📊 Status: {status}\n🎭 Type: {type}\n📅 Valid until: {end_date}\n⏰ Days left: {days_left}\n\n📈 Traffic: {traffic_used} / {traffic_limit}\n🌍 Servers: {countries_count} countries\n📱 Devices: {devices_used} / {devices_limit}\n\n💳 Autopay: {autopay_status}\n", - "SUBSCRIPTION_NONE": "❌ No active subscription", - "SUBSCRIPTION_NOT_FOUND": "❌ Subscription not found", - "SUBSCRIPTION_PURCHASED": "🎉 Subscription purchased successfully!", - "SUBSCRIPTION_SUMMARY": "\n📋 Final configuration\n\n📅 Period: {period} days\n📈 Traffic: {traffic}\n🌍 Countries: {countries}\n📱 Devices: {devices}\n\n💰 Total: {total_price}\n\nConfirm the purchase?\n", - "SUBSCRIPTION_TRIAL": "🧪 Trial subscription", - "SUPPORT_INFO": "\n🛠️ Technical support\n\nFor any questions contact our support:\n\n👤 {settings.SUPPORT_USERNAME}\n\nWe can help with:\n• Connection setup\n• Troubleshooting issues\n• Payment questions\n• Other requests\n\n⏰ Response time: usually within 1-2 hours\n", - "SERVER_STATUS_AVAILABLE": "✅ Online", - "SERVER_STATUS_ERROR_SHORT": "Failed to fetch data", - "SERVER_STATUS_LATENCY": "{latency} ms", - "SERVER_STATUS_LATENCY_UNKNOWN": "no data", - "SERVER_STATUS_NEXT_PAGE": "Next ➡️", - "SERVER_STATUS_NO_SERVERS": "No server data available.", - "SERVER_STATUS_NOT_CONFIGURED": "Feature is not available.", - "SERVER_STATUS_OFFLINE": "no response", - "SERVER_STATUS_PAGINATION": "Page {current} of {total}", - "SERVER_STATUS_PREV_PAGE": "⬅️ Back", - "SERVER_STATUS_REFRESH": "🔄 Refresh", - "SERVER_STATUS_SUMMARY": "Total servers: {total} (online: {online}, offline: {offline})", - "SERVER_STATUS_TITLE": "📊 Server status", - "SERVER_STATUS_UPDATED_AT": "⏱ Updated at: {time}", - "SERVER_STATUS_UNAVAILABLE": "❌ Offline", - "SWITCH_TRAFFIC_CONFIRM": "\n🔄 Confirm traffic change\n\nCurrent limit: {current_traffic}\nNew limit: {new_traffic}\n\nAction: {action}\n💰 {cost}\n\nApply this change?\n", - "SWITCH_TRAFFIC_INFO": "\n🔄 Switch traffic limit\n\nCurrent limit: {current_traffic}\nChoose the new traffic amount:\n\n💡 Important:\n• Increasing — you pay the difference proportionally to the remaining time\n• Decreasing — payments are not refunded\n• The used traffic counter is NOT reset\n", - "SWITCH_TRAFFIC_SUCCESS_DECREASE": "\n✅ Traffic limit decreased!\n\n📊 Was: {old_traffic} → Now: {new_traffic}\nℹ️ Payments are not refunded\n", - "SWITCH_TRAFFIC_SUCCESS_INCREASE": "\n✅ Traffic limit increased!\n\n📊 Was: {old_traffic} → Now: {new_traffic}\n💰 Charged: {amount}\n", - "SWITCH_TRAFFIC_TITLE": "🔄 Switch traffic limit", - "TOP_UP_AMOUNT": "💳 Enter top-up amount (in rubles):", - "TOP_UP_METHODS": "\n💳 Select a payment method\n\nAmount: {amount}\n", - "TOP_UP_STARS": "⭐ Telegram Stars", - "TOP_UP_TRIBUTE": "💎 Bank card", - "TRAFFIC_5GB": "📊 5 GB - {settings.format_price(settings.PRICE_TRAFFIC_5GB)}", - "TRAFFIC_10GB": "📊 10 GB - {settings.format_price(settings.PRICE_TRAFFIC_10GB)}", - "TRAFFIC_25GB": "📊 25 GB - {settings.format_price(settings.PRICE_TRAFFIC_25GB)}", - "TRAFFIC_50GB": "📊 50 GB - {settings.format_price(settings.PRICE_TRAFFIC_50GB)}", - "TRAFFIC_100GB": "📊 100 GB - {settings.format_price(settings.PRICE_TRAFFIC_100GB)}", - "TRAFFIC_250GB": "📊 250 GB - {settings.format_price(settings.PRICE_TRAFFIC_250GB)}", - "TRAFFIC_UNLIMITED": "📊 Unlimited - {settings.format_price(settings.PRICE_TRAFFIC_UNLIMITED)}", - "TRAFFIC_INSUFFICIENT_BALANCE": "⚠️ Insufficient balance!\nRequired: {required} (for {months} mo)\nYou have: {balance}", - "TRAFFIC_NO_CHANGE": "ℹ️ Traffic limit was not changed", - "TRIAL_ACTIVATED": "🎉 Trial subscription activated!", - "TRIAL_ALREADY_USED": "❌ The trial subscription has already been used", - "TRIAL_AVAILABLE": "\n🎁 Trial subscription\n\nYou can get a free trial plan:\n\n⏰ Duration: {days} days\n📈 Traffic: {traffic} GB\n📱 Devices: {devices} pcs\n🌍 Server: {server_name}\n\nActivate the trial subscription?\n", - "TRIAL_SERVER_RANDOM_POOL": "🎲 Random choice among {count} servers", - "TRIAL_SERVER_DEFAULT_NAME": "🎯 Trial server", - "TRIAL_ENDING_SOON": "\n🎁 The trial subscription is ending soon!\n\nYour trial expires in a few hours.\n\n💎 Don't want to lose VPN access?\nSwitch to the full subscription!\n\n🔥 Special offer:\n• 30 days for {price}\n• Unlimited traffic\n• All servers available\n• Speeds up to 1 Gbit/s\n\n⚡️ Activate before the trial ends!\n", - "TRAFFIC_FIXED_MODE": "⚠️ Traffic is fixed in the current mode and cannot be changed", - "TRAFFIC_ALREADY_UNLIMITED": "⚠ You already have unlimited traffic", + "ADDON_INSUFFICIENT_FUNDS_MESSAGE": "⚠️ Insufficient funds\n\nService price: {required}\nBalance: {balance}\nMissing: {missing}\n\nChoose a top-up method. The amount will be filled in automatically.", + "ADD_COUNTRIES_BUTTON": "🌐 Add countries", "ADD_TRAFFIC_PROMPT": "📈 Add traffic to your subscription\n\nCurrent limit: {current_traffic}\nChoose extra traffic:", - "USER_NOT_FOUND": "❌ User not found", - "MENU_PROFILE": "👤 Personal account", - "MENU_PROFILE_UNAVAILABLE": "❗️ Personal account is not available yet. Please try again later.", - "MENU_LANGUAGE": "🌐 Language", - "SUBSCRIPTION_STATUS_EXPIRED": "Expired", - "SUBSCRIPTION_STATUS_TRIAL": "Trial", - "SUBSCRIPTION_STATUS_ACTIVE": "Active", - "SUBSCRIPTION_STATUS_UNKNOWN": "Unknown", - "SUBSCRIPTION_TIME_LEFT_EXPIRED": "expired", - "SUBSCRIPTION_TIME_LEFT_DAYS": "{days} days", - "SUBSCRIPTION_TIME_LEFT_HOURS": "{hours} hr", - "SUBSCRIPTION_TIME_LEFT_MINUTES": "{minutes} min", - "SUBSCRIPTION_WARNING_TOMORROW": "\n⚠️ expires tomorrow!", - "SUBSCRIPTION_WARNING_TODAY": "\n⚠️ expires today!", - "SUBSCRIPTION_WARNING_MINUTES": "\n🔴 expires in a few minutes!", - "SUBSCRIPTION_TYPE_TRIAL": "Trial", - "SUBSCRIPTION_TYPE_PAID": "Paid", - "SUBSCRIPTION_TRAFFIC_UNLIMITED": "∞ (unlimited) | Used: {used} GB", - "SUBSCRIPTION_TRAFFIC_LIMITED": "{used} / {limit} GB", - "SUBSCRIPTION_NO_SERVERS": "No servers", - "SUBSCRIPTION_OVERVIEW_TEMPLATE": "👤 {full_name}\n💰 Balance: {balance}\n📱 Subscription: {status_emoji} {status_display}{warning}\n\n📱 Subscription details\n🎭 Type: {subscription_type}\n📅 Valid until: {end_date}\n⏰ Time left: {time_left}\n📈 Traffic: {traffic}\n🌍 Servers: {servers}\n📱 Devices: {devices_used} / {device_limit}", - "SUBSCRIPTION_CONNECTED_DEVICES_TITLE": "
📱 Connected devices:\n", - "SUBSCRIPTION_CONNECTED_DEVICES_FOOTER": "
", - "SUBSCRIPTION_CONNECT_LINK_SECTION": "🔗 Connection link:\n{subscription_url}", - "SUBSCRIPTION_CONNECT_LINK_PROMPT": "📱 Copy the link and add it to your VPN app", - "SUBSCRIPTION_IMPORT_LINK_SECTION": "🔗 Your import link for the VPN app:\n{subscription_url}", - "SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT": "📱 Tap the button below to get setup instructions for your device", - "BACK_TO_MAIN_MENU_BUTTON": "⬅️ Back to main menu", - "CUSTOM_MINIAPP_URL_NOT_SET": "⚠ Custom mini-app link is not configured", - "SUBSCRIPTION_LINK_GENERATING_NOTICE": "{purchase_text}\n\nThe link is being generated, open the 'My subscription' section in a few seconds.", - "SUBSCRIPTION_NO_ACTIVE_LINK": "⚠ You don't have an active subscription or the link is still being generated", - "SUBSCRIPTION_CONNECT_MINIAPP_MESSAGE": "📱 Connect subscription\n\n🚀 Tap the button below to open the subscription in the Telegram mini app:", - "SUBSCRIPTION_CONNECT_CUSTOM_MESSAGE": "🚀 Connect subscription\n\n📱 Tap the button below to open the app:", - "SUBSCRIPTION_CONNECT_LINK_MESSAGE": "🚀 Connect subscription\n\n🔗 Tap the button below to open the subscription link:", - "SUBSCRIPTION_LINK_HIDDEN_NOTICE": "ℹ️ The subscription link is available via the buttons below or in the “My subscription” section.", - "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE": "📱 Connect subscription\n\n🔗 Subscription link:\n{subscription_url}\n\n💡 Choose your device to get detailed setup instructions:", - "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE_HIDDEN": "📱 Connect subscription\n\nℹ️ The subscription link is available via the buttons below or in the “My subscription” section.\n\n💡 Choose your device to get detailed setup instructions:", - "SUBSCRIPTION_LINK_UNAVAILABLE": "❌ Subscription link is unavailable", - "SUBSCRIPTION_DEVICE_APPS_NOT_FOUND": "❌ No apps found for this device", - "SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Setup for {device_name}", - "SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Subscription link:", - "SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Recommended app: {app_name}", - "SUBSCRIPTION_DEVICE_OTHER_APPS": "📦 Other apps: {app_list}", - "SUBSCRIPTION_DEVICE_OTHER_APPS_HINT": "Tap the \"Other apps\" button below to choose another app.", - "SUBSCRIPTION_DEVICE_STEP_INSTALL_TITLE": "Step 1 - Install:", - "SUBSCRIPTION_DEVICE_STEP_ADD_TITLE": "Step 2 - Add subscription:", - "SUBSCRIPTION_DEVICE_STEP_CONNECT_TITLE": "Step 3 - Connect:", - "SUBSCRIPTION_DEVICE_HOW_TO_TITLE": "💡 How to connect:", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP1": "1. Install the app from the link above", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP2": "2. Tap the \"Connect\" button below", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP3": "3. Open the app and paste the link", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP4": "4. Connect to a server", - "SUBSCRIPTION_APPS_TITLE": "📱 Apps for {device_name}", - "SUBSCRIPTION_APPS_PROMPT": "Choose an app to connect:", - "SUBSCRIPTION_APP_NOT_FOUND": "❌ App not found", - "SUBSCRIPTION_SPECIFIC_APP_TITLE": "📱 {app_name} - {device_name}", - "SUBSCRIPTION_ADDITIONAL_STEP_TITLE": "{title}:", - "SUBSCRIPTION_LINK_USAGE_TITLE": "📱 How to use:", - "SUBSCRIPTION_LINK_STEP1": "1. Tap the link above to copy it", - "SUBSCRIPTION_LINK_STEP2": "2. Open your VPN app", - "SUBSCRIPTION_LINK_STEP3": "3. Find the 'Add subscription' or 'Import' option", - "SUBSCRIPTION_LINK_STEP4": "4. Paste the copied link", - "SUBSCRIPTION_LINK_HINT": "💡 If the link didn't copy, select it manually and copy.", - "REFERRAL_PROGRAM_TITLE": "👥 Referral program", - "REFERRAL_STATS_HEADER": "📊 Your statistics:", - "REFERRAL_STATS_INVITED": "• Invited users: {count}", - "REFERRAL_STATS_FIRST_TOPUPS": "• Made first top-up: {count}", - "REFERRAL_STATS_ACTIVE": "• Active referrals: {count}", - "REFERRAL_STATS_CONVERSION": "• Conversion: {rate}%", - "REFERRAL_STATS_TOTAL_EARNED": "• Earned in total: {amount}", - "REFERRAL_STATS_MONTH_EARNED": "• Earned last month: {amount}", - "REFERRAL_REWARDS_HEADER": "🎁 How rewards work:", - "REFERRAL_REWARD_NEW_USER": "• New user receives: {bonus} on the first top-up from {minimum}", - "REFERRAL_REWARD_INVITER": "• You receive on the referral's first top-up: {bonus}", - "REFERRAL_REWARD_COMMISSION": "• Commission from each referral top-up: {percent}%", - "REFERRAL_LINK_TITLE": "🔗 Your referral link:", - "REFERRAL_CODE_TITLE": "🆔 Your code: {code}", - "REFERRAL_RECENT_EARNINGS_HEADER": "💰 Latest rewards:", - "REFERRAL_EARNING_REASON_FIRST_TOPUP": "🎉 First top-up", - "REFERRAL_EARNING_REASON_COMMISSION_TOPUP": "💰 Top-up commission", - "REFERRAL_EARNING_REASON_COMMISSION_PURCHASE": "💰 Purchase commission", - "REFERRAL_RECENT_EARNINGS_ITEM": "• {reason}: {amount} from {referral_name}", - "REFERRAL_EARNINGS_BY_TYPE_HEADER": "📈 Earnings by type:", - "REFERRAL_EARNINGS_FIRST_TOPUPS": "• Bonuses for first top-ups: {count} ({amount})", - "REFERRAL_EARNINGS_TOPUPS": "• Top-up commissions: {count} ({amount})", - "REFERRAL_EARNINGS_PURCHASES": "• Purchase commissions: {count} ({amount})", - "REFERRAL_INVITE_FOOTER": "📢 Invite friends and earn!", - "REFERRAL_LINK_CAPTION": "🔗 Your referral link:\n{link}", - "REFERRAL_LIST_EMPTY": "📋 You have no referrals yet.\n\nShare your referral link to start earning!", - "REFERRAL_LIST_HEADER": "👥 Your referrals (page {current}/{total})", - "REFERRAL_LIST_ITEM_HEADER": "{index}. {status} {name}", - "REFERRAL_LIST_ITEM_TOPUPS": " {emoji} Top-ups: {count}", - "REFERRAL_LIST_ITEM_EARNED": " 💎 Earned from them: {amount}", - "REFERRAL_LIST_ITEM_REGISTERED": " 📅 Registered: {days} days ago", - "REFERRAL_LIST_ITEM_ACTIVITY": " 🕐 Activity: {days} days ago", - "REFERRAL_LIST_ITEM_ACTIVITY_LONG_AGO": " 🕐 Activity: long ago", - "REFERRAL_LIST_PREV_PAGE": "⬅️ Back", - "REFERRAL_LIST_NEXT_PAGE": "Next ➡️", - "REFERRAL_ANALYTICS_TITLE": "📊 Referral analytics", - "REFERRAL_ANALYTICS_EARNINGS_HEADER": "💰 Earnings by period:", - "REFERRAL_ANALYTICS_EARNINGS_TODAY": "• Today: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_WEEK": "• Week: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_MONTH": "• Month: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_QUARTER": "• Quarter: {amount}", - "REFERRAL_ANALYTICS_TOP_TITLE": "🏆 Top {count} referrals:", - "REFERRAL_ANALYTICS_TOP_ITEM": "{index}. {name}: {amount} ({count} rewards)", - "REFERRAL_ANALYTICS_FOOTER": "📈 Keep growing your referral network!", - "REFERRAL_INVITE_TITLE": "🎉 Join the VPN service!", - "REFERRAL_INVITE_BONUS": "💎 On your first top-up from {minimum} you get {bonus} as a bonus!", - "REFERRAL_INVITE_FEATURE_FAST": "🚀 Fast connection", - "REFERRAL_INVITE_FEATURE_SERVERS": "🌍 Servers worldwide", - "REFERRAL_INVITE_FEATURE_SECURE": "🔒 Reliable protection", - "REFERRAL_INVITE_LINK_PROMPT": "👇 Follow the link:", - "REFERRAL_SHARE_BUTTON": "📤 Share", - "REFERRAL_INVITE_CREATED_TITLE": "📝 Invitation created!", - "REFERRAL_INVITE_CREATED_INSTRUCTION": "Tap the “📤 Share” button to send the invite to any chat or copy the text below:", - "PAYMENT_METHODS_ONLY_SUPPORT": "💳 Balance top-up methods\n\n⚠️ Automated payment methods are temporarily unavailable.\nContact support to top up your balance.\n\nChoose a top-up method:", - "PAYMENT_METHODS_TITLE": "💳 Balance top-up methods", - "PAYMENT_METHODS_PROMPT": "Choose the payment method that suits you:", - "PAYMENT_METHODS_FOOTER": "Choose a top-up method:", - "PAYMENT_RETURN_HOME_BUTTON": "🏠 Main menu", - "PAYMENT_METHOD_STARS_NAME": "⭐ Telegram Stars", - "PAYMENT_METHOD_STARS_DESCRIPTION": "fast and convenient", - "PAYMENT_METHOD_YOOKASSA_NAME": "💳 Bank card", - "PAYMENT_METHOD_YOOKASSA_DESCRIPTION": "via YooKassa", - "PAYMENT_METHOD_TRIBUTE_NAME": "💳 Bank card", - "PAYMENT_METHOD_TRIBUTE_DESCRIPTION": "via Tribute", - "PAYMENT_METHOD_CRYPTOBOT_NAME": "🪙 Cryptocurrency", - "PAYMENT_METHOD_CRYPTOBOT_DESCRIPTION": "via CryptoBot", - "PAYMENT_METHOD_SUPPORT_NAME": "🛠️ Support team", - "PAYMENT_METHOD_SUPPORT_DESCRIPTION": "other options", - "PAYMENT_METHODS_UNAVAILABLE_ALERT": "⚠️ Automated payment methods are temporarily unavailable. Contact support to top up your balance.", + "ADMIN_BACK_TO_ADMIN": "⬅️ Back to admin", + "ADMIN_BACK_TO_LIST": "⬅️ Back to list", + "ADMIN_BACK_TO_MAIN": "🏠 Back to main menu", + "ADMIN_BACK_TO_MONITORING": "⬅️ Back to monitoring", + "ADMIN_BACK_TO_SQUADS": "⬅️ Back to squads", + "ADMIN_BROADCAST_ADD_DOCUMENT": "📄 Add document", + "ADMIN_BROADCAST_ADD_PHOTO": "📷 Add photo", + "ADMIN_BROADCAST_ADD_VIDEO": "🎥 Add video", + "ADMIN_BROADCAST_BUTTON_BALANCE": "💰 Top up balance", + "ADMIN_BROADCAST_BUTTON_CONNECT": "🔗 Connect", + "ADMIN_BROADCAST_BUTTON_HOME": "🏠 Main menu", + "ADMIN_BROADCAST_BUTTON_PROMOCODE": "🎫 Promo code", + "ADMIN_BROADCAST_BUTTON_REFERRALS": "🤝 Referrals", + "ADMIN_BROADCAST_BUTTON_SUBSCRIPTION": "📱 Subscription", + "ADMIN_BROADCAST_BUTTON_SUPPORT": "🛠️ Support", + "ADMIN_BROADCAST_CHANGE_MEDIA": "🖼️ Change media", + "ADMIN_BROADCAST_NO_MEDIA": "⏭️ No media", + "ADMIN_BROADCAST_REPLACE_MEDIA": "🔄 Replace media", + "ADMIN_BROADCAST_SKIP_MEDIA": "⏭️ Skip media", + "ADMIN_BROADCAST_TARGET_ACTIVE": "📱 With subscription", + "ADMIN_BROADCAST_TARGET_ACTIVE_ZERO": "🧊 Active 0 GB", + "ADMIN_BROADCAST_TARGET_ALL": "👥 Everyone", + "ADMIN_BROADCAST_TARGET_EXPIRED": "🔚 Expired", + "ADMIN_BROADCAST_TARGET_EXPIRING": "⏰ Expiring", + "ADMIN_BROADCAST_TARGET_NO_SUB": "❌ No subscription", + "ADMIN_BROADCAST_TARGET_TRIAL": "🎁 Trial", + "ADMIN_BROADCAST_TARGET_TRIAL_ZERO": "🥶 Trial 0 GB", + "ADMIN_BROADCAST_USE_MEDIA": "✅ Use this media", + "ADMIN_CAMPAIGNS": "📣 Promotional campaigns", + "ADMIN_CAMPAIGNS_CREATE": "➕ Create", + "ADMIN_CAMPAIGNS_GENERAL_STATS": "📊 Overall statistics", + "ADMIN_CAMPAIGNS_LIST": "📋 Campaign list", + "ADMIN_CAMPAIGN_BONUS_BALANCE": "💰 Balance bonus", + "ADMIN_CAMPAIGN_BONUS_SUBSCRIPTION": "📱 Subscription bonus", + "ADMIN_CAMPAIGN_DELETE": "🗑️ Delete", + "ADMIN_CAMPAIGN_DEVICES": "📱 Devices", + "ADMIN_CAMPAIGN_DISABLE": "🔴 Disable", + "ADMIN_CAMPAIGN_DURATION": "📅 Duration", + "ADMIN_CAMPAIGN_EDIT": "✏️ Edit", + "ADMIN_CAMPAIGN_EDIT_NAME": "✏️ Name", + "ADMIN_CAMPAIGN_EDIT_START": "🔗 Parameter", + "ADMIN_CAMPAIGN_ENABLE": "🟢 Enable", + "ADMIN_CAMPAIGN_SERVERS": "🌍 Servers", + "ADMIN_CAMPAIGN_STATS": "📊 Statistics", + "ADMIN_CAMPAIGN_TRAFFIC": "🌐 Traffic", + "ADMIN_CANCEL": "❌ Cancel", + "ADMIN_COMMUNICATIONS_MENU_MESSAGES": "📢 Menu messages", + "ADMIN_COMMUNICATIONS_PROMO_OFFERS": "🎯 Promo offers", + "ADMIN_COMMUNICATIONS_SUBMENU_DESCRIPTION": "Manage broadcasts and interface texts:", + "ADMIN_COMMUNICATIONS_SUBMENU_TITLE": "📨 **Communications**\n\n", + "ADMIN_COMMUNICATIONS_WELCOME_TEXT": "👋 Welcome message", + "ADMIN_CONTINUE": "✅ Continue", + "ADMIN_CRITERIA_ACTIVE_TODAY": "⚡ Active today", + "ADMIN_CRITERIA_DIRECT": "🎯 Direct registration", + "ADMIN_CRITERIA_INACTIVE_MONTH": "💤 Inactive 30+ days", + "ADMIN_CRITERIA_INACTIVE_WEEK": "💤 Inactive 7+ days", + "ADMIN_CRITERIA_MONTH": "📅 Last month", + "ADMIN_CRITERIA_PROMOCODES": "🎫 Used promo codes", + "ADMIN_CRITERIA_REFERRALS": "🤝 Via referrals", + "ADMIN_CRITERIA_TODAY": "📅 Today", + "ADMIN_CRITERIA_WEEK": "📅 Last 7 days", + "ADMIN_FAQ_ACTION_PROMPT": "Choose an action:", + "ADMIN_FAQ_ADD_PAGE_BUTTON": "➕ Add page", + "ADMIN_FAQ_BACK_TO_LIST": "⬅️ Back to FAQ settings", + "ADMIN_FAQ_CANCEL_BUTTON": "⬅️ Cancel", + "ADMIN_FAQ_CONTENT_EMPTY": "❌ Text cannot be empty.", + "ADMIN_FAQ_CONTENT_TOO_LONG": "❌ Text is too long. Maximum 6000 characters.", + "ADMIN_FAQ_CONTENT_UPDATED": "✅ Page text updated.", + "ADMIN_FAQ_DESCRIPTION": "FAQ is shown in the “Info” section.", + "ADMIN_FAQ_DISABLED_ALERT": "🚫 FAQ disabled.", + "ADMIN_FAQ_DISABLE_BUTTON": "🚫 Disable display", + "ADMIN_FAQ_EDIT_CONTENT_BUTTON": "📝 Edit text", + "ADMIN_FAQ_EDIT_TITLE_BUTTON": "✏️ Edit title", + "ADMIN_FAQ_ENABLED_ALERT": "✅ FAQ enabled.", + "ADMIN_FAQ_ENABLE_BUTTON": "✅ Enable display", + "ADMIN_FAQ_ENTER_CONTENT": "Send the content of the FAQ page. HTML is allowed.", + "ADMIN_FAQ_ENTER_TITLE": "Enter a title for the new FAQ page:", + "ADMIN_FAQ_HEADER": "❓ FAQ", + "ADMIN_FAQ_HTML_ERROR": "❌ HTML error: {error}", + "ADMIN_FAQ_HTML_HELP": "ℹ️ HTML help", + "ADMIN_FAQ_LANGUAGE": "Language: {lang}", + "ADMIN_FAQ_PAGES_EMPTY": "No pages have been created yet.", + "ADMIN_FAQ_PAGES_OVERVIEW": "Page list:\n{items}", + "ADMIN_FAQ_PAGE_CREATED": "✅ FAQ page created.", + "ADMIN_FAQ_PAGE_DELETED": "🗑️ Page deleted.", + "ADMIN_FAQ_PAGE_DELETE_BUTTON": "🗑️ Delete", + "ADMIN_FAQ_PAGE_DISABLED_ALERT": "🚫 Page disabled.", + "ADMIN_FAQ_PAGE_DISABLE_BUTTON": "🚫 Disable page", + "ADMIN_FAQ_PAGE_ENABLED_ALERT": "✅ Page enabled.", + "ADMIN_FAQ_PAGE_ENABLE_BUTTON": "✅ Enable page", + "ADMIN_FAQ_PAGE_HEADER": "📄 FAQ page", + "ADMIN_FAQ_PAGE_MOVE_DOWN": "⬇️ Down", + "ADMIN_FAQ_PAGE_MOVE_UP": "⬆️ Up", + "ADMIN_FAQ_PAGE_NOT_FOUND": "⚠️ Page not found.", + "ADMIN_FAQ_PAGE_PREVIEW": "Preview:\n{content}", + "ADMIN_FAQ_PAGE_PREVIEW_EMPTY": "Content has not been provided yet.", + "ADMIN_FAQ_PAGE_REORDERED": "✅ Order updated.", + "ADMIN_FAQ_PAGE_STATS": "Total pages: {total}", + "ADMIN_FAQ_PAGE_STATUS": "Status: {status}", + "ADMIN_FAQ_PAGE_STATUS_ACTIVE": "✅ Active", + "ADMIN_FAQ_PAGE_STATUS_INACTIVE": "🚫 Disabled", + "ADMIN_FAQ_PAGE_TITLE": "Title: {title}", + "ADMIN_FAQ_PAGE_UPDATED": "Updated: {timestamp}", + "ADMIN_FAQ_STATUS_DISABLED": "⚠️ FAQ display is turned off.", + "ADMIN_FAQ_STATUS_EMPTY": "⚠️ FAQ has not been configured yet.", + "ADMIN_FAQ_STATUS_ENABLED": "✅ FAQ is enabled. Active pages: {count}.", + "ADMIN_FAQ_STATUS_ENABLED_EMPTY": "⚠️ FAQ is enabled but there are no active pages.", + "ADMIN_FAQ_TITLE_EMPTY": "❌ Title cannot be empty.", + "ADMIN_FAQ_TITLE_TOO_LONG": "❌ Title is too long. Maximum 255 characters.", + "ADMIN_FAQ_TITLE_UPDATED": "✅ Title updated.", + "ADMIN_FAQ_UNEXPECTED_STATE": "⚠️ State was reset.", + "ADMIN_HISTORY_REFRESH": "🔄 Refresh", + "ADMIN_MAINTENANCE_CHECK_API": "🔍 Check API", + "ADMIN_MAINTENANCE_DISABLE": "🟢 Disable maintenance", + "ADMIN_MAINTENANCE_ENABLE": "🔧 Enable maintenance", + "ADMIN_MAINTENANCE_PANEL_STATUS": "🌐 Panel status", + "ADMIN_MAINTENANCE_SEND_NOTIFICATION": "📢 Send notification", + "ADMIN_MAINTENANCE_START_MONITORING": "▶️ Start monitoring", + "ADMIN_MAINTENANCE_STOP_MONITORING": "⏹️ Stop monitoring", + "ADMIN_MAIN_MENU": "🏠 Main menu", + "ADMIN_MAIN_MESSAGES": "📨 Messages", + "ADMIN_MAIN_PRICING": "💰 Pricing", + "ADMIN_MAIN_PROMO_STATS": "💰 Promo codes / Stats", + "ADMIN_MAIN_SERVERS": "🌐 Servers", + "ADMIN_MAIN_SETTINGS": "⚙️ Settings", + "ADMIN_MAIN_SUPPORT": "🛟 Support", + "ADMIN_MAIN_SYSTEM": "🛠️ System", + "ADMIN_MAIN_USERS_SUBSCRIPTIONS": "👥 Users / Subscriptions", + "ADMIN_MESSAGES": "📨 Broadcasts", + "ADMIN_MESSAGES_ALL_USERS": "📨 All users", + "ADMIN_MESSAGES_BY_CRITERIA": "🔍 By criteria", + "ADMIN_MESSAGES_BY_SUBSCRIPTIONS": "🎯 By subscriptions", + "ADMIN_MESSAGES_HISTORY": "📋 History", + "ADMIN_MONITORING": "🔍 Monitoring", + "ADMIN_MONITORING_ALL_LOGS": "📋 All logs", + "ADMIN_MONITORING_AUTOPAY_SETTINGS": "💳 Auto-pay settings", + "ADMIN_MONITORING_AUTO_CLEANUP": "🧹 Auto-clean logs", + "ADMIN_MONITORING_BACK_TO_LOGS": "⬅️ Back to log list", + "ADMIN_MONITORING_CHECK_NOW": "🔄 Check now", + "ADMIN_MONITORING_CLEAR": "🗑️ Clear", + "ADMIN_MONITORING_CLEAR_ALL": "🗑️ Clear ALL logs", + "ADMIN_MONITORING_CLEAR_OLD": "🗑️ Clear old", + "ADMIN_MONITORING_CONFIRM_CLEAR": "✅ Yes, clear", + "ADMIN_MONITORING_DELETE_LOG": "🗑️ Delete this log", + "ADMIN_MONITORING_FILTER_AUTOPAY": "💳 Auto-payments", + "ADMIN_MONITORING_FILTER_CYCLES": "🔄 Monitoring cycles", + "ADMIN_MONITORING_FILTER_ERRORS": "❌ Errors", + "ADMIN_MONITORING_FILTER_SUCCESS": "✅ Success", + "ADMIN_MONITORING_FORCE_CHECK": "🔄 Force check", + "ADMIN_MONITORING_LOGS": "📋 Logs", + "ADMIN_MONITORING_NOTIFICATIONS": "🔔 Notifications", + "ADMIN_MONITORING_RESTART": "🔄 Restart", "ADMIN_MONITORING_SETTINGS": "⚙️ Monitoring settings", + "ADMIN_MONITORING_SETTINGS_BUTTON": "⚙️ Settings", + "ADMIN_MONITORING_SET_INTERVAL": "⏱️ Check interval", + "ADMIN_MONITORING_START": "▶️ Start", + "ADMIN_MONITORING_STATISTICS": "📊 Statistics", + "ADMIN_MONITORING_STATUS": "📊 Status", + "ADMIN_MONITORING_STOP": "⏸️ Stop", + "ADMIN_MONITORING_STOP_HARD": "⏹️ Stop", + "ADMIN_MONITORING_TEST_NOTIFICATIONS": "🧪 Test notifications", + "ADMIN_NODE_DISABLE": "⏸️ Disable", + "ADMIN_NODE_ENABLE": "▶️ Enable", + "ADMIN_NODE_RESTART": "🔄 Restart", + "ADMIN_NODE_STATS": "📊 Statistics", + "ADMIN_PANEL": "\n⚙️ Administration panel\n\nSelect a section to manage:\n", + "ADMIN_PERIOD_ALL": "📅 All time", + "ADMIN_PERIOD_MONTH": "📅 Month", + "ADMIN_PERIOD_TODAY": "📅 Today", + "ADMIN_PERIOD_WEEK": "📅 Week", + "ADMIN_PERIOD_YESTERDAY": "📅 Yesterday", + "ADMIN_PRICING_BUTTON_CORE": "⚙️ Core limits", + "ADMIN_PRICING_BUTTON_EXTRA": "➕ Extras", + "ADMIN_PRICING_BUTTON_PERIODS": "🗓 Subscription periods", + "ADMIN_PRICING_BUTTON_PERIOD_OPTIONS": "🗓 Available periods", + "ADMIN_PRICING_BUTTON_TRAFFIC": "📦 Traffic packages", + "ADMIN_PRICING_BUTTON_TRAFFIC_OPTIONS": "🚦 Package visibility", + "ADMIN_PRICING_BUTTON_TRIAL": "🎁 Trial period", + "ADMIN_PRICING_CHOICE_ALREADY": "This option is already active.", + "ADMIN_PRICING_CHOICE_UPDATED": "Selected: {label}", + "ADMIN_PRICING_EDIT_CANCEL": "❌ Cancel", + "ADMIN_PRICING_EDIT_CANCELLED": "Changes cancelled.", + "ADMIN_PRICING_EDIT_CANCEL_HINT": "Send \"Cancel\" to return without changes.", + "ADMIN_PRICING_EDIT_CURRENT": "Current value", + "ADMIN_PRICING_EDIT_EXPIRED": "Editing session expired.", + "ADMIN_PRICING_EDIT_INVALID": "Could not parse the price. Please enter a number in RUB (e.g. 990 or 990.50).", + "ADMIN_PRICING_EDIT_PROMPT": "Enter a new price in RUB (e.g. 990 or 990.50). Use 0 for a free plan.", + "ADMIN_PRICING_EDIT_SUCCESS": "Price for {item} updated: {price}", + "ADMIN_PRICING_EDIT_TARGET": "Current item", + "ADMIN_PRICING_EDIT_TITLE": "Update price", + "ADMIN_PRICING_MENU_DESCRIPTION": "Quick access to subscription plans, traffic bundles and extra services.", + "ADMIN_PRICING_MENU_PROMPT": "Choose a section to edit:", + "ADMIN_PRICING_MENU_SUMMARY": "Quick summary:", + "ADMIN_PRICING_MENU_SUMMARY_CORE": "• Core limits: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_EXTRA": "• Extras: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_PERIODS": "• Periods: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_PERIOD_OPTIONS": "• Available periods: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_TRAFFIC": "• Traffic: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_TRIAL": "• Trial: {summary}", + "ADMIN_PRICING_MENU_TITLE": "Pricing management", + "ADMIN_PRICING_PERIOD_DISABLED": "Period disabled.", + "ADMIN_PRICING_PERIOD_ENABLED": "Period enabled.", + "ADMIN_PRICING_PERIOD_MIN": "At least one period must remain.", + "ADMIN_PRICING_SECTION_CORE_TITLE": "⚙️ Core limits", + "ADMIN_PRICING_SECTION_CURRENT": "Current values:", + "ADMIN_PRICING_SECTION_EMPTY": "No values available.", + "ADMIN_PRICING_SECTION_EXTRA_TITLE": "➕ Extra options", + "ADMIN_PRICING_SECTION_PERIODS_TITLE": "🗓 Subscription periods", + "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_PROMPT": "Tap a period to toggle its visibility.", + "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_RENEW": "Active renewal periods: {items}", + "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_SUB": "Active subscription periods: {items}", + "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_TITLE": "🗓 Available periods", + "ADMIN_PRICING_SECTION_PROMPT": "Select what to update:", + "ADMIN_PRICING_SECTION_SETTINGS_GENERIC": "⚙️ Settings", + "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_ACTIVE": "Active packages: {items}", + "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_NONE": "No active packages.", + "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_PROMPT": "Tap a package to toggle its visibility.", + "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_TITLE": "🚦 Traffic package visibility", + "ADMIN_PRICING_SECTION_TRAFFIC_TITLE": "📦 Traffic packages", + "ADMIN_PRICING_SECTION_TRIAL_TITLE": "🎁 Trial period", + "ADMIN_PRICING_SETTING_CANCEL_HINT": "Reply \"Cancel\" to go back without changes.", + "ADMIN_PRICING_SETTING_CURRENT": "Current value", + "ADMIN_PRICING_SETTING_EDIT_TITLE": "Parameter configuration", + "ADMIN_PRICING_SETTING_EDIT_WITH_VALUE": "✏️ {label} • {value}", + "ADMIN_PRICING_SETTING_EXAMPLE": "Example", + "ADMIN_PRICING_SETTING_FORMAT": "Input format", + "ADMIN_PRICING_SETTING_INVALID": "Could not update the parameter. Please check the value format.", + "ADMIN_PRICING_SETTING_PARAMETER": "Parameter", + "ADMIN_PRICING_SETTING_PROMPT": "Send a new value or type \"Cancel\". Use none to clear.", + "ADMIN_PRICING_SETTING_SUCCESS": "Parameter {label} updated: {value}", + "ADMIN_PRICING_SETTING_TOGGLE_STATEFUL": "{icon} {label}", + "ADMIN_PRICING_SETTING_WARNING": "Important", + "ADMIN_PRICING_SUMMARY_EMPTY": "—", + "ADMIN_PRICING_TRAFFIC_PACKAGE_DISABLED": "Package disabled.", + "ADMIN_PRICING_TRAFFIC_PACKAGE_ENABLED": "Package enabled.", + "ADMIN_PRICING_TRAFFIC_PACKAGE_MIN": "At least one package must remain.", + "ADMIN_PRIVACY_POLICY_ACTION_PROMPT": "Choose an action:", + "ADMIN_PRIVACY_POLICY_BACK_BUTTON": "⬅️ Back to policy settings", + "ADMIN_PRIVACY_POLICY_CANCEL": "❌ Cancel", + "ADMIN_PRIVACY_POLICY_CURRENT_PREVIEW": "Current text (preview):", + "ADMIN_PRIVACY_POLICY_DESCRIPTION": "The privacy policy is shown in the Info section.", + "ADMIN_PRIVACY_POLICY_DISABLED": "🚫 Policy disabled", + "ADMIN_PRIVACY_POLICY_DISABLE_BUTTON": "🚫 Disable display", + "ADMIN_PRIVACY_POLICY_EDIT_BUTTON": "✏️ Edit text", + "ADMIN_PRIVACY_POLICY_EDIT_HINT": "Use /html_help for supported tags.", + "ADMIN_PRIVACY_POLICY_EDIT_PROMPT": "Send the new privacy policy text. HTML markup is allowed.", + "ADMIN_PRIVACY_POLICY_EDIT_TITLE": "Privacy policy editing", + "ADMIN_PRIVACY_POLICY_ENABLED": "✅ Policy enabled", + "ADMIN_PRIVACY_POLICY_ENABLE_BUTTON": "✅ Enable display", + "ADMIN_PRIVACY_POLICY_HEADER": "🛡️ Privacy policy", + "ADMIN_PRIVACY_POLICY_HTML_ERROR": "❌ HTML error: {error}", + "ADMIN_PRIVACY_POLICY_HTML_HELP": "ℹ️ HTML help", + "ADMIN_PRIVACY_POLICY_LANGUAGE": "Language: {lang}", + "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY": "No text provided yet.", + "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY_ALERT": "The privacy policy text is not set yet.", + "ADMIN_PRIVACY_POLICY_PREVIEW_TITLE": "Text preview:", + "ADMIN_PRIVACY_POLICY_RETURN_TO_EDIT": "⬅️ Back to editing", + "ADMIN_PRIVACY_POLICY_SAVED": "✅ Privacy policy updated.", + "ADMIN_PRIVACY_POLICY_STATUS_DISABLED": "⚠️ Policy display is disabled or empty.", + "ADMIN_PRIVACY_POLICY_STATUS_ENABLED": "✅ Policy is active and visible to users.", + "ADMIN_PRIVACY_POLICY_STATUS_ENABLED_EMPTY": "⚠️ Policy is enabled but the text is empty — users won't see it.", + "ADMIN_PRIVACY_POLICY_TOO_LONG": "❌ The policy text is too long. Maximum 4000 characters.", + "ADMIN_PRIVACY_POLICY_UPDATED_AT": "Last updated: {timestamp}", + "ADMIN_PRIVACY_POLICY_VIEW_BUTTON": "👀 View current text", + "ADMIN_PRIVACY_POLICY_VIEW_TITLE": "👀 Current policy text", + "ADMIN_PRIVACY_POLICY_VIEW_TRUNCATED": "\n\n⚠️ The text is shortened for display. Users will see the full version in the menu.", + "ADMIN_PROMOCODES": "🎫 Promo codes", + "ADMIN_PROMOCODES_ALL": "🎫 All promo codes", + "ADMIN_PROMOCODES_CREATE": "➕ Create", + "ADMIN_PROMOCODES_GENERAL_STATS": "📊 Overall statistics", + "ADMIN_PROMOCODE_DELETE": "🗑️ Delete", + "ADMIN_PROMOCODE_EDIT": "✏️ Edit", + "ADMIN_PROMOCODE_STATS": "📊 Statistics", + "ADMIN_PROMOCODE_TOGGLE": "🔄 Status", + "ADMIN_PROMOCODE_TYPE_BALANCE": "💰 Balance", + "ADMIN_PROMOCODE_TYPE_DAYS": "📅 Subscription days", + "ADMIN_PROMOCODE_TYPE_TRIAL": "🎁 Trial", + "ADMIN_PROMO_GROUPS": "💳 Promo groups", + "ADMIN_PROMO_GROUPS_DEFAULT_LABEL": " (default)", + "ADMIN_PROMO_GROUPS_EMPTY": "No promo groups found.", + "ADMIN_PROMO_GROUPS_MEMBERS_COUNT": "Members: {count}", + "ADMIN_PROMO_GROUPS_SUMMARY": "Groups total: {count}\nMembers total: {members}", + "ADMIN_PROMO_GROUPS_TITLE": "💳 Promo groups", + "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_DISABLED": "🧩 Add-on discounts: disabled", + "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_ENABLED": "🧩 Add-on discounts: enabled", + "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_DISABLED": "🧩 Add-on purchase discounts are disabled.", + "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_ENABLED": "🧩 Add-on purchase discounts are enabled.", "ADMIN_PROMO_GROUP_AUTO_ASSIGN_DISABLED": "Auto assignment by total spending: disabled", "ADMIN_PROMO_GROUP_AUTO_ASSIGN_LINE": "Auto assignment by total spending from {amount} ₽", + "ADMIN_PROMO_GROUP_CREATED": "Promo group “{name}” created.", + "ADMIN_PROMO_GROUP_CREATED_BACK_BUTTON": "↩️ Back to promo groups", "ADMIN_PROMO_GROUP_CREATE_AUTO_ASSIGN_PROMPT": "Enter total spending (in ₽) required for automatic assignment. Send 0 to disable.", + "ADMIN_PROMO_GROUP_CREATE_DEVICES_PROMPT": "Enter device discount (0-100):", + "ADMIN_PROMO_GROUP_CREATE_NAME_PROMPT": "Enter a name for the new promo group:", "ADMIN_PROMO_GROUP_CREATE_PERIOD_PROMPT": "Enter subscription period discounts (e.g. 30:10, 90:15). Send 0 if none.", + "ADMIN_PROMO_GROUP_CREATE_SERVERS_PROMPT": "Enter server discount (0-100):", + "ADMIN_PROMO_GROUP_CREATE_TRAFFIC_PROMPT": "Enter traffic discount (0-100):", + "ADMIN_PROMO_GROUP_DELETED": "Promo group “{name}” deleted.", + "ADMIN_PROMO_GROUP_DELETE_BUTTON": "🗑️ Delete", + "ADMIN_PROMO_GROUP_DELETE_CONFIRM": "Delete promo group “{name}”? All users will be moved to the default group.", + "ADMIN_PROMO_GROUP_DELETE_FORBIDDEN": "The default promo group cannot be deleted.", + "ADMIN_PROMO_GROUP_DETAILS_DEFAULT": "This is the default group.", + "ADMIN_PROMO_GROUP_DETAILS_MEMBERS": "Members: {count}", + "ADMIN_PROMO_GROUP_DETAILS_TITLE": "💳 Promo group: {name}", + "ADMIN_PROMO_GROUP_DISCOUNTS_HEADER": "💸 Promo group discounts:", + "ADMIN_PROMO_GROUP_DISCOUNT_LINE_DEVICES": "• Devices: {percent}%", + "ADMIN_PROMO_GROUP_DISCOUNT_LINE_SERVERS": "• Servers: {percent}%", + "ADMIN_PROMO_GROUP_DISCOUNT_LINE_TRAFFIC": "• Traffic: {percent}%", "ADMIN_PROMO_GROUP_EDIT_AUTO_ASSIGN_PROMPT": "Enter total spending (in ₽) for auto assignment. Current value: {current}.", + "ADMIN_PROMO_GROUP_EDIT_BUTTON": "✏️ Edit", + "ADMIN_PROMO_GROUP_EDIT_DEVICES_PROMPT": "Enter new device discount (0-100):", "ADMIN_PROMO_GROUP_EDIT_FIELD_AUTO_ASSIGN": "🤖 Auto assignment by spending", "ADMIN_PROMO_GROUP_EDIT_FIELD_DEVICES": "📱 Device discount", "ADMIN_PROMO_GROUP_EDIT_FIELD_NAME": "✏️ Rename", @@ -542,66 +322,606 @@ "ADMIN_PROMO_GROUP_EDIT_FIELD_TRAFFIC": "🌐 Traffic discount", "ADMIN_PROMO_GROUP_EDIT_MENU_HINT": "Select a parameter to change:", "ADMIN_PROMO_GROUP_EDIT_MENU_TITLE": "✏️ Promo group settings “{name}”", + "ADMIN_PROMO_GROUP_EDIT_NAME_PROMPT": "Enter a new name (current: {name}):", "ADMIN_PROMO_GROUP_EDIT_PERIOD_PROMPT": "Enter new period discounts (current: {current}). Send 0 if none.", + "ADMIN_PROMO_GROUP_EDIT_SERVERS_PROMPT": "Enter new server discount (0-100):", + "ADMIN_PROMO_GROUP_EDIT_TRAFFIC_PROMPT": "Enter new traffic discount (0-100):", "ADMIN_PROMO_GROUP_INVALID_AUTO_ASSIGN": "Enter a non-negative amount in rubles or 0 to disable.", + "ADMIN_PROMO_GROUP_INVALID_NAME": "Name cannot be empty.", + "ADMIN_PROMO_GROUP_INVALID_PERCENT": "Enter a number from 0 to 100.", "ADMIN_PROMO_GROUP_INVALID_PERIOD_DISCOUNTS": "Enter period:discount pairs separated by commas, e.g. 30:10, 90:15, or 0.", + "ADMIN_PROMO_GROUP_MEMBERS_BUTTON": "👥 Members", + "ADMIN_PROMO_GROUP_MEMBERS_EMPTY": "This group has no members yet.", + "ADMIN_PROMO_GROUP_MEMBERS_TITLE": "👥 Members of {name}", "ADMIN_PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Period discounts:", - "ADMIN_PROMO_OFFER_TEST_DURATION": "Access: {hours} h", - "ADMIN_PROMO_OFFER_TEST_SQUAD_NAME": "Server: {name}", - "ADMIN_PROMO_OFFER_TEST_SQUADS": "Squads: {squads}", - "ADMIN_PROMO_OFFER_TEST_SQUADS_EMPTY": "Squads: not specified", - "ADMIN_PROMO_OFFER_RESULT": "📬 Broadcast finished\nSent: {sent}\nFailed: {failed}", - "ADMIN_PROMO_OFFER_SKIPPED": "Skipped: {skipped} (already have access)", + "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_DISABLE": "🧩 Disable add-on discounts", + "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_ENABLE": "🧩 Enable add-on discounts", + "ADMIN_PROMO_GROUP_UPDATED": "Promo group “{name}” updated.", + "ADMIN_PROMO_OFFERS_TITLE": "🎯 Promo offers\n\nSelect a template to configure:", + "ADMIN_PROMO_OFFER_ACTIVE_DURATION": "After activation the discount lasts for {hours} h.", + "ADMIN_PROMO_OFFER_ALLOWED": "Available segments:", + "ADMIN_PROMO_OFFER_BACK_TO_LIST": "⬅️ Back to promo offers", + "ADMIN_PROMO_OFFER_BACK_TO_TEMPLATE": "↩️ Back to offer", "ADMIN_PROMO_OFFER_CTA_BUY": "Buy subscription", "ADMIN_PROMO_OFFER_CTA_EXTEND": "Extend subscription", - "ADMIN_PROMO_OFFER_BACK_TO_TEMPLATE": "↩️ Back to offer", - "ADMIN_PROMO_OFFER_BACK_TO_LIST": "⬅️ Back to promo offers", + "ADMIN_PROMO_OFFER_DISCOUNT": "Extra discount: {percent}% (stacks with other discounts)", + "ADMIN_PROMO_OFFER_EXTEND": "Renewal discount", + "ADMIN_PROMO_OFFER_LOGS": "📜 Activity log", + "ADMIN_PROMO_OFFER_LOGS_ACTION_CLAIMED": "Claimed", + "ADMIN_PROMO_OFFER_LOGS_ACTION_CONSUMED": "Used", + "ADMIN_PROMO_OFFER_LOGS_ACTION_DISABLED": "Disabled", + "ADMIN_PROMO_OFFER_LOGS_AMOUNT": "💰 Amount: {amount}", + "ADMIN_PROMO_OFFER_LOGS_DESCRIPTION": "📝 {description}", + "ADMIN_PROMO_OFFER_LOGS_EFFECT_DISCOUNT": "💸 Discount", + "ADMIN_PROMO_OFFER_LOGS_EFFECT_TEST": "🧪 Test access", + "ADMIN_PROMO_OFFER_LOGS_EMPTY_BODY": "No activity yet.", + "ADMIN_PROMO_OFFER_LOGS_NEW_SQUADS": "🌍 New squads: {squads}", + "ADMIN_PROMO_OFFER_LOGS_PAGINATION": "Page {page}/{total}", + "ADMIN_PROMO_OFFER_LOGS_PERCENT": "📉 Discount: {percent}%", + "ADMIN_PROMO_OFFER_LOGS_REASON_AUTOPAY": "🤖 Used in autopay renewal", + "ADMIN_PROMO_OFFER_LOGS_REASON_EXPIRED": "⏳ Offer expired", + "ADMIN_PROMO_OFFER_LOGS_REASON_GENERIC": "ℹ️ Action: {reason}", + "ADMIN_PROMO_OFFER_LOGS_REASON_MANUAL": "💳 Applied during manual payment", + "ADMIN_PROMO_OFFER_LOGS_REASON_TEST_EXPIRED": "⏳ Test access removed", + "ADMIN_PROMO_OFFER_LOGS_SOURCE": "🏷 Source: {source}", + "ADMIN_PROMO_OFFER_LOGS_SQUAD": "🌍 Squad: {squad}", + "ADMIN_PROMO_OFFER_LOGS_TITLE": "📜 Promo offer activity log", + "ADMIN_PROMO_OFFER_LOGS_UNKNOWN_USER": "Unknown user", + "ADMIN_PROMO_OFFER_LOGS_USER": "👤 {user}", + "ADMIN_PROMO_OFFER_NO_SQUADS_AVAILABLE": "❌ No servers available.", + "ADMIN_PROMO_OFFER_NO_USERS": "No matching users found.", + "ADMIN_PROMO_OFFER_PREVIEW": "Preview:", + "ADMIN_PROMO_OFFER_PROMPT_ACTIVE_DURATION": "Enter how long the activated discount should remain valid (hours):", + "ADMIN_PROMO_OFFER_PROMPT_BUTTON": "Enter the button label:", + "ADMIN_PROMO_OFFER_PROMPT_DISCOUNT": "Enter discount percentage:", + "ADMIN_PROMO_OFFER_PROMPT_DURATION": "Enter test access duration (hours):", + "ADMIN_PROMO_OFFER_PROMPT_MESSAGE": "Enter the new offer text:", + "ADMIN_PROMO_OFFER_PROMPT_VALID": "Enter validity (hours):", + "ADMIN_PROMO_OFFER_PURCHASE": "Purchase discount", + "ADMIN_PROMO_OFFER_RESULT": "📬 Broadcast finished\nSent: {sent}\nFailed: {failed}", + "ADMIN_PROMO_OFFER_SELECTED_SQUAD": "Current squad: {name}", + "ADMIN_PROMO_OFFER_SELECTED_SQUAD_EMPTY": "Current squad: not selected", + "ADMIN_PROMO_OFFER_SELECTED_SQUAD_UUID": "Current squad: {uuid}", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_BACK": "↩️ Back", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_CLEAR": "🗑 Clear", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_CLEARED": "✅ Squad cleared", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_HINT": "Pick a server to grant temporary access from the list below.", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_NOT_FOUND": "❌ Server not found", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_PAGE": "Page {page}/{total}", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_TITLE": "🌍 Select a squad", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_UPDATED": "✅ Squad updated", + "ADMIN_PROMO_OFFER_SENDING": "Starting broadcast...", + "ADMIN_PROMO_OFFER_SEND_USER": "👤 Send to user", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT": "💸 Active discount: {percent}%", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_LEFT": " (until {date}, {time} left)", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_NONE": "💸 No active discount", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_SOURCE": " — source: {source}", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_UNTIL": " (until {date})", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_OFFERS": "📨 Active offers:", + "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_LIST": "⬅️ Back to users", + "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_PROFILE": "👤 Back to profile", + "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_SEGMENTS": "↩️ Back to segment selection", + "ADMIN_PROMO_OFFER_SEND_USER_BALANCE": "Balance: {amount}", + "ADMIN_PROMO_OFFER_SEND_USER_EMPTY": "No matching users found. Adjust your query.", + "ADMIN_PROMO_OFFER_SEND_USER_EMPTY_RESULT": "Delivery not performed", + "ADMIN_PROMO_OFFER_SEND_USER_HINT": "Select a user to deliver the promo offer.", + "ADMIN_PROMO_OFFER_SEND_USER_NO_ACTIVE_OFFERS": "📨 No active offers", + "ADMIN_PROMO_OFFER_SEND_USER_NO_SUBSCRIPTION": "💳 No active subscription", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ACTIVE_DURATION": " After claim: {duration}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_BONUS": "+{bonus}%", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_EXPIRES": " Expires: {expires}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ITEM": "• {description} (until {expires})", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ITEM_HEADER": "• {description}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_NO_EXPIRY": "no expiry", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_PERCENT": "{percent}%", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_ACCEPTED": "Claimed: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_ACTIVE": "Active now: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_HEADER": "📊 Offer stats", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_PENDING": "Not claimed: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_TOTAL": "Total sent: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS": " Status: {status}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS_ACCEPTED": "✅ Claimed", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS_PENDING": "⏳ Not claimed", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TEST": "Test access", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TIME_LEFT": " Time left: {time}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TIME_LEFT_EXPIRED": "expired", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TOTAL_DURATION": " Total validity: {duration}", + "ADMIN_PROMO_OFFER_SEND_USER_PROFILE": "👤 {name}", + "ADMIN_PROMO_OFFER_SEND_USER_RESET": "❌ Clear search", + "ADMIN_PROMO_OFFER_SEND_USER_SEARCH": "🔍 Search", + "ADMIN_PROMO_OFFER_SEND_USER_SEARCH_PROMPT": "Enter name, username or user ID to search:", + "ADMIN_PROMO_OFFER_SEND_USER_SEARCH_QUERY": "🔍 Search: {query}", + "ADMIN_PROMO_OFFER_SEND_USER_SEND_BUTTON": "📬 Send offer", + "ADMIN_PROMO_OFFER_SEND_USER_SKIPPED": "Skipped: {skipped} (already has access)", + "ADMIN_PROMO_OFFER_SEND_USER_STATUS": "Status: {status}", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION": "💳 Subscription", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_END": "Expires: {date}", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_END_UNKNOWN": "not specified", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_SQUADS": "Connected squads: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_STATUS": "Status: {status}", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_TRAFFIC": "Traffic: {used}/{limit} GB", + "ADMIN_PROMO_OFFER_SEND_USER_SUMMARY_TITLE": "📬 Sent to {name}", + "ADMIN_PROMO_OFFER_SEND_USER_TELEGRAM": "🆔 {telegram_id}", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_ACTIVE_DURATION": "Active after claim for {hours} h", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_DISCOUNT": "Discount: {percent}%", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_HEADER": "📨 Selected offer", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_TEST_DURATION": "Test access: {hours} h", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_TYPE": "Type: {label}", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_VALID": "Valid for: {hours} h", + "ADMIN_PROMO_OFFER_SEND_USER_TEST_ACCESS": "🧪 Active test accesses:", + "ADMIN_PROMO_OFFER_SEND_USER_TEST_ACCESS_ITEM": "• {squad} (until {expires})", + "ADMIN_PROMO_OFFER_SEND_USER_TITLE": "👤 Send to a user", + "ADMIN_PROMO_OFFER_SEND_USER_USERNAME": "🔗 @{username}", + "ADMIN_PROMO_OFFER_SKIPPED": "Skipped: {skipped} (already have access)", + "ADMIN_PROMO_OFFER_STACKABLE_NOTE": "The discount applies once and stacks with the promo group.", + "ADMIN_PROMO_OFFER_TEST_ACCESS": "Test servers", + "ADMIN_PROMO_OFFER_TEST_DURATION": "Access: {hours} h", + "ADMIN_PROMO_OFFER_TEST_SQUADS": "Squads: {squads}", + "ADMIN_PROMO_OFFER_TEST_SQUADS_EMPTY": "Squads: not specified", + "ADMIN_PROMO_OFFER_TEST_SQUAD_NAME": "Server: {name}", + "ADMIN_PROMO_OFFER_TYPE": "Type: {label}", + "ADMIN_PROMO_OFFER_VALID": "Validity: {hours} h", + "ADMIN_PROMO_SUBMENU_TITLE": "💰 **Promo codes and statistics**\n\n", + "ADMIN_PUBLIC_OFFER_ACTION_PROMPT": "Choose an action:", + "ADMIN_PUBLIC_OFFER_BACK_BUTTON": "⬅️ Back to offer settings", + "ADMIN_PUBLIC_OFFER_CANCEL": "❌ Cancel", + "ADMIN_PUBLIC_OFFER_CURRENT_PREVIEW": "Current text (preview):", + "ADMIN_PUBLIC_OFFER_DESCRIPTION": "The public offer is shown in the “Info” section.", + "ADMIN_PUBLIC_OFFER_DISABLED": "🚫 Offer disabled", + "ADMIN_PUBLIC_OFFER_DISABLE_BUTTON": "🚫 Disable display", + "ADMIN_PUBLIC_OFFER_EDIT_BUTTON": "✏️ Edit text", + "ADMIN_PUBLIC_OFFER_EDIT_CANCELLED": "Offer editing cancelled.", + "ADMIN_PUBLIC_OFFER_EDIT_HINT": "Use /html_help for the list of allowed tags.", + "ADMIN_PUBLIC_OFFER_EDIT_PROMPT": "Send a new public offer text. HTML markup is allowed.", + "ADMIN_PUBLIC_OFFER_EDIT_TITLE": "Public offer editing", + "ADMIN_PUBLIC_OFFER_ENABLED": "✅ Offer enabled", + "ADMIN_PUBLIC_OFFER_ENABLE_BUTTON": "✅ Enable display", + "ADMIN_PUBLIC_OFFER_HEADER": "📄 Public offer", + "ADMIN_PUBLIC_OFFER_HTML_ERROR": "❌ HTML error: {error}", + "ADMIN_PUBLIC_OFFER_HTML_HELP": "ℹ️ HTML help", + "ADMIN_PUBLIC_OFFER_LANGUAGE": "Language: {lang}", + "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY": "Text is not set yet.", + "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY_ALERT": "Offer text is not set yet.", + "ADMIN_PUBLIC_OFFER_PREVIEW_TITLE": "Text preview:", + "ADMIN_PUBLIC_OFFER_RETURN_TO_EDIT": "⬅️ Back to editing", + "ADMIN_PUBLIC_OFFER_SAVED": "✅ Public offer updated.", + "ADMIN_PUBLIC_OFFER_STATUS_DISABLED": "⚠️ Offer display is disabled or empty.", + "ADMIN_PUBLIC_OFFER_STATUS_ENABLED": "✅ Offer is active and visible to users.", + "ADMIN_PUBLIC_OFFER_STATUS_ENABLED_EMPTY": "⚠️ Offer is enabled but text is empty — users will not see it.", + "ADMIN_PUBLIC_OFFER_TOO_LONG": "❌ Offer text is too long. Maximum 4000 characters.", + "ADMIN_PUBLIC_OFFER_UPDATED_AT": "Last updated: {timestamp}", + "ADMIN_PUBLIC_OFFER_VIEW_BUTTON": "👀 View current text", + "ADMIN_PUBLIC_OFFER_VIEW_TITLE": "👀 Current offer text", + "ADMIN_PUBLIC_OFFER_VIEW_TRUNCATED": "\n\n⚠️ Text shortened for display. Users will see the full version in the menu.", + "ADMIN_REFERRALS": "🤝 Referral program", + "ADMIN_REFRESH": "🔄 Refresh", + "ADMIN_REMNAWAVE": "🖥️ Remnawave", + "ADMIN_REMNAWAVE_MANAGE_NODES": "🖥️ Manage nodes", + "ADMIN_REMNAWAVE_MANAGE_SQUADS": "🌐 Manage squads", + "ADMIN_REMNAWAVE_MIGRATION": "🚚 Migration", + "ADMIN_REMNAWAVE_SYNC": "🔄 Synchronization", + "ADMIN_REMNAWAVE_SYSTEM_STATS": "📊 System statistics", + "ADMIN_REMNAWAVE_TRAFFIC": "📈 Traffic", "ADMIN_REPORTS": "📊 Reports", + "ADMIN_REPORTS_LAST_MONTH": "📅 Last month", + "ADMIN_REPORTS_LAST_WEEK": "🗓️ Last week", + "ADMIN_REPORTS_PREVIOUS_DAY": "📆 Previous day", + "ADMIN_RULES": "📋 Rules", + "ADMIN_SERVERS_ADD": "➕ Add server", + "ADMIN_SERVERS_LIST": "📋 Server list", + "ADMIN_SERVERS_STATS": "📊 Statistics", + "ADMIN_SERVERS_SYNC": "🔄 Synchronization", + "ADMIN_SERVER_DELETE": "🗑️ Delete", + "ADMIN_SERVER_DISABLE": "❌ Disable", + "ADMIN_SERVER_EDIT_COUNTRY": "🌍 Country", + "ADMIN_SERVER_EDIT_DESCRIPTION": "📝 Description", + "ADMIN_SERVER_EDIT_LIMIT": "👥 Limit", + "ADMIN_SERVER_EDIT_NAME": "✏️ Name", + "ADMIN_SERVER_EDIT_PRICE": "💰 Price", + "ADMIN_SERVER_ENABLE": "✅ Enable", + "ADMIN_SETTINGS_BOT_CONFIG": "🧩 Bot configuration", + "ADMIN_SETTINGS_FAQ": "❓ FAQ", + "ADMIN_SETTINGS_MAINTENANCE": "🔧 Maintenance", + "ADMIN_SETTINGS_PRIVACY_POLICY": "🛡️ Privacy policy", + "ADMIN_SETTINGS_PUBLIC_OFFER": "📄 Public offer", + "ADMIN_SETTINGS_SUBMENU_DESCRIPTION": "Manage Remnawave, monitoring and other settings:", + "ADMIN_SETTINGS_SUBMENU_TITLE": "⚙️ **System settings**\n\n", + "ADMIN_SQUAD_ADD_ALL": "👥 Add all users", + "ADMIN_SQUAD_DELETE": "🗑️ Delete squad", + "ADMIN_SQUAD_EDIT": "✏️ Edit", + "ADMIN_SQUAD_EDIT_INBOUNDS": "🔧 Edit inbounds", + "ADMIN_SQUAD_MIGRATION_API_ERROR": "❌ Remnawave API is not configured: {error}", + "ADMIN_SQUAD_MIGRATION_BACK_BUTTON": "⬅️ Back to Remnawave", + "ADMIN_SQUAD_MIGRATION_CANCELLED": "❌ Migration cancelled.", + "ADMIN_SQUAD_MIGRATION_CHANGE_TARGET": "🔄 Change destination", + "ADMIN_SQUAD_MIGRATION_CONFIRM_BUTTON": "✅ Confirm", + "ADMIN_SQUAD_MIGRATION_CONFIRM_COUNT": "• Users to migrate: {count}", + "ADMIN_SQUAD_MIGRATION_CONFIRM_DETAILS": "Review the migration parameters:", + "ADMIN_SQUAD_MIGRATION_CONFIRM_PROMPT": "Confirm the operation.", + "ADMIN_SQUAD_MIGRATION_CONFIRM_SOURCE": "• From: {source}", + "ADMIN_SQUAD_MIGRATION_CONFIRM_TARGET": "• To: {target}", + "ADMIN_SQUAD_MIGRATION_ERROR": "❌ Failed to migrate (code: {code}). {details}", + "ADMIN_SQUAD_MIGRATION_IN_PROGRESS": "Starting migration...", + "ADMIN_SQUAD_MIGRATION_NEW_BUTTON": "🔁 New migration", + "ADMIN_SQUAD_MIGRATION_NO_OPTIONS": "No squads available. Add new ones or cancel the operation.", + "ADMIN_SQUAD_MIGRATION_PAGE": "Page {page}/{pages}", + "ADMIN_SQUAD_MIGRATION_PAGE_HINT": "This is the current page.", + "ADMIN_SQUAD_MIGRATION_RESULT_PANEL_FAILED": "Panel update failed: {count}", + "ADMIN_SQUAD_MIGRATION_RESULT_PANEL_UPDATED": "Updated in panel: {count}", + "ADMIN_SQUAD_MIGRATION_RESULT_TOTAL": "Subscriptions matched: {count}", + "ADMIN_SQUAD_MIGRATION_RESULT_UPDATED": "Migrated: {count}", + "ADMIN_SQUAD_MIGRATION_SAME_SQUAD": "You can't choose the same squad.", + "ADMIN_SQUAD_MIGRATION_SELECTED_SOURCE": "Source: {source}", + "ADMIN_SQUAD_MIGRATION_SELECT_SOURCE": "Choose the squad you want to migrate from:", + "ADMIN_SQUAD_MIGRATION_SELECT_TARGET": "Choose the destination squad:", + "ADMIN_SQUAD_MIGRATION_SERVER_LABEL": "{name} — 👥 {users} ({status})", + "ADMIN_SQUAD_MIGRATION_SQUAD_BUTTON": "🌍 {name} — 👥 {users} ({status})", + "ADMIN_SQUAD_MIGRATION_SQUAD_NOT_FOUND": "Squad not found or unavailable.", + "ADMIN_SQUAD_MIGRATION_STATUS_AVAILABLE": "✅ Available", + "ADMIN_SQUAD_MIGRATION_STATUS_AVAILABLE_SHORT": "✅", + "ADMIN_SQUAD_MIGRATION_STATUS_UNAVAILABLE": "🚫 Unavailable", + "ADMIN_SQUAD_MIGRATION_STATUS_UNAVAILABLE_SHORT": "🚫", + "ADMIN_SQUAD_MIGRATION_SUCCESS_TITLE": "✅ Migration completed", + "ADMIN_SQUAD_MIGRATION_TARGET_EMPTY": "No other squads available. Cancel or create new squads.", + "ADMIN_SQUAD_MIGRATION_TITLE": "🚚 Squad migration", + "ADMIN_SQUAD_REMOVE_ALL": "❌ Remove all users", + "ADMIN_SQUAD_RENAME": "✏️ Rename", + "ADMIN_STATISTICS": "📊 Statistics", + "ADMIN_STATS_BUTTON": "📊 Statistics", + "ADMIN_STATS_REFERRALS": "🤝 Referrals", + "ADMIN_STATS_REVENUE": "💰 Revenue", + "ADMIN_STATS_SUBSCRIPTIONS": "📱 Subscriptions", + "ADMIN_STATS_SUMMARY": "📊 Summary", + "ADMIN_STATS_USERS": "👥 Users", + "ADMIN_SUBMENU_SELECT_SECTION": "Choose a section:", + "ADMIN_SUBSCRIPTIONS": "📱 Subscriptions", + "ADMIN_SUBSCRIPTIONS_ALL": "📱 All subscriptions", + "ADMIN_SUBSCRIPTIONS_COUNTRIES": "🌍 Manage countries", + "ADMIN_SUBSCRIPTIONS_EXPIRING": "⏰ Expiring soon", + "ADMIN_SUBSCRIPTIONS_PRICING": "⚙️ Pricing settings", + "ADMIN_SUPPORT_ASSIGN_MODERATOR_PROMPT": "🧑‍⚖️ Assign moderator\n\nSend the user's Telegram ID (number)", + "ADMIN_SUPPORT_AUDIT": "🧾 Moderator audit", + "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_PERM": "Permanent block", + "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_TIMED": "Timed block", + "ADMIN_SUPPORT_AUDIT_ACTION_CLOSE_TICKET": "Ticket closed", + "ADMIN_SUPPORT_AUDIT_ACTION_UNBLOCK": "Unblock", + "ADMIN_SUPPORT_AUDIT_EMPTY": "Nothing here yet", + "ADMIN_SUPPORT_AUDIT_ROLE_ADMIN": "Admin", + "ADMIN_SUPPORT_AUDIT_ROLE_MODERATOR": "Moderator", + "ADMIN_SUPPORT_AUDIT_TITLE": "🧾 Moderator audit", + "ADMIN_SUPPORT_DESCRIPTION_SENT": "Description sent below", + "ADMIN_SUPPORT_DESCRIPTION_UPDATED": "✅ Description updated.", + "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_HINT": "Add to the description if needed.", + "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_TITLE": "Contact for \"Contact\" mode", + "ADMIN_SUPPORT_EDIT_DESCRIPTION_CURRENT": "Current description:", + "ADMIN_SUPPORT_EDIT_DESCRIPTION_TITLE": "📝 Editing support description", + "ADMIN_SUPPORT_INVALID_TELEGRAM_ID": "❌ Enter a valid Telegram ID (number)", + "ADMIN_SUPPORT_MESSAGE_DELETED": "Message deleted", + "ADMIN_SUPPORT_MODERATION_DESCRIPTION": "Access to support tickets.", + "ADMIN_SUPPORT_MODERATION_TITLE": "🧑‍⚖️ Support moderation", + "ADMIN_SUPPORT_MODERATORS_EMPTY": "List is empty", + "ADMIN_SUPPORT_MODERATORS_TITLE": "🧑‍⚖️ Moderators", + "ADMIN_SUPPORT_MODERATOR_ADDED_FAIL": "❌ Failed to assign moderator", + "ADMIN_SUPPORT_MODERATOR_ADDED_SUCCESS": "✅ User {tid} assigned as moderator", + "ADMIN_SUPPORT_MODERATOR_REMOVED_FAIL": "❌ Failed to remove moderator", + "ADMIN_SUPPORT_MODERATOR_REMOVED_SUCCESS": "✅ Moderator {tid} removed", + "ADMIN_SUPPORT_REMOVE_MODERATOR_PROMPT": "🧑‍⚖️ Remove moderator\n\nSend the user's Telegram ID (number)", + "ADMIN_SUPPORT_SEND_DESCRIPTION": "📨 Send description", + "ADMIN_SUPPORT_SETTINGS": "🛟 Support settings", + "ADMIN_SUPPORT_SETTINGS_ADD_MODERATOR": "➕ Assign moderator", + "ADMIN_SUPPORT_SETTINGS_ADMIN_NOTIFICATIONS": "Admin notifications", + "ADMIN_SUPPORT_SETTINGS_DESCRIPTION": "Working hours and menu visibility. Current support menu description:", + "ADMIN_SUPPORT_SETTINGS_EDIT_DESCRIPTION": "📝 Edit description", + "ADMIN_SUPPORT_SETTINGS_MENU_LABEL": "\"Support\" menu item", + "ADMIN_SUPPORT_SETTINGS_MODERATORS_COUNT": "🧑‍⚖️ Moderators: {count}", + "ADMIN_SUPPORT_SETTINGS_MODE_BOTH": "Both", + "ADMIN_SUPPORT_SETTINGS_MODE_CONTACT": "Contact", + "ADMIN_SUPPORT_SETTINGS_MODE_TICKETS": "Tickets", + "ADMIN_SUPPORT_SETTINGS_REMOVE_MODERATOR": "➖ Remove moderator", + "ADMIN_SUPPORT_SETTINGS_SLA_LABEL": "SLA", + "ADMIN_SUPPORT_SETTINGS_SLA_TIME": "⏳ SLA time: {minutes} min", + "ADMIN_SUPPORT_SETTINGS_STATUS_DISABLED": "Disabled", + "ADMIN_SUPPORT_SETTINGS_STATUS_ENABLED": "Enabled", + "ADMIN_SUPPORT_SETTINGS_TITLE": "🛟 Support settings", + "ADMIN_SUPPORT_SETTINGS_USER_NOTIFICATIONS": "User notifications", + "ADMIN_SUPPORT_SLA_INVALID": "❌ Enter a valid number of minutes (1-1440)", + "ADMIN_SUPPORT_SLA_SAVED": "✅ SLA value saved", + "ADMIN_SUPPORT_SLA_SETUP_PROMPT": "⏳ SLA configuration\n\nEnter the response wait time in minutes (integer > 0):", + "ADMIN_SUPPORT_SUBMENU_DESCRIPTION": "Manage tickets and support settings:", + "ADMIN_SUPPORT_SUBMENU_DESCRIPTION_MODERATOR": "Ticket access only.", + "ADMIN_SUPPORT_SUBMENU_TITLE": "🛟 **Support**\n\n", + "ADMIN_SUPPORT_TICKETS": "🎫 Support tickets", + "ADMIN_SYNC_BACK": "⬅️ Back to sync", + "ADMIN_SYNC_CLEANUP": "🧹 Cleanup", + "ADMIN_SYNC_CONFIRM": "✅ Confirm", + "ADMIN_SYNC_FULL": "🔄 Full sync", + "ADMIN_SYNC_ONLY_NEW": "🆕 Only new", + "ADMIN_SYNC_RECOMMENDATIONS": "💡 Recommendations", + "ADMIN_SYNC_RETRY": "🔄 Retry", + "ADMIN_SYNC_UPDATE": "📈 Update data", + "ADMIN_SYNC_VALIDATE": "🔍 Validate", + "ADMIN_SYSTEM_BACKUPS": "🗄️ Backups", + "ADMIN_SYSTEM_LOGS": "🧾 Logs", + "ADMIN_SYSTEM_SUBMENU_DESCRIPTION": "Reports, updates, logs, backups and system operations:", + "ADMIN_SYSTEM_SUBMENU_TITLE": "🛠️ **System tools**\n\n", + "ADMIN_SYSTEM_UPDATES": "📄 Updates", "ADMIN_TICKETS_TITLE": "🎫 All support tickets:", "ADMIN_TICKETS_TITLE_CLOSED": "🎫 Closed support tickets:", "ADMIN_TICKETS_TITLE_OPEN": "🎫 Open support tickets:", "ADMIN_TICKET_REPLY_INPUT": "Enter support reply:", "ADMIN_TICKET_REPLY_SENT": "✅ Reply sent!", + "ADMIN_USERS": "👥 Users", + "ADMIN_USERS_ALL": "👥 All users", + "ADMIN_USERS_FILTERS": "⚙️ Filters", + "ADMIN_USERS_FILTER_ACTIVITY": "🕒 By activity", + "ADMIN_USERS_FILTER_BALANCE": "💰 By balance", + "ADMIN_USERS_FILTER_CAMPAIGN": "📢 By campaign", + "ADMIN_USERS_FILTER_PURCHASES": "🛒 By purchases", + "ADMIN_USERS_FILTER_SPENDING": "💳 By spending", + "ADMIN_USERS_FILTER_TRAFFIC": "📶 By traffic", + "ADMIN_USERS_INACTIVE": "🗑️ Inactive", + "ADMIN_USERS_SEARCH": "🔍 Search", + "ADMIN_USERS_SUBMENU_TITLE": "👥 **User and subscription management**\n\n", + "ADMIN_USER_ALREADY_DELETED": "❌ User deleted", + "ADMIN_USER_BALANCE": "💰 Balance", + "ADMIN_USER_BLOCK": "🚫 Block", + "ADMIN_USER_DELETE": "🗑️ Delete", + "ADMIN_USER_LAST_ACTIVITY_UNKNOWN": "Unknown", + "ADMIN_USER_MANAGEMENT_PROFILE": "👤 User management\n\nMain information:\n• Name: {name}\n• ID: {telegram_id}\n• Username: {username}\n• Status: {status}\n• Language: {language}\n\nFinances:\n• Balance: {balance}\n• Transactions: {transactions}\n\nActivity:\n• Registration: {registration}\n• Last activity: {last_activity}\n• Days since registration: {registration_days}", + "ADMIN_USER_MANAGEMENT_PROMO_GROUP": "Promo group:\n• Name: {name}\n• Server discount: {server_discount}%\n• Traffic discount: {traffic_discount}%\n• Device discount: {device_discount}%", + "ADMIN_USER_MANAGEMENT_PROMO_GROUP_NONE": "Promo group: Not assigned", + "ADMIN_USER_MANAGEMENT_SUBSCRIPTION": "Subscription:\n• Type: {type}\n• Status: {status}\n• Until: {end_date}\n• Traffic: {traffic}\n• Devices: {devices}\n• Countries: {countries}", + "ADMIN_USER_MANAGEMENT_SUBSCRIPTION_NONE": "Subscription: None", + "ADMIN_USER_PROMO_GROUP_ALREADY": "ℹ️ The user is already in this promo group.", + "ADMIN_USER_PROMO_GROUP_BACK": "⬅️ Back to user", + "ADMIN_USER_PROMO_GROUP_BUTTON": "👥 Promo group", + "ADMIN_USER_PROMO_GROUP_CURRENT": "Current group: {name}", + "ADMIN_USER_PROMO_GROUP_CURRENT_NONE": "Current group: not assigned", + "ADMIN_USER_PROMO_GROUP_DISCOUNTS": "Discounts — servers: {servers}%, traffic: {traffic}%, devices: {devices}%", + "ADMIN_USER_PROMO_GROUP_DISCOUNTS_NONE": "No discounts configured.", + "ADMIN_USER_PROMO_GROUP_ERROR": "❌ Failed to update the user's promo group.", + "ADMIN_USER_PROMO_GROUP_SELECT": "Select a promo group to assign:", + "ADMIN_USER_PROMO_GROUP_TITLE": "👥 User promo group", + "ADMIN_USER_PROMO_GROUP_UPDATED": "✅ User promo group updated: “{name}”", + "ADMIN_USER_STATISTICS": "📊 Statistics", + "ADMIN_USER_STATUS_ACTIVE": "✅ Active", + "ADMIN_USER_STATUS_BLOCKED": "🚫 Blocked", + "ADMIN_USER_STATUS_DELETED": "🗑️ Deleted", + "ADMIN_USER_STATUS_UNKNOWN": "❓ Unknown", + "ADMIN_USER_SUBSCRIPTION_SETTINGS": "📱 Subscription & settings", + "ADMIN_USER_SUBSCRIPTION_STATUS_ACTIVE": "✅ Active", + "ADMIN_USER_SUBSCRIPTION_STATUS_INACTIVE": "❌ Inactive", + "ADMIN_USER_SUBSCRIPTION_TYPE_PAID": "💎 Paid", + "ADMIN_USER_SUBSCRIPTION_TYPE_TRIAL": "🎁 Trial", + "ADMIN_USER_TRAFFIC_USAGE": "{used}/{limit} GB", + "ADMIN_USER_TRANSACTIONS": "📋 Transactions", + "ADMIN_USER_UNBLOCK": "✅ Unblock", + "ADMIN_USER_USERNAME_NOT_SET": "not set", + "ADMIN_WELCOME_DISABLE": "🔴 Disable", + "ADMIN_WELCOME_EDIT": "📝 Edit text", + "ADMIN_WELCOME_ENABLE": "🟢 Enable", + "ADMIN_WELCOME_HTML": "🏷️ HTML formatting", + "ADMIN_WELCOME_PLACEHOLDERS": "💡 Placeholders", + "ADMIN_WELCOME_PREVIEW": "👁️ Preview", + "ADMIN_WELCOME_RESET": "🔄 Reset", + "ADMIN_WELCOME_SHOW": "👁️ Show current", + "ALREADY_REGISTERED_REFERRAL": "ℹ️ You are already registered. A referral link cannot be applied.", "ATTACHMENTS_SENT": "✅ Attachments sent.", + "AUTOPAY_BUTTON": "💳 Auto payment", + "AUTOPAY_DAYS_SET": "✅ Set to {days} days!", + "AUTOPAY_DISABLED_TEXT": "Disabled — don't forget to renew manually!", + "AUTOPAY_ENABLED_TEXT": "Enabled — the subscription will renew automatically", + "AUTOPAY_FAILED": "\n❌ Autopay failed\n\nWe couldn't charge the renewal payment.\nBalance available: {balance}\nRequired: {required}\n\nPlease top up your balance and renew manually.\n", + "AUTOPAY_MENU_TEXT": "💳 Auto payment\n\n📊 Status: {status}\n⏰ Charge: {days} days before expiry\n\nChoose an action:", + "AUTOPAY_SELECT_DAYS_PROMPT": "⏰ Choose how many days before expiry to charge the payment:", + "AUTOPAY_SET_DAYS_BUTTON": "⚙️ Configure days", + "AUTOPAY_STATUS_DISABLED": "disabled", + "AUTOPAY_STATUS_ENABLED": "enabled", + "AUTOPAY_SUCCESS": "\n✅ Autopay completed\n\nYour subscription was automatically renewed for {days} days.\nCharged from balance: {amount}\n", + "AUTOPAY_TOGGLE_SUCCESS": "✅ Autopay {status}!", + "BACK": "⬅️ Back", + "BACK_TO_MAIN_MENU_BUTTON": "⬅️ Back to main menu", "BACK_TO_MENU": "🏠 Back to menu", "BACK_TO_OPEN_TICKETS": "🔴 Open tickets", + "BACK_TO_SUBSCRIPTION": "⬅️ Back to subscription", "BACK_TO_SUPPORT": "⬅️ Back to support", "BACK_TO_TICKETS": "⬅️ Back to tickets", + "BALANCE_BUTTON": "💰 Balance: {balance}", + "BALANCE_BUTTON_DEFAULT": "💰 Balance: {balance}", + "BALANCE_BUTTON_ZERO": "💰 Balance: 0 ₽", + "BALANCE_HISTORY": "📊 Transaction history", + "BALANCE_INFO": "\n💰 Balance: {balance}\n\nChoose an action:\n", + "BALANCE_SUPPORT_REQUEST": "🛠️ Request via support", "BALANCE_TOPUP": "💳 Top up balance", + "BALANCE_TOPUP_CART_REMINDER_DETAILED": "\\n💡 Balance top-up required\\n\\nYour cart contains items totaling {total_amount}, but your current balance is insufficient.\\n\\n💳 Top up your balance to complete the purchase.\\n\\nChoose a top-up method:", + "BALANCE_TOP_UP": "💳 Top up", "BLOCK_BY_TIME": "⏳ Temporary block", "BLOCK_FOREVER": "🚫 Block permanently", + "BUY_SUBSCRIPTION_START": "\n💎 Subscription setup\n\nLet's configure a plan that fits you.\n\nFirst, choose the subscription period:\n", + "CAMPAIGN_BONUS_BALANCE": "🎉 You received {amount} for registering via the \"{name}\" campaign!", + "CAMPAIGN_BONUS_SUBSCRIPTION": "🎉 You’ve been granted a {days}-day subscription (traffic: {traffic}, devices: {devices}) from the \"{name}\" campaign!", + "CAMPAIGN_EXISTING_USER": "ℹ️ This promo link is available only to new users.", "CAMPAIGN_EXISTING_USERL": "ℹ️ This promotional link is available to new users only.", + "CANCEL": "❌ Cancel", "CANCEL_REPLY": "❌ Cancel reply", "CANCEL_TICKET_CREATION": "❌ Cancel ticket creation", + "CHANGE_DEVICES_BUTTON": "📱 Change devices", + "CHANGE_DEVICES_CONFIRM": "\n📱 Confirm change\n\nCurrent amount: {current_devices} devices\nNew amount: {new_devices} devices\n\nAction: {action}\n💰 {cost}\n\nApply this change?\n", + "CHANGE_DEVICES_INFO": "\n📱 Adjust device limit\n\nCurrent limit: {current_devices} devices\n\nChoose the new number of devices:\n\n💡 Important:\n• Increasing — extra charge proportional to the remaining time\n• Decreasing — funds are not refunded\n", + "CHANGE_DEVICES_PROMPT": "📱 Adjust device limit\n\nCurrent limit: {current_devices} devices\nChoose the new number of devices:\n\n💡 Important:\n• Increasing — extra cost prorated by remaining time\n• Decreasing — payments are not refunded", + "CHANGE_DEVICES_SUCCESS_DECREASE": "\n✅ Device limit decreased!\n\n📱 Was: {old_count} → Now: {new_count}\nℹ️ Payments are not refunded\n", + "CHANGE_DEVICES_SUCCESS_INCREASE": "\n✅ Device limit increased!\n\n📱 Was: {old_count} → Now: {new_count}\n💰 Charged: {amount}\n", + "CHANGE_DEVICES_TITLE": "📱 Change device limit", + "CHANNEL_CHECK_BUTTON": "✅ I have joined", + "CHANNEL_REQUIRED_TEXT": "🔒 Please join the announcement channel to access the bot, then press the button below.", + "CHANNEL_SUBSCRIBE_BUTTON": "🔗 Subscribe", + "CHANNEL_SUBSCRIBE_REQUIRED_ALERT": "❌ You haven't joined the channel!", + "CHANNEL_SUBSCRIBE_THANKS": "✅ Thanks for subscribing", + "CHECK_STATUS_BUTTON": "📊 Check status", + "CHOOSE_ANOTHER_DEVICE": "📱 Choose another device", "CLOSED_TICKETS": "🟢 Closed", "CLOSED_TICKETS_HEADER": "🟢 Closed tickets", "CLOSED_TICKETS_TITLE": "🟢 Closed tickets:", "CLOSE_NOTIFICATION": "❌ Close notification", "CLOSE_TICKET": "🔒 Close ticket", + "CONFIRM": "✅ Confirm", + "CONFIRM_CHANGE_BUTTON": "✅ Confirm change", + "CONNECT_BUTTON": "🔗 Connect", + "CONTACT_SUPPORT": "💬 Contact support", "CONTACT_SUPPORT_BUTTON": "💬 Contact support", + "CONTINUE": "➡️ Continue", + "CONTINUE_BUTTON": "➡️ Continue", + "COPY_SUBSCRIPTION_LINK": "📋 Copy subscription link", + "COUNTRY_CHANGES_ACTIVE_COUNT": "🌐 Active countries: {count}", + "COUNTRY_CHANGES_ADDED_HEADER": "➕ Added countries:\n", + "COUNTRY_CHANGES_CHARGED": "💰 Charged: {amount} (for {months} mo)", + "COUNTRY_CHANGES_DISCOUNT_INFO": " (discount {percent}%: -{amount})", + "COUNTRY_CHANGES_NOT_FOUND": "⚠️ No changes detected", + "COUNTRY_CHANGES_REMOVED_HEADER": "➖ Removed countries:\n", + "COUNTRY_CHANGES_REMOVED_WARNING": "ℹ️ Reconnecting later will be charged", + "COUNTRY_CHANGES_SUCCESS_HEADER": "✅ Countries updated!\n\n", + "COUNTRY_MANAGEMENT_NONE": "No countries connected", + "COUNTRY_MANAGEMENT_PROMPT": "🌍 Manage subscription countries\n\n📋 Current countries ({current_count}):\n{current_list}\n\n💡 How it works:\n✅ — currently connected\n➕ — will be added (paid)\n➖ — will be removed (free)\n⚪ — not selected\n\n⚠️ Important: Reconnecting removed countries will be charged again!", + "COUNTRY_MANAGEMENT_UNAVAILABLE": "ℹ️ Server management is unavailable — only one server is accessible", + "COUNTRY_NOT_AVAILABLE_PROMOGROUP": "❌ This server is not available for your promo group", + "CREATE_INVITE": "📝 Create invite", + "CREATE_INVITE_BUTTON": "📝 Create invite", "CREATE_TICKET_BUTTON": "🎫 Create ticket", + "CUSTOM_MINIAPP_URL_NOT_SET": "⚠ Custom mini-app link is not configured", "DELETE_MESSAGE": "🗑 Delete", + "DEVICES_INSUFFICIENT_BALANCE": "⚠️ Insufficient balance!\nRequired: {required} (for {months} mo)\nYou have: {balance}", + "DEVICES_LIMIT_EXCEEDED": "⚠️ Maximum device limit exceeded ({limit})", + "DEVICES_MINIMUM_LIMIT": "⚠️ Minimum number of devices: {limit}", + "DEVICES_NO_CHANGE": "ℹ️ Device limit was not changed", + "DEVICE_CHANGE_ACTION_DECREASE": "decrease to {count}", + "DEVICE_CHANGE_ACTION_INCREASE": "increase to {count}", + "DEVICE_CHANGE_CHARGED": "💰 Charged: {amount}", + "DEVICE_CHANGE_CONFIRMATION": "📱 Confirm change\n\nCurrent amount: {current} devices\nNew amount: {new} devices\n\nAction: {action}\n💰 {cost}\n\nApply this change?", + "DEVICE_CHANGE_DECREASE_SUCCESS": "✅ Device limit decreased!\n\n", + "DEVICE_CHANGE_DISCOUNT_INFO": " (discount {percent}%: -{amount})", + "DEVICE_CHANGE_EXTRA_COST": "Extra payment: {amount} (for {months} mo)", + "DEVICE_CHANGE_FREE": "Free", + "DEVICE_CHANGE_INCREASE_SUCCESS": "✅ Device limit increased!\n\n", + "DEVICE_CHANGE_NO_REFUND": "Payments are not refunded", + "DEVICE_CHANGE_NO_REFUND_INFO": "ℹ️ Payments are not refunded", + "DEVICE_CHANGE_RESULT_LINE": "📱 Was: {old} → Now: {new}\n", + "DEVICE_CONNECTION_HELP": "❓ How to reconnect a device?", + "DEVICE_FETCH_ERROR": "❌ Failed to load devices", + "DEVICE_FETCH_INFO_ERROR": "❌ Failed to load device information", + "DEVICE_GUIDE_ANDROID": "🤖 Android", + "DEVICE_GUIDE_ANDROID_TV": "📺 Android TV", + "DEVICE_GUIDE_APPLE_TV": "📺 Apple TV", + "DEVICE_GUIDE_IOS": "📱 iOS (iPhone/iPad)", + "DEVICE_GUIDE_MAC": "🎯 macOS", + "DEVICE_GUIDE_WINDOWS": "💻 Windows", + "DEVICE_LIST_FETCH_ERROR": "❌ Failed to load device list", + "DEVICE_MANAGEMENT_ACTIONS": "\n💡 Actions:\n• Select a device to reset\n• Or reset all devices at once", + "DEVICE_MANAGEMENT_CONNECTED_HEADER": "Connected devices:\n", + "DEVICE_MANAGEMENT_LIST_ITEM": "• {device}\n", + "DEVICE_MANAGEMENT_OVERVIEW": "🔄 Device management\n\n📊 Total connected: {total} devices\n📄 Page {page} of {pages}\n\n", + "DEVICE_NONE_CONNECTED": "ℹ️ You have no connected devices", + "DEVICE_PAGE_LOAD_ERROR": "❌ Failed to open the page", + "DEVICE_RESET_ALL_DONE": "ℹ️ All devices have been reset", + "DEVICE_RESET_ALL_FAILED_MESSAGE": "❌ Couldn't reset devices\n\nPlease try again later or contact support.\n\nTotal devices: {total}", + "DEVICE_RESET_ALL_SUCCESS_MESSAGE": "✅ All devices have been reset!\n\n🔄 Reset: {count} devices\n📱 You can now reconnect your devices\n\n💡 Use the link from the 'My subscription' section to reconnect", + "DEVICE_RESET_ERROR": "❌ Failed to reset the device", + "DEVICE_RESET_ID_FAILED": "❌ Unable to get device ID", + "DEVICE_RESET_INVALID_REQUEST": "❌ Error: invalid request", + "DEVICE_RESET_NOT_FOUND": "❌ Device not found", + "DEVICE_RESET_PARSE_ERROR": "❌ Failed to process the request", + "DEVICE_RESET_PARTIAL_MESSAGE": "⚠️ Devices reset partially\n\n✅ Removed: {success} devices\n❌ Failed to remove: {failed} devices\n\nTry again or contact support.", + "DEVICE_RESET_SUCCESS": "✅ Device {device} has been reset!", + "DEVICE_UUID_NOT_FOUND": "❌ User UUID not found", + "DISABLE_BUTTON": "❌ Disable", "DISCOUNT_BONUS_DESCRIPTION": "Renewal discount bonus", - "SUBSCRIPTION_SUMMARY_PROMO_DISCOUNT": "- Promo offer: -{amount} ({percent}% extra)", - "SUBSCRIPTION_PROMO_DISCOUNT_NOTE": "⚡ Extra discount {percent}%: -{amount}", - "SUBSCRIPTION_PROMO_DISCOUNT_HINT": "⚡ Extra {percent}% discount is active and will apply automatically. It stacks with other discounts.", - "SUBSCRIPTION_PROMO_DISCOUNT_TIMER": "⏳ Discount active for {time_left}\n{bar}", "DISCOUNT_CLAIM_ALREADY": "ℹ️ This discount has already been activated.", "DISCOUNT_CLAIM_ERROR": "❌ Failed to activate the discount. Please try again later.", - "PROMO_OFFER_CLOSE": "❌ Close", "DISCOUNT_CLAIM_EXPIRED": "⚠️ The offer has expired.", "DISCOUNT_CLAIM_NOT_FOUND": "❌ Offer not found.", "DISCOUNT_CLAIM_SUCCESS": "🎉 Discount of {percent}% activated! It will be applied automatically to your next payment.", - "TEST_ACCESS_ALREADY_CONNECTED": "ℹ️ This server is already connected to your subscription.", + "ENABLE_BUTTON": "✅ Enable", "ENTER_BLOCK_MINUTES": "Enter the number of minutes to block the user (e.g., 15):", + "ERROR": "❌ An error occurred", + "ERROR_RULES_RETRY": "An error occurred. Please try accepting the rules again:", + "ERROR_TRY_AGAIN": "❌ An error occurred. Please try again.", + "FAQ_BACK_TO_LIST": "⬅️ Back to FAQ list", + "FAQ_HEADER": "❓ FAQ", + "FAQ_NOT_AVAILABLE": "FAQ is temporarily unavailable.", + "FAQ_PAGES_PROMPT": "Select a topic:", + "FAQ_PAGE_EMPTY": "Content for this page has not been added yet.", + "FAQ_PAGE_FOOTER": "Page {current} of {total}", + "FAQ_PAGE_NOT_AVAILABLE": "This FAQ page is not available.", + "FAQ_PAGE_TITLE": "{title}", + "FAQ_PAGE_UNTITLED": "Untitled", + "GO_TO_BALANCE_TOP_UP": "💳 Go to balance top up", + "HAPP_DOWNLOAD_BUTTON": "⬇️ Download Happ", + "HAPP_DOWNLOAD_LINK_MESSAGE": "⬇️ Download Happ for {platform}:", + "HAPP_DOWNLOAD_LINK_NOT_SET": "❌ Download link for this device is not configured", + "HAPP_DOWNLOAD_OPEN_LINK": "🔗 Open link", + "HAPP_DOWNLOAD_PROMPT": "📥 Download Happ\nChoose your device:", + "HAPP_PLATFORM_ANDROID": "🤖 Android", + "HAPP_PLATFORM_IOS": "🍎 iOS", + "HAPP_PLATFORM_MACOS": "🖥️ Mac OS", + "HAPP_PLATFORM_PC": "💻 PC", + "HAPP_PLATFORM_WINDOWS": "💻 Windows", + "INSUFFICIENT_BALANCE": "❌ Insufficient balance.\n\nTop up {amount} and try again.", + "INVALID_AMOUNT": "❌ Invalid amount", + "LANGUAGE_PROMPT": "🌐 Choose the interface language:", + "LANGUAGE_SELECTED": "🌐 Interface language set: English", "LANGUAGE_SELECTION_DISABLED": "⚙️ Language selection is temporarily unavailable. Using the default language.", + "LOADING": "⏳ Loading...", + "MAINTENANCE_MODE_ACTIVE": "\n🔧 Maintenance in progress!\n\nThe service is temporarily unavailable while we improve performance.\n\n⏰ Estimated completion time: unknown\n🔄 Please try again later\n\nWe apologize for the inconvenience.\n", + "MAINTENANCE_MODE_API_ERROR": "\n🔧 Maintenance in progress!\n\nThe service is temporarily unavailable due to connection issues with the servers.\n\n⏰ We're working on it. Please try again in a few minutes.\n\n🔄 Last check: {last_check}\n", + "MAIN_MENU": "👤 {user_name}\n\n📱 Subscription: {subscription_status}\n\nChoose an option:\n", + "MAIN_MENU_ACTION_PROMPT": "Choose an option:", + "MAIN_MENU_BUTTON": "🏠 Main menu", + "MAIN_MENU_TEST_ACCESS_HEADER": "🧪 Test servers active: {servers}", + "MAIN_MENU_TEST_ACCESS_TIMER": "⏳ Access active for {time_left}\n{bar}", + "MANAGE_DEVICES_BUTTON": "🔧 Manage devices", "MARK_AS_ANSWERED": "✅ Mark as answered", + "MENU_ADMIN": "⚙️ Admin panel", + "MENU_BALANCE": "💰 Balance", + "MENU_BUY_SUBSCRIPTION": "💎 Buy subscription", + "MENU_EXTEND_SUBSCRIPTION": "⏰ Extend subscription", + "MENU_FAQ": "❓ FAQ", + "MENU_INFO": "ℹ️ Info", + "MENU_INFO_HEADER": "ℹ️ Info", + "MENU_INFO_PROMPT": "Choose a section:", + "MENU_LANGUAGE": "🌐 Language", + "MENU_PRIVACY_POLICY": "🛡️ Privacy policy", + "MENU_PROFILE": "👤 Personal account", + "MENU_PROFILE_UNAVAILABLE": "❗️ Personal account is not available yet. Please try again later.", + "MENU_PROMOCODE": "🎫 Promo code", + "MENU_PROMO_GROUPS_INFO": "🎯 Promo groups", + "MENU_PUBLIC_OFFER": "📄 Offer", + "MENU_REFERRALS": "🤝 Referral program", + "MENU_RULES": "📋 Service rules", + "MENU_SERVER_STATUS": "📊 Server status", + "MENU_SUBSCRIPTION": "📱 Subscription", + "MENU_SUPPORT": "🛠️ Support", + "MENU_TRIAL": "🎁 Trial subscription", + "MINIAPP_PURCHASE_BREAKDOWN_BASE": "Base plan", + "MINIAPP_PURCHASE_BREAKDOWN_DEVICES": "Devices", + "MINIAPP_PURCHASE_BREAKDOWN_DISCOUNT_NOTE": "Discount: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_BREAKDOWN_PROMO": "Promo discount", + "MINIAPP_PURCHASE_BREAKDOWN_SERVERS": "Servers", + "MINIAPP_PURCHASE_BREAKDOWN_TRAFFIC": "Traffic", + "MINIAPP_PURCHASE_DISCOUNT_DEVICES": "Devices discount: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_DISCOUNT_PERIOD": "Period discount: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_DISCOUNT_PROMO": "Promo offer: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_DISCOUNT_SERVERS": "Servers discount: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_DISCOUNT_TRAFFIC": "Traffic discount: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_STATUS_INSUFFICIENT": "Not enough funds on balance", + "MINIAPP_PURCHASE_SUMMARY_DISCOUNT": "You save {amount}", "MULENPAY_PAYMENT_ERROR": "❌ Failed to create Mulen Pay payment. Please try again later or contact support.", "MULENPAY_PAYMENT_INSTRUCTIONS": "💳 Mulen Pay payment\n\n💰 Amount: {amount}\n🆔 Payment ID: {payment_id}\n\n📱 How to pay:\n1. Press ‘Pay with Mulen Pay’\n2. Follow the instructions on the payment page\n3. Confirm the transfer\n4. Funds will be credited automatically\n\n❓ Need help? Contact {support}", "MULENPAY_PAY_BUTTON": "💳 Pay with Mulen Pay", "MULENPAY_TOPUP_PROMPT": "💳 Mulen Pay payment\n\nEnter an amount between 100 and 100,000 ₽.\nThe payment is processed by the secure Mulen Pay platform.", + "MY_BALANCE_BUTTON": "💰 My balance", + "MY_SUBSCRIPTION_BUTTON": "📱 My subscription", "MY_TICKETS_BUTTON": "📋 My tickets", "MY_TICKETS_TITLE": "📋 Your tickets:", + "NO": "❌ No", "NOTIFICATION_CLOSED": "Notification closed.", "NOTIFICATION_VALUE_INVALID": "❌ Invalid value, please enter a number.", "NOTIFICATION_VALUE_UPDATED": "✅ Settings updated.", @@ -612,43 +932,249 @@ "NOTIFY_PROMPT_THIRD_PERCENT": "Enter a new discount percentage for the late offer (0-100):", "NO_ATTACHMENTS": "No attachments.", "NO_CLOSED_TICKETS": "There are no closed tickets yet.", + "NO_SERVERS_AVAILABLE": "❌ No servers available", "NO_TICKETS": "You don't have any tickets yet.", "NO_TICKETS_ADMIN": "No tickets to display.", + "NO_TRAFFIC_PACKAGES": "❌ No packages available", "OPEN_TICKETS": "🔴 Open", "OPEN_TICKETS_HEADER": "🔴 Open tickets", + "OPERATION_CANCELLED": "❌ Operation cancelled", + "OTHER_APPS_BUTTON": "📋 Other apps", + "PAGINATION_NEXT": "➡️", + "PAGINATION_PREV": "⬅️", + "PAID_FEATURE_ONLY": "⚠ This feature is available only for paid subscriptions", + "PAID_FEATURE_ONLY_SHORT": "⚠ Paid subscriptions only", + "PAL24_CARD_PAY_BUTTON": "💳 Pay with a bank card (PayPalych)", + "PAL24_INSTRUCTION_BUTTON": "{step}. Press “{button}”", + "PAL24_INSTRUCTION_COMPLETE": "{step}. The funds will be credited automatically", + "PAL24_INSTRUCTION_CONFIRM": "{step}. Confirm the transfer", + "PAL24_INSTRUCTION_FOLLOW": "{step}. Follow the payment page instructions", "PAL24_PAYMENT_ERROR": "❌ Failed to create a PayPalych payment. Please try again later or contact support.", "PAL24_PAYMENT_INSTRUCTIONS": "🏦 PayPalych (SBP) payment\n\n💰 Amount: {amount}\n🆔 Invoice ID: {bill_id}\n\n📱 How to pay:\n1. Press ‘Pay with PayPalych (SBP)’\n2. Follow the system prompts\n3. Confirm the transfer\n4. Funds will be credited automatically\n\n❓ Need help? Contact {support}", "PAL24_PAY_BUTTON": "🏦 Pay with PayPalych (SBP)", + "PAL24_SBP_PAY_BUTTON": "🏦 Pay with PayPalych (SBP)", "PAL24_TOPUP_PROMPT": "🏦 PayPalych (SBP) payment\n\nEnter an amount between 100 and 1,000,000 ₽.\nThe payment is processed via the PayPalych Faster Payments System.", + "PAYMENTS_TEMPORARILY_UNAVAILABLE": "⚠️ Payment methods are temporarily unavailable", "PAYMENT_CARD_MULENPAY": "💳 Bank card (Mulen Pay)", - "PAYMENT_CARD_WATA": "💳 Bank card (WATA)", "PAYMENT_CARD_PAL24": "🏦 SBP (PayPalych)", + "PAYMENT_CARD_TRIBUTE": "💳 Bank card (Tribute)", + "PAYMENT_CARD_WATA": "💳 Bank card (WATA)", + "PAYMENT_CARD_YOOKASSA": "💳 Bank card (YooKassa)", + "PAYMENT_CHARGE_ERROR": "⚠️ Failed to charge the payment", + "PAYMENT_CRYPTOBOT": "🪙 Cryptocurrency (CryptoBot)", + "PAYMENT_METHODS_FOOTER": "Choose a top-up method:", + "PAYMENT_METHODS_ONLY_SUPPORT": "💳 Balance top-up methods\n\n⚠️ Automated payment methods are temporarily unavailable.\nContact support to top up your balance.\n\nChoose a top-up method:", + "PAYMENT_METHODS_PROMPT": "Choose the payment method that suits you:", + "PAYMENT_METHODS_TITLE": "💳 Balance top-up methods", + "PAYMENT_METHODS_UNAVAILABLE_ALERT": "⚠️ Automated payment methods are temporarily unavailable. Contact support to top up your balance.", + "PAYMENT_METHOD_CRYPTOBOT_DESCRIPTION": "via CryptoBot", + "PAYMENT_METHOD_CRYPTOBOT_NAME": "🪙 Cryptocurrency", "PAYMENT_METHOD_MULENPAY_DESCRIPTION": "via Mulen Pay", "PAYMENT_METHOD_MULENPAY_NAME": "💳 Bank card (Mulen Pay)", - "PAYMENT_METHOD_WATA_DESCRIPTION": "via WATA", - "PAYMENT_METHOD_WATA_NAME": "💳 Bank card (WATA)", "PAYMENT_METHOD_PAL24_DESCRIPTION": "via Faster Payments System", "PAYMENT_METHOD_PAL24_NAME": "🏦 SBP (PayPalych)", - "WATA_TOPUP_PROMPT": "💳 Pay via WATA\n\nEnter the amount to top up. Minimum amount — {min_amount}, maximum — {max_amount}.\nPayments are processed through the secure WATA form.", - "WATA_AMOUNT_TOO_LOW": "Minimum top-up amount: {amount}", - "WATA_AMOUNT_TOO_HIGH": "Maximum top-up amount: {amount}", - "WATA_PAYMENT_ERROR": "❌ Failed to create WATA payment. Please try again later or contact support.", - "WATA_PAY_BUTTON": "💳 Pay via WATA", - "WATA_PAYMENT_INSTRUCTIONS": "💳 Pay via WATA\n\n💰 Amount: {amount}\n🆔 Payment ID: {payment_id}\n\n📱 How to pay:\n1. Tap ‘Pay via WATA’\n2. Follow the gateway prompts\n3. Confirm the transfer\n4. Funds will be credited automatically\n\n❓ Need help? Contact {support}", - "WATA_STATUS_TITLE": "💳 WATA payment status", - "WATA_STATUS_OPENED": "Waiting for payment", - "WATA_STATUS_CLOSED": "Processing", - "WATA_STATUS_PAID": "Paid", - "WATA_STATUS_DECLINED": "Declined", - "WATA_STATUS_UNKNOWN": "Unknown", + "PAYMENT_METHOD_STARS_DESCRIPTION": "fast and convenient", + "PAYMENT_METHOD_STARS_NAME": "⭐ Telegram Stars", + "PAYMENT_METHOD_SUPPORT_DESCRIPTION": "other options", + "PAYMENT_METHOD_SUPPORT_NAME": "🛠️ Support team", + "PAYMENT_METHOD_TRIBUTE_DESCRIPTION": "via Tribute", + "PAYMENT_METHOD_TRIBUTE_NAME": "💳 Bank card", + "PAYMENT_METHOD_WATA_DESCRIPTION": "via WATA", + "PAYMENT_METHOD_WATA_NAME": "💳 Bank card (WATA)", + "PAYMENT_METHOD_YOOKASSA_DESCRIPTION": "via YooKassa", + "PAYMENT_METHOD_YOOKASSA_NAME": "💳 Bank card", + "PAYMENT_METHOD_YOOKASSA_SBP_DESCRIPTION": "via YooKassa Fast Payment System", + "PAYMENT_METHOD_YOOKASSA_SBP_NAME": "🏦 SBP (YooKassa)", + "PAYMENT_RETURN_HOME_BUTTON": "🏠 Main menu", + "PAYMENT_SBP_YOOKASSA": "🏦 Pay via SBP (YooKassa)", + "PAYMENT_TELEGRAM_STARS": "⭐ Telegram Stars", + "PAYMENT_VIA_SUPPORT": "🛠️ Via support", + "PAY_NOW_BUTTON": "💳 Pay", + "PAY_WITH_COINS_BUTTON": "🪙 Pay", + "PENDING_CANCEL_BUTTON": "⌛ Cancel", + "PERIOD_14_DAYS": "📅 14 days - {settings.format_price(settings.PRICE_14_DAYS)}", + "PERIOD_180_DAYS": "📅 180 days - {settings.format_price(settings.PRICE_180_DAYS)}", + "PERIOD_30_DAYS": "📅 30 days - {settings.format_price(settings.PRICE_30_DAYS)}", + "PERIOD_360_DAYS": "📅 360 days - {settings.format_price(settings.PRICE_360_DAYS)}", + "PERIOD_60_DAYS": "📅 60 days - {settings.format_price(settings.PRICE_60_DAYS)}", + "PERIOD_90_DAYS": "📅 90 days - {settings.format_price(settings.PRICE_90_DAYS)}", + "POST_REGISTRATION_TRIAL_BUTTON": "🚀 Activate free trial 🚀", + "PRIVACY_POLICY_EMPTY_ALERT": "The privacy policy text has not been provided yet.", + "PRIVACY_POLICY_HEADER": "🛡️ Privacy policy", + "PRIVACY_POLICY_NOT_AVAILABLE": "The privacy policy is temporarily unavailable.", + "PRIVACY_POLICY_PAGE_INFO": "Page {current} of {total}", + "PRIVACY_RESTRICTED_BUTTON_HINT": "⚠️ Telegram blocked the contact request button because of your privacy settings.\n\nAllow sharing your contact details in Telegram settings or send the required information manually in the chat.", + "PROMOCODE_EMPTY_INPUT": "❌ Please enter a valid promo code", + "PROMOCODE_ENTER": "🎫 Enter promo code", + "PROMOCODE_EXPIRED": "❌ Promo code has expired", + "PROMOCODE_INVALID": "❌ Invalid promo code", + "PROMOCODE_SUCCESS": "🎉 Promo code applied!", + "PROMOCODE_USED": "ℹ️ Promo code has already been used", + "PROMO_GROUPS_INFO_CURRENT_LEVEL": "🏆 Current level: {name}", + "PROMO_GROUPS_INFO_EMPTY": "Auto-assigned promo groups are not configured yet.", + "PROMO_GROUPS_INFO_HEADER": "🎯 Promo groups", + "PROMO_GROUPS_INFO_LEVELS_HEADER": "📋 Auto-assigned levels:", + "PROMO_GROUPS_INFO_LEVEL_LINE": "{status} {name} — from {amount}", + "PROMO_GROUPS_INFO_MAX_LEVEL": "🏆 You already have the highest discount level!", + "PROMO_GROUPS_INFO_NEXT_LEVEL": "📈 Until level “{name}”: spend {amount} more", + "PROMO_GROUPS_INFO_NO_LEVEL": "🏆 Current level: not unlocked yet", + "PROMO_GROUPS_INFO_TOTAL_SPENT": "💰 Spent in the bot: {amount}", + "PROMO_GROUP_DISCOUNTS_HEADER": "🎁 Your promo group discounts", + "PROMO_GROUP_DISCOUNT_DEVICES": "📱 Extra devices: {percent}%", + "PROMO_GROUP_DISCOUNT_SERVERS": "🌍 Servers: {percent}%", + "PROMO_GROUP_DISCOUNT_TRAFFIC": "📊 Traffic: {percent}%", + "PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Long-term period discounts:", + "PROMO_GROUP_PERIOD_DISCOUNT_ITEM": "{period} — {percent}%", + "PROMO_OFFER_CLOSE": "❌ Close", + "PUBLIC_OFFER_EMPTY_ALERT": "Public offer content is not provided yet.", + "PUBLIC_OFFER_HEADER": "📄 Public Offer", + "PUBLIC_OFFER_NOT_AVAILABLE": "Public offer is temporarily unavailable.", + "PUBLIC_OFFER_PAGE_INFO": "Page {current} of {total}", + "REFERRAL_ANALYTICS_BUTTON": "📊 Analytics", + "REFERRAL_ANALYTICS_EARNINGS_HEADER": "💰 Earnings by period:", + "REFERRAL_ANALYTICS_EARNINGS_MONTH": "• Month: {amount}", + "REFERRAL_ANALYTICS_EARNINGS_QUARTER": "• Quarter: {amount}", + "REFERRAL_ANALYTICS_EARNINGS_TODAY": "• Today: {amount}", + "REFERRAL_ANALYTICS_EARNINGS_WEEK": "• Week: {amount}", + "REFERRAL_ANALYTICS_FOOTER": "📈 Keep growing your referral network!", + "REFERRAL_ANALYTICS_TITLE": "📊 Referral analytics", + "REFERRAL_ANALYTICS_TOP_ITEM": "{index}. {name}: {amount} ({count} rewards)", + "REFERRAL_ANALYTICS_TOP_TITLE": "🏆 Top {count} referrals:", + "REFERRAL_CODE_ACCEPTED": "✅ Referral code accepted!", + "REFERRAL_CODE_APPLIED": "🎁 Referral code applied! You will receive a bonus after the first purchase.", + "REFERRAL_CODE_INVALID": "❌ Invalid referral code", + "REFERRAL_CODE_INVALID_HELP": "❌ Invalid referral code.\n\n💡 If you have a referral code, please double-check the spelling.\n⏭️ To continue without a referral code, use the /start command.", + "REFERRAL_CODE_QUESTION": "\n🤝 Do you have a friend's referral code?\n\nIf you have a promo code or referral link, enter it now to receive a bonus!\n\nSend the code or tap \"Skip\":\n", + "REFERRAL_CODE_SKIP": "⏭️ Skip", + "REFERRAL_CODE_TITLE": "🆔 Your code: {code}", + "REFERRAL_EARNINGS_BY_TYPE_HEADER": "📈 Earnings by type:", + "REFERRAL_EARNINGS_FIRST_TOPUPS": "• Bonuses for first top-ups: {count} ({amount})", + "REFERRAL_EARNINGS_PURCHASES": "• Purchase commissions: {count} ({amount})", + "REFERRAL_EARNINGS_TOPUPS": "• Top-up commissions: {count} ({amount})", + "REFERRAL_EARNING_REASON_COMMISSION_PURCHASE": "💰 Purchase commission", + "REFERRAL_EARNING_REASON_COMMISSION_TOPUP": "💰 Top-up commission", + "REFERRAL_EARNING_REASON_FIRST_TOPUP": "🎉 First top-up", + "REFERRAL_INFO": "\n🤝 Referral program\n\n👥 Invited: {referrals_count} friends\n💰 Earned: {earned_amount}\n\n🔗 Your referral link:\n{referral_link}\n\n🎫 Your promo code:\n{referral_code}\n\n💰 Terms:\n• Per friend: {registration_bonus}\n• Top-up commission: {commission_percent}%\n", + "REFERRAL_INVITE_BONUS": "💎 On your first top-up from {minimum} you get {bonus} as a bonus!", + "REFERRAL_INVITE_CREATED_INSTRUCTION": "Tap the “📤 Share” button to send the invite to any chat or copy the text below:", + "REFERRAL_INVITE_CREATED_TITLE": "📝 Invitation created!", + "REFERRAL_INVITE_FEATURE_FAST": "🚀 Fast connection", + "REFERRAL_INVITE_FEATURE_SECURE": "🔒 Reliable protection", + "REFERRAL_INVITE_FEATURE_SERVERS": "🌍 Servers worldwide", + "REFERRAL_INVITE_FOOTER": "📢 Invite friends and earn!", + "REFERRAL_INVITE_LINK_PROMPT": "👇 Follow the link:", + "REFERRAL_INVITE_MESSAGE": "\n🎯 Invitation to the VPN service\n\nHi! I invite you to an excellent VPN service!\n\n🎁 Use my link to get a bonus: {bonus}\n\n🔗 Join: {link}\n🎫 Or use promo code: {code}\n\n💪 Fast, reliable, affordable!\n", + "REFERRAL_INVITE_TITLE": "🎉 Join the VPN service!", + "REFERRAL_LINK_CAPTION": "🔗 Your referral link:\n{link}", + "REFERRAL_LINK_TITLE": "🔗 Your referral link:", + "REFERRAL_LIST_BUTTON": "👥 Referral list", + "REFERRAL_LIST_EMPTY": "📋 You have no referrals yet.\n\nShare your referral link to start earning!", + "REFERRAL_LIST_HEADER": "👥 Your referrals (page {current}/{total})", + "REFERRAL_LIST_ITEM_ACTIVITY": " 🕐 Activity: {days} days ago", + "REFERRAL_LIST_ITEM_ACTIVITY_LONG_AGO": " 🕐 Activity: long ago", + "REFERRAL_LIST_ITEM_EARNED": " 💎 Earned from them: {amount}", + "REFERRAL_LIST_ITEM_HEADER": "{index}. {status} {name}", + "REFERRAL_LIST_ITEM_REGISTERED": " 📅 Registered: {days} days ago", + "REFERRAL_LIST_ITEM_TOPUPS": " {emoji} Top-ups: {count}", + "REFERRAL_LIST_NEXT_PAGE": "Next ➡️", + "REFERRAL_LIST_PREV_PAGE": "⬅️ Back", + "REFERRAL_PROGRAM_TITLE": "👥 Referral program", + "REFERRAL_RECENT_EARNINGS_HEADER": "💰 Latest rewards:", + "REFERRAL_RECENT_EARNINGS_ITEM": "• {reason}: {amount} from {referral_name}", + "REFERRAL_REWARDS_HEADER": "🎁 How rewards work:", + "REFERRAL_REWARD_COMMISSION": "• Commission from each referral top-up: {percent}%", + "REFERRAL_REWARD_INVITER": "• You receive on the referral's first top-up: {bonus}", + "REFERRAL_REWARD_NEW_USER": "• New user receives: {bonus} on the first top-up from {minimum}", + "REFERRAL_SHARE_BUTTON": "📤 Share", + "REFERRAL_STATS_ACTIVE": "• Active referrals: {count}", + "REFERRAL_STATS_CONVERSION": "• Conversion: {rate}%", + "REFERRAL_STATS_FIRST_TOPUPS": "• Made first top-up: {count}", + "REFERRAL_STATS_HEADER": "📊 Your statistics:", + "REFERRAL_STATS_INVITED": "• Invited users: {count}", + "REFERRAL_STATS_MONTH_EARNED": "• Earned last month: {amount}", + "REFERRAL_STATS_TOTAL_EARNED": "• Earned in total: {amount}", + "REGISTRATION_COMPLETING": "✅ Completing registration...", "REPLY_TO_TICKET": "💬 Reply", "REPORT_CLOSE": "❌ Close", "REPORT_CLOSED": "✅ Report closed.", "REPORT_CLOSE_ERROR": "❌ Failed to close the report.", + "RESET_ALL_DEVICES_BUTTON": "🔄 Reset all devices", + "RESET_DEVICE_CONFIRM_BUTTON": "✅ Reset this device", + "RESET_TRAFFIC_BUTTON": "🔄 Reset traffic", + "RETURN_TO_SUBSCRIPTION_CHECKOUT": "⬅️ Return to subscription checkout", + "RULES_ACCEPT": "✅ I accept the rules", + "RULES_ACCEPTED_PROCESSING": "✅ Rules accepted! Completing registration...", + "RULES_DECLINE": "❌ I do not accept", + "RULES_HEADER": "📋 Service Rules", + "RULES_REQUIRED": "❗️ You must accept the rules to use the service!", + "RULES_TEXT_DEFAULT": "📋 Service Usage Rules\n\n1. Do not use the service for illegal activity\n2. Avoid sharing pirated or malicious content\n3. Spam and phishing are prohibited\n4. Using the service for DDoS attacks is forbidden\n5. One account is intended for one person\n6. Refunds are provided only in exceptional cases\n7. The administration may block accounts that violate the rules\n\nBy using the service you agree to follow these rules.", + "SELECT_COUNTRIES": "Select countries:", + "SELECT_DEVICES": "Number of devices:", + "SELECT_PERIOD": "Choose period:", + "SELECT_TRAFFIC": "Choose traffic package:", "SENDING_ATTACHMENTS": "📎 Sending attachments...", + "SEND_CONTACT_BUTTON": "📱 Share contact", + "SEND_LOCATION_BUTTON": "📍 Share location", + "SERVER_STATUS_AVAILABLE": "✅ Online", + "SERVER_STATUS_ERROR_SHORT": "Failed to fetch data", + "SERVER_STATUS_LATENCY": "{latency} ms", + "SERVER_STATUS_LATENCY_UNKNOWN": "no data", + "SERVER_STATUS_NEXT_PAGE": "Next ➡️", + "SERVER_STATUS_NOT_CONFIGURED": "Feature is not available.", + "SERVER_STATUS_NO_SERVERS": "No server data available.", + "SERVER_STATUS_OFFLINE": "no response", + "SERVER_STATUS_PAGINATION": "Page {current} of {total}", + "SERVER_STATUS_PREV_PAGE": "⬅️ Back", + "SERVER_STATUS_REFRESH": "🔄 Refresh", + "SERVER_STATUS_SUMMARY": "Total servers: {total} (online: {online}, offline: {offline})", + "SERVER_STATUS_TITLE": "📊 Server status", + "SERVER_STATUS_UNAVAILABLE": "❌ Offline", + "SERVER_STATUS_UPDATED_AT": "⏱ Updated at: {time}", + "SHOW_QR_BUTTON": "📱 Show QR code", + "SHOW_SUBSCRIPTION_LINK": "📋 Show subscription link", + "SKIP_BUTTON": "Skip ➡️", + "STARS_PAYMENT_ENROLLMENT_ERROR": "❌ Failed to credit funds. Please contact support; the payment will be verified manually.", + "STARS_PAYMENT_PROCESSING_ERROR": "❌ Technical error processing the payment. Please contact support for assistance.", + "STARS_PAYMENT_SUCCESS": "🎉 Payment processed successfully!\n\n⭐ Stars spent: {stars_spent}\n💰 Added to balance: {amount} ₽\n🆔 Transaction ID: {transaction_id}...\n\nThank you for topping up! 🚀", + "STARS_PAYMENT_USER_NOT_FOUND": "❌ Error: user not found. Please contact support.", + "STARS_PRECHECK_INVALID_PAYLOAD": "Payment validation error. Please try again.", + "STARS_PRECHECK_TECHNICAL_ERROR": "Technical error. Please try again later.", + "STARS_PRECHECK_USER_NOT_FOUND": "User not found. Please contact support.", + "SUBSCRIPTION_ACTIVE": "✅ Active", + "SUBSCRIPTION_ACTIVE_REQUIRED": "⚠️ You don't have an active subscription!", + "SUBSCRIPTION_ADDITIONAL_STEP_TITLE": "{title}:", + "SUBSCRIPTION_APPS_PROMPT": "Choose an app to connect:", + "SUBSCRIPTION_APPS_TITLE": "📱 Apps for {device_name}", + "SUBSCRIPTION_APP_NOT_FOUND": "❌ App not found", + "SUBSCRIPTION_CONNECTED_DEVICES_FOOTER": "", + "SUBSCRIPTION_CONNECTED_DEVICES_TITLE": "
📱 Connected devices:\n", + "SUBSCRIPTION_CONNECT_CUSTOM_MESSAGE": "🚀 Connect subscription\n\n📱 Tap the button below to open the app:", + "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE": "📱 Connect subscription\n\n🔗 Subscription link:\n{subscription_url}\n\n💡 Choose your device to get detailed setup instructions:", + "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE_HIDDEN": "📱 Connect subscription\n\nℹ️ The subscription link is available via the buttons below or in the “My subscription” section.\n\n💡 Choose your device to get detailed setup instructions:", + "SUBSCRIPTION_CONNECT_LINK_MESSAGE": "🚀 Connect subscription\n\n🔗 Tap the button below to open the subscription link:", + "SUBSCRIPTION_CONNECT_LINK_PROMPT": "📱 Copy the link and add it to your VPN app", + "SUBSCRIPTION_CONNECT_LINK_SECTION": "🔗 Connection link:\n{subscription_url}", + "SUBSCRIPTION_CONNECT_MINIAPP_MESSAGE": "📱 Connect subscription\n\n🚀 Tap the button below to open the subscription in the Telegram mini app:", + "SUBSCRIPTION_DEVICE_APPS_NOT_FOUND": "❌ No apps found for this device", + "SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Recommended app: {app_name}", + "SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Setup for {device_name}", + "SUBSCRIPTION_DEVICE_HOW_TO_STEP1": "1. Install the app from the link above", + "SUBSCRIPTION_DEVICE_HOW_TO_STEP2": "2. Tap the \"Connect\" button below", + "SUBSCRIPTION_DEVICE_HOW_TO_STEP3": "3. Open the app and paste the link", + "SUBSCRIPTION_DEVICE_HOW_TO_STEP4": "4. Connect to a server", + "SUBSCRIPTION_DEVICE_HOW_TO_TITLE": "💡 How to connect:", + "SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Subscription link:", + "SUBSCRIPTION_DEVICE_OTHER_APPS": "📦 Other apps: {app_list}", + "SUBSCRIPTION_DEVICE_OTHER_APPS_HINT": "Tap the \"Other apps\" button below to choose another app.", + "SUBSCRIPTION_DEVICE_STEP_ADD_TITLE": "Step 2 - Add subscription:", + "SUBSCRIPTION_DEVICE_STEP_CONNECT_TITLE": "Step 3 - Connect:", + "SUBSCRIPTION_DEVICE_STEP_INSTALL_TITLE": "Step 1 - Install:", + "SUBSCRIPTION_EXPIRED": "\n❌ Subscription expired\n\nYour subscription has ended. Renew it to restore access.\n", "SUBSCRIPTION_EXPIRED_1D": "⛔ Your subscription expired\n\nAccess was disabled on {end_date}. Renew to return to the service.\n\n💎 Renewal price: {price}", "SUBSCRIPTION_EXPIRED_SECOND_WAVE": "🔥 {percent}% discount on renewal\n\nActivate the offer to get an additional discount. It stacks with your promo group and is valid until {expires_at}.", "SUBSCRIPTION_EXPIRED_THIRD_WAVE": "🎁 Personal {percent}% discount\n\nIt's been {trigger_days} days without a subscription. Come back and activate the extra discount — it stacks with your promo group and is valid until {expires_at}.", + "SUBSCRIPTION_EXPIRING": "\n⚠️ Subscription expiring!\n\nYour subscription expires in {days} days.\n\nRenew it now so you don't lose access.\n", + "SUBSCRIPTION_EXPIRING_PAID": "\n⚠️ Subscription expires in {days_text}!\n\nYour paid subscription ends on {end_date}.\n\n💳 Autopay: {autopay_status}\n\n{action_text}\n", "SUBSCRIPTION_EXTEND": "💎 Extend subscription", "SUBSCRIPTION_HAPP_CRYPTOLINK_BLOCK": "
{crypto_link}
", "SUBSCRIPTION_HAPP_LINK_PROMPT": "🔒 Subscription link is ready. Tap the \"Connect\" button below to open it in Happ.", @@ -656,7 +1182,75 @@ "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 If the link doesn't open automatically, copy it manually:", "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Open link in Happ", "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Connect via Happ", + "SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT": "📱 Tap the button below to get setup instructions for your device", + "SUBSCRIPTION_IMPORT_LINK_SECTION": "🔗 Your import link for the VPN app:\n{subscription_url}", + "SUBSCRIPTION_INFO": "\n📱 Subscription details\n\n📊 Status: {status}\n🎭 Type: {type}\n📅 Valid until: {end_date}\n⏰ Days left: {days_left}\n\n📈 Traffic: {traffic_used} / {traffic_limit}\n🌍 Servers: {countries_count} countries\n📱 Devices: {devices_used} / {devices_limit}\n\n💳 Autopay: {autopay_status}\n", + "SUBSCRIPTION_LINK_GENERATING_NOTICE": "{purchase_text}\n\nThe link is being generated, open the 'My subscription' section in a few seconds.", + "SUBSCRIPTION_LINK_HIDDEN_NOTICE": "ℹ️ The subscription link is available via the buttons below or in the “My subscription” section.", + "SUBSCRIPTION_LINK_HINT": "💡 If the link didn't copy, select it manually and copy.", + "SUBSCRIPTION_LINK_STEP1": "1. Tap the link above to copy it", + "SUBSCRIPTION_LINK_STEP2": "2. Open your VPN app", + "SUBSCRIPTION_LINK_STEP3": "3. Find the 'Add subscription' or 'Import' option", + "SUBSCRIPTION_LINK_STEP4": "4. Paste the copied link", + "SUBSCRIPTION_LINK_UNAVAILABLE": "❌ Subscription link is unavailable", + "SUBSCRIPTION_LINK_USAGE_TITLE": "📱 How to use:", + "SUBSCRIPTION_NONE": "❌ No active subscription", + "SUBSCRIPTION_NOT_FOUND": "❌ Subscription not found", + "SUBSCRIPTION_NO_ACTIVE_LINK": "⚠ You don't have an active subscription or the link is still being generated", + "SUBSCRIPTION_NO_SERVERS": "No servers", + "SUBSCRIPTION_OVERVIEW_TEMPLATE": "👤 {full_name}\n💰 Balance: {balance}\n📱 Subscription: {status_emoji} {status_display}{warning}\n\n📱 Subscription details\n🎭 Type: {subscription_type}\n📅 Valid until: {end_date}\n⏰ Time left: {time_left}\n📈 Traffic: {traffic}\n🌍 Servers: {servers}\n📱 Devices: {devices_used} / {device_limit}", + "SUBSCRIPTION_PROMO_DISCOUNT_HINT": "⚡ Extra {percent}% discount is active and will apply automatically. It stacks with other discounts.", + "SUBSCRIPTION_PROMO_DISCOUNT_NOTE": "⚡ Extra discount {percent}%: -{amount}", + "SUBSCRIPTION_PROMO_DISCOUNT_TIMER": "⏳ Discount active for {time_left}\n{bar}", + "SUBSCRIPTION_PURCHASED": "🎉 Subscription purchased successfully!", + "SUBSCRIPTION_SETTINGS_BUTTON": "⚙️ Subscription settings", + "SUBSCRIPTION_SETTINGS_OVERVIEW": "⚙️ Subscription settings\n\n📊 Current parameters:\n🌐 Countries: {countries_count}\n📈 Traffic: {traffic_used} / {traffic_limit}\n📱 Devices: {devices_used} / {devices_limit}\n\nChoose what you want to change:", + "SUBSCRIPTION_SETTINGS_PAID_ONLY": "⚠️ Settings are available only for paid subscriptions", + "SUBSCRIPTION_SPECIFIC_APP_TITLE": "📱 {app_name} - {device_name}", + "SUBSCRIPTION_STATUS_ACTIVE": "Active", + "SUBSCRIPTION_STATUS_EXPIRED": "Expired", + "SUBSCRIPTION_STATUS_TRIAL": "Trial", + "SUBSCRIPTION_STATUS_UNKNOWN": "Unknown", + "SUBSCRIPTION_SUMMARY": "\n📋 Final configuration\n\n📅 Period: {period} days\n📈 Traffic: {traffic}\n🌍 Countries: {countries}\n📱 Devices: {devices}\n\n💰 Total: {total_price}\n\nConfirm the purchase?\n", + "SUBSCRIPTION_SUMMARY_PROMO_DISCOUNT": "- Promo offer: -{amount} ({percent}% extra)", + "SUBSCRIPTION_TIME_LEFT_DAYS": "{days} days", + "SUBSCRIPTION_TIME_LEFT_EXPIRED": "expired", + "SUBSCRIPTION_TIME_LEFT_HOURS": "{hours} hr", + "SUBSCRIPTION_TIME_LEFT_MINUTES": "{minutes} min", + "SUBSCRIPTION_TRAFFIC_LIMITED": "{used} / {limit} GB", + "SUBSCRIPTION_TRAFFIC_UNLIMITED": "∞ (unlimited) | Used: {used} GB", + "SUBSCRIPTION_TRIAL": "🧪 Trial subscription", + "SUBSCRIPTION_TYPE_PAID": "Paid", + "SUBSCRIPTION_TYPE_TRIAL": "Trial", + "SUBSCRIPTION_WARNING_MINUTES": "\n🔴 expires in a few minutes!", + "SUBSCRIPTION_WARNING_TODAY": "\n⚠️ expires today!", + "SUBSCRIPTION_WARNING_TOMORROW": "\n⚠️ expires tomorrow!", + "SUB_STATUS_ACTIVE_FEW_DAYS": "💎 Active\n⚠️ expires in {days} days", + "SUB_STATUS_ACTIVE_LONG": "💎 Active\n📅 until {end_date} ({days} days)", + "SUB_STATUS_ACTIVE_TODAY": "💎 Active\n⚠️ expires today!", + "SUB_STATUS_ACTIVE_TOMORROW": "💎 Active\n⚠️ expires tomorrow!", + "SUB_STATUS_EXPIRED": "🔴 Expired\n📅 {end_date}", + "SUB_STATUS_NONE": "❌ Not available", + "SUB_STATUS_TRIAL_ACTIVE": "🎁 Trial subscription\n📅 until {end_date} ({days} days)", + "SUB_STATUS_TRIAL_TODAY": "🎁 Trial subscription\n⚠️ expires today!", + "SUB_STATUS_TRIAL_TOMORROW": "🎁 Trial subscription\n⚠️ expires tomorrow!", + "SUCCESS": "✅ Success", "SUPPORT_BUTTON": "🆘 Support", + "SUPPORT_INFO": "\n🛠️ Technical support\n\nFor any questions contact our support:\n\n👤 {settings.SUPPORT_USERNAME}\n\nWe can help with:\n• Connection setup\n• Troubleshooting issues\n• Payment questions\n• Other requests\n\n⏰ Response time: usually within 1-2 hours\n", + "SUSPICIOUS_DISPLAY_NAME_BLOCKED": "🚫 We detected that your display name looks like a link or an official account. Please change your Telegram name and try again.", + "SWITCH_TRAFFIC_BUTTON": "🔄 Switch traffic", + "SWITCH_TRAFFIC_CONFIRM": "\n🔄 Confirm traffic change\n\nCurrent limit: {current_traffic}\nNew limit: {new_traffic}\n\nAction: {action}\n💰 {cost}\n\nApply this change?\n", + "SWITCH_TRAFFIC_INFO": "\n🔄 Switch traffic limit\n\nCurrent limit: {current_traffic}\nChoose the new traffic amount:\n\n💡 Important:\n• Increasing — you pay the difference proportionally to the remaining time\n• Decreasing — payments are not refunded\n• The used traffic counter is NOT reset\n", + "SWITCH_TRAFFIC_SUCCESS_DECREASE": "\n✅ Traffic limit decreased!\n\n📊 Was: {old_traffic} → Now: {new_traffic}\nℹ️ Payments are not refunded\n", + "SWITCH_TRAFFIC_SUCCESS_INCREASE": "\n✅ Traffic limit increased!\n\n📊 Was: {old_traffic} → Now: {new_traffic}\n💰 Charged: {amount}\n", + "SWITCH_TRAFFIC_TITLE": "🔄 Switch traffic limit", + "TEST_ACCESS_ACTIVATED_MESSAGE": "🎉 Test servers are connected! Access is active until {expires_at}.", + "TEST_ACCESS_ACTIVATED_POPUP": "✅ Access granted!", + "TEST_ACCESS_ALREADY_CONNECTED": "ℹ️ This server is already connected to your subscription.", + "TEST_ACCESS_NO_SQUADS": "❌ Unable to determine servers for the test access. Please contact support.", + "TEST_ACCESS_NO_SUBSCRIPTION": "❌ You need an active subscription to use this offer.", + "TEST_ACCESS_REMNAWAVE_ERROR": "❌ Failed to connect the servers. Please try again later or contact support.", + "TEST_ACCESS_UNKNOWN_ERROR": "❌ Failed to activate the offer. Please try again later.", "TICKET_ALREADY_OPEN": "You already have an open ticket. Please close it first.", "TICKET_ATTACHMENTS": "📎 Attachments", "TICKET_CLOSED": "✅ Ticket closed.", @@ -689,114 +1283,54 @@ "TICKET_TITLE_TOO_LONG": "Title is too long. Maximum 255 characters. Try again:", "TICKET_TITLE_TOO_SHORT": "Title must contain at least 5 characters. Try again:", "TICKET_UPDATE_ERROR": "❌ Error updating ticket.", + "TOPUP_BALANCE_BUTTON": "💳 Top up balance", + "TOP_UP_AMOUNT": "💳 Enter top-up amount (in rubles):", + "TOP_UP_METHODS": "\n💳 Select a payment method\n\nAmount: {amount}\n", + "TOP_UP_STARS": "⭐ Telegram Stars", + "TOP_UP_TRIBUTE": "💎 Bank card", + "TRAFFIC_100GB": "📊 100 GB - {settings.format_price(settings.PRICE_TRAFFIC_100GB)}", + "TRAFFIC_10GB": "📊 10 GB - {settings.format_price(settings.PRICE_TRAFFIC_10GB)}", + "TRAFFIC_250GB": "📊 250 GB - {settings.format_price(settings.PRICE_TRAFFIC_250GB)}", + "TRAFFIC_25GB": "📊 25 GB - {settings.format_price(settings.PRICE_TRAFFIC_25GB)}", + "TRAFFIC_50GB": "📊 50 GB - {settings.format_price(settings.PRICE_TRAFFIC_50GB)}", + "TRAFFIC_5GB": "📊 5 GB - {settings.format_price(settings.PRICE_TRAFFIC_5GB)}", + "TRAFFIC_ALREADY_UNLIMITED": "⚠ You already have unlimited traffic", + "TRAFFIC_FIXED_MODE": "⚠️ Traffic is fixed in the current mode and cannot be changed", + "TRAFFIC_INSUFFICIENT_BALANCE": "⚠️ Insufficient balance!\nRequired: {required} (for {months} mo)\nYou have: {balance}", + "TRAFFIC_NO_CHANGE": "ℹ️ Traffic limit was not changed", + "TRAFFIC_PACKAGES_NOT_CONFIGURED": "⚠️ Traffic packages are not configured", + "TRAFFIC_UNLIMITED": "📊 Unlimited - {settings.format_price(settings.PRICE_TRAFFIC_UNLIMITED)}", + "TRIAL_ACTIVATED": "🎉 Trial subscription activated!", + "TRIAL_ACTIVATE_BUTTON": "🎁 Activate", + "TRIAL_ALREADY_USED": "❌ The trial subscription has already been used", + "TRIAL_AVAILABLE": "\n🎁 Trial subscription\n\nYou can get a free trial plan:\n\n⏰ Duration: {days} days\n📈 Traffic: {traffic} GB\n📱 Devices: {devices} pcs\n🌍 Server: {server_name}\n\nActivate the trial subscription?\n", + "TRIAL_CHANNEL_UNSUBSCRIBED": "\n🚫 Access paused\n\nWe couldn't find your subscription to our channel, so the trial plan has been disabled.\n\nJoin the channel and tap “{check_button}” to restore access.", + "TRIAL_ENDING_SOON": "\n🎁 The trial subscription is ending soon!\n\nYour trial expires in a few hours.\n\n💎 Don't want to lose VPN access?\nSwitch to the full subscription!\n\n🔥 Special offer:\n• 30 days for {price}\n• Unlimited traffic\n• All servers available\n• Speeds up to 1 Gbit/s\n\n⚡️ Activate before the trial ends!\n", "TRIAL_INACTIVE_1H": "⏳ An hour has passed and we haven't seen any traffic yet\n\nOpen the connection guide and follow the steps. We're always ready to help!", "TRIAL_INACTIVE_24H": "⏳ A full day passed without activity\n\nWe still don't see traffic from your test subscription. Use the guide or message support and we'll help you connect!", + "TRIAL_SERVER_DEFAULT_NAME": "🎯 Trial server", + "TRIAL_SERVER_RANDOM_POOL": "🎲 Random choice among {count} servers", "UNBLOCK": "✅ Unblock", + "UNKNOWN_CALLBACK_ALERT": "❓ Unknown action. Please try again.", + "UNKNOWN_COMMAND_MESSAGE": "❓ I didn't understand that command. Use the menu buttons.", "USER_BLOCKED_FOREVER": "You are blocked from contacting support.", "USER_BLOCKED_UNTIL": "You are blocked until {time}", + "USER_NOT_FOUND": "❌ User not found", "VIEW_CLOSED_TICKETS": "🟢 Closed tickets", "VIEW_TICKET": "👁️ View ticket", - "ADMIN_USERS_SUBMENU_TITLE": "👥 **User and subscription management**\n\n", - "ADMIN_PROMO_SUBMENU_TITLE": "💰 **Promo codes and statistics**\n\n", - "ADMIN_COMMUNICATIONS_SUBMENU_TITLE": "📨 **Communications**\n\n", - "ADMIN_COMMUNICATIONS_SUBMENU_DESCRIPTION": "Manage broadcasts and interface texts:", - "ADMIN_SUBMENU_SELECT_SECTION": "Choose a section:", - "ADMIN_SUPPORT_SUBMENU_TITLE": "🛟 **Support**\n\n", - "ADMIN_SUPPORT_SUBMENU_DESCRIPTION": "Manage tickets and support settings:", - "ADMIN_SUPPORT_SUBMENU_DESCRIPTION_MODERATOR": "Ticket access only.", - "ADMIN_SUPPORT_MODERATION_TITLE": "🧑‍⚖️ Support moderation", - "ADMIN_SUPPORT_MODERATION_DESCRIPTION": "Access to support tickets.", - "ADMIN_SUPPORT_AUDIT_TITLE": "🧾 Moderator audit", - "ADMIN_SUPPORT_AUDIT_EMPTY": "Nothing here yet", - "ADMIN_SUPPORT_AUDIT_ROLE_MODERATOR": "Moderator", - "ADMIN_SUPPORT_AUDIT_ROLE_ADMIN": "Admin", - "ADMIN_SUPPORT_AUDIT_ACTION_CLOSE_TICKET": "Ticket closed", - "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_TIMED": "Timed block", - "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_PERM": "Permanent block", - "ADMIN_SUPPORT_AUDIT_ACTION_UNBLOCK": "Unblock", - "ADMIN_SETTINGS_SUBMENU_TITLE": "⚙️ **System settings**\n\n", - "ADMIN_SETTINGS_SUBMENU_DESCRIPTION": "Manage Remnawave, monitoring and other settings:", - "ADMIN_SYSTEM_SUBMENU_TITLE": "🛠️ **System tools**\n\n", - "ADMIN_SYSTEM_SUBMENU_DESCRIPTION": "Reports, updates, logs, backups and system operations:", - "ADMIN_SUPPORT_SETTINGS_STATUS_ENABLED": "Enabled", - "ADMIN_SUPPORT_SETTINGS_STATUS_DISABLED": "Disabled", - "ADMIN_SUPPORT_SETTINGS_MENU_LABEL": "\"Support\" menu item", - "ADMIN_SUPPORT_SETTINGS_MODE_TICKETS": "Tickets", - "ADMIN_SUPPORT_SETTINGS_MODE_CONTACT": "Contact", - "ADMIN_SUPPORT_SETTINGS_MODE_BOTH": "Both", - "ADMIN_SUPPORT_SETTINGS_EDIT_DESCRIPTION": "📝 Edit description", - "ADMIN_SUPPORT_SETTINGS_ADMIN_NOTIFICATIONS": "Admin notifications", - "ADMIN_SUPPORT_SETTINGS_USER_NOTIFICATIONS": "User notifications", - "ADMIN_SUPPORT_SETTINGS_SLA_LABEL": "SLA", - "ADMIN_SUPPORT_SETTINGS_SLA_TIME": "⏳ SLA time: {minutes} min", - "ADMIN_SUPPORT_SETTINGS_MODERATORS_COUNT": "🧑‍⚖️ Moderators: {count}", - "ADMIN_SUPPORT_SETTINGS_ADD_MODERATOR": "➕ Assign moderator", - "ADMIN_SUPPORT_SETTINGS_REMOVE_MODERATOR": "➖ Remove moderator", - "ADMIN_SUPPORT_SETTINGS_TITLE": "🛟 Support settings", - "ADMIN_SUPPORT_SETTINGS_DESCRIPTION": "Working hours and menu visibility. Current support menu description:", - "ADMIN_SUPPORT_SLA_SETUP_PROMPT": "⏳ SLA configuration\n\nEnter the response wait time in minutes (integer > 0):", - "ADMIN_SUPPORT_SLA_INVALID": "❌ Enter a valid number of minutes (1-1440)", - "ADMIN_SUPPORT_SLA_SAVED": "✅ SLA value saved", - "ADMIN_SUPPORT_ASSIGN_MODERATOR_PROMPT": "🧑‍⚖️ Assign moderator\n\nSend the user's Telegram ID (number)", - "ADMIN_SUPPORT_REMOVE_MODERATOR_PROMPT": "🧑‍⚖️ Remove moderator\n\nSend the user's Telegram ID (number)", - "ADMIN_SUPPORT_INVALID_TELEGRAM_ID": "❌ Enter a valid Telegram ID (number)", - "ADMIN_SUPPORT_MODERATOR_REMOVED_SUCCESS": "✅ Moderator {tid} removed", - "ADMIN_SUPPORT_MODERATOR_REMOVED_FAIL": "❌ Failed to remove moderator", - "ADMIN_SUPPORT_MODERATOR_ADDED_SUCCESS": "✅ User {tid} assigned as moderator", - "ADMIN_SUPPORT_MODERATOR_ADDED_FAIL": "❌ Failed to assign moderator", - "ADMIN_SUPPORT_MODERATORS_EMPTY": "List is empty", - "ADMIN_SUPPORT_MODERATORS_TITLE": "🧑‍⚖️ Moderators", - "ADMIN_SUPPORT_SEND_DESCRIPTION": "📨 Send description", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_TITLE": "📝 Editing support description", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CURRENT": "Current description:", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_TITLE": "Contact for \"Contact\" mode", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_HINT": "Add to the description if needed.", - "ADMIN_SUPPORT_DESCRIPTION_UPDATED": "✅ Description updated.", - "ADMIN_SUPPORT_DESCRIPTION_SENT": "Description sent below", - "ADMIN_SUPPORT_MESSAGE_DELETED": "Message deleted", - "MENU_PUBLIC_OFFER": "📄 Offer", - "PUBLIC_OFFER_NOT_AVAILABLE": "Public offer is temporarily unavailable.", - "PUBLIC_OFFER_EMPTY_ALERT": "Public offer content is not provided yet.", - "PUBLIC_OFFER_HEADER": "📄 Public Offer", - "PUBLIC_OFFER_PAGE_INFO": "Page {current} of {total}", - "ADMIN_SETTINGS_PUBLIC_OFFER": "📄 Public offer", - "ADMIN_PUBLIC_OFFER_HEADER": "📄 Public offer", - "ADMIN_PUBLIC_OFFER_DESCRIPTION": "The public offer is shown in the “Info” section.", - "ADMIN_PUBLIC_OFFER_LANGUAGE": "Language: {lang}", - "ADMIN_PUBLIC_OFFER_STATUS_DISABLED": "⚠️ Offer display is disabled or empty.", - "ADMIN_PUBLIC_OFFER_STATUS_ENABLED": "✅ Offer is active and visible to users.", - "ADMIN_PUBLIC_OFFER_STATUS_ENABLED_EMPTY": "⚠️ Offer is enabled but text is empty — users will not see it.", - "ADMIN_PUBLIC_OFFER_UPDATED_AT": "Last updated: {timestamp}", - "ADMIN_PUBLIC_OFFER_PREVIEW_TITLE": "Text preview:", - "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY": "Text is not set yet.", - "ADMIN_PUBLIC_OFFER_ACTION_PROMPT": "Choose an action:", - "ADMIN_PUBLIC_OFFER_EDIT_BUTTON": "✏️ Edit text", - "ADMIN_PUBLIC_OFFER_VIEW_BUTTON": "👀 View current text", - "ADMIN_PUBLIC_OFFER_ENABLE_BUTTON": "✅ Enable display", - "ADMIN_PUBLIC_OFFER_DISABLE_BUTTON": "🚫 Disable display", - "ADMIN_PUBLIC_OFFER_HTML_HELP": "ℹ️ HTML help", - "ADMIN_PUBLIC_OFFER_CURRENT_PREVIEW": "Current text (preview):", - "ADMIN_PUBLIC_OFFER_EDIT_PROMPT": "Send a new public offer text. HTML markup is allowed.", - "ADMIN_PUBLIC_OFFER_EDIT_HINT": "Use /html_help for the list of allowed tags.", - "ADMIN_PUBLIC_OFFER_EDIT_TITLE": "Public offer editing", - "ADMIN_PUBLIC_OFFER_CANCEL": "❌ Cancel", - "ADMIN_PUBLIC_OFFER_TOO_LONG": "❌ Offer text is too long. Maximum 4000 characters.", - "ADMIN_PUBLIC_OFFER_HTML_ERROR": "❌ HTML error: {error}", - "ADMIN_PUBLIC_OFFER_SAVED": "✅ Public offer updated.", - "ADMIN_PUBLIC_OFFER_BACK_BUTTON": "⬅️ Back to offer settings", - "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY_ALERT": "Offer text is not set yet.", - "ADMIN_PUBLIC_OFFER_VIEW_TITLE": "👀 Current offer text", - "ADMIN_PUBLIC_OFFER_VIEW_TRUNCATED": "\n\n⚠️ Text shortened for display. Users will see the full version in the menu.", - "ADMIN_PUBLIC_OFFER_ENABLED": "✅ Offer enabled", - "ADMIN_PUBLIC_OFFER_DISABLED": "🚫 Offer disabled", - "ADMIN_PUBLIC_OFFER_RETURN_TO_EDIT": "⬅️ Back to editing", - "ADMIN_PUBLIC_OFFER_EDIT_CANCELLED": "Offer editing cancelled.", - "ADMIN_PRICING_BUTTON_TRAFFIC_OPTIONS": "🚦 Package visibility", - "ADMIN_PRICING_TRAFFIC_PACKAGE_ENABLED": "Package enabled.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_DISABLED": "Package disabled.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_MIN": "At least one package must remain.", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_TITLE": "🚦 Traffic package visibility", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_ACTIVE": "Active packages: {items}", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_NONE": "No active packages.", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_PROMPT": "Tap a package to toggle its visibility." + "WATA_AMOUNT_TOO_HIGH": "Maximum top-up amount: {amount}", + "WATA_AMOUNT_TOO_LOW": "Minimum top-up amount: {amount}", + "WATA_PAYMENT_ERROR": "❌ Failed to create WATA payment. Please try again later or contact support.", + "WATA_PAYMENT_INSTRUCTIONS": "💳 Pay via WATA\n\n💰 Amount: {amount}\n🆔 Payment ID: {payment_id}\n\n📱 How to pay:\n1. Tap ‘Pay via WATA’\n2. Follow the gateway prompts\n3. Confirm the transfer\n4. Funds will be credited automatically\n\n❓ Need help? Contact {support}", + "WATA_PAY_BUTTON": "💳 Pay via WATA", + "WATA_STATUS_CLOSED": "Processing", + "WATA_STATUS_DECLINED": "Declined", + "WATA_STATUS_OPENED": "Waiting for payment", + "WATA_STATUS_PAID": "Paid", + "WATA_STATUS_TITLE": "💳 WATA payment status", + "WATA_STATUS_UNKNOWN": "Unknown", + "WATA_TOPUP_PROMPT": "💳 Pay via WATA\n\nEnter the amount to top up. Minimum amount — {min_amount}, maximum — {max_amount}.\nPayments are processed through the secure WATA form.", + "WELCOME": "\n🎉 Welcome to VPN Service!\n\nOur service provides fast and secure internet access without restrictions.\n\n🔐 Advantages:\n• High connection speed\n• Servers in different countries \n• Reliable data protection\n• 24/7 support\n\nTo get started, select interface language:\n", + "WELCOME_FALLBACK": "Welcome, {user_name}!", + "YES": "✅ Yes" } diff --git a/app/localization/locales/ru.json b/app/localization/locales/ru.json index c4e0c784..a0f5f74b 100644 --- a/app/localization/locales/ru.json +++ b/app/localization/locales/ru.json @@ -1,138 +1,754 @@ { "ACCESS_DENIED": "❌ Доступ запрещен", + "ADDON_INSUFFICIENT_FUNDS_MESSAGE": "⚠️ Недостаточно средств\n\nСтоимость услуги: {required}\nНа балансе: {balance}\nНе хватает: {missing}\n\nВыберите способ пополнения. Сумма подставится автоматически.", "ADD_COUNTRIES_BUTTON": "🌐 Добавить страны", - "COUNTRY_MANAGEMENT_UNAVAILABLE": "ℹ️ Управление серверами недоступно - доступен только один сервер", - "COUNTRY_MANAGEMENT_PROMPT": "🌍 Управление странами подписки\n\n📋 Текущие страны ({current_count}):\n{current_list}\n\n💡 Инструкция:\n✅ - страна подключена\n➕ - будет добавлена (платно)\n➖ - будет отключена (бесплатно)\n⚪ - не выбрана\n\n⚠️ Важно: Повторное подключение отключенных стран будет платным!", - "COUNTRY_MANAGEMENT_NONE": "Нет подключенных стран", - "PAID_FEATURE_ONLY": "⚠ Эта функция доступна только для платных подписок", - "PAID_FEATURE_ONLY_SHORT": "⚠ Только для платных подписок", - "SUSPICIOUS_DISPLAY_NAME_BLOCKED": "🚫 Мы обнаружили, что ваше отображаемое имя похоже на ссылку или служебный аккаунт. Пожалуйста, измените имя в профиле Telegram и повторите попытку.", - "COUNTRY_NOT_AVAILABLE_PROMOGROUP": "❌ Сервер недоступен для вашей промогруппы", - "COUNTRY_CHANGES_NOT_FOUND": "⚠️ Изменения не обнаружены", - "COUNTRY_CHANGES_SUCCESS_HEADER": "✅ Страны успешно обновлены!\n\n", - "COUNTRY_CHANGES_ADDED_HEADER": "➕ Добавлены страны:\n", - "COUNTRY_CHANGES_CHARGED": "💰 Списано: {amount} (за {months} мес)", - "COUNTRY_CHANGES_DISCOUNT_INFO": " (скидка {percent}%: -{amount})", - "COUNTRY_CHANGES_REMOVED_HEADER": "➖ Отключены страны:\n", - "COUNTRY_CHANGES_REMOVED_WARNING": "ℹ️ Повторное подключение будет платным", - "COUNTRY_CHANGES_ACTIVE_COUNT": "🌐 Активных стран: {count}", - "ADMIN_MAIN_MENU": "🏠 Главное меню", + "ADD_TRAFFIC_PROMPT": "📈 Добавить трафик к подписке\n\nТекущий лимит: {current_traffic}\nВыберите дополнительный трафик:", + "ADMIN_BACK_TO_ADMIN": "⬅️ Назад в админку", + "ADMIN_BACK_TO_LIST": "⬅️ К списку", + "ADMIN_BACK_TO_MAIN": "🏠 В главное меню", + "ADMIN_BACK_TO_MONITORING": "⬅️ Назад к мониторингу", + "ADMIN_BACK_TO_SQUADS": "⬅️ Назад к сквадам", + "ADMIN_BROADCAST_ADD_DOCUMENT": "📄 Добавить документ", + "ADMIN_BROADCAST_ADD_PHOTO": "📷 Добавить фото", + "ADMIN_BROADCAST_ADD_VIDEO": "🎥 Добавить видео", + "ADMIN_BROADCAST_BUTTON_BALANCE": "💰 Пополнить баланс", + "ADMIN_BROADCAST_BUTTON_CONNECT": "🔗 Подключиться", + "ADMIN_BROADCAST_BUTTON_HOME": "🏠 На главную", + "ADMIN_BROADCAST_BUTTON_PROMOCODE": "🎫 Промокод", + "ADMIN_BROADCAST_BUTTON_REFERRALS": "🤝 Партнерка", + "ADMIN_BROADCAST_BUTTON_SUBSCRIPTION": "📱 Подписка", + "ADMIN_BROADCAST_BUTTON_SUPPORT": "🛠️ Техподдержка", + "ADMIN_BROADCAST_CHANGE_MEDIA": "🖼️ Изменить медиа", + "ADMIN_BROADCAST_NO_MEDIA": "⏭️ Без медиа", + "ADMIN_BROADCAST_REPLACE_MEDIA": "🔄 Заменить медиа", + "ADMIN_BROADCAST_SKIP_MEDIA": "⏭️ Пропустить медиа", + "ADMIN_BROADCAST_TARGET_ACTIVE": "📱 С подпиской", + "ADMIN_BROADCAST_TARGET_ACTIVE_ZERO": "🧊 Активна 0 ГБ", + "ADMIN_BROADCAST_TARGET_ALL": "👥 Всем", + "ADMIN_BROADCAST_TARGET_EXPIRED": "🔚 Истекшие", + "ADMIN_BROADCAST_TARGET_EXPIRING": "⏰ Истекающие", + "ADMIN_BROADCAST_TARGET_NO_SUB": "❌ Без подписки", + "ADMIN_BROADCAST_TARGET_TRIAL": "🎁 Триал", + "ADMIN_BROADCAST_TARGET_TRIAL_ZERO": "🥶 Триал 0 ГБ", + "ADMIN_BROADCAST_USE_MEDIA": "✅ Использовать это медиа", "ADMIN_CAMPAIGNS": "📣 Рекламные кампании", + "ADMIN_CAMPAIGNS_CREATE": "➕ Создать", + "ADMIN_CAMPAIGNS_GENERAL_STATS": "📊 Общая статистика", + "ADMIN_CAMPAIGNS_LIST": "📋 Список кампаний", + "ADMIN_CAMPAIGN_BONUS_BALANCE": "💰 Бонус на баланс", + "ADMIN_CAMPAIGN_BONUS_SUBSCRIPTION": "📱 Бонус на подписку", + "ADMIN_CAMPAIGN_DELETE": "🗑️ Удалить", + "ADMIN_CAMPAIGN_DEVICES": "📱 Устройства", + "ADMIN_CAMPAIGN_DISABLE": "🔴 Выключить", + "ADMIN_CAMPAIGN_DURATION": "📅 Длительность", + "ADMIN_CAMPAIGN_EDIT": "✏️ Редактировать", + "ADMIN_CAMPAIGN_EDIT_NAME": "✏️ Название", + "ADMIN_CAMPAIGN_EDIT_START": "🔗 Параметр", + "ADMIN_CAMPAIGN_ENABLE": "🟢 Включить", + "ADMIN_CAMPAIGN_SERVERS": "🌍 Серверы", + "ADMIN_CAMPAIGN_STATS": "📊 Статистика", + "ADMIN_CAMPAIGN_TRAFFIC": "🌐 Трафик", + "ADMIN_CANCEL": "❌ Отмена", + "ADMIN_COMMUNICATIONS_MENU_MESSAGES": "📢 Сообщения в меню", + "ADMIN_COMMUNICATIONS_PROMO_OFFERS": "🎯 Промо-предложения", + "ADMIN_COMMUNICATIONS_SUBMENU_DESCRIPTION": "Управление рассылками и текстами интерфейса:", + "ADMIN_COMMUNICATIONS_SUBMENU_TITLE": "📨 **Коммуникации**\n\n", + "ADMIN_COMMUNICATIONS_WELCOME_TEXT": "👋 Приветственный текст", + "ADMIN_CONTINUE": "✅ Продолжить", + "ADMIN_CRITERIA_ACTIVE_TODAY": "⚡ Активные сегодня", + "ADMIN_CRITERIA_DIRECT": "🎯 Прямая регистрация", + "ADMIN_CRITERIA_INACTIVE_MONTH": "💤 Неактивные 30+ дней", + "ADMIN_CRITERIA_INACTIVE_WEEK": "💤 Неактивные 7+ дней", + "ADMIN_CRITERIA_MONTH": "📅 За месяц", + "ADMIN_CRITERIA_PROMOCODES": "🎫 Использовали промокоды", + "ADMIN_CRITERIA_REFERRALS": "🤝 Через рефералов", + "ADMIN_CRITERIA_TODAY": "📅 Сегодня", + "ADMIN_CRITERIA_WEEK": "📅 За неделю", + "ADMIN_FAQ_ACTION_PROMPT": "Выберите действие:", + "ADMIN_FAQ_ADD_PAGE_BUTTON": "➕ Добавить страницу", + "ADMIN_FAQ_BACK_TO_LIST": "⬅️ К настройкам FAQ", + "ADMIN_FAQ_CANCEL_BUTTON": "⬅️ Отмена", + "ADMIN_FAQ_CONTENT_EMPTY": "❌ Текст не может быть пустым.", + "ADMIN_FAQ_CONTENT_TOO_LONG": "❌ Текст слишком длинный. Максимум 6000 символов.", + "ADMIN_FAQ_CONTENT_UPDATED": "✅ Текст страницы обновлён.", + "ADMIN_FAQ_DESCRIPTION": "FAQ отображается в разделе «Инфо».", + "ADMIN_FAQ_DISABLED_ALERT": "🚫 FAQ отключён.", + "ADMIN_FAQ_DISABLE_BUTTON": "🚫 Отключить показ", + "ADMIN_FAQ_EDIT_CONTENT_BUTTON": "📝 Изменить текст", + "ADMIN_FAQ_EDIT_TITLE_BUTTON": "✏️ Изменить заголовок", + "ADMIN_FAQ_ENABLED_ALERT": "✅ FAQ включён.", + "ADMIN_FAQ_ENABLE_BUTTON": "✅ Включить показ", + "ADMIN_FAQ_ENTER_CONTENT": "Отправьте содержимое страницы FAQ. Допускается HTML.", + "ADMIN_FAQ_ENTER_TITLE": "Введите заголовок для новой страницы FAQ:", + "ADMIN_FAQ_HEADER": "❓ FAQ", + "ADMIN_FAQ_HTML_ERROR": "❌ Ошибка в HTML: {error}", + "ADMIN_FAQ_HTML_HELP": "ℹ️ HTML помощь", + "ADMIN_FAQ_LANGUAGE": "Язык: {lang}", + "ADMIN_FAQ_PAGES_EMPTY": "Страницы ещё не созданы.", + "ADMIN_FAQ_PAGES_OVERVIEW": "Список страниц:\n{items}", + "ADMIN_FAQ_PAGE_CREATED": "✅ Страница FAQ создана.", + "ADMIN_FAQ_PAGE_DELETED": "🗑️ Страница удалена.", + "ADMIN_FAQ_PAGE_DELETE_BUTTON": "🗑️ Удалить", + "ADMIN_FAQ_PAGE_DISABLED_ALERT": "🚫 Страница выключена.", + "ADMIN_FAQ_PAGE_DISABLE_BUTTON": "🚫 Выключить страницу", + "ADMIN_FAQ_PAGE_ENABLED_ALERT": "✅ Страница включена.", + "ADMIN_FAQ_PAGE_ENABLE_BUTTON": "✅ Включить страницу", + "ADMIN_FAQ_PAGE_HEADER": "📄 Страница FAQ", + "ADMIN_FAQ_PAGE_MOVE_DOWN": "⬇️ Ниже", + "ADMIN_FAQ_PAGE_MOVE_UP": "⬆️ Выше", + "ADMIN_FAQ_PAGE_NOT_FOUND": "⚠️ Страница не найдена.", + "ADMIN_FAQ_PAGE_PREVIEW": "Превью:\n{content}", + "ADMIN_FAQ_PAGE_PREVIEW_EMPTY": "Текст ещё не задан.", + "ADMIN_FAQ_PAGE_REORDERED": "✅ Порядок обновлён.", + "ADMIN_FAQ_PAGE_STATS": "Всего страниц: {total}", + "ADMIN_FAQ_PAGE_STATUS": "Статус: {status}", + "ADMIN_FAQ_PAGE_STATUS_ACTIVE": "✅ Активна", + "ADMIN_FAQ_PAGE_STATUS_INACTIVE": "🚫 Выключена", + "ADMIN_FAQ_PAGE_TITLE": "Заголовок: {title}", + "ADMIN_FAQ_PAGE_UPDATED": "Обновлено: {timestamp}", + "ADMIN_FAQ_STATUS_DISABLED": "⚠️ Показ FAQ выключен.", + "ADMIN_FAQ_STATUS_EMPTY": "⚠️ FAQ ещё не настроен.", + "ADMIN_FAQ_STATUS_ENABLED": "✅ FAQ включён. Активных страниц: {count}.", + "ADMIN_FAQ_STATUS_ENABLED_EMPTY": "⚠️ FAQ включён, но нет активных страниц.", + "ADMIN_FAQ_TITLE_EMPTY": "❌ Заголовок не может быть пустым.", + "ADMIN_FAQ_TITLE_TOO_LONG": "❌ Заголовок слишком длинный. Максимум 255 символов.", + "ADMIN_FAQ_TITLE_UPDATED": "✅ Заголовок обновлён.", + "ADMIN_FAQ_UNEXPECTED_STATE": "⚠️ Состояние сброшено.", + "ADMIN_HISTORY_REFRESH": "🔄 Обновить", + "ADMIN_MAINTENANCE_CHECK_API": "🔍 Проверить API", + "ADMIN_MAINTENANCE_DISABLE": "🟢 Выключить техработы", + "ADMIN_MAINTENANCE_ENABLE": "🔧 Включить техработы", + "ADMIN_MAINTENANCE_PANEL_STATUS": "🌐 Статус панели", + "ADMIN_MAINTENANCE_SEND_NOTIFICATION": "📢 Отправить уведомление", + "ADMIN_MAINTENANCE_START_MONITORING": "▶️ Запустить мониторинг", + "ADMIN_MAINTENANCE_STOP_MONITORING": "⏹️ Остановить мониторинг", + "ADMIN_MAIN_MENU": "🏠 Главное меню", + "ADMIN_MAIN_MESSAGES": "📨 Сообщения", + "ADMIN_MAIN_PRICING": "💰 Цены", + "ADMIN_MAIN_PROMO_STATS": "💰 Промокоды/Статистика", + "ADMIN_MAIN_SERVERS": "🌐 Серверы", + "ADMIN_MAIN_SETTINGS": "⚙️ Настройки", + "ADMIN_MAIN_SUPPORT": "🛟 Поддержка", + "ADMIN_MAIN_SYSTEM": "🛠️ Система", + "ADMIN_MAIN_USERS_SUBSCRIPTIONS": "👥 Юзеры/Подписки", "ADMIN_MESSAGES": "📨 Рассылки", + "ADMIN_MESSAGES_ALL_USERS": "📨 Всем пользователям", + "ADMIN_MESSAGES_BY_CRITERIA": "🔍 По критериям", + "ADMIN_MESSAGES_BY_SUBSCRIPTIONS": "🎯 По подпискам", + "ADMIN_MESSAGES_HISTORY": "📋 История", "ADMIN_MONITORING": "🔍 Мониторинг", + "ADMIN_MONITORING_ALL_LOGS": "📋 Все логи", + "ADMIN_MONITORING_AUTOPAY_SETTINGS": "💳 Настройки автооплаты", + "ADMIN_MONITORING_AUTO_CLEANUP": "🧹 Автоочистка логов", + "ADMIN_MONITORING_BACK_TO_LOGS": "⬅️ К списку логов", + "ADMIN_MONITORING_CHECK_NOW": "🔄 Проверить сейчас", + "ADMIN_MONITORING_CLEAR": "🗑️ Очистить", + "ADMIN_MONITORING_CLEAR_ALL": "🗑️ Очистить ВСЕ логи", + "ADMIN_MONITORING_CLEAR_OLD": "🗑️ Очистить старые", + "ADMIN_MONITORING_CONFIRM_CLEAR": "✅ Да, очистить", + "ADMIN_MONITORING_DELETE_LOG": "🗑️ Удалить этот лог", + "ADMIN_MONITORING_FILTER_AUTOPAY": "💳 Автооплаты", + "ADMIN_MONITORING_FILTER_CYCLES": "🔄 Циклы мониторинга", + "ADMIN_MONITORING_FILTER_ERRORS": "❌ Ошибки", + "ADMIN_MONITORING_FILTER_SUCCESS": "✅ Успешные", + "ADMIN_MONITORING_FORCE_CHECK": "🔄 Принудительная проверка", + "ADMIN_MONITORING_LOGS": "📋 Логи", + "ADMIN_MONITORING_NOTIFICATIONS": "🔔 Уведомления", + "ADMIN_MONITORING_RESTART": "🔄 Перезапустить", + "ADMIN_MONITORING_SETTINGS": "⚙️ Настройки мониторинга", + "ADMIN_MONITORING_SETTINGS_BUTTON": "⚙️ Настройки", + "ADMIN_MONITORING_SET_INTERVAL": "⏱️ Интервал проверки", + "ADMIN_MONITORING_START": "▶️ Запустить", + "ADMIN_MONITORING_STATISTICS": "📊 Статистика", + "ADMIN_MONITORING_STATUS": "📊 Статус", + "ADMIN_MONITORING_STOP": "⏸️ Остановить", + "ADMIN_MONITORING_STOP_HARD": "⏹️ Остановить", + "ADMIN_MONITORING_TEST_NOTIFICATIONS": "🧪 Тест уведомлений", + "ADMIN_NODE_DISABLE": "⏸️ Отключить", + "ADMIN_NODE_ENABLE": "▶️ Включить", + "ADMIN_NODE_RESTART": "🔄 Перезагрузить", + "ADMIN_NODE_STATS": "📊 Статистика", "ADMIN_PANEL": "\n⚙️ Административная панель\n\nВыберите раздел для управления:\n", + "ADMIN_PERIOD_ALL": "📅 Все время", + "ADMIN_PERIOD_MONTH": "📅 Месяц", + "ADMIN_PERIOD_TODAY": "📅 Сегодня", + "ADMIN_PERIOD_WEEK": "📅 Неделя", + "ADMIN_PERIOD_YESTERDAY": "📅 Вчера", + "ADMIN_PRICING_BUTTON_CORE": "⚙️ Базовые лимиты", + "ADMIN_PRICING_BUTTON_EXTRA": "➕ Дополнительно", + "ADMIN_PRICING_BUTTON_PERIODS": "🗓 Периоды подписки", + "ADMIN_PRICING_BUTTON_PERIOD_OPTIONS": "🗓 Доступные периоды", + "ADMIN_PRICING_BUTTON_TRAFFIC": "📦 Пакеты трафика", + "ADMIN_PRICING_BUTTON_TRAFFIC_OPTIONS": "🚦 Отображение пакетов", + "ADMIN_PRICING_BUTTON_TRIAL": "🎁 Пробный период", + "ADMIN_PRICING_CHOICE_ALREADY": "Это значение уже активно.", + "ADMIN_PRICING_CHOICE_UPDATED": "Выбрано: {label}", + "ADMIN_PRICING_EDIT_CANCEL": "❌ Отмена", + "ADMIN_PRICING_EDIT_CANCELLED": "Изменения отменены.", + "ADMIN_PRICING_EDIT_CANCEL_HINT": "Напишите «Отмена», чтобы вернуться без изменений.", + "ADMIN_PRICING_EDIT_CURRENT": "Текущее значение", + "ADMIN_PRICING_EDIT_EXPIRED": "Сессия редактирования истекла.", + "ADMIN_PRICING_EDIT_INVALID": "Не удалось распознать цену. Укажите число в рублях (например 990 или 990.50).", + "ADMIN_PRICING_EDIT_PROMPT": "Введите новую стоимость в рублях (например 990 или 990.50). Для бесплатного тарифа укажите 0.", + "ADMIN_PRICING_EDIT_SUCCESS": "Цена для {item} обновлена: {price}", + "ADMIN_PRICING_EDIT_TARGET": "Текущий тариф", + "ADMIN_PRICING_EDIT_TITLE": "Изменение цены", + "ADMIN_PRICING_MENU_DESCRIPTION": "Быстрый доступ к тарифам подписок, пакетам трафика и дополнительным услугам.", + "ADMIN_PRICING_MENU_PROMPT": "Выберите раздел для редактирования:", + "ADMIN_PRICING_MENU_SUMMARY": "Краткая сводка:", + "ADMIN_PRICING_MENU_SUMMARY_CORE": "• Базовые лимиты: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_EXTRA": "• Дополнительно: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_PERIODS": "• Периоды: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_PERIOD_OPTIONS": "• Доступные периоды: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_TRAFFIC": "• Трафик: {summary}", + "ADMIN_PRICING_MENU_SUMMARY_TRIAL": "• Триал: {summary}", + "ADMIN_PRICING_MENU_TITLE": "Управление ценами", + "ADMIN_PRICING_PERIOD_DISABLED": "Период отключен.", + "ADMIN_PRICING_PERIOD_ENABLED": "Период включен.", + "ADMIN_PRICING_PERIOD_MIN": "Должен оставаться хотя бы один период.", + "ADMIN_PRICING_SECTION_CORE_TITLE": "⚙️ Базовые лимиты", + "ADMIN_PRICING_SECTION_CURRENT": "Текущие значения:", + "ADMIN_PRICING_SECTION_EMPTY": "Нет доступных значений.", + "ADMIN_PRICING_SECTION_EXTRA_TITLE": "➕ Дополнительные опции", + "ADMIN_PRICING_SECTION_PERIODS_TITLE": "🗓 Периоды подписки", + "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_PROMPT": "Нажмите на период, чтобы включить или выключить его отображение.", + "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_RENEW": "Активные периоды продления: {items}", + "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_SUB": "Активные периоды подписки: {items}", + "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_TITLE": "🗓 Доступные периоды", + "ADMIN_PRICING_SECTION_PROMPT": "Выберите что изменить:", + "ADMIN_PRICING_SECTION_SETTINGS_GENERIC": "⚙️ Настройки", + "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_ACTIVE": "Активные пакеты: {items}", + "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_NONE": "Активных пакетов нет.", + "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_PROMPT": "Нажмите на пакет, чтобы включить или выключить его отображение.", + "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_TITLE": "🚦 Отображение пакетов трафика", + "ADMIN_PRICING_SECTION_TRAFFIC_TITLE": "📦 Пакеты трафика", + "ADMIN_PRICING_SECTION_TRIAL_TITLE": "🎁 Пробный период", + "ADMIN_PRICING_SETTING_CANCEL_HINT": "Чтобы вернуться без изменений, ответьте «Отмена».", + "ADMIN_PRICING_SETTING_CURRENT": "Текущее значение", + "ADMIN_PRICING_SETTING_EDIT_TITLE": "Настройка параметра", + "ADMIN_PRICING_SETTING_EDIT_WITH_VALUE": "✏️ {label} • {value}", + "ADMIN_PRICING_SETTING_EXAMPLE": "Пример", + "ADMIN_PRICING_SETTING_FORMAT": "Формат ввода", + "ADMIN_PRICING_SETTING_INVALID": "Не удалось обновить параметр. Проверьте формат значения.", + "ADMIN_PRICING_SETTING_PARAMETER": "Параметр", + "ADMIN_PRICING_SETTING_PROMPT": "Отправьте новое значение или напишите «Отмена». Для очистки используйте none.", + "ADMIN_PRICING_SETTING_SUCCESS": "Параметр {label} обновлен: {value}", + "ADMIN_PRICING_SETTING_TOGGLE_STATEFUL": "{icon} {label}", + "ADMIN_PRICING_SETTING_WARNING": "Важно", + "ADMIN_PRICING_SUMMARY_EMPTY": "—", + "ADMIN_PRICING_TRAFFIC_PACKAGE_DISABLED": "Пакет отключен.", + "ADMIN_PRICING_TRAFFIC_PACKAGE_ENABLED": "Пакет включен.", + "ADMIN_PRICING_TRAFFIC_PACKAGE_MIN": "Должен оставаться хотя бы один пакет.", + "ADMIN_PRIVACY_POLICY_ACTION_PROMPT": "Выберите действие:", + "ADMIN_PRIVACY_POLICY_BACK_BUTTON": "⬅️ К настройкам политики", + "ADMIN_PRIVACY_POLICY_CANCEL": "❌ Отмена", + "ADMIN_PRIVACY_POLICY_CURRENT_PREVIEW": "Текущий текст (превью):", + "ADMIN_PRIVACY_POLICY_DESCRIPTION": "Политика конфиденциальности отображается в разделе «Инфо».", + "ADMIN_PRIVACY_POLICY_DISABLED": "🚫 Политика отключена", + "ADMIN_PRIVACY_POLICY_DISABLE_BUTTON": "🚫 Отключить показ", + "ADMIN_PRIVACY_POLICY_EDIT_BUTTON": "✏️ Изменить текст", + "ADMIN_PRIVACY_POLICY_EDIT_HINT": "Используйте /html_help для справки по тегам.", + "ADMIN_PRIVACY_POLICY_EDIT_PROMPT": "Отправьте новый текст политики конфиденциальности. Допускается HTML-разметка.", + "ADMIN_PRIVACY_POLICY_EDIT_TITLE": "Редактирование политики", + "ADMIN_PRIVACY_POLICY_ENABLED": "✅ Политика включена", + "ADMIN_PRIVACY_POLICY_ENABLE_BUTTON": "✅ Включить показ", + "ADMIN_PRIVACY_POLICY_HEADER": "🛡️ Политика конфиденциальности", + "ADMIN_PRIVACY_POLICY_HTML_ERROR": "❌ Ошибка в HTML: {error}", + "ADMIN_PRIVACY_POLICY_HTML_HELP": "ℹ️ HTML помощь", + "ADMIN_PRIVACY_POLICY_LANGUAGE": "Язык: {lang}", + "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY": "Текст ещё не задан.", + "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY_ALERT": "Текст политики пока не задан.", + "ADMIN_PRIVACY_POLICY_PREVIEW_TITLE": "Превью текста:", + "ADMIN_PRIVACY_POLICY_RETURN_TO_EDIT": "⬅️ Назад к редактированию", + "ADMIN_PRIVACY_POLICY_SAVED": "✅ Политика конфиденциальности обновлена.", + "ADMIN_PRIVACY_POLICY_STATUS_DISABLED": "⚠️ Показ политики выключен или текст отсутствует.", + "ADMIN_PRIVACY_POLICY_STATUS_ENABLED": "✅ Политика активна и показывается пользователям.", + "ADMIN_PRIVACY_POLICY_STATUS_ENABLED_EMPTY": "⚠️ Политика включена, но текст пуст — пользователи её не увидят.", + "ADMIN_PRIVACY_POLICY_TOO_LONG": "❌ Текст политики слишком длинный. Максимум 4000 символов.", + "ADMIN_PRIVACY_POLICY_UPDATED_AT": "Последнее обновление: {timestamp}", + "ADMIN_PRIVACY_POLICY_VIEW_BUTTON": "👀 Просмотреть текущий текст", + "ADMIN_PRIVACY_POLICY_VIEW_TITLE": "👀 Текущий текст политики", + "ADMIN_PRIVACY_POLICY_VIEW_TRUNCATED": "\n\n⚠️ Текст сокращён для отображения. Полную версию увидят пользователи в меню.", "ADMIN_PROMOCODES": "🎫 Промокоды", - "ADMIN_REFERRALS": "🤝 Партнерка", - "ADMIN_REMNAWAVE": "🖥️ Remnawave", - "ADMIN_RULES": "📋 Правила", - "ADMIN_STATISTICS": "📊 Статистика", + "ADMIN_PROMOCODES_ALL": "🎫 Все промокоды", + "ADMIN_PROMOCODES_CREATE": "➕ Создать", + "ADMIN_PROMOCODES_GENERAL_STATS": "📊 Общая статистика", + "ADMIN_PROMOCODE_DELETE": "🗑️ Удалить", + "ADMIN_PROMOCODE_EDIT": "✏️ Редактировать", + "ADMIN_PROMOCODE_STATS": "📊 Статистика", + "ADMIN_PROMOCODE_TOGGLE": "🔄 Статус", + "ADMIN_PROMOCODE_TYPE_BALANCE": "💰 Баланс", + "ADMIN_PROMOCODE_TYPE_DAYS": "📅 Дни подписки", + "ADMIN_PROMOCODE_TYPE_TRIAL": "🎁 Триал", "ADMIN_PROMO_GROUPS": "💳 Промогруппы", - "ADMIN_PROMO_GROUPS_TITLE": "💳 Промогруппы", + "ADMIN_PROMO_GROUPS_DEFAULT_LABEL": " (базовая)", + "ADMIN_PROMO_GROUPS_EMPTY": "Промогруппы не найдены.", + "ADMIN_PROMO_GROUPS_MEMBERS_COUNT": "Участников: {count}", "ADMIN_PROMO_GROUPS_SUMMARY": "Всего групп: {count}\nВсего участников: {members}", + "ADMIN_PROMO_GROUPS_TITLE": "💳 Промогруппы", + "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_DISABLED": "🧩 Скидки на доп. услуги: отключены", + "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_ENABLED": "🧩 Скидки на доп. услуги: включены", + "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_DISABLED": "🧩 Скидки на докупку доп. услуг отключены.", + "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_ENABLED": "🧩 Скидки на докупку доп. услуг включены.", + "ADMIN_PROMO_GROUP_AUTO_ASSIGN_DISABLED": "Автовыдача по суммарным тратам: отключена", + "ADMIN_PROMO_GROUP_AUTO_ASSIGN_LINE": "Автовыдача по суммарным тратам: от {amount} ₽", + "ADMIN_PROMO_GROUP_CREATED": "Промогруппа «{name}» создана.", + "ADMIN_PROMO_GROUP_CREATED_BACK_BUTTON": "↩️ К промогруппам", + "ADMIN_PROMO_GROUP_CREATE_AUTO_ASSIGN_PROMPT": "Введите сумму общих трат (в ₽) для автоматической выдачи этой группы. Отправьте 0, чтобы отключить.", + "ADMIN_PROMO_GROUP_CREATE_DEVICES_PROMPT": "Введите скидку на устройства (0-100):", + "ADMIN_PROMO_GROUP_CREATE_NAME_PROMPT": "Введите название новой промогруппы:", + "ADMIN_PROMO_GROUP_CREATE_PERIOD_PROMPT": "Введите скидки на периоды подписки (например, 30:10, 90:15). Отправьте 0, если без скидок.", + "ADMIN_PROMO_GROUP_CREATE_SERVERS_PROMPT": "Введите скидку на серверы (0-100):", + "ADMIN_PROMO_GROUP_CREATE_TRAFFIC_PROMPT": "Введите скидку на трафик (0-100):", + "ADMIN_PROMO_GROUP_DELETED": "Промогруппа «{name}» удалена.", + "ADMIN_PROMO_GROUP_DELETE_BUTTON": "🗑️ Удалить", + "ADMIN_PROMO_GROUP_DELETE_CONFIRM": "Удалить промогруппу «{name}»? Все пользователи будут переведены в базовую группу.", + "ADMIN_PROMO_GROUP_DELETE_FORBIDDEN": "Базовую промогруппу нельзя удалить.", + "ADMIN_PROMO_GROUP_DETAILS_DEFAULT": "Это базовая группа.", + "ADMIN_PROMO_GROUP_DETAILS_MEMBERS": "Участников: {count}", + "ADMIN_PROMO_GROUP_DETAILS_TITLE": "💳 Промогруппа: {name}", "ADMIN_PROMO_GROUP_DISCOUNTS_HEADER": "💸 Скидки промогруппы:", + "ADMIN_PROMO_GROUP_DISCOUNT_LINE_DEVICES": "• Устройства: {percent}%", "ADMIN_PROMO_GROUP_DISCOUNT_LINE_SERVERS": "• Серверы: {percent}%", "ADMIN_PROMO_GROUP_DISCOUNT_LINE_TRAFFIC": "• Трафик: {percent}%", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_DEVICES": "• Устройства: {percent}%", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_ENABLED": "🧩 Скидки на доп. услуги: включены", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_DISABLED": "🧩 Скидки на доп. услуги: отключены", - "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_ENABLE": "🧩 Включить скидки на доп. услуги", + "ADMIN_PROMO_GROUP_EDIT_AUTO_ASSIGN_PROMPT": "Введите сумму общих трат (в ₽) для автовыдачи. Текущее значение: {current}.", + "ADMIN_PROMO_GROUP_EDIT_BUTTON": "✏️ Изменить", + "ADMIN_PROMO_GROUP_EDIT_DEVICES_PROMPT": "Введите новую скидку на устройства (0-100):", + "ADMIN_PROMO_GROUP_EDIT_FIELD_AUTO_ASSIGN": "🤖 Автовыдача по тратам", + "ADMIN_PROMO_GROUP_EDIT_FIELD_DEVICES": "📱 Скидка на устройства", + "ADMIN_PROMO_GROUP_EDIT_FIELD_NAME": "✏️ Изменить название", + "ADMIN_PROMO_GROUP_EDIT_FIELD_PERIODS": "⏳ Скидки по периодам", + "ADMIN_PROMO_GROUP_EDIT_FIELD_SERVERS": "🖥 Скидка на серверы", + "ADMIN_PROMO_GROUP_EDIT_FIELD_TRAFFIC": "🌐 Скидка на трафик", + "ADMIN_PROMO_GROUP_EDIT_MENU_HINT": "Выберите параметр для изменения:", + "ADMIN_PROMO_GROUP_EDIT_MENU_TITLE": "✏️ Настройки промогруппы «{name}»", + "ADMIN_PROMO_GROUP_EDIT_NAME_PROMPT": "Введите новое название промогруппы (текущее: {name}):", + "ADMIN_PROMO_GROUP_EDIT_PERIOD_PROMPT": "Введите новые скидки на периоды (текущие: {current}). Отправьте 0, если без скидок.", + "ADMIN_PROMO_GROUP_EDIT_SERVERS_PROMPT": "Введите новую скидку на серверы (0-100):", + "ADMIN_PROMO_GROUP_EDIT_TRAFFIC_PROMPT": "Введите новую скидку на трафик (0-100):", + "ADMIN_PROMO_GROUP_INVALID_AUTO_ASSIGN": "Введите неотрицательное число в рублях или 0 для отключения.", + "ADMIN_PROMO_GROUP_INVALID_NAME": "Название не может быть пустым.", + "ADMIN_PROMO_GROUP_INVALID_PERCENT": "Введите число от 0 до 100.", + "ADMIN_PROMO_GROUP_INVALID_PERIOD_DISCOUNTS": "Введите пары период:скидка через запятую, например 30:10, 90:15, или 0.", + "ADMIN_PROMO_GROUP_MEMBERS_BUTTON": "👥 Участники", + "ADMIN_PROMO_GROUP_MEMBERS_EMPTY": "В этой группе пока нет участников.", + "ADMIN_PROMO_GROUP_MEMBERS_TITLE": "👥 Участники группы {name}", + "ADMIN_PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Скидки по периодам:", "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_DISABLE": "🧩 Отключить скидки на доп. услуги", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_ENABLED": "🧩 Скидки на докупку доп. услуг включены.", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_DISABLED": "🧩 Скидки на докупку доп. услуг отключены.", - "ADMIN_PROMO_GROUPS_DEFAULT_LABEL": " (базовая)", - "ADMIN_PROMO_GROUPS_MEMBERS_COUNT": "Участников: {count}", - "ADMIN_PROMO_GROUPS_EMPTY": "Промогруппы не найдены.", + "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_ENABLE": "🧩 Включить скидки на доп. услуги", + "ADMIN_PROMO_GROUP_UPDATED": "Промогруппа «{name}» обновлена.", + "ADMIN_PROMO_OFFERS_TITLE": "🎯 Промо-предложения\n\nВыберите предложение для настройки:", + "ADMIN_PROMO_OFFER_ACTIVE_DURATION": "Скидка после активации действует {hours} ч.", + "ADMIN_PROMO_OFFER_ALLOWED": "Доступные категории:", + "ADMIN_PROMO_OFFER_BACK_TO_LIST": "⬅️ К промопредложениям", + "ADMIN_PROMO_OFFER_BACK_TO_TEMPLATE": "↩️ К предложению", + "ADMIN_PROMO_OFFER_CTA_BUY": "Купить подписку", + "ADMIN_PROMO_OFFER_CTA_EXTEND": "Продлить подписку", + "ADMIN_PROMO_OFFER_DISCOUNT": "Доп. скидка: {percent}% (суммируется с другими скидками)", + "ADMIN_PROMO_OFFER_EXTEND": "Скидка на продление", + "ADMIN_PROMO_OFFER_LOGS": "📜 Лог операций", + "ADMIN_PROMO_OFFER_LOGS_ACTION_CLAIMED": "Принято", + "ADMIN_PROMO_OFFER_LOGS_ACTION_CONSUMED": "Использовано", + "ADMIN_PROMO_OFFER_LOGS_ACTION_DISABLED": "Отключено", + "ADMIN_PROMO_OFFER_LOGS_AMOUNT": "💰 Сумма: {amount}", + "ADMIN_PROMO_OFFER_LOGS_DESCRIPTION": "📝 {description}", + "ADMIN_PROMO_OFFER_LOGS_EFFECT_DISCOUNT": "💸 Скидка", + "ADMIN_PROMO_OFFER_LOGS_EFFECT_TEST": "🧪 Тестовый доступ", + "ADMIN_PROMO_OFFER_LOGS_EMPTY_BODY": "Записей пока нет.", + "ADMIN_PROMO_OFFER_LOGS_NEW_SQUADS": "🌍 Новые сквады: {squads}", + "ADMIN_PROMO_OFFER_LOGS_PAGINATION": "Страница {page}/{total}", + "ADMIN_PROMO_OFFER_LOGS_PERCENT": "📉 Скидка: {percent}%", + "ADMIN_PROMO_OFFER_LOGS_REASON_AUTOPAY": "🤖 Применено при автопродлении", + "ADMIN_PROMO_OFFER_LOGS_REASON_EXPIRED": "⏳ Предложение истекло", + "ADMIN_PROMO_OFFER_LOGS_REASON_GENERIC": "ℹ️ Действие: {reason}", + "ADMIN_PROMO_OFFER_LOGS_REASON_MANUAL": "💳 Списано при ручной оплате", + "ADMIN_PROMO_OFFER_LOGS_REASON_TEST_EXPIRED": "⏳ Тестовый доступ отключён", + "ADMIN_PROMO_OFFER_LOGS_SOURCE": "🏷 Источник: {source}", + "ADMIN_PROMO_OFFER_LOGS_SQUAD": "🌍 Сквад: {squad}", + "ADMIN_PROMO_OFFER_LOGS_TITLE": "📜 Лог операций промо-предложений", + "ADMIN_PROMO_OFFER_LOGS_UNKNOWN_USER": "Неизвестный пользователь", + "ADMIN_PROMO_OFFER_LOGS_USER": "👤 {user}", + "ADMIN_PROMO_OFFER_NO_SQUADS_AVAILABLE": "❌ Доступные серверы не найдены.", + "ADMIN_PROMO_OFFER_NO_USERS": "Подходящих пользователей не найдено.", + "ADMIN_PROMO_OFFER_PREVIEW": "Предпросмотр:", + "ADMIN_PROMO_OFFER_PROMPT_ACTIVE_DURATION": "Укажите срок действия активированной скидки (в часах):", + "ADMIN_PROMO_OFFER_PROMPT_BUTTON": "Введите новый текст кнопки:", + "ADMIN_PROMO_OFFER_PROMPT_DISCOUNT": "Введите размер скидки в процентах:", + "ADMIN_PROMO_OFFER_PROMPT_DURATION": "Введите длительность тестового доступа (в часах):", + "ADMIN_PROMO_OFFER_PROMPT_MESSAGE": "Введите новый текст предложения:", + "ADMIN_PROMO_OFFER_PROMPT_VALID": "Укажите срок действия (в часах):", + "ADMIN_PROMO_OFFER_PURCHASE": "Скидка на покупку", + "ADMIN_PROMO_OFFER_RESULT": "📬 Рассылка завершена\nОтправлено: {sent}\nОшибок: {failed}", + "ADMIN_PROMO_OFFER_SELECTED_SQUAD": "Текущий сквад: {name}", + "ADMIN_PROMO_OFFER_SELECTED_SQUAD_EMPTY": "Текущий сквад: не выбран", + "ADMIN_PROMO_OFFER_SELECTED_SQUAD_UUID": "Текущий сквад: {uuid}", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_BACK": "↩️ Назад", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_CLEAR": "🗑 Очистить", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_CLEARED": "✅ Сквад очищен", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_HINT": "Выберите сервер для тестового доступа из списка ниже.", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_NOT_FOUND": "❌ Сервер не найден", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_PAGE": "Страница {page}/{total}", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_TITLE": "🌍 Выберите сквад", + "ADMIN_PROMO_OFFER_SELECT_SQUAD_UPDATED": "✅ Сквад обновлён", + "ADMIN_PROMO_OFFER_SENDING": "Начинаем рассылку...", + "ADMIN_PROMO_OFFER_SEND_USER": "👤 Отправка пользователю", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT": "💸 Активная скидка: {percent}%", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_LEFT": " (до {date}, осталось {time})", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_NONE": "💸 Активная скидка отсутствует", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_SOURCE": " — источник: {source}", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_UNTIL": " (до {date})", + "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_OFFERS": "📨 Активные предложения:", + "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_LIST": "⬅️ К списку пользователей", + "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_PROFILE": "👤 К профилю пользователя", + "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_SEGMENTS": "↩️ К выбору категории", + "ADMIN_PROMO_OFFER_SEND_USER_BALANCE": "Баланс: {amount}", + "ADMIN_PROMO_OFFER_SEND_USER_EMPTY": "Подходящие пользователи не найдены. Измените запрос поиска.", + "ADMIN_PROMO_OFFER_SEND_USER_EMPTY_RESULT": "Отправка не выполнена", + "ADMIN_PROMO_OFFER_SEND_USER_HINT": "Выберите пользователя для отправки промопредложения.", + "ADMIN_PROMO_OFFER_SEND_USER_NO_ACTIVE_OFFERS": "📨 Активных предложений нет", + "ADMIN_PROMO_OFFER_SEND_USER_NO_SUBSCRIPTION": "💳 Подписка отсутствует", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ACTIVE_DURATION": " После активации: {duration}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_BONUS": "+{bonus}%", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_EXPIRES": " Истекает: {expires}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ITEM": "• {description} (до {expires})", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ITEM_HEADER": "• {description}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_NO_EXPIRY": "без срока", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_PERCENT": "{percent}%", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_ACCEPTED": "Принято: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_ACTIVE": "Активно сейчас: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_HEADER": "📊 Статистика предложений", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_PENDING": "Не принято: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_TOTAL": "Всего отправлено: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS": " Статус: {status}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS_ACCEPTED": "✅ Принято", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS_PENDING": "⏳ Не принято", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TEST": "Тестовый доступ", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TIME_LEFT": " Осталось: {time}", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TIME_LEFT_EXPIRED": "истекло", + "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TOTAL_DURATION": " Всего действует: {duration}", + "ADMIN_PROMO_OFFER_SEND_USER_PROFILE": "👤 {name}", + "ADMIN_PROMO_OFFER_SEND_USER_RESET": "❌ Сбросить поиск", + "ADMIN_PROMO_OFFER_SEND_USER_SEARCH": "🔍 Поиск", + "ADMIN_PROMO_OFFER_SEND_USER_SEARCH_PROMPT": "Введите имя, username или ID пользователя для поиска:", + "ADMIN_PROMO_OFFER_SEND_USER_SEARCH_QUERY": "🔍 Поиск: {query}", + "ADMIN_PROMO_OFFER_SEND_USER_SEND_BUTTON": "📬 Отправить предложение", + "ADMIN_PROMO_OFFER_SEND_USER_SKIPPED": "Пропущено: {skipped} (уже есть доступ)", + "ADMIN_PROMO_OFFER_SEND_USER_STATUS": "Статус: {status}", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION": "💳 Подписка", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_END": "Истекает: {date}", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_END_UNKNOWN": "не указано", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_SQUADS": "Подключено сквадов: {count}", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_STATUS": "Статус: {status}", + "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_TRAFFIC": "Трафик: {used}/{limit} ГБ", + "ADMIN_PROMO_OFFER_SEND_USER_SUMMARY_TITLE": "📬 Отправка пользователю {name}", + "ADMIN_PROMO_OFFER_SEND_USER_TELEGRAM": "🆔 {telegram_id}", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_ACTIVE_DURATION": "После активации действует {hours} ч.", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_DISCOUNT": "Скидка: {percent}%", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_HEADER": "📨 Выбранное предложение", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_TEST_DURATION": "Тестовый доступ: {hours} ч.", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_TYPE": "Тип: {label}", + "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_VALID": "Действует: {hours} ч.", + "ADMIN_PROMO_OFFER_SEND_USER_TEST_ACCESS": "🧪 Активные тестовые доступы:", + "ADMIN_PROMO_OFFER_SEND_USER_TEST_ACCESS_ITEM": "• {squad} (до {expires})", + "ADMIN_PROMO_OFFER_SEND_USER_TITLE": "👤 Отправка пользователю", + "ADMIN_PROMO_OFFER_SEND_USER_USERNAME": "🔗 @{username}", + "ADMIN_PROMO_OFFER_SKIPPED": "Пропущено: {skipped} (уже есть доступ)", + "ADMIN_PROMO_OFFER_STACKABLE_NOTE": "Скидка применяется один раз и добавляется к промогруппе.", + "ADMIN_PROMO_OFFER_TEST_ACCESS": "Тестовые сервера", + "ADMIN_PROMO_OFFER_TEST_DURATION": "Доступ: {hours} ч", + "ADMIN_PROMO_OFFER_TEST_SQUADS": "Сквады: {squads}", + "ADMIN_PROMO_OFFER_TEST_SQUADS_EMPTY": "Сквады: не указаны", + "ADMIN_PROMO_OFFER_TEST_SQUAD_NAME": "Сервер: {name}", + "ADMIN_PROMO_OFFER_TYPE": "Тип: {label}", + "ADMIN_PROMO_OFFER_VALID": "Срок действия: {hours} ч", + "ADMIN_PROMO_SUBMENU_TITLE": "💰 **Промокоды и статистика**\n\n", + "ADMIN_PUBLIC_OFFER_ACTION_PROMPT": "Выберите действие:", + "ADMIN_PUBLIC_OFFER_BACK_BUTTON": "⬅️ К настройкам оферты", + "ADMIN_PUBLIC_OFFER_CANCEL": "❌ Отмена", + "ADMIN_PUBLIC_OFFER_CURRENT_PREVIEW": "Текущий текст (превью):", + "ADMIN_PUBLIC_OFFER_DESCRIPTION": "Публичная оферта отображается в разделе «Инфо».", + "ADMIN_PUBLIC_OFFER_DISABLED": "🚫 Оферта отключена", + "ADMIN_PUBLIC_OFFER_DISABLE_BUTTON": "🚫 Отключить показ", + "ADMIN_PUBLIC_OFFER_EDIT_BUTTON": "✏️ Изменить текст", + "ADMIN_PUBLIC_OFFER_EDIT_CANCELLED": "Редактирование оферты отменено.", + "ADMIN_PUBLIC_OFFER_EDIT_HINT": "Используйте /html_help для справки по тегам.", + "ADMIN_PUBLIC_OFFER_EDIT_PROMPT": "Отправьте новый текст публичной оферты. Допускается HTML-разметка.", + "ADMIN_PUBLIC_OFFER_EDIT_TITLE": "Редактирование оферты", + "ADMIN_PUBLIC_OFFER_ENABLED": "✅ Оферта включена", + "ADMIN_PUBLIC_OFFER_ENABLE_BUTTON": "✅ Включить показ", + "ADMIN_PUBLIC_OFFER_HEADER": "📄 Публичная оферта", + "ADMIN_PUBLIC_OFFER_HTML_ERROR": "❌ Ошибка в HTML: {error}", + "ADMIN_PUBLIC_OFFER_HTML_HELP": "ℹ️ HTML помощь", + "ADMIN_PUBLIC_OFFER_LANGUAGE": "Язык: {lang}", + "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY": "Текст ещё не задан.", + "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY_ALERT": "Текст оферты пока не задан.", + "ADMIN_PUBLIC_OFFER_PREVIEW_TITLE": "Превью текста:", + "ADMIN_PUBLIC_OFFER_RETURN_TO_EDIT": "⬅️ Назад к редактированию", + "ADMIN_PUBLIC_OFFER_SAVED": "✅ Публичная оферта обновлена.", + "ADMIN_PUBLIC_OFFER_STATUS_DISABLED": "⚠️ Показ оферты выключен или текст отсутствует.", + "ADMIN_PUBLIC_OFFER_STATUS_ENABLED": "✅ Оферта активна и показывается пользователям.", + "ADMIN_PUBLIC_OFFER_STATUS_ENABLED_EMPTY": "⚠️ Оферта включена, но текст пуст — пользователи её не увидят.", + "ADMIN_PUBLIC_OFFER_TOO_LONG": "❌ Текст оферты слишком длинный. Максимум 4000 символов.", + "ADMIN_PUBLIC_OFFER_UPDATED_AT": "Последнее обновление: {timestamp}", + "ADMIN_PUBLIC_OFFER_VIEW_BUTTON": "👀 Просмотреть текущий текст", + "ADMIN_PUBLIC_OFFER_VIEW_TITLE": "👀 Текущий текст оферты", + "ADMIN_PUBLIC_OFFER_VIEW_TRUNCATED": "\n\n⚠️ Текст сокращён для отображения. Полную версию увидят пользователи в меню.", + "ADMIN_REFERRALS": "🤝 Партнерка", + "ADMIN_REFRESH": "🔄 Обновить", + "ADMIN_REMNAWAVE": "🖥️ Remnawave", + "ADMIN_REMNAWAVE_MANAGE_NODES": "🖥️ Управление нодами", + "ADMIN_REMNAWAVE_MANAGE_SQUADS": "🌐 Управление сквадами", + "ADMIN_REMNAWAVE_MIGRATION": "🚚 Переезд", + "ADMIN_REMNAWAVE_SYNC": "🔄 Синхронизация", + "ADMIN_REMNAWAVE_SYSTEM_STATS": "📊 Системная статистика", + "ADMIN_REMNAWAVE_TRAFFIC": "📈 Трафик", + "ADMIN_REPORTS": "📊 Отчеты", + "ADMIN_REPORTS_LAST_MONTH": "📅 За месяц", + "ADMIN_REPORTS_LAST_WEEK": "🗓️ За неделю", + "ADMIN_REPORTS_PREVIOUS_DAY": "📆 За вчера", + "ADMIN_RULES": "📋 Правила", + "ADMIN_SERVERS_ADD": "➕ Добавить сервер", + "ADMIN_SERVERS_LIST": "📋 Список серверов", + "ADMIN_SERVERS_STATS": "📊 Статистика", + "ADMIN_SERVERS_SYNC": "🔄 Синхронизация", + "ADMIN_SERVER_DELETE": "🗑️ Удалить", + "ADMIN_SERVER_DISABLE": "❌ Отключить", + "ADMIN_SERVER_EDIT_COUNTRY": "🌍 Страна", + "ADMIN_SERVER_EDIT_DESCRIPTION": "📝 Описание", + "ADMIN_SERVER_EDIT_LIMIT": "👥 Лимит", + "ADMIN_SERVER_EDIT_NAME": "✏️ Название", + "ADMIN_SERVER_EDIT_PRICE": "💰 Цена", + "ADMIN_SERVER_ENABLE": "✅ Включить", + "ADMIN_SETTINGS_BOT_CONFIG": "🧩 Конфигурация бота", + "ADMIN_SETTINGS_FAQ": "❓ FAQ", + "ADMIN_SETTINGS_MAINTENANCE": "🔧 Техработы", + "ADMIN_SETTINGS_PRIVACY_POLICY": "🛡️ Политика конф.", + "ADMIN_SETTINGS_PUBLIC_OFFER": "📄 Публичная оферта", + "ADMIN_SETTINGS_SUBMENU_DESCRIPTION": "Управление Remnawave, мониторингом и другими настройками:", + "ADMIN_SETTINGS_SUBMENU_TITLE": "⚙️ **Настройки системы**\n\n", + "ADMIN_SQUAD_ADD_ALL": "👥 Добавить всех пользователей", + "ADMIN_SQUAD_DELETE": "🗑️ Удалить сквад", + "ADMIN_SQUAD_EDIT": "✏️ Редактировать", + "ADMIN_SQUAD_EDIT_INBOUNDS": "🔧 Изменить инбаунды", + "ADMIN_SQUAD_MIGRATION_API_ERROR": "❌ Remnawave API не настроен: {error}", + "ADMIN_SQUAD_MIGRATION_BACK_BUTTON": "⬅️ В Remnawave", + "ADMIN_SQUAD_MIGRATION_CANCELLED": "❌ Переезд отменен.", + "ADMIN_SQUAD_MIGRATION_CHANGE_TARGET": "🔄 Изменить сервер назначения", + "ADMIN_SQUAD_MIGRATION_CONFIRM_BUTTON": "✅ Подтвердить", + "ADMIN_SQUAD_MIGRATION_CONFIRM_COUNT": "• Пользователей к переносу: {count}", + "ADMIN_SQUAD_MIGRATION_CONFIRM_DETAILS": "Проверьте параметры переезда:", + "ADMIN_SQUAD_MIGRATION_CONFIRM_PROMPT": "Подтвердите выполнение операции.", + "ADMIN_SQUAD_MIGRATION_CONFIRM_SOURCE": "• Из: {source}", + "ADMIN_SQUAD_MIGRATION_CONFIRM_TARGET": "• В: {target}", + "ADMIN_SQUAD_MIGRATION_ERROR": "❌ Не удалось выполнить переезд (код: {code}). {details}", + "ADMIN_SQUAD_MIGRATION_IN_PROGRESS": "Запускаю переезд...", + "ADMIN_SQUAD_MIGRATION_NEW_BUTTON": "🔁 Новый переезд", + "ADMIN_SQUAD_MIGRATION_NO_OPTIONS": "Нет доступных сквадов. Добавьте новые или отмените операцию.", + "ADMIN_SQUAD_MIGRATION_PAGE": "Стр. {page}/{pages}", + "ADMIN_SQUAD_MIGRATION_PAGE_HINT": "Это текущая страница.", + "ADMIN_SQUAD_MIGRATION_RESULT_PANEL_FAILED": "Не удалось обновить в панели: {count}", + "ADMIN_SQUAD_MIGRATION_RESULT_PANEL_UPDATED": "Обновлено в панели: {count}", + "ADMIN_SQUAD_MIGRATION_RESULT_TOTAL": "Найдено подписок: {count}", + "ADMIN_SQUAD_MIGRATION_RESULT_UPDATED": "Перенесено: {count}", + "ADMIN_SQUAD_MIGRATION_SAME_SQUAD": "Нельзя выбрать тот же сквад.", + "ADMIN_SQUAD_MIGRATION_SELECTED_SOURCE": "Источник: {source}", + "ADMIN_SQUAD_MIGRATION_SELECT_SOURCE": "Выберите сквад, из которого нужно переехать:", + "ADMIN_SQUAD_MIGRATION_SELECT_TARGET": "Выберите сквад, в который нужно переехать:", + "ADMIN_SQUAD_MIGRATION_SERVER_LABEL": "{name} — 👥 {users} ({status})", + "ADMIN_SQUAD_MIGRATION_SQUAD_BUTTON": "🌍 {name} — 👥 {users} ({status})", + "ADMIN_SQUAD_MIGRATION_SQUAD_NOT_FOUND": "Сквад не найден или недоступен.", + "ADMIN_SQUAD_MIGRATION_STATUS_AVAILABLE": "✅ Доступен", + "ADMIN_SQUAD_MIGRATION_STATUS_AVAILABLE_SHORT": "✅", + "ADMIN_SQUAD_MIGRATION_STATUS_UNAVAILABLE": "🚫 Недоступен", + "ADMIN_SQUAD_MIGRATION_STATUS_UNAVAILABLE_SHORT": "🚫", + "ADMIN_SQUAD_MIGRATION_SUCCESS_TITLE": "✅ Переезд завершен", + "ADMIN_SQUAD_MIGRATION_TARGET_EMPTY": "Нет других сквадов для переезда. Отмените операцию или создайте новые сквады.", + "ADMIN_SQUAD_MIGRATION_TITLE": "🚚 Переезд сквадов", + "ADMIN_SQUAD_REMOVE_ALL": "❌ Удалить всех пользователей", + "ADMIN_SQUAD_RENAME": "✏️ Переименовать", + "ADMIN_STATISTICS": "📊 Статистика", + "ADMIN_STATS_BUTTON": "📊 Статистика", + "ADMIN_STATS_REFERRALS": "🤝 Партнерка", + "ADMIN_STATS_REVENUE": "💰 Доходы", + "ADMIN_STATS_SUBSCRIPTIONS": "📱 Подписки", + "ADMIN_STATS_SUMMARY": "📊 Общая сводка", + "ADMIN_STATS_USERS": "👥 Пользователи", + "ADMIN_SUBMENU_SELECT_SECTION": "Выберите нужный раздел:", + "ADMIN_SUBSCRIPTIONS": "📱 Подписки", + "ADMIN_SUBSCRIPTIONS_ALL": "📱 Все подписки", + "ADMIN_SUBSCRIPTIONS_COUNTRIES": "🌍 Управление странами", + "ADMIN_SUBSCRIPTIONS_EXPIRING": "⏰ Истекающие", + "ADMIN_SUBSCRIPTIONS_PRICING": "⚙️ Настройки цен", + "ADMIN_SUPPORT_ASSIGN_MODERATOR_PROMPT": "🧑‍⚖️ Назначение модератора\n\nОтправьте Telegram ID пользователя (число)", + "ADMIN_SUPPORT_AUDIT": "🧾 Аудит модераторов", + "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_PERM": "Блокировка (навсегда)", + "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_TIMED": "Блокировка (время)", + "ADMIN_SUPPORT_AUDIT_ACTION_CLOSE_TICKET": "Закрытие тикета", + "ADMIN_SUPPORT_AUDIT_ACTION_UNBLOCK": "Снятие блока", + "ADMIN_SUPPORT_AUDIT_EMPTY": "Пока пусто", + "ADMIN_SUPPORT_AUDIT_ROLE_ADMIN": "Админ", + "ADMIN_SUPPORT_AUDIT_ROLE_MODERATOR": "Модератор", + "ADMIN_SUPPORT_AUDIT_TITLE": "🧾 Аудит модераторов", + "ADMIN_SUPPORT_DESCRIPTION_SENT": "Текст отправлен ниже", + "ADMIN_SUPPORT_DESCRIPTION_UPDATED": "✅ Описание обновлено.", + "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_HINT": "Добавьте в описание при необходимости.", + "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_TITLE": "Контакт для режима «Контакт»", + "ADMIN_SUPPORT_EDIT_DESCRIPTION_CURRENT": "Текущее описание:", + "ADMIN_SUPPORT_EDIT_DESCRIPTION_TITLE": "📝 Редактирование описания поддержки", + "ADMIN_SUPPORT_INVALID_TELEGRAM_ID": "❌ Введите корректный Telegram ID (число)", + "ADMIN_SUPPORT_MESSAGE_DELETED": "Сообщение удалено", + "ADMIN_SUPPORT_MODERATION_DESCRIPTION": "Доступ к тикетам поддержки.", + "ADMIN_SUPPORT_MODERATION_TITLE": "🧑‍⚖️ Модерация поддержки", + "ADMIN_SUPPORT_MODERATORS_EMPTY": "Список пуст", + "ADMIN_SUPPORT_MODERATORS_TITLE": "🧑‍⚖️ Модераторы", + "ADMIN_SUPPORT_MODERATOR_ADDED_FAIL": "❌ Не удалось назначить модератора", + "ADMIN_SUPPORT_MODERATOR_ADDED_SUCCESS": "✅ Пользователь {tid} назначен модератором", + "ADMIN_SUPPORT_MODERATOR_REMOVED_FAIL": "❌ Не удалось удалить модератора", + "ADMIN_SUPPORT_MODERATOR_REMOVED_SUCCESS": "✅ Модератор {tid} удалён", + "ADMIN_SUPPORT_REMOVE_MODERATOR_PROMPT": "🧑‍⚖️ Удаление модератора\n\nОтправьте Telegram ID пользователя (число)", + "ADMIN_SUPPORT_SEND_DESCRIPTION": "📨 Прислать текст", + "ADMIN_SUPPORT_SETTINGS": "🛟 Настройки поддержки", + "ADMIN_SUPPORT_SETTINGS_ADD_MODERATOR": "➕ Назначить модератора", + "ADMIN_SUPPORT_SETTINGS_ADMIN_NOTIFICATIONS": "Админ-уведомления", + "ADMIN_SUPPORT_SETTINGS_DESCRIPTION": "Режим работы и видимость в меню. Ниже текущее описание меню поддержки:", + "ADMIN_SUPPORT_SETTINGS_EDIT_DESCRIPTION": "📝 Изменить описание", + "ADMIN_SUPPORT_SETTINGS_MENU_LABEL": "Пункт «Техподдержка» в меню", + "ADMIN_SUPPORT_SETTINGS_MODERATORS_COUNT": "🧑‍⚖️ Модераторы: {count}", + "ADMIN_SUPPORT_SETTINGS_MODE_BOTH": "Оба", + "ADMIN_SUPPORT_SETTINGS_MODE_CONTACT": "Контакт", + "ADMIN_SUPPORT_SETTINGS_MODE_TICKETS": "Тикеты", + "ADMIN_SUPPORT_SETTINGS_REMOVE_MODERATOR": "➖ Удалить модератора", + "ADMIN_SUPPORT_SETTINGS_SLA_LABEL": "SLA", + "ADMIN_SUPPORT_SETTINGS_SLA_TIME": "⏳ Время SLA: {minutes} мин", + "ADMIN_SUPPORT_SETTINGS_STATUS_DISABLED": "Отключены", + "ADMIN_SUPPORT_SETTINGS_STATUS_ENABLED": "Включены", + "ADMIN_SUPPORT_SETTINGS_TITLE": "🛟 Настройки поддержки", + "ADMIN_SUPPORT_SETTINGS_USER_NOTIFICATIONS": "Пользовательские уведомления", + "ADMIN_SUPPORT_SLA_INVALID": "❌ Введите корректное число минут (1-1440)", + "ADMIN_SUPPORT_SLA_SAVED": "✅ Значение SLA сохранено", + "ADMIN_SUPPORT_SLA_SETUP_PROMPT": "⏳ Настройка SLA\n\nВведите количество минут ожидания ответа (целое число > 0):", + "ADMIN_SUPPORT_SUBMENU_DESCRIPTION": "Управление тикетами и настройками поддержки:", + "ADMIN_SUPPORT_SUBMENU_DESCRIPTION_MODERATOR": "Доступ к тикетам.", + "ADMIN_SUPPORT_SUBMENU_TITLE": "🛟 **Поддержка**\n\n", + "ADMIN_SUPPORT_TICKETS": "🎫 Тикеты поддержки", + "ADMIN_SYNC_BACK": "⬅️ К синхронизации", + "ADMIN_SYNC_CLEANUP": "🧹 Очистка", + "ADMIN_SYNC_CONFIRM": "✅ Подтвердить", + "ADMIN_SYNC_FULL": "🔄 Полная синхронизация", + "ADMIN_SYNC_ONLY_NEW": "🆕 Только новые", + "ADMIN_SYNC_RECOMMENDATIONS": "💡 Рекомендации", + "ADMIN_SYNC_RETRY": "🔄 Повторить", + "ADMIN_SYNC_UPDATE": "📈 Обновить данные", + "ADMIN_SYNC_VALIDATE": "🔍 Валидация", + "ADMIN_SYSTEM_BACKUPS": "🗄️ Резервные копии", + "ADMIN_SYSTEM_LOGS": "🧾 Логи", + "ADMIN_SYSTEM_SUBMENU_DESCRIPTION": "Отчеты, обновления, логи, резервные копии и системные операции:", + "ADMIN_SYSTEM_SUBMENU_TITLE": "🛠️ **Системные функции**\n\n", + "ADMIN_SYSTEM_UPDATES": "📄 Обновления", + "ADMIN_TICKETS_TITLE": "🎫 Все тикеты поддержки:", + "ADMIN_TICKETS_TITLE_CLOSED": "🎫 Закрытые тикеты поддержки:", + "ADMIN_TICKETS_TITLE_OPEN": "🎫 Открытые тикеты поддержки:", + "ADMIN_TICKET_REPLY_INPUT": "Введите ответ от поддержки:", + "ADMIN_TICKET_REPLY_SENT": "✅ Ответ отправлен!", + "ADMIN_USERS": "👥 Пользователи", + "ADMIN_USERS_ALL": "👥 Все пользователи", + "ADMIN_USERS_FILTERS": "⚙️ Фильтры", + "ADMIN_USERS_FILTER_ACTIVITY": "🕒 По активности", + "ADMIN_USERS_FILTER_BALANCE": "💰 По балансу", + "ADMIN_USERS_FILTER_CAMPAIGN": "📢 По кампании", + "ADMIN_USERS_FILTER_PURCHASES": "🛒 По количеству покупок", + "ADMIN_USERS_FILTER_SPENDING": "💳 По сумме трат", + "ADMIN_USERS_FILTER_TRAFFIC": "📶 По трафику", + "ADMIN_USERS_INACTIVE": "🗑️ Неактивные", + "ADMIN_USERS_SEARCH": "🔍 Поиск", + "ADMIN_USERS_SUBMENU_TITLE": "👥 **Управление пользователями и подписками**\n\n", + "ADMIN_USER_ALREADY_DELETED": "❌ Пользователь удален", + "ADMIN_USER_BALANCE": "💰 Баланс", + "ADMIN_USER_BLOCK": "🚫 Заблокировать", + "ADMIN_USER_DELETE": "🗑️ Удалить", + "ADMIN_USER_LAST_ACTIVITY_UNKNOWN": "Неизвестно", + "ADMIN_USER_MANAGEMENT_PROFILE": "👤 Управление пользователем\n\nОсновная информация:\n• Имя: {name}\n• ID: {telegram_id}\n• Username: {username}\n• Статус: {status}\n• Язык: {language}\n\nФинансы:\n• Баланс: {balance}\n• Транзакций: {transactions}\n\nАктивность:\n• Регистрация: {registration}\n• Последняя активность: {last_activity}\n• Дней с регистрации: {registration_days}", + "ADMIN_USER_MANAGEMENT_PROMO_GROUP": "Промогруппа:\n• Название: {name}\n• Скидка на сервера: {server_discount}%\n• Скидка на трафик: {traffic_discount}%\n• Скидка на устройства: {device_discount}%", + "ADMIN_USER_MANAGEMENT_PROMO_GROUP_NONE": "Промогруппа: Не назначена", + "ADMIN_USER_MANAGEMENT_SUBSCRIPTION": "Подписка:\n• Тип: {type}\n• Статус: {status}\n• До: {end_date}\n• Трафик: {traffic}\n• Устройства: {devices}\n• Стран: {countries}", + "ADMIN_USER_MANAGEMENT_SUBSCRIPTION_NONE": "Подписка: Отсутствует", + "ADMIN_USER_PROMO_GROUP_ALREADY": "ℹ️ Пользователь уже состоит в этой промогруппе.", + "ADMIN_USER_PROMO_GROUP_BACK": "⬅️ К пользователю", "ADMIN_USER_PROMO_GROUP_BUTTON": "👥 Промогруппа", - "ADMIN_USER_PROMO_GROUP_TITLE": "👥 Промогруппа пользователя", "ADMIN_USER_PROMO_GROUP_CURRENT": "Текущая группа: {name}", "ADMIN_USER_PROMO_GROUP_CURRENT_NONE": "Текущая группа: не назначена", "ADMIN_USER_PROMO_GROUP_DISCOUNTS": "Скидки — серверы: {servers}%, трафик: {traffic}%, устройства: {devices}%", "ADMIN_USER_PROMO_GROUP_DISCOUNTS_NONE": "Скидки не заданы.", - "ADMIN_USER_PROMO_GROUP_SELECT": "Выберите промогруппу для назначения:", - "ADMIN_USER_PROMO_GROUP_UPDATED": "✅ Промогруппа пользователя обновлена: «{name}»", - "ADMIN_USER_PROMO_GROUP_ALREADY": "ℹ️ Пользователь уже состоит в этой промогруппе.", "ADMIN_USER_PROMO_GROUP_ERROR": "❌ Не удалось обновить промогруппу пользователя.", - "ADMIN_USER_PROMO_GROUP_BACK": "⬅️ К пользователю", - "ADMIN_USER_MANAGEMENT_PROFILE": "👤 Управление пользователем\n\nОсновная информация:\n• Имя: {name}\n• ID: {telegram_id}\n• Username: {username}\n• Статус: {status}\n• Язык: {language}\n\nФинансы:\n• Баланс: {balance}\n• Транзакций: {transactions}\n\nАктивность:\n• Регистрация: {registration}\n• Последняя активность: {last_activity}\n• Дней с регистрации: {registration_days}", - "ADMIN_USER_USERNAME_NOT_SET": "не указан", + "ADMIN_USER_PROMO_GROUP_SELECT": "Выберите промогруппу для назначения:", + "ADMIN_USER_PROMO_GROUP_TITLE": "👥 Промогруппа пользователя", + "ADMIN_USER_PROMO_GROUP_UPDATED": "✅ Промогруппа пользователя обновлена: «{name}»", + "ADMIN_USER_STATISTICS": "📊 Статистика", "ADMIN_USER_STATUS_ACTIVE": "✅ Активен", "ADMIN_USER_STATUS_BLOCKED": "🚫 Заблокирован", "ADMIN_USER_STATUS_DELETED": "🗑️ Удален", "ADMIN_USER_STATUS_UNKNOWN": "❓ Неизвестно", - "ADMIN_USER_LAST_ACTIVITY_UNKNOWN": "Неизвестно", - "ADMIN_USER_SUBSCRIPTION_TYPE_TRIAL": "🎁 Триал", - "ADMIN_USER_SUBSCRIPTION_TYPE_PAID": "💎 Платная", + "ADMIN_USER_SUBSCRIPTION_SETTINGS": "📱 Подписка и настройки", "ADMIN_USER_SUBSCRIPTION_STATUS_ACTIVE": "✅ Активна", "ADMIN_USER_SUBSCRIPTION_STATUS_INACTIVE": "❌ Неактивна", + "ADMIN_USER_SUBSCRIPTION_TYPE_PAID": "💎 Платная", + "ADMIN_USER_SUBSCRIPTION_TYPE_TRIAL": "🎁 Триал", "ADMIN_USER_TRAFFIC_USAGE": "{used}/{limit} ГБ", - "ADMIN_USER_MANAGEMENT_SUBSCRIPTION": "Подписка:\n• Тип: {type}\n• Статус: {status}\n• До: {end_date}\n• Трафик: {traffic}\n• Устройства: {devices}\n• Стран: {countries}", - "ADMIN_USER_MANAGEMENT_SUBSCRIPTION_NONE": "Подписка: Отсутствует", - "ADMIN_USER_MANAGEMENT_PROMO_GROUP": "Промогруппа:\n• Название: {name}\n• Скидка на сервера: {server_discount}%\n• Скидка на трафик: {traffic_discount}%\n• Скидка на устройства: {device_discount}%", - "ADMIN_USER_MANAGEMENT_PROMO_GROUP_NONE": "Промогруппа: Не назначена", - "ADMIN_PROMO_GROUP_DETAILS_TITLE": "💳 Промогруппа: {name}", - "ADMIN_PROMO_GROUP_DETAILS_MEMBERS": "Участников: {count}", - "ADMIN_PROMO_GROUP_DETAILS_DEFAULT": "Это базовая группа.", - "ADMIN_PROMO_GROUP_MEMBERS_BUTTON": "👥 Участники", - "ADMIN_PROMO_GROUP_EDIT_BUTTON": "✏️ Изменить", - "ADMIN_PROMO_GROUP_DELETE_BUTTON": "🗑️ Удалить", - "ADMIN_PROMO_GROUP_CREATE_NAME_PROMPT": "Введите название новой промогруппы:", - "ADMIN_PROMO_GROUP_INVALID_NAME": "Название не может быть пустым.", - "ADMIN_PROMO_GROUP_CREATE_TRAFFIC_PROMPT": "Введите скидку на трафик (0-100):", - "ADMIN_PROMO_GROUP_CREATE_SERVERS_PROMPT": "Введите скидку на серверы (0-100):", - "ADMIN_PROMO_GROUP_CREATE_DEVICES_PROMPT": "Введите скидку на устройства (0-100):", - "ADMIN_PROMO_GROUP_INVALID_PERCENT": "Введите число от 0 до 100.", - "ADMIN_PROMO_GROUP_CREATED": "Промогруппа «{name}» создана.", - "ADMIN_PROMO_GROUP_CREATED_BACK_BUTTON": "↩️ К промогруппам", - "ADMIN_PROMO_GROUP_EDIT_NAME_PROMPT": "Введите новое название промогруппы (текущее: {name}):", - "ADMIN_PROMO_GROUP_EDIT_TRAFFIC_PROMPT": "Введите новую скидку на трафик (0-100):", - "ADMIN_PROMO_GROUP_EDIT_SERVERS_PROMPT": "Введите новую скидку на серверы (0-100):", - "ADMIN_PROMO_GROUP_EDIT_DEVICES_PROMPT": "Введите новую скидку на устройства (0-100):", - "ADMIN_PROMO_GROUP_UPDATED": "Промогруппа «{name}» обновлена.", - "ADMIN_PROMO_GROUP_MEMBERS_TITLE": "👥 Участники группы {name}", - "ADMIN_PROMO_GROUP_MEMBERS_EMPTY": "В этой группе пока нет участников.", - "ADMIN_PROMO_GROUP_DELETE_FORBIDDEN": "Базовую промогруппу нельзя удалить.", - "ADMIN_PROMO_GROUP_DELETE_CONFIRM": "Удалить промогруппу «{name}»? Все пользователи будут переведены в базовую группу.", - "ADMIN_PROMO_GROUP_DELETED": "Промогруппа «{name}» удалена.", - "ADMIN_SUBSCRIPTIONS": "📱 Подписки", - "ADMIN_USERS": "👥 Пользователи", - "ADMIN_TICKETS_TITLE_OPEN": "🎫 Открытые тикеты поддержки:", - "ADMIN_TICKETS_TITLE_CLOSED": "🎫 Закрытые тикеты поддержки:", + "ADMIN_USER_TRANSACTIONS": "📋 Транзакции", + "ADMIN_USER_UNBLOCK": "✅ Разблокировать", + "ADMIN_USER_USERNAME_NOT_SET": "не указан", + "ADMIN_WELCOME_DISABLE": "🔴 Отключить", + "ADMIN_WELCOME_EDIT": "📝 Изменить текст", + "ADMIN_WELCOME_ENABLE": "🟢 Включить", + "ADMIN_WELCOME_HTML": "🏷️ HTML форматирование", + "ADMIN_WELCOME_PLACEHOLDERS": "💡 Плейсхолдеры", + "ADMIN_WELCOME_PREVIEW": "👁️ Предпросмотр", + "ADMIN_WELCOME_RESET": "🔄 Сбросить", + "ADMIN_WELCOME_SHOW": "👁️ Показать текущий", + "ALREADY_REGISTERED_REFERRAL": "ℹ️ Вы уже зарегистрированы в системе. Реферальная ссылка не может быть применена.", + "ATTACHMENTS_SENT": "✅ Вложения отправлены.", "AUTOPAY_BUTTON": "💳 Автоплатёж", + "AUTOPAY_DAYS_SET": "✅ Установлено {days} дней!", "AUTOPAY_DISABLED_TEXT": "Отключен - не забудьте продлить вручную!", "AUTOPAY_ENABLED_TEXT": "Включен - подписка продлится автоматически", "AUTOPAY_FAILED": "\n❌ Ошибка автоплатежа\n\nНе удалось списать средства для продления подписки.\nНедостаточно средств на балансе: {balance}\nТребуется: {required}\n\nПополните баланс и продлите подписку вручную.\n", - "AUTOPAY_SET_DAYS_BUTTON": "⚙️ Настроить дни", - "AUTOPAY_SUCCESS": "\n✅ Автоплатеж выполнен\n\nВаша подписка автоматически продлена на {days} дней.\nСписано с баланса: {amount}\n", - "AUTOPAY_STATUS_ENABLED": "включен", - "AUTOPAY_STATUS_DISABLED": "выключен", "AUTOPAY_MENU_TEXT": "💳 Автоплатеж\n\n📊 Статус: {status}\n⏰ Списание за: {days} дн. до окончания\n\nВыберите действие:", - "AUTOPAY_TOGGLE_SUCCESS": "✅ Автоплатеж {status}!", "AUTOPAY_SELECT_DAYS_PROMPT": "⏰ Выберите за сколько дней до окончания списывать средства:", - "AUTOPAY_DAYS_SET": "✅ Установлено {days} дней!", + "AUTOPAY_SET_DAYS_BUTTON": "⚙️ Настроить дни", + "AUTOPAY_STATUS_DISABLED": "выключен", + "AUTOPAY_STATUS_ENABLED": "включен", + "AUTOPAY_SUCCESS": "\n✅ Автоплатеж выполнен\n\nВаша подписка автоматически продлена на {days} дней.\nСписано с баланса: {amount}\n", + "AUTOPAY_TOGGLE_SUCCESS": "✅ Автоплатеж {status}!", "BACK": "⬅️ Назад", + "BACK_TO_MAIN_MENU_BUTTON": "⬅️ В главное меню", + "BACK_TO_MENU": "🏠 В главное меню", + "BACK_TO_OPEN_TICKETS": "🔴 Открытые тикеты", "BACK_TO_SUBSCRIPTION": "⬅️ К подписке", + "BACK_TO_SUPPORT": "⬅️ К поддержке", + "BACK_TO_TICKETS": "⬅️ К тикетам", "BALANCE_BUTTON": "💰 Баланс: {balance}", "BALANCE_BUTTON_DEFAULT": "💰 Баланс: {balance}", "BALANCE_BUTTON_ZERO": "💰 Баланс: 0 ₽", "BALANCE_HISTORY": "📊 История операций", "BALANCE_INFO": "\n💰 Баланс: {balance}\n\nВыберите действие:\n", "BALANCE_SUPPORT_REQUEST": "🛠️ Запрос через поддержку", + "BALANCE_TOPUP": "💳 Пополнить баланс", + "BALANCE_TOPUP_CART_REMINDER_DETAILED": "\\n💡 Требуется пополнение баланса\\n\\nВ вашей корзине находятся товары на общую сумму {total_amount}, но на балансе недостаточно средств.\\n\\n💳 Пополните баланс, чтобы завершить покупку.\\n\\nВыберите способ пополнения:", "BALANCE_TOP_UP": "💳 Пополнить", - "CAMPAIGN_EXISTING_USER": "ℹ️ Эта рекламная ссылка доступна только новым пользователям.", + "BLOCK_BY_TIME": "⏳ Блокировка по времени", + "BLOCK_FOREVER": "🚫 Заблокировать", + "BUY_SUBSCRIPTION_START": "\n💎 Настройка подписки\n\nДавайте настроим вашу подписку под ваши потребности.\n\nСначала выберите период подписки:\n", "CAMPAIGN_BONUS_BALANCE": "🎉 Вы получили {amount} за регистрацию по кампании «{name}»!", "CAMPAIGN_BONUS_SUBSCRIPTION": "🎉 Вам выдана подписка на {days} д. (трафик: {traffic}, устройств: {devices}) по кампании «{name}»!", - "BUY_SUBSCRIPTION_START": "\n💎 Настройка подписки\n\nДавайте настроим вашу подписку под ваши потребности.\n\nСначала выберите период подписки:\n", - "PROMO_GROUP_DISCOUNTS_HEADER": "🎁 Скидки вашей промогруппы", - "PROMO_GROUP_DISCOUNT_SERVERS": "🌍 Серверы: {percent}%", - "PROMO_GROUP_DISCOUNT_TRAFFIC": "📊 Трафик: {percent}%", - "PROMO_GROUP_DISCOUNT_DEVICES": "📱 Доп. устройства: {percent}%", - "PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Скидки за длительный период:", - "PROMO_GROUP_PERIOD_DISCOUNT_ITEM": "{period} — {percent}%", + "CAMPAIGN_EXISTING_USER": "ℹ️ Эта рекламная ссылка доступна только новым пользователям.", + "CAMPAIGN_EXISTING_USERL": "ℹ️ Эта рекламная ссылка доступна только новым пользователям.", "CANCEL": "❌ Отмена", + "CANCEL_REPLY": "❌ Отменить ответ", + "CANCEL_TICKET_CREATION": "❌ Отменить создание тикета", "CHANGE_DEVICES_BUTTON": "📱 Изменить устройства", - "CHANGE_DEVICES_PROMPT": "📱 Изменение количества устройств\n\nТекущий лимит: {current_devices} устройств\nВыберите новое количество устройств:\n\n💡 Важно:\n• При увеличении - доплата пропорционально оставшемуся времени\n• При уменьшении - возврат средств не производится", "CHANGE_DEVICES_CONFIRM": "\n 📱 Подтверждение изменения\n\n Текущее количество: {current_devices} устройств\n Новое количество: {new_devices} устройств\n\n Действие: {action}\n 💰 {cost}\n\n Подтвердить изменение?\n ", "CHANGE_DEVICES_INFO": "\n 📱 Изменение количества устройств\n\n Текущий лимит: {current_devices} устройств\n\n Выберите новое количество устройств:\n\n 💡 Важно:\n • При увеличении - доплата пропорционально оставшемуся времени\n • При уменьшении - возврат средств не производится\n ", + "CHANGE_DEVICES_PROMPT": "📱 Изменение количества устройств\n\nТекущий лимит: {current_devices} устройств\nВыберите новое количество устройств:\n\n💡 Важно:\n• При увеличении - доплата пропорционально оставшемуся времени\n• При уменьшении - возврат средств не производится", "CHANGE_DEVICES_SUCCESS_DECREASE": "\n ✅ Количество устройств уменьшено!\n\n 📱 Было: {old_count} → Стало: {new_count}\n ℹ️ Возврат средств не производится\n ", "CHANGE_DEVICES_SUCCESS_INCREASE": "\n ✅ Количество устройств увеличено!\n\n 📱 Было: {old_count} → Стало: {new_count}\n 💰 Списано: {amount}\n ", "CHANGE_DEVICES_TITLE": "📱 Изменение количества устройств", @@ -141,144 +757,235 @@ "CHANNEL_SUBSCRIBE_BUTTON": "🔗 Подписаться", "CHANNEL_SUBSCRIBE_REQUIRED_ALERT": "❌ Вы не подписались на канал!", "CHANNEL_SUBSCRIBE_THANKS": "✅ Спасибо за подписку", - "TRIAL_CHANNEL_UNSUBSCRIBED": "\n🚫 Доступ приостановлен\n\nМы не нашли вашу подписку на наш канал, поэтому тестовая подписка отключена.\n\nПодпишитесь на канал и нажмите «{check_button}», чтобы вернуть доступ.", "CHECK_STATUS_BUTTON": "📊 Проверить статус", "CHOOSE_ANOTHER_DEVICE": "📱 Выбрать другое устройство", + "CLOSED_TICKETS": "🟢 Закрытые", + "CLOSED_TICKETS_HEADER": "🟢 Закрытые тикеты", + "CLOSED_TICKETS_TITLE": "🟢 Закрытые тикеты:", + "CLOSE_NOTIFICATION": "❌ Закрыть уведомление", + "CLOSE_TICKET": "🔒 Закрыть тикет", "CONFIRM": "✅ Подтвердить", "CONFIRM_CHANGE_BUTTON": "✅ Подтвердить изменение", "CONNECT_BUTTON": "🔗 Подключиться", - "HAPP_DOWNLOAD_BUTTON": "⬇️ Скачать Happ", - "HAPP_DOWNLOAD_PROMPT": "📥 Скачать Happ\nВыберите ваше устройство:", - "HAPP_PLATFORM_IOS": "🍎 iOS", - "HAPP_PLATFORM_ANDROID": "🤖 Android", - "HAPP_PLATFORM_MACOS": "🖥️ Mac OS", - "HAPP_PLATFORM_WINDOWS": "💻 Windows", - "HAPP_PLATFORM_PC": "💻 ПК", - "HAPP_DOWNLOAD_LINK_MESSAGE": "⬇️ Скачайте Happ для {platform}:", - "HAPP_DOWNLOAD_LINK_NOT_SET": "❌ Ссылка для этого устройства не настроена", - "HAPP_DOWNLOAD_OPEN_LINK": "🔗 Открыть ссылку", "CONTACT_SUPPORT": "💬 Написать в поддержку", + "CONTACT_SUPPORT_BUTTON": "💬 Связаться с поддержкой", "CONTINUE": "➡️ Продолжить", - "PRIVACY_RESTRICTED_BUTTON_HINT": "⚠️ Telegram не позволяет боту запросить контакт из-за ваших настроек приватности.\n\nРазрешите отправку контакта в настройках Telegram или поделитесь данными вручную в ответ на сообщение.", "CONTINUE_BUTTON": "✅ Продолжить", "COPY_SUBSCRIPTION_LINK": "📋 Скопировать ссылку подписки", + "COUNTRY_CHANGES_ACTIVE_COUNT": "🌐 Активных стран: {count}", + "COUNTRY_CHANGES_ADDED_HEADER": "➕ Добавлены страны:\n", + "COUNTRY_CHANGES_CHARGED": "💰 Списано: {amount} (за {months} мес)", + "COUNTRY_CHANGES_DISCOUNT_INFO": " (скидка {percent}%: -{amount})", + "COUNTRY_CHANGES_NOT_FOUND": "⚠️ Изменения не обнаружены", + "COUNTRY_CHANGES_REMOVED_HEADER": "➖ Отключены страны:\n", + "COUNTRY_CHANGES_REMOVED_WARNING": "ℹ️ Повторное подключение будет платным", + "COUNTRY_CHANGES_SUCCESS_HEADER": "✅ Страны успешно обновлены!\n\n", + "COUNTRY_MANAGEMENT_NONE": "Нет подключенных стран", + "COUNTRY_MANAGEMENT_PROMPT": "🌍 Управление странами подписки\n\n📋 Текущие страны ({current_count}):\n{current_list}\n\n💡 Инструкция:\n✅ - страна подключена\n➕ - будет добавлена (платно)\n➖ - будет отключена (бесплатно)\n⚪ - не выбрана\n\n⚠️ Важно: Повторное подключение отключенных стран будет платным!", + "COUNTRY_MANAGEMENT_UNAVAILABLE": "ℹ️ Управление серверами недоступно - доступен только один сервер", + "COUNTRY_NOT_AVAILABLE_PROMOGROUP": "❌ Сервер недоступен для вашей промогруппы", "CREATE_INVITE": "📝 Создать приглашение", "CREATE_INVITE_BUTTON": "📝 Создать приглашение", + "CREATE_TICKET_BUTTON": "🎫 Создать тикет", + "CUSTOM_MINIAPP_URL_NOT_SET": "⚠ Кастомная ссылка для мини-приложения не настроена", + "DELETE_MESSAGE": "🗑 Удалить", "DEVICES_INSUFFICIENT_BALANCE": "⚠️ Недостаточно средств!\nТребуется: {required} (за {months} мес)\nУ вас: {balance}", "DEVICES_LIMIT_EXCEEDED": "⚠️ Превышен максимальный лимит устройств ({limit})", "DEVICES_MINIMUM_LIMIT": "⚠️ Минимальное количество устройств: {limit}", "DEVICES_NO_CHANGE": "ℹ️ Количество устройств не изменилось", - "PAYMENT_CHARGE_ERROR": "⚠️ Ошибка списания средств", - "DEVICE_CHANGE_ACTION_INCREASE": "увеличить до {count}", - "DEVICE_CHANGE_EXTRA_COST": "Доплата: {amount} (за {months} мес)", - "DEVICE_CHANGE_DISCOUNT_INFO": " (скидка {percent}%: -{amount})", - "DEVICE_CHANGE_FREE": "Бесплатно", "DEVICE_CHANGE_ACTION_DECREASE": "уменьшить до {count}", - "DEVICE_CHANGE_NO_REFUND": "Возврат средств не производится", - "DEVICE_CHANGE_CONFIRMATION": "📱 Подтверждение изменения\n\nТекущее количество: {current} устройств\nНовое количество: {new} устройств\n\nДействие: {action}\n💰 {cost}\n\nПодтвердить изменение?", - "DEVICE_CHANGE_INCREASE_SUCCESS": "✅ Количество устройств увеличено!\n\n", - "DEVICE_CHANGE_RESULT_LINE": "📱 Было: {old} → Стало: {new}\n", + "DEVICE_CHANGE_ACTION_INCREASE": "увеличить до {count}", "DEVICE_CHANGE_CHARGED": "💰 Списано: {amount}", + "DEVICE_CHANGE_CONFIRMATION": "📱 Подтверждение изменения\n\nТекущее количество: {current} устройств\nНовое количество: {new} устройств\n\nДействие: {action}\n💰 {cost}\n\nПодтвердить изменение?", "DEVICE_CHANGE_DECREASE_SUCCESS": "✅ Количество устройств уменьшено!\n\n", + "DEVICE_CHANGE_DISCOUNT_INFO": " (скидка {percent}%: -{amount})", + "DEVICE_CHANGE_EXTRA_COST": "Доплата: {amount} (за {months} мес)", + "DEVICE_CHANGE_FREE": "Бесплатно", + "DEVICE_CHANGE_INCREASE_SUCCESS": "✅ Количество устройств увеличено!\n\n", + "DEVICE_CHANGE_NO_REFUND": "Возврат средств не производится", "DEVICE_CHANGE_NO_REFUND_INFO": "ℹ️ Возврат средств не производится", + "DEVICE_CHANGE_RESULT_LINE": "📱 Было: {old} → Стало: {new}\n", "DEVICE_CONNECTION_HELP": "❓ Как подключить устройство заново?", + "DEVICE_FETCH_ERROR": "❌ Ошибка получения устройств", + "DEVICE_FETCH_INFO_ERROR": "❌ Ошибка получения информации об устройствах", "DEVICE_GUIDE_ANDROID": "🤖 Android", "DEVICE_GUIDE_ANDROID_TV": "📺 Android TV", "DEVICE_GUIDE_APPLE_TV": "📺 Apple TV", "DEVICE_GUIDE_IOS": "📱 iOS (iPhone/iPad)", "DEVICE_GUIDE_MAC": "🎯 macOS", "DEVICE_GUIDE_WINDOWS": "💻 Windows", + "DEVICE_LIST_FETCH_ERROR": "❌ Ошибка получения списка устройств", + "DEVICE_MANAGEMENT_ACTIONS": "\n💡 Действия:\n• Выберите устройство для сброса\n• Или сбросьте все устройства сразу", + "DEVICE_MANAGEMENT_CONNECTED_HEADER": "Подключенные устройства:\n", + "DEVICE_MANAGEMENT_LIST_ITEM": "• {device}\n", + "DEVICE_MANAGEMENT_OVERVIEW": "🔄 Управление устройствами\n\n📊 Всего подключено: {total} устройств\n📄 Страница {page} из {pages}\n\n", + "DEVICE_NONE_CONNECTED": "ℹ️ У вас нет подключенных устройств", + "DEVICE_PAGE_LOAD_ERROR": "❌ Ошибка загрузки страницы", + "DEVICE_RESET_ALL_DONE": "ℹ️ Все устройства сброшены", + "DEVICE_RESET_ALL_FAILED_MESSAGE": "❌ Не удалось сбросить устройства\n\nПопробуйте еще раз позже или обратитесь в техподдержку.\n\nВсего устройств: {total}", + "DEVICE_RESET_ALL_SUCCESS_MESSAGE": "✅ Все устройства успешно сброшены!\n\n🔄 Сброшено: {count} устройств\n📱 Теперь вы можете заново подключить свои устройства\n\n💡 Используйте ссылку из раздела 'Моя подписка' для повторного подключения", + "DEVICE_RESET_ERROR": "❌ Ошибка сброса устройства", + "DEVICE_RESET_ID_FAILED": "❌ Не удалось получить ID устройства", + "DEVICE_RESET_INVALID_REQUEST": "❌ Ошибка: некорректный запрос", + "DEVICE_RESET_NOT_FOUND": "❌ Устройство не найдено", + "DEVICE_RESET_PARSE_ERROR": "❌ Ошибка обработки запроса", + "DEVICE_RESET_PARTIAL_MESSAGE": "⚠️ Частичный сброс устройств\n\n✅ Удалено: {success} устройств\n❌ Не удалось удалить: {failed} устройств\n\nПопробуйте еще раз или обратитесь в поддержку.", + "DEVICE_RESET_SUCCESS": "✅ Устройство {device} успешно сброшено!", + "DEVICE_UUID_NOT_FOUND": "❌ UUID пользователя не найден", "DISABLE_BUTTON": "❌ Выключить", + "DISCOUNT_BONUS_DESCRIPTION": "Скидка за продление подписки", + "DISCOUNT_CLAIM_ALREADY": "ℹ️ Скидка уже была активирована ранее.", + "DISCOUNT_CLAIM_ERROR": "❌ Не удалось активировать скидку. Попробуйте позже.", + "DISCOUNT_CLAIM_EXPIRED": "⚠️ Время действия предложения истекло.", + "DISCOUNT_CLAIM_NOT_FOUND": "❌ Предложение не найдено.", + "DISCOUNT_CLAIM_SUCCESS": "🎉 Скидка {percent}% активирована! \n\nОна суммируется с другими скидками и автоматически применится при следующей оплате.", "ENABLE_BUTTON": "✅ Включить", + "ENTER_BLOCK_MINUTES": "Введите количество минут для блокировки пользователя (например, 15):", "ERROR": "❌ Произошла ошибка", - "ERROR_TRY_AGAIN": "❌ Произошла ошибка. Попробуйте еще раз.", "ERROR_RULES_RETRY": "Произошла ошибка. Попробуйте принять правила еще раз:", + "ERROR_TRY_AGAIN": "❌ Произошла ошибка. Попробуйте еще раз.", + "FAQ_BACK_TO_LIST": "⬅️ К списку FAQ", + "FAQ_HEADER": "❓ FAQ", + "FAQ_NOT_AVAILABLE": "FAQ временно недоступен.", + "FAQ_PAGES_PROMPT": "Выберите вопрос:", + "FAQ_PAGE_EMPTY": "Текст для этой страницы ещё не добавлен.", + "FAQ_PAGE_FOOTER": "Страница {current} из {total}", + "FAQ_PAGE_NOT_AVAILABLE": "Эта страница FAQ недоступна.", + "FAQ_PAGE_TITLE": "{title}", + "FAQ_PAGE_UNTITLED": "Без названия", "GO_TO_BALANCE_TOP_UP": "💳 Перейти к пополнению баланса", - "RETURN_TO_SUBSCRIPTION_CHECKOUT": "⬅️ Вернуться к оформлению подписки", + "HAPP_DOWNLOAD_BUTTON": "⬇️ Скачать Happ", + "HAPP_DOWNLOAD_LINK_MESSAGE": "⬇️ Скачайте Happ для {platform}:", + "HAPP_DOWNLOAD_LINK_NOT_SET": "❌ Ссылка для этого устройства не настроена", + "HAPP_DOWNLOAD_OPEN_LINK": "🔗 Открыть ссылку", + "HAPP_DOWNLOAD_PROMPT": "📥 Скачать Happ\nВыберите ваше устройство:", + "HAPP_PLATFORM_ANDROID": "🤖 Android", + "HAPP_PLATFORM_IOS": "🍎 iOS", + "HAPP_PLATFORM_MACOS": "🖥️ Mac OS", + "HAPP_PLATFORM_PC": "💻 ПК", + "HAPP_PLATFORM_WINDOWS": "💻 Windows", "INSUFFICIENT_BALANCE": "❌ Недостаточно средств на балансе. \n \n Пополните баланс на {amount} и попробуйте снова.\n ", - "ADDON_INSUFFICIENT_FUNDS_MESSAGE": "⚠️ Недостаточно средств\n\nСтоимость услуги: {required}\nНа балансе: {balance}\nНе хватает: {missing}\n\nВыберите способ пополнения. Сумма подставится автоматически.", "INVALID_AMOUNT": "❌ Неверная сумма", "LANGUAGE_PROMPT": "🌐 Выберите язык интерфейса:", "LANGUAGE_SELECTED": "🌐 Язык интерфейса установлен: Русский", + "LANGUAGE_SELECTION_DISABLED": "⚙️ Выбор языка временно недоступен. Используем язык по умолчанию.", "LOADING": "⏳ Загрузка...", "MAINTENANCE_MODE_ACTIVE": "\n🔧 Технические работы!\n\nСервис временно недоступен. Ведутся технические работы по улучшению качества обслуживания.\n\n⏰ Ориентировочное время завершения: неизвестно\n🔄 Попробуйте позже\n\nПриносим извинения за временные неудобства.\n", "MAINTENANCE_MODE_API_ERROR": "\n🔧 Технические работы!\n\nСервис временно недоступен из-за проблем с подключением к серверам.\n\n⏰ Мы работаем над восстановлением. Попробуйте через несколько минут.\n\n🔄 Последняя проверка: {last_check}\n", "MAIN_MENU": "👤 {user_name}\n \n📱 Подписка: {subscription_status}\n\nВыберите действие:\n", "MAIN_MENU_ACTION_PROMPT": "Выберите действие:", + "MAIN_MENU_BUTTON": "🏠 Главное меню", "MAIN_MENU_TEST_ACCESS_HEADER": "🧪 Тестовые сервера активны: {servers}", "MAIN_MENU_TEST_ACCESS_TIMER": "⏳ Доступ действует ещё: {time_left}\n{bar}", - "MAIN_MENU_BUTTON": "🏠 Главное меню", "MANAGE_DEVICES_BUTTON": "🔧 Управление устройствами", - "DEVICE_UUID_NOT_FOUND": "❌ UUID пользователя не найден", - "DEVICE_NONE_CONNECTED": "ℹ️ У вас нет подключенных устройств", - "DEVICE_FETCH_INFO_ERROR": "❌ Ошибка получения информации об устройствах", - "DEVICE_MANAGEMENT_OVERVIEW": "🔄 Управление устройствами\n\n📊 Всего подключено: {total} устройств\n📄 Страница {page} из {pages}\n\n", - "DEVICE_MANAGEMENT_CONNECTED_HEADER": "Подключенные устройства:\n", - "DEVICE_MANAGEMENT_LIST_ITEM": "• {device}\n", - "DEVICE_MANAGEMENT_ACTIONS": "\n💡 Действия:\n• Выберите устройство для сброса\n• Или сбросьте все устройства сразу", - "DEVICE_FETCH_ERROR": "❌ Ошибка получения устройств", - "DEVICE_PAGE_LOAD_ERROR": "❌ Ошибка загрузки страницы", - "DEVICE_RESET_INVALID_REQUEST": "❌ Ошибка: некорректный запрос", - "DEVICE_RESET_PARSE_ERROR": "❌ Ошибка обработки запроса", - "DEVICE_RESET_SUCCESS": "✅ Устройство {device} успешно сброшено!", - "DEVICE_RESET_ALL_DONE": "ℹ️ Все устройства сброшены", - "DEVICE_RESET_ID_FAILED": "❌ Не удалось получить ID устройства", - "DEVICE_RESET_NOT_FOUND": "❌ Устройство не найдено", - "DEVICE_RESET_ERROR": "❌ Ошибка сброса устройства", - "DEVICE_LIST_FETCH_ERROR": "❌ Ошибка получения списка устройств", - "DEVICE_RESET_ALL_SUCCESS_MESSAGE": "✅ Все устройства успешно сброшены!\n\n🔄 Сброшено: {count} устройств\n📱 Теперь вы можете заново подключить свои устройства\n\n💡 Используйте ссылку из раздела 'Моя подписка' для повторного подключения", - "DEVICE_RESET_PARTIAL_MESSAGE": "⚠️ Частичный сброс устройств\n\n✅ Удалено: {success} устройств\n❌ Не удалось удалить: {failed} устройств\n\nПопробуйте еще раз или обратитесь в поддержку.", - "DEVICE_RESET_ALL_FAILED_MESSAGE": "❌ Не удалось сбросить устройства\n\nПопробуйте еще раз позже или обратитесь в техподдержку.\n\nВсего устройств: {total}", + "MARK_AS_ANSWERED": "✅ Отметить как отвеченный", "MENU_ADMIN": "⚙️ Админ-панель", "MENU_BALANCE": "💰 Баланс", "MENU_BUY_SUBSCRIPTION": "💎 Купить подписку", "MENU_EXTEND_SUBSCRIPTION": "⏰ Продлить подписку", + "MENU_FAQ": "❓ FAQ", "MENU_INFO": "ℹ️ Инфо", "MENU_INFO_HEADER": "ℹ️ Инфо", "MENU_INFO_PROMPT": "Выберите раздел:", - "MENU_PROMO_GROUPS_INFO": "🎯 Скидки за траты", - "PROMO_GROUPS_INFO_HEADER": "🎯 Скидки за траты", - "PROMO_GROUPS_INFO_TOTAL_SPENT": "💰 Потрачено в боте: {amount}", - "PROMO_GROUPS_INFO_CURRENT_LEVEL": "🏆 Текущий уровень: {name}", - "PROMO_GROUPS_INFO_NO_LEVEL": "🏆 Текущий уровень: пока не получен", - "PROMO_GROUPS_INFO_NEXT_LEVEL": "📈 До уровня «{name}»: осталось {amount}", - "PROMO_GROUPS_INFO_MAX_LEVEL": "🏆 Вы уже получили максимальный уровень скидок!", - "PROMO_GROUPS_INFO_LEVELS_HEADER": "📋 Уровни с автовыдачей:", - "PROMO_GROUPS_INFO_LEVEL_LINE": "{status} {name} — от {amount}", - "PROMO_GROUPS_INFO_EMPTY": "Промогруппы с автовыдачей ещё не настроены.", + "MENU_LANGUAGE": "🌐 Язык", "MENU_PRIVACY_POLICY": "🛡️ Политика конф.", - "MENU_PUBLIC_OFFER": "📄 Оферта", - "PRIVACY_POLICY_HEADER": "🛡️ Политика конфиденциальности", - "PRIVACY_POLICY_NOT_AVAILABLE": "Политика конфиденциальности временно недоступна.", - "PRIVACY_POLICY_EMPTY_ALERT": "Политика конфиденциальности ещё не заполнена.", - "PRIVACY_POLICY_PAGE_INFO": "Страница {current} из {total}", - "PUBLIC_OFFER_NOT_AVAILABLE": "Публичная оферта временно недоступна.", - "PUBLIC_OFFER_EMPTY_ALERT": "Публичная оферта ещё не заполнена.", - "PUBLIC_OFFER_HEADER": "📄 Публичная оферта", - "PUBLIC_OFFER_PAGE_INFO": "Страница {current} из {total}", "MENU_PROFILE": "👤 Личный кабинет", "MENU_PROFILE_UNAVAILABLE": "❗️ Личный кабинет пока недоступен. Попробуйте позже.", - "MENU_LANGUAGE": "🌐 Язык", "MENU_PROMOCODE": "🎫 Промокод", + "MENU_PROMO_GROUPS_INFO": "🎯 Скидки за траты", + "MENU_PUBLIC_OFFER": "📄 Оферта", "MENU_REFERRALS": "🤝 Партнерка", "MENU_RULES": "📋 Правила сервиса", "MENU_SERVER_STATUS": "📊 Статус серверов", "MENU_SUBSCRIPTION": "📱 Подписка", "MENU_SUPPORT": "🛠️ Техподдержка", "MENU_TRIAL": "🧪 Тестовая подписка", + "MINIAPP_PURCHASE_BREAKDOWN_BASE": "Базовый план", + "MINIAPP_PURCHASE_BREAKDOWN_DEVICES": "Устройства", + "MINIAPP_PURCHASE_BREAKDOWN_DISCOUNT_NOTE": "Скидка: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_BREAKDOWN_PROMO": "Промо скидка", + "MINIAPP_PURCHASE_BREAKDOWN_SERVERS": "Серверы", + "MINIAPP_PURCHASE_BREAKDOWN_TRAFFIC": "Трафик", + "MINIAPP_PURCHASE_DISCOUNT_DEVICES": "Скидка на устройства: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_DISCOUNT_PERIOD": "Скидка на период: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_DISCOUNT_PROMO": "Промо-предложение: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_DISCOUNT_SERVERS": "Скидка на серверы: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_DISCOUNT_TRAFFIC": "Скидка на трафик: -{amount} ({percent}%)", + "MINIAPP_PURCHASE_STATUS_INSUFFICIENT": "Недостаточно средств на балансе", + "MINIAPP_PURCHASE_SUMMARY_DISCOUNT": "Экономия {amount}", + "MULENPAY_PAYMENT_ERROR": "❌ Ошибка создания платежа Mulen Pay. Попробуйте позже или обратитесь в поддержку.", + "MULENPAY_PAYMENT_INSTRUCTIONS": "💳 Оплата через Mulen Pay\n\n💰 Сумма: {amount}\n🆔 ID платежа: {payment_id}\n\n📱 Инструкция:\n1. Нажмите кнопку ‘Оплатить через Mulen Pay’\n2. Следуйте подсказкам платежной системы\n3. Подтвердите перевод\n4. Средства зачислятся автоматически\n\n❓ Если возникнут проблемы, обратитесь в {support}", + "MULENPAY_PAY_BUTTON": "💳 Оплатить через Mulen Pay", + "MULENPAY_TOPUP_PROMPT": "💳 Оплата через Mulen Pay\n\nВведите сумму для пополнения от 100 до 100 000 ₽.\nОплата происходит через защищенную платформу Mulen Pay.", "MY_BALANCE_BUTTON": "💰 Мой баланс", "MY_SUBSCRIPTION_BUTTON": "📱 Моя подписка", + "MY_TICKETS_BUTTON": "📋 Мои тикеты", + "MY_TICKETS_TITLE": "📋 Ваши тикеты:", "NO": "❌ Нет", + "NOTIFICATION_CLOSED": "Уведомление закрыто.", + "NOTIFICATION_VALUE_INVALID": "❌ Некорректное значение, укажите число.", + "NOTIFICATION_VALUE_UPDATED": "✅ Настройки обновлены.", + "NOTIFY_PROMPT_SECOND_HOURS": "Введите количество часов действия скидки (1-168):", + "NOTIFY_PROMPT_SECOND_PERCENT": "Введите новый процент скидки для уведомления через 2-3 дня (0-100):", + "NOTIFY_PROMPT_THIRD_DAYS": "Через сколько дней после истечения отправлять предложение? (минимум 2):", + "NOTIFY_PROMPT_THIRD_HOURS": "Введите количество часов действия скидки (1-168):", + "NOTIFY_PROMPT_THIRD_PERCENT": "Введите новый процент скидки для позднего предложения (0-100):", + "NO_ATTACHMENTS": "Вложений нет.", + "NO_CLOSED_TICKETS": "Закрытых тикетов пока нет.", "NO_SERVERS_AVAILABLE": "❌ Нет доступных серверов", + "NO_TICKETS": "У вас пока нет тикетов.", + "NO_TICKETS_ADMIN": "Нет тикетов для отображения.", "NO_TRAFFIC_PACKAGES": "❌ Нет доступных пакетов", + "OPEN_TICKETS": "🔴 Открытые", + "OPEN_TICKETS_HEADER": "🔴 Открытые тикеты", "OPERATION_CANCELLED": "❌ Операция отменена", "OTHER_APPS_BUTTON": "📋 Другие приложения", "PAGINATION_NEXT": "➡️", "PAGINATION_PREV": "⬅️", + "PAID_FEATURE_ONLY": "⚠ Эта функция доступна только для платных подписок", + "PAID_FEATURE_ONLY_SHORT": "⚠ Только для платных подписок", + "PAL24_CARD_PAY_BUTTON": "💳 Оплатить банковской картой (PayPalych)", + "PAL24_INSTRUCTION_BUTTON": "{step}. Нажмите кнопку «{button}»", + "PAL24_INSTRUCTION_COMPLETE": "{step}. Средства зачислятся автоматически", + "PAL24_INSTRUCTION_CONFIRM": "{step}. Подтвердите перевод", + "PAL24_INSTRUCTION_FOLLOW": "{step}. Следуйте подсказкам платёжной системы", + "PAL24_PAYMENT_ERROR": "❌ Ошибка создания платежа PayPalych. Попробуйте позже или обратитесь в поддержку.", + "PAL24_PAYMENT_INSTRUCTIONS": "🏦 Оплата через PayPalych (СБП)\n\n💰 Сумма: {amount}\n🆔 ID счета: {bill_id}\n\n📱 Инструкция:\n1. Нажмите кнопку ‘Оплатить через PayPalych (СБП)’\n2. Следуйте подсказкам платежной системы\n3. Подтвердите перевод\n4. Средства зачислятся автоматически\n\n❓ Если возникнут проблемы, обратитесь в {support}", + "PAL24_PAY_BUTTON": "🏦 Оплатить через PayPalych (СБП)", + "PAL24_SBP_PAY_BUTTON": "🏦 Оплатить через PayPalych (СБП)", + "PAL24_TOPUP_PROMPT": "🏦 Оплата через PayPalych (СБП)\n\nВведите сумму для пополнения от 100 до 1 000 000 ₽.\nОплата проходит через систему быстрых платежей PayPalych.", "PAYMENTS_TEMPORARILY_UNAVAILABLE": "⚠️ Способы оплаты временно недоступны", + "PAYMENT_CARD_MULENPAY": "💳 Банковская карта (Mulen Pay)", + "PAYMENT_CARD_PAL24": "🏦 СБП (PayPalych)", "PAYMENT_CARD_TRIBUTE": "💳 Банковская карта (Tribute)", + "PAYMENT_CARD_WATA": "💳 Банковская карта (WATA)", "PAYMENT_CARD_YOOKASSA": "💳 Банковская карта (YooKassa)", + "PAYMENT_CHARGE_ERROR": "⚠️ Ошибка списания средств", "PAYMENT_CRYPTOBOT": "🪙 Криптовалюта (CryptoBot)", + "PAYMENT_METHODS_FOOTER": "Выберите способ пополнения:", + "PAYMENT_METHODS_ONLY_SUPPORT": "💳 Способы пополнения баланса\n\n⚠️ В данный момент автоматические способы оплаты временно недоступны.\nОбратитесь в техподдержку для пополнения баланса.\n\nВыберите способ пополнения:", + "PAYMENT_METHODS_PROMPT": "Выберите удобный для вас способ оплаты:", + "PAYMENT_METHODS_TITLE": "💳 Способы пополнения баланса", + "PAYMENT_METHODS_UNAVAILABLE_ALERT": "⚠️ В данный момент автоматические способы оплаты временно недоступны. Для пополнения баланса обратитесь в техподдержку.", + "PAYMENT_METHOD_CRYPTOBOT_DESCRIPTION": "через CryptoBot", + "PAYMENT_METHOD_CRYPTOBOT_NAME": "🪙 Криптовалюта", + "PAYMENT_METHOD_MULENPAY_DESCRIPTION": "через Mulen Pay", + "PAYMENT_METHOD_MULENPAY_NAME": "💳 Банковская карта (Mulen Pay)", + "PAYMENT_METHOD_PAL24_DESCRIPTION": "через систему быстрых платежей", + "PAYMENT_METHOD_PAL24_NAME": "🏦 СБП (PayPalych)", + "PAYMENT_METHOD_STARS_DESCRIPTION": "быстро и удобно", + "PAYMENT_METHOD_STARS_NAME": "⭐ Telegram Stars", + "PAYMENT_METHOD_SUPPORT_DESCRIPTION": "другие способы", + "PAYMENT_METHOD_SUPPORT_NAME": "🛠️ Через поддержку", + "PAYMENT_METHOD_TRIBUTE_DESCRIPTION": "через Tribute", + "PAYMENT_METHOD_TRIBUTE_NAME": "💳 Банковская карта", + "PAYMENT_METHOD_WATA_DESCRIPTION": "через WATA", + "PAYMENT_METHOD_WATA_NAME": "💳 Банковская карта (WATA)", + "PAYMENT_METHOD_YOOKASSA_DESCRIPTION": "через YooKassa", + "PAYMENT_METHOD_YOOKASSA_NAME": "💳 Банковская карта", + "PAYMENT_METHOD_YOOKASSA_SBP_DESCRIPTION": "через систему быстрых платежей YooKassa", + "PAYMENT_METHOD_YOOKASSA_SBP_NAME": "🏦 СБП (YooKassa)", + "PAYMENT_RETURN_HOME_BUTTON": "🏠 На главную", "PAYMENT_SBP_YOOKASSA": "🏬 Оплатить по СБП (YooKassa)", "PAYMENT_TELEGRAM_STARS": "⭐ Telegram Stars", "PAYMENT_VIA_SUPPORT": "🛠️ Через поддержку", @@ -292,26 +999,109 @@ "PERIOD_60_DAYS": "📅 60 дней - {settings.format_price(settings.PRICE_60_DAYS)}", "PERIOD_90_DAYS": "📅 90 дней - {settings.format_price(settings.PRICE_90_DAYS)}", "POST_REGISTRATION_TRIAL_BUTTON": "🚀 Подключиться бесплатно 🚀", - "PROMOCODE_ENTER": "🎫 Введите промокод:", + "PRIVACY_POLICY_EMPTY_ALERT": "Политика конфиденциальности ещё не заполнена.", + "PRIVACY_POLICY_HEADER": "🛡️ Политика конфиденциальности", + "PRIVACY_POLICY_NOT_AVAILABLE": "Политика конфиденциальности временно недоступна.", + "PRIVACY_POLICY_PAGE_INFO": "Страница {current} из {total}", + "PRIVACY_RESTRICTED_BUTTON_HINT": "⚠️ Telegram не позволяет боту запросить контакт из-за ваших настроек приватности.\n\nРазрешите отправку контакта в настройках Telegram или поделитесь данными вручную в ответ на сообщение.", "PROMOCODE_EMPTY_INPUT": "❌ Введите корректный промокод", + "PROMOCODE_ENTER": "🎫 Введите промокод:", "PROMOCODE_EXPIRED": "❌ Промокод истек", "PROMOCODE_INVALID": "❌ Неверный промокод", "PROMOCODE_SUCCESS": "🎉 Промокод активирован! {description}", "PROMOCODE_USED": "❌ Промокод уже использован", + "PROMO_GROUPS_INFO_CURRENT_LEVEL": "🏆 Текущий уровень: {name}", + "PROMO_GROUPS_INFO_EMPTY": "Промогруппы с автовыдачей ещё не настроены.", + "PROMO_GROUPS_INFO_HEADER": "🎯 Скидки за траты", + "PROMO_GROUPS_INFO_LEVELS_HEADER": "📋 Уровни с автовыдачей:", + "PROMO_GROUPS_INFO_LEVEL_LINE": "{status} {name} — от {amount}", + "PROMO_GROUPS_INFO_MAX_LEVEL": "🏆 Вы уже получили максимальный уровень скидок!", + "PROMO_GROUPS_INFO_NEXT_LEVEL": "📈 До уровня «{name}»: осталось {amount}", + "PROMO_GROUPS_INFO_NO_LEVEL": "🏆 Текущий уровень: пока не получен", + "PROMO_GROUPS_INFO_TOTAL_SPENT": "💰 Потрачено в боте: {amount}", + "PROMO_GROUP_DISCOUNTS_HEADER": "🎁 Скидки вашей промогруппы", + "PROMO_GROUP_DISCOUNT_DEVICES": "📱 Доп. устройства: {percent}%", + "PROMO_GROUP_DISCOUNT_SERVERS": "🌍 Серверы: {percent}%", + "PROMO_GROUP_DISCOUNT_TRAFFIC": "📊 Трафик: {percent}%", + "PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Скидки за длительный период:", + "PROMO_GROUP_PERIOD_DISCOUNT_ITEM": "{period} — {percent}%", + "PROMO_OFFER_CLOSE": "❌ Закрыть", + "PUBLIC_OFFER_EMPTY_ALERT": "Публичная оферта ещё не заполнена.", + "PUBLIC_OFFER_HEADER": "📄 Публичная оферта", + "PUBLIC_OFFER_NOT_AVAILABLE": "Публичная оферта временно недоступна.", + "PUBLIC_OFFER_PAGE_INFO": "Страница {current} из {total}", "REFERRAL_ANALYTICS_BUTTON": "📊 Аналитика", - "REFERRAL_CODE_APPLIED": "🎁 Реферальный код применен! Вы получите бонус после первой покупки.", + "REFERRAL_ANALYTICS_EARNINGS_HEADER": "💰 Доходы по периодам:", + "REFERRAL_ANALYTICS_EARNINGS_MONTH": "• За месяц: {amount}", + "REFERRAL_ANALYTICS_EARNINGS_QUARTER": "• За квартал: {amount}", + "REFERRAL_ANALYTICS_EARNINGS_TODAY": "• Сегодня: {amount}", + "REFERRAL_ANALYTICS_EARNINGS_WEEK": "• За неделю: {amount}", + "REFERRAL_ANALYTICS_FOOTER": "📈 Продолжайте развивать свою реферальную сеть!", + "REFERRAL_ANALYTICS_TITLE": "📊 Аналитика рефералов", + "REFERRAL_ANALYTICS_TOP_ITEM": "{index}. {name}: {amount} ({count} начислений)", + "REFERRAL_ANALYTICS_TOP_TITLE": "🏆 Топ-{count} рефералов:", "REFERRAL_CODE_ACCEPTED": "✅ Реферальный код принят!", + "REFERRAL_CODE_APPLIED": "🎁 Реферальный код применен! Вы получите бонус после первой покупки.", "REFERRAL_CODE_INVALID": "❌ Неверный реферальный код", "REFERRAL_CODE_INVALID_HELP": "❌ Неверный реферальный код.\n\n💡 Если у вас есть реферальный код, убедитесь что он введен правильно.\n⏭️ Для продолжения регистрации без реферального кода используйте команду /start", "REFERRAL_CODE_QUESTION": "\n🤝 У вас есть реферальный код от друга?\n\nЕсли у вас есть промокод или реферальная ссылка от друга, введите её сейчас, чтобы получить бонус!\n\nВведите код или нажмите \"Пропустить\":\n", "REFERRAL_CODE_SKIP": "⏭️ Пропустить", - "ALREADY_REGISTERED_REFERRAL": "ℹ️ Вы уже зарегистрированы в системе. Реферальная ссылка не может быть применена.", + "REFERRAL_CODE_TITLE": "🆔 Ваш код: {code}", + "REFERRAL_EARNINGS_BY_TYPE_HEADER": "📈 Доходы по типам:", + "REFERRAL_EARNINGS_FIRST_TOPUPS": "• Бонусы за первые пополнения: {count} ({amount})", + "REFERRAL_EARNINGS_PURCHASES": "• Комиссии с покупок: {count} ({amount})", + "REFERRAL_EARNINGS_TOPUPS": "• Комиссии с пополнений: {count} ({amount})", + "REFERRAL_EARNING_REASON_COMMISSION_PURCHASE": "💰 Комиссия с покупки", + "REFERRAL_EARNING_REASON_COMMISSION_TOPUP": "💰 Комиссия с пополнения", + "REFERRAL_EARNING_REASON_FIRST_TOPUP": "🎉 Первое пополнение", "REFERRAL_INFO": "\n🤝 Реферальная программа\n\n👥 Приглашено: {referrals_count} друзей\n💰 Заработано: {earned_amount}\n\n🔗 Ваша реферальная ссылка:\n{referral_link}\n\n🎫 Ваш промокод:\n{referral_code}\n\n💰 Условия:\n• За каждого друга: {registration_bonus}\n• Процент с пополнений: {commission_percent}%\n", + "REFERRAL_INVITE_BONUS": "💎 При первом пополнении от {minimum} ты получишь {bonus} бонусом на баланс!", + "REFERRAL_INVITE_CREATED_INSTRUCTION": "Нажмите кнопку «📤 Поделиться» чтобы отправить приглашение в любой чат, или скопируйте текст ниже:", + "REFERRAL_INVITE_CREATED_TITLE": "📝 Приглашение создано!", + "REFERRAL_INVITE_FEATURE_FAST": "🚀 Быстрое подключение", + "REFERRAL_INVITE_FEATURE_SECURE": "🔒 Надежная защита", + "REFERRAL_INVITE_FEATURE_SERVERS": "🌍 Серверы по всему миру", + "REFERRAL_INVITE_FOOTER": "📢 Приглашайте друзей и зарабатывайте!", + "REFERRAL_INVITE_LINK_PROMPT": "👇 Переходи по ссылке:", "REFERRAL_INVITE_MESSAGE": "\n🎯 Приглашение в VPN сервис\n\nПривет! Приглашаю тебя в отличный VPN сервис!\n\n🎁 По моей ссылке ты получишь бонус: {bonus}\n\n🔗 Переходи: {link}\n🎫 Или используй промокод: {code}\n\n💪 Быстро, надежно, недорого!\n", + "REFERRAL_INVITE_TITLE": "🎉 Присоединяйся к VPN сервису!", + "REFERRAL_LINK_CAPTION": "🔗 Ваша реферальная ссылка:\n{link}", + "REFERRAL_LINK_TITLE": "🔗 Ваша реферальная ссылка:", "REFERRAL_LIST_BUTTON": "👥 Список рефералов", + "REFERRAL_LIST_EMPTY": "📋 У вас пока нет рефералов.\n\nПоделитесь своей реферальной ссылкой, чтобы начать зарабатывать!", + "REFERRAL_LIST_HEADER": "👥 Ваши рефералы (стр. {current}/{total})", + "REFERRAL_LIST_ITEM_ACTIVITY": " 🕐 Активность: {days} дн. назад", + "REFERRAL_LIST_ITEM_ACTIVITY_LONG_AGO": " 🕐 Активность: давно", + "REFERRAL_LIST_ITEM_EARNED": " 💎 Заработано с него: {amount}", + "REFERRAL_LIST_ITEM_HEADER": "{index}. {status} {name}", + "REFERRAL_LIST_ITEM_REGISTERED": " 📅 Регистрация: {days} дн. назад", + "REFERRAL_LIST_ITEM_TOPUPS": " {emoji} Пополнений: {count}", + "REFERRAL_LIST_NEXT_PAGE": "Вперед ➡️", + "REFERRAL_LIST_PREV_PAGE": "⬅️ Назад", + "REFERRAL_PROGRAM_TITLE": "👥 Реферальная программа", + "REFERRAL_RECENT_EARNINGS_HEADER": "💰 Последние начисления:", + "REFERRAL_RECENT_EARNINGS_ITEM": "• {reason}: {amount} от {referral_name}", + "REFERRAL_REWARDS_HEADER": "🎁 Как работают награды:", + "REFERRAL_REWARD_COMMISSION": "• Комиссия с каждого пополнения реферала: {percent}%", + "REFERRAL_REWARD_INVITER": "• Вы получаете при первом пополнении реферала: {bonus}", + "REFERRAL_REWARD_NEW_USER": "• Новый пользователь получает: {bonus} при первом пополнении от {minimum}", + "REFERRAL_SHARE_BUTTON": "📤 Поделиться", + "REFERRAL_STATS_ACTIVE": "• Активных рефералов: {count}", + "REFERRAL_STATS_CONVERSION": "• Конверсия: {rate}%", + "REFERRAL_STATS_FIRST_TOPUPS": "• Сделали первое пополнение: {count}", + "REFERRAL_STATS_HEADER": "📊 Ваша статистика:", + "REFERRAL_STATS_INVITED": "• Приглашено пользователей: {count}", + "REFERRAL_STATS_MONTH_EARNED": "• За последний месяц: {amount}", + "REFERRAL_STATS_TOTAL_EARNED": "• Заработано всего: {amount}", + "REGISTRATION_COMPLETING": "✅ Завершаем регистрацию...", + "REPLY_TO_TICKET": "💬 Ответить", + "REPORT_CLOSE": "❌ Закрыть", + "REPORT_CLOSED": "✅ Отчет закрыт.", + "REPORT_CLOSE_ERROR": "❌ Не удалось закрыть отчет.", "RESET_ALL_DEVICES_BUTTON": "🔄 Сбросить все устройства", "RESET_DEVICE_CONFIRM_BUTTON": "✅ Да, сбросить это устройство", "RESET_TRAFFIC_BUTTON": "🔄 Сбросить трафик", + "RETURN_TO_SUBSCRIPTION_CHECKOUT": "⬅️ Вернуться к оформлению подписки", "RULES_ACCEPT": "✅ Принимаю правила", "RULES_ACCEPTED_PROCESSING": "✅ Правила приняты! Завершаем регистрацию...", "RULES_DECLINE": "❌ Не принимаю", @@ -322,25 +1112,119 @@ "SELECT_DEVICES": "Количество устройств:", "SELECT_PERIOD": "Выберите период:", "SELECT_TRAFFIC": "Выберите пакет трафика:", + "SENDING_ATTACHMENTS": "📎 Отправляю вложения...", "SEND_CONTACT_BUTTON": "📱 Отправить контакт", "SEND_LOCATION_BUTTON": "📍 Отправить геолокацию", + "SERVER_STATUS_AVAILABLE": "✅ Доступны", + "SERVER_STATUS_ERROR_SHORT": "Не удалось получить данные", + "SERVER_STATUS_LATENCY": "{latency} мс", + "SERVER_STATUS_LATENCY_UNKNOWN": "нет данных", + "SERVER_STATUS_NEXT_PAGE": "Вперед ➡️", + "SERVER_STATUS_NOT_CONFIGURED": "Функция недоступна.", + "SERVER_STATUS_NO_SERVERS": "Нет данных о серверах.", + "SERVER_STATUS_OFFLINE": "нет ответа", + "SERVER_STATUS_PAGINATION": "Страница {current} из {total}", + "SERVER_STATUS_PREV_PAGE": "⬅️ Назад", + "SERVER_STATUS_REFRESH": "🔄 Обновить", + "SERVER_STATUS_SUMMARY": "Всего серверов: {total} (в сети: {online}, вне сети: {offline})", + "SERVER_STATUS_TITLE": "📊 Статус серверов", + "SERVER_STATUS_UNAVAILABLE": "❌ Недоступны", + "SERVER_STATUS_UPDATED_AT": "⏱ Обновлено: {time}", "SHOW_QR_BUTTON": "📱 Показать QR код", "SHOW_SUBSCRIPTION_LINK": "📋 Показать ссылку подписки", "SKIP_BUTTON": "⏭️ Пропустить", + "STARS_PAYMENT_ENROLLMENT_ERROR": "❌ Произошла ошибка при зачислении средств. Обратитесь в поддержку, платеж будет проверен вручную.", + "STARS_PAYMENT_PROCESSING_ERROR": "❌ Техническая ошибка при обработке платежа. Обратитесь в поддержку для решения проблемы.", + "STARS_PAYMENT_SUCCESS": "🎉 Платеж успешно обработан!\n\n⭐ Потрачено звезд: {stars_spent}\n💰 Зачислено на баланс: {amount} ₽\n🆔 ID транзакции: {transaction_id}...\n\nСпасибо за пополнение! 🚀", + "STARS_PAYMENT_USER_NOT_FOUND": "❌ Ошибка: пользователь не найден. Обратитесь в поддержку.", + "STARS_PRECHECK_INVALID_PAYLOAD": "Ошибка валидации платежа. Попробуйте еще раз.", + "STARS_PRECHECK_TECHNICAL_ERROR": "Техническая ошибка. Попробуйте позже.", + "STARS_PRECHECK_USER_NOT_FOUND": "Пользователь не найден. Обратитесь в поддержку.", "SUBSCRIPTION_ACTIVE": "✅ Активна", + "SUBSCRIPTION_ACTIVE_REQUIRED": "⚠️ У вас нет активной подписки!", + "SUBSCRIPTION_ADDITIONAL_STEP_TITLE": "{title}:", + "SUBSCRIPTION_APPS_PROMPT": "Выберите приложение для подключения:", + "SUBSCRIPTION_APPS_TITLE": "📱 Приложения для {device_name}", + "SUBSCRIPTION_APP_NOT_FOUND": "❌ Приложение не найдено", + "SUBSCRIPTION_CONNECTED_DEVICES_FOOTER": "
", + "SUBSCRIPTION_CONNECTED_DEVICES_TITLE": "
📱 Подключенные устройства:\n", + "SUBSCRIPTION_CONNECT_CUSTOM_MESSAGE": "🚀 Подключить подписку\n\n📱 Нажмите кнопку ниже, чтобы открыть приложение:", + "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE": "📱 Подключить подписку\n\n🔗 Ссылка подписки:\n{subscription_url}\n\n💡 Выберите ваше устройство для получения подробной инструкции по настройке:", + "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE_HIDDEN": "📱 Подключить подписку\n\nℹ️ Ссылка подписки доступна по кнопкам ниже или в разделе «Моя подписка».\n\n💡 Выберите ваше устройство для получения подробной инструкции по настройке:", + "SUBSCRIPTION_CONNECT_LINK_MESSAGE": "🚀 Подключить подписку\n\n🔗 Нажмите кнопку ниже, чтобы открыть ссылку подписки:", + "SUBSCRIPTION_CONNECT_LINK_PROMPT": "📱 Скопируйте ссылку и добавьте в ваше VPN приложение", + "SUBSCRIPTION_CONNECT_LINK_SECTION": "🔗 Ссылка для подключения:\n{subscription_url}", + "SUBSCRIPTION_CONNECT_MINIAPP_MESSAGE": "📱 Подключить подписку\n\n🚀 Нажмите кнопку ниже, чтобы открыть подписку в мини-приложении Telegram:", + "SUBSCRIPTION_DEVICE_APPS_NOT_FOUND": "❌ Приложения для этого устройства не найдены", + "SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Рекомендуемое приложение: {app_name}", + "SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Настройка для {device_name}", + "SUBSCRIPTION_DEVICE_HOW_TO_STEP1": "1. Установите приложение по ссылке выше", + "SUBSCRIPTION_DEVICE_HOW_TO_STEP2": "2. Нажмите кнопку \"Подключиться\" ниже", + "SUBSCRIPTION_DEVICE_HOW_TO_STEP3": "3. Откройте приложение и вставьте ссылку", + "SUBSCRIPTION_DEVICE_HOW_TO_STEP4": "4. Подключитесь к серверу", + "SUBSCRIPTION_DEVICE_HOW_TO_TITLE": "💡 Как подключить:", + "SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Ссылка подписки:", + "SUBSCRIPTION_DEVICE_OTHER_APPS": "📦 Другие приложения: {app_list}", + "SUBSCRIPTION_DEVICE_OTHER_APPS_HINT": "Нажмите кнопку \"Другие приложения\" ниже, чтобы выбрать приложение.", + "SUBSCRIPTION_DEVICE_STEP_ADD_TITLE": "Шаг 2 - Добавление подписки:", + "SUBSCRIPTION_DEVICE_STEP_CONNECT_TITLE": "Шаг 3 - Подключение:", + "SUBSCRIPTION_DEVICE_STEP_INSTALL_TITLE": "Шаг 1 - Установка:", "SUBSCRIPTION_EXPIRED": "\n❌ Подписка истекла\n\nВаша подписка истекла. Для восстановления доступа продлите подписку.\n", + "SUBSCRIPTION_EXPIRED_1D": "⛔ Подписка закончилась\n\nДоступ был отключён {end_date}. Продлите подписку, чтобы вернуть полный доступ.\n\n💎 Стоимость продления: {price}", + "SUBSCRIPTION_EXPIRED_SECOND_WAVE": "🔥 Скидка {percent}% на продление\n\nАктивируйте предложение, чтобы получить дополнительную скидку. Она суммируется с вашей промогруппой и действует до {expires_at}.", + "SUBSCRIPTION_EXPIRED_THIRD_WAVE": "🎁 Индивидуальная скидка {percent}%\n\nПрошло {trigger_days} дней без подписки. Вернитесь и активируйте дополнительную скидку — она суммируется с промогруппой и действует до {expires_at}.", "SUBSCRIPTION_EXPIRING": "\n⚠️ Подписка истекает!\n\nВаша подписка истекает через {days} дней.\n\nНе забудьте продлить подписку, чтобы не потерять доступ к серверам.\n", "SUBSCRIPTION_EXPIRING_PAID": "\n⚠️ Подписка истекает через {days_text}!\n\nВаша платная подписка истекает {end_date}.\n\n💳 Автоплатеж: {autopay_status}\n\n{action_text}\n", + "SUBSCRIPTION_EXTEND": "💎 Продлить подписку", + "SUBSCRIPTION_HAPP_CRYPTOLINK_BLOCK": "
{crypto_link}
", + "SUBSCRIPTION_HAPP_LINK_PROMPT": "🔒 Ссылка на подписку создана. Нажмите кнопку \"Подключиться\" ниже, чтобы открыть её в Happ.", + "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT": "▶️ Нажмите кнопку \"Подключиться\" ниже, чтобы открыть Happ и добавить подписку автоматически.", + "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Если ссылка не открывается автоматически, скопируйте её вручную:", + "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Открыть ссылку в Happ", + "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Подключение через Happ", + "SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT": "📱 Нажмите кнопку ниже, чтобы получить инструкцию по настройке VPN на вашем устройстве", + "SUBSCRIPTION_IMPORT_LINK_SECTION": "🔗 Ваша ссылка для импорта в VPN приложение:\n{subscription_url}", "SUBSCRIPTION_INFO": "\n📱 Информация о подписке\n\n📊 Статус: {status}\n🎭 Тип: {type}\n📅 Действует до: {end_date}\n⏰ Осталось дней: {days_left}\n\n📈 Трафик: {traffic_used} / {traffic_limit}\n🌍 Серверы: {countries_count} стран\n📱 Устройства: {devices_used} / {devices_limit}\n\n💳 Автоплатеж: {autopay_status}\n", + "SUBSCRIPTION_LINK_GENERATING_NOTICE": "{purchase_text}\n\nСсылка генерируется, перейдите в раздел 'Моя подписка' через несколько секунд.", + "SUBSCRIPTION_LINK_HIDDEN_NOTICE": "ℹ️ Ссылка подписки доступна по кнопкам ниже или в разделе «Моя подписка».", + "SUBSCRIPTION_LINK_HINT": "💡 Если ссылка не скопировалась, выделите её вручную и скопируйте.", + "SUBSCRIPTION_LINK_STEP1": "1. Нажмите на ссылку выше чтобы её скопировать", + "SUBSCRIPTION_LINK_STEP2": "2. Откройте ваше VPN приложение", + "SUBSCRIPTION_LINK_STEP3": "3. Найдите функцию \"Добавить подписку\" или \"Import\"", + "SUBSCRIPTION_LINK_STEP4": "4. Вставьте скопированную ссылку", + "SUBSCRIPTION_LINK_UNAVAILABLE": "❌ Ссылка подписки недоступна", + "SUBSCRIPTION_LINK_USAGE_TITLE": "📱 Как использовать:", "SUBSCRIPTION_NONE": "❌ Нет активной подписки", "SUBSCRIPTION_NOT_FOUND": "❌ Подписка не найдена", + "SUBSCRIPTION_NO_ACTIVE_LINK": "⚠ У вас нет активной подписки или ссылка еще генерируется", + "SUBSCRIPTION_NO_SERVERS": "Нет серверов", + "SUBSCRIPTION_OVERVIEW_TEMPLATE": "👤 {full_name}\n💰 Баланс: {balance}\n📱 Подписка: {status_emoji} {status_display}{warning}\n\n📱 Информация о подписке\n🎭 Тип: {subscription_type}\n📅 Действует до: {end_date}\n⏰ Осталось: {time_left}\n📈 Трафик: {traffic}\n🌍 Серверы: {servers}\n📱 Устройства: {devices_used} / {device_limit}", + "SUBSCRIPTION_PROMO_DISCOUNT_HINT": "⚡ Активирована доп. скидка {percent}%. \n\nСуммируется с другими скидками!", + "SUBSCRIPTION_PROMO_DISCOUNT_NOTE": "⚡ Доп. скидка {percent}%: -{amount}", + "SUBSCRIPTION_PROMO_DISCOUNT_TIMER": "⏳ Скидка действует ещё: {time_left}\n{bar}", "SUBSCRIPTION_PURCHASED": "🎉 Подписка успешно приобретена!", - "SUBSCRIPTION_SETTINGS_PAID_ONLY": "⚠️ Настройки доступны только для платных подписок", - "SUBSCRIPTION_SETTINGS_OVERVIEW": "⚙️ Настройки подписки\n\n📊 Текущие параметры:\n🌐 Стран: {countries_count}\n📈 Трафик: {traffic_used} / {traffic_limit}\n📱 Устройства: {devices_used} / {devices_limit}\n\nВыберите что хотите изменить:", - "SUBSCRIPTION_ACTIVE_REQUIRED": "⚠️ У вас нет активной подписки!", "SUBSCRIPTION_SETTINGS_BUTTON": "⚙️ Настройки подписки", + "SUBSCRIPTION_SETTINGS_OVERVIEW": "⚙️ Настройки подписки\n\n📊 Текущие параметры:\n🌐 Стран: {countries_count}\n📈 Трафик: {traffic_used} / {traffic_limit}\n📱 Устройства: {devices_used} / {devices_limit}\n\nВыберите что хотите изменить:", + "SUBSCRIPTION_SETTINGS_PAID_ONLY": "⚠️ Настройки доступны только для платных подписок", + "SUBSCRIPTION_SPECIFIC_APP_TITLE": "📱 {app_name} - {device_name}", + "SUBSCRIPTION_STATUS_ACTIVE": "Активна", + "SUBSCRIPTION_STATUS_EXPIRED": "Истекла", + "SUBSCRIPTION_STATUS_TRIAL": "Тестовая", + "SUBSCRIPTION_STATUS_UNKNOWN": "Неизвестно", "SUBSCRIPTION_SUMMARY": "\n📋 Итоговая конфигурация\n\n📅 Период: {period} дней\n📈 Трафик: {traffic}\n🌍 Страны: {countries}\n📱 Устройства: {devices}\n\n💰 Итого к оплате: {total_price}\n\nПодтвердить покупку?\n", + "SUBSCRIPTION_SUMMARY_PROMO_DISCOUNT": "- Промо-предложение: -{amount} ({percent}% дополнительно)", + "SUBSCRIPTION_TIME_LEFT_DAYS": "{days} дн.", + "SUBSCRIPTION_TIME_LEFT_EXPIRED": "истёк", + "SUBSCRIPTION_TIME_LEFT_HOURS": "{hours} ч.", + "SUBSCRIPTION_TIME_LEFT_MINUTES": "{minutes} мин.", + "SUBSCRIPTION_TRAFFIC_LIMITED": "{used} / {limit} ГБ", + "SUBSCRIPTION_TRAFFIC_UNLIMITED": "∞ (безлимит) | Использовано: {used} ГБ", "SUBSCRIPTION_TRIAL": "🧪 Тестовая подписка", + "SUBSCRIPTION_TYPE_PAID": "Платная", + "SUBSCRIPTION_TYPE_TRIAL": "Триал", + "SUBSCRIPTION_WARNING_MINUTES": "\n🔴 истекает через несколько минут!", + "SUBSCRIPTION_WARNING_TODAY": "\n⚠️ истекает сегодня!", + "SUBSCRIPTION_WARNING_TOMORROW": "\n⚠️ истекает завтра!", "SUB_STATUS_ACTIVE_FEW_DAYS": "💎 Активна\n⚠️ истекает через {days} дн.", "SUB_STATUS_ACTIVE_LONG": "💎 Активна\n📅 до {end_date} ({days} дн.)", "SUB_STATUS_ACTIVE_TODAY": "💎 Активна\n⚠️ истекает сегодня!", @@ -351,320 +1235,22 @@ "SUB_STATUS_TRIAL_TODAY": "🎁 Тестовая подписка\n⚠️ истекает сегодня!", "SUB_STATUS_TRIAL_TOMORROW": "🎁 Тестовая подписка\n⚠️ истекает завтра!", "SUCCESS": "✅ Успешно", - "REGISTRATION_COMPLETING": "✅ Завершаем регистрацию...", + "SUPPORT_BUTTON": "🆘 Поддержка", "SUPPORT_INFO": "\n🛠️ Техническая поддержка\n\nПо всем вопросам обращайтесь к нашей поддержке:\n\n👤 {settings.SUPPORT_USERNAME}\n\nМы поможем с:\n• Настройкой подключения\n• Решением технических проблем \n• Вопросами по оплате\n• Другими вопросами\n\n⏰ Время ответа: обычно в течение 1-2 часов\n", - "SERVER_STATUS_AVAILABLE": "✅ Доступны", - "SERVER_STATUS_ERROR_SHORT": "Не удалось получить данные", - "SERVER_STATUS_LATENCY": "{latency} мс", - "SERVER_STATUS_LATENCY_UNKNOWN": "нет данных", - "SERVER_STATUS_NEXT_PAGE": "Вперед ➡️", - "SERVER_STATUS_NO_SERVERS": "Нет данных о серверах.", - "SERVER_STATUS_NOT_CONFIGURED": "Функция недоступна.", - "SERVER_STATUS_OFFLINE": "нет ответа", - "SERVER_STATUS_PAGINATION": "Страница {current} из {total}", - "SERVER_STATUS_PREV_PAGE": "⬅️ Назад", - "SERVER_STATUS_REFRESH": "🔄 Обновить", - "SERVER_STATUS_SUMMARY": "Всего серверов: {total} (в сети: {online}, вне сети: {offline})", - "SERVER_STATUS_TITLE": "📊 Статус серверов", - "SERVER_STATUS_UPDATED_AT": "⏱ Обновлено: {time}", - "SERVER_STATUS_UNAVAILABLE": "❌ Недоступны", + "SUSPICIOUS_DISPLAY_NAME_BLOCKED": "🚫 Мы обнаружили, что ваше отображаемое имя похоже на ссылку или служебный аккаунт. Пожалуйста, измените имя в профиле Telegram и повторите попытку.", "SWITCH_TRAFFIC_BUTTON": "🔄 Переключить трафик", "SWITCH_TRAFFIC_CONFIRM": "\n🔄 Подтверждение переключения трафика\n\nТекущий лимит: {current_traffic}\nНовый лимит: {new_traffic}\n\nДействие: {action}\n💰 {cost}\n\nПодтвердить переключение?\n", "SWITCH_TRAFFIC_INFO": "\n🔄 Переключение лимита трафика\n\nТекущий лимит: {current_traffic}\nВыберите новый лимит трафика:\n\n💡 Важно:\n• При увеличении - доплата за разницу пропорционально оставшемуся времени\n• При уменьшении - возврат средств не производится\n• Счетчик использованного трафика НЕ сбрасывается\n", "SWITCH_TRAFFIC_SUCCESS_DECREASE": "\n✅ Лимит трафика уменьшен!\n\n📊 Было: {old_traffic} → Стало: {new_traffic}\nℹ️ Возврат средств не производится\n", "SWITCH_TRAFFIC_SUCCESS_INCREASE": "\n✅ Лимит трафика увеличен!\n\n📊 Было: {old_traffic} → Стало: {new_traffic}\n💰 Списано: {amount}\n", "SWITCH_TRAFFIC_TITLE": "🔄 Переключение лимита трафика", - "TOPUP_BALANCE_BUTTON": "💳 Попол\\у043Dить баланс", - "TOP_UP_AMOUNT": "💳 Введите сумму для пополнения (в рублях):", - "TOP_UP_METHODS": "\n💳 Выберите способ оплаты\n\nСумма: {amount}\n", - "TOP_UP_STARS": "⭐ Telegram Stars", - "STARS_PAYMENT_ENROLLMENT_ERROR": "❌ Произошла ошибка при зачислении средств. Обратитесь в поддержку, платеж будет проверен вручную.", - "STARS_PAYMENT_PROCESSING_ERROR": "❌ Техническая ошибка при обработке платежа. Обратитесь в поддержку для решения проблемы.", - "STARS_PAYMENT_SUCCESS": "🎉 Платеж успешно обработан!\n\n⭐ Потрачено звезд: {stars_spent}\n💰 Зачислено на баланс: {amount} ₽\n🆔 ID транзакции: {transaction_id}...\n\nСпасибо за пополнение! 🚀", - "STARS_PAYMENT_USER_NOT_FOUND": "❌ Ошибка: пользователь не найден. Обратитесь в поддержку.", - "STARS_PRECHECK_INVALID_PAYLOAD": "Ошибка валидации платежа. Попробуйте еще раз.", - "STARS_PRECHECK_TECHNICAL_ERROR": "Техническая ошибка. Попробуйте позже.", - "STARS_PRECHECK_USER_NOT_FOUND": "Пользователь не найден. Обратитесь в поддержку.", - "TOP_UP_TRIBUTE": "💎 Банковская карта", - "TRAFFIC_100GB": "📊 100 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_100GB)}", - "TRAFFIC_10GB": "📊 10 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_10GB)}", - "TRAFFIC_250GB": "📊 250 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_250GB)}", - "TRAFFIC_25GB": "📊 25 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_25GB)}", - "TRAFFIC_50GB": "📊 50 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_50GB)}", - "TRAFFIC_5GB": "📊 5 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_5GB)}", - "TRAFFIC_INSUFFICIENT_BALANCE": "⚠️ Недостаточно средств!\nТребуется: {required} (за {months} мес)\nУ вас: {balance}", - "TRAFFIC_NO_CHANGE": "ℹ️ Лимит трафика не изменился", - "TRAFFIC_PACKAGES_NOT_CONFIGURED": "⚠️ Пакеты трафика не настроены", - "TRAFFIC_UNLIMITED": "📊 Безлимит - {settings.format_price(settings.PRICE_TRAFFIC_UNLIMITED)}", - "TRIAL_ACTIVATED": "🎉 Тестовая подписка активирована!", - "TRIAL_ACTIVATE_BUTTON": "🎁 Активировать", - "TRIAL_ALREADY_USED": "❌ Тестовая подписка уже была использована", - "TRIAL_AVAILABLE": "\n🎁 Тестовая подписка\n\nВы можете получить бесплатную тестовую подписку:\n\n⏰ Период: {days} дней\n📈 Трафик: {traffic} ГБ\n📱 Устройства: {devices} шт.\n🌍 Сервер: {server_name}\n\nАктивировать тестовую подписку?\n", - "TRIAL_ENDING_SOON": "\n🎁 Тестовая подписка скоро закончится!\n\nВаша тестовая подписка истекает через несколько часов.\n\n💎 Не хотите остаться без VPN?\nПереходите на полную подписку!\n\n🔥 Специальное предложение:\n• 30 дней всего за {price}\n• Безлимитный трафик \n• Все серверы доступны\n• Скорость до 1ГБит/сек\n\n⚡️ Успейте оформить до окончания тестового периода!\n", - "TRAFFIC_FIXED_MODE": "⚠️ В текущем режиме трафик фиксированный и не может быть изменен", - "TRAFFIC_ALREADY_UNLIMITED": "⚠ У вас уже безлимитный трафик", - "ADD_TRAFFIC_PROMPT": "📈 Добавить трафик к подписке\n\nТекущий лимит: {current_traffic}\nВыберите дополнительный трафик:", - "UNKNOWN_CALLBACK_ALERT": "❓ Неизвестная команда. Попробуйте ещё раз.", - "UNKNOWN_COMMAND_MESSAGE": "❓ Не понимаю эту команду. Используйте кнопки меню.", - "USER_NOT_FOUND": "❌ Пользователь не найден", - "WELCOME": "\n🎉 Добро пожаловать в VPN сервис!\n\nНаш сервис предоставляет быстрый и безопасный доступ к интернету без ограничений.\n\n🔐 Преимущества:\n• Высокая скорость подключения\n• Серверы в разных странах\n• Надежная защита данных\n• Круглосуточная поддержка\n\nДля начала работы выберите язык интерфейса:\n", - "WELCOME_FALLBACK": "Добро пожаловать, {user_name}!", - "YES": "✅ Да", - "SUBSCRIPTION_STATUS_EXPIRED": "Истекла", - "SUBSCRIPTION_STATUS_TRIAL": "Тестовая", - "SUBSCRIPTION_STATUS_ACTIVE": "Активна", - "SUBSCRIPTION_STATUS_UNKNOWN": "Неизвестно", - "SUBSCRIPTION_TIME_LEFT_EXPIRED": "истёк", - "SUBSCRIPTION_TIME_LEFT_DAYS": "{days} дн.", - "SUBSCRIPTION_TIME_LEFT_HOURS": "{hours} ч.", - "SUBSCRIPTION_TIME_LEFT_MINUTES": "{minutes} мин.", - "SUBSCRIPTION_WARNING_TOMORROW": "\n⚠️ истекает завтра!", - "SUBSCRIPTION_WARNING_TODAY": "\n⚠️ истекает сегодня!", - "SUBSCRIPTION_WARNING_MINUTES": "\n🔴 истекает через несколько минут!", - "SUBSCRIPTION_TYPE_TRIAL": "Триал", - "SUBSCRIPTION_TYPE_PAID": "Платная", - "SUBSCRIPTION_TRAFFIC_UNLIMITED": "∞ (безлимит) | Использовано: {used} ГБ", - "SUBSCRIPTION_TRAFFIC_LIMITED": "{used} / {limit} ГБ", - "SUBSCRIPTION_NO_SERVERS": "Нет серверов", - "SUBSCRIPTION_OVERVIEW_TEMPLATE": "👤 {full_name}\n💰 Баланс: {balance}\n📱 Подписка: {status_emoji} {status_display}{warning}\n\n📱 Информация о подписке\n🎭 Тип: {subscription_type}\n📅 Действует до: {end_date}\n⏰ Осталось: {time_left}\n📈 Трафик: {traffic}\n🌍 Серверы: {servers}\n📱 Устройства: {devices_used} / {device_limit}", - "SUBSCRIPTION_CONNECTED_DEVICES_TITLE": "
📱 Подключенные устройства:\n", - "SUBSCRIPTION_CONNECTED_DEVICES_FOOTER": "
", - "SUBSCRIPTION_CONNECT_LINK_SECTION": "🔗 Ссылка для подключения:\n{subscription_url}", - "SUBSCRIPTION_CONNECT_LINK_PROMPT": "📱 Скопируйте ссылку и добавьте в ваше VPN приложение", - "SUBSCRIPTION_IMPORT_LINK_SECTION": "🔗 Ваша ссылка для импорта в VPN приложение:\n{subscription_url}", - "SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT": "📱 Нажмите кнопку ниже, чтобы получить инструкцию по настройке VPN на вашем устройстве", - "BACK_TO_MAIN_MENU_BUTTON": "⬅️ В главное меню", - "CUSTOM_MINIAPP_URL_NOT_SET": "⚠ Кастомная ссылка для мини-приложения не настроена", - "SUBSCRIPTION_LINK_GENERATING_NOTICE": "{purchase_text}\n\nСсылка генерируется, перейдите в раздел 'Моя подписка' через несколько секунд.", - "SUBSCRIPTION_NO_ACTIVE_LINK": "⚠ У вас нет активной подписки или ссылка еще генерируется", - "SUBSCRIPTION_CONNECT_MINIAPP_MESSAGE": "📱 Подключить подписку\n\n🚀 Нажмите кнопку ниже, чтобы открыть подписку в мини-приложении Telegram:", - "SUBSCRIPTION_CONNECT_CUSTOM_MESSAGE": "🚀 Подключить подписку\n\n📱 Нажмите кнопку ниже, чтобы открыть приложение:", - "SUBSCRIPTION_CONNECT_LINK_MESSAGE": "🚀 Подключить подписку\n\n🔗 Нажмите кнопку ниже, чтобы открыть ссылку подписки:", - "SUBSCRIPTION_LINK_HIDDEN_NOTICE": "ℹ️ Ссылка подписки доступна по кнопкам ниже или в разделе «Моя подписка».", - "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE": "📱 Подключить подписку\n\n🔗 Ссылка подписки:\n{subscription_url}\n\n💡 Выберите ваше устройство для получения подробной инструкции по настройке:", - "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE_HIDDEN": "📱 Подключить подписку\n\nℹ️ Ссылка подписки доступна по кнопкам ниже или в разделе «Моя подписка».\n\n💡 Выберите ваше устройство для получения подробной инструкции по настройке:", - "SUBSCRIPTION_LINK_UNAVAILABLE": "❌ Ссылка подписки недоступна", - "SUBSCRIPTION_DEVICE_APPS_NOT_FOUND": "❌ Приложения для этого устройства не найдены", - "SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Настройка для {device_name}", - "SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Ссылка подписки:", - "SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Рекомендуемое приложение: {app_name}", - "SUBSCRIPTION_DEVICE_OTHER_APPS": "📦 Другие приложения: {app_list}", - "SUBSCRIPTION_DEVICE_OTHER_APPS_HINT": "Нажмите кнопку \"Другие приложения\" ниже, чтобы выбрать приложение.", - "SUBSCRIPTION_DEVICE_STEP_INSTALL_TITLE": "Шаг 1 - Установка:", - "SUBSCRIPTION_DEVICE_STEP_ADD_TITLE": "Шаг 2 - Добавление подписки:", - "SUBSCRIPTION_DEVICE_STEP_CONNECT_TITLE": "Шаг 3 - Подключение:", - "SUBSCRIPTION_DEVICE_HOW_TO_TITLE": "💡 Как подключить:", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP1": "1. Установите приложение по ссылке выше", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP2": "2. Нажмите кнопку \"Подключиться\" ниже", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP3": "3. Откройте приложение и вставьте ссылку", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP4": "4. Подключитесь к серверу", - "SUBSCRIPTION_APPS_TITLE": "📱 Приложения для {device_name}", - "SUBSCRIPTION_APPS_PROMPT": "Выберите приложение для подключения:", - "SUBSCRIPTION_APP_NOT_FOUND": "❌ Приложение не найдено", - "SUBSCRIPTION_SPECIFIC_APP_TITLE": "📱 {app_name} - {device_name}", - "SUBSCRIPTION_ADDITIONAL_STEP_TITLE": "{title}:", - "SUBSCRIPTION_LINK_USAGE_TITLE": "📱 Как использовать:", - "SUBSCRIPTION_LINK_STEP1": "1. Нажмите на ссылку выше чтобы её скопировать", - "SUBSCRIPTION_LINK_STEP2": "2. Откройте ваше VPN приложение", - "SUBSCRIPTION_LINK_STEP3": "3. Найдите функцию \"Добавить подписку\" или \"Import\"", - "SUBSCRIPTION_LINK_STEP4": "4. Вставьте скопированную ссылку", - "SUBSCRIPTION_LINK_HINT": "💡 Если ссылка не скопировалась, выделите её вручную и скопируйте.", - "REFERRAL_PROGRAM_TITLE": "👥 Реферальная программа", - "REFERRAL_STATS_HEADER": "📊 Ваша статистика:", - "REFERRAL_STATS_INVITED": "• Приглашено пользователей: {count}", - "REFERRAL_STATS_FIRST_TOPUPS": "• Сделали первое пополнение: {count}", - "REFERRAL_STATS_ACTIVE": "• Активных рефералов: {count}", - "REFERRAL_STATS_CONVERSION": "• Конверсия: {rate}%", - "REFERRAL_STATS_TOTAL_EARNED": "• Заработано всего: {amount}", - "REFERRAL_STATS_MONTH_EARNED": "• За последний месяц: {amount}", - "REFERRAL_REWARDS_HEADER": "🎁 Как работают награды:", - "REFERRAL_REWARD_NEW_USER": "• Новый пользователь получает: {bonus} при первом пополнении от {minimum}", - "REFERRAL_REWARD_INVITER": "• Вы получаете при первом пополнении реферала: {bonus}", - "REFERRAL_REWARD_COMMISSION": "• Комиссия с каждого пополнения реферала: {percent}%", - "REFERRAL_LINK_TITLE": "🔗 Ваша реферальная ссылка:", - "REFERRAL_CODE_TITLE": "🆔 Ваш код: {code}", - "REFERRAL_RECENT_EARNINGS_HEADER": "💰 Последние начисления:", - "REFERRAL_EARNING_REASON_FIRST_TOPUP": "🎉 Первое пополнение", - "REFERRAL_EARNING_REASON_COMMISSION_TOPUP": "💰 Комиссия с пополнения", - "REFERRAL_EARNING_REASON_COMMISSION_PURCHASE": "💰 Комиссия с покупки", - "REFERRAL_RECENT_EARNINGS_ITEM": "• {reason}: {amount} от {referral_name}", - "REFERRAL_EARNINGS_BY_TYPE_HEADER": "📈 Доходы по типам:", - "REFERRAL_EARNINGS_FIRST_TOPUPS": "• Бонусы за первые пополнения: {count} ({amount})", - "REFERRAL_EARNINGS_TOPUPS": "• Комиссии с пополнений: {count} ({amount})", - "REFERRAL_EARNINGS_PURCHASES": "• Комиссии с покупок: {count} ({amount})", - "REFERRAL_INVITE_FOOTER": "📢 Приглашайте друзей и зарабатывайте!", - "REFERRAL_LINK_CAPTION": "🔗 Ваша реферальная ссылка:\n{link}", - "REFERRAL_LIST_EMPTY": "📋 У вас пока нет рефералов.\n\nПоделитесь своей реферальной ссылкой, чтобы начать зарабатывать!", - "REFERRAL_LIST_HEADER": "👥 Ваши рефералы (стр. {current}/{total})", - "REFERRAL_LIST_ITEM_HEADER": "{index}. {status} {name}", - "REFERRAL_LIST_ITEM_TOPUPS": " {emoji} Пополнений: {count}", - "REFERRAL_LIST_ITEM_EARNED": " 💎 Заработано с него: {amount}", - "REFERRAL_LIST_ITEM_REGISTERED": " 📅 Регистрация: {days} дн. назад", - "REFERRAL_LIST_ITEM_ACTIVITY": " 🕐 Активность: {days} дн. назад", - "REFERRAL_LIST_ITEM_ACTIVITY_LONG_AGO": " 🕐 Активность: давно", - "REFERRAL_LIST_PREV_PAGE": "⬅️ Назад", - "REFERRAL_LIST_NEXT_PAGE": "Вперед ➡️", - "REFERRAL_ANALYTICS_TITLE": "📊 Аналитика рефералов", - "REFERRAL_ANALYTICS_EARNINGS_HEADER": "💰 Доходы по периодам:", - "REFERRAL_ANALYTICS_EARNINGS_TODAY": "• Сегодня: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_WEEK": "• За неделю: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_MONTH": "• За месяц: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_QUARTER": "• За квартал: {amount}", - "REFERRAL_ANALYTICS_TOP_TITLE": "🏆 Топ-{count} рефералов:", - "REFERRAL_ANALYTICS_TOP_ITEM": "{index}. {name}: {amount} ({count} начислений)", - "REFERRAL_ANALYTICS_FOOTER": "📈 Продолжайте развивать свою реферальную сеть!", - "REFERRAL_INVITE_TITLE": "🎉 Присоединяйся к VPN сервису!", - "REFERRAL_INVITE_BONUS": "💎 При первом пополнении от {minimum} ты получишь {bonus} бонусом на баланс!", - "REFERRAL_INVITE_FEATURE_FAST": "🚀 Быстрое подключение", - "REFERRAL_INVITE_FEATURE_SERVERS": "🌍 Серверы по всему миру", - "REFERRAL_INVITE_FEATURE_SECURE": "🔒 Надежная защита", - "REFERRAL_INVITE_LINK_PROMPT": "👇 Переходи по ссылке:", - "REFERRAL_SHARE_BUTTON": "📤 Поделиться", - "REFERRAL_INVITE_CREATED_TITLE": "📝 Приглашение создано!", - "REFERRAL_INVITE_CREATED_INSTRUCTION": "Нажмите кнопку «📤 Поделиться» чтобы отправить приглашение в любой чат, или скопируйте текст ниже:", - "PAYMENT_METHODS_ONLY_SUPPORT": "💳 Способы пополнения баланса\n\n⚠️ В данный момент автоматические способы оплаты временно недоступны.\nОбратитесь в техподдержку для пополнения баланса.\n\nВыберите способ пополнения:", - "PAYMENT_METHODS_TITLE": "💳 Способы пополнения баланса", - "PAYMENT_METHODS_PROMPT": "Выберите удобный для вас способ оплаты:", - "PAYMENT_METHODS_FOOTER": "Выберите способ пополнения:", - "PAYMENT_RETURN_HOME_BUTTON": "🏠 На главную", - "PAYMENT_METHOD_STARS_NAME": "⭐ Telegram Stars", - "PAYMENT_METHOD_STARS_DESCRIPTION": "быстро и удобно", - "PAYMENT_METHOD_YOOKASSA_NAME": "💳 Банковская карта", - "PAYMENT_METHOD_YOOKASSA_DESCRIPTION": "через YooKassa", - "PAYMENT_METHOD_TRIBUTE_NAME": "💳 Банковская карта", - "PAYMENT_METHOD_TRIBUTE_DESCRIPTION": "через Tribute", - "PAYMENT_METHOD_CRYPTOBOT_NAME": "🪙 Криптовалюта", - "PAYMENT_METHOD_CRYPTOBOT_DESCRIPTION": "через CryptoBot", - "PAYMENT_METHOD_SUPPORT_NAME": "🛠️ Через поддержку", - "PAYMENT_METHOD_SUPPORT_DESCRIPTION": "другие способы", - "PAYMENT_METHODS_UNAVAILABLE_ALERT": "⚠️ В данный момент автоматические способы оплаты временно недоступны. Для пополнения баланса обратитесь в техподдержку.", - "ADMIN_MONITORING_SETTINGS": "⚙️ Настройки мониторинга", - "ADMIN_PROMO_GROUP_AUTO_ASSIGN_DISABLED": "Автовыдача по суммарным тратам: отключена", - "ADMIN_PROMO_GROUP_AUTO_ASSIGN_LINE": "Автовыдача по суммарным тратам: от {amount} ₽", - "ADMIN_PROMO_GROUP_CREATE_AUTO_ASSIGN_PROMPT": "Введите сумму общих трат (в ₽) для автоматической выдачи этой группы. Отправьте 0, чтобы отключить.", - "ADMIN_PROMO_GROUP_CREATE_PERIOD_PROMPT": "Введите скидки на периоды подписки (например, 30:10, 90:15). Отправьте 0, если без скидок.", - "ADMIN_PROMO_GROUP_EDIT_AUTO_ASSIGN_PROMPT": "Введите сумму общих трат (в ₽) для автовыдачи. Текущее значение: {current}.", - "ADMIN_PROMO_GROUP_EDIT_FIELD_AUTO_ASSIGN": "🤖 Автовыдача по тратам", - "ADMIN_PROMO_GROUP_EDIT_FIELD_DEVICES": "📱 Скидка на устройства", - "ADMIN_PROMO_GROUP_EDIT_FIELD_NAME": "✏️ Изменить название", - "ADMIN_PROMO_GROUP_EDIT_FIELD_PERIODS": "⏳ Скидки по периодам", - "ADMIN_PROMO_GROUP_EDIT_FIELD_SERVERS": "🖥 Скидка на серверы", - "ADMIN_PROMO_GROUP_EDIT_FIELD_TRAFFIC": "🌐 Скидка на трафик", - "ADMIN_PROMO_GROUP_EDIT_MENU_HINT": "Выберите параметр для изменения:", - "ADMIN_PROMO_GROUP_EDIT_MENU_TITLE": "✏️ Настройки промогруппы «{name}»", - "ADMIN_PROMO_GROUP_EDIT_PERIOD_PROMPT": "Введите новые скидки на периоды (текущие: {current}). Отправьте 0, если без скидок.", - "ADMIN_PROMO_GROUP_INVALID_AUTO_ASSIGN": "Введите неотрицательное число в рублях или 0 для отключения.", - "ADMIN_PROMO_GROUP_INVALID_PERIOD_DISCOUNTS": "Введите пары период:скидка через запятую, например 30:10, 90:15, или 0.", - "ADMIN_PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Скидки по периодам:", - "ADMIN_PROMO_OFFER_TEST_DURATION": "Доступ: {hours} ч", - "ADMIN_PROMO_OFFER_TEST_SQUAD_NAME": "Сервер: {name}", - "ADMIN_PROMO_OFFER_TEST_SQUADS": "Сквады: {squads}", - "ADMIN_PROMO_OFFER_TEST_SQUADS_EMPTY": "Сквады: не указаны", - "ADMIN_PROMO_OFFER_RESULT": "📬 Рассылка завершена\nОтправлено: {sent}\nОшибок: {failed}", - "ADMIN_PROMO_OFFER_SKIPPED": "Пропущено: {skipped} (уже есть доступ)", - "ADMIN_PROMO_OFFER_CTA_BUY": "Купить подписку", - "ADMIN_PROMO_OFFER_CTA_EXTEND": "Продлить подписку", - "ADMIN_PROMO_OFFER_BACK_TO_TEMPLATE": "↩️ К предложению", - "ADMIN_PROMO_OFFER_BACK_TO_LIST": "⬅️ К промопредложениям", - "ADMIN_REPORTS": "📊 Отчеты", - "ADMIN_TICKETS_TITLE": "🎫 Все тикеты поддержки:", - "ADMIN_TICKET_REPLY_INPUT": "Введите ответ от поддержки:", - "ADMIN_TICKET_REPLY_SENT": "✅ Ответ отправлен!", - "ATTACHMENTS_SENT": "✅ Вложения отправлены.", - "BACK_TO_MENU": "🏠 В главное меню", - "BACK_TO_OPEN_TICKETS": "🔴 Открытые тикеты", - "BACK_TO_SUPPORT": "⬅️ К поддержке", - "BACK_TO_TICKETS": "⬅️ К тикетам", - "BALANCE_TOPUP": "💳 Пополнить баланс", - "BLOCK_BY_TIME": "⏳ Блокировка по времени", - "BLOCK_FOREVER": "🚫 Заблокировать", - "CAMPAIGN_EXISTING_USERL": "ℹ️ Эта рекламная ссылка доступна только новым пользователям.", - "CANCEL_REPLY": "❌ Отменить ответ", - "CANCEL_TICKET_CREATION": "❌ Отменить создание тикета", - "CLOSED_TICKETS": "🟢 Закрытые", - "CLOSED_TICKETS_HEADER": "🟢 Закрытые тикеты", - "CLOSED_TICKETS_TITLE": "🟢 Закрытые тикеты:", - "CLOSE_NOTIFICATION": "❌ Закрыть уведомление", - "CLOSE_TICKET": "🔒 Закрыть тикет", - "CONTACT_SUPPORT_BUTTON": "💬 Связаться с поддержкой", - "CREATE_TICKET_BUTTON": "🎫 Создать тикет", - "DELETE_MESSAGE": "🗑 Удалить", - "DISCOUNT_BONUS_DESCRIPTION": "Скидка за продление подписки", - "SUBSCRIPTION_SUMMARY_PROMO_DISCOUNT": "- Промо-предложение: -{amount} ({percent}% дополнительно)", - "SUBSCRIPTION_PROMO_DISCOUNT_NOTE": "⚡ Доп. скидка {percent}%: -{amount}", - "SUBSCRIPTION_PROMO_DISCOUNT_HINT": "⚡ Активирована доп. скидка {percent}%. \n\nСуммируется с другими скидками!", - "SUBSCRIPTION_PROMO_DISCOUNT_TIMER": "⏳ Скидка действует ещё: {time_left}\n{bar}", - "DISCOUNT_CLAIM_ALREADY": "ℹ️ Скидка уже была активирована ранее.", - "DISCOUNT_CLAIM_ERROR": "❌ Не удалось активировать скидку. Попробуйте позже.", - "PROMO_OFFER_CLOSE": "❌ Закрыть", - "DISCOUNT_CLAIM_EXPIRED": "⚠️ Время действия предложения истекло.", - "DISCOUNT_CLAIM_NOT_FOUND": "❌ Предложение не найдено.", - "DISCOUNT_CLAIM_SUCCESS": "🎉 Скидка {percent}% активирована! \n\nОна суммируется с другими скидками и автоматически применится при следующей оплате.", + "TEST_ACCESS_ACTIVATED_MESSAGE": "🎉 Тестовые сервера подключены! Доступ активен до {expires_at}.", + "TEST_ACCESS_ACTIVATED_POPUP": "✅ Доступ выдан!", "TEST_ACCESS_ALREADY_CONNECTED": "ℹ️ Этот сервер уже подключен к вашей подписке.", - "ENTER_BLOCK_MINUTES": "Введите количество минут для блокировки пользователя (например, 15):", - "LANGUAGE_SELECTION_DISABLED": "⚙️ Выбор языка временно недоступен. Используем язык по умолчанию.", - "MARK_AS_ANSWERED": "✅ Отметить как отвеченный", - "MULENPAY_PAYMENT_ERROR": "❌ Ошибка создания платежа Mulen Pay. Попробуйте позже или обратитесь в поддержку.", - "MULENPAY_PAYMENT_INSTRUCTIONS": "💳 Оплата через Mulen Pay\n\n💰 Сумма: {amount}\n🆔 ID платежа: {payment_id}\n\n📱 Инструкция:\n1. Нажмите кнопку ‘Оплатить через Mulen Pay’\n2. Следуйте подсказкам платежной системы\n3. Подтвердите перевод\n4. Средства зачислятся автоматически\n\n❓ Если возникнут проблемы, обратитесь в {support}", - "MULENPAY_PAY_BUTTON": "💳 Оплатить через Mulen Pay", - "MULENPAY_TOPUP_PROMPT": "💳 Оплата через Mulen Pay\n\nВведите сумму для пополнения от 100 до 100 000 ₽.\nОплата происходит через защищенную платформу Mulen Pay.", - "MY_TICKETS_BUTTON": "📋 Мои тикеты", - "MY_TICKETS_TITLE": "📋 Ваши тикеты:", - "NOTIFICATION_CLOSED": "Уведомление закрыто.", - "NOTIFICATION_VALUE_INVALID": "❌ Некорректное значение, укажите число.", - "NOTIFICATION_VALUE_UPDATED": "✅ Настройки обновлены.", - "NOTIFY_PROMPT_SECOND_HOURS": "Введите количество часов действия скидки (1-168):", - "NOTIFY_PROMPT_SECOND_PERCENT": "Введите новый процент скидки для уведомления через 2-3 дня (0-100):", - "NOTIFY_PROMPT_THIRD_DAYS": "Через сколько дней после истечения отправлять предложение? (минимум 2):", - "NOTIFY_PROMPT_THIRD_HOURS": "Введите количество часов действия скидки (1-168):", - "NOTIFY_PROMPT_THIRD_PERCENT": "Введите новый процент скидки для позднего предложения (0-100):", - "NO_ATTACHMENTS": "Вложений нет.", - "NO_CLOSED_TICKETS": "Закрытых тикетов пока нет.", - "NO_TICKETS": "У вас пока нет тикетов.", - "NO_TICKETS_ADMIN": "Нет тикетов для отображения.", - "OPEN_TICKETS": "🔴 Открытые", - "OPEN_TICKETS_HEADER": "🔴 Открытые тикеты", - "PAL24_PAYMENT_ERROR": "❌ Ошибка создания платежа PayPalych. Попробуйте позже или обратитесь в поддержку.", - "PAL24_PAYMENT_INSTRUCTIONS": "🏦 Оплата через PayPalych (СБП)\n\n💰 Сумма: {amount}\n🆔 ID счета: {bill_id}\n\n📱 Инструкция:\n1. Нажмите кнопку ‘Оплатить через PayPalych (СБП)’\n2. Следуйте подсказкам платежной системы\n3. Подтвердите перевод\n4. Средства зачислятся автоматически\n\n❓ Если возникнут проблемы, обратитесь в {support}", - "PAL24_PAY_BUTTON": "🏦 Оплатить через PayPalych (СБП)", - "PAL24_TOPUP_PROMPT": "🏦 Оплата через PayPalych (СБП)\n\nВведите сумму для пополнения от 100 до 1 000 000 ₽.\nОплата проходит через систему быстрых платежей PayPalych.", - "PAYMENT_CARD_MULENPAY": "💳 Банковская карта (Mulen Pay)", - "PAYMENT_CARD_WATA": "💳 Банковская карта (WATA)", - "PAYMENT_CARD_PAL24": "🏦 СБП (PayPalych)", - "PAYMENT_METHOD_MULENPAY_DESCRIPTION": "через Mulen Pay", - "PAYMENT_METHOD_MULENPAY_NAME": "💳 Банковская карта (Mulen Pay)", - "PAYMENT_METHOD_WATA_DESCRIPTION": "через WATA", - "PAYMENT_METHOD_WATA_NAME": "💳 Банковская карта (WATA)", - "PAYMENT_METHOD_PAL24_DESCRIPTION": "через систему быстрых платежей", - "PAYMENT_METHOD_PAL24_NAME": "🏦 СБП (PayPalych)", - "WATA_TOPUP_PROMPT": "💳 Оплата через WATA\n\nВведите сумму пополнения. Минимальная сумма — {min_amount}, максимальная — {max_amount}.\nОплата происходит через защищенную форму WATA.", - "WATA_AMOUNT_TOO_LOW": "Минимальная сумма пополнения: {amount}", - "WATA_AMOUNT_TOO_HIGH": "Максимальная сумма пополнения: {amount}", - "WATA_PAYMENT_ERROR": "❌ Ошибка создания платежа WATA. Попробуйте позже или обратитесь в поддержку.", - "WATA_PAY_BUTTON": "💳 Оплатить через WATA", - "WATA_PAYMENT_INSTRUCTIONS": "💳 Оплата через WATA\n\n💰 Сумма: {amount}\n🆔 ID платежа: {payment_id}\n\n📱 Инструкция:\n1. Нажмите кнопку 'Оплатить через WATA'\n2. Следуйте подсказкам платежной системы\n3. Подтвердите перевод\n4. Средства зачислятся автоматически\n\n❓ Если возникнут проблемы, обратитесь в {support}", - "WATA_STATUS_TITLE": "💳 Статус платежа WATA", - "WATA_STATUS_OPENED": "Ожидает оплаты", - "WATA_STATUS_CLOSED": "Обрабатывается", - "WATA_STATUS_PAID": "Оплачен", - "WATA_STATUS_DECLINED": "Отклонен", - "WATA_STATUS_UNKNOWN": "Неизвестно", - "REPLY_TO_TICKET": "💬 Ответить", - "REPORT_CLOSE": "❌ Закрыть", - "REPORT_CLOSED": "✅ Отчет закрыт.", - "REPORT_CLOSE_ERROR": "❌ Не удалось закрыть отчет.", - "SENDING_ATTACHMENTS": "📎 Отправляю вложения...", - "SUBSCRIPTION_EXPIRED_1D": "⛔ Подписка закончилась\n\nДоступ был отключён {end_date}. Продлите подписку, чтобы вернуть полный доступ.\n\n💎 Стоимость продления: {price}", - "SUBSCRIPTION_EXPIRED_SECOND_WAVE": "🔥 Скидка {percent}% на продление\n\nАктивируйте предложение, чтобы получить дополнительную скидку. Она суммируется с вашей промогруппой и действует до {expires_at}.", - "SUBSCRIPTION_EXPIRED_THIRD_WAVE": "🎁 Индивидуальная скидка {percent}%\n\nПрошло {trigger_days} дней без подписки. Вернитесь и активируйте дополнительную скидку — она суммируется с промогруппой и действует до {expires_at}.", - "SUBSCRIPTION_EXTEND": "💎 Продлить подписку", - "SUBSCRIPTION_HAPP_CRYPTOLINK_BLOCK": "
{crypto_link}
", - "SUBSCRIPTION_HAPP_LINK_PROMPT": "🔒 Ссылка на подписку создана. Нажмите кнопку \"Подключиться\" ниже, чтобы открыть её в Happ.", - "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT": "▶️ Нажмите кнопку \"Подключиться\" ниже, чтобы открыть Happ и добавить подписку автоматически.", - "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Если ссылка не открывается автоматически, скопируйте её вручную:", - "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Открыть ссылку в Happ", - "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Подключение через Happ", - "SUPPORT_BUTTON": "🆘 Поддержка", + "TEST_ACCESS_NO_SQUADS": "❌ Не удалось определить список серверов для теста. Обратитесь к администратору.", + "TEST_ACCESS_NO_SUBSCRIPTION": "❌ Для активации предложения необходима действующая подписка.", + "TEST_ACCESS_REMNAWAVE_ERROR": "❌ Не удалось подключить серверы. Попробуйте позже или обратитесь в поддержку.", + "TEST_ACCESS_UNKNOWN_ERROR": "❌ Не удалось активировать предложение. Попробуйте позже.", "TICKET_ALREADY_OPEN": "У вас уже есть незакрытый тикет. Сначала закройте его.", "TICKET_ATTACHMENTS": "📎 Вложения", "TICKET_CLOSED": "✅ Тикет закрыт.", @@ -697,140 +1283,54 @@ "TICKET_TITLE_TOO_LONG": "Заголовок слишком длинный. Максимум 255 символов. Попробуйте еще раз:", "TICKET_TITLE_TOO_SHORT": "Заголовок должен содержать минимум 5 символов. Попробуйте еще раз:", "TICKET_UPDATE_ERROR": "❌ Ошибка при обновлении тикета.", + "TOPUP_BALANCE_BUTTON": "💳 Попол\\у043Dить баланс", + "TOP_UP_AMOUNT": "💳 Введите сумму для пополнения (в рублях):", + "TOP_UP_METHODS": "\n💳 Выберите способ оплаты\n\nСумма: {amount}\n", + "TOP_UP_STARS": "⭐ Telegram Stars", + "TOP_UP_TRIBUTE": "💎 Банковская карта", + "TRAFFIC_100GB": "📊 100 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_100GB)}", + "TRAFFIC_10GB": "📊 10 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_10GB)}", + "TRAFFIC_250GB": "📊 250 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_250GB)}", + "TRAFFIC_25GB": "📊 25 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_25GB)}", + "TRAFFIC_50GB": "📊 50 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_50GB)}", + "TRAFFIC_5GB": "📊 5 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_5GB)}", + "TRAFFIC_ALREADY_UNLIMITED": "⚠ У вас уже безлимитный трафик", + "TRAFFIC_FIXED_MODE": "⚠️ В текущем режиме трафик фиксированный и не может быть изменен", + "TRAFFIC_INSUFFICIENT_BALANCE": "⚠️ Недостаточно средств!\nТребуется: {required} (за {months} мес)\nУ вас: {balance}", + "TRAFFIC_NO_CHANGE": "ℹ️ Лимит трафика не изменился", + "TRAFFIC_PACKAGES_NOT_CONFIGURED": "⚠️ Пакеты трафика не настроены", + "TRAFFIC_UNLIMITED": "📊 Безлимит - {settings.format_price(settings.PRICE_TRAFFIC_UNLIMITED)}", + "TRIAL_ACTIVATED": "🎉 Тестовая подписка активирована!", + "TRIAL_ACTIVATE_BUTTON": "🎁 Активировать", + "TRIAL_ALREADY_USED": "❌ Тестовая подписка уже была использована", + "TRIAL_AVAILABLE": "\n🎁 Тестовая подписка\n\nВы можете получить бесплатную тестовую подписку:\n\n⏰ Период: {days} дней\n📈 Трафик: {traffic} ГБ\n📱 Устройства: {devices} шт.\n🌍 Сервер: {server_name}\n\nАктивировать тестовую подписку?\n", + "TRIAL_CHANNEL_UNSUBSCRIBED": "\n🚫 Доступ приостановлен\n\nМы не нашли вашу подписку на наш канал, поэтому тестовая подписка отключена.\n\nПодпишитесь на канал и нажмите «{check_button}», чтобы вернуть доступ.", + "TRIAL_ENDING_SOON": "\n🎁 Тестовая подписка скоро закончится!\n\nВаша тестовая подписка истекает через несколько часов.\n\n💎 Не хотите остаться без VPN?\nПереходите на полную подписку!\n\n🔥 Специальное предложение:\n• 30 дней всего за {price}\n• Безлимитный трафик \n• Все серверы доступны\n• Скорость до 1ГБит/сек\n\n⚡️ Успейте оформить до окончания тестового периода!\n", "TRIAL_INACTIVE_1H": "⏳ Прошёл час, а подключение не выполнено\n\nЕсли возникли сложности — откройте инструкцию и следуйте шагам. Мы всегда готовы помочь!", "TRIAL_INACTIVE_24H": "⏳ Прошли сутки с начала теста\n\nМы не видим трафика по вашей подписке. Загляните в инструкцию или напишите в поддержку — поможем подключиться!", + "TRIAL_SERVER_DEFAULT_NAME": "🎯 Тестовый сервер", + "TRIAL_SERVER_RANDOM_POOL": "🎲 Случайный из {count} серверов", "UNBLOCK": "✅ Разблокировать", + "UNKNOWN_CALLBACK_ALERT": "❓ Неизвестная команда. Попробуйте ещё раз.", + "UNKNOWN_COMMAND_MESSAGE": "❓ Не понимаю эту команду. Используйте кнопки меню.", "USER_BLOCKED_FOREVER": "Вы заблокированы для обращений в поддержку.", "USER_BLOCKED_UNTIL": "Вы заблокированы до {time}", + "USER_NOT_FOUND": "❌ Пользователь не найден", "VIEW_CLOSED_TICKETS": "🟢 Закрытые тикеты", "VIEW_TICKET": "👁️ Посмотреть тикет", - "ADMIN_USERS_SUBMENU_TITLE": "👥 **Управление пользователями и подписками**\n\n", - "ADMIN_PROMO_SUBMENU_TITLE": "💰 **Промокоды и статистика**\n\n", - "ADMIN_COMMUNICATIONS_SUBMENU_TITLE": "📨 **Коммуникации**\n\n", - "ADMIN_COMMUNICATIONS_SUBMENU_DESCRIPTION": "Управление рассылками и текстами интерфейса:", - "ADMIN_SUBMENU_SELECT_SECTION": "Выберите нужный раздел:", - "ADMIN_SUPPORT_SUBMENU_TITLE": "🛟 **Поддержка**\n\n", - "ADMIN_SUPPORT_SUBMENU_DESCRIPTION": "Управление тикетами и настройками поддержки:", - "ADMIN_SUPPORT_SUBMENU_DESCRIPTION_MODERATOR": "Доступ к тикетам.", - "ADMIN_SUPPORT_MODERATION_TITLE": "🧑‍⚖️ Модерация поддержки", - "ADMIN_SUPPORT_MODERATION_DESCRIPTION": "Доступ к тикетам поддержки.", - "ADMIN_SUPPORT_AUDIT_TITLE": "🧾 Аудит модераторов", - "ADMIN_SUPPORT_AUDIT_EMPTY": "Пока пусто", - "ADMIN_SUPPORT_AUDIT_ROLE_MODERATOR": "Модератор", - "ADMIN_SUPPORT_AUDIT_ROLE_ADMIN": "Админ", - "ADMIN_SUPPORT_AUDIT_ACTION_CLOSE_TICKET": "Закрытие тикета", - "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_TIMED": "Блокировка (время)", - "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_PERM": "Блокировка (навсегда)", - "ADMIN_SUPPORT_AUDIT_ACTION_UNBLOCK": "Снятие блока", - "ADMIN_SETTINGS_SUBMENU_TITLE": "⚙️ **Настройки системы**\n\n", - "ADMIN_SETTINGS_SUBMENU_DESCRIPTION": "Управление Remnawave, мониторингом и другими настройками:", - "ADMIN_SETTINGS_PRIVACY_POLICY": "🛡️ Политика конф.", - "ADMIN_PRIVACY_POLICY_HEADER": "🛡️ Политика конфиденциальности", - "ADMIN_PRIVACY_POLICY_DESCRIPTION": "Политика конфиденциальности отображается в разделе «Инфо».", - "ADMIN_PRIVACY_POLICY_LANGUAGE": "Язык: {lang}", - "ADMIN_PRIVACY_POLICY_STATUS_DISABLED": "⚠️ Показ политики выключен или текст отсутствует.", - "ADMIN_PRIVACY_POLICY_STATUS_ENABLED": "✅ Политика активна и показывается пользователям.", - "ADMIN_PRIVACY_POLICY_STATUS_ENABLED_EMPTY": "⚠️ Политика включена, но текст пуст — пользователи её не увидят.", - "ADMIN_PRIVACY_POLICY_UPDATED_AT": "Последнее обновление: {timestamp}", - "ADMIN_PRIVACY_POLICY_PREVIEW_TITLE": "Превью текста:", - "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY": "Текст ещё не задан.", - "ADMIN_PRIVACY_POLICY_ACTION_PROMPT": "Выберите действие:", - "ADMIN_PRIVACY_POLICY_EDIT_BUTTON": "✏️ Изменить текст", - "ADMIN_PRIVACY_POLICY_VIEW_BUTTON": "👀 Просмотреть текущий текст", - "ADMIN_PRIVACY_POLICY_ENABLE_BUTTON": "✅ Включить показ", - "ADMIN_PRIVACY_POLICY_DISABLE_BUTTON": "🚫 Отключить показ", - "ADMIN_PRIVACY_POLICY_HTML_HELP": "ℹ️ HTML помощь", - "ADMIN_PRIVACY_POLICY_CURRENT_PREVIEW": "Текущий текст (превью):", - "ADMIN_PRIVACY_POLICY_EDIT_PROMPT": "Отправьте новый текст политики конфиденциальности. Допускается HTML-разметка.", - "ADMIN_PRIVACY_POLICY_EDIT_HINT": "Используйте /html_help для справки по тегам.", - "ADMIN_PRIVACY_POLICY_EDIT_TITLE": "Редактирование политики", - "ADMIN_PRIVACY_POLICY_CANCEL": "❌ Отмена", - "ADMIN_PRIVACY_POLICY_TOO_LONG": "❌ Текст политики слишком длинный. Максимум 4000 символов.", - "ADMIN_PRIVACY_POLICY_HTML_ERROR": "❌ Ошибка в HTML: {error}", - "ADMIN_PRIVACY_POLICY_SAVED": "✅ Политика конфиденциальности обновлена.", - "ADMIN_PRIVACY_POLICY_BACK_BUTTON": "⬅️ К настройкам политики", - "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY_ALERT": "Текст политики пока не задан.", - "ADMIN_PRIVACY_POLICY_VIEW_TITLE": "👀 Текущий текст политики", - "ADMIN_PRIVACY_POLICY_VIEW_TRUNCATED": "\n\n⚠️ Текст сокращён для отображения. Полную версию увидят пользователи в меню.", - "ADMIN_PRIVACY_POLICY_ENABLED": "✅ Политика включена", - "ADMIN_PRIVACY_POLICY_DISABLED": "🚫 Политика отключена", - "ADMIN_PRIVACY_POLICY_RETURN_TO_EDIT": "⬅️ Назад к редактированию", - "ADMIN_SETTINGS_PUBLIC_OFFER": "📄 Публичная оферта", - "ADMIN_PUBLIC_OFFER_HEADER": "📄 Публичная оферта", - "ADMIN_PUBLIC_OFFER_DESCRIPTION": "Публичная оферта отображается в разделе «Инфо».", - "ADMIN_PUBLIC_OFFER_LANGUAGE": "Язык: {lang}", - "ADMIN_PUBLIC_OFFER_STATUS_DISABLED": "⚠️ Показ оферты выключен или текст отсутствует.", - "ADMIN_PUBLIC_OFFER_STATUS_ENABLED": "✅ Оферта активна и показывается пользователям.", - "ADMIN_PUBLIC_OFFER_STATUS_ENABLED_EMPTY": "⚠️ Оферта включена, но текст пуст — пользователи её не увидят.", - "ADMIN_PUBLIC_OFFER_UPDATED_AT": "Последнее обновление: {timestamp}", - "ADMIN_PUBLIC_OFFER_PREVIEW_TITLE": "Превью текста:", - "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY": "Текст ещё не задан.", - "ADMIN_PUBLIC_OFFER_ACTION_PROMPT": "Выберите действие:", - "ADMIN_PUBLIC_OFFER_EDIT_BUTTON": "✏️ Изменить текст", - "ADMIN_PUBLIC_OFFER_VIEW_BUTTON": "👀 Просмотреть текущий текст", - "ADMIN_PUBLIC_OFFER_ENABLE_BUTTON": "✅ Включить показ", - "ADMIN_PUBLIC_OFFER_DISABLE_BUTTON": "🚫 Отключить показ", - "ADMIN_PUBLIC_OFFER_HTML_HELP": "ℹ️ HTML помощь", - "ADMIN_PUBLIC_OFFER_CURRENT_PREVIEW": "Текущий текст (превью):", - "ADMIN_PUBLIC_OFFER_EDIT_PROMPT": "Отправьте новый текст публичной оферты. Допускается HTML-разметка.", - "ADMIN_PUBLIC_OFFER_EDIT_HINT": "Используйте /html_help для справки по тегам.", - "ADMIN_PUBLIC_OFFER_EDIT_TITLE": "Редактирование оферты", - "ADMIN_PUBLIC_OFFER_CANCEL": "❌ Отмена", - "ADMIN_PUBLIC_OFFER_TOO_LONG": "❌ Текст оферты слишком длинный. Максимум 4000 символов.", - "ADMIN_PUBLIC_OFFER_HTML_ERROR": "❌ Ошибка в HTML: {error}", - "ADMIN_PUBLIC_OFFER_SAVED": "✅ Публичная оферта обновлена.", - "ADMIN_PUBLIC_OFFER_BACK_BUTTON": "⬅️ К настройкам оферты", - "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY_ALERT": "Текст оферты пока не задан.", - "ADMIN_PUBLIC_OFFER_VIEW_TITLE": "👀 Текущий текст оферты", - "ADMIN_PUBLIC_OFFER_VIEW_TRUNCATED": "\n\n⚠️ Текст сокращён для отображения. Полную версию увидят пользователи в меню.", - "ADMIN_PUBLIC_OFFER_ENABLED": "✅ Оферта включена", - "ADMIN_PUBLIC_OFFER_DISABLED": "🚫 Оферта отключена", - "ADMIN_PUBLIC_OFFER_RETURN_TO_EDIT": "⬅️ Назад к редактированию", - "ADMIN_PUBLIC_OFFER_EDIT_CANCELLED": "Редактирование оферты отменено.", - "ADMIN_SYSTEM_SUBMENU_TITLE": "🛠️ **Системные функции**\n\n", - "ADMIN_SYSTEM_SUBMENU_DESCRIPTION": "Отчеты, обновления, логи, резервные копии и системные операции:", - "ADMIN_SUPPORT_SETTINGS_STATUS_ENABLED": "Включены", - "ADMIN_SUPPORT_SETTINGS_STATUS_DISABLED": "Отключены", - "ADMIN_SUPPORT_SETTINGS_MENU_LABEL": "Пункт «Техподдержка» в меню", - "ADMIN_SUPPORT_SETTINGS_MODE_TICKETS": "Тикеты", - "ADMIN_SUPPORT_SETTINGS_MODE_CONTACT": "Контакт", - "ADMIN_SUPPORT_SETTINGS_MODE_BOTH": "Оба", - "ADMIN_SUPPORT_SETTINGS_EDIT_DESCRIPTION": "📝 Изменить описание", - "ADMIN_SUPPORT_SETTINGS_ADMIN_NOTIFICATIONS": "Админ-уведомления", - "ADMIN_SUPPORT_SETTINGS_USER_NOTIFICATIONS": "Пользовательские уведомления", - "ADMIN_SUPPORT_SETTINGS_SLA_LABEL": "SLA", - "ADMIN_SUPPORT_SETTINGS_SLA_TIME": "⏳ Время SLA: {minutes} мин", - "ADMIN_SUPPORT_SETTINGS_MODERATORS_COUNT": "🧑‍⚖️ Модераторы: {count}", - "ADMIN_SUPPORT_SETTINGS_ADD_MODERATOR": "➕ Назначить модератора", - "ADMIN_SUPPORT_SETTINGS_REMOVE_MODERATOR": "➖ Удалить модератора", - "ADMIN_SUPPORT_SETTINGS_TITLE": "🛟 Настройки поддержки", - "ADMIN_SUPPORT_SETTINGS_DESCRIPTION": "Режим работы и видимость в меню. Ниже текущее описание меню поддержки:", - "ADMIN_SUPPORT_SLA_SETUP_PROMPT": "⏳ Настройка SLA\n\nВведите количество минут ожидания ответа (целое число > 0):", - "ADMIN_SUPPORT_SLA_INVALID": "❌ Введите корректное число минут (1-1440)", - "ADMIN_SUPPORT_SLA_SAVED": "✅ Значение SLA сохранено", - "ADMIN_SUPPORT_ASSIGN_MODERATOR_PROMPT": "🧑‍⚖️ Назначение модератора\n\nОтправьте Telegram ID пользователя (число)", - "ADMIN_SUPPORT_REMOVE_MODERATOR_PROMPT": "🧑‍⚖️ Удаление модератора\n\nОтправьте Telegram ID пользователя (число)", - "ADMIN_SUPPORT_INVALID_TELEGRAM_ID": "❌ Введите корректный Telegram ID (число)", - "ADMIN_SUPPORT_MODERATOR_REMOVED_SUCCESS": "✅ Модератор {tid} удалён", - "ADMIN_SUPPORT_MODERATOR_REMOVED_FAIL": "❌ Не удалось удалить модератора", - "ADMIN_SUPPORT_MODERATOR_ADDED_SUCCESS": "✅ Пользователь {tid} назначен модератором", - "ADMIN_SUPPORT_MODERATOR_ADDED_FAIL": "❌ Не удалось назначить модератора", - "ADMIN_SUPPORT_MODERATORS_EMPTY": "Список пуст", - "ADMIN_SUPPORT_MODERATORS_TITLE": "🧑‍⚖️ Модераторы", - "ADMIN_SUPPORT_SEND_DESCRIPTION": "📨 Прислать текст", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_TITLE": "📝 Редактирование описания поддержки", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CURRENT": "Текущее описание:", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_TITLE": "Контакт для режима «Контакт»", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_HINT": "Добавьте в описание при необходимости.", - "ADMIN_SUPPORT_DESCRIPTION_UPDATED": "✅ Описание обновлено.", - "ADMIN_SUPPORT_DESCRIPTION_SENT": "Текст отправлен ниже", - "ADMIN_SUPPORT_MESSAGE_DELETED": "Сообщение удалено", - "ADMIN_PRICING_BUTTON_TRAFFIC_OPTIONS": "🚦 Отображение пакетов", - "ADMIN_PRICING_TRAFFIC_PACKAGE_ENABLED": "Пакет включен.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_DISABLED": "Пакет отключен.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_MIN": "Должен оставаться хотя бы один пакет.", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_TITLE": "🚦 Отображение пакетов трафика", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_ACTIVE": "Активные пакеты: {items}", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_NONE": "Активных пакетов нет.", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_PROMPT": "Нажмите на пакет, чтобы включить или выключить его отображение." + "WATA_AMOUNT_TOO_HIGH": "Максимальная сумма пополнения: {amount}", + "WATA_AMOUNT_TOO_LOW": "Минимальная сумма пополнения: {amount}", + "WATA_PAYMENT_ERROR": "❌ Ошибка создания платежа WATA. Попробуйте позже или обратитесь в поддержку.", + "WATA_PAYMENT_INSTRUCTIONS": "💳 Оплата через WATA\n\n💰 Сумма: {amount}\n🆔 ID платежа: {payment_id}\n\n📱 Инструкция:\n1. Нажмите кнопку 'Оплатить через WATA'\n2. Следуйте подсказкам платежной системы\n3. Подтвердите перевод\n4. Средства зачислятся автоматически\n\n❓ Если возникнут проблемы, обратитесь в {support}", + "WATA_PAY_BUTTON": "💳 Оплатить через WATA", + "WATA_STATUS_CLOSED": "Обрабатывается", + "WATA_STATUS_DECLINED": "Отклонен", + "WATA_STATUS_OPENED": "Ожидает оплаты", + "WATA_STATUS_PAID": "Оплачен", + "WATA_STATUS_TITLE": "💳 Статус платежа WATA", + "WATA_STATUS_UNKNOWN": "Неизвестно", + "WATA_TOPUP_PROMPT": "💳 Оплата через WATA\n\nВведите сумму пополнения. Минимальная сумма — {min_amount}, максимальная — {max_amount}.\nОплата происходит через защищенную форму WATA.", + "WELCOME": "\n🎉 Добро пожаловать в VPN сервис!\n\nНаш сервис предоставляет быстрый и безопасный доступ к интернету без ограничений.\n\n🔐 Преимущества:\n• Высокая скорость подключения\n• Серверы в разных странах\n• Надежная защита данных\n• Круглосуточная поддержка\n\nДля начала работы выберите язык интерфейса:\n", + "WELCOME_FALLBACK": "Добро пожаловать, {user_name}!", + "YES": "✅ Да" } diff --git a/locales/en.json b/locales/en.json deleted file mode 100644 index 5248971a..00000000 --- a/locales/en.json +++ /dev/null @@ -1,1241 +0,0 @@ -{ - "ADD_COUNTRIES_BUTTON": "🌐 Add countries", - "ADMIN_MAIN_MENU": "🏠 Main menu", - "ADMIN_CAMPAIGNS": "📣 Promotional campaigns", - "ADMIN_REPORTS": "📊 Reports", - "AUTOPAY_BUTTON": "💳 Auto payment", - "AUTOPAY_SET_DAYS_BUTTON": "⚙️ Configure days", - "BACK": "⬅️ Back", - "BACK_TO_SUBSCRIPTION": "⬅️ Back to subscription", - "BALANCE_BUTTON_DEFAULT": "💰 Balance: {balance}", - "CANCEL": "❌ Cancel", - "CHANGE_DEVICES_BUTTON": "📱 Change devices", - "CHANNEL_CHECK_BUTTON": "✅ I have joined", - "CHANNEL_REQUIRED_TEXT": "🔒 Please join the announcement channel to access the bot, then press the button below.", - "CHANNEL_SUBSCRIBE_BUTTON": "🔗 Subscribe", - "CHANNEL_SUBSCRIBE_REQUIRED_ALERT": "❌ You haven't joined the channel!", - "CHANNEL_SUBSCRIBE_THANKS": "✅ Thanks for subscribing", - "TRIAL_CHANNEL_UNSUBSCRIBED": "\n🚫 Access paused\n\nWe couldn't find your subscription to our channel, so the trial plan has been disabled.\n\nJoin the channel and tap “{check_button}” to restore access.", - "CHECK_STATUS_BUTTON": "📊 Check status", - "CHOOSE_ANOTHER_DEVICE": "📱 Choose another device", - "CONFIRM": "✅ Confirm", - "CONFIRM_CHANGE_BUTTON": "✅ Confirm change", - "CONNECT_BUTTON": "🔗 Connect", - "HAPP_DOWNLOAD_BUTTON": "⬇️ Download Happ", - "HAPP_DOWNLOAD_PROMPT": "📥 Download Happ\nChoose your device:", - "HAPP_PLATFORM_IOS": "🍎 iOS", - "HAPP_PLATFORM_ANDROID": "🤖 Android", - "HAPP_PLATFORM_MACOS": "🖥️ Mac OS", - "HAPP_PLATFORM_WINDOWS": "💻 Windows", - "HAPP_PLATFORM_PC": "💻 PC", - "HAPP_DOWNLOAD_LINK_MESSAGE": "⬇️ Download Happ for {platform}:", - "HAPP_DOWNLOAD_LINK_NOT_SET": "❌ Download link for this device is not configured", - "HAPP_DOWNLOAD_OPEN_LINK": "🔗 Open link", - "CONTINUE": "➡️ Continue", - "CONTINUE_BUTTON": "➡️ Continue", - "COPY_SUBSCRIPTION_LINK": "📋 Copy subscription link", - "CREATE_INVITE_BUTTON": "📝 Create invite", - "DEVICE_CONNECTION_HELP": "❓ How to reconnect a device?", - "DEVICE_GUIDE_ANDROID": "🤖 Android", - "DEVICE_GUIDE_ANDROID_TV": "📺 Android TV", - "DEVICE_GUIDE_APPLE_TV": "📺 Apple TV", - "DEVICE_GUIDE_IOS": "📱 iOS (iPhone/iPad)", - "DEVICE_GUIDE_MAC": "🎯 macOS", - "DEVICE_GUIDE_WINDOWS": "💻 Windows", - "DISABLE_BUTTON": "❌ Disable", - "ENABLE_BUTTON": "✅ Enable", - "ERROR": "❌ An error occurred", - "ERROR_TRY_AGAIN": "❌ An error occurred. Please try again.", - "ERROR_RULES_RETRY": "An error occurred. Please try accepting the rules again:", - "GO_TO_BALANCE_TOP_UP": "💳 Go to balance top up", - "RETURN_TO_SUBSCRIPTION_CHECKOUT": "⬅️ Return to subscription checkout", - "INSUFFICIENT_BALANCE": "❌ Insufficient balance.\n\nTop up {amount} and try again.", - "ADDON_INSUFFICIENT_FUNDS_MESSAGE": "⚠️ Insufficient funds\n\nService price: {required}\nBalance: {balance}\nMissing: {missing}\n\nChoose a top-up method. The amount will be filled in automatically.", - "LANGUAGE_PROMPT": "🌐 Choose the interface language:", - "LANGUAGE_SELECTED": "🌐 Interface language set: English", - "LOADING": "⏳ Loading...", - "MAIN_MENU": "👤 {user_name}\n\n📱 Subscription: {subscription_status}\n\nChoose an option:\n", - "MAIN_MENU_ACTION_PROMPT": "Choose an option:", - "MAIN_MENU_TEST_ACCESS_HEADER": "🧪 Test servers active: {servers}", - "MAIN_MENU_TEST_ACCESS_TIMER": "⏳ Access active for {time_left}\n{bar}", - "MAIN_MENU_BUTTON": "🏠 Main menu", - "MANAGE_DEVICES_BUTTON": "🔧 Manage devices", - "MENU_BALANCE": "💰 Balance", - "MENU_SUBSCRIPTION": "📱 Subscription", - "MENU_TRIAL": "🎁 Trial subscription", - "MY_BALANCE_BUTTON": "💰 My balance", - "MY_SUBSCRIPTION_BUTTON": "📱 My subscription", - "NO": "❌ No", - "NO_SERVERS_AVAILABLE": "❌ No servers available", - "NO_TRAFFIC_PACKAGES": "❌ No packages available", - "OTHER_APPS_BUTTON": "📋 Other apps", - "PAGINATION_NEXT": "➡️", - "PAGINATION_PREV": "⬅️", - "PAYMENTS_TEMPORARILY_UNAVAILABLE": "⚠️ Payment methods are temporarily unavailable", - "PAYMENT_CARD_TRIBUTE": "💳 Bank card (Tribute)", - "PAYMENT_CARD_MULENPAY": "💳 Bank card (Mulen Pay)", - "PAYMENT_CARD_WATA": "💳 Bank card (WATA)", - "PAYMENT_CARD_PAL24": "🏦 SBP (PayPalych)", - "PAYMENT_CARD_YOOKASSA": "💳 Bank card (YooKassa)", - "PAYMENT_CRYPTOBOT": "🪙 Cryptocurrency (CryptoBot)", - "PAYMENT_SBP_YOOKASSA": "🏦 Pay via SBP (YooKassa)", - "PAYMENT_TELEGRAM_STARS": "⭐ Telegram Stars", - "PAYMENT_VIA_SUPPORT": "🛠️ Via support", - "PAY_NOW_BUTTON": "💳 Pay", - "PAY_WITH_COINS_BUTTON": "🪙 Pay", - "MULENPAY_TOPUP_PROMPT": "💳 Mulen Pay payment\n\nEnter an amount between 100 and 100,000 ₽.\nThe payment is processed by the secure Mulen Pay platform.", - "MULENPAY_PAYMENT_ERROR": "❌ Failed to create Mulen Pay payment. Please try again later or contact support.", - "MULENPAY_PAY_BUTTON": "💳 Pay with Mulen Pay", - "MULENPAY_PAYMENT_INSTRUCTIONS": "💳 Mulen Pay payment\n\n💰 Amount: {amount}\n🆔 Payment ID: {payment_id}\n\n📱 How to pay:\n1. Press ‘Pay with Mulen Pay’\n2. Follow the instructions on the payment page\n3. Confirm the transfer\n4. Funds will be credited automatically\n\n❓ Need help? Contact {support}", - "WATA_TOPUP_PROMPT": "💳 Pay via WATA\n\nEnter the amount to top up. Minimum amount — {min_amount}, maximum — {max_amount}.\nPayments are processed through the secure WATA form.", - "WATA_PAYMENT_ERROR": "❌ Failed to create WATA payment. Please try again later or contact support.", - "WATA_PAY_BUTTON": "💳 Pay via WATA", - "WATA_PAYMENT_INSTRUCTIONS": "💳 Pay via WATA\n\n💰 Amount: {amount}\n🆔 Payment ID: {payment_id}\n\n📱 How to pay:\n1. Tap ‘Pay via WATA’\n2. Follow the gateway prompts\n3. Confirm the transfer\n4. Funds will be credited automatically\n\n❓ Need help? Contact {support}", - "PAL24_TOPUP_PROMPT": "🏦 PayPalych (SBP) payment\n\nEnter an amount between 100 and 1,000,000 ₽.\nThe payment is processed via the PayPalych Faster Payments System.", - "PAL24_PAYMENT_ERROR": "❌ Failed to create a PayPalych payment. Please try again later or contact support.", - "PAL24_PAY_BUTTON": "🏦 Pay with PayPalych (SBP)", - "PAL24_SBP_PAY_BUTTON": "🏦 Pay with PayPalych (SBP)", - "PAL24_CARD_PAY_BUTTON": "💳 Pay with a bank card (PayPalych)", - "PAL24_PAYMENT_INSTRUCTIONS": "🏦 PayPalych payment\n\n💰 Amount: {amount}\n🆔 Invoice ID: {bill_id}\n\n📱 How to pay:\n{steps}\n\n❓ Need help? Contact {support}", - "PAL24_INSTRUCTION_BUTTON": "{step}. Press “{button}”", - "PAL24_INSTRUCTION_FOLLOW": "{step}. Follow the payment page instructions", - "PAL24_INSTRUCTION_CONFIRM": "{step}. Confirm the transfer", - "PAL24_INSTRUCTION_COMPLETE": "{step}. The funds will be credited automatically", - "WATA_AMOUNT_TOO_LOW": "Minimum top-up amount: {amount}", - "WATA_AMOUNT_TOO_HIGH": "Maximum top-up amount: {amount}", - "WATA_STATUS_TITLE": "💳 WATA payment status", - "WATA_STATUS_OPENED": "Waiting for payment", - "WATA_STATUS_CLOSED": "Processing", - "WATA_STATUS_PAID": "Paid", - "WATA_STATUS_DECLINED": "Declined", - "WATA_STATUS_UNKNOWN": "Unknown", - "PENDING_CANCEL_BUTTON": "⌛ Cancel", - "POST_REGISTRATION_TRIAL_BUTTON": "🚀 Activate free trial 🚀", - "REFERRAL_ANALYTICS_BUTTON": "📊 Analytics", - "REFERRAL_CODE_ACCEPTED": "✅ Referral code accepted!", - "REFERRAL_CODE_INVALID": "❌ Invalid referral code", - "REFERRAL_CODE_INVALID_HELP": "❌ Invalid referral code.\n\n💡 If you have a referral code, please double-check the spelling.\n⏭️ To continue without a referral code, use the /start command.", - "REFERRAL_CODE_QUESTION": "\n🤝 Do you have a friend's referral code?\n\nIf you have a promo code or referral link, enter it now to receive a bonus!\n\nSend the code or tap \"Skip\":\n", - "REFERRAL_CODE_SKIP": "⏭️ Skip", - "ALREADY_REGISTERED_REFERRAL": "ℹ️ You are already registered. A referral link cannot be applied.", - "REFERRAL_LIST_BUTTON": "👥 Referral list", - "RESET_ALL_DEVICES_BUTTON": "🔄 Reset all devices", - "RESET_DEVICE_CONFIRM_BUTTON": "✅ Reset this device", - "RESET_TRAFFIC_BUTTON": "🔄 Reset traffic", - "RULES_HEADER": "📋 Service Rules", - "RULES_ACCEPTED_PROCESSING": "✅ Rules accepted! Completing registration...", - "RULES_TEXT_DEFAULT": "📋 Service Usage Rules\n\n1. Do not use the service for illegal activity\n2. Avoid sharing pirated or malicious content\n3. Spam and phishing are prohibited\n4. Using the service for DDoS attacks is forbidden\n5. One account is intended for one person\n6. Refunds are provided only in exceptional cases\n7. The administration may block accounts that violate the rules\n\nBy using the service you agree to follow these rules.", - "SEND_CONTACT_BUTTON": "📱 Share contact", - "SEND_LOCATION_BUTTON": "📍 Share location", - "SHOW_QR_BUTTON": "📱 Show QR code", - "SHOW_SUBSCRIPTION_LINK": "📋 Show subscription link", - "SKIP_BUTTON": "Skip ➡️", - "SUBSCRIPTION_SETTINGS_BUTTON": "⚙️ Subscription settings", - "SUB_STATUS_ACTIVE_FEW_DAYS": "💎 Active\n⚠️ expires in {days} days", - "SUB_STATUS_ACTIVE_LONG": "💎 Active\n📅 until {end_date} ({days} days)", - "SUB_STATUS_ACTIVE_TODAY": "💎 Active\n⚠️ expires today!", - "SUB_STATUS_ACTIVE_TOMORROW": "💎 Active\n⚠️ expires tomorrow!", - "SUB_STATUS_EXPIRED": "🔴 Expired\n📅 {end_date}", - "SUB_STATUS_NONE": "❌ Not available", - "SUB_STATUS_TRIAL_ACTIVE": "🎁 Trial subscription\n📅 until {end_date} ({days} days)", - "SUB_STATUS_TRIAL_TODAY": "🎁 Trial subscription\n⚠️ expires today!", - "SUB_STATUS_TRIAL_TOMORROW": "🎁 Trial subscription\n⚠️ expires tomorrow!", - "SUBSCRIPTION_ACTIVE": "✅ Active", - "SUBSCRIPTION_EXTEND": "💎 Extend subscription", - "SUCCESS": "✅ Success", - "REGISTRATION_COMPLETING": "✅ Completing registration...", - "SWITCH_TRAFFIC_BUTTON": "🔄 Switch traffic", - "TOPUP_BALANCE_BUTTON": "💳 Top up balance", - "TRAFFIC_PACKAGES_NOT_CONFIGURED": "⚠️ Traffic packages are not configured", - "TRIAL_ACTIVATE_BUTTON": "🎁 Activate", - "PROMOCODE_EMPTY_INPUT": "❌ Please enter a valid promo code", - "STARS_PAYMENT_ENROLLMENT_ERROR": "❌ Failed to credit funds. Please contact support; the payment will be verified manually.", - "STARS_PAYMENT_PROCESSING_ERROR": "❌ Technical error processing the payment. Please contact support for assistance.", - "STARS_PAYMENT_SUCCESS": "🎉 Payment processed successfully!\n\n⭐ Stars spent: {stars_spent}\n💰 Added to balance: {amount} ₽\n🆔 Transaction ID: {transaction_id}...\n\nThank you for topping up! 🚀", - "STARS_PAYMENT_USER_NOT_FOUND": "❌ Error: user not found. Please contact support.", - "STARS_PRECHECK_INVALID_PAYLOAD": "Payment validation error. Please try again.", - "STARS_PRECHECK_TECHNICAL_ERROR": "Technical error. Please try again later.", - "STARS_PRECHECK_USER_NOT_FOUND": "User not found. Please contact support.", - "UNKNOWN_CALLBACK_ALERT": "❓ Unknown action. Please try again.", - "UNKNOWN_COMMAND_MESSAGE": "❓ I didn't understand that command. Use the menu buttons.", - "WELCOME": "\n🎉 Welcome to VPN Service!\n\nOur service provides fast and secure internet access without restrictions.\n\n🔐 Advantages:\n• High connection speed\n• Servers in different countries \n• Reliable data protection\n• 24/7 support\n\nTo get started, select interface language:\n", - "WELCOME_FALLBACK": "Welcome, {user_name}!", - "YES": "✅ Yes", - "ACCESS_DENIED": "❌ Access denied", - "ADMIN_MESSAGES": "📨 Broadcasts", - "ADMIN_MONITORING": "🔍 Monitoring", - "ADMIN_MONITORING_SETTINGS": "⚙️ Monitoring settings", - "ADMIN_PANEL": "\n⚙️ Administration panel\n\nSelect a section to manage:\n", - "ADMIN_PROMOCODES": "🎫 Promo codes", - "ADMIN_REFERRALS": "🤝 Referral program", - "ADMIN_REMNAWAVE": "🖥️ Remnawave", - "ADMIN_RULES": "📋 Rules", - "ADMIN_STATISTICS": "📊 Statistics", - "ADMIN_PROMO_GROUPS": "💳 Promo groups", - "ADMIN_PROMO_GROUPS_TITLE": "💳 Promo groups", - "ADMIN_PROMO_GROUPS_SUMMARY": "Groups total: {count}\nMembers total: {members}", - "ADMIN_PROMO_GROUP_DISCOUNTS_HEADER": "💸 Promo group discounts:", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_SERVERS": "• Servers: {percent}%", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_TRAFFIC": "• Traffic: {percent}%", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_DEVICES": "• Devices: {percent}%", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_ENABLED": "🧩 Add-on discounts: enabled", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_DISABLED": "🧩 Add-on discounts: disabled", - "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_ENABLE": "🧩 Enable add-on discounts", - "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_DISABLE": "🧩 Disable add-on discounts", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_ENABLED": "🧩 Add-on purchase discounts are enabled.", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_DISABLED": "🧩 Add-on purchase discounts are disabled.", - "ADMIN_PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Period discounts:", - "ADMIN_PROMO_GROUPS_DEFAULT_LABEL": " (default)", - "ADMIN_PROMO_GROUPS_MEMBERS_COUNT": "Members: {count}", - "ADMIN_PROMO_GROUPS_EMPTY": "No promo groups found.", - "CREATE_TICKET_BUTTON": "🎫 Create ticket", - "MY_TICKETS_BUTTON": "📋 My tickets", - "CONTACT_SUPPORT_BUTTON": "💬 Contact support", - "SUPPORT_BUTTON": "🆘 Support", - "TICKET_PRIORITY_SELECT": "Select ticket priority:", - "TICKET_PRIORITY_LOW": "🟢 Low", - "TICKET_PRIORITY_NORMAL": "🟡 Normal", - "TICKET_PRIORITY_HIGH": "🟠 High", - "TICKET_PRIORITY_URGENT": "🔴 Urgent", - "CANCEL_TICKET_CREATION": "❌ Cancel ticket creation", - "TICKET_TITLE_INPUT": "Enter ticket title:", - "TICKET_TITLE_TOO_SHORT": "Title must contain at least 5 characters. Try again:", - "TICKET_TITLE_TOO_LONG": "Title is too long. Maximum 255 characters. Try again:", - "TICKET_MESSAGE_INPUT": "Now describe your problem or question:", - "TICKET_MESSAGE_TOO_SHORT": "Message must contain at least 10 characters. Try again:", - "TICKET_CREATED_SUCCESS": "✅ Ticket #{ticket_id} created successfully!\n\nTitle: {title}\n\nWe will respond to you soon.", - "VIEW_TICKET": "👁️ View ticket", - "BACK_TO_MENU": "🏠 Back to menu", - "TICKET_CREATION_ERROR": "❌ An error occurred while creating the ticket. Please try again later.", - "NO_TICKETS": "You don't have any tickets yet.", - "MY_TICKETS_TITLE": "📋 Your tickets:", - "TICKET_STATUS_OPEN": "Open", - "TICKET_STATUS_ANSWERED": "Answered", - "TICKET_STATUS_CLOSED": "Closed", - "TICKET_STATUS_PENDING": "Pending", - "REPLY_TO_TICKET": "💬 Reply", - "CLOSE_TICKET": "🔒 Close ticket", - "CANCEL_REPLY": "❌ Cancel reply", - "TICKET_REPLY_INPUT": "Enter your reply:", - "TICKET_REPLY_TOO_SHORT": "Reply must contain at least 5 characters. Try again:", - "TICKET_REPLY_SENT": "✅ Your reply has been sent!", - "TICKET_REPLY_ERROR": "❌ An error occurred while sending the reply. Please try again later.", - "TICKET_CLOSED": "✅ Ticket closed.", - "TICKET_CLOSE_ERROR": "❌ Error closing ticket.", - "TICKET_NOT_FOUND": "Ticket not found.", - "TICKET_CREATION_CANCELLED": "Ticket creation cancelled.", - "BACK_TO_SUPPORT": "⬅️ Back to support", - "TICKET_REPLY_CANCELLED": "Reply cancelled.", - "BACK_TO_TICKETS": "⬅️ Back to tickets", - "NO_TICKETS_ADMIN": "No tickets to display.", - "ADMIN_TICKETS_TITLE": "🎫 All support tickets:", - "ADMIN_TICKET_REPLY_INPUT": "Enter support reply:", - "ADMIN_TICKET_REPLY_SENT": "✅ Reply sent!", - "TICKET_MARKED_ANSWERED": "✅ Ticket marked as answered.", - "TICKET_UPDATE_ERROR": "❌ Error updating ticket.", - "MARK_AS_ANSWERED": "✅ Mark as answered", - "TICKET_REPLY_NOTIFICATION": "🎫 Reply received for ticket #{ticket_id}\n\n{reply_preview}\n\nClick the button below to go to the ticket:", - "CLOSE_NOTIFICATION": "❌ Close notification", - "REPORT_CLOSE": "❌ Close", - "REPORT_CLOSED": "✅ Report closed.", - "REPORT_CLOSE_ERROR": "❌ Failed to close the report.", - "NOTIFICATION_CLOSED": "Notification closed.", - "UNBLOCK": "✅ Unblock", - "BLOCK_FOREVER": "🚫 Block permanently", - "BLOCK_BY_TIME": "⏳ Temporary block", - "ENTER_BLOCK_MINUTES": "Enter the number of minutes to block the user (e.g., 15):", - "TICKET_ATTACHMENTS": "📎 Attachments", - "OPEN_TICKETS": "🔴 Open", - "CLOSED_TICKETS": "🟢 Closed", - "OPEN_TICKETS_HEADER": "🔴 Open tickets", - "CLOSED_TICKETS_HEADER": "🟢 Closed tickets", - "SENDING_ATTACHMENTS": "📎 Sending attachments...", - "NO_ATTACHMENTS": "No attachments.", - "ATTACHMENTS_SENT": "✅ Attachments sent.", - "DELETE_MESSAGE": "🗑 Delete", - "ADMIN_USER_PROMO_GROUP_BUTTON": "👥 Promo group", - "ADMIN_USER_PROMO_GROUP_TITLE": "👥 User promo group", - "ADMIN_USER_PROMO_GROUP_CURRENT": "Current group: {name}", - "ADMIN_USER_PROMO_GROUP_CURRENT_NONE": "Current group: not assigned", - "ADMIN_USER_PROMO_GROUP_DISCOUNTS": "Discounts — servers: {servers}%, traffic: {traffic}%, devices: {devices}%", - "ADMIN_USER_PROMO_GROUP_DISCOUNTS_NONE": "No discounts configured.", - "ADMIN_USER_PROMO_GROUP_SELECT": "Select a promo group to assign:", - "ADMIN_USER_PROMO_GROUP_UPDATED": "✅ User promo group updated: “{name}”", - "ADMIN_USER_PROMO_GROUP_ALREADY": "ℹ️ The user is already in this promo group.", - "ADMIN_USER_PROMO_GROUP_ERROR": "❌ Failed to update the user's promo group.", - "ADMIN_USER_PROMO_GROUP_BACK": "⬅️ Back to user", - "ADMIN_PROMO_GROUP_DETAILS_TITLE": "💳 Promo group: {name}", - "ADMIN_PROMO_GROUP_DETAILS_MEMBERS": "Members: {count}", - "ADMIN_PROMO_GROUP_DETAILS_DEFAULT": "This is the default group.", - "ADMIN_PROMO_GROUP_MEMBERS_BUTTON": "👥 Members", - "ADMIN_PROMO_GROUP_EDIT_BUTTON": "✏️ Edit", - "ADMIN_PROMO_GROUP_DELETE_BUTTON": "🗑️ Delete", - "ADMIN_PROMO_GROUP_CREATE_NAME_PROMPT": "Enter a name for the new promo group:", - "ADMIN_PROMO_GROUP_INVALID_NAME": "Name cannot be empty.", - "ADMIN_PROMO_GROUP_CREATE_TRAFFIC_PROMPT": "Enter traffic discount (0-100):", - "ADMIN_PROMO_GROUP_CREATE_SERVERS_PROMPT": "Enter server discount (0-100):", - "ADMIN_PROMO_GROUP_CREATE_DEVICES_PROMPT": "Enter device discount (0-100):", - "ADMIN_PROMO_GROUP_CREATE_PERIOD_PROMPT": "Enter subscription period discounts (e.g. 30:10, 90:15). Send 0 if none.", - "ADMIN_PROMO_GROUP_INVALID_PERCENT": "Enter a number from 0 to 100.", - "ADMIN_PROMO_GROUP_INVALID_PERIOD_DISCOUNTS": "Enter period:discount pairs separated by commas, e.g. 30:10, 90:15, or 0.", - "ADMIN_PROMO_GROUP_CREATED": "Promo group “{name}” created.", - "ADMIN_PROMO_GROUP_CREATED_BACK_BUTTON": "↩️ Back to promo groups", - "ADMIN_PROMO_GROUP_EDIT_NAME_PROMPT": "Enter a new name (current: {name}):", - "ADMIN_PROMO_GROUP_EDIT_TRAFFIC_PROMPT": "Enter new traffic discount (0-100). Current value: {current}.", - "ADMIN_PROMO_GROUP_EDIT_SERVERS_PROMPT": "Enter new server discount (0-100). Current value: {current}.", - "ADMIN_PROMO_GROUP_EDIT_DEVICES_PROMPT": "Enter new device discount (0-100). Current value: {current}.", - "ADMIN_PROMO_GROUP_EDIT_PERIOD_PROMPT": "Enter new period discounts (current: {current}). Send 0 if none.", - "ADMIN_PROMO_GROUP_UPDATED": "Promo group “{name}” updated.", - "ADMIN_PROMO_GROUP_AUTO_ASSIGN_DISABLED": "Auto assignment by total spending: disabled", - "ADMIN_PROMO_GROUP_AUTO_ASSIGN_LINE": "Auto assignment by total spending from {amount} ₽", - "ADMIN_PROMO_GROUP_EDIT_MENU_TITLE": "✏️ Promo group settings “{name}”", - "ADMIN_PROMO_GROUP_EDIT_MENU_HINT": "Select a parameter to change:", - "ADMIN_PROMO_GROUP_EDIT_FIELD_NAME": "✏️ Rename", - "ADMIN_PROMO_GROUP_EDIT_FIELD_TRAFFIC": "🌐 Traffic discount", - "ADMIN_PROMO_GROUP_EDIT_FIELD_SERVERS": "🖥 Server discount", - "ADMIN_PROMO_GROUP_EDIT_FIELD_DEVICES": "📱 Device discount", - "ADMIN_PROMO_GROUP_EDIT_FIELD_PERIODS": "⏳ Period discounts", - "ADMIN_PROMO_GROUP_EDIT_FIELD_AUTO_ASSIGN": "🤖 Auto assignment by spending", - "ADMIN_PROMO_GROUP_CREATE_AUTO_ASSIGN_PROMPT": "Enter total spending (in ₽) required for automatic assignment. Send 0 to disable.", - "ADMIN_PROMO_GROUP_INVALID_AUTO_ASSIGN": "Enter a non-negative amount in rubles or 0 to disable.", - "ADMIN_PROMO_GROUP_EDIT_AUTO_ASSIGN_PROMPT": "Enter total spending (in ₽) for auto assignment. Current value: {current}.", - "ADMIN_PROMO_GROUP_MEMBERS_TITLE": "👥 Members of {name}", - "ADMIN_PROMO_GROUP_MEMBERS_EMPTY": "This group has no members yet.", - "ADMIN_PROMO_GROUP_DELETE_FORBIDDEN": "The default promo group cannot be deleted.", - "ADMIN_PROMO_GROUP_DELETE_CONFIRM": "Delete promo group “{name}”? All users will be moved to the default group.", - "ADMIN_PROMO_GROUP_DELETED": "Promo group “{name}” deleted.", - "ADMIN_SUBSCRIPTIONS": "📱 Subscriptions", - "ADMIN_USERS": "👥 Users", - "AUTOPAY_DISABLED_TEXT": "Disabled — don't forget to renew manually!", - "AUTOPAY_ENABLED_TEXT": "Enabled — the subscription will renew automatically", - "AUTOPAY_FAILED": "\n❌ Autopay failed\n\nWe couldn't charge the renewal payment.\nBalance available: {balance}\nRequired: {required}\n\nPlease top up your balance and renew manually.\n", - "AUTOPAY_SUCCESS": "\n✅ Autopay completed\n\nYour subscription was automatically renewed for {days} days.\nCharged from balance: {amount}\n", - "BALANCE_BUTTON": "💰 Balance: {balance}", - "BALANCE_BUTTON_ZERO": "💰 Balance: 0 ₽", - "BALANCE_HISTORY": "📊 Transaction history", - "BALANCE_INFO": "\n💰 Balance: {balance}\n\nChoose an action:\n", - "BALANCE_SUPPORT_REQUEST": "🛠️ Request via support", - "BALANCE_TOP_UP": "💳 Top up", - "BALANCE_TOPUP": "💳 Top up balance", - "BALANCE_TOPUP_CART_REMINDER_DETAILED": "\\n💡 Balance top-up required\\n\\nYour cart contains items totaling {total_amount}, but your current balance is insufficient.\\n\\n💳 Top up your balance to complete the purchase.\\n\\nChoose a top-up method:", - "CAMPAIGN_EXISTING_USER": "ℹ️ This promo link is available only to new users.", - "CAMPAIGN_BONUS_BALANCE": "🎉 You received {amount} for registering via the \"{name}\" campaign!", - "CAMPAIGN_BONUS_SUBSCRIPTION": "🎉 You’ve been granted a {days}-day subscription (traffic: {traffic}, devices: {devices}) from the \"{name}\" campaign!", - "BUY_SUBSCRIPTION_START": "\n💎 Subscription setup\n\nLet's configure a plan that fits you.\n\nFirst, choose the subscription period:\n", - "PROMO_GROUP_DISCOUNTS_HEADER": "🎁 Your promo group discounts", - "PROMO_GROUP_DISCOUNT_SERVERS": "🌍 Servers: {percent}%", - "PROMO_GROUP_DISCOUNT_TRAFFIC": "📊 Traffic: {percent}%", - "PROMO_GROUP_DISCOUNT_DEVICES": "📱 Extra devices: {percent}%", - "PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Long-term period discounts:", - "PROMO_GROUP_PERIOD_DISCOUNT_ITEM": "{period} — {percent}%", - "CHANGE_DEVICES_CONFIRM": "\n📱 Confirm change\n\nCurrent amount: {current_devices} devices\nNew amount: {new_devices} devices\n\nAction: {action}\n💰 {cost}\n\nApply this change?\n", - "CHANGE_DEVICES_INFO": "\n📱 Adjust device limit\n\nCurrent limit: {current_devices} devices\n\nChoose the new number of devices:\n\n💡 Important:\n• Increasing — extra charge proportional to the remaining time\n• Decreasing — funds are not refunded\n", - "CHANGE_DEVICES_SUCCESS_DECREASE": "\n✅ Device limit decreased!\n\n📱 Was: {old_count} → Now: {new_count}\nℹ️ Payments are not refunded\n", - "CHANGE_DEVICES_SUCCESS_INCREASE": "\n✅ Device limit increased!\n\n📱 Was: {old_count} → Now: {new_count}\n💰 Charged: {amount}\n", - "CHANGE_DEVICES_TITLE": "📱 Change device limit", - "CONTACT_SUPPORT": "💬 Contact support", - "CREATE_INVITE": "📝 Create invite", - "DEVICES_INSUFFICIENT_BALANCE": "⚠️ Insufficient balance!\nRequired: {required} (for {months} mo)\nYou have: {balance}", - "DEVICES_LIMIT_EXCEEDED": "⚠️ Maximum device limit exceeded ({limit})", - "DEVICES_MINIMUM_LIMIT": "⚠️ Minimum number of devices: {limit}", - "DEVICES_NO_CHANGE": "ℹ️ Device limit was not changed", - "INVALID_AMOUNT": "❌ Invalid amount", - "MAINTENANCE_MODE_ACTIVE": "\n🔧 Maintenance in progress!\n\nThe service is temporarily unavailable while we improve performance.\n\n⏰ Estimated completion time: unknown\n🔄 Please try again later\n\nWe apologize for the inconvenience.\n", - "MAINTENANCE_MODE_API_ERROR": "\n🔧 Maintenance in progress!\n\nThe service is temporarily unavailable due to connection issues with the servers.\n\n⏰ We're working on it. Please try again in a few minutes.\n\n🔄 Last check: {last_check}\n", - "MENU_ADMIN": "⚙️ Admin panel", - "MENU_BUY_SUBSCRIPTION": "💎 Buy subscription", - "MENU_EXTEND_SUBSCRIPTION": "⏰ Extend subscription", - "MENU_INFO": "ℹ️ Info", - "MENU_INFO_HEADER": "ℹ️ Info", - "MENU_INFO_PROMPT": "Choose a section:", - "MENU_PROMO_GROUPS_INFO": "🎯 Promo groups", - "PROMO_GROUPS_INFO_HEADER": "🎯 Promo groups", - "PROMO_GROUPS_INFO_TOTAL_SPENT": "💰 Spent in the bot: {amount}", - "PROMO_GROUPS_INFO_CURRENT_LEVEL": "🏆 Current level: {name}", - "PROMO_GROUPS_INFO_NO_LEVEL": "🏆 Current level: not unlocked yet", - "PROMO_GROUPS_INFO_NEXT_LEVEL": "📈 Until level “{name}”: spend {amount} more", - "PROMO_GROUPS_INFO_MAX_LEVEL": "🏆 You already have the highest discount level!", - "PROMO_GROUPS_INFO_LEVELS_HEADER": "📋 Auto-assigned levels:", - "PROMO_GROUPS_INFO_LEVEL_LINE": "{status} {name} — from {amount}", - "PROMO_GROUPS_INFO_EMPTY": "Auto-assigned promo groups are not configured yet.", - "MENU_FAQ": "❓ FAQ", - "FAQ_HEADER": "❓ FAQ", - "FAQ_PAGES_PROMPT": "Select a topic:", - "FAQ_NOT_AVAILABLE": "FAQ is temporarily unavailable.", - "FAQ_PAGE_UNTITLED": "Untitled", - "FAQ_PAGE_NOT_AVAILABLE": "This FAQ page is not available.", - "FAQ_PAGE_EMPTY": "Content for this page has not been added yet.", - "FAQ_PAGE_TITLE": "{title}", - "FAQ_PAGE_FOOTER": "Page {current} of {total}", - "FAQ_BACK_TO_LIST": "⬅️ Back to FAQ list", - "MENU_PRIVACY_POLICY": "🛡️ Privacy policy", - "PRIVACY_POLICY_HEADER": "🛡️ Privacy policy", - "PRIVACY_POLICY_NOT_AVAILABLE": "The privacy policy is temporarily unavailable.", - "PRIVACY_POLICY_EMPTY_ALERT": "The privacy policy text has not been provided yet.", - "PRIVACY_POLICY_PAGE_INFO": "Page {current} of {total}", - "MENU_PROMOCODE": "🎫 Promo code", - "MENU_REFERRALS": "🤝 Referral program", - "MENU_RULES": "📋 Service rules", - "MENU_SUPPORT": "🛠️ Support", - "OPERATION_CANCELLED": "❌ Operation cancelled", - "PERIOD_14_DAYS": "📅 14 days - {settings.format_price(settings.PRICE_14_DAYS)}", - "PERIOD_30_DAYS": "📅 30 days - {settings.format_price(settings.PRICE_30_DAYS)}", - "PERIOD_60_DAYS": "📅 60 days - {settings.format_price(settings.PRICE_60_DAYS)}", - "PERIOD_90_DAYS": "📅 90 days - {settings.format_price(settings.PRICE_90_DAYS)}", - "PERIOD_180_DAYS": "📅 180 days - {settings.format_price(settings.PRICE_180_DAYS)}", - "PERIOD_360_DAYS": "📅 360 days - {settings.format_price(settings.PRICE_360_DAYS)}", - "PROMOCODE_ENTER": "🎫 Enter promo code", - "PROMOCODE_EXPIRED": "❌ Promo code has expired", - "PROMOCODE_INVALID": "❌ Invalid promo code", - "PROMOCODE_SUCCESS": "🎉 Promo code applied!", - "PROMOCODE_USED": "ℹ️ Promo code has already been used", - "REFERRAL_CODE_APPLIED": "🎁 Referral code applied! You will receive a bonus after the first purchase.", - "REFERRAL_INFO": "\n🤝 Referral program\n\n👥 Invited: {referrals_count} friends\n💰 Earned: {earned_amount}\n\n🔗 Your referral link:\n{referral_link}\n\n🎫 Your promo code:\n{referral_code}\n\n💰 Terms:\n• Per friend: {registration_bonus}\n• Top-up commission: {commission_percent}%\n", - "REFERRAL_INVITE_MESSAGE": "\n🎯 Invitation to the VPN service\n\nHi! I invite you to an excellent VPN service!\n\n🎁 Use my link to get a bonus: {bonus}\n\n🔗 Join: {link}\n🎫 Or use promo code: {code}\n\n💪 Fast, reliable, affordable!\n", - "RULES_ACCEPT": "✅ I accept the rules", - "RULES_DECLINE": "❌ I do not accept", - "RULES_REQUIRED": "❗️ You must accept the rules to use the service!", - "SELECT_COUNTRIES": "Select countries:", - "SELECT_DEVICES": "Number of devices:", - "SELECT_PERIOD": "Choose period:", - "SELECT_TRAFFIC": "Choose traffic package:", - "SUBSCRIPTION_EXPIRED": "\n❌ Subscription expired\n\nYour subscription has ended. Renew it to restore access.\n", - "SUBSCRIPTION_EXPIRING": "\n⚠️ Subscription expiring!\n\nYour subscription expires in {days} days.\n\nRenew it now so you don't lose access.\n", - "SUBSCRIPTION_EXPIRING_PAID": "\n⚠️ Subscription expires in {days_text}!\n\nYour paid subscription ends on {end_date}.\n\n💳 Autopay: {autopay_status}\n\n{action_text}\n", - "SUBSCRIPTION_INFO": "\n📱 Subscription details\n\n📊 Status: {status}\n🎭 Type: {type}\n📅 Valid until: {end_date}\n⏰ Days left: {days_left}\n\n📈 Traffic: {traffic_used} / {traffic_limit}\n🌍 Servers: {countries_count} countries\n📱 Devices: {devices_used} / {devices_limit}\n\n💳 Autopay: {autopay_status}\n", - "SUBSCRIPTION_NONE": "❌ No active subscription", - "SUBSCRIPTION_NOT_FOUND": "❌ Subscription not found", - "SUBSCRIPTION_PURCHASED": "🎉 Subscription purchased successfully!", - "MINIAPP_PURCHASE_DISCOUNT_PERIOD": "Period discount: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_DISCOUNT_TRAFFIC": "Traffic discount: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_DISCOUNT_SERVERS": "Servers discount: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_DISCOUNT_DEVICES": "Devices discount: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_DISCOUNT_PROMO": "Promo offer: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_BREAKDOWN_DISCOUNT_NOTE": "Discount: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_BREAKDOWN_BASE": "Base plan", - "MINIAPP_PURCHASE_BREAKDOWN_TRAFFIC": "Traffic", - "MINIAPP_PURCHASE_BREAKDOWN_SERVERS": "Servers", - "MINIAPP_PURCHASE_BREAKDOWN_DEVICES": "Devices", - "MINIAPP_PURCHASE_BREAKDOWN_PROMO": "Promo discount", - "MINIAPP_PURCHASE_SUMMARY_DISCOUNT": "You save {amount}", - "MINIAPP_PURCHASE_STATUS_INSUFFICIENT": "Not enough funds on balance", - "SUBSCRIPTION_SUMMARY": "\n📋 Final configuration\n\n📅 Period: {period} days\n📈 Traffic: {traffic}\n🌍 Countries: {countries}\n📱 Devices: {devices}\n\n💰 Total: {total_price}\n\nConfirm the purchase?\n", - "SUBSCRIPTION_TRIAL": "🧪 Trial subscription", - "SUPPORT_INFO": "\n🛠️ Technical support\n\nFor any questions contact our support:\n\n👤 {settings.SUPPORT_USERNAME}\n\nWe can help with:\n• Connection setup\n• Troubleshooting issues\n• Payment questions\n• Other requests\n\n⏰ Response time: usually within 1-2 hours\n", - "SWITCH_TRAFFIC_CONFIRM": "\n🔄 Confirm traffic change\n\nCurrent limit: {current_traffic}\nNew limit: {new_traffic}\n\nAction: {action}\n💰 {cost}\n\nApply this change?\n", - "SWITCH_TRAFFIC_INFO": "\n🔄 Switch traffic limit\n\nCurrent limit: {current_traffic}\nChoose the new traffic amount:\n\n💡 Important:\n• Increasing — you pay the difference proportionally to the remaining time\n• Decreasing — payments are not refunded\n• The used traffic counter is NOT reset\n", - "SWITCH_TRAFFIC_SUCCESS_DECREASE": "\n✅ Traffic limit decreased!\n\n📊 Was: {old_traffic} → Now: {new_traffic}\nℹ️ Payments are not refunded\n", - "SWITCH_TRAFFIC_SUCCESS_INCREASE": "\n✅ Traffic limit increased!\n\n📊 Was: {old_traffic} → Now: {new_traffic}\n💰 Charged: {amount}\n", - "SWITCH_TRAFFIC_TITLE": "🔄 Switch traffic limit", - "TOP_UP_AMOUNT": "💳 Enter top-up amount (in rubles):", - "TOP_UP_METHODS": "\n💳 Select a payment method\n\nAmount: {amount}\n", - "TOP_UP_STARS": "⭐ Telegram Stars", - "TOP_UP_TRIBUTE": "💎 Bank card", - "TRAFFIC_5GB": "📊 5 GB - {settings.format_price(settings.PRICE_TRAFFIC_5GB)}", - "TRAFFIC_10GB": "📊 10 GB - {settings.format_price(settings.PRICE_TRAFFIC_10GB)}", - "TRAFFIC_25GB": "📊 25 GB - {settings.format_price(settings.PRICE_TRAFFIC_25GB)}", - "TRAFFIC_50GB": "📊 50 GB - {settings.format_price(settings.PRICE_TRAFFIC_50GB)}", - "TRAFFIC_100GB": "📊 100 GB - {settings.format_price(settings.PRICE_TRAFFIC_100GB)}", - "TRAFFIC_250GB": "📊 250 GB - {settings.format_price(settings.PRICE_TRAFFIC_250GB)}", - "TRAFFIC_UNLIMITED": "📊 Unlimited - {settings.format_price(settings.PRICE_TRAFFIC_UNLIMITED)}", - "TRAFFIC_INSUFFICIENT_BALANCE": "⚠️ Insufficient balance!\nRequired: {required} (for {months} mo)\nYou have: {balance}", - "TRAFFIC_NO_CHANGE": "ℹ️ Traffic limit was not changed", - "TRIAL_ACTIVATED": "🎉 Trial subscription activated!", - "TRIAL_ALREADY_USED": "❌ The trial subscription has already been used", - "TRIAL_AVAILABLE": "\n🎁 Trial subscription\n\nYou can get a free trial plan:\n\n⏰ Duration: {days} days\n📈 Traffic: {traffic} GB\n📱 Devices: {devices} pcs\n🌍 Server: {server_name}\n\nActivate the trial subscription?\n", - "TRIAL_ENDING_SOON": "\n🎁 The trial subscription is ending soon!\n\nYour trial expires in a few hours.\n\n💎 Don't want to lose VPN access?\nSwitch to the full subscription!\n\n🔥 Special offer:\n• 30 days for {price}\n• Unlimited traffic\n• All servers available\n• Speeds up to 1 Gbit/s\n\n⚡️ Activate before the trial ends!\n", - "USER_NOT_FOUND": "❌ User not found", - "MENU_LANGUAGE": "🌐 Language", - "SUBSCRIPTION_STATUS_EXPIRED": "Expired", - "SUBSCRIPTION_STATUS_TRIAL": "Trial", - "SUBSCRIPTION_STATUS_ACTIVE": "Active", - "SUBSCRIPTION_STATUS_UNKNOWN": "Unknown", - "SUBSCRIPTION_TIME_LEFT_EXPIRED": "expired", - "SUBSCRIPTION_TIME_LEFT_DAYS": "{days} days", - "SUBSCRIPTION_TIME_LEFT_HOURS": "{hours} hr", - "SUBSCRIPTION_TIME_LEFT_MINUTES": "{minutes} min", - "SUBSCRIPTION_WARNING_TOMORROW": "\n⚠️ expires tomorrow!", - "SUBSCRIPTION_WARNING_TODAY": "\n⚠️ expires today!", - "SUBSCRIPTION_WARNING_MINUTES": "\n🔴 expires in a few minutes!", - "SUBSCRIPTION_TYPE_TRIAL": "Trial", - "SUBSCRIPTION_TYPE_PAID": "Paid", - "SUBSCRIPTION_TRAFFIC_UNLIMITED": "∞ (unlimited) | Used: {used} GB", - "SUBSCRIPTION_TRAFFIC_LIMITED": "{used} / {limit} GB", - "SUBSCRIPTION_NO_SERVERS": "No servers", - "SUBSCRIPTION_OVERVIEW_TEMPLATE": "👤 {full_name}\n💰 Balance: {balance}\n📱 Subscription: {status_emoji} {status_display}{warning}\n\n📱 Subscription details\n🎭 Type: {subscription_type}\n📅 Valid until: {end_date}\n⏰ Time left: {time_left}\n📈 Traffic: {traffic}\n🌍 Servers: {servers}\n📱 Devices: {devices_used} / {device_limit}", - "SUBSCRIPTION_CONNECTED_DEVICES_TITLE": "
📱 Connected devices:\n", - "SUBSCRIPTION_CONNECTED_DEVICES_FOOTER": "
", - "SUBSCRIPTION_CONNECT_LINK_SECTION": "🔗 Connection link:\n{subscription_url}", - "SUBSCRIPTION_CONNECT_LINK_PROMPT": "📱 Copy the link and add it to your VPN app", - "SUBSCRIPTION_IMPORT_LINK_SECTION": "🔗 Your import link for the VPN app:\n{subscription_url}", - "SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT": "📱 Tap the button below to get setup instructions for your device", - "SUBSCRIPTION_HAPP_LINK_PROMPT": "🔒 Subscription link is ready. Tap the \"Connect\" button below to open it in Happ.", - "BACK_TO_MAIN_MENU_BUTTON": "⬅️ Back to main menu", - "CUSTOM_MINIAPP_URL_NOT_SET": "⚠ Custom mini-app link is not configured", - "SUBSCRIPTION_LINK_GENERATING_NOTICE": "{purchase_text}\n\nThe link is being generated, open the 'My subscription' section in a few seconds.", - "SUBSCRIPTION_NO_ACTIVE_LINK": "⚠ You don't have an active subscription or the link is still being generated", - "SUBSCRIPTION_CONNECT_MINIAPP_MESSAGE": "📱 Connect subscription\n\n🚀 Tap the button below to open the subscription in the Telegram mini app:", - "SUBSCRIPTION_CONNECT_CUSTOM_MESSAGE": "🚀 Connect subscription\n\n📱 Tap the button below to open the app:", - "SUBSCRIPTION_CONNECT_LINK_MESSAGE": "🚀 Connect subscription\n\n🔗 Tap the button below to open the subscription link:", - "SUBSCRIPTION_LINK_HIDDEN_NOTICE": "ℹ️ The subscription link is available via the buttons below or in the “My subscription” section.", - "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE": "📱 Connect subscription\n\n🔗 Subscription link:\n{subscription_url}\n\n💡 Choose your device to get detailed setup instructions:", - "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE_HIDDEN": "📱 Connect subscription\n\nℹ️ The subscription link is available via the buttons below or in the “My subscription” section.\n\n💡 Choose your device to get detailed setup instructions:", - "SUBSCRIPTION_LINK_UNAVAILABLE": "❌ Subscription link is unavailable", - "SUBSCRIPTION_DEVICE_APPS_NOT_FOUND": "❌ No apps found for this device", - "SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Setup for {device_name}", - "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Connect via Happ", - "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Open link in Happ", - "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 If the link doesn't open automatically, copy it manually:", - "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT": "▶️ Tap the \"Connect\" button below to open Happ and add the subscription automatically.", - "SUBSCRIPTION_HAPP_CRYPTOLINK_BLOCK": "
{crypto_link}
", - "SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Subscription link:", - "SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Recommended app: {app_name}", - "SUBSCRIPTION_DEVICE_OTHER_APPS": "📦 Other apps: {app_list}", - "SUBSCRIPTION_DEVICE_OTHER_APPS_HINT": "Tap the \"Other apps\" button below to choose another app.", - "SUBSCRIPTION_DEVICE_STEP_INSTALL_TITLE": "Step 1 - Install:", - "SUBSCRIPTION_DEVICE_STEP_ADD_TITLE": "Step 2 - Add subscription:", - "SUBSCRIPTION_DEVICE_STEP_CONNECT_TITLE": "Step 3 - Connect:", - "SUBSCRIPTION_DEVICE_HOW_TO_TITLE": "💡 How to connect:", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP1": "1. Install the app from the link above", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP2": "2. Tap the \"Connect\" button below", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP3": "3. Open the app and paste the link", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP4": "4. Connect to a server", - "SUBSCRIPTION_APPS_TITLE": "📱 Apps for {device_name}", - "SUBSCRIPTION_APPS_PROMPT": "Choose an app to connect:", - "SUBSCRIPTION_APP_NOT_FOUND": "❌ App not found", - "SUBSCRIPTION_SPECIFIC_APP_TITLE": "📱 {app_name} - {device_name}", - "SUBSCRIPTION_ADDITIONAL_STEP_TITLE": "{title}:", - "SUBSCRIPTION_LINK_USAGE_TITLE": "📱 How to use:", - "SUBSCRIPTION_LINK_STEP1": "1. Tap the link above to copy it", - "SUBSCRIPTION_LINK_STEP2": "2. Open your VPN app", - "SUBSCRIPTION_LINK_STEP3": "3. Find the 'Add subscription' or 'Import' option", - "SUBSCRIPTION_LINK_STEP4": "4. Paste the copied link", - "SUBSCRIPTION_LINK_HINT": "💡 If the link didn't copy, select it manually and copy.", - "REFERRAL_PROGRAM_TITLE": "👥 Referral program", - "REFERRAL_STATS_HEADER": "📊 Your statistics:", - "REFERRAL_STATS_INVITED": "• Invited users: {count}", - "REFERRAL_STATS_FIRST_TOPUPS": "• Made first top-up: {count}", - "REFERRAL_STATS_ACTIVE": "• Active referrals: {count}", - "REFERRAL_STATS_CONVERSION": "• Conversion: {rate}%", - "REFERRAL_STATS_TOTAL_EARNED": "• Earned in total: {amount}", - "REFERRAL_STATS_MONTH_EARNED": "• Earned last month: {amount}", - "REFERRAL_REWARDS_HEADER": "🎁 How rewards work:", - "REFERRAL_REWARD_NEW_USER": "• New user receives: {bonus} on the first top-up from {minimum}", - "REFERRAL_REWARD_INVITER": "• You receive on the referral's first top-up: {bonus}", - "REFERRAL_REWARD_COMMISSION": "• Commission from each referral top-up: {percent}%", - "REFERRAL_LINK_TITLE": "🔗 Your referral link:", - "REFERRAL_CODE_TITLE": "🆔 Your code: {code}", - "REFERRAL_RECENT_EARNINGS_HEADER": "💰 Latest rewards:", - "REFERRAL_EARNING_REASON_FIRST_TOPUP": "🎉 First top-up", - "REFERRAL_EARNING_REASON_COMMISSION_TOPUP": "💰 Top-up commission", - "REFERRAL_EARNING_REASON_COMMISSION_PURCHASE": "💰 Purchase commission", - "REFERRAL_RECENT_EARNINGS_ITEM": "• {reason}: {amount} from {referral_name}", - "REFERRAL_EARNINGS_BY_TYPE_HEADER": "📈 Earnings by type:", - "REFERRAL_EARNINGS_FIRST_TOPUPS": "• Bonuses for first top-ups: {count} ({amount})", - "REFERRAL_EARNINGS_TOPUPS": "• Top-up commissions: {count} ({amount})", - "REFERRAL_EARNINGS_PURCHASES": "• Purchase commissions: {count} ({amount})", - "REFERRAL_INVITE_FOOTER": "📢 Invite friends and earn!", - "REFERRAL_LINK_CAPTION": "🔗 Your referral link:\n{link}", - "REFERRAL_LIST_EMPTY": "📋 You have no referrals yet.\n\nShare your referral link to start earning!", - "REFERRAL_LIST_HEADER": "👥 Your referrals (page {current}/{total})", - "REFERRAL_LIST_ITEM_HEADER": "{index}. {status} {name}", - "REFERRAL_LIST_ITEM_TOPUPS": " {emoji} Top-ups: {count}", - "REFERRAL_LIST_ITEM_EARNED": " 💎 Earned from them: {amount}", - "REFERRAL_LIST_ITEM_REGISTERED": " 📅 Registered: {days} days ago", - "REFERRAL_LIST_ITEM_ACTIVITY": " 🕐 Activity: {days} days ago", - "REFERRAL_LIST_ITEM_ACTIVITY_LONG_AGO": " 🕐 Activity: long ago", - "REFERRAL_LIST_PREV_PAGE": "⬅️ Back", - "REFERRAL_LIST_NEXT_PAGE": "Next ➡️", - "REFERRAL_ANALYTICS_TITLE": "📊 Referral analytics", - "REFERRAL_ANALYTICS_EARNINGS_HEADER": "💰 Earnings by period:", - "REFERRAL_ANALYTICS_EARNINGS_TODAY": "• Today: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_WEEK": "• Week: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_MONTH": "• Month: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_QUARTER": "• Quarter: {amount}", - "REFERRAL_ANALYTICS_TOP_TITLE": "🏆 Top {count} referrals:", - "REFERRAL_ANALYTICS_TOP_ITEM": "{index}. {name}: {amount} ({count} rewards)", - "REFERRAL_ANALYTICS_FOOTER": "📈 Keep growing your referral network!", - "REFERRAL_INVITE_TITLE": "🎉 Join the VPN service!", - "REFERRAL_INVITE_BONUS": "💎 On your first top-up from {minimum} you get {bonus} as a bonus!", - "REFERRAL_INVITE_FEATURE_FAST": "🚀 Fast connection", - "REFERRAL_INVITE_FEATURE_SERVERS": "🌍 Servers worldwide", - "REFERRAL_INVITE_FEATURE_SECURE": "🔒 Reliable protection", - "REFERRAL_INVITE_LINK_PROMPT": "👇 Follow the link:", - "REFERRAL_SHARE_BUTTON": "📤 Share", - "REFERRAL_INVITE_CREATED_TITLE": "📝 Invitation created!", - "REFERRAL_INVITE_CREATED_INSTRUCTION": "Tap the “📤 Share” button to send the invite to any chat or copy the text below:", - "PAYMENT_METHODS_ONLY_SUPPORT": "💳 Balance top-up methods\n\n⚠️ Automated payment methods are temporarily unavailable.\nContact support to top up your balance.\n\nChoose a top-up method:", - "PAYMENT_METHODS_TITLE": "💳 Balance top-up methods", - "PAYMENT_METHODS_PROMPT": "Choose the payment method that suits you:", - "PAYMENT_METHODS_FOOTER": "Choose a top-up method:", - "PAYMENT_RETURN_HOME_BUTTON": "🏠 Main menu", - "PAYMENT_METHOD_STARS_NAME": "⭐ Telegram Stars", - "PAYMENT_METHOD_STARS_DESCRIPTION": "fast and convenient", - "PAYMENT_METHOD_YOOKASSA_NAME": "💳 Bank card", - "PAYMENT_METHOD_YOOKASSA_DESCRIPTION": "via YooKassa", - "PAYMENT_METHOD_YOOKASSA_SBP_NAME": "🏦 SBP (YooKassa)", - "PAYMENT_METHOD_YOOKASSA_SBP_DESCRIPTION": "via YooKassa Fast Payment System", - "PAYMENT_METHOD_TRIBUTE_NAME": "💳 Bank card", - "PAYMENT_METHOD_TRIBUTE_DESCRIPTION": "via Tribute", - "PAYMENT_METHOD_MULENPAY_NAME": "💳 Bank card (Mulen Pay)", - "PAYMENT_METHOD_MULENPAY_DESCRIPTION": "via Mulen Pay", - "PAYMENT_METHOD_WATA_NAME": "💳 Bank card (WATA)", - "PAYMENT_METHOD_WATA_DESCRIPTION": "via WATA", - "PAYMENT_METHOD_PAL24_NAME": "🏦 SBP (PayPalych)", - "PAYMENT_METHOD_PAL24_DESCRIPTION": "via Faster Payments System", - "PAYMENT_METHOD_CRYPTOBOT_NAME": "🪙 Cryptocurrency", - "PAYMENT_METHOD_CRYPTOBOT_DESCRIPTION": "via CryptoBot", - "PAYMENT_METHOD_SUPPORT_NAME": "🛠️ Support team", - "PAYMENT_METHOD_SUPPORT_DESCRIPTION": "other options", - "PAYMENT_METHODS_UNAVAILABLE_ALERT": "⚠️ Automated payment methods are temporarily unavailable. Contact support to top up your balance.", - "TRIAL_INACTIVE_1H": "⏳ An hour has passed and we haven't seen any traffic yet\n\nOpen the connection guide and follow the steps. We're always ready to help!", - "TRIAL_INACTIVE_24H": "⏳ A full day passed without activity\n\nWe still don't see traffic from your test subscription. Use the guide or message support and we'll help you connect!", - "SUBSCRIPTION_EXPIRED_1D": "⛔ Your subscription expired\n\nAccess was disabled on {end_date}. Renew to return to the service.\n\n💎 Renewal price: {price}", - "SUBSCRIPTION_EXPIRED_SECOND_WAVE": "🔥 {percent}% discount on renewal\n\nActivate the offer to get an additional discount. It stacks with your promo group and is valid until {expires_at}.", - "SUBSCRIPTION_EXPIRED_THIRD_WAVE": "🎁 Personal {percent}% discount\n\nIt's been {trigger_days} days without a subscription. Come back and activate the extra discount — it stacks with your promo group and is valid until {expires_at}.", - "DISCOUNT_CLAIM_SUCCESS": "🎉 Discount of {percent}% activated! It stacks with other discounts and will apply automatically to your next payment.", - "DISCOUNT_CLAIM_ALREADY": "ℹ️ This discount has already been activated.", - "DISCOUNT_CLAIM_EXPIRED": "⚠️ The offer has expired.", - "DISCOUNT_CLAIM_NOT_FOUND": "❌ Offer not found.", - "DISCOUNT_CLAIM_ERROR": "❌ Failed to activate the discount. Please try again later.", - "PROMO_OFFER_CLOSE": "❌ Close", - "TEST_ACCESS_NO_SUBSCRIPTION": "❌ You need an active subscription to use this offer.", - "TEST_ACCESS_NO_SQUADS": "❌ Unable to determine servers for the test access. Please contact support.", - "TEST_ACCESS_REMNAWAVE_ERROR": "❌ Failed to connect the servers. Please try again later or contact support.", - "TEST_ACCESS_UNKNOWN_ERROR": "❌ Failed to activate the offer. Please try again later.", - "TEST_ACCESS_ALREADY_CONNECTED": "ℹ️ This server is already connected to your subscription.", - "TEST_ACCESS_ACTIVATED_MESSAGE": "🎉 Test servers are connected! Access is active until {expires_at}.", - "TEST_ACCESS_ACTIVATED_POPUP": "✅ Access granted!", - "DISCOUNT_BONUS_DESCRIPTION": "Renewal discount bonus", - "SUBSCRIPTION_SUMMARY_PROMO_DISCOUNT": "- Promo offer: -{amount} ({percent}% extra)", - "SUBSCRIPTION_PROMO_DISCOUNT_NOTE": "⚡ Extra discount {percent}%: -{amount}", - "SUBSCRIPTION_PROMO_DISCOUNT_HINT": "⚡ Extra {percent}% discount is active and will apply automatically. It stacks with other discounts.", - "SUBSCRIPTION_PROMO_DISCOUNT_TIMER": "⏳ Discount active for {time_left}\n{bar}", - "NOTIFICATION_VALUE_INVALID": "❌ Invalid value, please enter a number.", - "NOTIFICATION_VALUE_UPDATED": "✅ Settings updated.", - "NOTIFY_PROMPT_SECOND_PERCENT": "Enter a new discount percentage for the 2-3 day reminder (0-100):", - "NOTIFY_PROMPT_SECOND_HOURS": "Enter the number of hours the discount is active (1-168):", - "NOTIFY_PROMPT_THIRD_PERCENT": "Enter a new discount percentage for the late offer (0-100):", - "NOTIFY_PROMPT_THIRD_HOURS": "Enter the number of hours the late discount is active (1-168):", - "NOTIFY_PROMPT_THIRD_DAYS": "After how many days without a subscription should we send the offer? (minimum 2):", - "ADMIN_MAIN_USERS_SUBSCRIPTIONS": "👥 Users / Subscriptions", - "ADMIN_MAIN_SERVERS": "🌐 Servers", - "ADMIN_MAIN_PRICING": "💰 Pricing", - "ADMIN_MAIN_PROMO_STATS": "💰 Promo codes / Stats", - "ADMIN_MAIN_SUPPORT": "🛟 Support", - "ADMIN_MAIN_MESSAGES": "📨 Messages", - "ADMIN_MAIN_SETTINGS": "⚙️ Settings", - "ADMIN_MAIN_SYSTEM": "🛠️ System", - "ADMIN_USERS_SUBMENU_TITLE": "👥 **User and subscription management**\n\n", - "ADMIN_PROMO_SUBMENU_TITLE": "💰 **Promo codes and statistics**\n\n", - "ADMIN_COMMUNICATIONS_SUBMENU_TITLE": "📨 **Communications**\n\n", - "ADMIN_COMMUNICATIONS_SUBMENU_DESCRIPTION": "Manage broadcasts and interface texts:", - "ADMIN_SUBMENU_SELECT_SECTION": "Choose a section:", - "ADMIN_COMMUNICATIONS_WELCOME_TEXT": "👋 Welcome message", - "ADMIN_COMMUNICATIONS_MENU_MESSAGES": "📢 Menu messages", - "ADMIN_COMMUNICATIONS_PROMO_OFFERS": "🎯 Promo offers", - "ADMIN_PROMO_OFFERS_TITLE": "🎯 Promo offers\n\nSelect a template to configure:", - "ADMIN_PROMO_OFFER_TEST_ACCESS": "Test servers", - "ADMIN_PROMO_OFFER_EXTEND": "Renewal discount", - "ADMIN_PROMO_OFFER_PURCHASE": "Purchase discount", - "ADMIN_PROMO_OFFER_TYPE": "Type: {label}", - "ADMIN_PROMO_OFFER_VALID": "Validity: {hours} h", - "ADMIN_PROMO_OFFER_DISCOUNT": "Extra discount: {percent}% (stacks with other discounts)", - "ADMIN_PROMO_OFFER_STACKABLE_NOTE": "The discount applies once and stacks with the promo group.", - "ADMIN_PROMO_OFFER_ACTIVE_DURATION": "After activation the discount lasts for {hours} h.", - "ADMIN_PROMO_OFFER_TEST_DURATION": "Access: {hours} h", - "ADMIN_PROMO_OFFER_TEST_SQUAD_NAME": "Server: {name}", - "ADMIN_PROMO_OFFER_TEST_SQUADS": "Squads: {squads}", - "ADMIN_PROMO_OFFER_TEST_SQUADS_EMPTY": "Squads: not specified", - "ADMIN_PROMO_OFFER_ALLOWED": "Available segments:", - "ADMIN_PROMO_OFFER_PREVIEW": "Preview:", - "ADMIN_PROMO_OFFER_PROMPT_MESSAGE": "Enter the new offer text:", - "ADMIN_PROMO_OFFER_PROMPT_BUTTON": "Enter the button label:", - "ADMIN_PROMO_OFFER_PROMPT_VALID": "Enter validity (hours):", - "ADMIN_PROMO_OFFER_PROMPT_DISCOUNT": "Enter discount percentage:", - "ADMIN_PROMO_OFFER_PROMPT_ACTIVE_DURATION": "Enter how long the activated discount should remain valid (hours):", - "ADMIN_PROMO_OFFER_PROMPT_DURATION": "Enter test access duration (hours):", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_TITLE": "🌍 Select a squad", - "ADMIN_PROMO_OFFER_SELECTED_SQUAD": "Current squad: {name}", - "ADMIN_PROMO_OFFER_SELECTED_SQUAD_UUID": "Current squad: {uuid}", - "ADMIN_PROMO_OFFER_SELECTED_SQUAD_EMPTY": "Current squad: not selected", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_HINT": "Pick a server to grant temporary access from the list below.", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_PAGE": "Page {page}/{total}", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_CLEAR": "🗑 Clear", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_BACK": "↩️ Back", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_UPDATED": "✅ Squad updated", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_CLEARED": "✅ Squad cleared", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_NOT_FOUND": "❌ Server not found", - "ADMIN_PROMO_OFFER_NO_SQUADS_AVAILABLE": "❌ No servers available.", - "ADMIN_PROMO_OFFER_SENDING": "Starting broadcast...", - "ADMIN_PROMO_OFFER_NO_USERS": "No matching users found.", - "ADMIN_PROMO_OFFER_RESULT": "📬 Broadcast finished\nSent: {sent}\nFailed: {failed}", - "ADMIN_PROMO_OFFER_SKIPPED": "Skipped: {skipped} (already have access)", - "ADMIN_PROMO_OFFER_CTA_BUY": "Buy subscription", - "ADMIN_PROMO_OFFER_CTA_EXTEND": "Extend subscription", - "ADMIN_PROMO_OFFER_BACK_TO_TEMPLATE": "↩️ Back to offer", - "ADMIN_PROMO_OFFER_BACK_TO_LIST": "⬅️ Back to promo offers", - "ADMIN_PROMO_OFFER_LOGS": "📜 Activity log", - "ADMIN_PROMO_OFFER_LOGS_TITLE": "📜 Promo offer activity log", - "ADMIN_PROMO_OFFER_LOGS_PAGINATION": "Page {page}/{total}", - "ADMIN_PROMO_OFFER_LOGS_EMPTY_BODY": "No activity yet.", - "ADMIN_PROMO_OFFER_LOGS_UNKNOWN_USER": "Unknown user", - "ADMIN_PROMO_OFFER_LOGS_USER": "👤 {user}", - "ADMIN_PROMO_OFFER_LOGS_PERCENT": "📉 Discount: {percent}%", - "ADMIN_PROMO_OFFER_LOGS_EFFECT_TEST": "🧪 Test access", - "ADMIN_PROMO_OFFER_LOGS_EFFECT_DISCOUNT": "💸 Discount", - "ADMIN_PROMO_OFFER_LOGS_SOURCE": "🏷 Source: {source}", - "ADMIN_PROMO_OFFER_LOGS_REASON_GENERIC": "ℹ️ Action: {reason}", - "ADMIN_PROMO_OFFER_LOGS_REASON_MANUAL": "💳 Applied during manual payment", - "ADMIN_PROMO_OFFER_LOGS_REASON_AUTOPAY": "🤖 Used in autopay renewal", - "ADMIN_PROMO_OFFER_LOGS_REASON_EXPIRED": "⏳ Offer expired", - "ADMIN_PROMO_OFFER_LOGS_REASON_TEST_EXPIRED": "⏳ Test access removed", - "ADMIN_PROMO_OFFER_LOGS_DESCRIPTION": "📝 {description}", - "ADMIN_PROMO_OFFER_LOGS_AMOUNT": "💰 Amount: {amount}", - "ADMIN_PROMO_OFFER_LOGS_SQUAD": "🌍 Squad: {squad}", - "ADMIN_PROMO_OFFER_LOGS_NEW_SQUADS": "🌍 New squads: {squads}", - "ADMIN_PROMO_OFFER_LOGS_ACTION_CLAIMED": "Claimed", - "ADMIN_PROMO_OFFER_LOGS_ACTION_CONSUMED": "Used", - "ADMIN_PROMO_OFFER_LOGS_ACTION_DISABLED": "Disabled", - "ADMIN_PROMO_OFFER_SEND_USER": "👤 Send to user", - "ADMIN_PROMO_OFFER_SEND_USER_TITLE": "👤 Send to a user", - "ADMIN_PROMO_OFFER_SEND_USER_HINT": "Select a user to deliver the promo offer.", - "ADMIN_PROMO_OFFER_SEND_USER_SEARCH": "🔍 Search", - "ADMIN_PROMO_OFFER_SEND_USER_SEARCH_PROMPT": "Enter name, username or user ID to search:", - "ADMIN_PROMO_OFFER_SEND_USER_SEARCH_QUERY": "🔍 Search: {query}", - "ADMIN_PROMO_OFFER_SEND_USER_RESET": "❌ Clear search", - "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_SEGMENTS": "↩️ Back to segment selection", - "ADMIN_PROMO_OFFER_SEND_USER_EMPTY": "No matching users found. Adjust your query.", - "ADMIN_PROMO_OFFER_SEND_USER_PROFILE": "👤 {name}", - "ADMIN_PROMO_OFFER_SEND_USER_TELEGRAM": "🆔 {telegram_id}", - "ADMIN_PROMO_OFFER_SEND_USER_USERNAME": "🔗 @{username}", - "ADMIN_PROMO_OFFER_SEND_USER_STATUS": "Status: {status}", - "ADMIN_PROMO_OFFER_SEND_USER_BALANCE": "Balance: {amount}", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION": "💳 Subscription", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_STATUS": "Status: {status}", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_END": "Expires: {date}", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_END_UNKNOWN": "not specified", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_TRAFFIC": "Traffic: {used}/{limit} GB", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_SQUADS": "Connected squads: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_NO_SUBSCRIPTION": "💳 No active subscription", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT": "💸 Active discount: {percent}%", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_UNTIL": " (until {date})", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_LEFT": " (until {date}, {time} left)", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_SOURCE": " — source: {source}", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_NONE": "💸 No active discount", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_HEADER": "📨 Selected offer", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_TYPE": "Type: {label}", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_VALID": "Valid for: {hours} h", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_TEST_DURATION": "Test access: {hours} h", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_DISCOUNT": "Discount: {percent}%", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_ACTIVE_DURATION": "Active after claim for {hours} h", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_OFFERS": "📨 Active offers:", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TEST": "Test access", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_PERCENT": "{percent}%", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_BONUS": "+{bonus}%", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_NO_EXPIRY": "no expiry", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ITEM": "• {description} (until {expires})", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ITEM_HEADER": "• {description}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_EXPIRES": " Expires: {expires}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS": " Status: {status}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS_ACCEPTED": "✅ Claimed", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS_PENDING": "⏳ Not claimed", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TIME_LEFT": " Time left: {time}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TIME_LEFT_EXPIRED": "expired", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ACTIVE_DURATION": " After claim: {duration}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TOTAL_DURATION": " Total validity: {duration}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_HEADER": "📊 Offer stats", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_TOTAL": "Total sent: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_ACCEPTED": "Claimed: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_PENDING": "Not claimed: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_ACTIVE": "Active now: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_TEST_ACCESS": "🧪 Active test accesses:", - "ADMIN_PROMO_OFFER_SEND_USER_TEST_ACCESS_ITEM": "• {squad} (until {expires})", - "ADMIN_PROMO_OFFER_SEND_USER_NO_ACTIVE_OFFERS": "📨 No active offers", - "ADMIN_PROMO_OFFER_SEND_USER_SEND_BUTTON": "📬 Send offer", - "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_LIST": "⬅️ Back to users", - "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_PROFILE": "👤 Back to profile", - "ADMIN_PROMO_OFFER_SEND_USER_SUMMARY_TITLE": "📬 Sent to {name}", - "ADMIN_PROMO_OFFER_SEND_USER_SKIPPED": "Skipped: {skipped} (already has access)", - "ADMIN_PROMO_OFFER_SEND_USER_EMPTY_RESULT": "Delivery not performed", - "ADMIN_SUPPORT_TICKETS": "🎫 Support tickets", - "ADMIN_SUPPORT_AUDIT": "🧾 Moderator audit", - "ADMIN_SUPPORT_SETTINGS": "🛟 Support settings", - "ADMIN_SUPPORT_SETTINGS_STATUS_ENABLED": "Enabled", - "ADMIN_SUPPORT_SETTINGS_STATUS_DISABLED": "Disabled", - "ADMIN_SUPPORT_SETTINGS_MENU_LABEL": "\"Support\" menu item", - "ADMIN_SUPPORT_SETTINGS_MODE_TICKETS": "Tickets", - "ADMIN_SUPPORT_SETTINGS_MODE_CONTACT": "Contact", - "ADMIN_SUPPORT_SETTINGS_MODE_BOTH": "Both", - "ADMIN_SUPPORT_SETTINGS_EDIT_DESCRIPTION": "📝 Edit description", - "ADMIN_SUPPORT_SETTINGS_ADMIN_NOTIFICATIONS": "Admin notifications", - "ADMIN_SUPPORT_SETTINGS_USER_NOTIFICATIONS": "User notifications", - "ADMIN_SUPPORT_SETTINGS_SLA_LABEL": "SLA", - "ADMIN_SUPPORT_SETTINGS_SLA_TIME": "⏳ SLA time: {minutes} min", - "ADMIN_SUPPORT_SETTINGS_MODERATORS_COUNT": "🧑‍⚖️ Moderators: {count}", - "ADMIN_SUPPORT_SETTINGS_ADD_MODERATOR": "➕ Assign moderator", - "ADMIN_SUPPORT_SETTINGS_REMOVE_MODERATOR": "➖ Remove moderator", - "ADMIN_SUPPORT_SETTINGS_TITLE": "🛟 Support settings", - "ADMIN_SUPPORT_SETTINGS_DESCRIPTION": "Working hours and menu visibility. Current support menu description:", - "ADMIN_SUPPORT_SLA_SETUP_PROMPT": "⏳ SLA configuration\n\nEnter the response wait time in minutes (integer > 0):", - "ADMIN_SUPPORT_SLA_INVALID": "❌ Enter a valid number of minutes (1-1440)", - "ADMIN_SUPPORT_SLA_SAVED": "✅ SLA value saved", - "ADMIN_SUPPORT_ASSIGN_MODERATOR_PROMPT": "🧑‍⚖️ Assign moderator\n\nSend the user's Telegram ID (number)", - "ADMIN_SUPPORT_REMOVE_MODERATOR_PROMPT": "🧑‍⚖️ Remove moderator\n\nSend the user's Telegram ID (number)", - "ADMIN_SUPPORT_INVALID_TELEGRAM_ID": "❌ Enter a valid Telegram ID (number)", - "ADMIN_SUPPORT_MODERATOR_REMOVED_SUCCESS": "✅ Moderator {tid} removed", - "ADMIN_SUPPORT_MODERATOR_REMOVED_FAIL": "❌ Failed to remove moderator", - "ADMIN_SUPPORT_MODERATOR_ADDED_SUCCESS": "✅ User {tid} assigned as moderator", - "ADMIN_SUPPORT_MODERATOR_ADDED_FAIL": "❌ Failed to assign moderator", - "ADMIN_SUPPORT_MODERATORS_EMPTY": "List is empty", - "ADMIN_SUPPORT_MODERATORS_TITLE": "🧑‍⚖️ Moderators", - "ADMIN_SUPPORT_SEND_DESCRIPTION": "📨 Send description", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_TITLE": "📝 Editing support description", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CURRENT": "Current description:", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_TITLE": "Contact for \"Contact\" mode", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_HINT": "Add to the description if needed.", - "ADMIN_SUPPORT_DESCRIPTION_UPDATED": "✅ Description updated.", - "ADMIN_SUPPORT_DESCRIPTION_SENT": "Description sent below", - "ADMIN_SUPPORT_MESSAGE_DELETED": "Message deleted", - "ADMIN_SUPPORT_SUBMENU_TITLE": "🛟 **Support**\n\n", - "ADMIN_SUPPORT_SUBMENU_DESCRIPTION": "Manage tickets and support settings:", - "ADMIN_SUPPORT_SUBMENU_DESCRIPTION_MODERATOR": "Ticket access only.", - "ADMIN_SUPPORT_MODERATION_TITLE": "🧑‍⚖️ Support moderation", - "ADMIN_SUPPORT_MODERATION_DESCRIPTION": "Access to support tickets.", - "ADMIN_SUPPORT_AUDIT_TITLE": "🧾 Moderator audit", - "ADMIN_SUPPORT_AUDIT_EMPTY": "Nothing here yet", - "ADMIN_SUPPORT_AUDIT_ROLE_MODERATOR": "Moderator", - "ADMIN_SUPPORT_AUDIT_ROLE_ADMIN": "Admin", - "ADMIN_SUPPORT_AUDIT_ACTION_CLOSE_TICKET": "Ticket closed", - "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_TIMED": "Timed block", - "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_PERM": "Permanent block", - "ADMIN_SUPPORT_AUDIT_ACTION_UNBLOCK": "Unblock", - "ADMIN_SETTINGS_SUBMENU_TITLE": "⚙️ **System settings**\n\n", - "ADMIN_SETTINGS_SUBMENU_DESCRIPTION": "Manage Remnawave, monitoring and other settings:", - "ADMIN_SETTINGS_PRIVACY_POLICY": "🛡️ Privacy policy", - "ADMIN_PRIVACY_POLICY_HEADER": "🛡️ Privacy policy", - "ADMIN_PRIVACY_POLICY_DESCRIPTION": "The privacy policy is shown in the Info section.", - "ADMIN_PRIVACY_POLICY_LANGUAGE": "Language: {lang}", - "ADMIN_PRIVACY_POLICY_STATUS_DISABLED": "⚠️ Policy display is disabled or empty.", - "ADMIN_PRIVACY_POLICY_STATUS_ENABLED": "✅ Policy is active and visible to users.", - "ADMIN_PRIVACY_POLICY_STATUS_ENABLED_EMPTY": "⚠️ Policy is enabled but the text is empty — users won't see it.", - "ADMIN_PRIVACY_POLICY_UPDATED_AT": "Last updated: {timestamp}", - "ADMIN_PRIVACY_POLICY_PREVIEW_TITLE": "Text preview:", - "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY": "No text provided yet.", - "ADMIN_PRIVACY_POLICY_ACTION_PROMPT": "Choose an action:", - "ADMIN_PRIVACY_POLICY_EDIT_BUTTON": "✏️ Edit text", - "ADMIN_PRIVACY_POLICY_VIEW_BUTTON": "👀 View current text", - "ADMIN_PRIVACY_POLICY_ENABLE_BUTTON": "✅ Enable display", - "ADMIN_PRIVACY_POLICY_DISABLE_BUTTON": "🚫 Disable display", - "ADMIN_PRIVACY_POLICY_HTML_HELP": "ℹ️ HTML help", - "ADMIN_PRIVACY_POLICY_CURRENT_PREVIEW": "Current text (preview):", - "ADMIN_PRIVACY_POLICY_EDIT_PROMPT": "Send the new privacy policy text. HTML markup is allowed.", - "ADMIN_PRIVACY_POLICY_EDIT_HINT": "Use /html_help for supported tags.", - "ADMIN_PRIVACY_POLICY_EDIT_TITLE": "Privacy policy editing", - "ADMIN_PRIVACY_POLICY_CANCEL": "❌ Cancel", - "ADMIN_PRIVACY_POLICY_TOO_LONG": "❌ The policy text is too long. Maximum 4000 characters.", - "ADMIN_PRIVACY_POLICY_HTML_ERROR": "❌ HTML error: {error}", - "ADMIN_PRIVACY_POLICY_SAVED": "✅ Privacy policy updated.", - "ADMIN_PRIVACY_POLICY_BACK_BUTTON": "⬅️ Back to policy settings", - "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY_ALERT": "The privacy policy text is not set yet.", - "ADMIN_PRIVACY_POLICY_VIEW_TITLE": "👀 Current policy text", - "ADMIN_PRIVACY_POLICY_VIEW_TRUNCATED": "\n\n⚠️ The text is shortened for display. Users will see the full version in the menu.", - "ADMIN_PRIVACY_POLICY_ENABLED": "✅ Policy enabled", - "ADMIN_PRIVACY_POLICY_DISABLED": "🚫 Policy disabled", - "ADMIN_PRIVACY_POLICY_RETURN_TO_EDIT": "⬅️ Back to editing", - "ADMIN_SYSTEM_SUBMENU_TITLE": "🛠️ **System tools**\n\n", - "ADMIN_SYSTEM_SUBMENU_DESCRIPTION": "Reports, updates, logs, backups and system operations:", - "ADMIN_SETTINGS_BOT_CONFIG": "🧩 Bot configuration", - "ADMIN_SETTINGS_MAINTENANCE": "🔧 Maintenance", - "ADMIN_SYSTEM_UPDATES": "📄 Updates", - "ADMIN_SYSTEM_BACKUPS": "🗄️ Backups", - "ADMIN_SYSTEM_LOGS": "🧾 Logs", - "ADMIN_REPORTS_PREVIOUS_DAY": "📆 Previous day", - "ADMIN_REPORTS_LAST_WEEK": "🗓️ Last week", - "ADMIN_REPORTS_LAST_MONTH": "📅 Last month", - "ADMIN_USERS_ALL": "👥 All users", - "ADMIN_USERS_SEARCH": "🔍 Search", - "ADMIN_USERS_INACTIVE": "🗑️ Inactive", - "ADMIN_USERS_FILTERS": "⚙️ Filters", - "ADMIN_USERS_FILTER_BALANCE": "💰 By balance", - "ADMIN_USERS_FILTER_TRAFFIC": "📶 By traffic", - "ADMIN_USERS_FILTER_ACTIVITY": "🕒 By activity", - "ADMIN_USERS_FILTER_SPENDING": "💳 By spending", - "ADMIN_USERS_FILTER_PURCHASES": "🛒 By purchases", - "ADMIN_USERS_FILTER_CAMPAIGN": "📢 By campaign", - "ADMIN_SUBSCRIPTIONS_ALL": "📱 All subscriptions", - "ADMIN_SUBSCRIPTIONS_EXPIRING": "⏰ Expiring soon", - "ADMIN_SUBSCRIPTIONS_PRICING": "⚙️ Pricing settings", - "ADMIN_SUBSCRIPTIONS_COUNTRIES": "🌍 Manage countries", - "ADMIN_PROMOCODES_ALL": "🎫 All promo codes", - "ADMIN_PROMOCODES_CREATE": "➕ Create", - "ADMIN_PROMOCODES_GENERAL_STATS": "📊 Overall statistics", - "ADMIN_CAMPAIGNS_LIST": "📋 Campaign list", - "ADMIN_CAMPAIGNS_CREATE": "➕ Create", - "ADMIN_CAMPAIGNS_GENERAL_STATS": "📊 Overall statistics", - "ADMIN_CAMPAIGN_DISABLE": "🔴 Disable", - "ADMIN_CAMPAIGN_ENABLE": "🟢 Enable", - "ADMIN_CAMPAIGN_STATS": "📊 Statistics", - "ADMIN_CAMPAIGN_EDIT": "✏️ Edit", - "ADMIN_CAMPAIGN_DELETE": "🗑️ Delete", - "ADMIN_BACK_TO_LIST": "⬅️ Back to list", - "ADMIN_CAMPAIGN_EDIT_NAME": "✏️ Name", - "ADMIN_CAMPAIGN_EDIT_START": "🔗 Parameter", - "ADMIN_CAMPAIGN_BONUS_BALANCE": "💰 Balance bonus", - "ADMIN_CAMPAIGN_DURATION": "📅 Duration", - "ADMIN_CAMPAIGN_TRAFFIC": "🌐 Traffic", - "ADMIN_CAMPAIGN_DEVICES": "📱 Devices", - "ADMIN_CAMPAIGN_SERVERS": "🌍 Servers", - "ADMIN_CAMPAIGN_BONUS_SUBSCRIPTION": "📱 Subscription bonus", - "ADMIN_PROMOCODE_EDIT": "✏️ Edit", - "ADMIN_PROMOCODE_TOGGLE": "🔄 Status", - "ADMIN_PROMOCODE_STATS": "📊 Statistics", - "ADMIN_PROMOCODE_DELETE": "🗑️ Delete", - "ADMIN_MESSAGES_ALL_USERS": "📨 All users", - "ADMIN_MESSAGES_BY_SUBSCRIPTIONS": "🎯 By subscriptions", - "ADMIN_MESSAGES_BY_CRITERIA": "🔍 By criteria", - "ADMIN_MESSAGES_HISTORY": "📋 History", - "ADMIN_MONITORING_START": "▶️ Start", - "ADMIN_MONITORING_STOP": "⏸️ Stop", - "ADMIN_MONITORING_STATUS": "📊 Status", - "ADMIN_MONITORING_LOGS": "📋 Logs", - "ADMIN_MONITORING_SETTINGS_BUTTON": "⚙️ Settings", - "ADMIN_REMNAWAVE_SYSTEM_STATS": "📊 System statistics", - "ADMIN_REMNAWAVE_MANAGE_NODES": "🖥️ Manage nodes", - "ADMIN_REMNAWAVE_SYNC": "🔄 Synchronization", - "ADMIN_REMNAWAVE_MANAGE_SQUADS": "🌐 Manage squads", - "ADMIN_REMNAWAVE_MIGRATION": "🚚 Migration", - "ADMIN_REMNAWAVE_TRAFFIC": "📈 Traffic", - "ADMIN_SQUAD_MIGRATION_TITLE": "🚚 Squad migration", - "ADMIN_SQUAD_MIGRATION_SELECT_SOURCE": "Choose the squad you want to migrate from:", - "ADMIN_SQUAD_MIGRATION_NO_OPTIONS": "No squads available. Add new ones or cancel the operation.", - "ADMIN_SQUAD_MIGRATION_STATUS_AVAILABLE": "✅ Available", - "ADMIN_SQUAD_MIGRATION_STATUS_UNAVAILABLE": "🚫 Unavailable", - "ADMIN_SQUAD_MIGRATION_SERVER_LABEL": "{name} — 👥 {users} ({status})", - "ADMIN_SQUAD_MIGRATION_SQUAD_BUTTON": "🌍 {name} — 👥 {users} ({status})", - "ADMIN_SQUAD_MIGRATION_STATUS_AVAILABLE_SHORT": "✅", - "ADMIN_SQUAD_MIGRATION_STATUS_UNAVAILABLE_SHORT": "🚫", - "ADMIN_SQUAD_MIGRATION_PAGE": "Page {page}/{pages}", - "ADMIN_SQUAD_MIGRATION_SELECTED_SOURCE": "Source: {source}", - "ADMIN_SQUAD_MIGRATION_SELECT_TARGET": "Choose the destination squad:", - "ADMIN_SQUAD_MIGRATION_TARGET_EMPTY": "No other squads available. Cancel or create new squads.", - "ADMIN_SQUAD_MIGRATION_SQUAD_NOT_FOUND": "Squad not found or unavailable.", - "ADMIN_SQUAD_MIGRATION_SAME_SQUAD": "You can't choose the same squad.", - "ADMIN_SQUAD_MIGRATION_CONFIRM_DETAILS": "Review the migration parameters:", - "ADMIN_SQUAD_MIGRATION_CONFIRM_SOURCE": "• From: {source}", - "ADMIN_SQUAD_MIGRATION_CONFIRM_TARGET": "• To: {target}", - "ADMIN_SQUAD_MIGRATION_CONFIRM_COUNT": "• Users to migrate: {count}", - "ADMIN_SQUAD_MIGRATION_CONFIRM_PROMPT": "Confirm the operation.", - "ADMIN_SQUAD_MIGRATION_CONFIRM_BUTTON": "✅ Confirm", - "ADMIN_SQUAD_MIGRATION_CHANGE_TARGET": "🔄 Change destination", - "ADMIN_SQUAD_MIGRATION_IN_PROGRESS": "Starting migration...", - "ADMIN_SQUAD_MIGRATION_API_ERROR": "❌ Remnawave API is not configured: {error}", - "ADMIN_SQUAD_MIGRATION_ERROR": "❌ Failed to migrate (code: {code}). {details}", - "ADMIN_SQUAD_MIGRATION_NEW_BUTTON": "🔁 New migration", - "ADMIN_SQUAD_MIGRATION_BACK_BUTTON": "⬅️ Back to Remnawave", - "ADMIN_SQUAD_MIGRATION_SUCCESS_TITLE": "✅ Migration completed", - "ADMIN_SQUAD_MIGRATION_RESULT_TOTAL": "Subscriptions matched: {count}", - "ADMIN_SQUAD_MIGRATION_RESULT_UPDATED": "Migrated: {count}", - "ADMIN_SQUAD_MIGRATION_RESULT_PANEL_UPDATED": "Updated in panel: {count}", - "ADMIN_SQUAD_MIGRATION_RESULT_PANEL_FAILED": "Panel update failed: {count}", - "ADMIN_SQUAD_MIGRATION_CANCELLED": "❌ Migration cancelled.", - "ADMIN_SQUAD_MIGRATION_PAGE_HINT": "This is the current page.", - "ADMIN_STATS_USERS": "👥 Users", - "ADMIN_STATS_SUBSCRIPTIONS": "📱 Subscriptions", - "ADMIN_STATS_REVENUE": "💰 Revenue", - "ADMIN_STATS_REFERRALS": "🤝 Referrals", - "ADMIN_STATS_SUMMARY": "📊 Summary", - "ADMIN_STATS_BUTTON": "📊 Statistics", - "ADMIN_USER_BALANCE": "💰 Balance", - "ADMIN_USER_SUBSCRIPTION_SETTINGS": "📱 Subscription & settings", - "ADMIN_USER_STATISTICS": "📊 Statistics", - "ADMIN_USER_TRANSACTIONS": "📋 Transactions", - "ADMIN_USER_BLOCK": "🚫 Block", - "ADMIN_USER_DELETE": "🗑️ Delete", - "ADMIN_USER_UNBLOCK": "✅ Unblock", - "ADMIN_USER_ALREADY_DELETED": "❌ User deleted", - "ADMIN_USER_MANAGEMENT_PROFILE": "👤 User management\n\nMain information:\n• Name: {name}\n• ID: {telegram_id}\n• Username: {username}\n• Status: {status}\n• Language: {language}\n\nFinances:\n• Balance: {balance}\n• Transactions: {transactions}\n\nActivity:\n• Registration: {registration}\n• Last activity: {last_activity}\n• Days since registration: {registration_days}", - "ADMIN_USER_USERNAME_NOT_SET": "not set", - "ADMIN_USER_STATUS_ACTIVE": "✅ Active", - "ADMIN_USER_STATUS_BLOCKED": "🚫 Blocked", - "ADMIN_USER_STATUS_DELETED": "🗑️ Deleted", - "ADMIN_USER_STATUS_UNKNOWN": "❓ Unknown", - "ADMIN_USER_LAST_ACTIVITY_UNKNOWN": "Unknown", - "ADMIN_USER_SUBSCRIPTION_TYPE_TRIAL": "🎁 Trial", - "ADMIN_USER_SUBSCRIPTION_TYPE_PAID": "💎 Paid", - "ADMIN_USER_SUBSCRIPTION_STATUS_ACTIVE": "✅ Active", - "ADMIN_USER_SUBSCRIPTION_STATUS_INACTIVE": "❌ Inactive", - "ADMIN_USER_TRAFFIC_USAGE": "{used}/{limit} GB", - "ADMIN_USER_MANAGEMENT_SUBSCRIPTION": "Subscription:\n• Type: {type}\n• Status: {status}\n• Until: {end_date}\n• Traffic: {traffic}\n• Devices: {devices}\n• Countries: {countries}", - "ADMIN_USER_MANAGEMENT_SUBSCRIPTION_NONE": "Subscription: None", - "ADMIN_USER_MANAGEMENT_PROMO_GROUP": "Promo group:\n• Name: {name}\n• Server discount: {server_discount}%\n• Traffic discount: {traffic_discount}%\n• Device discount: {device_discount}%", - "ADMIN_USER_MANAGEMENT_PROMO_GROUP_NONE": "Promo group: Not assigned", - "ADMIN_PROMOCODE_TYPE_BALANCE": "💰 Balance", - "ADMIN_PROMOCODE_TYPE_DAYS": "📅 Subscription days", - "ADMIN_PROMOCODE_TYPE_TRIAL": "🎁 Trial", - "ADMIN_BROADCAST_TARGET_ALL": "👥 Everyone", - "ADMIN_BROADCAST_TARGET_ACTIVE": "📱 With subscription", - "ADMIN_BROADCAST_TARGET_TRIAL": "🎁 Trial", - "ADMIN_BROADCAST_TARGET_NO_SUB": "❌ No subscription", - "ADMIN_BROADCAST_TARGET_EXPIRING": "⏰ Expiring", - "ADMIN_BROADCAST_TARGET_EXPIRED": "🔚 Expired", - "ADMIN_BROADCAST_TARGET_ACTIVE_ZERO": "🧊 Active 0 GB", - "ADMIN_BROADCAST_TARGET_TRIAL_ZERO": "🥶 Trial 0 GB", - "ADMIN_CRITERIA_TODAY": "📅 Today", - "ADMIN_CRITERIA_WEEK": "📅 Last 7 days", - "ADMIN_CRITERIA_MONTH": "📅 Last month", - "ADMIN_CRITERIA_ACTIVE_TODAY": "⚡ Active today", - "ADMIN_CRITERIA_INACTIVE_WEEK": "💤 Inactive 7+ days", - "ADMIN_CRITERIA_INACTIVE_MONTH": "💤 Inactive 30+ days", - "ADMIN_CRITERIA_REFERRALS": "🤝 Via referrals", - "ADMIN_CRITERIA_PROMOCODES": "🎫 Used promo codes", - "ADMIN_CRITERIA_DIRECT": "🎯 Direct registration", - "ADMIN_HISTORY_REFRESH": "🔄 Refresh", - "ADMIN_SYNC_FULL": "🔄 Full sync", - "ADMIN_SYNC_ONLY_NEW": "🆕 Only new", - "ADMIN_SYNC_UPDATE": "📈 Update data", - "ADMIN_SYNC_VALIDATE": "🔍 Validate", - "ADMIN_SYNC_CLEANUP": "🧹 Cleanup", - "ADMIN_SYNC_RECOMMENDATIONS": "💡 Recommendations", - "ADMIN_SYNC_CONFIRM": "✅ Confirm", - "ADMIN_SYNC_RETRY": "🔄 Retry", - "ADMIN_SYNC_BACK": "⬅️ Back to sync", - "ADMIN_BACK_TO_MAIN": "🏠 Back to main menu", - "ADMIN_CANCEL": "❌ Cancel", - "ADMIN_CONTINUE": "✅ Continue", - "ADMIN_PERIOD_TODAY": "📅 Today", - "ADMIN_PERIOD_YESTERDAY": "📅 Yesterday", - "ADMIN_PERIOD_WEEK": "📅 Week", - "ADMIN_PERIOD_MONTH": "📅 Month", - "ADMIN_PERIOD_ALL": "📅 All time", - "ADMIN_NODE_ENABLE": "▶️ Enable", - "ADMIN_NODE_DISABLE": "⏸️ Disable", - "ADMIN_NODE_RESTART": "🔄 Restart", - "ADMIN_NODE_STATS": "📊 Statistics", - "ADMIN_SQUAD_ADD_ALL": "👥 Add all users", - "ADMIN_SQUAD_REMOVE_ALL": "❌ Remove all users", - "ADMIN_SQUAD_EDIT": "✏️ Edit", - "ADMIN_SQUAD_DELETE": "🗑️ Delete squad", - "ADMIN_SQUAD_EDIT_INBOUNDS": "🔧 Edit inbounds", - "ADMIN_SQUAD_RENAME": "✏️ Rename", - "ADMIN_BACK_TO_SQUADS": "⬅️ Back to squads", - "ADMIN_MONITORING_STOP_HARD": "⏹️ Stop", - "ADMIN_MONITORING_FORCE_CHECK": "🔄 Force check", - "ADMIN_MONITORING_TEST_NOTIFICATIONS": "🧪 Test notifications", - "ADMIN_MONITORING_STATISTICS": "📊 Statistics", - "ADMIN_BACK_TO_ADMIN": "⬅️ Back to admin", - "ADMIN_MONITORING_CLEAR_OLD": "🗑️ Clear old", - "ADMIN_MONITORING_CLEAR": "🗑️ Clear", - "ADMIN_BACK_TO_MONITORING": "⬅️ Back to monitoring", - "ADMIN_MONITORING_DELETE_LOG": "🗑️ Delete this log", - "ADMIN_MONITORING_BACK_TO_LOGS": "⬅️ Back to log list", - "ADMIN_MONITORING_CONFIRM_CLEAR": "✅ Yes, clear", - "ADMIN_MONITORING_CLEAR_ALL": "🗑️ Clear ALL logs", - "ADMIN_MONITORING_RESTART": "🔄 Restart", - "ADMIN_MONITORING_CHECK_NOW": "🔄 Check now", - "ADMIN_MONITORING_SET_INTERVAL": "⏱️ Check interval", - "ADMIN_MONITORING_NOTIFICATIONS": "🔔 Notifications", - "ADMIN_MONITORING_AUTOPAY_SETTINGS": "💳 Auto-pay settings", - "ADMIN_MONITORING_AUTO_CLEANUP": "🧹 Auto-clean logs", - "ADMIN_MONITORING_FILTER_SUCCESS": "✅ Success", - "ADMIN_MONITORING_FILTER_ERRORS": "❌ Errors", - "ADMIN_MONITORING_FILTER_CYCLES": "🔄 Monitoring cycles", - "ADMIN_MONITORING_FILTER_AUTOPAY": "💳 Auto-payments", - "ADMIN_MONITORING_ALL_LOGS": "📋 All logs", - "ADMIN_SERVERS_LIST": "📋 Server list", - "ADMIN_SERVERS_SYNC": "🔄 Synchronization", - "ADMIN_SERVERS_ADD": "➕ Add server", - "ADMIN_SERVERS_STATS": "📊 Statistics", - "ADMIN_SERVER_DISABLE": "❌ Disable", - "ADMIN_SERVER_ENABLE": "✅ Enable", - "ADMIN_SERVER_EDIT_NAME": "✏️ Name", - "ADMIN_SERVER_EDIT_PRICE": "💰 Price", - "ADMIN_SERVER_EDIT_COUNTRY": "🌍 Country", - "ADMIN_SERVER_EDIT_LIMIT": "👥 Limit", - "ADMIN_SERVER_EDIT_DESCRIPTION": "📝 Description", - "ADMIN_SERVER_DELETE": "🗑️ Delete", - "ADMIN_MAINTENANCE_DISABLE": "🟢 Disable maintenance", - "ADMIN_MAINTENANCE_ENABLE": "🔧 Enable maintenance", - "ADMIN_MAINTENANCE_STOP_MONITORING": "⏹️ Stop monitoring", - "ADMIN_MAINTENANCE_START_MONITORING": "▶️ Start monitoring", - "ADMIN_MAINTENANCE_CHECK_API": "🔍 Check API", - "ADMIN_MAINTENANCE_PANEL_STATUS": "🌐 Panel status", - "ADMIN_MAINTENANCE_SEND_NOTIFICATION": "📢 Send notification", - "ADMIN_REFRESH": "🔄 Refresh", - "ADMIN_WELCOME_DISABLE": "🔴 Disable", - "ADMIN_WELCOME_ENABLE": "🟢 Enable", - "ADMIN_WELCOME_EDIT": "📝 Edit text", - "ADMIN_WELCOME_SHOW": "👁️ Show current", - "ADMIN_WELCOME_PREVIEW": "👁️ Preview", - "ADMIN_WELCOME_RESET": "🔄 Reset", - "ADMIN_WELCOME_HTML": "🏷️ HTML formatting", - "ADMIN_WELCOME_PLACEHOLDERS": "💡 Placeholders", - "ADMIN_BROADCAST_ADD_PHOTO": "📷 Add photo", - "ADMIN_BROADCAST_ADD_VIDEO": "🎥 Add video", - "ADMIN_BROADCAST_ADD_DOCUMENT": "📄 Add document", - "ADMIN_BROADCAST_SKIP_MEDIA": "⏭️ Skip media", - "ADMIN_BROADCAST_USE_MEDIA": "✅ Use this media", - "ADMIN_BROADCAST_REPLACE_MEDIA": "🔄 Replace media", - "ADMIN_BROADCAST_NO_MEDIA": "⏭️ No media", - "ADMIN_BROADCAST_CHANGE_MEDIA": "🖼️ Change media", - "ADMIN_BROADCAST_BUTTON_BALANCE": "💰 Top up balance", - "ADMIN_BROADCAST_BUTTON_REFERRALS": "🤝 Referrals", - "ADMIN_BROADCAST_BUTTON_PROMOCODE": "🎫 Promo code", - "ADMIN_BROADCAST_BUTTON_CONNECT": "🔗 Connect", - "ADMIN_BROADCAST_BUTTON_SUBSCRIPTION": "📱 Subscription", - "ADMIN_BROADCAST_BUTTON_SUPPORT": "🛠️ Support", - "ADMIN_BROADCAST_BUTTON_HOME": "🏠 Main menu", - "ADMIN_PRICING_SUMMARY_EMPTY": "—", - "ADMIN_PRICING_MENU_TITLE": "Pricing management", - "ADMIN_PRICING_MENU_DESCRIPTION": "Quick access to subscription plans, traffic bundles and extra services.", - "ADMIN_PRICING_MENU_SUMMARY": "Quick summary:", - "ADMIN_PRICING_MENU_SUMMARY_CORE": "• Core limits: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_EXTRA": "• Extras: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_PERIOD_OPTIONS": "• Available periods: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_PERIODS": "• Periods: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_TRAFFIC": "• Traffic: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_TRIAL": "• Trial: {summary}", - "ADMIN_PRICING_MENU_PROMPT": "Choose a section to edit:", - "ADMIN_PRICING_BUTTON_CORE": "⚙️ Core limits", - "ADMIN_PRICING_BUTTON_EXTRA": "➕ Extras", - "ADMIN_PRICING_BUTTON_PERIOD_OPTIONS": "🗓 Available periods", - "ADMIN_PRICING_BUTTON_PERIODS": "🗓 Subscription periods", - "ADMIN_PRICING_BUTTON_TRAFFIC": "📦 Traffic packages", - "ADMIN_PRICING_BUTTON_TRAFFIC_OPTIONS": "🚦 Package visibility", - "ADMIN_PRICING_BUTTON_TRIAL": "🎁 Trial period", - "ADMIN_PRICING_CHOICE_ALREADY": "This option is already active.", - "ADMIN_PRICING_CHOICE_UPDATED": "Selected: {label}", - "ADMIN_PRICING_EDIT_CANCEL": "❌ Cancel", - "ADMIN_PRICING_EDIT_CANCEL_HINT": "Send \"Cancel\" to return without changes.", - "ADMIN_PRICING_EDIT_TITLE": "Update price", - "ADMIN_PRICING_EDIT_TARGET": "Current item", - "ADMIN_PRICING_EDIT_CURRENT": "Current value", - "ADMIN_PRICING_EDIT_PROMPT": "Enter a new price in RUB (e.g. 990 or 990.50). Use 0 for a free plan.", - "ADMIN_PRICING_EDIT_EXPIRED": "Editing session expired.", - "ADMIN_PRICING_EDIT_CANCELLED": "Changes cancelled.", - "ADMIN_PRICING_EDIT_INVALID": "Could not parse the price. Please enter a number in RUB (e.g. 990 or 990.50).", - "ADMIN_PRICING_EDIT_SUCCESS": "Price for {item} updated: {price}", - "ADMIN_PRICING_PERIOD_DISABLED": "Period disabled.", - "ADMIN_PRICING_PERIOD_ENABLED": "Period enabled.", - "ADMIN_PRICING_PERIOD_MIN": "At least one period must remain.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_ENABLED": "Package enabled.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_DISABLED": "Package disabled.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_MIN": "At least one package must remain.", - "ADMIN_PRICING_SECTION_CORE_TITLE": "⚙️ Core limits", - "ADMIN_PRICING_SECTION_CURRENT": "Current values:", - "ADMIN_PRICING_SECTION_EMPTY": "No values available.", - "ADMIN_PRICING_SECTION_EXTRA_TITLE": "➕ Extra options", - "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_PROMPT": "Tap a period to toggle its visibility.", - "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_RENEW": "Active renewal periods: {items}", - "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_SUB": "Active subscription periods: {items}", - "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_TITLE": "🗓 Available periods", - "ADMIN_PRICING_SECTION_PERIODS_TITLE": "🗓 Subscription periods", - "ADMIN_PRICING_SECTION_PROMPT": "Select what to update:", - "ADMIN_PRICING_SECTION_SETTINGS_GENERIC": "⚙️ Settings", - "ADMIN_PRICING_SECTION_TRAFFIC_TITLE": "📦 Traffic packages", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_TITLE": "🚦 Traffic package visibility", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_ACTIVE": "Active packages: {items}", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_NONE": "No active packages.", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_PROMPT": "Tap a package to toggle its visibility.", - "ADMIN_PRICING_SECTION_TRIAL_TITLE": "🎁 Trial period", - "ADMIN_PRICING_SETTING_CANCEL_HINT": "Reply \"Cancel\" to go back without changes.", - "ADMIN_PRICING_SETTING_CURRENT": "Current value", - "ADMIN_PRICING_SETTING_EDIT_TITLE": "Parameter configuration", - "ADMIN_PRICING_SETTING_EDIT_WITH_VALUE": "✏️ {label} • {value}", - "ADMIN_PRICING_SETTING_EXAMPLE": "Example", - "ADMIN_PRICING_SETTING_FORMAT": "Input format", - "ADMIN_PRICING_SETTING_INVALID": "Could not update the parameter. Please check the value format.", - "ADMIN_PRICING_SETTING_PARAMETER": "Parameter", - "ADMIN_PRICING_SETTING_PROMPT": "Send a new value or type \"Cancel\". Use none to clear.", - "ADMIN_PRICING_SETTING_SUCCESS": "Parameter {label} updated: {value}", - "ADMIN_PRICING_SETTING_TOGGLE_STATEFUL": "{icon} {label}", - "ADMIN_PRICING_SETTING_WARNING": "Important", - "MENU_PUBLIC_OFFER": "📄 Offer", - "PUBLIC_OFFER_NOT_AVAILABLE": "Public offer is temporarily unavailable.", - "PUBLIC_OFFER_EMPTY_ALERT": "Public offer content is not provided yet.", - "PUBLIC_OFFER_HEADER": "📄 Public Offer", - "PUBLIC_OFFER_PAGE_INFO": "Page {current} of {total}", - "ADMIN_SETTINGS_PUBLIC_OFFER": "📄 Public offer", - "ADMIN_SETTINGS_FAQ": "❓ FAQ", - "ADMIN_PUBLIC_OFFER_HEADER": "📄 Public offer", - "ADMIN_PUBLIC_OFFER_DESCRIPTION": "The public offer is shown in the “Info” section.", - "ADMIN_PUBLIC_OFFER_LANGUAGE": "Language: {lang}", - "ADMIN_PUBLIC_OFFER_STATUS_DISABLED": "⚠️ Offer display is disabled or empty.", - "ADMIN_PUBLIC_OFFER_STATUS_ENABLED": "✅ Offer is active and visible to users.", - "ADMIN_PUBLIC_OFFER_STATUS_ENABLED_EMPTY": "⚠️ Offer is enabled but text is empty — users will not see it.", - "ADMIN_PUBLIC_OFFER_UPDATED_AT": "Last updated: {timestamp}", - "ADMIN_PUBLIC_OFFER_PREVIEW_TITLE": "Text preview:", - "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY": "Text is not set yet.", - "ADMIN_PUBLIC_OFFER_ACTION_PROMPT": "Choose an action:", - "ADMIN_PUBLIC_OFFER_EDIT_BUTTON": "✏️ Edit text", - "ADMIN_PUBLIC_OFFER_VIEW_BUTTON": "👀 View current text", - "ADMIN_PUBLIC_OFFER_ENABLE_BUTTON": "✅ Enable display", - "ADMIN_PUBLIC_OFFER_DISABLE_BUTTON": "🚫 Disable display", - "ADMIN_PUBLIC_OFFER_HTML_HELP": "ℹ️ HTML help", - "ADMIN_FAQ_HEADER": "❓ FAQ", - "ADMIN_FAQ_DESCRIPTION": "FAQ is shown in the “Info” section.", - "ADMIN_FAQ_LANGUAGE": "Language: {lang}", - "ADMIN_FAQ_PAGE_STATS": "Total pages: {total}", - "ADMIN_FAQ_STATUS_DISABLED": "⚠️ FAQ display is turned off.", - "ADMIN_FAQ_STATUS_ENABLED": "✅ FAQ is enabled. Active pages: {count}.", - "ADMIN_FAQ_STATUS_ENABLED_EMPTY": "⚠️ FAQ is enabled but there are no active pages.", - "ADMIN_FAQ_STATUS_EMPTY": "⚠️ FAQ has not been configured yet.", - "ADMIN_FAQ_PAGES_EMPTY": "No pages have been created yet.", - "ADMIN_FAQ_PAGES_OVERVIEW": "Page list:\n{items}", - "ADMIN_FAQ_ACTION_PROMPT": "Choose an action:", - "ADMIN_FAQ_ADD_PAGE_BUTTON": "➕ Add page", - "ADMIN_FAQ_ENABLE_BUTTON": "✅ Enable display", - "ADMIN_FAQ_DISABLE_BUTTON": "🚫 Disable display", - "ADMIN_FAQ_HTML_HELP": "ℹ️ HTML help", - "ADMIN_FAQ_ENTER_TITLE": "Enter a title for the new FAQ page:", - "ADMIN_FAQ_CANCEL_BUTTON": "⬅️ Cancel", - "ADMIN_FAQ_TITLE_EMPTY": "❌ Title cannot be empty.", - "ADMIN_FAQ_TITLE_TOO_LONG": "❌ Title is too long. Maximum 255 characters.", - "ADMIN_FAQ_ENTER_CONTENT": "Send the content of the FAQ page. HTML is allowed.", - "ADMIN_FAQ_CONTENT_TOO_LONG": "❌ Text is too long. Maximum 6000 characters.", - "ADMIN_FAQ_CONTENT_EMPTY": "❌ Text cannot be empty.", - "ADMIN_FAQ_HTML_ERROR": "❌ HTML error: {error}", - "ADMIN_FAQ_PAGE_CREATED": "✅ FAQ page created.", - "ADMIN_FAQ_BACK_TO_LIST": "⬅️ Back to FAQ settings", - "ADMIN_FAQ_ENABLED_ALERT": "✅ FAQ enabled.", - "ADMIN_FAQ_DISABLED_ALERT": "🚫 FAQ disabled.", - "ADMIN_FAQ_PAGE_NOT_FOUND": "⚠️ Page not found.", - "ADMIN_FAQ_PAGE_HEADER": "📄 FAQ page", - "ADMIN_FAQ_PAGE_STATUS_ACTIVE": "✅ Active", - "ADMIN_FAQ_PAGE_STATUS_INACTIVE": "🚫 Disabled", - "ADMIN_FAQ_PAGE_UPDATED": "Updated: {timestamp}", - "ADMIN_FAQ_PAGE_PREVIEW_EMPTY": "Content has not been provided yet.", - "ADMIN_FAQ_PAGE_PREVIEW": "Preview:\n{content}", - "ADMIN_FAQ_PAGE_TITLE": "Title: {title}", - "ADMIN_FAQ_PAGE_STATUS": "Status: {status}", - "ADMIN_FAQ_EDIT_TITLE_BUTTON": "✏️ Edit title", - "ADMIN_FAQ_EDIT_CONTENT_BUTTON": "📝 Edit text", - "ADMIN_FAQ_PAGE_ENABLE_BUTTON": "✅ Enable page", - "ADMIN_FAQ_PAGE_DISABLE_BUTTON": "🚫 Disable page", - "ADMIN_FAQ_PAGE_MOVE_UP": "⬆️ Up", - "ADMIN_FAQ_PAGE_MOVE_DOWN": "⬇️ Down", - "ADMIN_FAQ_PAGE_DELETE_BUTTON": "🗑️ Delete", - "ADMIN_FAQ_TITLE_UPDATED": "✅ Title updated.", - "ADMIN_FAQ_UNEXPECTED_STATE": "⚠️ State was reset.", - "ADMIN_FAQ_CONTENT_UPDATED": "✅ Page text updated.", - "ADMIN_FAQ_PAGE_ENABLED_ALERT": "✅ Page enabled.", - "ADMIN_FAQ_PAGE_DISABLED_ALERT": "🚫 Page disabled.", - "ADMIN_FAQ_PAGE_DELETED": "🗑️ Page deleted.", - "ADMIN_FAQ_PAGE_REORDERED": "✅ Order updated.", - "ADMIN_PUBLIC_OFFER_CURRENT_PREVIEW": "Current text (preview):", - "ADMIN_PUBLIC_OFFER_EDIT_PROMPT": "Send a new public offer text. HTML markup is allowed.", - "ADMIN_PUBLIC_OFFER_EDIT_HINT": "Use /html_help for the list of allowed tags.", - "ADMIN_PUBLIC_OFFER_EDIT_TITLE": "Public offer editing", - "ADMIN_PUBLIC_OFFER_CANCEL": "❌ Cancel", - "ADMIN_PUBLIC_OFFER_TOO_LONG": "❌ Offer text is too long. Maximum 4000 characters.", - "ADMIN_PUBLIC_OFFER_HTML_ERROR": "❌ HTML error: {error}", - "ADMIN_PUBLIC_OFFER_SAVED": "✅ Public offer updated.", - "ADMIN_PUBLIC_OFFER_BACK_BUTTON": "⬅️ Back to offer settings", - "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY_ALERT": "Offer text is not set yet.", - "ADMIN_PUBLIC_OFFER_VIEW_TITLE": "👀 Current offer text", - "ADMIN_PUBLIC_OFFER_VIEW_TRUNCATED": "\n\n⚠️ Text shortened for display. Users will see the full version in the menu.", - "ADMIN_PUBLIC_OFFER_ENABLED": "✅ Offer enabled", - "ADMIN_PUBLIC_OFFER_DISABLED": "🚫 Offer disabled", - "ADMIN_PUBLIC_OFFER_RETURN_TO_EDIT": "⬅️ Back to editing", - "ADMIN_PUBLIC_OFFER_EDIT_CANCELLED": "Offer editing cancelled." -} diff --git a/locales/ru.json b/locales/ru.json deleted file mode 100644 index 1dfd024d..00000000 --- a/locales/ru.json +++ /dev/null @@ -1,1243 +0,0 @@ -{ - "ACCESS_DENIED": "❌ Доступ запрещен", - "ADD_COUNTRIES_BUTTON": "🌐 Добавить страны", - "ADMIN_MAIN_MENU": "🏠 Главное меню", - "ADMIN_CAMPAIGNS": "📣 Рекламные кампании", - "ADMIN_MESSAGES": "📨 Рассылки", - "ADMIN_MONITORING": "🔍 Мониторинг", - "ADMIN_MONITORING_SETTINGS": "⚙️ Настройки мониторинга", - "ADMIN_REPORTS": "📊 Отчеты", - "ADMIN_PANEL": "\n⚙️ Административная панель\n\nВыберите раздел для управления:\n", - "ADMIN_PROMOCODES": "🎫 Промокоды", - "ADMIN_REFERRALS": "🤝 Партнерка", - "ADMIN_REMNAWAVE": "🖥️ Remnawave", - "ADMIN_RULES": "📋 Правила", - "ADMIN_STATISTICS": "📊 Статистика", - "ADMIN_PROMO_GROUPS": "💳 Промогруппы", - "ADMIN_PROMO_GROUPS_TITLE": "💳 Промогруппы", - "ADMIN_PROMO_GROUPS_SUMMARY": "Всего групп: {count}\nВсего участников: {members}", - "ADMIN_PROMO_GROUP_DISCOUNTS_HEADER": "💸 Скидки промогруппы:", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_SERVERS": "• Серверы: {percent}%", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_TRAFFIC": "• Трафик: {percent}%", - "ADMIN_PROMO_GROUP_DISCOUNT_LINE_DEVICES": "• Устройства: {percent}%", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_ENABLED": "🧩 Скидки на доп. услуги: включены", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_DISABLED": "🧩 Скидки на доп. услуги: отключены", - "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_ENABLE": "🧩 Включить скидки на доп. услуги", - "ADMIN_PROMO_GROUP_TOGGLE_ADDON_DISCOUNT_DISABLE": "🧩 Отключить скидки на доп. услуги", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_ENABLED": "🧩 Скидки на докупку доп. услуг включены.", - "ADMIN_PROMO_GROUP_ADDON_DISCOUNT_UPDATED_DISABLED": "🧩 Скидки на докупку доп. услуг отключены.", - "ADMIN_PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Скидки по периодам:", - "ADMIN_PROMO_GROUPS_DEFAULT_LABEL": " (базовая)", - "ADMIN_PROMO_GROUPS_MEMBERS_COUNT": "Участников: {count}", - "ADMIN_PROMO_GROUPS_EMPTY": "Промогруппы не найдены.", - "CREATE_TICKET_BUTTON": "🎫 Создать тикет", - "MY_TICKETS_BUTTON": "📋 Мои тикеты", - "CONTACT_SUPPORT_BUTTON": "💬 Связаться с поддержкой", - "SUPPORT_BUTTON": "🆘 Поддержка", - "TICKET_PRIORITY_SELECT": "Выберите приоритет тикета:", - "TICKET_PRIORITY_LOW": "🟢 Низкий", - "TICKET_PRIORITY_NORMAL": "🟡 Обычный", - "TICKET_PRIORITY_HIGH": "🟠 Высокий", - "TICKET_PRIORITY_URGENT": "🔴 Срочный", - "CANCEL_TICKET_CREATION": "❌ Отменить создание тикета", - "TICKET_TITLE_INPUT": "Введите заголовок тикета:", - "TICKET_TITLE_TOO_SHORT": "Заголовок должен содержать минимум 5 символов. Попробуйте еще раз:", - "TICKET_TITLE_TOO_LONG": "Заголовок слишком длинный. Максимум 255 символов. Попробуйте еще раз:", - "TICKET_MESSAGE_INPUT": "Опишите проблему (до 500 символов) или отправьте фото c подписью:", - "TICKET_MESSAGE_TOO_SHORT": "Сообщение должно содержать минимум 10 символов. Попробуйте еще раз:", - "TICKET_CREATED_SUCCESS": "✅ Тикет #{ticket_id} успешно создан!\n\nЗаголовок: {title}\n\nМы ответим вам в ближайшее время.", - "VIEW_TICKET": "👁️ Посмотреть тикет", - "BACK_TO_MENU": "🏠 В главное меню", - "TICKET_CREATION_ERROR": "❌ Произошла ошибка при создании тикета. Попробуйте позже.", - "NO_TICKETS": "У вас пока нет тикетов.", - "MY_TICKETS_TITLE": "📋 Ваши тикеты:", - "TICKET_STATUS_OPEN": "Открыт", - "TICKET_STATUS_ANSWERED": "Отвечен", - "TICKET_STATUS_CLOSED": "Закрыт", - "TICKET_STATUS_PENDING": "В ожидании", - "REPLY_TO_TICKET": "💬 Ответить", - "CLOSE_TICKET": "🔒 Закрыть тикет", - "CANCEL_REPLY": "❌ Отменить ответ", - "TICKET_REPLY_INPUT": "Введите ваш ответ:", - "TICKET_REPLY_TOO_SHORT": "Ответ должен содержать минимум 5 символов. Попробуйте еще раз:", - "TICKET_REPLY_SENT": "✅ Ваш ответ отправлен!", - "TICKET_REPLY_ERROR": "❌ Произошла ошибка при отправке ответа. Попробуйте позже.", - "TICKET_CLOSED": "✅ Тикет закрыт.", - "TICKET_CLOSE_ERROR": "❌ Ошибка при закрытии тикета.", - "TICKET_NOT_FOUND": "Тикет не найден.", - "TICKET_CREATION_CANCELLED": "Создание тикета отменено.", - "BACK_TO_SUPPORT": "⬅️ К поддержке", - "TICKET_REPLY_CANCELLED": "Ответ отменен.", - "BACK_TO_TICKETS": "⬅️ К тикетам", - "NO_TICKETS_ADMIN": "Нет тикетов для отображения.", - "ADMIN_TICKETS_TITLE": "🎫 Все тикеты поддержки:", - "ADMIN_TICKET_REPLY_INPUT": "Введите ответ от поддержки:", - "ADMIN_TICKET_REPLY_SENT": "✅ Ответ отправлен!", - "TICKET_MARKED_ANSWERED": "✅ Тикет отмечен как отвеченный.", - "TICKET_UPDATE_ERROR": "❌ Ошибка при обновлении тикета.", - "MARK_AS_ANSWERED": "✅ Отметить как отвеченный", - "TICKET_REPLY_NOTIFICATION": "🎫 Получен ответ по тикету #{ticket_id}\n\n{reply_preview}\n\nНажмите кнопку ниже, чтобы перейти к тикету:", - "CLOSE_NOTIFICATION": "❌ Закрыть уведомление", - "REPORT_CLOSE": "❌ Закрыть", - "REPORT_CLOSED": "✅ Отчет закрыт.", - "REPORT_CLOSE_ERROR": "❌ Не удалось закрыть отчет.", - "NOTIFICATION_CLOSED": "Уведомление закрыто.", - "UNBLOCK": "✅ Разблокировать", - "BLOCK_FOREVER": "🚫 Заблокировать", - "BLOCK_BY_TIME": "⏳ Блокировка по времени", - "ENTER_BLOCK_MINUTES": "Введите количество минут для блокировки пользователя (например, 15):", - "TICKET_ATTACHMENTS": "📎 Вложения", - "OPEN_TICKETS": "🔴 Открытые", - "CLOSED_TICKETS": "🟢 Закрытые", - "CLOSED_TICKETS_HEADER": "🟢 Закрытые тикеты", - "OPEN_TICKETS_HEADER": "🔴 Открытые тикеты", - "SENDING_ATTACHMENTS": "📎 Отправляю вложения...", - "NO_ATTACHMENTS": "Вложений нет.", - "ATTACHMENTS_SENT": "✅ Вложения отправлены.", - "DELETE_MESSAGE": "🗑 Удалить", - "ADMIN_USER_PROMO_GROUP_BUTTON": "👥 Промогруппа", - "ADMIN_USER_PROMO_GROUP_TITLE": "👥 Промогруппа пользователя", - "ADMIN_USER_PROMO_GROUP_CURRENT": "Текущая группа: {name}", - "ADMIN_USER_PROMO_GROUP_CURRENT_NONE": "Текущая группа: не назначена", - "ADMIN_USER_PROMO_GROUP_DISCOUNTS": "Скидки — серверы: {servers}%, трафик: {traffic}%, устройства: {devices}%", - "ADMIN_USER_PROMO_GROUP_DISCOUNTS_NONE": "Скидки не заданы.", - "ADMIN_USER_PROMO_GROUP_SELECT": "Выберите промогруппу для назначения:", - "ADMIN_USER_PROMO_GROUP_UPDATED": "✅ Промогруппа пользователя обновлена: «{name}»", - "ADMIN_USER_PROMO_GROUP_ALREADY": "ℹ️ Пользователь уже состоит в этой промогруппе.", - "ADMIN_USER_PROMO_GROUP_ERROR": "❌ Не удалось обновить промогруппу пользователя.", - "ADMIN_USER_PROMO_GROUP_BACK": "⬅️ К пользователю", - "ADMIN_PROMO_GROUP_DETAILS_TITLE": "💳 Промогруппа: {name}", - "ADMIN_PROMO_GROUP_DETAILS_MEMBERS": "Участников: {count}", - "ADMIN_PROMO_GROUP_DETAILS_DEFAULT": "Это базовая группа.", - "ADMIN_PROMO_GROUP_MEMBERS_BUTTON": "👥 Участники", - "ADMIN_PROMO_GROUP_EDIT_BUTTON": "✏️ Изменить", - "ADMIN_PROMO_GROUP_DELETE_BUTTON": "🗑️ Удалить", - "ADMIN_PROMO_GROUP_CREATE_NAME_PROMPT": "Введите название новой промогруппы:", - "ADMIN_PROMO_GROUP_INVALID_NAME": "Название не может быть пустым.", - "ADMIN_PROMO_GROUP_CREATE_TRAFFIC_PROMPT": "Введите скидку на трафик (0-100):", - "ADMIN_PROMO_GROUP_CREATE_SERVERS_PROMPT": "Введите скидку на серверы (0-100):", - "ADMIN_PROMO_GROUP_CREATE_DEVICES_PROMPT": "Введите скидку на устройства (0-100):", - "ADMIN_PROMO_GROUP_CREATE_PERIOD_PROMPT": "Введите скидки на периоды подписки (например, 30:10, 90:15). Отправьте 0, если без скидок.", - "ADMIN_PROMO_GROUP_INVALID_PERCENT": "Введите число от 0 до 100.", - "ADMIN_PROMO_GROUP_INVALID_PERIOD_DISCOUNTS": "Введите пары период:скидка через запятую, например 30:10, 90:15, или 0.", - "ADMIN_PROMO_GROUP_CREATED": "Промогруппа «{name}» создана.", - "ADMIN_PROMO_GROUP_CREATED_BACK_BUTTON": "↩️ К промогруппам", - "ADMIN_PROMO_GROUP_EDIT_NAME_PROMPT": "Введите новое название промогруппы (текущее: {name}):", - "ADMIN_PROMO_GROUP_EDIT_TRAFFIC_PROMPT": "Введите новую скидку на трафик (0-100). Текущее значение: {current}.", - "ADMIN_PROMO_GROUP_EDIT_SERVERS_PROMPT": "Введите новую скидку на серверы (0-100). Текущее значение: {current}.", - "ADMIN_PROMO_GROUP_EDIT_DEVICES_PROMPT": "Введите новую скидку на устройства (0-100). Текущее значение: {current}.", - "ADMIN_PROMO_GROUP_EDIT_PERIOD_PROMPT": "Введите новые скидки на периоды (текущие: {current}). Отправьте 0, если без скидок.", - "ADMIN_PROMO_GROUP_UPDATED": "Промогруппа «{name}» обновлена.", - "ADMIN_PROMO_GROUP_AUTO_ASSIGN_DISABLED": "Автовыдача по суммарным тратам: отключена", - "ADMIN_PROMO_GROUP_AUTO_ASSIGN_LINE": "Автовыдача по суммарным тратам: от {amount} ₽", - "ADMIN_PROMO_GROUP_EDIT_MENU_TITLE": "✏️ Настройки промогруппы «{name}»", - "ADMIN_PROMO_GROUP_EDIT_MENU_HINT": "Выберите параметр для изменения:", - "ADMIN_PROMO_GROUP_EDIT_FIELD_NAME": "✏️ Изменить название", - "ADMIN_PROMO_GROUP_EDIT_FIELD_TRAFFIC": "🌐 Скидка на трафик", - "ADMIN_PROMO_GROUP_EDIT_FIELD_SERVERS": "🖥 Скидка на серверы", - "ADMIN_PROMO_GROUP_EDIT_FIELD_DEVICES": "📱 Скидка на устройства", - "ADMIN_PROMO_GROUP_EDIT_FIELD_PERIODS": "⏳ Скидки по периодам", - "ADMIN_PROMO_GROUP_EDIT_FIELD_AUTO_ASSIGN": "🤖 Автовыдача по тратам", - "ADMIN_PROMO_GROUP_CREATE_AUTO_ASSIGN_PROMPT": "Введите сумму общих трат (в ₽) для автоматической выдачи этой группы. Отправьте 0, чтобы отключить.", - "ADMIN_PROMO_GROUP_INVALID_AUTO_ASSIGN": "Введите неотрицательное число в рублях или 0 для отключения.", - "ADMIN_PROMO_GROUP_EDIT_AUTO_ASSIGN_PROMPT": "Введите сумму общих трат (в ₽) для автовыдачи. Текущее значение: {current}.", - "ADMIN_PROMO_GROUP_MEMBERS_TITLE": "👥 Участники группы {name}", - "ADMIN_PROMO_GROUP_MEMBERS_EMPTY": "В этой группе пока нет участников.", - "ADMIN_PROMO_GROUP_DELETE_FORBIDDEN": "Базовую промогруппу нельзя удалить.", - "ADMIN_PROMO_GROUP_DELETE_CONFIRM": "Удалить промогруппу «{name}»? Все пользователи будут переведены в базовую группу.", - "ADMIN_PROMO_GROUP_DELETED": "Промогруппа «{name}» удалена.", - "ADMIN_SUBSCRIPTIONS": "📱 Подписки", - "ADMIN_USERS": "👥 Пользователи", - "AUTOPAY_BUTTON": "💳 Автоплатёж", - "AUTOPAY_DISABLED_TEXT": "Отключен - не забудьте продлить вручную!", - "AUTOPAY_ENABLED_TEXT": "Включен - подписка продлится автоматически", - "AUTOPAY_FAILED": "\n❌ Ошибка автоплатежа\n\nНе удалось списать средства для продления подписки.\nНедостаточно средств на балансе: {balance}\nТребуется: {required}\n\nПополните баланс и продлите подписку вручную.\n", - "AUTOPAY_SET_DAYS_BUTTON": "⚙️ Настроить дни", - "AUTOPAY_SUCCESS": "\n✅ Автоплатеж выполнен\n\nВаша подписка автоматически продлена на {days} дней.\nСписано с баланса: {amount}\n", - "BACK": "⬅️ Назад", - "BACK_TO_SUBSCRIPTION": "⬅️ К подписке", - "BALANCE_BUTTON": "💰 Баланс: {balance}", - "BALANCE_BUTTON_DEFAULT": "💰 Баланс: {balance}", - "BALANCE_BUTTON_ZERO": "💰 Баланс: 0 ₽", - "BALANCE_HISTORY": "📊 История операций", - "BALANCE_INFO": "\n💰 Баланс: {balance}\n\nВыберите действие:\n", - "BALANCE_SUPPORT_REQUEST": "🛠️ Запрос через поддержку", - "BALANCE_TOP_UP": "💳 Пополнить", - "BALANCE_TOPUP": "💳 Пополнить баланс", - "BALANCE_TOPUP_CART_REMINDER_DETAILED": "\\n💡 Требуется пополнение баланса\\n\\nВ вашей корзине находятся товары на общую сумму {total_amount}, но на балансе недостаточно средств.\\n\\n💳 Пополните баланс, чтобы завершить покупку.\\n\\nВыберите способ пополнения:", - "CAMPAIGN_EXISTING_USER": "ℹ️ Эта рекламная ссылка доступна только новым пользователям.", - "CAMPAIGN_BONUS_BALANCE": "🎉 Вы получили {amount} за регистрацию по кампании «{name}»!", - "CAMPAIGN_BONUS_SUBSCRIPTION": "🎉 Вам выдана подписка на {days} д. (трафик: {traffic}, устройств: {devices}) по кампании «{name}»!", - "BUY_SUBSCRIPTION_START": "\n💎 Настройка подписки\n\nДавайте настроим вашу подписку под ваши потребности.\n\nСначала выберите период подписки:\n", - "PROMO_GROUP_DISCOUNTS_HEADER": "🎁 Скидки вашей промогруппы", - "PROMO_GROUP_DISCOUNT_SERVERS": "🌍 Серверы: {percent}%", - "PROMO_GROUP_DISCOUNT_TRAFFIC": "📊 Трафик: {percent}%", - "PROMO_GROUP_DISCOUNT_DEVICES": "📱 Доп. устройства: {percent}%", - "PROMO_GROUP_PERIOD_DISCOUNTS_HEADER": "⏳ Скидки за длительный период:", - "PROMO_GROUP_PERIOD_DISCOUNT_ITEM": "{period} — {percent}%", - "CANCEL": "❌ Отмена", - "CHANGE_DEVICES_BUTTON": "📱 Изменить устройства", - "CHANGE_DEVICES_CONFIRM": "\n 📱 Подтверждение изменения\n\n Текущее количество: {current_devices} устройств\n Новое количество: {new_devices} устройств\n\n Действие: {action}\n 💰 {cost}\n\n Подтвердить изменение?\n ", - "CHANGE_DEVICES_INFO": "\n 📱 Изменение количества устройств\n\n Текущий лимит: {current_devices} устройств\n\n Выберите новое количество устройств:\n\n 💡 Важно:\n • При увеличении - доплата пропорционально оставшемуся времени\n • При уменьшении - возврат средств не производится\n ", - "CHANGE_DEVICES_SUCCESS_DECREASE": "\n ✅ Количество устройств уменьшено!\n\n 📱 Было: {old_count} → Стало: {new_count}\n ℹ️ Возврат средств не производится\n ", - "CHANGE_DEVICES_SUCCESS_INCREASE": "\n ✅ Количество устройств увеличено!\n\n 📱 Было: {old_count} → Стало: {new_count}\n 💰 Списано: {amount}\n ", - "CHANGE_DEVICES_TITLE": "📱 Изменение количества устройств", - "CHANNEL_CHECK_BUTTON": "✅ Я подписался", - "CHANNEL_REQUIRED_TEXT": "🔒 Для использования бота подпишитесь на новостной канал, а затем нажмите кнопку ниже.", - "CHANNEL_SUBSCRIBE_BUTTON": "🔗 Подписаться", - "CHANNEL_SUBSCRIBE_REQUIRED_ALERT": "❌ Вы не подписались на канал!", - "CHANNEL_SUBSCRIBE_THANKS": "✅ Спасибо за подписку", - "TRIAL_CHANNEL_UNSUBSCRIBED": "\n🚫 Доступ приостановлен\n\nМы не нашли вашу подписку на наш канал, поэтому тестовая подписка отключена.\n\nПодпишитесь на канал и нажмите «{check_button}», чтобы вернуть доступ.", - "CHECK_STATUS_BUTTON": "📊 Проверить статус", - "CHOOSE_ANOTHER_DEVICE": "📱 Выбрать другое устройство", - "CONFIRM": "✅ Подтвердить", - "CONFIRM_CHANGE_BUTTON": "✅ Подтвердить изменение", - "CONNECT_BUTTON": "🔗 Подключиться", - "HAPP_DOWNLOAD_BUTTON": "⬇️ Скачать Happ", - "HAPP_DOWNLOAD_PROMPT": "📥 Скачать Happ\nВыберите ваше устройство:", - "HAPP_PLATFORM_IOS": "🍎 iOS", - "HAPP_PLATFORM_ANDROID": "🤖 Android", - "HAPP_PLATFORM_MACOS": "🖥️ Mac OS", - "HAPP_PLATFORM_WINDOWS": "💻 Windows", - "HAPP_PLATFORM_PC": "💻 ПК", - "HAPP_DOWNLOAD_LINK_MESSAGE": "⬇️ Скачайте Happ для {platform}:", - "HAPP_DOWNLOAD_LINK_NOT_SET": "❌ Ссылка для этого устройства не настроена", - "HAPP_DOWNLOAD_OPEN_LINK": "🔗 Открыть ссылку", - "CONTACT_SUPPORT": "💬 Написать в поддержку", - "CONTINUE": "➡️ Продолжить", - "CONTINUE_BUTTON": "✅ Продолжить", - "COPY_SUBSCRIPTION_LINK": "📋 Скопировать ссылку подписки", - "CREATE_INVITE": "📝 Создать приглашение", - "CREATE_INVITE_BUTTON": "📝 Создать приглашение", - "DEVICES_INSUFFICIENT_BALANCE": "⚠️ Недостаточно средств!\nТребуется: {required} (за {months} мес)\nУ вас: {balance}", - "DEVICES_LIMIT_EXCEEDED": "⚠️ Превышен максимальный лимит устройств ({limit})", - "DEVICES_MINIMUM_LIMIT": "⚠️ Минимальное количество устройств: {limit}", - "DEVICES_NO_CHANGE": "ℹ️ Количество устройств не изменилось", - "DEVICE_CONNECTION_HELP": "❓ Как подключить устройство заново?", - "DEVICE_GUIDE_ANDROID": "🤖 Android", - "DEVICE_GUIDE_ANDROID_TV": "📺 Android TV", - "DEVICE_GUIDE_APPLE_TV": "📺 Apple TV", - "DEVICE_GUIDE_IOS": "📱 iOS (iPhone/iPad)", - "DEVICE_GUIDE_MAC": "🎯 macOS", - "DEVICE_GUIDE_WINDOWS": "💻 Windows", - "DISABLE_BUTTON": "❌ Выключить", - "ENABLE_BUTTON": "✅ Включить", - "ERROR": "❌ Произошла ошибка", - "ERROR_TRY_AGAIN": "❌ Произошла ошибка. Попробуйте еще раз.", - "ERROR_RULES_RETRY": "Произошла ошибка. Попробуйте принять правила еще раз:", - "GO_TO_BALANCE_TOP_UP": "💳 Перейти к пополнению баланса", - "RETURN_TO_SUBSCRIPTION_CHECKOUT": "⬅️ Вернуться к оформлению подписки", - "INSUFFICIENT_BALANCE": "❌ Недостаточно средств на балансе. \n \n Пополните баланс на {amount} и попробуйте снова.\n ", - "ADDON_INSUFFICIENT_FUNDS_MESSAGE": "⚠️ Недостаточно средств\n\nСтоимость услуги: {required}\nНа балансе: {balance}\nНе хватает: {missing}\n\nВыберите способ пополнения. Сумма подставится автоматически.", - "INVALID_AMOUNT": "❌ Неверная сумма", - "LANGUAGE_PROMPT": "🌐 Выберите язык интерфейса:", - "LANGUAGE_SELECTED": "🌐 Язык интерфейса установлен: Русский", - "LOADING": "⏳ Загрузка...", - "MAINTENANCE_MODE_ACTIVE": "\n🔧 Технические работы!\n\nСервис временно недоступен. Ведутся технические работы по улучшению качества обслуживания.\n\n⏰ Ориентировочное время завершения: неизвестно\n🔄 Попробуйте позже\n\nПриносим извинения за временные неудобства.\n", - "MAINTENANCE_MODE_API_ERROR": "\n🔧 Технические работы!\n\nСервис временно недоступен из-за проблем с подключением к серверам.\n\n⏰ Мы работаем над восстановлением. Попробуйте через несколько минут.\n\n🔄 Последняя проверка: {last_check}\n", - "MAIN_MENU": "👤 {user_name}\n \n📱 Подписка: {subscription_status}\n\nВыберите действие:\n", - "MAIN_MENU_ACTION_PROMPT": "Выберите действие:", - "MAIN_MENU_TEST_ACCESS_HEADER": "🧪 Тестовые сервера активны: {servers}", - "MAIN_MENU_TEST_ACCESS_TIMER": "⏳ Доступ действует ещё: {time_left}\n{bar}", - "MAIN_MENU_BUTTON": "🏠 Главное меню", - "MANAGE_DEVICES_BUTTON": "🔧 Управление устройствами", - "MENU_ADMIN": "⚙️ Админ-панель", - "MENU_BALANCE": "💰 Баланс", - "MENU_BUY_SUBSCRIPTION": "💎 Купить подписку", - "MENU_EXTEND_SUBSCRIPTION": "⏰ Продлить подписку", - "MENU_INFO": "ℹ️ Инфо", - "MENU_INFO_HEADER": "ℹ️ Инфо", - "MENU_INFO_PROMPT": "Выберите раздел:", - "MENU_PROMO_GROUPS_INFO": "🎯 Скидки за траты", - "PROMO_GROUPS_INFO_HEADER": "🎯 Скидки за траты", - "PROMO_GROUPS_INFO_TOTAL_SPENT": "💰 Потрачено в боте: {amount}", - "PROMO_GROUPS_INFO_CURRENT_LEVEL": "🏆 Текущий уровень: {name}", - "PROMO_GROUPS_INFO_NO_LEVEL": "🏆 Текущий уровень: пока не получен", - "PROMO_GROUPS_INFO_NEXT_LEVEL": "📈 До уровня «{name}»: осталось {amount}", - "PROMO_GROUPS_INFO_MAX_LEVEL": "🏆 Вы уже получили максимальный уровень скидок!", - "PROMO_GROUPS_INFO_LEVELS_HEADER": "📋 Уровни с автовыдачей:", - "PROMO_GROUPS_INFO_LEVEL_LINE": "{status} {name} — от {amount}", - "PROMO_GROUPS_INFO_EMPTY": "Промогруппы с автовыдачей ещё не настроены.", - "MENU_FAQ": "❓ FAQ", - "FAQ_HEADER": "❓ FAQ", - "FAQ_PAGES_PROMPT": "Выберите вопрос:", - "FAQ_NOT_AVAILABLE": "FAQ временно недоступен.", - "FAQ_PAGE_UNTITLED": "Без названия", - "FAQ_PAGE_NOT_AVAILABLE": "Эта страница FAQ недоступна.", - "FAQ_PAGE_EMPTY": "Текст для этой страницы ещё не добавлен.", - "FAQ_PAGE_TITLE": "{title}", - "FAQ_PAGE_FOOTER": "Страница {current} из {total}", - "FAQ_BACK_TO_LIST": "⬅️ К списку FAQ", - "MENU_PRIVACY_POLICY": "🛡️ Политика конфиденциальности", - "PRIVACY_POLICY_HEADER": "🛡️ Политика конфиденциальности", - "PRIVACY_POLICY_NOT_AVAILABLE": "Политика конфиденциальности временно недоступна.", - "PRIVACY_POLICY_EMPTY_ALERT": "Текст политики конфиденциальности ещё не указан.", - "PRIVACY_POLICY_PAGE_INFO": "Страница {current} из {total}", - "MENU_LANGUAGE": "🌐 Язык", - "MENU_PROMOCODE": "🎫 Промокод", - "MENU_REFERRALS": "🤝 Партнерка", - "MENU_RULES": "📋 Правила сервиса", - "MENU_SUBSCRIPTION": "📱 Подписка", - "MENU_SUPPORT": "🛠️ Техподдержка", - "MENU_TRIAL": "🧪 Тестовая подписка", - "MY_BALANCE_BUTTON": "💰 Мой баланс", - "MY_SUBSCRIPTION_BUTTON": "📱 Моя подписка", - "NO": "❌ Нет", - "NO_SERVERS_AVAILABLE": "❌ Нет доступных серверов", - "NO_TRAFFIC_PACKAGES": "❌ Нет доступных пакетов", - "OPERATION_CANCELLED": "❌ Операция отменена", - "OTHER_APPS_BUTTON": "📋 Другие приложения", - "PAGINATION_NEXT": "➡️", - "PAGINATION_PREV": "⬅️", - "PAYMENTS_TEMPORARILY_UNAVAILABLE": "⚠️ Способы оплаты временно недоступны", - "PAYMENT_CARD_TRIBUTE": "💳 Банковская карта (Tribute)", - "PAYMENT_CARD_MULENPAY": "💳 Банковская карта (Mulen Pay)", - "PAYMENT_CARD_WATA": "💳 Банковская карта (WATA)", - "PAYMENT_CARD_PAL24": "🏦 СБП (PayPalych)", - "PAYMENT_CARD_YOOKASSA": "💳 Банковская карта (YooKassa)", - "PAYMENT_CRYPTOBOT": "🪙 Криптовалюта (CryptoBot)", - "PAYMENT_SBP_YOOKASSA": "🏬 Оплатить по СБП (YooKassa)", - "PAYMENT_TELEGRAM_STARS": "⭐ Telegram Stars", - "PAYMENT_VIA_SUPPORT": "🛠️ Через поддержку", - "PAY_NOW_BUTTON": "💳 Оплатить", - "PAY_WITH_COINS_BUTTON": "🪙 Оплатить", - "MULENPAY_TOPUP_PROMPT": "💳 Оплата через Mulen Pay\n\nВведите сумму для пополнения от 100 до 100 000 ₽.\nОплата происходит через защищенную платформу Mulen Pay.", - "MULENPAY_PAYMENT_ERROR": "❌ Ошибка создания платежа Mulen Pay. Попробуйте позже или обратитесь в поддержку.", - "MULENPAY_PAY_BUTTON": "💳 Оплатить через Mulen Pay", - "MULENPAY_PAYMENT_INSTRUCTIONS": "💳 Оплата через Mulen Pay\n\n💰 Сумма: {amount}\n🆔 ID платежа: {payment_id}\n\n📱 Инструкция:\n1. Нажмите кнопку ‘Оплатить через Mulen Pay’\n2. Следуйте подсказкам платежной системы\n3. Подтвердите перевод\n4. Средства зачислятся автоматически\n\n❓ Если возникнут проблемы, обратитесь в {support}", - "WATA_TOPUP_PROMPT": "💳 Оплата через WATA\n\nВведите сумму пополнения. Минимальная сумма — {min_amount}, максимальная — {max_amount}.\nОплата происходит через защищенную форму WATA.", - "WATA_PAYMENT_ERROR": "❌ Ошибка создания платежа WATA. Попробуйте позже или обратитесь в поддержку.", - "WATA_PAY_BUTTON": "💳 Оплатить через WATA", - "WATA_PAYMENT_INSTRUCTIONS": "💳 Оплата через WATA\n\n💰 Сумма: {amount}\n🆔 ID платежа: {payment_id}\n\n📱 Инструкция:\n1. Нажмите кнопку 'Оплатить через WATA'\n2. Следуйте подсказкам платежной системы\n3. Подтвердите перевод\n4. Средства зачислятся автоматически\n\n❓ Если возникнут проблемы, обратитесь в {support}", - "PAL24_TOPUP_PROMPT": "🏦 Оплата через PayPalych (СБП)\n\nВведите сумму для пополнения от 100 до 1 000 000 ₽.\nОплата проходит через систему быстрых платежей PayPalych.", - "PAL24_PAYMENT_ERROR": "❌ Ошибка создания платежа PayPalych. Попробуйте позже или обратитесь в поддержку.", - "PAL24_PAY_BUTTON": "🏦 Оплатить через PayPalych (СБП)", - "PAL24_SBP_PAY_BUTTON": "🏦 Оплатить через PayPalych (СБП)", - "PAL24_CARD_PAY_BUTTON": "💳 Оплатить банковской картой (PayPalych)", - "PAL24_PAYMENT_INSTRUCTIONS": "🏦 Оплата через PayPalych\n\n💰 Сумма: {amount}\n🆔 ID счета: {bill_id}\n\n📱 Инструкция:\n{steps}\n\n❓ Если возникнут проблемы, обратитесь в {support}", - "PAL24_INSTRUCTION_BUTTON": "{step}. Нажмите кнопку «{button}»", - "PAL24_INSTRUCTION_FOLLOW": "{step}. Следуйте подсказкам платёжной системы", - "PAL24_INSTRUCTION_CONFIRM": "{step}. Подтвердите перевод", - "PAL24_INSTRUCTION_COMPLETE": "{step}. Средства зачислятся автоматически", - "WATA_AMOUNT_TOO_LOW": "Минимальная сумма пополнения: {amount}", - "WATA_AMOUNT_TOO_HIGH": "Максимальная сумма пополнения: {amount}", - "WATA_STATUS_TITLE": "💳 Статус платежа WATA", - "WATA_STATUS_OPENED": "Ожидает оплаты", - "WATA_STATUS_CLOSED": "Обрабатывается", - "WATA_STATUS_PAID": "Оплачен", - "WATA_STATUS_DECLINED": "Отклонен", - "WATA_STATUS_UNKNOWN": "Неизвестно", - "PENDING_CANCEL_BUTTON": "⌛ Отмена", - "PERIOD_14_DAYS": "📅 14 дней - {settings.format_price(settings.PRICE_14_DAYS)}", - "PERIOD_180_DAYS": "📅 180 дней - {settings.format_price(settings.PRICE_180_DAYS)}", - "PERIOD_30_DAYS": "📅 30 дней - {settings.format_price(settings.PRICE_30_DAYS)}", - "PERIOD_360_DAYS": "📅 360 дней - {settings.format_price(settings.PRICE_360_DAYS)}", - "PERIOD_60_DAYS": "📅 60 дней - {settings.format_price(settings.PRICE_60_DAYS)}", - "PERIOD_90_DAYS": "📅 90 дней - {settings.format_price(settings.PRICE_90_DAYS)}", - "POST_REGISTRATION_TRIAL_BUTTON": "🚀 Подключиться бесплатно 🚀", - "PROMOCODE_ENTER": "🎫 Введите промокод:", - "PROMOCODE_EMPTY_INPUT": "❌ Введите корректный промокод", - "PROMOCODE_EXPIRED": "❌ Промокод истек", - "PROMOCODE_INVALID": "❌ Неверный промокод", - "PROMOCODE_SUCCESS": "🎉 Промокод активирован! {description}", - "PROMOCODE_USED": "❌ Промокод уже использован", - "REFERRAL_ANALYTICS_BUTTON": "📊 Аналитика", - "REFERRAL_CODE_APPLIED": "🎁 Реферальный код применен! Вы получите бонус после первой покупки.", - "REFERRAL_CODE_ACCEPTED": "✅ Реферальный код принят!", - "REFERRAL_CODE_INVALID": "❌ Неверный реферальный код", - "REFERRAL_CODE_INVALID_HELP": "❌ Неверный реферальный код.\n\n💡 Если у вас есть реферальный код, убедитесь что он введен правильно.\n⏭️ Для продолжения регистрации без реферального кода используйте команду /start", - "REFERRAL_CODE_QUESTION": "\n🤝 У вас есть реферальный код от друга?\n\nЕсли у вас есть промокод или реферальная ссылка от друга, введите её сейчас, чтобы получить бонус!\n\nВведите код или нажмите \"Пропустить\":\n", - "REFERRAL_CODE_SKIP": "⏭️ Пропустить", - "ALREADY_REGISTERED_REFERRAL": "ℹ️ Вы уже зарегистрированы в системе. Реферальная ссылка не может быть применена.", - "REFERRAL_INFO": "\n🤝 Реферальная программа\n\n👥 Приглашено: {referrals_count} друзей\n💰 Заработано: {earned_amount}\n\n🔗 Ваша реферальная ссылка:\n{referral_link}\n\n🎫 Ваш промокод:\n{referral_code}\n\n💰 Условия:\n• За каждого друга: {registration_bonus}\n• Процент с пополнений: {commission_percent}%\n", - "REFERRAL_INVITE_MESSAGE": "\n🎯 Приглашение в сервис\n\nПривет! Приглашаю тебя в отличный сервис!\n\n🎁 По моей ссылке ты получишь бонус: {bonus}\n\n🔗 Переходи: {link}\n🎫 Или используй промокод: {code}\n\n💪 Быстро, надежно, недорого!\n", - "REFERRAL_LIST_BUTTON": "👥 Список рефералов", - "RESET_ALL_DEVICES_BUTTON": "🔄 Сбросить все устройства", - "RESET_DEVICE_CONFIRM_BUTTON": "✅ Да, сбросить это устройство", - "RESET_TRAFFIC_BUTTON": "🔄 Сбросить трафик", - "RULES_ACCEPT": "✅ Принимаю правила", - "RULES_ACCEPTED_PROCESSING": "✅ Правила приняты! Завершаем регистрацию...", - "RULES_DECLINE": "❌ Не принимаю", - "RULES_HEADER": "📋 Правила сервиса", - "RULES_REQUIRED": "❗️ Для использования сервиса необходимо принять правила!", - "RULES_TEXT_DEFAULT": "📋 Правила использования сервиса\n\n1. Запрещено использовать сервис для противоправной деятельности\n2. Не распространяйте пиратский или вредоносный контент\n3. Запрещены спам и фишинг\n4. Нельзя использовать сервис для DDoS-атак\n5. Один аккаунт предназначен для одного пользователя\n6. Возвраты возможны только в исключительных случаях\n7. Администрация может заблокировать аккаунт при нарушении правил\n\nИспользуя сервис, вы подтверждаете согласие с этими правилами.", - "SELECT_COUNTRIES": "Выберите страны:", - "SELECT_DEVICES": "Количество устройств:", - "SELECT_PERIOD": "Выберите период:", - "SELECT_TRAFFIC": "Выберите пакет трафика:", - "SEND_CONTACT_BUTTON": "📱 Отправить контакт", - "SEND_LOCATION_BUTTON": "📍 Отправить геолокацию", - "SHOW_QR_BUTTON": "📱 Показать QR код", - "SHOW_SUBSCRIPTION_LINK": "📋 Показать ссылку подписки", - "SKIP_BUTTON": "⏭️ Пропустить", - "SUBSCRIPTION_ACTIVE": "✅ Активна", - "SUBSCRIPTION_EXTEND": "💎 Продлить подписку", - "SUBSCRIPTION_EXPIRED": "\n❌ Подписка истекла\n\nВаша подписка истекла. Для восстановления доступа продлите подписку.\n", - "SUBSCRIPTION_EXPIRING": "\n⚠️ Подписка истекает!\n\nВаша подписка истекает через {days} дней.\n\nНе забудьте продлить подписку, чтобы не потерять доступ к серверам.\n", - "SUBSCRIPTION_EXPIRING_PAID": "\n⚠️ Подписка истекает через {days_text}!\n\nВаша платная подписка истекает {end_date}.\n\n💳 Автоплатеж: {autopay_status}\n\n{action_text}\n", - "SUBSCRIPTION_INFO": "\n📱 Информация о подписке\n\n📊 Статус: {status}\n🎭 Тип: {type}\n📅 Действует до: {end_date}\n⏰ Осталось дней: {days_left}\n\n📈 Трафик: {traffic_used} / {traffic_limit}\n🌍 Серверы: {countries_count} стран\n📱 Устройства: {devices_used} / {devices_limit}\n\n💳 Автоплатеж: {autopay_status}\n", - "SUBSCRIPTION_NONE": "❌ Нет активной подписки", - "SUBSCRIPTION_NOT_FOUND": "❌ Подписка не найдена", - "SUBSCRIPTION_PURCHASED": "🎉 Подписка успешно приобретена!", - "MINIAPP_PURCHASE_DISCOUNT_PERIOD": "Скидка на период: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_DISCOUNT_TRAFFIC": "Скидка на трафик: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_DISCOUNT_SERVERS": "Скидка на серверы: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_DISCOUNT_DEVICES": "Скидка на устройства: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_DISCOUNT_PROMO": "Промо-предложение: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_BREAKDOWN_DISCOUNT_NOTE": "Скидка: -{amount} ({percent}%)", - "MINIAPP_PURCHASE_BREAKDOWN_BASE": "Базовый план", - "MINIAPP_PURCHASE_BREAKDOWN_TRAFFIC": "Трафик", - "MINIAPP_PURCHASE_BREAKDOWN_SERVERS": "Серверы", - "MINIAPP_PURCHASE_BREAKDOWN_DEVICES": "Устройства", - "MINIAPP_PURCHASE_BREAKDOWN_PROMO": "Промо скидка", - "MINIAPP_PURCHASE_SUMMARY_DISCOUNT": "Экономия {amount}", - "MINIAPP_PURCHASE_STATUS_INSUFFICIENT": "Недостаточно средств на балансе", - "SUBSCRIPTION_SETTINGS_BUTTON": "⚙️ Настройки подписки", - "SUBSCRIPTION_SUMMARY": "\n📋 Итоговая конфигурация\n\n📅 Период: {period} дней\n📈 Трафик: {traffic}\n🌍 Страны: {countries}\n📱 Устройства: {devices}\n\n💰 Итого к оплате: {total_price}\n\nПодтвердить покупку?\n", - "SUBSCRIPTION_TRIAL": "🧪 Тестовая подписка", - "SUB_STATUS_ACTIVE_FEW_DAYS": "💎 Активна\n⚠️ истекает через {days} дн.", - "SUB_STATUS_ACTIVE_LONG": "💎 Активна\n📅 до {end_date} ({days} дн.)", - "SUB_STATUS_ACTIVE_TODAY": "💎 Активна\n⚠️ истекает сегодня!", - "SUB_STATUS_ACTIVE_TOMORROW": "💎 Активна\n⚠️ истекает завтра!", - "SUB_STATUS_EXPIRED": "🔴 Истекла\n📅 {end_date}", - "SUB_STATUS_NONE": "❌ Отсутствует", - "SUB_STATUS_TRIAL_ACTIVE": "🎁 Тестовая подписка\n📅 до {end_date} ({days} дн.)", - "SUB_STATUS_TRIAL_TODAY": "🎁 Тестовая подписка\n⚠️ истекает сегодня!", - "SUB_STATUS_TRIAL_TOMORROW": "🎁 Тестовая подписка\n⚠️ истекает завтра!", - "SUCCESS": "✅ Успешно", - "REGISTRATION_COMPLETING": "✅ Завершаем регистрацию...", - "SUPPORT_INFO": "\n🛠️ Техническая поддержка\n\nПо всем вопросам обращайтесь к нашей поддержке:\n\n👤 {settings.SUPPORT_USERNAME}\n\nМы поможем с:\n• Настройкой подключения\n• Решением технических проблем \n• Вопросами по оплате\n• Другими вопросами\n\n⏰ Время ответа: обычно в течение 1-2 часов\n", - "SWITCH_TRAFFIC_BUTTON": "🔄 Переключить трафик", - "SWITCH_TRAFFIC_CONFIRM": "\n🔄 Подтверждение переключения трафика\n\nТекущий лимит: {current_traffic}\nНовый лимит: {new_traffic}\n\nДействие: {action}\n💰 {cost}\n\nПодтвердить переключение?\n", - "SWITCH_TRAFFIC_INFO": "\n🔄 Переключение лимита трафика\n\nТекущий лимит: {current_traffic}\nВыберите новый лимит трафика:\n\n💡 Важно:\n• При увеличении - доплата за разницу пропорционально оставшемуся времени\n• При уменьшении - возврат средств не производится\n• Счетчик использованного трафика НЕ сбрасывается\n", - "SWITCH_TRAFFIC_SUCCESS_DECREASE": "\n✅ Лимит трафика уменьшен!\n\n📊 Было: {old_traffic} → Стало: {new_traffic}\nℹ️ Возврат средств не производится\n", - "SWITCH_TRAFFIC_SUCCESS_INCREASE": "\n✅ Лимит трафика увеличен!\n\n📊 Было: {old_traffic} → Стало: {new_traffic}\n💰 Списано: {amount}\n", - "SWITCH_TRAFFIC_TITLE": "🔄 Переключение лимита трафика", - "TOPUP_BALANCE_BUTTON": "💳 Попол\\у043Dить баланс", - "TOP_UP_AMOUNT": "💳 Введите сумму для пополнения (в рублях):", - "TOP_UP_METHODS": "\n💳 Выберите способ оплаты\n\nСумма: {amount}\n", - "TOP_UP_STARS": "⭐ Telegram Stars", - "STARS_PAYMENT_ENROLLMENT_ERROR": "❌ Произошла ошибка при зачислении средств. Обратитесь в поддержку, платеж будет проверен вручную.", - "STARS_PAYMENT_PROCESSING_ERROR": "❌ Техническая ошибка при обработке платежа. Обратитесь в поддержку для решения проблемы.", - "STARS_PAYMENT_SUCCESS": "🎉 Платеж успешно обработан!\n\n⭐ Потрачено звезд: {stars_spent}\n💰 Зачислено на баланс: {amount} ₽\n🆔 ID транзакции: {transaction_id}...\n\nСпасибо за пополнение! 🚀", - "STARS_PAYMENT_USER_NOT_FOUND": "❌ Ошибка: пользователь не найден. Обратитесь в поддержку.", - "STARS_PRECHECK_INVALID_PAYLOAD": "Ошибка валидации платежа. Попробуйте еще раз.", - "STARS_PRECHECK_TECHNICAL_ERROR": "Техническая ошибка. Попробуйте позже.", - "STARS_PRECHECK_USER_NOT_FOUND": "Пользователь не найден. Обратитесь в поддержку.", - "TOP_UP_TRIBUTE": "💎 Банковская карта", - "TRAFFIC_100GB": "📊 100 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_100GB)}", - "TRAFFIC_10GB": "📊 10 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_10GB)}", - "TRAFFIC_250GB": "📊 250 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_250GB)}", - "TRAFFIC_25GB": "📊 25 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_25GB)}", - "TRAFFIC_50GB": "📊 50 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_50GB)}", - "TRAFFIC_5GB": "📊 5 ГБ - {settings.format_price(settings.PRICE_TRAFFIC_5GB)}", - "TRAFFIC_INSUFFICIENT_BALANCE": "⚠️ Недостаточно средств!\nТребуется: {required} (за {months} мес)\nУ вас: {balance}", - "TRAFFIC_NO_CHANGE": "ℹ️ Лимит трафика не изменился", - "TRAFFIC_PACKAGES_NOT_CONFIGURED": "⚠️ Пакеты трафика не настроены", - "TRAFFIC_UNLIMITED": "📊 Безлимит - {settings.format_price(settings.PRICE_TRAFFIC_UNLIMITED)}", - "TRIAL_ACTIVATED": "🎉 Тестовая подписка активирована!", - "TRIAL_ACTIVATE_BUTTON": "🎁 Активировать", - "TRIAL_ALREADY_USED": "❌ Тестовая подписка уже была использована", - "TRIAL_AVAILABLE": "\n🎁 Тестовая подписка\n\nВы можете получить бесплатную тестовую подписку:\n\n⏰ Период: {days} дней\n📈 Трафик: {traffic} ГБ\n📱 Устройства: {devices} шт.\n🌍 Сервер: {server_name}\n\nАктивировать тестовую подписку?\n", - "TRIAL_SERVER_RANDOM_POOL": "🎲 Случайный из {count} серверов", - "TRIAL_SERVER_DEFAULT_NAME": "🎯 Тестовый сервер", - "TRIAL_ENDING_SOON": "\n🎁 Тестовая подписка скоро закончится!\n\nВаша тестовая подписка истекает через несколько часов.\n\n💎 Не хотите остаться без сервиса?\nПереходите на полную подписку!\n\n🔥 Специальное предложение:\n• 30 дней всего за {price}\n• Безлимитный трафик \n• Все серверы доступны\n• Скорость до 1ГБит/сек\n\n⚡️ Успейте оформить до окончания тестового периода!\n", - "UNKNOWN_CALLBACK_ALERT": "❓ Неизвестная команда. Попробуйте ещё раз.", - "UNKNOWN_COMMAND_MESSAGE": "❓ Не понимаю эту команду. Используйте кнопки меню.", - "USER_NOT_FOUND": "❌ Пользователь не найден", - "WELCOME": "\n🎉 Добро пожаловать в сервис!\n\nНаш сервис предоставляет быстрый и безопасный доступ к интернету без ограничений.\n\n🔐 Преимущества:\n• Высокая скорость подключения\n• Серверы в разных странах\n• Надежная защита данных\n• Круглосуточная поддержка\n\nДля начала работы выберите язык интерфейса:\n", - "WELCOME_FALLBACK": "Добро пожаловать, {user_name}!", - "YES": "✅ Да", - "SUBSCRIPTION_STATUS_EXPIRED": "Истекла", - "SUBSCRIPTION_STATUS_TRIAL": "Тестовая", - "SUBSCRIPTION_STATUS_ACTIVE": "Активна", - "SUBSCRIPTION_STATUS_UNKNOWN": "Неизвестно", - "SUBSCRIPTION_TIME_LEFT_EXPIRED": "истёк", - "SUBSCRIPTION_TIME_LEFT_DAYS": "{days} дн.", - "SUBSCRIPTION_TIME_LEFT_HOURS": "{hours} ч.", - "SUBSCRIPTION_TIME_LEFT_MINUTES": "{minutes} мин.", - "SUBSCRIPTION_WARNING_TOMORROW": "\n⚠️ истекает завтра!", - "SUBSCRIPTION_WARNING_TODAY": "\n⚠️ истекает сегодня!", - "SUBSCRIPTION_WARNING_MINUTES": "\n🔴 истекает через несколько минут!", - "SUBSCRIPTION_TYPE_TRIAL": "Триал", - "SUBSCRIPTION_TYPE_PAID": "Платная", - "SUBSCRIPTION_TRAFFIC_UNLIMITED": "∞ (безлимит) | Использовано: {used} ГБ", - "SUBSCRIPTION_TRAFFIC_LIMITED": "{used} / {limit} ГБ", - "SUBSCRIPTION_NO_SERVERS": "Нет серверов", - "SUBSCRIPTION_OVERVIEW_TEMPLATE": "👤 {full_name}\n💰 Баланс: {balance}\n📱 Подписка: {status_emoji} {status_display}{warning}\n\n📱 Информация о подписке\n🎭 Тип: {subscription_type}\n📅 Действует до: {end_date}\n⏰ Осталось: {time_left}\n📈 Трафик: {traffic}\n🌍 Серверы: {servers}\n📱 Устройства: {devices_used} / {device_limit}", - "SUBSCRIPTION_CONNECTED_DEVICES_TITLE": "
📱 Подключенные устройства:\n", - "SUBSCRIPTION_CONNECTED_DEVICES_FOOTER": "
", - "SUBSCRIPTION_CONNECT_LINK_SECTION": "🔗 Ссылка для подключения:\n{subscription_url}", - "SUBSCRIPTION_CONNECT_LINK_PROMPT": "📱 Скопируйте ссылку и добавьте в ваше приложение", - "SUBSCRIPTION_IMPORT_LINK_SECTION": "🔗 Ваша ссылка для импорта в приложение:\n{subscription_url}", - "SUBSCRIPTION_IMPORT_INSTRUCTION_PROMPT": "📱 Нажмите кнопку ниже, чтобы получить инструкцию по настройке на вашем устройстве", - "SUBSCRIPTION_HAPP_LINK_PROMPT": "🔒 Ссылка на подписку создана. Нажмите кнопку \"Подключиться\" ниже, чтобы открыть её в Happ.", - "BACK_TO_MAIN_MENU_BUTTON": "⬅️ В главное меню", - "CUSTOM_MINIAPP_URL_NOT_SET": "⚠ Кастомная ссылка для мини-приложения не настроена", - "SUBSCRIPTION_LINK_GENERATING_NOTICE": "{purchase_text}\n\nСсылка генерируется, перейдите в раздел 'Моя подписка' через несколько секунд.", - "SUBSCRIPTION_NO_ACTIVE_LINK": "⚠ У вас нет активной подписки или ссылка еще генерируется", - "SUBSCRIPTION_CONNECT_MINIAPP_MESSAGE": "📱 Подключить подписку\n\n🚀 Нажмите кнопку ниже, чтобы открыть подписку в мини-приложении Telegram:", - "SUBSCRIPTION_CONNECT_CUSTOM_MESSAGE": "🚀 Подключить подписку\n\n📱 Нажмите кнопку ниже, чтобы открыть приложение:", - "SUBSCRIPTION_CONNECT_LINK_MESSAGE": "🚀 Подключить подписку\n\n🔗 Нажмите кнопку ниже, чтобы открыть ссылку подписки:", - "SUBSCRIPTION_LINK_HIDDEN_NOTICE": "ℹ️ Ссылка подписки доступна по кнопкам ниже или в разделе «Моя подписка».", - "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE": "📱 Подключить подписку\n\n🔗 Ссылка подписки:\n{subscription_url}\n\n💡 Выберите ваше устройство для получения подробной инструкции по настройке:", - "SUBSCRIPTION_CONNECT_DEVICE_MESSAGE_HIDDEN": "📱 Подключить подписку\n\nℹ️ Ссылка подписки доступна по кнопкам ниже или в разделе «Моя подписка».\n\n💡 Выберите ваше устройство для получения подробной инструкции по настройке:", - "SUBSCRIPTION_LINK_UNAVAILABLE": "❌ Ссылка подписки недоступна", - "SUBSCRIPTION_DEVICE_APPS_NOT_FOUND": "❌ Приложения для этого устройства не найдены", - "SUBSCRIPTION_DEVICE_GUIDE_TITLE": "📱 Настройка для {device_name}", - "SUBSCRIPTION_HAPP_OPEN_TITLE": "🔗 Подключение через Happ", - "SUBSCRIPTION_HAPP_OPEN_LINK": "🔓 Открыть ссылку в Happ", - "SUBSCRIPTION_HAPP_OPEN_HINT": "💡 Если ссылка не открывается автоматически, скопируйте её вручную:", - "SUBSCRIPTION_HAPP_OPEN_BUTTON_HINT": "▶️ Нажмите кнопку \"Подключиться\" ниже, чтобы открыть Happ и добавить подписку автоматически.", - "SUBSCRIPTION_HAPP_CRYPTOLINK_BLOCK": "
{crypto_link}
", - "SUBSCRIPTION_DEVICE_LINK_TITLE": "🔗 Ссылка подписки:", - "SUBSCRIPTION_DEVICE_FEATURED_APP": "📋 Рекомендуемое приложение: {app_name}", - "SUBSCRIPTION_DEVICE_OTHER_APPS": "📦 Другие приложения: {app_list}", - "SUBSCRIPTION_DEVICE_OTHER_APPS_HINT": "Нажмите кнопку \"Другие приложения\" ниже, чтобы выбрать приложение.", - "SUBSCRIPTION_DEVICE_STEP_INSTALL_TITLE": "Шаг 1 - Установка:", - "SUBSCRIPTION_DEVICE_STEP_ADD_TITLE": "Шаг 2 - Добавление подписки:", - "SUBSCRIPTION_DEVICE_STEP_CONNECT_TITLE": "Шаг 3 - Подключение:", - "SUBSCRIPTION_DEVICE_HOW_TO_TITLE": "💡 Как подключить:", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP1": "1. Установите приложение по ссылке выше", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP2": "2. Нажмите кнопку \"Подключиться\" ниже", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP3": "3. Откройте приложение и вставьте ссылку", - "SUBSCRIPTION_DEVICE_HOW_TO_STEP4": "4. Подключитесь к серверу", - "SUBSCRIPTION_APPS_TITLE": "📱 Приложения для {device_name}", - "SUBSCRIPTION_APPS_PROMPT": "Выберите приложение для подключения:", - "SUBSCRIPTION_APP_NOT_FOUND": "❌ Приложение не найдено", - "SUBSCRIPTION_SPECIFIC_APP_TITLE": "📱 {app_name} - {device_name}", - "SUBSCRIPTION_ADDITIONAL_STEP_TITLE": "{title}:", - "SUBSCRIPTION_LINK_USAGE_TITLE": "📱 Как использовать:", - "SUBSCRIPTION_LINK_STEP1": "1. Нажмите на ссылку выше чтобы её скопировать", - "SUBSCRIPTION_LINK_STEP2": "2. Откройте ваше приложение", - "SUBSCRIPTION_LINK_STEP3": "3. Найдите функцию \"Добавить подписку\" или \"Import\"", - "SUBSCRIPTION_LINK_STEP4": "4. Вставьте скопированную ссылку", - "SUBSCRIPTION_LINK_HINT": "💡 Если ссылка не скопировалась, выделите её вручную и скопируйте.", - "REFERRAL_PROGRAM_TITLE": "👥 Реферальная программа", - "REFERRAL_STATS_HEADER": "📊 Ваша статистика:", - "REFERRAL_STATS_INVITED": "• Приглашено пользователей: {count}", - "REFERRAL_STATS_FIRST_TOPUPS": "• Сделали первое пополнение: {count}", - "REFERRAL_STATS_ACTIVE": "• Активных рефералов: {count}", - "REFERRAL_STATS_CONVERSION": "• Конверсия: {rate}%", - "REFERRAL_STATS_TOTAL_EARNED": "• Заработано всего: {amount}", - "REFERRAL_STATS_MONTH_EARNED": "• За последний месяц: {amount}", - "REFERRAL_REWARDS_HEADER": "🎁 Как работают награды:", - "REFERRAL_REWARD_NEW_USER": "• Новый пользователь получает: {bonus} при первом пополнении от {minimum}", - "REFERRAL_REWARD_INVITER": "• Вы получаете при первом пополнении реферала: {bonus}", - "REFERRAL_REWARD_COMMISSION": "• Комиссия с каждого пополнения реферала: {percent}%", - "REFERRAL_LINK_TITLE": "🔗 Ваша реферальная ссылка:", - "REFERRAL_CODE_TITLE": "🆔 Ваш код: {code}", - "REFERRAL_RECENT_EARNINGS_HEADER": "💰 Последние начисления:", - "REFERRAL_EARNING_REASON_FIRST_TOPUP": "🎉 Первое пополнение", - "REFERRAL_EARNING_REASON_COMMISSION_TOPUP": "💰 Комиссия с пополнения", - "REFERRAL_EARNING_REASON_COMMISSION_PURCHASE": "💰 Комиссия с покупки", - "REFERRAL_RECENT_EARNINGS_ITEM": "• {reason}: {amount} от {referral_name}", - "REFERRAL_EARNINGS_BY_TYPE_HEADER": "📈 Доходы по типам:", - "REFERRAL_EARNINGS_FIRST_TOPUPS": "• Бонусы за первые пополнения: {count} ({amount})", - "REFERRAL_EARNINGS_TOPUPS": "• Комиссии с пополнений: {count} ({amount})", - "REFERRAL_EARNINGS_PURCHASES": "• Комиссии с покупок: {count} ({amount})", - "REFERRAL_INVITE_FOOTER": "📢 Приглашайте друзей и зарабатывайте!", - "REFERRAL_LINK_CAPTION": "🔗 Ваша реферальная ссылка:\n{link}", - "REFERRAL_LIST_EMPTY": "📋 У вас пока нет рефералов.\n\nПоделитесь своей реферальной ссылкой, чтобы начать зарабатывать!", - "REFERRAL_LIST_HEADER": "👥 Ваши рефералы (стр. {current}/{total})", - "REFERRAL_LIST_ITEM_HEADER": "{index}. {status} {name}", - "REFERRAL_LIST_ITEM_TOPUPS": " {emoji} Пополнений: {count}", - "REFERRAL_LIST_ITEM_EARNED": " 💎 Заработано с него: {amount}", - "REFERRAL_LIST_ITEM_REGISTERED": " 📅 Регистрация: {days} дн. назад", - "REFERRAL_LIST_ITEM_ACTIVITY": " 🕐 Активность: {days} дн. назад", - "REFERRAL_LIST_ITEM_ACTIVITY_LONG_AGO": " 🕐 Активность: давно", - "REFERRAL_LIST_PREV_PAGE": "⬅️ Назад", - "REFERRAL_LIST_NEXT_PAGE": "Вперед ➡️", - "REFERRAL_ANALYTICS_TITLE": "📊 Аналитика рефералов", - "REFERRAL_ANALYTICS_EARNINGS_HEADER": "💰 Доходы по периодам:", - "REFERRAL_ANALYTICS_EARNINGS_TODAY": "• Сегодня: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_WEEK": "• За неделю: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_MONTH": "• За месяц: {amount}", - "REFERRAL_ANALYTICS_EARNINGS_QUARTER": "• За квартал: {amount}", - "REFERRAL_ANALYTICS_TOP_TITLE": "🏆 Топ-{count} рефералов:", - "REFERRAL_ANALYTICS_TOP_ITEM": "{index}. {name}: {amount} ({count} начислений)", - "REFERRAL_ANALYTICS_FOOTER": "📈 Продолжайте развивать свою реферальную сеть!", - "REFERRAL_INVITE_TITLE": "🎉 Присоединяйся к сервису!", - "REFERRAL_INVITE_BONUS": "💎 При первом пополнении от {minimum} ты получишь {bonus} бонусом на баланс!", - "REFERRAL_INVITE_FEATURE_FAST": "🚀 Быстрое подключение", - "REFERRAL_INVITE_FEATURE_SERVERS": "🌍 Серверы по всему миру", - "REFERRAL_INVITE_FEATURE_SECURE": "🔒 Надежная защита", - "REFERRAL_INVITE_LINK_PROMPT": "👇 Переходи по ссылке:", - "REFERRAL_SHARE_BUTTON": "📤 Поделиться", - "REFERRAL_INVITE_CREATED_TITLE": "📝 Приглашение создано!", - "REFERRAL_INVITE_CREATED_INSTRUCTION": "Нажмите кнопку «📤 Поделиться» чтобы отправить приглашение в любой чат, или скопируйте текст ниже:", - "PAYMENT_METHODS_ONLY_SUPPORT": "💳 Способы пополнения баланса\n\n⚠️ В данный момент автоматические способы оплаты временно недоступны.\nОбратитесь в техподдержку для пополнения баланса.\n\nВыберите способ пополнения:", - "PAYMENT_METHODS_TITLE": "💳 Способы пополнения баланса", - "PAYMENT_METHODS_PROMPT": "Выберите удобный для вас способ оплаты:", - "PAYMENT_METHODS_FOOTER": "Выберите способ пополнения:", - "PAYMENT_RETURN_HOME_BUTTON": "🏠 На главную", - "PAYMENT_METHOD_STARS_NAME": "⭐ Telegram Stars", - "PAYMENT_METHOD_STARS_DESCRIPTION": "быстро и удобно", - "PAYMENT_METHOD_YOOKASSA_NAME": "💳 Банковская карта", - "PAYMENT_METHOD_YOOKASSA_DESCRIPTION": "через YooKassa", - "PAYMENT_METHOD_YOOKASSA_SBP_NAME": "🏦 СБП (YooKassa)", - "PAYMENT_METHOD_YOOKASSA_SBP_DESCRIPTION": "через систему быстрых платежей YooKassa", - "PAYMENT_METHOD_TRIBUTE_NAME": "💳 Банковская карта", - "PAYMENT_METHOD_TRIBUTE_DESCRIPTION": "через Tribute", - "PAYMENT_METHOD_MULENPAY_NAME": "💳 Банковская карта (Mulen Pay)", - "PAYMENT_METHOD_MULENPAY_DESCRIPTION": "через Mulen Pay", - "PAYMENT_METHOD_WATA_NAME": "💳 Банковская карта (WATA)", - "PAYMENT_METHOD_WATA_DESCRIPTION": "через WATA", - "PAYMENT_METHOD_PAL24_NAME": "🏦 СБП (PayPalych)", - "PAYMENT_METHOD_PAL24_DESCRIPTION": "через систему быстрых платежей", - "PAYMENT_METHOD_CRYPTOBOT_NAME": "🪙 Криптовалюта", - "PAYMENT_METHOD_CRYPTOBOT_DESCRIPTION": "через CryptoBot", - "PAYMENT_METHOD_SUPPORT_NAME": "🛠️ Через поддержку", - "PAYMENT_METHOD_SUPPORT_DESCRIPTION": "другие способы", - "PAYMENT_METHODS_UNAVAILABLE_ALERT": "⚠️ В данный момент автоматические способы оплаты временно недоступны. Для пополнения баланса обратитесь в техподдержку.", - "TRIAL_INACTIVE_1H": "⏳ Прошёл час, а подключение не выполнено\n\nЕсли возникли сложности — откройте инструкцию и следуйте шагам. Мы всегда готовы помочь!", - "TRIAL_INACTIVE_24H": "⏳ Прошли сутки с начала теста\n\nМы не видим трафика по вашей подписке. Загляните в инструкцию или напишите в поддержку — поможем подключиться!", - "SUBSCRIPTION_EXPIRED_1D": "⛔ Подписка закончилась\n\nДоступ был отключён {end_date}. Продлите подписку, чтобы вернуть полный доступ.\n\n💎 Стоимость продления: {price}", - "SUBSCRIPTION_EXPIRED_SECOND_WAVE": "🔥 Скидка {percent}% на продление\n\nАктивируйте предложение, чтобы получить дополнительную скидку. Она суммируется с вашей промогруппой и действует до {expires_at}.", - "SUBSCRIPTION_EXPIRED_THIRD_WAVE": "🎁 Индивидуальная скидка {percent}%\n\nПрошло {trigger_days} дней без подписки. Вернитесь и активируйте дополнительную скидку — она суммируется с промогруппой и действует до {expires_at}.", - "DISCOUNT_CLAIM_SUCCESS": "🎉 Скидка {percent}% активирована! \n\nОна суммируется с другими скидками и автоматически применится при следующей оплате.", - "DISCOUNT_CLAIM_ALREADY": "ℹ️ Скидка уже была активирована ранее.", - "DISCOUNT_CLAIM_EXPIRED": "⚠️ Время действия предложения истекло.", - "DISCOUNT_CLAIM_NOT_FOUND": "❌ Предложение не найдено.", - "DISCOUNT_CLAIM_ERROR": "❌ Не удалось активировать скидку. Попробуйте позже.", - "PROMO_OFFER_CLOSE": "❌ Закрыть", - "TEST_ACCESS_NO_SUBSCRIPTION": "❌ Для активации предложения необходима действующая подписка.", - "TEST_ACCESS_NO_SQUADS": "❌ Не удалось определить список серверов для теста. Обратитесь к администратору.", - "TEST_ACCESS_REMNAWAVE_ERROR": "❌ Не удалось подключить серверы. Попробуйте позже или обратитесь в поддержку.", - "TEST_ACCESS_UNKNOWN_ERROR": "❌ Не удалось активировать предложение. Попробуйте позже.", - "TEST_ACCESS_ALREADY_CONNECTED": "ℹ️ Этот сервер уже подключен к вашей подписке.", - "TEST_ACCESS_ACTIVATED_MESSAGE": "🎉 Тестовые сервера подключены! Доступ активен до {expires_at}.", - "TEST_ACCESS_ACTIVATED_POPUP": "✅ Доступ выдан!", - "DISCOUNT_BONUS_DESCRIPTION": "Скидка за продление подписки", - "SUBSCRIPTION_SUMMARY_PROMO_DISCOUNT": "- Промо-предложение: -{amount} ({percent}% дополнительно)", - "SUBSCRIPTION_PROMO_DISCOUNT_NOTE": "⚡ Доп. скидка {percent}%: -{amount}", - "SUBSCRIPTION_PROMO_DISCOUNT_HINT": "⚡ Активирована доп. скидка {percent}%. \n\nСуммируется с другими скидками!", - "SUBSCRIPTION_PROMO_DISCOUNT_TIMER": "⏳ Скидка действует ещё: {time_left}\n{bar}", - "NOTIFICATION_VALUE_INVALID": "❌ Некорректное значение, укажите число.", - "NOTIFICATION_VALUE_UPDATED": "✅ Настройки обновлены.", - "NOTIFY_PROMPT_SECOND_PERCENT": "Введите новый процент скидки для уведомления через 2-3 дня (0-100):", - "NOTIFY_PROMPT_SECOND_HOURS": "Введите количество часов действия скидки (1-168):", - "NOTIFY_PROMPT_THIRD_PERCENT": "Введите новый процент скидки для позднего предложения (0-100):", - "NOTIFY_PROMPT_THIRD_HOURS": "Введите количество часов действия скидки (1-168):", - "NOTIFY_PROMPT_THIRD_DAYS": "Через сколько дней после истечения отправлять предложение? (минимум 2):", - "ADMIN_MAIN_USERS_SUBSCRIPTIONS": "👥 Юзеры/Подписки", - "ADMIN_MAIN_SERVERS": "🌐 Серверы", - "ADMIN_MAIN_PRICING": "💰 Цены", - "ADMIN_MAIN_PROMO_STATS": "💰 Промокоды/Статистика", - "ADMIN_MAIN_SUPPORT": "🛟 Поддержка", - "ADMIN_MAIN_MESSAGES": "📨 Сообщения", - "ADMIN_MAIN_SETTINGS": "⚙️ Настройки", - "ADMIN_MAIN_SYSTEM": "🛠️ Система", - "ADMIN_USERS_SUBMENU_TITLE": "👥 **Управление пользователями и подписками**\n\n", - "ADMIN_PROMO_SUBMENU_TITLE": "💰 **Промокоды и статистика**\n\n", - "ADMIN_COMMUNICATIONS_SUBMENU_TITLE": "📨 **Коммуникации**\n\n", - "ADMIN_COMMUNICATIONS_SUBMENU_DESCRIPTION": "Управление рассылками и текстами интерфейса:", - "ADMIN_SUBMENU_SELECT_SECTION": "Выберите нужный раздел:", - "ADMIN_COMMUNICATIONS_WELCOME_TEXT": "👋 Приветственный текст", - "ADMIN_COMMUNICATIONS_MENU_MESSAGES": "📢 Сообщения в меню", - "ADMIN_COMMUNICATIONS_PROMO_OFFERS": "🎯 Промо-предложения", - "ADMIN_PROMO_OFFERS_TITLE": "🎯 Промо-предложения\n\nВыберите предложение для настройки:", - "ADMIN_PROMO_OFFER_TEST_ACCESS": "Тестовые сервера", - "ADMIN_PROMO_OFFER_EXTEND": "Скидка на продление", - "ADMIN_PROMO_OFFER_PURCHASE": "Скидка на покупку", - "ADMIN_PROMO_OFFER_TYPE": "Тип: {label}", - "ADMIN_PROMO_OFFER_VALID": "Срок действия: {hours} ч", - "ADMIN_PROMO_OFFER_DISCOUNT": "Доп. скидка: {percent}% (суммируется с другими скидками)", - "ADMIN_PROMO_OFFER_STACKABLE_NOTE": "Скидка применяется один раз и добавляется к промогруппе.", - "ADMIN_PROMO_OFFER_ACTIVE_DURATION": "Скидка после активации действует {hours} ч.", - "ADMIN_PROMO_OFFER_TEST_DURATION": "Доступ: {hours} ч", - "ADMIN_PROMO_OFFER_TEST_SQUAD_NAME": "Сервер: {name}", - "ADMIN_PROMO_OFFER_TEST_SQUADS": "Сквады: {squads}", - "ADMIN_PROMO_OFFER_TEST_SQUADS_EMPTY": "Сквады: не указаны", - "ADMIN_PROMO_OFFER_ALLOWED": "Доступные категории:", - "ADMIN_PROMO_OFFER_PREVIEW": "Предпросмотр:", - "ADMIN_PROMO_OFFER_PROMPT_MESSAGE": "Введите новый текст предложения:", - "ADMIN_PROMO_OFFER_PROMPT_BUTTON": "Введите новый текст кнопки:", - "ADMIN_PROMO_OFFER_PROMPT_VALID": "Укажите срок действия (в часах):", - "ADMIN_PROMO_OFFER_PROMPT_DISCOUNT": "Введите размер скидки в процентах:", - "ADMIN_PROMO_OFFER_PROMPT_ACTIVE_DURATION": "Укажите срок действия активированной скидки (в часах):", - "ADMIN_PROMO_OFFER_PROMPT_DURATION": "Введите длительность тестового доступа (в часах):", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_TITLE": "🌍 Выберите сквад", - "ADMIN_PROMO_OFFER_SELECTED_SQUAD": "Текущий сквад: {name}", - "ADMIN_PROMO_OFFER_SELECTED_SQUAD_UUID": "Текущий сквад: {uuid}", - "ADMIN_PROMO_OFFER_SELECTED_SQUAD_EMPTY": "Текущий сквад: не выбран", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_HINT": "Выберите сервер для тестового доступа из списка ниже.", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_PAGE": "Страница {page}/{total}", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_CLEAR": "🗑 Очистить", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_BACK": "↩️ Назад", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_UPDATED": "✅ Сквад обновлён", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_CLEARED": "✅ Сквад очищен", - "ADMIN_PROMO_OFFER_SELECT_SQUAD_NOT_FOUND": "❌ Сервер не найден", - "ADMIN_PROMO_OFFER_NO_SQUADS_AVAILABLE": "❌ Доступные серверы не найдены.", - "ADMIN_PROMO_OFFER_SENDING": "Начинаем рассылку...", - "ADMIN_PROMO_OFFER_NO_USERS": "Подходящих пользователей не найдено.", - "ADMIN_PROMO_OFFER_RESULT": "📬 Рассылка завершена\nОтправлено: {sent}\nОшибок: {failed}", - "ADMIN_PROMO_OFFER_SKIPPED": "Пропущено: {skipped} (уже есть доступ)", - "ADMIN_PROMO_OFFER_CTA_BUY": "Купить подписку", - "ADMIN_PROMO_OFFER_CTA_EXTEND": "Продлить подписку", - "ADMIN_PROMO_OFFER_BACK_TO_TEMPLATE": "↩️ К предложению", - "ADMIN_PROMO_OFFER_BACK_TO_LIST": "⬅️ К промопредложениям", - "ADMIN_PROMO_OFFER_LOGS": "📜 Лог операций", - "ADMIN_PROMO_OFFER_LOGS_TITLE": "📜 Лог операций промо-предложений", - "ADMIN_PROMO_OFFER_LOGS_PAGINATION": "Страница {page}/{total}", - "ADMIN_PROMO_OFFER_LOGS_EMPTY_BODY": "Записей пока нет.", - "ADMIN_PROMO_OFFER_LOGS_UNKNOWN_USER": "Неизвестный пользователь", - "ADMIN_PROMO_OFFER_LOGS_USER": "👤 {user}", - "ADMIN_PROMO_OFFER_LOGS_PERCENT": "📉 Скидка: {percent}%", - "ADMIN_PROMO_OFFER_LOGS_EFFECT_TEST": "🧪 Тестовый доступ", - "ADMIN_PROMO_OFFER_LOGS_EFFECT_DISCOUNT": "💸 Скидка", - "ADMIN_PROMO_OFFER_LOGS_SOURCE": "🏷 Источник: {source}", - "ADMIN_PROMO_OFFER_LOGS_REASON_GENERIC": "ℹ️ Действие: {reason}", - "ADMIN_PROMO_OFFER_LOGS_REASON_MANUAL": "💳 Списано при ручной оплате", - "ADMIN_PROMO_OFFER_LOGS_REASON_AUTOPAY": "🤖 Применено при автопродлении", - "ADMIN_PROMO_OFFER_LOGS_REASON_EXPIRED": "⏳ Предложение истекло", - "ADMIN_PROMO_OFFER_LOGS_REASON_TEST_EXPIRED": "⏳ Тестовый доступ отключён", - "ADMIN_PROMO_OFFER_LOGS_DESCRIPTION": "📝 {description}", - "ADMIN_PROMO_OFFER_LOGS_AMOUNT": "💰 Сумма: {amount}", - "ADMIN_PROMO_OFFER_LOGS_SQUAD": "🌍 Сквад: {squad}", - "ADMIN_PROMO_OFFER_LOGS_NEW_SQUADS": "🌍 Новые сквады: {squads}", - "ADMIN_PROMO_OFFER_LOGS_ACTION_CLAIMED": "Принято", - "ADMIN_PROMO_OFFER_LOGS_ACTION_CONSUMED": "Использовано", - "ADMIN_PROMO_OFFER_LOGS_ACTION_DISABLED": "Отключено", - "ADMIN_PROMO_OFFER_SEND_USER": "👤 Отправка пользователю", - "ADMIN_PROMO_OFFER_SEND_USER_TITLE": "👤 Отправка пользователю", - "ADMIN_PROMO_OFFER_SEND_USER_HINT": "Выберите пользователя для отправки промопредложения.", - "ADMIN_PROMO_OFFER_SEND_USER_SEARCH": "🔍 Поиск", - "ADMIN_PROMO_OFFER_SEND_USER_SEARCH_PROMPT": "Введите имя, username или ID пользователя для поиска:", - "ADMIN_PROMO_OFFER_SEND_USER_SEARCH_QUERY": "🔍 Поиск: {query}", - "ADMIN_PROMO_OFFER_SEND_USER_RESET": "❌ Сбросить поиск", - "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_SEGMENTS": "↩️ К выбору категории", - "ADMIN_PROMO_OFFER_SEND_USER_EMPTY": "Подходящие пользователи не найдены. Измените запрос поиска.", - "ADMIN_PROMO_OFFER_SEND_USER_PROFILE": "👤 {name}", - "ADMIN_PROMO_OFFER_SEND_USER_TELEGRAM": "🆔 {telegram_id}", - "ADMIN_PROMO_OFFER_SEND_USER_USERNAME": "🔗 @{username}", - "ADMIN_PROMO_OFFER_SEND_USER_STATUS": "Статус: {status}", - "ADMIN_PROMO_OFFER_SEND_USER_BALANCE": "Баланс: {amount}", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION": "💳 Подписка", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_STATUS": "Статус: {status}", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_END": "Истекает: {date}", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_END_UNKNOWN": "не указано", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_TRAFFIC": "Трафик: {used}/{limit} ГБ", - "ADMIN_PROMO_OFFER_SEND_USER_SUBSCRIPTION_SQUADS": "Подключено сквадов: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_NO_SUBSCRIPTION": "💳 Подписка отсутствует", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT": "💸 Активная скидка: {percent}%", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_UNTIL": " (до {date})", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_LEFT": " (до {date}, осталось {time})", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_SOURCE": " — источник: {source}", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_DISCOUNT_NONE": "💸 Активная скидка отсутствует", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_HEADER": "📨 Выбранное предложение", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_TYPE": "Тип: {label}", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_VALID": "Действует: {hours} ч.", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_TEST_DURATION": "Тестовый доступ: {hours} ч.", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_DISCOUNT": "Скидка: {percent}%", - "ADMIN_PROMO_OFFER_SEND_USER_TEMPLATE_ACTIVE_DURATION": "После активации действует {hours} ч.", - "ADMIN_PROMO_OFFER_SEND_USER_ACTIVE_OFFERS": "📨 Активные предложения:", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TEST": "Тестовый доступ", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_PERCENT": "{percent}%", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_BONUS": "+{bonus}%", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_NO_EXPIRY": "без срока", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ITEM": "• {description} (до {expires})", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ITEM_HEADER": "• {description}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_EXPIRES": " Истекает: {expires}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS": " Статус: {status}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS_ACCEPTED": "✅ Принято", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATUS_PENDING": "⏳ Не принято", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TIME_LEFT": " Осталось: {time}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TIME_LEFT_EXPIRED": "истекло", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_ACTIVE_DURATION": " После активации: {duration}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_TOTAL_DURATION": " Всего действует: {duration}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_HEADER": "📊 Статистика предложений", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_TOTAL": "Всего отправлено: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_ACCEPTED": "Принято: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_PENDING": "Не принято: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_OFFER_STATS_ACTIVE": "Активно сейчас: {count}", - "ADMIN_PROMO_OFFER_SEND_USER_TEST_ACCESS": "🧪 Активные тестовые доступы:", - "ADMIN_PROMO_OFFER_SEND_USER_TEST_ACCESS_ITEM": "• {squad} (до {expires})", - "ADMIN_PROMO_OFFER_SEND_USER_NO_ACTIVE_OFFERS": "📨 Активных предложений нет", - "ADMIN_PROMO_OFFER_SEND_USER_SEND_BUTTON": "📬 Отправить предложение", - "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_LIST": "⬅️ К списку пользователей", - "ADMIN_PROMO_OFFER_SEND_USER_BACK_TO_PROFILE": "👤 К профилю пользователя", - "ADMIN_PROMO_OFFER_SEND_USER_SUMMARY_TITLE": "📬 Отправка пользователю {name}", - "ADMIN_PROMO_OFFER_SEND_USER_SKIPPED": "Пропущено: {skipped} (уже есть доступ)", - "ADMIN_PROMO_OFFER_SEND_USER_EMPTY_RESULT": "Отправка не выполнена", - "ADMIN_SUPPORT_TICKETS": "🎫 Тикеты поддержки", - "ADMIN_SUPPORT_AUDIT": "🧾 Аудит модераторов", - "ADMIN_SUPPORT_SETTINGS": "🛟 Настройки поддержки", - "ADMIN_SUPPORT_SETTINGS_STATUS_ENABLED": "Включены", - "ADMIN_SUPPORT_SETTINGS_STATUS_DISABLED": "Отключены", - "ADMIN_SUPPORT_SETTINGS_MENU_LABEL": "Пункт «Техподдержка» в меню", - "ADMIN_SUPPORT_SETTINGS_MODE_TICKETS": "Тикеты", - "ADMIN_SUPPORT_SETTINGS_MODE_CONTACT": "Контакт", - "ADMIN_SUPPORT_SETTINGS_MODE_BOTH": "Оба", - "ADMIN_SUPPORT_SETTINGS_EDIT_DESCRIPTION": "📝 Изменить описание", - "ADMIN_SUPPORT_SETTINGS_ADMIN_NOTIFICATIONS": "Админ-уведомления", - "ADMIN_SUPPORT_SETTINGS_USER_NOTIFICATIONS": "Пользовательские уведомления", - "ADMIN_SUPPORT_SETTINGS_SLA_LABEL": "SLA", - "ADMIN_SUPPORT_SETTINGS_SLA_TIME": "⏳ Время SLA: {minutes} мин", - "ADMIN_SUPPORT_SETTINGS_MODERATORS_COUNT": "🧑‍⚖️ Модераторы: {count}", - "ADMIN_SUPPORT_SETTINGS_ADD_MODERATOR": "➕ Назначить модератора", - "ADMIN_SUPPORT_SETTINGS_REMOVE_MODERATOR": "➖ Удалить модератора", - "ADMIN_SUPPORT_SETTINGS_TITLE": "🛟 Настройки поддержки", - "ADMIN_SUPPORT_SETTINGS_DESCRIPTION": "Режим работы и видимость в меню. Ниже текущее описание меню поддержки:", - "ADMIN_SUPPORT_SLA_SETUP_PROMPT": "⏳ Настройка SLA\n\nВведите количество минут ожидания ответа (целое число > 0):", - "ADMIN_SUPPORT_SLA_INVALID": "❌ Введите корректное число минут (1-1440)", - "ADMIN_SUPPORT_SLA_SAVED": "✅ Значение SLA сохранено", - "ADMIN_SUPPORT_ASSIGN_MODERATOR_PROMPT": "🧑‍⚖️ Назначение модератора\n\nОтправьте Telegram ID пользователя (число)", - "ADMIN_SUPPORT_REMOVE_MODERATOR_PROMPT": "🧑‍⚖️ Удаление модератора\n\nОтправьте Telegram ID пользователя (число)", - "ADMIN_SUPPORT_INVALID_TELEGRAM_ID": "❌ Введите корректный Telegram ID (число)", - "ADMIN_SUPPORT_MODERATOR_REMOVED_SUCCESS": "✅ Модератор {tid} удалён", - "ADMIN_SUPPORT_MODERATOR_REMOVED_FAIL": "❌ Не удалось удалить модератора", - "ADMIN_SUPPORT_MODERATOR_ADDED_SUCCESS": "✅ Пользователь {tid} назначен модератором", - "ADMIN_SUPPORT_MODERATOR_ADDED_FAIL": "❌ Не удалось назначить модератора", - "ADMIN_SUPPORT_MODERATORS_EMPTY": "Список пуст", - "ADMIN_SUPPORT_MODERATORS_TITLE": "🧑‍⚖️ Модераторы", - "ADMIN_SUPPORT_SEND_DESCRIPTION": "📨 Прислать текст", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_TITLE": "📝 Редактирование описания поддержки", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CURRENT": "Текущее описание:", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_TITLE": "Контакт для режима «Контакт»", - "ADMIN_SUPPORT_EDIT_DESCRIPTION_CONTACT_HINT": "Добавьте в описание при необходимости.", - "ADMIN_SUPPORT_DESCRIPTION_UPDATED": "✅ Описание обновлено.", - "ADMIN_SUPPORT_DESCRIPTION_SENT": "Текст отправлен ниже", - "ADMIN_SUPPORT_MESSAGE_DELETED": "Сообщение удалено", - "ADMIN_SUPPORT_SUBMENU_TITLE": "🛟 **Поддержка**\n\n", - "ADMIN_SUPPORT_SUBMENU_DESCRIPTION": "Управление тикетами и настройками поддержки:", - "ADMIN_SUPPORT_SUBMENU_DESCRIPTION_MODERATOR": "Доступ к тикетам.", - "ADMIN_SUPPORT_MODERATION_TITLE": "🧑‍⚖️ Модерация поддержки", - "ADMIN_SUPPORT_MODERATION_DESCRIPTION": "Доступ к тикетам поддержки.", - "ADMIN_SUPPORT_AUDIT_TITLE": "🧾 Аудит модераторов", - "ADMIN_SUPPORT_AUDIT_EMPTY": "Пока пусто", - "ADMIN_SUPPORT_AUDIT_ROLE_MODERATOR": "Модератор", - "ADMIN_SUPPORT_AUDIT_ROLE_ADMIN": "Админ", - "ADMIN_SUPPORT_AUDIT_ACTION_CLOSE_TICKET": "Закрытие тикета", - "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_TIMED": "Блокировка (время)", - "ADMIN_SUPPORT_AUDIT_ACTION_BLOCK_PERM": "Блокировка (навсегда)", - "ADMIN_SUPPORT_AUDIT_ACTION_UNBLOCK": "Снятие блока", - "ADMIN_SETTINGS_SUBMENU_TITLE": "⚙️ **Настройки системы**\n\n", - "ADMIN_SETTINGS_SUBMENU_DESCRIPTION": "Управление Remnawave, мониторингом и другими настройками:", - "ADMIN_SETTINGS_PRIVACY_POLICY": "🛡️ Политика конфиденциальности", - "ADMIN_PRIVACY_POLICY_HEADER": "🛡️ Политика конфиденциальности", - "ADMIN_PRIVACY_POLICY_DESCRIPTION": "Политика конфиденциальности отображается в разделе «Инфо».", - "ADMIN_PRIVACY_POLICY_LANGUAGE": "Язык: {lang}", - "ADMIN_PRIVACY_POLICY_STATUS_DISABLED": "⚠️ Отображение политики отключено или текст пустой.", - "ADMIN_PRIVACY_POLICY_STATUS_ENABLED": "✅ Политика активна и доступна пользователям.", - "ADMIN_PRIVACY_POLICY_STATUS_ENABLED_EMPTY": "⚠️ Политика включена, но текст пуст — пользователи не увидят ее.", - "ADMIN_PRIVACY_POLICY_UPDATED_AT": "Последнее обновление: {timestamp}", - "ADMIN_PRIVACY_POLICY_PREVIEW_TITLE": "Предпросмотр текста:", - "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY": "Текст пока не задан.", - "ADMIN_PRIVACY_POLICY_ACTION_PROMPT": "Выберите действие:", - "ADMIN_PRIVACY_POLICY_EDIT_BUTTON": "✏️ Изменить текст", - "ADMIN_PRIVACY_POLICY_VIEW_BUTTON": "👀 Просмотреть текущий текст", - "ADMIN_PRIVACY_POLICY_ENABLE_BUTTON": "✅ Включить отображение", - "ADMIN_PRIVACY_POLICY_DISABLE_BUTTON": "🚫 Отключить отображение", - "ADMIN_PRIVACY_POLICY_HTML_HELP": "ℹ️ Справка по HTML", - "ADMIN_PRIVACY_POLICY_CURRENT_PREVIEW": "Текущий текст (предпросмотр):", - "ADMIN_PRIVACY_POLICY_EDIT_PROMPT": "Отправьте новый текст политики конфиденциальности. HTML-разметка разрешена.", - "ADMIN_PRIVACY_POLICY_EDIT_HINT": "Используйте /html_help для списка поддерживаемых тегов.", - "ADMIN_PRIVACY_POLICY_EDIT_TITLE": "Редактирование политики конфиденциальности", - "ADMIN_PRIVACY_POLICY_CANCEL": "❌ Отмена", - "ADMIN_PRIVACY_POLICY_TOO_LONG": "❌ Текст политики слишком длинный. Максимум 4000 символов.", - "ADMIN_PRIVACY_POLICY_HTML_ERROR": "❌ Ошибка HTML: {error}", - "ADMIN_PRIVACY_POLICY_SAVED": "✅ Политика конфиденциальности обновлена.", - "ADMIN_PRIVACY_POLICY_BACK_BUTTON": "⬅️ Назад к настройкам политики", - "ADMIN_PRIVACY_POLICY_PREVIEW_EMPTY_ALERT": "Текст политики конфиденциальности ещё не задан.", - "ADMIN_PRIVACY_POLICY_VIEW_TITLE": "👀 Текущий текст политики", - "ADMIN_PRIVACY_POLICY_VIEW_TRUNCATED": "\n\n⚠️ Текст сокращён для отображения. Пользователи увидят полную версию в меню.", - "ADMIN_PRIVACY_POLICY_ENABLED": "✅ Политика включена", - "ADMIN_PRIVACY_POLICY_DISABLED": "🚫 Политика отключена", - "ADMIN_PRIVACY_POLICY_RETURN_TO_EDIT": "⬅️ Назад к редактированию", - "ADMIN_SYSTEM_SUBMENU_TITLE": "🛠️ **Системные функции**\n\n", - "ADMIN_SYSTEM_SUBMENU_DESCRIPTION": "Отчеты, обновления, логи, резервные копии и системные операции:", - "ADMIN_SETTINGS_BOT_CONFIG": "🧩 Конфигурация бота", - "ADMIN_SETTINGS_MAINTENANCE": "🔧 Техработы", - "ADMIN_SYSTEM_UPDATES": "📄 Обновления", - "ADMIN_SYSTEM_BACKUPS": "🗄️ Резервные копии", - "ADMIN_SYSTEM_LOGS": "🧾 Логи", - "ADMIN_REPORTS_PREVIOUS_DAY": "📆 За вчера", - "ADMIN_REPORTS_LAST_WEEK": "🗓️ За неделю", - "ADMIN_REPORTS_LAST_MONTH": "📅 За месяц", - "ADMIN_USERS_ALL": "👥 Все пользователи", - "ADMIN_USERS_SEARCH": "🔍 Поиск", - "ADMIN_USERS_INACTIVE": "🗑️ Неактивные", - "ADMIN_USERS_FILTERS": "⚙️ Фильтры", - "ADMIN_USERS_FILTER_BALANCE": "💰 По балансу", - "ADMIN_USERS_FILTER_TRAFFIC": "📶 По трафику", - "ADMIN_USERS_FILTER_ACTIVITY": "🕒 По активности", - "ADMIN_USERS_FILTER_SPENDING": "💳 По сумме трат", - "ADMIN_USERS_FILTER_PURCHASES": "🛒 По количеству покупок", - "ADMIN_USERS_FILTER_CAMPAIGN": "📢 По кампании", - "ADMIN_SUBSCRIPTIONS_ALL": "📱 Все подписки", - "ADMIN_SUBSCRIPTIONS_EXPIRING": "⏰ Истекающие", - "ADMIN_SUBSCRIPTIONS_PRICING": "⚙️ Настройки цен", - "ADMIN_SUBSCRIPTIONS_COUNTRIES": "🌍 Управление странами", - "ADMIN_PROMOCODES_ALL": "🎫 Все промокоды", - "ADMIN_PROMOCODES_CREATE": "➕ Создать", - "ADMIN_PROMOCODES_GENERAL_STATS": "📊 Общая статистика", - "ADMIN_CAMPAIGNS_LIST": "📋 Список кампаний", - "ADMIN_CAMPAIGNS_CREATE": "➕ Создать", - "ADMIN_CAMPAIGNS_GENERAL_STATS": "📊 Общая статистика", - "ADMIN_CAMPAIGN_DISABLE": "🔴 Выключить", - "ADMIN_CAMPAIGN_ENABLE": "🟢 Включить", - "ADMIN_CAMPAIGN_STATS": "📊 Статистика", - "ADMIN_CAMPAIGN_EDIT": "✏️ Редактировать", - "ADMIN_CAMPAIGN_DELETE": "🗑️ Удалить", - "ADMIN_BACK_TO_LIST": "⬅️ К списку", - "ADMIN_CAMPAIGN_EDIT_NAME": "✏️ Название", - "ADMIN_CAMPAIGN_EDIT_START": "🔗 Параметр", - "ADMIN_CAMPAIGN_BONUS_BALANCE": "💰 Бонус на баланс", - "ADMIN_CAMPAIGN_DURATION": "📅 Длительность", - "ADMIN_CAMPAIGN_TRAFFIC": "🌐 Трафик", - "ADMIN_CAMPAIGN_DEVICES": "📱 Устройства", - "ADMIN_CAMPAIGN_SERVERS": "🌍 Серверы", - "ADMIN_CAMPAIGN_BONUS_SUBSCRIPTION": "📱 Бонус на подписку", - "ADMIN_PROMOCODE_EDIT": "✏️ Редактировать", - "ADMIN_PROMOCODE_TOGGLE": "🔄 Статус", - "ADMIN_PROMOCODE_STATS": "📊 Статистика", - "ADMIN_PROMOCODE_DELETE": "🗑️ Удалить", - "ADMIN_MESSAGES_ALL_USERS": "📨 Всем пользователям", - "ADMIN_MESSAGES_BY_SUBSCRIPTIONS": "🎯 По подпискам", - "ADMIN_MESSAGES_BY_CRITERIA": "🔍 По критериям", - "ADMIN_MESSAGES_HISTORY": "📋 История", - "ADMIN_MONITORING_START": "▶️ Запустить", - "ADMIN_MONITORING_STOP": "⏸️ Остановить", - "ADMIN_MONITORING_STATUS": "📊 Статус", - "ADMIN_MONITORING_LOGS": "📋 Логи", - "ADMIN_MONITORING_SETTINGS_BUTTON": "⚙️ Настройки", - "ADMIN_REMNAWAVE_SYSTEM_STATS": "📊 Системная статистика", - "ADMIN_REMNAWAVE_MANAGE_NODES": "🖥️ Управление нодами", - "ADMIN_REMNAWAVE_SYNC": "🔄 Синхронизация", - "ADMIN_REMNAWAVE_MANAGE_SQUADS": "🌐 Управление сквадами", - "ADMIN_REMNAWAVE_MIGRATION": "🚚 Переезд", - "ADMIN_REMNAWAVE_TRAFFIC": "📈 Трафик", - "ADMIN_SQUAD_MIGRATION_TITLE": "🚚 Переезд сквадов", - "ADMIN_SQUAD_MIGRATION_SELECT_SOURCE": "Выберите сквад, из которого нужно переехать:", - "ADMIN_SQUAD_MIGRATION_NO_OPTIONS": "Нет доступных сквадов. Добавьте новые или отмените операцию.", - "ADMIN_SQUAD_MIGRATION_STATUS_AVAILABLE": "✅ Доступен", - "ADMIN_SQUAD_MIGRATION_STATUS_UNAVAILABLE": "🚫 Недоступен", - "ADMIN_SQUAD_MIGRATION_SERVER_LABEL": "{name} — 👥 {users} ({status})", - "ADMIN_SQUAD_MIGRATION_SQUAD_BUTTON": "🌍 {name} — 👥 {users} ({status})", - "ADMIN_SQUAD_MIGRATION_STATUS_AVAILABLE_SHORT": "✅", - "ADMIN_SQUAD_MIGRATION_STATUS_UNAVAILABLE_SHORT": "🚫", - "ADMIN_SQUAD_MIGRATION_PAGE": "Стр. {page}/{pages}", - "ADMIN_SQUAD_MIGRATION_SELECTED_SOURCE": "Источник: {source}", - "ADMIN_SQUAD_MIGRATION_SELECT_TARGET": "Выберите сквад, в который нужно переехать:", - "ADMIN_SQUAD_MIGRATION_TARGET_EMPTY": "Нет других сквадов для переезда. Отмените операцию или создайте новые сквады.", - "ADMIN_SQUAD_MIGRATION_SQUAD_NOT_FOUND": "Сквад не найден или недоступен.", - "ADMIN_SQUAD_MIGRATION_SAME_SQUAD": "Нельзя выбрать тот же сквад.", - "ADMIN_SQUAD_MIGRATION_CONFIRM_DETAILS": "Проверьте параметры переезда:", - "ADMIN_SQUAD_MIGRATION_CONFIRM_SOURCE": "• Из: {source}", - "ADMIN_SQUAD_MIGRATION_CONFIRM_TARGET": "• В: {target}", - "ADMIN_SQUAD_MIGRATION_CONFIRM_COUNT": "• Пользователей к переносу: {count}", - "ADMIN_SQUAD_MIGRATION_CONFIRM_PROMPT": "Подтвердите выполнение операции.", - "ADMIN_SQUAD_MIGRATION_CONFIRM_BUTTON": "✅ Подтвердить", - "ADMIN_SQUAD_MIGRATION_CHANGE_TARGET": "🔄 Изменить сервер назначения", - "ADMIN_SQUAD_MIGRATION_IN_PROGRESS": "Запускаю переезд...", - "ADMIN_SQUAD_MIGRATION_API_ERROR": "❌ Remnawave API не настроен: {error}", - "ADMIN_SQUAD_MIGRATION_ERROR": "❌ Не удалось выполнить переезд (код: {code}). {details}", - "ADMIN_SQUAD_MIGRATION_NEW_BUTTON": "🔁 Новый переезд", - "ADMIN_SQUAD_MIGRATION_BACK_BUTTON": "⬅️ В Remnawave", - "ADMIN_SQUAD_MIGRATION_SUCCESS_TITLE": "✅ Переезд завершен", - "ADMIN_SQUAD_MIGRATION_RESULT_TOTAL": "Найдено подписок: {count}", - "ADMIN_SQUAD_MIGRATION_RESULT_UPDATED": "Перенесено: {count}", - "ADMIN_SQUAD_MIGRATION_RESULT_PANEL_UPDATED": "Обновлено в панели: {count}", - "ADMIN_SQUAD_MIGRATION_RESULT_PANEL_FAILED": "Не удалось обновить в панели: {count}", - "ADMIN_SQUAD_MIGRATION_CANCELLED": "❌ Переезд отменен.", - "ADMIN_SQUAD_MIGRATION_PAGE_HINT": "Это текущая страница.", - "ADMIN_STATS_USERS": "👥 Пользователи", - "ADMIN_STATS_SUBSCRIPTIONS": "📱 Подписки", - "ADMIN_STATS_REVENUE": "💰 Доходы", - "ADMIN_STATS_REFERRALS": "🤝 Партнерка", - "ADMIN_STATS_SUMMARY": "📊 Общая сводка", - "ADMIN_STATS_BUTTON": "📊 Статистика", - "ADMIN_USER_BALANCE": "💰 Баланс", - "ADMIN_USER_SUBSCRIPTION_SETTINGS": "📱 Подписка и настройки", - "ADMIN_USER_STATISTICS": "📊 Статистика", - "ADMIN_USER_TRANSACTIONS": "📋 Транзакции", - "ADMIN_USER_BLOCK": "🚫 Заблокировать", - "ADMIN_USER_DELETE": "🗑️ Удалить", - "ADMIN_USER_UNBLOCK": "✅ Разблокировать", - "ADMIN_USER_ALREADY_DELETED": "❌ Пользователь удален", - "ADMIN_USER_MANAGEMENT_PROFILE": "👤 Управление пользователем\n\nОсновная информация:\n• Имя: {name}\n• ID: {telegram_id}\n• Username: {username}\n• Статус: {status}\n• Язык: {language}\n\nФинансы:\n• Баланс: {balance}\n• Транзакций: {transactions}\n\nАктивность:\n• Регистрация: {registration}\n• Последняя активность: {last_activity}\n• Дней с регистрации: {registration_days}", - "ADMIN_USER_USERNAME_NOT_SET": "не указан", - "ADMIN_USER_STATUS_ACTIVE": "✅ Активен", - "ADMIN_USER_STATUS_BLOCKED": "🚫 Заблокирован", - "ADMIN_USER_STATUS_DELETED": "🗑️ Удален", - "ADMIN_USER_STATUS_UNKNOWN": "❓ Неизвестно", - "ADMIN_USER_LAST_ACTIVITY_UNKNOWN": "Неизвестно", - "ADMIN_USER_SUBSCRIPTION_TYPE_TRIAL": "🎁 Триал", - "ADMIN_USER_SUBSCRIPTION_TYPE_PAID": "💎 Платная", - "ADMIN_USER_SUBSCRIPTION_STATUS_ACTIVE": "✅ Активна", - "ADMIN_USER_SUBSCRIPTION_STATUS_INACTIVE": "❌ Неактивна", - "ADMIN_USER_TRAFFIC_USAGE": "{used}/{limit} ГБ", - "ADMIN_USER_MANAGEMENT_SUBSCRIPTION": "Подписка:\n• Тип: {type}\n• Статус: {status}\n• До: {end_date}\n• Трафик: {traffic}\n• Устройства: {devices}\n• Стран: {countries}", - "ADMIN_USER_MANAGEMENT_SUBSCRIPTION_NONE": "Подписка: Отсутствует", - "ADMIN_USER_MANAGEMENT_PROMO_GROUP": "Промогруппа:\n• Название: {name}\n• Скидка на сервера: {server_discount}%\n• Скидка на трафик: {traffic_discount}%\n• Скидка на устройства: {device_discount}%", - "ADMIN_USER_MANAGEMENT_PROMO_GROUP_NONE": "Промогруппа: Не назначена", - "ADMIN_PROMOCODE_TYPE_BALANCE": "💰 Баланс", - "ADMIN_PROMOCODE_TYPE_DAYS": "📅 Дни подписки", - "ADMIN_PROMOCODE_TYPE_TRIAL": "🎁 Триал", - "ADMIN_BROADCAST_TARGET_ALL": "👥 Всем", - "ADMIN_BROADCAST_TARGET_ACTIVE": "📱 С подпиской", - "ADMIN_BROADCAST_TARGET_TRIAL": "🎁 Триал", - "ADMIN_BROADCAST_TARGET_NO_SUB": "❌ Без подписки", - "ADMIN_BROADCAST_TARGET_EXPIRING": "⏰ Истекающие", - "ADMIN_BROADCAST_TARGET_EXPIRED": "🔚 Истекшие", - "ADMIN_BROADCAST_TARGET_ACTIVE_ZERO": "🧊 Активна 0 ГБ", - "ADMIN_BROADCAST_TARGET_TRIAL_ZERO": "🥶 Триал 0 ГБ", - "ADMIN_CRITERIA_TODAY": "📅 Сегодня", - "ADMIN_CRITERIA_WEEK": "📅 За неделю", - "ADMIN_CRITERIA_MONTH": "📅 За месяц", - "ADMIN_CRITERIA_ACTIVE_TODAY": "⚡ Активные сегодня", - "ADMIN_CRITERIA_INACTIVE_WEEK": "💤 Неактивные 7+ дней", - "ADMIN_CRITERIA_INACTIVE_MONTH": "💤 Неактивные 30+ дней", - "ADMIN_CRITERIA_REFERRALS": "🤝 Через рефералов", - "ADMIN_CRITERIA_PROMOCODES": "🎫 Использовали промокоды", - "ADMIN_CRITERIA_DIRECT": "🎯 Прямая регистрация", - "ADMIN_HISTORY_REFRESH": "🔄 Обновить", - "ADMIN_SYNC_FULL": "🔄 Полная синхронизация", - "ADMIN_SYNC_ONLY_NEW": "🆕 Только новые", - "ADMIN_SYNC_UPDATE": "📈 Обновить данные", - "ADMIN_SYNC_VALIDATE": "🔍 Валидация", - "ADMIN_SYNC_CLEANUP": "🧹 Очистка", - "ADMIN_SYNC_RECOMMENDATIONS": "💡 Рекомендации", - "ADMIN_SYNC_CONFIRM": "✅ Подтвердить", - "ADMIN_SYNC_RETRY": "🔄 Повторить", - "ADMIN_SYNC_BACK": "⬅️ К синхронизации", - "ADMIN_BACK_TO_MAIN": "🏠 В главное меню", - "ADMIN_CANCEL": "❌ Отмена", - "ADMIN_CONTINUE": "✅ Продолжить", - "ADMIN_PERIOD_TODAY": "📅 Сегодня", - "ADMIN_PERIOD_YESTERDAY": "📅 Вчера", - "ADMIN_PERIOD_WEEK": "📅 Неделя", - "ADMIN_PERIOD_MONTH": "📅 Месяц", - "ADMIN_PERIOD_ALL": "📅 Все время", - "ADMIN_NODE_ENABLE": "▶️ Включить", - "ADMIN_NODE_DISABLE": "⏸️ Отключить", - "ADMIN_NODE_RESTART": "🔄 Перезагрузить", - "ADMIN_NODE_STATS": "📊 Статистика", - "ADMIN_SQUAD_ADD_ALL": "👥 Добавить всех пользователей", - "ADMIN_SQUAD_REMOVE_ALL": "❌ Удалить всех пользователей", - "ADMIN_SQUAD_EDIT": "✏️ Редактировать", - "ADMIN_SQUAD_DELETE": "🗑️ Удалить сквад", - "ADMIN_SQUAD_EDIT_INBOUNDS": "🔧 Изменить инбаунды", - "ADMIN_SQUAD_RENAME": "✏️ Переименовать", - "ADMIN_BACK_TO_SQUADS": "⬅️ Назад к сквадам", - "ADMIN_MONITORING_STOP_HARD": "⏹️ Остановить", - "ADMIN_MONITORING_FORCE_CHECK": "🔄 Принудительная проверка", - "ADMIN_MONITORING_TEST_NOTIFICATIONS": "🧪 Тест уведомлений", - "ADMIN_MONITORING_STATISTICS": "📊 Статистика", - "ADMIN_BACK_TO_ADMIN": "⬅️ Назад в админку", - "ADMIN_MONITORING_CLEAR_OLD": "🗑️ Очистить старые", - "ADMIN_MONITORING_CLEAR": "🗑️ Очистить", - "ADMIN_BACK_TO_MONITORING": "⬅️ Назад к мониторингу", - "ADMIN_MONITORING_DELETE_LOG": "🗑️ Удалить этот лог", - "ADMIN_MONITORING_BACK_TO_LOGS": "⬅️ К списку логов", - "ADMIN_MONITORING_CONFIRM_CLEAR": "✅ Да, очистить", - "ADMIN_MONITORING_CLEAR_ALL": "🗑️ Очистить ВСЕ логи", - "ADMIN_MONITORING_RESTART": "🔄 Перезапустить", - "ADMIN_MONITORING_CHECK_NOW": "🔄 Проверить сейчас", - "ADMIN_MONITORING_SET_INTERVAL": "⏱️ Интервал проверки", - "ADMIN_MONITORING_NOTIFICATIONS": "🔔 Уведомления", - "ADMIN_MONITORING_AUTOPAY_SETTINGS": "💳 Настройки автооплаты", - "ADMIN_MONITORING_AUTO_CLEANUP": "🧹 Автоочистка логов", - "ADMIN_MONITORING_FILTER_SUCCESS": "✅ Успешные", - "ADMIN_MONITORING_FILTER_ERRORS": "❌ Ошибки", - "ADMIN_MONITORING_FILTER_CYCLES": "🔄 Циклы мониторинга", - "ADMIN_MONITORING_FILTER_AUTOPAY": "💳 Автооплаты", - "ADMIN_MONITORING_ALL_LOGS": "📋 Все логи", - "ADMIN_SERVERS_LIST": "📋 Список серверов", - "ADMIN_SERVERS_SYNC": "🔄 Синхронизация", - "ADMIN_SERVERS_ADD": "➕ Добавить сервер", - "ADMIN_SERVERS_STATS": "📊 Статистика", - "ADMIN_SERVER_DISABLE": "❌ Отключить", - "ADMIN_SERVER_ENABLE": "✅ Включить", - "ADMIN_SERVER_EDIT_NAME": "✏️ Название", - "ADMIN_SERVER_EDIT_PRICE": "💰 Цена", - "ADMIN_SERVER_EDIT_COUNTRY": "🌍 Страна", - "ADMIN_SERVER_EDIT_LIMIT": "👥 Лимит", - "ADMIN_SERVER_EDIT_DESCRIPTION": "📝 Описание", - "ADMIN_SERVER_DELETE": "🗑️ Удалить", - "ADMIN_MAINTENANCE_DISABLE": "🟢 Выключить техработы", - "ADMIN_MAINTENANCE_ENABLE": "🔧 Включить техработы", - "ADMIN_MAINTENANCE_STOP_MONITORING": "⏹️ Остановить мониторинг", - "ADMIN_MAINTENANCE_START_MONITORING": "▶️ Запустить мониторинг", - "ADMIN_MAINTENANCE_CHECK_API": "🔍 Проверить API", - "ADMIN_MAINTENANCE_PANEL_STATUS": "🌐 Статус панели", - "ADMIN_MAINTENANCE_SEND_NOTIFICATION": "📢 Отправить уведомление", - "ADMIN_REFRESH": "🔄 Обновить", - "ADMIN_WELCOME_DISABLE": "🔴 Отключить", - "ADMIN_WELCOME_ENABLE": "🟢 Включить", - "ADMIN_WELCOME_EDIT": "📝 Изменить текст", - "ADMIN_WELCOME_SHOW": "👁️ Показать текущий", - "ADMIN_WELCOME_PREVIEW": "👁️ Предпросмотр", - "ADMIN_WELCOME_RESET": "🔄 Сбросить", - "ADMIN_WELCOME_HTML": "🏷️ HTML форматирование", - "ADMIN_WELCOME_PLACEHOLDERS": "💡 Плейсхолдеры", - "ADMIN_BROADCAST_ADD_PHOTO": "📷 Добавить фото", - "ADMIN_BROADCAST_ADD_VIDEO": "🎥 Добавить видео", - "ADMIN_BROADCAST_ADD_DOCUMENT": "📄 Добавить документ", - "ADMIN_BROADCAST_SKIP_MEDIA": "⏭️ Пропустить медиа", - "ADMIN_BROADCAST_USE_MEDIA": "✅ Использовать это медиа", - "ADMIN_BROADCAST_REPLACE_MEDIA": "🔄 Заменить медиа", - "ADMIN_BROADCAST_NO_MEDIA": "⏭️ Без медиа", - "ADMIN_BROADCAST_CHANGE_MEDIA": "🖼️ Изменить медиа", - "ADMIN_BROADCAST_BUTTON_BALANCE": "💰 Пополнить баланс", - "ADMIN_BROADCAST_BUTTON_REFERRALS": "🤝 Партнерка", - "ADMIN_BROADCAST_BUTTON_PROMOCODE": "🎫 Промокод", - "ADMIN_BROADCAST_BUTTON_CONNECT": "🔗 Подключиться", - "ADMIN_BROADCAST_BUTTON_SUBSCRIPTION": "📱 Подписка", - "ADMIN_BROADCAST_BUTTON_SUPPORT": "🛠️ Техподдержка", - "ADMIN_BROADCAST_BUTTON_HOME": "🏠 На главную", - "ADMIN_PRICING_SUMMARY_EMPTY": "—", - "ADMIN_PRICING_MENU_TITLE": "Управление ценами", - "ADMIN_PRICING_MENU_DESCRIPTION": "Быстрый доступ к тарифам подписок, пакетам трафика и дополнительным услугам.", - "ADMIN_PRICING_MENU_SUMMARY": "Краткая сводка:", - "ADMIN_PRICING_MENU_SUMMARY_CORE": "• Базовые лимиты: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_EXTRA": "• Дополнительно: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_PERIOD_OPTIONS": "• Доступные периоды: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_PERIODS": "• Периоды: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_TRAFFIC": "• Трафик: {summary}", - "ADMIN_PRICING_MENU_SUMMARY_TRIAL": "• Триал: {summary}", - "ADMIN_PRICING_MENU_PROMPT": "Выберите раздел для редактирования:", - "ADMIN_PRICING_BUTTON_CORE": "⚙️ Базовые лимиты", - "ADMIN_PRICING_BUTTON_EXTRA": "➕ Дополнительно", - "ADMIN_PRICING_BUTTON_PERIOD_OPTIONS": "🗓 Доступные периоды", - "ADMIN_PRICING_BUTTON_PERIODS": "🗓 Периоды подписки", - "ADMIN_PRICING_BUTTON_TRAFFIC": "📦 Пакеты трафика", - "ADMIN_PRICING_BUTTON_TRAFFIC_OPTIONS": "🚦 Отображение пакетов", - "ADMIN_PRICING_BUTTON_TRIAL": "🎁 Пробный период", - "ADMIN_PRICING_CHOICE_ALREADY": "Это значение уже активно.", - "ADMIN_PRICING_CHOICE_UPDATED": "Выбрано: {label}", - "ADMIN_PRICING_EDIT_CANCEL": "❌ Отмена", - "ADMIN_PRICING_EDIT_CANCEL_HINT": "Напишите «Отмена», чтобы вернуться без изменений.", - "ADMIN_PRICING_EDIT_TITLE": "Изменение цены", - "ADMIN_PRICING_EDIT_TARGET": "Текущий тариф", - "ADMIN_PRICING_EDIT_CURRENT": "Текущее значение", - "ADMIN_PRICING_EDIT_PROMPT": "Введите новую стоимость в рублях (например 990 или 990.50). Для бесплатного тарифа укажите 0.", - "ADMIN_PRICING_EDIT_EXPIRED": "Сессия редактирования истекла.", - "ADMIN_PRICING_EDIT_CANCELLED": "Изменения отменены.", - "ADMIN_PRICING_EDIT_INVALID": "Не удалось распознать цену. Укажите число в рублях (например 990 или 990.50).", - "ADMIN_PRICING_EDIT_SUCCESS": "Цена для {item} обновлена: {price}", - "ADMIN_PRICING_PERIOD_DISABLED": "Период отключен.", - "ADMIN_PRICING_PERIOD_ENABLED": "Период включен.", - "ADMIN_PRICING_PERIOD_MIN": "Должен оставаться хотя бы один период.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_ENABLED": "Пакет включен.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_DISABLED": "Пакет отключен.", - "ADMIN_PRICING_TRAFFIC_PACKAGE_MIN": "Должен оставаться хотя бы один пакет.", - "ADMIN_PRICING_SECTION_CORE_TITLE": "⚙️ Базовые лимиты", - "ADMIN_PRICING_SECTION_CURRENT": "Текущие значения:", - "ADMIN_PRICING_SECTION_EMPTY": "Нет доступных значений.", - "ADMIN_PRICING_SECTION_EXTRA_TITLE": "➕ Дополнительные опции", - "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_PROMPT": "Нажмите на период, чтобы включить или выключить его отображение.", - "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_RENEW": "Активные периоды продления: {items}", - "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_SUB": "Активные периоды подписки: {items}", - "ADMIN_PRICING_SECTION_PERIOD_OPTIONS_TITLE": "🗓 Доступные периоды", - "ADMIN_PRICING_SECTION_PERIODS_TITLE": "🗓 Периоды подписки", - "ADMIN_PRICING_SECTION_PROMPT": "Выберите что изменить:", - "ADMIN_PRICING_SECTION_SETTINGS_GENERIC": "⚙️ Настройки", - "ADMIN_PRICING_SECTION_TRAFFIC_TITLE": "📦 Пакеты трафика", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_TITLE": "🚦 Отображение пакетов трафика", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_ACTIVE": "Активные пакеты: {items}", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_NONE": "Активных пакетов нет.", - "ADMIN_PRICING_SECTION_TRAFFIC_OPTIONS_PROMPT": "Нажмите на пакет, чтобы включить или выключить его отображение.", - "ADMIN_PRICING_SECTION_TRIAL_TITLE": "🎁 Пробный период", - "ADMIN_PRICING_SETTING_CANCEL_HINT": "Чтобы вернуться без изменений, ответьте «Отмена».", - "ADMIN_PRICING_SETTING_CURRENT": "Текущее значение", - "ADMIN_PRICING_SETTING_EDIT_TITLE": "Настройка параметра", - "ADMIN_PRICING_SETTING_EDIT_WITH_VALUE": "✏️ {label} • {value}", - "ADMIN_PRICING_SETTING_EXAMPLE": "Пример", - "ADMIN_PRICING_SETTING_FORMAT": "Формат ввода", - "ADMIN_PRICING_SETTING_INVALID": "Не удалось обновить параметр. Проверьте формат значения.", - "ADMIN_PRICING_SETTING_PARAMETER": "Параметр", - "ADMIN_PRICING_SETTING_PROMPT": "Отправьте новое значение или напишите «Отмена». Для очистки используйте none.", - "ADMIN_PRICING_SETTING_SUCCESS": "Параметр {label} обновлен: {value}", - "ADMIN_PRICING_SETTING_TOGGLE_STATEFUL": "{icon} {label}", - "ADMIN_PRICING_SETTING_WARNING": "Важно", - "MENU_PUBLIC_OFFER": "📄 Оферта", - "PUBLIC_OFFER_NOT_AVAILABLE": "Публичная оферта временно недоступна.", - "PUBLIC_OFFER_EMPTY_ALERT": "Публичная оферта ещё не заполнена.", - "PUBLIC_OFFER_HEADER": "📄 Публичная оферта", - "PUBLIC_OFFER_PAGE_INFO": "Страница {current} из {total}", - "ADMIN_SETTINGS_PUBLIC_OFFER": "📄 Публичная оферта", - "ADMIN_SETTINGS_FAQ": "❓ FAQ", - "ADMIN_PUBLIC_OFFER_HEADER": "📄 Публичная оферта", - "ADMIN_PUBLIC_OFFER_DESCRIPTION": "Публичная оферта отображается в разделе «Инфо».", - "ADMIN_PUBLIC_OFFER_LANGUAGE": "Язык: {lang}", - "ADMIN_PUBLIC_OFFER_STATUS_DISABLED": "⚠️ Показ оферты выключен или текст отсутствует.", - "ADMIN_PUBLIC_OFFER_STATUS_ENABLED": "✅ Оферта активна и показывается пользователям.", - "ADMIN_PUBLIC_OFFER_STATUS_ENABLED_EMPTY": "⚠️ Оферта включена, но текст пуст — пользователи её не увидят.", - "ADMIN_PUBLIC_OFFER_UPDATED_AT": "Последнее обновление: {timestamp}", - "ADMIN_PUBLIC_OFFER_PREVIEW_TITLE": "Превью текста:", - "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY": "Текст ещё не задан.", - "ADMIN_PUBLIC_OFFER_ACTION_PROMPT": "Выберите действие:", - "ADMIN_PUBLIC_OFFER_EDIT_BUTTON": "✏️ Изменить текст", - "ADMIN_PUBLIC_OFFER_VIEW_BUTTON": "👀 Просмотреть текущий текст", - "ADMIN_PUBLIC_OFFER_ENABLE_BUTTON": "✅ Включить показ", - "ADMIN_PUBLIC_OFFER_DISABLE_BUTTON": "🚫 Отключить показ", - "ADMIN_PUBLIC_OFFER_HTML_HELP": "ℹ️ HTML помощь", - "ADMIN_FAQ_HEADER": "❓ FAQ", - "ADMIN_FAQ_DESCRIPTION": "FAQ отображается в разделе «Инфо».", - "ADMIN_FAQ_LANGUAGE": "Язык: {lang}", - "ADMIN_FAQ_PAGE_STATS": "Всего страниц: {total}", - "ADMIN_FAQ_STATUS_DISABLED": "⚠️ Показ FAQ выключен.", - "ADMIN_FAQ_STATUS_ENABLED": "✅ FAQ включён. Активных страниц: {count}.", - "ADMIN_FAQ_STATUS_ENABLED_EMPTY": "⚠️ FAQ включён, но нет активных страниц.", - "ADMIN_FAQ_STATUS_EMPTY": "⚠️ FAQ ещё не настроен.", - "ADMIN_FAQ_PAGES_EMPTY": "Страницы ещё не созданы.", - "ADMIN_FAQ_PAGES_OVERVIEW": "Список страниц:\n{items}", - "ADMIN_FAQ_ACTION_PROMPT": "Выберите действие:", - "ADMIN_FAQ_ADD_PAGE_BUTTON": "➕ Добавить страницу", - "ADMIN_FAQ_ENABLE_BUTTON": "✅ Включить показ", - "ADMIN_FAQ_DISABLE_BUTTON": "🚫 Отключить показ", - "ADMIN_FAQ_HTML_HELP": "ℹ️ HTML помощь", - "ADMIN_FAQ_ENTER_TITLE": "Введите заголовок для новой страницы FAQ:", - "ADMIN_FAQ_CANCEL_BUTTON": "⬅️ Отмена", - "ADMIN_FAQ_TITLE_EMPTY": "❌ Заголовок не может быть пустым.", - "ADMIN_FAQ_TITLE_TOO_LONG": "❌ Заголовок слишком длинный. Максимум 255 символов.", - "ADMIN_FAQ_ENTER_CONTENT": "Отправьте содержимое страницы FAQ. Допускается HTML.", - "ADMIN_FAQ_CONTENT_TOO_LONG": "❌ Текст слишком длинный. Максимум 6000 символов.", - "ADMIN_FAQ_CONTENT_EMPTY": "❌ Текст не может быть пустым.", - "ADMIN_FAQ_HTML_ERROR": "❌ Ошибка в HTML: {error}", - "ADMIN_FAQ_PAGE_CREATED": "✅ Страница FAQ создана.", - "ADMIN_FAQ_BACK_TO_LIST": "⬅️ К настройкам FAQ", - "ADMIN_FAQ_ENABLED_ALERT": "✅ FAQ включён.", - "ADMIN_FAQ_DISABLED_ALERT": "🚫 FAQ отключён.", - "ADMIN_FAQ_PAGE_NOT_FOUND": "⚠️ Страница не найдена.", - "ADMIN_FAQ_PAGE_HEADER": "📄 Страница FAQ", - "ADMIN_FAQ_PAGE_STATUS_ACTIVE": "✅ Активна", - "ADMIN_FAQ_PAGE_STATUS_INACTIVE": "🚫 Выключена", - "ADMIN_FAQ_PAGE_UPDATED": "Обновлено: {timestamp}", - "ADMIN_FAQ_PAGE_PREVIEW_EMPTY": "Текст ещё не задан.", - "ADMIN_FAQ_PAGE_PREVIEW": "Превью:\n{content}", - "ADMIN_FAQ_PAGE_TITLE": "Заголовок: {title}", - "ADMIN_FAQ_PAGE_STATUS": "Статус: {status}", - "ADMIN_FAQ_EDIT_TITLE_BUTTON": "✏️ Изменить заголовок", - "ADMIN_FAQ_EDIT_CONTENT_BUTTON": "📝 Изменить текст", - "ADMIN_FAQ_PAGE_ENABLE_BUTTON": "✅ Включить страницу", - "ADMIN_FAQ_PAGE_DISABLE_BUTTON": "🚫 Выключить страницу", - "ADMIN_FAQ_PAGE_MOVE_UP": "⬆️ Выше", - "ADMIN_FAQ_PAGE_MOVE_DOWN": "⬇️ Ниже", - "ADMIN_FAQ_PAGE_DELETE_BUTTON": "🗑️ Удалить", - "ADMIN_FAQ_TITLE_UPDATED": "✅ Заголовок обновлён.", - "ADMIN_FAQ_UNEXPECTED_STATE": "⚠️ Состояние сброшено.", - "ADMIN_FAQ_CONTENT_UPDATED": "✅ Текст страницы обновлён.", - "ADMIN_FAQ_PAGE_ENABLED_ALERT": "✅ Страница включена.", - "ADMIN_FAQ_PAGE_DISABLED_ALERT": "🚫 Страница выключена.", - "ADMIN_FAQ_PAGE_DELETED": "🗑️ Страница удалена.", - "ADMIN_FAQ_PAGE_REORDERED": "✅ Порядок обновлён.", - "ADMIN_PUBLIC_OFFER_CURRENT_PREVIEW": "Текущий текст (превью):", - "ADMIN_PUBLIC_OFFER_EDIT_PROMPT": "Отправьте новый текст публичной оферты. Допускается HTML-разметка.", - "ADMIN_PUBLIC_OFFER_EDIT_HINT": "Используйте /html_help для справки по тегам.", - "ADMIN_PUBLIC_OFFER_EDIT_TITLE": "Редактирование оферты", - "ADMIN_PUBLIC_OFFER_CANCEL": "❌ Отмена", - "ADMIN_PUBLIC_OFFER_TOO_LONG": "❌ Текст оферты слишком длинный. Максимум 4000 символов.", - "ADMIN_PUBLIC_OFFER_HTML_ERROR": "❌ Ошибка в HTML: {error}", - "ADMIN_PUBLIC_OFFER_SAVED": "✅ Публичная оферта обновлена.", - "ADMIN_PUBLIC_OFFER_BACK_BUTTON": "⬅️ К настройкам оферты", - "ADMIN_PUBLIC_OFFER_PREVIEW_EMPTY_ALERT": "Текст оферты пока не задан.", - "ADMIN_PUBLIC_OFFER_VIEW_TITLE": "👀 Текущий текст оферты", - "ADMIN_PUBLIC_OFFER_VIEW_TRUNCATED": "\n\n⚠️ Текст сокращён для отображения. Полную версию увидят пользователи в меню.", - "ADMIN_PUBLIC_OFFER_ENABLED": "✅ Оферта включена", - "ADMIN_PUBLIC_OFFER_DISABLED": "🚫 Оферта отключена", - "ADMIN_PUBLIC_OFFER_RETURN_TO_EDIT": "⬅️ Назад к редактированию", - "ADMIN_PUBLIC_OFFER_EDIT_CANCELLED": "Редактирование оферты отменено." -}