feat(i18n, config): enhance agent management localization and add settings/currencies hub cards
Some checks failed
lotteryadmin CI / build (push) Has been cancelled
Some checks failed
lotteryadmin CI / build (push) Has been cancelled
Added new agent-related translation keys across English, Nepali, and Chinese including agentCode, agentName, loginUsername, and detailTabs. Enhanced agent console hints for child creation permissions and line root profile read-only states. Added validation error messages for share/rebate parent limits and username charset validation. Introduced common status labels (enabled/disabled) and yes/no/none text
This commit is contained in:
@@ -4,6 +4,9 @@
|
||||
"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}}",
|
||||
@@ -29,6 +32,7 @@
|
||||
"deleteSuccess": "Deleted agent {{name}}",
|
||||
"depth": "Depth",
|
||||
"detailTitle": "Node details",
|
||||
"detailTabs": "Agent details",
|
||||
"directoryStatus": {
|
||||
"all": "All statuses",
|
||||
"disabled": "Disabled only",
|
||||
@@ -78,6 +82,7 @@
|
||||
"downlineEmptyShort": "No direct downline yet.",
|
||||
"downlineEmptyTitle": "No direct downline yet",
|
||||
"editAccount": "Account & status",
|
||||
"editAgent": "Edit agent",
|
||||
"editCurrent": "Edit this agent",
|
||||
"expand": "Expand",
|
||||
"kicker": "Credit share · Agent tree",
|
||||
@@ -107,6 +112,13 @@
|
||||
"tabDownline": "Downline",
|
||||
"tabOverview": "Overview",
|
||||
"tabPlayers": "Players",
|
||||
"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"
|
||||
@@ -187,6 +199,9 @@
|
||||
"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"
|
||||
@@ -381,6 +396,7 @@
|
||||
"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}}",
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
"done": "Done",
|
||||
"exportExcel": "Export Excel",
|
||||
"save": "Save changes",
|
||||
"saving": "Saving…",
|
||||
"updateSuccess": "Updated successfully",
|
||||
"updateFailed": "Update failed",
|
||||
"updatePassword": "Update password"
|
||||
@@ -110,7 +111,15 @@
|
||||
"noResource": "No resources",
|
||||
"noData": "No resources",
|
||||
"loading": "Loading…",
|
||||
"comingSoon": "Feature under development"
|
||||
"comingSoon": "Feature under development",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"none": "None"
|
||||
},
|
||||
"status": {
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"label": "Status"
|
||||
},
|
||||
"integrationSites": {
|
||||
"emptyPlatformHint": "No integration sites yet. Create a site before managing agents, players, or settlement.",
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
"description": "Jump to play rules, odds & rebate, jackpot, and risk cap by domain. The sidebar provides direct links; this page is an overview.",
|
||||
"integrationDesc": "site_code, JWT secrets, partner wallet URL, iframe allowlist",
|
||||
"integrationTitle": "Integration sites",
|
||||
"currenciesDesc": "Manage supported currencies and precision",
|
||||
"currenciesTitle": "Currencies",
|
||||
"jackpotDesc": "Pool parameters and ledger records",
|
||||
"jackpotTitle": "Jackpot",
|
||||
"oddsDesc": "Odds matrix and base rebate in one version stream",
|
||||
@@ -62,6 +64,8 @@
|
||||
"playsTitle": "Play rules",
|
||||
"riskCapDesc": "Per-number payout caps and occupancy",
|
||||
"riskCapTitle": "Risk cap rules",
|
||||
"settingsDesc": "Payout, rebate, and other system-level parameters",
|
||||
"settingsTitle": "System settings",
|
||||
"title": "Operations configuration"
|
||||
},
|
||||
"integrationSites": {
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
"bindAccountPasswordRequired": "This agent has no login account yet. Enter an initial password.",
|
||||
"childrenCount": "प्रत्यक्ष अधीनस्थ",
|
||||
"code": "Code",
|
||||
"agentCode": "एजेन्ट कोड",
|
||||
"agentName": "एजेन्ट नाम",
|
||||
"loginUsername": "लगइन नाम",
|
||||
"codeRequired": "Code and name are required",
|
||||
"createChild": "Add child agent",
|
||||
"createSuccess": "Created agent {{name}}",
|
||||
@@ -29,6 +32,7 @@
|
||||
"deleteSuccess": "Deleted agent {{name}}",
|
||||
"depth": "Depth",
|
||||
"detailTitle": "Node details",
|
||||
"detailTabs": "एजेन्ट विवरण",
|
||||
"directoryStatus": {
|
||||
"all": "सबै स्थिति",
|
||||
"disabled": "निष्क्रिय मात्र",
|
||||
@@ -66,6 +70,8 @@
|
||||
"directChildren": "प्रत्यक्ष अधीनस्थ {{count}}",
|
||||
"downlineEmptyTitle": "अहिले प्रत्यक्ष अधीनस्थ छैन",
|
||||
"editAccount": "खाता र स्थिति",
|
||||
"editAgent": "एजेन्ट सम्पादन",
|
||||
"editCurrent": "यो एजेन्ट सम्पादन",
|
||||
"kicker": "क्रेडिट शेयर · एजेन्ट ट्री",
|
||||
"noDelegatedTabs": "यो एजेन्टले अधीनस्थ एजेन्ट वा खेलाडी सिर्जना गर्न सक्दैन; शेयर र क्रेडिट मात्र लागू हुन्छ।",
|
||||
"overviewDownlineCard": "प्रत्यक्ष अधीनस्थ एजेन्ट हेर्नुहोस् र व्यवस्थापन गर्नुहोस्",
|
||||
@@ -81,6 +87,13 @@
|
||||
"tabDownline": "अधीनस्थ",
|
||||
"tabOverview": "अवलोकन",
|
||||
"tabPlayers": "खेलाडी",
|
||||
"createDirectPlayer": "प्रत्यक्ष खेलाडी सिर्जना",
|
||||
"createDownline": "चाइल्ड एजेन्ट सिर्जना",
|
||||
"editDownline": "एजेन्ट सम्पादन",
|
||||
"deleteDownline": "एजेन्ट मेटाउनुहोस्",
|
||||
"addChildUnavailableHint": "यो एजेन्टले अधीनस्थ एजेन्ट सिर्जना अनुमति दिएको छैन। पहिले एजेन्ट प्रोफाइल मिलाउनुहोस्।",
|
||||
"addChildNoPermissionHint": "तपाईंको खातासँग यो नोडमा चाइल्ड एजेन्ट सिर्जनाको अनुमति छैन।",
|
||||
"lineRootProfileReadOnlyHint": "प्रथम-स्तर एजेन्टको शेयर, साइट क्रेडिट र रिबेट प्लेटफर्म सुपर एडमिनले कन्फिग गर्छ। तपाईंले अधीनस्थ एजेन्ट र खेलाडीलाई क्रेडिट दिन सक्नुहुन्छ।",
|
||||
"tabProfile": "शेयर र क्रेडिट",
|
||||
"tabProfileReadOnly": "शेयर र क्रेडिट (पढ्न मात्र)",
|
||||
"viewAll": "सबै हेर्नुहोस्"
|
||||
@@ -140,6 +153,9 @@
|
||||
"creditExceedsParentWithMax": "क्रेडिट सीमा {{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 1",
|
||||
"rebateLimitRange": "Rebate ceiling must be between 0 and 1",
|
||||
"shareRange": "Share rate must be between 0 and 100"
|
||||
@@ -234,6 +250,7 @@
|
||||
"updateSuccess": "Updated {{name}}",
|
||||
"usernamePlaceholder": "लगइन नाम प्रविष्ट गर्नुहोस्",
|
||||
"usernameRequired": "Login name is required",
|
||||
"usernameInvalidCharset": "लगइन नाममा अक्षर, अंक, थोप्लो (.), अन्डरस्कोर र हाइफन मात्र हुन सक्छ",
|
||||
"users": {
|
||||
"create": "Create account",
|
||||
"createSuccess": "Created account {{name}}",
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
"reset": "रिसेट",
|
||||
"reviewNow": "अहिले समीक्षा गर्नुहोस्",
|
||||
"save": "परिवर्तन सुरक्षित गर्नुहोस्",
|
||||
"saving": "सुरक्षित हुँदैछ…",
|
||||
"search": "खोज",
|
||||
"submitting": "पेश हुँदैछ...",
|
||||
"updateFailed": "अद्यावधिक असफल भयो",
|
||||
@@ -229,7 +230,15 @@
|
||||
"comingSoon": "सुविधा विकासमा छ",
|
||||
"loading": "लोड हुँदैछ…",
|
||||
"noData": "स्रोत छैन",
|
||||
"noResource": "स्रोत छैन"
|
||||
"noResource": "स्रोत छैन",
|
||||
"yes": "हो",
|
||||
"no": "होइन",
|
||||
"none": "छैन"
|
||||
},
|
||||
"status": {
|
||||
"enabled": "सक्रिय",
|
||||
"disabled": "निष्क्रिय",
|
||||
"label": "स्थिति"
|
||||
},
|
||||
"table": {
|
||||
"actions": "कार्य",
|
||||
|
||||
@@ -54,6 +54,8 @@
|
||||
"description": "खेल नियम, बाधा/रिबेट, Jackpot र क्याप क्षेत्रअनुसार खोल्नुहोस्। साइडबारबाट सिधा जान सकिन्छ; यो पृष्ठ सारांश हो।",
|
||||
"integrationDesc": "site_code, JWT गोप्य, पार्टनर वालेट URL र iframe श्वेतसूची",
|
||||
"integrationTitle": "मुख्य साइट एकीकरण",
|
||||
"currenciesDesc": "समर्थित मुद्रा र परिशुद्धता व्यवस्थापन",
|
||||
"currenciesTitle": "मुद्रा व्यवस्थापन",
|
||||
"jackpotDesc": "पूल प्यारामिटर र लेजर",
|
||||
"jackpotTitle": "Jackpot",
|
||||
"oddsDesc": "बाधा म्याट्रिक्स र रिबेट, एउटै संस्करण",
|
||||
@@ -62,6 +64,8 @@
|
||||
"playsTitle": "खेल नियम",
|
||||
"riskCapDesc": "नम्बर क्याप र ओगट उपस्थिति",
|
||||
"riskCapTitle": "जोखिम क्याप",
|
||||
"settingsDesc": "भुक्तानी, रिबेट र अन्य प्रणाली-स्तर प्यारामिटर",
|
||||
"settingsTitle": "प्रणाली सेटिङ",
|
||||
"title": "सञ्चालन कन्फिगरेसन अवलोकन"
|
||||
},
|
||||
"integrationSites": {
|
||||
|
||||
@@ -28,6 +28,13 @@
|
||||
"overviewPlayersSummary": "玩家管理",
|
||||
"tabDownline": "直属下级",
|
||||
"tabPlayers": "直属玩家",
|
||||
"createDirectPlayer": "创建直属玩家",
|
||||
"createDownline": "创建下级代理",
|
||||
"editDownline": "编辑代理",
|
||||
"deleteDownline": "删除代理",
|
||||
"addChildUnavailableHint": "当前代理未开启“允许创建下级代理”,如需新增请先调整该代理配置。",
|
||||
"addChildNoPermissionHint": "当前账号没有为该节点创建下级代理的权限。",
|
||||
"lineRootProfileReadOnlyHint": "一级代理的占成、站点授信总额与回水由平台超管配置;您可向直属下级代理与玩家下放额度。",
|
||||
"playersUnavailableHint": "当前代理未开启“允许创建玩家”,如需新增请先调整该代理配置。",
|
||||
"playersNoPermissionHint": "当前账号没有该节点的玩家管理权限。",
|
||||
"downlineColumns": {
|
||||
@@ -35,6 +42,7 @@
|
||||
"downlineCount": "下级数"
|
||||
},
|
||||
"editAccount": "账号与状态",
|
||||
"editAgent": "编辑代理",
|
||||
"editCurrent": "编辑本代理",
|
||||
"saveProfile": "保存占成与授信",
|
||||
"profileTabHint": "占成、授信、回水与风控标签在此维护;登录名与密码请用「账号与状态」。",
|
||||
@@ -85,6 +93,7 @@
|
||||
"listFlatHint": "列表平铺展示所有经营代理;添加下级请使用行内「添加下级代理」。",
|
||||
"addChildNeedParent": "请先在「上级代理」中选择要为谁添加下级",
|
||||
"detailTitle": "代理详情",
|
||||
"detailTabs": "代理详情",
|
||||
"selectNode": "请选择代理",
|
||||
"loadFailed": "加载代理列表失败",
|
||||
"lineFilter": "一级代理",
|
||||
@@ -105,6 +114,9 @@
|
||||
"users": "仍有 {{count}} 个账号需先处理"
|
||||
},
|
||||
"code": "编码",
|
||||
"agentCode": "代理编码",
|
||||
"agentName": "代理名称",
|
||||
"loginUsername": "登录名",
|
||||
"name": "名称",
|
||||
"namePlaceholder": "请输入代理名称",
|
||||
"depth": "层级",
|
||||
@@ -118,6 +130,7 @@
|
||||
"codeRequired": "请填写代理名称和登录名",
|
||||
"nameRequired": "请填写代理名称",
|
||||
"usernameRequired": "请填写登录名",
|
||||
"usernameInvalidCharset": "登录名只能使用字母、数字、点(.)、下划线和连字符",
|
||||
"passwordRequired": "请填写密码",
|
||||
"passwordMinLength": "密码至少 8 位",
|
||||
"bindAccountPasswordRequired": "该代理尚未绑定登录账号,请填写初始密码以创建账号",
|
||||
@@ -162,7 +175,10 @@
|
||||
"creditExceedsParentWithMax": "授信额度不能超过 {{max}}",
|
||||
"rebateLimitRange": "回水上限须在 0–100% 之间",
|
||||
"defaultRebateRange": "默认玩家回水须在 0–100% 之间",
|
||||
"defaultExceedsLimit": "默认玩家回水不能超过回水上限"
|
||||
"defaultExceedsLimit": "默认玩家回水不能超过回水上限",
|
||||
"defaultExceedsLimitWithMax": "默认玩家回水不能超过 {{max}}%",
|
||||
"shareExceedsParent": "实际占成不能超过上级(最高 {{max}}%)",
|
||||
"rebateExceedsParent": "回水上限不能超过上级(最高 {{max}}%)"
|
||||
},
|
||||
"riskTags": "风控标签",
|
||||
"riskTagsPlaceholder": "逗号分隔,如 overdue, high_turnover",
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
"done": "完成",
|
||||
"exportExcel": "导出 Excel",
|
||||
"save": "保存修改",
|
||||
"saving": "保存中…",
|
||||
"updateSuccess": "更新成功",
|
||||
"updateFailed": "更新失败",
|
||||
"updatePassword": "更新密码"
|
||||
@@ -110,7 +111,15 @@
|
||||
"noResource": "暂无资源",
|
||||
"noData": "暂无资源",
|
||||
"loading": "加载中…",
|
||||
"comingSoon": "功能开发中"
|
||||
"comingSoon": "功能开发中",
|
||||
"yes": "是",
|
||||
"no": "否",
|
||||
"none": "无"
|
||||
},
|
||||
"status": {
|
||||
"enabled": "启用",
|
||||
"disabled": "停用",
|
||||
"label": "状态"
|
||||
},
|
||||
"integrationSites": {
|
||||
"emptyPlatformHint": "暂无接入站点。请先创建站点,再进行代理、玩家、结算等业务操作。",
|
||||
|
||||
@@ -32,7 +32,11 @@
|
||||
"riskCapTitle": "限额版本",
|
||||
"riskCapDesc": "号码赔付封顶与占用视图",
|
||||
"integrationTitle": "接入站点",
|
||||
"integrationDesc": "site_code、JWT 密钥、主站钱包 URL 与 iframe 白名单"
|
||||
"integrationDesc": "site_code、JWT 密钥、主站钱包 URL 与 iframe 白名单",
|
||||
"settingsTitle": "系统设置",
|
||||
"settingsDesc": "开奖赔付、回水等系统级参数",
|
||||
"currenciesTitle": "币种管理",
|
||||
"currenciesDesc": "维护支持的币种与精度"
|
||||
},
|
||||
"integrationSites": {
|
||||
"title": "接入站点",
|
||||
|
||||
@@ -6,7 +6,7 @@ import { ChevronRight } from "lucide-react";
|
||||
|
||||
import { ModuleScaffold } from "@/components/admin/module-scaffold";
|
||||
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
|
||||
import { PRD_INTEGRATION_ACCESS_ANY } from "@/lib/admin-prd";
|
||||
import { PRD_INTEGRATION_ACCESS_ANY, PRD_SETTINGS_ACCESS_ANY, PRD_CURRENCY_MANAGE } from "@/lib/admin-prd";
|
||||
import { useAdminProfile } from "@/stores/admin-session";
|
||||
import { adminHasAnyPermission } from "@/lib/admin-permissions";
|
||||
|
||||
@@ -48,6 +48,18 @@ const HUB_CARDS: HubCard[] = [
|
||||
descKey: "hub.integrationDesc",
|
||||
requiredAny: PRD_INTEGRATION_ACCESS_ANY,
|
||||
},
|
||||
{
|
||||
href: "/admin/settings",
|
||||
titleKey: "hub.settingsTitle",
|
||||
descKey: "hub.settingsDesc",
|
||||
requiredAny: PRD_SETTINGS_ACCESS_ANY,
|
||||
},
|
||||
{
|
||||
href: "/admin/currencies",
|
||||
titleKey: "hub.currenciesTitle",
|
||||
descKey: "hub.currenciesDesc",
|
||||
requiredAny: [PRD_CURRENCY_MANAGE],
|
||||
},
|
||||
];
|
||||
|
||||
export function ConfigHubScreen() {
|
||||
|
||||
Reference in New Issue
Block a user