mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 17:43:47 +00:00
window.confirm() is silently suppressed in Telegram Mini Apps and iOS WebView, making unlink completely non-functional on mobile. Replaced with two-click inline confirmation: first click shows destructive "Confirm disconnect?" button, second click executes unlink. Button resets on blur.
3864 lines
138 KiB
JSON
3864 lines
138 KiB
JSON
{
|
||
"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"
|
||
},
|
||
"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",
|
||
"authenticating": "Authenticating...",
|
||
"orOpenInApp": "Or open the bot in the app",
|
||
"loginFailed": "Login Failed",
|
||
"tryAgain": "Try Again",
|
||
"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",
|
||
"devicesShort": "dev.",
|
||
"trafficUsage": "{{used}} / {{limit}} GB",
|
||
"trafficUsageTitle": "Traffic Usage",
|
||
"usedTraffic": "used {{amount}}",
|
||
"usedSuffix": "used",
|
||
"unlimited": "Unlimited",
|
||
"unlimitedTraffic": "Unlimited traffic",
|
||
"tariff": "Tariff",
|
||
"validUntil": "until {{date}}",
|
||
"remaining": "Remaining",
|
||
"daysRemaining": "Days left",
|
||
"usageLast14Days": "Usage last 14 days",
|
||
"maxUsage": "max {{amount}}",
|
||
"expired": {
|
||
"title": "Subscription Expired",
|
||
"trialTitle": "Trial Expired",
|
||
"trialSubtitle": "Trial period ended",
|
||
"paidSubtitle": "Subscription has expired",
|
||
"renew": "Renew Subscription",
|
||
"tariffs": "Tariffs",
|
||
"traffic": "Traffic",
|
||
"devices": "Devices",
|
||
"expiredDate": "Expired"
|
||
},
|
||
"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",
|
||
"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"
|
||
},
|
||
"traffic": "Traffic",
|
||
"unlimited": "Unlimited",
|
||
"used": "Used",
|
||
"of": "of",
|
||
"renew": "Renew",
|
||
"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",
|
||
"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",
|
||
"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"
|
||
}
|
||
},
|
||
"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..."
|
||
},
|
||
"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."
|
||
}
|
||
},
|
||
"referral": {
|
||
"title": "Referral Program",
|
||
"yourLink": "Your Referral Link",
|
||
"copyLink": "Copy Link",
|
||
"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",
|
||
"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"
|
||
},
|
||
"panel": {
|
||
"title": "Admin Panel",
|
||
"subtitle": "System management",
|
||
"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"
|
||
},
|
||
"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"
|
||
},
|
||
"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"
|
||
},
|
||
"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": "Payment verification",
|
||
"description": "Pending payments in the last 24 hours",
|
||
"totalPending": "Total pending",
|
||
"filterByMethod": "Filter by method",
|
||
"noPayments": "No pending payments",
|
||
"paid": "Paid",
|
||
"user": "User",
|
||
"openLink": "Open link",
|
||
"checkStatus": "Check status",
|
||
"checking": "Checking...",
|
||
"prev": "Previous",
|
||
"next": "Next"
|
||
},
|
||
"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",
|
||
"squads": "Squads",
|
||
"sync": "Sync"
|
||
},
|
||
"overview": {
|
||
"system": "System",
|
||
"usersOnline": "Online",
|
||
"totalUsers": "Total Users",
|
||
"nodesOnline": "Nodes Online",
|
||
"connections": "Connections",
|
||
"bandwidth": "Realtime Bandwidth",
|
||
"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"
|
||
},
|
||
"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",
|
||
"modified": "Modified",
|
||
"readOnly": "Read only",
|
||
"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",
|
||
"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"
|
||
},
|
||
"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"
|
||
},
|
||
"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"
|
||
},
|
||
"styles": {
|
||
"default": "No color",
|
||
"primary": "Blue",
|
||
"success": "Green",
|
||
"danger": "Red"
|
||
}
|
||
},
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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"
|
||
},
|
||
"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",
|
||
"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"
|
||
},
|
||
"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": {
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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",
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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",
|
||
"unlinkError": "Failed to disconnect account",
|
||
"goToAccounts": "Connected Accounts",
|
||
"linking": "Linking account...",
|
||
"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..."
|
||
}
|
||
}
|