diff --git a/src/app/error.tsx b/src/app/error.tsx index 134ac25..ab637fd 100644 --- a/src/app/error.tsx +++ b/src/app/error.tsx @@ -2,6 +2,7 @@ import { useEffect } from "react"; import Link from "next/link"; +import { useTranslation } from "react-i18next"; export default function AdminError({ error, @@ -10,15 +11,16 @@ export default function AdminError({ error: Error & { digest?: string }; reset: () => void; }): React.ReactElement { + const { t } = useTranslation(); useEffect(() => { console.error("[AdminError]", error); }, [error]); return (
-

页面加载失败

+

{t("error.pageLoadFailed")}

- 管理后台遇到意外错误,请重试或返回首页。 + {t("error.unexpectedError")}

{process.env.NODE_ENV === "development" ? (
@@ -31,10 +33,10 @@ export default function AdminError({
           onClick={reset}
           className="rounded-md border px-4 py-2 text-sm"
         >
-          重试
+          {t("actions.retry")}
         
         
-          返回首页
+          {t("error.backToHome")}
         
       
diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx index ec6e4c4..6970cd2 100644 --- a/src/app/not-found.tsx +++ b/src/app/not-found.tsx @@ -1,12 +1,16 @@ +"use client"; + import Link from "next/link"; +import { useTranslation } from "react-i18next"; export default function AdminNotFound(): React.ReactElement { + const { t } = useTranslation(); return (
-

页面不存在

-

请检查地址或返回管理后台首页。

+

{t("notFound.title")}

+

{t("notFound.description")}

- 返回首页 + {t("error.backToHome")}
); diff --git a/src/i18n/locales/en/agents.json b/src/i18n/locales/en/agents.json index f4a2e75..116cda1 100644 --- a/src/i18n/locales/en/agents.json +++ b/src/i18n/locales/en/agents.json @@ -289,19 +289,27 @@ "end": "End", "endDate": "End date", "hideAdvanced": "Hide custom dates", + "hintsFailed": "Failed to load opening suggestions", "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", + "markerOccupied": "Occupied period", + "markerPending": "Pending turnover", + "markerUnpaid": "Unsettled period", "open": "Open period", + "openDesc": "Select the start and end dates; gray strikethrough dates are occupied, amber dots indicate pending turnover, red dots at top-right indicate unsettled periods.", "openFailed": "Failed to open period", "openHint": "Local dates ({{tz}})", "openWithPreset": "Apply quick preset", "opened": "Period opened", + "overlapsOccupied": "The selected range overlaps with existing periods. Please avoid dates with gray strikethrough lines.", "presetHint": "Quick period presets (recommended)", "presetLastWeek": "Last week", "presetThisMonth": "This month", "presetThisWeek": "This week", "range": "Period", + "rangeHint": "Select a start date, then an end date. For a single-day period, click the same day twice.", + "rangeLabel": "Period range", "showAdvanced": "Custom start/end dates", "start": "Start", "startDate": "Start date", diff --git a/src/i18n/locales/en/common.json b/src/i18n/locales/en/common.json index 55ebb33..e63a0de 100644 --- a/src/i18n/locales/en/common.json +++ b/src/i18n/locales/en/common.json @@ -29,10 +29,16 @@ "exportExcel": "Export Excel", "save": "Save changes", "saving": "Saving…", + "retry": "Retry", + "cancel": "Cancel", "updateSuccess": "Updated successfully", "updateFailed": "Update failed", "updatePassword": "Update password" }, + "loading": "Loading…", + "submitting": "Submitting…", + "loadFailed": "Load failed", + "cancel": "Cancel", "accountSettings": "Account settings", "accountSettingsDesc": "Manage your profile and security settings.", "profileSettings": "Profile", @@ -115,7 +121,8 @@ "comingSoon": "Feature under development", "yes": "Yes", "no": "No", - "none": "None" + "none": "None", + "empty": "No data" }, "status": { "enabled": "Enabled", @@ -129,6 +136,16 @@ "errors": { "loadFailed": "Failed to load" }, + "error": { + "generic": "Operation failed, please try again later", + "pageLoadFailed": "Page load failed", + "unexpectedError": "The admin console encountered an unexpected error. Please retry or return to the homepage.", + "backToHome": "Back to home" + }, + "notFound": { + "title": "Page not found", + "description": "Please check the URL or return to the admin dashboard." + }, "permission": { "deniedTitle": "Access denied", "deniedDescription": "Your account does not have permission to open this page. Ask an administrator to assign the required role permissions." diff --git a/src/i18n/locales/en/config.json b/src/i18n/locales/en/config.json index f7e409c..ddbfa2a 100644 --- a/src/i18n/locales/en/config.json +++ b/src/i18n/locales/en/config.json @@ -429,6 +429,7 @@ "riskCap": { "actions": { "addSpecialCap": "+ Add special cap", + "addNumberCap": "+ Add number cap", "close": "Close", "exportCsv": "Export CSV", "filterPresets": "Filter presets…", @@ -509,6 +510,7 @@ }, "table": { "actions": "Actions", + "draw": "Draw", "capAmount": "Cap amount", "number": "Number", "ratio": "Ratio", diff --git a/src/i18n/locales/en/players.json b/src/i18n/locales/en/players.json index ca7655a..bf61be3 100644 --- a/src/i18n/locales/en/players.json +++ b/src/i18n/locales/en/players.json @@ -48,10 +48,12 @@ "defaultCurrency": "Default currency", "delete": "Delete", "deleteFailed": "Delete failed", + "deletePlayer": "Delete player", "deleteSuccess": "Deleted player {{name}}", "detailSubtitle": "{{site}} · {{sitePlayerId}} · ID {{playerId}}", "detailTitle": "Player details", "edit": "Edit", + "editPlayer": "Edit player", "editDialogDesc": "Edit player information.", "editDialogTitle": "Edit player", "filterAllSites": "All sites", @@ -76,6 +78,7 @@ "refresh": "Refresh", "riskTags": "Risk tags", "save": "Save", + "saveChanges": "Save changes", "saving": "Saving…", "scopeAgentLine": "Scope: {{site}} · agent line “{{name}}” and downstream players", "scopeAllSites": "Scope: all players on all sites (super admin)", diff --git a/src/i18n/locales/en/settlementCenter.json b/src/i18n/locales/en/settlementCenter.json index ad4b53f..5fb0a9e 100644 --- a/src/i18n/locales/en/settlementCenter.json +++ b/src/i18n/locales/en/settlementCenter.json @@ -206,7 +206,9 @@ "billType": { "adjustment": "Adjustment", "reversal": "Reversal", - "badDebt": "Bad debt write-off" + "badDebt": "Bad debt write-off", + "player": "Player bill", + "agent": "Agent bill" }, "adjustmentType": { "adjustment": "Adjustment", @@ -215,7 +217,8 @@ }, "paymentStatus": { "pending": "Pending", - "confirmed": "Confirmed" + "confirmed": "Confirmed", + "partial": "Partial" }, "actions": { "detail": "Detail", @@ -277,6 +280,11 @@ "rebateAllocTicket": "Ticket", "showRawRebateAllocations": "Show per-ticket detail ({{count}})", "hideRawRebateAllocations": "Hide per-ticket detail", + "billItems": "Bill items", + "billType": "Bill type", + "hideDetails": "Hide details", + "showDetails": "Show details", + "subBillCount": "Sub-bills", "payment": "Payment", "flowHint": { "playerPayAgent": "Player should settle with the direct agent", diff --git a/src/i18n/locales/ne/agents.json b/src/i18n/locales/ne/agents.json index 0e6a22b..65018ec 100644 --- a/src/i18n/locales/ne/agents.json +++ b/src/i18n/locales/ne/agents.json @@ -61,12 +61,12 @@ "title": "प्रथम-स्तर एजेन्ट सिर्जना", "username": "एडमिन लगइन", "walletUrl": "वालेट API URL (वैकल्पिक)", - "siteCode": "接入站点", - "siteCodePlaceholder": "选择站点", - "siteRequired": "请选择接入站点", - "noUnboundSite": "暂无未绑定一级代理的站点", - "openIntegrationSites": "前往接入站点", - "passwordHint": "至少 6 位" + "siteCode": "एकीकरण साइट", + "siteCodePlaceholder": "साइट चयन गर्नुहोस्", + "siteRequired": "एकीकरण साइट चयन गर्नुहोस्", + "noUnboundSite": "प्रथम-स्तर एजेन्ट नभएका साइटहरू छैनन्", + "openIntegrationSites": "एकीकरण साइटहरूमा जानुहोस्", + "passwordHint": "कम्तीमा ६ क्यारेक्टर" }, "lineUi": { "agentCount": "यो समूहमा {{count}} एजेन्ट", @@ -103,25 +103,25 @@ "tabProfile": "शेयर र क्रेडिट", "tabProfileReadOnly": "शेयर र क्रेडिट (पढ्न मात्र)", "viewAll": "सबै हेर्नुहोस्", - "tabProfileShort": "占成授信", - "profileReadOnlyHint": "占成、授信与回水由上级配置,如需调整请联系上级代理或平台。", - "selfAgentOverviewHint": "以下为上级为您分配的授信额度,占成与回水由上级在后台维护,本账号不可查看或修改。", - "overviewDownlineHint": "直属下级 {{count}} 个,可在「直属下级」Tab 管理。", - "playersUnavailableHint": "当前代理未开启“允许创建玩家”,如需新增请先调整该代理配置。", - "playersNoPermissionHint": "当前账号没有该节点的玩家管理权限。", - "parentMeta": "上级 {{name}}", - "profileTabHint": "占成、授信、回水与风控标签在此维护;登录名与密码请用「账号与状态」。", - "nextSteps": "建议操作", - "stepProfile": "配置占成、授信与回水", - "stepDownline": "管理直属下级(当前 {{count}} 个)", - "stepPlayers": "创建或维护直属玩家", - "downlineEmpty": "暂无直属下级。创建下级代理后将在此展示。", - "downlineEmptyShort": "暂无直属下级。", - "sidebarShareRate": "占成 {{rate}}%", - "sidebarAvailableCredit": "可下发 {{amount}}", - "expand": "展开", - "collapse": "收起", - "openInTree": "在树中打开", + "tabProfileShort": "शेयर र क्रेडिट", + "profileReadOnlyHint": "शेयर, क्रेडिट र रिबेट तपाईंको माथिल्लो एजेन्टले कन्फिगर गर्छ। परिवर्तनको लागि आफ्नो माथिल्लो एजेन्ट वा प्लेटफर्मलाई सम्पर्क गर्नुहोस्।", + "selfAgentOverviewHint": "तलको क्रेडिट तपाईंको माथिल्लो एजेन्टले बाँडेको हो। शेयर र रिबेट माथिल्लो तहले व्यवस्थापन गर्छ; यो खाताले हेर्न वा सम्पादन गर्न सक्दैन।", + "overviewDownlineHint": "{{count}} प्रत्यक्ष अधीनस्थ एजेन्ट(हरू)। तिनलाई «अधीनस्थ» ट्याबमा व्यवस्थापन गर्नुहोस्।", + "playersUnavailableHint": "यो एजेन्टले खेलाडी सिर्जना गर्न सक्दैन। पहिले एजेन्ट प्रोफाइलमा «खेलाडी सिर्जना अनुमति» सक्षम गर्नुहोस्।", + "playersNoPermissionHint": "यो खातासँग यो नोडमा खेलाडी व्यवस्थापन अनुमति छैन।", + "parentMeta": "माथिल्लो {{name}}", + "profileTabHint": "शेयर, क्रेडिट, रिबेट र जोखिम ट्याग यहाँ व्यवस्थापन गर्नुहोस्। लगइन नाम र पासवर्डको लागि «खाता र स्थिति» प्रयोग गर्नुहोस्।", + "nextSteps": "सुझावित अर्को कदम", + "stepProfile": "शेयर, क्रेडिट र रिबेट कन्फिगर गर्नुहोस्", + "stepDownline": "प्रत्यक्ष अधीनस्थ व्यवस्थापन गर्नुहोस् (अहिले {{count}})", + "stepPlayers": "प्रत्यक्ष खेलाडी सिर्जना वा व्यवस्थापन गर्नुहोस्", + "downlineEmpty": "अहिले प्रत्यक्ष अधीनस्थ छैन। चाइल्ड एजेन्ट सिर्जना पछि यहाँ देखिनेछ।", + "downlineEmptyShort": "अहिले प्रत्यक्ष अधीनस्थ छैन।", + "sidebarShareRate": "शेयर {{rate}}%", + "sidebarAvailableCredit": "दिन सकिने {{amount}}", + "expand": "विस्तार गर्नुहोस्", + "collapse": "संकुचित गर्नुहोस्", + "openInTree": "रूखमा खोल्नुहोस्", "downlineColumns": { "downlineCount": "अधीनस्थ संख्या", "email": "इमेल" @@ -165,23 +165,23 @@ "riskTags": "जोखिम ट्याग", "riskTagsPlaceholder": "अल्पविरामले छुट्याउनुहोस्", "scopedTo": "प्रत्यक्ष प्लेयर: {{agent}}", - "siteCode": "所属线路", - "passwordHint": "至少 6 位", - "passwordMinLength": "初始密码至少 6 位", - "creditLimitInvalid": "授信额度必须为不小于 0 的整数", - "creditLimitExceeded": "授信额度不能超过当前代理可下发额度", - "rebateRateInvalid": "回水比例须在 0–100% 之间", - "fundingMode": "资金模式", - "authSource": "登录来源", - "rebateInherited": "继承代理默认回水", - "creditListHint": "信用占成盘:下列为玩家授信额度与可用信用,非主站钱包余额。", - "playerRef": "玩家标识", - "usernameNickname": "用户名 / 昵称", - "creditLimitAvailable": "授信 / 可用", - "searchPh": "搜索玩家账号 / 标识", - "manageSettlement": "处理账单", - "noPendingBillsGoCenter": "该玩家暂无待处理账单,已打开结算中心。", - "billingLoadFailed": "加载账单失败" + "siteCode": "लाइन साइट", + "passwordHint": "कम्तीमा ६ क्यारेक्टर", + "passwordMinLength": "प्रारम्भिक पासवर्ड कम्तीमा ६ क्यारेक्टर हुनुपर्छ", + "creditLimitInvalid": "क्रेडिट सीमा ≥ ० को पूर्णांक हुनुपर्छ", + "creditLimitExceeded": "क्रेडिट सीमा यो एजेन्टको उपलब्ध रकमभन्दा बढी हुन सक्दैन", + "rebateRateInvalid": "रिबेट दर ०–१००% को बीचमा हुनुपर्छ", + "fundingMode": "कोष मोड", + "authSource": "प्रमाणीकरण स्रोत", + "rebateInherited": "एजेन्ट पूर्वनिर्धारित रिबेट प्रयोग गर्नुहोस्", + "creditListHint": "क्रेडिट लाइन: तल खेलाडीको क्रेडिट सीमा र उपलब्ध क्रेडिट देखाइएको छ, मुख्य साइट वालेट ब्यालेन्स होइन।", + "playerRef": "खेलाडी सन्दर्भ", + "usernameNickname": "प्रयोगकर्ता नाम / उपनाम", + "creditLimitAvailable": "क्रेडिट सीमा / उपलब्ध", + "searchPh": "खेलाडी खाता / ID खोज्नुहोस्", + "manageSettlement": "बिल प्रक्रिया गर्नुहोस्", + "noPendingBillsGoCenter": "यो खेलाडीको कुनै प्रक्रिया हुन बाँकी बिल छैन। सेटलमेन्ट केन्द्र खोलियो।", + "billingLoadFailed": "बिल लोड गर्न असफल" }, "profile": { "canCreateChildAgent": "अधीनस्थ एजेन्ट सिर्जना अनुमति", @@ -211,16 +211,16 @@ "rebateLimitRange": "रिबेट सीमा 0 र 1 को बीचमा हुनुपर्छ", "shareRange": "शेयर दर 0 र 100 को बीचमा हुनुपर्छ" }, - "relativeShareRate": "占成比例(占上级 %)", - "relativeShareRateValue": "占上级 {{rate}}%", - "actualShareRate": "实际占成 {{rate}}%", - "relativeShareCapHint": "占上级比例最高 100%(上级总占成 {{parent}}%)", - "capabilityHint": "保存后对该代理主账号生效;若平台「代理」角色含玩家/节点管理权限,此前仍可能可操作——现已按本开关自动收紧登录权限。", - "parentCaps": "上级占成 {{share}}%,可下发 {{credit}}", - "availableCredit": "可下发额度 {{amount}}", - "riskTags": "风控标签", - "riskTagsPlaceholder": "逗号分隔,如 overdue, high_turnover", - "saveSuccess": "占成与授信已保存" + "relativeShareRate": "शेयर दर (माथिल्लोको %)", + "relativeShareRateValue": "माथिल्लोको {{rate}}%", + "actualShareRate": "वास्तविक शेयर {{rate}}%", + "relativeShareCapHint": "माथिल्लोको अधिकतम १००% (माथिल्लो कुल शेयर {{parent}}%)", + "capabilityHint": "बचत पछि यो एजेन्टको प्राथमिक खातामा लागू हुन्छ। यदि प्लेटफर्म «एजेन्ट» भूमिकामा खेलाडी/नोड व्यवस्थापन अनुमति थियो भने, अब लगइन अनुमतिहरू यी स्विचहरूद्वारा कडा पारिन्छन्।", + "parentCaps": "माथिल्लो शेयर {{share}}%, दिन सकिने {{credit}}", + "availableCredit": "दिन सकिने {{amount}}", + "riskTags": "जोखिम ट्याग", + "riskTagsPlaceholder": "अल्पविरामले छुट्याउनुहोस्, जस्तै overdue, high_turnover", + "saveSuccess": "शेयर र क्रेडिट बचत भयो" }, "roles": { "create": "भूमिका सिर्जना गर्नुहोस्", @@ -235,10 +235,10 @@ "title": "एजेन्ट भूमिकाहरू", "updateSuccess": "भूमिका {{name}} अद्यावधिक भयो", "userCount": "प्रयोगकर्ताहरू", - "selectedCount": "已选 {{selected}} / {{total}} 项", - "groupSelectedCount": "已选 {{selected}} / {{total}}", - "selectGroup": "本组全选", - "noAssignablePermissions": "当前没有可分配权限" + "selectedCount": "{{selected}} / {{total}} चयन गरियो", + "groupSelectedCount": "{{selected}} / {{total}} चयन गरियो", + "selectGroup": "यो समूह सबै चयन गर्नुहोस्", + "noAssignablePermissions": "अहिले कुनै अनुमति उपलब्ध छैन" }, "saveFailed": "बचत गर्न असफल भयो", "selectNode": "रूखबाट एजेन्ट नोड चयन गर्नुहोस्", @@ -251,9 +251,9 @@ "status": "स्थिति", "type": "प्रकार", "unpaid": "बाँकी", - "party": "本方", - "counterparty": "对方", - "grossWinLoss": "输赢" + "party": "पक्ष", + "counterparty": "प्रतिपक्ष", + "grossWinLoss": "कुल नाफा/नोक्सान" }, "description": "अवधि बन्द पछि बनेका प्लेयर/एजेन्ट बिल", "emptyNoClosed": "बन्द अवधि छैन। बिल बन्द पछि सिर्जना हुन्छ।", @@ -265,20 +265,20 @@ "title": "एजेन्ट बिल", "typeAgent": "एजेन्ट बिल", "typePlayer": "खेलाडी बिल", - "platform": "平台", - "filteredByPeriod": "当前仅显示账期 #{{id}} 的账单", - "clearPeriodFilter": "显示全部账期", - "detail": "详情", - "confirm": "确认账单", - "confirmed": "已确认", - "paymentAmount": "收付金额", - "recordPayment": "登记收付", - "paid": "已登记收付", - "subtreeSummary": "子树汇总", - "grossWinLoss": "输赢 (gross_win_loss)", - "rebateAmount": "回水", - "shareProfit": "占成利润", - "platformRounding": "平台尾差" + "platform": "प्लेटफर्म", + "filteredByPeriod": "अहिले अवधि #{{id}} का बिलहरू मात्र देखाइँदै", + "clearPeriodFilter": "सबै अवधि देखाउनुहोस्", + "detail": "विवरण", + "confirm": "बिल पुष्टि गर्नुहोस्", + "confirmed": "पुष्टि भयो", + "paymentAmount": "भुक्तानी रकम", + "recordPayment": "भुक्तानी दर्ता गर्नुहोस्", + "paid": "भुक्तानी दर्ता भयो", + "subtreeSummary": "उप-रूख सारांश", + "grossWinLoss": "कुल नाफा/नोक्सान (gross_win_loss)", + "rebateAmount": "रिबेट", + "shareProfit": "शेयर नाफा", + "platformRounding": "प्लेटफर्म पूर्णांकन" }, "settlementPeriods": { "datesRequired": "सुरु र अन्त्य मिति प्रविष्ट गर्नुहोस्", @@ -295,21 +295,29 @@ "startDate": "सुरु मिति", "statusClosed": "बन्द", "statusOpen": "खुला", - "title": "代理账期", - "presetHint": "快捷账期(推荐)", - "openWithPreset": "填入快捷账期", - "showAdvanced": "自定义起止日期", - "hideAdvanced": "收起自定义日期", - "range": "账期", - "empty": "尚无账期,请选择快捷账期并开账。", - "start": "开始", - "end": "结束", - "status": "状态", - "close": "关账并生成账单", - "viewBills": "账单", - "opened": "账期已开启", - "closed": "账期已关账,账单已生成", - "closeFailed": "关账失败" + "title": "एजेन्ट अवधि", + "presetHint": "द्रुत अवधि (सिफारिस गरिन्छ)", + "openWithPreset": "द्रुत अवधि भर्नुहोस्", + "showAdvanced": "अनुकूल मिति दायरा", + "hideAdvanced": "अनुकूल मिति लुकाउनुहोस्", + "range": "अवधि", + "empty": "अहिले कुनै अवधि छैन। कृपया द्रुत अवधि चयन गरी अवधि खोल्नुहोस्।", + "start": "सुरु", + "end": "अन्त्य", + "status": "स्थिति", + "close": "अवधि बन्द गरी बिल सिर्जना गर्नुहोस्", + "viewBills": "बिलहरू", + "opened": "अवधि खोलियो", + "closed": "अवधि बन्द भयो, बिल सिर्जना भयो", + "closeFailed": "अवधि बन्द गर्न असफल", + "hintsFailed": "खोल्ने सुझाव लोड गर्न असफल", + "openDesc": "सुरु र अन्त्य मिति चयन गर्नुहोस्; खैरो स्ट्राइकथ्रु भएका मितिहरू अधिकृत अवधि हुन्, एम्बर बिन्दुहरू पेन्डिङ कारोबार हुन्, माथि-दायाँ रातो बिन्दुहरू नबुझिएको अवधि हुन्।", + "rangeLabel": "अवधि दायरा", + "rangeHint": "पहिले सुरु मिति चयन गर्नुहोस्, त्यसपछि अन्त्य मिति; एकल-दिन अवधिको लागि एउटै मिति दुई पटक क्लिक गर्नुहोस्।", + "markerOccupied": "अधिकृत अवधि", + "markerPending": "पेन्डिङ कारोबार", + "markerUnpaid": "नबुझिएको अवधि", + "overlapsOccupied": "चयन गरिएको दायरा अवस्थित अवधिसँग ओभरल्याप हुन्छ। कृपया खैरो स्ट्राइकथ्रु भएका मितिहरू नछान्नुहोस्।" }, "siteSearch": "साइट नाम खोज्नुहोस्", "sitesListHint": "कुञ्जी र कलब्याकको लागि", @@ -362,67 +370,67 @@ }, "viewDownline": "चाइल्ड एजेन्ट र खेलाडी हेर्नुहोस्", "settlementReports": { - "title": "账期报表(信用占成盘)", - "description": "§21.12 报表集:玩家输赢、代理占成、回水、授信、未结/逾期与平台盈亏。", - "type": "报表类型", - "footnote": "本组报表为信用占成盘账期口径,与「佣金/回水」旧钱包报表不同。", - "noPeriodHint": "未选具体账期时使用近 7 日区间;平台盈亏需选择账期。", + "title": "अवधि रिपोर्ट (क्रेडिट शेयर)", + "description": "§21.12 रिपोर्ट सेट: खेलाडी नाफा/नोक्सान, एजेन्ट शेयर, रिबेट, क्रेडिट, बाँकी/म्याद गुज्रिएको र प्लेटफर्म नाफा/नोक्सान।", + "type": "रिपोर्ट प्रकार", + "footnote": "यो रिपोर्ट समूह क्रेडिट शेयर अवधि दायरामा आधारित छ, पुरानो «कमिशन/रिबेट» वालेट रिपोर्टभन्दा फरक।", + "noPeriodHint": "कुनै विशेष अवधि चयन नगर्दा पछिल्लो ७ दिनको दायरा प्रयोग गरिन्छ; प्लेटफर्म नाफा/नोक्सानको लागि अवधि चयन आवश्यक छ।", "types": { - "summary": "摘要", - "player_win_loss": "玩家输赢", - "agent_share": "代理占成", - "rebate": "回水", - "credit": "授信", - "unpaid_bills": "未结账单", - "overdue": "逾期", - "platform_pnl": "平台盈亏", - "draw_period": "期号维度" + "summary": "सारांश", + "player_win_loss": "खेलाडी नाफा/नोक्सान", + "agent_share": "एजेन्ट शेयर", + "rebate": "रिबेट", + "credit": "क्रेडिट", + "unpaid_bills": "बाँकी बिलहरू", + "overdue": "म्याद गुज्रिएको", + "platform_pnl": "प्लेटफर्म नाफा/नोक्सान", + "draw_period": "ड्र अवधि" }, "summary": { - "billCount": "账单数", - "totalNet": "净额合计", - "totalUnpaid": "未结合计", - "overdueCount": "逾期账单", - "platformRounding": "平台尾差合计" + "billCount": "बिल संख्या", + "totalNet": "कुल नेट", + "totalUnpaid": "कुल बाँकी", + "overdueCount": "म्याद गुज्रिएको बिल", + "platformRounding": "कुल प्लेटफर्म पूर्णांकन" }, "rebate": { - "accrued": "应计", - "inBill": "已入账单", - "settled": "已结算", - "allocated": "已分摊" + "accrued": "उपार्जित", + "inBill": "बिलमा समावेश", + "settled": "सेटल भयो", + "allocated": "बाँडफाँड भयो" }, "credit": { - "agents": "代理授信", - "players": "玩家授信" + "agents": "एजेन्ट क्रेडिट", + "players": "खेलाडी क्रेडिट" }, "platformPnl": { - "periodRequired": "请选择具体账期后查看平台盈亏。", - "billNet": "平台账单净额", - "rounding": "尾差调整", - "shareProfit": "占成利润(元数据)" + "periodRequired": "कृपया प्लेटफर्म नाफा/नोक्सान हेर्नको लागि विशेष अवधि चयन गर्नुहोस्।", + "billNet": "प्लेटफर्म बिल नेट", + "rounding": "पूर्णांकन समायोजन", + "shareProfit": "शेयर नाफा (मेटाडेटा)" }, "columns": { - "player": "玩家", - "gameType": "玩法", - "grossWinLoss": "输赢", - "rebate": "回水", - "agentId": "代理 ID", - "count": "笔数", - "billId": "账单", - "billType": "类型", - "unpaid": "未结", - "status": "状态", - "overdueDays": "逾期天数", - "drawNo": "期号", - "code": "编码", - "name": "名称", - "creditLimit": "授信", - "allocated": "已下发", - "available": "可用", - "used": "已用", - "frozen": "冻结", - "rebateType": "回水类型", - "amount": "金额" + "player": "खेलाडी", + "gameType": "खेल प्रकार", + "grossWinLoss": "कुल नाफा/नोक्सान", + "rebate": "रिबेट", + "agentId": "एजेन्ट ID", + "count": "संख्या", + "billId": "बिल", + "billType": "प्रकार", + "unpaid": "बाँकी", + "status": "स्थिति", + "overdueDays": "म्याद गुज्रिएको दिन", + "drawNo": "ड्र नं.", + "code": "कोड", + "name": "नाम", + "creditLimit": "क्रेडिट", + "allocated": "बाँडिएको", + "available": "उपलब्ध", + "used": "प्रयोग भएको", + "frozen": "फ्रिज", + "rebateType": "रिबेट प्रकार", + "amount": "रकम" } } } diff --git a/src/i18n/locales/ne/common.json b/src/i18n/locales/ne/common.json index 7978387..68a973b 100644 --- a/src/i18n/locales/ne/common.json +++ b/src/i18n/locales/ne/common.json @@ -3,6 +3,7 @@ "accountSettingsDesc": "आफ्नो प्रोफाइल र सुरक्षा सेटिङ व्यवस्थापन गर्नुहोस्।", "actions": { "apply": "लागू गर्नुहोस्", + "cancel": "रद्द गर्नुहोस्", "clear": "खाली गर्नुहोस्", "close": "बन्द गर्नुहोस्", "create": "सिर्जना गर्नुहोस्", @@ -14,6 +15,7 @@ "logout": "लगआउट", "refresh": "रिफ्रेस", "reset": "रिसेट", + "retry": "पुनः प्रयास", "reviewNow": "अहिले समीक्षा गर्नुहोस्", "save": "परिवर्तन सुरक्षित गर्नुहोस्", "saving": "सुरक्षित हुँदैछ…", @@ -43,6 +45,7 @@ "checkingShort": "कार्यस्थान खोल्दै…", "sessionExpired": "लगइन समाप्त भयो। कृपया पुनः लगइन गर्नुहोस्।" }, + "cancel": "रद्द गर्नुहोस्", "confirm": { "cancel": "रद्द", "confirm": "पुष्टि गर्नुहोस्", @@ -68,6 +71,16 @@ "errors": { "loadFailed": "लोड असफल भयो" }, + "error": { + "generic": "कार्य असफल भयो, कृपया पछि पुनः प्रयास गर्नुहोस्", + "pageLoadFailed": "पृष्ठ लोड असफल", + "unexpectedError": "प्रशासन प्यानलमा अप्रत्याशित त्रुटि भयो। कृपया पुनः प्रयास गर्नुहोस् वा गृहपृष्ठमा फर्कनुहोस्।", + "backToHome": "गृहपृष्ठमा फर्कनुहोस्" + }, + "notFound": { + "title": "पृष्ठ फेला परेन", + "description": "कृपया ठेगाना जाँच गर्नुहोस् वा प्रशासन प्यानलमा फर्कनुहोस्।" + }, "export": { "adminRoles": { "filename": "bhumika-suchi", @@ -162,6 +175,8 @@ "title": "इन्टरफेस भाषा", "zh": "中文" }, + "loadFailed": "लोड असफल", + "loading": "लोड हुँदै…", "nav": { "account": "खाता सेटिङ", "admin_roles": "भूमिका व्यवस्थापन", @@ -232,13 +247,15 @@ "noResource": "स्रोत छैन", "yes": "हो", "no": "होइन", - "none": "छैन" + "none": "छैन", + "empty": "डाटा छैन" }, "status": { "enabled": "सक्रिय", "disabled": "निष्क्रिय", "label": "स्थिति" }, + "submitting": "पेश हुँदै…", "table": { "actions": "कार्य", "id": "ID" diff --git a/src/i18n/locales/ne/config.json b/src/i18n/locales/ne/config.json index 63d45ba..7df3fe0 100644 --- a/src/i18n/locales/ne/config.json +++ b/src/i18n/locales/ne/config.json @@ -80,11 +80,11 @@ "name": "नाम", "status": "स्थिति", "walletUrl": "वालेट API", - "currency": "币种", - "lineRoot": "一级代理", - "h5Url": "彩票 H5", - "ssoSecret": "SSO 密钥", - "walletApiKey": "钱包密钥" + "currency": "मुद्रा", + "lineRoot": "स्तर-१ एजेन्ट", + "h5Url": "लटरी H5", + "ssoSecret": "SSO गोप्य", + "walletApiKey": "वालेट API कुञ्जी" }, "connectivityDescription": "परीक्षण खेलाडीबाट साइट {{code}} को balance API कल गर्नुहोस्।", "connectivityFailed": "जडान असफल", @@ -172,10 +172,10 @@ "statusEnabled": "सक्रिय", "title": "मुख्य साइट एकीकरण साइटहरू", "updateSuccess": "साइट {{code}} अद्यावधिक भयो", - "lineRootBound": "已绑定", - "lineRootUnbound": "未绑定", - "secretNotConfigured": "尚未配置密钥", - "secretCopyRequiresManage": "需要接入站点管理权限才能复制密钥" + "lineRootBound": "बाँधिएको", + "lineRootUnbound": "बाँधिएको छैन", + "secretNotConfigured": "गोप्य कुञ्जी कन्फिगर गरिएको छैन", + "secretCopyRequiresManage": "गोप्य कुञ्जी प्रतिलिपि गर्न एकीकरण साइट व्यवस्थापन अनुमति आवश्यक छ" }, "nav": { "aria": "सञ्चालन कन्फिगरेसन उप-नेभिगेसन", @@ -429,6 +429,7 @@ "riskCap": { "actions": { "addSpecialCap": "+ विशेष क्याप थप्नुहोस्", + "addNumberCap": "+ नम्बर क्याप थप्नुहोस्", "close": "बन्द", "exportCsv": "CSV निर्यात", "filterPresets": "प्रिसेट फिल्टर…", @@ -509,6 +510,7 @@ }, "table": { "actions": "कार्य", + "draw": "ड्र", "capAmount": "क्याप रकम", "number": "नम्बर", "ratio": "अनुपात", diff --git a/src/i18n/locales/ne/players.json b/src/i18n/locales/ne/players.json index 71e2a1f..0d38a91 100644 --- a/src/i18n/locales/ne/players.json +++ b/src/i18n/locales/ne/players.json @@ -48,10 +48,12 @@ "defaultCurrency": "पूर्वनिर्धारित मुद्रा", "delete": "मेटाउनुहोस्", "deleteFailed": "मेटाउन असफल", + "deletePlayer": "खेलाडी मेटाउनुहोस्", "deleteSuccess": "खेलाडी {{name}} मेटाइयो", "detailSubtitle": "{{site}} · {{sitePlayerId}} · ID {{playerId}}", "detailTitle": "खेलाडी विवरण", "edit": "सम्पादन", + "editPlayer": "खेलाडी सम्पादन गर्नुहोस्", "editDialogDesc": "खेलाडी जानकारी सम्पादन गर्नुहोस्।", "editDialogTitle": "खेलाडी सम्पादन", "filterAllSites": "सबै साइट", @@ -74,6 +76,7 @@ "profileSection": "प्रोफाइल", "refresh": "रिफ्रेस", "save": "सुरक्षित गर्नुहोस्", + "saveChanges": "परिवर्तन सुरक्षित गर्नुहोस्", "saving": "सुरक्षित हुँदैछ…", "scopeAgentLine": "स्कोप: {{site}} · एजेन्ट लाइन “{{name}}” र अधीनस्थ खेलाडी", "scopeAllSites": "स्कोप: सबै साइटका सबै खेलाडी (सुपर एडमिन)", diff --git a/src/i18n/locales/zh/agents.json b/src/i18n/locales/zh/agents.json index ee256f0..d8fff97 100644 --- a/src/i18n/locales/zh/agents.json +++ b/src/i18n/locales/zh/agents.json @@ -325,7 +325,15 @@ "openFailed": "开账失败", "closeFailed": "关账失败", "datesRequired": "请填写账期起止日期", - "invalidRange": "结束日期不能早于开始日期" + "invalidRange": "结束日期不能早于开始日期", + "openDesc": "选择账期起止日期;灰色删除线为已有账期不可再开,琥珀点为待入账,右上角红点为未结清。", + "rangeLabel": "账期范围", + "rangeHint": "先选开始日期,再选结束日期;单日账期可点同一天两次。", + "markerOccupied": "已有账期", + "markerPending": "待入账流水", + "markerUnpaid": "未结清账期", + "overlapsOccupied": "所选范围与已有账期重叠,请避开灰色删除线的日期。", + "hintsFailed": "无法加载开账建议" }, "lineProvision": { "title": "创建一级代理", diff --git a/src/i18n/locales/zh/common.json b/src/i18n/locales/zh/common.json index 4d075bc..9eec73a 100644 --- a/src/i18n/locales/zh/common.json +++ b/src/i18n/locales/zh/common.json @@ -31,8 +31,14 @@ "saving": "保存中…", "updateSuccess": "更新成功", "updateFailed": "更新失败", + "retry": "重试", + "cancel": "取消", "updatePassword": "更新密码" }, + "loading": "加载中…", + "submitting": "提交中…", + "loadFailed": "加载失败", + "cancel": "取消", "accountSettings": "账号设置", "accountSettingsDesc": "管理您的基本账号资料及安全设置。", "profileSettings": "基本资料", @@ -115,7 +121,8 @@ "comingSoon": "功能开发中", "yes": "是", "no": "否", - "none": "无" + "none": "无", + "empty": "暂无数据" }, "status": { "enabled": "启用", @@ -129,6 +136,16 @@ "errors": { "loadFailed": "加载失败" }, + "error": { + "generic": "操作失败,请稍后重试", + "pageLoadFailed": "页面加载失败", + "unexpectedError": "管理后台遇到意外错误,请重试或返回首页。", + "backToHome": "返回首页" + }, + "notFound": { + "title": "页面不存在", + "description": "请检查地址或返回管理后台首页。" + }, "permission": { "deniedTitle": "无访问权限", "deniedDescription": "当前账号没有访问此页面的权限。如需开通,请联系管理员在角色管理中分配相应功能权限。" diff --git a/src/i18n/locales/zh/config.json b/src/i18n/locales/zh/config.json index 53fe3c9..dd59a99 100644 --- a/src/i18n/locales/zh/config.json +++ b/src/i18n/locales/zh/config.json @@ -631,10 +631,12 @@ "readOnly": "只读", "defaultCap": { "title": "默认限额", - "fieldLabel": "限额金额" + "fieldLabel": "限额金额", + "description": "未命中特殊配置的号码,统一回落到这里。" }, "specialCaps": { - "title": "号码限额" + "title": "号码限额", + "description": "选择期号则为按期号单独限额,不选期为全局号码限额。" }, "scope": { diff --git a/src/i18n/locales/zh/players.json b/src/i18n/locales/zh/players.json index 067e9a4..1a99772 100644 --- a/src/i18n/locales/zh/players.json +++ b/src/i18n/locales/zh/players.json @@ -105,6 +105,9 @@ "usernamePlaceholderOptional": "选填", "nicknamePlaceholderOptional": "选填", "defaultCurrency": "默认币种", + "editPlayer": "编辑玩家", + "deletePlayer": "删除玩家", + "saveChanges": "保存修改", "cancel": "取消", "save": "保存", "saving": "保存中…", diff --git a/src/i18n/locales/zh/settlementCenter.json b/src/i18n/locales/zh/settlementCenter.json index 720d9ac..0ceab9c 100644 --- a/src/i18n/locales/zh/settlementCenter.json +++ b/src/i18n/locales/zh/settlementCenter.json @@ -191,7 +191,9 @@ "billType": { "adjustment": "补差单", "reversal": "冲正单", - "badDebt": "坏账核销" + "badDebt": "坏账核销", + "player": "玩家账单", + "agent": "代理账单" }, "adjustmentType": { "adjustment": "补差", @@ -200,7 +202,8 @@ }, "paymentStatus": { "pending": "待确认", - "confirmed": "已确认" + "confirmed": "已确认", + "partial": "部分" }, "actions": { "detail": "详情", @@ -262,6 +265,11 @@ "rebateAllocTicket": "注单", "showRawRebateAllocations": "展开按注单明细 ({{count}})", "hideRawRebateAllocations": "收起按注单明细", + "billItems": "账单项目", + "billType": "账单类型", + "hideDetails": "隐藏详情", + "showDetails": "显示详情", + "subBillCount": "子账单", "payment": "收付", "flowHint": { "playerPayAgent": "玩家应向直属代理结算",