960 lines
39 KiB
TypeScript
960 lines
39 KiB
TypeScript
/** 管理后台:中文 + 英文 + 马来语(核心短文案)
|
||
* 列表页/弹窗大段文案通过 bundles/ 动态 chunk 平载入,不再静态 import admin-pages。
|
||
*/
|
||
export type AdminLocale = 'zh-CN' | 'en-US' | 'ms-MY';
|
||
|
||
export const ADMIN_LOCALES: {
|
||
code: AdminLocale;
|
||
label: string;
|
||
}[] = [
|
||
{ code: 'zh-CN', label: '中文' },
|
||
{ code: 'en-US', label: 'English' },
|
||
{ code: 'ms-MY', label: 'Bahasa Melayu' },
|
||
];
|
||
|
||
const zh: Record<string, string> = {
|
||
'login.title': '管理后台',
|
||
'login.username': '用户名',
|
||
'login.password': '密码',
|
||
'login.submit': '登录',
|
||
'login.username_ph': '请输入用户名',
|
||
'login.password_ph': '请输入密码',
|
||
'login.err_captcha': '验证码错误,请重试',
|
||
'login.err_failed': '登录失败,请检查账号与密码',
|
||
'login.err_quick': '快速登录失败',
|
||
'login.quick_label': '快速登录(调试)',
|
||
'login.quick_admin': '管理员',
|
||
'login.quick_agent': '一级代理',
|
||
'login.quick_agent2': '二级代理',
|
||
'login.quick_match_admin': '赛事管理员',
|
||
'login.quick_finance_admin': '财务管理员',
|
||
'login.quick_support': '客服查询员',
|
||
'staff.create_btn': '创建后台账号',
|
||
'staff.col.role': '角色',
|
||
'staff.col.last_login': '最近登录',
|
||
'staff.dialog.create': '创建后台账号',
|
||
'staff.dialog.edit': '编辑后台账号',
|
||
'staff.field.visible_menus': '菜单权限',
|
||
'login.captcha_ph': '验证码',
|
||
'login.captcha_refresh': '点击刷新',
|
||
|
||
'nav.dashboard': '概览',
|
||
'nav.dashboard.matches': '赛事概览',
|
||
'nav.dashboard.players': '玩家概览',
|
||
'nav.invites': '邀请管理',
|
||
'nav.users': '玩家管理',
|
||
'nav.agents': '代理管理',
|
||
'nav.agents_players': '代理&玩家',
|
||
'nav.matches': '赛事管理',
|
||
'nav.outrights': '优胜冠军',
|
||
'nav.bets': '注单管理',
|
||
'nav.credit_transactions': '额度流水',
|
||
'nav.finance_logs': '财务流水',
|
||
'nav.cashback': '返水管理',
|
||
'nav.contents': '公共管理',
|
||
'nav.audit': '操作日志',
|
||
'nav.smoke_tests': '自动化测试',
|
||
'nav.media': '媒体库',
|
||
'nav.payment_methods': '收款方式',
|
||
'nav.deposit_orders': '充值审核',
|
||
'nav.deposit_manage': '充值管理',
|
||
'nav.staff': '后台账号',
|
||
'nav.players': '直属玩家',
|
||
|
||
'deposit.payment_methods_title': '收款方式管理',
|
||
'deposit.deposit_orders_title': '充值审核',
|
||
'deposit.all_status': '所有状态',
|
||
'deposit.all_types': '所有类型',
|
||
'deposit.status_pending': '待审核',
|
||
'deposit.status_approved': '已通过',
|
||
'deposit.status_rejected': '已拒绝',
|
||
'deposit.search_player_ph': '搜索玩家...',
|
||
'deposit.pending_badge': '待审核 {n} 笔',
|
||
'deposit.order_no': '订单号',
|
||
'deposit.player': '玩家',
|
||
'deposit.amount': '金额',
|
||
'deposit.screenshot': '截图',
|
||
'deposit.approved_amount': '批准金额',
|
||
'deposit.reviewer': '审核人',
|
||
'deposit.time': '时间',
|
||
'deposit.approve': '批准',
|
||
'deposit.reject': '拒绝',
|
||
'deposit.approve_title': '批准充值',
|
||
'deposit.reject_title': '拒绝充值',
|
||
'deposit.submitted_amount': '申报金额',
|
||
'deposit.approved_amount_label': '批准金额(可调整)',
|
||
'deposit.remark_label': '备注(可选)',
|
||
'deposit.confirm_approve': '确认批准',
|
||
'deposit.approve_check_hint': '请仔细核对截图中的转账金额,确保与下方「批准金额」完全一致后再提交。',
|
||
'deposit.confirm_approve_message': '即将批准金额 {amount}。请再次确认该金额与截图一致,确认后将入账玩家钱包。',
|
||
'deposit.confirm_reject': '确认拒绝',
|
||
'deposit.reject_reason_label': '拒绝原因 *',
|
||
'deposit.reject_reason_ph': '请输入拒绝原因...',
|
||
'deposit.reason_required': '请输入拒绝原因',
|
||
'deposit.revoke': '撤回',
|
||
'deposit.confirm_revoke': '将作废批准后 5 分钟内的待结算注单、扣回已入账金额,并恢复为待审核。确定撤回?',
|
||
'deposit.reopen_review': '重新审核',
|
||
'deposit.confirm_reopen': '订单将恢复为待审核,可再次批准或拒绝。确定继续?',
|
||
'deposit.delete': '删除',
|
||
'deposit.confirm_delete': '【仅删除记录】将永久删除本订单记录及截图文件。确定继续?',
|
||
'deposit.delete_failed': '删除失败',
|
||
'deposit.prev': '上一页',
|
||
'deposit.next': '下一页',
|
||
'deposit.audit_history': '审核记录',
|
||
'deposit.audit_action': '操作',
|
||
'deposit.audit_actor': '操作人',
|
||
'deposit.audit_time': '时间',
|
||
'deposit.audit_remark': '备注',
|
||
'deposit.audit_submitted': '提交申请',
|
||
'deposit.audit_approved': '审核通过',
|
||
'deposit.audit_rejected': '审核拒绝',
|
||
'deposit.audit_revoked': '撤销审核',
|
||
'deposit.audit_reopened': '重新审核',
|
||
'deposit.audit_deleted': '已删除',
|
||
'deposit.audit_empty': '暂无审核记录',
|
||
'deposit.add_method': '+ 添加',
|
||
'deposit.display_name': '展示名称',
|
||
'deposit.details': '详情',
|
||
'deposit.sort': '排序值',
|
||
'deposit.active': '启用',
|
||
'deposit.show_player': '前台展示',
|
||
'deposit.edit_method': '编辑收款方式',
|
||
'deposit.create_method': '新建收款方式',
|
||
'deposit.bank_name': '银行名称',
|
||
'deposit.account_holder': '账户持有人',
|
||
'deposit.account_number': '银行账号',
|
||
'deposit.usdt_address': 'USDT 地址',
|
||
'deposit.qr_code': '二维码',
|
||
'deposit.sort_order': '排序值',
|
||
'deposit.show_on_player': '展示给玩家',
|
||
'deposit.save': '保存',
|
||
'deposit.confirm_deactivate': '确认停用此收款方式?',
|
||
'deposit.lang_zh': '中文',
|
||
'deposit.lang_en': 'English',
|
||
'deposit.lang_ms': 'Bahasa',
|
||
'deposit.multilingual_hint': '为不同语言设置显示名称,留空则使用默认值',
|
||
'nav.subAgents': '二级代理',
|
||
'nav.myBets': '注单查询',
|
||
'nav.open_menu': '打开菜单',
|
||
'nav.close_menu': '关闭菜单',
|
||
'breadcrumb.settlement': '赛事结算',
|
||
'breadcrumb.match_edit': '编辑赛事',
|
||
'breadcrumb.match_markets': '盘口管理',
|
||
'breadcrumb.outright_edit': '编辑优胜冠军',
|
||
'role.admin': '系统管理员',
|
||
'role.super_admin': '超级管理员',
|
||
'role.match_admin': '赛事管理员',
|
||
'role.finance_admin': '财务管理员',
|
||
'role.support': '客服查询员',
|
||
'role.agent': '代理账号',
|
||
'role.tier1_agent': '一级代理',
|
||
'role.tier2_agent': '二级代理',
|
||
'logout': '退出',
|
||
'lang': '语言',
|
||
'portal.admin': '平台后台管理',
|
||
'portal.agent': '代理后台管理',
|
||
|
||
'common.all': '全部',
|
||
'common.search': '查询',
|
||
'common.refresh': '刷新',
|
||
'common.reset': '重置',
|
||
'common.edit': '编辑',
|
||
'common.yes': '是',
|
||
'common.no': '否',
|
||
'common.delete': '删除',
|
||
'common.cancel': '取消',
|
||
'common.confirm': '确定',
|
||
'common.retry': '重试',
|
||
'common.status': '状态',
|
||
'user.status.ACTIVE': '正常',
|
||
'user.status.SUSPENDED': '已冻结',
|
||
'user.status.DISABLED': '已停用',
|
||
'common.type': '类型',
|
||
'common.keyword': '关键词',
|
||
'common.actions': '操作',
|
||
'common.seq': '序号',
|
||
'common.more': '更多',
|
||
'common.loading': '加载中…',
|
||
'common.no_data': '暂无数据',
|
||
'common.yesterday': '昨日',
|
||
'common.vs_yesterday': '较昨日',
|
||
'common.people': '人',
|
||
'common.bets_unit': '单',
|
||
'common.matches_unit': '场赛事',
|
||
'common.frozen': '冻结',
|
||
'common.used': '已用',
|
||
'common.platform_direct': '平台直属',
|
||
'common.updated_at': '更新于',
|
||
'common.enable': '启用',
|
||
'common.disable': '停用',
|
||
'common.show_player': '前台展示',
|
||
'common.hide_player': '前台隐藏',
|
||
|
||
'dash.title': '概览',
|
||
'dash.desc': '平台整体运行概况',
|
||
'dash.board_title': '整体概览',
|
||
'dash.board_hint': '一屏查看经营趋势与平台分布',
|
||
'dash.kpi_bet_count': '今日投注笔数',
|
||
'dash.kpi_stake': '今日投注额',
|
||
'dash.kpi_payout': '今日派彩',
|
||
'dash.kpi_ggr': '今日毛利',
|
||
'dash.kpi_users': '玩家 / 代理',
|
||
'dash.kpi_new_players': '今日新增 {n} 人',
|
||
'dash.kpi_pending': '待结算',
|
||
'dash.kpi_pending_sub': '{bets} 单 · {matches} 场赛事',
|
||
'dash.load_error_hint': '无法加载概览数据,请检查网络或稍后重试。',
|
||
'dash.kpi_wallet': '玩家余额',
|
||
'dash.kpi_credit': '代理授信',
|
||
'dash.trend_caption': '近 7 日经营趋势(金额折线 + 注单柱)',
|
||
'dash.chart_stake': '投注额',
|
||
'dash.chart_payout': '派彩',
|
||
'dash.chart_ggr': '毛利',
|
||
'dash.chart_bet_count': '注单笔数',
|
||
'dash.axis_amount': '金额',
|
||
'dash.axis_count': '笔数',
|
||
'dash.count_suffix': '笔',
|
||
'dash.chart_tooltip': '{b}:{c}({d}%)',
|
||
'dash.pie_empty': '暂无',
|
||
'dash.pie_matches': '赛事',
|
||
'dash.pie_bets': '今日注单',
|
||
'dash.pie_users': '用户',
|
||
'dash.match_draft': '草稿',
|
||
'dash.match_published': '已发布',
|
||
'dash.match_closed': '已封盘',
|
||
'dash.match_pending_settle': '待结算',
|
||
'dash.match_settled': '已结算',
|
||
'dash.user_active': '正常玩家',
|
||
'dash.user_online': '当前在线',
|
||
'dash.players_online': '当前在线',
|
||
'dash.players_online_hint': '约 2 分钟内活跃',
|
||
'dash.user_suspended': '停用',
|
||
'dash.user_direct': '直属',
|
||
'dash.user_agents': '代理',
|
||
'dash.section_matches_hint': '投注经营与赛事状态分布',
|
||
'dash.section_match_ops_hint': '赛事状态与待办',
|
||
'dash.trend_bet_count_caption': '近 7 日注单量趋势',
|
||
'dash.section_players_hint': '玩家、代理与资金概况',
|
||
'dash.kpi_match_total': '赛事总数',
|
||
'dash.kpi_match_total_sub': '草稿 {draft} · 已发布 {published}',
|
||
'dash.kpi_match_closed': '已封盘',
|
||
'dash.kpi_match_closed_sub': '已取消 {n} 场',
|
||
'dash.kpi_match_settled': '已结算赛事',
|
||
'dash.kpi_match_settled_sub': '已完成结算的场次',
|
||
'dash.kpi_agents_active': '活跃代理',
|
||
'dash.kpi_agents_active_sub': '停用玩家 {suspended} 人',
|
||
'dash.recent_players': '最新注册玩家',
|
||
'dash.recent_bets': '最新注单',
|
||
'dash.col_parent': '上级',
|
||
'dash.col_bet_no': '注单号',
|
||
'dash.col_stake': '投注额',
|
||
'dash.col_placed_at': '下注时间',
|
||
|
||
'page.users.title': '玩家管理',
|
||
'page.users.desc': '创建玩家、查看余额与投注概况,支持上分与状态管理',
|
||
'page.agents.title': '代理管理',
|
||
'page.agents.desc': '创建一级代理、调整授信额度、查看直属玩家与额度占用',
|
||
'nav.matches.fixtures': '赛事配置',
|
||
'nav.matches.outrights': '优胜赛配置(盘口)',
|
||
'nav.matches.market_templates': '盘口模板',
|
||
'nav.matches.audit_logs': '赛事日志',
|
||
'page.matches.title': '赛事管理',
|
||
'page.matches.desc': '草稿可编辑、删除;已发布可改开赛时间与热门;未结算可下架',
|
||
'page.bets.title': '注单管理',
|
||
'page.bets.desc': '筛选、分页查看全平台注单,支持详情与投注项',
|
||
'page.cashback.title': '返水管理',
|
||
'page.cashback.desc': '按周期生成返水并发放',
|
||
'page.audit.title': '操作日志',
|
||
'page.audit.desc': '账务、用户、结算等非赛事类管理操作',
|
||
'page.matches_audit.title': '赛事日志',
|
||
'page.matches_audit.desc': '联赛、赛事、盘口、赔率、冠军盘等赛事管理操作',
|
||
'page.settlement.title': '赛事结算',
|
||
'page.agent_dash.title': '代理概览',
|
||
'page.agent_dash.desc': '下线经营概况与分布',
|
||
'agent_dash.load_error_hint': '无法加载概览数据,请检查网络或重新登录后再试。',
|
||
'agent_dash.board_hint': '一屏查看下线经营趋势与分布',
|
||
'agent_dash.kpi_players': '直属玩家 / 下级代理',
|
||
'agent_dash.kpi_pending_sub': '{bets} 单待结算',
|
||
'agent_dash.pie_credit': '授信占用',
|
||
'agent_dash.pie_players': '直属玩家',
|
||
'agent_dash.credit_available': '可用额度',
|
||
'agent_dash.credit_used': '已用额度',
|
||
'agent_dash.liability_direct': '玩家余额占用',
|
||
'agent_dash.liability_child': '下级代理占用',
|
||
'page.agent_players.title': '直属玩家',
|
||
'page.agent_players.desc': '管理你名下的直属玩家',
|
||
'page.agent_sub.title': '二级代理',
|
||
'page.agent_sub.desc': '管理二级代理账号与授信分配',
|
||
'page.agent_bets.title': '注单查询',
|
||
'page.agent_bets.desc': '下级玩家的全部投注记录',
|
||
|
||
'agent.credit_limit': '授信额度',
|
||
'agent.credit_total': '总额度',
|
||
'agent.credit_used': '已用额度',
|
||
'agent.credit_occupied': '已占用',
|
||
'agent.direct_players': '直属玩家',
|
||
'agent.player_count': '玩家数',
|
||
'agent.today_stake': '今日投注',
|
||
'agent.currency_cny': '人民币',
|
||
|
||
'bet.status.PENDING': '待结算',
|
||
'bet.status.WON': '已赢',
|
||
'bet.status.LOST': '已输',
|
||
'bet.status.VOID': '作废',
|
||
'bet.status.REFUNDED': '已退款',
|
||
'bet.type.SINGLE': '单关',
|
||
'bet.type.PARLAY': '串关',
|
||
'bet.settlement.PENDING': '待结算',
|
||
'bet.settlement.SETTLED': '已结算',
|
||
'bet.settlement.VOID': '已作废',
|
||
'bet.result.WON': '赢',
|
||
'bet.result.LOST': '输',
|
||
'bet.result.VOID': '走水',
|
||
'bet.result.PUSH': '走盘',
|
||
'bet.result.HALF_WON': '半赢',
|
||
'bet.result.HALF_LOST': '半输',
|
||
|
||
'match.status.DRAFT': '草稿',
|
||
'match.status.PUBLISHED': '已发布',
|
||
'match.status.CLOSED': '已封盘',
|
||
'match.status.SETTLED': '已结算',
|
||
'match.status.PENDING_SETTLEMENT': '待结算',
|
||
'match.filter.has_bets': '仅显示有下注',
|
||
'match.sort.default': '默认排序',
|
||
'match.sort.bet_count': '按注单数',
|
||
'match.sort.total_stake': '按投注额',
|
||
// 列表页/弹窗文案通过 bundles/zh-CN 动态平载,不在此处静态 spread
|
||
};
|
||
|
||
const en: Record<string, string> = {
|
||
'login.title': 'Admin Console',
|
||
'login.username': 'Username',
|
||
'login.password': 'Password',
|
||
'login.submit': 'Sign in',
|
||
'login.username_ph': 'Enter username',
|
||
'login.password_ph': 'Enter password',
|
||
'login.err_captcha': 'Captcha incorrect, try again',
|
||
'login.err_failed': 'Sign-in failed. Check username and password',
|
||
'login.err_quick': 'Quick sign-in failed',
|
||
'login.quick_label': 'Quick sign-in (debug)',
|
||
'login.quick_admin': 'Admin',
|
||
'login.quick_agent': 'Tier-1 agent',
|
||
'login.quick_agent2': 'Tier-2 agent',
|
||
'login.quick_match_admin': 'Match admin',
|
||
'login.quick_finance_admin': 'Finance admin',
|
||
'login.quick_support': 'Support',
|
||
'staff.create_btn': 'Create staff account',
|
||
'staff.col.role': 'Role',
|
||
'staff.col.last_login': 'Last login',
|
||
'staff.dialog.create': 'Create staff account',
|
||
'staff.dialog.edit': 'Edit staff account',
|
||
'staff.field.visible_menus': 'Menu Permissions',
|
||
'login.captcha_ph': 'Captcha',
|
||
'login.captcha_refresh': 'Click to refresh',
|
||
|
||
'nav.dashboard': 'Overview',
|
||
'nav.dashboard.matches': 'Match overview',
|
||
'nav.dashboard.players': 'Player overview',
|
||
'nav.invites': 'Invitations',
|
||
'nav.users': 'Players',
|
||
'nav.agents': 'Agents',
|
||
'nav.agents_players': 'Agents & Players',
|
||
'nav.matches': 'Matches',
|
||
'nav.outrights': 'Outrights',
|
||
'nav.bets': 'Bets',
|
||
'nav.credit_transactions': 'Credit ledger',
|
||
'nav.finance_logs': 'Finance ledger',
|
||
'nav.cashback': 'Cashback',
|
||
'nav.contents': 'Public Content',
|
||
'nav.audit': 'Audit Log',
|
||
'nav.smoke_tests': 'Smoke tests',
|
||
'nav.media': 'Media Library',
|
||
'nav.payment_methods': 'Payment Methods',
|
||
'nav.deposit_orders': 'Deposit Review',
|
||
'nav.deposit_manage': 'Deposit Mgmt',
|
||
'nav.staff': 'Staff accounts',
|
||
'nav.players': 'My Players',
|
||
'nav.subAgents': 'Tier-2 agents',
|
||
'nav.myBets': 'Bet Search',
|
||
|
||
'deposit.payment_methods_title': 'Payment Methods',
|
||
'deposit.deposit_orders_title': 'Deposit Review',
|
||
'deposit.all_status': 'All Status',
|
||
'deposit.all_types': 'All Types',
|
||
'deposit.status_pending': 'Pending',
|
||
'deposit.status_approved': 'Approved',
|
||
'deposit.status_rejected': 'Rejected',
|
||
'deposit.search_player_ph': 'Search player...',
|
||
'deposit.pending_badge': '{n} pending',
|
||
'deposit.order_no': 'Order No',
|
||
'deposit.player': 'Player',
|
||
'deposit.amount': 'Amount',
|
||
'deposit.screenshot': 'Screenshot',
|
||
'deposit.approved_amount': 'Approved Amt',
|
||
'deposit.reviewer': 'Reviewer',
|
||
'deposit.time': 'Time',
|
||
'deposit.approve': 'Approve',
|
||
'deposit.reject': 'Reject',
|
||
'deposit.approve_title': 'Approve Deposit',
|
||
'deposit.reject_title': 'Reject Deposit',
|
||
'deposit.submitted_amount': 'Submitted Amount',
|
||
'deposit.approved_amount_label': 'Approved Amount (adjust if needed)',
|
||
'deposit.remark_label': 'Remark (optional)',
|
||
'deposit.confirm_approve': 'Confirm Approve',
|
||
'deposit.approve_check_hint': 'Carefully verify the transfer amount in the screenshot matches the approved amount below before submitting.',
|
||
'deposit.confirm_approve_message': 'You are about to approve {amount}. Confirm it matches the screenshot; this will credit the player wallet.',
|
||
'deposit.confirm_reject': 'Confirm Reject',
|
||
'deposit.reject_reason_label': 'Reject Reason *',
|
||
'deposit.reject_reason_ph': 'Enter the reason for rejection...',
|
||
'deposit.reason_required': 'Please enter a reject reason',
|
||
'deposit.revoke': 'Revoke',
|
||
'deposit.confirm_revoke': 'Pending bets placed within 5 minutes of approval will be voided, credited balance reversed, and the order reset to pending. Continue?',
|
||
'deposit.reopen_review': 'Re-review',
|
||
'deposit.confirm_reopen': 'The order will return to pending for approve or reject. Continue?',
|
||
'deposit.delete': 'Delete',
|
||
'deposit.confirm_delete': '[Records only] Permanently delete this order record and screenshot. Continue?',
|
||
'deposit.delete_failed': 'Delete failed',
|
||
'deposit.prev': 'Prev',
|
||
'deposit.next': 'Next',
|
||
'deposit.audit_history': 'Review history',
|
||
'deposit.audit_action': 'Action',
|
||
'deposit.audit_actor': 'Actor',
|
||
'deposit.audit_time': 'Time',
|
||
'deposit.audit_remark': 'Remark',
|
||
'deposit.audit_submitted': 'Submitted',
|
||
'deposit.audit_approved': 'Approved',
|
||
'deposit.audit_rejected': 'Rejected',
|
||
'deposit.audit_revoked': 'Approval revoked',
|
||
'deposit.audit_reopened': 'Reopened for review',
|
||
'deposit.audit_deleted': 'Deleted',
|
||
'deposit.audit_empty': 'No review history yet',
|
||
'deposit.add_method': '+ Add',
|
||
'deposit.display_name': 'Display Name',
|
||
'deposit.details': 'Details',
|
||
'deposit.sort': 'Sort',
|
||
'deposit.active': 'Active',
|
||
'deposit.show_player': 'Show Player',
|
||
'deposit.edit_method': 'Edit Payment Method',
|
||
'deposit.create_method': 'Create Payment Method',
|
||
'deposit.bank_name': 'Bank Name',
|
||
'deposit.account_holder': 'Account Holder',
|
||
'deposit.account_number': 'Account Number',
|
||
'deposit.usdt_address': 'USDT Address',
|
||
'deposit.qr_code': 'QR Code',
|
||
'deposit.sort_order': 'Sort Order',
|
||
'deposit.show_on_player': 'Show on Player',
|
||
'deposit.save': 'Save',
|
||
'deposit.confirm_deactivate': 'Confirm deactivate this payment method?',
|
||
'deposit.lang_zh': 'Chinese',
|
||
'deposit.lang_en': 'English',
|
||
'deposit.lang_ms': 'Malay',
|
||
'deposit.multilingual_hint': 'Set display names for each language. Leave blank to use default.',
|
||
'nav.open_menu': 'Open menu',
|
||
'nav.close_menu': 'Close menu',
|
||
'breadcrumb.settlement': 'Settlement',
|
||
'breadcrumb.match_edit': 'Edit match',
|
||
'breadcrumb.match_markets': 'Markets',
|
||
'breadcrumb.outright_edit': 'Edit outright',
|
||
'role.admin': 'Administrator',
|
||
'role.super_admin': 'Super admin',
|
||
'role.match_admin': 'Match admin',
|
||
'role.finance_admin': 'Finance admin',
|
||
'role.support': 'Support',
|
||
'role.agent': 'Agent',
|
||
'role.tier1_agent': 'Tier-1 Agent',
|
||
'role.tier2_agent': 'Tier-2 Agent',
|
||
'logout': 'Logout',
|
||
'lang': 'Language',
|
||
'portal.admin': 'Admin Console',
|
||
'portal.agent': 'Agent Console',
|
||
|
||
'common.all': 'All',
|
||
'common.search': 'Search',
|
||
'common.refresh': 'Refresh',
|
||
'common.reset': 'Reset',
|
||
'common.edit': 'Edit',
|
||
'common.yes': 'Yes',
|
||
'common.no': 'No',
|
||
'common.delete': 'Delete',
|
||
'common.cancel': 'Cancel',
|
||
'common.confirm': 'OK',
|
||
'common.retry': 'Retry',
|
||
'common.status': 'Status',
|
||
'user.status.ACTIVE': 'Active',
|
||
'user.status.SUSPENDED': 'Suspended',
|
||
'user.status.DISABLED': 'Disabled',
|
||
'common.type': 'Type',
|
||
'common.keyword': 'Keyword',
|
||
'common.actions': 'Actions',
|
||
'common.seq': 'No.',
|
||
'common.more': 'More',
|
||
'common.loading': 'Loading…',
|
||
'common.no_data': 'No data',
|
||
'common.yesterday': 'Yesterday',
|
||
'common.vs_yesterday': 'vs yesterday',
|
||
'common.people': 'users',
|
||
'common.bets_unit': 'bets',
|
||
'common.matches_unit': 'matches',
|
||
'common.frozen': 'Frozen',
|
||
'common.used': 'Used',
|
||
'common.platform_direct': 'Platform direct',
|
||
'common.updated_at': 'Updated',
|
||
'common.enable': 'Enable',
|
||
'common.disable': 'Disable',
|
||
'common.show_player': 'Show player',
|
||
'common.hide_player': 'Hide player',
|
||
|
||
'dash.title': 'Overview',
|
||
'dash.desc': 'Platform overview',
|
||
'dash.board_title': 'Overview',
|
||
'dash.board_hint': 'Trends and distribution at a glance',
|
||
'dash.kpi_bet_count': "Today's bet count",
|
||
'dash.kpi_stake': "Today's stake",
|
||
'dash.kpi_payout': "Today's payout",
|
||
'dash.kpi_ggr': "Today's GGR",
|
||
'dash.kpi_users': 'Players / Agents',
|
||
'dash.kpi_new_players': '{n} new today',
|
||
'dash.kpi_pending': 'Pending settlement',
|
||
'dash.kpi_pending_sub': '{bets} bets · {matches} matches',
|
||
'dash.load_error_hint': 'Could not load overview data. Check your connection and try again.',
|
||
'dash.kpi_wallet': 'Player balance',
|
||
'dash.kpi_credit': 'Agent credit',
|
||
'dash.trend_caption': 'Last 7 days (amount lines + bet bars)',
|
||
'dash.chart_stake': 'Stake',
|
||
'dash.chart_payout': 'Payout',
|
||
'dash.chart_ggr': 'GGR',
|
||
'dash.chart_bet_count': 'Bet count',
|
||
'dash.axis_amount': 'Amount',
|
||
'dash.axis_count': 'Count',
|
||
'dash.count_suffix': 'bets',
|
||
'dash.chart_tooltip': '{b}: {c} ({d}%)',
|
||
'dash.pie_empty': 'N/A',
|
||
'dash.pie_matches': 'Matches',
|
||
'dash.pie_bets': "Today's bets",
|
||
'dash.pie_users': 'Users',
|
||
'dash.match_draft': 'Draft',
|
||
'dash.match_published': 'Published',
|
||
'dash.match_closed': 'Closed',
|
||
'dash.match_pending_settle': 'Pending settlement',
|
||
'dash.match_settled': 'Settled',
|
||
'dash.user_active': 'Active players',
|
||
'dash.user_online': 'Online now',
|
||
'dash.players_online': 'Online now',
|
||
'dash.players_online_hint': 'Active within ~2 min',
|
||
'dash.user_suspended': 'Suspended',
|
||
'dash.user_direct': 'Direct',
|
||
'dash.user_agents': 'Agents',
|
||
'dash.section_matches_hint': 'Betting performance and match distribution',
|
||
'dash.section_match_ops_hint': 'Match status and pending work',
|
||
'dash.trend_bet_count_caption': '7-day bet volume trend',
|
||
'dash.section_players_hint': 'Players, agents, and wallet summary',
|
||
'dash.kpi_match_total': 'Total matches',
|
||
'dash.kpi_match_total_sub': 'Draft {draft} · Published {published}',
|
||
'dash.kpi_match_closed': 'Closed',
|
||
'dash.kpi_match_closed_sub': '{n} cancelled',
|
||
'dash.kpi_match_settled': 'Settled matches',
|
||
'dash.kpi_match_settled_sub': 'Matches fully settled',
|
||
'dash.kpi_agents_active': 'Active agents',
|
||
'dash.kpi_agents_active_sub': '{suspended} suspended players',
|
||
'dash.recent_players': 'Recent sign-ups',
|
||
'dash.recent_bets': 'Recent bets',
|
||
'dash.col_parent': 'Parent',
|
||
'dash.col_bet_no': 'Bet No.',
|
||
'dash.col_stake': 'Stake',
|
||
'dash.col_placed_at': 'Placed at',
|
||
|
||
'page.users.title': 'Players',
|
||
'page.users.desc': 'Create players, balances, stakes, top-ups, and status',
|
||
'page.agents.title': 'Agents',
|
||
'page.agents.desc': 'Tier-1 agents, credit limits, players, and usage',
|
||
'nav.matches.fixtures': 'Fixtures',
|
||
'nav.matches.outrights': 'Outright odds',
|
||
'nav.matches.market_templates': 'Market templates',
|
||
'nav.matches.audit_logs': 'Match logs',
|
||
'page.matches.title': 'Matches',
|
||
'page.matches.desc': 'Edit/delete drafts; adjust kickoff and featured when published; unpublish while unsettled',
|
||
'page.bets.title': 'Bets',
|
||
'page.bets.desc': 'Filter and paginate all bets with leg details',
|
||
'page.cashback.title': 'Cashback',
|
||
'page.cashback.desc': 'Generate and issue cashback by period',
|
||
'page.audit.title': 'Audit Log',
|
||
'page.audit.desc': 'Non-catalog admin actions: users, wallet, settlement, etc.',
|
||
'page.matches_audit.title': 'Match Logs',
|
||
'page.matches_audit.desc': 'Leagues, fixtures, markets, odds, and outright operations',
|
||
'page.settlement.title': 'Settlement',
|
||
'page.agent_dash.title': 'Agent overview',
|
||
'page.agent_dash.desc': 'Downline performance at a glance',
|
||
'agent_dash.load_error_hint': 'Could not load overview. Check your network or sign in again.',
|
||
'agent_dash.board_hint': 'Trends and distribution for your downline',
|
||
'agent_dash.kpi_players': 'Direct players / Sub-agents',
|
||
'agent_dash.kpi_pending_sub': '{bets} pending bets',
|
||
'agent_dash.pie_credit': 'Credit usage',
|
||
'agent_dash.pie_players': 'Direct players',
|
||
'agent_dash.credit_available': 'Available',
|
||
'agent_dash.credit_used': 'Used',
|
||
'agent_dash.liability_direct': 'Player balance',
|
||
'agent_dash.liability_child': 'Sub-agent exposure',
|
||
'page.agent_players.title': 'My players',
|
||
'page.agent_players.desc': 'Players under your account',
|
||
'page.agent_sub.title': 'Tier-2 agents',
|
||
'page.agent_sub.desc': 'Manage tier-2 agents and credit allocation',
|
||
'page.agent_bets.title': 'Bet search',
|
||
'page.agent_bets.desc': 'All bets from downstream players',
|
||
|
||
'agent.credit_limit': 'Credit limit',
|
||
'agent.credit_total': 'Total limit',
|
||
'agent.credit_used': 'Used credit',
|
||
'agent.credit_occupied': 'In use',
|
||
'agent.direct_players': 'Direct players',
|
||
'agent.player_count': 'Players',
|
||
'agent.today_stake': "Today's stake",
|
||
'agent.currency_cny': 'CNY',
|
||
|
||
'bet.status.PENDING': 'Pending',
|
||
'bet.status.WON': 'Won',
|
||
'bet.status.LOST': 'Lost',
|
||
'bet.status.VOID': 'Void',
|
||
'bet.status.REFUNDED': 'Refunded',
|
||
'bet.type.SINGLE': 'Single',
|
||
'bet.type.PARLAY': 'Parlay',
|
||
'bet.settlement.PENDING': 'Pending',
|
||
'bet.settlement.SETTLED': 'Settled',
|
||
'bet.settlement.VOID': 'Void',
|
||
'bet.result.WON': 'Won',
|
||
'bet.result.LOST': 'Lost',
|
||
'bet.result.VOID': 'Void',
|
||
'bet.result.PUSH': 'Push',
|
||
'bet.result.HALF_WON': 'Half won',
|
||
'bet.result.HALF_LOST': 'Half lost',
|
||
|
||
'match.status.DRAFT': 'Draft',
|
||
'match.status.PUBLISHED': 'Published',
|
||
'match.status.CLOSED': 'Closed',
|
||
'match.status.SETTLED': 'Settled',
|
||
'match.status.PENDING_SETTLEMENT': 'Pending settlement',
|
||
'match.filter.has_bets': 'Show Placed Bets Only',
|
||
'match.sort.default': 'Default Order',
|
||
'match.sort.bet_count': 'By Bet Count',
|
||
'match.sort.total_stake': 'By Stake Amount',
|
||
// 列表页/弹窗文案通过 bundles/en-US 动态平载,不在此处静态 spread
|
||
};
|
||
|
||
const ms: Record<string, string> = {
|
||
'login.title': 'Konsol Admin',
|
||
'login.username': 'Nama pengguna',
|
||
'login.password': 'Kata laluan',
|
||
'login.submit': 'Log masuk',
|
||
'login.username_ph': 'Masukkan nama pengguna',
|
||
'login.password_ph': 'Masukkan kata laluan',
|
||
'login.err_captcha': 'Captcha salah, cuba lagi',
|
||
'login.err_failed': 'Log masuk gagal. Semak nama pengguna dan kata laluan',
|
||
'login.err_quick': 'Log masuk pantas gagal',
|
||
'login.quick_label': 'Log masuk pantas (debug)',
|
||
'login.quick_admin': 'Admin',
|
||
'login.quick_agent': 'Ejen peringkat 1',
|
||
'login.quick_agent2': 'Ejen peringkat 2',
|
||
'login.quick_match_admin': 'Pentadbir perlawanan',
|
||
'login.quick_finance_admin': 'Pentadbir kewangan',
|
||
'login.quick_support': 'Sokongan',
|
||
'staff.create_btn': 'Cipta akaun kakitangan',
|
||
'staff.col.role': 'Peranan',
|
||
'staff.col.last_login': 'Log masuk terakhir',
|
||
'staff.dialog.create': 'Cipta akaun kakitangan',
|
||
'staff.dialog.edit': 'Edit akaun kakitangan',
|
||
'staff.field.visible_menus': 'Kebenaran Menu',
|
||
'login.captcha_ph': 'Captcha',
|
||
'login.captcha_refresh': 'Klik untuk muat semula',
|
||
|
||
'nav.dashboard': 'Gambaran',
|
||
'nav.dashboard.matches': 'Gambaran perlawanan',
|
||
'nav.dashboard.players': 'Gambaran pemain',
|
||
'nav.invites': 'Jemputan',
|
||
'nav.users': 'Pemain',
|
||
'nav.agents': 'Ejen',
|
||
'nav.agents_players': 'Ejen & Pemain',
|
||
'nav.matches': 'Perlawanan',
|
||
'nav.outrights': 'Juara',
|
||
'nav.bets': 'Pertaruhan',
|
||
'nav.credit_transactions': 'Lejar kredit',
|
||
'nav.finance_logs': 'Lejar kewangan',
|
||
'nav.cashback': 'Rebat',
|
||
'nav.contents': 'Kandungan awam',
|
||
'nav.audit': 'Log audit',
|
||
'nav.smoke_tests': 'Ujian asap',
|
||
'nav.media': 'Perpustakaan Media',
|
||
'nav.payment_methods': 'Kaedah Pembayaran',
|
||
'nav.deposit_orders': 'Semakan Deposit',
|
||
'nav.deposit_manage': 'Urus Deposit',
|
||
'nav.staff': 'Akaun kakitangan',
|
||
'nav.players': 'Pemain saya',
|
||
'nav.subAgents': 'Ejen peringkat 2',
|
||
'nav.myBets': 'Carian pertaruhan',
|
||
|
||
'deposit.payment_methods_title': 'Kaedah Pembayaran',
|
||
'deposit.deposit_orders_title': 'Semakan Deposit',
|
||
'deposit.all_status': 'Semua Status',
|
||
'deposit.all_types': 'Semua Jenis',
|
||
'deposit.status_pending': 'Menunggu',
|
||
'deposit.status_approved': 'Diluluskan',
|
||
'deposit.status_rejected': 'Ditolak',
|
||
'deposit.search_player_ph': 'Cari pemain...',
|
||
'deposit.pending_badge': '{n} menunggu',
|
||
'deposit.order_no': 'No. Pesanan',
|
||
'deposit.player': 'Pemain',
|
||
'deposit.amount': 'Jumlah',
|
||
'deposit.screenshot': 'Tangkapan skrin',
|
||
'deposit.approved_amount': 'Jml Diluluskan',
|
||
'deposit.reviewer': 'Pengulas',
|
||
'deposit.time': 'Masa',
|
||
'deposit.approve': 'Luluskan',
|
||
'deposit.reject': 'Tolak',
|
||
'deposit.approve_title': 'Luluskan Deposit',
|
||
'deposit.reject_title': 'Tolak Deposit',
|
||
'deposit.submitted_amount': 'Jumlah Dihantar',
|
||
'deposit.approved_amount_label': 'Jumlah Diluluskan (laraskan jika perlu)',
|
||
'deposit.remark_label': 'Catatan (pilihan)',
|
||
'deposit.confirm_approve': 'Sahkan Luluskan',
|
||
'deposit.approve_check_hint': 'Semak jumlah pindahan dalam tangkapan skrin sepadan dengan jumlah diluluskan di bawah sebelum hantar.',
|
||
'deposit.confirm_approve_message': 'Akan meluluskan {amount}. Sahkan ia sepadan dengan tangkapan skrin; baki pemain akan dikreditkan.',
|
||
'deposit.confirm_reject': 'Sahkan Tolak',
|
||
'deposit.reject_reason_label': 'Sebab Penolakan *',
|
||
'deposit.reject_reason_ph': 'Masukkan sebab penolakan...',
|
||
'deposit.reason_required': 'Sila masukkan sebab penolakan',
|
||
'deposit.revoke': 'Tarik balik',
|
||
'deposit.confirm_revoke': 'Pertaruhan menunggu dalam 5 minit selepas kelulusan akan dibatalkan, baki dikembalikan, dan pesanan kembali menunggu. Teruskan?',
|
||
'deposit.reopen_review': 'Semak semula',
|
||
'deposit.confirm_reopen': 'Pesanan kembali menunggu untuk lulus atau tolak. Teruskan?',
|
||
'deposit.delete': 'Padam',
|
||
'deposit.confirm_delete': '[Rekod sahaja] Padam rekod pesanan dan tangkapan skrin. Teruskan?',
|
||
'deposit.delete_failed': 'Gagal memadam',
|
||
'deposit.prev': 'Sebelum',
|
||
'deposit.next': 'Seterus',
|
||
'deposit.audit_history': 'Sejarah semakan',
|
||
'deposit.audit_action': 'Tindakan',
|
||
'deposit.audit_actor': 'Pengendali',
|
||
'deposit.audit_time': 'Masa',
|
||
'deposit.audit_remark': 'Catatan',
|
||
'deposit.audit_submitted': 'Dihantar',
|
||
'deposit.audit_approved': 'Diluluskan',
|
||
'deposit.audit_rejected': 'Ditolak',
|
||
'deposit.audit_revoked': 'Kelulusan dibatalkan',
|
||
'deposit.audit_reopened': 'Dibuka semula',
|
||
'deposit.audit_deleted': 'Dipadam',
|
||
'deposit.audit_empty': 'Tiada sejarah semakan',
|
||
'deposit.add_method': '+ Tambah',
|
||
'deposit.display_name': 'Nama Paparan',
|
||
'deposit.details': 'Butiran',
|
||
'deposit.sort': 'Isih',
|
||
'deposit.active': 'Aktif',
|
||
'deposit.show_player': 'Papar Pemain',
|
||
'deposit.edit_method': 'Edit Kaedah Pembayaran',
|
||
'deposit.create_method': 'Cipta Kaedah Pembayaran',
|
||
'deposit.bank_name': 'Nama Bank',
|
||
'deposit.account_holder': 'Pemegang Akaun',
|
||
'deposit.account_number': 'Nombor Akaun',
|
||
'deposit.usdt_address': 'Alamat USDT',
|
||
'deposit.qr_code': 'Kod QR',
|
||
'deposit.sort_order': 'Susunan Isih',
|
||
'deposit.show_on_player': 'Papar kepada Pemain',
|
||
'deposit.save': 'Simpan',
|
||
'deposit.confirm_deactivate': 'Sahkan nyahaktifkan kaedah pembayaran ini?',
|
||
'deposit.lang_zh': 'Cina',
|
||
'deposit.lang_en': 'Inggeris',
|
||
'deposit.lang_ms': 'Melayu',
|
||
'deposit.multilingual_hint': 'Tetapkan nama paparan untuk setiap bahasa. Kosongkan untuk guna nilai lalai.',
|
||
'nav.open_menu': 'Buka menu',
|
||
'nav.close_menu': 'Tutup menu',
|
||
'breadcrumb.settlement': 'Penyelesaian',
|
||
'breadcrumb.match_edit': 'Edit perlawanan',
|
||
'breadcrumb.match_markets': 'Pasaran',
|
||
'breadcrumb.outright_edit': 'Edit juara',
|
||
'role.admin': 'Pentadbir',
|
||
'role.super_admin': 'Super pentadbir',
|
||
'role.match_admin': 'Pentadbir perlawanan',
|
||
'role.finance_admin': 'Pentadbir kewangan',
|
||
'role.support': 'Sokongan',
|
||
'role.agent': 'Ejen',
|
||
'role.tier1_agent': 'Ejen Peringkat 1',
|
||
'role.tier2_agent': 'Ejen Peringkat 2',
|
||
'logout': 'Log keluar',
|
||
'lang': 'Bahasa',
|
||
'portal.admin': 'Pengurusan Admin',
|
||
'portal.agent': 'Pengurusan Ejen',
|
||
|
||
'common.all': 'Semua',
|
||
'common.search': 'Cari',
|
||
'common.refresh': 'Muat semula',
|
||
'common.reset': 'Set semula',
|
||
'common.edit': 'Edit',
|
||
'common.yes': 'Ya',
|
||
'common.no': 'Tidak',
|
||
'common.delete': 'Padam',
|
||
'common.cancel': 'Batal',
|
||
'common.confirm': 'OK',
|
||
'common.retry': 'Cuba lagi',
|
||
'common.status': 'Status',
|
||
'user.status.ACTIVE': 'Aktif',
|
||
'user.status.SUSPENDED': 'Digantung',
|
||
'user.status.DISABLED': 'Dinyahaktifkan',
|
||
'common.type': 'Jenis',
|
||
'common.keyword': 'Kata kunci',
|
||
'common.actions': 'Tindakan',
|
||
'common.seq': 'No.',
|
||
'common.more': 'Lagi',
|
||
'common.loading': 'Memuatkan…',
|
||
'common.no_data': 'Tiada data',
|
||
'common.yesterday': 'Semalam',
|
||
'common.vs_yesterday': 'berbanding semalam',
|
||
'common.people': 'pengguna',
|
||
'common.bets_unit': 'pertaruhan',
|
||
'common.matches_unit': 'perlawanan',
|
||
'common.frozen': 'Dibekukan',
|
||
'common.used': 'Digunakan',
|
||
'common.platform_direct': 'Terus platform',
|
||
'common.updated_at': 'Dikemas kini',
|
||
'common.enable': 'Aktifkan',
|
||
'common.disable': 'Nyahaktif',
|
||
'common.show_player': 'Papar pemain',
|
||
'common.hide_player': 'Sembunyikan pemain',
|
||
|
||
'dash.title': 'Gambaran',
|
||
'dash.desc': 'Gambaran keseluruhan platform',
|
||
'dash.board_title': 'Gambaran',
|
||
'dash.board_hint': 'Trend dan taburan sepintas lalu',
|
||
'dash.kpi_bet_count': 'Bilangan pertaruhan hari ini',
|
||
'dash.kpi_stake': 'Stake hari ini',
|
||
'dash.kpi_payout': 'Bayaran hari ini',
|
||
'dash.kpi_ggr': 'GGR hari ini',
|
||
'dash.kpi_users': 'Pemain / Ejen',
|
||
'dash.kpi_new_players': '{n} baharu hari ini',
|
||
'dash.kpi_pending': 'Menunggu penyelesaian',
|
||
'dash.kpi_pending_sub': '{bets} pertaruhan · {matches} perlawanan',
|
||
'dash.load_error_hint': 'Tidak dapat memuatkan data gambaran. Semak sambungan dan cuba lagi.',
|
||
'dash.kpi_wallet': 'Baki pemain',
|
||
'dash.kpi_credit': 'Kredit ejen',
|
||
'dash.trend_caption': '7 hari lepas (garis jumlah + palang pertaruhan)',
|
||
'dash.chart_stake': 'Stake',
|
||
'dash.chart_payout': 'Bayaran',
|
||
'dash.chart_ggr': 'GGR',
|
||
'dash.chart_bet_count': 'Bilangan pertaruhan',
|
||
'dash.axis_amount': 'Jumlah',
|
||
'dash.axis_count': 'Kiraan',
|
||
'dash.count_suffix': 'pertaruhan',
|
||
'dash.chart_tooltip': '{b}: {c} ({d}%)',
|
||
'dash.pie_empty': 'Tiada',
|
||
'dash.pie_matches': 'Perlawanan',
|
||
'dash.pie_bets': 'Pertaruhan hari ini',
|
||
'dash.pie_users': 'Pengguna',
|
||
'dash.match_draft': 'Draf',
|
||
'dash.match_published': 'Diterbitkan',
|
||
'dash.match_closed': 'Ditutup',
|
||
'dash.match_pending_settle': 'Menunggu penyelesaian',
|
||
'dash.match_settled': 'Diselesaikan',
|
||
'dash.user_active': 'Pemain aktif',
|
||
'dash.user_online': 'Dalam talian',
|
||
'dash.players_online': 'Dalam talian',
|
||
'dash.players_online_hint': 'Aktif dalam ~2 min',
|
||
'dash.user_suspended': 'Digantung',
|
||
'dash.user_direct': 'Terus',
|
||
'dash.user_agents': 'Ejen',
|
||
'dash.section_matches_hint': 'Prestasi pertaruhan dan taburan perlawanan',
|
||
'dash.section_match_ops_hint': 'Status perlawanan dan tugasan',
|
||
'dash.trend_bet_count_caption': 'Trend bilangan pertaruhan 7 hari',
|
||
'dash.section_players_hint': 'Pemain, ejen, dan ringkasan dana',
|
||
'dash.kpi_match_total': 'Jumlah perlawanan',
|
||
'dash.kpi_match_total_sub': 'Draf {draft} · Diterbitkan {published}',
|
||
'dash.kpi_match_closed': 'Ditutup',
|
||
'dash.kpi_match_closed_sub': '{n} dibatalkan',
|
||
'dash.kpi_match_settled': 'Perlawanan diselesaikan',
|
||
'dash.kpi_match_settled_sub': 'Perlawanan yang telah diselesaikan',
|
||
'dash.kpi_agents_active': 'Ejen aktif',
|
||
'dash.kpi_agents_active_sub': '{suspended} pemain digantung',
|
||
'dash.recent_players': 'Pendaftaran terkini',
|
||
'dash.recent_bets': 'Pertaruhan terkini',
|
||
'dash.col_parent': 'Induk',
|
||
'dash.col_bet_no': 'No. pertaruhan',
|
||
'dash.col_stake': 'Stake',
|
||
'dash.col_placed_at': 'Masa pertaruhan',
|
||
|
||
'page.users.title': 'Pemain',
|
||
'page.users.desc': 'Cipta pemain, baki, stake, tambah baki dan status',
|
||
'page.agents.title': 'Ejen',
|
||
'page.agents.desc': 'Ejen peringkat 1, had kredit, pemain dan penggunaan',
|
||
'nav.matches.fixtures': 'Konfigurasi perlawanan',
|
||
'nav.matches.outrights': 'Odds juara',
|
||
'nav.matches.market_templates': 'Templat pasaran',
|
||
'nav.matches.audit_logs': 'Log perlawanan',
|
||
'page.matches.title': 'Perlawanan',
|
||
'page.matches.desc': 'Edit/padam draf; laraskan masa mula bila diterbitkan; nyahterbit jika belum selesai',
|
||
'page.bets.title': 'Pertaruhan',
|
||
'page.bets.desc': 'Tapis dan halaman semua pertaruhan dengan butiran pilihan',
|
||
'page.cashback.title': 'Rebat',
|
||
'page.cashback.desc': 'Jana dan keluarkan rebat mengikut tempoh',
|
||
'page.audit.title': 'Log audit',
|
||
'page.audit.desc': 'Tindakan bukan katalog: pengguna, dompet, penyelesaian, dll.',
|
||
'page.matches_audit.title': 'Log perlawanan',
|
||
'page.matches_audit.desc': 'Liga, perlawanan, pasaran, odds, dan outright',
|
||
'page.settlement.title': 'Penyelesaian',
|
||
'page.agent_dash.title': 'Gambaran ejen',
|
||
'page.agent_dash.desc': 'Prestasi downline sepintas lalu',
|
||
'agent_dash.load_error_hint': 'Gagal memuatkan gambaran. Semak rangkaian atau log masuk semula.',
|
||
'agent_dash.board_hint': 'Trend dan taburan downline anda',
|
||
'agent_dash.kpi_players': 'Pemain terus / Ejen bawahan',
|
||
'agent_dash.kpi_pending_sub': '{bets} pertaruhan belum selesai',
|
||
'agent_dash.pie_credit': 'Penggunaan kredit',
|
||
'agent_dash.pie_players': 'Pemain terus',
|
||
'agent_dash.credit_available': 'Tersedia',
|
||
'agent_dash.credit_used': 'Digunakan',
|
||
'agent_dash.liability_direct': 'Baki pemain',
|
||
'agent_dash.liability_child': 'Pendedahan ejen bawahan',
|
||
'page.agent_players.title': 'Pemain saya',
|
||
'page.agent_players.desc': 'Pemain di bawah akaun anda',
|
||
'page.agent_sub.title': 'Ejen peringkat 2',
|
||
'page.agent_sub.desc': 'Urus ejen peringkat 2 dan peruntukan kredit',
|
||
'page.agent_bets.title': 'Carian pertaruhan',
|
||
'page.agent_bets.desc': 'Semua pertaruhan pemain hiliran',
|
||
|
||
'agent.credit_limit': 'Had kredit',
|
||
'agent.credit_total': 'Jumlah had',
|
||
'agent.credit_used': 'Kredit digunakan',
|
||
'agent.credit_occupied': 'Sedang digunakan',
|
||
'agent.direct_players': 'Pemain terus',
|
||
'agent.player_count': 'Pemain',
|
||
'agent.today_stake': 'Stake hari ini',
|
||
'agent.currency_cny': 'CNY',
|
||
|
||
'bet.status.PENDING': 'Menunggu',
|
||
'bet.status.WON': 'Menang',
|
||
'bet.status.LOST': 'Kalah',
|
||
'bet.status.VOID': 'Batal',
|
||
'bet.status.REFUNDED': 'Dibayar balik',
|
||
'bet.type.SINGLE': 'Tunggal',
|
||
'bet.type.PARLAY': 'Berganda',
|
||
'bet.settlement.PENDING': 'Menunggu',
|
||
'bet.settlement.SETTLED': 'Diselesaikan',
|
||
'bet.settlement.VOID': 'Batal',
|
||
'bet.result.WON': 'Menang',
|
||
'bet.result.LOST': 'Kalah',
|
||
'bet.result.VOID': 'Batal',
|
||
'bet.result.PUSH': 'Seri',
|
||
'bet.result.HALF_WON': 'Separuh menang',
|
||
'bet.result.HALF_LOST': 'Separuh kalah',
|
||
|
||
'match.status.DRAFT': 'Draf',
|
||
'match.status.PUBLISHED': 'Diterbitkan',
|
||
'match.status.CLOSED': 'Ditutup',
|
||
'match.status.SETTLED': 'Diselesaikan',
|
||
'match.status.PENDING_SETTLEMENT': 'Menunggu penyelesaian',
|
||
'match.filter.has_bets': 'Tunjukkan Pertaruhan Sahaja',
|
||
'match.sort.default': 'Susunan Lalai',
|
||
'match.sort.bet_count': 'Ikut Bil. Pertaruhan',
|
||
'match.sort.total_stake': 'Ikut Jumlah Taruhan',
|
||
// 列表页/弹窗文案通过 bundles/ms-MY 动态平载,不在此处静态 spread
|
||
};
|
||
|
||
/** vue-i18n 文案表(扁平 key,与原先 adminT 一致) */
|
||
export const adminMessages: Record<AdminLocale, Record<string, string>> = {
|
||
'zh-CN': zh,
|
||
'en-US': en,
|
||
'ms-MY': ms,
|
||
};
|