feat: 增加管理端多语言与多模块界面国际化支持

This commit is contained in:
2026-05-19 09:11:55 +08:00
parent 49a4caf01e
commit 1b1dfc92ab
110 changed files with 4053 additions and 1308 deletions

View File

@@ -6,48 +6,108 @@ import { initReactI18next } from "react-i18next";
import { adminHtmlLang, applyAdminUiLocale, type AdminApiLocale } from "@/lib/admin-locale";
import enAudit from "@/i18n/locales/en/audit.json";
import enAdminUsers from "@/i18n/locales/en/adminUsers.json";
import enAuth from "@/i18n/locales/en/auth.json";
import enCommon from "@/i18n/locales/en/common.json";
import enConfig from "@/i18n/locales/en/config.json";
import enDashboard from "@/i18n/locales/en/dashboard.json";
import enDraws from "@/i18n/locales/en/draws.json";
import enJackpot from "@/i18n/locales/en/jackpot.json";
import enReports from "@/i18n/locales/en/reports.json";
import enRisk from "@/i18n/locales/en/risk.json";
import enSettlement from "@/i18n/locales/en/settlement.json";
import enPlayers from "@/i18n/locales/en/players.json";
import enTickets from "@/i18n/locales/en/tickets.json";
import enReconcile from "@/i18n/locales/en/reconcile.json";
import enWallet from "@/i18n/locales/en/wallet.json";
import neAudit from "@/i18n/locales/ne/audit.json";
import neAdminUsers from "@/i18n/locales/ne/adminUsers.json";
import neAuth from "@/i18n/locales/ne/auth.json";
import neCommon from "@/i18n/locales/ne/common.json";
import neConfig from "@/i18n/locales/ne/config.json";
import neDashboard from "@/i18n/locales/ne/dashboard.json";
import neDraws from "@/i18n/locales/ne/draws.json";
import neJackpot from "@/i18n/locales/ne/jackpot.json";
import neReports from "@/i18n/locales/ne/reports.json";
import neRisk from "@/i18n/locales/ne/risk.json";
import neSettlement from "@/i18n/locales/ne/settlement.json";
import nePlayers from "@/i18n/locales/ne/players.json";
import neTickets from "@/i18n/locales/ne/tickets.json";
import neReconcile from "@/i18n/locales/ne/reconcile.json";
import neWallet from "@/i18n/locales/ne/wallet.json";
import zhAudit from "@/i18n/locales/zh/audit.json";
import zhAdminUsers from "@/i18n/locales/zh/adminUsers.json";
import zhAuth from "@/i18n/locales/zh/auth.json";
import zhCommon from "@/i18n/locales/zh/common.json";
import zhConfig from "@/i18n/locales/zh/config.json";
import zhDashboard from "@/i18n/locales/zh/dashboard.json";
import zhDraws from "@/i18n/locales/zh/draws.json";
import zhJackpot from "@/i18n/locales/zh/jackpot.json";
import zhReports from "@/i18n/locales/zh/reports.json";
import zhRisk from "@/i18n/locales/zh/risk.json";
import zhSettlement from "@/i18n/locales/zh/settlement.json";
import zhPlayers from "@/i18n/locales/zh/players.json";
import zhTickets from "@/i18n/locales/zh/tickets.json";
import zhReconcile from "@/i18n/locales/zh/reconcile.json";
import zhWallet from "@/i18n/locales/zh/wallet.json";
export const ADMIN_SUPPORTED_LANGUAGES = ["en", "ne", "zh"] as const;
export type AdminLanguage = (typeof ADMIN_SUPPORTED_LANGUAGES)[number];
export const ADMIN_DEFAULT_LANGUAGE: AdminLanguage = "en";
const namespaces = ["common", "auth", "dashboard", "reports", "audit"] as const;
const namespaces = ["common", "auth", "dashboard", "reports", "audit", "draws", "settlement", "risk", "jackpot", "players", "tickets", "reconcile", "wallet", "adminUsers", "config"] as const;
const resources = {
en: {
common: enCommon,
config: enConfig,
adminUsers: enAdminUsers,
auth: enAuth,
dashboard: enDashboard,
draws: enDraws,
jackpot: enJackpot,
players: enPlayers,
tickets: enTickets,
reconcile: enReconcile,
reports: enReports,
risk: enRisk,
audit: enAudit,
settlement: enSettlement,
wallet: enWallet,
},
ne: {
common: neCommon,
config: neConfig,
adminUsers: neAdminUsers,
auth: neAuth,
dashboard: neDashboard,
draws: neDraws,
jackpot: neJackpot,
players: nePlayers,
tickets: neTickets,
reconcile: neReconcile,
reports: neReports,
risk: neRisk,
audit: neAudit,
settlement: neSettlement,
wallet: neWallet,
},
zh: {
common: zhCommon,
config: zhConfig,
adminUsers: zhAdminUsers,
auth: zhAuth,
dashboard: zhDashboard,
draws: zhDraws,
jackpot: zhJackpot,
players: zhPlayers,
tickets: zhTickets,
reconcile: zhReconcile,
reports: zhReports,
risk: zhRisk,
audit: zhAudit,
settlement: zhSettlement,
wallet: zhWallet,
},
} satisfies Record<AdminLanguage, Record<(typeof namespaces)[number], Record<string, unknown>>>;

View File

@@ -0,0 +1,83 @@
{
"title": "Admins",
"listTitle": "Admin user list",
"createAdmin": "Create admin",
"searchPlaceholder": "Search by username / nickname / email",
"loadFailed": "Failed to load admin list",
"nicknameRequired": "Enter a nickname",
"newPasswordMin": "New password must be at least 8 characters",
"roleRequired": "Select at least one role",
"usernameRequired": "Enter a login username",
"passwordMin": "Password must be at least 8 characters",
"createSuccess": "Created admin {{name}}",
"updateSuccess": "Updated {{name}}",
"saveAccountFailed": "Failed to save account",
"deleteSuccess": "Deleted {{name}}",
"deleteFailed": "Delete failed",
"allPermissions": "All permissions",
"saveRoleSuccess": "Updated roles for {{name}}",
"saveRoleFailed": "Failed to save roles",
"savePermissionSuccess": "Updated permissions for {{name}}",
"savePermissionFailed": "Failed to save permissions",
"saving": "Saving…",
"deleting": "Deleting…",
"common": {
"none": "None"
},
"table": {
"account": "Account",
"nickname": "Nickname",
"status": "Status",
"roles": "Roles",
"direct": "Direct",
"effective": "Effective",
"actions": "Actions"
},
"status": {
"enabled": "Enabled",
"disabled": "Disabled"
},
"actions": {
"permissions": "Permissions",
"edit": "Edit",
"delete": "Delete",
"cancel": "Cancel",
"save": "Save"
},
"permissionDialog": {
"title": "Admin permissions",
"rolesTitle": "Roles",
"rolesDescription": "Saved as default-site roles and merged with direct permissions as effective permissions.",
"rolePermissionCount": "Contains {{count}} functional permissions",
"directTitle": "Direct permissions",
"directDescription": "Expand by menu or domain and check specific prd.* items; in most cases role changes are enough.",
"selectedRoles": "Selected roles:",
"saveRoles": "Save roles",
"saveDirect": "Save direct permissions"
},
"accountDialog": {
"createTitle": "Create admin",
"editTitle": "Edit account",
"createDescription": "Assign at least one default-site role. Login usernames may contain letters, numbers, dots, underscores, and hyphens only, and are stored in lowercase.",
"editDescription": "Login username cannot be changed. Leave password empty to keep it unchanged.",
"username": "Login username",
"usernamePlaceholder": "For example: ops_admin",
"nickname": "Nickname",
"nicknamePlaceholder": "Display name",
"emailOptional": "Email (optional)",
"emailPlaceholder": "Leave empty if not needed",
"password": "Password",
"passwordOptional": "Password (optional)",
"passwordPlaceholderCreate": "At least 8 characters",
"passwordPlaceholderEdit": "Leave empty to keep unchanged",
"rolesRequired": "Roles (default site, at least one)",
"rolesDescription": "After creation, you can continue adjusting roles or grant direct permissions in Permissions.",
"noRoles": "No roles available yet. Wait for the list to finish loading and try again."
},
"delete": {
"currentUserBlocked": "You cannot delete the currently signed-in account",
"rowActionTitle": "Delete this admin",
"confirmTitle": "Confirm deletion",
"confirmDescription": "Delete admin {{name}}? This action cannot be undone."
}
}

View File

@@ -1,3 +1,14 @@
{
"title": "Audit Logs"
"title": "Audit Logs",
"moduleCode": "Module code",
"actionCode": "Action code",
"operatorType": "Operator type",
"exactMatch": "Exact match",
"operatorTypePlaceholder": "For example admin / system",
"operator": "Operator",
"module": "Module",
"action": "Action",
"target": "Target",
"time": "Time",
"empty": "No data"
}

View File

@@ -1,3 +1,24 @@
{
"title": "Login"
"title": "Login",
"loginTitle": "Admin Login",
"account": "Account",
"accountPlaceholder": "Login account",
"password": "Password",
"passwordPlaceholder": "Password",
"captcha": "Captcha",
"captchaPlaceholder": "Enter captcha",
"captchaLoading": "Loading captcha",
"captchaRefresh": "Click to refresh captcha",
"captchaFetch": "Click to get captcha",
"apiMissingTitle": "API base URL not configured",
"apiMissingDescriptionPrefix": "Set",
"apiMissingDescriptionSuffix": "in the environment (Laravel base URL, for example http://127.0.0.1:8000).",
"submit": "Log in",
"submitting": "Signing in…",
"captchaLoadFailed": "Failed to load captcha. Check the API or network.",
"apiBaseMissingToast": "NEXT_PUBLIC_LOTTERY_API_BASE_URL is not configured",
"captchaRequired": "Refresh the captcha first",
"welcome": "Welcome, {{name}}",
"networkFailed": "Network request failed",
"loginFailed": "Login failed"
}

View File

@@ -4,7 +4,7 @@
"ne": "नेपाली",
"zh": "中文",
"title": "Interface language",
"changed": "Language"
"changed": "Language switched to {{language}}"
},
"app": {
"title": "Lottery Admin"
@@ -15,6 +15,65 @@
"search": "Search",
"apply": "Apply",
"loading": "Loading...",
"submitting": "Submitting..."
"submitting": "Submitting...",
"logout": "Log out",
"close": "Close",
"viewAll": "View all",
"viewDetails": "View details",
"reviewNow": "Review now",
"create": "Create",
"createTask": "Create task",
"clear": "Clear",
"done": "Done"
},
"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."
},
"pagination": {
"perPage": "Per page",
"selectPlaceholder": "Select",
"summary": "{{total}} total, page {{page}} / {{lastPage}}",
"previous": "Previous",
"next": "Next"
},
"states": {
"noData": "No data",
"loading": "Loading…",
"comingSoon": "Feature under development"
},
"errors": {
"loadFailed": "Failed to load"
},
"toolbar": {
"defaultAdmin": "Administrator",
"notifications": "Notifications",
"notificationsComingSoon": "Notifications are under development",
"accountSettings": "Account settings",
"loggedOut": "Signed out"
},
"nav": {
"home": "Home",
"dashboard": "Dashboard",
"admin_users": "Admin Users",
"players": "Players",
"wallet": "Wallet",
"draws": "Draws",
"config": "Configuration",
"risk": "Risk",
"settlement": "Settlement",
"jackpot": "Jackpot",
"reconcile": "Reconcile",
"tickets": "Tickets",
"reports": "Reports",
"audit": "Audit Logs",
"settings": "Settings"
},
"sidebar": {
"workspace": "Workspace"
},
"auth": {
"checking": "Checking sign-in status…"
}
}

View File

@@ -0,0 +1,83 @@
{
"title": "Configuration Center",
"nav": {
"aria": "Operations configuration sub-navigation",
"sidebarTitle": "Operations configuration",
"groups": {
"betting": "Betting and display",
"risk_wallet": "Risk and funds"
},
"items": {
"plays": "Play types and limits",
"odds": "Odds",
"rebate": "Commission / rebate",
"risk-cap": "Payout caps",
"wallet": "Wallet thresholds"
}
},
"versionStatus": {
"active": "Active",
"draft": "Draft",
"archived": "Archived"
},
"versionSwitcher": {
"sheetTitle": "Switch configuration version",
"sheetDescription": "Choose a version to view on this page. Drafts are editable, while active and archived versions are read-only.",
"loading": "Loading…",
"noneSelected": "No version selected",
"switch": "Switch version",
"empty": "No version records yet.",
"count": "{{count}} items",
"effectiveAt": "Effective at: {{value}}",
"note": "Note: {{value}}",
"current": "Current",
"selected": "Selected",
"view": "View",
"rollback": "Rollback",
"delete": "Delete",
"deleteConfirmTitle": "Delete this version?",
"deleteConfirmDescription": "Version ID {{id}} (version_no {{version}}) will be permanently deleted. Active versions cannot be deleted."
},
"versionActions": {
"publishCurrent": "Set as current version",
"refreshing": "Refreshing",
"refresh": "Refresh versions",
"newDraft": "New draft",
"saveDraft": "Save draft"
},
"wallet": {
"title": "Wallet transfer limit settings",
"description": "Amounts use the game's minor currency unit (for example, under NPR, 100 = 1.00 NPR). The minimum amount must be at least 1 minor unit.",
"loadFailed": "Failed to load",
"saveSuccess": "Saved successfully",
"saveFailed": "Save failed",
"fields": {
"inMin": "Minimum transfer-in amount",
"inMax": "Maximum transfer-in amount",
"outMin": "Minimum transfer-out amount",
"outMax": "Maximum transfer-out amount"
},
"placeholders": {
"min": "For example: 1.00",
"max": "For example: 10000.00"
},
"hints": {
"inMin": "Per-order minimum from main wallet to lottery wallet",
"inMax": "Per-order maximum from main wallet to lottery wallet",
"outMin": "Per-order minimum from lottery wallet to main wallet",
"outMax": "Per-order maximum from lottery wallet to main wallet"
},
"discard": "Discard changes"
},
"play": {
"batchGroups": {
"d2": "2D Global",
"d3": "3D Global",
"d4": "4D Global",
"big-small": "Big / Small",
"position": "Position Plays",
"box": "Box Plays",
"jackpot": "Jackpot"
}
}
}

View File

