refactor: 合并多语言支持的显示名称字段,优化奖池手动爆发功能的返回数据结构,增强管理端权限控制

This commit is contained in:
2026-05-25 14:31:24 +08:00
parent 7d01e5c47e
commit ddedef824e
101 changed files with 3033 additions and 641 deletions

View File

@@ -110,7 +110,7 @@ const resources = {
},
} satisfies Record<AdminLanguage, Record<(typeof namespaces)[number], Record<string, unknown>>>;
function normalizeAdminLanguage(lang: string | undefined): AdminLanguage {
export function normalizeAdminLanguage(lang: string | undefined): AdminLanguage {
const base = lang?.split("-")[0]?.toLowerCase();
if (base === "ne") return "ne";
if (base === "zh") return "zh";

View File

@@ -159,6 +159,7 @@
"prd.rebate.view": "Commission/Rebate · View",
"prd.jackpot.manage": "Jackpot Configuration · Manage",
"prd.jackpot.view": "Jackpot Configuration · View",
"prd.jackpot.manual_burst": "Jackpot Manual Burst · Super Admin Only",
"prd.payout.manage": "Payout Confirmation · Manage",
"prd.payout.review": "Payout Confirmation · Review",
"prd.payout.view": "Payout Confirmation · View",

View File

@@ -26,7 +26,31 @@
"createTask": "Create task",
"clear": "Clear",
"done": "Done",
"exportExcel": "Export Excel"
"exportExcel": "Export Excel",
"save": "Save changes",
"updateSuccess": "Updated successfully",
"updateFailed": "Update failed",
"updatePassword": "Update password"
},
"accountSettings": "Account settings",
"accountSettingsDesc": "Manage your profile and security settings.",
"profileSettings": "Profile",
"profileSettingsDesc": "Update your display name.",
"securitySettings": "Security",
"securitySettingsDesc": "Change your login password. Leave blank if you are not changing it.",
"fields": {
"nickname": "Nickname",
"newPassword": "New password",
"confirmPassword": "Confirm password"
},
"placeholders": {
"nickname": "Enter nickname",
"password": "Enter new password",
"confirmPassword": "Re-enter new password"
},
"validation": {
"required": "{{field}} is required",
"passwordMismatch": "Passwords do not match"
},
"aria": {
"expand": "Expand",
@@ -59,7 +83,16 @@
"date": {
"placeholder": "Select date",
"rangePlaceholder": "Select date range",
"rangeHint": "Select a start date, then an end date. For a single day, click the same date twice. Click Done to close."
"rangeHint": "Select a start date, then an end date. For a single day, click the same date twice. Click Done to close.",
"weekdays": {
"sunday": "Sunday",
"monday": "Monday",
"tuesday": "Tuesday",
"wednesday": "Wednesday",
"thursday": "Thursday",
"friday": "Friday",
"saturday": "Saturday"
}
},
"pagination": {
"perPage": "Per page",
@@ -76,6 +109,10 @@
"errors": {
"loadFailed": "Failed to load"
},
"permission": {
"deniedTitle": "Access denied",
"deniedDescription": "Your account does not have permission to open this page. Ask an administrator to assign the required role permissions."
},
"table": {
"id": "ID"
},
@@ -98,6 +135,7 @@
"draws": "Draws",
"rules_plays": "Play rules",
"rules_odds": "Odds & rebate",
"rules": "Betting rules",
"risk_cap": "Risk cap rules",
"risk": "Risk center",
"settlement": "Settlement",
@@ -105,12 +143,18 @@
"reconcile": "Reconcile",
"tickets": "Ticket list",
"audit": "Audit Logs",
"settings": "Settings"
"settings": "Settings",
"account": "Account settings"
},
"sidebar": {
"workspace": "Workspace"
},
"auth": {
"checking": "Checking sign-in status…"
},
"confirm": {
"cancel": "Cancel",
"confirm": "Confirm",
"confirmSave": "Save"
}
}

View File

@@ -83,7 +83,9 @@
"outMin": "Per-order minimum from lottery wallet to main wallet",
"outMax": "Per-order maximum from lottery wallet to main wallet"
},
"discard": "Discard changes"
"discard": "Discard changes",
"confirmSaveTitle": "Save wallet limits?",
"confirmSaveDescription": "This updates per-order transfer-in/out limits and immediately affects player wallet transfers."
},
"system": {
"title": "Draw and settlement runtime settings",
@@ -99,19 +101,25 @@
"manualReview": "Require manual review for draw results",
"cooldownMinutes": "Cooldown duration (minutes)",
"autoSettlement": "Run settlement automatically",
"autoApprove": "Auto-approve settlement batches",
"autoPayout": "Auto-credit winnings to wallets",
"playRulesHtml": "Play rules HTML (i18n)",
"playRulesHtmlDesc": "Rendered on the player play-rules page per locale. Leave empty to fall back to another language or the default empty state."
},
"hints": {
"manualReview": "When enabled, RNG draw results enter pending review and must be published manually in admin.",
"cooldownMinutes": "How long to wait after publishing before entering settling. Use 0 to settle immediately.",
"autoSettlement": "When disabled, tick will not run settlement automatically and admins must trigger it manually."
"autoSettlement": "When disabled, tick will not run settlement automatically and admins must trigger it manually.",
"autoApprove": "After cooldown ends and settlement completes, whether batches are automatically marked as approved.",
"autoPayout": "After a batch is approved, whether tick automatically credits winnings to player wallets."
},
"states": {
"enabled": "Enabled",
"disabled": "Disabled"
},
"discard": "Discard changes"
"discard": "Discard changes",
"confirmSaveTitle": "Save system runtime parameters?",
"confirmSaveDescription": "This updates draw review, cooldown, auto settlement/approval/payout, and play-rules display. It may affect site-wide operation."
},
"currencies": {
"title": "Currency management",
@@ -173,9 +181,23 @@
},
"validation": {
"minMaxInvalid": "{{playCode}}: min bet cannot exceed max bet",
"nameZhRequired": "Chinese display name is required"
"displayNameRequired": "Display name is required"
},
"publishFailed": "Publish failed",
"publishDialog": {
"title": "Publish play configuration?",
"description": "New settings affect future bets. Existing tickets still settle by their saved snapshot.",
"confirm": "Confirm publish"
},
"batchSwitchConfirmTitle": "Batch {{action}}?",
"batchSwitchConfirmDescription": "{{action}} {{count}} play types under «{{group}}» and write to the current draft.",
"batchSwitchEnable": "Enable",
"batchSwitchDisable": "Disable",
"toggleConfirmTitle": "{{action}} play {{playCode}}?",
"toggleConfirmDescription": "This calls the API immediately (not draft-only).",
"toggleEnable": "Enable",
"toggleDisable": "Disable",
"toggleInstantFailed": "Failed to apply play switch. Try again later.",
"createDraftSuccess": "Created draft v{{version}}",
"createDraftFailed": "Failed to create draft",
"ruleSavedLocal": "Rule text was saved into the local draft. Save the draft to persist it.",
@@ -191,7 +213,7 @@
"enable": "Enable",
"disable": "Disable",
"ruleText": "Rule text",
"displayNames": "Display names"
"editDisplayName": "Edit name"
},
"locales": {
"zh": "Chinese",
@@ -217,8 +239,8 @@
"enablePlay": "Enable {{playCode}}"
},
"nameDialog": {
"title": "Display names (i18n)",
"description": "Play {{playCode}}. Chinese is required; English and Nepali are optional. The player site picks the label by locale after publish.",
"title": "Edit display name",
"description": "Play {{playCode}}. The player site shows this label after you save and publish the draft.",
"apply": "Apply to draft",
"savedLocal": "Display names were saved into the local draft. Save the draft to persist them."
},
@@ -228,6 +250,13 @@
"apply": "Apply to draft"
}
},
"prizeScopes": {
"first": "First prize odds",
"second": "Second prize odds",
"third": "Third prize odds",
"starter": "Starter prize odds",
"consolation": "Consolation prize odds"
},
"odds": {
"sectionHint": "Pick a version to edit prize-tier odds; publishing applies to new tickets immediately.",
"tabs": {
@@ -273,6 +302,11 @@
"publishLabel": "Publish",
"publishSuccess": "Published odds version with rebate",
"publishFailed": "Publish failed",
"publishDialog": {
"title": "Publish rebate/odds version?",
"description": "After publish, rebate calculation applies to new tickets.",
"confirm": "Confirm publish"
},
"createDraftSuccess": "Created draft v{{version}}",
"createDraftFailed": "Failed to create draft",
"deleteFailed": "Delete failed",
@@ -297,6 +331,11 @@
"enterValidCapAmount": "Enter a valid cap amount"
},
"publishFailed": "Publish failed",
"publishDialog": {
"title": "Publish cap configuration?",
"description": "After publish, per-number risk-pool cap limits take effect.",
"confirm": "Confirm publish"
},
"createDraftSuccess": "Created draft v{{version}}",
"createDraftFailed": "Failed to create draft",
"savedLocalDraft": "Saved into local draft. Save the draft to persist it.",

View File

@@ -2,7 +2,65 @@
"title": "Dashboard",
"refresh": "Refresh",
"notice": "Notice",
"todayBetTotal": "Current draw total bet",
"sections": {
"today": "Today",
"lifetime": "All-time totals",
"currentDraw": "Current draw",
"currentDrawDetail": "Current draw · {{drawNo}}",
"operations": "Operations (current draw)"
},
"analytics": {
"title": "Financial analytics",
"periodLabel": "Period",
"metricLabel": "Metric",
"playLabel": "Play filter",
"allPlays": "All plays",
"customRange": "Custom dates",
"rangeHint": "Range {{range}}",
"selectPeriod": "Select a period",
"chartTruncated": "Trend shows {{from}} — {{to}} only ({{days}} days in full range)",
"summaryBet": "Period bet",
"summaryPayout": "Period payout",
"summaryProfit": "Period profit",
"dailyTrend": "Daily trend",
"playBreakdown": "Play breakdown",
"periodDistribution": "Period structure",
"noPlayData": "No play data in this period",
"periods": {
"today": "Today",
"last_7_days": "Last 7 days",
"last_30_days": "Last 30 days",
"this_month": "This month",
"lifetime": "All time",
"custom": "Custom"
},
"metrics": {
"overview": "Overview",
"bet": "Bet",
"payout": "Payout",
"profit": "Profit"
}
},
"chartLegend": {
"bet": "Bet",
"payout": "Payout",
"profit": "Profit"
},
"playBreakdownHint": "Payout {{payout}} · Profit {{profit}}",
"viewReports": "Reports",
"lifetimeBetTotal": "Lifetime total bet",
"lifetimePayout": "Lifetime total payout",
"lifetimeProfit": "Lifetime platform profit",
"lifetimeActivityHint": "{{draws}} draws with bets · {{days}} business days",
"lifetimeDateRangeHint": "Range {{range}}",
"currentDrawBetTotal": "Draw total bet",
"currentDrawPayout": "Draw payout",
"currentDrawProfit": "Draw profit",
"drawFinanceDetails": "Draw finance details",
"todayBetTotal": "Today's total bet",
"todayPayout": "Today's payout",
"todayProfit": "Today's profit",
"todayBusinessDateHint": "Business date {{date}}",
"drawNoHint": "Draw {{drawNo}}",
"orderAndTicket": "{{orders}} orders · {{tickets}} items",
"marginRate": "Gross margin ~{{rate}}%",
@@ -21,8 +79,9 @@
"settlementOverview": "Settlement batches",
"noSettlementBatches": "No settlement batches",
"quickLinksTitle": "Quick links",
"currentPayout": "Current payout",
"currentProfit": "Current platform profit",
"currentPayout": "Current draw payout",
"currentProfit": "Current draw profit",
"currentDrawFinanceHint": "Charts below are for draw {{drawNo}}",
"currentDraw": "Current draw",
"drawSequence": "Round {{sequence}}",
"drawDetails": "Draw details",
@@ -64,8 +123,9 @@
"auditLogs": "Audit logs"
},
"warnings": {
"drawPermission": "This account has no draw view/manage permission. Finance and risk data were not returned.",
"drawPermission": "This account has no draw/dashboard view permission. Finance and risk data were not returned.",
"walletPermission": "This account has no wallet reconciliation permission. Abnormal transfer count was not returned.",
"loadFailed": "Failed to load. Check the API and login state."
"loadFailed": "Failed to load. Check the API and login state.",
"apiResourceMissing": "Dashboard analytics API is not registered. Run: php artisan lottery:admin-auth-sync (or apply the latest migration), then refresh."
}
}

