/** 管理后台列表 / 弹窗 — Bahasa Melayu */
export const adminPagesMs: Record<string, string> = {
  'common.detail': 'Butiran',
  'common.create': 'Cipta',
  'common.create_btn': '+ Baharu',
  'common.save': 'Simpan',
  'common.close': 'Tutup',
  'common.import': 'Import',
  'common.publish': 'Terbitkan',
  'common.topup': 'Tambah baki',
  'common.adjust_credit': 'Laraskan kredit',
  'common.freeze': 'Bekukan',
  'common.unfreeze': 'Nyahbeku',
  'common.settle': 'Selesaikan',
  'common.resettle': 'Selesaikan semula',
  'common.close_betting': 'Tutup pertaruhan',
  'common.reopen_betting': 'Buka semula pertaruhan',
  'common.never_login': 'Belum pernah log masuk',
  'common.optional': 'Pilihan',
  'common.to': 'Hingga',
  'common.module': 'Modul',
  'common.col_id': 'ID',
  'common.times': 'kali',
  'common.bets_count_unit': 'pertaruhan',

  'user.create_btn': '+ Pemain baharu',
  'user.filter.username_ph': 'Nama pengguna',
  'user.filter.agent': 'Ejen',
  'user.filter.agent_ph': 'Semua',
  'user.col.username': 'Nama pengguna',
  'user.col.online': 'Dalam talian',
  'user.online_yes': 'Sedang dalam talian',
  'user.presence_online': 'Dalam talian',
  'user.presence_offline': 'Luar talian',
  'user.col.agent': 'Ejen',
  'user.col.invite_code': 'Kod jemputan',
  'user.col.balance': 'Tersedia / Dibekukan',
  'user.col.bets': 'Pertaruhan',
  'user.col.stake_payout': 'Stake / Bayaran',
  'user.col.last_login': 'Log masuk terakhir',
  'user.col.created': 'Daftar',
  'user.status.ACTIVE': 'Aktif',
  'user.status.SUSPENDED': 'Digantung',
  'user.dialog.create': 'Pemain baharu',
  'user.dialog.edit': 'Edit pemain',
  'user.dialog.deposit': 'Tambah baki pemain',
  'user.dialog.detail': 'Butiran pemain',
  'user.field.password': 'Kata laluan',
  'user.field.confirm_password': 'Sahkan kata laluan',
  'user.field.initial_balance': 'Baki permulaan',
  'user.field.deposit_remark': 'Nota tambah baki',
  'user.field.amount': 'Jumlah',
  'user.field.remark': 'Nota',
  'user.field.account_status': 'Status akaun',
  'user.field.available': 'Baki tersedia',
  'user.field.frozen_balance': 'Baki dibekukan',
  'user.field.bets_summary': 'Pertaruhan / stake',
  'user.field.total_payout': 'Jumlah bayaran',
  'user.field.login_fail': 'Log masuk gagal',
  'user.field.phone': 'Telefon',
  'user.field.email': 'E-mel',
  'user.field.allow_password_change': 'Benarkan pemain tukar kata laluan',
  'user.field.allow_username_change': 'Benarkan pemain tukar nama akaun',
  'user.field.view_password': 'Kata laluan log masuk',
  'user.field.reset_password': 'Set semula kata laluan',
  'user.password_not_stored': 'Tiada rekod (pemain telah ubah sendiri)',
  'user.btn.show_password': 'Lihat',
  'user.btn.hide_password': 'Sembunyi',
  'user.ph.reset_password': 'Biarkan kosong untuk kekalkan; nilai baharu boleh dilihat',
  'user.ph.reset_password_short': 'Biarkan kosong',
  'user.page_settings': 'Tetapan global',
  'user.global_settings': 'Kata laluan & akaun (global)',
  'user.global_settings_hint': 'Kawal sama ada semua pemain boleh ubah kata laluan/nama akaun dalam app',
  'user.reset_database': 'Set semula pangkalan data',
  'user.reset_database_hint': 'Padam semua data perniagaan dan pulihkan data demo awal. Tidak boleh dibatalkan.',
  'user.reset_database_confirm_label': 'Taip RESET untuk sahkan',
  'user.reset_database_confirm_ph': 'RESET',
  'user.reset_database_btn': 'Set semula ke data awal',
  'user.reset_database_disabled_prod': 'Dilumpuhkan dalam produksi melainkan ALLOW_DB_RESET=true',
  'user.reset_database_success': 'Pangkalan data diset semula. Sila log masuk semula.',
  'user.reset_database_accounts': 'Akaun demo',
  'user.section.basic_info': 'Maklumat asas',
  'user.section.affiliation': 'Affiliasi',
  'user.section.contact': 'Hubungan',
  'user.section.account_overview': 'Gambaran akaun',
  'user.section.password_mgmt': 'Pengurusan kata laluan',
  'user.field.current_password': 'Kata laluan semasa',
  'user.msg.created_with_password': 'Pemain dicipta. Kata laluan: {password}',
  'user.msg.password_saved': 'Kata laluan dikemas kini: {password}',
  'user.hint.password_reset_to_view': 'Tiada rekod. Isi Set semula kata laluan di bawah dan simpan untuk lihat di sini.',
  'user.ph.username_unique': 'Nama log masuk unik',
  'user.ph.username_player': 'Huruf dan digit, 3–32 aksara',
  'user.hint.username_player': 'Hanya huruf dan digit Inggeris; tiada Cina atau simbol khas',
  'user.ph.no_agent': 'Tiada (terus platform)',
  'user.hint.no_agent': 'Biarkan kosong untuk pemain diurus platform',
  'user.hint.platform_direct_player': 'Pemain ini di bawah platform (terus admin).',
  'user.hint.initial_balance': 'Auto tambah baki semasa cipta; 0 = tiada bonus',
  'user.hint.deposit_remark': 'Ditulis ke lejar jika baki permulaan > 0',
  'user.hint.freeze_in_list': 'Beku/nyahbeku dari lajur tindakan senarai',
  'user.hint.agent_change': 'Kosong = terus platform; perubahan dikira semula kredit ejen',
  'user.hint.agent_readonly': 'Ejen induk tidak boleh diubah selepas penciptaan',
  'user.hint.allow_password_change': 'Matikan: semua pemain tidak boleh ubah kata laluan',
  'user.hint.allow_username_change': 'Hidupkan: semua pemain boleh ubah nama log masuk',
  'user.hint.view_password': 'Hanya kata laluan cipta/set semula admin; dibersihkan jika pemain ubah sendiri',
  'user.hint.reset_password': 'Berkuat kuasa serta-merta dan kemas kini kata laluan boleh lihat',
  'user.btn.create': 'Cipta',
  'user.btn.save_profile': 'Simpan',
  'user.btn.confirm_deposit': 'Sahkan tambah baki',
  'user.deposit_remark_default': 'Tambah baki admin',
  'user.withdraw_remark_default': 'Pengeluaran admin',
  'user.field.account_type': 'Jenis akaun',
  'user.type.player': 'Pemain',
  'user.type.tier1_agent': 'Ejen peringkat 1',
  'user.type.sub_agent': 'Ejen peringkat 2',
  'user.hint.account_type': 'Ejen guna had kredit; pemain boleh di bawah ejen',

  'agent.create_btn': '+ Ejen peringkat 1 baharu',
  'agent.create_sub_btn': '+ Ejen peringkat 2 baharu',
  'agent.create_sub': 'Cipta ejen peringkat 2',
  'agent.create_child_btn': '+ Sub-ejen baharu',
  'agent.dialog.create_child_agent': 'Sub-ejen baharu',
  'agent.create_level_agent': 'Cipta ejen peringkat {level}',
  'agent.create_level_agent_btn': '+ Ejen peringkat {level} baharu',
  'agent.level_name': 'Ejen peringkat {level}',
  'agent.level_tab': 'Ejen peringkat {level}',
  'agent.dialog.create_level_agent': 'Ejen peringkat {level} baharu',
  'agent.hint.select_parent_for_level': 'Pilih ejen peringkat {level} sebagai induk',
  'agent.err.parent_level_mismatch': 'Peringkat induk tidak sah untuk cipta ejen peringkat {level}',
  'agent.hint.creating_under_agent': 'Cipta akaun di bawah ejen ini',
  'agent.filter.username_ph': 'Nama pengguna',
  'agent_mgr.tab.players': 'Pemain',
  'agent_mgr.tab.agents': 'Ejen',
  'agent.col.level': 'Peringkat',
  'agent.col.credit': 'Had / Digunakan / Tersedia',
  'agent.col.direct_players': 'Pemain terus',
  'agent.direct_players_title': 'Pemain terus · {name}',
  'agent.open_agent_hint': 'Klik baris ejen untuk buka halaman pemain terus.',
  'agent.platform_row_name': 'Platform',
  'agent.col.sub_agents': 'Sub-ejen',
  'agent.col.cashback': 'Kadar rebat',
  'agent.col.phone': 'Telefon',
  'agent.col.created': 'Dicipta',
  'agent.dialog.create': 'Ejen peringkat 1 baharu',
  'agent.dialog.edit': 'Edit ejen',
  'agent.dialog.credit': 'Laraskan had kredit',
  'agent.field.agent_id': 'ID ejen',
  'agent.dialog.detail': 'Butiran ejen',
  'agent.field.credit_limit': 'Had kredit',
  'agent.field.cashback_rate': 'Kadar rebat',
  'agent.field.adjust_amount': 'Pelarasan',
  'agent.field.used_credit': 'Kredit digunakan',
  'agent.field.available_credit': 'Kredit tersedia',
  'agent.field.player_liability': 'Liabiliti pemain',
  'agent.field.sub_agent_exposure': 'Pendedahan sub-ejen',
  'agent.hint.credit_limit': 'Had maksimum tambah baki untuk pemain terus',
  'agent.hint.cashback_example': 'cth. 1 bermaksud 1%',
  'agent.hint.credit_adjust': 'Positif menambah, negatif mengurangkan',
  'agent.hint.credit_remark': 'Pilihan, ditulis ke lejar kredit',
  'agent.section.credit_log': 'Perubahan kredit terkini',
  'agent.credit.increase': 'Tambah',
  'agent.credit.decrease': 'Kurang',
  'agent.col.credit_type': 'Jenis',
  'agent.col.credit_change': 'Perubahan',
  'agent.col.credit_before': 'Sebelum',
  'agent.col.credit_after': 'Selepas',
  'agent.credit_tx.filter_agent_ph': 'Nama pengguna ejen',
  'agent.credit_tx.filter_agent_id': 'ID ejen',
  'agent.credit_tx.filter_agent_id_ph': 'ID pengguna',
  'agent.credit_tx.col.operator': 'Operator',
  'agent.credit_tx.view_all': 'Lihat semua lejar kredit',
  'finance.tab.credit': 'Lejar kredit',
  'finance.tab.transfer': 'Lejar pemindahan',
  'finance.tab.wallet': 'Lejar dompet',
  'finance.filter.type_category': 'Jenis transaksi',
  'finance.filter.type_category_all': 'Semua',
  'finance.filter.type_category_deposit': 'Pemindahan',
  'finance.filter.type_category_bet': 'Pertaruhan',
  'finance.filter.type_category_cashback': 'Rebat',
  'finance.col.frozen_before': 'Beku sebelum',
  'finance.col.frozen_after': 'Beku selepas',
  'finance.col.reference': 'Pertaruhan berkaitan',
  'finance.tx.adjust': 'Pelarasan baki',
  'finance.tx.bet_freeze': 'Beku pertaruhan',
  'finance.tx.bet_deduct': 'Potong pertaruhan',
  'finance.tx.bet_win': 'Bayaran pertaruhan',
  'finance.tx.bet_lose': 'Penyelesaian pertaruhan',
  'finance.tx.bet_push': 'Refund seri',
  'finance.tx.bet_refund': 'Refund pertaruhan',
  'finance.tx.bet_void': 'Pertaruhan batal',
  'finance.tx.cashback': 'Rebat',
  'finance.tx.resettle': 'Penyelesaian semula',
  'user.action.view_wallet_ledger': 'Lihat lejar dompet',
  'user.action.ledger_short': 'Lejar',
  'user.wallet_ledger_dialog_title': 'Lejar dompet — {name}',
  'agent.hierarchy.settings_title': 'Hierarki ejen',
  'agent.hierarchy.settings_hint': '0 bermaksud tanpa had. Ejen di had atas tidak boleh cipta sub-ejen.',
  'agent.hierarchy.max_level': 'Tahap ejen maksimum',
  'agent.hierarchy.default_sub_credit_ratio': 'Nisbah kredit sub-ejen lalai',
  'agent.hierarchy.create_credit_default_hint': 'Lalai {ratio}% ({amount}), tidak melebihi kredit induk; boleh diselaraskan',
  'agent.hierarchy.create_credit_quick_hint': 'Kredit induk tersedia {amount} — klik nisbah untuk isi',
  'agent.hierarchy.create_level_hint': 'Akan dicipta sebagai ejen peringkat {n}',
  'agent.field.parent_agent': 'Ejen induk',
  'agent.col.parent_chain': 'Rantaian induk',
  'role.agent_level': 'Ejen peringkat {n}',
  'finance.filter.date_range': 'Julat tarikh',
  'finance.filter.player_ph': 'Nama pengguna pemain',
  'finance.filter.parent_agent_ph': 'Nama/ID ejen induk',
  'finance.filter.operator_ph': 'Nama pengguna operator',
  'finance.col.player': 'Pemain',
  'finance.col.parent_agent': 'Ejen induk',
  'finance.col.tx_id': 'ID transaksi',
  'finance.col.balance_change': 'Perubahan baki',
  'finance.col.balance_before': 'Baki sebelum',
  'finance.col.balance_after': 'Baki selepas',
  'finance.col.tx_type': 'Jenis',
  'finance.col.deposit_method': 'Kaedah deposit',
  'finance.deposit_method.manual_admin': 'Deposit manual admin',
  'finance.deposit_method.manual_agent': 'Deposit manual ejen',
  'finance.deposit_method.manual': 'Deposit manual',
  'finance.tx.deposit': 'Deposit',
  'finance.tx.admin_deposit': 'Tambah baki admin',
  'finance.tx.agent_deposit': 'Tambah baki ejen',
  'finance.tx.initial_deposit': 'Bonus pembukaan',
  'finance.tx.player_deposit': 'Deposit sendiri',
  'finance.tx.withdraw': 'Pengeluaran',
  'finance.tx.admin_withdraw': 'Pengeluaran admin',
  'finance.tx.agent_withdraw': 'Pengeluaran ejen',
  'finance.tx.request_id': 'ID permintaan',
  'finance.remark.agent_deposit': 'Deposit ejen',
  'finance.remark.agent_withdraw': 'Pengeluaran ejen',
  'finance.remark.admin_deposit': 'Deposit admin',
  'finance.remark.admin_withdraw': 'Pengeluaran admin',
  'finance.remark.initial_balance': 'Baki permulaan akaun',
  'agent.col.no_records': 'Tiada rekod',
  'agent.btn.confirm_adjust': 'Sahkan',
  'agent.field.select_user': 'Pilih pengguna',
  'agent.ph.select_user': 'Cari nama pengguna pemain',
  'agent.hint.select_user': 'Pilih akaun pemain sedia ada untuk naik taraf ke ejen peringkat 1',

  'match.create_btn': '+ Liga baharu',
  'match.create_fixture_btn': '+ Perlawanan baharu',
  'match.btn.markets': 'Pasaran',
  'match.filter.keyword_ph': 'Nama kejohanan / kod pasukan',
  'match.col.league': 'Kejohanan',
  'match.col.league_en': 'Liga (EN)',
  'match.col.fixture_count': 'Perlawanan',
  'match.col.bet_count': 'Pertaruhan',
  'match.col.total_stake': 'Jumlah stake',
  'match.col.pending_bets': 'Menunggu',
  'match.col.league_code': 'Kod',
  'match.col.matchup': 'Perlawanan',
  'match.col.kickoff': 'Masa mula',
  'match.dialog.create_league': 'Kejohanan baharu',
  'match.dialog.edit_league': 'Edit kejohanan',
  'match.dialog.create_fixture': 'Perlawanan tunggal baharu',
  'match.dialog.create': 'Perlawanan tunggal baharu',
  'match.dialog.edit': 'Edit perlawanan tunggal',
  'match.dialog.import': 'Import perlawanan',
  'match.field.league_en': 'Liga (EN)',
  'match.field.league_zh': 'Liga (ZH)',
  'match.field.league_ms': 'Liga (MS)',
  'match.field.league_logo': 'Logo kejohanan',
  'match.field.lang_zh': 'ZH',
  'match.field.lang_en': 'EN',
  'match.field.lang_ms': 'MS',
  'match.field.kickoff': 'Masa mula',
  'match.timezone.platform_hint': 'Disimpan sebagai masa Malaysia (UTC+8)',
  'match.field.home_team': 'Pasukan tuan rumah',
  'match.field.away_team': 'Pasukan pelawat',
  'match.field.home_en': 'Tuan rumah (EN)',
  'match.field.home_zh': 'Tuan rumah (ZH)',
  'match.field.home_ms': 'Tuan rumah (MS)',
  'match.field.away_en': 'Pelawat (EN)',
  'match.field.away_zh': 'Pelawat (ZH)',
  'match.field.away_ms': 'Pelawat (MS)',
  'match.field.featured': 'Pilihan utama',
  'match.hint.create_draft': 'Disimpan sebagai draf; kembangkan kejohanan dan terbitkan setiap perlawanan tunggal.',
  'match.hint.create_league': 'Kejohanan baharu tidak diterbitkan secara lalai; terbitkan untuk paparan pemain, kemudian kembangkan untuk tambah perlawanan.',
  'league.status.PUBLISHED': 'Diterbitkan',
  'league.status.UNPUBLISHED': 'Tidak diterbitkan',
  'league.btn.unpublish': 'Nyahterbit',
  'league.confirm_unpublish': 'Pemain tidak lagi melihat kejohanan ini; anda masih boleh edit dan terbitkan semula di admin. Teruskan?',
  'msg.league_published': 'Kejohanan diterbitkan',
  'msg.league_unpublished': 'Kejohanan dinyahterbit',
  'match.btn.unpublish': 'Nyahterbit',
  'match.confirm_unpublish': 'Perlawanan kembali ke draf: tersembunyi dari pemain dan tiada pertaruhan baharu; pertaruhan belum selesai kekal. Teruskan?',
  'msg.match_unpublished': 'Perlawanan dinyahterbit',
  'match.hint.edit_published': 'Diterbitkan: edit masa mula, pilihan utama, nama paparan; tertutup/selesai dikunci.',
  'match.expand_league_hint': 'Kembangkan liga untuk urus perlawanan; odds juara di tab Odds juara.',
  'match.expand_outright_hint': 'Kembangkan liga untuk sunting odds juara; pasukan perlawanan disegerakkan auto, boleh tambah pasukan belum dijadualkan.',
  'match.open_league_hint': 'Klik baris liga untuk buka halaman urus perlawanan.',
  'match.open_outright_hint': 'Klik baris liga untuk buka halaman odds juara.',
  'match.league_fixtures_subtitle': 'Perlawanan',
  'match.league_outrights_subtitle': 'Odds juara',
  'outright.odds_only_hint': 'Pasukan daripada perlawanan disegerakkan auto; boleh tambah pasukan manual dan sunting odds di sini. Pasaran juara ikut terbitan liga — tiada langkah terbit berasingan.',
  'outright.league_unpublished_hint': 'Liga belum diterbitkan. Tetapkan liga kepada Diterbitkan di halaman ini untuk membuka pertaruhan juara secara automatik.',
  'outright.unsettled_fixtures_hint': '{n} perlawanan dalam liga ini masih belum diselesaikan. Selesaikan dahulu sebelum juara.',
  'outright.btn.reopen': 'Buka semula pertaruhan',
  'outright.confirm_reopen': 'Membuka semula akan menerima pertaruhan juara baharu. Teruskan?',
  'outright.fixture_sync_added': '{n} pasukan disegerakkan auto daripada perlawanan',
  'outright.col.teams_from_fixtures': 'Pasukan (daripada perlawanan)',
  'outright.col.teams_total': 'Pasukan odds juara',
  'outright.empty_no_teams': 'Tiada pasukan — tambah perlawanan di Konfigurasi atau klik Tambah pasukan.',
  'match.outright.setup': 'Sediakan',
  'match.outright.section_hint': 'Pasaran juara untuk liga ini; perlawanan disenaraikan di bawah',
  'match.expand_markets_hint': 'Klik Pasaran pada perlawanan tunggal untuk halaman pasaran berasingan.',
  'match.no_fixtures': 'Tiada perlawanan tunggal di bawah kejohanan ini.',
  'match.ph.league_ms': 'Piala Dunia 2027',

  'bet.filter.keyword_ph': 'No. pertaruhan / nama pengguna',
  'bet.filter.date_from': 'Tarikh pertaruhan dari',
  'bet.filter.date_start_ph': 'Mula',
  'bet.filter.date_end_ph': 'Tamat',
  'bet.col.serial': 'No.',
  'bet.col.bet_no': 'No. pertaruhan',
  'bet.col.player': 'Pemain',
  'bet.col.agent': 'Ejen',
  'bet.col.selection': 'Pilihan',
  'bet.col.content': 'Kandungan taruhan',
  'bet.content.bet_counts': '{singles} tunggal · {parlays} parlay',
  'bet.col.match': 'Perlawanan',
  'bet.legs_more': '+{n} lagi…',
  'bet.col.selection_count': 'Bil. pilihan',
  'bet.col.stake': 'Stake',
  'bet.col.odds': 'Odds',
  'bet.col.payout': 'Bayaran',
  'bet.col.placed_at': 'Masa pertaruhan',
  'bet.col.cashbacked': 'Rebat dibayar',
  'bet.dialog.detail': 'Butiran pertaruhan',
  'bet.field.total_odds': 'Jumlah odds',
  'bet.field.currency': 'Mata wang',
  'bet.field.potential_win': 'Menang berpotensi',
  'bet.field.actual_payout': 'Bayaran sebenar',
  'bet.field.bet_status': 'Status pertaruhan',
  'bet.field.settlement_status': 'Penyelesaian',
  'bet.field.settled_at': 'Diselesaikan pada',
  'bet.field.request_id': 'ID permintaan',
  'bet.selections_title': 'Pilihan ({n})',
  'bet.col.market': 'Pasaran',
  'bet.col.period': 'Tempoh',
  'bet.col.line': 'Garisan',
  'bet.col.result': 'Keputusan',

  'audit.module_ph': 'cth. USERS, SETTLEMENT',
  'audit.col.time': 'Masa',
  'audit.col.operator': 'Pengendali',
  'audit.col.action': 'Tindakan',
  'audit.col.module': 'Modul',
  'audit.col.target_id': 'ID sasaran',
  'audit.col.ip': 'IP',
  'audit.operator_system': 'Sistem',
  'audit.operator_player': 'Pemain',
  'audit.action.CREATE_PLAYER': 'Cipta pemain',
  'audit.action.UPDATE_PLAYER': 'Kemas kini pemain',
  'audit.action.DELETE_PLAYER': 'Padam pemain',
  'audit.action.RESET_PLAYER_PASSWORD': 'Set semula kata laluan pemain',
  'audit.action.RESET_DATABASE': 'Set semula pangkalan data',
  'audit.action.CREATE_AGENT': 'Cipta ejen',
  'audit.action.UPDATE_AGENT': 'Kemas kini ejen',
  'audit.action.UPDATE_PLAYER_ACCOUNT_SETTINGS': 'Kemas kini tetapan akaun pemain',
  'audit.action.UPDATE_AGENT_SUSPEND_SETTINGS': 'Kemas kini tetapan penggantungan ejen',
  'audit.action.UPDATE_AGENT_HIERARCHY_SETTINGS': 'Kemas kini tetapan hierarki ejen',
  'audit.action.UPDATE_PLATFORM_DIRECT_CASHBACK_SETTINGS': 'Kemas kini tetapan rebat platform',
  'audit.action.UPDATE_BETTING_LIMITS': 'Kemas kini had pertaruhan',
  'audit.action.CONFIRM_SETTLEMENT': 'Sahkan penyelesaian',
  'audit.action.CONFIRM_RESETTLE': 'Sahkan penyelesaian semula',
  'audit.action.CONFIRM_CASHBACK': 'Sahkan bayaran rebat',
  'audit.action.CANCEL_CASHBACK': 'Batalkan kelompok rebat',
  'audit.action.CREATE_STAFF': 'Cipta kakitangan',
  'audit.action.UPDATE_STAFF': 'Kemas kini kakitangan',
  'audit.action.DELETE_STAFF': 'Padam kakitangan',
  'audit.action.PURGE_UNUSED_FILES': 'Padam media tidak digunakan',
  'audit.action.FORGOT_PASSWORD_RESET': 'Pemain set semula kata laluan',
  'audit.action.CREATE_LEAGUE': 'Cipta liga',
  'audit.action.UPDATE_LEAGUE': 'Kemas kini liga',
  'audit.action.ARCHIVE_LEAGUE': 'Arkib liga',
  'audit.action.CREATE_TEAM': 'Cipta pasukan',
  'audit.action.CREATE_MATCH': 'Cipta perlawanan',
  'audit.action.UPDATE_MATCH': 'Kemas kini perlawanan',
  'audit.action.DELETE_MATCH': 'Padam perlawanan',
  'audit.action.ARCHIVE_MATCH': 'Arkib perlawanan',
  'audit.action.IMPORT_MATCHES': 'Import perlawanan',
  'audit.action.PUBLISH_MATCH': 'Terbit perlawanan',
  'audit.action.UNPUBLISH_MATCH': 'Nyahterbit perlawanan',
  'audit.action.CLOSE_MATCH': 'Tutup perlawanan',
  'audit.action.REOPEN_MATCH': 'Buka semula perlawanan',
  'audit.action.CANCEL_MATCH': 'Batalkan perlawanan',
  'audit.action.CREATE_MARKET_TEMPLATE': 'Cipta templat pasaran',
  'audit.action.UPDATE_MARKET_TEMPLATE': 'Kemas kini templat pasaran',
  'audit.action.DUPLICATE_MARKET_TEMPLATE': 'Salin templat pasaran',
  'audit.action.SET_DEFAULT_MARKET_TEMPLATE': 'Tetapkan templat lalai',
  'audit.action.GENERATE_MATCH_MARKETS': 'Jana pasaran perlawanan',
  'audit.action.APPLY_MARKET_TEMPLATE': 'Guna templat pasaran',
  'audit.action.BULK_SAVE_MATCH_MARKETS': 'Simpan pasaran pukal',
  'audit.action.UPDATE_MATCH_ODDS': 'Kemas kini odds perlawanan',
  'audit.action.UPDATE_MARKET': 'Kemas kini pasaran',
  'audit.action.UPDATE_SELECTION': 'Kemas kini pilihan',
  'audit.action.CREATE_OUTRIGHT': 'Cipta outright',
  'audit.action.UPDATE_OUTRIGHT': 'Kemas kini outright',
  'audit.action.UPDATE_OUTRIGHT_ODDS': 'Kemas kini odds outright',
  'audit.action.ADD_OUTRIGHT_SELECTION': 'Tambah pilihan outright',
  'audit.action.BATCH_ADD_OUTRIGHT_SELECTIONS': 'Tambah pilihan outright pukal',
  'audit.action.UPDATE_OUTRIGHT_SELECTION': 'Kemas kini pilihan outright',
  'audit.action.REMOVE_OUTRIGHT_SELECTION': 'Buang pilihan outright',
  'audit.action.IMPORT_WC2026_OUTRIGHT': 'Import outright WC2026',
  'audit.module.CATALOG': 'Pengurusan perlawanan',
  'audit.module.USERS': 'Pemain',
  'audit.module.AGENTS': 'Ejen',
  'audit.module.SYSTEM': 'Sistem',
  'audit.module.SETTINGS': 'Tetapan',
  'audit.module.SETTLEMENT': 'Penyelesaian',
  'audit.module.CASHBACK': 'Rebat',
  'audit.module.STAFF': 'Kakitangan',
  'audit.module.MEDIA': 'Media',
  'audit.module.identity': 'Identiti',

  'cashback.start_date': 'Tarikh mula',
  'cashback.end_date': 'Tarikh tamat',
  'cashback.preview_btn': 'Pratonton',
  'cashback.preview_title': 'Pratonton rebat',
  'cashback.stat.players': 'Pemain',
  'cashback.stat.total': 'Jumlah rebat',
  'cashback.stat.lines': 'Baris butiran',
  'cashback.stat.effective_stake': 'Jumlah stake berkesan',
  'cashback.stat.bet_count': 'Bil. pertaruhan',
  'cashback.stat.avg_rate': 'Kadar purata',
  'cashback.batch_no': 'No. kelompok',
  'cashback.history_title': 'Rekod rebat',
  'cashback.history_empty': 'Tiada kelompok rebat',
  'cashback.filter_status': 'Status',
  'cashback.status.PREVIEW': 'Menunggu',
  'cashback.status.CONFIRMED': 'Dibayar',
  'cashback.col.period': 'Tempoh',
  'cashback.col.status': 'Status',
  'cashback.col.bet_count': 'Pertaruhan',
  'cashback.col.created_at': 'Dicipta',
  'cashback.col.confirmed_at': 'Dibayar pada',
  'cashback.col.operator': 'Operator',
  'cashback.view_detail': 'Butiran',
  'cashback.detail_title': 'Butiran kelompok',
  'cashback.detail_summary': 'Ringkasan kelompok',
  'cashback.table_title': 'Butiran rebat pemain',
  'cashback.table_total': 'Jumlah',
  'cashback.empty_items': 'Tiada rebat layak dalam tempoh ini',
  'cashback.col.index': '#',
  'cashback.col.player': 'Pemain',
  'cashback.col.agent': 'Ejen',
  'cashback.col.balance': 'Baki semasa',
  'cashback.col.effective_stake': 'Stake berkesan',
  'cashback.col.rate': 'Kadar',
  'cashback.col.amount': 'Rebat',
  'cashback.confirm_issue': 'Sahkan bayaran',
  'cashback.cancel_issue': 'Batalkan',
  'cashback.confirm_prompt': 'Bayar rebat kelompok ini ke dompet pemain? Rebat dikreditkan terus oleh platform dan tidak ditolak daripada ejen. Tindakan ini tidak boleh dibatalkan.',
  'cashback.cancel_prompt': 'Batalkan kelompok menunggu ini? Tiada kredit dompet; boleh pratonton semula.',
  'cashback.status.CANCELLED': 'Dibatalkan',
  'cashback.rules_title': 'Peraturan rebat',
  'cashback.rule_period': 'Pilih julat tarikh. Taruhan dikira mengikut masa penyelesaian dalam tempoh tersebut.',
  'cashback.rule_eligible': 'Termasuk: taruhan selesai WON/LOST (tunggal ikut stake; parlay sekali ikut stake parlay). Tidak termasuk: belum selesai, dibatalkan, batal, push, kadar 0, dan taruhan yang sudah dibayar rebat.',
  'cashback.rule_formula': 'Setiap taruhan: stake × kadar rebat. Jumlah diagregat mengikut pemain.',
  'cashback.rule_rate': 'Keutamaan kadar: pemain > ejen > global > kadar lalai (pemain bawah ejen guna kadar ejen; pemain terus platform guna kadar dalam Tetapan global; boleh ganti setiap pemain). Isi peratus, cth. 1 = 1%.',
  'cashback.rule_flow': 'Aliran: pratonton (satu menunggu setiap tempoh) → semak → sahkan bayaran; batalkan jika tidak perlu. Tempoh dibayar tidak boleh pratonton semula.',
  'cashback.rule_platform': 'Bayaran: rebat dikreditkan ke baki tunai pemain oleh platform; tidak ditolak daripada kredit atau baki ejen.',
  'cashback.rule_note_zero': 'Jika 0, semak taruhan WON/LOST dalam tempoh dan kadar rebat > 0 (termasuk lalai terus platform dalam Tetapan global dan tetapan pemain/ejen).',
  'cashback.use_custom_rate': 'Tetapkan kadar rebat khusus',
  'cashback.use_default_rate': 'Guna kadar lalai {rate}',
  'cashback.settings_title': 'Tetapan rebat',
  'cashback.platform_direct_default_rate': 'Kadar rebat lalai terus platform',
  'cashback.platform_direct_default_hint': 'Pemain daftar sendiri tanpa kod jemputan guna kadar ini melainkan ditetapkan secara individu.',
  'cashback.admin_invite_default_rate': 'Kadar rebat jemputan admin',
  'cashback.admin_invite_default_hint': 'Pemain daftar dengan kod jemputan admin; lalai sama dengan terus platform. Jemputan ejen guna kadar ejen yang ditetapkan admin.',

  'user.field.player_id': 'ID pemain',
  'user.field.bet_count': 'Bilangan pertaruhan',
  'user.field.total_stake': 'Jumlah stake',
  'user.field.registered_at': 'Daftar',
  'user.ph.remark_initial': 'Nota lejar apabila baki permulaan > 0',
  'user.bets_edit_value': '{n} pertaruhan / {stake}',
  'user.login_fail_value': '{n} kali',

  'match.import_hint': 'Tampal JSON dengan array matches. Import sebagai draf; terbitkan dari senarai.',
  'match.import_start': 'Import',
  'match.import_json_ph': '{"matches":[...]}',
  'match.delete_confirm_title': 'Padam perlawanan',
  'match.delete_confirm_body': 'Padam "{title}"? Data kekal tetapi disembunyikan.',
  'archive.match_title': 'Padam perlawanan',
  'archive.league_title': 'Padam liga',
  'archive.target': 'Perlawanan: {title}',
  'archive.league_target': 'Liga: {name}',
  'archive.soft_delete_hint': 'Padam lembut: data kekal, disembunyikan dari senarai.',
  'archive.pending_summary': '{count} pertaruhan tertunda, stake {stake}',
  'archive.refund_pending': 'Bayar balik pertaruhan tertunda',
  'archive.parlay_void_hint': 'Slip parlay yang melibatkan perlawanan ini akan dibatalkan sepenuhnya.',
  'archive.force_delete': 'Padam paksa',
  'archive.msg_done': 'Dipadam',
  'archive.msg_done_refund': 'Dipadam; {n} pertaruhan dibayar balik',
  'archive.league_hint': 'Liga hanya boleh dipadam apabila semua perlawanan dan outright selesai tanpa pertaruhan tertunda.',
  'archive.league_blocked': 'Masih ada perlawanan belum selesai atau pertaruhan tertunda.',
  'archive.league_ready': 'Liga ini boleh dipadam; semua acara anak akan disembunyikan.',
  'archive.league_confirm': 'Padam liga',
  'archive.league_done': 'Liga dipadam',
  'archive.warning.PENDING_BETS': 'Terdapat pertaruhan tertunda',
  'archive.warning.UNSETTLED_MATCH': 'Perlawanan belum dalam status akhir',
  'archive.warning.PREVIEW_BATCH': 'Terdapat batch pratonton penyelesaian',
  'common.type': 'Jenis',
  'match.ph.league_en': 'FIFA World Cup 2026',
  'match.ph.league_zh': 'Piala Dunia 2026',
  'match.ph.kickoff': '2026-06-11T19:00:00Z',
  'match.ph.home_en': 'Mexico',
  'match.ph.home_zh': 'Mexico',
  'match.ph.home_ms': 'Mexico',
  'match.ph.away_en': 'South Africa',
  'match.ph.away_zh': 'Afrika Selatan',
  'match.ph.away_ms': 'Afrika Selatan',

  'matchEditor.manage_btn': 'Maklumat asas',
  'matchEditor.back': 'Kembali ke senarai',
  'matchEditor.title': 'Edit maklumat asas',
  'matchEditor.section_info': 'Maklumat asas',
  'matchEditor.section_markets': 'Pasaran & odds',
  'matchEditor.field.league_logo': 'Logo',
  'matchEditor.field.home_logo': 'Logo',
  'matchEditor.field.away_logo': 'Logo',
  'matchEditor.field.pick_flag': 'Pilih bendera',
  'matchEditor.field.custom_logo_url': 'URL imej tersuai',
  'matchEditor.ph.logo_url': 'https://...',
  'matchEditor.field.match_name': 'Nama paparan',
  'matchEditor.field.stage': 'Peringkat',
  'matchEditor.field.group': 'Kumpulan',
  'matchEditor.field.display_order': 'Susunan',
  'matchEditor.field.promo_label': 'Label promosi',
  'matchEditor.field.promo_label_optional': 'Label promosi (pilihan)',
  'matchEditor.field.line_value': 'Garisan',
  'matchEditor.field.player_visible': 'Papar pemain',
  'matchEditor.ph.kickoff': 'Pilih tarikh & masa mula (masa Malaysia)',
  'matchEditor.group.league': 'Liga',
  'matchEditor.hint.league_readonly': 'Nama dan logo liga diselenggara dalam senarai kejohanan; paparan di sini hanya baca.',
  'matchEditor.group.home': 'Tuan rumah',
  'matchEditor.group.away': 'Pelawat',
  'matchEditor.group.schedule': 'Jadual & paparan',
  'matchEditor.save_info': 'Simpan maklumat',
  'matchEditor.save_market': 'Simpan pasaran',
  'matchEditor.save_odds': 'Simpan odds',
  'matchEditor.generate_templates': 'Jana templat lalai',
  'matchEditor.templates_generated': 'Templat pasaran dijana',
  'matchEditor.no_markets': 'Tiada pasaran — terbitkan perlawanan atau jana templat.',
  'matchEditor.market.FT_1X2': 'FT 1X2',
  'matchEditor.market.FT_HANDICAP': 'FT handicap',
  'matchEditor.market.FT_OVER_UNDER': 'FT O/U',
  'matchEditor.market.FT_ODD_EVEN': 'FT ganjil/genap',
  'matchEditor.market.HT_1X2': 'HT 1X2',
  'matchEditor.market.HT_HANDICAP': 'HT handicap',
  'matchEditor.market.HT_OVER_UNDER': 'HT O/U',
  'matchEditor.market.FT_CORRECT_SCORE': 'FT skor tepat',
  'matchEditor.market.HT_CORRECT_SCORE': '1H skor tepat',
  'matchEditor.market.SH_CORRECT_SCORE': '2H skor tepat',
  'matchEditor.period.FT': 'Sepenuh masa',
  'matchEditor.period.HT': 'Separuh masa',
  'matchEditor.period.SH': 'Separuh masa ke-2',
  'matchEditor.period.OUTRIGHT': 'Juara',
  'matchEditor.selection.HOME': 'Tuan rumah',
  'matchEditor.selection.DRAW': 'Seri',
  'matchEditor.selection.AWAY': 'Pelawat',
  'matchEditor.selection.OVER': 'Atas',
  'matchEditor.selection.UNDER': 'Bawah',
  'matchEditor.selection.ODD': 'Ganjil',
  'matchEditor.selection.EVEN': 'Genap',
  'matchEditor.selection.OTHER_DRAW': 'Seri (skor lain)',
  'matchEditor.selection.OTHER_HOME': 'Menang rumah (skor lain)',
  'matchEditor.selection.OTHER_AWAY': 'Menang pelawat (skor lain)',
  'matchEditor.col.selection_code': 'Pilihan',
  'matchEditor.col.selection_name': 'Nama paparan',
  'matchEditor.col.odds': 'Odds',
  'matchEditor.ph.selection_name': 'Nama dipaparkan kepada pemain',

  'err.username_required': 'Sila isi nama pengguna',
  'err.username_player_invalid': 'Nama pemain hanya huruf/digit Inggeris (3–32 aksara)',
  'err.password_min': 'Kata laluan sekurang-kurangnya 8 aksara',
  'err.password_mismatch': 'Kata laluan tidak sepadan',
  'err.credit_negative': 'Had kredit tidak boleh negatif',
  'err.insufficient_credit': 'Kredit tersedia tidak mencukupi. Kurangkan jumlah atau minta penambahan had.',
  'err.kickoff_required': 'Sila isi masa mula',
  'err.team_country_required': 'Pilih pasukan tuan rumah dan pelawat',
  'err.teams_required': 'Isi nama pasukan tuan rumah dan pelawat (ZH atau EN)',
  'err.teams_same': 'Pasukan tuan rumah dan pelawat mesti berbeza',
  'err.league_required': 'Sila isi nama liga',
  'err.user_required': 'Sila pilih pengguna',
  'err.agent_no_parent': 'Ejen peringkat 1 tidak boleh ada pemain induk',
  'err.agent_no_initial_deposit': 'Jangan isi baki permulaan pemain apabila cipta ejen',

  'settlement.back': 'Kembali ke senarai',
  'settlement.kickoff': 'Masa kick-off',
  'settlement.stats_title': 'Statistik pertaruhan',
  'settlement.stats_total_bets': 'Bil. pertaruhan',
  'settlement.stats_single': 'Tunggal',
  'settlement.stats_parlay': 'Parlay',
  'settlement.stats_total_stake': 'Jumlah stake',
  'settlement.stats_potential': 'Menang maksimum',
  'settlement.chart.bet_type': 'Tunggal vs parlay',
  'settlement.chart.status': 'Taburan status pertaruhan',
  'settlement.chart.stake_by_selection': 'TOP6 pilihan mengikut taruhan tunggal',
  'settlement.stats_by_market': 'Ikut pasaran / pilihan',
  'settlement.bet_list': 'Pertaruhan berkaitan',
  'settlement.bet_list_hint': 'Dikumpulkan mengikut pertaruhan; parlay sama perlawanan tunjuk ×kaki',
  'settlement.no_bets': 'Tiada pertaruhan untuk perlawanan ini',
  'settlement.col.market': 'Pasaran',
  'settlement.col.selection': 'Pilihan',
  'settlement.col.legs': 'Kaki',
  'settlement.col.single_stake': 'Stake tunggal',
  'settlement.col.parlay_legs': 'Kaki parlay',
  'settlement.ht_score': 'Skor separuh masa',
  'settlement.ft_score': 'Skor penuh masa',
  'settlement.stats_facts': 'Fakta perlawanan',
  'settlement.corners': 'Sepakan sudut',
  'settlement.cards': 'Kad',
  'settlement.yellow_cards': 'Kad kuning',
  'settlement.red_cards': 'Kad merah',
  'settlement.home_stat': 'Tuan rumah',
  'settlement.away_stat': 'Pelawat',
  'settlement.record_score': 'Simpan skor',
  'settlement.preview_hint': 'Pratonton menukar perlawanan ke menunggu penyelesaian (skor disimpan selepas pengesahan; boleh buka semula sebelum itu)',
  'settlement.preview_btn': 'Pratonton penyelesaian',
  'settlement.view_preview_btn': 'Lihat pratonton penyelesaian',
  'settlement.preview_failed': 'Gagal menjana pratonton penyelesaian',
  'settlement.err_score_not_recorded': 'Sila masukkan skor separuh masa dan penuh masa sebelum penyelesaian',
  'settlement.must_close_first': 'Tutup pertaruhan sebelum penyelesaian',
  'settlement.outright.page_title': 'Penyelesaian juara',
  'settlement.outright.title': 'Juara outright',
  'settlement.outright.winner': 'Pasukan juara',
  'settlement.outright.winner_ph': 'Pilih juara',
  'settlement.outright.preview_hint': 'Pilih juara, pratonton bayaran, kemudian sahkan penyelesaian',
  'settlement.outright.winner_required': 'Sila pilih pasukan juara dahulu',
  'settlement.preview_title': 'Pratonton penyelesaian',
  'settlement.single_count': 'Pertaruhan tunggal',
  'settlement.est_payout': 'Anggaran bayaran',
  'settlement.refund_amount': 'Jumlah bayaran balik',
  'settlement.confirm_btn': 'Sahkan penyelesaian',
  'settlement.smart.btn': 'Skor pintar',
  'settlement.smart.title': 'Cadangan skor pintar',
  'settlement.smart.hint': 'Berdasarkan pertaruhan tunggal menunggu; parlay tidak disertakan. Klik kad untuk guna skor.',
  'settlement.smart.target_hold': 'Sasaran pegangan',
  'settlement.smart.recalc': 'Kira semula',
  'settlement.smart.apply': 'Guna skor ini',
  'settlement.smart.applied': 'Skor telah diisi',
  'settlement.smart.no_bets': 'Tiada pertaruhan tunggal menunggu',
  'settlement.smart.empty': 'Tiada cadangan',
  'settlement.smart.meta': 'Tunggal {singles}, parlay {parlays} dilangkau, {n} skor dibanding',
  'settlement.smart.hold': 'Pegangan',
  'settlement.smart.payout': 'Bayaran',
  'settlement.smart.win_stake': 'Stake menang %',
  'settlement.smart.wl': 'Menang/Kalah',
  'settlement.smart.strategy.MIN_PAYOUT': 'Pegangan maks (bayaran min)',
  'settlement.smart.strategy.MAX_PAYOUT': 'Bayaran pemain maks',
  'settlement.smart.strategy.BALANCED': 'Seimbang (~50% stake menang)',
  'settlement.smart.strategy.TARGET_HOLD': 'Sasaran pegangan',
  'msg.score_recorded': 'Skor disimpan',
  'msg.settlement_confirmed': 'Penyelesaian disahkan',
  'settlement.resettle_reason': 'Sebab penyelesaian semula',
  'settlement.resettle_preview': 'Pratonton penyelesaian semula',
  'settlement.resettle_preview_title': 'Pratonton penyelesaian semula',
  'settlement.resettle_affected': 'Pertaruhan terpengaruh',
  'settlement.resettle_topup': 'Bayaran tambahan diperlukan',
  'settlement.resettle_clawback': 'Bayaran balik diperlukan',
  'settlement.resettle_confirm': 'Sahkan penyelesaian semula',
  'settlement.resettle_affected_list': 'Butiran Pertaruhan Terpengaruh',
  'settlement.resettle_col.old_result': 'Keputusan/Bayaran Asal',
  'settlement.resettle_col.new_result': 'Keputusan/Bayaran Baharu',
  'settlement.resettle_col.adjust': 'Pelarasan',
  'settlement.history_tab': 'Rekod Penyelesaian',
  'settlement.history_tab_bets': 'Statistik Pertaruhan',
  'settlement.history.no_records': 'Tiada rekod penyelesaian',
  'settlement.history.col.batch_no': 'No. Kumpulan',
  'settlement.history.col.type': 'Jenis',
  'settlement.history.col.score': 'Skor (HT/FT)',
  'settlement.history.col.corners': 'Sepakan sudut (R/T)',
  'settlement.history.col.cards': 'Kad kuning/merah (R/T)',
  'settlement.history.col.total_bets': 'Pertaruhan diselesaikan',
  'settlement.history.col.total_payout': 'Jumlah bayaran',
  'settlement.history.col.total_refund': 'Jumlah bayaran balik',
  'settlement.history.col.operator': 'Pengendali',
  'settlement.history.col.time': 'Masa diselesaikan',
  'settlement.history.col.reason': 'Sebab',
  'settlement.history.type.initial': 'Penyelesaian awal',
  'settlement.history.type.resettle': 'Penyelesaian semula',

  'agent_portal.create_player_section': 'Cipta pemain',
  'agent_portal.deposit_section': 'Tambah baki',
  'agent_portal.create_player_btn': '+ Pemain baharu',
  'agent_portal.create_tier2_btn': '+ Sub-ejen baharu',
  'agent_portal.username_ph': 'Masukkan nama pengguna',
  'agent_portal.agent_username_ph': 'Nama pengguna ejen',
  'agent_portal.player_id_ph': 'ID pemain',
  'agent_portal.withdraw_btn': 'Keluarkan {amount}',
  'agent_portal.withdraw_btn_label': 'Keluarkan',
  'agent_portal.transfer_title_deposit': 'Tambah baki {name}',
  'agent_portal.transfer_title_withdraw': 'Keluarkan dari {name}',
  'agent_portal.create_player_dialog': 'Pemain baharu',
  'agent_portal.edit_player_dialog': 'Edit pemain langsung',
  'agent_portal.credit_available_hint': 'Kredit tersedia: {amount} (tambah baki ditolak dari had)',
  'agent_portal.initial_deposit_hint': 'Pilihan. Tambah baki awal dari kredit anda semasa pendaftaran',
  'agent_portal.search_player_ph': 'Nama pengguna atau ID',
  'agent_portal.no_players': 'Tiada pemain langsung. Klik butang di atas untuk cipta.',
  'invite.title': 'Kod jemputan & pautan daftar',
  'invite.menu_btn': 'Jemputan',
  'invite.dialog_title': 'Pengurusan jemputan',
  'invite.tab_generate': 'Jana jemputan',
  'invite.tab_history': 'Sejarah',
  'invite.hint': 'Klik untuk jana kod jemputan dan pautan daftar. Pemain boleh masukkan kod; kosongkan untuk terus platform.',
  'invite.generate_btn': 'Jana kod / pautan',
  'invite.regenerate_btn': 'Jana semula',
  'invite.generate_ok': 'Kod jemputan dijana',
  'invite.generate_failed': 'Gagal jana — sila cuba lagi',
  'invite.not_generated': 'Belum jana kod jemputan',
  'invite.code': 'Kod jemputan',
  'invite.cashback_rate': 'Kadar rebat',
  'invite.cashback_rate_hint': 'Pemain yang daftar dengan kod ini guna kadar ini. Lalai dari kadar jemputan admin global.',
  'invite.link': 'Pautan daftar',
  'invite.copy_code': 'Salin kod',
  'invite.copy_code_short': 'Salin',
  'invite.copy_link_short': 'Salin pautan',
  'invite.copy_link': 'Salin pautan daftar',
  'invite.copy_code_ok': 'Kod jemputan disalin',
  'invite.copy_link_ok': 'Pautan daftar disalin',
  'invite.copy_failed': 'Salinan gagal — sila salin secara manual',
  'invite.unavailable': 'Kod jemputan tidak tersedia',
  'invite.history_title': 'Sejarah jemputan',
  'invite.view_history': 'Lihat sejarah',
  'invite.history_hint': 'Admin lihat semua kod; ejen lihat kod sendiri dan ejen bawahan.',
  'invite.page_desc': 'Lihat sejarah kod jemputan, status dan bilangan pendaftaran.',
  'invite.history_load_failed': 'Gagal memuatkan sejarah jemputan',
  'invite.filter_status': 'Status',
  'invite.filter_sponsor': 'Penjemput',
  'invite.filter_code': 'Kod',
  'invite.filter_code_ph': 'Masukkan kod',
  'invite.col_status': 'Status',
  'invite.col_sponsor': 'Penjemput',
  'invite.col_registrant': 'Pendaftar',
  'invite.not_registered': 'Belum daftar',
  'invite.col_cashback_rate': 'Rebat',
  'invite.col_created': 'Dicipta',
  'invite.col_revoked': 'Dibatalkan',
  'invite.status.ACTIVE': 'Aktif',
  'invite.status.USED': 'Digunakan',
  'invite.status.REVOKED': 'Dibatalkan',
  'invite.revoke_btn': 'Batalkan',
  'invite.revoke_title': 'Batalkan kod jemputan',
  'invite.revoke_confirm': 'Batalkan kod {code}? Kod tidak boleh digunakan untuk pendaftaran.',
  'invite.revoke_ok': 'Kod jemputan dibatalkan',
  'invite.revoke_failed': 'Gagal batalkan — sila cuba lagi',
  'invite.delete_title': 'Padam rekod jemputan',
  'invite.delete_confirm': 'Padam sejarah kod {code}? Tindakan ini tidak boleh dibatalkan.',
  'invite.delete_ok': 'Rekod jemputan dipadam',
  'invite.delete_failed': 'Gagal padam — sila cuba lagi',
  'agent_portal.search_sub_agent_ph': 'Nama pengguna atau ID',
  'agent_portal.no_sub_agents': 'Tiada ejen peringkat 2. Klik butang di atas untuk cipta.',
  'agent_portal.no_sub_agents_level': 'Tiada ejen peringkat {level}. Klik butang di atas untuk cipta.',
  'agent_portal.sub_agent_players_readonly': 'Pemain langsung di bawah sub-ejen ini hanya boleh dilihat. Pembukaan akaun dan tambah baki diurus oleh sub-ejen.',
  'agent_portal.sub_agent_downline_readonly': 'Semua ejen dan pemain bawahan di bawah sub-ejen ini hanya boleh dilihat. Anda hanya boleh mengendalikan sub-ejen langsung; pembukaan akaun dan tambah baki diurus oleh setiap peringkat.',
  'agent_portal.sub_agent_downline_readonly_level': 'Semua ejen dan pemain di bawah ejen peringkat {level} ini hanya boleh dilihat. Anda hanya boleh mengendalikan sub-ejen langsung; pembukaan akaun dan tambah baki diurus oleh setiap peringkat.',
  'agent_portal.downline_agents_title': 'Ejen bawahan',
  'agent_portal.downline_players_title': 'Pemain bawahan',
  'agent_portal.no_downline_agents': 'Tiada ejen bawahan',
  'agent_portal.no_downline_players': 'Tiada pemain bawahan',
  'agent_portal.sub_agent_players_readonly_level': 'Pemain langsung di bawah ejen peringkat {level} ini hanya boleh dilihat. Pembukaan akaun dan tambah baki diurus oleh ejen tersebut.',
  'agent_portal.create_sub_agent_dialog': 'Ejen peringkat 2 baharu',
  'agent_portal.sub_agent_credit_hint': 'Kredit awal diperuntukkan dari had tersedia anda',
  'agent_portal.adjust_credit_dialog': 'Laraskan kredit {name}',
  'agent_portal.credit_adjust_hint': 'Positif untuk tambah, negatif untuk kurangkan',
  'msg.agent_sub_created': 'Sub-ejen dicipta',
  'msg.withdraw_ok': 'Pengeluaran berjaya',

  'msg.form_invalid': 'Sila semak borang',
  'msg.player_created': 'Pemain dicipta',
  'msg.agent_created': 'Ejen dicipta',
  'msg.create_failed': 'Gagal mencipta',
  'msg.saved': 'Disimpan',
  'msg.save_failed': 'Gagal menyimpan',
  'msg.deleted': 'Dipadam',
  'msg.delete_failed': 'Gagal memadam',
  'msg.league_created': 'Kejohanan dicipta',
  'msg.league_updated': 'Kejohanan dikemas kini',
  'msg.match_created_draft': 'Perlawanan tunggal dicipta (draf)',
  'msg.published': 'Diterbitkan dengan pasaran',
  'msg.closed': 'Pertaruhan ditutup',
  'msg.reopened': 'Pertaruhan dibuka semula',
  'match.reopen_kickoff_title': 'Tetapkan masa mula baharu',
  'match.reopen_kickoff_hint': 'Masa mula telah berlalu. Pilih masa mula baharu pada masa hadapan sebelum membuka semula.',
  'match.reopen_kickoff_invalid': 'Sila pilih masa mula pada masa hadapan',
  'msg.invalid_json': 'JSON tidak sah',
  'msg.import_failed': 'Import gagal',
  'msg.import_done': 'Import: {imported} ok, {skipped} dilangkau, {failed} gagal / {total} jumlah',
  'msg.topup_ok': 'Tambah baki berjaya',
  'msg.topup_failed': 'Tambah baki gagal',
  'msg.transfer_failed': 'Operasi gagal',
  'msg.amount_gt_zero': 'Jumlah mesti lebih daripada 0',
  'msg.credit_zero': 'Pelarasan tidak boleh 0',
  'msg.credit_adjusted': 'Kredit dikemas kini',
  'msg.credit_adjust_failed': 'Pelarasan gagal',
  'msg.outright_no_edit': 'Outright tidak boleh diedit di sini',
  'msg.outright_odds_saved': 'Odds juara disimpan',
  'msg.load_failed': 'Gagal memuatkan',

  'content.btn.create': 'Kandungan baharu',
  'content.btn.enable': 'Aktifkan',
  'content.btn.disable': 'Nyahaktif',
  'content.dialog.create': 'Kandungan awam baharu',
  'content.dialog.create_banner': 'Promosi laman utama baharu',
  'content.dialog.create_notice': 'Terbitkan notifikasi',
  'content.dialog.edit': 'Edit kandungan',
  'content.dialog.edit_banner': 'Edit promosi laman utama',
  'content.dialog.edit_notice': 'Edit notifikasi',
  'content.confirm_delete': 'Padam "{title}"?',
  'content.type.BANNER': 'Promosi laman utama',
  'content.type.ANNOUNCEMENT': 'Notifikasi',
  'content.type.INBOX_NOTIFY': 'Notifikasi peti mesej',
  'content.inbox_notify.inbox_enabled': 'Peti mesej pemain',
  'content.inbox_notify.inbox_enabled_hint': 'Jika dimatikan, pemain hanya dibawa ke sokongan (tiada tab peti mesej)',
  'content.inbox_notify.deposit': 'Keputusan deposit',
  'content.inbox_notify.deposit_hint': 'Hantar mesej apabila diluluskan atau ditolak',
  'content.inbox_notify.manual_title': 'Tanda "Notifikasi peti mesej" semasa mencipta:',
  'content.inbox_notify.banner_note': 'Promosi laman utama',
  'content.inbox_notify.announcement_note': 'Notifikasi / ticker',
  'content.inbox_broadcast.title': 'Hantar manual',
  'content.inbox_broadcast.hint': 'Hantar mesej peti secara manual kepada pemain. Padam rekod juga membuang mesej di peti pemain.',
  'content.inbox_broadcast.field_title': 'Tajuk',
  'content.inbox_broadcast.field_body': 'Kandungan',
  'content.inbox_broadcast.field_target': 'Penerima',
  'content.inbox_broadcast.field_username': 'Nama pengguna pemain',
  'content.inbox_broadcast.target_all': 'Semua pemain',
  'content.inbox_broadcast.target_user': 'Pemain tertentu',
  'content.inbox_broadcast.username_placeholder': 'Masukkan nama log masuk pemain',
  'content.inbox_broadcast.send': 'Hantar',
  'content.inbox_broadcast.send_success': 'Dihantar kepada {n} pemain',
  'content.inbox_broadcast.form_invalid': 'Sila isi tajuk atau kandungan sekurang-kurangnya satu bahasa',
  'content.inbox_broadcast.target_user_required': 'Nama pengguna pemain diperlukan',
  'content.inbox_broadcast.history_title': 'Sejarah penghantaran',
  'content.inbox_broadcast.view_title': 'Butiran penghantaran',
  'content.inbox_broadcast.col_title': 'Tajuk',
  'content.inbox_broadcast.col_target': 'Sasaran',
  'content.inbox_broadcast.col_recipients': 'Bilangan',
  'content.inbox_broadcast.col_sender': 'Penghantar',
  'content.inbox_broadcast.col_time': 'Masa',
  'content.inbox_broadcast.delete_confirm': 'Padam "{title}"? Salinan di peti pemain juga akan dibuang.',
  'content.inbox_broadcast.locale_fallback_hint': 'Locale yang kosong akan guna susunan: bahasa pemain → Inggeris → Cina Ringkas → Melayu.',
  'content.hint.banner': 'Dipaparkan dalam karusel laman utama; ketik untuk halaman butiran. Muat naik imej muka depan dan kandungan kaya seperti pengumuman laman rasmi.',
  'content.hint.announcement': 'Dipaparkan sebagai teks bergulir di bahagian atas aplikasi pemain. Isi tajuk dan teks bergulir setiap bahasa — teks biasa sahaja.',
  'content.section.publish': 'Tetapan terbitan',
  'content.section.content': 'Kandungan notifikasi',
  'content.field.publish_kind': 'Jenis terbitan',
  'content.publish_kind.notice': 'Notifikasi penuh (halaman butiran)',
  'content.publish_kind.ticker': 'Teks ticker sahaja',
  'content.publish_kind.hint': 'Notifikasi penuh muncul dalam senarai dan butiran; ticker hanya papar satu baris bergulir.',
  'content.field.cover_image': 'Imej muka depan',
  'content.field.ticker_title_ph': 'Tajuk ticker (pilihan)',
  'content.field.ticker_body_ph': 'Teks dipaparkan dalam ticker',
  'content.field.ticker_hint': 'Ticker hanya papar teks biasa — tiada imej atau format kaya.',
  'content.editor.placeholder': 'Tulis kandungan notifikasi; boleh sisip imej dan senarai…',
  'content.editor.insert_image': 'Sisip imej',
  'content.upload.cover_size_hint': 'Lebar disyorkan 860px+. Imej muka depan dan dalam kandungan akan menyesuaikan lebar pada pemain.',
  'content.upload.pick_media_title': 'Pilih imej',
  'content.upload.no_media': 'Tiada imej dalam pustaka — muat naik dahulu',
  'content.upload.load_media_failed': 'Gagal memuat pustaka media',
  'content.status.DRAFT': 'Draf',
  'content.status.ACTIVE': 'Aktif',
  'content.status.INACTIVE': 'Tidak aktif',
  'content.col.sort': 'Susunan',
  'content.col.preview': 'Pratonton',
  'content.col.title': 'Tajuk / ringkasan',
  'content.col.player_visible': 'Pemain nampak',
  'content.col.schedule': 'Jadual',
  'content.col.link': 'Pautan',
  'content.field.link_type': 'Jenis pautan',
  'content.field.link_target': 'Sasaran pautan',
  'content.field.start_time': 'Masa mula',
  'content.field.end_time': 'Masa tamat',
  'content.field.notify_inbox': 'Notifikasi peti mesej',
  'content.field.notify_inbox_hint': 'Hantar mesej peti kepada semua pemain tentang promosi ini selepas simpan',
  'content.msg.notify_sent': 'Notifikasi dihantar kepada {count} pemain',
  'content.field.title': 'Tajuk',
  'content.field.title_ph': 'Pilihan',
  'content.field.body': 'Kandungan',
  'content.field.announce_text': 'Teks ticker',
  'content.field.image_url': 'URL imej',
  'content.upload.upload_btn': 'Muat naik imej',
  'content.upload.uploading': 'Memuat naik…',
  'content.upload.success': 'Imej berjaya dimuat naik',
  'content.upload.failed': 'Gagal memuat naik',
  'content.upload.size_error': 'Imej mestilah di bawah 5 MB',
  'content.upload.remove': 'Buang imej',
  'content.upload.pick_media': 'Pilih dari pustaka',
  'content.upload.url_placeholder': 'Atau tampal URL imej',
  'content.upload.recommended_size': 'Saiz disyorkan: 860 x 360 px, atau imej nisbah 43:18. Karusel pemain memaparkan imej penuh dan mengisi ruang tambahan.',
  'content.link.none': 'Tiada pautan',
  'content.locale.zh-CN': 'Cina Ringkas',
  'content.locale.en-US': 'English',
  'content.locale.ms-MY': 'Bahasa Melayu',
  'content.hidden_reason.NOT_ACTIVE': 'Tidak aktif atau draf',
  'content.hidden_reason.NOT_STARTED': 'Belum bermula',
  'content.hidden_reason.EXPIRED': 'Tamat tempoh',
  'content.hidden_reason.INCOMPLETE': 'Terjemahan tidak lengkap',
  'content.batch.selected': '{n} dipilih',
  'content.batch.enable': 'Aktifkan dipilih',
  'content.batch.disable': 'Nyahaktif dipilih',
  'content.batch.delete': 'Padam dipilih',
  'content.confirm_batch_enable': 'Aktifkan {n} item dipilih?',
  'content.confirm_batch_disable': 'Nyahaktif {n} item dipilih?',
  'content.confirm_batch_delete': 'Padam {n} item dipilih?',
  'content.batch.all_ok': '{n} item berjaya',
  'content.batch.partial': '{ok} berjaya, {fail} gagal',

  'page.outrights.title': 'Juara',
  'page.outrights.desc': 'Cipta dan edit pasaran juara; Piala Dunia 2026 boleh import asas',
  'outright.col.rank': 'Kedudukan',
  'outright.col.team_zh': 'Pasukan (ZH)',
  'outright.col.team_en': 'Pasukan (EN)',
  'outright.col.code': 'Kod',
  'outright.col.country': 'Negara',
  'outright.col.odds': 'Odds juara',
  'outright.country_ph': 'Cari atau pilih negara',
  'teamLogo.kind.flag': 'Bendera',
  'teamLogo.kind.crest': 'Lambang',
  'outright.err_country': 'Sila pilih negara',
  'outright.btn.save_odds': 'Simpan semua odds',
  'outright.btn.close': 'Tutup pertaruhan',
  'outright.btn.settle': 'Selesaikan',
  'outright.confirm_close': 'Selepas tutup, tiada pertaruhan juara baharu. Teruskan?',
  'outright.btn.apply_canonical': 'Guna data jadual asas',
  'msg.outright_canonical_applied': 'Odds 48 pasukan telah dikemas kini',
  'outright.team_count': '{n} / {total} pasukan',
  'outright.err_odds_min': 'Odds mesti lebih 1.00',
  'outright.field.title_zh': 'Tajuk (ZH)',
  'outright.field.title_en': 'Tajuk (EN)',
  'outright.field.title_ms': 'Tajuk (MS)',
  'outright.btn.create_event': 'Acara juara baharu',
  'outright.fixtures_sync_hint': 'Pasukan daripada perlawanan liga; hanya laraskan odds dan status terbit.',
  'outright.empty_no_fixtures': 'Tiada perlawanan dalam liga ini — tambah di Konfigurasi perlawanan dahulu.',
  'outright.btn.add_team': 'Tambah pasukan',
  'outright.add.filter_fixture': 'Pasukan sedia ada',
  'outright.add.filter_all': 'Semua terbina dalam',
  'outright.add.filter_custom': 'Tersuai',
  'outright.add.custom_hint': 'Isi kod pasukan dan nama Cina/Inggeris; logo melalui muat naik atau URL.',
  'outright.add.field_code': 'Kod pasukan',
  'outright.add.field_logo': 'Logo',
  'outright.add.ph_code': 'cth. TEAM01',
  'outright.add.ph_name_zh': 'Nama Cina',
  'outright.add.ph_name_en': 'Nama Inggeris',
  'outright.add.err_code_required': 'Sila isi kod pasukan',
  'outright.add.err_name_required': 'Sila isi sekurang-kurangnya nama Cina atau Inggeris',
  'outright.add.err_duplicate': 'Kod pasukan ini sudah ada dalam pasaran juara',
  'outright.add.select_all': 'Pilih semua',
  'outright.add.clear_selection': 'Kosongkan pilihan',
  'outright.add.selected_count': '{n} dipilih',
  'outright.add.empty_fixture': 'Tiada pasukan perlawanan untuk ditambah (pasukan dalam perlawanan tetapi belum dalam pasaran juara)',
  'outright.add.empty_all': 'Semua pasukan terbina dalam sudah dalam pasaran juara',
  'outright.add.default_odds': 'Odds lalai',
  'outright.add.search_ph': 'Cari nama atau kod',
  'outright.add.err_none': 'Sila pilih sekurang-kurangnya satu pasukan',
  'outright.batch.mode': 'Urus kelompok',
  'outright.batch.exit': 'Keluar kelompok',
  'outright.batch.apply_odds': 'Guna odds',
  'outright.batch.remove': 'Buang terpilih',
  'outright.batch.confirm_remove': 'Buang {n} pasukan terpilih?',
  'outright.batch.err_none': 'Sila pilih pasukan dahulu',
  'outright.batch.apply_ok': 'Odds {n} pasukan dikemas kini — simpan semua odds',
  'outright.batch.remove_ok': '{n} pasukan dibuang',
  'outright.batch.remove_partial': '{ok} berjaya, {fail} gagal',
  'outright.sort.label': 'Susun',
  'outright.sort.rank': 'Kedudukan',
  'outright.sort.name': 'Nama pasukan',
  'outright.sort.code': 'Kod',
  'outright.sort.odds': 'Odds (semasa)',
  'outright.sort.saved_odds': 'Odds (disimpan)',
  'outright.sort.asc': 'Menaik',
  'outright.sort.desc': 'Menurun',
  'msg.outright_teams_added': '{n} pasukan ditambah ({skipped} dilangkau)',
  'msg.load_matches_failed': 'Gagal memuatkan perlawanan',
  'msg.cashback_issued': 'Rebat telah dikeluarkan',
  'msg.cashback_cancelled': 'Kelompok rebat dibatalkan',
  'msg.cashback_preview_ready': 'Pratonton sedia — semak dan sahkan bayaran',
  'msg.cashback_preview_replaced': 'Menggantikan {n} pratonton lama untuk tempoh ini',
  'msg.freeze_confirm_title': '{action} akaun',
  'msg.freeze_confirm_body': '{action} pemain "{name}"?{extra}',
  'msg.freeze_extra': ' Mereka tidak akan dapat log masuk.',
  'msg.freeze_done': '{action} selesai',
  'msg.freeze_failed': '{action} gagal',

  'smoke.intro': 'Jalankan ujian asap automatik: penyelesaian, peraturan pertaruhan, kredit ejen, rebat, sondakan DB, dan integrasi pertaruhan→penyelesaian→dompet.',
  'smoke.intro_rule': 'Kes peraturan menggunakan logik sama seperti ujian unit Jest; tiada data perniagaan ditulis.',
  'smoke.intro_db': 'Kit Database hanya semak sambungan dan konfigurasi (baca sahaja).',
  'smoke.intro_bet_flow': 'Kit aliran pertaruhan mencipta perlawanan/pemain sementara, mengesahkan bekuan/payout/kredit ejen, kemudian membersihkan.',
  'smoke.intro_note': 'Merangkumi kebanyakan regresi UAT; semak rebat secara manual jika perlu.',
  'smoke.field.suites': 'Kit ujian',
  'smoke.ph.suites': 'Pilih kit untuk dijalankan',
  'smoke.btn.run': 'Jalankan ujian',
  'smoke.last_run': 'Jalanan terakhir',
  'smoke.results_title': 'Keputusan kes',
  'smoke.empty': 'Belum dijalankan. Klik Jalankan ujian.',
  'smoke.stat.pass': 'Lulus',
  'smoke.stat.fail': 'Gagal',
  'smoke.stat.total': 'Jumlah',
  'smoke.col.id': 'ID',
  'smoke.col.suite': 'Kit',
  'smoke.col.name': 'Kes',
  'smoke.col.uat': 'UAT',
  'smoke.col.duration': 'Masa',
  'smoke.col.steps': 'Langkah',
  'smoke.col.message': 'Mesej',
  'smoke.no_steps': 'Tiada butiran langkah',
  'smoke.status.PASS': 'Lulus',
  'smoke.status.FAIL': 'Gagal',
  'smoke.status.SKIP': 'Langkau',
  'smoke.msg.all_passed': 'Semua lulus ({n})',
  'smoke.msg.has_failures': '{n} kes gagal',
  'smoke.msg.run_failed': 'Gagal menjalankan ujian',
  'smoke.log_title': 'Log terperinci',
  'smoke.btn.copy_all': 'Salin semua log',
  'smoke.btn.copy_one': 'Salin',
  'smoke.msg.copy_ok': 'Disalin ke papan keratan',
  'smoke.msg.copy_failed': 'Gagal menyalin — pilih log secara manual',
  'audit.action.RUN_SMOKE_TESTS': 'Jalankan ujian asap',

  'media.title': 'Perpustakaan Media',
  'media.upload_btn': 'Muat Naik Fail',
  'media.category.all': 'Semua',
  'media.category.banners': 'Banner',
  'media.category.teams': 'Logo Pasukan',
  'media.category.contents': 'Gambar Kandungan',
  'media.col.preview': 'Pratonton',
  'media.col.filename': 'Nama Fail',
  'media.col.category': 'Kategori',
  'media.col.size': 'Saiz',
  'media.col.status': 'Status',
  'media.col.uploaded': 'Dimuat Naik',
  'media.col.actions': 'Tindakan',
  'media.status.used': 'Digunakan',
  'media.status.unused': 'Tidak Digunakan',
  'media.purge_btn': 'Buang Yang Tidak Digunakan',
  'media.purge_confirm': 'Padam {n} fail yang tidak digunakan? Ini tidak boleh dibatalkan.',
  'media.purge_none': 'Tiada fail yang tidak digunakan',
  'media.purge_success': '{n} fail dipadam',
  'media.delete_confirm': 'Padam fail ini?',
  'media.delete_success': 'Dipadam',
  'media.upload_success': 'Berjaya dimuat naik',
  'media.upload_failed': 'Muat naik gagal',
  'media.copy_url': 'Salin URL',
  'media.url_copied': 'URL disalin',
  'media.upload_dialog': 'Muat Naik Fail',
  'media.upload_hint': 'PNG, JPG, WEBP, GIF, SVG — maks 5 MB',
  'media.upload_category': 'Kategori',
  'media.drop_hint': 'Lepaskan fail di sini atau klik untuk pilih',
  'media.no_files': 'Tiada fail lagi',
  'media.refresh': 'Muat Semula',
  'media.unused_count': '{n} tidak digunakan',
  'media.storage_stats': 'Statistik Storan',
  'media.deposits_on_disk': 'Tangkapan Skrin Deposit (Tidak dipetakan ke Media)',
  'media.screenshot_cleanup': 'Pembersihan Tangkapan Skrin',
  'media.cleanup_auto_enabled': 'Pembersihan Auto Dinonaktifkan/Diaktifkan',
  'media.cleanup_keep_days': 'Tempoh Penyimpanan (Hari)',
  'media.cleanup_before_date': 'Tarikh Akhir Pembersihan Manual',
  'media.cleanup_run_now': 'Bersihkan Sekarang',
  'media.cleanup_result': 'Berjaya membersihkan {cleaned} tangkapan skrin, membebaskan storan sebanyak {size}.',
  'media.cleanup_expired_tag': 'Dibersihkan',
};

export default adminPagesMs;
