mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-05-13 09:36:05 +00:00
- DNS server modal: rename expectIPs -> expectedIPs (per docs); add per-server tag, clientIP, serveStale, serveExpiredTTL, timeoutMs; flip skipFallback default to false; hydration still accepts legacy expectIPs for back-compat. - DNS tab: add hosts editor (domain -> IP/array), serveStale + serveExpiredTTL controls, "Use Preset" button bringing back the legacy preset gallery (Google / Cloudflare / AdGuard + Family variants — fixed AdGuard Family IPs that were wrong in legacy), and a "Delete All" button to wipe the server list at once. - i18n: add 15 new dns.* keys across all 13 locales. - Frontend-wide formatter pass on Vue components (whitespace and attribute layout only, no behavior changes). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
957 lines
46 KiB
JSON
957 lines
46 KiB
JSON
{
|
||
"username": "Username",
|
||
"password": "Password",
|
||
"login": "Log In",
|
||
"confirm": "Confirm",
|
||
"cancel": "Cancel",
|
||
"close": "Close",
|
||
"save": "Save",
|
||
"logout": "Log Out",
|
||
"create": "Create",
|
||
"update": "Update",
|
||
"copy": "Copy",
|
||
"copied": "Copied",
|
||
"download": "Download",
|
||
"remark": "Remark",
|
||
"enable": "Enabled",
|
||
"protocol": "Protocol",
|
||
"search": "Search",
|
||
"filter": "Filter",
|
||
"loading": "Loading...",
|
||
"second": "Second",
|
||
"minute": "Minute",
|
||
"hour": "Hour",
|
||
"day": "Day",
|
||
"check": "Check",
|
||
"indefinite": "Indefinite",
|
||
"unlimited": "Unlimited",
|
||
"none": "None",
|
||
"qrCode": "QR Code",
|
||
"info": "More Information",
|
||
"edit": "Edit",
|
||
"delete": "Delete",
|
||
"reset": "Reset",
|
||
"noData": "No data.",
|
||
"copySuccess": "Copied Successful",
|
||
"sure": "Sure",
|
||
"encryption": "Encryption",
|
||
"useIPv4ForHost": "Use IPv4 for host",
|
||
"transmission": "Transmission",
|
||
"host": "Host",
|
||
"path": "Path",
|
||
"camouflage": "Obfuscation",
|
||
"status": "Status",
|
||
"enabled": "Enabled",
|
||
"disabled": "Disabled",
|
||
"depleted": "Ended",
|
||
"depletingSoon": "Depleting",
|
||
"offline": "Offline",
|
||
"online": "Online",
|
||
"domainName": "Domain Name",
|
||
"monitor": "Listen IP",
|
||
"certificate": "Digital Certificate",
|
||
"fail": "Failed",
|
||
"comment": "Comment",
|
||
"success": "Successfully",
|
||
"lastOnline": "Last Online",
|
||
"getVersion": "Get Version",
|
||
"install": "Install",
|
||
"clients": "Clients",
|
||
"usage": "Usage",
|
||
"twoFactorCode": "Code",
|
||
"remained": "Remained",
|
||
"security": "Security",
|
||
"secAlertTitle": "Security Alert",
|
||
"secAlertSsl": "This connection is not secure. Please avoid entering sensitive information until TLS is activated for data protection.",
|
||
"secAlertConf": "Certain settings are vulnerable to attacks. It is recommended to reinforce security protocols to prevent potential breaches.",
|
||
"secAlertSSL": "Panel lacks secure connection. Please install TLS certificate for data protection.",
|
||
"secAlertPanelPort": "Panel default port is vulnerable. Please configure a random or specific port.",
|
||
"secAlertPanelURI": "Panel default URI path is insecure. Please configure a complex URI path.",
|
||
"secAlertSubURI": "Subscription default URI path is insecure. Please configure a complex URI path.",
|
||
"secAlertSubJsonURI": "Subscription JSON default URI path is insecure. Please configure a complex URI path.",
|
||
"emptyDnsDesc": "No added DNS servers.",
|
||
"emptyFakeDnsDesc": "No added Fake DNS servers.",
|
||
"emptyBalancersDesc": "No added balancers.",
|
||
"emptyReverseDesc": "No added reverse proxies.",
|
||
"somethingWentWrong": "Something went wrong",
|
||
"subscription": {
|
||
"title": "Subscription info",
|
||
"subId": "Subscription ID",
|
||
"status": "Status",
|
||
"downloaded": "Downloaded",
|
||
"uploaded": "Uploaded",
|
||
"expiry": "Expiry",
|
||
"totalQuota": "Total quota",
|
||
"individualLinks": "Individual links",
|
||
"active": "Active",
|
||
"inactive": "Inactive",
|
||
"unlimited": "Unlimited",
|
||
"noExpiry": "No expiry"
|
||
},
|
||
"menu": {
|
||
"theme": "Theme",
|
||
"dark": "Dark",
|
||
"ultraDark": "Ultra Dark",
|
||
"dashboard": "Overview",
|
||
"inbounds": "Inbounds",
|
||
"nodes": "Nodes",
|
||
"settings": "Panel Settings",
|
||
"xray": "Xray Configs",
|
||
"logout": "Log Out",
|
||
"link": "Manage"
|
||
},
|
||
"pages": {
|
||
"login": {
|
||
"hello": "Hello",
|
||
"title": "Welcome",
|
||
"loginAgain": "Your session has expired, please log in again",
|
||
"toasts": {
|
||
"invalidFormData": "The Input data format is invalid.",
|
||
"emptyUsername": "Username is required",
|
||
"emptyPassword": "Password is required",
|
||
"wrongUsernameOrPassword": "Invalid username or password or two-factor code.",
|
||
"successLogin": " You have successfully logged into your account."
|
||
}
|
||
},
|
||
"index": {
|
||
"title": "Overview",
|
||
"cpu": "CPU",
|
||
"logicalProcessors": "Logical Processors",
|
||
"frequency": "Frequency",
|
||
"swap": "Swap",
|
||
"storage": "Storage",
|
||
"memory": "RAM",
|
||
"threads": "Threads",
|
||
"xrayStatus": "Xray",
|
||
"stopXray": "Stop",
|
||
"restartXray": "Restart",
|
||
"xraySwitch": "Version",
|
||
"xrayUpdates": "Xray Updates",
|
||
"xraySwitchClick": "Choose the version you want to switch to.",
|
||
"xraySwitchClickDesk": "Choose carefully, as older versions may not be compatible with current configurations.",
|
||
"updatePanel": "Update Panel",
|
||
"panelUpdateDesc": "This will update 3X-UI itself to the latest release and restart the panel service.",
|
||
"currentPanelVersion": "Current panel version",
|
||
"latestPanelVersion": "Latest panel version",
|
||
"panelUpToDate": "Panel is up to date",
|
||
"upToDate": "Up to date",
|
||
"xrayStatusUnknown": "Unknown",
|
||
"xrayStatusRunning": "Running",
|
||
"xrayStatusStop": "Stop",
|
||
"xrayStatusError": "Error",
|
||
"xrayErrorPopoverTitle": "An error occurred while running Xray",
|
||
"operationHours": "Uptime",
|
||
"systemHistoryTitle": "System History",
|
||
"trendLast2Min": "Last 2 minutes",
|
||
"systemLoad": "System Load",
|
||
"systemLoadDesc": "System load average for the past 1, 5, and 15 minutes",
|
||
"connectionCount": "Connection Stats",
|
||
"ipAddresses": "IP Addresses",
|
||
"toggleIpVisibility": "Toggle visibility of the IP",
|
||
"overallSpeed": "Overall Speed",
|
||
"upload": "Upload",
|
||
"download": "Download",
|
||
"totalData": "Total Data",
|
||
"sent": "Sent",
|
||
"received": "Received",
|
||
"documentation": "Documentation",
|
||
"xraySwitchVersionDialog": "Do you really want to change the Xray version?",
|
||
"xraySwitchVersionDialogDesc": "This will change the Xray version to #version#.",
|
||
"xraySwitchVersionPopover": "Xray updated successfully",
|
||
"panelUpdateDialog": "Do you really want to update the panel?",
|
||
"panelUpdateDialogDesc": "This will update 3X-UI to #version# and restart the panel service.",
|
||
"panelUpdateCheckPopover": "Panel update check failed",
|
||
"panelUpdateStartedPopover": "Panel update started",
|
||
"geofileUpdateDialog": "Do you really want to update the geofile?",
|
||
"geofileUpdateDialogDesc": "This will update the #filename# file.",
|
||
"geofilesUpdateDialogDesc": "This will update all geofiles.",
|
||
"geofilesUpdateAll": "Update all",
|
||
"geofileUpdatePopover": "Geofile updated successfully",
|
||
"customGeoTitle": "Custom GeoSite / GeoIP",
|
||
"customGeoAdd": "Add",
|
||
"customGeoType": "Type",
|
||
"customGeoAlias": "Alias",
|
||
"customGeoUrl": "URL",
|
||
"customGeoEnabled": "Enabled",
|
||
"customGeoLastUpdated": "Last updated",
|
||
"customGeoExtColumn": "Routing (ext:…)",
|
||
"customGeoToastUpdateAll": "All custom geo sources updated",
|
||
"customGeoActions": "Actions",
|
||
"customGeoEdit": "Edit",
|
||
"customGeoDelete": "Delete",
|
||
"customGeoDownload": "Update now",
|
||
"customGeoModalAdd": "Add custom geo",
|
||
"customGeoModalEdit": "Edit custom geo",
|
||
"customGeoModalSave": "Save",
|
||
"customGeoDeleteConfirm": "Delete this custom geo source?",
|
||
"customGeoRoutingHint": "In routing rules use the value column as ext:file.dat:tag (replace tag).",
|
||
"customGeoInvalidId": "Invalid resource id",
|
||
"customGeoAliasesError": "Failed to load custom geo aliases",
|
||
"customGeoValidationAlias": "Alias may only contain lowercase letters, digits, - and _",
|
||
"customGeoValidationUrl": "URL must start with http:// or https://",
|
||
"customGeoAliasPlaceholder": "a-z 0-9 _ -",
|
||
"customGeoAliasLabelSuffix": " (custom)",
|
||
"customGeoToastList": "Custom geo list",
|
||
"customGeoToastAdd": "Add custom geo",
|
||
"customGeoToastUpdate": "Update custom geo",
|
||
"customGeoToastDelete": "Custom geo file “{{ .fileName }}” deleted",
|
||
"customGeoToastDownload": "Geofile “{{ .fileName }}” updated",
|
||
"customGeoErrInvalidType": "Type must be geosite or geoip",
|
||
"customGeoErrAliasRequired": "Alias is required",
|
||
"customGeoErrAliasPattern": "Alias must match allowed characters",
|
||
"customGeoErrAliasReserved": "This alias is reserved",
|
||
"customGeoErrUrlRequired": "URL is required",
|
||
"customGeoErrInvalidUrl": "URL is invalid",
|
||
"customGeoErrUrlScheme": "URL must use http or https",
|
||
"customGeoErrUrlHost": "URL host is invalid",
|
||
"customGeoErrDuplicateAlias": "This alias is already used for this type",
|
||
"customGeoErrNotFound": "Custom geo source not found",
|
||
"customGeoErrDownload": "Download failed",
|
||
"customGeoErrUpdateAllIncomplete": "One or more custom geo sources failed to update",
|
||
"customGeoEmpty": "No custom geo sources yet — click Add to create one",
|
||
"dontRefresh": "Installation is in progress, please do not refresh this page",
|
||
"logs": "Logs",
|
||
"config": "Config",
|
||
"backup": "Backup",
|
||
"backupTitle": "Backup & Restore",
|
||
"exportDatabase": "Back Up",
|
||
"exportDatabaseDesc": "Click to download a .db file containing a backup of your current database to your device.",
|
||
"importDatabase": "Restore",
|
||
"importDatabaseDesc": "Click to select and upload a .db file from your device to restore your database from a backup.",
|
||
"importDatabaseSuccess": "The database has been successfully imported.",
|
||
"importDatabaseError": "An error occurred while importing the database.",
|
||
"readDatabaseError": "An error occurred while reading the database.",
|
||
"getDatabaseError": "An error occurred while retrieving the database.",
|
||
"getConfigError": "An error occurred while retrieving the config file."
|
||
},
|
||
"inbounds": {
|
||
"allTimeTraffic": "All-time Traffic",
|
||
"allTimeTrafficUsage": "All Time Total Usage",
|
||
"title": "Inbounds",
|
||
"totalDownUp": "Total Sent/Received",
|
||
"totalUsage": "Total Usage",
|
||
"inboundCount": "Total Inbounds",
|
||
"operate": "Menu",
|
||
"enable": "Enabled",
|
||
"remark": "Remark",
|
||
"node": "Node",
|
||
"deployTo": "Deploy to",
|
||
"localPanel": "Local panel",
|
||
"protocol": "Protocol",
|
||
"port": "Port",
|
||
"portMap": "Port Mapping",
|
||
"traffic": "Traffic",
|
||
"details": "Details",
|
||
"transportConfig": "Transport",
|
||
"expireDate": "Duration",
|
||
"createdAt": "Created",
|
||
"updatedAt": "Updated",
|
||
"resetTraffic": "Reset Traffic",
|
||
"addInbound": "Add Inbound",
|
||
"generalActions": "General Actions",
|
||
"modifyInbound": "Modify Inbound",
|
||
"deleteInbound": "Delete Inbound",
|
||
"deleteInboundContent": "Are you sure you want to delete inbound?",
|
||
"deleteClient": "Delete Client",
|
||
"deleteClientContent": "Are you sure you want to delete client?",
|
||
"resetTrafficContent": "Are you sure you want to reset traffic?",
|
||
"copyLink": "Copy URL",
|
||
"address": "Address",
|
||
"network": "Network",
|
||
"destinationPort": "Destination Port",
|
||
"targetAddress": "Target Address",
|
||
"monitorDesc": "Leave blank to listen on all IPs",
|
||
"meansNoLimit": "= Unlimited. (unit: GB)",
|
||
"totalFlow": "Total Flow",
|
||
"leaveBlankToNeverExpire": "Leave blank to never expire",
|
||
"noRecommendKeepDefault": "It is recommended to keep the default",
|
||
"certificatePath": "File Path",
|
||
"certificateContent": "File Content",
|
||
"publicKey": "Public Key",
|
||
"privatekey": "Private Key",
|
||
"clickOnQRcode": "Click on QR Code to Copy",
|
||
"client": "Client",
|
||
"export": "Export All URLs",
|
||
"clone": "Clone",
|
||
"cloneInbound": "Clone",
|
||
"cloneInboundContent": "All settings of this inbound, except Port, Listening IP, and Clients, will be applied to the clone.",
|
||
"cloneInboundOk": "Clone",
|
||
"resetAllTraffic": "Reset All Inbounds Traffic",
|
||
"resetAllTrafficTitle": "Reset All Inbounds Traffic",
|
||
"resetAllTrafficContent": "Are you sure you want to reset the traffic of all inbounds?",
|
||
"resetInboundClientTraffics": "Reset Clients Traffic",
|
||
"resetInboundClientTrafficTitle": "Reset Clients Traffic",
|
||
"resetInboundClientTrafficContent": "Are you sure you want to reset the traffic of this inbound's clients?",
|
||
"resetAllClientTraffics": "Reset All Clients Traffic",
|
||
"resetAllClientTrafficTitle": "Reset All Clients Traffic",
|
||
"resetAllClientTrafficContent": "Are you sure you want to reset the traffic of all clients?",
|
||
"delDepletedClients": "Delete Depleted Clients",
|
||
"delDepletedClientsTitle": "Delete Depleted Clients",
|
||
"delDepletedClientsContent": "Are you sure you want to delete all the depleted clients?",
|
||
"email": "Email",
|
||
"emailDesc": "Please provide a unique email address.",
|
||
"IPLimit": "IP Limit",
|
||
"IPLimitDesc": "Disables inbound if the count exceeds the set value. (0 = disable)",
|
||
"IPLimitlog": "IP Log",
|
||
"IPLimitlogDesc": "The IPs history log. (to enable inbound after disabling, clear the log)",
|
||
"IPLimitlogclear": "Clear The Log",
|
||
"setDefaultCert": "Set Cert from Panel",
|
||
"telegramDesc": "Please provide Telegram Chat ID. (use '/id' command in the bot) or ({'@'}userinfobot)",
|
||
"subscriptionDesc": "To find your subscription URL, navigate to the 'Details'. Additionally, you can use the same name for several clients.",
|
||
"info": "Info",
|
||
"same": "Same",
|
||
"inboundData": "Inbound's Data",
|
||
"exportInbound": "Export Inbound",
|
||
"import": "Import",
|
||
"importInbound": "Import an Inbound",
|
||
"periodicTrafficResetTitle": "Traffic Reset",
|
||
"periodicTrafficResetDesc": "Automatically reset traffic counter at specified intervals",
|
||
"lastReset": "Last Reset",
|
||
"periodicTrafficReset": {
|
||
"never": "Never",
|
||
"daily": "Daily",
|
||
"weekly": "Weekly",
|
||
"monthly": "Monthly",
|
||
"hourly": "Hourly"
|
||
},
|
||
"toasts": {
|
||
"obtain": "Obtain",
|
||
"updateSuccess": "The update was successful.",
|
||
"logCleanSuccess": "The log has been cleared.",
|
||
"inboundsUpdateSuccess": "Inbounds have been successfully updated.",
|
||
"inboundUpdateSuccess": "Inbound has been successfully updated.",
|
||
"inboundCreateSuccess": "Inbound has been successfully created.",
|
||
"inboundDeleteSuccess": "Inbound has been successfully deleted.",
|
||
"inboundClientAddSuccess": "Inbound client(s) have been added.",
|
||
"inboundClientDeleteSuccess": "Inbound client has been deleted.",
|
||
"inboundClientUpdateSuccess": "Inbound client has been updated.",
|
||
"delDepletedClientsSuccess": "All depleted clients are deleted.",
|
||
"resetAllClientTrafficSuccess": "All traffic from the client has been reset.",
|
||
"resetAllTrafficSuccess": "All traffic has been reset.",
|
||
"resetInboundClientTrafficSuccess": "Traffic has been reset.",
|
||
"trafficGetError": "Error getting traffics.",
|
||
"getNewX25519CertError": "Error while obtaining the X25519 certificate.",
|
||
"getNewmldsa65Error": "Error while obtaining mldsa65.",
|
||
"getNewVlessEncError": "Error while obtaining VlessEnc."
|
||
},
|
||
"stream": {
|
||
"general": {
|
||
"request": "Request",
|
||
"response": "Response",
|
||
"name": "Name",
|
||
"value": "Value"
|
||
},
|
||
"tcp": {
|
||
"version": "Version",
|
||
"method": "Method",
|
||
"path": "Path",
|
||
"status": "Status",
|
||
"statusDescription": "Status Desc",
|
||
"requestHeader": "Request Header",
|
||
"responseHeader": "Response Header"
|
||
}
|
||
}
|
||
},
|
||
"client": {
|
||
"add": "Add Client",
|
||
"edit": "Edit Client",
|
||
"submitAdd": "Add Client",
|
||
"submitEdit": "Save Changes",
|
||
"clientCount": "Number of Clients",
|
||
"bulk": "Add Bulk",
|
||
"copyFromInbound": "Copy Clients from Inbound",
|
||
"copyToInbound": "Copy clients to",
|
||
"copySelected": "Copy Selected",
|
||
"copySource": "Source",
|
||
"copyEmailPreview": "Resulting email preview",
|
||
"copySelectSourceFirst": "Please select a source inbound first.",
|
||
"copyResult": "Copy result",
|
||
"copyResultSuccess": "Copied successfully",
|
||
"copyResultNone": "Nothing to copy: no clients selected or source is empty",
|
||
"copyResultErrors": "Copy errors",
|
||
"copyFlowLabel": "Flow for new clients (VLESS)",
|
||
"copyFlowHint": "Applied to all copied clients. Leave empty to skip.",
|
||
"selectAll": "Select all",
|
||
"clearAll": "Clear all",
|
||
"method": "Method",
|
||
"first": "First",
|
||
"last": "Last",
|
||
"prefix": "Prefix",
|
||
"postfix": "Postfix",
|
||
"delayedStart": "Start After First Use",
|
||
"expireDays": "Duration",
|
||
"days": "Day(s)",
|
||
"renew": "Auto Renew",
|
||
"renewDesc": "Auto-renewal after expiration. (0 = disable)(unit: day)"
|
||
},
|
||
"nodes": {
|
||
"title": "Nodes",
|
||
"addNode": "Add Node",
|
||
"editNode": "Edit Node",
|
||
"totalNodes": "Total Nodes",
|
||
"onlineNodes": "Online",
|
||
"offlineNodes": "Offline",
|
||
"avgLatency": "Avg Latency",
|
||
"name": "Name",
|
||
"namePlaceholder": "e.g. de-frankfurt-1",
|
||
"addressPlaceholder": "panel.example.com or 1.2.3.4",
|
||
"remark": "Remark",
|
||
"scheme": "Scheme",
|
||
"address": "Address",
|
||
"port": "Port",
|
||
"basePath": "Base Path",
|
||
"apiToken": "API Token",
|
||
"apiTokenPlaceholder": "Token from the remote panel's Settings page",
|
||
"apiTokenHint": "The remote panel exposes its API token under Settings → API Token.",
|
||
"regenerate": "Regenerate Token",
|
||
"regenerateConfirm": "Regenerating invalidates the current token. Any central panel using it will lose access until updated. Continue?",
|
||
"enable": "Enabled",
|
||
"status": "Status",
|
||
"cpu": "CPU",
|
||
"mem": "Memory",
|
||
"uptime": "Uptime",
|
||
"latency": "Latency",
|
||
"lastHeartbeat": "Last Heartbeat",
|
||
"xrayVersion": "Xray Version",
|
||
"actions": "Actions",
|
||
"probe": "Probe Now",
|
||
"testConnection": "Test Connection",
|
||
"connectionOk": "Connection OK ({ms} ms)",
|
||
"connectionFailed": "Connection failed",
|
||
"never": "never",
|
||
"justNow": "just now",
|
||
"deleteConfirmTitle": "Delete node \"{name}\"?",
|
||
"deleteConfirmContent": "This stops monitoring the node. The remote panel itself is unaffected.",
|
||
"statusValues": {
|
||
"online": "Online",
|
||
"offline": "Offline",
|
||
"unknown": "Unknown"
|
||
},
|
||
"toasts": {
|
||
"list": "Failed to load nodes",
|
||
"obtain": "Failed to load node",
|
||
"add": "Add node",
|
||
"update": "Update node",
|
||
"delete": "Delete node",
|
||
"deleted": "Node deleted",
|
||
"test": "Test connection",
|
||
"fillRequired": "Name, address, port and API token are required",
|
||
"probeFailed": "Probe failed"
|
||
}
|
||
},
|
||
"settings": {
|
||
"title": "Panel Settings",
|
||
"save": "Save",
|
||
"infoDesc": "Every change made here needs to be saved. Please restart the panel to apply changes.",
|
||
"restartPanel": "Restart Panel",
|
||
"restartPanelDesc": "Are you sure you want to restart the panel? If you cannot access the panel after restarting, please view the panel log info on the server.",
|
||
"restartPanelSuccess": "The panel was successfully restarted.",
|
||
"actions": "Actions",
|
||
"resetDefaultConfig": "Reset to Default",
|
||
"panelSettings": "General",
|
||
"securitySettings": "Authentication",
|
||
"TGBotSettings": "Telegram Bot",
|
||
"panelListeningIP": "Listen IP",
|
||
"panelListeningIPDesc": "The IP address for the web panel. (leave blank to listen on all IPs)",
|
||
"panelListeningDomain": "Listen Domain",
|
||
"panelListeningDomainDesc": "The domain name for the web panel. (leave blank to listen on all domains and IPs)",
|
||
"panelPort": "Listen Port",
|
||
"panelPortDesc": "The port number for the web panel. (must be an unused port)",
|
||
"publicKeyPath": "Public Key Path",
|
||
"publicKeyPathDesc": "The public key file path for the web panel. (begins with ‘/‘)",
|
||
"privateKeyPath": "Private Key Path",
|
||
"privateKeyPathDesc": "The private key file path for the web panel. (begins with ‘/‘)",
|
||
"panelUrlPath": "URI Path",
|
||
"panelUrlPathDesc": "The URI path for the web panel. (begins with ‘/‘ and concludes with ‘/‘)",
|
||
"pageSize": "Pagination Size",
|
||
"pageSizeDesc": "Define page size for inbounds table. (0 = disable)",
|
||
"remarkModel": "Remark Model & Separation Character",
|
||
"datepicker": "Calendar Type",
|
||
"datepickerPlaceholder": "Select date",
|
||
"datepickerDescription": "Scheduled tasks will run based on this calendar.",
|
||
"sampleRemark": "Sample Remark",
|
||
"oldUsername": "Current Username",
|
||
"currentPassword": "Current Password",
|
||
"newUsername": "New Username",
|
||
"newPassword": "New Password",
|
||
"telegramBotEnable": "Enable Telegram Bot",
|
||
"telegramBotEnableDesc": "Enables the Telegram bot.",
|
||
"telegramToken": "Telegram Token",
|
||
"telegramTokenDesc": "The Telegram bot token obtained from '{'@'}BotFather'.",
|
||
"telegramProxy": "SOCKS Proxy",
|
||
"telegramProxyDesc": "Enables SOCKS5 proxy for connecting to Telegram. (adjust settings as per guide)",
|
||
"telegramAPIServer": "Telegram API Server",
|
||
"telegramAPIServerDesc": "The Telegram API server to use. Leave blank to use the default server.",
|
||
"telegramChatId": "Admin Chat ID",
|
||
"telegramChatIdDesc": "The Telegram Admin Chat ID(s). (comma-separated)(get it here {'@'}userinfobot) or (use '/id' command in the bot)",
|
||
"telegramNotifyTime": "Notification Time",
|
||
"telegramNotifyTimeDesc": "The Telegram bot notification time set for periodic reports. (use the crontab time format)",
|
||
"tgNotifyBackup": "Database Backup",
|
||
"tgNotifyBackupDesc": "Send a database backup file with a report.",
|
||
"tgNotifyLogin": "Login Notification",
|
||
"tgNotifyLoginDesc": "Get notified about the username, IP address, and time whenever someone attempts to log into your web panel.",
|
||
"sessionMaxAge": "Session Duration",
|
||
"sessionMaxAgeDesc": "The duration for which you can stay logged in. (unit: minute)",
|
||
"expireTimeDiff": "Expiration Date Notification",
|
||
"expireTimeDiffDesc": "Get notified about expiration date when reaching this threshold. (unit: day)",
|
||
"trafficDiff": "Traffic Cap Notification",
|
||
"trafficDiffDesc": "Get notified about traffic cap when reaching this threshold. (unit: GB)",
|
||
"tgNotifyCpu": "CPU Load Notification",
|
||
"tgNotifyCpuDesc": "Get notified if CPU load exceeds this threshold. (unit: %)",
|
||
"timeZone": "Time Zone",
|
||
"timeZoneDesc": "Scheduled tasks will run based on this time zone.",
|
||
"subSettings": "Subscription",
|
||
"subEnable": "Subscription Service",
|
||
"subEnableDesc": "Enable/Disable the subscription service.",
|
||
"subJsonEnable": "Enable/Disable the JSON subscription endpoint independently.",
|
||
"subTitle": "Subscription Title",
|
||
"subTitleDesc": "Title shown in VPN client",
|
||
"subSupportUrl": "Support URL",
|
||
"subSupportUrlDesc": "Technical support link shown in the VPN client",
|
||
"subProfileUrl": "Profile URL",
|
||
"subProfileUrlDesc": "A link to your website displayed in the VPN client",
|
||
"subAnnounce": "Announce",
|
||
"subAnnounceDesc": "The text of the announce displayed in the VPN client",
|
||
"subEnableRouting": "Enable routing",
|
||
"subEnableRoutingDesc": "Global setting to enable routing in the VPN client. (Only for Happ)",
|
||
"subRoutingRules": "Routing rules",
|
||
"subRoutingRulesDesc": "Global routing rules for the VPN client. (Only for Happ)",
|
||
"subListen": "Listen IP",
|
||
"subListenDesc": "The IP address for the subscription service. (leave blank to listen on all IPs)",
|
||
"subPort": "Listen Port",
|
||
"subPortDesc": "The port number for the subscription service. (must be an unused port)",
|
||
"subCertPath": "Public Key Path",
|
||
"subCertPathDesc": "The public key file path for the subscription service. (begins with ‘/‘)",
|
||
"subKeyPath": "Private Key Path",
|
||
"subKeyPathDesc": "The private key file path for the subscription service. (begins with ‘/‘)",
|
||
"subPath": "URI Path",
|
||
"subPathDesc": "The URI path for the subscription service. (begins with ‘/‘ and concludes with ‘/‘)",
|
||
"subDomain": "Listen Domain",
|
||
"subDomainDesc": "The domain name for the subscription service. (leave blank to listen on all domains and IPs)",
|
||
"subUpdates": "Update Intervals",
|
||
"subUpdatesDesc": "The update intervals of the subscription URL in the client apps. (unit: hour)",
|
||
"subEncrypt": "Encode",
|
||
"subEncryptDesc": "The returned content of subscription service will be Base64 encoded.",
|
||
"subShowInfo": "Show Usage Info",
|
||
"subShowInfoDesc": "The remaining traffic and date will be displayed in the client apps.",
|
||
"subURI": "Reverse Proxy URI",
|
||
"subURIDesc": "The URI path of the subscription URL for use behind proxies.",
|
||
"externalTrafficInformEnable": "External Traffic Inform",
|
||
"externalTrafficInformEnableDesc": "Inform external API on every traffic update.",
|
||
"externalTrafficInformURI": "External Traffic Inform URI",
|
||
"externalTrafficInformURIDesc": "Traffic updates are sent to this URI.",
|
||
"restartXrayOnClientDisable": "Restart Xray After Auto Disable",
|
||
"restartXrayOnClientDisableDesc": "When a client is automatically disabled due to expiration or traffic limit, restart Xray.",
|
||
"fragment": "Fragmentation",
|
||
"fragmentDesc": "Enable fragmentation for TLS hello packet.",
|
||
"fragmentSett": "Fragmentation Settings",
|
||
"noisesDesc": "Enable Noises.",
|
||
"noisesSett": "Noises Settings",
|
||
"mux": "Mux",
|
||
"muxDesc": "Transmit multiple independent data streams within an established data stream.",
|
||
"muxSett": "Mux Settings",
|
||
"direct": "Direct Connection",
|
||
"directDesc": "Directly establishes connections with domains or IP ranges of a specific country.",
|
||
"notifications": "Notifications",
|
||
"certs": "Certificaties",
|
||
"externalTraffic": "External Traffic",
|
||
"dateAndTime": "Date and Time",
|
||
"proxyAndServer": "Proxy and Server",
|
||
"intervals": "Intervals",
|
||
"information": "Information",
|
||
"language": "Language",
|
||
"telegramBotLanguage": "Telegram Bot Language",
|
||
"security": {
|
||
"admin": "Admin credentials",
|
||
"twoFactor": "Two-factor authentication",
|
||
"twoFactorEnable": "Enable 2FA",
|
||
"twoFactorEnableDesc": "Adds an additional layer of authentication to provide more security.",
|
||
"twoFactorModalSetTitle": "Enable two-factor authentication",
|
||
"twoFactorModalDeleteTitle": "Disable two-factor authentication",
|
||
"twoFactorModalSteps": "To set up two-factor authentication, perform a few steps:",
|
||
"twoFactorModalFirstStep": "1. Scan this QR code in the app for authentication or copy the token near the QR code and paste it into the app",
|
||
"twoFactorModalSecondStep": "2. Enter the code from the app",
|
||
"twoFactorModalRemoveStep": "Enter the code from the application to remove two-factor authentication.",
|
||
"twoFactorModalChangeCredentialsTitle": "Change credentials",
|
||
"twoFactorModalChangeCredentialsStep": "Enter the code from the application to change administrator credentials.",
|
||
"twoFactorModalSetSuccess": "Two-factor authentication has been successfully established",
|
||
"twoFactorModalDeleteSuccess": "Two-factor authentication has been successfully deleted",
|
||
"twoFactorModalError": "Wrong code"
|
||
},
|
||
"toasts": {
|
||
"modifySettings": "The parameters have been changed.",
|
||
"getSettings": "An error occurred while retrieving parameters.",
|
||
"modifyUserError": "An error occurred while changing administrator credentials.",
|
||
"modifyUser": "You have successfully changed the credentials of the administrator.",
|
||
"originalUserPassIncorrect": "The сurrent username or password is invalid",
|
||
"userPassMustBeNotEmpty": "The new username and password is empty",
|
||
"getOutboundTrafficError": "Error getting traffics",
|
||
"resetOutboundTrafficError": "Error in reset outbound traffics"
|
||
}
|
||
},
|
||
"xray": {
|
||
"title": "Xray Configs",
|
||
"save": "Save",
|
||
"restart": "Restart Xray",
|
||
"restartSuccess": "Xray has been successfully relaunched.",
|
||
"stopSuccess": "Xray has been successfully stopped.",
|
||
"restartError": "There was an error when rebooting the Xray.",
|
||
"stopError": "There was an error when stopping the Xray.",
|
||
"basicTemplate": "Basics",
|
||
"advancedTemplate": "Advanced",
|
||
"generalConfigs": "General",
|
||
"generalConfigsDesc": "These options will determine general adjustments.",
|
||
"logConfigs": "Log",
|
||
"logConfigsDesc": "Logs may affect your server's efficiency. It is recommended to enable it wisely only in case of your needs",
|
||
"blockConfigsDesc": "These options will block traffic based on specific requested protocols and websites.",
|
||
"basicRouting": "Basic Routing",
|
||
"blockConnectionsConfigsDesc": "These options will block traffic based on the specific requested country.",
|
||
"directConnectionsConfigsDesc": "A direct connection ensures that specific traffic is not routed through another server.",
|
||
"blockips": "Block IPs",
|
||
"blockdomains": "Block Domains",
|
||
"directips": "Direct IPs",
|
||
"directdomains": "Direct Domains",
|
||
"ipv4Routing": "IPv4 Routing",
|
||
"ipv4RoutingDesc": "These options will route traffic based on a specific destination via IPv4.",
|
||
"warpRouting": "WARP Routing",
|
||
"warpRoutingDesc": "These options will route traffic based on a specific destination via WARP.",
|
||
"nordRouting": "NordVPN Routing",
|
||
"nordRoutingDesc": "These options will route traffic based on a specific destination via NordVPN.",
|
||
"Template": "Advanced Xray Configuration Template",
|
||
"TemplateDesc": "The final Xray config file will be generated based on this template.",
|
||
"FreedomStrategy": "Freedom Protocol Strategy",
|
||
"FreedomStrategyDesc": "Set the output strategy for the network in the Freedom Protocol.",
|
||
"RoutingStrategy": "Overall Routing Strategy",
|
||
"RoutingStrategyDesc": "Set the overall traffic routing strategy for resolving all requests.",
|
||
"outboundTestUrl": "Outbound Test URL",
|
||
"outboundTestUrlDesc": "URL used when testing outbound connectivity.",
|
||
"Torrent": "Block BitTorrent Protocol",
|
||
"Inbounds": "Inbounds",
|
||
"InboundsDesc": "Accepting the specific clients.",
|
||
"Outbounds": "Outbounds",
|
||
"Balancers": "Balancers",
|
||
"OutboundsDesc": "Set the outgoing traffic pathway.",
|
||
"Routings": "Routing Rules",
|
||
"RoutingsDesc": "The priority of each rule is important!",
|
||
"completeTemplate": "All",
|
||
"logLevel": "Log Level",
|
||
"logLevelDesc": "The log level for error logs, indicating the information that needs to be recorded.",
|
||
"accessLog": "Access Log",
|
||
"accessLogDesc": "The file path for the access log. The special value 'none' disabled access logs",
|
||
"errorLog": "Error Log",
|
||
"errorLogDesc": "The file path for the error log. The special value 'none' disabled error logs",
|
||
"dnsLog": "DNS Log",
|
||
"dnsLogDesc": "Whether to enable DNS query logs",
|
||
"maskAddress": "Mask Address",
|
||
"maskAddressDesc": "IP address mask, when enabled, will automatically replace the IP address that appears in the log.",
|
||
"statistics": "Statistics",
|
||
"statsInboundUplink": "Inbound Upload Statistics",
|
||
"statsInboundUplinkDesc": "Enables the statistics collection for upstream traffic of all inbound proxies.",
|
||
"statsInboundDownlink": "Inbound Download Statistics",
|
||
"statsInboundDownlinkDesc": "Enables the statistics collection for downstream traffic of all inbound proxies.",
|
||
"statsOutboundUplink": "Outbound Upload Statistics",
|
||
"statsOutboundUplinkDesc": "Enables the statistics collection for upstream traffic of all outbound proxies.",
|
||
"statsOutboundDownlink": "Outbound Download Statistics",
|
||
"statsOutboundDownlinkDesc": "Enables the statistics collection for downstream traffic of all outbound proxies.",
|
||
"rules": {
|
||
"first": "First",
|
||
"last": "Last",
|
||
"up": "Up",
|
||
"down": "Down",
|
||
"source": "Source",
|
||
"dest": "Destination",
|
||
"inbound": "Inbound",
|
||
"outbound": "Outbound",
|
||
"balancer": "Balancer",
|
||
"info": "Info",
|
||
"add": "Add Rule",
|
||
"edit": "Edit Rule",
|
||
"useComma": "Comma-separated items"
|
||
},
|
||
"outbound": {
|
||
"addOutbound": "Add Outbound",
|
||
"addReverse": "Add Reverse",
|
||
"editOutbound": "Edit Outbound",
|
||
"editReverse": "Edit Reverse",
|
||
"reverseTag": "Reverse Tag",
|
||
"reverseTagDesc": "VLESS simple reverse proxy tag. Leave empty to disable.",
|
||
"reverseTagPlaceholder": "reverse tag (leave empty to disable)",
|
||
"tag": "Tag",
|
||
"tagDesc": "Unique Tag",
|
||
"address": "Address",
|
||
"reverse": "Reverse",
|
||
"domain": "Domain",
|
||
"type": "Type",
|
||
"bridge": "Bridge",
|
||
"portal": "Portal",
|
||
"link": "Link",
|
||
"intercon": "Interconnection",
|
||
"settings": "Settings",
|
||
"accountInfo": "Account Information",
|
||
"outboundStatus": "Outbound Status",
|
||
"sendThrough": "Send Through",
|
||
"test": "Test",
|
||
"testResult": "Test Result",
|
||
"testing": "Testing connection...",
|
||
"testSuccess": "Test successful",
|
||
"testFailed": "Test failed",
|
||
"testError": "Failed to test outbound",
|
||
"nordvpn": "NordVPN",
|
||
"accessToken": "Access Token",
|
||
"country": "Country",
|
||
"server": "Server",
|
||
"city": "City",
|
||
"allCities": "All Cities",
|
||
"privateKey": "Private Key",
|
||
"load": "Load"
|
||
},
|
||
"balancer": {
|
||
"addBalancer": "Add Balancer",
|
||
"editBalancer": "Edit Balancer",
|
||
"balancerStrategy": "Strategy",
|
||
"balancerSelectors": "Selectors",
|
||
"tag": "Tag",
|
||
"tagDesc": "Unique Tag",
|
||
"balancerDesc": "It is not possible to use balancerTag and outboundTag at the same time. If used at the same time, only outboundTag will work."
|
||
},
|
||
"wireguard": {
|
||
"secretKey": "Secret Key",
|
||
"publicKey": "Public Key",
|
||
"allowedIPs": "Allowed IPs",
|
||
"endpoint": "Endpoint",
|
||
"psk": "PreShared Key",
|
||
"domainStrategy": "Domain Strategy"
|
||
},
|
||
"tun": {
|
||
"nameDesc": "The name of the TUN interface. Default is 'xray0'",
|
||
"mtuDesc": "Maximum Transmission Unit. The maximum size of data packets. Default is 1500",
|
||
"userLevel": "User Level",
|
||
"userLevelDesc": "All connections made through this inbound will use this user level. Default is 0"
|
||
},
|
||
"dns": {
|
||
"enable": "Enable DNS",
|
||
"enableDesc": "Enable built-in DNS server",
|
||
"tag": "DNS Inbound Tag",
|
||
"tagDesc": "This tag will be available as an Inbound tag in routing rules.",
|
||
"clientIp": "Client IP",
|
||
"clientIpDesc": "Used to notify the server of the specified IP location during DNS queries",
|
||
"disableCache": "Disable cache",
|
||
"disableCacheDesc": "Disables DNS caching",
|
||
"disableFallback": "Disable Fallback",
|
||
"disableFallbackDesc": "Disables fallback DNS queries",
|
||
"disableFallbackIfMatch": "Disable Fallback If Match",
|
||
"disableFallbackIfMatchDesc": "Disables fallback DNS queries when the matching domain list of the DNS server is hit",
|
||
"enableParallelQuery": "Enable Parallel Query",
|
||
"enableParallelQueryDesc": "Enable parallel DNS queries to multiple servers for faster resolution",
|
||
"strategy": "Query Strategy",
|
||
"strategyDesc": "Overall strategy to resolve domain names",
|
||
"add": "Add Server",
|
||
"edit": "Edit Server",
|
||
"domains": "Domains",
|
||
"expectIPs": "Expect IPs",
|
||
"unexpectIPs": "Unexpect IPs",
|
||
"useSystemHosts": "Use System Hosts",
|
||
"useSystemHostsDesc": "Use the hosts file from an installed system",
|
||
"serveStale": "Serve Stale",
|
||
"serveStaleDesc": "Return expired cached results while refreshing in the background",
|
||
"serveExpiredTTL": "Serve Expired TTL",
|
||
"serveExpiredTTLDesc": "Validity (seconds) of stale cache entries; 0 = never expire",
|
||
"timeoutMs": "Timeout (ms)",
|
||
"skipFallback": "Skip Fallback",
|
||
"finalQuery": "Final Query",
|
||
"hosts": "Hosts",
|
||
"hostsAdd": "Add Host",
|
||
"hostsEmpty": "No host overrides defined",
|
||
"hostsDomain": "Domain (e.g. domain:example.com)",
|
||
"hostsValues": "IP or domain — type and press Enter",
|
||
"usePreset": "Use Preset",
|
||
"dnsPresetTitle": "DNS Presets",
|
||
"dnsPresetFamily": "Family",
|
||
"clearAll": "Delete All",
|
||
"clearAllTitle": "Delete all DNS servers?",
|
||
"clearAllConfirm": "This removes every DNS server from the list. This cannot be undone."
|
||
},
|
||
"fakedns": {
|
||
"add": "Add Fake DNS",
|
||
"edit": "Edit Fake DNS",
|
||
"ipPool": "IP Pool Subnet",
|
||
"poolSize": "Pool Size"
|
||
}
|
||
}
|
||
},
|
||
"tgbot": {
|
||
"keyboardClosed": "❌ Custom keyboard closed!",
|
||
"noResult": "❗ No result!",
|
||
"noQuery": "❌ Query not found! Please use the command again!",
|
||
"wentWrong": "❌ Something went wrong!",
|
||
"noIpRecord": "❗ No IP Record!",
|
||
"noInbounds": "❗ No inbound found!",
|
||
"unlimited": "♾ Unlimited(Reset)",
|
||
"add": "Add",
|
||
"month": "Month",
|
||
"months": "Months",
|
||
"day": "Day",
|
||
"days": "Days",
|
||
"hours": "Hours",
|
||
"minutes": "Minutes",
|
||
"unknown": "Unknown",
|
||
"inbounds": "Inbounds",
|
||
"clients": "Clients",
|
||
"offline": "🔴 Offline",
|
||
"online": "🟢 Online",
|
||
"commands": {
|
||
"unknown": "❗ Unknown command.",
|
||
"pleaseChoose": "👇 Please choose:\r\n",
|
||
"help": "🤖 Welcome to this bot! It's designed to offer specific data from the web panel and allows you to make modifications as needed.\r\n\r\n",
|
||
"start": "👋 Hello <i>{{ .Firstname }}</i>.\r\n",
|
||
"welcome": "🤖 Welcome to <b>{{ .Hostname }}</b> management bot.\r\n",
|
||
"status": "✅ Bot is OK!",
|
||
"usage": "❗ Please provide a text to search!",
|
||
"getID": "🆔 Your ID: <code>{{ .ID }}</code>",
|
||
"helpAdminCommands": "To restart Xray Core:\r\n<code>/restart</code>\r\n\r\nTo search for a client email:\r\n<code>/usage [Email]</code>\r\n\r\nTo search for inbounds (with client stats):\r\n<code>/inbound [Remark]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
||
"helpClientCommands": "To search for statistics, use the following command:\r\n\r\n<code>/usage [Email]</code>\r\n\r\nTelegram Chat ID:\r\n<code>/id</code>",
|
||
"restartUsage": "\r\n\r\n<code>/restart</code>",
|
||
"restartSuccess": "✅ Operation successful!",
|
||
"restartFailed": "❗ Error in operation.\r\n\r\n<code>Error: {{ .Error }}</code>.",
|
||
"xrayNotRunning": "❗ Xray Core is not running.",
|
||
"startDesc": "Show the main menu",
|
||
"helpDesc": "Bot help",
|
||
"statusDesc": "Check bot status",
|
||
"idDesc": "Show your Telegram ID"
|
||
},
|
||
"messages": {
|
||
"cpuThreshold": "🔴 CPU Load {{ .Percent }}% exceeds the threshold of {{ .Threshold }}%",
|
||
"selectUserFailed": "❌ Error in user selection!",
|
||
"userSaved": "✅ Telegram User saved.",
|
||
"loginSuccess": "✅ Logged in to the panel successfully.\r\n",
|
||
"loginFailed": "❗️Login attempt to the panel failed.\r\n",
|
||
"2faFailed": "2FA Failed",
|
||
"report": "🕰 Scheduled Reports: {{ .RunTime }}\r\n",
|
||
"datetime": "⏰ Date&Time: {{ .DateTime }}\r\n",
|
||
"hostname": "💻 Host: {{ .Hostname }}\r\n",
|
||
"version": "🚀 3X-UI Version: {{ .Version }}\r\n",
|
||
"xrayVersion": "📡 Xray Version: {{ .XrayVersion }}\r\n",
|
||
"ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
|
||
"ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
|
||
"ip": "🌐 IP: {{ .IP }}\r\n",
|
||
"ips": "🔢 IPs:\r\n{{ .IPs }}\r\n",
|
||
"serverUpTime": "⏳ Uptime: {{ .UpTime }} {{ .Unit }}\r\n",
|
||
"serverLoad": "📈 System Load: {{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
|
||
"serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
|
||
"tcpCount": "🔹 TCP: {{ .Count }}\r\n",
|
||
"udpCount": "🔸 UDP: {{ .Count }}\r\n",
|
||
"traffic": "🚦 Traffic: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
|
||
"xrayStatus": "ℹ️ Status: {{ .State }}\r\n",
|
||
"username": "👤 Username: {{ .Username }}\r\n",
|
||
"reason": "❗️ Reason: {{ .Reason }}\r\n",
|
||
"time": "⏰ Time: {{ .Time }}\r\n",
|
||
"inbound": "📍 Inbound: {{ .Remark }}\r\n",
|
||
"port": "🔌 Port: {{ .Port }}\r\n",
|
||
"expire": "📅 Expire Date: {{ .Time }}\r\n",
|
||
"expireIn": "📅 Expire In: {{ .Time }}\r\n",
|
||
"active": "💡 Active: {{ .Enable }}\r\n",
|
||
"enabled": "🚨 Enabled: {{ .Enable }}\r\n",
|
||
"online": "🌐 Connection status: {{ .Status }}\r\n",
|
||
"lastOnline": "🔙 Last online: {{ .Time }}\r\n",
|
||
"email": "📧 Email: {{ .Email }}\r\n",
|
||
"upload": "🔼 Upload: ↑{{ .Upload }}\r\n",
|
||
"download": "🔽 Download: ↓{{ .Download }}\r\n",
|
||
"total": "📊 Total: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
|
||
"TGUser": "👤 Telegram User: {{ .TelegramID }}\r\n",
|
||
"exhaustedMsg": "🚨 Exhausted {{ .Type }}:\r\n",
|
||
"exhaustedCount": "🚨 Exhausted {{ .Type }} count:\r\n",
|
||
"onlinesCount": "🌐 Online Clients: {{ .Count }}\r\n",
|
||
"disabled": "🛑 Disabled: {{ .Disabled }}\r\n",
|
||
"depleteSoon": "🔜 Deplete Soon: {{ .Deplete }}\r\n\r\n",
|
||
"backupTime": "🗄 Backup Time: {{ .Time }}\r\n",
|
||
"refreshedOn": "\r\n📋🔄 Refreshed On: {{ .Time }}\r\n\r\n",
|
||
"yes": "✅ Yes",
|
||
"no": "❌ No",
|
||
"received_id": "🔑📥 ID updated.",
|
||
"received_password": "🔑📥 Password updated.",
|
||
"received_email": "📧📥 Email updated.",
|
||
"received_comment": "💬📥 Comment updated.",
|
||
"id_prompt": "🔑 Default ID: {{ .ClientId }}\n\nEnter your id.",
|
||
"pass_prompt": "🔑 Default Password: {{ .ClientPassword }}\n\nEnter your password.",
|
||
"email_prompt": "📧 Default Email: {{ .ClientEmail }}\n\nEnter your email.",
|
||
"comment_prompt": "💬 Default Comment: {{ .ClientComment }}\n\nEnter your Comment.",
|
||
"inbound_client_data_id": "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n📊 Traffic: {{ .ClientTraffic }}\n📅 Expire Date: {{ .ClientExp }}\n🌐 IP Limit: {{ .IpLimit }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!",
|
||
"inbound_client_data_pass": "🔄 Inbound: {{ .InboundRemark }}\n\n🔑 Password: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n📊 Traffic: {{ .ClientTraffic }}\n📅 Expire Date: {{ .ClientExp }}\n🌐 IP Limit: {{ .IpLimit }}\n💬 Comment: {{ .ClientComment }}\n\nYou can add the client to inbound now!",
|
||
"cancel": "❌ Process Canceled! \n\nYou can /start again anytime. 🔄",
|
||
"error_add_client": "⚠️ Error:\n\n {{ .error }}",
|
||
"using_default_value": "Okay, I'll stick with the default value. 😊",
|
||
"incorrect_input": "Your input is not valid.\nThe phrases should be continuous without spaces.\nCorrect example: aaaaaa\nIncorrect example: aaa aaa 🚫",
|
||
"AreYouSure": "Are you sure? 🤔",
|
||
"SuccessResetTraffic": "📧 Email: {{ .ClientEmail }}\n🏁 Result: ✅ Success",
|
||
"FailedResetTraffic": "📧 Email: {{ .ClientEmail }}\n🏁 Result: ❌ Failed \n\n🛠️ Error: [ {{ .ErrorMessage }} ]",
|
||
"FinishProcess": "🔚 Traffic reset process finished for all clients."
|
||
},
|
||
"buttons": {
|
||
"closeKeyboard": "❌ Close Keyboard",
|
||
"cancel": "❌ Cancel",
|
||
"cancelReset": "❌ Cancel Reset",
|
||
"cancelIpLimit": "❌ Cancel IP Limit",
|
||
"confirmResetTraffic": "✅ Confirm Reset Traffic?",
|
||
"confirmClearIps": "✅ Confirm Clear IPs?",
|
||
"confirmRemoveTGUser": "✅ Confirm Remove Telegram User?",
|
||
"confirmToggle": "✅ Confirm Enable/Disable User?",
|
||
"dbBackup": "Get DB Backup",
|
||
"serverUsage": "Server Usage",
|
||
"getInbounds": "Get Inbounds",
|
||
"depleteSoon": "Deplete Soon",
|
||
"clientUsage": "Get Usage",
|
||
"onlines": "Online Clients",
|
||
"commands": "Commands",
|
||
"refresh": "🔄 Refresh",
|
||
"clearIPs": "❌ Clear IPs",
|
||
"removeTGUser": "❌ Remove Telegram User",
|
||
"selectTGUser": "👤 Select Telegram User",
|
||
"selectOneTGUser": "👤 Select a Telegram User:",
|
||
"resetTraffic": "📈 Reset Traffic",
|
||
"resetExpire": "📅 Change Expiry Date",
|
||
"ipLog": "🔢 IP Log",
|
||
"ipLimit": "🔢 IP Limit",
|
||
"setTGUser": "👤 Set Telegram User",
|
||
"toggle": "🔘 Enable / Disable",
|
||
"custom": "🔢 Custom",
|
||
"confirmNumber": "✅ Confirm: {{ .Num }}",
|
||
"confirmNumberAdd": "✅ Confirm adding: {{ .Num }}",
|
||
"limitTraffic": "🚧 Traffic Limit",
|
||
"getBanLogs": "Get Ban Logs",
|
||
"allClients": "All Clients",
|
||
"addClient": "Add Client",
|
||
"submitDisable": "Submit As Disable ☑️",
|
||
"submitEnable": "Submit As Enable ✅",
|
||
"use_default": "🏷️ Use default",
|
||
"change_id": "⚙️🔑 ID",
|
||
"change_password": "⚙️🔑 Password",
|
||
"change_email": "⚙️📧 Email",
|
||
"change_comment": "⚙️💬 Comment",
|
||
"ResetAllTraffics": "Reset All Traffics",
|
||
"SortedTrafficUsageReport": "Sorted Traffic Usage Report"
|
||
},
|
||
"answers": {
|
||
"successfulOperation": "✅ Operation successful!",
|
||
"errorOperation": "❗ Error in operation.",
|
||
"getInboundsFailed": "❌ Failed to get inbounds.",
|
||
"getClientsFailed": "❌ Failed to get clients.",
|
||
"canceled": "❌ {{ .Email }}: Operation canceled.",
|
||
"clientRefreshSuccess": "✅ {{ .Email }}: Client refreshed successfully.",
|
||
"IpRefreshSuccess": "✅ {{ .Email }}: IPs refreshed successfully.",
|
||
"TGIdRefreshSuccess": "✅ {{ .Email }}: Client's Telegram User refreshed successfully.",
|
||
"resetTrafficSuccess": "✅ {{ .Email }}: Traffic reset successfully.",
|
||
"setTrafficLimitSuccess": "✅ {{ .Email }}: Traffic limit saved successfully.",
|
||
"expireResetSuccess": "✅ {{ .Email }}: Expire days reset successfully.",
|
||
"resetIpSuccess": "✅ {{ .Email }}: IP limit {{ .Count }} saved successfully.",
|
||
"clearIpSuccess": "✅ {{ .Email }}: IPs cleared successfully.",
|
||
"getIpLog": "✅ {{ .Email }}: Get IP Log.",
|
||
"getUserInfo": "✅ {{ .Email }}: Get Telegram User Info.",
|
||
"removedTGUserSuccess": "✅ {{ .Email }}: Telegram User removed successfully.",
|
||
"enableSuccess": "✅ {{ .Email }}: Enabled successfully.",
|
||
"disableSuccess": "✅ {{ .Email }}: Disabled successfully.",
|
||
"askToAddUserId": "Your configuration is not found!\r\nPlease ask your admin to use your Telegram ChatID in your configuration(s).\r\n\r\nYour ChatID: <code>{{ .TgUserID }}</code>",
|
||
"chooseClient": "Choose a Client for Inbound {{ .Inbound }}",
|
||
"chooseInbound": "Choose an Inbound"
|
||
}
|
||
}
|
||
}
|