From b924496a266e169a42b23619f4977156b641e1b6 Mon Sep 17 00:00:00 2001 From: kang Date: Tue, 16 Jun 2026 17:08:12 +0800 Subject: [PATCH] feat(i18n, agents, players): enhance localization and improve agent and player management interfaces Updated localization files for English and Nepali, adding new entries and refining existing translations for better clarity. Enhanced the agent management interface with improved delegation features and child agent creation prompts. Improved player management functionalities, including confirmation dialogs for player actions and better handling of player creation and editing processes. --- .github/workflows/ci.yml | 20 + AGENTS.md | 4 +- scripts/merge-en-translations.mjs | 236 ++++++ scripts/merge-ne-translations.mjs | 316 +++++++ src/app/error.tsx | 42 + src/app/not-found.tsx | 13 + src/i18n/locales/en/adminUsers.json | 364 ++++---- src/i18n/locales/en/agents.json | 562 ++++++++----- src/i18n/locales/en/config.json | 1167 +++++++++++++------------- src/i18n/locales/en/jackpot.json | 148 ++-- src/i18n/locales/en/players.json | 182 ++-- src/i18n/locales/ne/adminUsers.json | 349 ++++---- src/i18n/locales/ne/agents.json | 363 ++++---- src/i18n/locales/ne/common.json | 408 +++++---- src/i18n/locales/ne/config.json | 1108 ++++++++++++------------ src/i18n/locales/ne/dashboard.json | 495 ++++++----- src/i18n/locales/ne/draws.json | 420 ++++----- src/i18n/locales/ne/players.json | 147 ++-- src/i18n/locales/ne/reconcile.json | 112 +-- src/i18n/locales/ne/reports.json | 543 ++++++------ src/i18n/locales/ne/risk.json | 202 ++--- src/i18n/locales/ne/tickets.json | 86 +- src/i18n/locales/ne/wallet.json | 150 ++-- src/lib/admin-http.ts | 9 + src/modules/update_sticky_actions.js | 66 -- 25 files changed, 4273 insertions(+), 3239 deletions(-) create mode 100644 .github/workflows/ci.yml create mode 100644 scripts/merge-en-translations.mjs create mode 100644 scripts/merge-ne-translations.mjs create mode 100644 src/app/error.tsx create mode 100644 src/app/not-found.tsx delete mode 100644 src/modules/update_sticky_actions.js 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