@@ -1,3 +1,57 @@
{
"title": "Dashboard"
"title": "Dashboard",
"refresh": "Refresh",
"notice": "Notice",
"todayBetTotal": "Current draw total bet",
"currentDrawFinanceSummary": "Finance summary for the current hall draw",
"currentPayout": "Current payout",
"payoutSummary": "Winning payout + Jackpot",
"currentProfit": "Current platform profit",
"profitFormula": "Bet - payout (approx.)",
"currentDraw": "Current draw",
"drawSequence": "Round {{sequence}}",
"drawDetails": "Draw details",
"ticketCount": "Ticket item count",
"relatedBetAmount": "Related bet amount",
"riskCapUsage": "Risk cap usage",
"lockedAndCap": "Locked {{locked}} / Cap {{cap}}",
"occupancyDetails": "Occupancy details",
"hotNumbersTop10": "Top 10 hot numbers",
"playDimension": "Play dimension",
"soldOutDistribution": "Sold-out distribution",
"soldOutTotal": "Total sold out",
"pendingReviewResults": "Pending result review",
"abnormalTransferOrders": "Abnormal transfer orders",
"viewTransferOrders": "View transfer orders",
"noSoldOutNumbers": "No sold-out numbers",
"noPoolData": "No pool data for this dimension",
"numbersByUsage": "Numbers by usage",
"capUsage": "Cap usage",
"tabs": {
"4d": "4D",
"3d": "3D",
"2d": "2D",
"special": "Special"
},
"soldOutBuckets": {
"d4": "4D",
"d3": "3D",
"d2": "2D",
"special": "Special",
"other": "Other"
},
"quickLinks": {
"createDrawPlan": "Create draw plan",
"drawSchedule": "Open sale / draws",
"results": "Results",
"tickets": "Ticket management",
"walletTransactions": "Wallet transactions",
"reports": "Reports",
"auditLogs": "Audit logs"
},
"warnings": {
"drawPermission": "This account has no draw view/manage 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."
}
}

View File

@@ -0,0 +1,132 @@
{
"title": "Draws",
"statusListTitle": "Draw list",
"generatePlan": "Generate draw plan",
"generating": "Generating…",
"generateSuccess": "Generated {{created}} draws, buffer {{upcoming}}/{{target}}",
"generateFailed": "Generation failed",
"drawNo": "Draw no.",
"status": "Status",
"startTime": "Start time",
"closeTime": "Close time",
"drawTime": "Draw time",
"betTotal": "Total bet",
"payoutTotal": "Total payout",
"profitLoss": "Profit/Loss",
"actions": "Actions",
"queryDraw": "Search draw",
"reset": "Reset",
"fuzzyDrawNo": "Fuzzy draw no.",
"viewDetails": "View details",
"invalidDrawId": "Invalid draw ID",
"loadFailed": "Failed to load. Check login and API configuration.",
"drawDetail": "Draw details",
"businessDate": "Business date",
"sequenceNo": "Sequence no.",
"plannedDraw": "Planned draw",
"coolingEndTime": "Cooling ends at",
"resultSource": "Result source",
"currentResultVersion": "Current result version",
"settleVersion": "Settlement version",
"isReopened": "Reopened",
"yes": "Yes",
"no": "No",
"batchStats": "Batch stats",
"batchTotal": "Total batches",
"pendingReview": "Pending review",
"published": "Published",
"viewFinance": "View draw finance",
"drawActions": "Draw actions",
"drawActionsDesc": "Manual close / cancel / RNG / reopen / settlement all call backend APIs directly.",
"manualClose": "Manual close",
"cancelDraw": "Cancel draw",
"cancelBeforeDraw": "Cancel before draw",
"rngDraw": "RNG draw",
"rngAutoGenerate": "RNG auto generate",
"reopen": "Reopen",
"cooldownReopen": "Reopen in cooldown",
"runSettlement": "Run settlement",
"processing": "Processing…",
"actionSuccess": "{{name}} succeeded",
"actionFailed": "{{name}} failed",
"hallPreviewStatus": "Hall preview {{status}}",
"financeOverview": "Draw finance overview",
"orderAndItemCount": "Orders / Ticket items",
"actualBet": "Actual bet deducted",
"currentPayout": "Current payout total",
"grossProfit": "Approx. gross profit",
"settlementBatchList": "Settlement batch list (filter by draw)",
"relatedSettlementBatches": "Related settlement batches",
"noSettlementBatches": "No settlement batch records.",
"ticketCount": "Tickets",
"winCount": "Wins",
"finishedAt": "Finished at",
"resultsTitle": "Results",
"reviewAndPublish": "Review / publish",
"viewReviewQueue": "View review queue",
"noPublishedBatch": "No published batches.",
"version": "Version v{{version}}",
"sourceType": "Source {{source}}",
"manualEntry": "Manual",
"rng": "RNG",
"rngSummary": "RNG hash {{hash}}",
"confirmedAt": "Confirmed at {{time}}",
"prize": "Prize",
"tail3": "Last 3",
"tail2": "Last 2",
"headTail": "Head/Tail",
"manualResultEntry": "Manual result entry",
"currentStatusAndDraft": "Current status {{status}}. Saving creates a pending batch and does not publish it.",
"enter23Numbers": "Please enter all 23 groups of 4 digits",
"draftSaved": "Draft v{{version}} saved, waiting to be published",
"saveFailed": "Failed to save",
"clear": "Clear",
"saveDraft": "Save draft",
"saving": "Saving…",
"pendingBatches": "Pending batches",
"noPendingBatches": "There are no pending_review batches.",
"batchId": "Batch ID",
"numberCount": "Number count",
"reviewAndPublishAction": "Review and publish",
"noPublishPermission": "No publish permission",
"batchNotFound": "Batch not found",
"batchNotFoundDesc": "Return to the review list and confirm the batch ID.",
"backToReviewQueue": "Back to review queue",
"publishTitle": "Publish",
"cannotPublish": "Cannot publish",
"cannotPublishDesc": "Current batch status is '{{status}}'.",
"checkBeforePublish": "Check the numbers before publishing",
"checkBeforePublishDesc": "Publish only after confirming the numbers.",
"publishedView": "View published result",
"confirmPublish": "Confirm publish",
"submitting": "Submitting…",
"publishSuccess": "Published · {{drawNo}} · status {{status}}",
"publishFailed": "Publish failed",
"sourceTypeFull": "Source: {{source}} · Items: {{count}}/23 · RNG hash: {{hash}}",
"subnav": {
"status": "Draw status",
"results": "Results",
"finance": "Draw finance",
"review": "Review & publish"
},
"statusOptions": {
"all": "All",
"pending": "Pending",
"open": "Open",
"closing": "Closing",
"closed": "Closed",
"drawing": "Drawing",
"review": "Review",
"cooldown": "Cooldown",
"settling": "Settling",
"settled": "Settled",
"cancelled": "Cancelled"
},
"resultSlots": {
"first": "1st prize",
"second": "2nd prize",
"third": "3rd prize",
"starter": "Starter {{index}}",
"consolation": "Consolation {{index}}"
}
}

View File

@@ -0,0 +1,46 @@
{
"title": "Jackpot",
"configTitle": "Jackpot pool configuration",
"loadFailed": "Failed to load",
"saveSuccess": "Saved",
"saveFailed": "Save failed",
"invalidDrawId": "Enter a valid draw ID",
"manualBurstSuccess": "Jackpot burst triggered manually",
"manualBurstFailed": "Manual burst failed",
"noPoolData": "No pool data",
"displayBalance": "Display balance {{amount}}",
"currentAmount": "Current pool balance (minor unit)",
"contributionRate": "Contribution rate 0-1",
"triggerThreshold": "Burst threshold (minor unit)",
"payoutRate": "Burst payout rate 0-1",
"forceTriggerGap": "Force burst gap (settled draws)",
"minBetAmount": "Minimum bet amount (minor unit)",
"comboTriggerPlays": "Combo trigger plays (comma separated)",
"status": "Status",
"disabled": "Disabled",
"enabled": "Enabled",
"saving": "Saving…",
"save": "Save",
"manualBurstDrawId": "Manual burst draw ID",
"manualBurstAmount": "Burst amount (empty for all)",
"processing": "Processing…",
"manualBurst": "Manual burst",
"filter": "Filter",
"drawNo": "Draw no.",
"optional": "Optional",
"apply": "Apply",
"payoutRecords": "Jackpot payout records",
"contributionRecords": "Jackpot contribution records",
"subnavLabel": "Jackpot sub navigation",
"subnavPools": "Pool configuration",
"subnavRecords": "Records",
"payoutLoadFailed": "Failed to load payout records",
"contributionLoadFailed": "Failed to load contribution records",
"trigger": "Trigger",
"payoutAmount": "Payout amount",
"winnerCount": "Winner count",
"time": "Time",
"ticketNo": "Ticket",
"player": "Player",
"contributionAmount": "Contribution amount"
}

View File

@@ -0,0 +1,49 @@
{
"title": "Players",
"listTitle": "Player list",
"createPlayer": "Create player",
"searchPlaceholder": "Search by player ID / username / nickname",
"search": "Search",
"refresh": "Refresh",
"loadFailed": "Failed to load player list",
"siteCodeRequired": "Enter the site code",
"sitePlayerIdRequired": "Enter the site player ID",
"createFailed": "Failed to create player",
"createSuccess": "Created player {{name}}",
"noChanges": "No changes",
"updateFailed": "Failed to update player",
"updateSuccess": "Updated {{name}}",
"deleteFailed": "Delete failed",
"deleteSuccess": "Deleted player {{name}}",
"statusNormal": "Normal",
"statusFrozen": "Frozen",
"statusBanned": "Banned",
"site": "Site",
"sitePlayerId": "Site player ID",
"username": "Username",
"nickname": "Nickname",
"currency": "Currency",
"balance": "Balance",
"available": "Available",
"status": "Status",
"lastLogin": "Last login",
"actions": "Actions",
"edit": "Edit",
"delete": "Delete",
"createDialogTitle": "Create player",
"editDialogTitle": "Edit player",
"createDialogDesc": "Manually register a main-site player to the lottery platform. Usually this is created automatically through SSO login.",
"editDialogDesc": "Edit player information.",
"siteCode": "Site code",
"siteCodePlaceholder": "For example main_site",
"sitePlayerIdLabel": "Site player ID",
"sitePlayerIdPlaceholder": "Unique identifier returned by the main site",
"usernamePlaceholderOptional": "Optional",
"nicknamePlaceholderOptional": "Optional",
"defaultCurrency": "Default currency",
"cancel": "Cancel",
"save": "Save",
"saving": "Saving…",
"confirmDelete": "Confirm delete",
"confirmDeleteDesc": "Delete player {{name}}? This action cannot be undone."
}

View File

@@ -0,0 +1,45 @@
{
"title": "Reconcile",
"createTitle": "Create reconcile job",
"createDesc": "Abnormal flows are checked automatically by scheduled jobs. This section allows finance to trigger jobs manually: choose reconcile type and time range, and optionally fill in target references (player IDs, transfer numbers, or idempotency keys, one per line). Jobs and items are persisted for audit and future automation.",
"reconcileType": "Reconcile type",
"walletTransfer": "Wallet transfer (main site ⇄ lottery)",
"startTime": "Start time",
"endTime": "End time",
"scope": "Scope (optional)",
"scopePlaceholder": "One reference per line, for example player ID, wallet transfer number, or idempotency key.\nLeave empty to create a scoped job record without explicit refs.",
"scopeHint": "When reconciling with wallet transactions in pending_reconcile status, paste the transfer number or idempotency key above.",
"advancedToggleOpen": "Show advanced options (custom items JSON)",
"advancedToggleClose": "Hide advanced options (custom items JSON)",
"advancedJson": "Items JSON (overrides generated rows from the scope above)",
"createTask": "Create reconcile job",
"submitting": "Submitting…",
"loadFailed": "Failed to load",
"loadItemsFailed": "Failed to load details",
"periodRequired": "Enter both reconcile start and end time",
"periodInvalid": "Invalid time range",
"periodOrderInvalid": "End time must be later than or equal to start time",
"advancedJsonInvalid": "The advanced JSON cannot be parsed",
"createSuccess": "Reconcile job created",
"createFailed": "Failed to create job",
"noCreatePermission": "Current account cannot create reconcile jobs.",
"jobsTitle": "Reconcile jobs",
"jobsDesc": "Click a row to view paginated item details.",
"refresh": "Refresh",
"jobNo": "Job no.",
"type": "Type",
"status": "Status",
"period": "Period",
"createdAt": "Created at",
"detailsTitle": "Job details",
"sideARef": "Lottery ref",
"sideBRef": "Main site ref",
"differenceAmount": "Difference (cent)",
"noDetails": "No details",
"statusCompleted": "Completed",
"statusRunning": "Running",
"statusFailed": "Failed",
"itemMismatch": "Mismatch",
"itemMatched": "Matched",
"itemPendingCheck": "Pending check"
}

View File

@@ -1,3 +1,34 @@
{
"title": "Reports"
"title": "Reports",
"createExport": "Create export",
"reportType": "Report type",
"exportFormat": "Export format",
"filterJson": "filter_json (optional)",
"parseFilterFailed": "Failed to parse filter JSON",
"createSuccess": "Export job created",
"createFailed": "Failed to create job",
"downloadFailed": "Download failed",
"taskList": "Job list",
"jobId": "Job no.",
"type": "Type",
"format": "Format",
"status": "Status",
"output": "Output",
"download": "Download",
"createdAt": "Created at",
"id": "ID",
"empty": "No data",
"reportTypes": {
"draw_profit_summary": "Draw profit summary",
"daily_profit_summary": "Daily profit summary",
"player_win_loss": "Player win/loss report",
"wallet_transfer_report": "Wallet transfer report",
"hot_number_risk_report": "Hot number risk report",
"play_dimension_report": "Play dimension report",
"sold_out_number_report": "Sold-out number report",
"rebate_commission_report": "Rebate and commission report",
"audit_operation_report": "Audit operation report",
"wallet_txns_daily": "Wallet transactions daily",
"transfer_orders_daily": "Transfer orders daily"
}
}

View File

