- Added a new function to check if the hall is awaiting draw processing, improving the draw status handling. - Implemented validation for roll numbers in ticket orders, ensuring compliance with specified formats. - Enhanced the draft line issue reasoning to provide detailed feedback on invalid ticket entries. - Updated HallDrawPanel and related components to utilize the new draw processing checks and improve user notifications. - Added new translations for draw processing and ticket validation messages in multiple languages.
617 lines
26 KiB
JSON
617 lines
26 KiB
JSON
{
|
||
"brand": {
|
||
"name": "N lotto"
|
||
},
|
||
"actions": {
|
||
"retry": "Retry",
|
||
"refresh": "Refresh",
|
||
"apply": "Apply",
|
||
"clear": "Clear",
|
||
"cancel": "Cancel",
|
||
"confirm": "Confirm",
|
||
"close": "Close",
|
||
"loading": "Loading...",
|
||
"loadMore": "Load More",
|
||
"previous": "Previous",
|
||
"next": "Next",
|
||
"done": "Done",
|
||
"processing": "Processing...",
|
||
"deleteRow": "Delete row {{row}}"
|
||
},
|
||
"nav": {
|
||
"aria": "Main navigation",
|
||
"home": "Home",
|
||
"results": "Results",
|
||
"orders": "My Bets",
|
||
"rules": "Rules",
|
||
"wallet": "Wallet"
|
||
},
|
||
"panel": {
|
||
"home": "Home"
|
||
},
|
||
"network": {
|
||
"offline": "Network disconnected. Please check your connection.",
|
||
"degraded": "Network is unstable. Switched to fallback mode (polling...).",
|
||
"retryReconnect": "Try reconnecting",
|
||
"retry": "Retry",
|
||
"recoverWebsocket": "Try restoring WebSocket connection",
|
||
"recover": "Recover",
|
||
"reconnect": "Reconnect"
|
||
},
|
||
"token": {
|
||
"critical": "Login will expire soon",
|
||
"warning": "Login expiring soon",
|
||
"remaining": "Remaining {{time}}",
|
||
"autoRenewing": "Auto-renewing...",
|
||
"renewNow": "Renew now"
|
||
},
|
||
"serverError": {
|
||
"title": "Server error",
|
||
"appTitle": "Application error",
|
||
"unavailable": "Server temporarily unavailable",
|
||
"serverMessage": "Server temporarily unavailable. Please try again later.",
|
||
"appMessage": "Sorry, the application encountered a problem. Try refreshing the page.",
|
||
"details": "Error details:",
|
||
"errorId": "Error ID: {{id}}",
|
||
"refreshPage": "Refresh page",
|
||
"hall": "Betting hall",
|
||
"wallet": "My wallet",
|
||
"code": "Error code: 500 Internal Server Error",
|
||
"home": "Back home"
|
||
},
|
||
"notFound": {
|
||
"title": "Page not found",
|
||
"description": "Sorry, the page you visited may have been deleted, moved, or never existed.",
|
||
"home": "Back home",
|
||
"hall": "Betting hall",
|
||
"results": "Results",
|
||
"wallet": "My wallet"
|
||
},
|
||
"player": {
|
||
"fallback": "Player #{{id}}"
|
||
},
|
||
"draw": {
|
||
"currentIssue": "Current issue",
|
||
"currentTime": "Current Time",
|
||
"closesIn": "Closes In",
|
||
"drawsIn": "Draws In",
|
||
"drawProcessing": "Drawing…",
|
||
"coolDown": "Cool Down",
|
||
"loadFailedRefresh": "Failed to load. Pull down to refresh.",
|
||
"issueNo": "Issue No.",
|
||
"hall": "Betting Hall",
|
||
"noIssue": "No available issue. Please try again later.",
|
||
"sealedNotice": "Closed. Please wait for the next issue.",
|
||
"reviewNotice": "Draw results are pending admin review. The next issue opens after publish.",
|
||
"notBettableNotice": "Betting is not available right now. Please try again later.",
|
||
"status": {
|
||
"pending": "Not started",
|
||
"open": "Open",
|
||
"closing": "Closed",
|
||
"closed": "Awaiting draw",
|
||
"drawing": "Drawing",
|
||
"review": "Under review",
|
||
"cooldown": "Cool down",
|
||
"settling": "Settling",
|
||
"settled": "Settled",
|
||
"cancelled": "Cancelled"
|
||
}
|
||
},
|
||
"hall": {
|
||
"aria": "Betting table",
|
||
"loadingError": "Failed to load play rules. Please try again later.",
|
||
"noDraw": "No current issue. Cannot submit.",
|
||
"notBettable": "This issue is closed or cannot accept bets.",
|
||
"catalogNotReady": "Play configuration is still loading.",
|
||
"emptyLines": "Please enter at least one valid number and stake amount.",
|
||
"lineIssue": {
|
||
"invalid_number_length": "Row {{row}} «{{play}}»: invalid number length. Check the number field.",
|
||
"roll_requires_r": "Row {{row}} «{{play}}»: use 4 characters with at least one R (e.g. 12R4, RR34). R marks rolling digits.",
|
||
"missing_digit_slot": "Row {{row}} «{{play}}»: missing digit slot. Refresh and try again."
|
||
},
|
||
"previewFailed": "Preview failed",
|
||
"closedSubmit": "Closed. Cannot submit.",
|
||
"changedBeforeSubmit": "Your draft changed before submission. Close the preview and try again.",
|
||
"placeFailed": "Submission failed",
|
||
"placeSuccess": "Bet submitted. Order {{orderNo}}, deducted {{amount}}.",
|
||
"placePartialFailed": "{{success}} succeeded, {{failed}} failed",
|
||
"playConfig": {
|
||
"playClosedDraftCleared": "{{playCode}} is closed. Related draft amounts have been cleared.",
|
||
"playClosed": "{{playCode}} is closed.",
|
||
"updated": "Play configuration updated. The betting table has been refreshed.",
|
||
"oddsUpdated": "Odds updated. Please preview the ticket again."
|
||
},
|
||
"jackpotBurst": {
|
||
"title": "Jackpot Burst",
|
||
"subtitle": "Issue {{drawNo}} triggered a pool payout",
|
||
"number": "First prize number",
|
||
"numberPending": "First prize numbers are not published for this issue yet",
|
||
"amount": "Burst amount",
|
||
"winners": "Winners",
|
||
"triggerLabel": "Trigger",
|
||
"close": "Close",
|
||
"notificationTitle": "Jackpot Burst",
|
||
"notificationBody": "Issue {{drawNo}} paid {{amount}}",
|
||
"trigger": {
|
||
"threshold": "Threshold reached",
|
||
"forced_gap": "Forced gap reached",
|
||
"play_combo": "Play combo matched",
|
||
"manual": "Manual burst"
|
||
}
|
||
},
|
||
"closed": {
|
||
"title": "Closed",
|
||
"subtitle": "This issue is now closed.",
|
||
"description": "The betting window has closed. Please wait for the next issue to place your bets."
|
||
},
|
||
"jackpotPanel": {
|
||
"disabledTitle": "Unavailable",
|
||
"disabledSubtitle": "Jackpot is currently disabled.",
|
||
"disabledDescription": "The admin has turned off Jackpot for now. This tab remains visible for information only.",
|
||
"infoTitle": "Pool Information",
|
||
"infoSubtitle": "Jackpot is currently enabled.",
|
||
"infoDescription": "Jackpot is not a standalone play. Eligible tickets placed in the active plays will join the pool automatically based on admin rules.",
|
||
"closedInfoTitle": "Pool Information",
|
||
"closedInfoSubtitle": "Jackpot is currently enabled.",
|
||
"closedInfoDescription": "Jackpot uses automatic participation for eligible tickets. This issue is closed, so please wait for the next issue."
|
||
},
|
||
"jackpotParticipation": {
|
||
"title": "Automatic Jackpot Participation",
|
||
"previewDescription": "If this ticket is submitted successfully and meets the configured rules, it will join the Jackpot pool automatically. No separate Jackpot bet is needed.",
|
||
"resultDescription": "The successful ticket lines in this order will join the Jackpot pool automatically under the configured rules. If a first-prize hit later triggers the pool, it will settle together with the normal payout."
|
||
},
|
||
"boxMode": {
|
||
"iboxTitle": "iBox",
|
||
"iboxDesc": "Divide all by amount",
|
||
"boxTitle": "Box",
|
||
"boxDesc": "Multiply all by amount"
|
||
},
|
||
"table": {
|
||
"no": "No.",
|
||
"number": "Number",
|
||
"stake": "Stake Amount",
|
||
"rebate": "Commission / Rebate",
|
||
"actual": "Actual Deduction",
|
||
"delete": "Delete",
|
||
"addRow": "Add Row",
|
||
"draftTotal": "Bet Amount",
|
||
"totalBet": "Total",
|
||
"totalRebate": "Rebate",
|
||
"actualTotal": "Estimated Deduction",
|
||
"sealedHint": "Closed: this table is locked. Please wait for the next issue.",
|
||
"previewing": "Previewing...",
|
||
"submitBet": "Submit Bet",
|
||
"insufficientBalance": "Insufficient balance",
|
||
"amountPlaceholder": "Amount",
|
||
"digitShort": {
|
||
"big": "B",
|
||
"small": "S"
|
||
},
|
||
"filledPlayCount": "{{count}} plays filled",
|
||
"tapToFill": "Tap to enter amounts",
|
||
"rowActual": "Actual",
|
||
"editRow": "Edit row {{row}}",
|
||
"scrollHint": "This table is wide: swipe or scroll horizontally, then enter your stake in each play column on the right (e.g. Big/Small, position plays).",
|
||
"noPlaysInCategory": "No open play types in this tab, so there are no amount fields. Try 2D / 3D / 4D, or ask an admin to enable plays for this category.",
|
||
"soldOut": "Sold out",
|
||
"warning": "Almost sold out"
|
||
},
|
||
"quickFill": {
|
||
"title": "Quick fill",
|
||
"description": "Fill the current row with favorite or recent numbers in one tap.",
|
||
"clearAll": "Clear all",
|
||
"favorite": "Favorite number",
|
||
"unfavorite": "Remove favorite",
|
||
"favorites": "Favorites",
|
||
"tapHold": "Hold to remove",
|
||
"emptyFavorites": "No favorites yet",
|
||
"history": "Recent 20 numbers",
|
||
"emptyHistory": "No recent numbers"
|
||
},
|
||
"preview": {
|
||
"title": "Confirm bet",
|
||
"description": "Check the number, play type, and actual deduction. After confirmation, the lottery wallet will be debited and the ticket cannot be cancelled.",
|
||
"sealedTitle": "Closed",
|
||
"sealedDescription": "This issue has stopped accepting tickets. Please choose the next issue.",
|
||
"empty": "No preview data",
|
||
"draw": "Issue",
|
||
"status": "Status",
|
||
"amount": "Amount",
|
||
"rebate": "Rebate",
|
||
"total": "Total",
|
||
"totalBet": "Total stake",
|
||
"rebateDeduct": "Rebate deduction",
|
||
"actualDeduct": "Actual deduction",
|
||
"estimatedPayout": "Estimated max payout",
|
||
"lines": "Ticket lines",
|
||
"normalizedNumber": "Normalized number",
|
||
"combinationCount": "Combinations",
|
||
"actual": "Actual",
|
||
"estimatedMax": "Estimated max",
|
||
"backEdit": "Back to edit",
|
||
"submitting": "Submitting...",
|
||
"confirmSubmit": "Confirm submit",
|
||
"processingTitle": "Submitting your bets",
|
||
"processingDescription": "Please do not close the page or go back.",
|
||
"processingProgress": "Processing tickets...",
|
||
"noWarnings": "No obvious risk was found in this preview.",
|
||
"warningsTitle": "Payout pool warning",
|
||
"warningsDescription": "The following numbers have high payout pool usage for this issue. Betting is still allowed, but the order may be rejected as sold out if capacity is insufficient."
|
||
},
|
||
"result": {
|
||
"title": "Bet result",
|
||
"draw": "Issue",
|
||
"empty": "No result yet.",
|
||
"successCount": "Successful lines",
|
||
"failureCount": "Failed lines",
|
||
"actual": "Actual deduction",
|
||
"orderNo": "Order No.",
|
||
"balanceAfter": "Remaining balance",
|
||
"items": "Successful line details",
|
||
"number": "Number",
|
||
"actualDeduct": "Deducted",
|
||
"noFailures": "No ticket lines failed in this submission.",
|
||
"failedItems": "Failed line details",
|
||
"failed": "Failed",
|
||
"viewBets": "View tickets",
|
||
"continueBetting": "Continue betting"
|
||
},
|
||
"amountInput": {
|
||
"limit": "Limit {{min}} - {{max}}",
|
||
"placeholder": "e.g. 100.00"
|
||
},
|
||
"numberInput": {
|
||
"rollPlaceholder": "e.g. 12R4",
|
||
"digitPlaceholder": "0-9"
|
||
},
|
||
"playSwitcher": {
|
||
"empty": "No open play types are available for this currency.",
|
||
"label": "Play"
|
||
},
|
||
"playCatalog": {
|
||
"notReady": "Play configuration has not been initialized. Run the seed that includes OperationalConfigV1Seeder in Laravel.",
|
||
"loadFailed": "Failed to load play configuration. Please try again later.",
|
||
"loading": "Loading plays and odds...",
|
||
"meta": "Currency {{currency}} · Config versions play#{{playVersion}} / odds#{{oddsVersion}} · Limits use the smallest currency unit, same as wallet.",
|
||
"play": "Play",
|
||
"status": "Status",
|
||
"limit": "Bet limit",
|
||
"odds": "Odds x",
|
||
"description": "Description",
|
||
"open": "Open",
|
||
"closed": "Closed",
|
||
"riskTitle": "Risk cap (sample numbers)",
|
||
"number": "Number",
|
||
"capAmount": "Cap amount",
|
||
"type": "Type",
|
||
"title": "Plays and Odds",
|
||
"descriptionText": "Data comes from GET /api/v1/play/effective. After admin changes are published, it refreshes automatically within about {{seconds}}s, or manually.",
|
||
"refresh": "Refresh config"
|
||
},
|
||
"ticketError": {
|
||
"4001": "This number has insufficient payout pool capacity for this issue and is sold out. Change the number, amount, or play type and try again.",
|
||
"1001": "Insufficient balance. Transfer in before betting.",
|
||
"2001": "This issue is closed. Betting is no longer available.",
|
||
"2002": "This play type is closed. Choose another play type.",
|
||
"2004": "The number format or length does not match this play type.",
|
||
"2005": "Play parameters are incomplete, such as digit slot or dimension.",
|
||
"2006": "This issue cannot accept bets.",
|
||
"2007": "This play type is unsupported or missing odds configuration.",
|
||
"2008": "Odds or play configuration has changed. Close the preview and try again.",
|
||
"1003": "Stake amount is outside the allowed range for this play type.",
|
||
"fallback": "Bet failed. Please try again later."
|
||
},
|
||
"amountHint": {
|
||
"iboxRoll": "This play uses a per-bet amount. The system calculates total stake and deduction after expanding combinations.",
|
||
"mbox": "This play uses a total input amount. It is split across permutations, rounded down to the smallest currency unit.",
|
||
"default": "Amount is the stake for this ticket line, using the smallest currency unit just like wallet."
|
||
}
|
||
},
|
||
"wallet": {
|
||
"title": "Wallet",
|
||
"subtitle": "Balance and transfer records",
|
||
"balance": "Wallet Balance",
|
||
"available": "Available {{amount}}",
|
||
"transferIn": "Transfer In",
|
||
"transferOut": "Transfer Out",
|
||
"inPage": "In Page",
|
||
"outPage": "Out Page",
|
||
"logs": "Logs",
|
||
"logsTitle": "Wallet Logs",
|
||
"logsSubtitle": "Transfer and betting records",
|
||
"typeFilter": "Type Filter",
|
||
"transferInTitle": "Transfer In",
|
||
"transferOutTitle": "Transfer Out",
|
||
"transferInSubtitle": "Add funds to lottery wallet ({{currency}})",
|
||
"transferOutSubtitle": "Move available balance back ({{currency}})",
|
||
"transferInDescription": "Move funds from the main-site wallet into the lottery wallet. Per-transaction limits are validated by the server.",
|
||
"transferOutDescription": "Move funds back to the main-site wallet. Per-transaction limits are validated by the server.",
|
||
"dialogInDescription": "Move funds from the main-site wallet into the lottery wallet. The minimum amount is validated by the server, usually about 1.00 {{currency}}.",
|
||
"dialogOutDescription": "Move funds back to the main-site wallet. Per-transaction limits are validated by the server.",
|
||
"mainBalance": "Main-site wallet balance:",
|
||
"mainPending": "— (main site integration pending)",
|
||
"lotteryBalance": "Lottery wallet balance:",
|
||
"lotteryAvailable": "Lottery wallet available:",
|
||
"inAmount": "Transfer-in amount",
|
||
"outAmount": "Transfer-out amount",
|
||
"exampleIn": "e.g. 1000.00",
|
||
"exampleOut": "e.g. 500.00",
|
||
"afterInPreview": "Lottery balance after transfer-in (preview): {{amount}}",
|
||
"afterOutPreview": "Lottery balance after transfer-out (preview): {{amount}}",
|
||
"allOut": "Transfer all {{amount}}",
|
||
"confirmIn": "Confirm transfer in",
|
||
"confirmOut": "Confirm transfer out",
|
||
"successIn": "Transfer in succeeded. Lottery wallet balance updated.",
|
||
"successOut": "Transfer out succeeded. Funds will return to the main-site wallet.",
|
||
"pendingShort": "Transfer is processing. Refresh later.",
|
||
"pendingToast": "Processing...",
|
||
"invalidAmount": "Enter a valid amount.",
|
||
"outExceeds": "Transfer-out amount cannot exceed available balance.",
|
||
"pendingTitle": "Pending reconciliation",
|
||
"pendingDescription": "The following transfers have not been finally confirmed by the main site. Contact support if they do not arrive after a long time.",
|
||
"pendingStatus": "Processing",
|
||
"flowsTitle": "Wallet logs",
|
||
"totalRecords": "{{total}} records",
|
||
"emptyLogs": "No wallet logs",
|
||
"balanceAfter": "Balance after",
|
||
"flow": {
|
||
"all": "All",
|
||
"transfer_in": "Transfer in",
|
||
"transfer_out": "Transfer out",
|
||
"bet": "Bet deduction",
|
||
"prize": "Payout",
|
||
"refund": "Refund",
|
||
"reversal": "Reversal"
|
||
},
|
||
"txnStatus": {
|
||
"posted": "Success",
|
||
"pending_reconcile": "Pending reconciliation",
|
||
"reversed": "Reversed",
|
||
"manually_processed": "Manually processed"
|
||
},
|
||
"error": {
|
||
"401": "Login expired. Please return and enter again.",
|
||
"409": "Transfer is processing. Refresh later. Contact support if it does not arrive after a long time.",
|
||
"network": "Network error. Check your connection and try again.",
|
||
"timeout": "Request timed out. Please try again later.",
|
||
"fallback": "Request failed. Please try again later.",
|
||
"1001": "Lottery wallet balance is insufficient. Transfer in or reduce the transfer-out amount.",
|
||
"1002": "Transfer is processing. Refresh the balance here later. Contact support if it does not arrive after a long time.",
|
||
"1003": "Amount exceeds the per-transaction or daily limit. Adjust the amount.",
|
||
"1004": "Transfer in is temporarily paused. Try again later or contact support.",
|
||
"1005": "Currency is invalid or unavailable.",
|
||
"1006": "Transfer out is temporarily paused. Try again later or contact support.",
|
||
"1007": "Lottery wallet is frozen and cannot transfer funds.",
|
||
"1008": "Amount format is invalid.",
|
||
"1009": "The main site could not complete this transfer. Please try again later.",
|
||
"1010": "Do not use the same idempotency key for transfers with different amounts."
|
||
}
|
||
},
|
||
"orders": {
|
||
"title": "My Bets",
|
||
"subtitle": "Recent ticket records",
|
||
"betDetail": "Bet Detail",
|
||
"filteredIssue": "Filtered Issue",
|
||
"totalRecords": "Total Records",
|
||
"betNow": "Bet Now",
|
||
"empty": "No bet records yet.",
|
||
"dateRange": "Date range",
|
||
"status": "Status",
|
||
"statusFilter": "Status filter",
|
||
"noMore": "No more tickets",
|
||
"submitBet": "Submit Bet",
|
||
"stake": "Stake",
|
||
"deduction": "Deduction",
|
||
"win": "Win {{amount}}",
|
||
"detailTitle": "Ticket detail",
|
||
"ticketNo": "Ticket {{ticketNo}}",
|
||
"orderNo": "Order {{orderNo}}",
|
||
"orderNoLabel": "Order No.",
|
||
"orderNoAt": "Order No. {{orderNo}} · {{time}}",
|
||
"noOrderNo": "—",
|
||
"groupDetail": "Order detail",
|
||
"groupNotFound": "Could not load this order. Please open it again from My Bets.",
|
||
"betItems": "Bet lines",
|
||
"itemCount": "{{count}} bet line(s)",
|
||
"viewBetLine": "View bet line detail",
|
||
"drawNo": "Issue",
|
||
"placedAt": "Placed at",
|
||
"number": "Number",
|
||
"play": "Play",
|
||
"amount": "Stake amount",
|
||
"rebateRate": "Rebate rate",
|
||
"actualDeduct": "Actual deduction",
|
||
"oddsSnapshot": "Odds snapshot",
|
||
"drawNumbers": "Draw numbers (this issue)",
|
||
"firstPrize": "First prize",
|
||
"hit": "Hit",
|
||
"notPublished": "Draw numbers are not published or cannot be displayed yet.",
|
||
"matchWin": "Match result: hit {{tier}}",
|
||
"winAmount": "Win amount {{amount}}",
|
||
"jackpotAmount": "Jackpot {{amount}}",
|
||
"payoutTotal": "Payout total {{amount}}",
|
||
"matchLose": "Match result: not won",
|
||
"matchResult": "Match result",
|
||
"drawPendingMatch": "Draw numbers are not published yet. Winning status cannot be determined.",
|
||
"matchPendingDraw": "Waiting for draw results. Winning status cannot be determined yet.",
|
||
"matchPendingSettlement": "Draw results are published. Winning status will show after settlement.",
|
||
"timeline": "Timeline",
|
||
"settledAt": "Settled at {{time}}",
|
||
"viewDraw": "View this draw",
|
||
"backToOrders": "Back to My Bets",
|
||
"backToGroup": "Back to order detail",
|
||
"notFound": "Ticket does not exist or cannot be viewed.",
|
||
"noData": "No data",
|
||
"loadFailed": "Failed to load"
|
||
},
|
||
"results": {
|
||
"title": "Results",
|
||
"subtitle": "Latest draw history",
|
||
"detailTitle": "Result Detail",
|
||
"businessDate": "Business Date",
|
||
"selectBusinessDate": "Select date",
|
||
"empty": "No results yet.",
|
||
"detail": "Detail",
|
||
"openDetail": "Open detail",
|
||
"loadFailed": "Failed to load",
|
||
"unavailable": "This result is unavailable or does not exist.",
|
||
"noData": "No data",
|
||
"previous": "‹ Previous",
|
||
"next": "Next ›",
|
||
"drawTime": "Draw time: {{time}}",
|
||
"myPayout": "My payout for this issue",
|
||
"regular": "Regular: {{amount}}",
|
||
"jackpot": "Jackpot: {{amount}}",
|
||
"hitPending": "Your ticket has hit a result cell in this issue. The amount summary will show after payout is completed.",
|
||
"hitHint": "If you win, numbers matched by your tickets are highlighted in gold.",
|
||
"viewMyWinning": "View my winning status",
|
||
"jackpotLabel": "Jackpot",
|
||
"jackpotGap": "{{count}} draws since last burst",
|
||
"noMore": "No more results",
|
||
"check": {
|
||
"title": "Check My Winnings",
|
||
"loadFailed": "Query failed. Please try again later.",
|
||
"enterTicket": "Enter your ticket number or number",
|
||
"description": "The system checks your tickets and winnings against the latest published draw.",
|
||
"ticketNumber": "Ticket No. / Number",
|
||
"placeholder": "Enter ticket number or number",
|
||
"latestDraw": "Latest issue {{drawNo}}",
|
||
"loading": "Checking...",
|
||
"submit": "Check now",
|
||
"recent": "Recent checks",
|
||
"noRecent": "No recent checks.",
|
||
"winTitle": "Congratulations, you won",
|
||
"noWinTitle": "No winning result found",
|
||
"match": "Match",
|
||
"amount": "Winning amount",
|
||
"drawInfo": "Draw info",
|
||
"issueNo": "Issue No.",
|
||
"viewBetDetails": "View bet details",
|
||
"checkAnother": "Check another ticket"
|
||
},
|
||
"tier": {
|
||
"first": "First prize",
|
||
"second": "Second prize",
|
||
"third": "Third prize",
|
||
"starter": "Starter",
|
||
"consolation": "Consolation"
|
||
},
|
||
"grid": {
|
||
"first": "First prize",
|
||
"second": "Second prize",
|
||
"third": "Third prize",
|
||
"starter": "Starter",
|
||
"consolation": "Consolation"
|
||
}
|
||
},
|
||
"rules": {
|
||
"title": "Play Rules",
|
||
"subtitle": "2D / 3D / 4D, box plays, rebate, closing and sold-out rules",
|
||
"quick": {
|
||
"title": "Prize Structure",
|
||
"description": "Each draw publishes 23 four-digit numbers. Settlement uses the odds snapshot locked when the bet was placed.",
|
||
"totalPrizes": "Prize groups",
|
||
"cooldown": "Cooldown mins",
|
||
"snapshot": "Odds snapshot"
|
||
},
|
||
"prizes": {
|
||
"first": "First prize",
|
||
"second": "Second prize",
|
||
"third": "Third prize",
|
||
"starter": "Starter",
|
||
"consolation": "Consolation"
|
||
},
|
||
"sections": {
|
||
"dimensions": {
|
||
"title": "What are 2D, 3D and 4D",
|
||
"d4": "4D: match the full four-digit number, for example 1234.",
|
||
"d3": "3D: match your last three digits against the result's last three digits, for example 234 can hit 1234.",
|
||
"d2": "2D: match your last two digits against the result's last two digits, for example 34 can hit 1234."
|
||
},
|
||
"bigSmall": {
|
||
"title": "Big vs Small",
|
||
"big": "Big: covers all 23 prizes. Any hit in first, second, third, starter or consolation wins.",
|
||
"small": "Small: only covers first, second and third prizes. Starter or consolation hits do not win."
|
||
},
|
||
"positions": {
|
||
"title": "Position Plays",
|
||
"d4": "4A / 4B / 4C map to first, second and third prize. 4D hits any starter row. 4E hits any consolation row.",
|
||
"d3": "3A / 3B / 3C match the last three digits of first, second and third prize. 3ABC hits any of those three.",
|
||
"d2": "2A / 2B / 2C match the last two digits of first, second and third prize. 2ABC hits any of those three."
|
||
},
|
||
"box": {
|
||
"title": "Box Plays",
|
||
"straight": "Straight: only the exact same order wins.",
|
||
"box": "Box: expands unique permutations and settles the winning expanded number.",
|
||
"ibox": "iBox: every permutation is staked by the unit amount. Total deduction = unit amount × combinations × (1 - rebate rate).",
|
||
"mbox": "mBox: input amount is shared across combinations. Any indivisible remainder is not deducted and is treated as returned to wallet.",
|
||
"roll": "Roll: R marks a rolling digit covering 0-9. Combination count = 10 to the power of R count.",
|
||
"half": "Half Box: reserved for phase one data structure only and not open on the player side."
|
||
},
|
||
"attributes": {
|
||
"title": "Head / Tail, Odd / Even and Digit Size",
|
||
"headTail": "Head / Tail only checks the first digit of the first prize. 5-9 is Head, 0-4 is Tail.",
|
||
"oddEven": "Odd / Even checks the last digit. 1/3/5/7/9 is odd and 0/2/4/6/8 is even. It can be combined with 2D / 3D / 4D dimensions.",
|
||
"digitSize": "Big Digit / Small Digit checks a selected digit. 5-9 is big and 0-4 is small. Multiple selected digits settle independently."
|
||
},
|
||
"wallet": {
|
||
"title": "Jackpot, Rebate, Closing and Sold Out",
|
||
"rebate": "Rebate / commission is locked into the ticket odds snapshot and is not changed by later configuration updates.",
|
||
"jackpot": "Jackpot depends on backend pool configuration. Burst, contribution and payout follow system records.",
|
||
"close": "Closing: after close time, the hall cannot edit or submit bets.",
|
||
"soldOut": "Sold out: when payout pool capacity is insufficient, preview may warn and final submission can reject the whole order."
|
||
}
|
||
},
|
||
"footer": {
|
||
"config": "Hall play columns, enabled state, limits and odds come from the active backend play configuration.",
|
||
"phaseTwo": "5D / 6D are phase-two extensions and have no available entry in phase one.",
|
||
"backBet": "Back to betting hall"
|
||
}
|
||
},
|
||
"ticketStatus": {
|
||
"success": "Awaiting draw",
|
||
"pending_draw": "Awaiting draw",
|
||
"pending_payout": "Won, pending payout",
|
||
"settled_win": "Paid",
|
||
"settled_lose": "Not won",
|
||
"failed": "Failed",
|
||
"unknown": "{{status}}"
|
||
},
|
||
"prizeTier": {
|
||
"first": "First prize",
|
||
"second": "Second prize",
|
||
"third": "Third prize",
|
||
"starter": "Starter",
|
||
"consolation": "Consolation"
|
||
},
|
||
"playLabels": {
|
||
"big": "Big",
|
||
"small": "Small",
|
||
"pos_4a": "4A",
|
||
"pos_4b": "4B",
|
||
"pos_4c": "4C",
|
||
"pos_4d": "4D",
|
||
"pos_4e": "4E",
|
||
"pos_3a": "3A",
|
||
"pos_3b": "3B",
|
||
"pos_3c": "3C",
|
||
"pos_3abc": "3ABC",
|
||
"pos_2a": "2A",
|
||
"pos_2b": "2B",
|
||
"pos_2c": "2C",
|
||
"pos_2abc": "2ABC",
|
||
"straight": "Straight",
|
||
"box": "Box",
|
||
"ibox": "iBox",
|
||
"mbox": "mBox",
|
||
"roll": "Roll",
|
||
"half_box": "Half Box",
|
||
"head": "Head",
|
||
"tail": "Tail",
|
||
"odd": "Odd",
|
||
"even": "Even",
|
||
"digit_big": "Big Digit",
|
||
"digit_small": "Small Digit"
|
||
}
|
||
}
|