新增代理管理器与二级代理体系,完善信用额度/上下分上下文与冻结策略;代理端玩家与子代理管理增强;玩家端新增钱包详情页与交易筛选优化。 Co-authored-by: Cursor <cursoragent@cursor.com>
589 lines
29 KiB
TypeScript
589 lines
29 KiB
TypeScript
/** 管理后台列表 / 弹窗 — 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',
|
||
};
|