/* 以下为多语言中重复出现的文案,统一声明一次后在下方各 key 复用,避免同一文案多处声明。 */ /** @description 登录的统一文案。 */ const TEXT_LOGIN = '登录' /** @description 注册的统一文案。 */ const TEXT_REGISTER = '注册' /** @description “是”的统一文案。 */ const TEXT_YES = '是' /** @description “否”的统一文案。 */ const TEXT_NO = '否' /** @description “查看”的统一文案。 */ const TEXT_VIEW = '查看' /** @description 自动托管的统一文案。 */ const TEXT_AUTO_HOSTING = '自动托管' /** @description 钱包流水的统一文案。 */ const TEXT_WALLET_RECORDS = '钱包流水' /** @description 站内消息的统一文案。 */ const TEXT_SITE_MESSAGES = '站内消息' /** @description 分页“第x页/共x条”的统一文案。 */ const TEXT_PAGE_INDICATOR = '第 {{page}} 页 / 共 {{total}} 条' /** @description 上一页的统一文案。 */ const TEXT_PREV_PAGE = '上一页' /** @description 下一页的统一文案。 */ const TEXT_NEXT_PAGE = '下一页' /** @description “时间”的统一文案。 */ const TEXT_TIME = '时间' /** @description 超过单次投注限额的统一文案。 */ const TEXT_BET_LIMIT_EXCEEDED = '超过单次投注限额' /** @description “提交中...”的统一文案。 */ const TEXT_SUBMITTING = '提交中...' /** @description 手机号字段标签的统一文案。 */ const TEXT_MOBILE_LABEL = '手机号:' /** @description 手机号输入占位的统一文案。 */ const TEXT_MOBILE_PLACEHOLDER = '请输入手机号' /** @description 密码字段标签的统一文案。 */ const TEXT_PASSWORD_LABEL = '密码:' /** @description 密码输入占位的统一文案。 */ const TEXT_PASSWORD_PLACEHOLDER = '请输入密码' /** @description “确认”按钮的统一文案。 */ const TEXT_CONFIRM = '确认' /** @description “加载中...”的统一文案。 */ const TEXT_LOADING = '加载中...' /** @description 货币类型的统一文案。 */ const TEXT_CURRENCY_TYPE = '货币类型' /** @description 支付渠道的统一文案。 */ const TEXT_PAYMENT_CHANNEL = '支付渠道' /** @description “已封盘”的统一文案。 */ const TEXT_LOCKED = '已封盘' /** @description “已结算”的统一文案。 */ const TEXT_SETTLED = '已结算' export default { nav: { home: '首页', game: '游戏大厅', }, shell: { eyebrow: '36字花', subtitle: '实时开奖 · 双端适配 · 多语言游戏前端', }, notFound: { eyebrow: '404', title: '找不到你访问的页面。', description: '当前路由不存在,你可以返回脚手架首页继续开始开发。', home: '返回首页', }, home: { eyebrow: '游戏前台骨架已启动', title: '36 字花双端游戏框架正在落地。', description: '当前版本已经切入真实业务方向:统一路由、共享状态、移动端与桌面端分视图,后续会在这个基础上继续接入实时状态机、下注流程和开奖动画。', cards: { routingMode: '路由策略', dataLayer: '状态规划', transport: '联机能力', auth: '业务目标', metadata: '当前重点', }, values: { routingMode: '统一 URL + 双端分视图', dataLayer: 'Round / Bet / User / UI / Connection', transport: 'HTTP + WebSocket', auth: '36 宫格实时开奖玩法', metadata: '先落结构,再接状态机与动效', }, footnote: '下一步会优先完成游戏主路由、共享业务模型和移动端 / 桌面端页面骨架。', primaryAction: '进入游戏大厅', secondaryAction: '查看项目结构', }, language: { label: '语言', zhCN: '中文', enUS: 'English', msMY: 'Melayu', idID: 'Indonesia', }, game: { metaTitle: '游戏大厅', metaDescription: '36字花实时开奖游戏大厅。', lobbyTitle: '36字花游戏大厅', lobbySubtitle: '统一业务路由下,移动端与桌面端分别挂载不同视图,但共用一套游戏数据和状态。', status: { roundState: '回合状态', currentRound: '当前期号 {{id}}', tablePool: '桌面资金池', onlineCount: '{{count}} 在线', activeChip: '当前筹码', announcementsRead: '已读公告 {{read}}/{{total}}', connection: '连接质量', connectionHealthy: '连接稳定', connectionRecovering: '等待重连', synced: '已同步', degraded: '异常', }, board: { historyTitle: '开奖历史', historySubtitle: '最近开奖与派奖记录', trendTitle: '冷热走势', trendSubtitle: '热度与遗漏参考', stageTitle: '开奖舞台', stageSubtitle: '这一层先挂载主盘面与中控结构,后续再接真实状态机和动画。', currentPhase: '当前阶段', selectedBet: '下注 {{amount}}', hitCount: '命中 {{count}} 次', hitBadge: '{{count}}x', badgeWin: '中奖', badgeBet: '下注', cellLabel: '字花 {{id}}', winningCell: '中奖格 {{id}}', missedRounds: '遗漏 {{count}} 局', rising: '热度上升', falling: '热度回落', steady: '稳定', hitTotal: '{{count}} 命中', }, phases: { betting: '下注中', locked: TEXT_LOCKED, settled: TEXT_SETTLED, }, roundBettingStart: { title: '{{roundId}}期', action: '开始下注', }, jackpotBroadcast: { ariaLabel: 'Jackpot 播报', ariaMessage: '{{nickname}} 连胜 {{streak}} 次,赢得 {{amount}}', iconAlt: '播报', prefix: 'Jackpot 喜讯', separator: '达成', streak: '{{count}} 连胜', winAction: '赢得', }, actions: { unifiedBetHint: '统一下注额', totalBet: '总下注', canBet: '可下注', yes: TEXT_YES, no: TEXT_NO, quickBet: '快速选中 08', clearPending: '清空未确认', autoModeDemo: '自动托管演示', stopAuto: '停止托管', }, modals: { login: { title: TEXT_LOGIN, }, register: { title: TEXT_REGISTER, }, notice: { title: '活动公告', content: '这里后续将接入真实的活动公告内容、图文素材和滚动阅读区域。当前版本先用多语言结构完成桌面端公告弹窗能力。', check: TEXT_VIEW, }, entryNotice: { title: '网站公告', subtitle: '请先阅读以下公告,勾选确认后即可进入游戏。', loading: '公告加载中...', loadFailed: '公告加载失败,请重试', retry: '重新加载', agreement: '我已阅读并同意。', enterGame: '进入游戏', }, rules: { title: '玩法规则', content: '一、基础玩法\n1. 每一局开始后,玩家可以在盘面上选择一个或多个号码进行下注。\n2. 系统会在封盘后进入开奖阶段,并根据当期结果结算对应奖金。\n3. 不同下注档位对应不同下注金额,实际以当前系统配置和桌限为准。\n\n二、下注说明\n1. 只有在“下注中”阶段可以提交下注。\n2. 每次提交前,请确认已选号码、下注金额和总下注额。\n3. 若余额不足、期号失效或已封盘,系统将拒绝该次下注请求。\n\n三、开奖与结算\n1. 开奖结果以系统最终展示为准。\n2. 命中规则、赔率、派彩与连中表现按当前房间配置实时结算。\n3. 如遇网络波动,请以重新同步后的官方数据为准。\n\n四、其他说明\n1. 请合理安排游戏时间,理性参与。\n2. 严禁使用任何异常手段干扰系统、刷取奖励或规避风控。\n3. 平台保留在异常情况下对订单、派奖和账户状态进行复核的权利。', confirm: '我知道了', }, procedures: { title: '充值 / 提现', contentPlaceholder: '请选择你要进行的操作', withdraw: '提现', topup: '充值', }, autoSetting: { title: TEXT_AUTO_HOSTING, startAutoSpin: '开始自动托管', rows: { stopIfBalanceLowerThan: '余额低于时停止', stopIfSingleWinExceeds: '单次盈利超过时停止', stopOnAnyJackpot: '出现任意 Jackpot 时停止', }, }, userInfo: { title: '用户信息', tabs: { profile: '个人信息', financeRecords: '充值/提现记录', walletRecords: TEXT_WALLET_RECORDS, message: TEXT_SITE_MESSAGES, }, profile: { name: '用户名', tel: '电话', registeredAt: '注册时间', copyInviteLink: '复制邀请链接', logout: '退出登录', loggingOut: '退出中...', signature: '我的个性签名和灵魂一样独特,后续这里会接真实资料字段。', }, message: { title: TEXT_SITE_MESSAGES, back: '返回', loading: '消息加载中...', loadFailed: '消息加载失败,请稍后重试', empty: '暂无消息', read: '已读', unread: '未读', eventBonus: '[充值活动] 10 月 1 日至 10 月 7 日期间可获得返利奖励……', check: TEXT_VIEW, deleteRecords: '删除记录', }, financeRecords: { deposit: '充值记录', withdraw: '提现记录', orderNo: '订单号', amount: '金额', bonusAmount: '赠送金额', loading: '记录加载中...', loadFailed: '记录加载失败,请稍后重试', empty: '暂无记录', page: TEXT_PAGE_INDICATOR, previous: TEXT_PREV_PAGE, next: TEXT_NEXT_PAGE, }, walletRecords: { amount: '变动金额', balanceAfter: '变动后', balanceBefore: '变动前', empty: '暂无钱包流水', loadFailed: '钱包流水加载失败,请稍后重试', loading: '钱包流水加载中...', next: TEXT_NEXT_PAGE, page: TEXT_PAGE_INDICATOR, previous: TEXT_PREV_PAGE, remark: '备注', time: TEXT_TIME, type: TEXT_WALLET_RECORDS, }, }, withdrawTopup: { applyWithdraw: '申请提现', applyTopup: '申请充值', }, }, autoSpin: { eyebrow: TEXT_AUTO_HOSTING, title: '自动托管运行中', description: '托管态会覆盖主盘面,但目标格子和进度信息仍然保留可见。', runningRounds: '游戏托管中,已经进行 {{count}} 局', trailingLabel: '手动输入已锁定', }, footer: { implementationTitle: '当前实现说明', implementationSubtitle: '这一版优先把双端壳层、共享模型和业务接线落到代码里。', implementationBody: '下一步会继续接入真实 API、WebSocket、完整 UI Store 和回合状态机。', limitsTitle: '桌限信息', limitsSubtitle: '来自当前大厅数据', minBet: '最低下注', maxBet: '最高下注', }, }, commonUi: { dialog: { close: '关闭提示', confirm: '知道了', no: TEXT_NO, yes: TEXT_YES, }, modal: { close: '关闭弹窗', defaultAriaLabel: '弹窗', }, boot: { loading: '资源加载中', syncing: '正在同步字花图鉴与游戏界面', }, support: { title: '在线客服', connecting: '客服连线中', }, toast: { lobbyInitFailed: '游戏大厅加载失败', loginRequired: '请先登录后进入游戏', loginSuccess: '登录成功', logoutSuccess: '已退出登录', logoutLocalOnly: '退出接口请求失败,已清除本地登录状态', registerSuccess: '注册成功', inviteLinkCopied: '邀请链接已复制', inviteLinkCopyFailed: '邀请链接复制失败,请手动复制', insufficientBalance: '余额不足,请调整下注金额', betLimitExceeded: TEXT_BET_LIMIT_EXCEEDED, betUnavailable: '当前期不可下注', betPlaced: '下注成功', noRecentSuccessfulBet: '暂无上一局成功下注记录', repeatSelectionsRestored: '已恢复上一局成功下注的花字', betRejected: '下注未受理', betPlaceFailed: '下注失败,请稍后重试', selectNumbersBeforeAutoHosting: '请先选择花字', autoHostingStarted: '自动托管已开始', autoHostingStopped: '自动托管已停止', autoHostingStoppedBalance: '余额低于条件,自动托管已停止', autoHostingStoppedBetLimit: '超过单次投注限额,自动托管已停止', autoHostingStoppedWin: '单次盈利达到条件,自动托管已停止', autoHostingStoppedJackpot: '出现 Jackpot 大奖,自动托管已停止', autoHostingSubmitFailed: '自动托管下注失败,已停止托管', }, }, auth: { common: { arrowIconAlt: '箭头', actions: { submitting: TEXT_SUBMITTING, }, passwordVisibility: { hide: '隐藏密码', show: '显示密码', }, }, login: { actions: { submit: TEXT_LOGIN, }, fields: { username: { label: TEXT_MOBILE_LABEL, placeholder: TEXT_MOBILE_PLACEHOLDER, }, password: { label: TEXT_PASSWORD_LABEL, placeholder: TEXT_PASSWORD_PLACEHOLDER, }, }, footer: { registerAccount: '注册账号', forgotPassword: '忘记密码', }, errors: { submitFailed: '登录失败,请稍后重试', invalidCredentials: '账号或密码错误', }, }, register: { actions: { submit: TEXT_REGISTER, }, fields: { mobile: { label: TEXT_MOBILE_LABEL, placeholder: TEXT_MOBILE_PLACEHOLDER, }, captcha: { label: '验证码:', placeholder: '请输入验证码', }, password: { label: TEXT_PASSWORD_LABEL, placeholder: TEXT_PASSWORD_PLACEHOLDER, }, confirmPassword: { label: '确认密码:', placeholder: '请再次输入密码', }, inviteCode: { label: '邀请码:', placeholder: '请输入邀请码', }, }, footer: { alreadyHaveAccount: '已有账号', needHelp: '需要帮助', }, errors: { submitFailed: '注册失败,请稍后重试', unauthorized: '注册未授权,请稍后重试', }, sms: { countdown: '{{seconds}}秒', errors: { submitFailed: '验证码发送失败,请稍后重试', }, send: '获取验证码', sending: '发送中...', success: '验证码已发送', }, }, validation: { captcha: { required: '请输入验证码', }, username: { required: TEXT_MOBILE_PLACEHOLDER, invalidPhone: '请输入正确的手机号', }, password: { min: '密码至少 6 位', max: '密码最多 32 位', }, inviteCode: { required: '请输入邀请码', max: '邀请码最多 32 位', }, confirmPassword: { mismatch: '两次输入的密码不一致', }, }, errors: { requestFailed: '请求失败,请稍后重试', authTokenConfigMissing: '认证配置缺失,请联系管理员', timeout: '请求超时,请稍后重试', serviceUnavailable: '服务暂不可用,请稍后重试', }, }, gameDesktop: { header: { systemTime: '系统时间', rules: '规则', message: '消息', bgm: '音乐', id: '编号', fullscreen: '全屏', login: TEXT_LOGIN, register: TEXT_REGISTER, }, control: { trend: '走势', map: '地图', selected: '已选', totalBet: '总下注', confirm: TEXT_CONFIRM, selectNumbers: '请选择号码', insufficientBalance: '余额不足', betLimitExceeded: '超过限额', submitting: TEXT_SUBMITTING, actions: { clear: '清空', repeat: '重复', 'auto-spin': TEXT_AUTO_HOSTING, }, }, status: { odds: '赔率', streak: '连中', limit: '限额', roundId: '期号', phase: { betting: { label: '下注中', description: '(接受下注)', }, locked: { label: TEXT_LOCKED, description: '(停止下注)', }, revealing: { label: '开奖中', description: '(正在开奖)', }, settled: { label: '开奖中', description: '(本轮结束)', }, waiting: { label: '等待中', description: '(等待下一轮)', }, }, }, title: { announcement: '公告栏', }, animal: { insufficientBalanceRecharge: '余额不足,请充值', betLimitExceeded: TEXT_BET_LIMIT_EXCEEDED, loading: '加载中', selectionLimitReached: '超过可选择字花', tapToEnter: '点击进入', getStart: '开始游戏', noBet: '未下注', noReward: '本期未中奖', selectedResult: '已下注字花', winningResult: '中奖字花', }, history: { title: '历史记录', pending: 'PENDING', win: 'WIN', lost: 'LOST', orderNo: '订单号', roundId: '期号', numbers: '下注号码', createdAt: TEXT_TIME, settledAt: '结算时间', totalPoolAmount: '下注金额', winningResult: '中奖字花', payout: '中奖金额', empty: '暂无历史记录', end: '没有更多记录了', loading: TEXT_LOADING, settled: TEXT_SETTLED, }, periodHistory: { title: '开奖结果历史', close: '关闭开奖结果历史', empty: '暂无开奖结果', failed: '开奖结果加载失败', loading: TEXT_LOADING, retry: '重试', }, topup: { title: '充值配置', platformCoinLabel: '平台币', currencyLabel: TEXT_CURRENCY_TYPE, channelLabel: TEXT_PAYMENT_CHANNEL, rateHint: '汇率为参考价格,实际以充值时为准。', tier: { bonus: '赠送', coins: '到账钻石', createSuccess: '充值订单已创建', empty: '暂无充值档位', failed: '充值档位加载失败', loading: '充值档位加载中...', missingPayUrl: '充值链接缺失,请稍后重试', openPayUrlFailed: '支付页面打开失败,请检查浏览器弹窗拦截', source: '充值档位接口', title: '充值档位', }, preview: { title: '充值预览', depositTitle: '请选择充值货币和支付渠道', depositRate: '充值比例 ({{currency}})', depositRateValue: '1 {{currency}} = {{coins}} {{platformCoinLabel}}', amount: '示例到账', }, }, mobile: { placeholder: '移动端页面建设中', }, withdraw: { availableBalance: '可用余额:{{amount}}', currencySelection: '货币类型选择', selectCurrency: '请选择货币类型', referenceRateNotice: '汇率为参考价格,实际以提现时为准。', eWallet: '电子钱包', bank: '银行', minimumAmount: '最低 {{currency}} {{amount}}', processingTime: '处理时间', arrivalTimeValue: '30s即可到账', notice: '注意', feeNotice: 'RM10 - RM99.99 之间的交易将收取最低RM 1的提现手续费', cancel: '取消', confirm: TEXT_CONFIRM, submitSuccess: '申请提现成功', withdrawal: '提现', fields: { diamondAmount: '提现钻石数量', currencyType: TEXT_CURRENCY_TYPE, paymentChannel: TEXT_PAYMENT_CHANNEL, bankCode: '银行代码', cardHolderName: '持卡人姓名', bankAccountNumber: '银行账号', receiverEmail: '收款人邮箱', receiverPhone: '收款人手机号', }, placeholders: { bankCode: '请选择银行代码', cardHolderName: '请输入持卡人姓名', bankAccountNumber: '请输入银行账号', receiverEmail: '请输入收款人邮箱', receiverPhone: '请输入收款人手机号', }, errors: { amountRequired: '请输入提现钻石数量', amountBelowMinimum: '提现金额不能低于最低提现金额({{currency}} {{amount}} / {{diamonds}} 钻石)', bankCodeRequired: '请选择银行代码', bankCodeUnavailable: '当前暂无可用银行代码', cardHolderNameRequired: '请输入持卡人姓名', bankAccountRequired: '请输入银行账号', paymentChannelRequired: '请选择支付渠道', paymentChannelUnavailable: '当前暂无可用支付渠道', receiverEmailInvalid: '请输入正确的邮箱', receiverPhoneInvalid: '请输入正确的手机号', amountExceedsBalance: '提现金额不能大于当前拥有的金额', }, success: { orderNo: '订单号:{{orderNo}}', actualArrivalCoin: '实际到账钻石:{{amount}}', feeCoin: '手续费钻石:{{amount}}', reviewRequired: '需要风控审核:{{value}}', }, preview: { title: '兑换预览', diamondAmount: '钻石数量', exchangeRate: '兑换比例 ({{currency}})', exchangeRateValue: '{{coins}} {{platformCoinLabel}} = 1 {{currency}}', convertible: '可兑换{{currency}}', fixedExchangeDiamondAmount: '固定兑换钻石金额', }, }, }, } as const