Files
lotteryAdmin/src/i18n/locales/en/agents.json
kang 4484a7a77a
Some checks failed
lotteryadmin CI / build (push) Has been cancelled
Refactor agents console and related components
- Simplified share rate calculation in AgentsConsole by removing unnecessary checks and directly setting the profile share rate.
- Updated the use of `profileParentCaps` to always return total share rate in the agent profile.
- Removed unused variables and memoized calculations for improved performance.
- Cleaned up imports in various files, removing unused components and optimizing the code structure.
- Added `tRef` dependency to several useEffect hooks to ensure proper reactivity to translation changes.
- Enhanced report preview tables with better label handling for various statuses and actions.
- Updated wallet filter options to align with player-side transaction types.
- Introduced new properties in types for better type safety and clarity.
2026-06-30 17:55:00 +08:00

428 lines
19 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"addChildNeedParent": "Select a parent agent before adding a subordinate",
"bindAccountHint": "No login account is bound yet. Saving will create and bind one automatically.",
"bindAccountPasswordRequired": "This agent has no login account yet. Enter an initial password to create one.",
"childrenCount": "Direct downline",
"code": "Code",
"agentCode": "Agent code",
"agentName": "Agent name",
"loginUsername": "Login name",
"codeRequired": "Code and name are required",
"createChild": "Add child agent",
"createSuccess": "Created agent {{name}}",
"delegation": {
"canDelegate": "May delegate further",
"empty": "No actions available to assign",
"hint": "Select actions this child agent may grant to its own subordinates. Agent roles cannot exceed this ceiling.",
"permission": "Action",
"rootDenied": "Root nodes do not use delegation ceilings",
"save": "Save ceiling",
"saveSuccess": "Delegation ceiling saved",
"title": "Delegation ceiling"
},
"deleteBlocked": {
"children": "{{count}} child agent(s) remain",
"roles": "{{count}} role(s) must be removed in the Roles tab first",
"users": "{{count}} bound account(s) remain"
},
"deleteNode": "Delete node",
"deleteNodeBlockedHint": "Remove child agents, roles, and accounts before deleting this node",
"deleteNodeBlockedPrefix": "Cannot delete yet: ",
"deleteNodeConfirm": "This action cannot be undone. Make sure the node has no children, users, or roles.",
"deleteSuccess": "Deleted agent {{name}}",
"depth": "Depth",
"detailTitle": "Node details",
"detailTabs": "Agent details",
"directoryStatus": {
"all": "All statuses",
"disabled": "Disabled only",
"enabled": "Enabled only"
},
"downlineAgentsSection": "Sub-agents",
"downlineDialogTitle": "{{name}} — sub-agents and players",
"downlineNoAgents": "No sub-agents yet",
"downlinePlayersSection": "Direct players",
"editNode": "Edit node",
"filterParent": "Parent agent",
"filterParentAll": "All subordinates",
"includeRoots": "Include root nodes",
"includeRootsHint": "Root nodes represent site boundaries and are excluded from operating agent counts by default.",
"isRoot": "Root",
"lineFilter": "Level-1 agent",
"lineProvision": {
"description": "Creates the level-1 agent, admin login, and line settings (share, credit, rebate, settlement cycle) in one step.",
"link": "Create level-1 agent",
"name": "Level-1 agent name",
"noUnboundSite": "No sites without a level-1 agent",
"openIntegrationSites": "Go to integration sites",
"password": "Initial password",
"passwordHint": "at least 6 characters",
"secretsOnce": "Integration secrets are shown once — save them now",
"siteCode": "Integration site",
"siteCodePlaceholder": "Select site",
"siteRequired": "Select an integration site",
"submit": "Create level-1 agent",
"success": "Level-1 agent created",
"title": "Create level-1 agent",
"username": "Admin login",
"walletUrl": "Wallet API URL (optional technical field)"
},
"lineUi": {
"agentCount": "{{count}} agents in this group",
"allocatedCredit": "Allocated",
"availableCredit": "Available",
"collapse": "Collapse",
"currentSite": "Site",
"directChildren": "{{count}} direct downline",
"downlineColumns": {
"downlineCount": "Downline count",
"email": "Email"
},
"downlineEmpty": "No direct downline yet. Child agents will appear here after creation.",
"downlineEmptyShort": "No direct downline yet.",
"downlineEmptyTitle": "No direct downline yet",
"editAccount": "Account & status",
"editAgent": "Edit",
"parentMeta": "Parent {{name}}",
"editCurrent": "Edit this agent",
"expand": "Expand",
"kicker": "Credit share · Agent tree",
"nextSteps": "Suggested next steps",
"noDelegatedTabs": "This agent cannot create downline agents or players; only share and credit settings apply.",
"overviewDownlineCard": "View and manage direct downline agents",
"overviewDownlineCount": "{{count}}",
"overviewDownlineHint": "{{count}} direct downline agent(s). Manage them in the Downline tab.",
"overviewPlayersHint": "View direct players and credit status",
"overviewPlayersSummary": "Player management",
"playersNoPermissionHint": "This account does not have player management permission on this node.",
"playersUnavailableHint": "This agent cannot create players. Enable “Allow create player” in the agent profile first.",
"profileFootnote": "Rebate cap {{rebate}}% · Default {{defaultRebate}}%",
"profileReadOnlyHint": "Share, credit, and rebate are configured by your upline. Contact your parent agent or the platform to request changes.",
"profileTabHint": "Maintain share, credit, rebate, and risk tags here. Use Account & status for login name and password.",
"saveProfile": "Save share & credit",
"searchPlaceholder": "Search name or login",
"selectAgent": "Select an agent to view share & credit",
"selectAgentHint": "Settlement boundaries follow the agent tree; share, credit and rebate are configured per node.",
"selfAgentOverviewHint": "Credit below is allocated by your upline. Share and rebate are maintained upstream; this account cannot view or edit them.",
"shareRebateCap": "Rebate cap {{rate}}%",
"sidebarAvailableCredit": "Available to grant {{amount}}",
"sidebarShareRate": "Share {{rate}}%",
"stepDownline": "Manage direct downline ({{count}} now)",
"stepPlayers": "Create or maintain direct players",
"stepProfile": "Configure share, credit, and rebate",
"tabDownline": "Downline",
"tabOverview": "Overview",
"tabPlayers": "Players",
"tabProfileShort": "Share & credit",
"openInTree": "Open in tree",
"createDirectPlayer": "Create direct player",
"createDownline": "Create child agent",
"editDownline": "Edit agent",
"deleteDownline": "Delete agent",
"addChildUnavailableHint": "This agent has not enabled \"Allow creating sub-agents\". Adjust the agent profile first.",
"addChildNoPermissionHint": "Your account does not have permission to create sub-agents on this node.",
"lineRootProfileReadOnlyHint": "Level-1 agent share, site credit, and rebate are configured by the platform super admin. You can grant credit to downline agents and players.",
"tabProfile": "Share & credit",
"tabProfileReadOnly": "Share & credit (read-only)",
"viewAll": "View all"
},
"listFlatHint": "All operating agents in a flat list. Use row actions to add a child under a specific agent.",
"listSearch": "Search name / code / login",
"viewModes": {
"label": "View",
"tree": "Tree",
"list": "List"
},
"listTitle": "Agents",
"loadFailed": "Failed to load agent tree",
"modelGuide": "Agent layer controls data scope and delegation ceiling. Account permissions are assigned through roles.",
"name": "Name",
"namePlaceholder": "Enter agent name",
"nameRequired": "Agent name is required",
"noAccess": "You do not have permission to manage agents. Contact an administrator.",
"pageGuide": "Manage the agent tree, agent roles, agent accounts, and delegation ceilings here. Platform accounts and platform roles stay in platform governance pages.",
"parentAgent": "Parent",
"passwordMinLength": "Password must be at least 6 characters",
"passwordOptionalHint": "Leave empty to keep unchanged, or enter a 6-character password",
"passwordPlaceholder": "Enter a 6-character password",
"passwordRequired": "Password is required",
"path": "Path",
"playersPanel": {
"allUnderSite": "Players visible on this site",
"authSource": "Auth source",
"availableToGrant": "Agent available to grant: {{amount}}",
"create": "Create player",
"createSuccessNative": "Player {{name}} created — use lottery /login",
"creditLimit": "Credit limit",
"creditLimitAvailable": "Credit limit / available",
"creditLimitExceeded": "Credit limit cannot exceed this agents available grant",
"creditLimitInvalid": "Credit limit must be an integer ≥ 0",
"creditListHint": "Credit line: below shows player credit limits and available credit, not main-site wallet balance.",
"externalIdHint": "Leave blank to auto-generate",
"externalIdOptional": "External ID (optional)",
"filterHint": "Filter direct players by parent agent.",
"fundingMode": "Funding mode",
"initialPassword": "Initial password",
"loginRequired": "Enter login username and initial password",
"loginUsername": "Login username",
"passwordHint": "at least 6 characters",
"passwordMinLength": "Initial password must be at least 6 characters",
"playerRef": "Player ref",
"rebateInherited": "Inherit agent default rebate",
"rebateRate": "Rebate rate (%)",
"rebateRateHint": "Enter percent, e.g. 5 = 5%",
"rebateRateInvalid": "Rebate rate must be between 0 and 100%",
"riskTags": "Risk tags",
"riskTagsPlaceholder": "Comma-separated",
"scopedTo": "Direct players: {{agent}}",
"siteCode": "Line site",
"usernameNickname": "Username / nickname",
"searchPh": "Search player account / ID",
"manageSettlement": "Process bill",
"noPendingBillsGoCenter": "No pending bills for this player. Opened settlement center.",
"billingLoadFailed": "Failed to load bills"
},
"profile": {
"availableCredit": "Available to grant {{amount}}",
"canCreateChildAgent": "Allow creating sub-agents",
"canCreatePlayer": "Allow creating players",
"canGrantExtraRebate": "Allow extra rebate",
"capabilityHint": "Takes effect on this agents primary account after save. If the platform Agent role included player/node management, login permissions are now tightened by these switches.",
"creditLimit": "Credit limit",
"cycleDaily": "Daily",
"cycleMonthly": "Monthly",
"cycleWeekly": "Weekly",
"defaultPlayerRebate": "Default player rebate (%)",
"loadFailed": "Failed to load share and credit settings. Close and try again.",
"loading": "Loading share and credit settings…",
"loadingBlocked": "Share and credit settings are still loading. Please wait before saving.",
"parentCaps": "Parent share {{share}}%, available to grant {{credit}}",
"rebateLimit": "Rebate ceiling (%)",
"relativeShareRate": "Share rate (% of parent)",
"relativeShareRateValue": "{{rate}}% of parent",
"actualShareRate": "Effective share {{rate}}%",
"relativeShareCapHint": "Up to 100% of parent (parent total share {{parent}}%)",
"riskTags": "Risk tags",
"riskTagsPlaceholder": "Comma-separated, e.g. overdue, high_turnover",
"saveSuccess": "Share and credit settings saved",
"section": "Share & credit",
"settlementCycle": "Settlement cycle",
"totalShareRate": "Share rate (%)",
"validation": {
"creditBelowAllocated": "Credit limit cannot be below allocated credit (minimum {{min}})",
"creditExceedsParentWithMax": "Credit limit cannot exceed {{max}}",
"creditInvalid": "Credit limit cannot be negative",
"defaultExceedsLimit": "Default player rebate cannot exceed the rebate ceiling",
"defaultExceedsLimitWithMax": "Default player rebate cannot exceed {{max}}%",
"shareExceedsParent": "Share rate cannot exceed parent (max {{max}}%)",
"rebateExceedsParent": "Rebate ceiling cannot exceed parent (max {{max}}%)",
"defaultRebateRange": "Default player rebate must be between 0 and 100%",
"rebateLimitRange": "Rebate ceiling must be between 0 and 100%",
"shareRange": "Share rate must be between 0 and 100"
}
},
"roles": {
"create": "Create role",
"createSuccess": "Created role {{name}}",
"deleteSuccess": "Deleted role {{name}}",
"groupSelectedCount": "{{selected}} / {{total}}",
"inUse": "{{count}} in use",
"noAssignablePermissions": "No permissions available to assign",
"permissionSaveSuccess": "Permissions updated",
"permissionSubsetHint": "Only permissions you hold can be assigned",
"permissions": "Permissions",
"readOnlyTemplate": "Read-only template",
"selectGroup": "Select all in group",
"selectedCount": "{{selected}} / {{total}} selected",
"slug": "Slug",
"title": "Agent roles",
"updateSuccess": "Updated role {{name}}",
"userCount": "Users"
},
"saveFailed": "Save failed",
"selectNode": "Select an agent node from the tree",
"settlementBills": {
"allPeriods": "All periods",
"clearPeriodFilter": "Show all periods",
"columns": {
"counterparty": "Counterparty",
"grossWinLoss": "Win/Loss",
"id": "ID",
"net": "Net",
"party": "Party",
"period": "Period",
"status": "Status",
"type": "Type",
"unpaid": "Unpaid"
},
"confirm": "Confirm bill",
"confirmed": "Confirmed",
"description": "Bills appear after a period is closed; latest period is selected by default.",
"detail": "Details",
"emptyNoClosed": "No closed period yet. Bills are generated after close.",
"emptyNoPeriodsAgent": "No bills yet. Your upline or platform will close periods; you do not need to enter dates.",
"emptyNoPeriodsManage": "No periods or bills yet. Use quick presets under Period management, then close the period.",
"filteredByPeriod": "Showing bills for period #{{id}} only",
"filteredByPeriodRange": "Bills for {{range}}",
"grossWinLoss": "Win/Loss (gross_win_loss)",
"paid": "Payment recorded",
"paymentAmount": "Payment amount",
"periodLabel": "Period",
"periodPlaceholder": "Select period",
"platform": "Platform",
"platformRounding": "Platform rounding",
"rebateAmount": "Rebate",
"recordPayment": "Record payment",
"shareProfit": "Share profit",
"subtreeSummary": "Subtree summary",
"title": "Agent bills",
"typeAgent": "Agent bill",
"typePlayer": "Player bill"
},
"settlementPeriods": {
"close": "Close period and generate bills",
"closeFailed": "Failed to close period",
"closed": "Period closed; bills generated",
"datesRequired": "Enter start and end dates",
"empty": "No periods yet. Choose a quick preset and open a period.",
"end": "End",
"endDate": "End date",
"hideAdvanced": "Hide custom dates",
"invalidRange": "End date cannot be before start date",
"manageHint": "Open and close periods here; bills above update automatically. Quick presets are usually enough.",
"manageTitle": "Period management",
"open": "Open period",
"openFailed": "Failed to open period",
"openHint": "Local dates ({{tz}})",
"openWithPreset": "Apply quick preset",
"opened": "Period opened",
"presetHint": "Quick period presets (recommended)",
"presetLastWeek": "Last week",
"presetThisMonth": "This month",
"presetThisWeek": "This week",
"range": "Period",
"showAdvanced": "Custom start/end dates",
"start": "Start",
"startDate": "Start date",
"status": "Status",
"statusClosed": "Closed",
"statusOpen": "Open",
"title": "Agent periods",
"viewBills": "Bills"
},
"settlementReports": {
"columns": {
"agentId": "Agent ID",
"allocated": "Allocated",
"amount": "Amount",
"available": "Available",
"billId": "Bill",
"billType": "Type",
"code": "Code",
"count": "Count",
"creditLimit": "Credit limit",
"drawNo": "Draw no.",
"frozen": "Frozen",
"gameType": "Play",
"grossWinLoss": "Win/Loss",
"name": "Name",
"overdueDays": "Overdue days",
"player": "Player",
"rebate": "Rebate",
"rebateType": "Rebate type",
"status": "Status",
"unpaid": "Unpaid",
"used": "Used"
},
"credit": {
"agents": "Agent credit",
"players": "Player credit"
},
"description": "Report set: player win/loss, agent share, rebate, credit, unpaid/overdue bills, and platform P/L.",
"footnote": "These reports use credit-line period semantics, not legacy wallet commission/rebate reports.",
"noPeriodHint": "When no specific period is selected, the last 7 days are used. Platform P/L requires a period.",
"platformPnl": {
"billNet": "Platform bill net",
"periodRequired": "Select a specific period to view platform P/L.",
"rounding": "Rounding adjustment",
"shareProfit": "Share profit (metadata)"
},
"rebate": {
"accrued": "Accrued",
"allocated": "Allocated",
"inBill": "In bill",
"settled": "Settled"
},
"summary": {
"billCount": "Bill count",
"overdueCount": "Overdue bills",
"platformRounding": "Total platform rounding",
"totalNet": "Total net",
"totalUnpaid": "Total unpaid"
},
"title": "Period reports (credit share line)",
"type": "Report type",
"types": {
"agent_share": "Agent share",
"credit": "Credit",
"draw_period": "By draw",
"overdue": "Overdue",
"platform_pnl": "Platform P/L",
"player_win_loss": "Player win/loss",
"rebate": "Rebate",
"summary": "Summary",
"unpaid_bills": "Unpaid bills"
}
},
"siteSearch": "Search site name",
"sitesListHint": "For integration keys and callbacks, go to",
"sitesListLink": "Config · Connected sites",
"status": "Status",
"subnav": {
"label": "Agent management navigation",
"noPermission": "No permission",
"operations": "Line & agent tree",
"provision": "Provision level-1 agent",
"provisionHint": "One-time onboarding; use Line & agent tree for daily work",
"settlementBills": "Periods & bills"
},
"summary": {
"currentSiteAgents": "Current site operating agents",
"currentSiteNodes": "Current site nodes",
"enabledAgents": "Enabled operating agents",
"globalAgents": "All-site operating agents",
"globalNodes": "All-site node total",
"rootNodes": "Root node count",
"visibleAgents": "Current visible operating agents",
"visibleList": "Current flat list rows"
},
"tabs": {
"accounts": "Primary account",
"delegation": "Delegation ceiling",
"overview": "Overview",
"players": "Players",
"roles": "Roles",
"subordinates": "Subordinates",
"users": "Accounts"
},
"title": "Agent management",
"treeTitle": "Agent tree",
"updateSuccess": "Updated {{name}}",
"usernamePlaceholder": "Enter login username",
"usernameRequired": "Login name is required",
"usernameInvalidCharset": "Login name may only contain letters, digits, dots (.), underscores, and hyphens",
"users": {
"create": "Create account",
"createSuccess": "Created account {{name}}",
"deleteConfirm": "This admin will no longer be able to sign in. This cannot be undone.",
"deleteSuccess": "Deleted account {{name}}",
"email": "Email",
"password": "Password",
"roleSaveSuccess": "Roles updated for {{name}}",
"roles": "Roles",
"title": "Agent accounts",
"username": "Username"
},
"viewDownline": "View sub-agents and players"
}