@@ -0,0 +1,91 @@
{
"title": "Risk",
"center": "Risk center",
"drawNo": "Draw no.",
"status": "Status",
"closeTime": "Close time",
"actions": "Actions",
"all": "All",
"search": "Search",
"refresh": "Refresh",
"fuzzyDrawNo": "Fuzzy draw no.",
"loadDrawListFailed": "Failed to load draw list",
"enterRisk": "Enter risk",
"poolsTitle": "Risk pools",
"searchNumber": "Search number",
"searchNumberPlaceholder": "For example 8888",
"riskFilter": "Risk filter",
"sort": "Sort",
"filterAll": "All",
"filterSoldOut": "Sold out",
"filterHighRisk": ">80%",
"sortUsageDesc": "Usage ratio ↓",
"sortLockedDesc": "Locked amount ↓",
"sortRemainingAsc": "Remaining ↑",
"sortNumberAsc": "Number ↑",
"loadPoolsFailed": "Failed to load risk pools",
"capAmount": "Cap",
"lockedAmount": "Locked",
"remainingAmount": "Remaining",
"usageRatio": "Usage",
"poolStatus": "Status",
"soldOut": "Sold out",
"warning": "Warning",
"normal": "Normal",
"recover": "Recover",
"close": "Close",
"view": "View",
"manualCloseSuccess": "Number betting closed manually",
"recoverSuccess": "Number betting recovered",
"actionFailed": "Action failed",
"detailTitle": "Risk pool details",
"loadDetailFailed": "Failed to load risk pool details",
"backToList": "Back to list",
"backToAllPools": "Back to all risk pools",
"numberTitle": "Number {{number}}",
"drawMeta": "Draw {{drawNo}}",
"totalCap": "Cap amount",
"lockedWorstCase": "Locked (worst-case payout reserved)",
"remainingSellable": "Remaining sellable",
"isSoldOut": "Sold out",
"yes": "Yes",
"no": "No",
"occupationLogs": "Occupancy / release logs",
"time": "Time",
"action": "Action",
"amount": "Amount",
"source": "Source",
"ticketNo": "Ticket no.",
"playCode": "Play",
"loadLogsFailed": "Failed to load lock logs",
"lockLogsTitle": "Risk lock logs",
"drawInfoLoadFailed": "Failed to load draw info",
"loadingDraw": "Loading draw…",
"headerTitle": "Risk · Draw {{drawNo}}",
"databaseStatus": "Database status",
"hallPreviewStatus": "(Hall preview: {{status}})",
"subnavOccupancy": "Occupancy",
"subnavHot": "Hot numbers",
"subnavSoldOut": "Sold-out list",
"subnavPools": "All risk pools",
"changeDraw": "Change draw",
"number4d": "Number (4 digits)",
"optional": "Optional",
"actionFilter": "Action",
"noLimit": "No limit",
"lock": "Lock",
"release": "Release",
"applyFilter": "Apply filter",
"statusOptions": {
"pending": "Pending",
"open": "Open",
"closing": "Closing",
"closed": "Closed",
"drawing": "Drawing",
"review": "Review",
"cooldown": "Cooldown",
"settling": "Settling",
"settled": "Settled",
"cancelled": "Cancelled"
}
}

View File

@@ -0,0 +1,54 @@
{
"title": "Settlement",
"filter": "Filter",
"drawNo": "Draw no.",
"status": "Status",
"apply": "Apply",
"batchList": "Settlement batches",
"loadFailed": "Failed to load",
"exportFailed": "Export failed",
"actionSuccess": "{{name}} succeeded",
"actionFailed": "{{name}} failed",
"placeholderDrawNo": "For example 20260511-001",
"reviewStatus": "Review status",
"ticketCount": "Ticket count",
"winCount": "Win count",
"payoutTotal": "Total payout",
"jackpot": "Jackpot",
"finishedAt": "Finished at",
"details": "Details",
"approve": "Approve",
"pass": "Pass",
"reject": "Reject",
"payout": "Payout",
"export": "Export",
"backToList": "Back to batch list",
"errorTitle": "Error",
"retry": "Retry",
"batchSummary": "Batch #{{id}}",
"summaryMeta": "Draw {{drawNo}} · draw status {{drawStatus}} · result batch v{{version}}",
"settlementStatus": "Settlement status",
"reviewState": "Review status",
"ticketTotal": "Ticket count",
"winTotal": "Win count",
"payoutAmount": "Payout total",
"jackpotPayout": "Jackpot payout",
"startedAt": "Started",
"endedAt": "Ended",
"runPayout": "Run payout",
"exportSettlementReport": "Export settlement report",
"loadingSummary": "Loading summary…",
"detailTitle": "Settlement details",
"ticketNo": "Ticket no.",
"playCode": "Play",
"player": "Player",
"matchedTier": "Matched tier",
"regularPayout": "Regular payout",
"loadingDetails": "Loading details…",
"statusOptions": {
"all": "All",
"running": "Running",
"completed": "Completed",
"failed": "Failed"
}
}

View File

@@ -0,0 +1,19 @@
{
"title": "Tickets",
"playerTicketQuery": "Player ticket query",
"playerId": "Player ID",
"invalidPlayerId": "Enter a valid player ID",
"drawNoOptional": "Draw no. (optional)",
"drawNoPlaceholder": "For example 20260520-001",
"query": "Query",
"loadFailed": "Failed to load",
"ticketNo": "Ticket no.",
"orderNo": "Order no.",
"drawNo": "Draw no.",
"playCode": "Play",
"number": "Number",
"actualDeduct": "Actual deduct",
"status": "Status",
"failReason": "Fail reason",
"winAmount": "Win amount"
}

View File

@@ -0,0 +1,69 @@
{
"title": "Wallet",
"subnavLabel": "Wallet sub pages",
"subnavTransactions": "Wallet transactions",
"subnavTransferOrders": "Transfer orders",
"noPermission": "Current account has no access to this page",
"copySuccess": "{{label}} copied to clipboard",
"copyFailed": "Copy failed. Check browser permissions or copy manually.",
"statusProcessing": "Processing",
"statusSuccess": "Success",
"statusFailed": "Failed",
"statusPendingReconcile": "Pending reconcile",
"statusReversed": "Reversed",
"statusManuallyProcessed": "Manually processed",
"statusPosted": "Posted",
"filterAll": "All",
"transferIn": "Main site transfer in",
"transferOut": "Main site transfer out",
"transferOutRefund": "Transfer-out refund",
"transferOrders": "Transfer orders",
"walletTransactions": "Wallet transactions",
"playerWalletQuery": "Player wallet query",
"localTransferNo": "Local transfer no.",
"externalRefNo": "Main site ref no.",
"playerAccount": "Player account",
"playerAccountPlaceholder": "Main site player ID or username (fuzzy)",
"playerId": "Player ID",
"playerIdOptional": "Optional, higher priority than account",
"requestDateRange": "Request date range",
"status": "Status",
"options": "Options",
"abnormalOnly": "Abnormal only",
"abnormalOnlyPending": "Abnormal only (pending reconcile)",
"search": "Search",
"resetFilters": "Reset filters",
"refreshCurrentPage": "Refresh current page",
"loadFailed": "Failed to load",
"direction": "Direction",
"amount": "Amount",
"failReason": "Fail reason",
"requestTime": "Requested at",
"finishedTime": "Finished at",
"actions": "Actions",
"reverse": "Reverse",
"manualProcess": "Manual process",
"processing": "Processing…",
"reverseSuccess": "Reversed successfully",
"manualProcessSuccess": "Manually processed successfully",
"actionFailed": "Action failed",
"txnNo": "Txn no.",
"bizType": "Business type",
"type": "Type",
"queryFailed": "Query failed",
"invalidPlayerId": "Enter a valid player ID",
"querying": "Querying…",
"query": "Query",
"sitePlayer": "Site player",
"walletType": "Type",
"currency": "Currency",
"balanceMinor": "Balance (minor unit)",
"availableBalance": "Available (estimated)",
"noWalletRows": "No wallet rows. Players with no bets or transfers may have no records.",
"copyTransferNo": "Local transfer no.",
"copyExternalRefNo": "Main site ref no.",
"copyTxnNo": "Txn no.",
"copyExternalTxnRefNo": "Main site ref no.",
"in": "In",
"out": "Out"
}

View File

@@ -0,0 +1,83 @@
{
"title": "प्रशासक",
"listTitle": "प्रशासक सूची",
"createAdmin": "प्रशासक सिर्जना",
"searchPlaceholder": "प्रयोगकर्ता नाम / उपनाम / इमेलबाट खोज्नुहोस्",
"loadFailed": "प्रशासक सूची लोड असफल भयो",
"nicknameRequired": "उपनाम लेख्नुहोस्",
"newPasswordMin": "नयाँ पासवर्ड कम्तीमा 8 वर्ण हुनुपर्छ",
"roleRequired": "कम्तीमा एउटा भूमिका छान्नुहोस्",
"usernameRequired": "लगइन प्रयोगकर्ता नाम लेख्नुहोस्",
"passwordMin": "पासवर्ड कम्तीमा 8 वर्ण हुनुपर्छ",
"createSuccess": "प्रशासक {{name}} सिर्जना भयो",
"updateSuccess": "{{name}} अपडेट भयो",
"saveAccountFailed": "खाता सुरक्षित गर्न असफल",
"deleteSuccess": "{{name}} मेटाइयो",
"deleteFailed": "मेटाउन असफल",
"allPermissions": "सबै अनुमति",
"saveRoleSuccess": "{{name}} को भूमिका अपडेट भयो",
"saveRoleFailed": "भूमिका सुरक्षित गर्न असफल",
"savePermissionSuccess": "{{name}} को अनुमति अपडेट भयो",
"savePermissionFailed": "अनुमति सुरक्षित गर्न असफल",
"saving": "सेभ हुँदैछ…",
"deleting": "मेटिँदैछ…",
"common": {
"none": "कुनै छैन"
},
"table": {
"account": "खाता",
"nickname": "उपनाम",
"status": "स्थिति",
"roles": "भूमिका",
"direct": "प्रत्यक्ष",
"effective": "प्रभावी",
"actions": "कार्य"
},
"status": {
"enabled": "सक्रिय",
"disabled": "निष्क्रिय"
},
"actions": {
"permissions": "अनुमति",
"edit": "सम्पादन",
"delete": "मेटाउनुहोस्",
"cancel": "रद्द गर्नुहोस्",
"save": "सेभ गर्नुहोस्"
},
"permissionDialog": {
"title": "प्रशासक अनुमति",
"rolesTitle": "भूमिका",
"rolesDescription": "पूर्वनिर्धारित साइट भूमिकाको रूपमा सुरक्षित हुन्छ र प्रत्यक्ष अनुमतिसँग जोडिएर प्रभावी अनुमति बन्छ।",
"rolePermissionCount": "{{count}} वटा कार्य अनुमति समावेश",
"directTitle": "प्रत्यक्ष अनुमति",
"directDescription": "मेनु वा व्यवसाय क्षेत्र अनुसार विस्तार गरी prd.* अनुमति छान्नुहोस्; धेरैजसो अवस्थामा भूमिका बदल्नु पर्याप्त हुन्छ।",
"selectedRoles": "हाल छनोट गरिएका भूमिका:",
"saveRoles": "भूमिका सेभ गर्नुहोस्",
"saveDirect": "प्रत्यक्ष अनुमति सेभ गर्नुहोस्"
},
"accountDialog": {
"createTitle": "प्रशासक सिर्जना",
"editTitle": "खाता सम्पादन",
"createDescription": "कम्तीमा एउटा पूर्वनिर्धारित साइट भूमिका तोक्नुपर्छ। लगइन नाममा अक्षर, अंक, डट, अन्डरस्कोर र हाइफन मात्र प्रयोग गर्न सकिन्छ र सेभ भएपछि साना अक्षरमा राखिन्छ।",
"editDescription": "लगइन नाम परिवर्तन गर्न मिल्दैन। पासवर्ड खाली छोडेमा परिवर्तन हुँदैन।",
"username": "लगइन नाम",
"usernamePlaceholder": "उदाहरण: ops_admin",
"nickname": "उपनाम",
"nicknamePlaceholder": "देखिने नाम",
"emailOptional": "इमेल (वैकल्पिक)",
"emailPlaceholder": "नचाहिए खाली छोड्नुहोस्",
"password": "पासवर्ड",
"passwordOptional": "पासवर्ड (वैकल्पिक)",
"passwordPlaceholderCreate": "कम्तीमा 8 वर्ण",
"passwordPlaceholderEdit": "परिवर्तन नगर्न खाली छोड्नुहोस्",
"rolesRequired": "भूमिका (पूर्वनिर्धारित साइट, कम्तीमा एक)",
"rolesDescription": "सिर्जना भएपछि अनुमतिमा गएर भूमिका वा प्रत्यक्ष अनुमति थप समायोजन गर्न सकिन्छ।",
"noRoles": "अहिले भूमिका डाटा छैन। सूची लोड भएपछि फेरि प्रयास गर्नुहोस्।"
},
"delete": {
"currentUserBlocked": "हाल लगइन गरिएको खाता मेटाउन मिल्दैन",
"rowActionTitle": "यो प्रशासक मेटाउनुहोस्",
"confirmTitle": "मेटाउने पुष्टि",
"confirmDescription": "प्रशासक {{name}} मेटाउने? यो कार्य फिर्ता लिन सकिँदैन।"
}
}

View File

@@ -1,3 +1,14 @@
{
"title": "अडिट लग"
"title": "अडिट लग",
"moduleCode": "मोड्युल कोड",
"actionCode": "कार्य कोड",
"operatorType": "अपरेटर प्रकार",
"exactMatch": "ठ्याक्कै मिलान",
"operatorTypePlaceholder": "जस्तै admin / system",
"operator": "अपरेटर",
"module": "मोड्युल",
"action": "कार्य",
"target": "लक्ष्य",
"time": "समय",
"empty": "डाटा छैन"
}

View File

