diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b71e900 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,20 @@ +name: lotteryadmin CI + +on: + push: + branches: [main, master, develop] + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: "22" + cache: npm + cache-dependency-path: package-lock.json + - run: npm ci + - run: npm run lint + - run: npm run build diff --git a/AGENTS.md b/AGENTS.md index ab21acd..22bcaf1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -36,12 +36,14 @@ This version has breaking changes — APIs, conventions, and file structure may - 文档 i18n:`useTranslation` 须显式 `ns`;`returnObjects` 列表用 `Array.isArray` 守卫;避免节名与表头 key 冲突(如 `billStatus`)。 - 运营页少堆 `text-xs` 说明与多层免责条;口径/默认范围合并进各模块一行 `summary`,勿叠加 filterPanel/queryHint/disclaimer 等小字(对账、报表中心已按此精简)。 - i18n 按语言懒加载,不要一次 import 三语全套。 +- 金额展示须防大额截断:卡片/摘要用 `AdminMoneyDisplay`(自适应字号 + `break-all`,禁止 `truncate`);表格金额列用 `.admin-money-value`。 ## Learned Workspace Facts - 无接入站时依赖站点的页面展示 ``;仅 `profile.is_super_admin` 显示创建入口。 - 超管判定用登录态 `is_super_admin`,勿用站点角色或 `admin_user_site_roles` 绑定推断。 -- 站点管理员(`profile.site != null`)代理 UI 绕过选中代理的 `can_create_*` 门控,按自身 manage 权限展示 Tab/操作;在代理下创建玩家须传 `agent_node_id`,勿默认挂根代理。 +- 站点运营内置角色 `site_admin|site_finance|site_cs`(`admin_user_site_roles`,无代理绑定);识别用 `isSiteOperator`/`isSiteAdminOperator`(`admin-session-variants.ts`)。仪表盘按 `account_kind` 分流:`SiteDashboardConsole` / `SiteFinanceDashboardConsole` / `SiteCsDashboardConsole`。 +- 站点管理员(`isSiteAdminOperator`)代理 UI 绕过选中代理的 `can_create_*` 门控,按自身 manage 权限展示 Tab/操作;在代理下创建玩家须传 `agent_node_id`,勿默认挂根代理。 - 客户对外文档:`/docs`、`/docs/integration`、`/docs/admin` 公开免登录;读者为接入方与站点运营/代理;顶栏「管理后台」链 `/admin`;SSO 无登录换票、JWT+`player/me`、iframe `data.token`;Docs 侧栏 `--docs-sticky-top`;静态校验用 `document.body.innerText`。 - `SettlementBillRow` 无 `currency_code`;账单金额展示用玩家 `default_currency`。 - 浏览器 `/api/v1/*` 由 Next 转发到 `LOTTERY_API_UPSTREAM`;与本地 Postgres 对账前须确认 upstream 与所查库一致。 diff --git a/scripts/merge-en-translations.mjs b/scripts/merge-en-translations.mjs new file mode 100644 index 0000000..c129276 --- /dev/null +++ b/scripts/merge-en-translations.mjs @@ -0,0 +1,236 @@ +#!/usr/bin/env node +/** + * Merge missing English (en) i18n keys. + * Usage: node scripts/merge-en-translations.mjs + */ +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const root = path.join(__dirname, ".."); +const localesDir = path.join(root, "src/i18n/locales"); + +/** @type {Record>} */ +const translations = { + "adminUsers.json": { + roleListHint: + "You can add custom roles and configure permissions. Built-in roles (super admin, site admin, site finance, site support, agent) cannot be deleted.", + "rolePermissionDialog.packageHint": + "Checking a module row on the left grants View only. Select Manage separately for data entry, close, draw, and other admin actions.", + confirmSaveRolesTitle: "Save admin roles?", + confirmSaveRolesDescription: + "This updates role bindings for admin {{name}}; their console permissions will change accordingly.", + confirmSaveAccountTitle: "Save admin account?", + confirmSaveAccountCreateDescription: "This creates a new admin account and assigns the selected roles.", + confirmSaveAccountEditDescription: + "This updates account details for admin {{name}}, including status and password changes.", + confirmSaveRolePermissionsTitle: "Save role permissions?", + confirmSaveRolePermissionsDescription: + "This updates feature permissions for role “{{name}}”. All admins bound to this role are affected immediately.", + confirmSaveRoleTitle: "Save role details?", + confirmSaveRoleCreateDescription: "This creates a new role {{name}}.", + confirmSaveRoleEditDescription: "This updates the name, description, and status of role {{name}}.", + }, + "agents.json": { + "lineUi.profileReadOnlyHint": + "Share, credit, and rebate are configured by your upline. Contact your parent agent or the platform to request changes.", + "lineUi.selfAgentOverviewHint": + "Credit below is allocated by your upline. Share and rebate are maintained upstream; this account cannot view or edit them.", + "lineUi.overviewDownlineHint": "{{count}} direct downline agent(s). Manage them in the Downline tab.", + "lineUi.playersUnavailableHint": + "This agent cannot create players. Enable “Allow create player” in the agent profile first.", + "lineUi.playersNoPermissionHint": "This account does not have player management permission on this node.", + "lineUi.downlineColumns.email": "Email", + "lineUi.downlineColumns.downlineCount": "Downline count", + "lineUi.editCurrent": "Edit this agent", + "lineUi.profileTabHint": + "Maintain share, credit, rebate, and risk tags here. Use Account & status for login name and password.", + "lineUi.nextSteps": "Suggested next steps", + "lineUi.stepProfile": "Configure share, credit, and rebate", + "lineUi.stepDownline": "Manage direct downline ({{count}} now)", + "lineUi.stepPlayers": "Create or maintain direct players", + "lineUi.downlineEmpty": "No direct downline yet. Child agents will appear here after creation.", + "lineUi.downlineEmptyShort": "No direct downline yet.", + "lineUi.sidebarShareRate": "Share {{rate}}%", + "lineUi.sidebarAvailableCredit": "Available to grant {{amount}}", + "lineUi.expand": "Expand", + "lineUi.collapse": "Collapse", + "profile.relativeShareRate": "Share rate (% of parent)", + "profile.relativeShareRateValue": "{{rate}}% of parent", + "profile.capabilityHint": + "Takes effect on this agent’s primary account after save. If the platform Agent role included player/node management, login permissions are now tightened by these switches.", + "profile.parentCaps": "Parent share {{share}}%, available to grant {{credit}}", + "profile.availableCredit": "Available to grant {{amount}}", + "profile.riskTags": "Risk tags", + "profile.riskTagsPlaceholder": "Comma-separated, e.g. overdue, high_turnover", + "profile.saveSuccess": "Share and credit settings saved", + "settlementBills.platform": "Platform", + "settlementBills.filteredByPeriod": "Showing bills for period #{{id}} only", + "settlementBills.clearPeriodFilter": "Show all periods", + "settlementBills.columns.party": "Party", + "settlementBills.columns.counterparty": "Counterparty", + "settlementBills.columns.grossWinLoss": "Win/Loss", + "settlementBills.detail": "Details", + "settlementBills.confirm": "Confirm bill", + "settlementBills.confirmed": "Confirmed", + "settlementBills.paymentAmount": "Payment amount", + "settlementBills.recordPayment": "Record payment", + "settlementBills.paid": "Payment recorded", + "settlementBills.subtreeSummary": "Subtree summary", + "settlementBills.grossWinLoss": "Win/Loss (gross_win_loss)", + "settlementBills.rebateAmount": "Rebate", + "settlementBills.shareProfit": "Share profit", + "settlementBills.platformRounding": "Platform rounding", + "settlementReports.title": "Period reports (credit share line)", + "settlementReports.description": + "Report set: player win/loss, agent share, rebate, credit, unpaid/overdue bills, and platform P/L.", + "settlementReports.type": "Report type", + "settlementReports.footnote": + "These reports use credit-line period semantics, not legacy wallet commission/rebate reports.", + "settlementReports.noPeriodHint": + "When no specific period is selected, the last 7 days are used. Platform P/L requires a period.", + "settlementReports.types.summary": "Summary", + "settlementReports.types.player_win_loss": "Player win/loss", + "settlementReports.types.agent_share": "Agent share", + "settlementReports.types.rebate": "Rebate", + "settlementReports.types.credit": "Credit", + "settlementReports.types.unpaid_bills": "Unpaid bills", + "settlementReports.types.overdue": "Overdue", + "settlementReports.types.platform_pnl": "Platform P/L", + "settlementReports.types.draw_period": "By draw", + "settlementReports.summary.billCount": "Bill count", + "settlementReports.summary.totalNet": "Total net", + "settlementReports.summary.totalUnpaid": "Total unpaid", + "settlementReports.summary.overdueCount": "Overdue bills", + "settlementReports.summary.platformRounding": "Total platform rounding", + "settlementReports.rebate.accrued": "Accrued", + "settlementReports.rebate.inBill": "In bill", + "settlementReports.rebate.settled": "Settled", + "settlementReports.rebate.allocated": "Allocated", + "settlementReports.credit.agents": "Agent credit", + "settlementReports.credit.players": "Player credit", + "settlementReports.platformPnl.periodRequired": "Select a specific period to view platform P/L.", + "settlementReports.platformPnl.billNet": "Platform bill net", + "settlementReports.platformPnl.rounding": "Rounding adjustment", + "settlementReports.platformPnl.shareProfit": "Share profit (metadata)", + "settlementReports.columns.player": "Player", + "settlementReports.columns.gameType": "Play", + "settlementReports.columns.grossWinLoss": "Win/Loss", + "settlementReports.columns.rebate": "Rebate", + "settlementReports.columns.agentId": "Agent ID", + "settlementReports.columns.count": "Count", + "settlementReports.columns.billId": "Bill", + "settlementReports.columns.billType": "Type", + "settlementReports.columns.unpaid": "Unpaid", + "settlementReports.columns.status": "Status", + "settlementReports.columns.overdueDays": "Overdue days", + "settlementReports.columns.drawNo": "Draw no.", + "settlementReports.columns.code": "Code", + "settlementReports.columns.name": "Name", + "settlementReports.columns.creditLimit": "Credit limit", + "settlementReports.columns.allocated": "Allocated", + "settlementReports.columns.available": "Available", + "settlementReports.columns.used": "Used", + "settlementReports.columns.frozen": "Frozen", + "settlementReports.columns.rebateType": "Rebate type", + "settlementReports.columns.amount": "Amount", + "settlementPeriods.title": "Agent periods", + "settlementPeriods.presetHint": "Quick period presets (recommended)", + "settlementPeriods.openWithPreset": "Apply quick preset", + "settlementPeriods.showAdvanced": "Custom start/end dates", + "settlementPeriods.hideAdvanced": "Hide custom dates", + "settlementPeriods.range": "Period", + "settlementPeriods.empty": "No periods yet. Choose a quick preset and open a period.", + "settlementPeriods.start": "Start", + "settlementPeriods.end": "End", + "settlementPeriods.status": "Status", + "settlementPeriods.close": "Close period and generate bills", + "settlementPeriods.viewBills": "Bills", + "settlementPeriods.opened": "Period opened", + "settlementPeriods.closed": "Period closed; bills generated", + "settlementPeriods.closeFailed": "Failed to close period", + "lineProvision.siteCode": "Integration site", + "lineProvision.siteCodePlaceholder": "Select site", + "lineProvision.siteRequired": "Select an integration site", + "lineProvision.noUnboundSite": "No sites without a level-1 agent", + "lineProvision.openIntegrationSites": "Go to integration sites", + "lineProvision.passwordHint": "At least 8 characters", + "playersPanel.siteCode": "Line site", + "playersPanel.passwordHint": "At least 8 characters", + "playersPanel.passwordMinLength": "Initial password must be at least 8 characters", + "playersPanel.creditLimitInvalid": "Credit limit must be an integer ≥ 0", + "playersPanel.creditLimitExceeded": "Credit limit cannot exceed this agent’s available grant", + "playersPanel.rebateRateInvalid": "Rebate rate must be between 0 and 100%", + "playersPanel.fundingMode": "Funding mode", + "playersPanel.authSource": "Auth source", + "playersPanel.rebateInherited": "Inherit agent default rebate", + "playersPanel.creditListHint": + "Credit line: below shows player credit limits and available credit, not main-site wallet balance.", + "playersPanel.playerRef": "Player ref", + "playersPanel.usernameNickname": "Username / nickname", + "playersPanel.creditLimitAvailable": "Credit limit / available", + "roles.selectedCount": "{{selected}} / {{total}} selected", + "roles.groupSelectedCount": "{{selected}} / {{total}}", + "roles.selectGroup": "Select all in group", + "roles.noAssignablePermissions": "No permissions available to assign", + }, + "config.json": { + "integrationSites.columns.currency": "Currency", + "integrationSites.columns.lineRoot": "Level-1 agent", + "integrationSites.columns.h5Url": "Lottery H5", + "integrationSites.columns.ssoSecret": "SSO secret", + "integrationSites.columns.walletApiKey": "Wallet API key", + "integrationSites.lineRootBound": "Bound", + "integrationSites.lineRootUnbound": "Unbound", + "integrationSites.secretNotConfigured": "Secret not configured", + "integrationSites.secretCopyRequiresManage": + "Integration site manage permission is required to copy secrets", + }, + "jackpot.json": { + confirmSavePoolTitle: "Save jackpot pool settings?", + confirmSavePoolDescription: + "This updates fill rate, thresholds, payout ratio, and related parameters (not pool balance). Use Balance adjustment for balance changes.", + }, + "players.json": { + rebateRate: "Rebate", + riskTags: "Risk tags", + }, +}; + +function setNested(obj, dotKey, value) { + const parts = dotKey.split("."); + let cur = obj; + for (let i = 0; i < parts.length - 1; i++) { + if (!(parts[i] in cur) || typeof cur[parts[i]] !== "object" || Array.isArray(cur[parts[i]])) { + cur[parts[i]] = {}; + } + cur = cur[parts[i]]; + } + cur[parts[parts.length - 1]] = value; +} + +function sortKeysDeep(value) { + if (Array.isArray(value)) return value; + if (value && typeof value === "object") { + return Object.fromEntries( + Object.keys(value) + .sort() + .map((k) => [k, sortKeysDeep(value[k])]), + ); + } + return value; +} + +let merged = 0; +for (const [file, keys] of Object.entries(translations)) { + const enPath = path.join(localesDir, "en", file); + const en = JSON.parse(fs.readFileSync(enPath, "utf8")); + for (const [dotKey, enValue] of Object.entries(keys)) { + setNested(en, dotKey, enValue); + merged++; + } + fs.writeFileSync(enPath, `${JSON.stringify(sortKeysDeep(en), null, 2)}\n`, "utf8"); + console.log(`Updated ${file} (+${Object.keys(keys).length} keys)`); +} +console.log(`Total merged: ${merged}`); diff --git a/scripts/merge-ne-translations.mjs b/scripts/merge-ne-translations.mjs new file mode 100644 index 0000000..b12e47c --- /dev/null +++ b/scripts/merge-ne-translations.mjs @@ -0,0 +1,316 @@ +#!/usr/bin/env node +/** + * Merge missing Nepali (ne) i18n keys from translations map. + * Usage: node scripts/merge-ne-translations.mjs + */ +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +const root = path.join(__dirname, ".."); +const localesDir = path.join(root, "src/i18n/locales"); + +/** @type {Record>} */ +const translations = { + "adminUsers.json": { + siteRequired: "साइट छान्नुहोस्", + "table.sites": "बाँधिएका साइटहरू", + "permissionDialog.site": "साइट", + "accountDialog.site": "बाँधिएको साइट", + "accountDialog.sitePlaceholder": "यो खाताले पहुँच पाउने साइट छान्नुहोस्", + }, + "agents.json": { + "lineUi.kicker": "क्रेडिट शेयर · एजेन्ट ट्री", + "lineUi.agentCount": "यो समूहमा {{count}} एजेन्ट", + "lineUi.searchPlaceholder": "नाम वा लगइन खोज्नुहोस्", + "lineUi.directChildren": "प्रत्यक्ष अधीनस्थ {{count}}", + "lineUi.selectAgent": "शेयर र क्रेडिट हेर्न एजेन्ट छान्नुहोस्", + "lineUi.selectAgentHint": + "सेटलमेन्ट सीमा एजेन्ट ट्री अनुसार; शेयर, क्रेडिट र रिबेट प्रति नोड कन्फिग गरिन्छ।", + "lineUi.allocatedCredit": "बाँडिएको", + "lineUi.availableCredit": "उपलब्ध", + "lineUi.profileFootnote": "रिबेट सीमा {{rebate}}% · पूर्वनिर्धारित {{defaultRebate}}%", + "lineUi.tabOverview": "अवलोकन", + "lineUi.tabProfile": "शेयर र क्रेडिट", + "lineUi.tabProfileReadOnly": "शेयर र क्रेडिट (पढ्न मात्र)", + "lineUi.currentSite": "साइट", + "lineUi.viewAll": "सबै हेर्नुहोस्", + "lineUi.shareRebateCap": "रिबेट सीमा {{rate}}%", + "lineUi.overviewDownlineCard": "प्रत्यक्ष अधीनस्थ एजेन्ट हेर्नुहोस् र व्यवस्थापन गर्नुहोस्", + "lineUi.overviewDownlineCount": "{{count}}", + "lineUi.overviewPlayersHint": "प्रत्यक्ष खेलाडी र क्रेडिट स्थिति हेर्नुहोस्", + "lineUi.overviewPlayersSummary": "खेलाडी व्यवस्थापन", + "lineUi.downlineEmptyTitle": "अहिले प्रत्यक्ष अधीनस्थ छैन", + "lineUi.editAccount": "खाता र स्थिति", + "lineUi.saveProfile": "शेयर र क्रेडिट बचत", + "lineUi.tabDownline": "अधीनस्थ", + "lineUi.tabPlayers": "खेलाडी", + "lineUi.noDelegatedTabs": + "यो एजेन्टले अधीनस्थ एजेन्ट वा खेलाडी सिर्जना गर्न सक्दैन; शेयर र क्रेडिट मात्र लागू हुन्छ।", + listSearch: "नाम / कोड / लगइन खोज्नुहोस्", + siteSearch: "साइट नाम खोज्नुहोस्", + parentAgent: "माथिल्लो", + childrenCount: "प्रत्यक्ष अधीनस्थ", + "subnav.provisionHint": "एक पटकको अनबोर्डिङ; दैनिक कामका लागि लाइन र एजेन्ट ट्री प्रयोग गर्नुहोस्", + "profile.validation.creditBelowAllocated": + "क्रेडिट सीमा बाँडिएको क्रेडिभन्दा कम हुन सक्दैन (न्यूनतम {{min}})", + "profile.validation.creditExceedsParentWithMax": "क्रेडिट सीमा {{max}} भन्दा बढी हुन सक्दैन", + "settlementBills.periodLabel": "अवधि", + "settlementBills.periodPlaceholder": "अवधि छान्नुहोस्", + "settlementBills.allPeriods": "सबै अवधि", + "settlementBills.filteredByPeriodRange": "{{range}} का बिलहरू", + "settlementBills.emptyNoPeriodsManage": + "अहिले अवधि वा बिल छैन। अवधि व्यवस्थापनमा छिटो प्रिसेट प्रयोग गर्नुहोस्, त्यसपछि अवधि बन्द गर्नुहोस्।", + "settlementBills.emptyNoPeriodsAgent": + "अहिले बिल छैन। तपाईंको माथिल्लो वा प्लेटफर्मले अवधि बन्द गर्छ; मिति प्रविष्ट गर्नु पर्दैन।", + "settlementBills.emptyNoClosed": "बन्द अवधि छैन। बिल बन्द पछि सिर्जना हुन्छ।", + "settlementBills.typePlayer": "खेलाडी बिल", + "settlementBills.typeAgent": "एजेन्ट बिल", + "settlementBills.columns.period": "अवधि", + "settlementPeriods.manageTitle": "अवधि व्यवस्थापन", + "settlementPeriods.manageHint": + "यहाँ अवधि खोल्नुहोस् र बन्द गर्नुहोस्; माथिका बिल स्वतः अद्यावधिक हुन्छ। छिटो प्रिसेट सामान्यतया पर्याप्त।", + "settlementPeriods.presetThisWeek": "यो हप्ता", + "settlementPeriods.presetLastWeek": "गत हप्ता", + "settlementPeriods.presetThisMonth": "यो महिना", + "settlementPeriods.openHint": "स्थानीय मिति ({{tz}})", + "settlementPeriods.startDate": "सुरु मिति", + "settlementPeriods.endDate": "अन्त्य मिति", + "settlementPeriods.open": "अवधि खोल्नुहोस्", + "settlementPeriods.openFailed": "अवधि खोल्न असफल", + "settlementPeriods.datesRequired": "सुरु र अन्त्य मिति प्रविष्ट गर्नुहोस्", + "settlementPeriods.invalidRange": "अन्त्य मिति सुरु मितिभन्दा अगाडि हुन सक्दैन", + "settlementPeriods.statusOpen": "खुला", + "settlementPeriods.statusClosed": "बन्द", + "playersPanel.loginRequired": "लगइन प्रयोगकर्ता नाम र प्रारम्भिक पासवर्ड प्रविष्ट गर्नुहोस्", + "playersPanel.loginUsername": "लगइन प्रयोगकर्ता नाम", + "playersPanel.initialPassword": "प्रारम्भिक पासवर्ड", + "playersPanel.externalIdOptional": "बाह्य ID (वैकल्पिक)", + "playersPanel.externalIdHint": "स्वतः सिर्जनाका लागि खाली राख्नुहोस्", + "playersPanel.creditLimit": "क्रेडिट सीमा", + "playersPanel.rebateRate": "रिबेट दर (%)", + "playersPanel.rebateRateHint": "प्रतिशत लेख्नुहोस्, जस्तै 5 = 5%", + "playersPanel.availableToGrant": "एजेन्टले दिन सक्ने: {{amount}}", + "playersPanel.riskTags": "जोखिम ट्याग", + "playersPanel.riskTagsPlaceholder": "अल्पविरामले छुट्याउनुहोस्", + "playersPanel.createSuccessNative": "खेलाडी {{name}} सिर्जना भयो — लटरी /login प्रयोग गर्नुहोस्", + "users.email": "इमेल", + }, + "common.json": { + "export.ticketCombinations.filename": "ticket-combinations", + "export.ticketCombinations.sheetName": "संयोजनहरू", + "integrationSites.emptyPlatformHint": + "अहिले एकीकरण साइट छैन। एजेन्ट, खेलाडी वा सेटलमेन्ट व्यवस्थापन अघि साइट सिर्जना गर्नुहोस्।", + "integrationSites.createSite": "एकीकरण साइट सिर्जना", + }, + "config.json": { + "integrationSites.adminAccountCreated": "साइट एडमिन खाता {{username}} सिर्जना भयो", + "integrationSites.delete": "साइट मेटाउनुहोस्", + "integrationSites.deleteSuccess": "साइट {{code}} मेटाइयो", + "integrationSites.deleteFailed": "साइट मेटाउन असफल", + "integrationSites.deleteConfirmTitle": "यो साइट मेटाउने?", + "integrationSites.deleteConfirmDescription": + "यसले साइट {{code}} ({{name}}), यसको एजेन्ट लाइन, सेटलमेन्ट अवधि, खेलाडी र साइट एडमिन खाता स्थायी रूपमा हटाउँछ। पूर्ववत गर्न मिल्दैन।", + "integrationSites.deleteConfirm": "मेटाउनुहोस्", + "integrationSites.deleting": "मेटाउँदै…", + "integrationSites.form.adminUsernameRequired": "साइट एडमिन प्रयोगकर्ता नाम आवश्यक", + "integrationSites.form.adminNicknameRequired": "साइट एडमिन उपनाम आवश्यक", + "integrationSites.form.adminPasswordRequired": "प्रारम्भिक साइट एडमिन पासवर्ड कम्तीमा ८ अक्षर", + "integrationSites.fields.adminUsername": "एडमिन प्रयोगकर्ता नाम", + "integrationSites.fields.adminNickname": "एडमिन उपनाम", + "integrationSites.fields.adminPassword": "प्रारम्भिक पासवर्ड", + "integrationSites.fields.adminEmail": "इमेल (वैकल्पिक)", + "integrationSites.placeholders.adminUsername": "एडमिन प्रयोगकर्ता नाम लेख्नुहोस्", + "integrationSites.placeholders.adminNickname": "खाता उपनाम लेख्नुहोस्", + "integrationSites.placeholders.adminPassword": "कम्तीमा ८ अक्षर", + "integrationSites.placeholders.adminEmail": "इमेल लेख्नुहोस्", + "integrationSites.adminAccountSectionTitle": "साइट एडमिन खाता", + "integrationSites.adminAccountSectionDescription": + "साइट सिर्जना गर्दा त्यस साइटसँग बाँधिएको एउटा एडमिन खाता पनि सिर्जना हुन्छ।", + "system.saveDrawSuccess": "ड्र प्यारामिटर बचत भयो", + "system.saveCurrencyFormatSuccess": "मुद्रा प्रदर्शन ढाँचा बचत भयो", + "system.saveSettlementSuccess": "सेटलमेन्ट स्वचालन बचत भयो", + "system.sections.draw": "ड्र तालिका र समीक्षा", + "system.sections.drawDescription": + "ड्र समय, बन्द सञ्झ्याल, म्यानुअल समीक्षा र कूलडाउन नियन्त्रण। यो ब्लकमा परिवर्तित फिल्ड मात्र पेश हुन्छ।", + "system.sections.currencyFormat": "मुद्रा प्रदर्शन ढाँचा", + "system.sections.currencyFormatDescription": + "साइटभरि रकमका दशमलव र विभाजक (मुद्रा मास्टर डाटाबाट अलग)।", + "system.sections.settlement": "सेटलमेन्ट स्वचालन", + "system.sections.settlementDescription": + "टिक स्वतः सेटलमेन्ट, अनुमोदन र भुक्तानी चलाउने नियन्त्रण। यो ब्लकमा परिवर्तित फिल्ड मात्र पेश हुन्छ।", + "system.confirmSaveDrawTitle": "ड्र प्यारामिटर बचत गर्ने?", + "system.confirmSaveDrawDescription": + "यसले यो ब्लकमा ड्र समीक्षा, तालिका समय र कूलडाउन मात्र अद्यावधिक गर्छ।", + "system.confirmSaveCurrencyFormatTitle": "मुद्रा प्रदर्शन ढाँचा बचत गर्ने?", + "system.confirmSaveCurrencyFormatDescription": "यसले दशमलव स्थान र विभाजक अद्यावधिक गर्छ।", + "system.confirmSaveSettlementTitle": "सेटलमेन्ट स्वचालन बचत गर्ने?", + "system.confirmSaveSettlementDescription": + "यसले स्वतः सेटलमेन्ट, अनुमोदन र भुक्तानी स्विच अद्यावधिक गर्छ।", + "play.filters.sectionTitle": "खेल फिल्टर", + "play.filters.sectionDescription": + "पहिले सूची संकुचित गर्नुहोस्, त्यसपछि ब्याच स्विच वा पङ्क्ति सम्पादन प्रयोग गर्नुहोस्।", + "play.filters.keyword": "खेल खोज्नुहोस्", + "play.filters.keywordPlaceholder": "खेल कोड, प्रदर्शन नाम वा श्रेणीले फिल्टर", + "play.filters.category": "श्रेणी", + "play.filters.status": "स्थिति", + "play.filters.allCategories": "सबै श्रेणी", + "play.filters.allStatuses": "सबै स्थिति", + "play.filters.uncategorized": "अवर्गीकृत", + "play.filters.reset": "फिल्टर हटाउनुहोस्", + "play.filters.empty": "मिल्ने खेल प्रकार छैन", + "play.filters.groupCount": "{{count}} खेल", + }, + "dashboard.json": { + "analytics.summaryShareProfit": "आफ्नो शेयर नाफा", + "analytics.shareProfitHint": + "विभाजन पछि तपाईंको शेयर — प्लेटफर्म वा सम्पूर्ण टोलीको कुल नाफा/नोक्सान होइन", + currentDrawFinanceHint: "तलका चार्ट ड्र {{drawNo}} का लागि", + "agent.heroEyebrow": "आजको लाइन ककपिट", + "agent.heroTitle": "{{name}} प्रत्यक्ष सञ्चालन", + "agent.creditAllocated": "बाँडिएको {{amount}}", + "agent.creditUsed": "प्रयोग {{amount}}", + "agent.settlementCycle": "चक्र {{cycle}}", + "agent.betOrdersToday": "आजका बाजी अर्डर", + "agent.todayPayout": "आजको भुक्तानी", + "agent.todayProfit": "आजको नाफा", + "agent.sevenDayPayout": "भुक्तानी {{amount}}", + "agent.sevenDayProfit": "नाफा {{amount}}", + "agent.sevenDayShareProfit": "शेयर नाफा {{amount}}", + "agent.topMomentum": "आजको बाजी केन्द्र", + "agent.topMomentumHint": "नाफा {{profit}}", + "agent.topMomentumPayout": "भुक्तानी {{amount}}", + "agent.managementFocus": "व्यवस्थापन केन्द्र", + "agent.focusBet": "आजको बाजी मात्रा निगरानी", + "agent.focusPlayers": "आजका सक्रिय खेलाडी", + "agent.focusBills": "पछ्याउन बाँकी बिल", + "agent.quickStatsTitle": "लाइन अनुमति झलक", + "agent.canCreateChildAgent": "सन्तान एजेन्ट सिर्जना गर्न सक्छ", + "agent.canCreatePlayer": "खेलाडी सिर्जना गर्न सक्छ", + "agent.lineDepth": "लाइन गहिराइ", + "agent.viewBills": "बिल हेर्नुहोस्", + "agent.viewLine": "एजेन्ट लाइन", + "agent.quickLinks.tickets": "टिकट", + "agent.quickLinks.players": "खेलाडी", + "agent.quickLinks.reports": "रिपोर्ट", + "agent.quickLinks.agents": "अधीनस्थ एजेन्ट", + "agent.quickLinks.bills": "एजेन्ट बिल", + "warnings.apiResourceMissing": + "ड्यासबोर्ड विश्लेषण API दर्ता छैन। चलाउनुहोस्: php artisan lottery:admin-auth-sync (वा पछिल्लो माइग्रेसन), त्यसपछि रिफ्रेस।", + }, + "draws.json": { + backToList: "ड्र सूचीमा फर्कनुहोस्", + overviewTitle: "ड्र अवलोकन", + overviewBetTotal: "कुल बाजी", + overviewPayoutTotal: "कुल भुक्तानी", + overviewProfitLoss: "नाफा/नोक्सान", + reviewQueueHint: "नतिजा सिर्जना पछि समीक्षा र प्रकाशनमा जारी राख्नुहोस्।", + }, + "players.json": { + ticketTableHint: + "यो तालिकाले खेलाडीका हालैका टिकट देखाउँछ। पूर्ण सन्दर्भ र समस्या समाधानका लागि पङ्क्ति कार्यबाट मुख्य टिकट सूचीमा जानुहोस्।", + tabCreditLedger: "क्रेडिट लेजर", + filterSite: "साइट", + filterAllSites: "सबै साइट", + scopeAllSites: "स्कोप: सबै साइटका सबै खेलाडी (सुपर एडमिन)", + scopeFilteredSite: "स्कोप: साइट {{site}}", + scopeAgentLine: "स्कोप: {{site}} · एजेन्ट लाइन “{{name}}” र अधीनस्थ खेलाडी", + scopeSingleSite: "स्कोप: साइट {{site}}", + scopeMultiSite: "स्कोप: {{count}} बाँधिएका साइट; संकुचित गर्न फिल्टर प्रयोग गर्नुहोस्", + fundingMode: "फन्डिङ मोड", + authSource: "प्रमाणीकरण स्रोत", + creditSection: "क्रेडिट लाइन", + usedCredit: "प्रयोग भएको क्रेडिट", + fundingCredit: "क्रेडिट लाइन", + fundingWallet: "मुख्य साइट वालेट", + authMainSite: "मुख्य साइट SSO", + authNative: "लटरी नेटिभ", + creditLimit: "क्रेडिट सीमा", + availableCredit: "उपलब्ध क्रेडिट", + confirmFreezeTitle: "खेलाडी फ्रिज गर्ने?", + confirmFreezeDescription: "खेलाडी {{name}} ले बाजी लगाउन सक्ने छैन।", + confirmUnfreezeTitle: "खेलाडी अनफ्रिज गर्ने?", + confirmUnfreezeDescription: "खेलाडी {{name}} सामान्य स्थितिमा फर्किनेछ।", + }, + "reconcile.json": { + createHint: + "छानिएको अवधिमा ट्रान्सफर अर्डर स्क्यान गर्छ, लटरी वालेट लेजर तुलना गर्छ, र वालेट API कन्फिग भएमा मुख्य साइट idempotent रेकर्ड जाँच गर्छ।", + createSuccessEmpty: "स्क्यान सम्पन्न: कुनै समस्या फेला परेन", + transferNo: "ट्रान्सफर नं.", + walletTxnNo: "लटरी वालेट लेनदेन", + mainSiteRef: "मुख्य साइट सन्दर्भ", + mainSiteCheck: "मुख्य साइट जाँच", + actions: "कार्य", + itemMainSiteRecordMissing: "मुख्य साइटमा छैन", + itemMainSiteFailed: "मुख्य साइटमा असफल", + mainSiteMatched: "मुख्य साइट ठीक", + mainSiteNotFound: "मुख्य साइटमा छैन", + mainSiteFailed: "मुख्य साइट असफल", + mainSiteUnavailable: "मुख्य साइट उपलब्ध छैन", + mainSiteSkipped: "जाँच गरिएको छैन", + }, + "reports.json": { + "tasks.currentReportHint": "यहाँ हाल छानिएको रिपोर्टका निर्यात कार्य मात्र देखिन्छ।", + "preview.stats.notQueried": "क्वेरी गरिएको छैन", + "preview.stats.notSet": "सेट गरिएको छैन", + }, + "risk.json": { + "confirm.closeTitle": "नम्बर बन्द गर्ने?", + "confirm.closeDescription": "नम्बर {{number}} यो ड्रका लागि ब्लक हुनेछ।", + "confirm.recoverTitle": "नम्बर पुन: खोल्ने?", + "confirm.recoverDescription": "नम्बर {{number}} फेरि बाजीका लागि खुल्नेछ।", + }, + "tickets.json": { + filterSite: "साइट", + filterAllSites: "सबै साइट", + viewTicketInList: "यो टिकट हेर्नुहोस्", + statusSelectedCount: "{{count}} छानिएको", + }, + "wallet.json": { + scopeHint: + "यो क्षेत्र मुख्य साइट वालेट मोड (वालेट लेनदेन र ट्रान्सफर) का लागि हो। क्रेडिट लाइन अवधि सेटलमेन्टका लागि हेर्नुहोस्", + scopeHintSettlementLink: "सेटलमेन्ट केन्द्र", + scopeHintSettlement: "सेटलमेन्ट केन्द्र", + ledgerChannel: "लेजर", + ledgerCredit: "क्रेडिट लेजर", + ledgerWallet: "वालेट लेनदेन", + }, +}; + +function setNested(obj, dotKey, value) { + const parts = dotKey.split("."); + let cur = obj; + for (let i = 0; i < parts.length - 1; i++) { + if (!(parts[i] in cur) || typeof cur[parts[i]] !== "object" || Array.isArray(cur[parts[i]])) { + cur[parts[i]] = {}; + } + cur = cur[parts[i]]; + } + cur[parts[parts.length - 1]] = value; +} + +function sortKeysDeep(value) { + if (Array.isArray(value)) return value; + if (value && typeof value === "object") { + return Object.fromEntries( + Object.keys(value) + .sort() + .map((k) => [k, sortKeysDeep(value[k])]), + ); + } + return value; +} + +let merged = 0; +for (const [file, keys] of Object.entries(translations)) { + const nePath = path.join(localesDir, "ne", file); + const ne = JSON.parse(fs.readFileSync(nePath, "utf8")); + for (const [dotKey, neValue] of Object.entries(keys)) { + setNested(ne, dotKey, neValue); + merged++; + } + fs.writeFileSync(nePath, `${JSON.stringify(sortKeysDeep(ne), null, 2)}\n`, "utf8"); + console.log(`Updated ${file} (+${Object.keys(keys).length} keys)`); +} +console.log(`Total merged: ${merged}`); diff --git a/src/app/error.tsx b/src/app/error.tsx new file mode 100644 index 0000000..134ac25 --- /dev/null +++ b/src/app/error.tsx @@ -0,0 +1,42 @@ +"use client"; + +import { useEffect } from "react"; +import Link from "next/link"; + +export default function AdminError({ + error, + reset, +}: { + error: Error & { digest?: string }; + reset: () => void; +}): React.ReactElement { + useEffect(() => { + console.error("[AdminError]", error); + }, [error]); + + return ( +
+

页面加载失败

+

+ 管理后台遇到意外错误,请重试或返回首页。 +

+ {process.env.NODE_ENV === "development" ? ( +
+          {error.message}
+        
+ ) : null} +
+ + + 返回首页 + +
+
+ ); +} diff --git a/src/app/not-found.tsx b/src/app/not-found.tsx new file mode 100644 index 0000000..ec6e4c4 --- /dev/null +++ b/src/app/not-found.tsx @@ -0,0 +1,13 @@ +import Link from "next/link"; + +export default function AdminNotFound(): React.ReactElement { + return ( +
+

页面不存在

+

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

+ + 返回首页 + +
+ ); +} diff --git a/src/i18n/locales/en/adminUsers.json b/src/i18n/locales/en/adminUsers.json index 1e0726d..4d22e61 100644 --- a/src/i18n/locales/en/adminUsers.json +++ b/src/i18n/locales/en/adminUsers.json @@ -1,215 +1,227 @@ { - "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", - "siteRequired": "Select a site", - "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", - "roleLoadFailed": "Failed to load role list", - "roleListTitle": "Role Management", - "createRole": "Create role", - "roleCreateSuccess": "Created role {{name}}", - "roleUpdateSuccess": "Updated role {{name}}", - "roleSaveFailed": "Failed to save role", - "roleDeleteSuccess": "Deleted role {{name}}", - "roleDeleteFailed": "Failed to delete role", - "rolePermissionSaveSuccess": "Role permissions updated", - "rolePermissionSaveFailed": "Failed to save role permissions", - "roleFormRequired": "Role name and slug are required", - "allPermissions": "All permissions", - "saveRoleSuccess": "Updated roles for {{name}}", - "saveRoleFailed": "Failed to save roles", - "savePermissionSuccess": "Updated permissions for {{name}}", - "savePermissionFailed": "Failed to save permissions", - "modelGuide": "Accounts bind roles only. Maintain functional permissions in Role Management.", - "saving": "Saving…", - "deleting": "Deleting…", - "common": { - "none": "None" - }, - "table": { - "account": "Account", - "nickname": "Nickname", - "status": "Status", - "sites": "Bound sites", - "roles": "Roles", - "effective": "Effective", - "actions": "Actions" - }, - "status": { - "enabled": "Enabled", - "disabled": "Disabled" - }, - "roleType": { - "system": "System", - "custom": "Custom" - }, - "actions": { - "permissions": "Assign roles", - "edit": "Edit", - "delete": "Delete", - "cancel": "Cancel", - "save": "Save" - }, - "roleTable": { - "name": "Role", - "slug": "Role Code", - "type": "Type", - "status": "Status", - "users": "Users", - "permissions": "Permission count", - "actions": "Actions" - }, - "roleActions": { - "permissions": "Permissions" - }, - "permissionLevels": { - "view": "View", - "node_view": "Nodes · View", - "node_manage": "Nodes · Manage", - "role_view": "Roles · View", - "role_manage": "Roles · Manage", - "user_view": "Accounts · View", - "user_manage": "Accounts · Manage", - "manage": "Manage", - "review": "Review", - "export": "Export", - "control": "Control", - "config": "Configure", - "reopen": "Reopen", - "special": "Privileged" - }, - "permissionDialog": { - "title": "Assign roles", - "rolesTitle": "Roles", - "site": "Site", - "rolesDescription": "Admins only bind roles here. Maintain detailed permissions in Role Management. Save roles per site.", - "rolePermissionCount": "Contains {{count}} functional permissions", - "selectedRoles": "Selected roles:", - "saveRoles": "Save roles" - }, - "rolePermissionDialog": { - "title": "Role Permissions" - }, - "roleDialog": { - "createTitle": "Create Role", - "editTitle": "Edit Role", - "description": "Roles group backend function permissions and are then assigned to admin accounts.", - "slug": "Role code", - "slugPlaceholder": "Enter role identifier, for example super_admin", - "name": "Role name", - "namePlaceholder": "Enter role name", - "descriptionLabel": "Role description", - "descriptionPlaceholder": "Enter role description", - "status": "Status" - }, "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.", + "createTitle": "Create admin", "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", + "editTitle": "Edit account", "emailOptional": "Email (optional)", "emailPlaceholder": "Leave empty if not needed", + "nickname": "Nickname", + "nicknamePlaceholder": "Display name", + "noRoles": "No roles available yet. Wait for the list to finish loading and try again.", "password": "Password", "passwordOptional": "Password (optional)", "passwordPlaceholderCreate": "At least 8 characters", "passwordPlaceholderEdit": "Leave empty to keep unchanged", + "rolesDescription": "After creation, adjust per-site role bindings in Assign Roles.", + "rolesRequired": "Roles (at least one)", "site": "Bound site", "sitePlaceholder": "Select which site this account can access", - "rolesRequired": "Roles (at least one)", - "rolesDescription": "After creation, adjust per-site role bindings in Assign Roles.", - "noRoles": "No roles available yet. Wait for the list to finish loading and try again." + "username": "Login username", + "usernamePlaceholder": "For example: ops_admin" }, + "actions": { + "cancel": "Cancel", + "delete": "Delete", + "edit": "Edit", + "permissions": "Assign roles", + "save": "Save" + }, + "allPermissions": "All permissions", + "common": { + "none": "None" + }, + "confirmSaveAccountCreateDescription": "This creates a new admin account and assigns the selected roles.", + "confirmSaveAccountEditDescription": "This updates account details for admin {{name}}, including status and password changes.", + "confirmSaveAccountTitle": "Save admin account?", + "confirmSaveRoleCreateDescription": "This creates a new role {{name}}.", + "confirmSaveRoleEditDescription": "This updates the name, description, and status of role {{name}}.", + "confirmSaveRolePermissionsDescription": "This updates feature permissions for role “{{name}}”. All admins bound to this role are affected immediately.", + "confirmSaveRolePermissionsTitle": "Save role permissions?", + "confirmSaveRoleTitle": "Save role details?", + "confirmSaveRolesDescription": "This updates role bindings for admin {{name}}; their console permissions will change accordingly.", + "confirmSaveRolesTitle": "Save admin roles?", + "createAdmin": "Create admin", + "createRole": "Create role", + "createSuccess": "Created admin {{name}}", "delete": { - "currentUserBlocked": "You cannot delete the currently signed-in account", - "rowActionTitle": "Delete this admin", + "confirmDescription": "Delete admin {{name}}? This action cannot be undone.", "confirmTitle": "Confirm deletion", - "confirmDescription": "Delete admin {{name}}? This action cannot be undone." + "currentUserBlocked": "You cannot delete the currently signed-in account", + "rowActionTitle": "Delete this admin" }, - "roleDelete": { - "confirmTitle": "Delete Role", - "confirmDescription": "Delete role {{name}}?" + "deleteFailed": "Delete failed", + "deleteSuccess": "Deleted {{name}}", + "deleting": "Deleting…", + "listTitle": "Admin user list", + "loadFailed": "Failed to load admin list", + "modelGuide": "Accounts bind roles only. Maintain functional permissions in Role Management.", + "newPasswordMin": "New password must be at least 8 characters", + "nicknameRequired": "Enter a nickname", + "passwordMin": "Password must be at least 8 characters", + "permissionDialog": { + "rolePermissionCount": "Contains {{count}} functional permissions", + "rolesDescription": "Admins only bind roles here. Maintain detailed permissions in Role Management. Save roles per site.", + "rolesTitle": "Roles", + "saveRoles": "Save roles", + "selectedRoles": "Selected roles:", + "site": "Site", + "title": "Assign roles" }, "permissionGroups": { - "all": "All Permissions", - "dashboard": "Dashboard", - "admin_users": "Admin Users", "admin_roles": "Role Management", + "admin_users": "Admin Users", "agents": "Agent Management", - "players": "Players", - "currencies": "Currencies", - "wallet": "Wallet", - "draws": "Draws", + "all": "All Permissions", + "audit": "Audit Logs", "config": "Configuration", - "rules_plays": "Play Rules", - "rules_odds": "Odds & Rebate", - "risk_cap": "Risk Cap Rules", - "risk": "Risk", - "settlement": "Settlement", + "currencies": "Currencies", + "dashboard": "Dashboard", + "draws": "Draws", + "integration": "Integration Sites", "jackpot": "Jackpot", + "players": "Players", "reconcile": "Reconcile", "reports": "Reports", - "tickets": "Tickets", - "audit": "Audit Logs", + "risk": "Risk", + "risk_cap": "Risk Cap Rules", + "rules_odds": "Odds & Rebate", + "rules_plays": "Play Rules", "settings": "Settings", - "integration": "Integration Sites" + "settlement": "Settlement", + "tickets": "Tickets", + "wallet": "Wallet" + }, + "permissionLevels": { + "config": "Configure", + "control": "Control", + "export": "Export", + "manage": "Manage", + "node_manage": "Nodes · Manage", + "node_view": "Nodes · View", + "reopen": "Reopen", + "review": "Review", + "role_manage": "Roles · Manage", + "role_view": "Roles · View", + "special": "Privileged", + "user_manage": "Accounts · Manage", + "user_view": "Accounts · View", + "view": "View" }, "permissionNames": { - "prd.dashboard.view": "Dashboard · View", - "prd.agent.view": "Agent Management · View", - "prd.agent.manage": "Agent Management · Manage", - "prd.agent.role.view": "Agent Roles · View", - "prd.agent.role.manage": "Agent Roles · Manage", - "prd.agent.user.view": "Agent Accounts · View", - "prd.agent.user.manage": "Agent Accounts · Manage", - "prd.admin_user.manage": "Admin Users · Manage", "prd.admin_role.manage": "Role Management · Manage", - "prd.integration.view": "Integration Sites · View", - "prd.integration.manage": "Integration Sites · Manage", - "prd.users.manage": "Players · Manage", + "prd.admin_user.manage": "Admin Users · Manage", + "prd.agent.manage": "Agent Management · Manage", + "prd.agent.role.manage": "Agent Roles · Manage", + "prd.agent.role.view": "Agent Roles · View", + "prd.agent.user.manage": "Agent Accounts · Manage", + "prd.agent.user.view": "Agent Accounts · View", + "prd.agent.view": "Agent Management · View", + "prd.audit.view": "Audit Logs · View", "prd.currency.manage": "Currency Management · Manage", - "prd.users.view_finance": "Players · View Finance", - "prd.users.view_cs": "Players · View Customer Service Cases", - "prd.player_freeze.manage": "Freeze/Unfreeze Player · Manage", - "prd.wallet_reconcile.manage": "Wallet Reconcile · Manage", - "prd.wallet_reconcile.view": "Wallet Reconcile · View", - "prd.wallet_reconcile.view_cs": "Wallet Reconcile · Customer Service View", - "prd.wallet_adjust.manage": "Adjustment/Reversal · Manage", + "prd.dashboard.view": "Dashboard · View", + "prd.draw_reopen.manage": "Draw Reopen · Manage", "prd.draw_result.manage": "Draw Results Entry · Manage", "prd.draw_result.view": "Draw Results · View", - "prd.draw_reopen.manage": "Draw Reopen · Manage", - "prd.play_switch.manage": "Play Switches · Manage", + "prd.integration.manage": "Integration Sites · Manage", + "prd.integration.view": "Integration Sites · View", + "prd.jackpot.manage": "Jackpot Configuration · Manage", + "prd.jackpot.manual_burst": "Jackpot Manual Burst · Super Admin Only", + "prd.jackpot.view": "Jackpot Configuration · View", "prd.odds.manage": "Odds Configuration · Manage", "prd.odds.view": "Odds Configuration · View", - "prd.risk_cap.manage": "Risk Caps · Manage", - "prd.risk_cap.view": "Risk Caps · View", - "prd.rebate.manage": "Commission/Rebate · Manage", - "prd.rebate.view": "Commission/Rebate · View", - "prd.jackpot.manage": "Jackpot Configuration · Manage", - "prd.jackpot.view": "Jackpot Configuration · View", - "prd.jackpot.manual_burst": "Jackpot Manual Burst · Super Admin Only", "prd.payout.manage": "Payout Confirmation · Manage", "prd.payout.review": "Payout Confirmation · Review", "prd.payout.view": "Payout Confirmation · View", - "prd.tickets.view": "Player Tickets · View", - "prd.audit.view": "Audit Logs · View", - "prd.report.view": "Reports · View", + "prd.play_switch.manage": "Play Switches · Manage", + "prd.player_freeze.manage": "Freeze/Unfreeze Player · Manage", + "prd.rebate.manage": "Commission/Rebate · Manage", + "prd.rebate.view": "Commission/Rebate · View", "prd.report.export": "Reports · Export", + "prd.report.view": "Reports · View", + "prd.risk.manage": "Risk Center · Manage", "prd.risk.view": "Risk Center · View", - "prd.risk.manage": "Risk Center · Manage" - } + "prd.risk_cap.manage": "Risk Caps · Manage", + "prd.risk_cap.view": "Risk Caps · View", + "prd.tickets.view": "Player Tickets · View", + "prd.users.manage": "Players · Manage", + "prd.users.view_cs": "Players · View Customer Service Cases", + "prd.users.view_finance": "Players · View Finance", + "prd.wallet_adjust.manage": "Adjustment/Reversal · Manage", + "prd.wallet_reconcile.manage": "Wallet Reconcile · Manage", + "prd.wallet_reconcile.view": "Wallet Reconcile · View", + "prd.wallet_reconcile.view_cs": "Wallet Reconcile · Customer Service View" + }, + "roleActions": { + "permissions": "Permissions" + }, + "roleCreateSuccess": "Created role {{name}}", + "roleDelete": { + "confirmDescription": "Delete role {{name}}?", + "confirmTitle": "Delete Role" + }, + "roleDeleteFailed": "Failed to delete role", + "roleDeleteSuccess": "Deleted role {{name}}", + "roleDialog": { + "createTitle": "Create Role", + "description": "Roles group backend function permissions and are then assigned to admin accounts.", + "descriptionLabel": "Role description", + "descriptionPlaceholder": "Enter role description", + "editTitle": "Edit Role", + "name": "Role name", + "namePlaceholder": "Enter role name", + "slug": "Role code", + "slugPlaceholder": "Enter role identifier, for example super_admin", + "status": "Status" + }, + "roleFormRequired": "Role name and slug are required", + "roleListHint": "You can add custom roles and configure permissions. Built-in roles (super admin, site admin, site finance, site support, agent) cannot be deleted.", + "roleListTitle": "Role Management", + "roleLoadFailed": "Failed to load role list", + "rolePermissionDialog": { + "packageHint": "Checking a module row on the left grants View only. Select Manage separately for data entry, close, draw, and other admin actions.", + "title": "Role Permissions" + }, + "rolePermissionSaveFailed": "Failed to save role permissions", + "rolePermissionSaveSuccess": "Role permissions updated", + "roleRequired": "Select at least one role", + "roleSaveFailed": "Failed to save role", + "roleTable": { + "actions": "Actions", + "name": "Role", + "permissions": "Permission count", + "slug": "Role Code", + "status": "Status", + "type": "Type", + "users": "Users" + }, + "roleType": { + "custom": "Custom", + "system": "System" + }, + "roleUpdateSuccess": "Updated role {{name}}", + "saveAccountFailed": "Failed to save account", + "savePermissionFailed": "Failed to save permissions", + "savePermissionSuccess": "Updated permissions for {{name}}", + "saveRoleFailed": "Failed to save roles", + "saveRoleSuccess": "Updated roles for {{name}}", + "saving": "Saving…", + "searchPlaceholder": "Search by username / nickname / email", + "siteRequired": "Select a site", + "status": { + "disabled": "Disabled", + "enabled": "Enabled" + }, + "table": { + "account": "Account", + "actions": "Actions", + "effective": "Effective", + "nickname": "Nickname", + "roles": "Roles", + "sites": "Bound sites", + "status": "Status" + }, + "title": "Admins", + "updateSuccess": "Updated {{name}}", + "usernameRequired": "Enter a login username" } diff --git a/src/i18n/locales/en/agents.json b/src/i18n/locales/en/agents.json index 8cc71dd..503285c 100644 --- a/src/i18n/locales/en/agents.json +++ b/src/i18n/locales/en/agents.json @@ -1,249 +1,397 @@ { - "title": "Agent management", - "sitesListHint": "For integration keys and callbacks, go to", - "sitesListLink": "Config · Connected sites", - "lineUi": { - "kicker": "Credit share · Agent tree", - "agentCount": "{{count}} agents in this group", - "searchPlaceholder": "Search name or login", - "directChildren": "{{count}} direct downline", - "selectAgent": "Select an agent to view share & credit", - "selectAgentHint": "Settlement boundaries follow the agent tree; share, credit and rebate are configured per node.", - "allocatedCredit": "Allocated", - "availableCredit": "Available", - "profileFootnote": "Rebate cap {{rebate}}% · Default {{defaultRebate}}%", - "tabOverview": "Overview", - "tabProfile": "Share & credit", - "tabProfileReadOnly": "Share & credit (read-only)", - "currentSite": "Site", - "viewAll": "View all", - "shareRebateCap": "Rebate cap {{rate}}%", - "overviewDownlineCard": "View and manage direct downline agents", - "overviewDownlineCount": "{{count}}", - "overviewPlayersHint": "View direct players and credit status", - "overviewPlayersSummary": "Player management", - "downlineEmptyTitle": "No direct downline yet", - "editAccount": "Account & status", - "saveProfile": "Save share & credit", - "tabDownline": "Downline", - "tabPlayers": "Players", - "noDelegatedTabs": "This agent cannot create downline agents or players; only share and credit settings apply." - }, - "listTitle": "Agents", - "listSearch": "Search name / code / login", - "siteSearch": "Search site name", - "parentAgent": "Parent", - "childrenCount": "Direct downline", - "subnav": { - "label": "Agent management navigation", - "noPermission": "No permission", - "operations": "Line & agent tree", - "provision": "Provision level-1 agent", - "settlementBills": "Periods & bills", - "provisionHint": "One-time onboarding; use Line & agent tree for daily work" - }, - "includeRoots": "Include root nodes", - "includeRootsHint": "Root nodes represent site boundaries and are excluded from operating agent counts by default.", - "directoryStatus": { - "all": "All statuses", - "enabled": "Enabled only", - "disabled": "Disabled only" - }, - "tabs": { - "subordinates": "Subordinates", - "accounts": "Primary account", - "players": "Players", - "overview": "Overview", - "roles": "Roles", - "users": "Accounts", - "delegation": "Delegation ceiling" - }, - "filterParent": "Parent agent", - "filterParentAll": "All subordinates", - "listFlatHint": "All operating agents in a flat list. Use row actions to add a child under a specific agent.", "addChildNeedParent": "Select a parent agent before adding a subordinate", - "treeTitle": "Agent tree", - "detailTitle": "Node details", - "selectNode": "Select an agent node from the tree", - "loadFailed": "Failed to load agent tree", - "lineFilter": "Level-1 agent", + "bindAccountHint": "No login account is bound yet. Saving will create and bind one automatically.", + "bindAccountPasswordRequired": "This agent has no login account yet. Enter an initial password to create one.", + "childrenCount": "Direct downline", + "code": "Code", + "codeRequired": "Code and name are required", "createChild": "Add child agent", - "viewDownline": "View sub-agents and players", - "downlineDialogTitle": "{{name}} — sub-agents and players", - "downlineAgentsSection": "Sub-agents", - "downlinePlayersSection": "Direct players", - "downlineNoAgents": "No sub-agents yet", - "editNode": "Edit node", - "deleteNode": "Delete node", - "deleteNodeConfirm": "This action cannot be undone. Make sure the node has no children, users, or roles.", - "deleteNodeBlockedHint": "Remove child agents, roles, and accounts before deleting this node", - "deleteNodeBlockedPrefix": "Cannot delete yet: ", + "createSuccess": "Created agent {{name}}", + "delegation": { + "canDelegate": "May delegate further", + "empty": "No actions available to assign", + "hint": "Select actions this child agent may grant to its own subordinates. Agent roles cannot exceed this ceiling.", + "permission": "Action", + "rootDenied": "Root nodes do not use delegation ceilings", + "save": "Save ceiling", + "saveSuccess": "Delegation ceiling saved", + "title": "Delegation ceiling" + }, "deleteBlocked": { "children": "{{count}} child agent(s) remain", "roles": "{{count}} role(s) must be removed in the Roles tab first", "users": "{{count}} bound account(s) remain" }, - "code": "Code", - "name": "Name", - "namePlaceholder": "Enter agent name", - "depth": "Depth", - "path": "Path", - "status": "Status", - "isRoot": "Root", - "createSuccess": "Created agent {{name}}", - "updateSuccess": "Updated {{name}}", + "deleteNode": "Delete node", + "deleteNodeBlockedHint": "Remove child agents, roles, and accounts before deleting this node", + "deleteNodeBlockedPrefix": "Cannot delete yet: ", + "deleteNodeConfirm": "This action cannot be undone. Make sure the node has no children, users, or roles.", "deleteSuccess": "Deleted agent {{name}}", - "saveFailed": "Save failed", - "codeRequired": "Code and name are required", - "nameRequired": "Agent name is required", - "usernameRequired": "Login name is required", - "passwordRequired": "Password is required", - "passwordMinLength": "Password must be at least 8 characters", - "bindAccountPasswordRequired": "This agent has no login account yet. Enter an initial password to create one.", - "bindAccountHint": "No login account is bound yet. Saving will create and bind one automatically.", - "modelGuide": "Agent layer controls data scope and delegation ceiling. Account permissions are assigned through roles.", - "pageGuide": "Manage the agent tree, agent roles, agent accounts, and delegation ceilings here. Platform accounts and platform roles stay in platform governance pages.", - "summary": { - "currentSiteNodes": "Current site nodes", - "currentSiteAgents": "Current site operating agents", - "visibleList": "Current flat list rows", - "visibleAgents": "Current visible operating agents", - "globalNodes": "All-site node total", - "globalAgents": "All-site operating agents", - "enabledAgents": "Enabled operating agents", - "rootNodes": "Root node count" - }, - "profile": { - "section": "Share & credit", - "totalShareRate": "Share rate (%)", - "creditLimit": "Credit limit", - "rebateLimit": "Rebate ceiling (%)", - "defaultPlayerRebate": "Default player rebate (%)", - "settlementCycle": "Settlement cycle", - "canGrantExtraRebate": "Allow extra rebate", - "canCreatePlayer": "Allow creating players", - "canCreateChildAgent": "Allow creating sub-agents", - "cycleDaily": "Daily", - "cycleWeekly": "Weekly", - "cycleMonthly": "Monthly", - "loading": "Loading share and credit settings…", - "loadFailed": "Failed to load share and credit settings. Close and try again.", - "loadingBlocked": "Share and credit settings are still loading. Please wait before saving.", - "validation": { - "shareRange": "Share rate must be between 0 and 100", - "creditInvalid": "Credit limit cannot be negative", - "creditBelowAllocated": "Credit limit cannot be below allocated credit (minimum {{min}})", - "creditExceedsParentWithMax": "Credit limit cannot exceed {{max}}", - "rebateLimitRange": "Rebate ceiling must be between 0 and 100%", - "defaultRebateRange": "Default player rebate must be between 0 and 100%", - "defaultExceedsLimit": "Default player rebate cannot exceed the rebate ceiling" - } - }, - "settlementBills": { - "title": "Agent bills", - "description": "Bills appear after a period is closed; latest period is selected by default.", - "periodLabel": "Period", - "periodPlaceholder": "Select period", - "allPeriods": "All periods", - "filteredByPeriodRange": "Bills for {{range}}", - "emptyNoPeriodsManage": "No periods or bills yet. Use quick presets under Period management, then close the period.", - "emptyNoPeriodsAgent": "No bills yet. Your upline or platform will close periods; you do not need to enter dates.", - "emptyNoClosed": "No closed period yet. Bills are generated after close.", - "typePlayer": "Player bill", - "typeAgent": "Agent bill", - "columns": { - "id": "ID", - "period": "Period", - "type": "Type", - "net": "Net", - "unpaid": "Unpaid", - "status": "Status" - } - }, - "settlementPeriods": { - "manageTitle": "Period management", - "manageHint": "Open and close periods here; bills above update automatically. Quick presets are usually enough.", - "presetThisWeek": "This week", - "presetLastWeek": "Last week", - "presetThisMonth": "This month", - "openHint": "Local dates ({{tz}})", - "startDate": "Start date", - "endDate": "End date", - "open": "Open period", - "openFailed": "Failed to open period", - "datesRequired": "Enter start and end dates", - "invalidRange": "End date cannot be before start date", - "statusOpen": "Open", - "statusClosed": "Closed" + "depth": "Depth", + "detailTitle": "Node details", + "directoryStatus": { + "all": "All statuses", + "disabled": "Disabled only", + "enabled": "Enabled only" }, + "downlineAgentsSection": "Sub-agents", + "downlineDialogTitle": "{{name}} — sub-agents and players", + "downlineNoAgents": "No sub-agents yet", + "downlinePlayersSection": "Direct players", + "editNode": "Edit node", + "filterParent": "Parent agent", + "filterParentAll": "All subordinates", + "includeRoots": "Include root nodes", + "includeRootsHint": "Root nodes represent site boundaries and are excluded from operating agent counts by default.", + "isRoot": "Root", + "lineFilter": "Level-1 agent", "lineProvision": { - "title": "Create level-1 agent", "description": "Creates the level-1 agent, admin login, and line settings (share, credit, rebate, settlement cycle) in one step.", + "link": "Create level-1 agent", "name": "Level-1 agent name", - "username": "Admin login", + "noUnboundSite": "No sites without a level-1 agent", + "openIntegrationSites": "Go to integration sites", "password": "Initial password", - "walletUrl": "Wallet API URL (optional technical field)", + "passwordHint": "At least 8 characters", + "secretsOnce": "Integration secrets are shown once — save them now", + "siteCode": "Integration site", + "siteCodePlaceholder": "Select site", + "siteRequired": "Select an integration site", "submit": "Create level-1 agent", "success": "Level-1 agent created", - "secretsOnce": "Integration secrets are shown once — save them now", - "link": "Create level-1 agent" + "title": "Create level-1 agent", + "username": "Admin login", + "walletUrl": "Wallet API URL (optional technical field)" }, + "lineUi": { + "agentCount": "{{count}} agents in this group", + "allocatedCredit": "Allocated", + "availableCredit": "Available", + "collapse": "Collapse", + "currentSite": "Site", + "directChildren": "{{count}} direct downline", + "downlineColumns": { + "downlineCount": "Downline count", + "email": "Email" + }, + "downlineEmpty": "No direct downline yet. Child agents will appear here after creation.", + "downlineEmptyShort": "No direct downline yet.", + "downlineEmptyTitle": "No direct downline yet", + "editAccount": "Account & status", + "editCurrent": "Edit this agent", + "expand": "Expand", + "kicker": "Credit share · Agent tree", + "nextSteps": "Suggested next steps", + "noDelegatedTabs": "This agent cannot create downline agents or players; only share and credit settings apply.", + "overviewDownlineCard": "View and manage direct downline agents", + "overviewDownlineCount": "{{count}}", + "overviewDownlineHint": "{{count}} direct downline agent(s). Manage them in the Downline tab.", + "overviewPlayersHint": "View direct players and credit status", + "overviewPlayersSummary": "Player management", + "playersNoPermissionHint": "This account does not have player management permission on this node.", + "playersUnavailableHint": "This agent cannot create players. Enable “Allow create player” in the agent profile first.", + "profileFootnote": "Rebate cap {{rebate}}% · Default {{defaultRebate}}%", + "profileReadOnlyHint": "Share, credit, and rebate are configured by your upline. Contact your parent agent or the platform to request changes.", + "profileTabHint": "Maintain share, credit, rebate, and risk tags here. Use Account & status for login name and password.", + "saveProfile": "Save share & credit", + "searchPlaceholder": "Search name or login", + "selectAgent": "Select an agent to view share & credit", + "selectAgentHint": "Settlement boundaries follow the agent tree; share, credit and rebate are configured per node.", + "selfAgentOverviewHint": "Credit below is allocated by your upline. Share and rebate are maintained upstream; this account cannot view or edit them.", + "shareRebateCap": "Rebate cap {{rate}}%", + "sidebarAvailableCredit": "Available to grant {{amount}}", + "sidebarShareRate": "Share {{rate}}%", + "stepDownline": "Manage direct downline ({{count}} now)", + "stepPlayers": "Create or maintain direct players", + "stepProfile": "Configure share, credit, and rebate", + "tabDownline": "Downline", + "tabOverview": "Overview", + "tabPlayers": "Players", + "tabProfile": "Share & credit", + "tabProfileReadOnly": "Share & credit (read-only)", + "viewAll": "View all" + }, + "listFlatHint": "All operating agents in a flat list. Use row actions to add a child under a specific agent.", + "listSearch": "Search name / code / login", + "listTitle": "Agents", + "loadFailed": "Failed to load agent tree", + "modelGuide": "Agent layer controls data scope and delegation ceiling. Account permissions are assigned through roles.", + "name": "Name", + "namePlaceholder": "Enter agent name", + "nameRequired": "Agent name is required", "noAccess": "You do not have permission to manage agents. Contact an administrator.", + "pageGuide": "Manage the agent tree, agent roles, agent accounts, and delegation ceilings here. Platform accounts and platform roles stay in platform governance pages.", + "parentAgent": "Parent", + "passwordMinLength": "Password must be at least 8 characters", + "passwordOptionalHint": "Leave empty to keep unchanged, or enter an 8-character password", + "passwordPlaceholder": "Enter an 8-character password", + "passwordRequired": "Password is required", + "path": "Path", "playersPanel": { - "create": "Create player", - "scopedTo": "Direct players: {{agent}}", "allUnderSite": "Players visible on this site", + "authSource": "Auth source", + "availableToGrant": "Agent available to grant: {{amount}}", + "create": "Create player", + "createSuccessNative": "Player {{name}} created — use lottery /login", + "creditLimit": "Credit limit", + "creditLimitAvailable": "Credit limit / available", + "creditLimitExceeded": "Credit limit cannot exceed this agent’s available grant", + "creditLimitInvalid": "Credit limit must be an integer ≥ 0", + "creditListHint": "Credit line: below shows player credit limits and available credit, not main-site wallet balance.", + "externalIdHint": "Leave blank to auto-generate", + "externalIdOptional": "External ID (optional)", "filterHint": "Filter direct players by parent agent.", + "fundingMode": "Funding mode", + "initialPassword": "Initial password", "loginRequired": "Enter login username and initial password", "loginUsername": "Login username", - "initialPassword": "Initial password", - "externalIdOptional": "External ID (optional)", - "externalIdHint": "Leave blank to auto-generate", - "creditLimit": "Credit limit", + "passwordHint": "At least 8 characters", + "passwordMinLength": "Initial password must be at least 8 characters", + "playerRef": "Player ref", + "rebateInherited": "Inherit agent default rebate", "rebateRate": "Rebate rate (%)", "rebateRateHint": "Enter percent, e.g. 5 = 5%", - "availableToGrant": "Agent available to grant: {{amount}}", + "rebateRateInvalid": "Rebate rate must be between 0 and 100%", "riskTags": "Risk tags", "riskTagsPlaceholder": "Comma-separated", - "createSuccessNative": "Player {{name}} created — use lottery /login" + "scopedTo": "Direct players: {{agent}}", + "siteCode": "Line site", + "usernameNickname": "Username / nickname" }, - "delegation": { - "title": "Delegation ceiling", - "hint": "Select actions this child agent may grant to its own subordinates. Agent roles cannot exceed this ceiling.", - "permission": "Action", - "canDelegate": "May delegate further", - "save": "Save ceiling", - "saveSuccess": "Delegation ceiling saved", - "empty": "No actions available to assign", - "rootDenied": "Root nodes do not use delegation ceilings" + "profile": { + "availableCredit": "Available to grant {{amount}}", + "canCreateChildAgent": "Allow creating sub-agents", + "canCreatePlayer": "Allow creating players", + "canGrantExtraRebate": "Allow extra rebate", + "capabilityHint": "Takes effect on this agent’s primary account after save. If the platform Agent role included player/node management, login permissions are now tightened by these switches.", + "creditLimit": "Credit limit", + "cycleDaily": "Daily", + "cycleMonthly": "Monthly", + "cycleWeekly": "Weekly", + "defaultPlayerRebate": "Default player rebate (%)", + "loadFailed": "Failed to load share and credit settings. Close and try again.", + "loading": "Loading share and credit settings…", + "loadingBlocked": "Share and credit settings are still loading. Please wait before saving.", + "parentCaps": "Parent share {{share}}%, available to grant {{credit}}", + "rebateLimit": "Rebate ceiling (%)", + "relativeShareRate": "Share rate (% of parent)", + "relativeShareRateValue": "{{rate}}% of parent", + "riskTags": "Risk tags", + "riskTagsPlaceholder": "Comma-separated, e.g. overdue, high_turnover", + "saveSuccess": "Share and credit settings saved", + "section": "Share & credit", + "settlementCycle": "Settlement cycle", + "totalShareRate": "Share rate (%)", + "validation": { + "creditBelowAllocated": "Credit limit cannot be below allocated credit (minimum {{min}})", + "creditExceedsParentWithMax": "Credit limit cannot exceed {{max}}", + "creditInvalid": "Credit limit cannot be negative", + "defaultExceedsLimit": "Default player rebate cannot exceed the rebate ceiling", + "defaultRebateRange": "Default player rebate must be between 0 and 100%", + "rebateLimitRange": "Rebate ceiling must be between 0 and 100%", + "shareRange": "Share rate must be between 0 and 100" + } }, "roles": { - "title": "Agent roles", "create": "Create role", - "permissions": "Permissions", - "slug": "Slug", - "userCount": "Users", "createSuccess": "Created role {{name}}", - "updateSuccess": "Updated role {{name}}", "deleteSuccess": "Deleted role {{name}}", - "permissionSaveSuccess": "Permissions updated", - "readOnlyTemplate": "Read-only template", + "groupSelectedCount": "{{selected}} / {{total}}", "inUse": "{{count}} in use", - "permissionSubsetHint": "Only permissions you hold can be assigned" + "noAssignablePermissions": "No permissions available to assign", + "permissionSaveSuccess": "Permissions updated", + "permissionSubsetHint": "Only permissions you hold can be assigned", + "permissions": "Permissions", + "readOnlyTemplate": "Read-only template", + "selectGroup": "Select all in group", + "selectedCount": "{{selected}} / {{total}} selected", + "slug": "Slug", + "title": "Agent roles", + "updateSuccess": "Updated role {{name}}", + "userCount": "Users" }, + "saveFailed": "Save failed", + "selectNode": "Select an agent node from the tree", + "settlementBills": { + "allPeriods": "All periods", + "clearPeriodFilter": "Show all periods", + "columns": { + "counterparty": "Counterparty", + "grossWinLoss": "Win/Loss", + "id": "ID", + "net": "Net", + "party": "Party", + "period": "Period", + "status": "Status", + "type": "Type", + "unpaid": "Unpaid" + }, + "confirm": "Confirm bill", + "confirmed": "Confirmed", + "description": "Bills appear after a period is closed; latest period is selected by default.", + "detail": "Details", + "emptyNoClosed": "No closed period yet. Bills are generated after close.", + "emptyNoPeriodsAgent": "No bills yet. Your upline or platform will close periods; you do not need to enter dates.", + "emptyNoPeriodsManage": "No periods or bills yet. Use quick presets under Period management, then close the period.", + "filteredByPeriod": "Showing bills for period #{{id}} only", + "filteredByPeriodRange": "Bills for {{range}}", + "grossWinLoss": "Win/Loss (gross_win_loss)", + "paid": "Payment recorded", + "paymentAmount": "Payment amount", + "periodLabel": "Period", + "periodPlaceholder": "Select period", + "platform": "Platform", + "platformRounding": "Platform rounding", + "rebateAmount": "Rebate", + "recordPayment": "Record payment", + "shareProfit": "Share profit", + "subtreeSummary": "Subtree summary", + "title": "Agent bills", + "typeAgent": "Agent bill", + "typePlayer": "Player bill" + }, + "settlementPeriods": { + "close": "Close period and generate bills", + "closeFailed": "Failed to close period", + "closed": "Period closed; bills generated", + "datesRequired": "Enter start and end dates", + "empty": "No periods yet. Choose a quick preset and open a period.", + "end": "End", + "endDate": "End date", + "hideAdvanced": "Hide custom dates", + "invalidRange": "End date cannot be before start date", + "manageHint": "Open and close periods here; bills above update automatically. Quick presets are usually enough.", + "manageTitle": "Period management", + "open": "Open period", + "openFailed": "Failed to open period", + "openHint": "Local dates ({{tz}})", + "openWithPreset": "Apply quick preset", + "opened": "Period opened", + "presetHint": "Quick period presets (recommended)", + "presetLastWeek": "Last week", + "presetThisMonth": "This month", + "presetThisWeek": "This week", + "range": "Period", + "showAdvanced": "Custom start/end dates", + "start": "Start", + "startDate": "Start date", + "status": "Status", + "statusClosed": "Closed", + "statusOpen": "Open", + "title": "Agent periods", + "viewBills": "Bills" + }, + "settlementReports": { + "columns": { + "agentId": "Agent ID", + "allocated": "Allocated", + "amount": "Amount", + "available": "Available", + "billId": "Bill", + "billType": "Type", + "code": "Code", + "count": "Count", + "creditLimit": "Credit limit", + "drawNo": "Draw no.", + "frozen": "Frozen", + "gameType": "Play", + "grossWinLoss": "Win/Loss", + "name": "Name", + "overdueDays": "Overdue days", + "player": "Player", + "rebate": "Rebate", + "rebateType": "Rebate type", + "status": "Status", + "unpaid": "Unpaid", + "used": "Used" + }, + "credit": { + "agents": "Agent credit", + "players": "Player credit" + }, + "description": "Report set: player win/loss, agent share, rebate, credit, unpaid/overdue bills, and platform P/L.", + "footnote": "These reports use credit-line period semantics, not legacy wallet commission/rebate reports.", + "noPeriodHint": "When no specific period is selected, the last 7 days are used. Platform P/L requires a period.", + "platformPnl": { + "billNet": "Platform bill net", + "periodRequired": "Select a specific period to view platform P/L.", + "rounding": "Rounding adjustment", + "shareProfit": "Share profit (metadata)" + }, + "rebate": { + "accrued": "Accrued", + "allocated": "Allocated", + "inBill": "In bill", + "settled": "Settled" + }, + "summary": { + "billCount": "Bill count", + "overdueCount": "Overdue bills", + "platformRounding": "Total platform rounding", + "totalNet": "Total net", + "totalUnpaid": "Total unpaid" + }, + "title": "Period reports (credit share line)", + "type": "Report type", + "types": { + "agent_share": "Agent share", + "credit": "Credit", + "draw_period": "By draw", + "overdue": "Overdue", + "platform_pnl": "Platform P/L", + "player_win_loss": "Player win/loss", + "rebate": "Rebate", + "summary": "Summary", + "unpaid_bills": "Unpaid bills" + } + }, + "siteSearch": "Search site name", + "sitesListHint": "For integration keys and callbacks, go to", + "sitesListLink": "Config · Connected sites", + "status": "Status", + "subnav": { + "label": "Agent management navigation", + "noPermission": "No permission", + "operations": "Line & agent tree", + "provision": "Provision level-1 agent", + "provisionHint": "One-time onboarding; use Line & agent tree for daily work", + "settlementBills": "Periods & bills" + }, + "summary": { + "currentSiteAgents": "Current site operating agents", + "currentSiteNodes": "Current site nodes", + "enabledAgents": "Enabled operating agents", + "globalAgents": "All-site operating agents", + "globalNodes": "All-site node total", + "rootNodes": "Root node count", + "visibleAgents": "Current visible operating agents", + "visibleList": "Current flat list rows" + }, + "tabs": { + "accounts": "Primary account", + "delegation": "Delegation ceiling", + "overview": "Overview", + "players": "Players", + "roles": "Roles", + "subordinates": "Subordinates", + "users": "Accounts" + }, + "title": "Agent management", + "treeTitle": "Agent tree", + "updateSuccess": "Updated {{name}}", + "usernamePlaceholder": "Enter login username", + "usernameRequired": "Login name is required", "users": { - "title": "Agent accounts", "create": "Create account", - "username": "Username", + "createSuccess": "Created account {{name}}", + "deleteConfirm": "This admin will no longer be able to sign in. This cannot be undone.", + "deleteSuccess": "Deleted account {{name}}", "email": "Email", "password": "Password", - "roles": "Roles", - "createSuccess": "Created account {{name}}", "roleSaveSuccess": "Roles updated for {{name}}", - "deleteConfirm": "This admin will no longer be able to sign in. This cannot be undone.", - "deleteSuccess": "Deleted account {{name}}" + "roles": "Roles", + "title": "Agent accounts", + "username": "Username" }, - "usernamePlaceholder": "Enter login username", - "passwordPlaceholder": "Enter an 8-character password", - "passwordOptionalHint": "Leave empty to keep unchanged, or enter an 8-character password" + "viewDownline": "View sub-agents and players" } diff --git a/src/i18n/locales/en/config.json b/src/i18n/locales/en/config.json index f450022..4500f74 100644 --- a/src/i18n/locales/en/config.json +++ b/src/i18n/locales/en/config.json @@ -1,674 +1,683 @@ { - "title": "Configuration Center", - "nav": { - "aria": "Operations configuration sub-navigation", - "sidebarTitle": "Operations configuration", - "groups": { - "betting": "Betting and display", - "risk": "Risk control" + "currencies": { + "actions": { + "backToSettings": "Back to settings", + "create": "Add currency", + "delete": "Delete", + "edit": "Edit", + "openStandalone": "Open dedicated page" }, - "items": { - "plays": "Play types and limits", - "odds": "Odds", - "rebate": "Commission / rebate", - "jackpot": "Jackpot pool", - "risk-cap": "Payout caps" + "createFailed": "Failed to create currency", + "createSuccess": "Currency created", + "deleteDialog": { + "description": "Delete currency {{code}}? The system blocks deletion when it is still referenced by defaults, wallets, tickets, odds, or jackpot data.", + "title": "Delete currency?" }, - "rulesPlaysTitle": "Play rules", - "rulesOddsTitle": "Odds & base rebate", - "rulesOddsDescription": "Odds matrix and base rebate are maintained on one page, sharing the same odds version line.", - "rulesOddsDescriptionShort": "Pick a play on the left, edit odds and base rebate on the right. Agent/player rebate is added on top of this base, then save and publish.", - "riskCapTitle": "Risk cap rules" + "deleteFailed": "Failed to delete currency", + "deleteSuccess": "Currency {{code}} deleted", + "description": "Maintain currency master data for admin operations and control whether a currency is enabled or allowed for betting.", + "dialog": { + "createTitle": "Add currency", + "description": "Currency code is immutable after creation. Disabling a currency also turns off bettable status.", + "editTitle": "Edit currency" + }, + "empty": "No currencies yet.", + "form": { + "bettable": "Allow betting", + "bettableHint": "Only enabled currencies can be marked as bettable.", + "code": "Currency code", + "codePlaceholder": "Enter currency code, for example NPR", + "decimalInvalid": "Enter a valid decimal place value", + "decimals": "Decimal places", + "decimalsPlaceholder": "Enter decimal places, for example 2", + "enabled": "Enabled status", + "enabledHint": "Disabled currencies should not be used for new business.", + "name": "Currency name", + "namePlaceholder": "Enter currency name", + "required": "Please fill in the required fields" + }, + "loadFailed": "Failed to load currencies", + "loading": "Loading currencies…", + "table": { + "actions": "Actions", + "bettable": "Bettable", + "code": "Code", + "decimals": "Decimals", + "enabled": "Enabled", + "name": "Name" + }, + "title": "Currency management", + "updateFailed": "Failed to update currency", + "updateSuccess": "Currency updated" }, "hub": { - "title": "Operations configuration", "description": "Jump to play rules, odds & rebate, jackpot, and risk cap by domain. The sidebar provides direct links; this page is an overview.", - "playsTitle": "Play rules", - "playsDesc": "Play switches, limits, and rule copy", - "oddsTitle": "Odds & base rebate", - "oddsDesc": "Odds matrix and base rebate in one version stream", - "jackpotTitle": "Jackpot", - "jackpotDesc": "Pool parameters and ledger records", - "riskCapTitle": "Risk cap rules", - "riskCapDesc": "Per-number payout caps and occupancy", - "integrationTitle": "Integration sites", "integrationDesc": "site_code, JWT secrets, partner wallet URL, iframe allowlist", + "integrationGuideDesc": "SSO and wallet integration document for client engineering teams, with index, examples, and test flow", "integrationGuideTitle": "Client integration guide", - "integrationGuideDesc": "SSO and wallet integration document for client engineering teams, with index, examples, and test flow" + "integrationTitle": "Integration sites", + "jackpotDesc": "Pool parameters and ledger records", + "jackpotTitle": "Jackpot", + "oddsDesc": "Odds matrix and base rebate in one version stream", + "oddsTitle": "Odds & base rebate", + "playsDesc": "Play switches, limits, and rule copy", + "playsTitle": "Play rules", + "riskCapDesc": "Per-number payout caps and occupancy", + "riskCapTitle": "Risk cap rules", + "title": "Operations configuration" }, "integrationGuide": { "title": "Lottery client integration guide" }, "integrationSites": { - "title": "Integration sites", - "description": "Maintain partner integration settings in admin. site_code cannot be changed after creation.", - "pageGuide": "Wallet-mode partners need an integration site and SSO/wallet secrets; see API docs for technical setup.", - "create": "New site", - "edit": "Edit", - "save": "Save", - "saving": "Saving…", - "cancel": "Cancel", - "copy": "Copy", - "loading": "Loading…", - "empty": "No integration sites", - "loadFailed": "Failed to load integration sites", - "saveFailed": "Save failed", - "createSuccess": "Created site {{code}}", "adminAccountCreated": "Created site admin account {{username}}", - "updateSuccess": "Updated site {{code}}", - "connectivityTest": "Test connectivity", - "connectivityTitle": "Partner wallet connectivity", + "adminAccountSectionDescription": "Creating a site will also create one admin account bound to that site.", + "adminAccountSectionTitle": "Site admin account", + "cancel": "Cancel", + "codeImmutable": "site_code cannot be changed after creation", + "columns": { + "actions": "Actions", + "code": "site_code", + "currency": "Currency", + "h5Url": "Lottery H5", + "lineRoot": "Level-1 agent", + "name": "Name", + "ssoSecret": "SSO secret", + "status": "Status", + "walletApiKey": "Wallet API key", + "walletUrl": "Wallet API" + }, "connectivityDescription": "Call the balance API for site {{code}} using a test player.", + "connectivityFailed": "Connectivity failed", "connectivityPlayerId": "Test site_player_id", "connectivityRun": "Run test", "connectivityRunning": "Testing…", "connectivitySuccess": "Connectivity OK", - "connectivityFailed": "Connectivity failed", + "connectivityTest": "Test connectivity", + "connectivityTitle": "Partner wallet connectivity", + "copied": "Copied {{field}}", + "copy": "Copy", + "copyFailed": "Copy failed", + "create": "New site", + "createSuccess": "Created site {{code}}", + "delete": "Delete site", + "deleteConfirm": "Delete", + "deleteConfirmDescription": "This permanently removes site {{code}} ({{name}}), its agent line, settlement periods, players, and site admin accounts. This cannot be undone.", + "deleteConfirmTitle": "Delete this site?", + "deleteFailed": "Failed to delete site", + "deleteSuccess": "Deleted site {{code}}", + "deleting": "Deleting…", + "description": "Maintain partner integration settings in admin. site_code cannot be changed after creation.", + "dialogCreateTitle": "New integration site", + "dialogDescription": "Default wallet paths are fine unless the partner uses custom URLs.", + "dialogEditTitle": "Edit integration site", + "edit": "Edit", + "empty": "No integration sites", + "exportFailed": "Export failed", "exportParams": "Export params", "exportSuccess": "Exported parameter sheet for {{code}}", - "exportFailed": "Export failed", - "rotateSecrets": "Rotate secrets", - "rotateSuccess": "Rotated secrets for {{code}}", - "rotateFailed": "Failed to rotate secrets", - "rotateConfirmTitle": "Rotate secrets?", - "rotateConfirmDescription": "New SSO and wallet keys will be generated for {{code}}. Old keys stop working immediately.", - "rotateConfirm": "Rotate", - "delete": "Delete site", - "deleteSuccess": "Deleted site {{code}}", - "deleteFailed": "Failed to delete site", - "deleteConfirmTitle": "Delete this site?", - "deleteConfirmDescription": "This permanently removes site {{code}} ({{name}}), its agent line, settlement periods, players, and site admin accounts. This cannot be undone.", - "deleteConfirm": "Delete", - "deleting": "Deleting…", - "secretsTitle": "Save these secrets now", - "secretsDescription": "Secrets for {{code}} are shown only once.", - "secretsDismiss": "I have saved them", - "copied": "Copied {{field}}", - "copyFailed": "Copy failed", - "noPermission": "No permission to view integration sites", - "codeImmutable": "site_code cannot be changed after creation", - "statusEnabled": "Enabled", - "statusDisabled": "Disabled", - "dialogCreateTitle": "New integration site", - "dialogEditTitle": "Edit integration site", - "dialogDescription": "Default wallet paths are fine unless the partner uses custom URLs.", - "form": { - "required": "Site name is required", - "codeRequired": "site_code is required", - "adminUsernameRequired": "Site admin username is required", - "adminNicknameRequired": "Site admin nickname is required", - "adminPasswordRequired": "Initial site admin password must be at least 8 characters" - }, - "columns": { - "code": "site_code", - "name": "Name", - "status": "Status", - "walletUrl": "Wallet API", - "actions": "Actions" - }, "fields": { - "code": "site_code", - "name": "Site name", - "adminUsername": "Admin username", + "adminEmail": "Email (optional)", "adminNickname": "Admin nickname", "adminPassword": "Initial password", - "adminEmail": "Email (optional)", + "adminUsername": "Admin username", + "code": "site_code", "currency": "Default currency", - "status": "Status", - "walletApiUrl": "Partner wallet base URL", - "lotteryH5BaseUrl": "Lottery H5 base URL (optional)", "iframeOrigins": "iframe allowlist (one origin per line)", + "lotteryH5BaseUrl": "Lottery H5 base URL (optional)", + "name": "Site name", "notes": "Notes", "ssoSecret": "SSO secret", - "walletApiKey": "Wallet API key" - }, - "placeholders": { - "code": "Enter site identifier, for example partner-a", - "name": "Enter site name", - "adminUsername": "Enter admin username", - "adminNickname": "Enter account nickname", - "adminPassword": "At least 8 characters", - "adminEmail": "Enter email", - "currency": "Enter currency code, for example NPR", - "walletApiUrl": "Enter wallet API URL", - "lotteryH5BaseUrl": "Enter H5 URL", - "iframeOrigins": "Enter allowed origins, for example https://www.example.com", - "notes": "Enter notes", - "connectivityPlayerId": "Enter player ID, for example 10001" - }, - "adminAccountSectionTitle": "Site admin account", - "adminAccountSectionDescription": "Creating a site will also create one admin account bound to that site." - }, - "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", - "moreActions": "More actions for v{{version}}", - "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." - }, - "versionToolbar": { - "draftEditing": "Editing a draft — save and publish to go live" - }, - "versionActions": { - "publishCurrent": "Publish", - "refreshing": "Refreshing", - "refresh": "Refresh versions", - "newDraft": "New draft", - "saveDraft": "Save draft", - "saveFailed": "Failed to save configuration", - "rollbackSuccess": "Cloned v{{fromVersion}} into new draft v{{version}}", - "rollbackFailed": "Rollback failed", - "rollbackDialog": { - "title": "Confirm rollback", - "description": "A new draft will be cloned from version v{{version}}. The active version will not be overwritten directly.", - "confirm": "Confirm rollback" - } - }, - "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" - }, - "validation": { - "amountAtLeastMinorUnit": "{{field}} must be a valid amount and at least 0.01.", - "inRangeInvalid": "Maximum transfer-in amount cannot be less than the minimum transfer-in amount.", - "outRangeInvalid": "Maximum transfer-out amount cannot be less than the minimum transfer-out amount." - }, - "discard": "Discard changes", - "confirmSaveTitle": "Save wallet limits?", - "confirmSaveDescription": "This updates per-order transfer-in/out limits and immediately affects player wallet transfers." - }, - "system": { - "title": "Draw and settlement runtime settings", - "runtimeTitle": "Global runtime parameters", - "runtimeIntro1": "This area stores global system parameters that do not belong to play, odds, or risk-control versions. They directly affect wallet transfers, job switches, and runtime policy.", - "runtimeIntro2": "Play, odds, rebate, and cap management stay under operations configuration. System settings only carry cross-module runtime parameters to avoid overlapping responsibilities in admin.", - "description": "Controls review flow after RNG draw generation, cooldown duration, and automatic settlement behavior. These are global runtime policies and do not belong to versioned operations config.", - "loadFailed": "Failed to load system settings", - "saveSuccess": "System settings saved", - "saveRuntimeSuccess": "Draw and settlement parameters saved", - "saveDrawSuccess": "Draw parameters saved", - "saveCurrencyFormatSuccess": "Currency display format saved", - "saveSettlementSuccess": "Settlement automation saved", - "saveFrontendSuccess": "Front-end display settings saved", - "sections": { - "draw": "Draw schedule and review", - "drawDescription": "Controls draw timing, close window, manual review, and cooldown. Only changed fields in this block are submitted.", - "currencyFormat": "Currency display format", - "currencyFormatDescription": "Decimals and separators for amounts across the site (separate from currency master data).", - "settlement": "Settlement automation", - "settlementDescription": "Controls whether tick auto-runs settlement, approval, and payout. Only changed fields in this block are submitted." - }, - "saveFailed": "Failed to save system settings", - "unsavedChanges": "Unsaved changes", - "frontendConfig": "Front-end configuration", - "fields": { - "manualReview": "Require manual review for draw results", - "cooldownMinutes": "Cooldown duration (minutes)", - "defaultCurrency": "Default currency code", - "drawIntervalMinutes": "Draw interval (minutes)", - "drawBettingWindowSeconds": "Betting window (seconds)", - "drawCloseBeforeDrawSeconds": "Close before draw (seconds)", - "drawBufferDrawsAhead": "Pre-generated future draws", - "currencyDisplayDecimals": "Display decimals", - "currencyDecimalSeparator": "Decimal separator", - "currencyThousandsSeparator": "Thousands separator", - "autoSettlement": "Run settlement automatically", - "autoApprove": "Auto-approve settlement batches", - "autoPayout": "Auto-credit winnings to wallets", - "applyRebateToPayout": "Deduct rebate again on winning payouts", - "playRulesHtml": "Play rules HTML (i18n)", - "playRulesHtmlDesc": "Rendered on the player play-rules page per locale. Leave empty to fall back to another language or the default empty state." - }, - "placeholders": { - "defaultCurrency": "Enter default currency code, for example NPR", - "drawIntervalMinutes": "Enter draw interval in minutes", - "drawBettingWindowSeconds": "Enter betting window in seconds", - "drawCloseBeforeDrawSeconds": "Enter seconds to close before draw", - "drawBufferDrawsAhead": "Enter pre-generated draw count", - "cooldownMinutes": "Enter cooldown minutes", - "currencyDisplayDecimals": "Enter display decimal places, for example 2", - "currencyDecimalSeparator": "Enter decimal separator, for example .", - "currencyThousandsSeparator": "Enter thousands separator, for example ," - }, - "hints": { - "manualReview": "When enabled, RNG draw results enter pending review and must be published manually in admin.", - "cooldownMinutes": "How long to wait after publishing before entering settling. Use 0 to settle immediately.", - "autoSettlement": "When disabled, tick will not run settlement automatically and admins must trigger it manually.", - "autoApprove": "After cooldown ends and settlement completes, whether batches are automatically marked as approved.", - "autoPayout": "After a batch is approved, whether tick automatically credits winnings to player wallets.", - "applyRebateToPayout": "When enabled, payout = gross win × (1 - rebate_rate_snapshot). Default off (rebate already reflected in actual deduct)." - }, - "states": { - "enabled": "Enabled", - "disabled": "Disabled" - }, - "discard": "Discard changes", - "confirmSaveTitle": "Save system runtime parameters?", - "confirmSaveDescription": "This updates draw review, cooldown, auto settlement/approval/payout, and play-rules display. It may affect site-wide operation.", - "confirmSaveRuntimeTitle": "Save draw and settlement parameters?", - "confirmSaveRuntimeDescription": "This updates draw review, schedule timing, cooldown, and auto settlement/approval/payout. Play-rules HTML is not changed.", - "confirmSaveDrawTitle": "Save draw parameters?", - "confirmSaveDrawDescription": "This updates draw review, schedule timing, and cooldown in this block only.", - "confirmSaveCurrencyFormatTitle": "Save currency display format?", - "confirmSaveCurrencyFormatDescription": "This updates decimal places and separators.", - "confirmSaveSettlementTitle": "Save settlement automation?", - "confirmSaveSettlementDescription": "This updates auto settlement, approval, and payout switches.", - "confirmSaveFrontendTitle": "Save front-end display settings?", - "confirmSaveFrontendDescription": "This updates play-rules HTML on the player site. Draw and settlement logic are not changed." - }, - "currencies": { - "title": "Currency management", - "description": "Maintain currency master data for admin operations and control whether a currency is enabled or allowed for betting.", - "loading": "Loading currencies…", - "empty": "No currencies yet.", - "loadFailed": "Failed to load currencies", - "createSuccess": "Currency created", - "createFailed": "Failed to create currency", - "updateSuccess": "Currency updated", - "updateFailed": "Failed to update currency", - "deleteSuccess": "Currency {{code}} deleted", - "deleteFailed": "Failed to delete currency", - "actions": { - "create": "Add currency", - "edit": "Edit", - "delete": "Delete", - "openStandalone": "Open dedicated page", - "backToSettings": "Back to settings" - }, - "table": { - "code": "Code", - "name": "Name", - "decimals": "Decimals", - "enabled": "Enabled", - "bettable": "Bettable", - "actions": "Actions" - }, - "dialog": { - "createTitle": "Add currency", - "editTitle": "Edit currency", - "description": "Currency code is immutable after creation. Disabling a currency also turns off bettable status." - }, - "deleteDialog": { - "title": "Delete currency?", - "description": "Delete currency {{code}}? The system blocks deletion when it is still referenced by defaults, wallets, tickets, odds, or jackpot data." + "status": "Status", + "walletApiKey": "Wallet API key", + "walletApiUrl": "Partner wallet base URL" }, "form": { - "code": "Currency code", - "name": "Currency name", - "decimals": "Decimal places", - "codePlaceholder": "Enter currency code, for example NPR", - "namePlaceholder": "Enter currency name", - "decimalsPlaceholder": "Enter decimal places, for example 2", - "enabled": "Enabled status", - "enabledHint": "Disabled currencies should not be used for new business.", - "bettable": "Allow betting", - "bettableHint": "Only enabled currencies can be marked as bettable.", - "required": "Please fill in the required fields", - "decimalInvalid": "Enter a valid decimal place value" - } - }, - "play": { - "batchGroups": { - "d2": "2D Global", - "d3": "3D Global", - "d4": "4D Global", - "big-small": "Big / Small", - "position": "Position Plays", - "box": "Box Plays", - "jackpot": "Jackpot" - }, - "validation": { - "minMaxInvalid": "{{playCode}}: min bet cannot exceed max bet", - "displayNameRequired": "Display name is required" - }, - "publishFailed": "Publish failed", - "publishDialog": { - "title": "Publish play configuration?", - "description": "New settings affect future bets. Existing tickets still settle by their saved snapshot.", - "confirm": "Confirm publish" - }, - "batchSwitchConfirmTitle": "Batch {{action}}?", - "batchSwitchConfirmDescription": "{{action}} {{count}} play types under «{{group}}» and write to the current draft.", - "batchSwitchEnable": "Enable", - "batchSwitchDisable": "Disable", - "toggleConfirmTitle": "{{action}} play {{playCode}}?", - "toggleConfirmDescription": "This updates the current draft only. Players see changes after save and publish.", - "batchPartialEnabled": "{{enabledCount}}/{{total}} enabled (not all on — turn on to enable all)", - "toggleEnable": "Enable", - "toggleDisable": "Disable", - "toggleInstantFailed": "Failed to apply play switch. Try again later.", - "createDraftSuccess": "Created draft v{{version}}", - "createDraftFailed": "Failed to create draft", - "ruleSavedLocal": "Rule text was saved into the local draft. Save the draft to persist it.", - "deleteFailed": "Delete failed", - "activeVersion": "Active version v{{version}}", - "readOnlyHint": "Limits and rules are read-only. Create a draft first.", - "batchSwitchesTitle": "Batch switches", - "batchSwitchesDesc": "Only updates the current draft. The player betting table refreshes after save and publish.", - "readOnlyDraftHint": "Current version is read-only. Create a draft first.", - "batchEnabledCount": "{{enabledCount}}/{{total}} enabled", - "noPlayTypes": "No play types", - "filters": { - "sectionTitle": "Filter plays", - "sectionDescription": "Narrow the list first, then use batch switches or row-level edits.", - "keyword": "Search plays", - "keywordPlaceholder": "Filter by play code, display name, or category", - "category": "Category", - "status": "Status", - "allCategories": "All categories", - "allStatuses": "All statuses", - "uncategorized": "Uncategorized", - "reset": "Clear filters", - "empty": "No matching play types", - "groupCount": "{{count}} plays" - }, - "actions": { - "enable": "Enable", - "disable": "Disable", - "ruleText": "Rule text", - "editDisplayName": "Edit name" - }, - "locales": { - "zh": "Chinese", - "en": "English", - "ne": "Nepali" - }, - "categories": { - "standard": "Standard", - "attribute": "Attribute", - "position": "Position", - "box": "Box", - "jackpot": "Jackpot" - }, - "table": { - "playCode": "Play code", - "category": "Category", - "status": "Status", - "displayName": "Display name", - "order": "Order", - "minBet": "Min bet", - "maxBet": "Max bet", - "actions": "Actions" + "adminNicknameRequired": "Site admin nickname is required", + "adminPasswordRequired": "Initial site admin password must be at least 8 characters", + "adminUsernameRequired": "Site admin username is required", + "codeRequired": "site_code is required", + "required": "Site name is required" }, + "lineRootBound": "Bound", + "lineRootUnbound": "Unbound", + "loadFailed": "Failed to load integration sites", + "loading": "Loading…", + "noPermission": "No permission to view integration sites", + "pageGuide": "Wallet-mode partners need an integration site and SSO/wallet secrets; see API docs for technical setup.", "placeholders": { - "displayOrder": "Order", - "minBetAmount": "Minimum amount", - "maxBetAmount": "Maximum amount" + "adminEmail": "Enter email", + "adminNickname": "Enter account nickname", + "adminPassword": "At least 8 characters", + "adminUsername": "Enter admin username", + "code": "Enter site identifier, for example partner-a", + "connectivityPlayerId": "Enter player ID, for example 10001", + "currency": "Enter currency code, for example NPR", + "iframeOrigins": "Enter allowed origins, for example https://www.example.com", + "lotteryH5BaseUrl": "Enter H5 URL", + "name": "Enter site name", + "notes": "Enter notes", + "walletApiUrl": "Enter wallet API URL" }, - "states": { - "enabled": "Enabled", - "disabled": "Disabled", - "readOnly": "Read only" - }, - "aria": { - "enablePlay": "Enable {{playCode}}", - "batchGroupSwitch": "Toggle batch switch for {{group}}" - }, - "nameDialog": { - "title": "Edit display name", - "description": "Play {{playCode}}. The player site shows this label after you save and publish the draft.", - "apply": "Apply to draft", - "savedLocal": "Display names were saved into the local draft. Save the draft to persist them." - }, - "ruleDialog": { - "title": "Rule text (i18n)", - "description": "Play {{playCode}}. Changes stay in the draft until you save and publish it.", - "apply": "Apply to draft" - } + "rotateConfirm": "Rotate", + "rotateConfirmDescription": "New SSO and wallet keys will be generated for {{code}}. Old keys stop working immediately.", + "rotateConfirmTitle": "Rotate secrets?", + "rotateFailed": "Failed to rotate secrets", + "rotateSecrets": "Rotate secrets", + "rotateSuccess": "Rotated secrets for {{code}}", + "save": "Save", + "saveFailed": "Save failed", + "saving": "Saving…", + "secretCopyRequiresManage": "Integration site manage permission is required to copy secrets", + "secretNotConfigured": "Secret not configured", + "secretsDescription": "Secrets for {{code}} are shown only once.", + "secretsDismiss": "I have saved them", + "secretsTitle": "Save these secrets now", + "statusDisabled": "Disabled", + "statusEnabled": "Enabled", + "title": "Integration sites", + "updateSuccess": "Updated site {{code}}" }, - "prizeScopes": { - "first": "First prize odds", - "second": "Second prize odds", - "third": "Third prize odds", - "starter": "Starter prize odds", - "consolation": "Consolation prize odds" + "nav": { + "aria": "Operations configuration sub-navigation", + "groups": { + "betting": "Betting and display", + "risk": "Risk control" + }, + "items": { + "jackpot": "Jackpot pool", + "odds": "Odds", + "plays": "Play types and limits", + "rebate": "Commission / rebate", + "risk-cap": "Payout caps" + }, + "riskCapTitle": "Risk cap rules", + "rulesOddsDescription": "Odds matrix and base rebate are maintained on one page, sharing the same odds version line.", + "rulesOddsDescriptionShort": "Pick a play on the left, edit odds and base rebate on the right. Agent/player rebate is added on top of this base, then save and publish.", + "rulesOddsTitle": "Odds & base rebate", + "rulesPlaysTitle": "Play rules", + "sidebarTitle": "Operations configuration" }, "odds": { - "sectionHint": "Pick a version to edit prize-tier odds; publishing applies to new tickets immediately.", - "sections": { - "playScope": "Play scope", - "oddsConfig": "Odds" - }, - "currentSelection": "Selection: {{category}} / {{play}}", - "playSelectPlaceholder": "Select play type", - "readOnlyBanner": "This version is read-only. Create a draft to edit odds and base rebate.", - "table": { - "prizeScope": "Prize scope", - "multiplier": "Odds multiplier" - }, - "draftBar": { - "unsaved": "Unsaved changes", - "saved": "Changes kept in local draft" - }, - "playGroups": { - "bigSmall": "Big / small", - "combo4": "4D position", - "number3": "3D position", - "number2": "2D position", - "other": "Other" - }, - "summary": { - "title": "Summary", - "contextTitle": "Version & tips", - "version": "Editing version", - "activeVersion": "Active version", - "statusLabel": "Status", - "readOnlyTag": "Read-only", - "readOnlyHint": "This version is read-only. Create a draft to make changes.", - "draftHint": "Save draft changes before publishing; publish affects new tickets only.", - "activeHint": "This version is active; new tickets use these settings." - }, - "tabs": { - "all": "All" - }, - "category": "Category", - "playType": "Play type", - "noPlayTypes": "No play types in this category.", - "sheetDescription": "Choose a version to view here. Non-draft versions can be rolled back into a new draft.", "activeVersionPrefix": "Active version:", - "readOnlyHint": "This version is read-only. Create a draft before editing odds.", + "category": "Category", + "createDraftFailed": "Failed to create draft", + "createDraftSuccess": "Created draft v{{version}}", + "currentSelection": "Selection: {{category}} / {{play}}", + "deleteFailed": "Delete failed", + "draftBar": { + "saved": "Changes kept in local draft", + "unsaved": "Unsaved changes" + }, "loadingDetails": "Loading details…", - "multiplier": "Multiplier x{{value}} · {{currency}}", "missingScopeRow": "Missing {{scope}} row. Check seed or version data.", - "rebateRate": "Base rebate rate (%)", - "rebateRateHint": "This is the platform base rebate. It writes rebate_rate to all prize scopes under this play type; agent/player rebate is added on top of it.", + "multiplier": "Multiplier x{{value}} · {{currency}}", + "noPlayTypes": "No play types in this category.", "placeholders": { "multiplier": "Enter odds multiplier", "rebateRate": "Enter base rebate rate" }, - "publishFailed": "Publish failed", - "createDraftSuccess": "Created draft v{{version}}", - "createDraftFailed": "Failed to create draft", - "rollbackSuccess": "Cloned v{{fromVersion}} into new draft v{{version}}", - "rollbackFailed": "Rollback failed", - "deleteFailed": "Delete failed", - "rollbackDialog": { - "title": "Confirm rollback", - "description": "A new draft will be cloned from version v{{version}}. The active version will not be overwritten directly.", - "confirm": "Confirm rollback" + "playGroups": { + "bigSmall": "Big / small", + "combo4": "4D position", + "number2": "2D position", + "number3": "3D position", + "other": "Other" }, + "playSelectPlaceholder": "Select play type", + "playType": "Play type", "publishDialog": { - "title": "Publish odds version?", - "description": "New odds affect new tickets immediately. Existing successful tickets still settle by their saved odds snapshot.", - "confirm": "Confirm publish", "columns": { - "prizeScope": "Prize scope", + "afterPublish": "After publish", "currentActive": "Current active", - "afterPublish": "After publish" - } + "prizeScope": "Prize scope" + }, + "confirm": "Confirm publish", + "description": "New odds affect new tickets immediately. Existing successful tickets still settle by their saved odds snapshot.", + "title": "Publish odds version?" + }, + "publishFailed": "Publish failed", + "readOnlyBanner": "This version is read-only. Create a draft to edit odds and base rebate.", + "readOnlyHint": "This version is read-only. Create a draft before editing odds.", + "rebateRate": "Base rebate rate (%)", + "rebateRateHint": "This is the platform base rebate. It writes rebate_rate to all prize scopes under this play type; agent/player rebate is added on top of it.", + "rollbackDialog": { + "confirm": "Confirm rollback", + "description": "A new draft will be cloned from version v{{version}}. The active version will not be overwritten directly.", + "title": "Confirm rollback" + }, + "rollbackFailed": "Rollback failed", + "rollbackSuccess": "Cloned v{{fromVersion}} into new draft v{{version}}", + "sectionHint": "Pick a version to edit prize-tier odds; publishing applies to new tickets immediately.", + "sections": { + "oddsConfig": "Odds", + "playScope": "Play scope" + }, + "sheetDescription": "Choose a version to view here. Non-draft versions can be rolled back into a new draft.", + "summary": { + "activeHint": "This version is active; new tickets use these settings.", + "activeVersion": "Active version", + "contextTitle": "Version & tips", + "draftHint": "Save draft changes before publishing; publish affects new tickets only.", + "readOnlyHint": "This version is read-only. Create a draft to make changes.", + "readOnlyTag": "Read-only", + "statusLabel": "Status", + "title": "Summary", + "version": "Editing version" + }, + "table": { + "multiplier": "Odds multiplier", + "prizeScope": "Prize scope" + }, + "tabs": { + "all": "All" } }, - "rebate": { - "sectionHint": "This section configures the base rebate, which is stored in the odds version; select or create an odds draft in the section above first.", - "lazyLoadHint": "Scroll down to the rebate section to load", - "embeddedVersionHint": "Base rebate shares the odds version line—switch versions in the Odds section above.", - "sheetDescription": "Rebate is stored in the odds draft version and shares the same version set as odds.", - "publishLabel": "Publish", - "publishSuccess": "Published odds version with rebate", - "publishFailed": "Publish failed", - "publishDialog": { - "title": "Publish base rebate/odds version?", - "description": "After publish, the base rebate applies to new tickets. Agent/player extra rebate is still added on top.", - "confirm": "Confirm publish" + "play": { + "actions": { + "disable": "Disable", + "editDisplayName": "Edit name", + "enable": "Enable", + "ruleText": "Rule text" + }, + "activeVersion": "Active version v{{version}}", + "aria": { + "batchGroupSwitch": "Toggle batch switch for {{group}}", + "enablePlay": "Enable {{playCode}}" + }, + "batchEnabledCount": "{{enabledCount}}/{{total}} enabled", + "batchGroups": { + "big-small": "Big / Small", + "box": "Box Plays", + "d2": "2D Global", + "d3": "3D Global", + "d4": "4D Global", + "jackpot": "Jackpot", + "position": "Position Plays" + }, + "batchPartialEnabled": "{{enabledCount}}/{{total}} enabled (not all on — turn on to enable all)", + "batchSwitchConfirmDescription": "{{action}} {{count}} play types under «{{group}}» and write to the current draft.", + "batchSwitchConfirmTitle": "Batch {{action}}?", + "batchSwitchDisable": "Disable", + "batchSwitchEnable": "Enable", + "batchSwitchesDesc": "Only updates the current draft. The player betting table refreshes after save and publish.", + "batchSwitchesTitle": "Batch switches", + "categories": { + "attribute": "Attribute", + "box": "Box", + "jackpot": "Jackpot", + "position": "Position", + "standard": "Standard" }, - "createDraftSuccess": "Created draft v{{version}}", "createDraftFailed": "Failed to create draft", + "createDraftSuccess": "Created draft v{{version}}", + "deleteFailed": "Delete failed", + "filters": { + "allCategories": "All categories", + "allStatuses": "All statuses", + "category": "Category", + "empty": "No matching play types", + "groupCount": "{{count}} plays", + "keyword": "Search plays", + "keywordPlaceholder": "Filter by play code, display name, or category", + "reset": "Clear filters", + "sectionDescription": "Narrow the list first, then use batch switches or row-level edits.", + "sectionTitle": "Filter plays", + "status": "Status", + "uncategorized": "Uncategorized" + }, + "locales": { + "en": "English", + "ne": "Nepali", + "zh": "Chinese" + }, + "nameDialog": { + "apply": "Apply to draft", + "description": "Play {{playCode}}. The player site shows this label after you save and publish the draft.", + "savedLocal": "Display names were saved into the local draft. Save the draft to persist them.", + "title": "Edit display name" + }, + "noPlayTypes": "No play types", + "placeholders": { + "displayOrder": "Order", + "maxBetAmount": "Maximum amount", + "minBetAmount": "Minimum amount" + }, + "publishDialog": { + "confirm": "Confirm publish", + "description": "New settings affect future bets. Existing tickets still settle by their saved snapshot.", + "title": "Publish play configuration?" + }, + "publishFailed": "Publish failed", + "readOnlyDraftHint": "Current version is read-only. Create a draft first.", + "readOnlyHint": "Limits and rules are read-only. Create a draft first.", + "ruleDialog": { + "apply": "Apply to draft", + "description": "Play {{playCode}}. Changes stay in the draft until you save and publish it.", + "title": "Rule text (i18n)" + }, + "ruleSavedLocal": "Rule text was saved into the local draft. Save the draft to persist it.", + "states": { + "disabled": "Disabled", + "enabled": "Enabled", + "readOnly": "Read only" + }, + "table": { + "actions": "Actions", + "category": "Category", + "displayName": "Display name", + "maxBet": "Max bet", + "minBet": "Min bet", + "order": "Order", + "playCode": "Play code", + "status": "Status" + }, + "toggleConfirmDescription": "This updates the current draft only. Players see changes after save and publish.", + "toggleConfirmTitle": "{{action}} play {{playCode}}?", + "toggleDisable": "Disable", + "toggleEnable": "Enable", + "toggleInstantFailed": "Failed to apply play switch. Try again later.", + "validation": { + "displayNameRequired": "Display name is required", + "minMaxInvalid": "{{playCode}}: min bet cannot exceed max bet" + } + }, + "prizeScopes": { + "consolation": "Consolation prize odds", + "first": "First prize odds", + "second": "Second prize odds", + "starter": "Starter prize odds", + "third": "Third prize odds" + }, + "rebate": { + "createDraftFailed": "Failed to create draft", + "createDraftSuccess": "Created draft v{{version}}", "deleteFailed": "Delete failed", - "editingVersion": "Editing version v{{version}} · {{status}}", - "readOnlyHint": "Create a draft before editing base rebate.", "dimensionRatesMixedHint": "Base rebate within the same dimension (2D/3D/4D) is not identical: the three percentage inputs show the first play (alphabetically) that has the primary prize scope; use the table as the source of truth. Bulk inputs will overwrite all plays in that dimension to one rate.", + "editingVersion": "Editing version v{{version}} · {{status}}", + "effectiveTime": "Effective time (current active odds version)", + "embeddedVersionHint": "Base rebate shares the odds version line—switch versions in the Odds section above.", "fields": { "d2": "2D base rebate rate (%)", "d3": "3D base rebate rate (%)", "d4": "4D base rebate rate (%)" }, + "lazyLoadHint": "Scroll down to the rebate section to load", "placeholders": { "d2": "Enter 2D base rebate", "d3": "Enter 3D base rebate", "d4": "Enter 4D base rebate" }, - "winEnjoy": { - "label": "Deduct rebate on winning payouts", - "description": "Maps to settlement.apply_rebate_to_payout: when enabled, winning payout uses gross win × (1 - rebate_rate_snapshot).", - "hint": "Global switch; affects future settlement payouts immediately (not tied to odds version publish).", - "saveSuccess": "Winning-ticket rebate setting updated", - "saveFailed": "Update failed" - }, - "effectiveTime": "Effective time (current active odds version)" - }, - "riskCap": { - "placeholders": { - "defaultCap": "Enter default cap amount", - "number": "4-digit number", - "capAmount": "Enter cap amount" - }, - "validation": { - "requireAtLeastOne": "At least one cap row is required", - "defaultGreaterThanZero": "Default cap amount must be greater than 0", - "defaultCannotBindDraw": "Default cap cannot be bound to a specific draw", - "specialGreaterThanZero": "Special cap amount must be greater than 0: {{number}}", - "numberMustBe4Digits": "Number must be 4 digits: {{number}}", - "enterValidCapAmount": "Enter a valid cap amount" + "publishDialog": { + "confirm": "Confirm publish", + "description": "After publish, the base rebate applies to new tickets. Agent/player extra rebate is still added on top.", + "title": "Publish base rebate/odds version?" }, "publishFailed": "Publish failed", - "publishDialog": { - "title": "Publish cap configuration?", - "description": "After publish, per-number risk-pool cap limits take effect.", - "confirm": "Confirm publish" + "publishLabel": "Publish", + "publishSuccess": "Published odds version with rebate", + "readOnlyHint": "Create a draft before editing base rebate.", + "sectionHint": "This section configures the base rebate, which is stored in the odds version; select or create an odds draft in the section above first.", + "sheetDescription": "Rebate is stored in the odds draft version and shares the same version set as odds.", + "winEnjoy": { + "description": "Maps to settlement.apply_rebate_to_payout: when enabled, winning payout uses gross win × (1 - rebate_rate_snapshot).", + "hint": "Global switch; affects future settlement payouts immediately (not tied to odds version publish).", + "label": "Deduct rebate on winning payouts", + "saveFailed": "Update failed", + "saveSuccess": "Winning-ticket rebate setting updated" + } + }, + "riskCap": { + "actions": { + "addSpecialCap": "+ Add special cap", + "close": "Close", + "exportCsv": "Export CSV", + "filterPresets": "Filter presets…", + "update": "Update" }, - "createDraftSuccess": "Created draft v{{version}}", "createDraftFailed": "Failed to create draft", - "savedLocalDraft": "Saved into local draft. Save the draft to persist it.", + "createDraftSuccess": "Created draft v{{version}}", + "defaultCap": { + "description": "Numbers without a special cap use this default cap template.", + "fieldLabel": "Cap amount (major unit)", + "title": "Default cap" + }, "deleteFailed": "Delete failed", "effectiveAt": "Effective at: {{value}}", - "note": "Note: {{value}}", - "readOnlyHint": "Read only. Create a draft first.", - "readOnly": "Read only", - "defaultCap": { - "title": "Default cap", - "description": "Numbers without a special cap use this default cap template.", - "fieldLabel": "Cap amount (major unit)" - }, - "specialCaps": { - "title": "Special caps", - "description": "No draw selected means a global number cap. Selecting a draw makes it a draw-specific cap." - }, - "scope": { - "global": "Global number", - "drawId": "Draw ID: {{id}}" - }, "groups": { - "globalTitle": "Global number caps", - "globalDescription": "Long-running caps that are not tied to a specific draw. Use these for normal number-level selling limits.", - "globalEmpty": "No global number caps yet.", - "drawTitle": "Draw-specific caps", + "count": "{{count}} rows", "drawDescription": "Only applies to the selected draw. Use these for temporary tightening or relaxing of a number cap.", "drawEmpty": "No draw-specific caps yet.", - "count": "{{count}} rows" - }, - "summary": { - "defaultCap": "Default cap", - "defaultHint": "Any number without a special rule falls back to this value.", - "globalCaps": "Global number caps", - "globalHint": "Long-running rules that do not change with a single draw.", - "drawCaps": "Draw-specific caps", - "drawHint": "Temporary rules that only apply to selected draws." + "drawTitle": "Draw-specific caps", + "globalDescription": "Long-running caps that are not tied to a specific draw. Use these for normal number-level selling limits.", + "globalEmpty": "No global number caps yet.", + "globalTitle": "Global number caps" }, "loadingDetails": "Loading details…", "noDetailRows": "No detail rows.", - "table": { - "scope": "Scope", - "number": "Number", - "capAmount": "Cap amount", - "used": "Used", - "remaining": "Remaining", - "soldOut": "Sold out", - "ratio": "Ratio", - "actions": "Actions" - }, + "note": "Note: {{value}}", "occupancy": { "searchLabel": "Search number", "searchPlaceholder": "e.g. 8888" }, + "placeholders": { + "capAmount": "Enter cap amount", + "defaultCap": "Enter default cap amount", + "number": "4-digit number" + }, + "publishDialog": { + "confirm": "Confirm publish", + "description": "After publish, per-number risk-pool cap limits take effect.", + "title": "Publish cap configuration?" + }, + "publishFailed": "Publish failed", + "readOnly": "Read only", + "readOnlyHint": "Read only. Create a draft first.", "runtime": { - "title": "Per-draw occupancy (live)", "description": "Loaded from the draw risk-pool API, not from the version draft above. Select a draw to see used, remaining, and sold-out state.", "drawLabel": "Draw", "drawPlaceholder": "Select draw", "filterAll": "All", - "filterSoldOut": "Sold out only", "filterHighRisk": "High usage", + "filterSoldOut": "Sold out only", "manageHint": "Use the links above for full risk operations on this draw.", "noDraws": "No draws available; cannot load occupancy.", + "soldNo": "No", "soldYes": "Yes", - "soldNo": "No" + "title": "Per-draw occupancy (live)" }, - "actions": { - "update": "Update", - "addSpecialCap": "+ Add special cap", - "filterPresets": "Filter presets…", - "exportCsv": "Export CSV", - "close": "Close" + "savedLocalDraft": "Saved into local draft. Save the draft to persist it.", + "scope": { + "drawId": "Draw ID: {{id}}", + "global": "Global number" + }, + "specialCaps": { + "description": "No draw selected means a global number cap. Selecting a draw makes it a draw-specific cap.", + "title": "Special caps" + }, + "summary": { + "defaultCap": "Default cap", + "defaultHint": "Any number without a special rule falls back to this value.", + "drawCaps": "Draw-specific caps", + "drawHint": "Temporary rules that only apply to selected draws.", + "globalCaps": "Global number caps", + "globalHint": "Long-running rules that do not change with a single draw." }, "syncDialog": { - "title": "Sync default cap", + "confirm": "Confirm", "description": "The default cap template will be set to {{value}}. This only changes the draft. Save and publish after confirming.", - "confirm": "Confirm" + "title": "Sync default cap" + }, + "table": { + "actions": "Actions", + "capAmount": "Cap amount", + "number": "Number", + "ratio": "Ratio", + "remaining": "Remaining", + "scope": "Scope", + "soldOut": "Sold out", + "used": "Used" + }, + "validation": { + "defaultCannotBindDraw": "Default cap cannot be bound to a specific draw", + "defaultGreaterThanZero": "Default cap amount must be greater than 0", + "enterValidCapAmount": "Enter a valid cap amount", + "numberMustBe4Digits": "Number must be 4 digits: {{number}}", + "requireAtLeastOne": "At least one cap row is required", + "specialGreaterThanZero": "Special cap amount must be greater than 0: {{number}}" + } + }, + "system": { + "confirmSaveCurrencyFormatDescription": "This updates decimal places and separators.", + "confirmSaveCurrencyFormatTitle": "Save currency display format?", + "confirmSaveDescription": "This updates draw review, cooldown, auto settlement/approval/payout, and play-rules display. It may affect site-wide operation.", + "confirmSaveDrawDescription": "This updates draw review, schedule timing, and cooldown in this block only.", + "confirmSaveDrawTitle": "Save draw parameters?", + "confirmSaveFrontendDescription": "This updates play-rules HTML on the player site. Draw and settlement logic are not changed.", + "confirmSaveFrontendTitle": "Save front-end display settings?", + "confirmSaveRuntimeDescription": "This updates draw review, schedule timing, cooldown, and auto settlement/approval/payout. Play-rules HTML is not changed.", + "confirmSaveRuntimeTitle": "Save draw and settlement parameters?", + "confirmSaveSettlementDescription": "This updates auto settlement, approval, and payout switches.", + "confirmSaveSettlementTitle": "Save settlement automation?", + "confirmSaveTitle": "Save system runtime parameters?", + "description": "Controls review flow after RNG draw generation, cooldown duration, and automatic settlement behavior. These are global runtime policies and do not belong to versioned operations config.", + "discard": "Discard changes", + "fields": { + "applyRebateToPayout": "Deduct rebate again on winning payouts", + "autoApprove": "Auto-approve settlement batches", + "autoPayout": "Auto-credit winnings to wallets", + "autoSettlement": "Run settlement automatically", + "cooldownMinutes": "Cooldown duration (minutes)", + "currencyDecimalSeparator": "Decimal separator", + "currencyDisplayDecimals": "Display decimals", + "currencyThousandsSeparator": "Thousands separator", + "defaultCurrency": "Default currency code", + "drawBettingWindowSeconds": "Betting window (seconds)", + "drawBufferDrawsAhead": "Pre-generated future draws", + "drawCloseBeforeDrawSeconds": "Close before draw (seconds)", + "drawIntervalMinutes": "Draw interval (minutes)", + "manualReview": "Require manual review for draw results", + "playRulesHtml": "Play rules HTML (i18n)", + "playRulesHtmlDesc": "Rendered on the player play-rules page per locale. Leave empty to fall back to another language or the default empty state." + }, + "frontendConfig": "Front-end configuration", + "hints": { + "applyRebateToPayout": "When enabled, payout = gross win × (1 - rebate_rate_snapshot). Default off (rebate already reflected in actual deduct).", + "autoApprove": "After cooldown ends and settlement completes, whether batches are automatically marked as approved.", + "autoPayout": "After a batch is approved, whether tick automatically credits winnings to player wallets.", + "autoSettlement": "When disabled, tick will not run settlement automatically and admins must trigger it manually.", + "cooldownMinutes": "How long to wait after publishing before entering settling. Use 0 to settle immediately.", + "manualReview": "When enabled, RNG draw results enter pending review and must be published manually in admin." + }, + "loadFailed": "Failed to load system settings", + "placeholders": { + "cooldownMinutes": "Enter cooldown minutes", + "currencyDecimalSeparator": "Enter decimal separator, for example .", + "currencyDisplayDecimals": "Enter display decimal places, for example 2", + "currencyThousandsSeparator": "Enter thousands separator, for example ,", + "defaultCurrency": "Enter default currency code, for example NPR", + "drawBettingWindowSeconds": "Enter betting window in seconds", + "drawBufferDrawsAhead": "Enter pre-generated draw count", + "drawCloseBeforeDrawSeconds": "Enter seconds to close before draw", + "drawIntervalMinutes": "Enter draw interval in minutes" + }, + "runtimeIntro1": "This area stores global system parameters that do not belong to play, odds, or risk-control versions. They directly affect wallet transfers, job switches, and runtime policy.", + "runtimeIntro2": "Play, odds, rebate, and cap management stay under operations configuration. System settings only carry cross-module runtime parameters to avoid overlapping responsibilities in admin.", + "runtimeTitle": "Global runtime parameters", + "saveCurrencyFormatSuccess": "Currency display format saved", + "saveDrawSuccess": "Draw parameters saved", + "saveFailed": "Failed to save system settings", + "saveFrontendSuccess": "Front-end display settings saved", + "saveRuntimeSuccess": "Draw and settlement parameters saved", + "saveSettlementSuccess": "Settlement automation saved", + "saveSuccess": "System settings saved", + "sections": { + "currencyFormat": "Currency display format", + "currencyFormatDescription": "Decimals and separators for amounts across the site (separate from currency master data).", + "draw": "Draw schedule and review", + "drawDescription": "Controls draw timing, close window, manual review, and cooldown. Only changed fields in this block are submitted.", + "settlement": "Settlement automation", + "settlementDescription": "Controls whether tick auto-runs settlement, approval, and payout. Only changed fields in this block are submitted." + }, + "states": { + "disabled": "Disabled", + "enabled": "Enabled" + }, + "title": "Draw and settlement runtime settings", + "unsavedChanges": "Unsaved changes" + }, + "title": "Configuration Center", + "versionActions": { + "newDraft": "New draft", + "publishCurrent": "Publish", + "refresh": "Refresh versions", + "refreshing": "Refreshing", + "rollbackDialog": { + "confirm": "Confirm rollback", + "description": "A new draft will be cloned from version v{{version}}. The active version will not be overwritten directly.", + "title": "Confirm rollback" + }, + "rollbackFailed": "Rollback failed", + "rollbackSuccess": "Cloned v{{fromVersion}} into new draft v{{version}}", + "saveDraft": "Save draft", + "saveFailed": "Failed to save configuration" + }, + "versionStatus": { + "active": "Active", + "archived": "Archived", + "draft": "Draft" + }, + "versionSwitcher": { + "count": "{{count}} items", + "current": "Current", + "delete": "Delete", + "deleteConfirmDescription": "Version ID {{id}} (version_no {{version}}) will be permanently deleted. Active versions cannot be deleted.", + "deleteConfirmTitle": "Delete this version?", + "effectiveAt": "Effective at: {{value}}", + "empty": "No version records yet.", + "loading": "Loading…", + "moreActions": "More actions for v{{version}}", + "noneSelected": "No version selected", + "note": "Note: {{value}}", + "rollback": "Rollback", + "selected": "Selected", + "sheetDescription": "Choose a version to view on this page. Drafts are editable, while active and archived versions are read-only.", + "sheetTitle": "Switch configuration version", + "switch": "Switch version", + "view": "View" + }, + "versionToolbar": { + "draftEditing": "Editing a draft — save and publish to go live" + }, + "wallet": { + "confirmSaveDescription": "This updates per-order transfer-in/out limits and immediately affects player wallet transfers.", + "confirmSaveTitle": "Save wallet limits?", + "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.", + "discard": "Discard changes", + "fields": { + "inMax": "Maximum transfer-in amount", + "inMin": "Minimum transfer-in amount", + "outMax": "Maximum transfer-out amount", + "outMin": "Minimum transfer-out amount" + }, + "hints": { + "inMax": "Per-order maximum from main wallet to lottery wallet", + "inMin": "Per-order minimum from main wallet to lottery wallet", + "outMax": "Per-order maximum from lottery wallet to main wallet", + "outMin": "Per-order minimum from lottery wallet to main wallet" + }, + "loadFailed": "Failed to load", + "placeholders": { + "max": "For example: 10000.00", + "min": "For example: 1.00" + }, + "saveFailed": "Save failed", + "saveSuccess": "Saved successfully", + "title": "Wallet transfer limit settings", + "validation": { + "amountAtLeastMinorUnit": "{{field}} must be a valid amount and at least 0.01.", + "inRangeInvalid": "Maximum transfer-in amount cannot be less than the minimum transfer-in amount.", + "outRangeInvalid": "Maximum transfer-out amount cannot be less than the minimum transfer-out amount." } } } diff --git a/src/i18n/locales/en/jackpot.json b/src/i18n/locales/en/jackpot.json index 56d8e5b..347d434 100644 --- a/src/i18n/locales/en/jackpot.json +++ b/src/i18n/locales/en/jackpot.json @@ -1,89 +1,91 @@ { - "title": "Jackpot", - "configTitle": "Jackpot pool configuration", - "pageDescription": "Maintain per-currency pool parameters; contribution and payout logs are below.", - "poolsSectionDescription": "Contribution rate, burst threshold, switch, and manual burst.", - "rulesTitle": "Rules", - "rulesJoin": "Only successfully placed lines that meet the minimum participation bet amount contribute to the pool.", - "rulesBurst": "The pool releases when the burst threshold is reached, the forced burst gap is met, or a configured play combo triggers it.", - "rulesManual": "Manual burst is a super-admin fallback only. You can enter either the numeric draw ID or the draw number.", - "recordsSectionTitle": "Contribution & payout logs", - "recordsSectionDescription": "Filter payout and contribution entries (read-only).", - "loadFailed": "Failed to load", - "saveSuccess": "Saved", - "saveFailed": "Save failed", - "invalidDrawId": "Enter a valid draw ID or draw number", - "manualBurstSuccess": "Jackpot burst triggered manually", - "manualBurstFailed": "Manual burst failed", - "noPoolData": "No pool data", - "displayBalance": "Display balance {{amount}}", - "currentAmount": "Current pool balance (major unit)", - "balanceAdjustmentTitle": "Balance adjustment", - "balanceAdjustmentHint": "A reason is required; each change is recorded in the adjustment ledger. Balance cannot be edited via Save.", - "adjustmentDirection": "Direction", - "adjustmentIncrease": "Increase", - "adjustmentDecrease": "Decrease", "adjustmentAmount": "Amount (major units)", + "adjustmentAmountInvalid": "Enter a valid adjustment amount", "adjustmentAmountPlaceholder": "Enter adjustment amount", + "adjustmentDecrease": "Decrease", + "adjustmentDirection": "Direction", + "adjustmentFailed": "Adjustment failed", + "adjustmentIncrease": "Increase", "adjustmentReason": "Reason (required)", "adjustmentReasonPlaceholder": "Enter adjustment reason", - "submitAdjustment": "Submit adjustment", - "adjustmentSuccess": "Pool balance adjusted", - "adjustmentFailed": "Adjustment failed", - "adjustmentAmountInvalid": "Enter a valid adjustment amount", "adjustmentReasonRequired": "Reason must be at least 3 characters", - "confirmAdjustmentTitle": "Confirm pool balance adjustment?", - "confirmAdjustmentDescription": "This writes a ledger entry and updates the pool balance. Verify amount and reason.", - "recentAdjustments": "Recent adjustments", - "contributionRate": "Contribution rate (%)", - "contributionRatePlaceholder": "e.g. 2 = 2%", - "triggerThreshold": "Burst threshold (major unit)", - "triggerThresholdPlaceholder": "Enter burst threshold", - "payoutRate": "Burst payout rate (%)", - "payoutRatePlaceholder": "e.g. 5 = 5%", - "forceTriggerGap": "Force burst gap (settled draws)", - "forceTriggerGapPlaceholder": "Enter forced burst gap in draws", - "minBetAmount": "Minimum participation bet amount (major unit)", - "minBetAmountPlaceholder": "Enter minimum bet amount", + "adjustmentSuccess": "Pool balance adjusted", + "apply": "Apply", + "balanceAdjustmentHint": "A reason is required; each change is recorded in the adjustment ledger. Balance cannot be edited via Save.", + "balanceAdjustmentTitle": "Balance adjustment", + "cancel": "Cancel", "comboTriggerPlays": "Combo trigger plays (comma separated)", "comboTriggerPlaysPlaceholder": "Enter play codes separated by commas, for example straight,ibox", - "status": "Status", + "configTitle": "Jackpot pool configuration", + "confirmAdjustmentDescription": "This writes a ledger entry and updates the pool balance. Verify amount and reason.", + "confirmAdjustmentTitle": "Confirm pool balance adjustment?", + "confirmSavePoolDescription": "This updates fill rate, thresholds, payout ratio, and related parameters (not pool balance). Use Balance adjustment for balance changes.", + "confirmSavePoolTitle": "Save jackpot pool settings?", + "contributionAmount": "Contribution amount", + "contributionLoadFailed": "Failed to load contribution records", + "contributionRate": "Contribution rate (%)", + "contributionRatePlaceholder": "e.g. 2 = 2%", + "contributionRecords": "Jackpot contribution records", + "currentAmount": "Current pool balance (major unit)", "disabled": "Disabled", + "displayBalance": "Display balance {{amount}}", + "drawNo": "Draw no.", "enabled": "Enabled", - "saving": "Saving…", - "save": "Save", - "manualBurstDrawId": "Draw for manual burst (ID or number)", - "manualBurstHint": "Super admin only. You can enter either the numeric draw ID or the draw number. Requires a settled draw with first-prize winners. Pool release follows the configured payout rate.", - "manualBurstConfirmTitle": "Confirm manual jackpot burst?", - "manualBurstConfirmDescription": "Jackpot will be split among first-prize winners for draw {{drawId}} using the payout rate. Pool balance will be reduced. This cannot be undone automatically.", - "processing": "Processing…", + "filter": "Filter", + "forceTriggerGap": "Force burst gap (settled draws)", + "forceTriggerGapPlaceholder": "Enter forced burst gap in draws", + "invalidDrawId": "Enter a valid draw ID or draw number", + "loadFailed": "Failed to load", "manualBurst": "Manual burst (super admin only)", "manualBurstConfirm": "Confirm burst", - "cancel": "Cancel", - "filter": "Filter", - "drawNo": "Draw no.", + "manualBurstConfirmDescription": "Jackpot will be split among first-prize winners for draw {{drawId}} using the payout rate. Pool balance will be reduced. This cannot be undone automatically.", + "manualBurstConfirmTitle": "Confirm manual jackpot burst?", + "manualBurstDrawId": "Draw for manual burst (ID or number)", + "manualBurstFailed": "Manual burst failed", + "manualBurstHint": "Super admin only. You can enter either the numeric draw ID or the draw number. Requires a settled draw with first-prize winners. Pool release follows the configured payout rate.", + "manualBurstSuccess": "Jackpot burst triggered manually", + "minBetAmount": "Minimum participation bet amount (major unit)", + "minBetAmountPlaceholder": "Enter minimum bet amount", + "noPoolData": "No pool data", "optional": "Optional", - "apply": "Apply", - "payoutRecords": "Jackpot payout records", - "contributionRecords": "Jackpot contribution records", - "recordsPage": { - "title": "Jackpot records", - "description": "Payout records and pool contribution flows" - }, - "poolsSectionTitle": "Per-currency pool parameters", - "payoutLoadFailed": "Failed to load payout records", - "contributionLoadFailed": "Failed to load contribution records", - "trigger": "Trigger", - "triggerTypes": { - "threshold": "Threshold reached", - "forced_gap": "Forced by draw gap", - "play_combo": "Triggered by play combo", - "manual": "Manual trigger" - }, + "pageDescription": "Maintain per-currency pool parameters; contribution and payout logs are below.", "payoutAmount": "Payout amount", - "winnerCount": "Winner count", - "time": "Time", - "ticketNo": "Ticket", + "payoutLoadFailed": "Failed to load payout records", + "payoutRate": "Burst payout rate (%)", + "payoutRatePlaceholder": "e.g. 5 = 5%", + "payoutRecords": "Jackpot payout records", "player": "Player", - "contributionAmount": "Contribution amount" + "poolsSectionDescription": "Contribution rate, burst threshold, switch, and manual burst.", + "poolsSectionTitle": "Per-currency pool parameters", + "processing": "Processing…", + "recentAdjustments": "Recent adjustments", + "recordsPage": { + "description": "Payout records and pool contribution flows", + "title": "Jackpot records" + }, + "recordsSectionDescription": "Filter payout and contribution entries (read-only).", + "recordsSectionTitle": "Contribution & payout logs", + "rulesBurst": "The pool releases when the burst threshold is reached, the forced burst gap is met, or a configured play combo triggers it.", + "rulesJoin": "Only successfully placed lines that meet the minimum participation bet amount contribute to the pool.", + "rulesManual": "Manual burst is a super-admin fallback only. You can enter either the numeric draw ID or the draw number.", + "rulesTitle": "Rules", + "save": "Save", + "saveFailed": "Save failed", + "saveSuccess": "Saved", + "saving": "Saving…", + "status": "Status", + "submitAdjustment": "Submit adjustment", + "ticketNo": "Ticket", + "time": "Time", + "title": "Jackpot", + "trigger": "Trigger", + "triggerThreshold": "Burst threshold (major unit)", + "triggerThresholdPlaceholder": "Enter burst threshold", + "triggerTypes": { + "forced_gap": "Forced by draw gap", + "manual": "Manual trigger", + "play_combo": "Triggered by play combo", + "threshold": "Threshold reached" + }, + "winnerCount": "Winner count" } diff --git a/src/i18n/locales/en/players.json b/src/i18n/locales/en/players.json index 5627775..d0fa86e 100644 --- a/src/i18n/locales/en/players.json +++ b/src/i18n/locales/en/players.json @@ -1,99 +1,101 @@ { - "title": "Players", - "pageGuide": "Wallet and credit players in one list; detail tabs adapt to funding_mode.", - "detailTitle": "Player details", - "listTitle": "Player list", - "viewDetail": "View details", - "backToList": "Back to player list", - "detailSubtitle": "{{site}} · {{sitePlayerId}} · ID {{playerId}}", - "tabOverview": "Overview", - "tabTickets": "Tickets", - "ticketTableHint": "This table shows the player's recent tickets. Use the row action to jump into the main ticket list for full context and troubleshooting.", - "tabWalletTxns": "Wallet transactions", - "tabCreditLedger": "Credit ledger", - "tabTransferOrders": "Transfer orders", - "profileSection": "Profile", - "walletsSection": "Wallets", - "createdAt": "Registered at", + "actions": "Actions", "agent": "Agent", - "frozen": "Frozen", - "txnAmount": "Amount", - "balanceAfterTxn": "Balance after", - "invalidPlayerId": "Invalid player ID", - "createPlayer": "Create player", - "searchPlaceholder": "Search by player ID / username / nickname", - "filterSite": "Site", - "filterAllSites": "All sites", - "scopeAllSites": "Scope: all players on all sites (super admin)", - "scopeFilteredSite": "Scope: site {{site}}", - "scopeAgentLine": "Scope: {{site}} · agent line “{{name}}” and downstream players", - "scopeSingleSite": "Scope: site {{site}}", - "scopeMultiSite": "Scope: {{count}} bound site(s); use filter to narrow", - "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", - "createAgentRequired": "Your account is not bound to an agent node. Sign in with an agent account, or as super admin pick a valid site and agent.", - "createAgentNode": "Agent node", - "createAgentNodePlaceholder": "Select agent node", - "createAgentAutoHint": "Player will be assigned to your agent: {{name}} ({{code}})", - "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", - "fundingMode": "Funding mode", - "authSource": "Auth source", - "creditSection": "Credit line", - "usedCredit": "Used credit", - "fundingCredit": "Credit line", - "fundingWallet": "Main-site wallet", "authMainSite": "Main-site SSO", "authNative": "Lottery native", - "creditLimit": "Credit limit", + "authSource": "Auth source", + "available": "Available", "availableCredit": "Available credit", - "actions": "Actions", - "edit": "Edit", - "freeze": "Freeze", - "unfreeze": "Unfreeze", - "freezeSuccess": "Player {{name}} frozen", - "unfreezeSuccess": "Player {{name}} unfrozen", - "freezeFailed": "Failed to freeze player", - "unfreezeFailed": "Failed to unfreeze player", - "delete": "Delete", - "createDialogTitle": "Create player", - "editDialogTitle": "Edit player", - "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", + "backToList": "Back to player list", + "balance": "Balance", + "balanceAfterTxn": "Balance after", "cancel": "Cancel", + "confirmDelete": "Confirm delete", + "confirmDeleteDesc": "Delete player {{name}}? This action cannot be undone.", + "confirmFreezeDescription": "Player {{name}} will not be able to place bets.", + "confirmFreezeTitle": "Confirm freeze player?", + "confirmUnfreezeDescription": "Player {{name}} will return to normal status.", + "confirmUnfreezeTitle": "Confirm unfreeze player?", + "createAgentAutoHint": "Player will be assigned to your agent: {{name}} ({{code}})", + "createAgentNode": "Agent node", + "createAgentNodePlaceholder": "Select agent node", + "createAgentRequired": "Your account is not bound to an agent node. Sign in with an agent account, or as super admin pick a valid site and agent.", + "createDialogDesc": "Manually register a main-site player to the lottery platform. Usually this is created automatically through SSO login.", + "createDialogTitle": "Create player", + "createFailed": "Failed to create player", + "createPlayer": "Create player", + "createSuccess": "Created player {{name}}", + "createdAt": "Registered at", + "creditLimit": "Credit limit", + "creditSection": "Credit line", + "currency": "Currency", + "defaultCurrency": "Default currency", + "delete": "Delete", + "deleteFailed": "Delete failed", + "deleteSuccess": "Deleted player {{name}}", + "detailSubtitle": "{{site}} · {{sitePlayerId}} · ID {{playerId}}", + "detailTitle": "Player details", + "edit": "Edit", + "editDialogDesc": "Edit player information.", + "editDialogTitle": "Edit player", + "filterAllSites": "All sites", + "filterSite": "Site", + "freeze": "Freeze", + "freezeFailed": "Failed to freeze player", + "freezeSuccess": "Player {{name}} frozen", + "frozen": "Frozen", + "fundingCredit": "Credit line", + "fundingMode": "Funding mode", + "fundingWallet": "Main-site wallet", + "invalidPlayerId": "Invalid player ID", + "lastLogin": "Last login", + "listTitle": "Player list", + "loadFailed": "Failed to load player list", + "nickname": "Nickname", + "nicknamePlaceholderOptional": "Optional", + "noChanges": "No changes", + "pageGuide": "Wallet and credit players in one list; detail tabs adapt to funding_mode.", + "profileSection": "Profile", + "rebateRate": "Rebate", + "refresh": "Refresh", + "riskTags": "Risk tags", "save": "Save", "saving": "Saving…", - "confirmFreezeTitle": "Confirm freeze player?", - "confirmFreezeDescription": "Player {{name}} will not be able to place bets.", - "confirmUnfreezeTitle": "Confirm unfreeze player?", - "confirmUnfreezeDescription": "Player {{name}} will return to normal status.", - "confirmDelete": "Confirm delete", - "confirmDeleteDesc": "Delete player {{name}}? This action cannot be undone." + "scopeAgentLine": "Scope: {{site}} · agent line “{{name}}” and downstream players", + "scopeAllSites": "Scope: all players on all sites (super admin)", + "scopeFilteredSite": "Scope: site {{site}}", + "scopeMultiSite": "Scope: {{count}} bound site(s); use filter to narrow", + "scopeSingleSite": "Scope: site {{site}}", + "search": "Search", + "searchPlaceholder": "Search by player ID / username / nickname", + "site": "Site", + "siteCode": "Site code", + "siteCodePlaceholder": "For example main_site", + "siteCodeRequired": "Enter the site code", + "sitePlayerId": "Site player ID", + "sitePlayerIdLabel": "Site player ID", + "sitePlayerIdPlaceholder": "Unique identifier returned by the main site", + "sitePlayerIdRequired": "Enter the site player ID", + "status": "Status", + "statusBanned": "Banned", + "statusFrozen": "Frozen", + "statusNormal": "Normal", + "tabCreditLedger": "Credit ledger", + "tabOverview": "Overview", + "tabTickets": "Tickets", + "tabTransferOrders": "Transfer orders", + "tabWalletTxns": "Wallet transactions", + "ticketTableHint": "This table shows the player's recent tickets. Use the row action to jump into the main ticket list for full context and troubleshooting.", + "title": "Players", + "txnAmount": "Amount", + "unfreeze": "Unfreeze", + "unfreezeFailed": "Failed to unfreeze player", + "unfreezeSuccess": "Player {{name}} unfrozen", + "updateFailed": "Failed to update player", + "updateSuccess": "Updated {{name}}", + "usedCredit": "Used credit", + "username": "Username", + "usernamePlaceholderOptional": "Optional", + "viewDetail": "View details", + "walletsSection": "Wallets" } diff --git a/src/i18n/locales/ne/adminUsers.json b/src/i18n/locales/ne/adminUsers.json index ccb7316..fcb8cbb 100644 --- a/src/i18n/locales/ne/adminUsers.json +++ b/src/i18n/locales/ne/adminUsers.json @@ -1,210 +1,215 @@ { - "title": "प्रशासक", - "listTitle": "प्रशासक सूची", - "createAdmin": "प्रशासक सिर्जना", - "searchPlaceholder": "प्रयोगकर्ता नाम / उपनाम / इमेलबाट खोज्नुहोस्", - "loadFailed": "प्रशासक सूची लोड असफल भयो", - "nicknameRequired": "उपनाम लेख्नुहोस्", - "newPasswordMin": "नयाँ पासवर्ड कम्तीमा 8 वर्ण हुनुपर्छ", - "roleRequired": "कम्तीमा एउटा भूमिका छान्नुहोस्", - "usernameRequired": "लगइन प्रयोगकर्ता नाम लेख्नुहोस्", - "passwordMin": "पासवर्ड कम्तीमा 8 वर्ण हुनुपर्छ", - "createSuccess": "प्रशासक {{name}} सिर्जना भयो", - "updateSuccess": "{{name}} अपडेट भयो", - "saveAccountFailed": "खाता सुरक्षित गर्न असफल", - "deleteSuccess": "{{name}} मेटाइयो", - "deleteFailed": "मेटाउन असफल", - "roleLoadFailed": "भूमिका सूची लोड असफल भयो", - "roleListTitle": "भूमिका व्यवस्थापन", - "createRole": "भूमिका थप्नुहोस्", - "roleCreateSuccess": "भूमिका {{name}} सिर्जना भयो", - "roleUpdateSuccess": "भूमिका {{name}} अपडेट भयो", - "roleSaveFailed": "भूमिका सुरक्षित गर्न असफल", - "roleDeleteSuccess": "भूमिका {{name}} मेटाइयो", - "roleDeleteFailed": "भूमिका मेटाउन असफल", - "rolePermissionSaveSuccess": "भूमिका अनुमति अद्यावधिक भयो", - "rolePermissionSaveFailed": "भूमिका अनुमति सुरक्षित गर्न असफल", - "roleFormRequired": "भूमिका नाम र slug अनिवार्य छन्", - "allPermissions": "सबै अनुमति", - "saveRoleSuccess": "{{name}} को भूमिका अपडेट भयो", - "saveRoleFailed": "भूमिका सुरक्षित गर्न असफल", - "savePermissionSuccess": "{{name}} को अनुमति अपडेट भयो", - "savePermissionFailed": "अनुमति सुरक्षित गर्न असफल", - "modelGuide": "खाता तहमा भूमिका मात्र बाँधिन्छ; कार्य अनुमति भूमिका व्यवस्थापनमा मिलाउनुहोस्।", - "saving": "सेभ हुँदैछ…", - "deleting": "मेटिँदैछ…", - "common": { - "none": "कुनै छैन" - }, - "table": { - "account": "खाता", - "nickname": "उपनाम", - "status": "स्थिति", - "roles": "भूमिका", - "effective": "प्रभावी", - "actions": "कार्य" - }, - "status": { - "enabled": "सक्रिय", - "disabled": "निष्क्रिय" - }, - "roleType": { - "system": "सिस्टम", - "custom": "अनुकूलित" - }, - "actions": { - "permissions": "भूमिका तोक्नुहोस्", - "edit": "सम्पादन", - "delete": "मेटाउनुहोस्", - "cancel": "रद्द गर्नुहोस्", - "save": "सेभ गर्नुहोस्" - }, - "roleTable": { - "name": "भूमिका", - "slug": "角色 कोड", - "type": "प्रकार", - "status": "स्थिति", - "users": "सम्बन्धित प्रयोगकर्ता", - "permissions": "अनुमति संख्या", - "actions": "कार्य" - }, - "roleActions": { - "permissions": "अनुमति" - }, - "permissionLevels": { - "view": "हेर्नुहोस्", - "node_view": "नोड · हेर्नुहोस्", - "node_manage": "नोड · व्यवस्थापन", - "role_view": "भूमिका · हेर्नुहोस्", - "role_manage": "भूमिका · व्यवस्थापन", - "user_view": "खाता · हेर्नुहोस्", - "user_manage": "खाता · व्यवस्थापन", - "manage": "व्यवस्थापन", - "review": "समीक्षा", - "export": "निर्यात", - "control": "नियन्त्रण", - "config": "कन्फिगर", - "reopen": "पुनःखोल्ने", - "special": "विशेष" - }, - "permissionDialog": { - "title": "भूमिका तोक्नुहोस्", - "rolesTitle": "भूमिका", - "rolesDescription": "यहाँ प्रशासकलाई भूमिका मात्र जोडिन्छ। विस्तृत अनुमति भूमिका व्यवस्थापनमा मिलाउनुहोस्।", - "rolePermissionCount": "{{count}} वटा कार्य अनुमति समावेश", - "selectedRoles": "हाल छनोट गरिएका भूमिका:", - "saveRoles": "भूमिका सेभ गर्नुहोस्" - }, - "rolePermissionDialog": { - "title": "भूमिका अनुमति" - }, - "roleDialog": { - "createTitle": "भूमिका थप्नुहोस्", - "editTitle": "भूमिका सम्पादन", - "description": "भूमिकाले ब्याकएन्ड कार्य अनुमति समेट्छ र पछि प्रशासक खातालाई बाँडिन्छ।", - "slug": "भूमिका कोड", - "slugPlaceholder": "भूमिका चिन्ह प्रविष्ट गर्नुहोस्, जस्तै super_admin", - "name": "भूमिका नाम", - "namePlaceholder": "भूमिका नाम प्रविष्ट गर्नुहोस्", - "descriptionLabel": "भूमिका विवरण", - "descriptionPlaceholder": "भूमिका विवरण प्रविष्ट गर्नुहोस्", - "status": "स्थिति" - }, "accountDialog": { - "createTitle": "प्रशासक सिर्जना", - "editTitle": "खाता सम्पादन", "createDescription": "कम्तीमा एउटा पूर्वनिर्धारित साइट भूमिका तोक्नुपर्छ। लगइन नाममा अक्षर, अंक, डट, अन्डरस्कोर र हाइफन मात्र प्रयोग गर्न सकिन्छ र सेभ भएपछि साना अक्षरमा राखिन्छ।", + "createTitle": "प्रशासक सिर्जना", "editDescription": "लगइन नाम परिवर्तन गर्न मिल्दैन। पासवर्ड खाली छोडेमा परिवर्तन हुँदैन।", - "username": "लगइन नाम", - "usernamePlaceholder": "उदाहरण: ops_admin", - "nickname": "उपनाम", - "nicknamePlaceholder": "देखिने नाम", + "editTitle": "खाता सम्पादन", "emailOptional": "इमेल (वैकल्पिक)", "emailPlaceholder": "नचाहिए खाली छोड्नुहोस्", + "nickname": "उपनाम", + "nicknamePlaceholder": "देखिने नाम", + "noRoles": "अहिले भूमिका डाटा छैन। सूची लोड भएपछि फेरि प्रयास गर्नुहोस्।", "password": "पासवर्ड", "passwordOptional": "पासवर्ड (वैकल्पिक)", "passwordPlaceholderCreate": "कम्तीमा 8 वर्ण", "passwordPlaceholderEdit": "परिवर्तन नगर्न खाली छोड्नुहोस्", - "rolesRequired": "भूमिका (पूर्वनिर्धारित साइट, कम्तीमा एक)", "rolesDescription": "सिर्जना भएपछि \"भूमिका तोक्नुहोस्\" मा गएर भूमिका बाइन्डिङ थप समायोजन गर्न सकिन्छ।", - "noRoles": "अहिले भूमिका डाटा छैन। सूची लोड भएपछि फेरि प्रयास गर्नुहोस्।" + "rolesRequired": "भूमिका (पूर्वनिर्धारित साइट, कम्तीमा एक)", + "site": "बाँधिएको साइट", + "sitePlaceholder": "यो खाताले पहुँच पाउने साइट छान्नुहोस्", + "username": "लगइन नाम", + "usernamePlaceholder": "उदाहरण: ops_admin" }, + "actions": { + "cancel": "रद्द गर्नुहोस्", + "delete": "मेटाउनुहोस्", + "edit": "सम्पादन", + "permissions": "भूमिका तोक्नुहोस्", + "save": "सेभ गर्नुहोस्" + }, + "allPermissions": "सबै अनुमति", + "common": { + "none": "कुनै छैन" + }, + "createAdmin": "प्रशासक सिर्जना", + "createRole": "भूमिका थप्नुहोस्", + "createSuccess": "प्रशासक {{name}} सिर्जना भयो", "delete": { - "currentUserBlocked": "हाल लगइन गरिएको खाता मेटाउन मिल्दैन", - "rowActionTitle": "यो प्रशासक मेटाउनुहोस्", + "confirmDescription": "प्रशासक {{name}} मेटाउने? यो कार्य फिर्ता लिन सकिँदैन।", "confirmTitle": "मेटाउने पुष्टि", - "confirmDescription": "प्रशासक {{name}} मेटाउने? यो कार्य फिर्ता लिन सकिँदैन।" + "currentUserBlocked": "हाल लगइन गरिएको खाता मेटाउन मिल्दैन", + "rowActionTitle": "यो प्रशासक मेटाउनुहोस्" }, - "roleDelete": { - "confirmTitle": "भूमिका मेटाउने पुष्टि", - "confirmDescription": "भूमिका {{name}} मेटाउने?" + "deleteFailed": "मेटाउन असफल", + "deleteSuccess": "{{name}} मेटाइयो", + "deleting": "मेटिँदैछ…", + "listTitle": "प्रशासक सूची", + "loadFailed": "प्रशासक सूची लोड असफल भयो", + "modelGuide": "खाता तहमा भूमिका मात्र बाँधिन्छ; कार्य अनुमति भूमिका व्यवस्थापनमा मिलाउनुहोस्।", + "newPasswordMin": "नयाँ पासवर्ड कम्तीमा 8 वर्ण हुनुपर्छ", + "nicknameRequired": "उपनाम लेख्नुहोस्", + "passwordMin": "पासवर्ड कम्तीमा 8 वर्ण हुनुपर्छ", + "permissionDialog": { + "rolePermissionCount": "{{count}} वटा कार्य अनुमति समावेश", + "rolesDescription": "यहाँ प्रशासकलाई भूमिका मात्र जोडिन्छ। विस्तृत अनुमति भूमिका व्यवस्थापनमा मिलाउनुहोस्।", + "rolesTitle": "भूमिका", + "saveRoles": "भूमिका सेभ गर्नुहोस्", + "selectedRoles": "हाल छनोट गरिएका भूमिका:", + "site": "साइट", + "title": "भूमिका तोक्नुहोस्" }, "permissionGroups": { - "all": "सबै अनुमति", - "dashboard": "ड्यासबोर्ड", - "admin_users": "प्रशासक सूची", "admin_roles": "भूमिका व्यवस्थापन", + "admin_users": "प्रशासक सूची", "agents": "एजेन्ट व्यवस्थापन", - "players": "खेलाडी सूची", - "currencies": "मुद्रा व्यवस्थापन", - "wallet": "वालेट", - "draws": "ड्रअ सूची", + "all": "सबै अनुमति", + "audit": "अडिट लग", "config": "कन्फिगरेसन", - "rules_plays": "प्ले नियम", - "rules_odds": "ओड्स र रिबेट", - "risk_cap": "जोखिम सीमा नियम", - "risk": "जोखिम", - "settlement": "सेटलमेन्ट", + "currencies": "मुद्रा व्यवस्थापन", + "dashboard": "ड्यासबोर्ड", + "draws": "ड्रअ सूची", + "integration": "इन्टिग्रेशन साइटहरू", "jackpot": "ज्याकपोट", + "players": "खेलाडी सूची", "reconcile": "मिलान", "reports": "रिपोर्टहरू", - "tickets": "टिकटहरू", - "audit": "अडिट लग", + "risk": "जोखिम", + "risk_cap": "जोखिम सीमा नियम", + "rules_odds": "ओड्स र रिबेट", + "rules_plays": "प्ले नियम", "settings": "सेटिङ", - "integration": "इन्टिग्रेशन साइटहरू" + "settlement": "सेटलमेन्ट", + "tickets": "टिकटहरू", + "wallet": "वालेट" + }, + "permissionLevels": { + "config": "कन्फिगर", + "control": "नियन्त्रण", + "export": "निर्यात", + "manage": "व्यवस्थापन", + "node_manage": "नोड · व्यवस्थापन", + "node_view": "नोड · हेर्नुहोस्", + "reopen": "पुनःखोल्ने", + "review": "समीक्षा", + "role_manage": "भूमिका · व्यवस्थापन", + "role_view": "भूमिका · हेर्नुहोस्", + "special": "विशेष", + "user_manage": "खाता · व्यवस्थापन", + "user_view": "खाता · हेर्नुहोस्", + "view": "हेर्नुहोस्" }, "permissionNames": { - "prd.dashboard.view": "ड्यासबोर्ड · हेर्नुहोस्", - "prd.agent.view": "एजेन्ट व्यवस्थापन · हेर्नुहोस्", - "prd.agent.manage": "एजेन्ट व्यवस्थापन · व्यवस्थापन", - "prd.agent.role.view": "एजेन्ट भूमिका · हेर्नुहोस्", - "prd.agent.role.manage": "एजेन्ट भूमिका · व्यवस्थापन", - "prd.agent.user.view": "एजेन्ट खाता · हेर्नुहोस्", - "prd.agent.user.manage": "एजेन्ट खाता · व्यवस्थापन", - "prd.admin_user.manage": "प्रशासक सूची · व्यवस्थापन", "prd.admin_role.manage": "भूमिका व्यवस्थापन · व्यवस्थापन", - "prd.integration.view": "इन्टिग्रेशन साइट · हेर्नुहोस्", - "prd.integration.manage": "इन्टिग्रेशन साइट · व्यवस्थापन", - "prd.users.manage": "खेलाडी व्यवस्थापन · व्यवस्थापन", + "prd.admin_user.manage": "प्रशासक सूची · व्यवस्थापन", + "prd.agent.manage": "एजेन्ट व्यवस्थापन · व्यवस्थापन", + "prd.agent.role.manage": "एजेन्ट भूमिका · व्यवस्थापन", + "prd.agent.role.view": "एजेन्ट भूमिका · हेर्नुहोस्", + "prd.agent.user.manage": "एजेन्ट खाता · व्यवस्थापन", + "prd.agent.user.view": "एजेन्ट खाता · हेर्नुहोस्", + "prd.agent.view": "एजेन्ट व्यवस्थापन · हेर्नुहोस्", + "prd.audit.view": "अडिट लग · हेर्नुहोस्", "prd.currency.manage": "मुद्रा व्यवस्थापन · व्यवस्थापन", - "prd.users.view_finance": "खेलाडी व्यवस्थापन · वित्त हेर्नुहोस्", - "prd.users.view_cs": "खेलाडी व्यवस्थापन · ग्राहक सेवा एकल प्रयोगकर्ता", - "prd.player_freeze.manage": "खेलाडी रोक्ने/फुकाउने · व्यवस्थापन", - "prd.wallet_reconcile.manage": "वालेट मिलान · व्यवस्थापन", - "prd.wallet_reconcile.view": "वालेट मिलान · हेर्नुहोस्", - "prd.wallet_reconcile.view_cs": "वालेट मिलान · ग्राहक सेवा दृश्य", - "prd.wallet_adjust.manage": "समायोजन/रिभर्सल · व्यवस्थापन", + "prd.dashboard.view": "ड्यासबोर्ड · हेर्नुहोस्", + "prd.draw_reopen.manage": "ड्रअ पुनःखोल्ने · व्यवस्थापन", "prd.draw_result.manage": "ड्रअ परिणाम प्रविष्टि · व्यवस्थापन", "prd.draw_result.view": "ड्रअ परिणाम · हेर्नुहोस्", - "prd.draw_reopen.manage": "ड्रअ पुनःखोल्ने · व्यवस्थापन", - "prd.play_switch.manage": "प्ले स्विच · व्यवस्थापन", + "prd.integration.manage": "इन्टिग्रेशन साइट · व्यवस्थापन", + "prd.integration.view": "इन्टिग्रेशन साइट · हेर्नुहोस्", + "prd.jackpot.manage": "ज्याकपोट कन्फिगरेसन · व्यवस्थापन", + "prd.jackpot.manual_burst": "ज्याकपोट म्यानुअल बर्स्ट · सुपर एडमिन मात्र", + "prd.jackpot.view": "ज्याकपोट कन्फिगरेसन · हेर्नुहोस्", "prd.odds.manage": "ओड्स कन्फिगरेसन · व्यवस्थापन", "prd.odds.view": "ओड्स कन्फिगरेसन · हेर्नुहोस्", - "prd.risk_cap.manage": "जोखिम सीमा · व्यवस्थापन", - "prd.risk_cap.view": "जोखिम सीमा · हेर्नुहोस्", - "prd.rebate.manage": "कमिसन/रिबेट · व्यवस्थापन", - "prd.rebate.view": "कमिसन/रिबेट · हेर्नुहोस्", - "prd.jackpot.manage": "ज्याकपोट कन्फिगरेसन · व्यवस्थापन", - "prd.jackpot.view": "ज्याकपोट कन्फिगरेसन · हेर्नुहोस्", - "prd.jackpot.manual_burst": "ज्याकपोट म्यानुअल बर्स्ट · सुपर एडमिन मात्र", "prd.payout.manage": "भुक्तानी पुष्टि · व्यवस्थापन", "prd.payout.review": "भुक्तानी पुष्टि · समीक्षा", "prd.payout.view": "भुक्तानी पुष्टि · हेर्नुहोस्", - "prd.tickets.view": "खेलाडी टिकट · हेर्नुहोस्", - "prd.audit.view": "अडिट लग · हेर्नुहोस्", - "prd.report.view": "रिपोर्ट · हेर्नुहोस्", + "prd.play_switch.manage": "प्ले स्विच · व्यवस्थापन", + "prd.player_freeze.manage": "खेलाडी रोक्ने/फुकाउने · व्यवस्थापन", + "prd.rebate.manage": "कमिसन/रिबेट · व्यवस्थापन", + "prd.rebate.view": "कमिसन/रिबेट · हेर्नुहोस्", "prd.report.export": "रिपोर्ट · निर्यात", + "prd.report.view": "रिपोर्ट · हेर्नुहोस्", + "prd.risk.manage": "जोखिम केन्द्र · व्यवस्थापन", "prd.risk.view": "जोखिम केन्द्र · हेर्नुहोस्", - "prd.risk.manage": "जोखिम केन्द्र · व्यवस्थापन" - } + "prd.risk_cap.manage": "जोखिम सीमा · व्यवस्थापन", + "prd.risk_cap.view": "जोखिम सीमा · हेर्नुहोस्", + "prd.tickets.view": "खेलाडी टिकट · हेर्नुहोस्", + "prd.users.manage": "खेलाडी व्यवस्थापन · व्यवस्थापन", + "prd.users.view_cs": "खेलाडी व्यवस्थापन · ग्राहक सेवा एकल प्रयोगकर्ता", + "prd.users.view_finance": "खेलाडी व्यवस्थापन · वित्त हेर्नुहोस्", + "prd.wallet_adjust.manage": "समायोजन/रिभर्सल · व्यवस्थापन", + "prd.wallet_reconcile.manage": "वालेट मिलान · व्यवस्थापन", + "prd.wallet_reconcile.view": "वालेट मिलान · हेर्नुहोस्", + "prd.wallet_reconcile.view_cs": "वालेट मिलान · ग्राहक सेवा दृश्य" + }, + "roleActions": { + "permissions": "अनुमति" + }, + "roleCreateSuccess": "भूमिका {{name}} सिर्जना भयो", + "roleDelete": { + "confirmDescription": "भूमिका {{name}} मेटाउने?", + "confirmTitle": "भूमिका मेटाउने पुष्टि" + }, + "roleDeleteFailed": "भूमिका मेटाउन असफल", + "roleDeleteSuccess": "भूमिका {{name}} मेटाइयो", + "roleDialog": { + "createTitle": "भूमिका थप्नुहोस्", + "description": "भूमिकाले ब्याकएन्ड कार्य अनुमति समेट्छ र पछि प्रशासक खातालाई बाँडिन्छ।", + "descriptionLabel": "भूमिका विवरण", + "descriptionPlaceholder": "भूमिका विवरण प्रविष्ट गर्नुहोस्", + "editTitle": "भूमिका सम्पादन", + "name": "भूमिका नाम", + "namePlaceholder": "भूमिका नाम प्रविष्ट गर्नुहोस्", + "slug": "भूमिका कोड", + "slugPlaceholder": "भूमिका चिन्ह प्रविष्ट गर्नुहोस्, जस्तै super_admin", + "status": "स्थिति" + }, + "roleFormRequired": "भूमिका नाम र slug अनिवार्य छन्", + "roleListTitle": "भूमिका व्यवस्थापन", + "roleLoadFailed": "भूमिका सूची लोड असफल भयो", + "rolePermissionDialog": { + "title": "भूमिका अनुमति" + }, + "rolePermissionSaveFailed": "भूमिका अनुमति सुरक्षित गर्न असफल", + "rolePermissionSaveSuccess": "भूमिका अनुमति अद्यावधिक भयो", + "roleRequired": "कम्तीमा एउटा भूमिका छान्नुहोस्", + "roleSaveFailed": "भूमिका सुरक्षित गर्न असफल", + "roleTable": { + "actions": "कार्य", + "name": "भूमिका", + "permissions": "अनुमति संख्या", + "slug": "角色 कोड", + "status": "स्थिति", + "type": "प्रकार", + "users": "सम्बन्धित प्रयोगकर्ता" + }, + "roleType": { + "custom": "अनुकूलित", + "system": "सिस्टम" + }, + "roleUpdateSuccess": "भूमिका {{name}} अपडेट भयो", + "saveAccountFailed": "खाता सुरक्षित गर्न असफल", + "savePermissionFailed": "अनुमति सुरक्षित गर्न असफल", + "savePermissionSuccess": "{{name}} को अनुमति अपडेट भयो", + "saveRoleFailed": "भूमिका सुरक्षित गर्न असफल", + "saveRoleSuccess": "{{name}} को भूमिका अपडेट भयो", + "saving": "सेभ हुँदैछ…", + "searchPlaceholder": "प्रयोगकर्ता नाम / उपनाम / इमेलबाट खोज्नुहोस्", + "siteRequired": "साइट छान्नुहोस्", + "status": { + "disabled": "निष्क्रिय", + "enabled": "सक्रिय" + }, + "table": { + "account": "खाता", + "actions": "कार्य", + "effective": "प्रभावी", + "nickname": "उपनाम", + "roles": "भूमिका", + "sites": "बाँधिएका साइटहरू", + "status": "स्थिति" + }, + "title": "प्रशासक", + "updateSuccess": "{{name}} अपडेट भयो", + "usernameRequired": "लगइन प्रयोगकर्ता नाम लेख्नुहोस्" } diff --git a/src/i18n/locales/ne/agents.json b/src/i18n/locales/ne/agents.json index da7d7ba..4be5b55 100644 --- a/src/i18n/locales/ne/agents.json +++ b/src/i18n/locales/ne/agents.json @@ -1,177 +1,250 @@ { - "title": "एजेन्ट लाइन", - "listTitle": "एजेन्ट सूची", - "sitesListHint": "कुञ्जी र कलब्याकको लागि", - "sitesListLink": "कन्फिग · साइट", - "subnav": { - "label": "एजेन्ट लाइन नेभ", - "noPermission": "अनुमति छैन", - "operations": "सञ्चालन", - "provision": "प्रथम-स्तर एजेन्ट सिर्जना", - "settlementBills": "एजेन्ट बिल" - }, - "tabs": { - "subordinates": "अधीनस्थ व्यवस्थापन", - "accounts": "मुख्य खाता", - "players": "प्लेयर व्यवस्थापन", - "overview": "Overview", - "roles": "Roles", - "users": "Accounts", - "delegation": "Delegation ceiling" - }, - "filterParent": "माथिल्लो एजेन्ट", - "filterParentAll": "सबै अधीनस्थ", - "listFlatHint": "सबै सञ्चालन एजेन्ट सूचीमा; अधीनस्थ थप्न पङ्क्ति मेनु प्रयोग गर्नुहोस्।", "addChildNeedParent": "अधीनस्थ थप्न पहिले माथिल्लो एजेन्ट छान्नुहोस्", - "includeRoots": "रुट नोड समावेश गर्नुहोस्", - "includeRootsHint": "रुट नोडले साइट सिमाना जनाउँछ, त्यसैले सामान्यतया सञ्चालन एजेन्ट गणनामा समावेश हुँदैन।", - "directoryStatus": { - "all": "सबै स्थिति", - "enabled": "सक्रिय मात्र", - "disabled": "निष्क्रिय मात्र" - }, - "treeTitle": "Agent tree", - "detailTitle": "Node details", - "selectNode": "Select an agent node from the tree", - "loadFailed": "Failed to load agent tree", - "lineFilter": "प्रथम-स्तर एजेन्ट", + "bindAccountHint": "No login account is bound yet. Saving will create one.", + "bindAccountPasswordRequired": "This agent has no login account yet. Enter an initial password.", + "childrenCount": "प्रत्यक्ष अधीनस्थ", + "code": "Code", + "codeRequired": "Code and name are required", "createChild": "Add child agent", - "viewDownline": "चाइल्ड एजेन्ट र खेलाडी हेर्नुहोस्", - "downlineDialogTitle": "{{name}} — चाइल्ड एजेन्ट र खेलाडी", - "downlineAgentsSection": "चाइल्ड एजेन्ट", - "downlinePlayersSection": "प्रत्यक्ष खेलाडी", - "downlineNoAgents": "कुनै चाइल्ड एजेन्ट छैन", - "editNode": "Edit node", - "deleteNode": "Delete node", - "deleteNodeConfirm": "This action cannot be undone. Make sure the node has no children, users, or roles.", - "deleteNodeBlockedHint": "पहिले चाइल्ड एजेन्ट, भूमिका र खाता हटाउनुहोस्", - "deleteNodeBlockedPrefix": "अहिले मेटाउन मिल्दैन: ", + "createSuccess": "Created agent {{name}}", + "delegation": { + "canDelegate": "May delegate further", + "empty": "No actions available", + "hint": "Select actions this child agent may grant to subordinates.", + "permission": "Action", + "rootDenied": "Root nodes do not use delegation ceilings", + "save": "Save ceiling", + "saveSuccess": "Delegation ceiling saved", + "title": "Delegation ceiling" + }, "deleteBlocked": { "children": "{{count}} वटा चाइल्ड एजेन्ट बाँकी", "roles": "{{count}} वटा भूमिका पहिले हटाउनुहोस्", "users": "{{count}} वटा खाता बाँकी" }, - "code": "Code", - "name": "Name", - "namePlaceholder": "एजेन्ट नाम प्रविष्ट गर्नुहोस्", - "depth": "Depth", - "path": "Path", - "status": "Status", - "isRoot": "Root", - "createSuccess": "Created agent {{name}}", - "updateSuccess": "Updated {{name}}", + "deleteNode": "Delete node", + "deleteNodeBlockedHint": "पहिले चाइल्ड एजेन्ट, भूमिका र खाता हटाउनुहोस्", + "deleteNodeBlockedPrefix": "अहिले मेटाउन मिल्दैन: ", + "deleteNodeConfirm": "This action cannot be undone. Make sure the node has no children, users, or roles.", "deleteSuccess": "Deleted agent {{name}}", - "saveFailed": "Save failed", - "codeRequired": "Code and name are required", - "nameRequired": "Agent name is required", - "usernameRequired": "Login name is required", - "passwordRequired": "Password is required", - "passwordMinLength": "Password must be at least 8 characters", - "bindAccountPasswordRequired": "This agent has no login account yet. Enter an initial password.", - "bindAccountHint": "No login account is bound yet. Saving will create one.", - "modelGuide": "एजेन्ट तहले डाटा स्कोप र delegation ceiling नियन्त्रण गर्छ; खाताको अनुमति भूमिका मार्फत बाँडिन्छ।", - "pageGuide": "यहाँ एजेन्ट ट्री, एजेन्ट भूमिका, एजेन्ट खाता र delegation ceiling व्यवस्थापन गरिन्छ। प्लेटफर्म खाता र प्लेटफर्म भूमिका अलग पृष्ठमा राखिन्छ।", - "summary": { - "currentSiteNodes": "हालको साइट नोड संख्या", - "currentSiteAgents": "हालको साइट सञ्चालन एजेन्ट", - "visibleList": "हालको सूची पंक्ति", - "visibleAgents": "हाल देखिने सञ्चालन एजेन्ट", - "globalNodes": "सबै साइट नोड कुल", - "globalAgents": "सबै साइट सञ्चालन एजेन्ट", - "enabledAgents": "सक्रिय सञ्चालन एजेन्ट", - "rootNodes": "रुट नोड संख्या" - }, - "profile": { - "section": "शेयर र क्रेडिट", - "totalShareRate": "शेयर दर (%)", - "creditLimit": "क्रेडिट सीमा", - "rebateLimit": "रिबेट सीमा", - "defaultPlayerRebate": "प्लेयर पूर्वनिर्धारित रिबेट", - "settlementCycle": "सेटलमेन्ट चक्र", - "canGrantExtraRebate": "अतिरिक्त रिबेट अनुमति", - "canCreatePlayer": "प्लेयर सिर्जना अनुमति", - "canCreateChildAgent": "अधीनस्थ एजेन्ट सिर्जना अनुमति", - "cycleDaily": "दैनिक", - "cycleWeekly": "साप्ताहिक", - "cycleMonthly": "मासिक", - "loading": "Loading share and credit settings…", - "loadFailed": "Failed to load share and credit settings.", - "loadingBlocked": "Share and credit settings are still loading.", - "validation": { - "shareRange": "Share rate must be between 0 and 100", - "creditInvalid": "Credit limit cannot be negative", - "rebateLimitRange": "Rebate ceiling must be between 0 and 1", - "defaultRebateRange": "Default player rebate must be between 0 and 1", - "defaultExceedsLimit": "Default player rebate cannot exceed the rebate ceiling" - } - }, - "settlementBills": { - "title": "एजेन्ट बिल", - "description": "अवधि बन्द पछि बनेका प्लेयर/एजेन्ट बिल", - "columns": { - "id": "ID", - "type": "प्रकार", - "net": "नेट", - "unpaid": "बाँकी", - "status": "स्थिति" - } + "depth": "Depth", + "detailTitle": "Node details", + "directoryStatus": { + "all": "सबै स्थिति", + "disabled": "निष्क्रिय मात्र", + "enabled": "सक्रिय मात्र" }, + "downlineAgentsSection": "चाइल्ड एजेन्ट", + "downlineDialogTitle": "{{name}} — चाइल्ड एजेन्ट र खेलाडी", + "downlineNoAgents": "कुनै चाइल्ड एजेन्ट छैन", + "downlinePlayersSection": "प्रत्यक्ष खेलाडी", + "editNode": "Edit node", + "filterParent": "माथिल्लो एजेन्ट", + "filterParentAll": "सबै अधीनस्थ", + "includeRoots": "रुट नोड समावेश गर्नुहोस्", + "includeRootsHint": "रुट नोडले साइट सिमाना जनाउँछ, त्यसैले सामान्यतया सञ्चालन एजेन्ट गणनामा समावेश हुँदैन।", + "isRoot": "Root", + "lineFilter": "प्रथम-स्तर एजेन्ट", "lineProvision": { - "title": "प्रथम-स्तर एजेन्ट सिर्जना", - "description": "एकै चरणमा प्रथम-स्तर एजेन्ट, खाता र लाइन सेटिङ। कोड पछि बदल्न मिल्दैन।", "code": "एजेन्ट कोड", + "description": "एकै चरणमा प्रथम-स्तर एजेन्ट, खाता र लाइन सेटिङ। कोड पछि बदल्न मिल्दैन।", + "link": "प्रथम-स्तर एजेन्ट सिर्जना", "name": "एजेन्ट नाम", - "username": "एडमिन लगइन", "password": "प्रारम्भिक पासवर्ड", - "walletUrl": "वालेट API URL (वैकल्पिक)", + "secretsOnce": "कुञ्जी एक पटक मात्र देखाइन्छ", "submit": "सिर्जना गर्नुहोस्", "success": "प्रथम-स्तर एजेन्ट सिर्जना भयो", - "secretsOnce": "कुञ्जी एक पटक मात्र देखाइन्छ", - "link": "प्रथम-स्तर एजेन्ट सिर्जना" + "title": "प्रथम-स्तर एजेन्ट सिर्जना", + "username": "एडमिन लगइन", + "walletUrl": "वालेट API URL (वैकल्पिक)" }, + "lineUi": { + "agentCount": "यो समूहमा {{count}} एजेन्ट", + "allocatedCredit": "बाँडिएको", + "availableCredit": "उपलब्ध", + "currentSite": "साइट", + "directChildren": "प्रत्यक्ष अधीनस्थ {{count}}", + "downlineEmptyTitle": "अहिले प्रत्यक्ष अधीनस्थ छैन", + "editAccount": "खाता र स्थिति", + "kicker": "क्रेडिट शेयर · एजेन्ट ट्री", + "noDelegatedTabs": "यो एजेन्टले अधीनस्थ एजेन्ट वा खेलाडी सिर्जना गर्न सक्दैन; शेयर र क्रेडिट मात्र लागू हुन्छ।", + "overviewDownlineCard": "प्रत्यक्ष अधीनस्थ एजेन्ट हेर्नुहोस् र व्यवस्थापन गर्नुहोस्", + "overviewDownlineCount": "{{count}}", + "overviewPlayersHint": "प्रत्यक्ष खेलाडी र क्रेडिट स्थिति हेर्नुहोस्", + "overviewPlayersSummary": "खेलाडी व्यवस्थापन", + "profileFootnote": "रिबेट सीमा {{rebate}}% · पूर्वनिर्धारित {{defaultRebate}}%", + "saveProfile": "शेयर र क्रेडिट बचत", + "searchPlaceholder": "नाम वा लगइन खोज्नुहोस्", + "selectAgent": "शेयर र क्रेडिट हेर्न एजेन्ट छान्नुहोस्", + "selectAgentHint": "सेटलमेन्ट सीमा एजेन्ट ट्री अनुसार; शेयर, क्रेडिट र रिबेट प्रति नोड कन्फिग गरिन्छ।", + "shareRebateCap": "रिबेट सीमा {{rate}}%", + "tabDownline": "अधीनस्थ", + "tabOverview": "अवलोकन", + "tabPlayers": "खेलाडी", + "tabProfile": "शेयर र क्रेडिट", + "tabProfileReadOnly": "शेयर र क्रेडिट (पढ्न मात्र)", + "viewAll": "सबै हेर्नुहोस्" + }, + "listFlatHint": "सबै सञ्चालन एजेन्ट सूचीमा; अधीनस्थ थप्न पङ्क्ति मेनु प्रयोग गर्नुहोस्।", + "listSearch": "नाम / कोड / लगइन खोज्नुहोस्", + "listTitle": "एजेन्ट सूची", + "loadFailed": "Failed to load agent tree", + "modelGuide": "एजेन्ट तहले डाटा स्कोप र delegation ceiling नियन्त्रण गर्छ; खाताको अनुमति भूमिका मार्फत बाँडिन्छ।", + "name": "Name", + "namePlaceholder": "एजेन्ट नाम प्रविष्ट गर्नुहोस्", + "nameRequired": "Agent name is required", "noAccess": "एजेन्ट सञ्चालन अनुमति छैन। प्रशासकलाई सम्पर्क गर्नुहोस्।", + "pageGuide": "यहाँ एजेन्ट ट्री, एजेन्ट भूमिका, एजेन्ट खाता र delegation ceiling व्यवस्थापन गरिन्छ। प्लेटफर्म खाता र प्लेटफर्म भूमिका अलग पृष्ठमा राखिन्छ।", + "parentAgent": "माथिल्लो", + "passwordMinLength": "Password must be at least 8 characters", + "passwordOptionalHint": "परिवर्तन नगर्ने भए खाली छोड्नुहोस्, परिवर्तन गर्न ८-अक्षरको पासवर्ड प्रविष्ट गर्नुहोस्", + "passwordPlaceholder": "८-अक्षरको पासवर्ड प्रविष्ट गर्नुहोस्", + "passwordRequired": "Password is required", + "path": "Path", "playersPanel": { - "create": "प्लेयर सिर्जना", - "scopedTo": "प्रत्यक्ष प्लेयर: {{agent}}", "allUnderSite": "हालको साइटका प्लेयर", - "filterHint": "माथिल्लो एजेन्ट अनुसार प्लेयर हेर्नुहोस्।" + "availableToGrant": "एजेन्टले दिन सक्ने: {{amount}}", + "create": "प्लेयर सिर्जना", + "createSuccessNative": "खेलाडी {{name}} सिर्जना भयो — लटरी /login प्रयोग गर्नुहोस्", + "creditLimit": "क्रेडिट सीमा", + "externalIdHint": "स्वतः सिर्जनाका लागि खाली राख्नुहोस्", + "externalIdOptional": "बाह्य ID (वैकल्पिक)", + "filterHint": "माथिल्लो एजेन्ट अनुसार प्लेयर हेर्नुहोस्।", + "initialPassword": "प्रारम्भिक पासवर्ड", + "loginRequired": "लगइन प्रयोगकर्ता नाम र प्रारम्भिक पासवर्ड प्रविष्ट गर्नुहोस्", + "loginUsername": "लगइन प्रयोगकर्ता नाम", + "rebateRate": "रिबेट दर (%)", + "rebateRateHint": "प्रतिशत लेख्नुहोस्, जस्तै 5 = 5%", + "riskTags": "जोखिम ट्याग", + "riskTagsPlaceholder": "अल्पविरामले छुट्याउनुहोस्", + "scopedTo": "प्रत्यक्ष प्लेयर: {{agent}}" }, - "delegation": { - "title": "Delegation ceiling", - "hint": "Select actions this child agent may grant to subordinates.", - "permission": "Action", - "canDelegate": "May delegate further", - "save": "Save ceiling", - "saveSuccess": "Delegation ceiling saved", - "empty": "No actions available", - "rootDenied": "Root nodes do not use delegation ceilings" + "profile": { + "canCreateChildAgent": "अधीनस्थ एजेन्ट सिर्जना अनुमति", + "canCreatePlayer": "प्लेयर सिर्जना अनुमति", + "canGrantExtraRebate": "अतिरिक्त रिबेट अनुमति", + "creditLimit": "क्रेडिट सीमा", + "cycleDaily": "दैनिक", + "cycleMonthly": "मासिक", + "cycleWeekly": "साप्ताहिक", + "defaultPlayerRebate": "प्लेयर पूर्वनिर्धारित रिबेट", + "loadFailed": "Failed to load share and credit settings.", + "loading": "Loading share and credit settings…", + "loadingBlocked": "Share and credit settings are still loading.", + "rebateLimit": "रिबेट सीमा", + "section": "शेयर र क्रेडिट", + "settlementCycle": "सेटलमेन्ट चक्र", + "totalShareRate": "शेयर दर (%)", + "validation": { + "creditBelowAllocated": "क्रेडिट सीमा बाँडिएको क्रेडिभन्दा कम हुन सक्दैन (न्यूनतम {{min}})", + "creditExceedsParentWithMax": "क्रेडिट सीमा {{max}} भन्दा बढी हुन सक्दैन", + "creditInvalid": "Credit limit cannot be negative", + "defaultExceedsLimit": "Default player rebate cannot exceed the rebate ceiling", + "defaultRebateRange": "Default player rebate must be between 0 and 1", + "rebateLimitRange": "Rebate ceiling must be between 0 and 1", + "shareRange": "Share rate must be between 0 and 100" + } }, "roles": { - "title": "Agent roles", "create": "Create role", - "permissions": "Permissions", - "slug": "Slug", - "userCount": "Users", "createSuccess": "Created role {{name}}", - "updateSuccess": "Updated role {{name}}", "deleteSuccess": "Deleted role {{name}}", - "permissionSaveSuccess": "Permissions updated", - "readOnlyTemplate": "Read-only template", "inUse": "{{count}} प्रयोगमा", - "permissionSubsetHint": "Only permissions you hold can be assigned" + "permissionSaveSuccess": "Permissions updated", + "permissionSubsetHint": "Only permissions you hold can be assigned", + "permissions": "Permissions", + "readOnlyTemplate": "Read-only template", + "slug": "Slug", + "title": "Agent roles", + "updateSuccess": "Updated role {{name}}", + "userCount": "Users" }, - "users": { - "title": "Agent accounts", - "create": "Create account", - "username": "Username", - "password": "Password", + "saveFailed": "Save failed", + "selectNode": "Select an agent node from the tree", + "settlementBills": { + "allPeriods": "सबै अवधि", + "columns": { + "id": "ID", + "net": "नेट", + "period": "अवधि", + "status": "स्थिति", + "type": "प्रकार", + "unpaid": "बाँकी" + }, + "description": "अवधि बन्द पछि बनेका प्लेयर/एजेन्ट बिल", + "emptyNoClosed": "बन्द अवधि छैन। बिल बन्द पछि सिर्जना हुन्छ।", + "emptyNoPeriodsAgent": "अहिले बिल छैन। तपाईंको माथिल्लो वा प्लेटफर्मले अवधि बन्द गर्छ; मिति प्रविष्ट गर्नु पर्दैन।", + "emptyNoPeriodsManage": "अहिले अवधि वा बिल छैन। अवधि व्यवस्थापनमा छिटो प्रिसेट प्रयोग गर्नुहोस्, त्यसपछि अवधि बन्द गर्नुहोस्।", + "filteredByPeriodRange": "{{range}} का बिलहरू", + "periodLabel": "अवधि", + "periodPlaceholder": "अवधि छान्नुहोस्", + "title": "एजेन्ट बिल", + "typeAgent": "एजेन्ट बिल", + "typePlayer": "खेलाडी बिल" + }, + "settlementPeriods": { + "datesRequired": "सुरु र अन्त्य मिति प्रविष्ट गर्नुहोस्", + "endDate": "अन्त्य मिति", + "invalidRange": "अन्त्य मिति सुरु मितिभन्दा अगाडि हुन सक्दैन", + "manageHint": "यहाँ अवधि खोल्नुहोस् र बन्द गर्नुहोस्; माथिका बिल स्वतः अद्यावधिक हुन्छ। छिटो प्रिसेट सामान्यतया पर्याप्त।", + "manageTitle": "अवधि व्यवस्थापन", + "open": "अवधि खोल्नुहोस्", + "openFailed": "अवधि खोल्न असफल", + "openHint": "स्थानीय मिति ({{tz}})", + "presetLastWeek": "गत हप्ता", + "presetThisMonth": "यो महिना", + "presetThisWeek": "यो हप्ता", + "startDate": "सुरु मिति", + "statusClosed": "बन्द", + "statusOpen": "खुला" + }, + "siteSearch": "साइट नाम खोज्नुहोस्", + "sitesListHint": "कुञ्जी र कलब्याकको लागि", + "sitesListLink": "कन्फिग · साइट", + "status": "Status", + "subnav": { + "label": "एजेन्ट लाइन नेभ", + "noPermission": "अनुमति छैन", + "operations": "सञ्चालन", + "provision": "प्रथम-स्तर एजेन्ट सिर्जना", + "provisionHint": "एक पटकको अनबोर्डिङ; दैनिक कामका लागि लाइन र एजेन्ट ट्री प्रयोग गर्नुहोस्", + "settlementBills": "एजेन्ट बिल" + }, + "summary": { + "currentSiteAgents": "हालको साइट सञ्चालन एजेन्ट", + "currentSiteNodes": "हालको साइट नोड संख्या", + "enabledAgents": "सक्रिय सञ्चालन एजेन्ट", + "globalAgents": "सबै साइट सञ्चालन एजेन्ट", + "globalNodes": "सबै साइट नोड कुल", + "rootNodes": "रुट नोड संख्या", + "visibleAgents": "हाल देखिने सञ्चालन एजेन्ट", + "visibleList": "हालको सूची पंक्ति" + }, + "tabs": { + "accounts": "मुख्य खाता", + "delegation": "Delegation ceiling", + "overview": "Overview", + "players": "प्लेयर व्यवस्थापन", "roles": "Roles", - "createSuccess": "Created account {{name}}", - "roleSaveSuccess": "Roles updated for {{name}}", - "deleteConfirm": "यो खाता अब लगइन गर्न सक्दैन।", - "deleteSuccess": "खाता {{name}} मेटियो" + "subordinates": "अधीनस्थ व्यवस्थापन", + "users": "Accounts" }, + "title": "एजेन्ट लाइन", + "treeTitle": "Agent tree", + "updateSuccess": "Updated {{name}}", "usernamePlaceholder": "लगइन नाम प्रविष्ट गर्नुहोस्", - "passwordPlaceholder": "८-अक्षरको पासवर्ड प्रविष्ट गर्नुहोस्", - "passwordOptionalHint": "परिवर्तन नगर्ने भए खाली छोड्नुहोस्, परिवर्तन गर्न ८-अक्षरको पासवर्ड प्रविष्ट गर्नुहोस्" + "usernameRequired": "Login name is required", + "users": { + "create": "Create account", + "createSuccess": "Created account {{name}}", + "deleteConfirm": "यो खाता अब लगइन गर्न सक्दैन।", + "deleteSuccess": "खाता {{name}} मेटियो", + "email": "इमेल", + "password": "Password", + "roleSaveSuccess": "Roles updated for {{name}}", + "roles": "Roles", + "title": "Agent accounts", + "username": "Username" + }, + "viewDownline": "चाइल्ड एजेन्ट र खेलाडी हेर्नुहोस्" } diff --git a/src/i18n/locales/ne/common.json b/src/i18n/locales/ne/common.json index 6cc138b..45acb30 100644 --- a/src/i18n/locales/ne/common.json +++ b/src/i18n/locales/ne/common.json @@ -1,186 +1,41 @@ { - "language": { - "en": "English", - "ne": "नेपाली", - "zh": "中文", - "title": "इन्टरफेस भाषा", - "changed": "भाषा {{language}} मा परिवर्तन भयो" - }, - "app": { - "title": "Lottery Admin" - }, - "actions": { - "refresh": "रिफ्रेस", - "download": "डाउनलोड", - "search": "खोज", - "apply": "लागू गर्नुहोस्", - "reset": "रिसेट", - "loading": "लोड हुँदैछ...", - "submitting": "पेश हुँदैछ...", - "logout": "लगआउट", - "close": "बन्द गर्नुहोस्", - "viewAll": "सबै हेर्नुहोस्", - "viewDetails": "विवरण हेर्नुहोस्", - "reviewNow": "अहिले समीक्षा गर्नुहोस्", - "create": "सिर्जना गर्नुहोस्", - "createTask": "टास्क सिर्जना गर्नुहोस्", - "clear": "खाली गर्नुहोस्", - "done": "समाप्त", - "exportExcel": "Excel निर्यात", - "save": "परिवर्तन सुरक्षित गर्नुहोस्", - "updateSuccess": "सफलतापूर्वक अद्यावधिक भयो", - "updateFailed": "अद्यावधिक असफल भयो", - "updatePassword": "पासवर्ड अद्यावधिक गर्नुहोस्" - }, "accountSettings": "खाता सेटिङ", "accountSettingsDesc": "आफ्नो प्रोफाइल र सुरक्षा सेटिङ व्यवस्थापन गर्नुहोस्।", - "profileSettings": "आधारभूत प्रोफाइल", - "profileSettingsDesc": "आफ्नो प्रदर्शन नाम अद्यावधिक गर्नुहोस्।", - "securitySettings": "सुरक्षा सेटिङ", - "securitySettingsDesc": "लगइन पासवर्ड परिवर्तन गर्नुहोस्। नपरिवर्तन गर्दा खाली छोड्नुहोस्।", - "fields": { - "nickname": "उपनाम", - "newPassword": "नयाँ पासवर्ड", - "confirmPassword": "पासवर्ड पुष्टि" - }, - "placeholders": { - "nickname": "उपनाम प्रविष्ट गर्नुहोस्", - "password": "नयाँ पासवर्ड प्रविष्ट गर्नुहोस्", - "confirmPassword": "पासवर्ड फेरि प्रविष्ट गर्नुहोस्" - }, - "validation": { - "required": "{{field}} अनिवार्य छ", - "passwordMismatch": "पासवर्ड मिलेन" - }, - "aria": { - "expand": "खोल्नुहोस्", - "collapse": "बन्द गर्नुहोस्", - "rowActionsMenu": "पङ्क्ति कार्य मेनु" - }, - "export": { - "drawsList": { "filename": "draw-suchi", "sheetName": "Draw" }, - "drawFinance": { "filename": "draw-arth-{{drawNo}}", "sheetName": "Draw finance" }, - "adminRoles": { "filename": "bhumika-suchi", "sheetName": "Bhumika" }, - "adminUsers": { "filename": "admin-prayogkarta", "sheetName": "Admin users" }, - "players": { "filename": "khiladi-suchi", "sheetName": "Khiladi" }, - "walletTransferOrders": { "filename": "transfer-ades", "sheetName": "Transfer" }, - "walletTransactions": { "filename": "wallet-len-den", "sheetName": "Len-den" }, - "playerWallets": { "filename": "khiladi-wallet", "sheetName": "Wallet" }, - "tickets": { "filename": "ticket-suchi", "sheetName": "Ticket" }, - "settlementBatches": { "filename": "settlement-batch", "sheetName": "Settlement" }, - "jackpotPayouts": { "filename": "jackpot-bhugtan", "sheetName": "Bhugtan" }, - "jackpotContributions": { "filename": "jackpot-yogdan", "sheetName": "Yogdan" }, - "riskLockLogs": { "filename": "jokhim-lock", "sheetName": "Lock log" }, - "riskPools": { "filename": "jokhim-pool", "sheetName": "Risk pool" }, - "riskIndex": { "filename": "jokhim-draw", "sheetName": "Jokhim" }, - "riskPoolDetail": { "filename": "pool-{{number}}", "sheetName": "Pool detail" }, - "auditLogs": { "filename": "audit-log", "sheetName": "Audit" }, - "currencies": { "filename": "mudra", "sheetName": "Mudra" } - }, - "toast": { - "exportDone": "निर्यात भयो", - "exportFailed": "निर्यात असफल" - }, - "datetime": { - "optionalHint": "खाली छोड्नुहोस् — सर्वर सेटिङबाट स्वचालित" - }, - "date": { - "placeholder": "मिति छान्नुहोस्", - "rangePlaceholder": "मिति दायरा छान्नुहोस्", - "rangeHint": "सुरु मिति छान्नुहोस्, त्यसपछि अन्त्य मिति। एउटै दिनका लागि सोही मितिमा दुई पटक क्लिक गर्नुहोस्। बन्द गर्न Done थिच्नुहोस्।", - "weekdays": { - "sunday": "आइतबार", - "monday": "सोमबार", - "tuesday": "मंगलबार", - "wednesday": "बुधबार", - "thursday": "बिहिबार", - "friday": "शुक्रबार", - "saturday": "शनिबार" - } - }, - "pagination": { - "perPage": "प्रति पृष्ठ", - "selectPlaceholder": "छान्नुहोस्", - "summary": "कुल {{total}}; पृष्ठ {{page}} / {{lastPage}}", - "previous": "अघिल्लो", - "next": "अर्को" - }, - "states": { - "noResource": "स्रोत छैन", - "noData": "स्रोत छैन", - "loading": "लोड हुँदैछ…", - "comingSoon": "सुविधा विकासमा छ" - }, - "errors": { - "loadFailed": "लोड असफल भयो" - }, - "permission": { - "deniedTitle": "पहुँच अनुमति छैन", - "deniedDescription": "यो पृष्ठ खोल्ने अनुमति तपाईंको खातामा छैन। भूमिका व्यवस्थापनबाट आवश्यक अनुमति दिन प्रशासकलाई सम्पर्क गर्नुहोस्।" - }, - "table": { - "id": "ID", - "actions": "कार्य" - }, - "playerColumns": { - "site": "साइट", - "display": "खेलाडी", - "sitePlayerId": "खेलाडी ID" + "actions": { + "apply": "लागू गर्नुहोस्", + "clear": "खाली गर्नुहोस्", + "close": "बन्द गर्नुहोस्", + "create": "सिर्जना गर्नुहोस्", + "createTask": "टास्क सिर्जना गर्नुहोस्", + "done": "समाप्त", + "download": "डाउनलोड", + "exportExcel": "Excel निर्यात", + "loading": "लोड हुँदैछ...", + "logout": "लगआउट", + "refresh": "रिफ्रेस", + "reset": "रिसेट", + "reviewNow": "अहिले समीक्षा गर्नुहोस्", + "save": "परिवर्तन सुरक्षित गर्नुहोस्", + "search": "खोज", + "submitting": "पेश हुँदैछ...", + "updateFailed": "अद्यावधिक असफल भयो", + "updatePassword": "पासवर्ड अद्यावधिक गर्नुहोस्", + "updateSuccess": "सफलतापूर्वक अद्यावधिक भयो", + "viewAll": "सबै हेर्नुहोस्", + "viewDetails": "विवरण हेर्नुहोस्" }, "agentColumns": { "agent": "एजेन्ट", "filter": "एजेन्ट", "filterAll": "सबै एजेन्ट" }, - "toolbar": { - "defaultAdmin": "प्रशासक", - "notifications": "सूचना", - "notificationsComingSoon": "सूचना सुविधा विकासमा छ", - "accountSettings": "खाता सेटिङ", - "relatedDocs": "सम्बन्धित कागजात", - "loggedOut": "लगआउट भयो" + "app": { + "title": "Lottery Admin" }, - "docs": { - "learnMore": "पूर्ण मार्गदर्शन हेर्नुहोस्" - }, - "nav": { - "home": "गृह", - "dashboard": "ड्यासबोर्ड", - "admin_users": "प्रशासक सूची", - "admin_roles": "भूमिका व्यवस्थापन", - "players": "खेलाडी सूची", - "currencies": "मुद्रा व्यवस्थापन", - "wallet": "वालेट", - "reports": "रिपोर्ट", - "draws": "ड्रअहरू", - "rules_plays": "खेल नियम", - "rules_odds": "बाधा र रिबेट", - "rules": "खेल नियम", - "risk_cap": "जोखिम क्याप संस्करण", - "risk": "जोखिम केन्द्र", - "settlement": "सेटलमेन्ट", - "jackpot": "Jackpot", - "reconcile": "मिलान", - "tickets": "टिकट सूची", - "audit": "अडिट लग", - "settings": "सेटिङ", - "account": "खाता सेटिङ", - "integration": "मुख्य साइट एकीकरण", - "agents": "एजेन्ट लाइन", - "agent_list": "एजेन्ट सूची", - "settlement_center": "सेटलमेन्ट केन्द्र", - "config": "सञ्चालन कन्फिगरेसन" - }, - "sidebar": { - "workspace": "कार्यस्थान", - "group": { - "overview": "सारांश", - "agent": "एजेन्ट संगठन", - "operations": "दैनिक सञ्चालन", - "finance": "वित्त र रिपोर्ट", - "rules": "नियम र प्यारामिटर", - "platform": "प्लेटफर्म" - } + "aria": { + "collapse": "बन्द गर्नुहोस्", + "expand": "खोल्नुहोस्", + "rowActionsMenu": "पङ्क्ति कार्य मेनु" }, "auth": { "checking": "लगइन स्थिति जाँच हुँदैछ…", @@ -191,5 +46,212 @@ "cancel": "रद्द", "confirm": "पुष्टि गर्नुहोस्", "confirmSave": "सुरक्षित गर्नुहोस्" + }, + "date": { + "placeholder": "मिति छान्नुहोस्", + "rangeHint": "सुरु मिति छान्नुहोस्, त्यसपछि अन्त्य मिति। एउटै दिनका लागि सोही मितिमा दुई पटक क्लिक गर्नुहोस्। बन्द गर्न Done थिच्नुहोस्।", + "rangePlaceholder": "मिति दायरा छान्नुहोस्", + "weekdays": { + "friday": "शुक्रबार", + "monday": "सोमबार", + "saturday": "शनिबार", + "sunday": "आइतबार", + "thursday": "बिहिबार", + "tuesday": "मंगलबार", + "wednesday": "बुधबार" + } + }, + "datetime": { + "optionalHint": "खाली छोड्नुहोस् — सर्वर सेटिङबाट स्वचालित" + }, + "docs": { + "learnMore": "पूर्ण मार्गदर्शन हेर्नुहोस्" + }, + "errors": { + "loadFailed": "लोड असफल भयो" + }, + "export": { + "adminRoles": { + "filename": "bhumika-suchi", + "sheetName": "Bhumika" + }, + "adminUsers": { + "filename": "admin-prayogkarta", + "sheetName": "Admin users" + }, + "auditLogs": { + "filename": "audit-log", + "sheetName": "Audit" + }, + "currencies": { + "filename": "mudra", + "sheetName": "Mudra" + }, + "drawFinance": { + "filename": "draw-arth-{{drawNo}}", + "sheetName": "Draw finance" + }, + "drawsList": { + "filename": "draw-suchi", + "sheetName": "Draw" + }, + "jackpotContributions": { + "filename": "jackpot-yogdan", + "sheetName": "Yogdan" + }, + "jackpotPayouts": { + "filename": "jackpot-bhugtan", + "sheetName": "Bhugtan" + }, + "playerWallets": { + "filename": "khiladi-wallet", + "sheetName": "Wallet" + }, + "players": { + "filename": "khiladi-suchi", + "sheetName": "Khiladi" + }, + "riskIndex": { + "filename": "jokhim-draw", + "sheetName": "Jokhim" + }, + "riskLockLogs": { + "filename": "jokhim-lock", + "sheetName": "Lock log" + }, + "riskPoolDetail": { + "filename": "pool-{{number}}", + "sheetName": "Pool detail" + }, + "riskPools": { + "filename": "jokhim-pool", + "sheetName": "Risk pool" + }, + "settlementBatches": { + "filename": "settlement-batch", + "sheetName": "Settlement" + }, + "ticketCombinations": { + "filename": "ticket-combinations", + "sheetName": "संयोजनहरू" + }, + "tickets": { + "filename": "ticket-suchi", + "sheetName": "Ticket" + }, + "walletTransactions": { + "filename": "wallet-len-den", + "sheetName": "Len-den" + }, + "walletTransferOrders": { + "filename": "transfer-ades", + "sheetName": "Transfer" + } + }, + "fields": { + "confirmPassword": "पासवर्ड पुष्टि", + "newPassword": "नयाँ पासवर्ड", + "nickname": "उपनाम" + }, + "integrationSites": { + "createSite": "एकीकरण साइट सिर्जना", + "emptyPlatformHint": "अहिले एकीकरण साइट छैन। एजेन्ट, खेलाडी वा सेटलमेन्ट व्यवस्थापन अघि साइट सिर्जना गर्नुहोस्।" + }, + "language": { + "changed": "भाषा {{language}} मा परिवर्तन भयो", + "en": "English", + "ne": "नेपाली", + "title": "इन्टरफेस भाषा", + "zh": "中文" + }, + "nav": { + "account": "खाता सेटिङ", + "admin_roles": "भूमिका व्यवस्थापन", + "admin_users": "प्रशासक सूची", + "agent_list": "एजेन्ट सूची", + "agents": "एजेन्ट लाइन", + "audit": "अडिट लग", + "config": "सञ्चालन कन्फिगरेसन", + "currencies": "मुद्रा व्यवस्थापन", + "dashboard": "ड्यासबोर्ड", + "draws": "ड्रअहरू", + "home": "गृह", + "integration": "मुख्य साइट एकीकरण", + "jackpot": "Jackpot", + "players": "खेलाडी सूची", + "reconcile": "मिलान", + "reports": "रिपोर्ट", + "risk": "जोखिम केन्द्र", + "risk_cap": "जोखिम क्याप संस्करण", + "rules": "खेल नियम", + "rules_odds": "बाधा र रिबेट", + "rules_plays": "खेल नियम", + "settings": "सेटिङ", + "settlement": "सेटलमेन्ट", + "settlement_center": "सेटलमेन्ट केन्द्र", + "tickets": "टिकट सूची", + "wallet": "वालेट" + }, + "pagination": { + "next": "अर्को", + "perPage": "प्रति पृष्ठ", + "previous": "अघिल्लो", + "selectPlaceholder": "छान्नुहोस्", + "summary": "कुल {{total}}; पृष्ठ {{page}} / {{lastPage}}" + }, + "permission": { + "deniedDescription": "यो पृष्ठ खोल्ने अनुमति तपाईंको खातामा छैन। भूमिका व्यवस्थापनबाट आवश्यक अनुमति दिन प्रशासकलाई सम्पर्क गर्नुहोस्।", + "deniedTitle": "पहुँच अनुमति छैन" + }, + "placeholders": { + "confirmPassword": "पासवर्ड फेरि प्रविष्ट गर्नुहोस्", + "nickname": "उपनाम प्रविष्ट गर्नुहोस्", + "password": "नयाँ पासवर्ड प्रविष्ट गर्नुहोस्" + }, + "playerColumns": { + "display": "खेलाडी", + "site": "साइट", + "sitePlayerId": "खेलाडी ID" + }, + "profileSettings": "आधारभूत प्रोफाइल", + "profileSettingsDesc": "आफ्नो प्रदर्शन नाम अद्यावधिक गर्नुहोस्।", + "securitySettings": "सुरक्षा सेटिङ", + "securitySettingsDesc": "लगइन पासवर्ड परिवर्तन गर्नुहोस्। नपरिवर्तन गर्दा खाली छोड्नुहोस्।", + "sidebar": { + "group": { + "agent": "एजेन्ट संगठन", + "finance": "वित्त र रिपोर्ट", + "operations": "दैनिक सञ्चालन", + "overview": "सारांश", + "platform": "प्लेटफर्म", + "rules": "नियम र प्यारामिटर" + }, + "workspace": "कार्यस्थान" + }, + "states": { + "comingSoon": "सुविधा विकासमा छ", + "loading": "लोड हुँदैछ…", + "noData": "स्रोत छैन", + "noResource": "स्रोत छैन" + }, + "table": { + "actions": "कार्य", + "id": "ID" + }, + "toast": { + "exportDone": "निर्यात भयो", + "exportFailed": "निर्यात असफल" + }, + "toolbar": { + "accountSettings": "खाता सेटिङ", + "defaultAdmin": "प्रशासक", + "loggedOut": "लगआउट भयो", + "notifications": "सूचना", + "notificationsComingSoon": "सूचना सुविधा विकासमा छ", + "relatedDocs": "सम्बन्धित कागजात" + }, + "validation": { + "passwordMismatch": "पासवर्ड मिलेन", + "required": "{{field}} अनिवार्य छ" } } diff --git a/src/i18n/locales/ne/config.json b/src/i18n/locales/ne/config.json index bfc287e..bf9d94c 100644 --- a/src/i18n/locales/ne/config.json +++ b/src/i18n/locales/ne/config.json @@ -1,622 +1,674 @@ { - "title": "कन्फिगरेसन केन्द्र", - "nav": { - "aria": "सञ्चालन कन्फिगरेसन उप-नेभिगेसन", - "sidebarTitle": "सञ्चालन कन्फिगरेसन", - "groups": { - "betting": "बेटिङ र प्रदर्शन", - "risk": "जोखिम नियन्त्रण" + "currencies": { + "actions": { + "backToSettings": "सेटिङमा फर्कनुहोस्", + "create": "मुद्रा थप्नुहोस्", + "delete": "मेटाउनुहोस्", + "edit": "सम्पादन", + "openStandalone": "अलग पृष्ठ खोल्नुहोस्" }, - "items": { - "plays": "खेल प्रकार र सीमा", - "odds": "अड्स", - "rebate": "कमिसन / रिबेट", - "jackpot": "Jackpot पूल", - "risk-cap": "पेमेन्ट क्याप" + "createFailed": "मुद्रा सिर्जना असफल भयो", + "createSuccess": "मुद्रा सिर्जना भयो", + "deleteDialog": { + "description": "मुद्रा {{code}} मेटाउने? यदि यो मुद्रा default, wallet, ticket, odds वा jackpot डाटामा प्रयोग भएको छ भने प्रणालीले मेटाउन दिँदैन।", + "title": "मुद्रा मेटाउने पुष्टि" }, - "rulesPlaysTitle": "खेल नियम", - "rulesOddsTitle": "बाधा र रिबेट", - "rulesOddsDescription": "बाधा म्याट्रिक्स र रिबेट दर एउटै पृष्ठमा, एउटै बाधा संस्करण लाइनमा।", - "rulesOddsDescriptionShort": "बायाँबाट खेल छान्नुहोस्, दायाँबाट बाधा र रिबेट सम्पादन गर्नुहोस्, त्यसपछि सेभ र प्रकाशन गर्नुहोस्।", - "riskCapTitle": "जोखिम क्याप संस्करण" + "deleteFailed": "मुद्रा मेटाउन असफल", + "deleteSuccess": "मुद्रा {{code}} मेटाइयो", + "description": "एडमिन सञ्चालनका लागि मुद्रा master data राख्नुहोस् र मुद्रा सक्रिय वा बेटिङका लागि उपलब्ध छ कि छैन नियन्त्रण गर्नुहोस्।", + "dialog": { + "createTitle": "मुद्रा थप्नुहोस्", + "description": "मुद्रा कोड सिर्जना भएपछि परिवर्तन गर्न मिल्दैन। मुद्रा निष्क्रिय गर्दा bettable पनि स्वतः बन्द हुन्छ।", + "editTitle": "मुद्रा सम्पादन गर्नुहोस्" + }, + "empty": "अहिलेसम्म मुद्रा छैन।", + "form": { + "bettable": "बेटिङ अनुमति", + "bettableHint": "सक्रिय मुद्रा मात्र bettable बनाउन सकिन्छ।", + "code": "मुद्रा कोड", + "codePlaceholder": "मुद्रा कोड प्रविष्ट गर्नुहोस्, जस्तै NPR", + "decimalInvalid": "मान्य दशमलव स्थान प्रविष्ट गर्नुहोस्", + "decimals": "दशमलव स्थान", + "decimalsPlaceholder": "दशमलव स्थान प्रविष्ट गर्नुहोस्, जस्तै 2", + "enabled": "सक्रिय स्थिति", + "enabledHint": "निष्क्रिय मुद्रा नयाँ व्यवसायमा प्रयोग गर्नु हुँदैन।", + "name": "मुद्रा नाम", + "namePlaceholder": "मुद्रा नाम प्रविष्ट गर्नुहोस्", + "required": "कृपया आवश्यक फिल्ड भर्नुहोस्" + }, + "loadFailed": "मुद्रा सूची लोड गर्न असफल", + "loading": "मुद्रा सूची लोड हुँदैछ…", + "table": { + "actions": "कार्य", + "bettable": "बेटिङयोग्य", + "code": "कोड", + "decimals": "दशमलव स्थान", + "enabled": "सक्रिय", + "name": "नाम" + }, + "title": "मुद्रा व्यवस्थापन", + "updateFailed": "मुद्रा अद्यावधिक गर्न असफल", + "updateSuccess": "मुद्रा अद्यावधिक भयो" }, "hub": { - "title": "सञ्चालन कन्फिगरेसन अवलोकन", "description": "खेल नियम, बाधा/रिबेट, Jackpot र क्याप क्षेत्रअनुसार खोल्नुहोस्। साइडबारबाट सिधा जान सकिन्छ; यो पृष्ठ सारांश हो।", - "playsTitle": "खेल नियम", - "playsDesc": "खेल स्विच, सीमा र नियम पाठ", - "oddsTitle": "बाधा र रिबेट", - "oddsDesc": "बाधा म्याट्रिक्स र रिबेट, एउटै संस्करण", - "jackpotTitle": "Jackpot", - "jackpotDesc": "पूल प्यारामिटर र लेजर", - "riskCapTitle": "जोखिम क्याप", - "riskCapDesc": "नम्बर क्याप र ओगट उपस्थिति", - "integrationTitle": "मुख्य साइट एकीकरण", "integrationDesc": "site_code, JWT गोप्य, पार्टनर वालेट URL र iframe श्वेतसूची", + "integrationGuideDesc": "ग्राहक प्राविधिक टोलीका लागि SSO र वालेट एकीकरण दस्तावेज, अनुक्रमणिका, उदाहरण र परीक्षण प्रवाह सहित", "integrationGuideTitle": "ग्राहक एकीकरण दस्तावेज", - "integrationGuideDesc": "ग्राहक प्राविधिक टोलीका लागि SSO र वालेट एकीकरण दस्तावेज, अनुक्रमणिका, उदाहरण र परीक्षण प्रवाह सहित" + "integrationTitle": "मुख्य साइट एकीकरण", + "jackpotDesc": "पूल प्यारामिटर र लेजर", + "jackpotTitle": "Jackpot", + "oddsDesc": "बाधा म्याट्रिक्स र रिबेट, एउटै संस्करण", + "oddsTitle": "बाधा र रिबेट", + "playsDesc": "खेल स्विच, सीमा र नियम पाठ", + "playsTitle": "खेल नियम", + "riskCapDesc": "नम्बर क्याप र ओगट उपस्थिति", + "riskCapTitle": "जोखिम क्याप", + "title": "सञ्चालन कन्फिगरेसन अवलोकन" }, "integrationGuide": { "title": "लटरी ग्राहक एकीकरण दस्तावेज" }, "integrationSites": { - "title": "मुख्य साइट एकीकरण साइटहरू", - "description": "एडमिनमा पार्टनर एकीकरण सेटिङ मिलाउनुहोस्। site_code सिर्जना पछि परिवर्तन गर्न मिल्दैन।", - "pageGuide": "वालेट ग्राहकलाई एकीकरण साइट र कुञ्जी चाहिन्छ; API कागजात हेर्नुहोस्।", - "create": "नयाँ साइट", - "edit": "सम्पादन", - "save": "बचत", - "saving": "बचत हुँदैछ…", + "adminAccountCreated": "साइट एडमिन खाता {{username}} सिर्जना भयो", + "adminAccountSectionDescription": "साइट सिर्जना गर्दा त्यस साइटसँग बाँधिएको एउटा एडमिन खाता पनि सिर्जना हुन्छ।", + "adminAccountSectionTitle": "साइट एडमिन खाता", "cancel": "रद्द", - "copy": "प्रतिलिपि", - "loading": "लोड हुँदैछ…", - "empty": "कुनै एकीकरण साइट छैन", - "loadFailed": "एकीकरण साइट लोड असफल", - "saveFailed": "बचत असफल", - "createSuccess": "साइट {{code}} सिर्जना भयो", - "updateSuccess": "साइट {{code}} अद्यावधिक भयो", - "connectivityTest": "जडान परीक्षण", - "connectivityTitle": "पार्टनर वालेट जडान परीक्षण", + "codeImmutable": "site_code सिर्जना पछि परिवर्तन गर्न मिल्दैन", + "columns": { + "actions": "कार्य", + "code": "site_code", + "name": "नाम", + "status": "स्थिति", + "walletUrl": "वालेट API" + }, "connectivityDescription": "परीक्षण खेलाडीबाट साइट {{code}} को balance API कल गर्नुहोस्।", + "connectivityFailed": "जडान असफल", "connectivityPlayerId": "परीक्षण site_player_id", "connectivityRun": "परीक्षण सुरु", "connectivityRunning": "परीक्षण हुँदैछ…", "connectivitySuccess": "जडान सफल", - "connectivityFailed": "जडान असफल", + "connectivityTest": "जडान परीक्षण", + "connectivityTitle": "पार्टनर वालेट जडान परीक्षण", + "copied": "{{field}} प्रतिलिपि भयो", + "copy": "प्रतिलिपि", + "copyFailed": "प्रतिलिपि असफल", + "create": "नयाँ साइट", + "createSuccess": "साइट {{code}} सिर्जना भयो", + "delete": "साइट मेटाउनुहोस्", + "deleteConfirm": "मेटाउनुहोस्", + "deleteConfirmDescription": "यसले साइट {{code}} ({{name}}), यसको एजेन्ट लाइन, सेटलमेन्ट अवधि, खेलाडी र साइट एडमिन खाता स्थायी रूपमा हटाउँछ। पूर्ववत गर्न मिल्दैन।", + "deleteConfirmTitle": "यो साइट मेटाउने?", + "deleteFailed": "साइट मेटाउन असफल", + "deleteSuccess": "साइट {{code}} मेटाइयो", + "deleting": "मेटाउँदै…", + "description": "एडमिनमा पार्टनर एकीकरण सेटिङ मिलाउनुहोस्। site_code सिर्जना पछि परिवर्तन गर्न मिल्दैन।", + "dialogCreateTitle": "नयाँ एकीकरण साइट", + "dialogDescription": "पार्टनरले अनुकूल URL नभएसम्म पूर्वनिर्धारित वालेट path प्रयोग गर्न सकिन्छ।", + "dialogEditTitle": "एकीकरण साइट सम्पादन", + "edit": "सम्पादन", + "empty": "कुनै एकीकरण साइट छैन", + "exportFailed": "निर्यात असफल", "exportParams": "प्यारामिटर निर्यात", "exportSuccess": "{{code}} को प्यारामिटर चिट्ठा निर्यात भयो", - "exportFailed": "निर्यात असफल", - "rotateSecrets": "गोप्य कुञ्जी पुनः सिर्जना", - "rotateSuccess": "साइट {{code}} का गोप्य कुञ्जी पुनः सिर्जना भयो", - "rotateFailed": "गोप्य कुञ्जी पुनः सिर्जना असफल", - "rotateConfirmTitle": "गोप्य कुञ्जी पुनः सिर्जना गर्ने?", - "rotateConfirmDescription": "साइट {{code}} का नयाँ SSO र वालेट कुञ्जी सिर्जना हुन्छ। पुराना कुञ्जी तुरुन्त अमान्य हुन्छन्।", - "rotateConfirm": "पुष्टि", - "secretsTitle": "गोप्य कुञ्जी अहिले नै सुरक्षित राख्नुहोस्", - "secretsDescription": "साइट {{code}} का गोप्य कुञ्जी एक पटक मात्र देखिन्छ।", - "secretsDismiss": "सुरक्षित गरिसके", - "copied": "{{field}} प्रतिलिपि भयो", - "copyFailed": "प्रतिलिपि असफल", - "noPermission": "एकीकरण साइट हेर्ने अनुमति छैन", - "codeImmutable": "site_code सिर्जना पछि परिवर्तन गर्न मिल्दैन", - "statusEnabled": "सक्रिय", - "statusDisabled": "निष्क्रिय", - "dialogCreateTitle": "नयाँ एकीकरण साइट", - "dialogEditTitle": "एकीकरण साइट सम्पादन", - "dialogDescription": "पार्टनरले अनुकूल URL नभएसम्म पूर्वनिर्धारित वालेट path प्रयोग गर्न सकिन्छ।", - "form": { - "required": "साइट नाम अनिवार्य छ", - "codeRequired": "site_code अनिवार्य छ" - }, - "columns": { - "code": "site_code", - "name": "नाम", - "status": "स्थिति", - "walletUrl": "वालेट API", - "actions": "कार्य" - }, "fields": { + "adminEmail": "इमेल (वैकल्पिक)", + "adminNickname": "एडमिन उपनाम", + "adminPassword": "प्रारम्भिक पासवर्ड", + "adminUsername": "एडमिन प्रयोगकर्ता नाम", "code": "site_code", - "name": "साइट नाम", "currency": "पूर्वनिर्धारित मुद्रा", - "status": "स्थिति", - "walletApiUrl": "पार्टनर वालेट आधार URL", - "lotteryH5BaseUrl": "लटरी H5 आधार URL (वैकल्पिक)", "iframeOrigins": "iframe श्वेतसूची (प्रति लाइन एक origin)", + "lotteryH5BaseUrl": "लटरी H5 आधार URL (वैकल्पिक)", + "name": "साइट नाम", "notes": "टिप्पणी", "ssoSecret": "SSO गोप्य", - "walletApiKey": "वालेट API कुञ्जी" - }, - "placeholders": { - "code": "साइट चिन्ह प्रविष्ट गर्नुहोस्, जस्तै partner-a", - "name": "साइट नाम प्रविष्ट गर्नुहोस्", - "currency": "मुद्रा कोड प्रविष्ट गर्नुहोस्, जस्तै NPR", - "walletApiUrl": "वालेट API ठेगाना प्रविष्ट गर्नुहोस्", - "lotteryH5BaseUrl": "H5 ठेगाना प्रविष्ट गर्नुहोस्", - "iframeOrigins": "अनुमत origin प्रविष्ट गर्नुहोस्, जस्तै https://www.example.com", - "notes": "टिप्पणी प्रविष्ट गर्नुहोस्", - "connectivityPlayerId": "खेलाडी ID प्रविष्ट गर्नुहोस्, जस्तै 10001" - } - }, - "versionStatus": { - "active": "सक्रिय", - "draft": "ड्राफ्ट", - "archived": "अभिलेख" - }, - "versionSwitcher": { - "sheetTitle": "कन्फिगरेसन संस्करण बदल्नुहोस्", - "sheetDescription": "यस पृष्ठमा हेर्न एउटा संस्करण छान्नुहोस्। ड्राफ्ट सम्पादनयोग्य छ; सक्रिय र अभिलेख संस्करण केवल पढ्न मिल्ने छन्।", - "loading": "लोड हुँदैछ…", - "noneSelected": "कुनै संस्करण छानिएको छैन", - "switch": "संस्करण बदल्नुहोस्", - "empty": "संस्करण रेकर्ड छैन।", - "count": "{{count}} वटा", - "effectiveAt": "लागू समय: {{value}}", - "note": "टिप्पणी: {{value}}", - "current": "हाल हेर्दै", - "moreActions": "v{{version}} थप कार्य", - "selected": "छानिएको", - "view": "हेर्नुहोस्", - "rollback": "रोलब्याक", - "delete": "मेटाउनुहोस्", - "deleteConfirmTitle": "यो संस्करण मेटाउने?", - "deleteConfirmDescription": "संस्करण ID {{id}} (version_no {{version}}) स्थायी रूपमा मेटाइनेछ। सक्रिय संस्करण मेटाउन मिल्दैन।" - }, - "versionToolbar": { - "draftEditing": "ड्राफ्ट सम्पादन — सेभ र प्रकाशित गरेपछि लाइभ हुन्छ" - }, - "versionActions": { - "publishCurrent": "प्रकाशित गर्नुहोस्", - "refreshing": "रिफ्रेस हुँदैछ", - "refresh": "संस्करण रिफ्रेस", - "newDraft": "नयाँ ड्राफ्ट", - "saveDraft": "ड्राफ्ट सेभ गर्नुहोस्", - "saveFailed": "कन्फिगरेसन सुरक्षित गर्न असफल", - "rollbackSuccess": "v{{fromVersion}} बाट नयाँ ड्राफ्ट v{{version}} क्लोन गरियो", - "rollbackFailed": "रोलब्याक असफल भयो", - "rollbackDialog": { - "title": "रोलब्याक पुष्टि गर्ने?", - "description": "संस्करण v{{version}} बाट नयाँ ड्राफ्ट क्लोन हुनेछ। सक्रिय संस्करण सिधै अधिलेखन हुँदैन।", - "confirm": "रोलब्याक पुष्टि" - } - }, - "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": "लटरी वालेटबाट मुख्य वालेटमा प्रति अर्डर अधिकतम" - }, - "validation": { - "amountAtLeastMinorUnit": "{{field}} मान्य रकम हुनुपर्छ र कम्तीमा 0.01 हुनुपर्छ।", - "inRangeInvalid": "अधिकतम ट्रान्सफर-इन रकम न्यूनतम ट्रान्सफर-इन रकमभन्दा कम हुन सक्दैन।", - "outRangeInvalid": "अधिकतम ट्रान्सफर-आउट रकम न्यूनतम ट्रान्सफर-आउट रकमभन्दा कम हुन सक्दैन।" - }, - "discard": "परिवर्तन त्याग्नुहोस्", - "confirmSaveTitle": "वालेट सीमा सुरक्षित गर्ने?", - "confirmSaveDescription": "ट्रान्सफर-इन/आउटको प्रति अर्डर सीमा अद्यावधिक हुन्छ र खेलाडीको वालेट ट्रान्सफरमा तुरुन्त असर पर्छ।" - }, - "system": { - "title": "ड्रअ र सेटलमेन्ट रनटाइम सेटिङ", - "runtimeTitle": "ग्लोबल रनटाइम प्यारामिटर", - "runtimeIntro1": "यहाँ खेल प्रकार, अड्स वा जोखिम संस्करणमा नपर्ने ग्लोबल प्रणाली प्यारामिटर राखिन्छ। यसले वालेट ट्रान्सफर, कार्य स्विच र प्रणाली सञ्चालन नीतिमा सीधा असर गर्छ।", - "runtimeIntro2": "खेल प्रकार, अड्स, रिबेट र क्याप अझै पनि सञ्चालन कन्फिगरेसनमै रहन्छन्। प्रणाली सेटिङले मात्र क्रस-मोड्युल रनटाइम प्यारामिटर सम्हाल्छ ताकि प्रशासनिक जिम्मेवारी नदोहोरोस्।", - "description": "RNG ड्रअपछि समीक्षा प्रवाह, कूलडाउन अवधि र स्वचालित सेटलमेन्ट व्यवहार नियन्त्रण गर्छ। यी ग्लोबल रनटाइम नीति हुन् र संस्करणयुक्त सञ्चालन कन्फिगरेसनमा पर्दैनन्।", - "loadFailed": "प्रणाली सेटिङ लोड असफल भयो", - "saveSuccess": "प्रणाली सेटिङ सुरक्षित भयो", - "saveRuntimeSuccess": "ड्रअ र सेटलमेन्ट प्यारामिटर सुरक्षित भयो", - "saveFrontendSuccess": "फ्रन्ट-एन्ड प्रदर्शन सेटिङ सुरक्षित भयो", - "saveFailed": "प्रणाली सेटिङ सुरक्षित गर्न असफल", - "unsavedChanges": "नसुरक्षित परिवर्तन छ", - "frontendConfig": "फ्रन्ट-एन्ड कन्फिग", - "fields": { - "manualReview": "ड्रअ परिणामका लागि म्यानुअल समीक्षा चाहिने", - "cooldownMinutes": "कूलडाउन अवधि (मिनेट)", - "defaultCurrency": "पूर्वनिर्धारित मुद्रा कोड", - "drawIntervalMinutes": "ड्रअ अन्तराल (मिनेट)", - "drawBettingWindowSeconds": "बेटिङ विन्डो (सेकेन्ड)", - "drawCloseBeforeDrawSeconds": "ड्रअ अघि बन्द (सेकेन्ड)", - "drawBufferDrawsAhead": "अग्रिम सिर्जना गरिने ड्रअ संख्या", - "currencyDisplayDecimals": "प्रदर्शन दशमलव स्थान", - "currencyDecimalSeparator": "दशमलव विभाजक", - "currencyThousandsSeparator": "हजार विभाजक", - "autoSettlement": "सेटलमेन्ट स्वतः चलाउने", - "autoApprove": "सेटलमेन्ट ब्याच स्वतः स्वीकृत", - "autoPayout": "जित रकम स्वतः वालेटमा जम्मा", - "applyRebateToPayout": "जितेको टिकटको पेआउटमा पुनः रिबेट घटाउने", - "playRulesHtml": "खेल नियम HTML (बहुभाषी)", - "playRulesHtmlDesc": "खेलाडीको नियम पृष्ठमा भाषा अनुसार HTML देखिन्छ। खाली छोड्दा अर्को भाषा वा पूर्वनिर्धारित खाली सूचना देखिन्छ।" - }, - "placeholders": { - "defaultCurrency": "पूर्वनिर्धारित मुद्रा कोड प्रविष्ट गर्नुहोस्, जस्तै NPR", - "drawIntervalMinutes": "ड्रअ अन्तराल मिनेट प्रविष्ट गर्नुहोस्", - "drawBettingWindowSeconds": "बेटिङ विन्डो सेकेन्ड प्रविष्ट गर्नुहोस्", - "drawCloseBeforeDrawSeconds": "ड्रअ अघि बन्द हुने सेकेन्ड प्रविष्ट गर्नुहोस्", - "drawBufferDrawsAhead": "अग्रिम सिर्जना गरिने ड्रअ संख्या प्रविष्ट गर्नुहोस्", - "cooldownMinutes": "कूलडाउन मिनेट प्रविष्ट गर्नुहोस्", - "currencyDisplayDecimals": "प्रदर्शन दशमलव स्थान प्रविष्ट गर्नुहोस्, जस्तै 2", - "currencyDecimalSeparator": "दशमलव विभाजक प्रविष्ट गर्नुहोस्, जस्तै .", - "currencyThousandsSeparator": "हजार विभाजक प्रविष्ट गर्नुहोस्, जस्तै ," - }, - "hints": { - "manualReview": "सक्रिय हुँदा RNG ड्रअ परिणाम pending review मा जान्छ र एडमिनबाट म्यानुअल रूपमा प्रकाशित गर्नुपर्छ।", - "cooldownMinutes": "प्रकाशनपछि settling मा जानुअघि कति समय पर्खने। 0 राखे तुरुन्त सेटलमेन्ट सुरु हुन्छ।", - "autoSettlement": "बन्द हुँदा tick ले सेटलमेन्ट स्वतः चलाउँदैन र एडमिनले म्यानुअल रूपमा ट्रिगर गर्नुपर्छ।", - "autoApprove": "कूलडाउन सकिएर सेटलमेन्ट पूरा भएपछि ब्याच स्वतः अनुमोदित हुने हो कि होइन।", - "autoPayout": "ब्याच अनुमोदित भएपछि tick ले जित रकम खेलाडीको वालेटमा स्वतः जम्मा गर्ने हो कि होइन।", - "applyRebateToPayout": "सक्रिय हुँदा पेआउट = gross win × (1 - rebate_rate_snapshot)। पूर्वनिर्धारित बन्द (रिबेट actual deduct मा पहिले नै समायोजित)।" - }, - "states": { - "enabled": "सक्रिय", - "disabled": "बन्द" - }, - "discard": "परिवर्तन त्याग्नुहोस्", - "confirmSaveTitle": "प्रणाली रनटाइम प्यारामिटर सुरक्षित गर्ने?", - "confirmSaveDescription": "ड्रअ समीक्षा, कूलडाउन, स्वचालित सेटलमेन्ट/अनुमोदन/पेआउट र खेल नियम प्रदर्शन अद्यावधिक हुन्छ। साइटव्यापी सञ्चालनमा असर पर्न सक्छ।", - "confirmSaveRuntimeTitle": "ड्रअ र सेटलमेन्ट प्यारामिटर सुरक्षित गर्ने?", - "confirmSaveRuntimeDescription": "ड्रअ समीक्षा, तालिका, कूलडाउन, स्वचालित सेटलमेन्ट/अनुमोदन/पेआउट अद्यावधिक हुन्छ। खेल नियम HTML परिवर्तन हुँदैन।", - "confirmSaveFrontendTitle": "फ्रन्ट-एन्ड प्रदर्शन सेटिङ सुरक्षित गर्ने?", - "confirmSaveFrontendDescription": "खेलाडी साइटको खेल नियम HTML अद्यावधिक हुन्छ। ड्रअ र सेटलमेन्ट तर्क परिवर्तन हुँदैन।" - }, - "currencies": { - "title": "मुद्रा व्यवस्थापन", - "description": "एडमिन सञ्चालनका लागि मुद्रा master data राख्नुहोस् र मुद्रा सक्रिय वा बेटिङका लागि उपलब्ध छ कि छैन नियन्त्रण गर्नुहोस्।", - "loading": "मुद्रा सूची लोड हुँदैछ…", - "empty": "अहिलेसम्म मुद्रा छैन।", - "loadFailed": "मुद्रा सूची लोड गर्न असफल", - "createSuccess": "मुद्रा सिर्जना भयो", - "createFailed": "मुद्रा सिर्जना असफल भयो", - "updateSuccess": "मुद्रा अद्यावधिक भयो", - "updateFailed": "मुद्रा अद्यावधिक गर्न असफल", - "deleteSuccess": "मुद्रा {{code}} मेटाइयो", - "deleteFailed": "मुद्रा मेटाउन असफल", - "actions": { - "create": "मुद्रा थप्नुहोस्", - "edit": "सम्पादन", - "delete": "मेटाउनुहोस्", - "openStandalone": "अलग पृष्ठ खोल्नुहोस्", - "backToSettings": "सेटिङमा फर्कनुहोस्" - }, - "table": { - "code": "कोड", - "name": "नाम", - "decimals": "दशमलव स्थान", - "enabled": "सक्रिय", - "bettable": "बेटिङयोग्य", - "actions": "कार्य" - }, - "dialog": { - "createTitle": "मुद्रा थप्नुहोस्", - "editTitle": "मुद्रा सम्पादन गर्नुहोस्", - "description": "मुद्रा कोड सिर्जना भएपछि परिवर्तन गर्न मिल्दैन। मुद्रा निष्क्रिय गर्दा bettable पनि स्वतः बन्द हुन्छ।" - }, - "deleteDialog": { - "title": "मुद्रा मेटाउने पुष्टि", - "description": "मुद्रा {{code}} मेटाउने? यदि यो मुद्रा default, wallet, ticket, odds वा jackpot डाटामा प्रयोग भएको छ भने प्रणालीले मेटाउन दिँदैन।" + "status": "स्थिति", + "walletApiKey": "वालेट API कुञ्जी", + "walletApiUrl": "पार्टनर वालेट आधार URL" }, "form": { - "code": "मुद्रा कोड", - "name": "मुद्रा नाम", - "decimals": "दशमलव स्थान", - "codePlaceholder": "मुद्रा कोड प्रविष्ट गर्नुहोस्, जस्तै NPR", - "namePlaceholder": "मुद्रा नाम प्रविष्ट गर्नुहोस्", - "decimalsPlaceholder": "दशमलव स्थान प्रविष्ट गर्नुहोस्, जस्तै 2", - "enabled": "सक्रिय स्थिति", - "enabledHint": "निष्क्रिय मुद्रा नयाँ व्यवसायमा प्रयोग गर्नु हुँदैन।", - "bettable": "बेटिङ अनुमति", - "bettableHint": "सक्रिय मुद्रा मात्र bettable बनाउन सकिन्छ।", - "required": "कृपया आवश्यक फिल्ड भर्नुहोस्", - "decimalInvalid": "मान्य दशमलव स्थान प्रविष्ट गर्नुहोस्" - } - }, - "play": { - "batchGroups": { - "d2": "2D ग्लोबल", - "d3": "3D ग्लोबल", - "d4": "4D ग्लोबल", - "big-small": "Big / Small", - "position": "स्थिति खेलहरू", - "box": "बक्स खेलहरू", - "jackpot": "Jackpot" - }, - "validation": { - "minMaxInvalid": "{{playCode}}: न्यूनतम बेट अधिकतम बेटभन्दा ठूलो हुन सक्दैन", - "displayNameRequired": "प्रदर्शित नाम अनिवार्य छ" - }, - "publishFailed": "प्रकाशन असफल भयो", - "publishDialog": { - "title": "खेल कन्फिग प्रकाशित गर्ने?", - "description": "नयाँ सेटिङले आगामी बेटहरूमा असर गर्छ। पुराना टिकटहरू आफ्नो snapshot अनुसार नै सेटल हुन्छन्।", - "confirm": "प्रकाशन पुष्टि गर्नुहोस्" - }, - "batchSwitchConfirmTitle": "समूह {{action}} पुष्टि गर्ने?", - "batchSwitchConfirmDescription": "«{{group}}» अन्तर्गत {{count}} खेल प्रकार {{action}} गरी हालको ड्राफ्टमा लेखिनेछ।", - "batchSwitchEnable": "सक्रिय", - "batchSwitchDisable": "निष्क्रिय", - "toggleConfirmTitle": "खेल {{playCode}} {{action}} गर्ने?", - "toggleConfirmDescription": "यो हालको ड्राफ्ट मात्र अपडेट गर्छ। सेभ र प्रकाशित गरेपछि खेलाडीलाई देखिन्छ।", - "batchPartialEnabled": "{{enabledCount}}/{{total}} सक्रिय (सबै खुला छैन — अन गर्दा सबै सक्रिय हुन्छ)", - "toggleEnable": "सक्रिय", - "toggleDisable": "निष्क्रिय", - "toggleInstantFailed": "खेल स्विच तुरुन्त लागू गर्न असफल। पछि पुनः प्रयास गर्नुहोस्।", - "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", - "createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो", - "ruleSavedLocal": "नियम पाठ स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।", - "deleteFailed": "मेटाउन असफल", - "activeVersion": "हाल सक्रिय संस्करण v{{version}}", - "readOnlyHint": "सीमा र नियमहरू केवल पढ्न मिल्ने छन्। पहिले ड्राफ्ट बनाउनुहोस्।", - "batchSwitchesTitle": "समूह स्विचहरू", - "batchSwitchesDesc": "यसले हालको ड्राफ्ट मात्र अपडेट गर्छ। सेभ र प्रकाशित गरेपछि खेलाडीको बेटिङ तालिका रिफ्रेस हुन्छ।", - "readOnlyDraftHint": "हालको संस्करण केवल पढ्न मिल्ने छ। पहिले ड्राफ्ट बनाउनुहोस्।", - "batchEnabledCount": "{{enabledCount}}/{{total}} सक्रिय", - "noPlayTypes": "खेल प्रकार छैन", - "actions": { - "enable": "सक्रिय", - "disable": "निष्क्रिय", - "ruleText": "नियम पाठ", - "editDisplayName": "नाम सम्पादन" - }, - "locales": { - "zh": "चिनियाँ", - "en": "English", - "ne": "नेपाली" - }, - "categories": { - "standard": "मानक", - "attribute": "विशेषता", - "position": "स्थिति", - "box": "बक्स", - "jackpot": "ज्याकपोट" - }, - "table": { - "playCode": "खेल कोड", - "category": "श्रेणी", - "status": "स्थिति", - "displayName": "प्रदर्शित नाम", - "order": "क्रम", - "minBet": "न्यूनतम बेट", - "maxBet": "अधिकतम बेट", - "actions": "कार्य" + "adminNicknameRequired": "साइट एडमिन उपनाम आवश्यक", + "adminPasswordRequired": "प्रारम्भिक साइट एडमिन पासवर्ड कम्तीमा ८ अक्षर", + "adminUsernameRequired": "साइट एडमिन प्रयोगकर्ता नाम आवश्यक", + "codeRequired": "site_code अनिवार्य छ", + "required": "साइट नाम अनिवार्य छ" }, + "loadFailed": "एकीकरण साइट लोड असफल", + "loading": "लोड हुँदैछ…", + "noPermission": "एकीकरण साइट हेर्ने अनुमति छैन", + "pageGuide": "वालेट ग्राहकलाई एकीकरण साइट र कुञ्जी चाहिन्छ; API कागजात हेर्नुहोस्।", "placeholders": { - "displayOrder": "क्रम", - "minBetAmount": "न्यूनतम रकम", - "maxBetAmount": "अधिकतम रकम" + "adminEmail": "इमेल लेख्नुहोस्", + "adminNickname": "खाता उपनाम लेख्नुहोस्", + "adminPassword": "कम्तीमा ८ अक्षर", + "adminUsername": "एडमिन प्रयोगकर्ता नाम लेख्नुहोस्", + "code": "साइट चिन्ह प्रविष्ट गर्नुहोस्, जस्तै partner-a", + "connectivityPlayerId": "खेलाडी ID प्रविष्ट गर्नुहोस्, जस्तै 10001", + "currency": "मुद्रा कोड प्रविष्ट गर्नुहोस्, जस्तै NPR", + "iframeOrigins": "अनुमत origin प्रविष्ट गर्नुहोस्, जस्तै https://www.example.com", + "lotteryH5BaseUrl": "H5 ठेगाना प्रविष्ट गर्नुहोस्", + "name": "साइट नाम प्रविष्ट गर्नुहोस्", + "notes": "टिप्पणी प्रविष्ट गर्नुहोस्", + "walletApiUrl": "वालेट API ठेगाना प्रविष्ट गर्नुहोस्" }, - "states": { - "enabled": "सक्रिय", - "disabled": "बन्द", - "readOnly": "केवल पढ्न मिल्ने" - }, - "aria": { - "enablePlay": "{{playCode}} सक्रिय गर्ने", - "batchGroupSwitch": "«{{group}}» समूह स्विच टगल गर्नुहोस्" - }, - "nameDialog": { - "title": "प्रदर्शित नाम (बहुभाषी)", - "description": "खेल {{playCode}}। चिनियाँ अनिवार्य; अंग्रेजी र नेपाली वैकल्पिक। प्रकाशनपछि खेलाडीको भाषा अनुसार देखिन्छ।", - "apply": "ड्राफ्टमा लागू गर्नुहोस्", - "savedLocal": "प्रदर्शित नाम स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।" - }, - "ruleDialog": { - "title": "नियम पाठ (बहुभाषी)", - "description": "खेल {{playCode}}। परिवर्तनहरू सेभ र प्रकाशित नगरेसम्म ड्राफ्टमै रहन्छन्।", - "apply": "ड्राफ्टमा लागू गर्नुहोस्" - } + "rotateConfirm": "पुष्टि", + "rotateConfirmDescription": "साइट {{code}} का नयाँ SSO र वालेट कुञ्जी सिर्जना हुन्छ। पुराना कुञ्जी तुरुन्त अमान्य हुन्छन्।", + "rotateConfirmTitle": "गोप्य कुञ्जी पुनः सिर्जना गर्ने?", + "rotateFailed": "गोप्य कुञ्जी पुनः सिर्जना असफल", + "rotateSecrets": "गोप्य कुञ्जी पुनः सिर्जना", + "rotateSuccess": "साइट {{code}} का गोप्य कुञ्जी पुनः सिर्जना भयो", + "save": "बचत", + "saveFailed": "बचत असफल", + "saving": "बचत हुँदैछ…", + "secretsDescription": "साइट {{code}} का गोप्य कुञ्जी एक पटक मात्र देखिन्छ।", + "secretsDismiss": "सुरक्षित गरिसके", + "secretsTitle": "गोप्य कुञ्जी अहिले नै सुरक्षित राख्नुहोस्", + "statusDisabled": "निष्क्रिय", + "statusEnabled": "सक्रिय", + "title": "मुख्य साइट एकीकरण साइटहरू", + "updateSuccess": "साइट {{code}} अद्यावधिक भयो" }, - "prizeScopes": { - "first": "पहिलो पुरस्कार बाधा", - "second": "दोस्रो पुरस्कार बाधा", - "third": "तेस्रो पुरस्कार बाधा", - "starter": "स्टार्टर पुरस्कार बाधा", - "consolation": "सान्त्वना पुरस्कार बाधा" + "nav": { + "aria": "सञ्चालन कन्फिगरेसन उप-नेभिगेसन", + "groups": { + "betting": "बेटिङ र प्रदर्शन", + "risk": "जोखिम नियन्त्रण" + }, + "items": { + "jackpot": "Jackpot पूल", + "odds": "अड्स", + "plays": "खेल प्रकार र सीमा", + "rebate": "कमिसन / रिबेट", + "risk-cap": "पेमेन्ट क्याप" + }, + "riskCapTitle": "जोखिम क्याप संस्करण", + "rulesOddsDescription": "बाधा म्याट्रिक्स र रिबेट दर एउटै पृष्ठमा, एउटै बाधा संस्करण लाइनमा।", + "rulesOddsDescriptionShort": "बायाँबाट खेल छान्नुहोस्, दायाँबाट बाधा र रिबेट सम्पादन गर्नुहोस्, त्यसपछि सेभ र प्रकाशन गर्नुहोस्।", + "rulesOddsTitle": "बाधा र रिबेट", + "rulesPlaysTitle": "खेल नियम", + "sidebarTitle": "सञ्चालन कन्फिगरेसन" }, "odds": { - "sectionHint": "संस्करण छानेर पुरस्कार-स्तर बाधा सम्पादन गर्नुहोस्; प्रकाशनपछि नयाँ टिकटमा लागू हुन्छ।", - "sections": { - "playScope": "खेल दायरा", - "oddsConfig": "बाधा सेटिङ" - }, - "currentSelection": "हालको छनोट: {{category}} / {{play}}", - "playSelectPlaceholder": "खेल प्रकार छान्नुहोस्", - "readOnlyBanner": "यो संस्करण पढ्न मात्र हो। बाधा र रिबेट सम्पादन गर्न ड्राफ्ट बनाउनुहोस्।", - "table": { - "prizeScope": "पुरस्कार दायरा", - "multiplier": "बाधा गुणक" - }, - "draftBar": { - "unsaved": "नसेभ परिवर्तनहरू", - "saved": "परिवर्तन स्थानीय ड्राफ्टमा राखिएको छ" - }, - "playGroups": { - "bigSmall": "ठूलो / सानो", - "combo4": "4D स्थिति", - "number3": "3D स्थिति", - "number2": "2D स्थिति", - "other": "अन्य" - }, - "summary": { - "title": "सारांश", - "contextTitle": "संस्करण र सुझाव", - "version": "सम्पादन संस्करण", - "activeVersion": "सक्रिय संस्करण", - "statusLabel": "स्थिति", - "readOnlyTag": "पढ्न मात्र", - "readOnlyHint": "यो संस्करण पढ्न मात्र हो। परिवर्तन गर्न ड्राफ्ट बनाउनुहोस्।", - "draftHint": "प्रकाशन अघि ड्राफ्ट सेभ गर्नुहोस्; प्रकाशनले नयाँ टिकटमा मात्र असर गर्छ।", - "activeHint": "यो संस्करण सक्रिय छ; नयाँ टिकट यही सेटिङ प्रयोग गर्छ।" - }, - "tabs": { - "all": "सबै" - }, - "category": "श्रेणी", - "playType": "खेल प्रकार", - "noPlayTypes": "यस श्रेणीमा खेल प्रकार छैन।", - "sheetDescription": "यहाँ हेर्नका लागि एउटा संस्करण छान्नुहोस्। गैर-ड्राफ्ट संस्करणलाई नयाँ ड्राफ्टमा रोलब्याक गर्न सकिन्छ।", "activeVersionPrefix": "हाल सक्रिय संस्करण:", - "readOnlyHint": "यो संस्करण केवल पढ्न मिल्ने छ। अड्स सम्पादन गर्नुअघि ड्राफ्ट बनाउनुहोस्।", + "category": "श्रेणी", + "createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो", + "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", + "currentSelection": "हालको छनोट: {{category}} / {{play}}", + "deleteFailed": "मेटाउन असफल", + "draftBar": { + "saved": "परिवर्तन स्थानीय ड्राफ्टमा राखिएको छ", + "unsaved": "नसेभ परिवर्तनहरू" + }, "loadingDetails": "विवरण लोड हुँदैछ…", - "multiplier": "गुणक x{{value}} · {{currency}}", "missingScopeRow": "{{scope}} को row हराइरहेको छ। seed वा version data जाँच गर्नुहोस्।", - "rebateRate": "रिबेट दर (%)", - "rebateRateHint": "यसले यो खेल प्रकारअन्तर्गत सबै prize scope मा rebate_rate लेख्छ।", + "multiplier": "गुणक x{{value}} · {{currency}}", + "noPlayTypes": "यस श्रेणीमा खेल प्रकार छैन।", "placeholders": { "multiplier": "अड्स गुणक प्रविष्ट गर्नुहोस्", "rebateRate": "रिबेट दर प्रविष्ट गर्नुहोस्" }, - "publishFailed": "प्रकाशन असफल भयो", - "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", - "createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो", - "rollbackSuccess": "v{{fromVersion}} बाट नयाँ ड्राफ्ट v{{version}} क्लोन गरियो", - "rollbackFailed": "रोलब्याक असफल भयो", - "deleteFailed": "मेटाउन असफल", - "rollbackDialog": { - "title": "रोलब्याक पुष्टि गर्नुहोस्", - "description": "संस्करण v{{version}} बाट नयाँ ड्राफ्ट क्लोन हुनेछ। हाल सक्रिय संस्करण प्रत्यक्ष रूपमा ओभरराइट हुँदैन।", - "confirm": "रोलब्याक पुष्टि गर्नुहोस्" + "playGroups": { + "bigSmall": "ठूलो / सानो", + "combo4": "4D स्थिति", + "number2": "2D स्थिति", + "number3": "3D स्थिति", + "other": "अन्य" }, + "playSelectPlaceholder": "खेल प्रकार छान्नुहोस्", + "playType": "खेल प्रकार", "publishDialog": { - "title": "अड्स संस्करण प्रकाशित गर्ने?", - "description": "नयाँ अड्सले तुरुन्तै नयाँ टिकटहरूमा असर गर्छ। सफल भइसकेका टिकटहरू आफ्नो सुरक्षित odds snapshot अनुसार नै सेटल हुन्छन्।", - "confirm": "प्रकाशन पुष्टि गर्नुहोस्", "columns": { - "prizeScope": "पुरस्कार दायरा", + "afterPublish": "प्रकाशनपछि", "currentActive": "हाल सक्रिय", - "afterPublish": "प्रकाशनपछि" - } + "prizeScope": "पुरस्कार दायरा" + }, + "confirm": "प्रकाशन पुष्टि गर्नुहोस्", + "description": "नयाँ अड्सले तुरुन्तै नयाँ टिकटहरूमा असर गर्छ। सफल भइसकेका टिकटहरू आफ्नो सुरक्षित odds snapshot अनुसार नै सेटल हुन्छन्।", + "title": "अड्स संस्करण प्रकाशित गर्ने?" + }, + "publishFailed": "प्रकाशन असफल भयो", + "readOnlyBanner": "यो संस्करण पढ्न मात्र हो। बाधा र रिबेट सम्पादन गर्न ड्राफ्ट बनाउनुहोस्।", + "readOnlyHint": "यो संस्करण केवल पढ्न मिल्ने छ। अड्स सम्पादन गर्नुअघि ड्राफ्ट बनाउनुहोस्।", + "rebateRate": "रिबेट दर (%)", + "rebateRateHint": "यसले यो खेल प्रकारअन्तर्गत सबै prize scope मा rebate_rate लेख्छ।", + "rollbackDialog": { + "confirm": "रोलब्याक पुष्टि गर्नुहोस्", + "description": "संस्करण v{{version}} बाट नयाँ ड्राफ्ट क्लोन हुनेछ। हाल सक्रिय संस्करण प्रत्यक्ष रूपमा ओभरराइट हुँदैन।", + "title": "रोलब्याक पुष्टि गर्नुहोस्" + }, + "rollbackFailed": "रोलब्याक असफल भयो", + "rollbackSuccess": "v{{fromVersion}} बाट नयाँ ड्राफ्ट v{{version}} क्लोन गरियो", + "sectionHint": "संस्करण छानेर पुरस्कार-स्तर बाधा सम्पादन गर्नुहोस्; प्रकाशनपछि नयाँ टिकटमा लागू हुन्छ।", + "sections": { + "oddsConfig": "बाधा सेटिङ", + "playScope": "खेल दायरा" + }, + "sheetDescription": "यहाँ हेर्नका लागि एउटा संस्करण छान्नुहोस्। गैर-ड्राफ्ट संस्करणलाई नयाँ ड्राफ्टमा रोलब्याक गर्न सकिन्छ।", + "summary": { + "activeHint": "यो संस्करण सक्रिय छ; नयाँ टिकट यही सेटिङ प्रयोग गर्छ।", + "activeVersion": "सक्रिय संस्करण", + "contextTitle": "संस्करण र सुझाव", + "draftHint": "प्रकाशन अघि ड्राफ्ट सेभ गर्नुहोस्; प्रकाशनले नयाँ टिकटमा मात्र असर गर्छ।", + "readOnlyHint": "यो संस्करण पढ्न मात्र हो। परिवर्तन गर्न ड्राफ्ट बनाउनुहोस्।", + "readOnlyTag": "पढ्न मात्र", + "statusLabel": "स्थिति", + "title": "सारांश", + "version": "सम्पादन संस्करण" + }, + "table": { + "multiplier": "बाधा गुणक", + "prizeScope": "पुरस्कार दायरा" + }, + "tabs": { + "all": "सबै" } }, - "rebate": { - "sectionHint": "रिबेट दर अड्स संस्करणमा लेखिन्छ; पहिले माथिको «बाधा» खण्डमा ड्राफ्ट छान्नुहोस्।", - "lazyLoadHint": "रिबेट खण्डमा स्क्रोल गर्दा लोड हुन्छ", - "embeddedVersionHint": "रिबेट माथिको बाधा संस्करण लाइन साझा गर्छ—संस्करण त्यहीँबाट बदल्नुहोस्।", - "sheetDescription": "रिबेट अड्स ड्राफ्ट संस्करणमा राखिन्छ र अड्ससँग एउटै संस्करण सेट साझा गर्छ।", - "publishLabel": "प्रकाशन", - "publishSuccess": "रिबेटसहितको अड्स संस्करण प्रकाशित भयो", - "publishFailed": "प्रकाशन असफल भयो", - "publishDialog": { - "title": "रिबेट/अड्स संस्करण प्रकाशित गर्ने?", - "description": "प्रकाशनपछि नयाँ टिकटहरूको रिबेट गणनामा असर पर्छ।", - "confirm": "प्रकाशन पुष्टि गर्नुहोस्" + "play": { + "actions": { + "disable": "निष्क्रिय", + "editDisplayName": "नाम सम्पादन", + "enable": "सक्रिय", + "ruleText": "नियम पाठ" + }, + "activeVersion": "हाल सक्रिय संस्करण v{{version}}", + "aria": { + "batchGroupSwitch": "«{{group}}» समूह स्विच टगल गर्नुहोस्", + "enablePlay": "{{playCode}} सक्रिय गर्ने" + }, + "batchEnabledCount": "{{enabledCount}}/{{total}} सक्रिय", + "batchGroups": { + "big-small": "Big / Small", + "box": "बक्स खेलहरू", + "d2": "2D ग्लोबल", + "d3": "3D ग्लोबल", + "d4": "4D ग्लोबल", + "jackpot": "Jackpot", + "position": "स्थिति खेलहरू" + }, + "batchPartialEnabled": "{{enabledCount}}/{{total}} सक्रिय (सबै खुला छैन — अन गर्दा सबै सक्रिय हुन्छ)", + "batchSwitchConfirmDescription": "«{{group}}» अन्तर्गत {{count}} खेल प्रकार {{action}} गरी हालको ड्राफ्टमा लेखिनेछ।", + "batchSwitchConfirmTitle": "समूह {{action}} पुष्टि गर्ने?", + "batchSwitchDisable": "निष्क्रिय", + "batchSwitchEnable": "सक्रिय", + "batchSwitchesDesc": "यसले हालको ड्राफ्ट मात्र अपडेट गर्छ। सेभ र प्रकाशित गरेपछि खेलाडीको बेटिङ तालिका रिफ्रेस हुन्छ।", + "batchSwitchesTitle": "समूह स्विचहरू", + "categories": { + "attribute": "विशेषता", + "box": "बक्स", + "jackpot": "ज्याकपोट", + "position": "स्थिति", + "standard": "मानक" }, - "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", "createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो", + "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", + "deleteFailed": "मेटाउन असफल", + "filters": { + "allCategories": "सबै श्रेणी", + "allStatuses": "सबै स्थिति", + "category": "श्रेणी", + "empty": "मिल्ने खेल प्रकार छैन", + "groupCount": "{{count}} खेल", + "keyword": "खेल खोज्नुहोस्", + "keywordPlaceholder": "खेल कोड, प्रदर्शन नाम वा श्रेणीले फिल्टर", + "reset": "फिल्टर हटाउनुहोस्", + "sectionDescription": "पहिले सूची संकुचित गर्नुहोस्, त्यसपछि ब्याच स्विच वा पङ्क्ति सम्पादन प्रयोग गर्नुहोस्।", + "sectionTitle": "खेल फिल्टर", + "status": "स्थिति", + "uncategorized": "अवर्गीकृत" + }, + "locales": { + "en": "English", + "ne": "नेपाली", + "zh": "चिनियाँ" + }, + "nameDialog": { + "apply": "ड्राफ्टमा लागू गर्नुहोस्", + "description": "खेल {{playCode}}। चिनियाँ अनिवार्य; अंग्रेजी र नेपाली वैकल्पिक। प्रकाशनपछि खेलाडीको भाषा अनुसार देखिन्छ।", + "savedLocal": "प्रदर्शित नाम स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।", + "title": "प्रदर्शित नाम (बहुभाषी)" + }, + "noPlayTypes": "खेल प्रकार छैन", + "placeholders": { + "displayOrder": "क्रम", + "maxBetAmount": "अधिकतम रकम", + "minBetAmount": "न्यूनतम रकम" + }, + "publishDialog": { + "confirm": "प्रकाशन पुष्टि गर्नुहोस्", + "description": "नयाँ सेटिङले आगामी बेटहरूमा असर गर्छ। पुराना टिकटहरू आफ्नो snapshot अनुसार नै सेटल हुन्छन्।", + "title": "खेल कन्फिग प्रकाशित गर्ने?" + }, + "publishFailed": "प्रकाशन असफल भयो", + "readOnlyDraftHint": "हालको संस्करण केवल पढ्न मिल्ने छ। पहिले ड्राफ्ट बनाउनुहोस्।", + "readOnlyHint": "सीमा र नियमहरू केवल पढ्न मिल्ने छन्। पहिले ड्राफ्ट बनाउनुहोस्।", + "ruleDialog": { + "apply": "ड्राफ्टमा लागू गर्नुहोस्", + "description": "खेल {{playCode}}। परिवर्तनहरू सेभ र प्रकाशित नगरेसम्म ड्राफ्टमै रहन्छन्।", + "title": "नियम पाठ (बहुभाषी)" + }, + "ruleSavedLocal": "नियम पाठ स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।", + "states": { + "disabled": "बन्द", + "enabled": "सक्रिय", + "readOnly": "केवल पढ्न मिल्ने" + }, + "table": { + "actions": "कार्य", + "category": "श्रेणी", + "displayName": "प्रदर्शित नाम", + "maxBet": "अधिकतम बेट", + "minBet": "न्यूनतम बेट", + "order": "क्रम", + "playCode": "खेल कोड", + "status": "स्थिति" + }, + "toggleConfirmDescription": "यो हालको ड्राफ्ट मात्र अपडेट गर्छ। सेभ र प्रकाशित गरेपछि खेलाडीलाई देखिन्छ।", + "toggleConfirmTitle": "खेल {{playCode}} {{action}} गर्ने?", + "toggleDisable": "निष्क्रिय", + "toggleEnable": "सक्रिय", + "toggleInstantFailed": "खेल स्विच तुरुन्त लागू गर्न असफल। पछि पुनः प्रयास गर्नुहोस्।", + "validation": { + "displayNameRequired": "प्रदर्शित नाम अनिवार्य छ", + "minMaxInvalid": "{{playCode}}: न्यूनतम बेट अधिकतम बेटभन्दा ठूलो हुन सक्दैन" + } + }, + "prizeScopes": { + "consolation": "सान्त्वना पुरस्कार बाधा", + "first": "पहिलो पुरस्कार बाधा", + "second": "दोस्रो पुरस्कार बाधा", + "starter": "स्टार्टर पुरस्कार बाधा", + "third": "तेस्रो पुरस्कार बाधा" + }, + "rebate": { + "createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो", + "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", "deleteFailed": "मेटाउन असफल", - "editingVersion": "सम्पादन भइरहेको संस्करण v{{version}} · {{status}}", - "readOnlyHint": "रिबेट सम्पादन गर्नुअघि ड्राफ्ट बनाउनुहोस्।", "dimensionRatesMixedHint": "एउटै डाइमेन्शनभित्रका खेलका रिबेट दरहरू उस्तै छैनन्: माथिको तीन फिल्डहरू मुख्य पुरस्कार स्कोपको पहिलो प्ले (क्रम)को उदाहरण मात्र देखाउँछन्; वास्तविक दर टेबुलको लाइन हेर्नुहोस्। थोक इनपुटले डाइमेन्शनभित्रका सबै प्लेहरू एउटै दरले अधिलेखन गर्छ।", + "editingVersion": "सम्पादन भइरहेको संस्करण v{{version}} · {{status}}", + "effectiveTime": "लागू समय (हाल सक्रिय अड्स संस्करण)", + "embeddedVersionHint": "रिबेट माथिको बाधा संस्करण लाइन साझा गर्छ—संस्करण त्यहीँबाट बदल्नुहोस्।", "fields": { "d2": "2D रिबेट दर (%)", "d3": "3D रिबेट दर (%)", "d4": "4D रिबेट दर (%)" }, + "lazyLoadHint": "रिबेट खण्डमा स्क्रोल गर्दा लोड हुन्छ", "placeholders": { "d2": "2D रिबेट प्रविष्ट गर्नुहोस्", "d3": "3D रिबेट प्रविष्ट गर्नुहोस्", "d4": "4D रिबेट प्रविष्ट गर्नुहोस्" }, - "winEnjoy": { - "label": "जितेको टिकटको पेआउटमा पुनः रिबेट घटाउने", - "description": "settlement.apply_rebate_to_payout सँग जोडिएको: सक्रिय हुँदा जित पेआउटमा rebate_rate_snapshot अनुसार घटाउँछ।", - "hint": "वैश्विक switch; odds संस्करण प्रकाशनसँग नजोडिएको, सुरक्षित गर्दा तुरुन्त लागू।", - "saveSuccess": "जित टिकट रिबेट सेटिङ अद्यावधिक भयो", - "saveFailed": "अद्यावधिक असफल" - }, - "effectiveTime": "लागू समय (हाल सक्रिय अड्स संस्करण)" - }, - "riskCap": { - "placeholders": { - "defaultCap": "पूर्वनिर्धारित सीमा प्रविष्ट गर्नुहोस्", - "number": "४-अङ्कको नम्बर", - "capAmount": "सीमा रकम प्रविष्ट गर्नुहोस्" - }, - "validation": { - "requireAtLeastOne": "कम्तीमा एक क्याप row आवश्यक छ", - "defaultGreaterThanZero": "पूर्वनिर्धारित क्याप रकम 0 भन्दा ठूलो हुनुपर्छ", - "defaultCannotBindDraw": "पूर्वनिर्धारित क्याप कुनै निश्चित draw मा बाँध्न मिल्दैन", - "specialGreaterThanZero": "विशेष क्याप रकम 0 भन्दा ठूलो हुनुपर्छ: {{number}}", - "numberMustBe4Digits": "नम्बर 4 अङ्कको हुनुपर्छ: {{number}}", - "enterValidCapAmount": "मान्य क्याप रकम प्रविष्ट गर्नुहोस्" + "publishDialog": { + "confirm": "प्रकाशन पुष्टि गर्नुहोस्", + "description": "प्रकाशनपछि नयाँ टिकटहरूको रिबेट गणनामा असर पर्छ।", + "title": "रिबेट/अड्स संस्करण प्रकाशित गर्ने?" }, "publishFailed": "प्रकाशन असफल भयो", - "publishDialog": { - "title": "क्याप कन्फिग प्रकाशित गर्ने?", - "description": "प्रकाशनपछि प्रत्येक नम्बरको जोखिम पूल क्याप सीमा लागू हुन्छ।", - "confirm": "प्रकाशन पुष्टि गर्नुहोस्" + "publishLabel": "प्रकाशन", + "publishSuccess": "रिबेटसहितको अड्स संस्करण प्रकाशित भयो", + "readOnlyHint": "रिबेट सम्पादन गर्नुअघि ड्राफ्ट बनाउनुहोस्।", + "sectionHint": "रिबेट दर अड्स संस्करणमा लेखिन्छ; पहिले माथिको «बाधा» खण्डमा ड्राफ्ट छान्नुहोस्।", + "sheetDescription": "रिबेट अड्स ड्राफ्ट संस्करणमा राखिन्छ र अड्ससँग एउटै संस्करण सेट साझा गर्छ।", + "winEnjoy": { + "description": "settlement.apply_rebate_to_payout सँग जोडिएको: सक्रिय हुँदा जित पेआउटमा rebate_rate_snapshot अनुसार घटाउँछ।", + "hint": "वैश्विक switch; odds संस्करण प्रकाशनसँग नजोडिएको, सुरक्षित गर्दा तुरुन्त लागू।", + "label": "जितेको टिकटको पेआउटमा पुनः रिबेट घटाउने", + "saveFailed": "अद्यावधिक असफल", + "saveSuccess": "जित टिकट रिबेट सेटिङ अद्यावधिक भयो" + } + }, + "riskCap": { + "actions": { + "addSpecialCap": "+ विशेष क्याप थप्नुहोस्", + "close": "बन्द", + "exportCsv": "CSV निर्यात", + "filterPresets": "प्रिसेट फिल्टर…", + "update": "अपडेट" }, - "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", "createDraftFailed": "ड्राफ्ट सिर्जना असफल भयो", - "savedLocalDraft": "स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।", + "createDraftSuccess": "ड्राफ्ट v{{version}} सिर्जना भयो", + "defaultCap": { + "description": "विशेष क्याप नभएका नम्बरहरूमा यही पूर्वनिर्धारित क्याप टेम्प्लेट लागू हुन्छ।", + "fieldLabel": "क्याप रकम (मुख्य एकाइ)", + "title": "पूर्वनिर्धारित क्याप" + }, "deleteFailed": "मेटाउन असफल", "effectiveAt": "लागू समय: {{value}}", - "note": "टिप्पणी: {{value}}", - "readOnlyHint": "केवल पढ्न मिल्ने। पहिले ड्राफ्ट बनाउनुहोस्।", - "readOnly": "केवल पढ्न मिल्ने", - "defaultCap": { - "title": "पूर्वनिर्धारित क्याप", - "description": "विशेष क्याप नभएका नम्बरहरूमा यही पूर्वनिर्धारित क्याप टेम्प्लेट लागू हुन्छ।", - "fieldLabel": "क्याप रकम (मुख्य एकाइ)" - }, - "specialCaps": { - "title": "विशेष क्यापहरू", - "description": "draw नछानेमा ग्लोबल नम्बर क्याप हुन्छ; draw छानेपछि त्यो सोही draw को विशेष क्याप हुन्छ।" - }, - "scope": { - "global": "ग्लोबल नम्बर", - "drawId": "Draw ID: {{id}}" - }, "groups": { - "globalTitle": "ग्लोबल नम्बर क्याप", - "globalDescription": "कुनै निश्चित draw मा नबाँधिने, दीर्घकालीन रूपमा लागू हुने क्याप। सामान्य नम्बर-स्तर सीमा यहीं राखिन्छ।", - "globalEmpty": "अहिलेसम्म कुनै ग्लोबल नम्बर क्याप छैन।", - "drawTitle": "Draw-विशेष क्याप", + "count": "{{count}} वटा", "drawDescription": "छानिएको draw मा मात्र लागू हुन्छ। कुनै draw का लागि अस्थायी रूपमा सीमा कडा वा खुकुलो बनाउन प्रयोग गर्नुहोस्।", "drawEmpty": "अहिलेसम्म कुनै draw-विशेष क्याप छैन।", - "count": "{{count}} वटा" - }, - "summary": { - "defaultCap": "पूर्वनिर्धारित क्याप", - "defaultHint": "विशेष नियम नभएका नम्बरहरू अन्ततः यही मानमा फर्किन्छन्।", - "globalCaps": "ग्लोबल नम्बर क्याप", - "globalHint": "दीर्घकालीन नियम, कुनै एक draw सँग मात्र जोडिएको हुँदैन।", - "drawCaps": "Draw-विशेष क्याप", - "drawHint": "छानिएका draw हरूमा मात्र अस्थायी रूपमा लागू हुने नियम।" + "drawTitle": "Draw-विशेष क्याप", + "globalDescription": "कुनै निश्चित draw मा नबाँधिने, दीर्घकालीन रूपमा लागू हुने क्याप। सामान्य नम्बर-स्तर सीमा यहीं राखिन्छ।", + "globalEmpty": "अहिलेसम्म कुनै ग्लोबल नम्बर क्याप छैन।", + "globalTitle": "ग्लोबल नम्बर क्याप" }, "loadingDetails": "विवरण लोड हुँदैछ…", "noDetailRows": "विवरण row छैन।", - "table": { - "scope": "दायरा", - "number": "नम्बर", - "capAmount": "क्याप रकम", - "used": "प्रयोग भएको", - "remaining": "बाँकी", - "soldOut": "सोल्ड आउट", - "ratio": "अनुपात", - "actions": "कार्य" - }, + "note": "टिप्पणी: {{value}}", "occupancy": { "searchLabel": "नम्बर खोज्नुहोस्", "searchPlaceholder": "जस्तै 8888" }, + "placeholders": { + "capAmount": "सीमा रकम प्रविष्ट गर्नुहोस्", + "defaultCap": "पूर्वनिर्धारित सीमा प्रविष्ट गर्नुहोस्", + "number": "४-अङ्कको नम्बर" + }, + "publishDialog": { + "confirm": "प्रकाशन पुष्टि गर्नुहोस्", + "description": "प्रकाशनपछि प्रत्येक नम्बरको जोखिम पूल क्याप सीमा लागू हुन्छ।", + "title": "क्याप कन्फिग प्रकाशित गर्ने?" + }, + "publishFailed": "प्रकाशन असफल भयो", + "readOnly": "केवल पढ्न मिल्ने", + "readOnlyHint": "केवल पढ्न मिल्ने। पहिले ड्राफ्ट बनाउनुहोस्।", "runtime": { - "title": "ड्रअनुसार occupancy (लाइभ)", "description": "माथिको संस्करण ड्राफ्ट होइन—चयन गरिएको ड्रअको risk-pool API बाट लोड हुन्छ। प्रयोग, बाँकी र sold-out हेर्नुहोस्।", "drawLabel": "ड्र", "drawPlaceholder": "ड्र छान्नुहोस्", "filterAll": "सबै", - "filterSoldOut": "मात्र sold-out", "filterHighRisk": "उच्च प्रयोग", + "filterSoldOut": "मात्र sold-out", "manageHint": "पूर्ण risk सञ्चालनका लागि माथिको लिङ्कबाट ड्र subpage खोल्नुहोस्।", "noDraws": "कुनै ड्र छैन; occupancy लोड गर्न सकिँदैन।", + "soldNo": "होइन", "soldYes": "हो", - "soldNo": "होइन" + "title": "ड्रअनुसार occupancy (लाइभ)" }, - "actions": { - "update": "अपडेट", - "addSpecialCap": "+ विशेष क्याप थप्नुहोस्", - "filterPresets": "प्रिसेट फिल्टर…", - "exportCsv": "CSV निर्यात", - "close": "बन्द" + "savedLocalDraft": "स्थानीय ड्राफ्टमा सुरक्षित भयो। स्थायी बनाउन ड्राफ्ट सेभ गर्नुहोस्।", + "scope": { + "drawId": "Draw ID: {{id}}", + "global": "ग्लोबल नम्बर" + }, + "specialCaps": { + "description": "draw नछानेमा ग्लोबल नम्बर क्याप हुन्छ; draw छानेपछि त्यो सोही draw को विशेष क्याप हुन्छ।", + "title": "विशेष क्यापहरू" + }, + "summary": { + "defaultCap": "पूर्वनिर्धारित क्याप", + "defaultHint": "विशेष नियम नभएका नम्बरहरू अन्ततः यही मानमा फर्किन्छन्।", + "drawCaps": "Draw-विशेष क्याप", + "drawHint": "छानिएका draw हरूमा मात्र अस्थायी रूपमा लागू हुने नियम।", + "globalCaps": "ग्लोबल नम्बर क्याप", + "globalHint": "दीर्घकालीन नियम, कुनै एक draw सँग मात्र जोडिएको हुँदैन।" }, "syncDialog": { - "title": "पूर्वनिर्धारित क्याप मिलाउनुहोस्", + "confirm": "पुष्टि", "description": "पूर्वनिर्धारित क्याप टेम्प्लेट {{value}} मा सेट हुनेछ। यसले ड्राफ्ट मात्र बदल्छ। पुष्टि पछि सेभ र प्रकाशित गर्नुहोस्।", - "confirm": "पुष्टि" + "title": "पूर्वनिर्धारित क्याप मिलाउनुहोस्" + }, + "table": { + "actions": "कार्य", + "capAmount": "क्याप रकम", + "number": "नम्बर", + "ratio": "अनुपात", + "remaining": "बाँकी", + "scope": "दायरा", + "soldOut": "सोल्ड आउट", + "used": "प्रयोग भएको" + }, + "validation": { + "defaultCannotBindDraw": "पूर्वनिर्धारित क्याप कुनै निश्चित draw मा बाँध्न मिल्दैन", + "defaultGreaterThanZero": "पूर्वनिर्धारित क्याप रकम 0 भन्दा ठूलो हुनुपर्छ", + "enterValidCapAmount": "मान्य क्याप रकम प्रविष्ट गर्नुहोस्", + "numberMustBe4Digits": "नम्बर 4 अङ्कको हुनुपर्छ: {{number}}", + "requireAtLeastOne": "कम्तीमा एक क्याप row आवश्यक छ", + "specialGreaterThanZero": "विशेष क्याप रकम 0 भन्दा ठूलो हुनुपर्छ: {{number}}" + } + }, + "system": { + "confirmSaveCurrencyFormatDescription": "यसले दशमलव स्थान र विभाजक अद्यावधिक गर्छ।", + "confirmSaveCurrencyFormatTitle": "मुद्रा प्रदर्शन ढाँचा बचत गर्ने?", + "confirmSaveDescription": "ड्रअ समीक्षा, कूलडाउन, स्वचालित सेटलमेन्ट/अनुमोदन/पेआउट र खेल नियम प्रदर्शन अद्यावधिक हुन्छ। साइटव्यापी सञ्चालनमा असर पर्न सक्छ।", + "confirmSaveDrawDescription": "यसले यो ब्लकमा ड्र समीक्षा, तालिका समय र कूलडाउन मात्र अद्यावधिक गर्छ।", + "confirmSaveDrawTitle": "ड्र प्यारामिटर बचत गर्ने?", + "confirmSaveFrontendDescription": "खेलाडी साइटको खेल नियम HTML अद्यावधिक हुन्छ। ड्रअ र सेटलमेन्ट तर्क परिवर्तन हुँदैन।", + "confirmSaveFrontendTitle": "फ्रन्ट-एन्ड प्रदर्शन सेटिङ सुरक्षित गर्ने?", + "confirmSaveRuntimeDescription": "ड्रअ समीक्षा, तालिका, कूलडाउन, स्वचालित सेटलमेन्ट/अनुमोदन/पेआउट अद्यावधिक हुन्छ। खेल नियम HTML परिवर्तन हुँदैन।", + "confirmSaveRuntimeTitle": "ड्रअ र सेटलमेन्ट प्यारामिटर सुरक्षित गर्ने?", + "confirmSaveSettlementDescription": "यसले स्वतः सेटलमेन्ट, अनुमोदन र भुक्तानी स्विच अद्यावधिक गर्छ।", + "confirmSaveSettlementTitle": "सेटलमेन्ट स्वचालन बचत गर्ने?", + "confirmSaveTitle": "प्रणाली रनटाइम प्यारामिटर सुरक्षित गर्ने?", + "description": "RNG ड्रअपछि समीक्षा प्रवाह, कूलडाउन अवधि र स्वचालित सेटलमेन्ट व्यवहार नियन्त्रण गर्छ। यी ग्लोबल रनटाइम नीति हुन् र संस्करणयुक्त सञ्चालन कन्फिगरेसनमा पर्दैनन्।", + "discard": "परिवर्तन त्याग्नुहोस्", + "fields": { + "applyRebateToPayout": "जितेको टिकटको पेआउटमा पुनः रिबेट घटाउने", + "autoApprove": "सेटलमेन्ट ब्याच स्वतः स्वीकृत", + "autoPayout": "जित रकम स्वतः वालेटमा जम्मा", + "autoSettlement": "सेटलमेन्ट स्वतः चलाउने", + "cooldownMinutes": "कूलडाउन अवधि (मिनेट)", + "currencyDecimalSeparator": "दशमलव विभाजक", + "currencyDisplayDecimals": "प्रदर्शन दशमलव स्थान", + "currencyThousandsSeparator": "हजार विभाजक", + "defaultCurrency": "पूर्वनिर्धारित मुद्रा कोड", + "drawBettingWindowSeconds": "बेटिङ विन्डो (सेकेन्ड)", + "drawBufferDrawsAhead": "अग्रिम सिर्जना गरिने ड्रअ संख्या", + "drawCloseBeforeDrawSeconds": "ड्रअ अघि बन्द (सेकेन्ड)", + "drawIntervalMinutes": "ड्रअ अन्तराल (मिनेट)", + "manualReview": "ड्रअ परिणामका लागि म्यानुअल समीक्षा चाहिने", + "playRulesHtml": "खेल नियम HTML (बहुभाषी)", + "playRulesHtmlDesc": "खेलाडीको नियम पृष्ठमा भाषा अनुसार HTML देखिन्छ। खाली छोड्दा अर्को भाषा वा पूर्वनिर्धारित खाली सूचना देखिन्छ।" + }, + "frontendConfig": "फ्रन्ट-एन्ड कन्फिग", + "hints": { + "applyRebateToPayout": "सक्रिय हुँदा पेआउट = gross win × (1 - rebate_rate_snapshot)। पूर्वनिर्धारित बन्द (रिबेट actual deduct मा पहिले नै समायोजित)।", + "autoApprove": "कूलडाउन सकिएर सेटलमेन्ट पूरा भएपछि ब्याच स्वतः अनुमोदित हुने हो कि होइन।", + "autoPayout": "ब्याच अनुमोदित भएपछि tick ले जित रकम खेलाडीको वालेटमा स्वतः जम्मा गर्ने हो कि होइन।", + "autoSettlement": "बन्द हुँदा tick ले सेटलमेन्ट स्वतः चलाउँदैन र एडमिनले म्यानुअल रूपमा ट्रिगर गर्नुपर्छ।", + "cooldownMinutes": "प्रकाशनपछि settling मा जानुअघि कति समय पर्खने। 0 राखे तुरुन्त सेटलमेन्ट सुरु हुन्छ।", + "manualReview": "सक्रिय हुँदा RNG ड्रअ परिणाम pending review मा जान्छ र एडमिनबाट म्यानुअल रूपमा प्रकाशित गर्नुपर्छ।" + }, + "loadFailed": "प्रणाली सेटिङ लोड असफल भयो", + "placeholders": { + "cooldownMinutes": "कूलडाउन मिनेट प्रविष्ट गर्नुहोस्", + "currencyDecimalSeparator": "दशमलव विभाजक प्रविष्ट गर्नुहोस्, जस्तै .", + "currencyDisplayDecimals": "प्रदर्शन दशमलव स्थान प्रविष्ट गर्नुहोस्, जस्तै 2", + "currencyThousandsSeparator": "हजार विभाजक प्रविष्ट गर्नुहोस्, जस्तै ,", + "defaultCurrency": "पूर्वनिर्धारित मुद्रा कोड प्रविष्ट गर्नुहोस्, जस्तै NPR", + "drawBettingWindowSeconds": "बेटिङ विन्डो सेकेन्ड प्रविष्ट गर्नुहोस्", + "drawBufferDrawsAhead": "अग्रिम सिर्जना गरिने ड्रअ संख्या प्रविष्ट गर्नुहोस्", + "drawCloseBeforeDrawSeconds": "ड्रअ अघि बन्द हुने सेकेन्ड प्रविष्ट गर्नुहोस्", + "drawIntervalMinutes": "ड्रअ अन्तराल मिनेट प्रविष्ट गर्नुहोस्" + }, + "runtimeIntro1": "यहाँ खेल प्रकार, अड्स वा जोखिम संस्करणमा नपर्ने ग्लोबल प्रणाली प्यारामिटर राखिन्छ। यसले वालेट ट्रान्सफर, कार्य स्विच र प्रणाली सञ्चालन नीतिमा सीधा असर गर्छ।", + "runtimeIntro2": "खेल प्रकार, अड्स, रिबेट र क्याप अझै पनि सञ्चालन कन्फिगरेसनमै रहन्छन्। प्रणाली सेटिङले मात्र क्रस-मोड्युल रनटाइम प्यारामिटर सम्हाल्छ ताकि प्रशासनिक जिम्मेवारी नदोहोरोस्।", + "runtimeTitle": "ग्लोबल रनटाइम प्यारामिटर", + "saveCurrencyFormatSuccess": "मुद्रा प्रदर्शन ढाँचा बचत भयो", + "saveDrawSuccess": "ड्र प्यारामिटर बचत भयो", + "saveFailed": "प्रणाली सेटिङ सुरक्षित गर्न असफल", + "saveFrontendSuccess": "फ्रन्ट-एन्ड प्रदर्शन सेटिङ सुरक्षित भयो", + "saveRuntimeSuccess": "ड्रअ र सेटलमेन्ट प्यारामिटर सुरक्षित भयो", + "saveSettlementSuccess": "सेटलमेन्ट स्वचालन बचत भयो", + "saveSuccess": "प्रणाली सेटिङ सुरक्षित भयो", + "sections": { + "currencyFormat": "मुद्रा प्रदर्शन ढाँचा", + "currencyFormatDescription": "साइटभरि रकमका दशमलव र विभाजक (मुद्रा मास्टर डाटाबाट अलग)।", + "draw": "ड्र तालिका र समीक्षा", + "drawDescription": "ड्र समय, बन्द सञ्झ्याल, म्यानुअल समीक्षा र कूलडाउन नियन्त्रण। यो ब्लकमा परिवर्तित फिल्ड मात्र पेश हुन्छ।", + "settlement": "सेटलमेन्ट स्वचालन", + "settlementDescription": "टिक स्वतः सेटलमेन्ट, अनुमोदन र भुक्तानी चलाउने नियन्त्रण। यो ब्लकमा परिवर्तित फिल्ड मात्र पेश हुन्छ।" + }, + "states": { + "disabled": "बन्द", + "enabled": "सक्रिय" + }, + "title": "ड्रअ र सेटलमेन्ट रनटाइम सेटिङ", + "unsavedChanges": "नसुरक्षित परिवर्तन छ" + }, + "title": "कन्फिगरेसन केन्द्र", + "versionActions": { + "newDraft": "नयाँ ड्राफ्ट", + "publishCurrent": "प्रकाशित गर्नुहोस्", + "refresh": "संस्करण रिफ्रेस", + "refreshing": "रिफ्रेस हुँदैछ", + "rollbackDialog": { + "confirm": "रोलब्याक पुष्टि", + "description": "संस्करण v{{version}} बाट नयाँ ड्राफ्ट क्लोन हुनेछ। सक्रिय संस्करण सिधै अधिलेखन हुँदैन।", + "title": "रोलब्याक पुष्टि गर्ने?" + }, + "rollbackFailed": "रोलब्याक असफल भयो", + "rollbackSuccess": "v{{fromVersion}} बाट नयाँ ड्राफ्ट v{{version}} क्लोन गरियो", + "saveDraft": "ड्राफ्ट सेभ गर्नुहोस्", + "saveFailed": "कन्फिगरेसन सुरक्षित गर्न असफल" + }, + "versionStatus": { + "active": "सक्रिय", + "archived": "अभिलेख", + "draft": "ड्राफ्ट" + }, + "versionSwitcher": { + "count": "{{count}} वटा", + "current": "हाल हेर्दै", + "delete": "मेटाउनुहोस्", + "deleteConfirmDescription": "संस्करण ID {{id}} (version_no {{version}}) स्थायी रूपमा मेटाइनेछ। सक्रिय संस्करण मेटाउन मिल्दैन।", + "deleteConfirmTitle": "यो संस्करण मेटाउने?", + "effectiveAt": "लागू समय: {{value}}", + "empty": "संस्करण रेकर्ड छैन।", + "loading": "लोड हुँदैछ…", + "moreActions": "v{{version}} थप कार्य", + "noneSelected": "कुनै संस्करण छानिएको छैन", + "note": "टिप्पणी: {{value}}", + "rollback": "रोलब्याक", + "selected": "छानिएको", + "sheetDescription": "यस पृष्ठमा हेर्न एउटा संस्करण छान्नुहोस्। ड्राफ्ट सम्पादनयोग्य छ; सक्रिय र अभिलेख संस्करण केवल पढ्न मिल्ने छन्।", + "sheetTitle": "कन्फिगरेसन संस्करण बदल्नुहोस्", + "switch": "संस्करण बदल्नुहोस्", + "view": "हेर्नुहोस्" + }, + "versionToolbar": { + "draftEditing": "ड्राफ्ट सम्पादन — सेभ र प्रकाशित गरेपछि लाइभ हुन्छ" + }, + "wallet": { + "confirmSaveDescription": "ट्रान्सफर-इन/आउटको प्रति अर्डर सीमा अद्यावधिक हुन्छ र खेलाडीको वालेट ट्रान्सफरमा तुरुन्त असर पर्छ।", + "confirmSaveTitle": "वालेट सीमा सुरक्षित गर्ने?", + "description": "रकम खेलको सानो मुद्रा एकाइमा हुन्छ (उदाहरण, NPR मा 100 = 1.00 NPR)। न्यूनतम रकम कम्तीमा 1 सानो एकाइ हुनुपर्छ।", + "discard": "परिवर्तन त्याग्नुहोस्", + "fields": { + "inMax": "अधिकतम ट्रान्सफर-इन रकम", + "inMin": "न्यूनतम ट्रान्सफर-इन रकम", + "outMax": "अधिकतम ट्रान्सफर-आउट रकम", + "outMin": "न्यूनतम ट्रान्सफर-आउट रकम" + }, + "hints": { + "inMax": "मुख्य वालेटबाट लटरी वालेटमा प्रति अर्डर अधिकतम", + "inMin": "मुख्य वालेटबाट लटरी वालेटमा प्रति अर्डर न्यूनतम", + "outMax": "लटरी वालेटबाट मुख्य वालेटमा प्रति अर्डर अधिकतम", + "outMin": "लटरी वालेटबाट मुख्य वालेटमा प्रति अर्डर न्यूनतम" + }, + "loadFailed": "लोड असफल भयो", + "placeholders": { + "max": "उदाहरण: 10000.00", + "min": "उदाहरण: 1.00" + }, + "saveFailed": "सेभ असफल भयो", + "saveSuccess": "सफलतापूर्वक सेभ भयो", + "title": "वालेट ट्रान्सफर सीमा सेटिङ", + "validation": { + "amountAtLeastMinorUnit": "{{field}} मान्य रकम हुनुपर्छ र कम्तीमा 0.01 हुनुपर्छ।", + "inRangeInvalid": "अधिकतम ट्रान्सफर-इन रकम न्यूनतम ट्रान्सफर-इन रकमभन्दा कम हुन सक्दैन।", + "outRangeInvalid": "अधिकतम ट्रान्सफर-आउट रकम न्यूनतम ट्रान्सफर-आउट रकमभन्दा कम हुन सक्दैन।" } } } diff --git a/src/i18n/locales/ne/dashboard.json b/src/i18n/locales/ne/dashboard.json index 36bcd5a..bbb6a71 100644 --- a/src/i18n/locales/ne/dashboard.json +++ b/src/i18n/locales/ne/dashboard.json @@ -1,270 +1,305 @@ { - "title": "ड्यासबोर्ड", - "refresh": "रिफ्रेस", - "notice": "सूचना", - "sections": { - "today": "आजको सारांश", - "lifetime": "ऐतिहासिक कुल", - "currentDraw": "हालको ड्रअ", - "currentDrawDetail": "हालको ड्रअ · {{drawNo}}", - "operations": "सञ्चालन (साइटव्यापी)", - "snapshot": "हालको ड्रअ स्न्यापसट" + "abnormalTransferAction": "समाधान गर्न ट्रान्सफर सूची खोल्नुहोस्", + "abnormalTransferAllClear": "मिलान ठीक, असामान्य छैन", + "abnormalTransferOrders": "असामान्य ट्रान्सफर अर्डर", + "abnormalTransferPending": "{{count}} समीक्षा बाँकी", + "abnormalTransferScope": "वालेट मिलानबाट चिनिएको", + "agent": { + "activePlayersToday": "आज सक्रिय खेलाडी", + "betOrdersToday": "आजका बाजी अर्डर", + "betOrdersTodayHint": "आज {{count}} अर्डर", + "canCreateChildAgent": "सन्तान एजेन्ट सिर्जना गर्न सक्छ", + "canCreatePlayer": "खेलाडी सिर्जना गर्न सक्छ", + "creditAllocated": "बाँडिएको {{amount}}", + "creditAllocatedLabel": "बाँडिएको क्रेडिट", + "creditAvailable": "उपलब्ध {{amount}}", + "creditTitle": "क्रेडिट सीमा", + "creditUsed": "प्रयोग {{amount}}", + "creditUsedLabel": "प्रयोग भएको क्रेडिट", + "directChildren": "प्रत्यक्ष सन्तान एजेन्ट", + "directPlayers": "प्रत्यक्ष खेलाडी", + "focusBet": "आजको बाजी मात्रा निगरानी", + "focusBills": "पछ्याउन बाँकी बिल", + "focusPlayers": "आजका सक्रिय खेलाडी", + "heroEyebrow": "आजको लाइन ककपिट", + "heroTitle": "{{name}} प्रत्यक्ष सञ्चालन", + "latestBetAt": "पछिल्लो बाजी {{time}}", + "lineDepth": "लाइन गहिराइ", + "lineMeta": "गहिराइ {{depth}} · सन्तान एजेन्ट {{childAgent}} · खेलाडी {{player}}", + "managementFocus": "व्यवस्थापन केन्द्र", + "no": "होइन", + "noBetToday": "आज अहिलेसम्म बाजी छैन", + "overviewEmpty": "लाइन सञ्चालन डाटा छैन। एजेन्ट बाइन्डिङ जाँच गर्नुहोस्।", + "pendingBills": "बाँकी बिल", + "pendingUnpaid": "नतिरेको {{amount}}", + "quickLinks": { + "agents": "अधीनस्थ एजेन्ट", + "bills": "एजेन्ट बिल", + "players": "खेलाडी", + "reports": "रिपोर्ट", + "tickets": "टिकट" + }, + "quickStatsTitle": "लाइन अनुमति झलक", + "settlementCycle": "चक्र {{cycle}}", + "sevenDayBet": "७-दिने बाजी", + "sevenDayPayout": "भुक्तानी {{amount}}", + "sevenDayPayoutLabel": "७-दिने भुक्तानी", + "sevenDayProfit": "नाफा {{amount}}", + "sevenDayShareProfit": "शेयर नाफा {{amount}}", + "sevenDayShareProfitLabel": "७-दिने शेयर नाफा", + "sevenDayTitle": "पछिल्लो ७ दिन", + "shareProfitScopeHint": "यस नोडको शेयर नाफा (share_snapshot)", + "shareRate": "कुल शेयर {{rate}}%", + "subtitle": "{{name}} · यो लाइन", + "subtreeAgents": "लाइन एजेन्ट", + "teamPlayers": "लाइन खेलाडी", + "teamTitle": "टोली परिमाण", + "title": "सञ्चालन सारांश", + "todayBet": "आजको बाजी", + "todayPayout": "आजको भुक्तानी", + "todayProfit": "आजको नाफा", + "todayShareProfit": "आजको शेयर नाफा", + "topMomentum": "आजको बाजी केन्द्र", + "topMomentumHint": "नाफा {{profit}}", + "topMomentumPayout": "भुक्तानी {{amount}}", + "viewBills": "बिल हेर्नुहोस्", + "viewLine": "एजेन्ट लाइन", + "yes": "हो" }, - "countdownToClose": "बन्द हुन बाँकी", - "scheduledDrawTime": "ड्रअ {{time}}", "analytics": { - "title": "वित्त सारांश", - "periodLabel": "अवधि", - "metricLabel": "मेट्रिक", - "playLabel": "प्ले फिल्टर", + "agentRanking": "शीर्ष ५ एजेन्ट", "allPlays": "सबै प्ले", - "customRange": "मिति दायरा", - "rangeHint": "अवधि {{range}}", - "selectPeriod": "अवधि छान्नुहोस्", "chartTruncated": "ट्रेन्ड {{from}} — {{to}} मात्र (कुल {{days}} दिन)", - "summaryBet": "अवधि बेट", - "summaryPayout": "अवधि भुक्तानी", - "summaryProfit": "अवधि नाफा", + "customRange": "मिति दायरा", "dailyTrend": "अवधि ट्रेन्ड", "granularityDay": "दैनिक", + "metricLabel": "मेट्रिक", + "metrics": { + "bet": "बेट", + "overview": "सिंहावलोकन", + "payout": "भुक्तानी", + "profit": "नाफा" + }, + "noAgentData": "यस अवधिमा एजेन्ट डाटा छैन", + "noPlayData": "यस अवधिमा प्ले डाटा छैन", + "periodDistribution": "अवधि संरचना", + "periodLabel": "अवधि", + "periods": { + "custom": "अनुकूल", + "last_30_days": "पछिल्लो ३० दिन", + "last_7_days": "पछिल्लो ७ दिन", + "lifetime": "सबै", + "this_month": "यो महिना", + "today": "आज" + }, "playBreakdown": "प्ले विभाजन", + "playLabel": "प्ले फिल्टर", "playRanking": "शीर्ष ५ प्ले", - "agentRanking": "शीर्ष ५ एजेन्ट", + "rangeHint": "अवधि {{range}}", "rankingMetricLabel": "रैंकिङ मेट्रिक", "rankingMetrics": { "bet": "बेट रकम", "payout": "भुक्तानी", "profit": "नाफा" }, - "periodDistribution": "अवधि संरचना", - "noPlayData": "यस अवधिमा प्ले डाटा छैन", - "noAgentData": "यस अवधिमा एजेन्ट डाटा छैन", - "periods": { - "today": "आज", - "last_7_days": "पछिल्लो ७ दिन", - "last_30_days": "पछिल्लो ३० दिन", - "this_month": "यो महिना", - "lifetime": "सबै", - "custom": "अनुकूल" - }, - "metrics": { - "overview": "सिंहावलोकन", - "bet": "बेट", - "payout": "भुक्तानी", - "profit": "नाफा" - } + "selectPeriod": "अवधि छान्नुहोस्", + "shareProfitHint": "विभाजन पछि तपाईंको शेयर — प्लेटफर्म वा सम्पूर्ण टोलीको कुल नाफा/नोक्सान होइन", + "summaryBet": "अवधि बेट", + "summaryPayout": "अवधि भुक्तानी", + "summaryProfit": "अवधि नाफा", + "summaryShareProfit": "आफ्नो शेयर नाफा", + "title": "वित्त सारांश" }, + "batchOther": "अन्य स्थिति", + "batchPending": "समीक्षा बाँकी", + "batchPendingDraws": "सम्बन्धित ड्रअ", + "batchPendingDrawsCount": "{{count}} ड्रअ पेन्डिङ", + "batchPublished": "प्रकाशित", + "batchTotal": "कुल ब्याच", + "capUsage": "क्याप प्रयोग", "chartLegend": { "bet": "बेट", "payout": "भुक्तानी", "profit": "नाफा" }, - "playBreakdownHint": "भुक्तानी {{payout}} · नाफा {{profit}}", - "viewReports": "प्रतिवेदन", - "lifetimeBetTotal": "जम्मा बेट", - "lifetimePayout": "जम्मा भुक्तानी", - "lifetimeProfit": "जम्मा प्लेटफर्म नाफा", - "lifetimeActivityHint": "{{draws}} ड्रअमा बेट · {{days}} व्यापार दिन", - "lifetimeDateRangeHint": "अवधि {{range}}", - "currentDrawBetTotal": "हालको ड्रअ बेट", - "currentDrawPayout": "हालको भुक्तानी", - "currentDrawProfit": "हालको नाफा/नोक्सान", - "drawFinanceDetails": "ड्रअ वित्त विवरण", - "detailsShort": "विवरण", - "todayBetTotal": "आजको कुल बेट", - "todayPayout": "आजको भुक्तानी", - "todayProfit": "आजको नाफा/नोक्सान", - "todayBusinessDateHint": "व्यापार मिति {{date}}", - "todayPayoutHint": "भुक्तानी {{amount}}", - "drawNoHint": "ड्रअ {{drawNo}}", - "orderAndTicket": "{{orders}} अर्डर · {{tickets}} वस्तु", - "marginRate": "सकल मार्जिन ~{{rate}}%", - "financeStructure": "बेट कोष संरचना", - "payoutComposition": "भुक्तानी संरचना", - "winPayout": "जित भुक्तानी", - "jackpotPayout": "Jackpot भुक्तानी", - "houseGross": "प्लेटफर्म बाँकी", - "payoutRateOfBet": "भुक्तानी/बेट {{rate}}%", - "noFinanceActivity": "यस ड्रअमा बेट छैन", - "noPayoutYet": "यस ड्रअमा भुक्तानी छैन", - "resultBatches": "परिणाम ब्याच प्रगति", - "resultBatchQueueScope": "साइटव्यापी नतिजा ब्याच", - "batchPending": "समीक्षा बाँकी", - "batchPendingDraws": "सम्बन्धित ड्रअ", - "batchPendingDrawsCount": "{{count}} ड्रअ पेन्डिङ", - "platformLockedAndCap": "साइट लक {{locked}} / क्याप {{cap}}", - "platformLockedLabel": "लक", - "platformCapLabel": "क्याप", - "platformCapUnset": "सेट छैन", - "platformCapNotConfigured": "साइट लक {{locked}} · क्याप कन्फिगर गरिएको छैन", - "platformOrderAndTicket": "साइटव्यापी {{orders}} अर्डर · {{tickets}} लाइन", - "platformBetTotal": "जम्मा बेट", - "platformNoFinanceActivity": "साइटव्यापी अहिले बेट छैन", - "platformNoPayoutYet": "साइटव्यापी पेआउट छैन", - "batchPublished": "प्रकाशित", - "batchTotal": "कुल ब्याच", - "batchOther": "अन्य स्थिति", - "settlementOverview": "सेटलमेन्ट ब्याच", - "noSettlementBatches": "सेटलमेन्ट ब्याच छैन", - "quickLinksTitle": "छिटो लिङ्क", - "currentPayout": "हालको भुक्तानी", - "currentProfit": "हालको प्लेटफर्म नाफा", - "currentDraw": "हालको ड्रअ", - "drawSequence": "राउन्ड {{sequence}}", - "drawDetails": "ड्रअ विवरण", - "ticketCount": "टिकट वस्तु संख्या", - "relatedBetAmount": "सम्बन्धित बेट रकम", - "riskCapUsage": "जोखिम क्याप प्रयोग", - "lockedAndCap": "लक {{locked}} / क्याप {{cap}}", - "occupancyDetails": "अकुपेन्सी विवरण", - "hotNumbersTop10": "शीर्ष 10 हट नम्बर", - "playDimension": "प्ले डाइमेन्सन", - "soldOutDistribution": "बिक्री समाप्त वितरण", - "soldOutTotal": "कुल बिक्री समाप्त", - "pendingReviewResults": "समीक्षा बाँकी परिणाम", - "abnormalTransferOrders": "असामान्य ट्रान्सफर अर्डर", - "abnormalTransferScope": "वालेट मिलानबाट चिनिएको", - "abnormalTransferPending": "{{count}} समीक्षा बाँकी", - "abnormalTransferAllClear": "मिलान ठीक, असामान्य छैन", - "abnormalTransferAction": "समाधान गर्न ट्रान्सफर सूची खोल्नुहोस्", - "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": "वालेट कारोबार", - "auditLogs": "अडिट लग", - "reports": "रिपोर्ट केन्द्र", - "payoutRules": "बाधा र रिबेट", - "riskMonitor": "जोखिम निगरानी", - "systemSettings": "प्रणाली सेटिङ" - }, - "site": { - "title": "साइट सारांश", - "subtitle": "{{name}} · यो साइट", - "todayBet": "आजको बाजी", - "todayProfit": "आजको नाफा/नोक्सान", - "sevenDayTitle": "पछिल्लो ७ दिन", - "sevenDayBet": "७-दिने बाजी", - "sevenDayPayout": "७-दिने भुक्तानी", - "sevenDayProfit": "७-दिने नाफा/नोक्सान", - "profitScopeHint": "साइट दायरा: बाजी माइनस भुक्तानी", - "activePlayersToday": "आज सक्रिय खेलाडी", - "betOrdersTodayHint": "आज {{count}} अर्डर", - "pendingBills": "बाँकी बिल", - "pendingUnpaid": "नतिरेको {{amount}}", - "latestBetAt": "पछिल्लो बाजी {{time}}", - "noBetToday": "आज अहिलेसम्म बाजी छैन", - "scaleTitle": "साइट परिमाण", - "agentCount": "एजेन्ट नोड", - "playerCount": "खेलाडी संख्या", - "topAgentToday": "आजको शीर्ष एजेन्ट: {{name}} ({{amount}})", - "topAgentTodayLabel": "आजको शीर्ष एजेन्ट", - "overviewEmpty": "साइट सञ्चालन डाटा छैन। कृपया साइट बाइन्डिङ जाँच गर्नुहोस्।", - "quickLinks": { - "tickets": "टिकट", - "players": "खेलाडी", - "reports": "रिपोर्ट", - "agents": "एजेन्ट", - "bills": "सेटलमेन्ट" - } - }, - "finance": { - "title": "वित्त कार्यस्थल", - "subtitle": "{{name}} · मिलान र सेटलमेन्ट", - "subtitleFallback": "साइट वित्त · मिलान र सेटलमेन्ट", - "abnormalTransfers": "असामान्य स्थानान्तरण", - "pendingConfirmBills": "पुष्टि बाँकी बिल", - "pendingConfirmHint": "अवधि बन्द पछि वित्त पुष्टि बाँकी", - "payableBills": "भुक्तानी बाँकी बिल", - "payableUnpaid": "नतिरेको {{amount}}", - "payableUnpaidLabel": "कुल बाँकी", - "walletPlayers": "वालेट खेलाडी", - "creditPlayersHint": "क्रेडिट {{count}} जना", - "settlementTitle": "क्रेडिट सेटलमेन्ट", - "reconcileTitle": "वालेट मिलान", - "overviewEmpty": "वित्त सारांश छैन। साइट बाइन्डिङ जाँच गर्नुहोस्।", - "quickLinks": { - "reconcile": "मिलान केन्द्र", - "transfers": "स्थानान्तरण", - "bills": "सेटलमेन्ट केन्द्र", - "reports": "रिपोर्ट" - } - }, + "countdownToClose": "बन्द हुन बाँकी", "cs": { - "title": "सपोर्ट कार्यस्थल", - "subtitle": "{{name}} · खेलाडी र टिकट", - "subtitleFallback": "साइट सपोर्ट · खेलाडी र टिकट", - "playerCount": "साइट खेलाडी", - "playerCountHint": "यो साइटका दर्ता खेलाडी", - "ticketsToday": "आजका टिकट", - "activePlayersToday": "आज सक्रिय खेलाडी", "activePlayersHint": "आज बाजी गर्ने खेलाडी", + "activePlayersToday": "आज सक्रिय खेलाडी", "latestTicketAt": "पछिल्लो टिकट {{time}}", "noTicketToday": "आज टिकट छैन", - "workspaceTitle": "छिटो पहुँच", - "scopeTitle": "आजको झलक", "openModule": "मोड्युल खोल्नुहोस्", "overviewEmpty": "सपोर्ट सारांश छैन। साइट बाइन्डिङ जाँच गर्नुहोस्।", + "playerCount": "साइट खेलाडी", + "playerCountHint": "यो साइटका दर्ता खेलाडी", "quickLinks": { "players": "खेलाडी", "tickets": "टिकट", "wallet": "वालेट लेजर" - } + }, + "scopeTitle": "आजको झलक", + "subtitle": "{{name}} · खेलाडी र टिकट", + "subtitleFallback": "साइट सपोर्ट · खेलाडी र टिकट", + "ticketsToday": "आजका टिकट", + "title": "सपोर्ट कार्यस्थल", + "workspaceTitle": "छिटो पहुँच" }, - "agent": { - "title": "सञ्चालन सारांश", - "subtitle": "{{name}} · यो लाइन", - "creditTitle": "क्रेडिट सीमा", - "creditAvailable": "उपलब्ध {{amount}}", - "creditAllocatedLabel": "बाँडिएको क्रेडिट", - "creditUsedLabel": "प्रयोग भएको क्रेडिट", - "shareRate": "कुल शेयर {{rate}}%", - "shareProfitScopeHint": "यस नोडको शेयर नाफा (share_snapshot)", - "teamTitle": "टोली परिमाण", - "directChildren": "प्रत्यक्ष सन्तान एजेन्ट", - "directPlayers": "प्रत्यक्ष खेलाडी", - "subtreeAgents": "लाइन एजेन्ट", - "teamPlayers": "लाइन खेलाडी", + "currentDraw": "हालको ड्रअ", + "currentDrawBetTotal": "हालको ड्रअ बेट", + "currentDrawFinanceHint": "तलका चार्ट ड्र {{drawNo}} का लागि", + "currentDrawPayout": "हालको भुक्तानी", + "currentDrawProfit": "हालको नाफा/नोक्सान", + "currentPayout": "हालको भुक्तानी", + "currentProfit": "हालको प्लेटफर्म नाफा", + "detailsShort": "विवरण", + "drawDetails": "ड्रअ विवरण", + "drawFinanceDetails": "ड्रअ वित्त विवरण", + "drawNoHint": "ड्रअ {{drawNo}}", + "drawSequence": "राउन्ड {{sequence}}", + "finance": { + "abnormalTransfers": "असामान्य स्थानान्तरण", + "creditPlayersHint": "क्रेडिट {{count}} जना", + "overviewEmpty": "वित्त सारांश छैन। साइट बाइन्डिङ जाँच गर्नुहोस्।", + "payableBills": "भुक्तानी बाँकी बिल", + "payableUnpaid": "नतिरेको {{amount}}", + "payableUnpaidLabel": "कुल बाँकी", + "pendingConfirmBills": "पुष्टि बाँकी बिल", + "pendingConfirmHint": "अवधि बन्द पछि वित्त पुष्टि बाँकी", + "quickLinks": { + "bills": "सेटलमेन्ट केन्द्र", + "reconcile": "मिलान केन्द्र", + "reports": "रिपोर्ट", + "transfers": "स्थानान्तरण" + }, + "reconcileTitle": "वालेट मिलान", + "settlementTitle": "क्रेडिट सेटलमेन्ट", + "subtitle": "{{name}} · मिलान र सेटलमेन्ट", + "subtitleFallback": "साइट वित्त · मिलान र सेटलमेन्ट", + "title": "वित्त कार्यस्थल", + "walletPlayers": "वालेट खेलाडी" + }, + "financeStructure": "बेट कोष संरचना", + "hotNumbersTop10": "शीर्ष 10 हट नम्बर", + "houseGross": "प्लेटफर्म बाँकी", + "jackpotPayout": "Jackpot भुक्तानी", + "lifetimeActivityHint": "{{draws}} ड्रअमा बेट · {{days}} व्यापार दिन", + "lifetimeBetTotal": "जम्मा बेट", + "lifetimeDateRangeHint": "अवधि {{range}}", + "lifetimePayout": "जम्मा भुक्तानी", + "lifetimeProfit": "जम्मा प्लेटफर्म नाफा", + "lockedAndCap": "लक {{locked}} / क्याप {{cap}}", + "marginRate": "सकल मार्जिन ~{{rate}}%", + "noFinanceActivity": "यस ड्रअमा बेट छैन", + "noPayoutYet": "यस ड्रअमा भुक्तानी छैन", + "noPoolData": "यस डाइमेन्सनमा पूल डाटा छैन", + "noSettlementBatches": "सेटलमेन्ट ब्याच छैन", + "noSoldOutNumbers": "बिक्री समाप्त नम्बर छैन", + "notice": "सूचना", + "numbersByUsage": "प्रयोग अनुसार नम्बर", + "occupancyDetails": "अकुपेन्सी विवरण", + "orderAndTicket": "{{orders}} अर्डर · {{tickets}} वस्तु", + "payoutComposition": "भुक्तानी संरचना", + "payoutRateOfBet": "भुक्तानी/बेट {{rate}}%", + "pendingReviewResults": "समीक्षा बाँकी परिणाम", + "platformBetTotal": "जम्मा बेट", + "platformCapLabel": "क्याप", + "platformCapNotConfigured": "साइट लक {{locked}} · क्याप कन्फिगर गरिएको छैन", + "platformCapUnset": "सेट छैन", + "platformLockedAndCap": "साइट लक {{locked}} / क्याप {{cap}}", + "platformLockedLabel": "लक", + "platformNoFinanceActivity": "साइटव्यापी अहिले बेट छैन", + "platformNoPayoutYet": "साइटव्यापी पेआउट छैन", + "platformOrderAndTicket": "साइटव्यापी {{orders}} अर्डर · {{tickets}} लाइन", + "playBreakdownHint": "भुक्तानी {{payout}} · नाफा {{profit}}", + "playDimension": "प्ले डाइमेन्सन", + "quickLinks": { + "auditLogs": "अडिट लग", + "createDrawPlan": "ड्रअ योजना सिर्जना", + "drawSchedule": "खुला बिक्री / ड्रअ", + "payoutRules": "बाधा र रिबेट", + "reports": "रिपोर्ट केन्द्र", + "results": "परिणाम", + "riskMonitor": "जोखिम निगरानी", + "systemSettings": "प्रणाली सेटिङ", + "tickets": "टिकट व्यवस्थापन", + "walletTransactions": "वालेट कारोबार" + }, + "quickLinksTitle": "छिटो लिङ्क", + "refresh": "रिफ्रेस", + "relatedBetAmount": "सम्बन्धित बेट रकम", + "resultBatchQueueScope": "साइटव्यापी नतिजा ब्याच", + "resultBatches": "परिणाम ब्याच प्रगति", + "riskCapUsage": "जोखिम क्याप प्रयोग", + "scheduledDrawTime": "ड्रअ {{time}}", + "sections": { + "currentDraw": "हालको ड्रअ", + "currentDrawDetail": "हालको ड्रअ · {{drawNo}}", + "lifetime": "ऐतिहासिक कुल", + "operations": "सञ्चालन (साइटव्यापी)", + "snapshot": "हालको ड्रअ स्न्यापसट", + "today": "आजको सारांश" + }, + "settlementOverview": "सेटलमेन्ट ब्याच", + "site": { "activePlayersToday": "आज सक्रिय खेलाडी", + "agentCount": "एजेन्ट नोड", "betOrdersTodayHint": "आज {{count}} अर्डर", - "todayBet": "आजको बाजी", - "todayShareProfit": "आजको शेयर नाफा", - "sevenDayTitle": "पछिल्लो ७ दिन", - "sevenDayBet": "७-दिने बाजी", - "sevenDayPayoutLabel": "७-दिने भुक्तानी", - "sevenDayShareProfitLabel": "७-दिने शेयर नाफा", - "pendingBills": "बाँकी बिल", - "pendingUnpaid": "नतिरेको {{amount}}", "latestBetAt": "पछिल्लो बाजी {{time}}", "noBetToday": "आज अहिलेसम्म बाजी छैन", - "yes": "हो", - "no": "होइन", - "lineMeta": "गहिराइ {{depth}} · सन्तान एजेन्ट {{childAgent}} · खेलाडी {{player}}", - "overviewEmpty": "लाइन सञ्चालन डाटा छैन। एजेन्ट बाइन्डिङ जाँच गर्नुहोस्।" + "overviewEmpty": "साइट सञ्चालन डाटा छैन। कृपया साइट बाइन्डिङ जाँच गर्नुहोस्।", + "pendingBills": "बाँकी बिल", + "pendingUnpaid": "नतिरेको {{amount}}", + "playerCount": "खेलाडी संख्या", + "profitScopeHint": "साइट दायरा: बाजी माइनस भुक्तानी", + "quickLinks": { + "agents": "एजेन्ट", + "bills": "सेटलमेन्ट", + "players": "खेलाडी", + "reports": "रिपोर्ट", + "tickets": "टिकट" + }, + "scaleTitle": "साइट परिमाण", + "sevenDayBet": "७-दिने बाजी", + "sevenDayPayout": "७-दिने भुक्तानी", + "sevenDayProfit": "७-दिने नाफा/नोक्सान", + "sevenDayTitle": "पछिल्लो ७ दिन", + "subtitle": "{{name}} · यो साइट", + "title": "साइट सारांश", + "todayBet": "आजको बाजी", + "todayProfit": "आजको नाफा/नोक्सान", + "topAgentToday": "आजको शीर्ष एजेन्ट: {{name}} ({{amount}})", + "topAgentTodayLabel": "आजको शीर्ष एजेन्ट" }, + "soldOutBuckets": { + "d2": "2D", + "d3": "3D", + "d4": "4D", + "other": "अन्य", + "special": "विशेष" + }, + "soldOutDistribution": "बिक्री समाप्त वितरण", + "soldOutTotal": "कुल बिक्री समाप्त", + "tabs": { + "2d": "2D", + "3d": "3D", + "4d": "4D", + "special": "विशेष" + }, + "ticketCount": "टिकट वस्तु संख्या", + "title": "ड्यासबोर्ड", + "todayBetTotal": "आजको कुल बेट", + "todayBusinessDateHint": "व्यापार मिति {{date}}", + "todayPayout": "आजको भुक्तानी", + "todayPayoutHint": "भुक्तानी {{amount}}", + "todayProfit": "आजको नाफा/नोक्सान", + "viewReports": "प्रतिवेदन", + "viewTransferOrders": "ट्रान्सफर अर्डर हेर्नुहोस्", "warnings": { - "drawPermission": "यो खातासँग ड्रअ/ड्यासबोर्ड हेर्ने अनुमति छैन। वित्तीय र जोखिम डाटा फिर्ता आएन।", - "walletPermission": "यो खातासँग वालेट मिलान हेर्ने अनुमति छैन। असामान्य ट्रान्सफर संख्या फिर्ता आएन।", "analyticsUnavailable": "ट्रेन्ड/र्याङ्किङ विश्लेषण उपलब्ध छैन। माथिको KPI हेर्न सकिन्छ।", - "loadFailed": "लोड असफल भयो। API र लगइन अवस्था जाँच गर्नुहोस्।" - } + "apiResourceMissing": "ड्यासबोर्ड विश्लेषण API दर्ता छैन। चलाउनुहोस्: php artisan lottery:admin-auth-sync (वा पछिल्लो माइग्रेसन), त्यसपछि रिफ्रेस।", + "drawPermission": "यो खातासँग ड्रअ/ड्यासबोर्ड हेर्ने अनुमति छैन। वित्तीय र जोखिम डाटा फिर्ता आएन।", + "loadFailed": "लोड असफल भयो। API र लगइन अवस्था जाँच गर्नुहोस्।", + "walletPermission": "यो खातासँग वालेट मिलान हेर्ने अनुमति छैन। असामान्य ट्रान्सफर संख्या फिर्ता आएन।" + }, + "winPayout": "जित भुक्तानी" } diff --git a/src/i18n/locales/ne/draws.json b/src/i18n/locales/ne/draws.json index aca367e..4704bf8 100644 --- a/src/i18n/locales/ne/draws.json +++ b/src/i18n/locales/ne/draws.json @@ -1,229 +1,235 @@ { - "title": "ड्रअ", - "statusListTitle": "ड्रअ सूची", - "pageGuide": "ड्र जीवनचक्र व्यवस्थापन: योजना, बन्द, नतिजा समीक्षा र सेटलमेन्ट।", - "generatePlan": "ड्रअ योजना सिर्जना", - "generating": "सिर्जना हुँदैछ…", - "generateSuccess": "{{created}} ड्रअ सिर्जना भयो, बफर {{upcoming}}/{{target}}", - "generateFailed": "सिर्जना असफल भयो", - "scheduleTimezoneHint": "सूची समय स्थानीय समयक्षेत्र {{tz}} मा; सर्भर UTC मा भण्डारण। ड्र अन्तराल {{interval}} मिनेट।", - "createDraw": { - "open": "नयाँ ड्रअ", - "title": "म्यानुअल ड्रअ सिर्जना", - "description": "स्थानीय समयक्षेत्र {{tz}} मा मिति र समय प्रविष्ट गर्नुहोस्।", - "hint": "सुरु < बन्द < ड्रअ। ड्रअ नम्बर वैकल्पिक।", - "drawNoPlaceholder": "ड्रअ नम्बर प्रविष्ट गर्नुहोस्, जस्तै 20260526-008", - "drawTimeRequired": "ड्रअ समय आवश्यक छ", - "submit": "सिर्जना", - "saving": "सिर्जना हुँदैछ…", - "success": "ड्रअ सिर्जना भयो", - "failed": "सिर्जना असफल" - }, - "drawNo": "ड्रअ नं.", - "status": "स्थिति", - "startTime": "सुरु समय", - "closeTime": "बन्द समय", - "drawTime": "ड्रअ समय", - "betTotal": "कुल बेट", - "payoutTotal": "कुल भुक्तानी", - "profitLoss": "नाफा/नोक्सानी", + "actionFailed": "{{name}} असफल भयो", + "actionSuccess": "{{name}} सफल भयो", "actions": "कार्य", - "queryDraw": "ड्रअ खोज्नुहोस्", - "reset": "रिसेट", - "fuzzyDrawNo": "फजी ड्रअ नं.", - "viewDetails": "विवरण हेर्नुहोस्", - "editDraw": { - "action": "सम्पादन", - "title": "ड्रअ सम्पादन", - "description": "ड्रअ {{drawNo}} · स्थानीय समयक्षेत्र {{tz}} मा सम्पादन", - "drawNoPlaceholder": "ड्रअ नम्बर प्रविष्ट गर्नुहोस्, जस्तै 20260526-008", - "submit": "सेभ", - "saving": "सेभ हुँदैछ…", - "success": "ड्रअ अद्यावधिक भयो", - "failed": "अद्यावधिक असफल" - }, - "deleteDraw": { - "action": "मेटाउनुहोस्", - "title": "ड्रअ मेटाउनुहोस्", - "description": "ड्रअ {{drawNo}} मेटाउने? केवल pending र बेट नभएको।", - "success": "ड्रअ मेटाइयो", - "failed": "मेटाउन असफल" - }, - "cancelFromList": { - "action": "रद्द", - "title": "ड्रअ रद्द", - "description": "ड्रअ {{drawNo}} रद्द गर्ने?" - }, - "listActionsHint": "बेट नभएको pending: सम्पादन/मेटाउन; अन्य: विवरण पृष्ठ।", - "invalidDrawId": "अवैध ड्रअ ID", - "loadFailed": "लोड असफल भयो। लगइन र API कन्फिग जाँच गर्नुहोस्।", - "drawDetail": "ड्रअ विवरण", - "detailSubtitle": "{{date}} · राउन्ड {{seq}}", - "scheduleTitle": "तालिका", - "resultBatchesTitle": "नतिजा ब्याच", - "batchSummaryTotal": "जम्मा {{count}}", - "batchSummaryPending": "समीक्षा {{count}}", - "batchSummaryPublished": "प्रकाशित {{count}}", - "noResultBatchesYet": "अहिलेसम्म कुनै नतिजा ब्याच छैन।", - "goToReviewTab": "समीक्षा र प्रकाशन", - "businessDate": "व्यवसाय मिति", - "sequenceNo": "क्रम संख्या", - "plannedDraw": "योजनाबद्ध ड्रअ", - "coolingEndTime": "कुलिङ समाप्ति", - "resultSource": "नतिजा स्रोत", - "resultSourceOptions": { - "rng": "RNG स्वचालित", - "manual": "म्यानुअल प्रविष्टि" + "actualBet": "वास्तविक कटौती बेट", + "backToList": "ड्र सूचीमा फर्कनुहोस्", + "backToReviewQueue": "समीक्षा सूचीमा फर्कनुहोस्", + "batchDelete": { + "action": "{{count}} ड्रअ मेटाउनुहोस्", + "confirmDescription": "{{count}} विना दांवका ड्रअहरू मेटाउनेछ। यो पूर्ववत गर्न सकिँदैन।", + "confirmTitle": "ब्याच मेटाउने पुष्टि?", + "deleting": "मेटाउँदै…", + "failed": "ब्याच मेटाउन असफल", + "partialFailed": "आंशिक असफल: {{success}} सफल, {{failed}} असफल", + "success": "सफलतापूर्वक {{count}} ड्रअ मेटाइयो" }, + "batchId": "ब्याच ID", + "batchNotFound": "ब्याच भेटिएन", + "batchNotFoundDesc": "समीक्षा सूचीमा फर्केर batch ID जाँच गर्नुहोस्।", + "batchStats": "ब्याच तथ्यांक", "batchStatusOptions": { "pending_review": "समीक्षा बाँकी", "published": "प्रकाशित" }, - "currentResultVersion": "हालको नतिजा संस्करण", - "settleVersion": "सेटलमेन्ट संस्करण", - "isReopened": "फेरि खोलिएको", - "yes": "हो", - "no": "होइन", - "batchStats": "ब्याच तथ्यांक", + "batchSummaryPending": "समीक्षा {{count}}", + "batchSummaryPublished": "प्रकाशित {{count}}", + "batchSummaryTotal": "जम्मा {{count}}", "batchTotal": "कुल ब्याच", - "pendingReview": "समीक्षा बाँकी", - "published": "प्रकाशित", - "viewFinance": "ड्रअ वित्त हेर्नुहोस्", - "drawActions": "ड्रअ कार्य", - "drawActionsDesc": "म्यानुअल बन्द / रद्द / RNG / पुनःखोलाइ / सेटलमेन्ट सबै सीधै ब्याकएन्ड API मा जान्छ।", - "manualClose": "म्यानुअल बन्द", - "cancelDraw": "ड्रअ रद्द", + "betTotal": "कुल बेट", + "businessDate": "व्यवसाय मिति", "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": "समाप्त समय", - "jackpotPayout": "ज्याकपट भुक्तानी", - "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 बन्छ, सिधै प्रकाशित हुँदैन", - "currentStatusLabel": "हालको स्थिति", - "currentStatusDraftHint": "सेभ गरेपछि समीक्षा बाँकी ब्याच बन्छ, सिधै प्रकाशित हुँदैन", - "hallPreviewStatusLabel": "हल पूर्वावलोकन", - "enter23Numbers": "कृपया 23 वटा 4-अङ्क समूह पूरा भर्नुहोस्", - "draftSaved": "ड्राफ्ट v{{version}} सुरक्षित भयो, प्रकाशनको प्रतिक्षामा", - "saveFailed": "सेभ असफल भयो", - "fillRandomNumbers": "अनियमित भर्नुहोस्", - "clear": "खाली गर्नुहोस्", - "saveDraft": "ड्राफ्ट सुरक्षित गर्नुहोस्", - "saving": "सेभ हुँदैछ…", - "pendingBatches": "बाँकी ब्याच", - "noPendingBatches": "समीक्षा बाँकी ब्याच छैन।", - "batchId": "ब्याच ID", - "numberCount": "नम्बर संख्या", - "reviewAndPublishAction": "जाँचेर प्रकाशित गर्नुहोस्", - "discardPendingBatch": "ड्राफ्ट मेटाउनुहोस्", - "discardingPendingBatch": "मेटाउँदै…", - "discardPendingBatchSuccess": "पेन्डिङ ब्याच मेटियो। पुनः नम्बर राख्न वा RNG चलाउन सकिन्छ।", - "discardPendingBatchFailed": "मेटाउन असफल", - "publishReadOnlyHint": "यो पृष्ठ केवल जाँचका लागि हो। नम्बर बदल्न पहिले यो ब्याच मेटाउनुहोस् र म्यानुअल प्रविष्टिबाट नयाँ ड्राफ्ट सुरक्षित गर्नुहोस्।", - "noPublishPermission": "प्रकाशन अनुमति छैन", - "batchNotFound": "ब्याच भेटिएन", - "batchNotFoundDesc": "समीक्षा सूचीमा फर्केर batch ID जाँच गर्नुहोस्।", - "backToReviewQueue": "समीक्षा सूचीमा फर्कनुहोस्", - "publishTitle": "प्रकाशित", + "cancelDraw": "ड्रअ रद्द", + "cancelFromList": { + "action": "रद्द", + "description": "ड्रअ {{drawNo}} रद्द गर्ने?", + "title": "ड्रअ रद्द" + }, "cannotPublish": "प्रकाशित गर्न मिल्दैन", "cannotPublishDesc": "हालको ब्याच स्थिति '{{status}}' हो।", "checkBeforePublish": "प्रकाशन अघि नम्बर जाँच गर्नुहोस्", "checkBeforePublishDesc": "सही भएपछि मात्र प्रकाशित गर्नुहोस्।", - "publishedView": "प्रकाशित नतिजा हेर्नुहोस्", + "clear": "खाली गर्नुहोस्", + "closeTime": "बन्द समय", + "confirm": { + "cancelDrawDescription": "यो ड्रअ खुल्ने छैन।", + "cancelDrawTitle": "ड्रअ रद्द पुष्टि?", + "discardPendingBatchDescription": "२३ नम्बरको ड्राफ्ट मेटिन्छ र ड्रअ «बन्द — नतिजा पर्खँदै» मा फर्किन्छ। पुनः प्रविष्टि वा RNG गर्न सकिन्छ।", + "discardPendingBatchTitle": "पेन्डिङ नतिजा ब्याच मेटाउने?", + "generatePlanDescription": "भविष्यका ड्रअहरू सिर्जना हुनेछन्।", + "generatePlanTitle": "ड्रअ योजना सिर्जना पुष्टि?", + "manualCloseDescription": "खेलाडीहरूले यो ड्रअमा थप दांव लगाउन सक्ने छैनन्।", + "manualCloseTitle": "म्यानुअल बन्द पुष्टि?", + "publishDescription": "खेलाडीहरूले नतिजा देख्नेछन्।", + "publishTitle": "नतिजा प्रकाशन पुष्टि?", + "reopenDescription": "नतिजा पुनः समीक्षा हुन सक्छ।", + "reopenTitle": "कुलडाउन पुनः खोल्ने पुष्टि?", + "rngDrawDescription": "प्रणालीले नतिजा सिर्जना गर्नेछ।", + "rngDrawTitle": "RNG ड्रअ पुष्टि?", + "runSettlementDescription": "प्रकाशित नतिजाबाट सेटलमेन्ट ब्याच बन्नेछ।", + "runSettlementTitle": "सेटलमेन्ट सुरु पुष्टि?", + "saveManualDraftDescription": "२३ नम्बर समीक्षाका लागि सुरक्षित हुनेछ।", + "saveManualDraftTitle": "म्यानुअल ड्राफ्ट सुरक्षित पुष्टि?" + }, "confirmPublish": "प्रकाशन पुष्टि गर्नुहोस्", - "submitting": "पेश हुँदैछ…", - "publishSuccess": "प्रकाशित भयो · {{drawNo}} · स्थिति {{status}}", + "confirmedAt": "पुष्टि समय {{time}}", + "cooldownReopen": "कुलिङमा पुनःखोल्नुहोस्", + "coolingEndTime": "कुलिङ समाप्ति", + "createDraw": { + "description": "स्थानीय समयक्षेत्र {{tz}} मा मिति र समय प्रविष्ट गर्नुहोस्।", + "drawNoPlaceholder": "ड्रअ नम्बर प्रविष्ट गर्नुहोस्, जस्तै 20260526-008", + "drawTimeRequired": "ड्रअ समय आवश्यक छ", + "failed": "सिर्जना असफल", + "hint": "सुरु < बन्द < ड्रअ। ड्रअ नम्बर वैकल्पिक।", + "open": "नयाँ ड्रअ", + "saving": "सिर्जना हुँदैछ…", + "submit": "सिर्जना", + "success": "ड्रअ सिर्जना भयो", + "title": "म्यानुअल ड्रअ सिर्जना" + }, + "currentPayout": "हालको कुल भुक्तानी", + "currentResultVersion": "हालको नतिजा संस्करण", + "currentStatusAndDraft": "हालको स्थिति {{status}} · सेभ गरेपछि pending batch बन्छ, सिधै प्रकाशित हुँदैन", + "currentStatusDraftHint": "सेभ गरेपछि समीक्षा बाँकी ब्याच बन्छ, सिधै प्रकाशित हुँदैन", + "currentStatusLabel": "हालको स्थिति", + "deleteDraw": { + "action": "मेटाउनुहोस्", + "description": "ड्रअ {{drawNo}} मेटाउने? केवल pending र बेट नभएको।", + "failed": "मेटाउन असफल", + "success": "ड्रअ मेटाइयो", + "title": "ड्रअ मेटाउनुहोस्" + }, + "detailSubtitle": "{{date}} · राउन्ड {{seq}}", + "discardPendingBatch": "ड्राफ्ट मेटाउनुहोस्", + "discardPendingBatchFailed": "मेटाउन असफल", + "discardPendingBatchSuccess": "पेन्डिङ ब्याच मेटियो। पुनः नम्बर राख्न वा RNG चलाउन सकिन्छ।", + "discardingPendingBatch": "मेटाउँदै…", + "draftSaved": "ड्राफ्ट v{{version}} सुरक्षित भयो, प्रकाशनको प्रतिक्षामा", + "drawActions": "ड्रअ कार्य", + "drawActionsDesc": "म्यानुअल बन्द / रद्द / RNG / पुनःखोलाइ / सेटलमेन्ट सबै सीधै ब्याकएन्ड API मा जान्छ।", + "drawDetail": "ड्रअ विवरण", + "drawNo": "ड्रअ नं.", + "drawTime": "ड्रअ समय", + "editDraw": { + "action": "सम्पादन", + "description": "ड्रअ {{drawNo}} · स्थानीय समयक्षेत्र {{tz}} मा सम्पादन", + "drawNoPlaceholder": "ड्रअ नम्बर प्रविष्ट गर्नुहोस्, जस्तै 20260526-008", + "failed": "अद्यावधिक असफल", + "saving": "सेभ हुँदैछ…", + "submit": "सेभ", + "success": "ड्रअ अद्यावधिक भयो", + "title": "ड्रअ सम्पादन" + }, + "enter23Numbers": "कृपया 23 वटा 4-अङ्क समूह पूरा भर्नुहोस्", + "fillRandomNumbers": "अनियमित भर्नुहोस्", + "financeOverview": "ड्रअ वित्तीय सारांश", + "finishedAt": "समाप्त समय", + "fuzzyDrawNo": "फजी ड्रअ नं.", + "generateFailed": "सिर्जना असफल भयो", + "generatePlan": "ड्रअ योजना सिर्जना", + "generateSuccess": "{{created}} ड्रअ सिर्जना भयो, बफर {{upcoming}}/{{target}}", + "generating": "सिर्जना हुँदैछ…", + "goToReviewTab": "समीक्षा र प्रकाशन", + "grossProfit": "अनुमानित कुल नाफा", + "hallPreviewStatus": "हल पूर्वावलोकन {{status}}", + "hallPreviewStatusLabel": "हल पूर्वावलोकन", + "headTail": "हेड/टेल", + "invalidDrawId": "अवैध ड्रअ ID", + "isReopened": "फेरि खोलिएको", + "jackpotPayout": "ज्याकपट भुक्तानी", + "listActionsHint": "बेट नभएको pending: सम्पादन/मेटाउन; अन्य: विवरण पृष्ठ।", + "loadFailed": "लोड असफल भयो। लगइन र API कन्फिग जाँच गर्नुहोस्।", + "manualClose": "म्यानुअल बन्द", + "manualEntry": "म्यानुअल", + "manualResultEntry": "म्यानुअल परिणाम प्रविष्टि", + "no": "होइन", + "noPendingBatches": "समीक्षा बाँकी ब्याच छैन।", + "noPublishPermission": "प्रकाशन अनुमति छैन", + "noPublishedBatch": "प्रकाशित ब्याच छैन।", + "noResultBatchesYet": "अहिलेसम्म कुनै नतिजा ब्याच छैन।", + "noSettlementBatches": "सेटलमेन्ट ब्याच अभिलेख छैन।", + "numberCount": "नम्बर संख्या", + "orderAndItemCount": "अर्डर / टिकट आइटम", + "overviewBetTotal": "कुल बाजी", + "overviewPayoutTotal": "कुल भुक्तानी", + "overviewProfitLoss": "नाफा/नोक्सान", + "overviewTitle": "ड्र अवलोकन", + "pageGuide": "ड्र जीवनचक्र व्यवस्थापन: योजना, बन्द, नतिजा समीक्षा र सेटलमेन्ट।", + "payoutTotal": "कुल भुक्तानी", + "pendingBatches": "बाँकी ब्याच", + "pendingReview": "समीक्षा बाँकी", + "plannedDraw": "योजनाबद्ध ड्रअ", + "prize": "पुरस्कार", + "processing": "प्रक्रियामा…", + "profitLoss": "नाफा/नोक्सानी", "publishFailed": "प्रकाशन असफल भयो", - "sourceTypeFull": "स्रोत: {{source}} · संख्या: {{count}}/23 · RNG ह्यास: {{hash}}", - "subnav": { - "status": "ड्रअ स्थिति", - "results": "परिणाम", - "finance": "ड्रअ वित्त", - "review": "समीक्षा र प्रकाशन", - "riskOccupancy": "जोखिम अकुपेन्सी", - "riskLockLogs": "लक लग", - "riskHot": "हट नम्बर", - "riskSoldOut": "बिक्री समाप्त नम्बर", - "riskPools": "जोखिम पूल" - }, - "statusOptions": { - "all": "सबै", - "pending": "सुरु नभएको", - "open": "बेट खुला", - "closing": "बन्द हुँदै", - "closed": "बन्द", - "drawing": "ड्रअ हुँदै", - "review": "समीक्षा", - "cooldown": "कुलडाउन", - "settling": "सेटल हुँदै", - "settled": "सेटल भयो", - "cancelled": "रद्द" - }, + "publishReadOnlyHint": "यो पृष्ठ केवल जाँचका लागि हो। नम्बर बदल्न पहिले यो ब्याच मेटाउनुहोस् र म्यानुअल प्रविष्टिबाट नयाँ ड्राफ्ट सुरक्षित गर्नुहोस्।", + "publishSuccess": "प्रकाशित भयो · {{drawNo}} · स्थिति {{status}}", + "publishTitle": "प्रकाशित", + "published": "प्रकाशित", + "publishedView": "प्रकाशित नतिजा हेर्नुहोस्", + "queryDraw": "ड्रअ खोज्नुहोस्", + "relatedSettlementBatches": "सम्बन्धित सेटलमेन्ट ब्याच", + "reopen": "पुनःखोल्नुहोस्", + "reset": "रिसेट", + "resultBatchesTitle": "नतिजा ब्याच", "resultSlots": { + "consolation": "सान्त्वना {{index}}", "first": "पहिलो पुरस्कार", "second": "दोस्रो पुरस्कार", - "third": "तेस्रो पुरस्कार", "starter": "विशेष {{index}}", - "consolation": "सान्त्वना {{index}}" + "third": "तेस्रो पुरस्कार" }, - "confirm": { - "manualCloseTitle": "म्यानुअल बन्द पुष्टि?", - "manualCloseDescription": "खेलाडीहरूले यो ड्रअमा थप दांव लगाउन सक्ने छैनन्।", - "cancelDrawTitle": "ड्रअ रद्द पुष्टि?", - "cancelDrawDescription": "यो ड्रअ खुल्ने छैन।", - "rngDrawTitle": "RNG ड्रअ पुष्टि?", - "rngDrawDescription": "प्रणालीले नतिजा सिर्जना गर्नेछ।", - "reopenTitle": "कुलडाउन पुनः खोल्ने पुष्टि?", - "reopenDescription": "नतिजा पुनः समीक्षा हुन सक्छ।", - "runSettlementTitle": "सेटलमेन्ट सुरु पुष्टि?", - "runSettlementDescription": "प्रकाशित नतिजाबाट सेटलमेन्ट ब्याच बन्नेछ।", - "saveManualDraftTitle": "म्यानुअल ड्राफ्ट सुरक्षित पुष्टि?", - "saveManualDraftDescription": "२३ नम्बर समीक्षाका लागि सुरक्षित हुनेछ।", - "publishTitle": "नतिजा प्रकाशन पुष्टि?", - "publishDescription": "खेलाडीहरूले नतिजा देख्नेछन्।", - "discardPendingBatchTitle": "पेन्डिङ नतिजा ब्याच मेटाउने?", - "discardPendingBatchDescription": "२३ नम्बरको ड्राफ्ट मेटिन्छ र ड्रअ «बन्द — नतिजा पर्खँदै» मा फर्किन्छ। पुनः प्रविष्टि वा RNG गर्न सकिन्छ।", - "generatePlanTitle": "ड्रअ योजना सिर्जना पुष्टि?", - "generatePlanDescription": "भविष्यका ड्रअहरू सिर्जना हुनेछन्।" + "resultSource": "नतिजा स्रोत", + "resultSourceOptions": { + "manual": "म्यानुअल प्रविष्टि", + "rng": "RNG स्वचालित" }, - "batchDelete": { - "action": "{{count}} ड्रअ मेटाउनुहोस्", - "deleting": "मेटाउँदै…", - "confirmTitle": "ब्याच मेटाउने पुष्टि?", - "confirmDescription": "{{count}} विना दांवका ड्रअहरू मेटाउनेछ। यो पूर्ववत गर्न सकिँदैन।", - "success": "सफलतापूर्वक {{count}} ड्रअ मेटाइयो", - "failed": "ब्याच मेटाउन असफल", - "partialFailed": "आंशिक असफल: {{success}} सफल, {{failed}} असफल" - } + "resultsTitle": "परिणाम", + "reviewAndPublish": "समीक्षा / प्रकाशित", + "reviewAndPublishAction": "जाँचेर प्रकाशित गर्नुहोस्", + "reviewQueueHint": "नतिजा सिर्जना पछि समीक्षा र प्रकाशनमा जारी राख्नुहोस्।", + "rng": "RNG", + "rngAutoGenerate": "RNG स्वचालित सिर्जना", + "rngDraw": "RNG ड्रअ", + "rngSummary": "RNG ह्यास {{hash}}", + "runSettlement": "सेटलमेन्ट चलाउनुहोस्", + "saveDraft": "ड्राफ्ट सुरक्षित गर्नुहोस्", + "saveFailed": "सेभ असफल भयो", + "saving": "सेभ हुँदैछ…", + "scheduleTimezoneHint": "सूची समय स्थानीय समयक्षेत्र {{tz}} मा; सर्भर UTC मा भण्डारण। ड्र अन्तराल {{interval}} मिनेट।", + "scheduleTitle": "तालिका", + "sequenceNo": "क्रम संख्या", + "settleVersion": "सेटलमेन्ट संस्करण", + "settlementBatchList": "सेटलमेन्ट ब्याच सूची (ड्रअ अनुसार)", + "sourceType": "स्रोत {{source}}", + "sourceTypeFull": "स्रोत: {{source}} · संख्या: {{count}}/23 · RNG ह्यास: {{hash}}", + "startTime": "सुरु समय", + "status": "स्थिति", + "statusListTitle": "ड्रअ सूची", + "statusOptions": { + "all": "सबै", + "cancelled": "रद्द", + "closed": "बन्द", + "closing": "बन्द हुँदै", + "cooldown": "कुलडाउन", + "drawing": "ड्रअ हुँदै", + "open": "बेट खुला", + "pending": "सुरु नभएको", + "review": "समीक्षा", + "settled": "सेटल भयो", + "settling": "सेटल हुँदै" + }, + "submitting": "पेश हुँदैछ…", + "subnav": { + "finance": "ड्रअ वित्त", + "results": "परिणाम", + "review": "समीक्षा र प्रकाशन", + "riskHot": "हट नम्बर", + "riskLockLogs": "लक लग", + "riskOccupancy": "जोखिम अकुपेन्सी", + "riskPools": "जोखिम पूल", + "riskSoldOut": "बिक्री समाप्त नम्बर", + "status": "ड्रअ स्थिति" + }, + "tail2": "अन्तिम 2", + "tail3": "अन्तिम 3", + "ticketCount": "टिकट", + "title": "ड्रअ", + "version": "संस्करण v{{version}}", + "viewDetails": "विवरण हेर्नुहोस्", + "viewFinance": "ड्रअ वित्त हेर्नुहोस्", + "viewReviewQueue": "समीक्षा सूची हेर्नुहोस्", + "winCount": "जित", + "yes": "हो" } diff --git a/src/i18n/locales/ne/players.json b/src/i18n/locales/ne/players.json index fe22be9..aea2d05 100644 --- a/src/i18n/locales/ne/players.json +++ b/src/i18n/locales/ne/players.json @@ -1,76 +1,99 @@ { - "title": "खेलाडी", - "pageGuide": "वालेट र क्रेडिट खेलाडी एकै सूची; विवरण funding_mode अनुसार।", - "detailTitle": "खेलाडी विवरण", - "listTitle": "खेलाडी सूची", - "viewDetail": "विवरण हेर्नुहोस्", - "backToList": "खेलाडी सूचीमा फर्कनुहोस्", - "detailSubtitle": "{{site}} · {{sitePlayerId}} · ID {{playerId}}", - "tabOverview": "सारांश", - "tabTickets": "टिकट", - "tabWalletTxns": "वालेट लेनदेन", - "tabTransferOrders": "ट्रान्सफर अर्डर", - "profileSection": "प्रोफाइल", - "walletsSection": "वालेट", - "createdAt": "दर्ता समय", + "actions": "कार्य", "agent": "एजेन्ट", - "frozen": "फ्रोजन", - "txnAmount": "रकम", + "authMainSite": "मुख्य साइट SSO", + "authNative": "लटरी नेटिभ", + "authSource": "प्रमाणीकरण स्रोत", + "available": "उपलब्ध", + "availableCredit": "उपलब्ध क्रेडिट", + "backToList": "खेलाडी सूचीमा फर्कनुहोस्", + "balance": "ब्यालेन्स", "balanceAfterTxn": "पछिको ब्यालेन्स", - "invalidPlayerId": "अवैध खेलाडी ID", - "createPlayer": "खेलाडी सिर्जना", - "searchPlaceholder": "खेलाडी ID / प्रयोगकर्ता नाम / उपनामबाट खोज्नुहोस्", - "search": "खोज", - "refresh": "रिफ्रेस", - "loadFailed": "खेलाडी सूची लोड असफल भयो", - "siteCodeRequired": "साइट कोड लेख्नुहोस्", - "sitePlayerIdRequired": "साइट खेलाडी ID लेख्नुहोस्", - "createFailed": "खेलाडी सिर्जना असफल भयो", - "createAgentRequired": "तपाईंको खाता एजेन्ट नोडसँग जोडिएको छैन। एजेन्ट खाताबाट लगइन गर्नुहोस्, वा सुपर एडमिनले मान्य साइट र एजेन्ट छान्नुहोस्।", + "cancel": "रद्द गर्नुहोस्", + "confirmDelete": "मेटाउने पुष्टि", + "confirmDeleteDesc": "खेलाडी {{name}} मेटाउने? यो कार्य फिर्ता गर्न मिल्दैन।", + "confirmFreezeDescription": "खेलाडी {{name}} ले बाजी लगाउन सक्ने छैन।", + "confirmFreezeTitle": "खेलाडी फ्रिज गर्ने?", + "confirmUnfreezeDescription": "खेलाडी {{name}} सामान्य स्थितिमा फर्किनेछ।", + "confirmUnfreezeTitle": "खेलाडी अनफ्रिज गर्ने?", + "createAgentAutoHint": "खेलाडी तपाईंको एजेन्टमा तोकिनेछ: {{name}} ({{code}})", "createAgentNode": "एजेन्ट नोड", "createAgentNodePlaceholder": "एजेन्ट नोड छान्नुहोस्", - "createAgentAutoHint": "खेलाडी तपाईंको एजेन्टमा तोकिनेछ: {{name}} ({{code}})", + "createAgentRequired": "तपाईंको खाता एजेन्ट नोडसँग जोडिएको छैन। एजेन्ट खाताबाट लगइन गर्नुहोस्, वा सुपर एडमिनले मान्य साइट र एजेन्ट छान्नुहोस्।", + "createDialogDesc": "मुख्य साइटको खेलाडीलाई लटरी प्लेटफर्ममा म्यानुअल दर्ता गर्नुहोस्। प्रायः SSO लगइनबाट स्वतः सिर्जना हुन्छ।", + "createDialogTitle": "खेलाडी सिर्जना", + "createFailed": "खेलाडी सिर्जना असफल भयो", + "createPlayer": "खेलाडी सिर्जना", "createSuccess": "खेलाडी {{name}} सिर्जना भयो", - "noChanges": "कुनै परिवर्तन छैन", - "updateFailed": "खेलाडी अपडेट असफल भयो", - "updateSuccess": "{{name}} अपडेट भयो", + "createdAt": "दर्ता समय", + "creditLimit": "क्रेडिट सीमा", + "creditSection": "क्रेडिट लाइन", + "currency": "मुद्रा", + "defaultCurrency": "पूर्वनिर्धारित मुद्रा", + "delete": "मेटाउनुहोस्", "deleteFailed": "मेटाउन असफल", "deleteSuccess": "खेलाडी {{name}} मेटाइयो", - "statusNormal": "सामान्य", - "statusFrozen": "फ्रिज", - "statusBanned": "प्रतिबन्धित", - "site": "साइट", - "sitePlayerId": "साइट खेलाडी ID", - "username": "प्रयोगकर्ता नाम", - "nickname": "उपनाम", - "currency": "मुद्रा", - "balance": "ब्यालेन्स", - "available": "उपलब्ध", - "status": "स्थिति", - "lastLogin": "अन्तिम लगइन", - "actions": "कार्य", + "detailSubtitle": "{{site}} · {{sitePlayerId}} · ID {{playerId}}", + "detailTitle": "खेलाडी विवरण", "edit": "सम्पादन", - "freeze": "रोक्नुहोस्", - "unfreeze": "फुकाउनुहोस्", - "freezeSuccess": "खेलाडी {{name}} रोकियो", - "unfreezeSuccess": "खेलाडी {{name}} फुकाइयो", - "freezeFailed": "रोक्न सकिएन", - "unfreezeFailed": "फुकाउन सकिएन", - "delete": "मेटाउनुहोस्", - "createDialogTitle": "खेलाडी सिर्जना", - "editDialogTitle": "खेलाडी सम्पादन", - "createDialogDesc": "मुख्य साइटको खेलाडीलाई लटरी प्लेटफर्ममा म्यानुअल दर्ता गर्नुहोस्। प्रायः SSO लगइनबाट स्वतः सिर्जना हुन्छ।", "editDialogDesc": "खेलाडी जानकारी सम्पादन गर्नुहोस्।", - "siteCode": "साइट कोड", - "siteCodePlaceholder": "जस्तै main_site", - "sitePlayerIdLabel": "साइट खेलाडी ID", - "sitePlayerIdPlaceholder": "मुख्य साइटले फिर्ता गरेको अद्वितीय चिन्ह", - "usernamePlaceholderOptional": "वैकल्पिक", + "editDialogTitle": "खेलाडी सम्पादन", + "filterAllSites": "सबै साइट", + "filterSite": "साइट", + "freeze": "रोक्नुहोस्", + "freezeFailed": "रोक्न सकिएन", + "freezeSuccess": "खेलाडी {{name}} रोकियो", + "frozen": "फ्रोजन", + "fundingCredit": "क्रेडिट लाइन", + "fundingMode": "फन्डिङ मोड", + "fundingWallet": "मुख्य साइट वालेट", + "invalidPlayerId": "अवैध खेलाडी ID", + "lastLogin": "अन्तिम लगइन", + "listTitle": "खेलाडी सूची", + "loadFailed": "खेलाडी सूची लोड असफल भयो", + "nickname": "उपनाम", "nicknamePlaceholderOptional": "वैकल्पिक", - "defaultCurrency": "पूर्वनिर्धारित मुद्रा", - "cancel": "रद्द गर्नुहोस्", + "noChanges": "कुनै परिवर्तन छैन", + "pageGuide": "वालेट र क्रेडिट खेलाडी एकै सूची; विवरण funding_mode अनुसार।", + "profileSection": "प्रोफाइल", + "refresh": "रिफ्रेस", "save": "सुरक्षित गर्नुहोस्", "saving": "सुरक्षित हुँदैछ…", - "confirmDelete": "मेटाउने पुष्टि", - "confirmDeleteDesc": "खेलाडी {{name}} मेटाउने? यो कार्य फिर्ता गर्न मिल्दैन।" + "scopeAgentLine": "स्कोप: {{site}} · एजेन्ट लाइन “{{name}}” र अधीनस्थ खेलाडी", + "scopeAllSites": "स्कोप: सबै साइटका सबै खेलाडी (सुपर एडमिन)", + "scopeFilteredSite": "स्कोप: साइट {{site}}", + "scopeMultiSite": "स्कोप: {{count}} बाँधिएका साइट; संकुचित गर्न फिल्टर प्रयोग गर्नुहोस्", + "scopeSingleSite": "स्कोप: साइट {{site}}", + "search": "खोज", + "searchPlaceholder": "खेलाडी ID / प्रयोगकर्ता नाम / उपनामबाट खोज्नुहोस्", + "site": "साइट", + "siteCode": "साइट कोड", + "siteCodePlaceholder": "जस्तै main_site", + "siteCodeRequired": "साइट कोड लेख्नुहोस्", + "sitePlayerId": "साइट खेलाडी ID", + "sitePlayerIdLabel": "साइट खेलाडी ID", + "sitePlayerIdPlaceholder": "मुख्य साइटले फिर्ता गरेको अद्वितीय चिन्ह", + "sitePlayerIdRequired": "साइट खेलाडी ID लेख्नुहोस्", + "status": "स्थिति", + "statusBanned": "प्रतिबन्धित", + "statusFrozen": "फ्रिज", + "statusNormal": "सामान्य", + "tabCreditLedger": "क्रेडिट लेजर", + "tabOverview": "सारांश", + "tabTickets": "टिकट", + "tabTransferOrders": "ट्रान्सफर अर्डर", + "tabWalletTxns": "वालेट लेनदेन", + "ticketTableHint": "यो तालिकाले खेलाडीका हालैका टिकट देखाउँछ। पूर्ण सन्दर्भ र समस्या समाधानका लागि पङ्क्ति कार्यबाट मुख्य टिकट सूचीमा जानुहोस्।", + "title": "खेलाडी", + "txnAmount": "रकम", + "unfreeze": "फुकाउनुहोस्", + "unfreezeFailed": "फुकाउन सकिएन", + "unfreezeSuccess": "खेलाडी {{name}} फुकाइयो", + "updateFailed": "खेलाडी अपडेट असफल भयो", + "updateSuccess": "{{name}} अपडेट भयो", + "usedCredit": "प्रयोग भएको क्रेडिट", + "username": "प्रयोगकर्ता नाम", + "usernamePlaceholderOptional": "वैकल्पिक", + "viewDetail": "विवरण हेर्नुहोस्", + "walletsSection": "वालेट" } diff --git a/src/i18n/locales/ne/reconcile.json b/src/i18n/locales/ne/reconcile.json index 60a9563..713b8fb 100644 --- a/src/i18n/locales/ne/reconcile.json +++ b/src/i18n/locales/ne/reconcile.json @@ -1,61 +1,75 @@ { - "title": "मिलान", - "createTitle": "म्यानुअल मिलान कार्य", - "reconcileType": "मिलान प्रकार", - "reconcileTypeFixed": "वालेट ट्रान्सफर (मुख्य साइट ⇄ लटरी)", - "dateRange": "मिलान मिति दायरा", - "createTask": "मिलान कार्य सिर्जना", - "submitting": "पेश हुँदैछ…", - "loadFailed": "लोड असफल भयो", - "loadItemsFailed": "विवरण लोड असफल भयो", - "periodRequired": "सुरु र अन्त्य मिति दुवै लेख्नुहोस्", - "periodOrderInvalid": "अन्त्य समय सुरु समयभन्दा पछाडि वा बराबर हुनुपर्छ", - "confirmCreateTitle": "मिलान कार्य सिर्जना गर्ने?", + "actions": "कार्य", + "confirmCreateAllPlayers": " (सबै खेलाडी)", "confirmCreateDescription": "छनोट गरिएको मिति दायरामा{{playerHint}} म्यानुअल मिलान सुरु हुनेछ।", "confirmCreatePlayer": " र छानिएको खेलाडीका लागि", - "confirmCreateAllPlayers": " (सबै खेलाडी)", - "createSuccess": "मिलान कार्य सिर्जना भयो", + "confirmCreateTitle": "मिलान कार्य सिर्जना गर्ने?", "createFailed": "कार्य सिर्जना असफल भयो", - "noCreatePermission": "हालको खातासँग मिलान कार्य सिर्जना गर्ने अनुमति छैन।", - "jobsTitle": "मिलान कार्यहरू", - "refresh": "रिफ्रेस", - "jobNo": "कार्य नं.", - "type": "प्रकार", - "status": "स्थिति", - "itemCount": "विवरण संख्या", - "mismatchCount": "असंगति", - "matchedCount": "मेल खाएका", - "period": "अवधि", - "finishedAt": "समाप्त समय", + "createHint": "छानिएको अवधिमा ट्रान्सफर अर्डर स्क्यान गर्छ, लटरी वालेट लेजर तुलना गर्छ, र वालेट API कन्फिग भएमा मुख्य साइट idempotent रेकर्ड जाँच गर्छ।", + "createSuccess": "मिलान कार्य सिर्जना भयो", + "createSuccessEmpty": "स्क्यान सम्पन्न: कुनै समस्या फेला परेन", + "createTask": "मिलान कार्य सिर्जना", + "createTitle": "म्यानुअल मिलान कार्य", "createdAt": "सिर्जना समय", - "operate": "कार्य", - "viewDetails": "असंगति विवरण हेर्नुहोस्", + "dateRange": "मिलान मिति दायरा", "detailsTitle": "असंगति विवरण", - "sideARef": "लटरी साइड सन्दर्भ", - "sideBRef": "मुख्य साइट सन्दर्भ", - "differenceAmount": "अन्तर (cent)", - "itemResult": "जाँच नतिजा", - "processingStatus": "प्रक्रिया स्थिति", - "quickAccess": "छिटो पहुँच", - "openTransferOrder": "ट्रान्सफर अर्डर खोल्नुहोस्", - "openWalletTxn": "वालेट लेजर खोल्नुहोस्", "detectedAt": "फेला परेको समय", - "playerSearch": "खेलाडी (वैकल्पिक)", - "playerSearchPlaceholder": "player ID / username / nickname बाट खोज्नुहोस्", - "playerClear": "खाली गर्नुहोस्", - "loadingPlayers": "खेलाडी खोजिँदै…", - "statusCompleted": "सम्पन्न", - "statusRunning": "चलिरहेको", - "statusFailed": "असफल", - "itemMismatch": "मेल खाएन", + "differenceAmount": "अन्तर (cent)", + "finishedAt": "समाप्त समय", + "itemCount": "विवरण संख्या", + "itemMainSiteFailed": "मुख्य साइटमा असफल", + "itemMainSiteRecordMissing": "मुख्य साइटमा छैन", "itemMatched": "मेल खायो", - "itemPendingCheck": "जाँच बाँकी", - "itemStaleProcessing": "लामो समय प्रक्रियामा", - "itemPendingReconcile": "म्यानुअल मिलान बाँकी", - "itemMissingWalletTxn": "वालेट लेजर छुट्यो", - "itemUnexpectedWalletTxn": "अनपेक्षित वालेट लेजर", + "itemMismatch": "मेल खाएन", "itemMissingRefund": "फिर्ता लेजर छुट्यो", "itemMissingReversal": "रिभर्सल लेजर छुट्यो", + "itemMissingWalletTxn": "वालेट लेजर छुट्यो", + "itemPendingCheck": "जाँच बाँकी", + "itemPendingReconcile": "म्यानुअल मिलान बाँकी", "itemResolved": "समाधान भयो", - "itemUnresolved": "समाधान बाँकी" + "itemResult": "जाँच नतिजा", + "itemStaleProcessing": "लामो समय प्रक्रियामा", + "itemUnexpectedWalletTxn": "अनपेक्षित वालेट लेजर", + "itemUnresolved": "समाधान बाँकी", + "jobNo": "कार्य नं.", + "jobsTitle": "मिलान कार्यहरू", + "loadFailed": "लोड असफल भयो", + "loadItemsFailed": "विवरण लोड असफल भयो", + "loadingPlayers": "खेलाडी खोजिँदै…", + "mainSiteCheck": "मुख्य साइट जाँच", + "mainSiteFailed": "मुख्य साइट असफल", + "mainSiteMatched": "मुख्य साइट ठीक", + "mainSiteNotFound": "मुख्य साइटमा छैन", + "mainSiteRef": "मुख्य साइट सन्दर्भ", + "mainSiteSkipped": "जाँच गरिएको छैन", + "mainSiteUnavailable": "मुख्य साइट उपलब्ध छैन", + "matchedCount": "मेल खाएका", + "mismatchCount": "असंगति", + "noCreatePermission": "हालको खातासँग मिलान कार्य सिर्जना गर्ने अनुमति छैन।", + "openTransferOrder": "ट्रान्सफर अर्डर खोल्नुहोस्", + "openWalletTxn": "वालेट लेजर खोल्नुहोस्", + "operate": "कार्य", + "period": "अवधि", + "periodOrderInvalid": "अन्त्य समय सुरु समयभन्दा पछाडि वा बराबर हुनुपर्छ", + "periodRequired": "सुरु र अन्त्य मिति दुवै लेख्नुहोस्", + "playerClear": "खाली गर्नुहोस्", + "playerSearch": "खेलाडी (वैकल्पिक)", + "playerSearchPlaceholder": "player ID / username / nickname बाट खोज्नुहोस्", + "processingStatus": "प्रक्रिया स्थिति", + "quickAccess": "छिटो पहुँच", + "reconcileType": "मिलान प्रकार", + "reconcileTypeFixed": "वालेट ट्रान्सफर (मुख्य साइट ⇄ लटरी)", + "refresh": "रिफ्रेस", + "sideARef": "लटरी साइड सन्दर्भ", + "sideBRef": "मुख्य साइट सन्दर्भ", + "status": "स्थिति", + "statusCompleted": "सम्पन्न", + "statusFailed": "असफल", + "statusRunning": "चलिरहेको", + "submitting": "पेश हुँदैछ…", + "title": "मिलान", + "transferNo": "ट्रान्सफर नं.", + "type": "प्रकार", + "viewDetails": "असंगति विवरण हेर्नुहोस्", + "walletTxnNo": "लटरी वालेट लेनदेन" } diff --git a/src/i18n/locales/ne/reports.json b/src/i18n/locales/ne/reports.json index 3270596..5bc6fd4 100644 --- a/src/i18n/locales/ne/reports.json +++ b/src/i18n/locales/ne/reports.json @@ -1,297 +1,300 @@ { - "title": "रिपोर्ट", - "subtitle": "सञ्चालन, वित्त, जोखिम र अडिट रिपोर्टहरू एउटै ठाउँबाट फिल्टर गरी निर्यात गर्नुहोस्।", - "pageGuide": "ड्र, खेलाडी, प्ले अनुसार P&L र जोखिम; निर्यात अनुमति चाहिन्छ।", - "exportPanel": "निर्यात सेटअप", + "backendPending": "यो रिपोर्ट अस्थायी रूपमा उपलब्ध छैन", + "categories": { + "all": "सबै", + "audit": "अडिट", + "profit": "नाफा/घाटा", + "risk": "जोखिम", + "wallet": "कोष" + }, "chooseReport": "निर्यात गर्ने रिपोर्ट छान्नुहोस्", - "libraryTitle": "रिपोर्ट प्रकार", - "exportConfig": "निर्यात फिल्टर", - "recentTasks": "हालका निर्यात कार्यहरू", - "taskEmpty": "निर्यात कार्य छैन", "dimension": "आयाम", - "exportPending": "{{report}} {{format}} निर्यात API अझै जोडिएको छैन", - "exportSuccess": "{{report}} ({{format}}) निर्यात भयो", - "exportServerSuccess": "कार्य {{jobNo}} सिर्जना भई {{report}} ({{format}}) डाउनलोड भयो", + "empty": "मिल्ने रिपोर्ट छैन", + "exportClientHint": "हालको पूर्वावलोकन पृष्ठ निर्यात (पहिले क्वेरी चलाउनुहोस्)", + "exportConfig": "निर्यात फिल्टर", "exportFailed": "निर्यात असफल भयो", "exportHint": "हालका फिल्टरअनुसार पूर्ण डाटा निर्यात; पूर्वावलोकन क्वेरी अनिवार्य छैन।", + "exportPanel": "निर्यात सेटअप", + "exportPending": "{{report}} {{format}} निर्यात API अझै जोडिएको छैन", + "exportPreviewHint": "हालको पूर्वावलोकन पृष्ठका पङ्क्तिहरू मात्र (पेजिनेसन लागू)", "exportServerHint": "पूर्ण निर्यात सर्भर कार्यबाट (पूर्वावलोकन क्वेरी अनिवार्य छैन)", - "exportClientHint": "हालको पूर्वावलोकन पृष्ठ निर्यात (पहिले क्वेरी चलाउनुहोस्)", - "validation": { - "drawNoRequired": "कृपया ड्र नं. प्रविष्ट गर्नुहोस्", - "drawNoNotFound": "ड्र नं. «{{drawNo}}» फेला परेन", - "drawNoNumberRequired": "कृपया ड्र नं. र नम्बर दुवै प्रविष्ट गर्नुहोस्" + "exportServerSuccess": "कार्य {{jobNo}} सिर्जना भई {{report}} ({{format}}) डाउनलोड भयो", + "exportSuccess": "{{report}} ({{format}}) निर्यात भयो", + "fields": { + "drawNo": "ड्र नं.", + "number": "नम्बर", + "operator": "अपरेटर", + "period": "अवधि", + "play": "खेल", + "player": "खेलाडी" + }, + "filterAll": "सबै प्ले", + "filterPanel": "फिल्टर", + "filters": { + "date": "मिति", + "draw": "ड्र", + "draw_number": "ड्र + नम्बर", + "operator_period": "अपरेटर + अवधि", + "play": "खेल", + "play_period": "खेल + अवधि", + "player_period": "खेलाडी + अवधि" }, "formats": { "csv": "CSV", - "excel": "Excel", - "csvServer": "CSV निर्यात (पूर्ण)", - "excelServer": "Excel निर्यात (पूर्ण)", "csvPreview": "पूर्वावलोकन CSV", - "excelPreview": "पूर्वावलोकन Excel" + "csvServer": "CSV निर्यात (पूर्ण)", + "excel": "Excel", + "excelPreview": "पूर्वावलोकन Excel", + "excelServer": "Excel निर्यात (पूर्ण)" }, - "exportPreviewHint": "हालको पूर्वावलोकन पृष्ठका पङ्क्तिहरू मात्र (पेजिनेसन लागू)", - "tasks": { - "refresh": "रिफ्रेस", - "download": "डाउनलोड", - "loadFailed": "कार्य सूची लोड असफल", - "downloadSuccess": "{{jobNo}} डाउनलोड भयो", - "downloadFailed": "डाउनलोड असफल", - "columns": { - "jobNo": "कार्य नं.", - "report": "रिपोर्ट", - "format": "ढाँचा", - "status": "स्थिति", - "createdAt": "सिर्जना", - "actions": "कार्य" + "items": { + "admin_audit": { + "summary": "अपरेटर र रेकर्ड समय अनुसार; मिति नचयेमा पछिल्लो ३० दिन।", + "title": "एडमिन अपरेशन अडिट रिपोर्ट" }, - "status": { - "pending": "पर्खाइ", - "processing": "प्रक्रियामा", - "completed": "सम्पन्न", - "failed": "असफल" + "daily_profit": { + "summary": "व्यावसायिक मितिअनुसार बेट P&L; मिति नचयेमा पछिल्लो ३० दिन। टिकट रकम — क्रेडिट-लाइन सेटलमेन्ट होइन।", + "title": "दैनिक P&L सारांश" + }, + "draw_profit": { + "summary": "ड्र अनुसार बेट रकम, पेआउट, प्लेटफर्म P&L र सेटलमेन्ट स्थिति हेर्नुहोस्।", + "title": "ड्र बेट / पेआउट / P&L" + }, + "hot_number_risk": { + "summary": "ड्र र नम्बर अनुसार बेटिङ हिट, जोखिम प्रयोग र क्याप नजिकिएको अवस्था हेर्नुहोस्।", + "title": "हट नम्बर जोखिम रिपोर्ट" + }, + "play_dimension": { + "summary": "खेल र व्यावसायिक मितिअनुसार P&L; मिति नचयेमा पछिल्लो ३० दिन।", + "title": "खेल आयाम रिपोर्ट" + }, + "player_transfer": { + "summary": "वालेट-मोड मुख्य साइट ट्रान्सफर, रेकर्ड समय अनुसार; मिति नचयेमा पछिल्लो ३० दिन।", + "title": "खेलाडी ट्रान्सफर रिपोर्ट" + }, + "player_win_loss": { + "summary": "खेलाडी र व्यावसायिक मितिअनुसार जित/हार; मिति नचयेमा पछिल्लो ३० दिन।", + "title": "खेलाडी जित/हार रिपोर्ट" + }, + "sold_out_number": { + "summary": "ड्र अनुसार सोल्ड-आउट नम्बर, समय र जोखिम लक अवस्था हेर्नुहोस्।", + "title": "सोल्ड-आउट नम्बर रिपोर्ट" } }, "jobTypes": { - "draw_profit_summary": "ड्र P&L", + "audit_operation_report": "प्रशासक अडिट", "daily_profit_summary": "दैनिक P&L", - "player_win_loss": "खेलाडी जित/हार", - "wallet_transfer_report": "वालेट ट्रान्सफर", - "wallet_txns_daily": "वालेट लेनदेन (दैनिक)", - "transfer_orders_daily": "ट्रान्सफर अर्डर (दैनिक)", + "draw_profit_summary": "ड्र P&L", "hot_number_risk_report": "लोकप्रिय नम्बर जोखिम", "play_dimension_report": "प्ले आयाम", + "player_win_loss": "खेलाडी जित/हार", "sold_out_number_report": "बिक्री समाप्त नम्बर", - "audit_operation_report": "प्रशासक अडिट" + "transfer_orders_daily": "ट्रान्सफर अर्डर (दैनिक)", + "wallet_transfer_report": "वालेट ट्रान्सफर", + "wallet_txns_daily": "वालेट लेनदेन (दैनिक)" }, - "empty": "मिल्ने रिपोर्ट छैन", - "backendPending": "यो रिपोर्ट अस्थायी रूपमा उपलब्ध छैन", - "filterPanel": "फिल्टर", + "libraryTitle": "रिपोर्ट प्रकार", + "loadFailed": "लोड असफल", + "no": "होइन", + "pageGuide": "ड्र, खेलाडी, प्ले अनुसार P&L र जोखिम; निर्यात अनुमति चाहिन्छ।", + "placeholders": { + "drawNo": "जस्तै 20260522-001", + "keyword": "रिपोर्ट नाम / विवरण खोज्नुहोस्", + "number": "नम्बर लेख्नुहोस्", + "operator": "एडमिन खाता वा नाम", + "play": "खेल नाम वा कोड", + "player": "खेलाडी ID / नाम / फोन" + }, + "preview": { + "columns": { + "adminAudit": { + "extra": "IP", + "metricA": "अपरेटर ID", + "metricB": "मोड्युल", + "metricC": "कार्य", + "primary": "लग ID", + "secondary": "अपरेटर प्रकार", + "status": "लक्ष्य प्रकार", + "time": "समय" + }, + "dailyProfit": { + "extra": "नेट", + "metricA": "बेट", + "metricB": "पेआउट", + "metricC": "हाउस P&L", + "primary": "व्यावसायिक मिति", + "secondary": "टिप्पणी", + "status": "रिफन्ड", + "time": "अपडेट" + }, + "drawProfit": { + "extra": "ब्याच संख्या", + "metricA": "अर्डर / टिकट", + "metricB": "टिकट / विजेता", + "metricC": "बेट / हाउस P&L", + "primary": "ड्र / ब्याच", + "secondary": "ड्र / सेटलमेन्ट स्थिति", + "status": "पेआउट / ज्याकपोट", + "time": "समाप्त" + }, + "extra": "थप", + "hotNumberRisk": { + "extra": "प्रयोग / कारण", + "metricA": "क्याप / रकम", + "metricB": "लक / खेल", + "metricC": "बाँकी / टिकट", + "primary": "नम्बर / लग", + "secondary": "ड्र / कार्य", + "status": "सोल्ड आउट / खेलाडी", + "time": "संस्करण / समय" + }, + "metricA": "सूचक A", + "metricB": "सूचक B", + "metricC": "सूचक C", + "playDimension": { + "extra": "टिप्पणी", + "metricA": "बेट", + "metricB": "पेआउट", + "metricC": "हाउस P&L", + "primary": "खेल", + "secondary": "आयाम", + "status": "अनुपात", + "time": "समय" + }, + "playerTransfer": { + "extra": "असफल कारण", + "metricA": "दिशा", + "metricB": "स्थिति", + "metricC": "रकम", + "primary": "ट्रान्सफर नं.", + "secondary": "खेलाडी", + "status": "बाह्य सन्दर्भ", + "time": "सिर्जना" + }, + "playerWinLoss": { + "extra": "टिप्पणी", + "metricA": "बेट", + "metricB": "पेआउट", + "metricC": "नेट जित/हार", + "primary": "खेलाडी", + "secondary": "खेलाडी ID", + "status": "स्तर", + "time": "समय" + }, + "primary": "मुख्य", + "secondary": "सहायक", + "soldOut": { + "extra": "प्रयोग", + "metricA": "क्याप", + "metricB": "लक", + "metricC": "बाँकी", + "primary": "नम्बर", + "secondary": "ड्र", + "status": "सोल्ड आउट", + "time": "संस्करण" + }, + "status": "स्थिति", + "time": "समय" + }, + "empty": "डाटा छैन।", + "exportableRows": "पङ्क्ति निर्यात योग्य", + "scope": { + "currentPage": "हालको पृष्ठ" + }, + "stats": { + "bet": "बेट", + "currency": "मुद्रा", + "currentPage": "यो पृष्ठ", + "drawNo": "ड्र नं.", + "exportRows": "निर्यात पङ्क्ति", + "houseGross": "हाउस P&L", + "locked": "लक", + "logs": "लग", + "modules": "मोड्युल", + "notQueried": "क्वेरी गरिएको छैन", + "notSet": "सेट गरिएको छैन", + "operators": "अपरेटर", + "orders": "अर्डर", + "payout": "भुक्तानी", + "players": "खेलाडी", + "rebate": "रिबेट", + "records": "रेकर्ड", + "remaining": "बाँकी", + "transferIn": "भित्र", + "transferOut": "बाहिर", + "usage": "उपयोग" + }, + "subtitle": "तल तालिकामा नतिजा देखिन्छ।", + "summaryScopeHint": "कुल रेकर्ड बाहेक माथिका कार्डहरू हालको पूर्वावलोकन पृष्ठको योग हुन्। पूर्ण दायराको संख्या चाहिँ पूर्ण CSV/Excel निर्यात प्रयोग गर्नुहोस्।", + "title": "पूर्वावलोकन" + }, + "query": "क्वेरी", "queryHint": "फिल्टर सेट गरी क्वेरी चलाउनुहोस्। समय चयन नगरेमा पछिल्लो ३० दिन प्रयोग हुन्छ।", + "querying": "क्वेरी हुँदै…", + "recentTasks": "हालका निर्यात कार्यहरू", + "reset": "रिसेट", + "scopes": { + "date": "मिति", + "drawNo": "ड्र", + "drawNumber": "ड्र + नम्बर", + "operatorPeriod": "अपरेटर + अवधि", + "play": "खेल", + "playPeriod": "खेल + अवधि", + "playerPeriod": "खेलाडी + अवधि" + }, + "searchPicker": { + "keyword": "खोज शब्द", + "open": "छनोट खोल्नुहोस्", + "select": "छान्नुहोस्" + }, + "stats": { + "current": "हालको सूची", + "formats": "निर्यात ढाँचा", + "total": "कुल रिपोर्ट" + }, + "subtitle": "सञ्चालन, वित्त, जोखिम र अडिट रिपोर्टहरू एउटै ठाउँबाट फिल्टर गरी निर्यात गर्नुहोस्।", + "table": { + "actions": "कार्य", + "category": "वर्ग", + "createdAt": "सिर्जना समय", + "description": "विवरण", + "dimension": "आयाम", + "formats": "ढाँचा", + "report": "रिपोर्ट", + "status": "स्थिति" + }, + "taskEmpty": "निर्यात कार्य छैन", + "tasks": { + "columns": { + "actions": "कार्य", + "createdAt": "सिर्जना", + "format": "ढाँचा", + "jobNo": "कार्य नं.", + "report": "रिपोर्ट", + "status": "स्थिति" + }, + "currentReportHint": "यहाँ हाल छानिएको रिपोर्टका निर्यात कार्य मात्र देखिन्छ।", + "download": "डाउनलोड", + "downloadFailed": "डाउनलोड असफल", + "downloadSuccess": "{{jobNo}} डाउनलोड भयो", + "loadFailed": "कार्य सूची लोड असफल", + "refresh": "रिफ्रेस", + "status": { + "completed": "सम्पन्न", + "failed": "असफल", + "pending": "पर्खाइ", + "processing": "प्रक्रियामा" + } + }, "timeAxis": { "businessDate": "समय अक्ष: लटरी व्यावसायिक मिति (ड्रको business date)।", "recordCreatedAt": "समय अक्ष: रेकर्ड सिर्जना समय।" }, - "query": "क्वेरी", - "querying": "क्वेरी हुँदै…", - "reset": "रिसेट", - "loadFailed": "लोड असफल", - "yes": "हो", - "no": "होइन", - "filterAll": "सबै प्ले", - "searchPicker": { - "open": "छनोट खोल्नुहोस्", - "select": "छान्नुहोस्", - "keyword": "खोज शब्द" + "title": "रिपोर्ट", + "validation": { + "drawNoNotFound": "ड्र नं. «{{drawNo}}» फेला परेन", + "drawNoNumberRequired": "कृपया ड्र नं. र नम्बर दुवै प्रविष्ट गर्नुहोस्", + "drawNoRequired": "कृपया ड्र नं. प्रविष्ट गर्नुहोस्" }, - "preview": { - "title": "पूर्वावलोकन", - "subtitle": "तल तालिकामा नतिजा देखिन्छ।", - "empty": "डाटा छैन।", - "exportableRows": "पङ्क्ति निर्यात योग्य", - "summaryScopeHint": "कुल रेकर्ड बाहेक माथिका कार्डहरू हालको पूर्वावलोकन पृष्ठको योग हुन्। पूर्ण दायराको संख्या चाहिँ पूर्ण CSV/Excel निर्यात प्रयोग गर्नुहोस्।", - "scope": { - "currentPage": "हालको पृष्ठ" - }, - "columns": { - "primary": "मुख्य", - "secondary": "सहायक", - "metricA": "सूचक A", - "metricB": "सूचक B", - "metricC": "सूचक C", - "status": "स्थिति", - "extra": "थप", - "time": "समय", - "drawProfit": { - "primary": "ड्र / ब्याच", - "secondary": "ड्र / सेटलमेन्ट स्थिति", - "metricA": "अर्डर / टिकट", - "metricB": "टिकट / विजेता", - "metricC": "बेट / हाउस P&L", - "status": "पेआउट / ज्याकपोट", - "extra": "ब्याच संख्या", - "time": "समाप्त" - }, - "dailyProfit": { - "primary": "व्यावसायिक मिति", - "secondary": "टिप्पणी", - "metricA": "बेट", - "metricB": "पेआउट", - "metricC": "हाउस P&L", - "status": "रिफन्ड", - "extra": "नेट", - "time": "अपडेट" - }, - "playerWinLoss": { - "primary": "खेलाडी", - "secondary": "खेलाडी ID", - "metricA": "बेट", - "metricB": "पेआउट", - "metricC": "नेट जित/हार", - "status": "स्तर", - "extra": "टिप्पणी", - "time": "समय" - }, - "playerTransfer": { - "primary": "ट्रान्सफर नं.", - "secondary": "खेलाडी", - "metricA": "दिशा", - "metricB": "स्थिति", - "metricC": "रकम", - "status": "बाह्य सन्दर्भ", - "extra": "असफल कारण", - "time": "सिर्जना" - }, - "hotNumberRisk": { - "primary": "नम्बर / लग", - "secondary": "ड्र / कार्य", - "metricA": "क्याप / रकम", - "metricB": "लक / खेल", - "metricC": "बाँकी / टिकट", - "status": "सोल्ड आउट / खेलाडी", - "extra": "प्रयोग / कारण", - "time": "संस्करण / समय" - }, - "playDimension": { - "primary": "खेल", - "secondary": "आयाम", - "metricA": "बेट", - "metricB": "पेआउट", - "metricC": "हाउस P&L", - "status": "अनुपात", - "extra": "टिप्पणी", - "time": "समय" - }, - "soldOut": { - "primary": "नम्बर", - "secondary": "ड्र", - "metricA": "क्याप", - "metricB": "लक", - "metricC": "बाँकी", - "status": "सोल्ड आउट", - "extra": "प्रयोग", - "time": "संस्करण" - }, - "adminAudit": { - "primary": "लग ID", - "secondary": "अपरेटर प्रकार", - "metricA": "अपरेटर ID", - "metricB": "मोड्युल", - "metricC": "कार्य", - "status": "लक्ष्य प्रकार", - "extra": "IP", - "time": "समय" - } - }, - "stats": { - "records": "रेकर्ड", - "currentPage": "यो पृष्ठ", - "drawNo": "ड्र नं.", - "currency": "मुद्रा", - "exportRows": "निर्यात पङ्क्ति", - "bet": "बेट", - "payout": "भुक्तानी", - "houseGross": "हाउस P&L", - "orders": "अर्डर", - "locked": "लक", - "remaining": "बाँकी", - "usage": "उपयोग", - "logs": "लग", - "modules": "मोड्युल", - "operators": "अपरेटर", - "players": "खेलाडी", - "transferIn": "भित्र", - "transferOut": "बाहिर", - "rebate": "रिबेट" - } - }, - "stats": { - "total": "कुल रिपोर्ट", - "current": "हालको सूची", - "formats": "निर्यात ढाँचा" - }, - "table": { - "report": "रिपोर्ट", - "category": "वर्ग", - "dimension": "आयाम", - "description": "विवरण", - "formats": "ढाँचा", - "actions": "कार्य", - "status": "स्थिति", - "createdAt": "सिर्जना समय" - }, - "categories": { - "all": "सबै", - "profit": "नाफा/घाटा", - "wallet": "कोष", - "risk": "जोखिम", - "audit": "अडिट" - }, - "filters": { - "draw": "ड्र", - "date": "मिति", - "player_period": "खेलाडी + अवधि", - "draw_number": "ड्र + नम्बर", - "play": "खेल", - "play_period": "खेल + अवधि", - "operator_period": "अपरेटर + अवधि" - }, - "scopes": { - "drawNo": "ड्र", - "date": "मिति", - "playerPeriod": "खेलाडी + अवधि", - "drawNumber": "ड्र + नम्बर", - "play": "खेल", - "playPeriod": "खेल + अवधि", - "operatorPeriod": "अपरेटर + अवधि" - }, - "fields": { - "drawNo": "ड्र नं.", - "number": "नम्बर", - "period": "अवधि", - "player": "खेलाडी", - "play": "खेल", - "operator": "अपरेटर" - }, - "placeholders": { - "drawNo": "जस्तै 20260522-001", - "number": "नम्बर लेख्नुहोस्", - "keyword": "रिपोर्ट नाम / विवरण खोज्नुहोस्", - "player": "खेलाडी ID / नाम / फोन", - "play": "खेल नाम वा कोड", - "operator": "एडमिन खाता वा नाम" - }, - "items": { - "draw_profit": { - "title": "ड्र बेट / पेआउट / P&L", - "summary": "ड्र अनुसार बेट रकम, पेआउट, प्लेटफर्म P&L र सेटलमेन्ट स्थिति हेर्नुहोस्।" - }, - "daily_profit": { - "title": "दैनिक P&L सारांश", - "summary": "व्यावसायिक मितिअनुसार बेट P&L; मिति नचयेमा पछिल्लो ३० दिन। टिकट रकम — क्रेडिट-लाइन सेटलमेन्ट होइन।" - }, - "player_win_loss": { - "title": "खेलाडी जित/हार रिपोर्ट", - "summary": "खेलाडी र व्यावसायिक मितिअनुसार जित/हार; मिति नचयेमा पछिल्लो ३० दिन।" - }, - "player_transfer": { - "title": "खेलाडी ट्रान्सफर रिपोर्ट", - "summary": "वालेट-मोड मुख्य साइट ट्रान्सफर, रेकर्ड समय अनुसार; मिति नचयेमा पछिल्लो ३० दिन।" - }, - "hot_number_risk": { - "title": "हट नम्बर जोखिम रिपोर्ट", - "summary": "ड्र र नम्बर अनुसार बेटिङ हिट, जोखिम प्रयोग र क्याप नजिकिएको अवस्था हेर्नुहोस्।" - }, - "play_dimension": { - "title": "खेल आयाम रिपोर्ट", - "summary": "खेल र व्यावसायिक मितिअनुसार P&L; मिति नचयेमा पछिल्लो ३० दिन।" - }, - "sold_out_number": { - "title": "सोल्ड-आउट नम्बर रिपोर्ट", - "summary": "ड्र अनुसार सोल्ड-आउट नम्बर, समय र जोखिम लक अवस्था हेर्नुहोस्।" - }, - "admin_audit": { - "title": "एडमिन अपरेशन अडिट रिपोर्ट", - "summary": "अपरेटर र रेकर्ड समय अनुसार; मिति नचयेमा पछिल्लो ३० दिन।" - } - } + "yes": "हो" } diff --git a/src/i18n/locales/ne/risk.json b/src/i18n/locales/ne/risk.json index 6d2082f..538c02f 100644 --- a/src/i18n/locales/ne/risk.json +++ b/src/i18n/locales/ne/risk.json @@ -1,111 +1,117 @@ { - "title": "जोखिम", - "center": "जोखिम केन्द्र", - "drawNo": "ड्रअ नं.", - "status": "स्थिति", - "closeTime": "बन्द समय", + "action": "कार्य", + "actionFailed": "कार्य असफल भयो", + "actionFilter": "कार्य", "actions": "कार्य", "all": "सबै", - "search": "खोज", - "refresh": "रिफ्रेस", - "fuzzyDrawNo": "फजी ड्रअ नं.", - "loadDrawListFailed": "ड्रअ सूची लोड असफल भयो", - "enterRisk": "जोखिममा जानुहोस्", - "poolsTitle": "जोखिम पूल", - "hotPageTitle": "हट नम्बर निगरानी", - "soldOutPageTitle": "बिक्री समाप्त नम्बर सूची", "allPoolsPageTitle": "सबै जोखिम पूल", - "sourceReasonOptions": { - "ticket_place": "बेट अकुपेन्सी", - "ticket_rollback": "टिकट रोलब्याक", - "ticket_failed_line": "असफल बेट रिलिज", - "admin_manual_close": "म्यानुअल बन्द", - "admin_manual_recover": "म्यानुअल पुनर्स्थापना" + "amount": "रकम", + "applyFilter": "फिल्टर लागू गर्नुहोस्", + "backToAllPools": "सबै जोखिम पूलमा फर्कनुहोस्", + "backToList": "सूचीमा फर्कनुहोस्", + "capAmount": "क्याप", + "center": "जोखिम केन्द्र", + "changeDraw": "ड्रअ परिवर्तन गर्नुहोस्", + "close": "बन्द", + "closeTime": "बन्द समय", + "combinationCount": "संयोजन", + "confirm": { + "closeDescription": "नम्बर {{number}} यो ड्रका लागि ब्लक हुनेछ।", + "closeTitle": "नम्बर बन्द गर्ने?", + "recoverDescription": "नम्बर {{number}} फेरि बाजीका लागि खुल्नेछ।", + "recoverTitle": "नम्बर पुन: खोल्ने?" }, + "databaseStatus": "डेटाबेस स्थिति", + "detailTitle": "जोखिम पूल विवरण", + "drawInfoLoadFailed": "ड्रअ जानकारी लोड असफल भयो", + "drawMeta": "ड्रअ {{drawNo}}", + "drawNo": "ड्रअ नं.", + "enterRisk": "जोखिममा जानुहोस्", + "filterActive": "लक / उच्च जोखिम", + "filterAll": "सबै", + "filterHighRisk": ">80%", + "filterSoldOut": "बिक्री समाप्त", + "fuzzyDrawNo": "फजी ड्रअ नं.", + "groupBy": "दृश्य", + "groupByEntry": "नम्बर अनुसार", + "groupByTicket": "टिकट अनुसार", + "hallPreviewStatus": "(हल पूर्वावलोकन: {{status}})", + "headerTitle": "जोखिम · ड्रअ {{drawNo}}", + "hotPageTitle": "हट नम्बर निगरानी", + "isSoldOut": "बिक्री समाप्त", + "loadDetailFailed": "जोखिम पूल विवरण लोड असफल भयो", + "loadDrawListFailed": "ड्रअ सूची लोड असफल भयो", + "loadLogsFailed": "लक लग लोड असफल भयो", + "loadPoolsFailed": "जोखिम पूल लोड असफल भयो", + "loadingDraw": "ड्रअ लोड हुँदैछ…", + "lock": "लक", + "lockLogsGroupedHint": "पूर्वनिर्धारित रूपमा टिकट अनुसार समूह। विस्तारित प्लेको संयोजन टिकट विवरणमा हेर्नुहोस्।", + "lockLogsTitle": "जोखिम लक लग", + "lockReleaseSummary": "लक / रिलिज पङ्क्ति", + "lockedAmount": "लक गरिएको", + "lockedWorstCase": "लक गरिएको (अधिकतम भुक्तानी सुरक्षित)", + "manualCloseSuccess": "नम्बर बेटिङ म्यानुअल रूपमा बन्द गरियो", + "no": "होइन", + "noLimit": "सीमा छैन", + "normal": "सामान्य", + "number": "बेट नम्बर", + "number4d": "नम्बर (4 अङ्क)", + "numberTitle": "नम्बर {{number}}", + "occupationLogs": "यो नम्बरको लक / रिलिज लग", + "optional": "वैकल्पिक", + "playCode": "प्ले", + "poolStatus": "स्थिति", + "poolsTitle": "जोखिम पूल", + "recover": "पुनर्स्थापना", + "recoverSuccess": "नम्बर बेटिङ पुनर्स्थापित गरियो", + "refresh": "रिफ्रेस", + "release": "रिलिज", + "remainingAmount": "बाँकी", + "remainingSellable": "बाँकी बिक्रीयोग्य", + "riskFilter": "जोखिम फिल्टर", + "search": "खोज", "searchNumber": "नम्बर खोज्नुहोस्", "searchNumberPlaceholder": "जस्तै 8888", - "riskFilter": "जोखिम फिल्टर", - "sort": "क्रमबद्ध", - "filterAll": "सबै", - "filterActive": "लक / उच्च जोखिम", - "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": "रकम", + "soldOutPageTitle": "बिक्री समाप्त नम्बर सूची", + "sort": "क्रमबद्ध", + "sortLockedDesc": "लक रकम ↓", + "sortNumberAsc": "नम्बर ↑", + "sortRemainingAsc": "बाँकी ↑", + "sortUsageDesc": "प्रयोग अनुपात ↓", "source": "स्रोत", + "sourceReasonOptions": { + "admin_manual_close": "म्यानुअल बन्द", + "admin_manual_recover": "म्यानुअल पुनर्स्थापना", + "ticket_failed_line": "असफल बेट रिलिज", + "ticket_place": "बेट अकुपेन्सी", + "ticket_rollback": "टिकट रोलब्याक" + }, + "status": "स्थिति", + "statusOptions": { + "cancelled": "रद्द", + "closed": "बन्द", + "closing": "बन्द हुँदै", + "cooldown": "कुलडाउन", + "drawing": "ड्रअ हुँदै", + "open": "खुला", + "pending": "सुरु नभएको", + "review": "समीक्षा", + "settled": "सेटल भयो", + "settling": "सेटल हुँदै" + }, + "subnavHot": "हट नम्बर", + "subnavOccupancy": "अकुपेन्सी", + "subnavPools": "सबै जोखिम पूल", + "subnavSoldOut": "बिक्री समाप्त सूची", "ticketNo": "टिकट नं.", - "playCode": "प्ले", - "loadLogsFailed": "लक लग लोड असफल भयो", - "lockLogsTitle": "जोखिम लक लग", - "lockLogsGroupedHint": "पूर्वनिर्धारित रूपमा टिकट अनुसार समूह। विस्तारित प्लेको संयोजन टिकट विवरणमा हेर्नुहोस्।", - "groupBy": "दृश्य", - "groupByTicket": "टिकट अनुसार", - "groupByEntry": "नम्बर अनुसार", - "combinationCount": "संयोजन", - "lockReleaseSummary": "लक / रिलिज पङ्क्ति", + "time": "समय", + "title": "जोखिम", + "totalCap": "क्याप रकम", + "usageRatio": "प्रयोग अनुपात", + "view": "हेर्नुहोस्", "viewDetail": "विवरण", "viewTicket": "टिकट", - "number": "बेट नम्बर", - "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": "रद्द" - } + "warning": "चेतावनी", + "yes": "हो" } diff --git a/src/i18n/locales/ne/tickets.json b/src/i18n/locales/ne/tickets.json index d60b0c8..2c0eb71 100644 --- a/src/i18n/locales/ne/tickets.json +++ b/src/i18n/locales/ne/tickets.json @@ -1,58 +1,62 @@ { - "title": "टिकट सूची", - "playerTicketQuery": "टिकट खोज", - "playerId": "खेलाडी ID / खाता", - "invalidPlayerId": "मान्य खेलाडी ID वा खाता लेख्नुहोस्", - "playerIdPlaceholder": "सबै देखाउन खाली छोड्नुहोस्; ID वा खाता लेख्नुहोस्", + "actions": "कार्य", + "actualDeduct": "कटौती", + "allTickets": "सबै टिकट", + "backToList": "टिकट सूचीमा फर्कनुहोस्", + "betAmount": "बेट रकम", + "combinationCount": "विस्तारित संयोजन", + "combinationsHint": "एक बेट लाइन धेरै 4D नम्बरमा विस्तार हुन सक्छ।", + "combinationsTitle": "संयोजन विवरण", + "comboBetAmount": "संयोजन बेट", + "comboEstimatedPayout": "अनुमानित भुक्तानी रिजर्भ", + "detailLoadFailed": "टिकट विवरण लोड असफल", + "detailTitle": "टिकट विवरण", + "drawNo": "ड्रअ नं.", "drawNoOptional": "ड्रअ नम्बर (वैकल्पिक)", "drawNoPlaceholder": "जस्तै 20260520-001", + "failReason": "असफल कारण", + "filterAllSites": "सबै साइट", + "filterSite": "साइट", + "invalidPlayerId": "मान्य खेलाडी ID वा खाता लेख्नुहोस्", + "loadFailed": "लोड असफल भयो", + "loadingDetail": "लोड हुँदै…", + "number": "नम्बर", + "number4d": "4D नम्बर", "numberKeyword": "नम्बर / टिकट / अर्डर", "numberKeywordPlaceholder": "नम्बर, टिकट नं. वा अर्डर नं. बाट खोज्नुहोस्", - "placedDateRange": "बेट गरिएको मिति दायरा", - "query": "खोज", - "resetFilters": "फिल्टर रिसेट", - "refreshCurrentPage": "हालको पृष्ठ रिफ्रेस", - "loadFailed": "लोड असफल भयो", - "ticketNo": "टिकट नं.", - "player": "खेलाडी", "orderNo": "अर्डर नं.", - "drawNo": "ड्रअ नं.", - "playCode": "प्ले", - "number": "नम्बर", - "betAmount": "बेट रकम", - "actualDeduct": "कटौती", - "status": "स्थिति", - "actions": "कार्य", - "viewPlayer": "खेलाडी हेर्नुहोस्", - "failReason": "असफल कारण", - "winAmount": "जित रकम", "placedAt": "बेट समय", - "updatedAt": "अपडेट समय", + "placedDateRange": "बेट गरिएको मिति दायरा", + "playCode": "प्ले", + "player": "खेलाडी", + "playerId": "खेलाडी ID / खाता", + "playerIdPlaceholder": "सबै देखाउन खाली छोड्नुहोस्; ID वा खाता लेख्नुहोस्", + "playerTicketQuery": "टिकट खोज", + "query": "खोज", + "refreshCurrentPage": "हालको पृष्ठ रिफ्रेस", + "resetFilters": "फिल्टर रिसेट", + "status": "स्थिति", "statusFilterLabel": "स्थिति फिल्टर", "statusHint": "धेरै चयन गर्न सकिन्छ। खाली छोडे सबै स्थिति देखिन्छ।", "statusOptions": { "all": "सबै", - "pending_confirm": "पुष्टि बाँकी", - "partial_pending_confirm": "आंशिक पुष्टि बाँकी", - "placed": "बेट राखियो", - "pending_draw": "ड्र पर्खँदै", - "partial_failed": "आंशिक असफल", "failed": "बेट असफल", + "partial_failed": "आंशिक असफल", + "partial_pending_confirm": "आंशिक पुष्टि बाँकी", + "pending_confirm": "पुष्टि बाँकी", + "pending_draw": "ड्र पर्खँदै", "pending_payout": "भुक्तानी बाँकी", - "settled_win": "जित सेटल भयो", + "placed": "बेट राखियो", + "refunded": "फिर्ता भयो", "settled_lose": "हार सेटल भयो", - "refunded": "फिर्ता भयो" + "settled_win": "जित सेटल भयो" }, - "allTickets": "सबै टिकट", - "detailTitle": "टिकट विवरण", - "detailLoadFailed": "टिकट विवरण लोड असफल", - "loadingDetail": "लोड हुँदै…", - "backToList": "टिकट सूचीमा फर्कनुहोस्", + "statusSelectedCount": "{{count}} छानिएको", + "ticketNo": "टिकट नं.", + "title": "टिकट सूची", + "updatedAt": "अपडेट समय", + "viewPlayer": "खेलाडी हेर्नुहोस्", "viewTicketDetail": "टिकट विवरण हेर्नुहोस्", - "combinationCount": "विस्तारित संयोजन", - "combinationsTitle": "संयोजन विवरण", - "combinationsHint": "एक बेट लाइन धेरै 4D नम्बरमा विस्तार हुन सक्छ।", - "number4d": "4D नम्बर", - "comboBetAmount": "संयोजन बेट", - "comboEstimatedPayout": "अनुमानित भुक्तानी रिजर्भ" + "viewTicketInList": "यो टिकट हेर्नुहोस्", + "winAmount": "जित रकम" } diff --git a/src/i18n/locales/ne/wallet.json b/src/i18n/locales/ne/wallet.json index 60b957f..544d07a 100644 --- a/src/i18n/locales/ne/wallet.json +++ b/src/i18n/locales/ne/wallet.json @@ -1,86 +1,92 @@ { - "title": "वालेट", - "subnavLabel": "वालेट उपपृष्ठहरू", - "subnavTransactions": "वालेट कारोबार", - "subnavTransferOrders": "ट्रान्सफर अर्डर", - "subnavPlayerWallet": "खेलाडी वालेट", - "noPermission": "हालको खातासँग यो पृष्ठमा पहुँच अनुमति छैन", - "copySuccess": "{{label}} क्लिपबोर्डमा प्रतिलिपि भयो", - "copyFailed": "प्रतिलिपि असफल भयो। ब्राउजर अनुमति जाँच गर्नुहोस् वा म्यानुअल रूपमा कपी गर्नुहोस्।", - "statusProcessing": "प्रक्रियामा", - "statusSuccess": "सफल", - "statusFailed": "असफल", - "statusPendingReconcile": "मिलान बाँकी", - "statusReversed": "रिभर्स भयो", - "statusCaseClosed": "केस बन्द भयो", - "statusPosted": "पोस्ट गरियो", - "filterAll": "सबै", - "transferIn": "मुख्य साइटबाट भित्र", - "transferOut": "मुख्य साइटतर्फ बाहिर", - "transferOutRefund": "ट्रान्सफर-आउट फिर्ता", + "abnormalOnly": "असामान्य मात्र", + "abnormalOnlyPending": "असामान्य मात्र (मिलान बाँकी)", + "actionFailed": "कार्य असफल भयो", + "actions": "कार्य", + "actionsMenuAriaLabel": "ट्रान्सफर अर्डर कार्य मेनु", + "amount": "रकम", + "availableBalance": "उपलब्ध (अनुमानित)", + "balanceMinor": "ब्यालेन्स (सानो एकाइ)", "bizBetDeduct": "बेट कटौती", "bizBetReverse": "बेट उल्टाउने", - "bizSettlePayout": "बन्दोबस्त भुक्तानी", "bizJackpotPayout": "ज्याकपट भुक्तानी", + "bizSettlePayout": "बन्दोबस्त भुक्तानी", "bizSettlementAdjustment": "बन्दोबस्त समायोजन", - "transferOrders": "ट्रान्सफर अर्डर", - "walletTransactions": "वालेट कारोबार", - "playerWalletQuery": "खेलाडी वालेट खोज", - "localTransferNo": "स्थानीय ट्रान्सफर नं.", + "bizType": "व्यवसाय प्रकार", + "completeCredit": "क्रेडिट पूरा गर्नुहोस्", + "completeCreditSuccess": "ट्रान्सफर-इन क्रेडिट सफल भयो", + "confirm": { + "completeCreditDescription": "मुख्य साइटले पहिले नै कटौती गरेको छ भने, अर्डर {{transferNo}} को लागि लटरी वालेटमा क्रेडिट गरी सफल चिन्ह लगाउँछ।", + "completeCreditTitle": "ट्रान्सफर-इन क्रेडिट पूरा गर्ने?", + "markCaseClosedDescription": "अर्डर {{transferNo}} मात्र बन्द भएको चिन्ह लगाउँछ; वालेट मिलाउँदैन। बाहिरै समाधान भइसकेको पुष्टि गर्नुहोस्।", + "markCaseClosedTitle": "केस बन्द चिन्ह पुष्टि?", + "reverseDescription": "अर्डर {{transferNo}} रिभर्स गर्नेछ, खेलाडी वालेट प्रभावित हुन सक्छ।", + "reverseTitle": "ट्रान्सफर रिभर्स पुष्टि गर्ने?" + }, + "copyExternalRefNo": "मुख्य साइट सन्दर्भ नं.", + "copyExternalTxnRefNo": "मुख्य साइट सन्दर्भ नं.", + "copyFailed": "प्रतिलिपि असफल भयो। ब्राउजर अनुमति जाँच गर्नुहोस् वा म्यानुअल रूपमा कपी गर्नुहोस्।", + "copySuccess": "{{label}} क्लिपबोर्डमा प्रतिलिपि भयो", + "copyTransferNo": "स्थानीय ट्रान्सफर नं.", + "copyTxnNo": "कारोबार नं.", + "currency": "मुद्रा", + "direction": "दिशा", "externalRefNo": "मुख्य साइट सन्दर्भ नं.", + "failReason": "असफल कारण", + "filterAll": "सबै", + "finishedTime": "समाप्त समय", + "in": "भित्र", + "invalidPlayerId": "मान्य खेलाडी ID लेख्नुहोस्", + "ledgerChannel": "लेजर", + "ledgerCredit": "क्रेडिट लेजर", + "ledgerWallet": "वालेट लेनदेन", + "loadFailed": "लोड असफल भयो", + "localTransferNo": "स्थानीय ट्रान्सफर नं.", + "markCaseClosed": "केस बन्द चिन्ह", + "markCaseClosedSuccess": "केस बन्द चिन्ह लाग्यो", + "noPermission": "हालको खातासँग यो पृष्ठमा पहुँच अनुमति छैन", + "noWalletRows": "वालेट रेकर्ड छैन। बेट वा ट्रान्सफर नगरेका खेलाडीमा रेकर्ड नहुन सक्छ।", + "options": "विकल्प", + "out": "बाहिर", "playerAccount": "खेलाडी खाता", "playerAccountPlaceholder": "मुख्य साइट खेलाडी ID वा प्रयोगकर्ता नाम (fuzzy)", "playerId": "खेलाडी ID", "playerIdOptional": "वैकल्पिक, खाताभन्दा प्राथमिक", - "requestDateRange": "अनुरोध मिति दायरा", - "status": "स्थिति", - "options": "विकल्प", - "abnormalOnly": "असामान्य मात्र", - "abnormalOnlyPending": "असामान्य मात्र (मिलान बाँकी)", - "search": "खोज", - "resetFilters": "फिल्टर रिसेट", - "refreshCurrentPage": "हालको पृष्ठ रिफ्रेस", - "loadFailed": "लोड असफल भयो", - "direction": "दिशा", - "amount": "रकम", - "failReason": "असफल कारण", - "requestTime": "अनुरोध समय", - "finishedTime": "समाप्त समय", - "actions": "कार्य", - "actionsMenuAriaLabel": "ट्रान्सफर अर्डर कार्य मेनु", - "reverse": "रिभर्स", - "completeCredit": "क्रेडिट पूरा गर्नुहोस्", - "markCaseClosed": "केस बन्द चिन्ह", + "playerWalletQuery": "खेलाडी वालेट खोज", "processing": "प्रक्रियामा…", - "reverseSuccess": "रिभर्स सफल भयो", - "completeCreditSuccess": "ट्रान्सफर-इन क्रेडिट सफल भयो", - "markCaseClosedSuccess": "केस बन्द चिन्ह लाग्यो", - "actionFailed": "कार्य असफल भयो", - "confirm": { - "reverseTitle": "ट्रान्सफर रिभर्स पुष्टि गर्ने?", - "reverseDescription": "अर्डर {{transferNo}} रिभर्स गर्नेछ, खेलाडी वालेट प्रभावित हुन सक्छ।", - "completeCreditTitle": "ट्रान्सफर-इन क्रेडिट पूरा गर्ने?", - "completeCreditDescription": "मुख्य साइटले पहिले नै कटौती गरेको छ भने, अर्डर {{transferNo}} को लागि लटरी वालेटमा क्रेडिट गरी सफल चिन्ह लगाउँछ।", - "markCaseClosedTitle": "केस बन्द चिन्ह पुष्टि?", - "markCaseClosedDescription": "अर्डर {{transferNo}} मात्र बन्द भएको चिन्ह लगाउँछ; वालेट मिलाउँदैन। बाहिरै समाधान भइसकेको पुष्टि गर्नुहोस्।" - }, - "txnNo": "कारोबार नं.", - "bizType": "व्यवसाय प्रकार", - "type": "प्रकार", - "queryFailed": "खोज असफल भयो", - "invalidPlayerId": "मान्य खेलाडी ID लेख्नुहोस्", - "querying": "खोजिँदैछ…", "query": "खोज", + "queryFailed": "खोज असफल भयो", + "querying": "खोजिँदैछ…", + "refreshCurrentPage": "हालको पृष्ठ रिफ्रेस", + "requestDateRange": "अनुरोध मिति दायरा", + "requestTime": "अनुरोध समय", + "resetFilters": "फिल्टर रिसेट", + "reverse": "रिभर्स", + "reverseSuccess": "रिभर्स सफल भयो", + "scopeHint": "यो क्षेत्र मुख्य साइट वालेट मोड (वालेट लेनदेन र ट्रान्सफर) का लागि हो। क्रेडिट लाइन अवधि सेटलमेन्टका लागि हेर्नुहोस्", + "scopeHintSettlement": "सेटलमेन्ट केन्द्र", + "scopeHintSettlementLink": "सेटलमेन्ट केन्द्र", + "search": "खोज", "sitePlayer": "साइट खेलाडी", - "walletType": "प्रकार", - "currency": "मुद्रा", - "balanceMinor": "ब्यालेन्स (सानो एकाइ)", - "availableBalance": "उपलब्ध (अनुमानित)", - "noWalletRows": "वालेट रेकर्ड छैन। बेट वा ट्रान्सफर नगरेका खेलाडीमा रेकर्ड नहुन सक्छ।", - "copyTransferNo": "स्थानीय ट्रान्सफर नं.", - "copyExternalRefNo": "मुख्य साइट सन्दर्भ नं.", - "copyTxnNo": "कारोबार नं.", - "copyExternalTxnRefNo": "मुख्य साइट सन्दर्भ नं.", - "in": "भित्र", - "out": "बाहिर" + "status": "स्थिति", + "statusCaseClosed": "केस बन्द भयो", + "statusFailed": "असफल", + "statusPendingReconcile": "मिलान बाँकी", + "statusPosted": "पोस्ट गरियो", + "statusProcessing": "प्रक्रियामा", + "statusReversed": "रिभर्स भयो", + "statusSuccess": "सफल", + "subnavLabel": "वालेट उपपृष्ठहरू", + "subnavPlayerWallet": "खेलाडी वालेट", + "subnavTransactions": "वालेट कारोबार", + "subnavTransferOrders": "ट्रान्सफर अर्डर", + "title": "वालेट", + "transferIn": "मुख्य साइटबाट भित्र", + "transferOrders": "ट्रान्सफर अर्डर", + "transferOut": "मुख्य साइटतर्फ बाहिर", + "transferOutRefund": "ट्रान्सफर-आउट फिर्ता", + "txnNo": "कारोबार नं.", + "type": "प्रकार", + "walletTransactions": "वालेट कारोबार", + "walletType": "प्रकार" } diff --git a/src/lib/admin-http.ts b/src/lib/admin-http.ts index a35cf38..f947a4d 100644 --- a/src/lib/admin-http.ts +++ b/src/lib/admin-http.ts @@ -28,6 +28,15 @@ adminHttp.interceptors.response.use( if (isAdminAuthRejected(error)) { handleAdminAuthRejected(); } + if (isAxiosError(error) && typeof window !== "undefined") { + const status = error.response?.status; + if (status === 500 || status === 502 || status === 503) { + console.error("[admin-http] upstream unavailable", status); + } + if (!error.response && error.message?.includes("Network Error")) { + console.error("[admin-http] network offline or upstream unreachable"); + } + } return Promise.reject(error); }, ); diff --git a/src/modules/update_sticky_actions.js b/src/modules/update_sticky_actions.js deleted file mode 100644 index 2d3e833..0000000 --- a/src/modules/update_sticky_actions.js +++ /dev/null @@ -1,66 +0,0 @@ -const fs = require('fs'); -const path = require('path'); - -const files = [ - "risk/risk-pools-console.tsx", - "risk/risk-index-console.tsx", - "admin-roles/admin-roles-console.tsx", - "admin-users/admin-users-console.tsx", - "wallet/wallet-console.tsx", - "integration/integration-sites-console.tsx", - "players/players-console.tsx", - "config/doc/risk-cap-doc-screen.tsx", - "draws/draw-review-console.tsx", - "draws/draws-index-console.tsx", - "tickets/player-tickets-console.tsx", - "settings/currency-settings-panel.tsx", - "agents/agents-console.tsx", - "settlement/settlement-batches-console.tsx" -]; - -const STICKY_HEAD_CLASSES = "sticky right-0 z-20 bg-muted shadow-[-1px_0_0_rgba(203,213,225,0.7)] "; -const STICKY_CELL_CLASSES = "sticky right-0 z-10 bg-card shadow-[-1px_0_0_rgba(203,213,225,0.7)] "; - -files.forEach(file => { - const fullPath = path.join("/Users/kang/Work/lotterySystem/lotteryadmin/src/modules", file); - if (!fs.existsSync(fullPath)) { - console.log("Not found:", file); - return; - } - - let content = fs.readFileSync(fullPath, 'utf8'); - let changed = false; - - // Replace TableHead - const newContent1 = content.replace( - /]*)>(.*?t\([^)]*(?:action|操作)[^)]*\).*?)<\/TableHead>/g, - (match, p1, p2, p3) => { - if (p1.includes("sticky")) return match; - changed = true; - return `${p3}`; - } - ); - content = newContent1; - - // Replace TableCell wrapping AdminRowActionsMenu - const newContent2 = content.replace( - /]*)>\s* { - if (match.includes("sticky")) return match; - changed = true; - if (p1.includes('className="')) { - return match.replace(/className="([^"]*)"/, `className="${STICKY_CELL_CLASSES}$1"`); - } else { - return `\n