View File

@@ -144,5 +144,23 @@
"third": "3rd prize",
"starter": "Starter {{index}}",
"consolation": "Consolation {{index}}"
},
"confirm": {
"manualCloseTitle": "Confirm manual close?",
"manualCloseDescription": "Players will no longer be able to bet on this draw.",
"cancelDrawTitle": "Confirm cancel draw?",
"cancelDrawDescription": "This draw will not be drawn. Ensure there is no outstanding bet risk.",
"rngDrawTitle": "Confirm RNG draw?",
"rngDrawDescription": "The system will generate draw numbers and continue the pipeline.",
"reopenTitle": "Confirm cooldown reopen?",
"reopenDescription": "Results may need re-review; displayed numbers may change.",
"runSettlementTitle": "Confirm run settlement?",
"runSettlementDescription": "A settlement batch will be created from the published result.",
"saveManualDraftTitle": "Confirm save manual draft?",
"saveManualDraftDescription": "23 numbers will be saved for review.",
"publishTitle": "Confirm publish results?",
"publishDescription": "Results become visible to players and may trigger settlement.",
"generatePlanTitle": "Confirm generate draw plan?",
"generatePlanDescription": "Future bettable draws will be created per system rules."
}
}

View File

@@ -25,10 +25,14 @@
"enabled": "Enabled",
"saving": "Saving…",
"save": "Save",
"manualBurstDrawId": "Manual burst draw number",
"manualBurstAmount": "Burst amount (empty for all)",
"manualBurstDrawId": "Draw ID for manual burst",
"manualBurstHint": "Super admin only. Requires a settled draw with first-prize winners. Pool release follows the configured payout rate.",
"manualBurstConfirmTitle": "Confirm manual jackpot burst?",
"manualBurstConfirmDescription": "Jackpot will be split among first-prize winners for draw {{drawId}} using the payout rate. Pool balance will be reduced. This cannot be undone automatically.",
"processing": "Processing…",
"manualBurst": "Manual burst",
"manualBurst": "Manual burst (super admin only)",
"manualBurstConfirm": "Confirm burst",
"cancel": "Cancel",
"filter": "Filter",
"drawNo": "Draw no.",
"optional": "Optional",

