feat(player): 注册账号、登录双模式与移动端性能优化

注册必填 7-32 位账号,手机号区号/本地号分存;登录默认账号模式并支持切换手机号登录;Player i18n 拆包与赛事接口优化。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-06-12 10:56:51 +08:00
parent 83f0f380c5
commit 312c3c5816
35 changed files with 1944 additions and 1394 deletions

View File

@@ -0,0 +1,413 @@
export default {
common: {
pull_refresh: 'Tarik untuk segar',
release_refresh: 'Lepas untuk segar',
refreshing: 'Menyegarkan…',
loading_more: 'Memuat lagi…',
no_more: 'Tiada lagi',
load_failed: 'Gagal dimuat',
retry: 'Cuba lagi',
},
nav: {
home: 'Laman Utama',
bet: 'Pertaruhan',
bet_history: 'Sejarah',
wallet: 'Bil',
profile: 'Profil',
},
home: {
hot_matches: 'Perlawanan popular',
no_matches: 'Tiada perlawanan',
announcement_badge: 'Notis',
announcement_default:
'Selamat datang ke TheBet365 · Perlawanan bola sepak sedang berlangsung · Bertaruh secara bertanggungjawab',
banner_prev: 'Slaid sebelumnya',
banner_next: 'Slaid seterusnya',
banner_slide: 'Slaid {n}',
banner_fallback: 'Banner',
},
history: {
league_default: 'Bola Sepak',
stake: 'Jumlah',
return: 'Pulangan',
est_return: 'Anggaran pulangan',
odds: 'Odds',
ft: 'PT',
ht: 'SP',
parlay_title: 'Berganda · {n} perlawanan',
parlay_league: 'Berganda',
empty: 'Tiada rekod pertaruhan',
no_more: 'Tiada lagi rekod',
status_won: 'MENANG',
status_pending: 'MENUNGGU',
status_lost: 'KALAH',
status_push: 'SERI',
back: 'Kembali',
not_found: 'Pertaruhan tidak dijumpai',
my_pick: 'Pilihan saya',
my_bets: 'Pertaruhan saya',
legs: 'Butiran berganda',
summary: 'Ringkasan',
bet_no: 'ID Pertaruhan',
awaiting_result: 'Menunggu keputusan…',
filter_all: 'Semua',
filter_won: 'Menang',
filter_lost: 'Kalah',
filter_pending: 'Menunggu',
filter_push: 'Seri',
stats_total: 'Jumlah',
stats_won: 'Menang',
stats_lost: 'Kalah',
stats_pending: 'Menunggu',
stats_push: 'Seri',
stats_stake: 'Jumlah Taruhan',
stats_return: 'Jumlah Pulangan',
cashbacked: 'Rebat dibayar',
},
auth: {
login: 'Log Masuk',
register: 'Daftar Akaun',
logout: 'Log Keluar',
username: 'Nama Pengguna',
password: 'Kata Laluan',
invite_code: 'Kod Jemputan',
optional: 'Pilihan',
captcha_placeholder: 'Kod',
captcha_refresh: 'Klik untuk muat semula',
captcha_wrong: 'Kod captcha salah',
slide_to_verify: 'Gelongsor untuk mengesahkan',
click_to_verify: 'Klik untuk mengesahkan',
verified: 'Disahkan',
login_required: 'Sila Log Masuk',
login_hint: 'Log masuk untuk bertaruh dan akses lebih banyak ciri',
go_login: 'Pergi log masuk',
go_register: 'Tiada akaun? Daftar sekarang',
have_account: 'Sudah ada akaun? Log masuk',
register_btn: 'Daftar',
register_failed: 'Pendaftaran gagal, sila cuba lagi',
continue_browsing: 'Langkau log masuk',
username_placeholder: 'Masukkan nama pengguna',
username_register_placeholder: '7-32 huruf atau digit',
username_required: 'Nama pengguna diperlukan',
username_format_invalid: 'Nama pengguna mesti 7-32 huruf atau digit',
login_account: 'Telefon / Akaun',
login_by_phone: 'Log masuk dengan telefon',
login_by_account: 'Log masuk dengan akaun',
login_account_placeholder: 'Nombor telefon atau akaun',
login_username_placeholder: 'Nombor telefon atau akaun',
confirm_password: 'Sahkan kata laluan',
password_mismatch: 'Kata laluan tidak sepadan',
password_placeholder: 'Masukkan kata laluan',
login_btn: 'Log Masuk',
login_failed: 'Log masuk gagal, sila cuba lagi',
phone: 'Telefon',
phone_placeholder: 'Masukkan nombor telefon',
phone_local_placeholder: 'Masukkan nombor telefon',
phone_required: 'Nombor telefon diperlukan',
phone_invalid: 'Format nombor telefon tidak sah',
phone_country_unsupported: 'Negara atau wilayah ini tidak disokong',
sms_code: 'Kod SMS',
sms_code_placeholder: 'Kod 6 digit',
sms_code_required: 'Sila masukkan kod SMS',
sms_required: 'Sila minta kod SMS dahulu',
send_sms: 'Dapatkan Kod',
resend_sms: 'Cuba lagi dalam {sec}s',
country_search: 'Cari negara atau kod',
country_not_found: 'Tiada negara sepadan',
},
support: {
short: 'Sokongan',
title: 'Khidmat Pelanggan',
open: 'Buka khidmat pelanggan',
close: 'Tutup',
url_pending: 'Pautan khidmat pelanggan belum dikonfigurasi.',
},
wallet: {
balance: 'Baki',
cash_balance: 'Baki Tunai',
card_holder: 'Pemegang',
unsettled: 'Belum Selesai',
available: 'Tersedia',
no_records: 'Tiada rekod',
tx_deposit: 'Deposit',
tx_admin_deposit: 'Tambah baki admin',
tx_agent_deposit: 'Tambah baki ejen',
tx_player_deposit: 'Deposit sendiri',
tx_withdraw: 'Pengeluaran',
tx_admin_withdraw: 'Pengeluaran admin',
tx_agent_withdraw: 'Pengeluaran ejen',
tx_adjust: 'Pelarasan Manual',
tx_bet_freeze: 'Pertaruhan Ditahan',
tx_bet_deduct: 'Pertaruhan Ditolak',
tx_bet_win: 'Bayaran Pertaruhan',
tx_bet_lose: 'Pertaruhan Selesai',
tx_bet_push: 'Pertaruhan Seri',
tx_bet_refund: 'Bayaran Balik',
tx_bet_void: 'Pertaruhan Dibatalkan',
tx_cashback: 'Kredit rebat',
tx_resettle: 'Penyelesaian Semula',
summary_bet: 'Pertaruhan {betNo}',
summary_opening_bonus: 'Bonus pembukaan',
stats_income: 'Pendapatan',
stats_expense: 'Perbelanjaan',
stats_net: 'Bersih',
stats_cashback: 'Rebat',
filter_all: 'Semua',
filter_deposit: 'Deposit',
filter_withdraw: 'Pengeluaran',
filter_bet: 'Pertaruhan',
filter_cashback: 'Rebat',
view_all: 'Lihat semua transaksi',
detail_summary: 'Butiran',
detail_amount: 'Jumlah',
detail_balance_before: 'Baki Sebelum',
detail_balance_after: 'Baki Selepas',
detail_frozen_before: 'Beku Sebelum',
detail_frozen_after: 'Beku Selepas',
detail_reference: 'Rujukan',
detail_reference_type: 'Jenis',
detail_reference_id: 'ID Rujukan',
detail_remark: 'Catatan',
detail_bet_link: 'Lihat Pertaruhan',
detail_tx_id: 'ID Transaksi',
detail_not_found: 'Rekod tidak dijumpai',
ref_bet: 'Pertaruhan',
ref_deposit: 'Deposit',
ref_withdraw: 'Pengeluaran',
view_cashbacks: 'Butiran rebat',
view_cashbacks_detail: 'Lihat butiran rebat (tempoh/kadar)',
cashback_filter_hint: 'Senarai ini ialah kredit dompet; tempoh dan kadar ada di butiran rebat.',
ref_cashback: 'Batch rebat',
detail_cashback_link: 'Lihat butiran rebat',
},
recharge: {
title: 'Topup',
history: 'Sejarah',
history_title: 'Sejarah Topup',
bank_transfer: 'Pindahan Bank',
bank_name: 'Nama Bank',
account_holder: 'Pemegang Akaun',
account_number: 'Nombor Akaun',
usdt_address: 'Alamat USDT',
amount_label: 'Jumlah',
amount_placeholder: 'Masukkan jumlah topup',
screenshot_label: 'Muat Naik Screenshot',
upload_hint: 'Klik untuk muat naik (maks 5MB)',
compressing: 'Memampat',
submit: 'Hantar',
submitting: 'Menghantar',
submitted: 'Topup Dihantar',
pending_review: 'Admin sedang menyemak, sila tunggu',
new_recharge: 'Topup Baru',
no_methods: 'Tiada kaedah pembayaran tersedia',
select_method: 'Sila pilih kaedah pembayaran',
enter_amount: 'Sila masukkan jumlah',
upload_screenshot: 'Sila muat naik screenshot',
submit_failed: 'Gagal, sila cuba lagi',
file_must_be_image: 'Sila muat naik fail imej',
file_too_large: 'Fail melebihi 10MB',
status_pending: 'Memproses',
status_approved: 'Diluluskan',
status_rejected: 'Ditolak',
no_orders: 'Tiada rekod topup',
credited: 'Dikreditkan',
reject_reason: 'Sebab penolakan',
apply_time: 'Masa permohonan',
review_time: 'Masa semakan',
remark: 'Catatan',
},
cashback: {
title: 'Butiran Rebat',
list_title: 'Butiran pembayaran',
total_received: 'Jumlah rebat',
record_count: '{n} rekod',
period: 'Tempoh',
effective_stake: 'Pertaruhan sah',
bet_count: '{n} pertaruhan',
empty: 'Tiada rekod rebat',
empty_hint: 'Rebat dikeluarkan oleh platform mengikut kitaran penyelesaian.',
ledger_hint: 'Sepadan dengan entri dompet di penapis Rebat; jumlah adalah sama.',
},
bet: {
bet_slip: 'Slip Pertaruhan',
stake: 'Jumlah',
place_bet: 'Letak Pertaruhan',
place_bet_short: 'Pertaruhan',
parlay: 'Berganda',
tab_matches: 'Perlawanan',
tab_outright: 'Juara',
tab_parlay: 'Berganda',
tab_today: 'Hari Ini',
tab_early: 'Awal',
show_open_only: 'Buka sahaja',
show_all_matches: 'Tunjuk semua',
today: 'Hari Ini',
loading: 'Memuatkan…',
no_matches: 'Tiada perlawanan',
outright_coming: 'Pasaran juara akan datang',
outright_enter_stake: 'Masukkan jumlah',
outright_balance: 'Baki',
outright_stake_amount: 'Jumlah pertaruhan',
outright_success: 'Pertaruhan berjaya',
outright_done: 'Selesai',
outright_bet_failed: 'Pertaruhan gagal',
outright_insufficient: 'Baki tidak mencukupi',
stake_label: 'Jumlah',
stake_placeholder: 'Masukkan jumlah',
stake_max: 'Maks',
placing: 'Memproses…',
no_outright: 'Tiada pasaran juara',
no_outright_hint: 'Log masuk sebagai pemain. Jika kosong, minta admin terbitkan acara juara.',
outright_events_summary: '{events} acara juara · {teams} pasukan',
outright_teams_count: '{n} pasukan',
outright_load_failed: 'Gagal memuatkan pasaran juara',
outright_player_only: 'Log masuk pemain diperlukan',
outright_shown_count: '{shown} / {total} pasukan dipaparkan',
outright_load_more: 'Muat lagi',
cancel: 'Batal',
parlay_title: 'Pertaruhan Berganda',
parlay_guide_title: 'Cara parlay',
parlay_guide_help: 'Bantuan parlay',
parlay_desc: 'Gabung 25 perlawanan pra-perlawanan (2 hingga 5 liputan). Tiada live, outright atau suku bola HDP/O-U.',
parlay_guide_1: 'Ketik odds dalam senarai; pilihan dipilih ada sempadan emas. Ketik lagi untuk batal',
parlay_guide_2: 'Pilih 25 pilihan dari perlawanan berbeza. Tiada outright atau suku bola HDP/O-U',
parlay_guide_3: 'Ketik Sahkan pesanan di bawah, isi pegangan dalam slip, dan hantar',
parlay_max_legs: 'Maksimum 5 pilihan parlay',
parlay_block_outright: 'Outright tidak boleh parlay',
parlay_block_quarter: 'HDP/O-U suku bola tidak boleh parlay',
parlay_block_not_allowed: 'Pasaran ini tidak boleh parlay',
parlay_filter_all: 'Semua',
parlay_empty: 'Tiada perlawanan untuk pertaruhan berganda',
parlay_same_match: 'Perlawanan sama tidak boleh berganda',
parlay_same_match_singles: '{n} pilihan → {n} pertaruhan tunggal berasingan',
parlay_confirm_singles: 'Sahkan {n} pertaruhan tunggal',
parlay_confirm_parlay: 'Sahkan parlay',
parlay_need_more: 'Pilih sekurang-kurangnya 2 pilihan',
back: 'Kembali',
refresh: 'Muat semula',
download: 'Muat turun',
reward_active: 'Ganjaran aktif!',
market_closed: 'Belum dibuka',
match_phase_closed_pending: 'Ditutup menunggu',
match_phase_settled: 'Selesai',
view_match: 'Lihat perlawanan',
expand_market: 'Kembang',
collapse_market: 'Tutup',
market_cs: 'Skor Tepat',
market_ht_cs: 'Skor Tepat PB1',
market_sh_cs: 'Skor Tepat PB2',
market_ft_handicap: 'Handicap Penuh',
market_ft_ou: 'Atas/Bawah Penuh',
market_ft_1x2: '1X2 Penuh',
market_ft_oe: 'Ganjil/Genap Penuh',
market_ht_handicap: 'Handicap Separuh',
market_ht_ou: 'Atas/Bawah Separuh',
market_ht_1x2: '1X2 Separuh',
parlay_lbl_handicap: 'Handicap',
parlay_lbl_ou: 'Atas/Bawah',
parlay_lbl_1x2: '1X2',
parlay_lbl_oe: 'Ganjil/Genap',
parlay_sel_home: 'R',
parlay_sel_away: 'P',
parlay_sel_draw: 'S',
parlay_sel_over: 'Atas',
parlay_sel_under: 'Bwh',
parlay_sel_odd: 'G',
parlay_sel_even: 'Gn',
cs_other_home: 'Menang rumah (skor lain)',
cs_other_draw: 'Seri (skor lain)',
cs_other_away: 'Menang pelawat (skor lain)',
col_home: 'Home',
col_draw: 'Seri',
col_away: 'Away',
cs_stake_required: 'Masukkan jumlah pada sekurang-kurangnya satu skor',
cs_confirm_title: 'Sahkan pertaruhan skor tepat',
cs_confirm_count: '{n} pertaruhan',
cs_confirm_total_stake: 'Jumlah pertaruhan',
cs_place_success: 'Pertaruhan berjaya',
cs_place_failed: 'Pertaruhan gagal',
kickoff_time: 'Masa mula: ',
guide_title: 'Cara pertaruhan',
guide_help_aria: 'Bantuan pertaruhan',
guide_got_it: 'Faham',
guide_flow_normal: 'Handicap / O-U / 1X2',
guide_normal_1: 'Ketik Kembang untuk lihat odds',
guide_normal_2: 'Pilih satu odds (sisi emas); ketik lagi untuk batal',
guide_normal_3: 'Ketik Sahkan pesanan di bawah pasaran, isi jumlah dan sahkan',
guide_flow_cs: 'Skor tepat',
guide_cs_1: 'Kembang dan isi jumlah setiap skor',
guide_cs_2: 'Isi jumlah, kemudian Sahkan pesanan di bawah pasaran itu',
guide_cs_3: 'Beberapa skor = beberapa pertaruhan',
guide_flow_parlay: 'Parlay (25 perlawanan)',
guide_parlay_1: 'Halaman ini untuk tunggal dan skor tepat. Parlay: ketik Pertaruhan di nav bawah, kemudian tab Parlay di bahagian atas halaman, pilih 25 perlawanan berbeza, hantar dari slip.',
guide_rules_link: 'Peraturan penuh: Profil → Peraturan Pertaruhan.',
mode_cs_tag: 'Pertaruhan di sini',
mode_slip_tag: 'Tambah ke slip',
cs_confirm_btn: 'Sahkan pertaruhan',
cs_confirm_cell: 'Sahkan pesanan',
cs_panel_hint: 'Isi jumlah di bawah, kemudian Sahkan di atas',
slip_panel_hint: 'Ketik odds; guna bar bawah apabila siap',
slip_pick_hint: 'Ketik untuk tambah/buang; sisi emas = dipilih',
picked_tag: 'Dipilih',
pick_added: 'Ditambah ke slip',
pick_removed: 'Dikeluarkan dari slip',
slip_bar_ready: '1 pilihan',
slip_bar_go: 'Buka slip',
cs_top_hint: '① Isi jumlah ② Ketik Sahkan di atas',
slip_empty_hint: 'Ketik odds untuk tambah ke slip',
slip_remove: 'Buang',
slip_singles_hint: '{n} pertaruhan tunggal. Parlay: halaman Pertaruhan → tab Berganda di atas.',
slip_stake_per_bet: 'Jumlah setiap pertaruhan',
slip_est_return: 'Anggaran pulangan',
slip_parlay_odds: 'Odds gabungan {odds}',
place_success: 'Pertaruhan berjaya',
place_failed: 'Pertaruhan gagal',
},
profile: {
edit: 'Edit Profil',
language: 'Bahasa',
avatar: 'Avatar',
avatar_change: 'Tukar avatar',
avatar_confirm: 'Sahkan',
section_contact: 'Maklumat hubungan',
section_account: 'Akaun',
change_password: 'Tukar kata laluan',
show_password: 'Lihat',
hide_password: 'Sembunyi',
password_unavailable: '••••••••',
password_unavailable_hint: 'Kata laluan tidak tersedia; hubungi sokongan',
section_password: 'Tukar kata laluan (pilihan)',
avatar_hint: 'Pilih dari potret pemain terbina',
avatar_search: 'Cari pemain, posisi atau negara',
avatar_empty: 'Tiada pemain dijumpai',
phone: 'Telefon',
email: 'E-mel',
phone_placeholder: 'Nombor telefon',
email_placeholder: 'Alamat e-mel',
save: 'Simpan',
password_optional_hint: 'Biarkan kosong jika tidak mahu tukar kata laluan',
old_password_placeholder: 'Biarkan kosong untuk langkau',
new_password_placeholder: 'Biarkan kosong untuk langkau',
confirm_password_placeholder: 'Biarkan kosong untuk langkau',
old_password: 'Kata laluan semasa',
new_password: 'Kata laluan baharu',
confirm_password: 'Sahkan kata laluan',
back: 'Kembali',
saved: 'Hubungan disimpan',
save_failed: 'Gagal simpan',
password_changed: 'Kata laluan dikemas kini',
password_failed: 'Gagal tukar kata laluan',
password_mismatch: 'Kata laluan tidak sepadan',
password_incomplete: 'Isi kata laluan semasa, baharu dan pengesahan untuk menukar',
username_placeholder: 'Nama log masuk',
username_readonly_hint: 'Nama akaun diurus admin; hubungi sokongan untuk ubah',
username_updated: 'Nama akaun dikemas kini',
password_disabled: 'Akaun ini tidak dibenarkan tukar kata laluan; hubungi sokongan',
rules_title: 'Peraturan Pertaruhan',
rules_p1: 'Versi pertama: hanya bola sepak pra-perlawanan. Tiada live, Cash Out, edit pertaruhan atau parlay sistem.',
rules_p2: 'Parlay 25 pilihan, satu pilihan setiap perlawanan. Outright dan suku bola HDP/O-U tidak boleh parlay.',
rules_p3: 'Keputusan berdasarkan skor separuh masa/penuh yang dimasukkan admin; bayaran selepas pratonton disahkan.',
rules_p4: 'Jika bercanggah dengan notis laman, ikut notis terkini dan peraturan pasaran.',
rules_p5: 'Langkah operasi: buka butiran perlawanan, ketik ikon ? di atas kanan.',
},
} as const;