@@ -1,3 +1,24 @@
{
"title": "लगइन"
"title": "लगइन",
"loginTitle": "एडमिन लगइन",
"account": "खाता",
"accountPlaceholder": "लगइन खाता",
"password": "पासवर्ड",
"passwordPlaceholder": "पासवर्ड",
"captcha": "क्याप्चा",
"captchaPlaceholder": "क्याप्चा लेख्नुहोस्",
"captchaLoading": "क्याप्चा लोड हुँदैछ",
"captchaRefresh": "क्याप्चा रिफ्रेस गर्न क्लिक गर्नुहोस्",
"captchaFetch": "क्याप्चा लिन क्लिक गर्नुहोस्",
"apiMissingTitle": "API ठेगाना सेट गरिएको छैन",
"apiMissingDescriptionPrefix": "परिवेशमा",
"apiMissingDescriptionSuffix": "सेट गर्नुहोस् (Laravel root URL, जस्तै http://127.0.0.1:8000)।",
"submit": "लगइन",
"submitting": "लगइन हुँदैछ…",
"captchaLoadFailed": "क्याप्चा लोड गर्न सकिएन। API वा नेटवर्क जाँच गर्नुहोस्।",
"apiBaseMissingToast": "NEXT_PUBLIC_LOTTERY_API_BASE_URL सेट गरिएको छैन",
"captchaRequired": "पहिले क्याप्चा रिफ्रेस गर्नुहोस्",
"welcome": "स्वागत छ, {{name}}",
"networkFailed": "नेटवर्क अनुरोध असफल भयो",
"loginFailed": "लगइन असफल भयो"
}

View File

@@ -4,7 +4,7 @@
"ne": "नेपाली",
"zh": "中文",
"title": "इन्टरफेस भाषा",
"changed": "भाषा"
"changed": "भाषा {{language}} मा परिवर्तन भयो"
},
"app": {
"title": "Lottery Admin"
@@ -15,6 +15,65 @@
"search": "खोज",
"apply": "लागू गर्नुहोस्",
"loading": "लोड हुँदैछ...",
"submitting": "पेश हुँदैछ..."
"submitting": "पेश हुँदैछ...",
"logout": "लगआउट",
"close": "बन्द गर्नुहोस्",
"viewAll": "सबै हेर्नुहोस्",
"viewDetails": "विवरण हेर्नुहोस्",
"reviewNow": "अहिले समीक्षा गर्नुहोस्",
"create": "सिर्जना गर्नुहोस्",
"createTask": "टास्क सिर्जना गर्नुहोस्",
"clear": "खाली गर्नुहोस्",
"done": "समाप्त"
},
"date": {
"placeholder": "मिति छान्नुहोस्",
"rangePlaceholder": "मिति दायरा छान्नुहोस्",
"rangeHint": "सुरु मिति छान्नुहोस्, त्यसपछि अन्त्य मिति। एउटै दिनका लागि सोही मितिमा दुई पटक क्लिक गर्नुहोस्। बन्द गर्न Done थिच्नुहोस्।"
},
"pagination": {
"perPage": "प्रति पृष्ठ",
"selectPlaceholder": "छान्नुहोस्",
"summary": "कुल {{total}}; पृष्ठ {{page}} / {{lastPage}}",
"previous": "अघिल्लो",
"next": "अर्को"
},
"states": {
"noData": "डाटा छैन",
"loading": "लोड हुँदैछ…",
"comingSoon": "सुविधा विकासमा छ"
},
"errors": {
"loadFailed": "लोड असफल भयो"
},
"toolbar": {
"defaultAdmin": "प्रशासक",
"notifications": "सूचना",
"notificationsComingSoon": "सूचना सुविधा विकासमा छ",
"accountSettings": "खाता सेटिङ",
"loggedOut": "लगआउट भयो"
},
"nav": {
"home": "गृह",
"dashboard": "ड्यासबोर्ड",
"admin_users": "प्रशासक सूची",
"players": "खेलाडी सूची",
"wallet": "वालेट",
"draws": "ड्रअहरू",
"config": "कन्फिगरेसन",
"risk": "जोखिम",
"settlement": "सेटलमेन्ट",
"jackpot": "Jackpot",
"reconcile": "मिलान",
"tickets": "टिकटहरू",
"reports": "रिपोर्टहरू",
"audit": "अडिट लग",
"settings": "सेटिङ"
},
"sidebar": {
"workspace": "कार्यस्थान"
},
"auth": {
"checking": "लगइन स्थिति जाँच हुँदैछ…"
}
}

View File

@@ -0,0 +1,83 @@
{
"title": "कन्फिगरेसन केन्द्र",
"nav": {
"aria": "सञ्चालन कन्फिगरेसन उप-नेभिगेसन",
"sidebarTitle": "सञ्चालन कन्फिगरेसन",
"groups": {
"betting": "बेटिङ र प्रदर्शन",
"risk_wallet": "जोखिम र कोष"
},
"items": {
"plays": "खेल प्रकार र सीमा",
"odds": "अड्स",
"rebate": "कमिसन / रिबेट",
"risk-cap": "पेमेन्ट क्याप",
"wallet": "वालेट थ्रेसहोल्ड"
}
},
"versionStatus": {
"active": "सक्रिय",
"draft": "ड्राफ्ट",
"archived": "अभिलेख"
},
"versionSwitcher": {
"sheetTitle": "कन्फिगरेसन संस्करण बदल्नुहोस्",
"sheetDescription": "यस पृष्ठमा हेर्न एउटा संस्करण छान्नुहोस्। ड्राफ्ट सम्पादनयोग्य छ; सक्रिय र अभिलेख संस्करण केवल पढ्न मिल्ने छन्।",
"loading": "लोड हुँदैछ…",
"noneSelected": "कुनै संस्करण छानिएको छैन",
"switch": "संस्करण बदल्नुहोस्",
"empty": "संस्करण रेकर्ड छैन।",
"count": "{{count}} वटा",
"effectiveAt": "लागू समय: {{value}}",
"note": "टिप्पणी: {{value}}",
"current": "हाल हेर्दै",
"selected": "छानिएको",
"view": "हेर्नुहोस्",
"rollback": "रोलब्याक",
"delete": "मेटाउनुहोस्",
"deleteConfirmTitle": "यो संस्करण मेटाउने?",
"deleteConfirmDescription": "संस्करण ID {{id}} (version_no {{version}}) स्थायी रूपमा मेटाइनेछ। सक्रिय संस्करण मेटाउन मिल्दैन।"
},
"versionActions": {
"publishCurrent": "हालको संस्करण बनाउनुहोस्",
"refreshing": "रिफ्रेस हुँदैछ",
"refresh": "संस्करण रिफ्रेस",
"newDraft": "नयाँ ड्राफ्ट",
"saveDraft": "ड्राफ्ट सेभ गर्नुहोस्"
},
"wallet": {
"title": "वालेट ट्रान्सफर सीमा सेटिङ",
"description": "रकम खेलको सानो मुद्रा एकाइमा हुन्छ (उदाहरण, NPR मा 100 = 1.00 NPR)। न्यूनतम रकम कम्तीमा 1 सानो एकाइ हुनुपर्छ।",
"loadFailed": "लोड असफल भयो",
"saveSuccess": "सफलतापूर्वक सेभ भयो",
"saveFailed": "सेभ असफल भयो",
"fields": {
"inMin": "न्यूनतम ट्रान्सफर-इन रकम",
"inMax": "अधिकतम ट्रान्सफर-इन रकम",
"outMin": "न्यूनतम ट्रान्सफर-आउट रकम",
"outMax": "अधिकतम ट्रान्सफर-आउट रकम"
},
"placeholders": {
"min": "उदाहरण: 1.00",
"max": "उदाहरण: 10000.00"
},
"hints": {
"inMin": "मुख्य वालेटबाट लटरी वालेटमा प्रति अर्डर न्यूनतम",
"inMax": "मुख्य वालेटबाट लटरी वालेटमा प्रति अर्डर अधिकतम",
"outMin": "लटरी वालेटबाट मुख्य वालेटमा प्रति अर्डर न्यूनतम",
"outMax": "लटरी वालेटबाट मुख्य वालेटमा प्रति अर्डर अधिकतम"
},
"discard": "परिवर्तन त्याग्नुहोस्"
},
"play": {
"batchGroups": {
"d2": "2D ग्लोबल",
"d3": "3D ग्लोबल",
"d4": "4D ग्लोबल",
"big-small": "Big / Small",
"position": "स्थिति खेलहरू",
"box": "बक्स खेलहरू",
"jackpot": "Jackpot"
}
}
}

View File

@@ -1,3 +1,57 @@
{
"title": "ड्यासबोर्ड"
"title": "ड्यासबोर्ड",
"refresh": "रिफ्रेस",
"notice": "सूचना",
"todayBetTotal": "हालको ड्रअ कुल बेट",
"currentDrawFinanceSummary": "हालको हल ड्रअको वित्तीय सारांश",
"currentPayout": "हालको भुक्तानी",
"payoutSummary": "जितेको भुक्तानी + Jackpot",
"currentProfit": "हालको प्लेटफर्म नाफा",
"profitFormula": "बेट - भुक्तानी (अनुमानित)",
"currentDraw": "हालको ड्रअ",
"drawSequence": "राउन्ड {{sequence}}",
"drawDetails": "ड्रअ विवरण",
"ticketCount": "टिकट वस्तु संख्या",
"relatedBetAmount": "सम्बन्धित बेट रकम",
"riskCapUsage": "जोखिम क्याप प्रयोग",
"lockedAndCap": "लक {{locked}} / क्याप {{cap}}",
"occupancyDetails": "अकुपेन्सी विवरण",
"hotNumbersTop10": "शीर्ष 10 हट नम्बर",
"playDimension": "प्ले डाइमेन्सन",
"soldOutDistribution": "बिक्री समाप्त वितरण",
"soldOutTotal": "कुल बिक्री समाप्त",
"pendingReviewResults": "समीक्षा बाँकी परिणाम",
"abnormalTransferOrders": "असामान्य ट्रान्सफर अर्डर",
"viewTransferOrders": "ट्रान्सफर अर्डर हेर्नुहोस्",
"noSoldOutNumbers": "बिक्री समाप्त नम्बर छैन",
"noPoolData": "यस डाइमेन्सनमा पूल डाटा छैन",
"numbersByUsage": "प्रयोग अनुसार नम्बर",
"capUsage": "क्याप प्रयोग",
"tabs": {
"4d": "4D",
"3d": "3D",
"2d": "2D",
"special": "विशेष"
},
"soldOutBuckets": {
"d4": "4D",
"d3": "3D",
"d2": "2D",
"special": "विशेष",
"other": "अन्य"
},
"quickLinks": {
"createDrawPlan": "ड्रअ योजना सिर्जना",
"drawSchedule": "खुला बिक्री / ड्रअ",
"results": "परिणाम",
"tickets": "टिकट व्यवस्थापन",
"walletTransactions": "वालेट कारोबार",
"reports": "रिपोर्ट",
"auditLogs": "अडिट लग"
},
"warnings": {
"drawPermission": "यो खातासँग ड्रअ हेर्ने वा व्यवस्थापन अनुमति छैन। वित्तीय र जोखिम डाटा फिर्ता आएन।",
"walletPermission": "यो खातासँग वालेट मिलान हेर्ने अनुमति छैन। असामान्य ट्रान्सफर संख्या फिर्ता आएन।",
"loadFailed": "लोड असफल भयो। API र लगइन अवस्था जाँच गर्नुहोस्।"
}
}

View File

