Files
bedolaga-cabinet/src/locales/en.json
c0mrade 207af81c95 fix: support 100% discount display + fix Telegram link widget race condition
- formatPrice shows "Бесплатно/Free" when price is 0 (SubscriptionPurchase, Subscription, RenewSubscription)
- Add subscription.free locale key (ru/en/zh/fa)
- Fix TelegramLinkWidget NS_BINDING_ABORTED: move legacy widget callback to ref pattern, remove unstable deps (showToast, t, navigate) from useEffect — prevents iframe destruction on re-render
- Clean up OIDC effect deps
2026-04-03 17:23:38 +03:00

4681 lines
168 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"common": {
"loading": "Loading...",
"error": "Error",
"success": "Success",
"save": "Save",
"cancel": "Cancel",
"confirm": "Confirm",
"back": "Back",
"next": "Next",
"close": "Close",
"search": "Search",
"noData": "No data",
"actions": "Actions",
"yes": "Yes",
"no": "No",
"or": "or",
"add": "Add",
"and": "and",
"edit": "Edit",
"delete": "Delete",
"collapse": "Collapse",
"currency": "$",
"refresh": "Refresh",
"copy": "Copy",
"all": "All",
"units": {
"gb": "GB",
"perGb": "/GB"
},
"retry": "Retry",
"saving": "Saving...",
"understand": "Got it"
},
"nav": {
"dashboard": "Dashboard",
"subscription": "Subscription",
"balance": "Balance",
"referral": "Referrals",
"support": "Support",
"profile": "Profile",
"logout": "Logout",
"contests": "Contests",
"polls": "Polls",
"info": "Info",
"wheel": "Fortune Wheel",
"menu": "Menu",
"gift": "Gift"
},
"notifications": {
"ticketNotifications": "Ticket Notifications",
"markAllRead": "Mark all read",
"noNotifications": "No notifications",
"justNow": "Just now",
"minutesAgo": "{{count}} min ago",
"minutesAgo_one": "{{count}} min ago",
"minutesAgo_other": "{{count}} min ago",
"hoursAgo": "{{count}} h ago",
"hoursAgo_one": "{{count}} h ago",
"hoursAgo_other": "{{count}} h ago",
"daysAgo": "{{count}} d ago",
"daysAgo_one": "{{count}} d ago",
"daysAgo_other": "{{count}} d ago",
"viewAll": "View all tickets",
"newNotification": "New notification",
"clickToView": "Click to view",
"newTicket": "New ticket: {{title}}",
"newReply": "New reply in ticket: {{title}}",
"newTicketTitle": "New Ticket",
"newReplyTitle": "New Reply",
"newUserReply": "User replied in ticket: {{title}}",
"newUserReplyTitle": "User Reply"
},
"campaignBonus": {
"title": "Bonus activated!",
"balance": "You received {{amount}} RUB from campaign \"{{name}}\"",
"subscription": "You received a {{days}}-day subscription from campaign \"{{name}}\"",
"tariff": "You received tariff \"{{tariff}}\" from campaign \"{{name}}\""
},
"wsNotifications": {
"balance": {
"topupTitle": "Balance topped up",
"topupMessage": "Your balance has been topped up by {{amount}} {{currency}}",
"changeTitle": "Balance updated",
"changeMessage": "Your balance has changed by {{amount}} {{currency}}"
},
"subscription": {
"activatedTitle": "Subscription activated",
"activatedMessage": "Your subscription is now active!",
"activatedWithTariff": "Your subscription \"{{tariff}}\" is now active!",
"renewedTitle": "Subscription renewed",
"renewedMessage": "Your subscription has been renewed!",
"renewedWithAmount": "Your subscription has been renewed for {{amount}} {{currency}}",
"expiringTitle": "Subscription expiring soon",
"expiringMessage": "Your subscription expires in {{days}} days",
"expiredTitle": "Subscription expired",
"expiredMessage": "Your subscription has expired. Renew to continue using the service.",
"dailyDebitTitle": "Daily charge",
"dailyDebitMessage": "Daily subscription fee: {{amount}} {{currency}}",
"trafficResetTitle": "Traffic reset",
"trafficResetMessage": "Your traffic limit has been reset"
},
"autopay": {
"successTitle": "Auto-renewal successful",
"successMessage": "Your subscription was auto-renewed for {{amount}} {{currency}}",
"failedTitle": "Auto-renewal failed",
"failedMessage": "Failed to auto-renew your subscription",
"insufficientTitle": "Insufficient funds",
"insufficientMessage": "Need {{required}} {{currency}} for renewal, but balance is {{balance}} {{currency}}"
},
"account": {
"bannedTitle": "Account blocked",
"bannedMessage": "Your account has been blocked",
"unbannedTitle": "Account unblocked",
"unbannedMessage": "Your account has been unblocked",
"warningTitle": "Warning",
"warningMessage": "You have received a warning"
},
"referral": {
"bonusTitle": "Referral bonus",
"bonusMessage": "You received {{amount}} {{currency}} referral bonus!",
"bonusWithName": "You received {{amount}} {{currency}} bonus from {{name}}!",
"registeredTitle": "New referral",
"registeredMessage": "Someone joined using your referral link!",
"registeredWithName": "{{name}} joined using your referral link!"
},
"payment": {
"receivedTitle": "Payment received",
"receivedMessage": "Payment of {{amount}} {{currency}} received"
}
},
"successNotification": {
"balanceTopup": {
"title": "Balance topped up!"
},
"subscriptionActivated": {
"title": "Subscription activated!"
},
"subscriptionRenewed": {
"title": "Subscription renewed!"
},
"subscriptionPurchased": {
"title": "Subscription purchased!"
},
"amount": "Amount",
"price": "Price",
"newBalance": "New balance",
"tariff": "Tariff",
"validUntil": "Valid until",
"goToSubscription": "Go to Subscription",
"goToBalance": "Go to Balance"
},
"auth": {
"login": "Login",
"register": "Register",
"logout": "Logout",
"email": "Email",
"password": "Password",
"confirmPassword": "Confirm Password",
"firstName": "First Name",
"firstNamePlaceholder": "Your name (optional)",
"forgotPassword": "Forgot password?",
"resetPassword": "Reset password",
"loginWithTelegram": "Login with Telegram",
"loginWithEmail": "Login with Email",
"noAccount": "Don't have an account?",
"hasAccount": "Already have an account?",
"or": "or",
"registerHint": "To register with email, first log in via Telegram, then link your email in settings.",
"telegramRequired": "Telegram authorization required",
"telegramRetryFailed": "Authorization failed. Close the app and try again.",
"telegramReopenHint": "If the problem persists, close and reopen the app",
"telegramNotConfigured": "Telegram bot is not configured",
"telegramUnavailable": "Telegram login is temporarily unavailable",
"authenticating": "Authenticating...",
"orOpenInApp": "Or open the bot in the app",
"loginFailed": "Login Failed",
"telegramWidgetBlocked": "Telegram login widget is unavailable. Use the bot to sign in:",
"openBotToLogin": "Open bot to sign in",
"waitingForConfirmation": "Waiting for confirmation...",
"deepLinkExpired": "Link expired. Please try again.",
"tryAgain": "Try Again",
"scanQrToLogin": "Scan QR code with your phone camera",
"orSendCommand": "Or send the bot this command:",
"commandCopied": "Command copied",
"welcomeBack": "Welcome back!",
"loginTitle": "Login to Cabinet",
"loginSubtitle": "Sign in with Telegram or use your email",
"referralInvite": "You've been invited via referral link!",
"passwordMismatch": "Passwords do not match",
"passwordTooShort": "Password must be at least 8 characters",
"invalidEmail": "Please enter a valid email address",
"emailAlreadyRegistered": "This email is already registered",
"invalidCredentials": "Invalid email or password",
"tooManyAttempts": "Too many attempts. Please try again later",
"verificationEmailNotice": "After registration, a verification email will be sent to your address",
"checkEmail": "Check your email",
"verificationSent": "We sent a verification link to:",
"clickLinkToVerify": "Click the link in the email to verify your account and log in.",
"backToLogin": "Back to login",
"emailNotVerified": "Please verify your email first",
"forgotPasswordHint": "Enter your email to receive a reset link",
"loginSuccess": "Login successful",
"passwordResetSent": "Password reset link sent to your email",
"sendResetLink": "Send reset link",
"continueWithGoogle": "Continue with Google",
"continueWithYandex": "Continue with Yandex",
"continueWithDiscord": "Continue with Discord",
"continueWithVk": "Continue with VK",
"oauthError": "Authorization was denied or failed",
"oauthExpired": "OAuth session expired. Please try again."
},
"emailVerification": {
"title": "Email Verification",
"verifying": "Verifying email...",
"pleaseWait": "Please wait while we verify your email address.",
"success": "Email Verified!",
"successMessage": "Your email has been successfully verified. You can now log in with your email and password.",
"redirecting": "Redirecting to dashboard...",
"failed": "Verification Failed",
"goToLogin": "Go to Login"
},
"dashboard": {
"title": "Dashboard",
"welcome": "Welcome, {{name}}!",
"yourSubscription": "Your Subscription",
"quickActions": "Quick Actions",
"viewSubscription": "Manage Subscription",
"topUpBalance": "Top Up Balance",
"inviteFriends": "Invite Friends",
"getSupport": "Get Support",
"currentBalance": "Current Balance",
"activeUntil": "Active until",
"noActiveSubscription": "No active subscription",
"devicesUsed": "Devices: {{used}} of {{total}}",
"trafficUsed": "Traffic: {{used}} of {{total}} GB",
"unlimitedTraffic": "Unlimited traffic",
"zone": {
"normal": "Normal",
"warning": "Moderate",
"danger": "High",
"critical": "Critical"
},
"connectDevice": "Connect Device",
"devicesConnected": "{{count}} connected",
"devicesOfMax": "{{used}} of {{max}} connected",
"devicesConnectedUnlimited": "{{used}} connected · unlimited",
"devicesShort": "dev.",
"trafficUsage": "{{used}} / {{limit}} GB",
"trafficUsageTitle": "Traffic Usage",
"usedTraffic": "used {{amount}}",
"usedSuffix": "used",
"unlimited": "Unlimited",
"tariff": "Tariff",
"validUntil": "until {{date}}",
"remaining": "Remaining",
"daysRemaining": "Days left",
"usageLast14Days": "Usage last 14 days",
"maxUsage": "max {{amount}}",
"deviceLimitReached": "Disconnect devices to add new ones",
"expired": {
"title": "Subscription Expired",
"trialTitle": "Trial Expired",
"trialSubtitle": "Trial period ended",
"paidSubtitle": "Subscription has expired",
"renew": "Renew Subscription",
"quickRenew": "Quick Renew",
"insufficientFunds": "Insufficient balance",
"renewError": "Renewal error, try again",
"topUp": "Top up balance",
"balance": "Balance",
"tariffs": "Tariffs",
"traffic": "Traffic",
"devices": "Devices",
"expiredDate": "Expired"
},
"suspended": {
"title": "Subscription Suspended",
"resume": "Resume"
},
"trialOffer": {
"freeTitle": "Free Trial Available",
"paidTitle": "Trial Subscription",
"freeDesc": "Try our VPN for free — no commitment required",
"paidDesc": "Get started with a trial subscription"
},
"stats": {
"balance": "Balance",
"subscription": "Subscription",
"referrals": "Referrals",
"earnings": "Earnings"
}
},
"subscription": {
"title": "Subscription",
"currentPlan": "Current Plan",
"status": "Status",
"active": "Active",
"inactive": "Inactive",
"trialStatus": "Trial",
"expired": "Expired",
"trafficLimited": "Traffic Exhausted",
"trafficLimitedTitle": "Traffic Limit Reached",
"trafficLimitedDescription": "Your traffic has been exhausted. Purchase additional traffic below to continue using VPN.",
"expiresAt": "Expires at",
"daysLeft": "Days left",
"devices": "Devices",
"devices_one": "{{count}} device",
"devices_other": "{{count}} devices",
"serversLabel": "Servers",
"servers_one": "{{count}} server",
"servers_other": "{{count}} servers",
"locationsLabel": "Locations",
"locations_one": "{{count}} location",
"locations_other": "{{count}} locations",
"trafficReset": {
"DAY": "Resets daily",
"WEEK": "Resets weekly",
"MONTH": "Resets monthly",
"MONTH_ROLLING": "Resets every 30 days"
},
"traffic": "Traffic",
"unlimited": "Unlimited",
"used": "Used",
"of": "of",
"renew": "Renew",
"free": "Free",
"extend": "Extend Subscription",
"buyTraffic": "Buy Traffic",
"buyDevices": "Buy Devices",
"renewalOptions": "Renewal Options",
"days": "days",
"daysShort": "d.",
"days_one": "{{count}} day",
"days_other": "{{count}} days",
"hours": "h",
"hours_one": "{{count}} h",
"hours_other": "{{count}} h",
"minutes": "m",
"minutes_one": "{{count}} m",
"minutes_other": "{{count}} m",
"price": "Price",
"noSubscription": "You don't have an active subscription",
"getSubscription": "Get Subscription",
"cta": {
"expiredHint": "Choose a plan and pay",
"trialHint": "More traffic and devices",
"activeHint": "Renewal and plan change"
},
"connectionInfo": "Connection Info",
"copyLink": "Copy Link",
"copied": "Copied!",
"showQR": "Show QR Code",
"downloadConfig": "Download Config",
"trafficUsed": "Traffic used",
"timeLeft": "Time left",
"getConfig": "Connect Devices",
"autoRenewal": "Auto-renewal",
"daysBeforeExpiry": "days before expiry",
"daysBeforeExpiry_one": "{{count}} day before expiry",
"daysBeforeExpiry_other": "{{count}} days before expiry",
"selectPeriod": "Select Period",
"noPeriodsAvailable": "No available periods for renewal",
"noPeriodsAvailableHint": "The administrator has changed this plan's settings. Please choose a different plan to renew your subscription.",
"chooseDifferentTariff": "Choose a different plan",
"selectTraffic": "Select Traffic",
"selectServers": "Select Servers",
"selectDevices": "Devices",
"perDevice": "/ device",
"devicesFree": "devices free",
"devicesFree_one": "{{count}} device free",
"devicesFree_other": "{{count}} devices free",
"perExtraDevice": "/ extra device",
"extraDevices": "Extra devices",
"extraDevicesIncluded": "Incl. {{count}} extra dev.",
"extraDevicesIncluded_one": "Incl. {{count}} extra dev.",
"extraDevicesIncluded_other": "Incl. {{count}} extra dev.",
"baseTariff": "Tariff",
"perMonth": "/mo",
"summary": {
"period": "Period: {{label}}",
"traffic": "Traffic: {{gb}} GB"
},
"total": "Total",
"purchase": "Purchase",
"step": "Step {{current}} of {{total}}",
"stepPeriod": "Period",
"stepTraffic": "Traffic",
"stepServers": "Servers",
"stepDevices": "Devices",
"stepConfirm": "Confirm",
"currentTariff": "Current",
"from": "from",
"month": "mo",
"insufficientBalance": "Insufficient balance. Missing {{missing}} ₽",
"trial": {
"title": "Free Trial",
"titlePaid": "Trial Subscription",
"description": "Try our VPN service!",
"days": "days",
"days_one": "{{count}} day",
"days_other": "{{count}} days",
"devices": "devices",
"devices_one": "{{count}} device",
"devices_other": "{{count}} devices",
"price": "Price",
"activate": "Activate Free",
"payAndActivate": "Pay & Activate",
"topUpToActivate": "Top Up Balance",
"insufficientBalance": "Top up your balance to activate",
"unavailable": "Trial is not available"
},
"trialBanner": {
"title": "Trial period active",
"description": "You have {{days}} days left in your trial. Subscribe to continue using the service.",
"upgrade": "Choose a plan"
},
"trialInfo": {
"title": "Trial Period",
"description": "You are using a trial version. Choose a plan below for full access.",
"remaining": "remaining",
"upgradeNow": "Choose a plan"
},
"trialUpgrade": {
"title": "Choose a plan to continue",
"description": "Your trial period is ending soon. Select a plan to continue using VPN without restrictions."
},
"expiredBanner": {
"title": "Subscription expired",
"selectTariff": "Your subscription has expired. Choose a plan below to restore access to VPN."
},
"connection": {
"title": "Connect VPN",
"selectDevice": "Select your device",
"selectApp": "Select app",
"installApp": "1. Install the app",
"addSubscription": "2. Add subscription",
"connectVpn": "3. Connect VPN",
"addToApp": "Add to {{appName}}",
"connect": "Connect",
"noApps": "No apps available for this platform",
"noSubscription": "You need an active subscription to connect",
"featured": "Recommended",
"yourDevice": "Your device",
"copyLink": "Copy subscription link",
"copied": "Link copied!",
"openLink": "Open link",
"instructions": "Instructions",
"changeApp": "Change app",
"selectPlatform": "Select platform",
"app": "app",
"apps": "apps",
"tutorial": "Tutorial",
"notConfigured": "Connection methods are not configured yet",
"notConfiguredUser": "Connection setup is in progress. Please check back later.",
"notConfiguredAdmin": "No connection apps have been configured. Set them up in the Apps settings.",
"goToApps": "Go to Apps settings",
"qrTitle": "Subscription QR Code",
"qrScanHint": "Scan to connect",
"qrButton": "QR Code"
},
"myDevices": "My Devices",
"noDevices": "No connected devices",
"deleteDevice": "Delete device",
"deleteAllDevices": "Delete all",
"confirmDeleteDevice": "Delete this device?",
"confirmDeleteAllDevices": "Delete all devices?",
"deviceDeleted": "Device deleted",
"allDevicesDeleted": "All devices deleted",
"platform": "Platform",
"model": "Model",
"connectedAt": "Connected",
"pause": {
"title": "Subscription Pause",
"paused": "Paused",
"suspended": "Suspended (insufficient funds)",
"active": "Active",
"pauseBtn": "Pause",
"resumeBtn": "Resume",
"pausedMessage": "Subscription paused",
"resumedMessage": "Subscription resumed",
"dailyOnly": "Pause is only available for daily tariffs",
"insufficientBalance": "Insufficient balance to resume subscription",
"pausedInfo": "Subscription paused",
"pausedDescription": "Charges stopped. Subscription will be active until",
"nextCharge": "Until next charge",
"willBeCharged": "Will be charged",
"days_one": "{{count}} day",
"days_few": "{{count}} days",
"days_many": "{{count}} days",
"days": "d.",
"hours": "h",
"minutes": "m"
},
"dailyPurchase": {
"costPerDay": "Cost per day",
"chargedDaily": "Payment is charged daily from balance",
"canPause": "Can be paused at any time",
"pausedOnLowBalance": "Subscription will be paused if balance is insufficient",
"activate": "Activate for {{price}}"
},
"switchTariff": {
"title": "Switch Tariff",
"preview": "Preview",
"currentTariff": "Current tariff",
"newTariff": "New tariff",
"remainingDays": "Days remaining",
"upgradeCost": "Upgrade cost",
"free": "Free",
"switch": "Switch",
"switched": "Tariff switched",
"notEnoughBalance": "Insufficient balance",
"dailyPayment": "Daily payment",
"dailyChargeDescription": "Charged daily from your balance"
},
"switchTraffic": {
"title": "Change Traffic",
"currentPackage": "Current package",
"newPackage": "New package",
"switch": "Change",
"switched": "Traffic changed"
},
"purchasedTraffic": "Purchased Traffic",
"trafficResetAt": "Reset",
"additionalOptions": {
"title": "Additional options",
"buyDevices": "Buy more devices",
"currentDeviceLimit_one": "Current limit: {{count}} device",
"currentDeviceLimit_other": "Current limit: {{count}} devices",
"maxDevices": "max {{count}}",
"devicesUnavailable": "Device purchase is not available",
"devicesUnit": "devices",
"buy": "Buy",
"reduceDevices": "Reduce devices",
"reduceDevicesTitle": "Reduce device limit",
"reduceDevicesDescription": "You can reduce the number of devices to the tariff minimum",
"minDeviceLimit_one": "Tariff minimum: {{count}} device",
"minDeviceLimit_other": "Tariff minimum: {{count}} devices",
"connectedDevices_one": "Connected devices: {{count}}",
"connectedDevices_other": "Connected devices: {{count}}",
"disconnectDevicesFirst_one": "Disconnect devices first to reduce the limit below {{count}} device",
"disconnectDevicesFirst_other": "Disconnect devices first to reduce the limit below {{count}} devices",
"reduceUnavailable": "Device reduction is not available",
"alreadyAtMinDeviceLimit": "Already at minimum device limit for your tariff",
"reduce": "Reduce",
"reducing": "Reducing...",
"newDeviceLimit_one": "New limit: {{count}} device",
"newDeviceLimit_other": "New limit: {{count}} devices",
"buyTraffic": "Buy more traffic",
"currentTrafficLimit": "Current limit: {{limit}} GB (used {{used}} GB)",
"buyTrafficTitle": "Buy more traffic",
"trafficWarning": "Purchased traffic is added to your current limit and does not carry over to the next period",
"trafficUnavailable": "Traffic purchase is not available for your tariff",
"unlimited": "Unlimited",
"buyTrafficGb": "Buy {{gb}} GB",
"buyUnlimited": "Buy Unlimited",
"manageServers": "Server management",
"manageServersTitle": "Server management"
},
"serverManagement": {
"statusLegend": "✅ — connected • — will be added (paid) • — will be disconnected",
"discountBanner": "Your server discount: -{{percent}}%",
"forDays": "(for {{days}} days)",
"perMonth": "/mo",
"unavailable": "Unavailable",
"toAdd": "Add:",
"toDisconnect": "Disconnect:",
"paymentProrated": "Payment (prorated for remaining days):",
"applyChanges": "Apply changes",
"selectServersHint": "Select servers to connect or disconnect",
"noServersAvailable": "No servers available to manage"
},
"legacy": {
"selectTariffTitle": "Select a tariff to renew",
"selectTariffDescription": "Your current subscription was created before tariffs were introduced. To renew, please select one of the available tariffs.",
"currentSubContinues": "Your current subscription will remain active until it expires."
},
"promoGroup": {
"yourGroup": "Your group: {{name}}",
"personalDiscountsApplied": "Personal discounts applied to prices"
},
"tariff": {
"perDay": "/ day",
"flexiblePayment": "Flexible payment",
"selectForRenewal": "Select for renewal"
},
"customDays": {
"title": "Custom number of days",
"perDay": "/day"
},
"customTraffic": {
"label": "Traffic",
"selectVolume": "Select traffic volume",
"default": "Default: {{label}}"
}
},
"balance": {
"title": "Balance",
"currentBalance": "Current Balance",
"topUp": "Top Up",
"topUpBalance": "Top Up Balance",
"enterAmount": "Enter amount",
"paymentMethod": "Payment Method",
"paymentMethods": {
"yookassa": {
"description": "Pay via YooKassa"
},
"cryptobot": {
"description": "Pay with cryptocurrency via CryptoBot"
},
"telegram_stars": {
"description": "Pay with Telegram Stars"
},
"heleket": {
"description": "Pay with cryptocurrency via Heleket"
},
"mulenpay": {
"description": "Pay via MulenPay"
},
"pal24": {
"description": "Pay via PAL24"
},
"platega": {
"description": "Pay via Platega"
},
"wata": {
"description": "Pay via Wata"
},
"cloudpayments": {
"description": "Pay with bank card via CloudPayments"
},
"freekassa": {
"description": "Pay via FreeKassa"
},
"freekassa_sbp": {
"description": "Pay via SBP (QR code)"
},
"freekassa_card": {
"description": "Pay with Russian bank card"
},
"tribute": {
"description": "Pay with bank card via Tribute"
},
"severpay": {
"description": "Pay via SeverPay"
},
"riopay": {
"description": "Pay via RioPay"
},
"kassa_ai": {
"description": "Pay via Kassa AI"
}
},
"transactionHistory": "Transaction History",
"noTransactions": "No transactions",
"date": "Date",
"type": "Type",
"description": "Description",
"amount": "Amount",
"deposit": "Deposit",
"withdrawal": "Withdrawal",
"subscriptionPayment": "Subscription Payment",
"referralReward": "Referral Reward",
"minAmount": "Min.",
"maxAmount": "Max.",
"notAvailable": "Not available",
"useBot": "Please use the Telegram bot to top up your balance.",
"page": "Page {{current}} of {{total}}",
"invalidAmount": "Invalid amount",
"promocode": {
"title": "Promo Code",
"placeholder": "Enter promo code",
"activate": "Activate",
"activating": "Activating...",
"success": "Promo code activated successfully!",
"balanceAdded": "Balance added: {{amount}} ₽",
"errors": {
"not_found": "Promo code not found",
"expired": "Promo code has expired",
"used": "Promo code has already been used",
"already_used_by_user": "You have already used this promo code",
"user_not_found": "User not found",
"server_error": "Server error"
}
},
"minAmountError": "Minimum amount: {{amount}} ₽",
"maxAmountError": "Maximum amount: {{amount}} ₽",
"paymentOption": "Payment option",
"selectPaymentOption": "Select payment option",
"selectPaymentMethod": "Select payment method",
"insufficientFunds": "Insufficient funds",
"topUpToComplete": "Top up your balance to complete the purchase",
"missing": "Missing",
"noPaymentMethods": "No payment methods available",
"pendingPayments": {
"title": "Pending Payments",
"pay": "Pay",
"checkStatus": "Check Status",
"checking": "Checking..."
},
"savedCards": {
"title": "Saved Cards",
"card": "Card",
"unlink": "Unlink",
"confirmUnlink": "Are you sure you want to unlink this card? Automatic balance top-up will no longer be possible.",
"unlinkSuccess": "Card unlinked successfully",
"unlinkError": "Failed to unlink card",
"linkedAt": "Linked {{date}}",
"noCards": "Card will be saved automatically on next top-up",
"pageTitle": "Saved Cards",
"backToBalance": "Back",
"empty": "No saved cards. A card will be saved automatically on your next top-up.",
"loadError": "Failed to load saved cards. Please try again later."
},
"paymentReady": "Payment link is ready",
"clickToOpenPayment": "Click the button below to open the payment page in a new tab",
"openPaymentPage": "Open payment page",
"errors": {
"noPaymentLink": "Server did not return a payment link",
"starsOnlyInTelegram": "Stars payment is only available in Telegram Mini App",
"generic": "Error: {{details}}",
"invoiceFailed": "Failed to create invoice",
"rateLimit": "Please wait {{seconds}} sec.",
"selectMethod": "Select a method",
"enterAmount": "Enter an amount",
"amountRange": "Amount: {{min}} {{max}} ₽"
},
"paymentSuccess": {
"title": "Payment Successful",
"message": "Your balance has been topped up successfully. The funds are now available."
},
"topUpResult": {
"awaitingPayment": "Awaiting Payment",
"awaitingPaymentDesc": "We are waiting for your payment confirmation. This may take a few minutes.",
"topUpAmount": "Top-up amount",
"success": "Balance Topped Up!",
"successDesc": "Your balance has been topped up successfully. The funds are now available.",
"failed": "Payment Failed",
"failedDesc": "Unfortunately, the payment was not completed. Please try again or choose a different payment method.",
"timeout": "Taking Longer Than Expected",
"timeoutDesc": "Payment processing is taking longer than usual. You can try checking the status again.",
"goToBalance": "Go to Balance",
"tryAgain": "Try Again"
}
},
"referral": {
"title": "Referral Program",
"yourLink": "Your Referral Links",
"botLink": "Bot link",
"cabinetLink": "Cabinet link",
"copyLink": "Copy",
"copied": "Copied!",
"shareButton": "Share",
"shareMessage": "Join me on {{botName}} and earn up to {{percent}}% cashback!",
"shareHint": "Share this link with friends. When they sign up and make a purchase, you'll earn {{percent}}% commission!",
"stats": {
"totalReferrals": "Total Referrals",
"activeReferrals": "Active",
"totalEarnings": "Total Earnings",
"commissionRate": "Commission Rate"
},
"terms": {
"title": "Program Terms",
"commission": "Commission",
"minTopup": "Min. Top-up",
"newUserBonus": "New User Bonus",
"inviterBonus": "Inviter Bonus"
},
"yourReferrals": "Your Referrals",
"noReferrals": "No referrals yet. Share your link to invite friends!",
"anonymousUser": "User #{{id}}",
"anonymousReferral": "Referral",
"user": "User",
"joined": "Joined",
"hasPaid": "Has Paid",
"status": {
"pending": "Pending",
"paid": "Paid"
},
"earningsHistory": "Earnings History",
"reason": "Reason",
"reasons": {
"referral_registration_pending": "Referral Registration",
"referral_registration": "Referral Registration",
"referral_first_payment": "Referral First Payment",
"referral_subscription_renewal": "Referral Subscription Renewal",
"referral_bonus": "Referral Bonus"
},
"disabled": "Referral program is currently disabled",
"partner": {
"becomePartner": "Become a Partner",
"becomePartnerDesc": "Apply for the partner program to get higher commission rates and the ability to withdraw your earnings.",
"applyButton": "Apply",
"applyTitle": "Partner Application",
"applyDesc": "Fill out the form below to apply for our partner program. All fields are optional.",
"underReview": "Application Under Review",
"underReviewDesc": "Your partner application is being reviewed. We'll notify you once a decision is made.",
"submittedAt": "Submitted on {{date}}",
"partnerStatus": "Partner",
"active": "Active",
"commissionInfo": "Your partner commission rate is {{percent}}%",
"rejected": "Application Rejected",
"reapplyButton": "Reapply",
"applying": "Submitting...",
"submitApplication": "Submit Application",
"applyError": "Failed to submit application. Please try again.",
"yourCampaigns": "Your campaigns",
"campaignLinks": {
"bot": "Bot link",
"web": "Cabinet link"
},
"campaignBonus": {
"title": "Referral bonus",
"balance": "+{{amount}} to balance",
"balanceDesc": "{{amount}} credited on signup",
"subscription": "{{days}} days subscription",
"subscriptionDesc": "{{days}} days free subscription",
"tariff": "Bonus tariff",
"tariffDesc": "Free tariff plan"
},
"stats": {
"registrations": "Registrations",
"referrals": "Referrals",
"earnings": "Earnings",
"conversionRate": "Conversion",
"today": "Today",
"week": "Week",
"month": "Month",
"showDetails": "Details",
"hideDetails": "Collapse",
"vsLastWeek": "vs last week",
"topReferrals": "Top Referrals",
"noData": "No data",
"dailyChart": "30-day trends",
"periodComparison": "Period comparison",
"noReferrals": "No referrals yet",
"paid": "Paid",
"pending": "Pending",
"active": "Active",
"referralsCount": "Referrals",
"earningsAmount": "Earned"
},
"fields": {
"companyName": "Company Name",
"companyNamePlaceholder": "Your company or brand name",
"telegramChannel": "Telegram Channel",
"telegramChannelPlaceholder": "@yourchannel",
"websiteUrl": "Website URL",
"websiteUrlPlaceholder": "https://example.com",
"description": "Description",
"descriptionPlaceholder": "Tell us about your audience and how you plan to promote...",
"expectedReferrals": "Expected Monthly Referrals",
"expectedReferralsPlaceholder": "Estimated number per month",
"desiredCommission": "Desired Commission (%)",
"desiredCommissionPlaceholder": "From 1 to 100%"
}
},
"withdrawal": {
"title": "Withdrawal",
"goToWithdrawal": "Withdraw",
"available": "Available",
"totalEarned": "Total Earned",
"withdrawn": "Withdrawn",
"spent": "Spent on Services",
"pending": "Pending",
"requestButton": "Request Withdrawal",
"minAmount": "Minimum withdrawal amount: {{amount}}",
"history": "Withdrawal History",
"noHistory": "No withdrawal requests yet",
"requestTitle": "Request Withdrawal",
"requestDesc": "Available for withdrawal: {{available}}",
"requesting": "Submitting...",
"submitRequest": "Submit Request",
"requestError": "Failed to create withdrawal request. Please try again.",
"fields": {
"amount": "Amount",
"amountPlaceholder": "Enter amount in {{currency}}",
"amountHint": "Minimum: {{min}} {{currency}}",
"paymentDetails": "Payment Details",
"paymentDetailsPlaceholder": "Card number, wallet address, or other payment info..."
},
"status": {
"pending": "Pending",
"approved": "Approved",
"completed": "Completed",
"rejected": "Rejected",
"cancelled": "Cancelled"
}
}
},
"support": {
"title": "Support",
"newTicket": "New Ticket",
"yourTickets": "Your Tickets",
"noTickets": "No tickets yet",
"createTicket": "Create New Ticket",
"subject": "Subject",
"subjectPlaceholder": "Brief description of your issue",
"message": "Message",
"messagePlaceholder": "Describe your issue in detail...",
"send": "Send",
"sending": "Sending...",
"creating": "Creating...",
"reply": "Reply",
"replyPlaceholder": "Type your reply...",
"sendReply": "Send Reply",
"you": "You",
"supportTeam": "Support",
"selectTicket": "Select a ticket or create a new one",
"created": "Created",
"repliesDisabled": "Replies to this ticket are disabled",
"status": {
"open": "Open",
"answered": "Answered",
"pending": "Pending",
"closed": "Closed"
},
"attachImage": "Attach image",
"invalidFileType": "Invalid file type. Use JPEG, PNG, GIF or WebP.",
"fileTooLarge": "File is too large. Maximum size is 10MB.",
"uploadFailed": "Failed to upload image",
"imageLoadFailed": "Failed to load image",
"tooManyRequests": "Too many requests. Please wait {{seconds}} sec.",
"ticketsDisabled": "Tickets Disabled",
"useProfile": "Please go to the bot profile to get support",
"goToProfile": "Go to Profile",
"useExternalLink": "Please use the external link to get support",
"openSupport": "Open Support",
"contactSupport": "Please contact {{username}} for support",
"contactUs": "Contact Support"
},
"wheel": {
"title": "Fortune Wheel",
"disabled": "Fortune Wheel is currently unavailable",
"prizes": "Prizes",
"spinsRemaining": "Spins remaining today",
"choosePayment": "Choose payment method",
"stars": "Stars",
"telegramStars": "Telegram Stars",
"days": "days",
"days_one": "{{count}} day",
"days_other": "{{count}} days",
"subscriptionDays": "Subscription days",
"day": "Day",
"spinCost": "Spin cost",
"spin": "SPIN!",
"spinning": "Spinning...",
"history": "History",
"recentSpins": "Recent spins",
"congratulations": "Congratulations!",
"noLuck": "No luck!",
"oops": "Oops!",
"yourPromoCode": "Your promo code:",
"close": "Close",
"errors": {
"networkError": "A network error occurred",
"loadFailed": "Failed to load wheel configuration",
"dailyLimitReached": "Daily spin limit reached",
"cannotSpin": "Cannot spin right now",
"insufficientBalance": "Insufficient balance",
"topUpRequired": "Top up your balance to pay for spin",
"starsNotAvailable": "Stars payment not available. Open the app via Telegram.",
"noSubscription": "An active subscription is required to spin the wheel. Activate your subscription first."
},
"payWithStars": "Pay with Stars",
"payWithDays": "Pay with days",
"processingPayment": "Processing...",
"starsPaymentSuccess": "Payment successful! Spin result sent to Telegram.",
"starsPaymentSuccessCheckHistory": "Payment successful! Check history or Telegram for the result.",
"starsPaymentFailed": "Payment failed. Please try again.",
"starsPaymentRedirected": "Telegram will open for payment. Refresh the page after payment.",
"starsNotAvailable": "Star payments are currently unavailable. Contact support.",
"confirmStarsPayment": "You will be redirected to Telegram to pay for one wheel spin.",
"payStars": "Pay {{count}} ⭐",
"youWon": "You won",
"noPrize": "No luck this time...",
"noHistory": "No spin history yet",
"banner": {
"title": "Try your luck!",
"description": "Spin the wheel and win prizes: subscription days, balance, traffic and more!",
"button": "Go to wheel"
}
},
"admin": {
"backgrounds": {
"title": "Animated Background",
"description": "Choose a type and configure animation settings",
"selectType": "Background Type",
"preview": "Preview",
"settings": "Settings",
"save": "Save",
"saved": "Saved",
"saving": "Saving...",
"enabled": "Background enabled",
"disabled": "Background disabled",
"reducedOnMobile": "Reduced mode on mobile",
"reducedOnMobileDesc": "Reduces particle count and disables interactivity",
"globalOpacity": "Opacity",
"globalBlur": "Blur",
"categoryCSS": "CSS",
"categoryCanvas": "Canvas",
"categorySVG": "SVG",
"aurora": "Aurora",
"auroraDesc": "Northern lights with smooth gradients",
"sparkles": "Sparkles",
"sparklesDesc": "Twinkling particles on the background",
"vortex": "Vortex",
"vortexDesc": "Spinning particle vortex",
"shootingStars": "Shooting Stars",
"shootingStarsDesc": "Falling stars on a starry sky",
"beams": "Beams",
"beamsDesc": "Light beams along SVG paths",
"beamsCollision": "Beams Collision",
"beamsCollisionDesc": "Exploding light beams",
"gradientAnimation": "Gradient Animation",
"gradientAnimationDesc": "Smoothly moving gradient blobs",
"wavy": "Wavy",
"wavyDesc": "Waves based on simplex noise",
"lines": "Lines",
"linesDesc": "Animated SVG waves",
"boxes": "Boxes",
"boxesDesc": "Grid of interactive blocks",
"meteors": "Meteors",
"meteorsDesc": "Flying meteors",
"grid": "Grid",
"gridDesc": "Minimalist grid pattern",
"dots": "Dots",
"dotsDesc": "Dot pattern",
"spotlight": "Spotlight",
"spotlightDesc": "Spotlight beam",
"noise": "Noise",
"noiseDesc": "Noise gradients with motion",
"ripple": "Ripple",
"rippleDesc": "Ripple wave effect",
"geminiEffect": "Gemini Effect",
"geminiEffectDesc": "SVG effect like Google Gemini",
"speed": "Speed",
"density": "Particle Density",
"particles": "Particle Count",
"count": "Count",
"hue": "Hue",
"rangeY": "Y Range",
"minSize": "Min Size",
"maxSize": "Max Size",
"minSpeed": "Min Speed",
"maxSpeed": "Max Speed",
"particleColor": "Particle Color",
"starColor": "Star Color",
"trailColor": "Trail Color",
"bgColor": "Background Color",
"fillColor": "Fill Color",
"color1": "Color 1",
"color2": "Color 2",
"color3": "Color 3",
"color4": "Color 4",
"color5": "Color 5",
"interactive": "Interactive (mouse)",
"size": "Size",
"radialGradient": "Radial Gradient",
"waveWidth": "Wave Width",
"blurAmount": "Blur",
"waveOpacity": "Wave Opacity",
"duration": "Duration",
"intensity": "Intensity",
"rows": "Rows",
"cols": "Columns",
"gridSize": "Grid Size",
"small": "Small",
"normal": "Normal",
"slow": "Slow",
"fast": "Fast",
"none": "No Background",
"noneDesc": "Disable animated background"
},
"groups": {
"analytics": "Analytics",
"marketing": "Marketing",
"system": "System",
"tariffs": "Tariffs & Sales",
"users": "Users",
"security": "Security"
},
"nav": {
"title": "Admin",
"dashboard": "Dashboard",
"tickets": "Tickets",
"settings": "Settings",
"apps": "Apps",
"wheel": "Wheel",
"tariffs": "Tariffs",
"servers": "Servers",
"banSystem": "Ban Monitoring",
"broadcasts": "Broadcasts",
"users": "Users",
"payments": "Payments",
"remnawave": "RemnaWave",
"emailTemplates": "Email Templates",
"paymentMethods": "Payment Methods",
"campaigns": "Campaigns",
"promoOffers": "Promo Offers",
"promocodes": "Promo Codes",
"promoGroups": "Discount Groups",
"trafficUsage": "Traffic Usage",
"updates": "Updates",
"pinnedMessages": "Pinned Messages",
"partners": "Partners",
"withdrawals": "Withdrawals",
"channelSubscriptions": "Required Channels",
"roles": "Roles",
"roleAssign": "Role Assignment",
"policies": "Access Policies",
"auditLog": "Audit Log",
"salesStats": "Sales Statistics",
"landings": "Landings",
"referralNetwork": "Referral Network",
"news": "News"
},
"panel": {
"title": "Admin Panel",
"subtitle": "System management",
"statsUptime": "Uptime",
"statsBot": "Bot",
"statsCabinet": "Cabinet",
"statsTrials": "Trials",
"statsPaid": "Paid",
"statsOnline": "Online",
"statsToday": "today",
"searchPlaceholder": "Search...",
"searchEmpty": "Nothing found",
"searchEmptyHint": "Try a different query",
"searchClear": "Clear search",
"dashboardDesc": "Statistics and system monitoring",
"ticketsDesc": "Handle user support tickets",
"settingsDesc": "System settings and parameters",
"appsDesc": "Manage connection apps",
"wheelDesc": "Configure fortune wheel and prizes",
"tariffsDesc": "Manage tariff plans",
"serversDesc": "Configure VPN servers",
"banSystemDesc": "Ban monitoring and violations",
"broadcastsDesc": "Mass messaging to users",
"usersDesc": "Manage bot users",
"paymentsDesc": "Payment verification",
"remnawaveDesc": "Panel management and statistics",
"emailTemplatesDesc": "Manage email notification templates",
"paymentMethodsDesc": "Configure payment methods and order",
"campaignsDesc": "Advertising campaigns",
"promoOffersDesc": "Personal discounts",
"promocodesDesc": "Manage promo codes",
"promoGroupsDesc": "Discount groups for users",
"trafficUsageDesc": "Per-user traffic by nodes",
"updatesDesc": "Bot & cabinet versions",
"pinnedMessagesDesc": "Manage pinned messages for users",
"partnersDesc": "Manage partner applications and commissions",
"withdrawalsDesc": "Review and process withdrawal requests",
"channelSubscriptionsDesc": "Manage required channel subscriptions",
"rolesDesc": "Manage admin roles and permissions",
"roleAssignDesc": "Assign and revoke user roles",
"policiesDesc": "Configure ABAC access policies",
"auditLogDesc": "Review system activity and access history",
"salesStatsDesc": "Sales analytics and trends",
"landingsDesc": "Quick purchase landing pages",
"referralNetworkDesc": "Referral graph and campaign visualization",
"newsDesc": "Manage news articles and publications"
},
"salesStats": {
"title": "Sales Statistics",
"subtitle": "Revenue, trials, subscriptions, and renewals",
"period": {
"week": "7 days",
"month": "30 days",
"quarter": "90 days",
"all": "All time",
"custom": "Custom"
},
"tabs": {
"trials": "Trials",
"sales": "Sales",
"renewals": "Renewals",
"addons": "Add-ons",
"deposits": "Deposits"
},
"summary": {
"revenue": "Revenue",
"activeSubs": "Active Subs",
"activeTrials": "Active Trials",
"newTrials": "New Trials",
"conversion": "Conversion",
"renewals": "Renewals",
"addonRevenue": "Add-on Revenue",
"manualTopup": "Manual Top-ups"
},
"trials": {
"total": "Total Trials",
"totalRegistrations": "Registrations",
"trialsIssued": "Trials Issued",
"conversion": "Conversion Rate",
"avgDuration": "Avg Duration",
"byProvider": "By Registration Source",
"dailyChart": "Daily Registrations & Trials",
"registrations": "Registrations"
},
"sales": {
"totalSales": "Total Sales",
"avgOrder": "Avg Order",
"topTariff": "Top Tariff",
"byTariff": "Sales by Tariff",
"byPeriod": "By Subscription Period",
"dailyChart": "Daily Sales",
"dailyByTariff": "Sales by Tariff per Day",
"subscriptions": "Subscriptions"
},
"renewals": {
"total": "Total Renewals",
"rate": "Renewal Rate",
"revenue": "Revenue",
"comparison": "Period Comparison",
"currentPeriod": "Current Period",
"previousPeriod": "Previous Period",
"dailyChart": "Daily Renewals",
"renewals": "Renewals"
},
"addons": {
"totalPurchases": "Total Purchases",
"totalGb": "Total Traffic",
"revenue": "Revenue",
"devicePurchases": "Device Purchases",
"deviceRevenue": "Device Revenue",
"trafficPurchases": "Traffic",
"devicePurchasesDaily": "Devices",
"byPackage": "By Package Size",
"dailyChart": "Daily Add-on Purchases",
"purchases": "Purchases"
},
"deposits": {
"totalDeposits": "Total Deposits",
"totalAmount": "Total Amount",
"avgDeposit": "Avg Deposit",
"byMethod": "By Payment Method",
"dailyChart": "Daily Deposits",
"dailyByMethod": "Daily Deposits by Payment Method",
"revenue": "Revenue"
},
"loadError": "Failed to load statistics"
},
"referralNetwork": {
"title": "Referral Network",
"subtitle": "Referral graph and advertising campaign visualization",
"search": {
"placeholder": "Search by TG ID, @username, email, campaign...",
"noResults": "Nothing found",
"resultsCount": "Found: {{count}}",
"clear": "Clear search"
},
"filters": {
"title": "Filters",
"campaigns": "Campaigns",
"partnersOnly": "Partners only",
"minReferrals": "Min referrals",
"reset": "Reset"
},
"stats": {
"totalUsers": "Users",
"totalReferrers": "Referrers",
"totalCampaigns": "Campaigns",
"subscriptionRevenue": "Subscription revenue",
"totalEarnings": "Ref. earnings"
},
"legend": {
"title": "Legend",
"fillTitle": "Subscription",
"borderTitle": "Referral role",
"regularUser": "No subscription",
"activeReferrer": "Active referrer",
"partner": "Partner",
"topReferrer": "Top referrer (10+)",
"campaignUser": "From campaign",
"partnerCampaignEdge": "Partner → Campaign",
"campaignNode": "Ad campaign",
"paidActive": "Paid subscription",
"trialActive": "Trial",
"paidExpired": "Paid expired",
"trialExpired": "Trial expired"
},
"user": {
"tgId": "TG ID",
"email": "Email",
"partner": "Partner",
"subscription": "Subscription",
"validUntil": "until {{date}}",
"noSubscription": "No subscription",
"personalStats": "Personal statistics",
"totalSpent": "Total spent",
"referralEarnings": "Referral earnings",
"referralBranch": "Referral branch",
"directReferrals": "Direct referrals",
"branchSize": "Total in branch",
"branchRevenue": "Branch revenue",
"source": "Source",
"referredBy": "Referred by",
"fromCampaign": "Campaign",
"organic": "Organic",
"subscriptionStatus": {
"trial_active": "Trial",
"paid_active": "Paid",
"trial_expired": "Trial expired",
"paid_expired": "Paid expired"
}
},
"campaign": {
"startParam": "Parameter",
"active": "Active",
"inactive": "Inactive",
"directUsers": "Direct",
"totalNetwork": "Total network",
"totalRevenue": "Total revenue",
"conversionRate": "Conversion",
"avgCheck": "Avg check",
"topReferrers": "Top referrers from campaign"
},
"controls": {
"zoomIn": "Zoom in",
"zoomOut": "Zoom out",
"resetZoom": "Reset zoom",
"fullscreen": "Fullscreen"
},
"scope": {
"title": "Scope",
"campaign": "Campaign",
"partner": "Partner",
"user": "User",
"searchPlaceholder": "Search...",
"selectCampaign": "Select campaign",
"selectPartner": "Select partner",
"selectUser": "Search user",
"emptyState": "Select a campaign, partner, or user to view their network",
"users": "users",
"campaigns": "campaigns",
"active": "Active",
"inactive": "Inactive",
"noResults": "Nothing found",
"removeItem": "Remove {{label}}",
"clearAll": "Clear all selections",
"addScope": "Add scope",
"maxReached": "Maximum {{max}} items"
},
"loading": "Loading graph...",
"error": "Failed to load network data",
"empty": "No data to display"
},
"trafficUsage": {
"title": "Traffic Usage",
"subtitle": "Per-user traffic statistics by nodes",
"period": "Period",
"days": "d",
"exportCsv": "Export CSV",
"exportSuccess": "CSV sent to your Telegram",
"exportError": "Failed to export",
"user": "User",
"tariff": "Tariff",
"devices": "Devices",
"trafficLimit": "Limit",
"total": "Total",
"noData": "No traffic data",
"loading": "Loading traffic data...",
"noTariff": "—",
"search": "Search by name or username",
"allTariffs": "All tariffs",
"nodes": "Nodes",
"allNodes": "All nodes",
"status": "Status",
"allStatuses": "All",
"statusActive": "Active",
"statusTrial": "Trial",
"statusExpired": "Expired",
"statusDisabled": "Disabled",
"customDates": "Custom dates",
"dateFrom": "From",
"dateTo": "To",
"totalThreshold": "Total GB/d",
"nodeThreshold": "Node GB/d",
"risk": "Risk",
"riskLow": "Low",
"riskMedium": "Medium",
"riskHigh": "High",
"riskCritical": "Critical",
"connected": "Conn.",
"totalSpent": "Spent",
"subStart": "Start",
"subEnd": "End",
"lastNode": "Last Node"
},
"emailTemplates": {
"title": "Email Templates",
"description": "Manage email notification templates",
"subject": "Subject",
"subjectPlaceholder": "Email subject line...",
"body": "Body (HTML)",
"bodyHint": "HTML content that will be wrapped in the base email template with header and footer.",
"preview": "Preview",
"sendTest": "Send Test",
"resetDefault": "Reset to Default",
"resetConfirm": "Reset this template to the default version?",
"unsavedWarning": "Unsaved changes will be lost. Continue?",
"custom": "Custom",
"default": "Default",
"saved": "Template saved",
"resetted": "Template reset to default",
"testSent": "Test email sent",
"variables": "Available Variables",
"clickToCopy": "Click to copy",
"previewDesktopOnly": "Preview is only available in the desktop web version",
"previewNotAvailable": "Preview not available"
},
"payments": {
"title": "Payments",
"description": "Search and manage payments",
"searchPlaceholder": "Search: invoice, TG ID, @username, email...",
"searchHint": "Examples: SP-78291, @username, 123456789, user@mail.ru",
"searchResults": "Results for: {{query}} — found {{count}}",
"resetSearch": "Reset",
"statusAll": "All",
"statusPending": "Pending",
"statusPaid": "Paid",
"statusCancelled": "Cancelled",
"period24h": "24h",
"period7d": "7d",
"period30d": "30d",
"periodAll": "All",
"periodCustom": "Range",
"dateFrom": "From",
"dateTo": "To",
"applyDate": "Apply",
"allMethods": "All methods",
"totalCount": "Total",
"pendingCount": "Pending",
"paidCount": "Paid",
"cancelledCount": "Cancelled",
"totalPending": "Total pending",
"filterByMethod": "Filter by method",
"noPayments": "No payments found",
"paid": "Paid",
"user": "User",
"openLink": "Open link",
"checkStatus": "Check status",
"checking": "Checking...",
"prev": "Prev",
"next": "Next",
"checkError": "Status check failed"
},
"paymentMethods": {
"title": "Payment Methods",
"description": "Configure display order and conditions",
"enabled": "On",
"disabled": "Off",
"notConfigured": "Not configured",
"dragToReorder": "Drag to reorder",
"dragHint": "Drag cards to change order. Click to configure.",
"saveOrder": "Save Order",
"orderSaved": "Order saved",
"saved": "Settings saved",
"noMethods": "No payment methods configured",
"methodEnabled": "Method enabled",
"providerNotConfigured": "Provider not configured in env",
"displayName": "Display name",
"displayNameHint": "Leave empty for default name",
"subOptions": "Payment options",
"minAmount": "Min amount (kopeks)",
"maxAmount": "Max amount (kopeks)",
"conditions": "Display conditions",
"userTypeFilter": "User type",
"userTypeAll": "All",
"userTypeTelegram": "Telegram",
"userTypeEmail": "Email",
"firstTopupFilter": "First top-up",
"firstTopupAny": "Any",
"firstTopupYes": "Made",
"firstTopupNo": "Not made",
"firstTopupWas": "Was",
"firstTopupWasNot": "Was not",
"promoGroupFilter": "Promo groups",
"promoGroupAll": "All groups",
"promoGroupSelected": "Selected",
"promoGroupsShort": "groups",
"noPromoGroups": "No promo groups",
"cancelButton": "Cancel",
"saveButton": "Save"
},
"remnawave": {
"title": "RemnaWave",
"subtitle": "Panel management and statistics",
"connected": "Connected",
"disconnected": "Not configured",
"noData": "Failed to load data",
"tabs": {
"overview": "Overview",
"nodes": "Nodes",
"traffic": "Traffic",
"squads": "Squads",
"sync": "Sync"
},
"traffic": {
"noData": "No traffic data available",
"totalDownload": "Download",
"totalUpload": "Upload",
"totalTraffic": "Total",
"online": "online",
"inbounds": "Inbounds",
"outbounds": "Outbounds"
},
"overview": {
"system": "System",
"usersOnline": "Online",
"totalUsers": "Total Users",
"nodesOnline": "Nodes Online",
"connections": "Connections",
"bandwidth": "Inbound Traffic",
"download": "Download",
"upload": "Upload",
"total": "Total",
"server": "Server",
"cpu": "CPU Cores",
"memory": "Memory",
"uptime": "Uptime",
"traffic": "Traffic Statistics",
"traffic2days": "2 days",
"traffic7days": "7 days",
"traffic30days": "30 days",
"trafficMonth": "Month",
"trafficYear": "Year",
"usersByStatus": "Users by Status"
},
"nodes": {
"online": "Online",
"offline": "Offline",
"disabled": "Disabled",
"noNodes": "No nodes found",
"restart": "Restart",
"enable": "Enable",
"disable": "Disable",
"restartAll": "Restart All",
"confirmRestartAll": "Are you sure you want to restart all nodes?",
"usersOnline": "online",
"usersOnlineCount_one": "{{count}} online",
"usersOnlineCount_other": "{{count}} online",
"trafficUsed": "used",
"uptimeLabel": "Uptime",
"stats": {
"total": "Total",
"online": "Online",
"offline": "Offline",
"disabled": "Disabled",
"users": "Users"
}
},
"squads": {
"synced": "Synced",
"notSynced": "Not synced",
"noSquads": "No squads found",
"syncServers": "Sync Servers",
"members": "members",
"membersCount_one": "{{count}} member",
"membersCount_other": "{{count}} members",
"inbounds": "inbounds",
"inboundsCount_one": "{{count}} inbound",
"inboundsCount_other": "{{count}} inbounds",
"available": "Available",
"unavailable": "Unavailable",
"stats": {
"total": "Total",
"synced": "Synced",
"available": "Available",
"members": "Members"
},
"detail": "Squad Details",
"loadError": "Failed to load squad",
"info": "Information",
"originalName": "Original Name",
"countryCode": "Country",
"statsTitle": "Statistics",
"inboundsList": "Inbounds",
"localSettings": "Local Settings",
"trialEligible": "Trial Eligible",
"price": "Price",
"users": "Users"
},
"sync": {
"autoSync": "Auto Sync",
"runNow": "Run",
"run": "Run",
"running": "Running...",
"schedule": "Schedule",
"status": "Status",
"lastRun": "Last Run",
"nextRun": "Next Run",
"enabled": "Enabled",
"disabled": "Disabled",
"success": "Success",
"runAutoSyncNow": "Run Auto Sync Now",
"fromPanel": "From Panel",
"fromPanelDesc": "Import users from RemnaWave to bot",
"toPanel": "To Panel",
"toPanelDesc": "Export users from bot to RemnaWave"
}
},
"wheel": {
"title": "Fortune Wheel Settings",
"enabled": "Enabled",
"disabled": "Disabled",
"tabs": {
"settings": "Settings",
"prizes": "Prizes",
"statistics": "Statistics"
},
"preview": "Preview",
"settings": {
"enableWheel": "Enable Wheel",
"allowSpins": "Allow users to spin the wheel",
"spinCost": "Spin Cost",
"costInStars": "Cost in Stars",
"costInDays": "Cost in Days",
"limitsAndRtp": "Limits & RTP",
"rtpPercent": "RTP (Return to Player) %",
"dailyLimit": "Daily Spin Limit (0 = unlimited)",
"minSubDays": "Min subscription days for day payment",
"promocodes": "Promocodes",
"promoPrefix": "Promo code prefix"
},
"starsNotEnabledGlobally": "Star payments are not enabled in Payment Methods. Enable \"Telegram Stars\" in the Payment Methods section.",
"prizes": {
"addPrize": "Add Prize",
"editPrize": "Edit Prize",
"noPrizes": "No prizes configured. Add some prizes to enable the wheel.",
"deletePrize": "Delete Prize",
"confirmDelete": "Are you sure you want to delete this prize? This action cannot be undone.",
"dragToReorder": "Drag to reorder",
"unsavedOrder": "Unsaved order changes",
"unsavedOrderHint": "Save or discard your changes",
"types": {
"subscription_days": "Subscription Days",
"balance_bonus": "Balance Bonus",
"traffic_gb": "Traffic GB",
"promocode": "Promo Code",
"nothing": "Nothing (Empty)"
},
"fields": {
"type": "Type",
"displayName": "Display Name",
"value": "Value",
"valueKopeks": "Value in Kopeks (for RTP)",
"emoji": "Emoji",
"color": "Color",
"active": "Active",
"worth": "Worth"
},
"promo": {
"title": "Promo Code Settings",
"balanceBonus": "Balance bonus (kopeks)",
"subscriptionDays": "Subscription days"
}
},
"statistics": {
"totalSpins": "Total Spins",
"revenue": "Revenue",
"payouts": "Payouts",
"actualRtp": "Actual RTP",
"targetRtp": "target",
"prizeDistribution": "Prize Distribution",
"times": "times",
"times_one": "{{count}} time",
"times_other": "{{count}} times",
"topWins": "Top Wins"
}
},
"broadcasts": {
"title": "Broadcasts",
"subtitle": "History and management",
"create": "Create Broadcast",
"empty": "No broadcasts",
"selectFilter": "Select audience",
"selectFilterPlaceholder": "Select filter...",
"recipients": "recip.",
"messageText": "Message text",
"messageTextPlaceholder": "Enter broadcast message...",
"media": "Media file",
"addMedia": "Add media",
"uploading": "Uploading...",
"buttons": "Buttons",
"willBeSent": "Will be sent to",
"users": "users",
"send": "Send",
"stop": "Stop",
"progress": "Progress",
"total": "Total",
"sent": "Sent",
"failed": "Failed",
"blocked": "Blocked",
"blockedShort": "blocked",
"filter": "Filter",
"message": "Message",
"unknownAdmin": "Unknown",
"detail": "Broadcast",
"createdBy": "Created by",
"notFound": "Broadcast not found",
"prev": "Previous",
"next": "Next",
"status": {
"queued": "Queued",
"inProgress": "Sending",
"completed": "Completed",
"partial": "Partial",
"failed": "Failed",
"cancelled": "Cancelled",
"cancelling": "Cancelling"
},
"filterGroups": {
"basic": "Basic",
"subscription": "By subscription",
"traffic": "By traffic",
"registration": "By registration",
"activity": "By activity",
"source": "By source",
"tariff": "By tariff",
"email": "Email users"
},
"channel": {
"telegram": "Telegram",
"email": "Email",
"both": "Both"
},
"selectChannel": "Broadcast channel",
"telegramSection": "Telegram broadcast",
"emailSection": "Email broadcast",
"selectEmailFilter": "Select email audience",
"selectEmailFilterPlaceholder": "Select filter...",
"emailSubject": "Email subject",
"emailSubjectPlaceholder": "Enter email subject...",
"emailContent": "Email content",
"emailContentHint": "HTML supported",
"emailContentPlaceholder": "<p>Hello, {{user_name}}!</p>\n<p>Your message here...</p>",
"emailVariables": "Available variables",
"enableTelegram": "Telegram",
"enableEmail": "Email",
"sendingBoth": "2 broadcasts will be created",
"bothCreated": "Broadcasts created",
"atLeastOneChannel": "Select at least one channel",
"customButtons": "Custom buttons",
"addCustomButton": "Add button",
"customButtonLabelPlaceholder": "Button text",
"customButtonTypeCallback": "Callback",
"customButtonTypeUrl": "URL",
"customButtonCallbackPlaceholder": "callback_data (e.g. back_to_menu)",
"customButtonUrlPlaceholder": "https://example.com"
},
"pinnedMessages": {
"title": "Pinned Messages",
"subtitle": "Manage pinned messages for users",
"create": "Create",
"empty": "No pinned messages",
"content": "Message text",
"contentPlaceholder": "Enter pinned message text...",
"noContent": "No text",
"media": "Media file",
"addMedia": "Add media",
"uploading": "Uploading...",
"settings": "Settings",
"sendBeforeMenu": "Send before menu",
"sendOnEveryStart": "Send on every start",
"broadcast": "Broadcast",
"broadcastOnCreate": "Broadcast on create",
"broadcastConfirm": "Broadcast pinned message to all active users?",
"broadcastToAll": "Broadcast to all",
"activate": "Activate",
"deactivate": "Deactivate",
"unpin": "Unpin",
"unpinAll": "Unpin for everyone",
"unpinConfirm": "Unpin message for all users?",
"delete": "Delete",
"deleteConfirm": "Delete this pinned message?",
"active": "Active",
"inactive": "Inactive",
"prev": "Previous",
"next": "Next",
"createSuccess": "Pinned message created",
"updateSuccess": "Message updated",
"deleteSuccess": "Message deleted",
"activateSuccess": "Message activated",
"deactivateSuccess": "Message deactivated",
"broadcastSuccess": "Broadcast completed",
"unpinSuccess": "Messages unpinned",
"sentCount": "Sent",
"failedCount": "Failed",
"unpinnedCount": "Unpinned",
"editMessage": "Edit",
"cantDeleteActive": "Cannot delete active message"
},
"channelSubscriptions": {
"title": "Required Channels",
"subtitle": "Users must subscribe to these channels",
"addChannel": "Add Channel",
"empty": "No channels configured",
"enabled": "Enabled",
"disabled": "Disabled",
"enable": "Enable",
"disable": "Disable",
"edit": "Edit",
"editing": "Editing",
"delete": "Delete",
"deleteConfirm": "Delete this channel?",
"sortOrder": "Order",
"form": {
"title": "Display Name",
"channelId": "Channel ID",
"channelIdHint": "-100XXXXXXXXXX",
"channelLink": "Channel Link",
"channelLinkHint": "https://t.me/channel",
"submit": "Add",
"save": "Save",
"cancel": "Cancel"
},
"globalSettings": {
"title": "Channel Settings",
"channelRequired": "Require subscription",
"channelRequiredDesc": "Users must subscribe to channels to use the bot",
"disableTrialOnUnsub": "Disable trial on unsubscribe",
"disableTrialOnUnsubDesc": "Revoke trial access when user unsubscribes from any channel",
"requiredForAll": "Required for all users",
"requiredForAllDesc": "Apply channel subscription check to all users, including paid"
},
"perChannel": {
"disableTrial": "Disable trial on leave",
"disableTrialDesc": "Revoke trial when user leaves this channel",
"disablePaid": "Disable paid on leave",
"disablePaidDesc": "Revoke paid access when user leaves this channel"
}
},
"settings": {
"title": "System Settings",
"allCategories": "All categories",
"noSettings": "No settings found",
"quickToggles": "Quick Toggles",
"modified": "Modified",
"readOnly": "Read only",
"badgeDb": "DB",
"badgeEnv": "ENV",
"reset": "Reset",
"categoriesCount": "categories",
"settingsCount": "settings",
"expandAll": "Expand all",
"collapseAll": "Collapse all",
"searchPlaceholder": "Search settings...",
"searchCategoriesPlaceholder": "Search categories...",
"noSearchResults": "Nothing found",
"example": "Example",
"analytics": "Analytics",
"buttons": "Buttons",
"notConfigured": "Not configured",
"counterActive": "Active",
"counterInactive": "Inactive",
"yandexMetrika": "Yandex Metrika",
"yandexMetrikaDesc": "Track visitors and analyze website behavior",
"counterId": "Counter ID",
"yandexIdPlaceholder": "e.g. 87654321",
"yandexIdHint": "Numeric ID from metrika.yandex.ru",
"googleAds": "Google Ads",
"googleAdsDesc": "Conversion tracking for ad campaigns",
"conversionId": "Conversion ID",
"googleIdPlaceholder": "e.g. AW-123456789",
"googleIdHint": "Conversion ID in AW-XXXXXXXXX format",
"conversionLabel": "Conversion Label (optional)",
"googleLabelPlaceholder": "e.g. AbCdEfGhIjKl",
"googleLabelHint": "Conversion label for event tracking",
"analyticsHint": "Counters are automatically embedded on all cabinet pages. After saving an ID, scripts are loaded on the next page load. To remove a counter, clear the field and save.",
"inputPlaceholder": "Enter value...",
"ctrlEnterHint": "Ctrl+Enter to save",
"cancelButton": "Cancel",
"saveButton": "Save",
"saveHint": "Save (Enter)",
"cancelHint": "Cancel (Esc)",
"removeFromFavorites": "Remove from favorites",
"addToFavorites": "Add to favorites",
"enabled": "Enabled",
"disabled": "Disabled",
"foundCount": "Found: {{count}}",
"notFound": "Nothing found",
"byQuery": "by query \"{{query}}\"",
"accentColor": "Accent color",
"animatedBackground": "Animated background",
"animatedBackgroundDesc": "Show animated background effects",
"autoFullscreen": "Auto fullscreen",
"autoFullscreenDesc": "Auto expand in Telegram",
"availableThemes": "Available themes",
"colors": {
"background": "Background",
"error": "Error",
"success": "Success",
"surface": "Surface",
"text": "Text",
"textSecondary": "Secondary text",
"warning": "Warning"
},
"customColors": "Custom colors",
"darkTheme": "Dark theme",
"emailAuth": "Email auth",
"emailAuthDesc": "Allow login via email",
"giftEnabled": "Gift subscription",
"giftEnabledDesc": "Allow users to gift a subscription to another user",
"favoritesEmpty": "No favorites yet",
"favoritesHint": "Star settings to add them here",
"interfaceOptions": "Interface options",
"lightTheme": "Light theme",
"logoAndName": "Logo & name",
"notSpecified": "Not specified",
"projectName": "Project name",
"quickPresets": "Quick presets",
"resetAllColors": "Reset all colors",
"statusColors": "Status colors",
"favorites": "Favorites",
"branding": "Branding",
"theme": "Theme",
"payments": "Payments",
"subscriptions": "Subscriptions",
"interface": "Interface",
"notifications": "Notifications",
"database": "Database",
"system": "System",
"users": "Users",
"customization": "Customization",
"settingsLabel": "Settings",
"backToAdmin": "Back to admin",
"totalCount": "{{count}} total",
"modifiedCount": "{{count}} modified",
"groups": {
"payments": "Payments",
"subscriptions": "Subscriptions",
"interface": "Interface",
"users": "Users",
"notifications": "Notifications",
"database": "Database",
"system": "System"
},
"tree": {
"payments_general": "General",
"payments_stars": "Telegram Stars",
"payments_yookassa": "YooKassa",
"payments_cryptobot": "CryptoBot",
"payments_cloudpayments": "CloudPayments",
"payments_freekassa": "FreeKassa",
"payments_kassa_ai": "Kassa AI",
"payments_platega": "Platega",
"payments_pal24": "PAL24",
"payments_heleket": "Heleket",
"payments_mulenpay": "MulenPay",
"payments_tribute": "Tribute",
"payments_wata": "Wata",
"payments_riopay": "RioPay",
"payments_severpay": "SeverPay",
"subs_core": "Core",
"subs_trial": "Trial",
"subs_pricing": "Pricing",
"subs_periods": "Periods",
"subs_traffic": "Traffic",
"subs_simple": "Simple subscription",
"subs_autopay": "Auto-pay",
"iface_general": "General",
"iface_connect": "Connect button",
"iface_miniapp": "MiniApp",
"iface_happ": "HAPP",
"iface_widget": "Login Widget",
"iface_oidc": "OIDC",
"iface_skip": "Skip steps",
"iface_additional": "Additional",
"users_support": "Support",
"users_referral": "Referral",
"users_channel": "Channel",
"users_localization": "Localization",
"users_moderation": "Moderation",
"notif_user": "User notifications",
"notif_admin": "Admin notifications",
"notif_reports": "Reports",
"db_general": "General",
"db_postgres": "PostgreSQL",
"db_sqlite": "SQLite",
"db_redis": "Redis",
"sys_core": "Core & Debug",
"sys_remnawave": "RemnaWave",
"sys_webapi": "Web API",
"sys_webhook": "Webhook",
"sys_server": "Server status",
"sys_monitoring": "Monitoring",
"sys_maintenance": "Maintenance",
"sys_backup": "Backup",
"sys_version": "Version",
"sys_logging": "Logging"
},
"categories": {
"TELEGRAM_WIDGET": "Telegram Login Widget",
"TELEGRAM_OIDC": "Telegram Login (OIDC)"
},
"settingNames": {
"Telegram Widget Size": "Widget Size",
"Telegram Widget Radius": "Corner Radius",
"Telegram Widget Userpic": "Show User Photo",
"Telegram Widget Request Access": "Request Access",
"telegramOidcEnabled": "OIDC Enabled",
"telegramOidcClientId": "Client ID (Bot ID)",
"telegramOidcClientSecret": "Client Secret"
}
},
"theme": {
"accentColor": "Accent color",
"customizeColors": "Customize colors",
"hexCode": "HEX code",
"hue": "Hue",
"lightness": "Lightness",
"quickPresets": "Quick presets",
"saturation": "Saturation"
},
"buttons": {
"color": "Button color",
"emojiId": "Custom Emoji ID",
"emojiPlaceholder": "Custom emoji ID (optional)",
"resetAll": "Reset all styles",
"resetConfirm": "Reset all button styles to defaults?",
"hidden": "Hidden",
"customLabels": "Button labels",
"labelPlaceholder": "Custom button text",
"labelsHint": "Empty = default label",
"sections": {
"home": "Home",
"subscription": "Subscription",
"balance": "Balance",
"referral": "Referrals",
"support": "Support",
"info": "Info",
"admin": "Admin Panel",
"language": "Language"
},
"descriptions": {
"home": "Personal cabinet button",
"subscription": "Subscription management",
"balance": "Top-up and balance",
"referral": "Referral program",
"support": "Support tickets",
"info": "Information section",
"admin": "Web admin panel",
"language": "Language selection"
},
"styles": {
"default": "No color",
"primary": "Blue",
"success": "Green",
"danger": "Red"
}
},
"menuEditor": {
"dragHint": "Drag rows to reorder them",
"dragToReorder": "Drag to reorder",
"row": "Row",
"addRow": "Add row",
"addButton": "Add button",
"addUrlButton": "URL button (link)",
"builtinButtons": "Built-in buttons",
"resetConfirm": "Reset menu layout to defaults?",
"buttonTextPlaceholder": "Custom button text",
"customLabelsHint": "Empty = default label",
"moveUp": "Move up",
"moveDown": "Move down",
"openIn": "Open in",
"openMode": {
"external": "External browser",
"webapp": "Telegram miniapp"
},
"invalidUrl": "Please provide a valid URL (http:// or https://) for all custom buttons"
},
"apps": {
"title": "App Management",
"addApp": "Add App",
"addFirstApp": "Add First App",
"noApps": "No apps for this platform",
"createApp": "Create App",
"editApp": "Edit App",
"confirmDelete": "Are you sure you want to delete this app?",
"copyTo": "Copy to...",
"appId": "App ID",
"appName": "Name",
"urlScheme": "URL Scheme",
"featured": "Featured",
"base64Encoding": "Base64 Encoding",
"buttons": "Buttons",
"button": "Button",
"addButton": "Add Button",
"buttonText": "Button Text",
"installDescription": "Installation Description",
"subscriptionDescription": "Add Subscription Description",
"connectDescription": "Connect Description",
"beforeSubscription": "Before Add Subscription",
"afterSubscription": "After Add Subscription",
"stepTitle": "Title",
"stepDescription": "Description",
"tabs": {
"basic": "Basic",
"installation": "Installation",
"subscription": "Subscription",
"connect": "Connect",
"additional": "Additional"
},
"import": "Import",
"export": "Export",
"importApps": "Import apps from JSON",
"exportApps": "Export apps to JSON",
"importPreview": "Import Preview",
"confirmImport": "Import Apps",
"importError": "Invalid JSON file format",
"importCreateError": "Failed to create some apps",
"noAppsToImport": "No apps to import",
"remnaWaveToggle": "Toggle RemnaWave source",
"refreshRemnaWave": "Refresh from RemnaWave",
"remnaWaveMode": "Showing apps from RemnaWave panel. Read-only mode.",
"remnaWaveSettings": "RemnaWave Settings",
"remnaWaveConfigUuid": "Config UUID",
"remnaWaveConfigUuidHint": "UUID of subscription page config from RemnaWave panel",
"availableConfigs": "Available configs"
},
"tickets": {
"title": "Ticket Management",
"total": "Total",
"list": "Tickets",
"noTickets": "No tickets",
"selectTicket": "Select a ticket from the list",
"allStatuses": "All statuses",
"statusOpen": "Open",
"statusPending": "Pending",
"statusAnswered": "Answered",
"statusClosed": "Closed",
"from": "From",
"created": "Created",
"user": "User",
"you": "You",
"userLabel": "User",
"adminLabel": "Admin",
"replyPlaceholder": "Type your reply...",
"sendReply": "Send Reply",
"attachMedia": "Attach media",
"invalidFileType": "Invalid file type. Use images, videos (MP4, WebM) or documents (PDF, DOC, TXT, ZIP).",
"fileTooLarge": "File is too large. Maximum size is 10MB.",
"uploadFailed": "Failed to upload file",
"uploading": "Uploading...",
"uploadComplete": "Uploaded",
"settings": "Settings",
"settingsSubtitle": "Configure ticket system and SLA",
"settingsLoadError": "Failed to load settings",
"supportMode": "Support mode",
"supportModeDesc": "Choose how users can contact support",
"modeBoth": "Tickets and contact",
"modeTickets": "Tickets only",
"modeContact": "Contact only",
"slaSettings": "SLA Settings",
"slaEnabled": "Enable SLA (response time monitoring)",
"slaEnabledDesc": "Automatic notifications for overdue tickets",
"slaMinutes": "Response time (minutes)",
"slaMinutesDesc": "Maximum time to respond to a ticket (1-1440 minutes)",
"checkInterval": "Check interval (seconds)",
"checkIntervalDesc": "How often to check for overdue tickets (30-600 seconds)",
"reminderCooldown": "Reminder interval (minutes)",
"reminderCooldownDesc": "Minimum time between reminders (1-120 minutes)",
"settingsUpdateError": "Error saving settings",
"copyTelegramId": "Click to copy Telegram ID",
"viewUser": "Profile",
"cabinetNotifications": "Cabinet Notifications",
"userNotificationsEnabled": "User Notifications",
"userNotificationsEnabledDesc": "Send notifications to users about admin replies",
"adminNotificationsEnabled": "Admin Notifications",
"adminNotificationsEnabledDesc": "Send notifications to admins about new tickets and replies"
},
"tariffs": {
"title": "Tariff Management",
"subtitle": "Configure tariff plans",
"create": "Create Tariff",
"edit": "Edit Tariff",
"noTariffs": "No tariffs",
"name": "Name",
"namePlaceholder": "Enter tariff name",
"description": "Description",
"descriptionPlaceholder": "Enter tariff description",
"trafficLimit": "Traffic Limit",
"trafficHint": "0 = unlimited traffic",
"deviceLimit": "Device Limit",
"tierLevel": "Tier Level",
"tierHint": "1-10, affects priority during upgrade",
"unlimited": "Unlimited",
"devices": "devices",
"devices_one": "{{count}} device",
"devices_other": "{{count}} devices",
"servers": "servers",
"servers_one": "{{count}} server",
"servers_other": "{{count}} servers",
"subscriptions": "subscriptions",
"subscriptions_one": "{{count}} subscription",
"subscriptions_other": "{{count}} subscriptions",
"trial": "Trial",
"inactive": "Inactive",
"activate": "Activate",
"deactivate": "Deactivate",
"toggleTrial": "Toggle Trial",
"delete": "Delete",
"confirmDelete": "Delete tariff?",
"confirmDeleteText": "This action cannot be undone. The tariff will be permanently deleted.",
"confirmDeleteWithSubscriptions": "This tariff has {{count}} active subscriptions. After deletion, users will need to select a new tariff when renewing.",
"deleteSuccess": "Tariff deleted successfully",
"deleteSuccessWithSubscriptions": "Tariff deleted. {{count}} subscriptions reset — users will choose a new tariff on renewal.",
"saveOrder": "Save order",
"orderSaved": "Order saved",
"dragToReorder": "Drag to reorder",
"days": "days",
"days_one": "{{count}} day",
"days_other": "{{count}} days",
"tabs": {
"basic": "Basic",
"prices": "Prices",
"servers": "Servers"
},
"pricesHint": "Enable required periods and set prices (in rubles)",
"periodDisabled": "Disabled",
"serversHint": "Select servers available for this tariff. You can set individual traffic limits for each server.",
"noServers": "No servers available",
"serverTrafficLimit": "Traffic limit",
"useDefault": "default",
"selectType": "Select tariff type",
"selectTypeDesc": "Choose the billing method for your new tariff",
"periodTariff": "Period-based tariff",
"periodTariffDesc": "Payment for period (7, 30, 90 days, etc.). Flexible periods and prices.",
"dailyTariff": "Daily tariff",
"dailyTariffDesc": "Daily deduction from balance. Can be paused.",
"editTitle": "Edit tariff",
"newPeriodTitle": "New period-based tariff",
"newDailyTitle": "New daily tariff",
"periodPayment": "Payment for period",
"dailyDeduction": "Daily deduction",
"tabBasic": "Basic",
"tabPeriods": "Periods",
"tabServers": "Servers",
"tabExtra": "Additional",
"nameLabel": "Tariff name",
"nameExamplePeriod": "E.g.: Standard",
"nameExampleDaily": "E.g.: Daily",
"nameHint": "2 to 50 characters",
"descriptionLabel": "Description",
"descriptionPlaceholder2": "Brief tariff description",
"trafficLimitLabel": "Traffic limit",
"gbUnit": "GB",
"trafficLimitHint": "0 = unlimited traffic",
"deviceLimitLabel": "Devices in tariff",
"tierLevelLabel": "Tariff tier level",
"tierLevelHint": "Affects upgrade availability between tariffs",
"fieldRequired": "Required field",
"periodsTabHint": "Add periods and prices for the tariff. Users will be able to choose from the added periods.",
"addPeriodTitle": "Add period",
"daysLabel": "Days",
"priceLabel": "Price (₽)",
"addButton": "Add",
"noPeriodsHint": "No added periods. Add at least one period.",
"daysShort": "d.",
"serversTitle": "Servers",
"externalSquadTitle": "External Squad",
"externalSquadHint": "Assign a RemnaWave external squad for users on this tariff. When a subscription is created, the user will be automatically added to the selected squad.",
"noExternalSquad": "No external squad",
"externalSquadUsers": "users",
"serversTabHint": "Select servers available on this tariff.",
"noServersAvailable": "No servers available",
"promoGroupsTitle": "Promo Groups",
"promoGroupsHint": "Select promo groups that have access to this tariff. If none selected — available to everyone.",
"noPromoGroups": "No promo groups",
"extraDeviceTitle": "Additional devices",
"devicePriceLabel": "Device price (30 days):",
"devicePriceHint": "0 = device purchase unavailable",
"maxDeviceLabel": "Max. devices on tariff:",
"noLimitHint": "0 = no limits",
"extraTrafficTitle": "Additional traffic",
"trafficMaxLimitLabel": "Max. limit:",
"trafficLimitHint2": "(0 = no limits)",
"trafficPackagesLabel": "Traffic packages:",
"addPackageTitle": "Add package",
"noPackagesHint": "No packages added. Add at least one package.",
"gbPackageUnit": "GB:",
"customDaysTitle": "Custom number of days",
"customDaysDesc": "User selects subscription duration",
"pricePerDayLabel": "Price per day:",
"minDaysLabel": "Min. days:",
"maxDaysLabel": "Max. days:",
"customTrafficTitle": "Custom traffic volume",
"customTrafficDesc": "User selects traffic volume when purchasing",
"pricePerGbLabel": "Price per 1 GB:",
"minTrafficLabel": "Min. GB:",
"maxTrafficLabel": "Max. GB:",
"trafficResetModeTitle": "Traffic reset mode",
"trafficResetModeDesc": "Defines when used traffic resets for subscribers of this tariff",
"resetModeGlobal": "Global setting",
"resetModeGlobalDesc": "Use value from bot config",
"resetModeDaily": "Daily",
"resetModeDailyDesc": "Reset every day",
"resetModeWeekly": "Weekly",
"resetModeWeeklyDesc": "Reset every week",
"resetModeMonthly": "Monthly",
"resetModeMonthlyDesc": "Reset every month",
"resetModeMonthRolling": "Rolling month",
"resetModeMonthRollingDesc": "Reset every 30 days from first connection",
"resetModeNever": "Never",
"resetModeNeverDesc": "Traffic is not reset",
"cancelButton": "Cancel",
"savingButton": "Saving...",
"saveButton": "Save",
"dailyType": "Daily",
"periodType": "Period-based",
"dailyPriceLabel": "Price per day",
"currencyPerDay": "₽/day",
"dailyDeductionDesc": "Charged daily from user's balance",
"dailyPriceRequired": "Enter a price per day greater than 0",
"cannotSave": "Cannot save tariff:",
"statusTitle": "Tariff Status",
"isActiveLabel": "Active",
"isActiveHint": "Inactive tariffs are not shown to users",
"showInGiftLabel": "Show in gifts",
"showInGiftHint": "Tariff will be available for purchase in the gifts section",
"giftBadge": "Gift",
"isTrialLabel": "Trial tariff",
"isTrialHint": "Available for free trial period",
"validation": {
"nameRequired": "Enter tariff name",
"nameLength": "Name must be 2 to 50 characters",
"deviceLimitRequired": "Specify number of devices (minimum 1)",
"tierLevelInvalid": "Tier level must be between 1 and 10",
"fieldsRequired": "Fill in required fields (devices, tier level)",
"periodsRequired": "Add at least one period",
"dailyPriceRequired": "Enter a price per day greater than 0",
"trafficPackagesRequired": "Add at least one traffic package (or disable traffic topup)"
}
},
"servers": {
"title": "Server Management",
"subtitle": "Configure VPN servers",
"sync": "Sync",
"syncing": "Syncing...",
"syncNow": "Sync now",
"noServers": "No servers. Sync with RemnaWave.",
"edit": "Edit Server",
"originalName": "Original Name",
"displayName": "Display Name",
"displayNamePlaceholder": "Enter display name",
"description": "Description",
"descriptionPlaceholder": "Enter server description",
"countryCode": "Country Code",
"price": "Price",
"priceHint": "Additional server cost",
"maxUsers": "Max Users",
"sortOrder": "Sort Order",
"unlimited": "Unlimited",
"stats": "Statistics",
"currentUsers": "Current Users",
"activeSubscriptions": "Active Subscriptions",
"usedByTariffs": "Used by Tariffs",
"trial": "Trial",
"unavailable": "Unavailable",
"full": "Full",
"enable": "Enable",
"disable": "Disable",
"toggleTrial": "Toggle Trial",
"loadError": "Failed to load server",
"mainSettings": "Main Settings",
"pricingAndLimits": "Pricing & Limits",
"updateError": "Failed to save changes"
},
"campaigns": {
"title": "Ad Campaigns",
"subtitle": "Manage advertising links",
"createButton": "Create",
"noData": "No ad campaigns",
"loadMore": "Load more",
"bonusType": {
"balance": "Balance",
"subscription": "Subscription",
"tariff": "Tariff",
"none": "Link only"
},
"overview": {
"totalCampaigns": "Total campaigns",
"active": "Active",
"registrations": "Registrations",
"bonusesIssued": "Bonuses issued"
},
"table": {
"inactive": "Inactive",
"registrations_one": "{{count}} registration",
"registrations_other": "{{count}} registrations",
"revenue": "{{amount}} revenue",
"conversion": "{{rate}}% conversion",
"statistics": "Statistics",
"deactivate": "Deactivate",
"activate": "Activate",
"edit": "Edit",
"delete": "Delete"
},
"modal": {
"editTitle": "Edit Campaign",
"createTitle": "New Campaign",
"close": "Close"
},
"form": {
"name": "Name",
"namePlaceholder": "E.g.: Instagram Ad",
"startParameter": "Label (start parameter)",
"startParameterHint": "Latin letters, digits, _ and - only",
"bonusType": "Bonus type",
"balanceBonus": "Balance bonus",
"trialSubscription": "Trial subscription",
"days": "Days",
"trafficGb": "Traffic (GB)",
"devices": "Devices",
"servers": "Servers",
"tariff": "Tariff",
"selectTariff": "Select tariff",
"notSelected": "Not selected",
"tariffOption": "{{traffic}} GB, {{devices}} dev.",
"durationDays": "Duration (days)",
"noBonusDescription": "Campaign without bonuses — only for tracking clicks and registrations.",
"active": "Active",
"cancel": "Cancel",
"save": "Save",
"saving": "Saving...",
"partner": "Partner",
"noPartner": "No partner",
"selectPartner": "Select partner",
"partnerAutoAssign": "Campaign will be automatically assigned to partner {{name}}"
},
"stats": {
"title": "Campaign Statistics",
"loadError": "Failed to load statistics",
"detailedStats": "Detailed Statistics",
"registrations": "Registrations",
"revenue": "Revenue",
"paidUsers": "Paid",
"conversion": "Conversion",
"bonusesIssued": "Bonuses issued",
"subscriptionsIssued_one": "{{count}} subscription",
"subscriptionsIssued_other": "{{count}} subscriptions",
"tariffsIssued_one": "{{count}} tariff",
"tariffsIssued_other": "{{count}} tariffs",
"avgRevenuePerUser": "Avg revenue per user",
"avgFirstPayment": "Avg first payment",
"trialSubscriptions": "Trial subscriptions",
"trialCount": "{{total}} (active: {{active}})",
"trialConversion": "Trial conversion",
"lastRegistration": "Last registration",
"active": "Active",
"inactive": "Inactive",
"copy": "Copy",
"copied": "Copied!",
"botLink": "Bot link",
"webLink": "Web link",
"users": "Users",
"noUsers": "No registered users",
"paid": "Paid",
"hasSub": "Has sub",
"dailyChart": "30-day trends",
"chartRegistrations": "Registrations",
"chartRevenue": "Revenue",
"totalDeposits": "Total Deposits",
"totalSpending": "Subscription Spending",
"periodComparison": "Period comparison",
"vsLastWeek": "vs last week",
"topRegistrations": "Top registrations"
},
"users": {
"title": "Campaign Users",
"campaignRegistrations": "{{name}} — {{count}} registrations",
"noUsers": "No registered users",
"user": "User",
"bonus": "Bonus",
"balance": "Balance",
"status": "Status",
"date": "Date",
"noName": "No name",
"paid": "Paid",
"prev": "Prev",
"next": "Next",
"pageOf": "{{page}} of {{totalPages}}"
},
"confirm": {
"deleteTitle": "Delete campaign?",
"deleteText": "This action cannot be undone. Campaigns with registrations cannot be deleted.",
"cancel": "Cancel",
"delete": "Delete"
},
"loadError": "Failed to load campaign",
"updateError": "Failed to save changes"
},
"withdrawals": {
"title": "Withdrawals",
"subtitle": "Manage withdrawal requests",
"noData": "No withdrawal requests",
"risk": "Risk:",
"overview": {
"pendingCount": "Pending",
"pendingAmount": "Pending amount",
"approvedCount": "Approved",
"completedCount": "Completed"
},
"filter": {
"all": "All",
"pending": "Pending",
"approved": "Approved",
"rejected": "Rejected",
"completed": "Completed",
"cancelled": "Cancelled"
},
"status": {
"pending": "Pending",
"approved": "Approved",
"rejected": "Rejected",
"completed": "Completed",
"cancelled": "Cancelled",
"unknown": "Unknown"
},
"detail": {
"title": "Withdrawal",
"loadError": "Failed to load withdrawal details",
"userInfo": "User Information",
"username": "Username",
"telegramId": "Telegram ID",
"balance": "Balance",
"totalReferrals": "Total referrals",
"totalEarnings": "Total earnings",
"requestedAmount": "Requested Amount",
"createdAt": "Created",
"paymentDetails": "Payment Details",
"noPaymentDetails": "No payment details provided",
"riskAnalysis": "Risk Analysis",
"riskScore": "Risk score",
"riskLevel": {
"low": "Low",
"medium": "Medium",
"high": "High",
"critical": "Critical"
},
"flags": "Flags",
"balanceStats": "Balance Statistics",
"referralDeposits": "Referral Deposits",
"suspiciousReferrals": "Suspicious Referrals",
"earningsByReason": "Earnings by Reason",
"adminComment": "Admin Comment",
"processedAt": "Processed at",
"approve": "Approve",
"approving": "Approving...",
"reject": "Reject",
"rejecting": "Rejecting...",
"complete": "Mark as Completed",
"completing": "Completing...",
"rejectTitle": "Reject withdrawal?",
"rejectDescription": "Optionally add a comment explaining the reason for rejection.",
"commentPlaceholder": "Reason for rejection (optional)...",
"confirmReject": "Confirm Rejection"
}
},
"partners": {
"title": "Partners",
"subtitle": "Partner management and applications",
"totalPartners": "Total partners",
"pendingApplications": "Pending applications",
"totalReferrals": "Total referrals",
"totalEarnings": "Total earnings",
"tabs": {
"partners": "Partners",
"applications": "Applications"
},
"noPartners": "No partners yet",
"noApplications": "No pending applications",
"commission": "{{percent}}% commission",
"referrals": "{{count}} referrals",
"actions": {
"approve": "Approve",
"reject": "Reject",
"review": "Review"
},
"applicationFields": {
"companyName": "Company",
"website": "Website",
"channel": "Channel",
"description": "Description",
"expectedReferrals": "Expected referrals/mo",
"desiredCommission": "Desired commission"
},
"approveDialog": {
"title": "Approve Application",
"description": "Approve partner application from {{name}}",
"commissionLabel": "Commission (%)"
},
"rejectDialog": {
"title": "Reject Application",
"description": "Reject partner application from {{name}}",
"commentLabel": "Comment (optional)",
"commentPlaceholder": "Reason for rejection..."
},
"settings": "Settings",
"settingsSubtitle": "Partner program and withdrawal settings",
"settingsLoadError": "Failed to load settings",
"settingsUpdateError": "Failed to save settings",
"settingsSection": {
"referralProgram": "Referral Program",
"withdrawalSettings": "Withdrawal Settings"
},
"settingsFields": {
"programEnabled": "Referral program enabled",
"programEnabledDesc": "Enable/disable referral program for all users",
"partnerVisible": "Partner section visible in cabinet",
"partnerVisibleDesc": "Show/hide partner application and withdrawal sections for users",
"withdrawalEnabled": "Withdrawal enabled",
"withdrawalEnabledDesc": "Allow partners to request withdrawal of referral balance",
"minAmount": "Min. withdrawal amount (kopeks)",
"minAmountDesc": "Minimum amount for a withdrawal request (100 kopeks = 1 ₽)",
"cooldownDays": "Cooldown between withdrawals (days)",
"cooldownDaysDesc": "How many days must pass between withdrawal requests",
"requisitesText": "Requisites field prompt",
"requisitesTextDesc": "Custom text shown to users to describe what payment details to provide",
"requisitesTextPlaceholder": "E.g.: Provide your bank card number or USDT TRC-20 address"
}
},
"partnerDetail": {
"title": "Partner Details",
"loadError": "Failed to load partner details",
"status": {
"approved": "Active",
"pending": "Pending",
"rejected": "Rejected",
"none": "Not a partner"
},
"stats": {
"totalReferrals": "Total referrals",
"paidReferrals": "Paid referrals",
"activeReferrals": "Active referrals",
"conversionRate": "Conversion"
},
"earnings": {
"title": "Earnings",
"allTime": "All time",
"today": "Today",
"week": "This week",
"month": "This month"
},
"commission": {
"title": "Commission",
"update": "Update"
},
"campaigns": {
"title": "Assigned Campaigns",
"noCampaigns": "No campaigns assigned",
"active": "Active",
"inactive": "Inactive",
"assign": "Assign",
"unassign": "Unassign",
"createNew": "Create",
"assignTitle": "Assign Campaign",
"noAvailable": "No available campaigns to assign",
"createTitle": "Create Campaign",
"createSubtitle": "Campaign will be auto-assigned to the partner",
"autoAssignNote": "Campaign will be automatically assigned to partner {{name}}",
"createAndAssign": "Create & Assign"
},
"dangerZone": {
"title": "Danger Zone",
"revokeButton": "Revoke Partner Status"
},
"commissionDialog": {
"title": "Update Commission",
"description": "Set a new commission percentage for this partner.",
"label": "Commission (%)"
},
"revokeDialog": {
"title": "Revoke Partner Status?",
"description": "This will remove partner privileges. The partner will no longer earn commissions from referrals."
}
},
"promocodes": {
"title": "Promo Codes",
"subtitle": "Manage promo codes and discount groups",
"addPromocode": "Add promo code",
"addGroup": "Add group",
"noPromocodes": "No promo codes",
"noGroups": "No discount groups",
"firstPurchase": "First purchase",
"used": "Used",
"until": "Until",
"discountForHours": "-{{percent}}% for {{hours}}h",
"tabs": {
"promocodes_one": "Promo codes ({{count}} code)",
"promocodes_other": "Promo codes ({{count}} codes)",
"groups_one": "Discount groups ({{count}} group)",
"groups_other": "Discount groups ({{count}} groups)"
},
"type": {
"balance": "Balance",
"subscriptionDays": "Subscription days",
"trialSubscription": "Trial subscription",
"promoGroup": "Discount group",
"discount": "Discount %"
},
"modal": {
"editPromocode": "Edit promo code",
"newPromocode": "New promo code",
"editGroup": "Edit group",
"newGroup": "New discount group",
"close": "Close",
"edit": "Edit"
},
"form": {
"code": "Promo code",
"type": "Promo code type",
"typeBalance": "Balance top-up",
"typeSubscriptionDays": "Subscription days",
"typeTrialSubscription": "Trial subscription",
"typePromoGroup": "Discount group",
"typeDiscount": "Percentage discount",
"bonusAmount": "Bonus amount",
"rub": "RUB",
"daysCount": "Number of days",
"days": "days",
"discountGroup": "Discount group",
"selectGroup": "Select group...",
"discountPercent": "Discount percent",
"discountHint": "Discount is applied once at payment",
"validityPeriod": "Validity period",
"hours": "hours",
"validityHint": "How many hours after activation the discount is valid",
"maxUses": "Max uses",
"unlimitedHint": "0 = unlimited",
"validUntil": "Valid until",
"validUntilHint": "Leave empty for unlimited promo code",
"active": "Active",
"firstPurchaseOnly": "First purchase only",
"cancel": "Cancel",
"saving": "Saving...",
"save": "Save"
},
"stats": {
"title": "Promo code statistics",
"notFound": "Promo code not found",
"totalUses": "Total uses",
"today": "Today",
"remaining": "Remaining",
"details": "Promo code details",
"type": "Type",
"bonus": "Bonus",
"daysLabel": "Days",
"discountLabel": "Discount",
"validFor": "Valid for",
"hoursValue_one": "{{count}} hour",
"hoursValue_other": "{{count}} hours",
"limit": "Limit",
"status": "Status",
"active": "Active",
"inactive": "Inactive",
"created": "Created",
"validUntil": "Valid until",
"unlimited": "Unlimited",
"restriction": "Restriction",
"firstPurchaseOnly": "First purchase only",
"usageHistory": "Usage history",
"noUsages": "Promo code has not been used yet",
"totalPromocodes": "Total promo codes",
"activeCount": "Active",
"usagesCount": "Uses",
"exhausted": "Exhausted"
},
"actions": {
"stats": "Statistics",
"edit": "Edit",
"delete": "Delete"
},
"groups": {
"name": "Group name",
"namePlaceholder": "VIP clients",
"categoryDiscounts": "Category discounts",
"servers": "Servers",
"traffic": "Traffic",
"devices": "Devices",
"periodDiscounts": "Period discounts",
"add": "Add",
"periodDiscountsHint": "Discount is applied when purchasing a subscription for the specified number of days",
"noPeriodDiscounts": "No period discounts",
"daysPlaceholder": "Days",
"daysArrow": "days →",
"autoAssign": "Auto-assign when spending from",
"autoAssignHint": "0 = do not assign automatically",
"applyToAddons": "Apply to additional services",
"default": "Default",
"daysShort": "{{days}} d.",
"autoFrom": "Auto from {{amount}} RUB",
"members_one": "{{count}} member",
"members_other": "{{count}} members"
},
"confirm": {
"deletePromocode": "Delete promo code?",
"deleteGroup": "Delete group?",
"deletePromocodeText": "The promo code will be permanently deleted.",
"deleteGroupText": "The group will be deleted. Users will lose discounts from this group.",
"deleteButton": "Delete"
},
"validation": {
"codeRequired": "Enter promo code",
"balanceRequired": "Bonus amount must be greater than 0",
"daysRequired": "Number of days must be greater than 0",
"groupRequired": "Select a discount group",
"discountPercentInvalid": "Discount percent must be between 1 and 100",
"discountHoursRequired": "Specify the discount validity period in hours"
}
},
"promoGroups": {
"title": "Discount Groups",
"subtitle": "Manage discount groups for users",
"addGroup": "Add Group",
"noGroups": "No discount groups",
"default": "Default",
"servers": "Servers",
"traffic": "Traffic",
"devices": "Devices",
"daysShort": "{{days}} days",
"autoFrom": "Auto from {{amount}} rub.",
"members": "{{count}} members",
"createTitle": "Create Discount Group",
"editTitle": "Edit Group",
"stats": {
"total": "Total groups",
"members": "Members",
"autoAssign": "With auto-assign"
},
"actions": {
"edit": "Edit",
"delete": "Delete"
},
"confirm": {
"title": "Delete group?",
"text": "The group will be deleted. Users will lose discounts from this group.",
"cancel": "Cancel",
"delete": "Delete"
},
"form": {
"name": "Group name",
"namePlaceholder": "VIP customers",
"nameRequired": "Enter group name",
"categoryDiscounts": "Category discounts",
"periodDiscounts": "Period discounts",
"add": "Add",
"periodHint": "Discount is applied when purchasing a subscription for the specified number of days",
"noPeriods": "No period discounts",
"daysPlaceholder": "Days",
"arrow": "days →",
"autoAssign": "Auto-assign when spent from",
"rub": "rub.",
"autoAssignHint": "0 = don't auto-assign",
"applyToAddons": "Apply to additional services",
"isDefault": "Default group",
"cancel": "Cancel",
"saving": "Saving...",
"save": "Save"
}
},
"users": {
"title": "Users",
"subtitle": "Bot user management",
"search": "Search by ID, name, username...",
"searchEmail": "Search by email...",
"noData": "No users found",
"purchaseCount_one": "{{count}} purchase",
"purchaseCount_other": "{{count}} purchases",
"noPurchases": "No purchases",
"stats": {
"total": "Total",
"active": "Active",
"withSubscription": "With subscription",
"newToday": "New today",
"blocked": "Blocked"
},
"status": {
"active": "Active",
"blocked": "Blocked",
"deleted": "Deleted",
"subscription": "Subscription",
"trial": "Trial",
"expired": "Expired"
},
"filters": {
"allStatuses": "All statuses",
"byDate": "By date",
"byBalance": "By balance",
"byActivity": "By activity",
"bySpent": "By spending"
},
"pagination": {
"showing": "Showing {{from}}-{{to}} of {{total}}"
},
"actions": {
"block": "Block",
"unblock": "Unblock",
"apply": "Apply",
"applying": "Applying..."
},
"confirm": {
"block": "Block this user?"
},
"userActions": {
"delete": "Delete user",
"resetTrial": "Reset trial",
"resetSubscription": "Reset subscription",
"disable": "Disable user",
"error": "Failed to perform action",
"success": {
"delete": "User successfully deleted",
"resetTrial": "Trial successfully reset",
"resetSubscription": "Subscription successfully reset",
"disable": "User successfully disabled"
},
"confirmDelete": {
"title": "Delete user?",
"message": "Are you sure? This action is irreversible. The user will be fully deleted from the bot and from the Remnawave panel."
},
"confirmResetTrial": {
"title": "Reset trial?",
"message": "The user will be able to use the trial period again."
},
"confirmResetSubscription": {
"title": "Reset subscription?",
"message": "The user's current subscription will be cancelled."
},
"confirmDisable": {
"title": "Disable user?",
"message": "The user will not be able to use the service until reactivated."
}
},
"detail": {
"tabs": {
"info": "Information",
"subscription": "Subscription",
"balance": "Balance",
"sync": "Synchronization",
"tickets": "Tickets",
"gifts": "Gifts",
"referrals": "Referrals"
},
"noTickets": "No tickets from this user",
"ticketsCount": "tickets",
"messagesCount": "messages",
"status": "Status",
"language": "Language",
"registration": "Registration",
"lastActivity": "Last activity",
"totalSpent": "Total spent",
"purchases": "Purchases",
"campaign": "Advertising campaign",
"referralsList": "Referrals list",
"referralEarnings": "Referral earnings",
"noReferrals": "No referrals",
"panelConfig": "Panel configuration",
"trojanPassword": "Trojan password",
"vlessUuid": "VLESS UUID",
"ssPassword": "SS password",
"subscriptionUrl": "Subscription URL",
"happLink": "HAPP link",
"firstConnected": "First connected",
"lastOnline": "Last online",
"lastNode": "Last node",
"liveTraffic": "Current traffic",
"lifetime": "Lifetime",
"nodeUsage": "Node usage",
"copied": "Copied",
"panelNotFound": "User not found in panel",
"devices": {
"title": "Devices",
"none": "No connected devices",
"resetAll": "Reset all",
"deleted": "Device removed",
"allDeleted": "All devices reset"
},
"referral": {
"title": "Referral program",
"referrals": "Referrals",
"earned": "Earned",
"commission": "Commission",
"default": "Default",
"invalidPercent": "Commission must be between 0 and 100"
},
"restrictions": {
"title": "Restrictions",
"topup": "• Top-up prohibited",
"subscription": "• Subscription purchase prohibited",
"reason": "Reason"
},
"actions": {
"title": "Actions",
"areYouSure": "Are you sure?"
},
"promoGroup": "Promo group",
"noPromoGroup": "Not set",
"changePromoGroup": "Change",
"selectPromoGroup": "Select group",
"removePromoGroup": "Remove",
"activePromoOffer": "Active promo offer",
"discount": "Discount",
"source": "Source",
"expiresAt": "Expires",
"deactivateOffer": "Deactivate",
"sendOffer": "Send offer",
"discountPercent": "Discount %",
"validHours": "Valid hours",
"offerSent": "Offer sent",
"offerSendError": "Failed to send offer",
"offerDeactivated": "Offer deactivated",
"subscription": {
"current": "Current subscription",
"tariff": "Tariff",
"notSpecified": "Not specified",
"validUntil": "Valid until",
"traffic": "Traffic",
"devices": "Devices",
"actions": "Actions",
"extend": "Extend",
"shorten": "Deduct days",
"changeTariff": "Change tariff",
"cancel": "Cancel",
"activate": "Activate",
"days": "Days",
"selectTariff": "Select tariff",
"unavailable": "(unavailable)",
"noActive": "No active subscription",
"create": "Create subscription",
"creating": "Creating...",
"trafficPackages": "Traffic packages",
"addTraffic": "Add traffic",
"selectPackage": "Select package",
"addButton": "Add",
"addTrafficNote": "Admin: free, valid 30 days",
"trafficRemoved": "Traffic package removed",
"trafficAdded": "Traffic package added",
"expired": "expired",
"daysLeft": "d left",
"deviceLimitUpdated": "Device limit updated",
"invalidDays": "Please enter a valid number of days (greater than 0)"
},
"balance": {
"current": "Current balance",
"amountPlaceholder": "Amount in rubles",
"descriptionPlaceholder": "Description (optional)",
"add": "Add",
"subtract": "Deduct",
"addByAdmin": "Added by admin",
"subtractByAdmin": "Deducted by admin",
"recentTransactions": "Recent transactions"
},
"sync": {
"selectSubscription": "Select subscription",
"hasDifferences": "Differences found",
"synced": "Synchronized",
"bot": "Bot",
"panel": "Panel",
"statusLabel": "Status",
"until": "Until",
"traffic": "Traffic",
"devices": "Devices",
"squads": "Squads",
"notLinked": "Not linked",
"fromPanel": "From panel to bot",
"toPanel": "From bot to panel"
},
"gifts": {
"title": "User Gifts",
"sentTitle": "Sent Gifts",
"receivedTitle": "Received Gifts",
"noSent": "No gifts sent by this user",
"noReceived": "No gifts received by this user",
"noGifts": "No gifts",
"token": "Code",
"tariff": "Tariff",
"period": "Period",
"devices": "Devices",
"amount": "Amount",
"paymentMethod": "Payment method",
"recipient": "Recipient",
"sender": "Sender",
"message": "Message",
"createdAt": "Created",
"paidAt": "Paid",
"deliveredAt": "Activated",
"status": {
"pending": "Pending",
"paid": "Paid",
"delivered": "Delivered",
"pending_activation": "Pending activation",
"failed": "Failed",
"expired": "Expired"
},
"days": "d",
"codeOnly": "Code only",
"via": "via",
"balance": "balance",
"unknownUser": "Unknown",
"totalSent": "Total sent",
"totalReceived": "Total received"
},
"referrals": {
"referredBy": "Referred By",
"noReferrer": "No referrer assigned",
"assignReferrer": "Assign Referrer",
"removeReferrer": "Remove",
"referrerAssigned": "Referrer assigned successfully",
"referrerRemoved": "Referrer removed successfully",
"totalReferrals": "Total Referrals",
"totalEarnings": "Total Earnings",
"commission": "Commission",
"referralCode": "Referral Code",
"default": "default",
"referralsList": "Referrals",
"noReferrals": "No referrals yet",
"removeReferral": "Remove referral",
"referralRemoved": "Referral removed successfully",
"addReferral": "Add Referral",
"referralAdded": "Referral added successfully",
"searchPlaceholder": "Search by name, email, or Telegram ID...",
"alreadyReferred": "already has referrer",
"noUsersFound": "No users found"
}
}
},
"promoOffers": {
"title": "Promo Offers",
"subtitle": "Templates, broadcasts and offer logs",
"sendButton": "Send",
"tabs": {
"templates_one": "Templates ({{count}} template)",
"templates_other": "Templates ({{count}} templates)",
"logs": "Logs"
},
"noData": {
"templates": "No templates",
"logs": "No records"
},
"status": {
"active": "Active",
"inactive": "Inactive"
},
"table": {
"discount": "Discount",
"offerDuration": "Offer duration",
"hoursShort": "{{hours}}h",
"discountDuration": "Discount duration",
"testAccess": "Test access"
},
"form": {
"editTemplate": "Edit template",
"templateName": "Template name",
"messageText": "Message text",
"buttonText": "Button text",
"validHours": "Offer duration (hours)",
"activationTime": "Time to activate",
"discountPercent": "Discount (%)",
"testDurationHours": "Access duration (hours)",
"defaultZero": "0 = default",
"activeDiscountHours": "Discount validity (hours)",
"discountDurationHint": "How long the discount lasts after activation",
"templateActive": "Template active",
"saving": "Saving..."
},
"send": {
"title": "Send promo offer",
"offerTemplate": "Offer template",
"discountLabel": "{{percent}}% discount",
"hoursToActivate": "{{hours}}h to activate",
"sendTo": "Send to",
"segment": "Segment",
"user": "User",
"userIdPlaceholder": "Telegram ID or User ID",
"searchUserPlaceholder": "Search by name, username or Telegram ID...",
"noUsersFound": "No users found",
"hasSubscription": "Sub",
"preview": "Preview",
"sending": "Sending...",
"sendButton": "Send"
},
"result": {
"sentTitle": "Sent!",
"offersCreated_one": "Offer created: {{count}}",
"offersCreated_other": "Offers created: {{count}}",
"notificationsSent_one": "Notification sent: {{count}}",
"notificationsSent_other": "Notifications sent: {{count}}",
"notificationsFailed_one": "(failed: {{count}})",
"notificationsFailed_other": "(failed: {{count}})",
"sendError": "Failed to send offer"
},
"notFound": "Template not found",
"noActiveTemplates": "No active templates",
"backToList": "Back to offers",
"sendAnother": "Send another",
"actions": {
"created": "Created",
"claimed": "Claimed",
"consumed": "Consumed",
"disabled": "Disabled"
},
"segments": {
"all": "All users",
"active": "Active subscribers",
"trial": "Trial users",
"trialEnding": "Trial ending",
"expiring": "Subscription expiring",
"expired": "Expired subscription",
"zero": "Zero balance",
"autopayFailed": "Autopay failed",
"lowBalance": "Low balance",
"inactive30d": "Inactive 30 days",
"inactive60d": "Inactive 60 days",
"inactive90d": "Inactive 90 days",
"customToday": "Registered today",
"customWeek": "Registered this week",
"customMonth": "Registered this month",
"customActiveToday": "Active today"
},
"offerType": {
"testAccess": "Test access",
"testAccessDesc": "Temporary access to additional servers",
"extendDiscount": "Renewal discount",
"extendDiscountDesc": "Discount for current subscribers",
"purchaseDiscount": "Purchase discount",
"purchaseDiscountDesc": "Discount for new users"
}
},
"roles": {
"title": "Roles & Permissions",
"subtitle": "Manage admin roles and their permissions",
"createRole": "Create Role",
"noRoles": "No roles found",
"systemBadge": "System",
"inactiveBadge": "Inactive",
"levelLabel": "Level",
"usersCount_one": "{{count}} user",
"usersCount_other": "{{count}} users",
"permissionsCount_one": "{{count}} permission",
"permissionsCount_other": "{{count}} permissions",
"stats": {
"totalRoles": "Total roles",
"active": "Active",
"system": "System"
},
"actions": {
"edit": "Edit",
"delete": "Delete"
},
"modal": {
"createTitle": "Create Role",
"editTitle": "Edit Role",
"close": "Close"
},
"form": {
"name": "Role name",
"namePlaceholder": "e.g. Moderator",
"description": "Description",
"descriptionPlaceholder": "What this role is for...",
"level": "Priority level",
"levelValue": "Level value",
"levelHint": "Higher level = more authority. Users can only manage roles with a lower level than their own.",
"color": "Color",
"presets": "Permission presets",
"permissions": "Permissions",
"permissionSections": {
"users": "Users",
"tickets": "Tickets",
"stats": "Statistics",
"sales_stats": "Sales statistics",
"broadcasts": "Broadcasts",
"tariffs": "Tariffs",
"promocodes": "Promo codes",
"promo_groups": "Promo groups",
"promo_offers": "Promo offers",
"campaigns": "Campaigns",
"partners": "Partners",
"withdrawals": "Withdrawals",
"payments": "Payments",
"payment_methods": "Payment methods",
"servers": "Servers",
"remnawave": "Remnawave",
"traffic": "Traffic",
"settings": "Settings",
"roles": "Roles",
"audit_log": "Audit log",
"channels": "Channels",
"ban_system": "Ban system",
"wheel": "Lucky wheel",
"apps": "Apps",
"email_templates": "Email templates",
"pinned_messages": "Pinned messages",
"landings": "Landing pages",
"updates": "Updates"
},
"permissionActions": {
"read": "Read",
"edit": "Edit",
"create": "Create",
"delete": "Delete",
"block": "Block",
"sync": "Sync",
"reply": "Reply",
"close": "Close",
"settings": "Settings",
"export": "Export",
"send": "Send",
"stats": "Stats",
"approve": "Approve",
"revoke": "Revoke",
"reject": "Reject",
"manage": "Manage",
"ban": "Ban",
"unban": "Unban",
"assign": "Assign",
"promo_group": "Promo group",
"balance": "Balance",
"subscription": "Subscription",
"send_offer": "Send offer",
"referral": "Referral %"
},
"toggleSection": "Toggle all {{section}} permissions",
"selectedPermissions_one": "{{count}} permission selected",
"selectedPermissions_other": "{{count}} permissions selected",
"cancel": "Cancel",
"saving": "Saving...",
"save": "Save"
},
"presets": {
"moderator": "Moderator",
"marketer": "Marketer",
"support": "Support"
},
"confirm": {
"title": "Delete role?",
"text": "This role will be permanently deleted. Users with this role will lose its permissions.",
"cancel": "Cancel",
"delete": "Delete",
"deleting": "Deleting..."
},
"errors": {
"loadFailed": "Failed to load roles",
"createFailed": "Failed to create role",
"updateFailed": "Failed to update role",
"nameRequired": "Role name is required",
"deleteFailed": "Failed to delete role"
}
},
"roleAssign": {
"title": "Role Assignment",
"subtitle": "Assign and manage user roles",
"assignSection": "Assign Role",
"userLabel": "User",
"searchPlaceholder": "Search by name, username, Telegram ID, or email...",
"clearUser": "Clear selected user",
"noUsersFound": "No users found",
"roleLabel": "Role",
"selectRole": "Select a role...",
"expiresLabel": "Expires at (optional)",
"expiresHint": "Leave empty for permanent assignment",
"assignButton": "Assign",
"assigning": "Assigning...",
"assignSuccess": "Role assigned successfully",
"currentAssignments": "Current Assignments",
"totalAssignments_one": "{{count}} assignment total",
"totalAssignments_other": "{{count}} assignments total",
"noAssignments": "No role assignments found",
"unknownUser": "Unknown user",
"system": "System",
"permanent": "Permanent",
"expired": "expired",
"envManaged": "Managed via ADMIN_IDS / ADMIN_EMAILS in env",
"revoke": "Revoke",
"revokeAriaLabel": "Revoke role {{role}} from {{user}}",
"table": {
"user": "User",
"role": "Role",
"assignedBy": "Assigned by",
"assignedAt": "Assigned at",
"expires": "Expires",
"actions": "Actions"
},
"pagination": {
"showing": "{{from}}-{{to}} of {{total}}",
"prev": "Previous page",
"next": "Next page"
},
"confirm": {
"title": "Revoke role?",
"text": "This user will immediately lose all permissions associated with this role.",
"cancel": "Cancel",
"revoke": "Revoke",
"revoking": "Revoking..."
},
"errors": {
"userRequired": "Please select a user",
"roleRequired": "Please select a role",
"assignFailed": "Failed to assign role",
"revokeFailed": "Failed to revoke role"
}
},
"policies": {
"title": "Access Policies",
"subtitle": "Manage ABAC access control policies",
"createPolicy": "Create Policy",
"noPolicies": "No policies found",
"inactiveBadge": "Inactive",
"effectAllow": "Allow",
"effectDeny": "Deny",
"global": "Global",
"unknownRole": "Unknown role",
"roleLabel": "Role",
"priorityLabel": "Priority",
"stats": {
"total": "Total policies",
"allow": "Allow",
"deny": "Deny",
"active": "Active"
},
"actions": {
"edit": "Edit",
"delete": "Delete"
},
"modal": {
"createTitle": "Create Policy",
"editTitle": "Edit Policy",
"close": "Close"
},
"form": {
"name": "Policy name",
"namePlaceholder": "e.g. Block night access",
"description": "Description",
"descriptionPlaceholder": "What this policy does...",
"effect": "Effect",
"resource": "Resource",
"selectResource": "Select a resource...",
"actions": "Actions",
"role": "Role (optional)",
"globalOption": "Global (all roles)",
"roleHint": "Leave as Global to apply the policy to all roles.",
"priority": "Priority",
"priorityHint": "Higher priority policies are evaluated first. Deny overrides Allow at equal priority.",
"conditions": "Conditions",
"cancel": "Cancel",
"saving": "Saving...",
"save": "Save"
},
"conditions": {
"timeRange": "Time range",
"timeStart": "Start time",
"timeEnd": "End time",
"ipWhitelist": "IP whitelist",
"ipPlaceholder": "Enter IP and press Enter...",
"removeIp": "Remove {{ip}}",
"ipCount_one": "{{count}} IP",
"ipCount_other": "{{count}} IPs",
"rateLimit": "Rate limit",
"rateLimitValue": "Rate limit value",
"rateValue": "{{count}}/hr",
"perHour": "actions per hour",
"weekdays": "Days of week",
"day0": "Sun",
"day1": "Mon",
"day2": "Tue",
"day3": "Wed",
"day4": "Thu",
"day5": "Fri",
"day6": "Sat"
},
"confirm": {
"title": "Delete policy?",
"text": "This policy will be permanently deleted. Access control rules will be recalculated.",
"cancel": "Cancel",
"delete": "Delete",
"deleting": "Deleting..."
},
"errors": {
"loadFailed": "Failed to load policies",
"createFailed": "Failed to create policy",
"updateFailed": "Failed to update policy",
"nameRequired": "Policy name is required",
"resourceRequired": "Please select a resource",
"actionsRequired": "Please select at least one action",
"deleteFailed": "Failed to delete policy"
}
},
"auditLog": {
"title": "Audit Log",
"subtitle": "Review system activity and access history",
"back": "Back",
"exportCsv": "Export CSV",
"exportError": "Failed to export",
"exporting": "Exporting...",
"refresh": "Refresh",
"unknownUser": "Unknown user",
"noEntries": "No audit log entries found",
"totalEntries_one": "{{count}} entry",
"totalEntries_other": "{{count}} entries",
"autoRefresh": {
"label": "Auto-refresh",
"tooltip": "Auto-refresh every 30 seconds"
},
"filters": {
"title": "Filters",
"active": "Active",
"user": "User",
"action": "Action",
"actionPlaceholder": "Search by action...",
"resource": "Resource type",
"allResources": "All resources",
"status": "Status",
"allStatuses": "All statuses",
"dateFrom": "Date from",
"dateTo": "Date to",
"apply": "Apply",
"clear": "Clear"
},
"status": {
"success": "Success",
"denied": "Denied",
"error": "Error"
},
"resourceTypes": {
"users": "Users",
"tickets": "Tickets",
"roles": "Roles",
"policies": "Policies",
"settings": "Settings",
"broadcasts": "Broadcasts",
"tariffs": "Tariffs",
"servers": "Servers",
"payments": "Payments",
"campaigns": "Campaigns",
"promocodes": "Promo Codes"
},
"details": {
"userAgent": "User Agent",
"requestPath": "Request Path",
"ipAddress": "IP Address",
"timestamp": "Timestamp",
"before": "Before",
"after": "After",
"queryParams": "Query Parameters",
"requestBody": "Request Body",
"fullDetails": "Full Details"
},
"time": {
"justNow": "Just now",
"minutesAgo_one": "{{count}} min ago",
"minutesAgo_other": "{{count}} min ago",
"hoursAgo_one": "{{count}} hr ago",
"hoursAgo_other": "{{count}} hrs ago",
"daysAgo_one": "{{count}} day ago",
"daysAgo_other": "{{count}} days ago"
},
"pagination": {
"pageSize": "Per page:",
"pageOf": "{{current}} / {{total}}",
"first": "First page",
"previous": "Previous page",
"next": "Next page",
"last": "Last page"
},
"errors": {
"loadFailed": "Failed to load audit log",
"retry": "Try again"
}
},
"landings": {
"title": "Landing Pages",
"create": "Create Landing",
"edit": "Edit",
"slug": "URL Identifier",
"slugHint": "Lowercase, numbers and hyphens",
"pageTitle": "Title",
"subtitle": "Subtitle",
"footerText": "Footer (HTML)",
"features": "Features",
"addFeature": "Add",
"featureIcon": "Icon",
"featureTitle": "Title",
"featureDesc": "Description",
"tariffs": "Plans",
"selectTariffs": "Select plans",
"periods": "Periods",
"paymentMethods": "Payment Methods",
"addMethod": "Add method",
"methodId": "Method ID",
"methodName": "Name",
"methodDesc": "Description",
"methodIcon": "Icon URL",
"gifts": "Gifts",
"giftEnabled": "Gift purchases",
"customCss": "CSS",
"seo": "SEO",
"metaTitle": "Meta Title",
"metaDesc": "Meta Description",
"active": "Active",
"inactive": "Inactive",
"purchaseCount": "purchases",
"copyUrl": "Copy URL",
"urlCopied": "URL copied",
"deleteConfirm": "Delete landing \"{{title}}\"?",
"created": "Landing created",
"updated": "Landing updated",
"deleted": "Landing deleted",
"saveOrder": "Save order",
"orderSaved": "Order saved",
"general": "General",
"content": "Content",
"save": "Save",
"back": "Back",
"invalidSlug": "Slug can only contain lowercase letters, numbers, and hyphens",
"titleRequired": "Title is required",
"noTariffs": "Select at least one tariff",
"noPaymentMethods": "Add at least one payment method",
"selectMethods": "Select available methods",
"noSystemMethods": "No payment methods configured in the system",
"methodOrder": "Drag to reorder",
"methodSubOptions": "Payment sub-options",
"loadingPeriods": "Loading...",
"periodDaySuffix": "d",
"localeTab": "Language",
"localeHint": "Switch language to edit text in that language",
"discount": "Discount",
"discountEnabled": "Enable discount",
"discountPercent": "Discount %",
"discountStartsAt": "Start date",
"discountEndsAt": "End date",
"discountBadge": "Banner text (optional)",
"discountBadgePlaceholder": "e.g. Spring sale!",
"discountOverrides": "Per-tariff overrides",
"discountOverridesHint": "Leave empty to use global discount",
"discountPreview": "Preview",
"discountActive": "Discount",
"statistics": "Statistics",
"stats": {
"title": "Landing Statistics",
"totalPurchases": "Purchases",
"revenue": "Revenue",
"giftPurchases": "Gifts",
"regularPurchases": "Regular",
"conversionRate": "Conversion",
"avgPurchase": "Avg. Check",
"dailyChart": "Purchases & Revenue by Day",
"tariffChart": "Tariff Distribution",
"giftBreakdown": "Gifts vs Regular",
"purchases": "Purchases",
"revenueLabel": "Revenue",
"gifts": "Gifts",
"regular": "Regular",
"created": "Created",
"successful": "Successful",
"funnel": "Funnel",
"loadError": "Failed to load statistics",
"noPurchases": "No purchases"
},
"purchases": {
"title": "Purchases",
"contact": "Contact",
"recipient": "Recipient",
"tariff": "Tariff",
"period": "Period",
"days": "days",
"price": "Price",
"method": "Method",
"date": "Date",
"gift": "Gift",
"forSelf": "For self",
"allStatuses": "All statuses",
"status_pending": "Pending",
"status_paid": "Paid",
"status_delivered": "Delivered",
"status_pending_activation": "Pending activation",
"status_failed": "Failed",
"status_expired": "Expired",
"noPurchases": "No purchases",
"showing": "Showing {{from}}{{to}} of {{total}}",
"page": "Page {{current}} of {{total}}",
"prev": "Previous",
"next": "Next"
}
}
},
"adminUpdates": {
"title": "Updates",
"subtitle": "Bot and cabinet release history",
"bot": "Bot",
"cabinet": "Cabinet",
"currentVersion": "Current version",
"upToDate": "Up to date",
"updateAvailable": "Update available",
"published": "Published",
"prerelease": "Pre-release",
"refresh": "Check for updates",
"noReleases": "No release data"
},
"adminDashboard": {
"title": "Statistics Dashboard",
"subtitle": "Real-time system overview",
"refresh": "Refresh",
"loadError": "Failed to load statistics",
"stats": {
"usersOnline": "Users Online",
"activeSubscriptions": "Active Subscriptions",
"incomeToday": "Today's Income",
"incomeMonth": "Monthly Income",
"incomeTotal": "Total Income",
"subscriptionIncome": "Subscription Income",
"total": "total"
},
"nodes": {
"title": "Nodes",
"online": "Online",
"offline": "Offline",
"disabled": "Disabled",
"noNodes": "No nodes available",
"usersOnline": "Online",
"traffic": "Traffic",
"enable": "Enable",
"disable": "Disable",
"hide": "Hide ({{count}})",
"showMore_one": "Show {{count}} more node",
"showMore_other": "Show {{count}} more nodes"
},
"topReferrers": {
"title": "Top referrers",
"stats": "ref., {{count}} invites",
"byEarnings": "By earnings",
"byInvited": "By invites",
"invites": "invites",
"people": "people"
},
"period": {
"today": "Today",
"week": "Week",
"month": "Month"
},
"topCampaigns": {
"title": "Top campaign links",
"stats": "camp., {{count}} reg.",
"total": "Total from campaigns"
},
"recentPayments": {
"title": "Recent payments",
"today": "Today: {{amount}}",
"week": "For the week: {{amount}}"
},
"table": {
"user": "User",
"type": "Type",
"amount": "Amount",
"method": "Method",
"date": "Date"
},
"revenue": {
"title": "Revenue",
"last7Days": "Last 7 days"
},
"subscriptions": {
"title": "Subscriptions",
"subtitle": "Subscription statistics",
"active": "Active",
"trial": "Trial",
"paid": "Paid",
"expired": "Expired",
"newSubscriptions": "New Subscriptions",
"today": "Today",
"week": "Week",
"month": "Month",
"conversion": "Trial to Paid Conversion"
},
"servers": {
"title": "Servers",
"total": "Total Servers",
"available": "Available",
"withConnections": "With Connections",
"revenue": "Revenue"
},
"tariffs": {
"title": "Tariff Statistics",
"subtitle": "Subscription distribution by tariffs",
"tariffName": "Tariff",
"activeSubscriptions": "Active",
"trialSubscriptions": "Trial",
"purchasedToday": "Today",
"purchasedWeek": "Week",
"purchasedMonth": "Month",
"noTariffs": "No tariffs"
},
"systemInfo": {
"title": "System",
"cabinet": "Cabinet",
"bot": "Bot",
"python": "Python",
"uptime": "Uptime",
"users": "Users",
"activeSubs": "Active Subs"
}
},
"banSystem": {
"title": "Ban Monitoring",
"subtitle": "BedolagaBan system management",
"contactTelegram": "Write in Telegram",
"notConfigured": "Ban system is not configured",
"configureHint": "Set BAN_SYSTEM_API_URL and BAN_SYSTEM_API_TOKEN in configuration",
"loadError": "Failed to load data",
"tabs": {
"dashboard": "Dashboard",
"users": "Users",
"punishments": "Bans",
"nodes": "Nodes",
"agents": "Agents",
"violations": "Violations",
"traffic": "Traffic",
"reports": "Reports",
"settings": "Settings",
"health": "Health"
},
"stats": {
"activeUsers": "Active Users",
"total": "Total",
"usersOverLimit": "Over Limit",
"activeBans": "Active Bans",
"nodesOnline": "Nodes Online",
"agentsOnline": "Agents Online",
"totalRequests": "Total Requests",
"panelStatus": "Panel Status",
"connected": "Connected",
"disconnected": "Disconnected",
"uptime": "Uptime"
},
"dashboard": {
"totalUsers": "Total Users",
"activeUsers": "Active Users",
"usersOverLimit": "Over Limit",
"totalRequests": "Total Requests",
"totalPunishments": "Total Punishments",
"activePunishments": "Active Bans",
"nodesOnline": "Nodes Online",
"agentsOnline": "Agents Online",
"panelConnected": "Panel Connected",
"panelDisconnected": "Panel Disconnected",
"uptime": "Uptime"
},
"users": {
"title": "Users",
"searchPlaceholder": "Search by email...",
"email": "Email",
"uniqueIps": "Unique IPs",
"ipCount": "IPs",
"requests": "Requests",
"limit": "Limit",
"status": "Status",
"bans": "Bans",
"lastSeen": "Last Seen",
"overLimit": "Over Limit",
"ok": "OK",
"normal": "Normal",
"noLimit": "No Limit",
"noUsers": "No users found",
"viewDetails": "View Details",
"networkType": "Network Type",
"filter": {
"all": "All",
"overLimit": "Over Limit",
"normal": "Normal"
}
},
"userDetail": {
"title": "User Details",
"email": "Email",
"uniqueIps": "Unique IPs",
"totalRequests": "Total Requests",
"limit": "Device Limit",
"status": "Status",
"networkType": "Network Type",
"ipHistory": "IP History",
"recentRequests": "Recent Requests",
"ip": "IP Address",
"firstSeen": "First Seen",
"lastSeen": "Last Seen",
"node": "Node",
"requestCount": "Requests",
"requests": "Requests",
"country": "Country",
"city": "City",
"timestamp": "Timestamp",
"sourceIp": "Source IP",
"destination": "Destination",
"port": "Port",
"protocol": "Protocol",
"action": "Action",
"noIps": "No IP data",
"noRequests": "No request data",
"ban": "Ban",
"close": "Close"
},
"punishments": {
"title": "Active Bans",
"user": "User",
"username": "User",
"reason": "Reason",
"punishedAt": "Banned At",
"bannedAt": "Banned At",
"enableAt": "Unban At",
"ipCount": "IPs",
"limit": "Limit",
"node": "Node",
"actions": "Actions",
"unban": "Unban",
"noPunishments": "No active bans",
"noBans": "No active bans",
"unbanConfirm": "Unban user {{username}}?",
"unbanSuccess": "User unbanned",
"unbanError": "Unban failed",
"history": "Ban History",
"searchHistory": "Search history...",
"noHistory": "No history found"
},
"banModal": {
"title": "Ban User",
"username": "Username",
"usernamePlaceholder": "Enter username",
"duration": "Duration (minutes)",
"durationPlaceholder": "Enter duration in minutes",
"reason": "Reason",
"reasonPlaceholder": "Enter ban reason (optional)",
"cancel": "Cancel",
"ban": "Ban",
"success": "User banned",
"error": "Ban failed"
},
"nodes": {
"title": "Nodes",
"name": "Name",
"address": "Address",
"status": "Status",
"lastSeen": "Last Seen",
"usersCount": "Users",
"users": "Users",
"online": "Online",
"offline": "Offline",
"noNodes": "No nodes found",
"total": "Total",
"onlineCount": "Online"
},
"agents": {
"title": "Agents",
"nodeName": "Node",
"node": "Node",
"status": "Status",
"health": "Health",
"sent": "Sent",
"dropped": "Dropped",
"totalSent": "Total Sent",
"totalDropped": "Total Dropped",
"batches": "Batches",
"reconnects": "Reconnects",
"failures": "Failures",
"queue": "Queue",
"dedup": "Deduplication",
"filter": "Filtering",
"lastReport": "Last Report",
"online": "Online",
"offline": "Offline",
"healthy": "Healthy",
"warning": "Warning",
"critical": "Critical",
"noAgents": "No agents found",
"summary": {
"title": "Summary",
"totalAgents": "Total Agents",
"onlineAgents": "Online",
"totalSent": "Total Sent",
"totalDropped": "Total Dropped",
"avgQueueSize": "Avg Queue Size",
"healthyCount": "Healthy",
"warningCount": "Warning",
"criticalCount": "Critical"
}
},
"violations": {
"title": "Traffic Violations",
"user": "User",
"username": "User",
"email": "Email",
"type": "Type",
"description": "Description",
"bytesUsed": "Used",
"bytesLimit": "Limit",
"detectedAt": "Detected At",
"status": "Status",
"resolved": "Resolved",
"active": "Active",
"noViolations": "No violations found",
"yes": "Yes",
"no": "No"
},
"traffic": {
"title": "Traffic Statistics",
"enabled": "Traffic Monitoring",
"topUsers": "Top by Traffic",
"username": "User",
"bytesTotal": "Total",
"bytesLimit": "Limit",
"status": "Status",
"overLimit": "Over Limit",
"ok": "OK",
"recentViolations": "Recent Violations"
},
"reports": {
"title": "Period Reports",
"period": "Period",
"currentUsers": "Active Users",
"currentIps": "Unique IPs",
"topViolators": "Top Violators",
"username": "User",
"count": "Violations"
},
"settings": {
"title": "System Settings",
"general": "General",
"limits": "Limits",
"notifications": "Notifications",
"whitelist": "Whitelist",
"saved": "Setting saved",
"error": "Error saving",
"categories": {
"general": "General Settings",
"punishment": "Punishments",
"progressive_bans": "Progressive Bans",
"traffic": "Traffic Monitoring",
"network": "Network Detection",
"notifications": "Notifications",
"rate_limit": "Rate Limits"
},
"punishment_enabled": "Enable auto-ban",
"punishment_minutes": "Ban duration (minutes)",
"ip_window_seconds": "IP counting window (seconds)",
"notify_on_punishment": "Notify on bans",
"notify_on_node_status": "Notify on node status",
"daily_report_enabled": "Daily report",
"daily_report_hour": "Report hour",
"rate_limit_max": "Max requests",
"rate_limit_window": "Rate limit window (sec)",
"heartbeat_timeout": "Heartbeat timeout (sec)",
"progressive_bans_enabled": "Progressive bans",
"progressive_ban_1": "1st ban (minutes)",
"progressive_ban_2": "2nd ban (minutes)",
"progressive_ban_3": "3rd ban (minutes)",
"progressive_ban_window_hours": "Reset window (hours)",
"traffic_monitor_enabled": "Traffic monitoring",
"traffic_limit_gb": "Traffic limit (GB)",
"traffic_window_minutes": "Check window (min)",
"traffic_check_interval": "Check interval (min)",
"traffic_ban_minutes": "Traffic ban (min)",
"network_detection_enabled": "Network type detection",
"network_detection_nodes": "Detection nodes",
"network_detection_monitor_all": "Monitor all nodes",
"network_detection_collect_all": "Collect from all nodes",
"network_notify_mobile": "Notify on mobile",
"network_block_mobile": "Block mobile",
"network_block_mobile_minutes": "Block mobile (min)",
"network_notify_wifi": "Notify on WiFi",
"network_block_wifi": "Block WiFi",
"network_block_wifi_minutes": "Block WiFi (min)"
},
"health": {
"title": "System Health",
"systemStatus": "System Status",
"healthy": "Healthy",
"degraded": "Degraded",
"unhealthy": "Unhealthy",
"components": "Components",
"uptime": "Uptime"
}
},
"profile": {
"title": "Profile",
"accountInfo": "Account Information",
"telegramId": "Telegram ID",
"username": "Username",
"name": "Name",
"registeredAt": "Registered",
"emailAuth": "Email Authentication",
"linkEmailDescription": "Link your email to log in without Telegram. After linking, you'll receive a verification email.",
"linkEmail": "Link Email",
"emailRequired": "Email is required",
"invalidEmail": "Please enter a valid email address",
"passwordMinLength": "Password must be at least 8 characters",
"passwordsMismatch": "Passwords do not match",
"passwordPlaceholder": "Enter password",
"confirmPasswordPlaceholder": "Confirm password",
"passwordHint": "Minimum 8 characters",
"emailSent": "Verification email sent! Please check your inbox.",
"verified": "Verified",
"notVerified": "Not verified",
"verificationRequired": "Please verify your email to use email login.",
"resendVerification": "Resend Verification Email",
"resendIn": "Resend in {{seconds}} sec.",
"verificationResent": "Verification email resent!",
"canLoginWithEmail": "You can now log in using your email and password.",
"emailAlreadyRegistered": "This email is already linked to another account. If this is your email, log in with it or contact support.",
"alreadyHaveEmail": "You already have a verified email linked.",
"changeEmail": {
"button": "Change email",
"title": "Change Email",
"description": "Enter your new email address. A verification code will be sent to it.",
"currentEmail": "Current email",
"newEmail": "New email",
"sendCode": "Send code",
"enterCode": "Enter code",
"enterCodeDescription": "Enter the verification code sent to your new email.",
"verificationCode": "Verification code",
"codeSentTo": "Code sent to {{email}}",
"verify": "Verify",
"resendCode": "Resend code",
"resendIn": "Resend in {{seconds}} sec.",
"success": "Email changed successfully!",
"successDescription": "Your email has been successfully updated.",
"emailAlreadyUsed": "This email is already used by another account.",
"sameEmail": "New email is the same as current.",
"invalidCode": "Invalid verification code.",
"codeExpired": "Code has expired. Please request a new one.",
"tooManyRequests": "Too many requests. Please try again later."
},
"notifications": {
"title": "Notification Settings",
"subscriptionExpiry": "Subscription Expiry",
"subscriptionExpiryDesc": "Notify about expiring subscription",
"daysBeforeExpiry": "Days before expiry",
"trafficWarning": "Traffic Warning",
"trafficWarningDesc": "Notify when approaching traffic limit",
"atPercent": "At usage",
"balanceLow": "Low Balance",
"balanceLowDesc": "Notify about low balance",
"threshold": "Threshold",
"news": "News",
"newsDesc": "Receive news and service updates",
"promoOffers": "Promo Offers",
"promoOffersDesc": "Receive special offers and discounts",
"unavailable": "Notification settings unavailable"
},
"accounts": {
"title": "Connected Accounts",
"subtitle": "Manage your sign-in methods",
"linked": "Connected",
"notLinked": "Not connected",
"link": "Connect",
"unlink": "Disconnect",
"unlinkConfirm": "Are you sure? You won't be able to sign in with this service after disconnecting.",
"unlinkConfirmBtn": "Confirm disconnect?",
"cannotUnlinkLast": "Cannot disconnect the last sign-in method",
"linkSuccess": "Account connected successfully",
"unlinkSuccess": "Account disconnected successfully",
"linkError": "Failed to connect account",
"telegramLinkUnavailable": "Telegram linking is temporarily unavailable. Use the bot:",
"unlinkError": "Failed to disconnect account",
"goToAccounts": "Connected Accounts",
"linking": "Linking account...",
"linkingTelegram": "Connecting Telegram...",
"returnToTelegram": "Return to Telegram to continue",
"openTelegram": "Open Telegram",
"continueInBrowser": "Continue authorization in the opened browser",
"pollingTimeout": "Authorization check timed out. Refresh the page if you completed linking.",
"providers": {
"telegram": "Telegram",
"email": "Email",
"google": "Google",
"yandex": "Yandex",
"discord": "Discord",
"vk": "VK"
}
}
},
"theme": {
"colors": "Theme Colors",
"reset": "Reset",
"quickPresets": "Quick Presets",
"quickPresetsDescription": "Choose a ready-made color scheme",
"customColors": "Custom Colors",
"customColorsDescription": "Customize each color individually",
"accent": "Accent Color",
"accentDescription": "Main brand color for buttons, links and interactive elements",
"darkTheme": "Dark Theme",
"lightTheme": "Light Theme",
"background": "Background",
"surface": "Surface",
"text": "Text",
"textSecondary": "Secondary Text",
"statusColors": "Status Colors",
"success": "Success",
"warning": "Warning",
"error": "Error",
"preview": "Preview",
"previewButton": "Primary Button",
"previewSecondary": "Secondary Button",
"light": "Light Theme",
"dark": "Dark Theme"
},
"languages": {
"ru": "Русский",
"en": "English",
"zh": "中文",
"fa": "فارسی"
},
"contests": {
"title": "Contests",
"error": "Failed to load contests",
"noContests": "No contests available",
"days": "days",
"days_one": "{{count}} day",
"days_other": "{{count}} days",
"play": "Play",
"alreadyPlayed": "Already played",
"enterAnswer": "Enter your answer",
"submit": "Submit",
"imHere": "I'm here!"
},
"polls": {
"title": "Polls",
"error": "Failed to load polls",
"noPolls": "No polls available",
"questions": "questions",
"questions_one": "{{count}} question",
"questions_other": "{{count}} questions",
"question": "Question",
"of": "of",
"start": "Start",
"continue": "Continue",
"completed": "Completed",
"reward": "$"
},
"info": {
"title": "Information",
"faq": "FAQ",
"rules": "Rules",
"privacy": "Privacy Policy",
"offer": "Public Offer",
"loyalty": "Loyalty",
"noFaq": "No FAQ available",
"noContent": "No content available",
"updatedAt": "Updated",
"noLoyaltyTiers": "Loyalty program is not available yet",
"yourProgress": "Your Progress",
"totalSpent": "Total spent",
"currentStatus": "Current status",
"nextStatus": "Next status",
"toNextStatus": "To next status",
"allStatusesAchieved": "You have achieved the maximum status!",
"statusAchieved": "Achieved",
"statusCurrent": "Current",
"statusLocked": "Locked",
"threshold": "Threshold",
"discounts": "Discounts",
"serverDiscount": "Servers",
"trafficDiscount": "Traffic",
"deviceDiscount": "Devices",
"periodDiscount": "{{days}} days",
"noDiscounts": "No discounts"
},
"onboarding": {
"skip": "Skip",
"finish": "Finish",
"steps": {
"welcome": {
"title": "Welcome!",
"description": "This is your personal cabinet. Here you can manage your subscription, top up balance and connect devices."
},
"connectDevices": {
"title": "Connect Devices",
"description": "Click this button to get instructions on how to connect VPN on your devices."
},
"balance": {
"title": "Your Balance",
"description": "Your current balance is displayed here. Click to top it up."
},
"subscription": {
"title": "Subscription Status",
"description": "Here you can see how many days are left until your subscription expires."
},
"quickActions": {
"title": "Quick Actions",
"description": "Use these buttons for quick access to main features: top up balance, extend subscription, and invite friends."
}
}
},
"promo": {
"activeDiscount": "Active discount",
"discountActive": "Discount active!",
"discountDescription": "Your personal discount is applied to subscription purchases",
"expiresIn": "Expires in",
"source": "Source",
"useNow": "Use discount now",
"discountApplied": "Discount applied",
"time": {
"days": "d",
"hours": "h",
"minutes": "m"
},
"offers": {
"expired": "Expired",
"testAccess": "Test access",
"discountPercent": "{{percent}}% off",
"specialOffer": "Special offer",
"serverAccess_one": "Access to {{count}} server",
"serverAccess_other": "Access to {{count}} servers",
"additionalServers": "Access to additional servers",
"activateDiscountHint": "Activate discount on subscription purchase",
"activationFailed": "Failed to activate offer",
"discountActiveTitle": "{{percent}}% discount active",
"statusActive": "Active",
"expires": "Expires: {{time}}",
"remaining": "Remaining: {{time}}",
"test": "Test",
"activating": "Activating...",
"activate": "Activate",
"serverAccess": "Server access"
},
"deactivate": {
"button": "Cancel promo code",
"confirmTitle": "Cancel promo code?",
"confirmDescription": "Are you sure you want to cancel the {{percent}}% discount? After cancellation, you will be able to activate another promo code.",
"warning": "A cancelled promo code cannot be reused. The discount will stop working immediately.",
"confirm": "Cancel discount",
"deactivating": "Cancelling...",
"error": "Failed to cancel promo code. Please try again later."
}
},
"telegramRedirect": {
"maxRetries": "Maximum retry attempts exceeded. Please try again later.",
"redirecting": "Redirecting...",
"loginAlternative": "Sign in another way",
"openInTelegram": "Open in Telegram",
"openInTelegramDesc": "To sign in automatically, open this app through the Telegram bot",
"redirectToLogin": "Redirecting to login page..."
},
"deepLink": {
"connecting": "Connecting to",
"redirecting": "Redirecting in",
"seconds": "sec",
"manual": "If nothing happens, click the button below.",
"openApp": "Open App",
"copyLink": "Copy subscription link",
"copied": "Copied!",
"tryAgain": "Try again",
"backToCabinet": "Back to cabinet",
"errorTitle": "Error",
"errorDesc": "Connection link is missing",
"goToSubscription": "Go to subscription",
"howToAdd": "How to add manually:",
"step1": "Copy the link using the button above",
"step2": "Open the app",
"step3": "Find \"+\" or \"Add subscription\"",
"step4": "Select \"From clipboard\" or \"Paste link\""
},
"blocking": {
"maintenance": {
"title": "Maintenance",
"defaultMessage": "Service is temporarily unavailable. Maintenance in progress.",
"reason": "Reason",
"waitMessage": "Please wait..."
},
"channel": {
"title": "Channel Subscription",
"defaultMessage": "Please subscribe to our channel to continue",
"openChannel": "Open Channel",
"checkSubscription": "Check Subscription",
"checking": "Checking...",
"waitSeconds": "Wait {{seconds}} sec.",
"hint": "Click check button after subscribing",
"notSubscribed": "You haven't subscribed to the channel yet",
"checkError": "Check failed. Please try again later.",
"subscribed": "Subscribed",
"channelsRequired": "Subscribe to all channels below to continue"
},
"blacklisted": {
"title": "Access Denied",
"defaultMessage": "Your account has been blocked.",
"reason": "Reason",
"contactSupport": "If you believe this is an error, please contact support."
}
},
"merge": {
"title": "Merge Accounts",
"description": "This sign-in method is already linked to another account. You can merge both accounts into one.",
"currentAccount": "Your current account",
"foundAccount": "Found account",
"authMethods": "Sign-in methods",
"subscription": "Subscription",
"noSubscription": "No subscription",
"traffic": "Traffic",
"devices": "Devices",
"balance": "Balance",
"until": "until {{date}}",
"keepThisSubscription": "Keep this subscription",
"chooseSubscription": "Choose which subscription to keep",
"afterMerge": "After merging",
"allAuthMethodsMerged": "All sign-in methods will be combined",
"balanceSummed": "Balance: {{amount}} ₽ (combined)",
"unselectedSubscriptionDeleted": "The unselected subscription will be deleted",
"historyPreserved": "Transaction history will be preserved",
"confirm": "Merge Accounts",
"cancel": "Cancel",
"expired": "The merge link has expired. Please try again.",
"success": "Accounts merged successfully!",
"error": "Failed to merge accounts. Please try again later.",
"expiresIn": "Expires in {{minutes}}",
"merging": "Merging..."
},
"landing": {
"notFound": "Page not found",
"forMe": "For me",
"asGift": "As a gift",
"contactLabel": "Your email or @username",
"yourContact": "Your email or @username",
"contactPlaceholder": "email@example.com or @username",
"contactHint": "Enter email or Telegram @username",
"recipientLabel": "Gift recipient",
"recipientPlaceholder": "Recipient email or @username",
"giftMessageLabel": "Greeting (optional)",
"giftMessagePlaceholder": "Write a greeting...",
"chooseTariff": "Choose a plan",
"devices": "devices",
"paymentMethod": "Payment method",
"processing": "Processing...",
"payButton": "Pay {{price}}",
"accessFor": "Access for {{period}}",
"purchaseError": "Failed to create payment",
"purchaseNotFound": "Purchase not found",
"awaitingPayment": "Awaiting payment",
"awaitingPaymentDesc": "Complete the payment in the opened window",
"purchaseSuccess": "Payment successful!",
"keySentTo": "Subscription key sent to {{contact}}",
"giftSentTo": "Gift sent to {{contact}}",
"purchaseFailed": "Payment failed",
"purchaseFailedDesc": "Payment was unsuccessful. Try again.",
"subscriptionLink": "Subscription link",
"daysAccess": "days of access",
"error": "Error",
"gb": "GB",
"selectedTariff": "Tariff",
"period": "Period",
"total": "Total",
"pay": "Pay",
"choosePeriod": "Choose period",
"copy": "Copy",
"copied": "Copied!",
"copyLink": "Copy link",
"giftToggleLabel": "Purchase type",
"pollTimedOut": "Taking longer than expected",
"pollTimedOutDesc": "Payment processing is taking longer than usual. You can try checking again.",
"pendingActivation": "Subscription ready to activate",
"pendingActivationDesc": "You already have an active subscription. Activating will replace it.",
"activateNow": "Activate now",
"activating": "Activating...",
"activationFailed": "Activation failed",
"giftMessage": "Message",
"cabinetReady": "Your account is ready",
"cabinetEmail": "Email",
"cabinetPassword": "Password",
"goToCabinet": "Go to Cabinet",
"saveCredentials": "Save these login credentials",
"credentialsSentToEmail": "Login credentials sent to your email",
"giftSentSuccess": "Gift sent!",
"giftSentDesc": "Recipient will be notified by email",
"giftPendingActivationDesc": "The recipient already has an active subscription. They will receive a link to activate the gift.",
"giftTelegramSent": "Gift notification sent to recipient via Telegram",
"giftTelegramNotInBot": "Recipient hasn't started the bot yet. Send them this link:",
"giftTelegramPendingSent": "Activation request sent to recipient via Telegram",
"giftTelegramPendingNotInBot": "Recipient hasn't started the bot yet. Send them the bot link so they can activate the gift:",
"openBot": "Open bot",
"autoLoginFailed": "Auto-login failed",
"autoLoginProcessing": "Signing in...",
"discount": {
"days": "d",
"hours": "h",
"minutes": "m",
"seconds": "s"
},
"periodLabels": {
"d1": "1 day",
"d2": "2 days",
"d3": "3 days",
"d5": "5 days",
"d7": "1 week",
"d14": "2 weeks",
"d30": "1 month",
"d60": "2 months",
"d90": "3 months",
"d180": "6 months",
"d365": "1 year",
"d456": "1 year + 3 mo.",
"nDays_one": "{{count}} day",
"nDays_other": "{{count}} days",
"nMonths_one": "{{count}} month",
"nMonths_other": "{{count}} months"
}
},
"gift": {
"title": "Gift Subscription",
"subtitle": "Send a VPN subscription as a gift",
"choosePeriod": "Choose period",
"chooseTariff": "Choose tariff",
"recipient": "Recipient",
"recipientPlaceholder": "Email or @telegram",
"recipientHint": "Enter email or Telegram username",
"giftMessage": "Greeting",
"giftMessagePlaceholder": "Add a personal message (optional)",
"paymentMode": "Payment method",
"fromBalance": "From balance",
"viaGateway": "Via payment gateway",
"yourBalance": "Your balance",
"insufficientBalance": "Insufficient funds",
"topUpBalance": "Top up balance",
"total": "Total",
"giftButton": "Send Gift",
"sending": "Sending gift...",
"gb": "GB",
"devices": "devices",
"paymentMethod": "Payment method",
"processing": "Processing...",
"successTitle": "Gift sent!",
"successDesc": "Recipient {{contact}} will be notified",
"pendingTitle": "Awaiting payment",
"pendingDesc": "Complete the payment in the payment system",
"pendingActivationTitle": "Pending activation",
"pendingActivationDesc": "Recipient has an active subscription. Gift is pending activation.",
"failedTitle": "Error",
"failedDesc": "Failed to send gift. Please try again.",
"backToGift": "Go back",
"backToDashboard": "Back to dashboard",
"tryAgain": "Try again",
"pollTimeout": "Processing is taking longer than usual",
"pollTimeoutDesc": "Try checking the status later",
"pollErrorTitle": "Could not check gift status",
"pollErrorDesc": "Your purchase was successful. Check your dashboard for details.",
"retry": "Check again",
"notFound": "Gift configuration not found",
"noToken": "Invalid link",
"noTokenDesc": "This gift link is invalid or has expired.",
"days": "days",
"tariff": "Tariff",
"period": "Period",
"giftMessageLabel": "Message",
"recipientLabel": "Recipient",
"featureDisabled": "Gift feature is temporarily unavailable",
"redirecting": "Redirecting...",
"pending": {
"title": "You received a gift!",
"from": "from {{sender}}",
"activate": "Activate"
},
"warning": {
"telegram_unresolvable": "Could not verify this Telegram username. The recipient may not receive a notification about the gift."
},
"pageTitle": "Gifts",
"tabBuy": "Buy",
"tabActivate": "Activate",
"tabMyGifts": "My Gifts",
"selectTariff": "SELECT TARIFF",
"selectPeriod": "SUBSCRIPTION PERIOD",
"deviceCount": "{{count}} device",
"deviceCount_other": "{{count}} devices",
"activateTitle": "Enter gift code",
"activateDescription": "Enter the gift code you received from a friend",
"activateCodePlaceholder": "GIFT-XXXXXXXXXXXX",
"activateButton": "Activate gift",
"activating": "Activating...",
"activateSuccess": "Gift activated!",
"activateSuccessDesc": "{{tariff}} — {{days}} days added to your subscription",
"activateError": "Failed to activate gift",
"activateSelfError": "You cannot activate your own gift",
"myGiftsEmpty": "No gifts yet",
"myGiftsEmptyDesc": "Buy a gift for a friend or activate a received code",
"sentGiftsTitle": "Sent",
"activeGiftsTitle": "Active gifts",
"activatedGiftsTitle": "Activated",
"receivedGiftsTitle": "Received",
"statusAvailable": "AVAILABLE",
"statusActivated": "ACTIVATED",
"statusPending": "PENDING",
"statusDelivered": "DELIVERED",
"statusFailed": "FAILED",
"statusExpired": "EXPIRED",
"statusPendingActivation": "PENDING ACTIVATION",
"copyCode": "COPY",
"codeCopied": "Code copied!",
"shareGift": "SHARE",
"shareText": "I have a gift for you! Activate it here:",
"codeReadyTitle": "Gift code is ready!",
"codeLabel": "Gift code",
"sharePreview": "Message to share",
"activatedBy": "Activated by {{username}}",
"sentTo": "Sent to {{recipient}}",
"daysShort": "days",
"devicesShort": "dev.",
"gbShort": "GB",
"unlimitedTraffic": "Unlimited",
"shareModalActivateVia": "Activate via bot:",
"shareModalActivateViaCabinet": "Or via website:",
"copyMessage": "Copy message",
"shareToastCopied": "Message copied"
},
"news": {
"title": "News & Updates",
"filterAll": "All",
"readMore": "Read more",
"readTime": "min read",
"loadMore": "Load more",
"noNews": "No news yet",
"backToHome": "Back",
"views": "views",
"admin": {
"title": "News Management",
"create": "Create Article",
"edit": "Edit",
"delete": "Delete",
"confirmDelete": "Delete this article?",
"published": "Published",
"draft": "Draft",
"featured": "Featured",
"titleLabel": "Title",
"slugLabel": "URL Slug",
"categoryLabel": "Category",
"categoryColorLabel": "Category Color",
"tagLabel": "Tag",
"excerptLabel": "Short Description",
"contentLabel": "Content",
"imageLabel": "Featured Image",
"readTimeLabel": "Read Time (min)",
"save": "Save",
"saving": "Saving...",
"saveError": "Failed to save article. Please try again.",
"saved": "Article saved",
"deleted": "Article deleted",
"selectColor": "Select color {{color}}",
"uploading": "Uploading...",
"dropMedia": "Drop image or video here",
"uploadError": "Upload failed",
"fileTooLarge": "File is too large",
"uploadFeaturedImage": "Upload image",
"combobox": {
"selectCategory": "Select category",
"selectTag": "Select tag",
"create": "Create",
"createNew": "Create new",
"searchOrCreate": "Search or create...",
"noItems": "Nothing found",
"placeholder": "Select...",
"clear": "Clear",
"delete": "Delete {{name}}"
},
"toolbar": {
"bold": "Bold",
"italic": "Italic",
"underline": "Underline",
"strikethrough": "Strikethrough",
"heading1": "Heading 1",
"heading2": "Heading 2",
"heading3": "Heading 3",
"bulletList": "Bullet List",
"orderedList": "Ordered List",
"blockquote": "Blockquote",
"codeBlock": "Code Block",
"alignLeft": "Align Left",
"alignCenter": "Align Center",
"highlight": "Highlight",
"link": "Link",
"image": "Image",
"imageUrlPrompt": "Image URL:",
"linkUrlPrompt": "URL:"
}
}
}
}