View File

@@ -29,6 +29,12 @@
"lastLogin": "Last login",
"actions": "Actions",
"edit": "Edit",
"freeze": "Freeze",
"unfreeze": "Unfreeze",
"freezeSuccess": "Player {{name}} frozen",
"unfreezeSuccess": "Player {{name}} unfrozen",
"freezeFailed": "Failed to freeze player",
"unfreezeFailed": "Failed to unfreeze player",
"delete": "Delete",
"createDialogTitle": "Create player",
"editDialogTitle": "Edit player",
@@ -44,6 +50,10 @@
"cancel": "Cancel",
"save": "Save",
"saving": "Saving…",
"confirmFreezeTitle": "Confirm freeze player?",
"confirmFreezeDescription": "Player {{name}} will not be able to place bets.",
"confirmUnfreezeTitle": "Confirm unfreeze player?",
"confirmUnfreezeDescription": "Player {{name}} will return to normal status.",
"confirmDelete": "Confirm delete",
"confirmDeleteDesc": "Delete player {{name}}? This action cannot be undone."
}

View File

@@ -13,6 +13,10 @@
"periodRequired": "Enter both reconcile start and end dates",
"periodInvalid": "Invalid date range",
"periodOrderInvalid": "End time must be later than or equal to start time",
"confirmCreateTitle": "Create reconcile job?",
"confirmCreateDescription": "Start a manual reconcile for the selected date range{{playerHint}}.",
"confirmCreatePlayer": " for the selected player",
"confirmCreateAllPlayers": " (all players)",
"createSuccess": "Reconcile job created",
"createFailed": "Failed to create job",
"noCreatePermission": "Current account cannot create reconcile jobs.",

View File

@@ -46,6 +46,12 @@
"manualCloseSuccess": "Number betting closed manually",
"recoverSuccess": "Number betting recovered",
"actionFailed": "Action failed",
"confirm": {
"closeTitle": "Confirm close number?",
"closeDescription": "Number {{number}} will be blocked for this draw.",
"recoverTitle": "Confirm recover number?",
"recoverDescription": "Number {{number}} will be open for betting again."
},
"detailTitle": "Risk pool details",
"loadDetailFailed": "Failed to load risk pool details",
"backToList": "Back to list",

View File

@@ -34,6 +34,7 @@
"pending_confirm": "Pending confirmation",
"partial_pending_confirm": "Partially pending confirmation",
"success": "Bet placed",
"pending_draw": "Awaiting draw",
"failed": "Bet failed",
"pending_payout": "Pending payout",
"settled_win": "Settled win",

View File

@@ -47,6 +47,12 @@
"reverseSuccess": "Reversed successfully",
"manualProcessSuccess": "Manually processed successfully",
"actionFailed": "Action failed",
"confirm": {
"reverseTitle": "Confirm reverse transfer?",
"reverseDescription": "Reverse order {{transferNo}}. This may affect player wallet balance.",
"manualProcessTitle": "Confirm manual process?",
"manualProcessDescription": "Mark order {{transferNo}} as manually processed without automatic wallet adjustment."
},
"txnNo": "Txn no.",
"bizType": "Business type",
"type": "Type",

View File

@@ -159,6 +159,7 @@
"prd.rebate.view": "कमिसन/रिबेट · हेर्नुहोस्",
"prd.jackpot.manage": "ज्याकपोट कन्फिगरेसन · व्यवस्थापन",
"prd.jackpot.view": "ज्याकपोट कन्फिगरेसन · हेर्नुहोस्",
"prd.jackpot.manual_burst": "ज्याकपोट म्यानुअल बर्स्ट · सुपर एडमिन मात्र",
"prd.payout.manage": "भुक्तानी पुष्टि · व्यवस्थापन",
"prd.payout.review": "भुक्तानी पुष्टि · समीक्षा",
"prd.payout.view": "भुक्तानी पुष्टि · हेर्नुहोस्",

View File

@@ -26,7 +26,31 @@
"createTask": "टास्क सिर्जना गर्नुहोस्",
"clear": "खाली गर्नुहोस्",
"done": "समाप्त",
"exportExcel": "Excel निर्यात"
"exportExcel": "Excel निर्यात",
"save": "परिवर्तन सुरक्षित गर्नुहोस्",
"updateSuccess": "सफलतापूर्वक अद्यावधिक भयो",
"updateFailed": "अद्यावधिक असफल भयो",
"updatePassword": "पासवर्ड अद्यावधिक गर्नुहोस्"
},
"accountSettings": "खाता सेटिङ",
"accountSettingsDesc": "आफ्नो प्रोफाइल र सुरक्षा सेटिङ व्यवस्थापन गर्नुहोस्।",
"profileSettings": "आधारभूत प्रोफाइल",
"profileSettingsDesc": "आफ्नो प्रदर्शन नाम अद्यावधिक गर्नुहोस्।",
"securitySettings": "सुरक्षा सेटिङ",
"securitySettingsDesc": "लगइन पासवर्ड परिवर्तन गर्नुहोस्। नपरिवर्तन गर्दा खाली छोड्नुहोस्।",
"fields": {
"nickname": "उपनाम",
"newPassword": "नयाँ पासवर्ड",
"confirmPassword": "पासवर्ड पुष्टि"
},
"placeholders": {
"nickname": "उपनाम प्रविष्ट गर्नुहोस्",
"password": "नयाँ पासवर्ड प्रविष्ट गर्नुहोस्",
"confirmPassword": "पासवर्ड फेरि प्रविष्ट गर्नुहोस्"
},
"validation": {
"required": "{{field}} अनिवार्य छ",
"passwordMismatch": "पासवर्ड मिलेन"
},
"aria": {
"expand": "खोल्नुहोस्",
@@ -59,7 +83,16 @@
"date": {
"placeholder": "मिति छान्नुहोस्",
"rangePlaceholder": "मिति दायरा छान्नुहोस्",
"rangeHint": "सुरु मिति छान्नुहोस्, त्यसपछि अन्त्य मिति। एउटै दिनका लागि सोही मितिमा दुई पटक क्लिक गर्नुहोस्। बन्द गर्न Done थिच्नुहोस्।"
"rangeHint": "सुरु मिति छान्नुहोस्, त्यसपछि अन्त्य मिति। एउटै दिनका लागि सोही मितिमा दुई पटक क्लिक गर्नुहोस्। बन्द गर्न Done थिच्नुहोस्।",
"weekdays": {
"sunday": "आइतबार",
"monday": "सोमबार",
"tuesday": "मंगलबार",
"wednesday": "बुधबार",
"thursday": "बिहिबार",
"friday": "शुक्रबार",
"saturday": "शनिबार"
}
},
"pagination": {
"perPage": "प्रति पृष्ठ",
@@ -76,6 +109,10 @@
"errors": {
"loadFailed": "लोड असफल भयो"
},
"permission": {
"deniedTitle": "पहुँच अनुमति छैन",
"deniedDescription": "यो पृष्ठ खोल्ने अनुमति तपाईंको खातामा छैन। भूमिका व्यवस्थापनबाट आवश्यक अनुमति दिन प्रशासकलाई सम्पर्क गर्नुहोस्।"
},
"table": {
"id": "ID"
},
@@ -98,6 +135,7 @@
"draws": "ड्रअहरू",
"rules_plays": "खेल नियम",
"rules_odds": "बाधा र रिबेट",
"rules": "खेल नियम",
"risk_cap": "जोखिम क्याप संस्करण",
"risk": "जोखिम केन्द्र",
"settlement": "सेटलमेन्ट",
@@ -105,12 +143,18 @@
"reconcile": "मिलान",
"tickets": "टिकट सूची",
"audit": "अडिट लग",
"settings": "सेटिङ"
"settings": "सेटिङ",
"account": "खाता सेटिङ"
},
"sidebar": {
"workspace": "कार्यस्थान"
},
"auth": {
"checking": "लगइन स्थिति जाँच हुँदैछ…"
},
"confirm": {
"cancel": "रद्द",
"confirm": "पुष्टि गर्नुहोस्",
"confirmSave": "सुरक्षित गर्नुहोस्"
}
}