@@ -0,0 +1,132 @@
{
"title": "ड्रअ",
"statusListTitle": "ड्रअ सूची",
"generatePlan": "ड्रअ योजना सिर्जना",
"generating": "सिर्जना हुँदैछ…",
"generateSuccess": "{{created}} ड्रअ सिर्जना भयो, बफर {{upcoming}}/{{target}}",
"generateFailed": "सिर्जना असफल भयो",
"drawNo": "ड्रअ नं.",
"status": "स्थिति",
"startTime": "सुरु समय",
"closeTime": "बन्द समय",
"drawTime": "ड्रअ समय",
"betTotal": "कुल बेट",
"payoutTotal": "कुल भुक्तानी",
"profitLoss": "नाफा/नोक्सानी",
"actions": "कार्य",
"queryDraw": "ड्रअ खोज्नुहोस्",
"reset": "रिसेट",
"fuzzyDrawNo": "फजी ड्रअ नं.",
"viewDetails": "विवरण हेर्नुहोस्",
"invalidDrawId": "अवैध ड्रअ ID",
"loadFailed": "लोड असफल भयो। लगइन र API कन्फिग जाँच गर्नुहोस्।",
"drawDetail": "ड्रअ विवरण",
"businessDate": "व्यवसाय मिति",
"sequenceNo": "क्रम संख्या",
"plannedDraw": "योजनाबद्ध ड्रअ",
"coolingEndTime": "कुलिङ समाप्ति",
"resultSource": "नतिजा स्रोत",
"currentResultVersion": "हालको नतिजा संस्करण",
"settleVersion": "सेटलमेन्ट संस्करण",
"isReopened": "फेरि खोलिएको",
"yes": "हो",
"no": "होइन",
"batchStats": "ब्याच तथ्यांक",
"batchTotal": "कुल ब्याच",
"pendingReview": "समीक्षा बाँकी",
"published": "प्रकाशित",
"viewFinance": "ड्रअ वित्त हेर्नुहोस्",
"drawActions": "ड्रअ कार्य",
"drawActionsDesc": "म्यानुअल बन्द / रद्द / RNG / पुनःखोलाइ / सेटलमेन्ट सबै सीधै ब्याकएन्ड API मा जान्छ।",
"manualClose": "म्यानुअल बन्द",
"cancelDraw": "ड्रअ रद्द",
"cancelBeforeDraw": "ड्रअ अघि रद्द",
"rngDraw": "RNG ड्रअ",
"rngAutoGenerate": "RNG स्वचालित सिर्जना",
"reopen": "पुनःखोल्नुहोस्",
"cooldownReopen": "कुलिङमा पुनःखोल्नुहोस्",
"runSettlement": "सेटलमेन्ट चलाउनुहोस्",
"processing": "प्रक्रियामा…",
"actionSuccess": "{{name}} सफल भयो",
"actionFailed": "{{name}} असफल भयो",
"hallPreviewStatus": "हल पूर्वावलोकन {{status}}",
"financeOverview": "ड्रअ वित्तीय सारांश",
"orderAndItemCount": "अर्डर / टिकट आइटम",
"actualBet": "वास्तविक कटौती बेट",
"currentPayout": "हालको कुल भुक्तानी",
"grossProfit": "अनुमानित कुल नाफा",
"settlementBatchList": "सेटलमेन्ट ब्याच सूची (ड्रअ अनुसार)",
"relatedSettlementBatches": "सम्बन्धित सेटलमेन्ट ब्याच",
"noSettlementBatches": "सेटलमेन्ट ब्याच अभिलेख छैन।",
"ticketCount": "टिकट",
"winCount": "जित",
"finishedAt": "समाप्त समय",
"resultsTitle": "परिणाम",
"reviewAndPublish": "समीक्षा / प्रकाशित",
"viewReviewQueue": "समीक्षा सूची हेर्नुहोस्",
"noPublishedBatch": "प्रकाशित ब्याच छैन।",
"version": "संस्करण v{{version}}",
"sourceType": "स्रोत {{source}}",
"manualEntry": "म्यानुअल",
"rng": "RNG",
"rngSummary": "RNG ह्यास {{hash}}",
"confirmedAt": "पुष्टि समय {{time}}",
"prize": "पुरस्कार",
"tail3": "अन्तिम 3",
"tail2": "अन्तिम 2",
"headTail": "हेड/टेल",
"manualResultEntry": "म्यानुअल परिणाम प्रविष्टि",
"currentStatusAndDraft": "हालको स्थिति {{status}} · सेभ गरेपछि pending batch बन्छ, सिधै प्रकाशित हुँदैन",
"enter23Numbers": "कृपया 23 वटा 4-अङ्क समूह पूरा भर्नुहोस्",
"draftSaved": "ड्राफ्ट v{{version}} सुरक्षित भयो, प्रकाशनको प्रतिक्षामा",
"saveFailed": "सेभ असफल भयो",
"clear": "खाली गर्नुहोस्",
"saveDraft": "ड्राफ्ट सुरक्षित गर्नुहोस्",
"saving": "सेभ हुँदैछ…",
"pendingBatches": "बाँकी ब्याच",
"noPendingBatches": "pending_review ब्याच छैन।",
"batchId": "ब्याच ID",
"numberCount": "नम्बर संख्या",
"reviewAndPublishAction": "जाँचेर प्रकाशित गर्नुहोस्",
"noPublishPermission": "प्रकाशन अनुमति छैन",
"batchNotFound": "ब्याच भेटिएन",
"batchNotFoundDesc": "समीक्षा सूचीमा फर्केर batch ID जाँच गर्नुहोस्।",
"backToReviewQueue": "समीक्षा सूचीमा फर्कनुहोस्",
"publishTitle": "प्रकाशित",
"cannotPublish": "प्रकाशित गर्न मिल्दैन",
"cannotPublishDesc": "हालको ब्याच स्थिति '{{status}}' हो।",
"checkBeforePublish": "प्रकाशन अघि नम्बर जाँच गर्नुहोस्",
"checkBeforePublishDesc": "सही भएपछि मात्र प्रकाशित गर्नुहोस्।",
"publishedView": "प्रकाशित नतिजा हेर्नुहोस्",
"confirmPublish": "प्रकाशन पुष्टि गर्नुहोस्",
"submitting": "पेश हुँदैछ…",
"publishSuccess": "प्रकाशित भयो · {{drawNo}} · स्थिति {{status}}",
"publishFailed": "प्रकाशन असफल भयो",
"sourceTypeFull": "स्रोत: {{source}} · संख्या: {{count}}/23 · RNG ह्यास: {{hash}}",
"subnav": {
"status": "ड्रअ स्थिति",
"results": "परिणाम",
"finance": "ड्रअ वित्त",
"review": "समीक्षा र प्रकाशन"
},
"statusOptions": {
"all": "सबै",
"pending": "सुरु नभएको",
"open": "बेट खुला",
"closing": "बन्द हुँदै",
"closed": "बन्द",
"drawing": "ड्रअ हुँदै",
"review": "समीक्षा",
"cooldown": "कुलडाउन",
"settling": "सेटल हुँदै",
"settled": "सेटल भयो",
"cancelled": "रद्द"
},
"resultSlots": {
"first": "पहिलो पुरस्कार",
"second": "दोस्रो पुरस्कार",
"third": "तेस्रो पुरस्कार",
"starter": "विशेष {{index}}",
"consolation": "सान्त्वना {{index}}"
}
}

View File

@@ -0,0 +1,46 @@
{
"title": "Jackpot",
"configTitle": "Jackpot पूल कन्फिगरेसन",
"loadFailed": "लोड असफल भयो",
"saveSuccess": "सुरक्षित भयो",
"saveFailed": "सुरक्षित गर्न असफल",
"invalidDrawId": "मान्य ड्रअ ID लेख्नुहोस्",
"manualBurstSuccess": "Jackpot म्यानुअल रूपमा ट्रिगर भयो",
"manualBurstFailed": "म्यानुअल बर्स्ट असफल भयो",
"noPoolData": "पूल डाटा छैन",
"displayBalance": "प्रदर्शित ब्यालेन्स {{amount}}",
"currentAmount": "हालको पूल ब्यालेन्स (सानो एकाइ)",
"contributionRate": "योगदान अनुपात 0-1",
"triggerThreshold": "बर्स्ट थ्रेसहोल्ड (सानो एकाइ)",
"payoutRate": "बर्स्ट भुक्तानी अनुपात 0-1",
"forceTriggerGap": "बलपूर्वक बर्स्ट अन्तर (सेटल ड्रअ)",
"minBetAmount": "न्यूनतम बेट रकम (सानो एकाइ)",
"comboTriggerPlays": "कम्बो ट्रिगर प्ले (comma-separated)",
"status": "स्थिति",
"disabled": "बन्द",
"enabled": "खुला",
"saving": "सुरक्षित हुँदैछ…",
"save": "सुरक्षित गर्नुहोस्",
"manualBurstDrawId": "म्यानुअल बर्स्ट ड्रअ ID",
"manualBurstAmount": "बर्स्ट रकम (खाली भए सबै)",
"processing": "प्रक्रियामा…",
"manualBurst": "म्यानुअल बर्स्ट",
"filter": "फिल्टर",
"drawNo": "ड्रअ नं.",
"optional": "वैकल्पिक",
"apply": "लागू गर्नुहोस्",
"payoutRecords": "Jackpot भुक्तानी रेकर्ड",
"contributionRecords": "Jackpot योगदान रेकर्ड",
"subnavLabel": "Jackpot उपनेभिगेसन",
"subnavPools": "पूल कन्फिगरेसन",
"subnavRecords": "रेकर्ड",
"payoutLoadFailed": "भुक्तानी रेकर्ड लोड असफल भयो",
"contributionLoadFailed": "योगदान रेकर्ड लोड असफल भयो",
"trigger": "ट्रिगर",
"payoutAmount": "भुक्तानी रकम",
"winnerCount": "विजेता संख्या",
"time": "समय",
"ticketNo": "टिकट",
"player": "खेलाडी",
"contributionAmount": "योगदान रकम"
}

View File

@@ -0,0 +1,49 @@
{
"title": "खेलाडी",
"listTitle": "खेलाडी सूची",
"createPlayer": "खेलाडी सिर्जना",
"searchPlaceholder": "खेलाडी ID / प्रयोगकर्ता नाम / उपनामबाट खोज्नुहोस्",
"search": "खोज",
"refresh": "रिफ्रेस",
"loadFailed": "खेलाडी सूची लोड असफल भयो",
"siteCodeRequired": "साइट कोड लेख्नुहोस्",
"sitePlayerIdRequired": "साइट खेलाडी ID लेख्नुहोस्",
"createFailed": "खेलाडी सिर्जना असफल भयो",
"createSuccess": "खेलाडी {{name}} सिर्जना भयो",
"noChanges": "कुनै परिवर्तन छैन",
"updateFailed": "खेलाडी अपडेट असफल भयो",
"updateSuccess": "{{name}} अपडेट भयो",
"deleteFailed": "मेटाउन असफल",
"deleteSuccess": "खेलाडी {{name}} मेटाइयो",
"statusNormal": "सामान्य",
"statusFrozen": "फ्रिज",
"statusBanned": "प्रतिबन्धित",
"site": "साइट",
"sitePlayerId": "साइट खेलाडी ID",
"username": "प्रयोगकर्ता नाम",
"nickname": "उपनाम",
"currency": "मुद्रा",
"balance": "ब्यालेन्स",
"available": "उपलब्ध",
"status": "स्थिति",
"lastLogin": "अन्तिम लगइन",
"actions": "कार्य",
"edit": "सम्पादन",
"delete": "मेटाउनुहोस्",
"createDialogTitle": "खेलाडी सिर्जना",
"editDialogTitle": "खेलाडी सम्पादन",
"createDialogDesc": "मुख्य साइटको खेलाडीलाई लटरी प्लेटफर्ममा म्यानुअल दर्ता गर्नुहोस्। प्रायः SSO लगइनबाट स्वतः सिर्जना हुन्छ।",
"editDialogDesc": "खेलाडी जानकारी सम्पादन गर्नुहोस्।",
"siteCode": "साइट कोड",
"siteCodePlaceholder": "जस्तै main_site",
"sitePlayerIdLabel": "साइट खेलाडी ID",
"sitePlayerIdPlaceholder": "मुख्य साइटले फिर्ता गरेको अद्वितीय चिन्ह",
"usernamePlaceholderOptional": "वैकल्पिक",
"nicknamePlaceholderOptional": "वैकल्पिक",
"defaultCurrency": "पूर्वनिर्धारित मुद्रा",
"cancel": "रद्द गर्नुहोस्",
"save": "सुरक्षित गर्नुहोस्",
"saving": "सुरक्षित हुँदैछ…",
"confirmDelete": "मेटाउने पुष्टि",
"confirmDeleteDesc": "खेलाडी {{name}} मेटाउने? यो कार्य फिर्ता गर्न मिल्दैन।"
}

View File

@@ -0,0 +1,45 @@
{
"title": "मिलान",
"createTitle": "म्यानुअल मिलान कार्य",
"createDesc": "असामान्य फ्लोहरू scheduled task ले स्वतः जाँच्छ। यहाँ वित्तले म्यानुअल रूपमा मिलान कार्य सुरु गर्न सक्छ: प्रकार र समय सीमा छान्नुहोस्, अनि आवश्यक परे player ID, transfer no, वा idempotency key जस्ता सन्दर्भहरू प्रति लाइन लेख्नुहोस्।",
"reconcileType": "मिलान प्रकार",
"walletTransfer": "वालेट ट्रान्सफर (मुख्य साइट ⇄ लटरी)",
"startTime": "सुरु समय",
"endTime": "अन्त्य समय",
"scope": "दायरा (वैकल्पिक)",
"scopePlaceholder": "प्रति लाइन एउटा सन्दर्भ, जस्तै player ID, wallet transfer no, वा idempotency key.\nखाली छोडेमा केवल कार्य रेकर्ड सिर्जना हुन्छ।",
"scopeHint": "pending_reconcile स्थितिको वालेट कारोबारसँग मिलान गर्दा transfer no वा idempotency key माथि टाँस्नुहोस्।",
"advancedToggleOpen": "उन्नत विकल्प देखाउनुहोस् (custom items JSON)",
"advancedToggleClose": "उन्नत विकल्प लुकाउनुहोस् (custom items JSON)",
"advancedJson": "Items JSON (माथिको दायराबाट बनेका row हरूलाई override गर्छ)",
"createTask": "मिलान कार्य सिर्जना",
"submitting": "पेश हुँदैछ…",
"loadFailed": "लोड असफल भयो",
"loadItemsFailed": "विवरण लोड असफल भयो",
"periodRequired": "सुरु र अन्त्य समय दुवै लेख्नुहोस्",
"periodInvalid": "अवैध समय दायरा",
"periodOrderInvalid": "अन्त्य समय सुरु समयभन्दा पछाडि वा बराबर हुनुपर्छ",
"advancedJsonInvalid": "उन्नत JSON parse गर्न सकिएन",
"createSuccess": "मिलान कार्य सिर्जना भयो",
"createFailed": "कार्य सिर्जना असफल भयो",
"noCreatePermission": "हालको खातासँग मिलान कार्य सिर्जना गर्ने अनुमति छैन।",
"jobsTitle": "मिलान कार्यहरू",
"jobsDesc": "विवरण हेर्न row क्लिक गर्नुहोस्।",
"refresh": "रिफ्रेस",
"jobNo": "कार्य नं.",
"type": "प्रकार",
"status": "स्थिति",
"period": "अवधि",
"createdAt": "सिर्जना समय",
"detailsTitle": "कार्य विवरण",
"sideARef": "लटरी साइड सन्दर्भ",
"sideBRef": "मुख्य साइट सन्दर्भ",
"differenceAmount": "अन्तर (cent)",
"noDetails": "विवरण छैन",
"statusCompleted": "सम्पन्न",
"statusRunning": "चलिरहेको",
"statusFailed": "असफल",
"itemMismatch": "मेल खाएन",
"itemMatched": "मेल खायो",
"itemPendingCheck": "जाँच बाँकी"
}

View File

@@ -1,3 +1,34 @@
{
"title": "रिपोर्ट"
"title": "रिपोर्ट",
"createExport": "निर्यात सिर्जना",
"reportType": "रिपोर्ट प्रकार",
"exportFormat": "निर्यात ढाँचा",
"filterJson": "filter_json (वैकल्पिक)",
"parseFilterFailed": "फिल्टर JSON पार्स गर्न सकिएन",
"createSuccess": "निर्यात कार्य सिर्जना भयो",
"createFailed": "कार्य सिर्जना असफल भयो",
"downloadFailed": "डाउनलोड असफल भयो",
"taskList": "कार्य सूची",
"jobId": "कार्य नं.",
"type": "प्रकार",
"format": "ढाँचा",
"status": "स्थिति",
"output": "आउटपुट",
"download": "डाउनलोड",
"createdAt": "सिर्जना समय",
"id": "ID",
"empty": "डाटा छैन",
"reportTypes": {
"draw_profit_summary": "ड्रअ नाफा सारांश",
"daily_profit_summary": "दैनिक नाफा सारांश",
"player_win_loss": "खेलाडी जित/हार रिपोर्ट",
"wallet_transfer_report": "वालेट ट्रान्सफर रिपोर्ट",
"hot_number_risk_report": "हट नम्बर जोखिम रिपोर्ट",
"play_dimension_report": "प्ले डाइमेन्सन रिपोर्ट",
"sold_out_number_report": "बिक्री समाप्त नम्बर रिपोर्ट",
"rebate_commission_report": "रिबेट र कमिसन रिपोर्ट",
"audit_operation_report": "अडिट अपरेशन रिपोर्ट",
"wallet_txns_daily": "वालेट कारोबार दैनिक",
"transfer_orders_daily": "ट्रान्सफर अर्डर दैनिक"
}
}

View File

