Files
thebet365/apps/admin/src/i18n/admin-pages-ms.ts
Mars 414998ce36 feat(admin,api,player): 代理层级管理、额度上下分与玩家钱包详情
新增代理管理器与二级代理体系,完善信用额度/上下分上下文与冻结策略;代理端玩家与子代理管理增强;玩家端新增钱包详情页与交易筛选优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-08 15:34:12 +08:00

589 lines
29 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** 管理后台列表 / 弹窗 — Bahasa Melayu */
export const adminPagesMs: Record<string, string> = {
'common.detail': 'Butiran',
'common.create': 'Cipta',
'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.close_betting': 'Tutup 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.agent': 'Ejen',
'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.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.no_agent': 'Tiada (terus platform)',
'user.hint.no_agent': 'Biarkan kosong untuk pemain diurus platform',
'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.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.field.account_type': 'Jenis akaun',
'user.type.player': 'Pemain',
'user.type.tier1_agent': 'Ejen peringkat 1',
'user.type.sub_agent': 'Sub-ejen',
'user.hint.account_type': 'Ejen guna had kredit; pemain boleh di bawah ejen',
'agent.create_btn': '+ Ejen peringkat 1 baharu',
'agent.create_sub': 'Cipta sub-ejen',
'agent.hint.creating_under_agent': 'Cipta akaun di bawah ejen ini',
'agent.filter.username_ph': 'Nama pengguna',
'agent.col.level': 'Peringkat',
'agent.col.credit': 'Had / Digunakan / Tersedia',
'agent.col.direct_players': 'Pemain terus',
'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. 0.01 = 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_after': 'Selepas',
'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': '+ Kejohanan baharu',
'match.create_fixture_btn': '+ Perlawanan tunggal',
'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.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.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': 'Cipta kejohanan dahulu, kemudian kembangkan untuk tambah perlawanan tunggal.',
'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.',
'outright.odds_only_hint': 'Pasukan daripada perlawanan disegerakkan auto; boleh tambah pasukan manual dan sunting odds di sini.',
'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.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, AGENTS',
'audit.col.action': 'Tindakan',
'audit.col.module': 'Modul',
'audit.col.target_id': 'ID sasaran',
'audit.col.time': 'Masa',
'audit.action.CREATE_PLAYER': 'Cipta pemain',
'audit.action.UPDATE_PLAYER': 'Kemas kini pemain',
'audit.action.CREATE_AGENT': 'Cipta ejen',
'audit.action.UPDATE_AGENT': 'Kemas kini ejen',
'audit.module.USERS': 'Pemain',
'audit.module.AGENTS': 'Ejen',
'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.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? 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, dan kadar 0.',
'cashback.rule_formula': 'Setiap taruhan: stake × kadar rebat. Jumlah diagregat mengikut pemain.',
'cashback.rule_rate': 'Keutamaan kadar: pemain > ejen > global > kadar lalai ejen (cth. 0.01 = 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_note_zero': 'Jika 0, semak taruhan WON/LOST dalam tempoh dan kadar rebat > 0.',
'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}"? Hanya draf tanpa pertaruhan.',
'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.ph.kickoff': 'Pilih tarikh & masa mula',
'matchEditor.group.league': 'Liga',
'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': 'HT 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.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.record_score': 'Simpan skor',
'settlement.preview_hint': 'Skor di atas disimpan secara automatik sebelum pratonton',
'settlement.preview_btn': '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.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',
'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.',
'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.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.match_created_draft': 'Perlawanan tunggal dicipta (draf)',
'msg.published': 'Diterbitkan dengan pasaran',
'msg.closed': 'Pertaruhan ditutup',
'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.edit': 'Edit kandungan awam',
'content.confirm_delete': 'Padam "{title}"?',
'content.type.BANNER': 'Banner laman utama',
'content.type.ANNOUNCEMENT': 'Pengumuman',
'content.hint.announcement': 'Dipaparkan di ticker atas pemain; isi tajuk atau kandungan',
'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.title': 'Tajuk',
'content.field.title_ph': 'Pilihan',
'content.field.body': 'Kandungan',
'content.field.announce_text': 'Teks ticker',
'content.field.image_url': 'URL imej',
'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.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.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',
};