View File

@@ -83,7 +83,9 @@
"outMin": "लटरी वालेटबाट मुख्य वालेटमा प्रति अर्डर न्यूनतम",
"outMax": "लटरी वालेटबाट मुख्य वालेटमा प्रति अर्डर अधिकतम"
},
"discard": "परिवर्तन त्याग्नुहोस्"
"discard": "परिवर्तन त्याग्नुहोस्",
"confirmSaveTitle": "वालेट सीमा सुरक्षित गर्ने?",
"confirmSaveDescription": "ट्रान्सफर-इन/आउटको प्रति अर्डर सीमा अद्यावधिक हुन्छ र खेलाडीको वालेट ट्रान्सफरमा तुरुन्त असर पर्छ।"
},
"system": {
"title": "ड्रअ र सेटलमेन्ट रनटाइम सेटिङ",
@@ -99,19 +101,25 @@
"manualReview": "ड्रअ परिणामका लागि म्यानुअल समीक्षा चाहिने",
"cooldownMinutes": "कूलडाउन अवधि (मिनेट)",
"autoSettlement": "सेटलमेन्ट स्वतः चलाउने",
"autoApprove": "सेटलमेन्ट ब्याच स्वतः स्वीकृत",
"autoPayout": "जित रकम स्वतः वालेटमा जम्मा",
"playRulesHtml": "खेल नियम HTML (बहुभाषी)",
"playRulesHtmlDesc": "खेलाडीको नियम पृष्ठमा भाषा अनुसार HTML देखिन्छ। खाली छोड्दा अर्को भाषा वा पूर्वनिर्धारित खाली सूचना देखिन्छ।"
},
"hints": {
"manualReview": "सक्रिय हुँदा RNG ड्रअ परिणाम pending review मा जान्छ र एडमिनबाट म्यानुअल रूपमा प्रकाशित गर्नुपर्छ।",
"cooldownMinutes": "प्रकाशनपछि settling मा जानुअघि कति समय पर्खने। 0 राखे तुरुन्त सेटलमेन्ट सुरु हुन्छ।",
"autoSettlement": "बन्द हुँदा tick ले सेटलमेन्ट स्वतः चलाउँदैन र एडमिनले म्यानुअल रूपमा ट्रिगर गर्नुपर्छ।"
"autoSettlement": "बन्द हुँदा tick ले सेटलमेन्ट स्वतः चलाउँदैन र एडमिनले म्यानुअल रूपमा ट्रिगर गर्नुपर्छ।",
"autoApprove": "कूलडाउन सकिएर सेटलमेन्ट पूरा भएपछि ब्याच स्वतः अनुमोदित हुने हो कि होइन।",
"autoPayout": "ब्याच अनुमोदित भएपछि tick ले जित रकम खेलाडीको वालेटमा स्वतः जम्मा गर्ने हो कि होइन।"
},
"states": {
"enabled": "सक्रिय",
"disabled": "बन्द"
},
"discard": "परिवर्तन त्याग्नुहोस्"
"discard": "परिवर्तन त्याग्नुहोस्",
"confirmSaveTitle": "प्रणाली रनटाइम प्यारामिटर सुरक्षित गर्ने?",
"confirmSaveDescription": "ड्रअ समीक्षा, कूलडाउन, स्वचालित सेटलमेन्ट/अनुमोदन/पेआउट र खेल नियम प्रदर्शन अद्यावधिक हुन्छ। साइटव्यापी सञ्चालनमा असर पर्न सक्छ।"
},
"currencies": {
"title": "मुद्रा व्यवस्थापन",
@@ -173,9 +181,23 @@
},
"validation": {
"minMaxInvalid": "{{playCode}}: न्यूनतम बेट अधिकतम बेटभन्दा ठूलो हुन सक्दैन",
"nameZhRequired": "चिनियाँ प्रदर्शित नाम अनिवार्य छ"
"displayNameRequired": "प्रदर्शित नाम अनिवार्य छ"
},
"publishFailed": "प्रकाशन असफल भयो",
"publishDialog": {
"title": "खेल कन्फिग प्रकाशित गर्ने?",
"description": "नयाँ सेटिङले आगामी बेटहरूमा असर गर्छ। पुराना टिकटहरू आफ्नो snapshot अनुसार नै सेटल हुन्छन्।",
"confirm": "प्रकाशन पुष्टि गर्नुहोस्"
},
"batchSwitchConfirmTitle": "समूह {{action}} पुष्टि गर्ने?",
"batchSwitchConfirmDescription": "«{{group}}» अन्तर्गत {{count}} खेल प्रकार {{action}} गरी हालको ड्राफ्टमा लेखिनेछ।",
"batchSwitchEnable": "सक्रिय",
"batchSwitchDisable": "निष्क्रिय",
"toggleConfirmTitle": "खेल {{playCode}} {{action}} गर्ने?",
"toggleConfirmDescription": "यो तुरुन्त API मार्फत लागू हुन्छ (केवल ड्राफ्ट मात्र होइन)।",
"toggleEnable": "सक्रिय",
"toggleDisable": "निष्क्रिय",
"toggleInstantFailed": "खेल स्विच तुरुन्त लागू गर्न असफल। पछि पुनः प्रयास गर्नुहोस्।",
"createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो",
"createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो",
"ruleSavedLocal": "नियम पाठ स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।",
@@ -191,7 +213,7 @@
"enable": "सक्रिय",
"disable": "निष्क्रिय",
"ruleText": "नियम पाठ",
"displayNames": "बहुभाषी नाम"
"editDisplayName": "नाम सम्पादन"
},
"locales": {
"zh": "चिनियाँ",
@@ -228,6 +250,13 @@
"apply": "ड्राफ्टमा लागू गर्नुहोस्"
}
},
"prizeScopes": {
"first": "पहिलो पुरस्कार बाधा",
"second": "दोस्रो पुरस्कार बाधा",
"third": "तेस्रो पुरस्कार बाधा",
"starter": "स्टार्टर पुरस्कार बाधा",
"consolation": "सान्त्वना पुरस्कार बाधा"
},
"odds": {
"sectionHint": "संस्करण छानेर पुरस्कार-स्तर बाधा सम्पादन गर्नुहोस्; प्रकाशनपछि नयाँ टिकटमा लागू हुन्छ।",
"tabs": {
@@ -273,6 +302,11 @@
"publishLabel": "प्रकाशन",
"publishSuccess": "रिबेटसहितको अड्स संस्करण प्रकाशित भयो",
"publishFailed": "प्रकाशन असफल भयो",
"publishDialog": {
"title": "रिबेट/अड्स संस्करण प्रकाशित गर्ने?",
"description": "प्रकाशनपछि नयाँ टिकटहरूको रिबेट गणनामा असर पर्छ।",
"confirm": "प्रकाशन पुष्टि गर्नुहोस्"
},
"createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो",
"createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो",
"deleteFailed": "मेटाउन असफल",
@@ -297,6 +331,11 @@
"enterValidCapAmount": "मान्य क्याप रकम प्रविष्ट गर्नुहोस्"
},
"publishFailed": "प्रकाशन असफल भयो",
"publishDialog": {
"title": "क्याप कन्फिग प्रकाशित गर्ने?",
"description": "प्रकाशनपछि प्रत्येक नम्बरको जोखिम पूल क्याप सीमा लागू हुन्छ।",
"confirm": "प्रकाशन पुष्टि गर्नुहोस्"
},
"createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो",
"createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो",
"savedLocalDraft": "स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।",

View File

@@ -2,7 +2,65 @@
"title": "ड्यासबोर्ड",
"refresh": "रिफ्रेस",
"notice": "सूचना",
"todayBetTotal": "हालको ड्रअ कुल बेट",
"sections": {
"today": "आजको सारांश",
"lifetime": "ऐतिहासिक कुल",
"currentDraw": "हालको ड्रअ",
"currentDrawDetail": "हालको ड्रअ · {{drawNo}}",
"operations": "सञ्चालन (हालको ड्रअ)"
},
"analytics": {
"title": "वित्त विश्लेषण",
"periodLabel": "अवधि",
"metricLabel": "मेट्रिक",
"playLabel": "प्ले फिल्टर",
"allPlays": "सबै प्ले",
"customRange": "मिति दायरा",
"rangeHint": "अवधि {{range}}",
"selectPeriod": "अवधि छान्नुहोस्",
"chartTruncated": "ट्रेन्ड {{from}} — {{to}} मात्र (कुल {{days}} दिन)",
"summaryBet": "अवधि बेट",
"summaryPayout": "अवधि भुक्तानी",
"summaryProfit": "अवधि नाफा",
"dailyTrend": "दैनिक ट्रेन्ड",
"playBreakdown": "प्ले विभाजन",
"periodDistribution": "अवधि संरचना",
"noPlayData": "यस अवधिमा प्ले डाटा छैन",
"periods": {
"today": "आज",
"last_7_days": "पछिल्लो ७ दिन",
"last_30_days": "पछिल्लो ३० दिन",
"this_month": "यो महिना",
"lifetime": "सबै",
"custom": "अनुकूल"
},
"metrics": {
"overview": "सिंहावलोकन",
"bet": "बेट",
"payout": "भुक्तानी",
"profit": "नाफा"
}
},
"chartLegend": {
"bet": "बेट",
"payout": "भुक्तानी",
"profit": "नाफा"
},
"playBreakdownHint": "भुक्तानी {{payout}} · नाफा {{profit}}",
"viewReports": "प्रतिवेदन",
"lifetimeBetTotal": "जम्मा बेट",
"lifetimePayout": "जम्मा भुक्तानी",
"lifetimeProfit": "जम्मा प्लेटफर्म नाफा",
"lifetimeActivityHint": "{{draws}} ड्रअमा बेट · {{days}} व्यापार दिन",
"lifetimeDateRangeHint": "अवधि {{range}}",
"currentDrawBetTotal": "हालको ड्रअ बेट",
"currentDrawPayout": "हालको भुक्तानी",
"currentDrawProfit": "हालको नाफा/नोक्सान",
"drawFinanceDetails": "ड्रअ वित्त विवरण",
"todayBetTotal": "आजको कुल बेट",
"todayPayout": "आजको भुक्तानी",
"todayProfit": "आजको नाफा/नोक्सान",
"todayBusinessDateHint": "व्यापार मिति {{date}}",
"drawNoHint": "ड्रअ {{drawNo}}",
"orderAndTicket": "{{orders}} अर्डर · {{tickets}} वस्तु",
"marginRate": "सकल मार्जिन ~{{rate}}%",
@@ -64,7 +122,7 @@
"auditLogs": "अडिट लग"
},
"warnings": {
"drawPermission": "यो खातासँग ड्रअ हेर्ने वा व्यवस्थापन अनुमति छैन। वित्तीय र जोखिम डाटा फिर्ता आएन।",
"drawPermission": "यो खातासँग ड्रअ/ड्यासबोर्ड हेर्ने अनुमति छैन। वित्तीय र जोखिम डाटा फिर्ता आएन।",
"walletPermission": "यो खातासँग वालेट मिलान हेर्ने अनुमति छैन। असामान्य ट्रान्सफर संख्या फिर्ता आएन।",
"loadFailed": "लोड असफल भयो। API र लगइन अवस्था जाँच गर्नुहोस्।"
}