@@ -0,0 +1,91 @@
{
"title": "जोखिम",
"center": "जोखिम केन्द्र",
"drawNo": "ड्रअ नं.",
"status": "स्थिति",
"closeTime": "बन्द समय",
"actions": "कार्य",
"all": "सबै",
"search": "खोज",
"refresh": "रिफ्रेस",
"fuzzyDrawNo": "फजी ड्रअ नं.",
"loadDrawListFailed": "ड्रअ सूची लोड असफल भयो",
"enterRisk": "जोखिममा जानुहोस्",
"poolsTitle": "जोखिम पूल",
"searchNumber": "नम्बर खोज्नुहोस्",
"searchNumberPlaceholder": "जस्तै 8888",
"riskFilter": "जोखिम फिल्टर",
"sort": "क्रमबद्ध",
"filterAll": "सबै",
"filterSoldOut": "बिक्री समाप्त",
"filterHighRisk": ">80%",
"sortUsageDesc": "प्रयोग अनुपात ↓",
"sortLockedDesc": "लक रकम ↓",
"sortRemainingAsc": "बाँकी ↑",
"sortNumberAsc": "नम्बर ↑",
"loadPoolsFailed": "जोखिम पूल लोड असफल भयो",
"capAmount": "क्याप",
"lockedAmount": "लक गरिएको",
"remainingAmount": "बाँकी",
"usageRatio": "प्रयोग अनुपात",
"poolStatus": "स्थिति",
"soldOut": "बिक्री समाप्त",
"warning": "चेतावनी",
"normal": "सामान्य",
"recover": "पुनर्स्थापना",
"close": "बन्द",
"view": "हेर्नुहोस्",
"manualCloseSuccess": "नम्बर बेटिङ म्यानुअल रूपमा बन्द गरियो",
"recoverSuccess": "नम्बर बेटिङ पुनर्स्थापित गरियो",
"actionFailed": "कार्य असफल भयो",
"detailTitle": "जोखिम पूल विवरण",
"loadDetailFailed": "जोखिम पूल विवरण लोड असफल भयो",
"backToList": "सूचीमा फर्कनुहोस्",
"backToAllPools": "सबै जोखिम पूलमा फर्कनुहोस्",
"numberTitle": "नम्बर {{number}}",
"drawMeta": "ड्रअ {{drawNo}}",
"totalCap": "क्याप रकम",
"lockedWorstCase": "लक गरिएको (अधिकतम भुक्तानी सुरक्षित)",
"remainingSellable": "बाँकी बिक्रीयोग्य",
"isSoldOut": "बिक्री समाप्त",
"yes": "हो",
"no": "होइन",
"occupationLogs": "यो नम्बरको लक / रिलिज लग",
"time": "समय",
"action": "कार्य",
"amount": "रकम",
"source": "स्रोत",
"ticketNo": "टिकट नं.",
"playCode": "प्ले",
"loadLogsFailed": "लक लग लोड असफल भयो",
"lockLogsTitle": "जोखिम लक लग",
"drawInfoLoadFailed": "ड्रअ जानकारी लोड असफल भयो",
"loadingDraw": "ड्रअ लोड हुँदैछ…",
"headerTitle": "जोखिम · ड्रअ {{drawNo}}",
"databaseStatus": "डेटाबेस स्थिति",
"hallPreviewStatus": "(हल पूर्वावलोकन: {{status}})",
"subnavOccupancy": "अकुपेन्सी",
"subnavHot": "हट नम्बर",
"subnavSoldOut": "बिक्री समाप्त सूची",
"subnavPools": "सबै जोखिम पूल",
"changeDraw": "ड्रअ परिवर्तन गर्नुहोस्",
"number4d": "नम्बर (4 अङ्क)",
"optional": "वैकल्पिक",
"actionFilter": "कार्य",
"noLimit": "सीमा छैन",
"lock": "लक",
"release": "रिलिज",
"applyFilter": "फिल्टर लागू गर्नुहोस्",
"statusOptions": {
"pending": "सुरु नभएको",
"open": "खुला",
"closing": "बन्द हुँदै",
"closed": "बन्द",
"drawing": "ड्रअ हुँदै",
"review": "समीक्षा",
"cooldown": "कुलडाउन",
"settling": "सेटल हुँदै",
"settled": "सेटल भयो",
"cancelled": "रद्द"
}
}

View File

@@ -0,0 +1,54 @@
{
"title": "सेटलमेन्ट",
"filter": "फिल्टर",
"drawNo": "ड्रअ नं.",
"status": "स्थिति",
"apply": "लागू गर्नुहोस्",
"batchList": "सेटलमेन्ट ब्याच",
"loadFailed": "लोड असफल भयो",
"exportFailed": "निर्यात असफल भयो",
"actionSuccess": "{{name}} सफल भयो",
"actionFailed": "{{name}} असफल भयो",
"placeholderDrawNo": "जस्तै 20260511-001",
"reviewStatus": "समीक्षा स्थिति",
"ticketCount": "टिकट संख्या",
"winCount": "जित संख्या",
"payoutTotal": "कुल भुक्तानी",
"jackpot": "Jackpot",
"finishedAt": "समाप्त समय",
"details": "विवरण",
"approve": "स्वीकृत",
"pass": "पास",
"reject": "अस्वीकृत",
"payout": "भुक्तानी",
"export": "निर्यात",
"backToList": "ब्याच सूचीमा फर्कनुहोस्",
"errorTitle": "त्रुटि",
"retry": "पुन: प्रयास",
"batchSummary": "ब्याच #{{id}}",
"summaryMeta": "ड्रअ {{drawNo}} · ड्रअ स्थिति {{drawStatus}} · परिणाम ब्याच v{{version}}",
"settlementStatus": "सेटलमेन्ट स्थिति",
"reviewState": "समीक्षा स्थिति",
"ticketTotal": "टिकट संख्या",
"winTotal": "जित संख्या",
"payoutAmount": "कुल भुक्तानी",
"jackpotPayout": "Jackpot भुक्तानी",
"startedAt": "सुरु",
"endedAt": "समाप्त",
"runPayout": "भुक्तानी चलाउनुहोस्",
"exportSettlementReport": "सेटलमेन्ट रिपोर्ट निर्यात",
"loadingSummary": "सारांश लोड हुँदैछ…",
"detailTitle": "सेटलमेन्ट विवरण",
"ticketNo": "टिकट नं.",
"playCode": "प्ले",
"player": "खेलाडी",
"matchedTier": "मिलेको स्तर",
"regularPayout": "सामान्य भुक्तानी",
"loadingDetails": "विवरण लोड हुँदैछ…",
"statusOptions": {
"all": "सबै",
"running": "चलिरहेको",
"completed": "सम्पन्न",
"failed": "असफल"
}
}

View File

@@ -0,0 +1,19 @@
{
"title": "टिकट",
"playerTicketQuery": "खेलाडी टिकट खोज",
"playerId": "खेलाडी ID",
"invalidPlayerId": "मान्य खेलाडी ID लेख्नुहोस्",
"drawNoOptional": "ड्रअ नं. (वैकल्पिक)",
"drawNoPlaceholder": "जस्तै 20260520-001",
"query": "खोज",
"loadFailed": "लोड असफल भयो",
"ticketNo": "टिकट नं.",
"orderNo": "अर्डर नं.",
"drawNo": "ड्रअ नं.",
"playCode": "प्ले",
"number": "नम्बर",
"actualDeduct": "कटौती",
"status": "स्थिति",
"failReason": "असफल कारण",
"winAmount": "जित रकम"
}

View File

@@ -0,0 +1,69 @@
{
"title": "वालेट",
"subnavLabel": "वालेट उपपृष्ठहरू",
"subnavTransactions": "वालेट कारोबार",
"subnavTransferOrders": "ट्रान्सफर अर्डर",
"noPermission": "हालको खातासँग यो पृष्ठमा पहुँच अनुमति छैन",
"copySuccess": "{{label}} क्लिपबोर्डमा प्रतिलिपि भयो",
"copyFailed": "प्रतिलिपि असफल भयो। ब्राउजर अनुमति जाँच गर्नुहोस् वा म्यानुअल रूपमा कपी गर्नुहोस्।",
"statusProcessing": "प्रक्रियामा",
"statusSuccess": "सफल",
"statusFailed": "असफल",
"statusPendingReconcile": "मिलान बाँकी",
"statusReversed": "रिभर्स भयो",
"statusManuallyProcessed": "म्यानुअल रूपमा प्रक्रिया गरियो",
"statusPosted": "पोस्ट गरियो",
"filterAll": "सबै",
"transferIn": "मुख्य साइटबाट भित्र",
"transferOut": "मुख्य साइटतर्फ बाहिर",
"transferOutRefund": "ट्रान्सफर-आउट फिर्ता",
"transferOrders": "ट्रान्सफर अर्डर",
"walletTransactions": "वालेट कारोबार",
"playerWalletQuery": "खेलाडी वालेट खोज",
"localTransferNo": "स्थानीय ट्रान्सफर नं.",
"externalRefNo": "मुख्य साइट सन्दर्भ नं.",
"playerAccount": "खेलाडी खाता",
"playerAccountPlaceholder": "मुख्य साइट खेलाडी ID वा प्रयोगकर्ता नाम (fuzzy)",
"playerId": "खेलाडी ID",
"playerIdOptional": "वैकल्पिक, खाताभन्दा प्राथमिक",
"requestDateRange": "अनुरोध मिति दायरा",
"status": "स्थिति",
"options": "विकल्प",
"abnormalOnly": "असामान्य मात्र",
"abnormalOnlyPending": "असामान्य मात्र (मिलान बाँकी)",
"search": "खोज",
"resetFilters": "फिल्टर रिसेट",
"refreshCurrentPage": "हालको पृष्ठ रिफ्रेस",
"loadFailed": "लोड असफल भयो",
"direction": "दिशा",
"amount": "रकम",
"failReason": "असफल कारण",
"requestTime": "अनुरोध समय",
"finishedTime": "समाप्त समय",
"actions": "कार्य",
"reverse": "रिभर्स",
"manualProcess": "म्यानुअल प्रक्रिया",
"processing": "प्रक्रियामा…",
"reverseSuccess": "रिभर्स सफल भयो",
"manualProcessSuccess": "म्यानुअल प्रक्रिया सफल भयो",
"actionFailed": "कार्य असफल भयो",
"txnNo": "कारोबार नं.",
"bizType": "व्यवसाय प्रकार",
"type": "प्रकार",
"queryFailed": "खोज असफल भयो",
"invalidPlayerId": "मान्य खेलाडी ID लेख्नुहोस्",
"querying": "खोजिँदैछ…",
"query": "खोज",
"sitePlayer": "साइट खेलाडी",
"walletType": "प्रकार",
"currency": "मुद्रा",
"balanceMinor": "ब्यालेन्स (सानो एकाइ)",
"availableBalance": "उपलब्ध (अनुमानित)",
"noWalletRows": "वालेट रेकर्ड छैन। बेट वा ट्रान्सफर नगरेका खेलाडीमा रेकर्ड नहुन सक्छ।",
"copyTransferNo": "स्थानीय ट्रान्सफर नं.",
"copyExternalRefNo": "मुख्य साइट सन्दर्भ नं.",
"copyTxnNo": "कारोबार नं.",
"copyExternalTxnRefNo": "मुख्य साइट सन्दर्भ नं.",
"in": "भित्र",
"out": "बाहिर"
}

View File

@@ -0,0 +1,83 @@
{
"title": "管理员",
"listTitle": "管理员用户列表",
"createAdmin": "新建管理员",
"searchPlaceholder": "按用户名 / 昵称 / 邮箱搜索",
"loadFailed": "加载管理员列表失败",
"nicknameRequired": "请填写昵称",
"newPasswordMin": "新密码至少 8 位",
"roleRequired": "请至少选择一个角色",
"usernameRequired": "请填写登录账号",
"passwordMin": "密码至少 8 位",
"createSuccess": "已创建管理员 {{name}}",
"updateSuccess": "已更新 {{name}}",
"saveAccountFailed": "保存账号失败",
"deleteSuccess": "已删除 {{name}}",
"deleteFailed": "删除失败",
"allPermissions": "全部权限",
"saveRoleSuccess": "已更新 {{name}} 的角色",
"saveRoleFailed": "保存角色失败",
"savePermissionSuccess": "已更新 {{name}} 的权限",
"savePermissionFailed": "保存权限失败",
"saving": "保存中…",
"deleting": "删除中…",
"common": {
"none": "无"
},
"table": {
"account": "账号",
"nickname": "昵称",
"status": "状态",
"roles": "角色",
"direct": "直接权限",
"effective": "生效权限",
"actions": "操作"
},
"status": {
"enabled": "启用",
"disabled": "禁用"
},
"actions": {
"permissions": "权限",
"edit": "编辑",
"delete": "删除",
"cancel": "取消",
"save": "保存"
},
"permissionDialog": {
"title": "管理员权限",
"rolesTitle": "角色",
"rolesDescription": "保存至默认站点,与「直接权限」叠加为有效权限。",
"rolePermissionCount": "含 {{count}} 项功能权限",
"directTitle": "直接权限",
"directDescription": "按菜单或业务域展开,勾选具体的 prd.*;多数情况只调角色即可。",
"selectedRoles": "当前勾选的角色:",
"saveRoles": "保存角色",
"saveDirect": "保存直接权限"
},
"accountDialog": {
"createTitle": "新建管理员",
"editTitle": "编辑账号",
"createDescription": "须为账号指定至少一个默认站点角色。登录账号仅可使用字母、数字、点、下划线与连字符,保存后为小写。",
"editDescription": "登录账号不可修改。留空密码表示不修改。",
"username": "登录账号",
"usernamePlaceholder": "例如 ops_admin",
"nickname": "昵称",
"nicknamePlaceholder": "显示名称",
"emailOptional": "邮箱(可选)",
"emailPlaceholder": "留空则不填",
"password": "密码",
"passwordOptional": "密码(可选)",
"passwordPlaceholderCreate": "至少 8 位",
"passwordPlaceholderEdit": "不修改请留空",
"rolesRequired": "角色(默认站点,至少一项)",
"rolesDescription": "创建后即可在「权限」中继续调整角色或直接授权。",
"noRoles": "暂无角色数据,请等待列表加载完成后重试。"
},
"delete": {
"currentUserBlocked": "不能删除当前登录账号",
"rowActionTitle": "删除该管理员",
"confirmTitle": "确认删除",
"confirmDescription": "确定删除管理员 {{name}}?此操作不可撤销。"
}
}

