merge: 同步 upstream/main 新功能到定制版本
Build and Release / Build (push) Has been cancelled
Issue Close Require / issue-close-require (push) Has been cancelled

- 分流规则 + 用户流量统计
- 验证码功能
- 节点分组管理 UI
- 重构用户分组组件
This commit is contained in:
2026-03-19 03:16:59 -07:00
89 changed files with 7036 additions and 383 deletions
@@ -2,6 +2,7 @@
"accountEnable": "Account Enable",
"add": "Add",
"administrator": "Administrator",
"all": "All",
"areaCodePlaceholder": "Area code",
"authMethodsTitle": "Auth Methods",
"avatar": "Avatar",
@@ -17,6 +18,9 @@
"confirm": "Confirm",
"confirmDelete": "Confirm Delete",
"confirmOffline": "Confirm Offline",
"confirmResetToken": "Confirm Reset Subscription Address",
"confirmResumeSubscribe": "Confirm Resume Subscription",
"confirmStopSubscribe": "Confirm Stop Subscription",
"copySubscription": "Copy Subscription",
"copySuccess": "Copied successfully",
"create": "Create",
@@ -30,7 +34,6 @@
"deleteDescription": "This action cannot be undone.",
"deleteSubscriptionDescription": "This action cannot be undone.",
"deleteSuccess": "Deleted successfully",
"isDeleted": "Status",
"deviceLimit": "Device Limit",
"deviceGroup": "Device Group",
"deviceNo": "Device No.",
@@ -38,7 +41,10 @@
"download": "Download",
"downloadTraffic": "Download Traffic",
"edit": "Edit",
"editGroup": "Edit Group",
"editSubscription": "Edit Subscription",
"editUserGroup": "Edit User Group",
"editUserGroupDescription": "Edit user group assignment and lock status",
"enable": "Enable",
"enabled": "Enabled",
"disabled": "Disabled",
@@ -83,6 +89,7 @@
"inviteCount": "Invited Users",
"inviteStats": "Invite Statistics",
"invitedUsers": "Invited Users",
"isDeleted": "Status",
"kickOfflineConfirm": "kickOfflineConfirm",
"kickOfflineSuccess": "Device kicked offline",
"lastSeen": "Last Seen",
@@ -130,33 +137,33 @@
"resetSearch": "Reset",
"resetTime": "Reset Time",
"resetToken": "Reset Subscription Address",
"saving": "Saving...",
"resetTokenDescription": "This will reset the subscription address and regenerate a new token.",
"resetTokenSuccess": "Subscription address reset successfully",
"confirmResetToken": "Confirm Reset Subscription Address",
"resumeSubscribe": "Resume Subscription",
"selectGroup": "Select a group",
"resumeSubscribeDescription": "This will resume the subscription and allow the user to use it.",
"resumeSubscribeSuccess": "Subscription resumed successfully",
"save": "Save",
"shortCode": "Short Code",
"speedLimit": "Speed Limit",
"startTime": "startTime",
"status": "Status",
"statusActive": "Active",
"statusDeducted": "Deducted",
"statusExpired": "Expired",
"statusFinished": "Finished",
"statusPending": "Pending",
"statusStopped": "Stopped",
"stopSubscribe": "Stop Subscription",
"stopSubscribeDescription": "This will stop the subscription temporarily. User will not be able to use it.",
"stopSubscribeSuccess": "Subscription stopped successfully",
"confirmStopSubscribe": "Confirm Stop Subscription",
"resumeSubscribe": "Resume Subscription",
"resumeSubscribeDescription": "This will resume the subscription and allow the user to use it.",
"resumeSubscribeSuccess": "Subscription resumed successfully",
"confirmResumeSubscribe": "Confirm Resume Subscription",
"status": "Status",
"statusPending": "Pending",
"statusActive": "Active",
"statusFinished": "Finished",
"statusExpired": "Expired",
"statusDeducted": "Deducted",
"statusStopped": "Stopped",
"save": "Save",
"search": "Search",
"searchPlaceholder": "Email / Invite Code / Device ID",
"searchInputPlaceholder": "Enter search term",
"sharedSubscription": "Shared",
"sharedSubscriptionInfo": "This user is a device group member. Showing shared subscriptions from owner (ID: {{ownerId}})",
"sharedSubscriptionList": "Shared Subscription List",
"speedLimit": "Speed Limit",
"startTime": "startTime",
"subscription": "Subscription",
"subscriptionId": "subscriptionId",
"subscriptionInfo": "subscriptionInfo",
@@ -173,11 +180,13 @@
"trafficDetails": "Traffic Details",
"trafficLimit": "Traffic Limit",
"trafficStats": "Traffic Stats",
"trafficUsage": "trafficUsage",
"trafficUsage": "Traffic Usage",
"remainingTraffic": "Remaining Traffic",
"unlimited": "unlimited",
"unverified": "Unverified",
"update": "Update",
"updateSuccess": "Updated successfully",
"groupUpdated": "Group updated successfully",
"upload": "Upload",
"uploadTraffic": "Upload Traffic",
"userAgent": "User Agent",
@@ -188,7 +197,20 @@
"userList": "User List",
"userName": "Username",
"userProfile": "User Profile",
"userGroup": "User Group",
"verified": "Verified",
"viewDeviceGroup": "View Device Group",
"viewOwner": "View Owner"
"viewOwner": "View Owner",
"locked": "Locked",
"lockGroup": "Lock Group",
"lockGroupDescription": "Prevent automatic grouping from changing this user's group",
"groupLocked": "Group Locked",
"previewNodes": "Preview Nodes",
"availableNodes": "Available Nodes",
"name": "Name",
"address": "Address",
"noNodesAvailable": "No nodes available",
"nodeGroup": "Node Group",
"publicNodes": "Public Nodes",
"subscriptionNodes": "Subscription Nodes"
}