View File

@@ -144,5 +144,23 @@
"third": "तेस्रो पुरस्कार",
"starter": "विशेष {{index}}",
"consolation": "सान्त्वना {{index}}"
},
"confirm": {
"manualCloseTitle": "म्यानुअल बन्द पुष्टि?",
"manualCloseDescription": "खेलाडीहरूले यो ड्रअमा थप दांव लगाउन सक्ने छैनन्।",
"cancelDrawTitle": "ड्रअ रद्द पुष्टि?",
"cancelDrawDescription": "यो ड्रअ खुल्ने छैन।",
"rngDrawTitle": "RNG ड्रअ पुष्टि?",
"rngDrawDescription": "प्रणालीले नतिजा सिर्जना गर्नेछ।",
"reopenTitle": "कुलडाउन पुनः खोल्ने पुष्टि?",
"reopenDescription": "नतिजा पुनः समीक्षा हुन सक्छ।",
"runSettlementTitle": "सेटलमेन्ट सुरु पुष्टि?",
"runSettlementDescription": "प्रकाशित नतिजाबाट सेटलमेन्ट ब्याच बन्नेछ।",
"saveManualDraftTitle": "म्यानुअल ड्राफ्ट सुरक्षित पुष्टि?",
"saveManualDraftDescription": "२३ नम्बर समीक्षाका लागि सुरक्षित हुनेछ।",
"publishTitle": "नतिजा प्रकाशन पुष्टि?",
"publishDescription": "खेलाडीहरूले नतिजा देख्नेछन्।",
"generatePlanTitle": "ड्रअ योजना सिर्जना पुष्टि?",
"generatePlanDescription": "भविष्यका ड्रअहरू सिर्जना हुनेछन्।"
}
}