View File

@@ -1,3 +1,14 @@
{
"title": "审计日志"
"title": "审计日志",
"moduleCode": "模块编码",
"actionCode": "动作编码",
"operatorType": "操作者类型",
"exactMatch": "精确匹配",
"operatorTypePlaceholder": "如 admin / system",
"operator": "操作者",
"module": "模块",
"action": "动作",
"target": "目标",
"time": "时间",
"empty": "无数据"
}

View File

@@ -1,3 +1,24 @@
{
"title": "登录"
"title": "登录",
"loginTitle": "后台登录",
"account": "账号",
"accountPlaceholder": "登录账号",
"password": "密码",
"passwordPlaceholder": "密码",
"captcha": "验证码",
"captchaPlaceholder": "图中字符",
"captchaLoading": "加载验证码中",
"captchaRefresh": "点击刷新验证码",
"captchaFetch": "点击获取",
"apiMissingTitle": "未配置 API 地址",
"apiMissingDescriptionPrefix": "请在环境中设置",
"apiMissingDescriptionSuffix": "Laravel 根 URL如 http://127.0.0.1:8000。",
"submit": "登录",
"submitting": "登录中…",
"captchaLoadFailed": "无法获取验证码,请检查接口或网络",
"apiBaseMissingToast": "未配置 NEXT_PUBLIC_LOTTERY_API_BASE_URL",
"captchaRequired": "请先刷新验证码",
"welcome": "欢迎,{{name}}",
"networkFailed": "网络请求失败",
"loginFailed": "登录失败"
}

View File

@@ -4,7 +4,7 @@
"ne": "नेपाली",
"zh": "中文",
"title": "界面语言",
"changed": "语言"
"changed": "语言已切换为 {{language}}"
},
"app": {
"title": "彩票后台"
@@ -15,6 +15,65 @@
"search": "搜索",
"apply": "应用",
"loading": "加载中...",
"submitting": "提交中..."
"submitting": "提交中...",
"logout": "退出登录",
"close": "关闭",
"viewAll": "查看全部",
"viewDetails": "查看详情",
"reviewNow": "立即审核",
"create": "创建",
"createTask": "创建任务",
"clear": "清除",
"done": "完成"
},
"date": {
"placeholder": "选择日期",
"rangePlaceholder": "选择日期范围",
"rangeHint": "先选开始日,再选结束日(单日可对同一天点两次);点「完成」关闭面板。"
},
"pagination": {
"perPage": "每页条数",
"selectPlaceholder": "请选择",
"summary": "共 {{total}} 条;第 {{page}} / {{lastPage}} 页",
"previous": "上一页",
"next": "下一页"
},
"states": {
"noData": "暂无数据",
"loading": "加载中…",
"comingSoon": "功能开发中"
},
"errors": {
"loadFailed": "加载失败"
},
"toolbar": {
"defaultAdmin": "管理员",
"notifications": "通知",
"notificationsComingSoon": "通知功能开发中",
"accountSettings": "账号设置",
"loggedOut": "已退出登录"
},
"nav": {
"home": "首页",
"dashboard": "仪表盘",
"admin_users": "管理列表",
"players": "玩家列表",
"wallet": "钱包流水",
"draws": "期号列表",
"config": "运营配置",
"risk": "风控",
"settlement": "结算",
"jackpot": "Jackpot",
"reconcile": "对账",
"tickets": "玩家注单",
"reports": "报表导出",
"audit": "审计日志",
"settings": "系统设置"
},
"sidebar": {
"workspace": "工作台"
},
"auth": {
"checking": "正在校验登录状态…"
}
}

View File

@@ -0,0 +1,83 @@
{
"title": "配置中心",
"nav": {
"aria": "运营配置子导航",
"sidebarTitle": "运营配置导航",
"groups": {
"betting": "投注与展示",
"risk_wallet": "风控与资金"
},
"items": {
"plays": "玩法与限额",
"odds": "赔率",
"rebate": "佣金 / 回水",
"risk-cap": "赔付封顶",
"wallet": "钱包阈值"
}
},
"versionStatus": {
"active": "生效中",
"draft": "草稿",
"archived": "已归档"
},
"versionSwitcher": {
"sheetTitle": "切换配置版本",
"sheetDescription": "选择一条版本在本页查看;草稿可编辑,生效中与已归档为只读。",
"loading": "加载中…",
"noneSelected": "未选择版本",
"switch": "切换版本",
"empty": "暂无版本记录。",
"count": "{{count}} 条",
"effectiveAt": "生效时间:{{value}}",
"note": "备注:{{value}}",
"current": "当前查看",
"selected": "已选中",
"view": "查看",
"rollback": "回滚",
"delete": "删除",
"deleteConfirmTitle": "确认删除版本?",
"deleteConfirmDescription": "将永久删除版本 ID {{id}}version_no {{version}})。生效中的版本不可删除。"
},
"versionActions": {
"publishCurrent": "启用为当前版本",
"refreshing": "刷新中",
"refresh": "刷新版本",
"newDraft": "新建草稿",
"saveDraft": "保存草稿"
},
"wallet": {
"title": "钱包转账限额配置",
"description": "金额单位为游戏币种最小单位(如 NPR 下 100 = 1.00 NPR。最小金额至少为 1 最小单位。",
"loadFailed": "加载失败",
"saveSuccess": "保存成功",
"saveFailed": "保存失败",
"fields": {
"inMin": "转入最小金额",
"inMax": "转入最大金额",
"outMin": "转出最小金额",
"outMax": "转出最大金额"
},
"placeholders": {
"min": "例如 1.00",
"max": "例如 10000.00"
},
"hints": {
"inMin": "主站钱包转入彩票钱包的单笔下限",
"inMax": "主站钱包转入彩票钱包的单笔上限",
"outMin": "彩票钱包转出主站钱包的单笔下限",
"outMax": "彩票钱包转出主站钱包的单笔上限"
},
"discard": "放弃更改"
},
"play": {
"batchGroups": {
"d2": "2D 全局",
"d3": "3D 全局",
"d4": "4D 全局",
"big-small": "Big / Small",
"position": "位置类玩法",
"box": "包号类玩法",
"jackpot": "Jackpot"
}
}
}

View File

@@ -1,3 +1,57 @@
{
"title": "仪表盘"
"title": "仪表盘",
"refresh": "刷新",
"notice": "提示",
"todayBetTotal": "当期投注总额",
"currentDrawFinanceSummary": "当前大厅期财务汇总",
"currentPayout": "当期派彩",
"payoutSummary": "中奖派彩 + Jackpot",
"currentProfit": "当期平台盈亏",
"profitFormula": "投注 派彩(近似)",
"currentDraw": "当前期号",
"drawSequence": "第 {{sequence}} 期",
"drawDetails": "期号详情",
"ticketCount": "本期注单笔数",
"relatedBetAmount": "关联投注额",
"riskCapUsage": "风险封顶占用",
"lockedAndCap": "已占用 {{locked}} / 封顶 {{cap}}",
"occupancyDetails": "占用明细",
"hotNumbersTop10": "热门号码 Top 10",
"playDimension": "玩法维度",
"soldOutDistribution": "售罄分布",
"soldOutTotal": "售罄合计",
"pendingReviewResults": "待审核开奖",
"abnormalTransferOrders": "异常转账单",
"viewTransferOrders": "查看转账单",
"noSoldOutNumbers": "暂无售罄号码",
"noPoolData": "该维度暂无池数据",
"numbersByUsage": "号码(按占用率)",
"capUsage": "封顶占用",
"tabs": {
"4d": "4D",
"3d": "3D",
"2d": "2D",
"special": "特别"
},
"soldOutBuckets": {
"d4": "4D",
"d3": "3D",
"d2": "2D",
"special": "特别号",
"other": "其他"
},
"quickLinks": {
"createDrawPlan": "创建期计划",
"drawSchedule": "开售 / 期号",
"results": "开奖结果",
"tickets": "注单管理",
"walletTransactions": "钱包流水",
"reports": "报表中心",
"auditLogs": "审计日志"
},
"warnings": {
"drawPermission": "当前账号无开奖查看/管理权限,财务与风控数据未返回。",
"walletPermission": "当前账号无钱包对账查看权限,异常转账计数未返回。",
"loadFailed": "加载失败,请检查 API 与登录状态。"
}
}

View File

@@ -0,0 +1,132 @@
{
"title": "期号",
"statusListTitle": "期号列表",
"generatePlan": "批量生成期开奖计划",
"generating": "生成中…",
"generateSuccess": "已生成 {{created}} 期,当前缓冲 {{upcoming}}/{{target}}",
"generateFailed": "生成失败",
"drawNo": "期号",
"status": "状态",
"startTime": "开始时间",
"closeTime": "封盘时间",
"drawTime": "开奖时间",
"betTotal": "下注总额",
"payoutTotal": "派彩总额",
"profitLoss": "盈亏",
"actions": "操作",
"queryDraw": "查询期号",
"reset": "重置",
"fuzzyDrawNo": "模糊匹配期号",
"viewDetails": "查看详情",
"invalidDrawId": "无效的期号 ID",
"loadFailed": "加载失败,请检查登录与 API 配置",
"drawDetail": "开奖详情",
"businessDate": "业务日",
"sequenceNo": "流水序号",
"plannedDraw": "计划开奖",
"coolingEndTime": "冷静期结束",
"resultSource": "结果来源",
"currentResultVersion": "当前结果版本",
"settleVersion": "结算版本",
"isReopened": "是否重开",
"yes": "是",
"no": "否",
"batchStats": "批次统计",
"batchTotal": "总批次",
"pendingReview": "待审核",
"published": "已发布",
"viewFinance": "查看期号收支",
"drawActions": "期号操作",
"drawActionsDesc": "手动封盘 / 取消 / RNG / 重开 / 触发结算均直接调用后台接口。",
"manualClose": "手动封盘",
"cancelDraw": "取消期号",
"cancelBeforeDraw": "未开奖前取消",
"rngDraw": "RNG开奖",
"rngAutoGenerate": "RNG 自动生成",
"reopen": "重开",
"cooldownReopen": "冷静期重开",
"runSettlement": "触发结算",
"processing": "处理中…",
"actionSuccess": "{{name}}成功",
"actionFailed": "{{name}}失败",
"hallPreviewStatus": "大厅预览 {{status}}",
"financeOverview": "期号收支概览",
"orderAndItemCount": "订单数 / 注项数",
"actualBet": "当期实扣投注",
"currentPayout": "当期派彩合计",
"grossProfit": "近似毛损益",
"settlementBatchList": "结算批次列表(按期号筛选)",
"relatedSettlementBatches": "本关联期结算批次",
"noSettlementBatches": "暂无结算批次记录。",
"ticketCount": "票数",
"winCount": "中奖数",
"finishedAt": "完成时间",
"resultsTitle": "开奖结果",
"reviewAndPublish": "去审核 / 发布",
"viewReviewQueue": "查看审核队列",
"noPublishedBatch": "暂无已发布批次。",
"version": "版本 v{{version}}",
"sourceType": "生成方式 {{source}}",
"manualEntry": "人工录入",
"rng": "RNG",
"rngSummary": "RNG 摘要 {{hash}}",
"confirmedAt": "确认时间 {{time}}",
"prize": "奖项",
"tail3": "尾3",
"tail2": "尾2",
"headTail": "头/尾",
"manualResultEntry": "人工录入开奖结果",
"currentStatusAndDraft": "当前状态 {{status}} · 保存后生成待确认批次,不会直接发布",
"enter23Numbers": "请完整输入 23 组 4 位数字",
"draftSaved": "已保存草稿 v{{version}},等待确认发布",
"saveFailed": "保存失败",
"clear": "清空",
"saveDraft": "保存草稿",
"saving": "保存中…",
"pendingBatches": "待确认批次",
"noPendingBatches": "当前没有待审核pending_review批次。",
"batchId": "批次 ID",
"numberCount": "号码条数",
"reviewAndPublishAction": "核对并发布",
"noPublishPermission": "无发布权限",
"batchNotFound": "未找到批次",
"batchNotFoundDesc": "请返回审核列表确认 batch id。",
"backToReviewQueue": "返回审核队列",
"publishTitle": "发布",
"cannotPublish": "不可发布",
"cannotPublishDesc": "当前批次状态为「{{status}}」。",
"checkBeforePublish": "请核对以下号码后再发布",
"checkBeforePublishDesc": "确认无误后点击发布。",
"publishedView": "查看已发布展示",
"confirmPublish": "确认发布",
"submitting": "提交中…",
"publishSuccess": "已发布 · {{drawNo}} · 状态 {{status}}",
"publishFailed": "发布失败",
"sourceTypeFull": "生成方式:{{source}} · 号码条数:{{count}}/23 · RNG 摘要:{{hash}}",
"subnav": {
"status": "期号状态",
"results": "开奖结果",
"finance": "期号收支",
"review": "审核与发布"
},
"statusOptions": {
"all": "不限",
"pending": "未开始",
"open": "可下注",
"closing": "封盘中",
"closed": "已封盘待开奖",
"drawing": "开奖处理中",
"review": "待人工审核",
"cooldown": "冷静期",
"settling": "结算处理中",
"settled": "已结算",
"cancelled": "已取消"
},
"resultSlots": {
"first": "头奖",
"second": "二奖",
"third": "三奖",
"starter": "特别奖 {{index}}",
"consolation": "安慰奖 {{index}}"
}
}

View File

@@ -0,0 +1,46 @@
{
"title": "奖池",
"configTitle": "Jackpot 奖池配置",
"loadFailed": "加载失败",
"saveSuccess": "已保存",
"saveFailed": "保存失败",
"invalidDrawId": "请填写有效的期号 ID",
"manualBurstSuccess": "已手动触发爆池",
"manualBurstFailed": "手动爆池失败",
"noPoolData": "暂无奖池数据",
"displayBalance": "展示余额 {{amount}}",
"currentAmount": "当前池余额(最小单位)",
"contributionRate": "蓄水比例 01",
"triggerThreshold": "爆池阈值(最小单位)",
"payoutRate": "爆池派彩比例 01",
"forceTriggerGap": "强制爆池间隔(已结算期数)",
"minBetAmount": "最低下注额(最小单位)",
"comboTriggerPlays": "组合触发玩法(逗号分隔)",
"status": "开关",
"disabled": "关闭",
"enabled": "开启",
"saving": "保存中…",
"save": "保存",
"manualBurstDrawId": "手动爆池期号 ID",
"manualBurstAmount": "爆池金额(空为全部)",
"processing": "处理中…",
"manualBurst": "手动爆池",
"filter": "筛选",
"drawNo": "期号",
"optional": "可选",
"apply": "应用",
"payoutRecords": "Jackpot 派彩记录",
"contributionRecords": "Jackpot 蓄水记录",
"subnavLabel": "Jackpot 子导航",
"subnavPools": "奖池配置",
"subnavRecords": "记录",
"payoutLoadFailed": "派彩记录加载失败",
"contributionLoadFailed": "蓄水记录加载失败",
"trigger": "触发",
"payoutAmount": "派彩额",
"winnerCount": "中奖人数",
"time": "时间",
"ticketNo": "注单",
"player": "玩家",
"contributionAmount": "蓄水额"
}

