sync(theme-2): 同步 main 最新 API/Admin 与玩家端逻辑
从 main 同步站内信手动发送、媒体库选择、列表子路由重构等 API/Admin 改动;玩家端仅合并 ADMIN_CUSTOM 富文本、消息预览与充值截图压缩逻辑,保留 theme-2 样式。
This commit is contained in:
@@ -140,6 +140,7 @@ const adminPages: Record<string, string> = {
|
||||
'agent.col.credit': 'Limit / Used / Available',
|
||||
'agent.col.direct_players': 'Direct players',
|
||||
'agent.direct_players_title': 'Direct players · {name}',
|
||||
'agent.open_agent_hint': 'Click an agent row to open their direct players page.',
|
||||
'agent.platform_row_name': 'Platform',
|
||||
'agent.col.sub_agents': 'Sub-agents',
|
||||
'agent.col.cashback': 'Cashback rate',
|
||||
@@ -307,6 +308,10 @@ const adminPages: Record<string, string> = {
|
||||
'match.hint.edit_published': 'Published: edit kickoff, featured, display names; closed/settled are locked.',
|
||||
'match.expand_league_hint': 'Expand a league to manage fixtures; use Outright odds for winner markets.',
|
||||
'match.expand_outright_hint': 'Expand a league to edit winner odds; fixture teams sync automatically, and you can add teams not yet on the schedule.',
|
||||
'match.open_league_hint': 'Click a league row to open its fixture management page.',
|
||||
'match.open_outright_hint': 'Click a league row to open its outright odds page.',
|
||||
'match.league_fixtures_subtitle': 'Fixtures',
|
||||
'match.league_outrights_subtitle': 'Outright odds',
|
||||
'outright.odds_only_hint': 'Teams from fixtures are added automatically; add extra teams manually and edit winner odds here. Outright follows league publish—no separate publish step.',
|
||||
'outright.league_unpublished_hint': 'League is not published yet. Set the league to Published on this page to open outright betting automatically.',
|
||||
'outright.unsettled_fixtures_hint': '{n} fixture(s) in this league are still unsettled. Settle them before settling the outright market.',
|
||||
@@ -372,17 +377,24 @@ const adminPages: Record<string, string> = {
|
||||
'audit.action.UPDATE_AGENT': 'Update agent',
|
||||
'audit.action.UPDATE_PLAYER_ACCOUNT_SETTINGS': 'Update player account settings',
|
||||
'audit.action.UPDATE_AGENT_SUSPEND_SETTINGS': 'Update agent suspend settings',
|
||||
'audit.action.UPDATE_AGENT_HIERARCHY_SETTINGS': 'Update agent hierarchy settings',
|
||||
'audit.action.UPDATE_PLATFORM_DIRECT_CASHBACK_SETTINGS': 'Update platform cashback settings',
|
||||
'audit.action.UPDATE_BETTING_LIMITS': 'Update betting limits',
|
||||
'audit.action.RESET_PLAYER_PASSWORD': 'Reset player password',
|
||||
'audit.action.CONFIRM_SETTLEMENT': 'Confirm settlement',
|
||||
'audit.action.CONFIRM_RESETTLE': 'Confirm resettlement',
|
||||
'audit.action.CONFIRM_CASHBACK': 'Confirm cashback payout',
|
||||
'audit.action.CANCEL_CASHBACK': 'Cancel cashback batch',
|
||||
'audit.action.CREATE_STAFF': 'Create staff account',
|
||||
'audit.action.UPDATE_STAFF': 'Edit staff account',
|
||||
'audit.action.DELETE_STAFF': 'Delete staff account',
|
||||
'audit.module.USERS': 'Players',
|
||||
'audit.module.AGENTS': 'Agents',
|
||||
'audit.module.SYSTEM': 'System',
|
||||
'audit.module.SETTINGS': 'Settings',
|
||||
'audit.module.SETTLEMENT': 'Settlement',
|
||||
'audit.module.CASHBACK': 'Cashback',
|
||||
'audit.module.STAFF': 'Staff',
|
||||
|
||||
'cashback.start_date': 'Start date',
|
||||
'cashback.end_date': 'End date',
|
||||
@@ -591,6 +603,7 @@ const adminPages: Record<string, string> = {
|
||||
'settlement.record_score': 'Save score',
|
||||
'settlement.preview_hint': 'Preview moves the match to pending settlement and calculates payouts (scores are saved on confirm; you can reopen betting before confirming)',
|
||||
'settlement.preview_btn': 'Preview settlement',
|
||||
'settlement.view_preview_btn': 'View settlement preview',
|
||||
'settlement.preview_failed': 'Failed to generate settlement preview',
|
||||
'settlement.err_score_not_recorded': 'Enter half-time and full-time scores before preview',
|
||||
'settlement.must_close_first': 'Close betting before settlement',
|
||||
@@ -629,6 +642,26 @@ const adminPages: Record<string, string> = {
|
||||
'settlement.resettle_topup': 'Top-up required',
|
||||
'settlement.resettle_clawback': 'Clawback required',
|
||||
'settlement.resettle_confirm': 'Confirm resettle',
|
||||
'settlement.resettle_affected_list': 'Affected Bets Details',
|
||||
'settlement.resettle_col.old_result': 'Old Result/Old Payout',
|
||||
'settlement.resettle_col.new_result': 'New Result/New Payout',
|
||||
'settlement.resettle_col.adjust': 'Adjustment',
|
||||
'settlement.history_tab': 'Settlement Records',
|
||||
'settlement.history_tab_bets': 'Bet Stats',
|
||||
'settlement.history.no_records': 'No settlement records',
|
||||
'settlement.history.col.batch_no': 'Batch No.',
|
||||
'settlement.history.col.type': 'Type',
|
||||
'settlement.history.col.score': 'Score (HT/FT)',
|
||||
'settlement.history.col.corners': 'Corners (H/A)',
|
||||
'settlement.history.col.cards': 'Yellow/Red cards (H/A)',
|
||||
'settlement.history.col.total_bets': 'Settled bets',
|
||||
'settlement.history.col.total_payout': 'Total payout',
|
||||
'settlement.history.col.total_refund': 'Total refund',
|
||||
'settlement.history.col.operator': 'Operator',
|
||||
'settlement.history.col.time': 'Settled at',
|
||||
'settlement.history.col.reason': 'Reason',
|
||||
'settlement.history.type.initial': 'Initial settlement',
|
||||
'settlement.history.type.resettle': 'Resettlement',
|
||||
'user.betting_limits': 'Betting limits',
|
||||
'user.betting_limits_hint': 'Global stake/payout/daily limits for player bets',
|
||||
'user.limit.min_stake': 'Min stake',
|
||||
@@ -796,6 +829,7 @@ const adminPages: Record<string, string> = {
|
||||
|
||||
'content.upload.pick_media_title': 'Select image',
|
||||
'content.upload.no_media': 'No images in library — upload one first',
|
||||
'content.upload.load_media_failed': 'Failed to load media library',
|
||||
'content.btn.create': 'New content',
|
||||
'content.btn.enable': 'Enable',
|
||||
'content.btn.disable': 'Disable',
|
||||
@@ -816,6 +850,28 @@ const adminPages: Record<string, string> = {
|
||||
'content.inbox_notify.manual_title': 'Check "Inbox notify" when creating:',
|
||||
'content.inbox_notify.banner_note': 'Homepage promo',
|
||||
'content.inbox_notify.announcement_note': 'Announcements / ticker',
|
||||
'content.inbox_broadcast.title': 'Manual send',
|
||||
'content.inbox_broadcast.hint': 'Manually send inbox messages to players. Deleting a record also removes the message from player inboxes.',
|
||||
'content.inbox_broadcast.field_title': 'Title',
|
||||
'content.inbox_broadcast.field_body': 'Body',
|
||||
'content.inbox_broadcast.field_target': 'Recipients',
|
||||
'content.inbox_broadcast.field_username': 'Player username',
|
||||
'content.inbox_broadcast.target_all': 'All players',
|
||||
'content.inbox_broadcast.target_user': 'Single player',
|
||||
'content.inbox_broadcast.username_placeholder': 'Enter player login username',
|
||||
'content.inbox_broadcast.send': 'Send',
|
||||
'content.inbox_broadcast.send_success': 'Sent to {n} player(s)',
|
||||
'content.inbox_broadcast.form_invalid': 'Provide a title or body in at least one language',
|
||||
'content.inbox_broadcast.target_user_required': 'Player username is required',
|
||||
'content.inbox_broadcast.history_title': 'Send history',
|
||||
'content.inbox_broadcast.view_title': 'Send details',
|
||||
'content.inbox_broadcast.col_title': 'Title',
|
||||
'content.inbox_broadcast.col_target': 'Target',
|
||||
'content.inbox_broadcast.col_recipients': 'Count',
|
||||
'content.inbox_broadcast.col_sender': 'Sender',
|
||||
'content.inbox_broadcast.col_time': 'Sent at',
|
||||
'content.inbox_broadcast.delete_confirm': 'Delete "{title}"? Player inbox copies will be removed too.',
|
||||
'content.inbox_broadcast.locale_fallback_hint': 'Missing locales fall back in order: player language → English → Simplified Chinese → Malay.',
|
||||
'content.hint.banner': 'Shown in the home carousel; tapping opens the detail page. Add a cover image and rich body like an official site announcement.',
|
||||
'content.hint.announcement': 'Shows as a scrolling marquee at the top of the player app. Enter title and marquee text per language — plain text only.',
|
||||
'content.section.publish': 'Publish settings',
|
||||
@@ -1051,6 +1107,15 @@ const adminPages: Record<string, string> = {
|
||||
'media.no_files': 'No files yet',
|
||||
'media.refresh': 'Refresh',
|
||||
'media.unused_count': '{n} unused',
|
||||
'media.storage_stats': 'Storage Statistics',
|
||||
'media.deposits_on_disk': 'Recharge Screenshots (Unmapped to Media Library)',
|
||||
'media.screenshot_cleanup': 'Screenshot Cleanup',
|
||||
'media.cleanup_auto_enabled': 'Enable Auto-cleanup',
|
||||
'media.cleanup_keep_days': 'Retention Days',
|
||||
'media.cleanup_before_date': 'Manual Cleanup Before Date',
|
||||
'media.cleanup_run_now': 'Clean Now',
|
||||
'media.cleanup_result': 'Successfully cleaned {cleaned} screenshot(s), freeing {size} of space.',
|
||||
'media.cleanup_expired_tag': 'Purged',
|
||||
};
|
||||
|
||||
export default adminPages;
|
||||
|
||||
Reference in New Issue
Block a user