View File

@@ -25,10 +25,14 @@
"enabled": "खुला",
"saving": "सुरक्षित हुँदैछ…",
"save": "सुरक्षित गर्नुहोस्",
"manualBurstDrawId": "म्यानुअल बर्स्ट ड्रअ नम्बर",
"manualBurstAmount": "बर्स्ट रकम (खाली भए सबै)",
"manualBurstDrawId": "म्यानुअल बर्स्ट ड्रअ ID",
"manualBurstHint": "सुपर एडमिन मात्र। बसेको ड्रअ र प्रथम पुरस्कार विजेताहरू चाहिन्छ। पेआउट दर अनुसार वितरण हुन्छ।",
"manualBurstConfirmTitle": "म्यानुअल बर्स्ट पुष्टि गर्ने?",
"manualBurstConfirmDescription": "ड्रअ {{drawId}} का प्रथम पुरस्कार विजेताहरूलाई Jackpot वितरण गरिनेछ।",
"processing": "प्रक्रियामा…",
"manualBurst": "म्यानुअल बर्स्ट",
"manualBurst": "म्यानुअल बर्स्ट (सुपर एडमिन)",
"manualBurstConfirm": "बर्स्ट पुष्टि",
"cancel": "रद्द",
"filter": "फिल्टर",
"drawNo": "ड्रअ नं.",
"optional": "वैकल्पिक",

View File

@@ -29,6 +29,12 @@
"lastLogin": "अन्तिम लगइन",
"actions": "कार्य",
"edit": "सम्पादन",
"freeze": "रोक्नुहोस्",
"unfreeze": "फुकाउनुहोस्",
"freezeSuccess": "खेलाडी {{name}} रोकियो",
"unfreezeSuccess": "खेलाडी {{name}} फुकाइयो",
"freezeFailed": "रोक्न सकिएन",
"unfreezeFailed": "फुकाउन सकिएन",
"delete": "मेटाउनुहोस्",
"createDialogTitle": "खेलाडी सिर्जना",
"editDialogTitle": "खेलाडी सम्पादन",

View File

@@ -33,6 +33,7 @@
"pending_confirm": "पुष्टि बाँकी",
"partial_pending_confirm": "आंशिक पुष्टि बाँकी",
"success": "बेट सफल",
"pending_draw": "ड्र पर्खँदै",
"failed": "बेट असफल",
"pending_payout": "भुक्तानी बाँकी",
"settled_win": "जित सेटल भयो",

View File

@@ -119,6 +119,16 @@
"confirmTitle": "删除角色",
"confirmDescription": "确认删除角色 {{name}}"
},
"confirmSaveRolesTitle": "确认保存管理员角色?",
"confirmSaveRolesDescription": "将更新管理员 {{name}} 的角色绑定,其后台权限会随之变化。",
"confirmSaveAccountTitle": "确认保存管理员账号?",
"confirmSaveAccountCreateDescription": "将创建新管理员账号并授予所选角色。",
"confirmSaveAccountEditDescription": "将更新管理员 {{name}} 的账号信息(含状态与密码变更)。",
"confirmSaveRolePermissionsTitle": "确认保存角色权限?",
"confirmSaveRolePermissionsDescription": "将更新角色「{{name}}」的功能权限,所有绑定该角色的管理员会立即生效。",
"confirmSaveRoleTitle": "确认保存角色信息?",
"confirmSaveRoleCreateDescription": "将创建新角色 {{name}}。",
"confirmSaveRoleEditDescription": "将更新角色 {{name}} 的名称、说明与状态。",
"permissionGroups": {
"all": "全部权限",
"dashboard": "仪表盘",
@@ -159,6 +169,7 @@
"prd.rebate.view": "佣金/回水·查看",
"prd.jackpot.manage": "奖池配置·可管理",
"prd.jackpot.view": "奖池配置·查看",
"prd.jackpot.manual_burst": "奖池手动爆池·仅超管",
"prd.payout.manage": "派彩确认·可管理",
"prd.payout.review": "派彩确认·可审核",
"prd.payout.view": "派彩确认·查看",

View File

@@ -26,7 +26,31 @@
"createTask": "创建任务",
"clear": "清除",
"done": "完成",
"exportExcel": "导出 Excel"
"exportExcel": "导出 Excel",
"save": "保存修改",
"updateSuccess": "更新成功",
"updateFailed": "更新失败",
"updatePassword": "更新密码"
},
"accountSettings": "账号设置",
"accountSettingsDesc": "管理您的基本账号资料及安全设置。",
"profileSettings": "基本资料",
"profileSettingsDesc": "更新您的显示名称。",
"securitySettings": "安全设置",
"securitySettingsDesc": "修改您的登录密码。如不修改请留空。",
"fields": {
"nickname": "昵称",
"newPassword": "新密码",
"confirmPassword": "确认密码"
},
"placeholders": {
"nickname": "请输入昵称",
"password": "请输入新密码",
"confirmPassword": "请再次输入新密码"
},
"validation": {
"required": "请填写{{field}}",
"passwordMismatch": "两次输入的密码不一致"
},
"aria": {
"expand": "展开",
@@ -59,7 +83,16 @@
"date": {
"placeholder": "选择日期",
"rangePlaceholder": "选择日期范围",
"rangeHint": "先选开始日,再选结束日(单日可对同一天点两次);点「完成」关闭面板。"
"rangeHint": "先选开始日,再选结束日(单日可对同一天点两次);点「完成」关闭面板。",
"weekdays": {
"sunday": "星期日",
"monday": "星期一",
"tuesday": "星期二",
"wednesday": "星期三",
"thursday": "星期四",
"friday": "星期五",
"saturday": "星期六"
}
},
"pagination": {
"perPage": "每页条数",
@@ -76,6 +109,10 @@
"errors": {
"loadFailed": "加载失败"
},
"permission": {
"deniedTitle": "无访问权限",
"deniedDescription": "当前账号没有访问此页面的权限。如需开通,请联系管理员在角色管理中分配相应功能权限。"
},
"table": {
"id": "ID"
},
@@ -98,6 +135,7 @@
"draws": "期号列表",
"rules_plays": "投注规则",
"rules_odds": "赔率与回水",
"rules": "投注规则",
"risk_cap": "限额版本",
"risk": "风控中心",
"settlement": "结算",
@@ -105,12 +143,18 @@
"reconcile": "对账",
"tickets": "注单列表",
"audit": "审计日志",
"settings": "系统设置"
"settings": "系统设置",
"account": "账号设置"
},
"sidebar": {
"workspace": "工作台"
},
"auth": {
"checking": "正在校验登录状态…"
},
"confirm": {
"cancel": "取消",
"confirm": "确认执行",
"confirmSave": "确认保存"
}
}

View File