View File

@@ -0,0 +1,49 @@
{
"title": "玩家",
"listTitle": "玩家列表",
"createPlayer": "新建玩家",
"searchPlaceholder": "按玩家 ID / 用户名 / 昵称搜索",
"search": "搜索",
"refresh": "刷新",
"loadFailed": "加载玩家列表失败",
"siteCodeRequired": "请填写主站编号",
"sitePlayerIdRequired": "请填写主站玩家 ID",
"createFailed": "创建玩家失败",
"createSuccess": "已创建玩家 {{name}}",
"noChanges": "没有变更",
"updateFailed": "更新玩家失败",
"updateSuccess": "已更新 {{name}}",
"deleteFailed": "删除失败",
"deleteSuccess": "已删除玩家 {{name}}",
"statusNormal": "正常",
"statusFrozen": "冻结",
"statusBanned": "封禁",
"site": "主站",
"sitePlayerId": "主站玩家ID",
"username": "用户名",
"nickname": "昵称",
"currency": "币种",
"balance": "余额",
"available": "可用",
"status": "状态",
"lastLogin": "最后登录",
"actions": "操作",
"edit": "编辑",
"delete": "删除",
"createDialogTitle": "新建玩家",
"editDialogTitle": "编辑玩家",
"createDialogDesc": "手动注册一个主站玩家到彩票平台,通常由 SSO 登录自动创建。",
"editDialogDesc": "编辑玩家信息。",
"siteCode": "主站编号",
"siteCodePlaceholder": "例如 main_site",
"sitePlayerIdLabel": "主站玩家 ID",
"sitePlayerIdPlaceholder": "主站返回的唯一标识",
"usernamePlaceholderOptional": "选填",
"nicknamePlaceholderOptional": "选填",
"defaultCurrency": "默认币种",
"cancel": "取消",
"save": "保存",
"saving": "保存中…",
"confirmDelete": "确认删除",
"confirmDeleteDesc": "确定要删除玩家 {{name}} 吗?此操作不可恢复。"
}

View File

@@ -0,0 +1,45 @@
{
"title": "对账",
"createTitle": "人工发起对账",
"createDesc": "异常流水由定时任务自动核对。此处供财务按产品文档手动触发:选择对账类型与时间范围;可选填写待核对对象(玩家标识、划转单号或幂等键,每行一条)。任务与明细落库留痕,后续可接自动差异引擎。",
"reconcileType": "对账类型",
"walletTransfer": "钱包划转(主站 ⇄ 彩票)",
"startTime": "对账开始时间",
"endTime": "对账结束时间",
"scope": "限定范围(可选)",
"scopePlaceholder": "每行一条待核对引用,例如:玩家 ID、钱包划转单号、幂等键等。\n留空表示本时间段内不额外指定单据仅任务留痕。",
"scopeHint": "与「钱包流水」中待对账pending_reconcile流水对照使用时可将单号或幂等键粘贴至上方。",
"advancedToggleOpen": "展开高级选项(自定义明细 JSON",
"advancedToggleClose": "收起高级选项(自定义明细 JSON",
"advancedJson": "明细 JSON将覆盖上方「限定范围」生成的行",
"createTask": "创建对账任务",
"submitting": "提交中…",
"loadFailed": "加载失败",
"loadItemsFailed": "加载明细失败",
"periodRequired": "请填写对账时间范围(开始与结束)",
"periodInvalid": "时间无效,请检查所选日期与时间",
"periodOrderInvalid": "结束时间需晚于或等于开始时间",
"advancedJsonInvalid": "高级选项中的 JSON 无法解析",
"createSuccess": "已创建对账任务",
"createFailed": "创建失败",
"noCreatePermission": "当前账号无新建对账任务权限。",
"jobsTitle": "对账任务",
"jobsDesc": "点击一行查看差异明细与分页。",
"refresh": "刷新",
"jobNo": "任务号",
"type": "类型",
"status": "状态",
"period": "对账周期",
"createdAt": "创建时间",
"detailsTitle": "任务明细",
"sideARef": "彩票侧引用",
"sideBRef": "主站侧引用",
"differenceAmount": "差额(分)",
"noDetails": "无明细",
"statusCompleted": "已完成",
"statusRunning": "执行中",
"statusFailed": "失败",
"itemMismatch": "不一致",
"itemMatched": "一致",
"itemPendingCheck": "待核对"
}

View File

@@ -1,3 +1,34 @@
{
"title": "报表"
"title": "报表",
"createExport": "新建导出",
"reportType": "报表类型",
"exportFormat": "导出格式",
"filterJson": "filter_json可选",
"parseFilterFailed": "筛选 JSON 无法解析",
"createSuccess": "已创建导出任务",
"createFailed": "创建失败",
"downloadFailed": "下载失败",
"taskList": "任务列表",
"jobId": "任务号",
"type": "类型",
"format": "格式",
"status": "状态",
"output": "输出",
"download": "下载",
"createdAt": "创建时间",
"id": "ID",
"empty": "无数据",
"reportTypes": {
"draw_profit_summary": "期号盈亏",
"daily_profit_summary": "每日盈亏汇总",
"player_win_loss": "玩家输赢报表",
"wallet_transfer_report": "玩家转入转出报表",
"hot_number_risk_report": "热门号码风险报表",
"play_dimension_report": "玩法维度报表",
"sold_out_number_report": "售罄号码报表",
"rebate_commission_report": "佣金回水报表",
"audit_operation_report": "后台操作审计报表",
"wallet_txns_daily": "钱包流水日报",
"transfer_orders_daily": "转账单日报"
}
}

View File

@@ -0,0 +1,91 @@
{
"title": "风控",
"center": "风控中心",
"drawNo": "期号",
"status": "状态",
"closeTime": "封盘时间",
"actions": "操作",
"all": "全部",
"search": "搜索",
"refresh": "刷新",
"fuzzyDrawNo": "模糊匹配期号",
"loadDrawListFailed": "加载期号列表失败",
"enterRisk": "进入风控",
"poolsTitle": "风险池",
"searchNumber": "搜索号码",
"searchNumberPlaceholder": "如 8888",
"riskFilter": "风险筛选",
"sort": "排序",
"filterAll": "全部",
"filterSoldOut": "售罄",
"filterHighRisk": ">80%",
"sortUsageDesc": "占用比 ↓(热门)",
"sortLockedDesc": "已占用额 ↓",
"sortRemainingAsc": "剩余额 ↑(紧俏)",
"sortNumberAsc": "号码 ↑",
"loadPoolsFailed": "加载风险池失败",
"capAmount": "封顶",
"lockedAmount": "已占用",
"remainingAmount": "剩余",
"usageRatio": "占用比",
"poolStatus": "状态",
"soldOut": "售罄",
"warning": "预警",
"normal": "正常",
"recover": "恢复",
"close": "关闭",
"view": "查看",
"manualCloseSuccess": "已手动关闭号码下注",
"recoverSuccess": "已恢复号码下注",
"actionFailed": "操作失败",
"detailTitle": "风险池详情",
"loadDetailFailed": "加载风险池详情失败",
"backToList": "返回列表",
"backToAllPools": "返回全部风险池",
"numberTitle": "号码 {{number}}",
"drawMeta": "期号 {{drawNo}}",
"totalCap": "封顶额",
"lockedWorstCase": "已占用(最坏赔付预留)",
"remainingSellable": "剩余可售",
"isSoldOut": "售罄",
"yes": "是",
"no": "否",
"occupationLogs": "本号码占用 / 释放流水",
"time": "时间",
"action": "动作",
"amount": "金额",
"source": "来源",
"ticketNo": "注单号",
"playCode": "玩法",
"loadLogsFailed": "加载占用流水失败",
"lockLogsTitle": "风险占用流水",
"drawInfoLoadFailed": "无法加载期号信息",
"loadingDraw": "加载期号…",
"headerTitle": "风控 · 第 {{drawNo}} 期",
"databaseStatus": "数据库状态",
"hallPreviewStatus": "(大厅展示态:{{status}}",
"subnavOccupancy": "风险占用",
"subnavHot": "热门号码",
"subnavSoldOut": "售罄列表",
"subnavPools": "全部风险池",
"changeDraw": "更换期号",
"number4d": "号码4 位)",
"optional": "可选",
"actionFilter": "动作",
"noLimit": "不限",
"lock": "锁定 lock",
"release": "释放 release",
"applyFilter": "应用筛选",
"statusOptions": {
"pending": "未开始",
"open": "可下注",
"closing": "封盘中",
"closed": "已封盘待开奖",
"drawing": "开奖处理中",
"review": "待审核",
"cooldown": "冷静期",
"settling": "结算中",
"settled": "已结算",
"cancelled": "已取消"
}
}

View File

@@ -0,0 +1,54 @@
{
"title": "结算",
"filter": "筛选",
"drawNo": "期号",
"status": "状态",
"apply": "应用",
"batchList": "结算批次",
"loadFailed": "加载失败",
"exportFailed": "导出失败",
"actionSuccess": "{{name}}成功",
"actionFailed": "{{name}}失败",
"placeholderDrawNo": "如 20260511-001",
"reviewStatus": "审核状态",
"ticketCount": "注单数",
"winCount": "中奖笔数",
"payoutTotal": "派彩合计",
"jackpot": "Jackpot",
"finishedAt": "完成时间",
"details": "明细",
"approve": "审核通过",
"pass": "通过",
"reject": "驳回",
"payout": "派彩",
"export": "导出",
"backToList": "返回批次列表",
"errorTitle": "错误",
"retry": "重试",
"batchSummary": "批次 #{{id}}",
"summaryMeta": "期号 {{drawNo}} · 期状态 {{drawStatus}} · 结果批次 v{{version}}",
"settlementStatus": "结算状态",
"reviewState": "审核状态",
"ticketTotal": "注单数",
"winTotal": "中奖笔数",
"payoutAmount": "派彩合计",
"jackpotPayout": "Jackpot 划出",
"startedAt": "开始",
"endedAt": "结束",
"runPayout": "执行派彩",
"exportSettlementReport": "导出结算报表",
"loadingSummary": "加载摘要…",
"detailTitle": "注单结算明细",
"ticketNo": "注单号",
"playCode": "玩法",
"player": "玩家",
"matchedTier": "匹配档",
"regularPayout": "常规派彩",
"loadingDetails": "加载明细…",
"statusOptions": {
"all": "不限",
"running": "进行中",
"completed": "已完成",
"failed": "失败"
}
}

View File

@@ -0,0 +1,19 @@
{
"title": "注单",
"playerTicketQuery": "玩家注单查询",
"playerId": "玩家 ID",
"invalidPlayerId": "请输入有效玩家 ID",
"drawNoOptional": "期号 draw_no可选",
"drawNoPlaceholder": "如 20260520-001",
"query": "查询",
"loadFailed": "加载失败",
"ticketNo": "注单号",
"orderNo": "订单号",
"drawNo": "期号",
"playCode": "玩法",
"number": "号码",
"actualDeduct": "实扣",
"status": "状态",
"failReason": "失败原因",
"winAmount": "中奖"
}

View File

@@ -0,0 +1,69 @@
{
"title": "钱包",
"subnavLabel": "钱包子页",
"subnavTransactions": "钱包流水",
"subnavTransferOrders": "转账单",
"noPermission": "当前账号无访问该页的权限",
"copySuccess": "{{label}}已复制到剪贴板",
"copyFailed": "复制失败,请检查浏览器权限或手动选择文本",
"statusProcessing": "处理中",
"statusSuccess": "成功",
"statusFailed": "失败",
"statusPendingReconcile": "待对账",
"statusReversed": "已冲正",
"statusManuallyProcessed": "已人工处理",
"statusPosted": "已记账",
"filterAll": "不限",
"transferIn": "主站转入",
"transferOut": "主站转出",
"transferOutRefund": "转出失败回补",
"transferOrders": "转账单",
"walletTransactions": "钱包流水",
"playerWalletQuery": "玩家钱包查询",
"localTransferNo": "本地单号",
"externalRefNo": "主站流水号",
"playerAccount": "玩家账号",
"playerAccountPlaceholder": "主站玩家 ID 或用户名(模糊)",
"playerId": "玩家 ID",
"playerIdOptional": "可选,优先于账号",
"requestDateRange": "请求日期范围",
"status": "状态",
"options": "选项",
"abnormalOnly": "仅异常单",
"abnormalOnlyPending": "仅异常(待对账)",
"search": "搜索",
"resetFilters": "重置筛选",
"refreshCurrentPage": "刷新当前页",
"loadFailed": "加载失败",
"direction": "方向",
"amount": "金额",
"failReason": "失败原因",
"requestTime": "请求时间",
"finishedTime": "完成时间",
"actions": "操作",
"reverse": "冲正",
"manualProcess": "人工处理",
"processing": "处理中…",
"reverseSuccess": "冲正成功",
"manualProcessSuccess": "人工处理成功",
"actionFailed": "操作失败",
"txnNo": "流水号",
"bizType": "类型(业务)",
"type": "类型",
"queryFailed": "查询失败",
"invalidPlayerId": "请输入有效玩家 ID",
"querying": "查询中…",
"query": "查询",
"sitePlayer": "站点玩家",
"walletType": "类型",
"currency": "币种",
"balanceMinor": "余额(最小单位)",
"availableBalance": "可用(推算)",
"noWalletRows": "暂无钱包行(从未下过注或未划转也可能无记录)",
"copyTransferNo": "本地单号",
"copyExternalRefNo": "主站流水号",
"copyTxnNo": "流水号",
"copyExternalTxnRefNo": "主站流水号",
"in": "入",
"out": "出"
}