@@ -83,7 +83,9 @@
"outMin": "彩票钱包转出主站钱包的单笔下限",
"outMax": "彩票钱包转出主站钱包的单笔上限"
},
"discard": "放弃更改"
"discard": "放弃更改",
"confirmSaveTitle": "确认保存钱包限额?",
"confirmSaveDescription": "将更新转入/转出单笔限额,立即影响玩家钱包转账。"
},
"system": {
"title": "开奖与结算运行参数",
@@ -99,19 +101,25 @@
"manualReview": "开奖结果必须人工审核",
"cooldownMinutes": "冷静期时长(分钟)",
"autoSettlement": "自动执行结算",
"autoApprove": "自动审核结算批次",
"autoPayout": "自动派彩入账",
"playRulesHtml": "玩法规则 HTML多语言",
"playRulesHtmlDesc": "该内容将直接在玩家端的玩法规则页面作为 HTML 渲染。按语言分别配置;留空则回退其它语言或显示默认提示。"
},
"hints": {
"manualReview": "开启后RNG 开奖结果会先进入待审核,必须由后台人工发布。",
"cooldownMinutes": "结果发布后等待多久再进入 settling。填 0 表示发布后直接进入结算。",
"autoSettlement": "关闭后tick 不会自动跑结算,只能由后台手工执行。"
"autoSettlement": "关闭后tick 不会自动跑结算,只能由后台手工执行。",
"autoApprove": "冷静期结束并跑完结算后,是否自动将批次标记为已审核。",
"autoPayout": "批次已审核后,是否由 tick 自动把中奖金额打入玩家钱包。"
},
"states": {
"enabled": "已开启",
"disabled": "已关闭"
},
"discard": "放弃更改"
"discard": "放弃更改",
"confirmSaveTitle": "确认保存系统运行参数?",
"confirmSaveDescription": "将更新开奖审核、冷静期、自动结算/审核/派彩及玩法规则展示,可能影响全站运行。"
},
"currencies": {
"title": "币种管理",
@@ -173,9 +181,23 @@
},
"validation": {
"minMaxInvalid": "{{playCode}}:最小下注额不能大于最大下注额",
"nameZhRequired": "中文显示名称不能为空"
"displayNameRequired": "显示名称不能为空"
},
"publishFailed": "发布失败",
"publishDialog": {
"title": "确认发布玩法配置?",
"description": "新配置将影响后续下注;已下注注单仍按各自快照结算。",
"confirm": "确认发布"
},
"batchSwitchConfirmTitle": "确认批量{{action}}",
"batchSwitchConfirmDescription": "将{{action}}「{{group}}」下 {{count}} 个玩法,并写入当前草稿。",
"batchSwitchEnable": "开启",
"batchSwitchDisable": "关闭",
"toggleConfirmTitle": "确认{{action}}玩法 {{playCode}}",
"toggleConfirmDescription": "将立即调用接口生效(不仅限于草稿)。",
"toggleEnable": "开启",
"toggleDisable": "关闭",
"toggleInstantFailed": "玩法开关即时生效失败,请稍后重试",
"createDraftSuccess": "已创建草稿 v{{version}}",
"createDraftFailed": "创建草稿失败",
"ruleSavedLocal": "规则文案已写入本地草稿,记得保存草稿后再发布。",
@@ -191,7 +213,7 @@
"enable": "开启",
"disable": "关闭",
"ruleText": "规则文案",
"displayNames": "多语言名称"
"editDisplayName": "编辑名称"
},
"locales": {
"zh": "中文",
@@ -217,8 +239,8 @@
"enablePlay": "切换 {{playCode}} 启用状态"
},
"nameDialog": {
"title": "显示名称(多语言)",
"description": "玩法 {{playCode}}中文必填,英文与尼泊尔语可选。保存草稿并发布后,前台按玩家语言展示。",
"title": "编辑显示名称",
"description": "玩法 {{playCode}}保存草稿并发布后,玩家端将展示该名称。",
"apply": "应用到草稿",
"savedLocal": "显示名称已写入本地草稿,记得保存草稿后再发布。"
},
@@ -228,6 +250,13 @@
"apply": "应用到草稿"
}
},
"prizeScopes": {
"first": "头奖赔率",
"second": "二奖赔率",
"third": "三奖赔率",
"starter": "特别奖赔率",
"consolation": "安慰奖赔率"
},
"odds": {
"sectionHint": "选择版本后可编辑各奖级赔率;发布后立即作用于新注单。",
"tabs": {
@@ -273,6 +302,11 @@
"publishLabel": "发布",
"publishSuccess": "已发布带回水的赔率版本",
"publishFailed": "发布失败",
"publishDialog": {
"title": "确认发布回水/赔率版本?",
"description": "发布后将影响后续新注单的回水计算。",
"confirm": "确认发布"
},
"createDraftSuccess": "已创建草稿 v{{version}}",
"createDraftFailed": "创建草稿失败",
"deleteFailed": "删除失败",
@@ -297,6 +331,11 @@
"enterValidCapAmount": "请输入有效的封顶金额"
},
"publishFailed": "发布失败",
"publishDialog": {
"title": "确认发布封顶配置?",
"description": "发布后将影响各号码的风险池封顶额度。",
"confirm": "确认发布"
},
"createDraftSuccess": "已创建草稿 v{{version}}",
"createDraftFailed": "创建草稿失败",
"savedLocalDraft": "已写入本地草稿,记得保存草稿后再发布。",

View File

@@ -2,7 +2,65 @@
"title": "仪表盘",
"refresh": "刷新",
"notice": "提示",
"todayBetTotal": "当期投注总额",
"sections": {
"today": "今日概览",
"lifetime": "历史累计",
"currentDraw": "当前期号",
"currentDrawDetail": "当期明细 · {{drawNo}}",
"operations": "运营监控(当期)"
},
"analytics": {
"title": "财务分析",
"periodLabel": "统计区间",
"metricLabel": "指标类型",
"playLabel": "玩法筛选",
"allPlays": "全部玩法",
"customRange": "自定义日期",
"rangeHint": "区间 {{range}}",
"selectPeriod": "选择统计区间",
"chartTruncated": "趋势图仅展示最近区间 {{from}} — {{to}}(全区间共 {{days}} 天)",
"summaryBet": "区间下注",
"summaryPayout": "区间派彩",
"summaryProfit": "区间盈亏",
"dailyTrend": "每日趋势",
"playBreakdown": "玩法拆解 Top",
"periodDistribution": "区间结构对比",
"noPlayData": "该区间暂无玩法数据",
"periods": {
"today": "今日",
"last_7_days": "近 7 天",
"last_30_days": "近 30 天",
"this_month": "本月",
"lifetime": "全部历史",
"custom": "自定义"
},
"metrics": {
"overview": "综合",
"bet": "投注",
"payout": "派彩",
"profit": "盈亏"
}
},
"chartLegend": {
"bet": "投注",
"payout": "派彩",
"profit": "盈亏"
},
"playBreakdownHint": "派彩 {{payout}} · 盈亏 {{profit}}",
"viewReports": "报表中心",
"lifetimeBetTotal": "累计下注",
"lifetimePayout": "累计派彩",
"lifetimeProfit": "累计平台盈亏",
"lifetimeActivityHint": "{{draws}} 期有投注 · {{days}} 个业务日",
"lifetimeDateRangeHint": "统计区间 {{range}}",
"currentDrawBetTotal": "当期投注",
"currentDrawPayout": "当期派彩",
"currentDrawProfit": "当期盈亏",
"drawFinanceDetails": "期号财务详情",
"todayBetTotal": "今日下注总额",
"todayPayout": "今日派彩",
"todayProfit": "今日盈亏",
"todayBusinessDateHint": "业务日 {{date}}",
"drawNoHint": "期号 {{drawNo}}",
"orderAndTicket": "{{orders}} 单 · {{tickets}} 笔",
"marginRate": "毛利率约 {{rate}}%",
@@ -23,6 +81,7 @@
"quickLinksTitle": "快捷入口",
"currentPayout": "当期派彩",
"currentProfit": "当期平台盈亏",
"currentDrawFinanceHint": "下方图表为当期 {{drawNo}}",
"currentDraw": "当前期号",
"drawSequence": "第 {{sequence}} 期",
"drawDetails": "期号详情",
@@ -64,8 +123,9 @@
"auditLogs": "审计日志"
},
"warnings": {
"drawPermission": "当前账号无开奖查看/管理权限,财务与风控数据未返回。",
"drawPermission": "当前账号无开奖/仪表盘查看权限,财务与风控数据未返回。",
"walletPermission": "当前账号无钱包对账查看权限,异常转账计数未返回。",
"loadFailed": "加载失败,请检查 API 与登录状态。"
"loadFailed": "加载失败,请检查 API 与登录状态。",
"apiResourceMissing": "仪表盘分析接口未注册。请在服务端执行php artisan lottery:admin-auth-sync或运行最新数据库迁移后重试。"
}
}

View File

@@ -144,5 +144,23 @@
"third": "三奖",
"starter": "特别奖 {{index}}",
"consolation": "安慰奖 {{index}}"
},
"confirm": {
"manualCloseTitle": "确认手动封盘?",
"manualCloseDescription": "封盘后玩家将无法继续对该期下注。",
"cancelDrawTitle": "确认取消期号?",
"cancelDrawDescription": "取消后该期将不再开奖,请确认无未处理注单风险。",
"rngDrawTitle": "确认 RNG 自动生成开奖?",
"rngDrawDescription": "将按系统规则生成本期开奖号码并进入后续流程。",
"reopenTitle": "确认冷静期重开?",
"reopenDescription": "重开后需重新审核/发布结果,可能影响已展示的开奖信息。",
"runSettlementTitle": "确认触发结算?",
"runSettlementDescription": "将按已发布开奖结果生成本期结算批次。",
"saveManualDraftTitle": "确认保存人工开奖草稿?",
"saveManualDraftDescription": "将写入 23 个开奖号码草稿,提交后进入审核流程。",
"publishTitle": "确认发布开奖结果?",
"publishDescription": "发布后将对玩家可见并可能触发结算,请再次核对号码。",
"generatePlanTitle": "确认批量生成期号计划?",
"generatePlanDescription": "将按系统规则补充未来可下注期号。"
}
}

View File

@@ -25,10 +25,16 @@
"enabled": "开启",
"saving": "保存中…",
"save": "保存",
"confirmSavePoolTitle": "确认保存奖池配置?",
"confirmSavePoolDescription": "将更新蓄水比例、阈值、派彩比例等参数,可能影响后续 Jackpot 行为。",
"manualBurstDrawId": "手动爆池期号 ID",
"manualBurstAmount": "爆池金额(空为全部)",
"manualBurstHint": "仅超级管理员可在紧急情况下触发;须该期已开奖结算且存在头奖中奖注单,按当前「爆池派彩比例」释放并派彩入账。",
"manualBurstConfirmTitle": "确认手动爆池?",
"manualBurstConfirmDescription": "将对期号 {{drawId}} 的头奖中奖玩家按奖池派彩比例分配 Jackpot并扣减奖池余额。此操作不可自动撤销。",
"processing": "处理中…",
"manualBurst": "手动爆池",
"manualBurst": "手动触发爆池(仅超管)",
"manualBurstConfirm": "确认爆池",
"cancel": "取消",
"filter": "筛选",
"drawNo": "期号",
"optional": "可选",

View File

@@ -29,6 +29,12 @@
"lastLogin": "最后登录",
"actions": "操作",
"edit": "编辑",
"freeze": "冻结",
"unfreeze": "解冻",
"freezeSuccess": "已冻结玩家 {{name}}",
"unfreezeSuccess": "已解冻玩家 {{name}}",
"freezeFailed": "冻结失败",
"unfreezeFailed": "解冻失败",
"delete": "删除",
"createDialogTitle": "新建玩家",
"editDialogTitle": "编辑玩家",
@@ -44,6 +50,10 @@
"cancel": "取消",
"save": "保存",
"saving": "保存中…",
"confirmFreezeTitle": "确认冻结玩家?",
"confirmFreezeDescription": "冻结后玩家 {{name}} 将无法下注。",
"confirmUnfreezeTitle": "确认解冻玩家?",
"confirmUnfreezeDescription": "解冻后玩家 {{name}} 将恢复正常。",
"confirmDelete": "确认删除",
"confirmDeleteDesc": "确定要删除玩家 {{name}} 吗?此操作不可恢复。"
}

View File

@@ -13,6 +13,10 @@
"periodRequired": "请填写对账日期范围(开始与结束)",
"periodInvalid": "日期无效,请检查所选日期",
"periodOrderInvalid": "结束时间需晚于或等于开始时间",
"confirmCreateTitle": "确认创建对账任务?",
"confirmCreateDescription": "将按所选日期范围{{playerHint}}发起人工对账。",
"confirmCreatePlayer": "及指定玩家",
"confirmCreateAllPlayers": "(全量玩家)",
"createSuccess": "已创建对账任务",
"createFailed": "创建失败",
"noCreatePermission": "当前账号无新建对账任务权限。",

View File

@@ -46,6 +46,12 @@
"manualCloseSuccess": "已手动关闭号码下注",
"recoverSuccess": "已恢复号码下注",
"actionFailed": "操作失败",
"confirm": {
"closeTitle": "确认关闭该号码下注?",
"closeDescription": "号码 {{number}} 在本期将被禁止下注。",
"recoverTitle": "确认恢复该号码下注?",
"recoverDescription": "号码 {{number}} 将恢复为可下注状态。"
},
"detailTitle": "风险池详情",
"loadDetailFailed": "加载风险池详情失败",
"backToList": "返回列表",

View File

@@ -34,6 +34,7 @@
"pending_confirm": "待确认",
"partial_pending_confirm": "部分待确认",
"success": "已投注成功",
"pending_draw": "待开奖",
"failed": "投注失败",
"pending_payout": "待派奖",
"settled_win": "已中奖结算",

View File

@@ -47,6 +47,12 @@
"reverseSuccess": "冲正成功",
"manualProcessSuccess": "人工处理成功",
"actionFailed": "操作失败",
"confirm": {
"reverseTitle": "确认冲正转账单?",
"reverseDescription": "将对单号 {{transferNo}} 执行冲正,可能影响玩家钱包余额。",
"manualProcessTitle": "确认人工处理?",
"manualProcessDescription": "将标记单号 {{transferNo}} 为已人工处理,不会自动调整钱包。"
},
"txnNo": "流水号",
"bizType": "类型(业务)",
"type": "类型",