/* 以下为多语言中重复出现的文案,统一声明一次后在下方各 key 复用,避免同一文案多处声明。 */ /** @description 登录的统一文案。 */ const TEXT_LOGIN = 'Log Masuk' /** @description 注册的统一文案。 */ const TEXT_REGISTER = 'Daftar' /** @description “是”的统一文案。 */ const TEXT_YES = 'Ya' /** @description “否”的统一文案。 */ const TEXT_NO = 'Tidak' /** @description “查看”的统一文案。 */ const TEXT_VIEW = 'Semak' /** @description 自动托管的统一文案。 */ const TEXT_AUTO_HOSTING = 'Putaran Auto' /** @description 钱包流水的统一文案。 */ const TEXT_WALLET_RECORDS = 'Rekod Dompet' /** @description 站内消息的统一文案。 */ const TEXT_SITE_MESSAGES = 'Mesej' /** @description 分页“第x页/共x条”的统一文案。 */ const TEXT_PAGE_INDICATOR = 'Halaman {{page}} / jumlah {{total}}' /** @description 上一页的统一文案。 */ const TEXT_PREV_PAGE = 'Sebelumnya' /** @description 下一页的统一文案。 */ const TEXT_NEXT_PAGE = 'Seterusnya' /** @description “时间”的统一文案。 */ const TEXT_TIME = 'Masa' /** @description 超过单次投注限额的统一文案。 */ const TEXT_BET_LIMIT_EXCEEDED = 'Melebihi had taruhan tunggal' /** @description “提交中...”的统一文案。 */ const TEXT_SUBMITTING = 'Menghantar...' /** @description 手机号字段标签的统一文案。 */ const TEXT_MOBILE_LABEL = 'Nombor Telefon:' /** @description 手机号输入占位的统一文案。 */ const TEXT_MOBILE_PLACEHOLDER = 'Masukkan nombor telefon' /** @description 密码字段标签的统一文案。 */ const TEXT_PASSWORD_LABEL = 'Kata Laluan:' /** @description 密码输入占位的统一文案。 */ const TEXT_PASSWORD_PLACEHOLDER = 'Masukkan kata laluan' /** @description “确认”按钮的统一文案。 */ const TEXT_CONFIRM = 'Sahkan' /** @description “加载中...”的统一文案。 */ const TEXT_LOADING = 'Memuatkan...' /** @description 货币类型的统一文案。 */ const TEXT_CURRENCY_TYPE = 'Jenis Mata Wang' /** @description 支付渠道的统一文案。 */ const TEXT_PAYMENT_CHANNEL = 'Saluran Pembayaran' /** @description “已封盘”的统一文案。 */ const TEXT_LOCKED = 'Dikunci' /** @description “已结算”的统一文案。 */ const TEXT_SETTLED = 'Selesai' export default { nav: { home: 'Laman Utama', game: 'Permainan', }, shell: { eyebrow: '36 Character Flower', subtitle: 'Antara muka permainan cabutan masa nyata untuk mudah alih dan desktop', }, notFound: { eyebrow: '404', title: 'Halaman yang anda minta tidak ditemui.', description: 'Laluan ini tidak wujud. Kembali ke halaman utama rangka kerja.', home: 'Kembali ke utama', }, home: { eyebrow: 'Rangka permainan sedang dibina', title: 'Rangka permainan dwi-peranti 36-character-flower sedang dibangunkan.', description: 'Projek ini telah melepasi peringkat rangka asas. Kini ia disusun dengan laluan permainan dikongsi, keadaan dikongsi, serta paparan berasingan untuk mudah alih dan desktop bagi pengalaman pertaruhan masa nyata.', cards: { routingMode: 'Laluan', dataLayer: 'Model keadaan', transport: 'Masa nyata', auth: 'Produk', metadata: 'Fokus semasa', }, values: { routingMode: 'URL dikongsi + paparan peranti berasingan', dataLayer: 'Round / Bet / User / UI / Connection', transport: 'HTTP + WebSocket', auth: 'Permainan cabutan langsung grid 36', metadata: 'Bina struktur dahulu sebelum kemasan state machine', }, footnote: 'Seterusnya: laluan utama permainan, model perniagaan dikongsi, dan rangka halaman mudah alih serta desktop.', primaryAction: 'Masuk lobi permainan', secondaryAction: 'Lihat struktur projek', }, language: { label: 'Bahasa', zhCN: '中文', enUS: 'English', msMY: 'Melayu', idID: 'Indonesia', }, game: { metaTitle: 'Lobi Permainan', metaDescription: 'Lobi permainan langsung 36-character-flower.', lobbyTitle: 'Lobi 36 Character Flower', lobbySubtitle: 'Di bawah satu laluan perniagaan yang dikongsi, mudah alih dan desktop memaparkan antara muka berbeza di atas data dan keadaan permainan yang sama.', status: { roundState: 'Keadaan pusingan', currentRound: 'Pusingan semasa {{id}}', tablePool: 'Dana meja', onlineCount: '{{count}} dalam talian', activeChip: 'Cip aktif', announcementsRead: '{{read}}/{{total}} pengumuman dibaca', connection: 'Sambungan', connectionHealthy: 'Penyegerakan stabil', connectionRecovering: 'Menunggu pemulihan', synced: 'Disegerakkan', degraded: 'Terganggu', }, board: { historyTitle: 'Sejarah pusingan', historySubtitle: 'Rekod cabutan dan pembayaran terkini', trendTitle: 'Radar trend', trendSubtitle: 'Ringkasan momentum dan kekerapan miss', stageTitle: 'Pentas cabutan', stageSubtitle: 'Pentas ini memuatkan papan utama dan struktur kawalan sebelum integrasi penuh state machine serta animasi.', currentPhase: 'Fasa semasa', selectedBet: 'Pertaruhan {{amount}}', hitCount: '{{count}} kena', hitBadge: '{{count}}x', badgeWin: 'Menang', badgeBet: 'Taruhan', cellLabel: 'Sel {{id}}', winningCell: 'Sel menang {{id}}', missedRounds: 'Terlepas {{count}} pusingan', rising: 'Meningkat', falling: 'Menurun', steady: 'Stabil', hitTotal: '{{count}} kena', }, phases: { betting: 'Taruhan', locked: TEXT_LOCKED, settled: TEXT_SETTLED, }, roundBettingStart: { title: 'Pusingan {{roundId}}', action: 'Mula Bertaruh', }, jackpotBroadcast: { ariaLabel: 'Siaran jackpot', ariaMessage: '{{nickname}} sedang dalam streak {{streak}} menang dan memenangi {{amount}}', iconAlt: 'Siaran', prefix: 'Jackpot kena', separator: 'dengan', streak: 'streak {{count}} menang', winAction: 'memenangi', }, jackpotPool: { ariaLabel: 'Dana jackpot semasa {{amount}}', iconAlt: 'Dana jackpot', label: 'Jackpot', promoLine1: '10 Kemenangan Berturut', promoLine2: 'Dan Raih Super Jackpot', }, actions: { unifiedBetHint: 'Taruhan seragam', totalBet: 'Jumlah taruhan', canBet: 'Boleh taruhan', yes: TEXT_YES, no: TEXT_NO, quickBet: 'Taruhan cepat 08', clearPending: 'Kosongkan belum sah', autoModeDemo: 'Demo mod auto', stopAuto: 'Henti auto', }, modals: { login: { title: TEXT_LOGIN, }, register: { title: TEXT_REGISTER, }, notice: { title: 'Notis Acara', content: 'Bahagian ini akan memuatkan kandungan notis acara sebenar, bahan visual, dan mesej boleh skrol yang lebih panjang. Versi semasa memfokuskan sambungan modal pelbagai bahasa.', check: TEXT_VIEW, }, entryNotice: { title: 'Notis Laman', subtitle: 'Sila baca notis berikut dan sahkan sebelum memasuki permainan.', loading: 'Memuatkan notis...', loadFailed: 'Gagal memuatkan notis. Sila cuba lagi.', retry: 'Muat semula', agreement: 'Saya telah membaca dan bersetuju.', enterGame: 'Masuk Permainan', }, rules: { title: 'Peraturan Permainan', content: [ '## Panduan Peraturan 36 Zihua', '', '### 1. Pengenalan Permainan', '', '**36 Zihua** ialah permainan ramalan nombor. Dalam setiap pusingan, **1 nombor kemenangan** akan dipilih daripada **36 simbol**. Pemain memilih nombor dan membuat pertaruhan semasa peringkat pertaruhan. Jika tekaan tepat, pemain akan menerima ganjaran. Kemenangan berturut-turut boleh meningkatkan ganjaran, dan selepas mencapai peringkat jackpot, pemain juga berpeluang memenangi **Jackpot Sejuta**.', '', '---', '', '### 2. Cara Bermain', '', 'Setiap pusingan dibahagikan kepada beberapa peringkat berikut:', '', '1. **Peringkat Pertaruhan**', ' Pemain memilih nombor yang ingin dipertaruhkan daripada 36 nombor, memilih cip, mengesahkan pertaruhan, dan sistem akan menolak baki serta menjana rekod pertaruhan.', ' Bilangan maksimum nombor yang boleh dipilih bagi setiap pusingan bergantung pada konfigurasi semasa sistem.', '', '2. **Peringkat Penutupan Pertaruhan**', ' Apabila pusingan memasuki peringkat penutupan, sistem akan berhenti menerima pertaruhan baharu.', '', '3. **Peringkat Cabutan dan Penyelesaian**', ' Sistem akan mengumumkan nombor kemenangan bagi pusingan tersebut dan secara automatik menyelesaikan ganjaran mengikut peraturan semasa.', '', '4. **Pusingan Seterusnya Bermula**', ' Selepas pusingan semasa selesai diselesaikan, sistem akan memulakan pusingan seterusnya secara automatik.', '', '---', '', '### 3. Peraturan Kemenangan', '', '1. Hanya **1 nombor kemenangan** akan dikeluarkan dalam setiap pusingan.', '2. Jika nombor yang dipilih oleh pemain **mengandungi nombor kemenangan**, pertaruhan tersebut dianggap menang.', '3. Dalam setiap pusingan, pemain hanya boleh bertaruh pada **1–5 nombor**, dan tidak boleh melebihi **5 nombor**.', '4. Jika pemain memilih beberapa nombor dan jumlah pertaruhan bagi setiap nombor adalah sama, maka:', '', '```text', 'Nilai Pertaruhan Nombor Menang = Jumlah Pertaruhan ÷ Bilangan Nombor yang Dipilih', '```', '', '**Contoh:**', 'Jika pemain memilih **5 nombor** dengan jumlah pertaruhan **💎50**, maka setiap nombor membawa nilai pertaruhan **💎10**.', 'Jika nombor kemenangan berada dalam 5 nombor tersebut, ganjaran akan dikira berdasarkan **💎10**.', '', '---', '', '### 4. Peraturan Ganjaran', '', 'Ganjaran kemenangan berturut-turut dibahagikan kepada **dua jenis**, dan hanya satu jenis akan digunakan bagi setiap peringkat kemenangan berturut-turut:', '', '#### 1. Ganjaran Pekali', '', 'Ganjaran dikira dengan mendarab nilai pertaruhan nombor menang dengan pekali odds bagi peringkat semasa:', '', '```text', 'Jumlah Kemenangan = Nilai Pertaruhan Nombor Menang × Pekali Odds', '```', '', '#### 2. Ganjaran Tetap', '', 'Sistem akan terus membayar jumlah tetap yang telah dikonfigurasikan, tanpa mengambil kira jumlah pertaruhan dalam pusingan semasa:', '', '```text', 'Jumlah Kemenangan = Jumlah Ganjaran Tetap', '```', '', '#### 3. Nota Jadual Ganjaran', '', 'Jadual ganjaran kemenangan berturut-turut semasa adalah berdasarkan konfigurasi backend sistem, dan frontend perlu memaparkannya menggunakan data konfigurasi semasa.', 'Setiap peringkat mengandungi maklumat berikut:', '', '- Peringkat kemenangan berturut-turut', '- Jenis ganjaran', '- Pekali odds', '- Jumlah ganjaran tetap', '- Sama ada ia peringkat jackpot', '', 'Dengan kata lain, jadual ganjaran tidak ditulis tetap. Kandungan sebenar sentiasa mengikut konfigurasi semasa sistem.', '', '---', '', '### 5. Peraturan Kemenangan Berturut-turut', '', 'Apabila pemain menang dalam beberapa pusingan berturut-turut, pemain akan memasuki status kemenangan berturut-turut. Semakin tinggi kemenangan berturut-turut, semakin tinggi peringkat ganjaran.', '', '#### 1. Peraturan Pengiraan Kemenangan Berturut-turut', '', '1. Selepas pemain menang, bilangan kemenangan berturut-turut akan bertambah.', '2. Ganjaran dikira berdasarkan **peringkat kemenangan berturut-turut semasa pertaruhan dibuat**.', '3. Jika pemain kalah dalam mana-mana pusingan, kemenangan berturut-turut akan terus direset kepada **0**.', '4. Dalam pelaksanaan semasa, kemenangan biasa akan meneruskan kemenangan berturut-turut, tetapi jika pemain mengenai **peringkat jackpot**, kemenangan berturut-turut akan direset kepada **0** selepas penyelesaian pusingan tersebut.', '', '#### 2. Had Pertaruhan Semasa Kemenangan Berturut-turut Jackpot', '', 'Apabila kemenangan berturut-turut pemain mencapai peringkat **jackpot pertama** yang ditetapkan oleh sistem, pemain akan memasuki peringkat sekatan pertaruhan jackpot.', '', 'Peraturannya adalah seperti berikut:', '', '1. Dalam setiap pusingan berikutnya, **jumlah keseluruhan pertaruhan** **tidak boleh melebihi** jumlah pertaruhan bagi **pusingan pertama yang memenangi jackpot** dalam kemenangan berturut-turut semasa.', '2. Had ini akan kekal dikunci sepanjang kemenangan berturut-turut semasa dan tidak akan berubah walaupun pemain menang jackpot lagi selepas itu.', '3. Sebaik sahaja kemenangan berturut-turut terputus, sekatan ini akan dibuang serta-merta.', '4. Kemenangan berturut-turut biasa sebelum mencapai peringkat jackpot tidak tertakluk kepada peraturan ini.', '', '{{STREAK_REWARD_TABLE}}', '', '---', '', '### 6. Jackpot Sejuta', '', 'Apabila pemain mencapai peringkat jackpot yang dikonfigurasikan sistem melalui kemenangan berturut-turut, dan peringkat jackpot tersebut dikonfigurasikan sebagai ganjaran tetap, pemain boleh menerima Jackpot Sejuta.', '', '#### 1. Syarat Pencetus', '', '1. Pemain mesti terus menang sehingga mencapai peringkat jackpot semasa yang dikonfigurasikan oleh sistem.', '2. Jika peringkat jackpot dikonfigurasikan sebagai **ganjaran tetap**, contohnya **💎1,000,000**, pemain akan terus menerima Jackpot Sejuta apabila mengenai peringkat tersebut.', '3. Dalam pelaksanaan semasa, **tiada syarat pertaruhan minimum tambahan**. Selagi pemain memenuhi jumlah pertaruhan minimum yang dibenarkan oleh platform, pemain boleh menyertai kemenangan berturut-turut jackpot.', '4. Selepas mengenai peringkat jackpot, sebaik sahaja penyelesaian selesai, kemenangan berturut-turut akan direset kepada **0**.', '', '#### 2. Peraturan Bayaran', '', '- Jika peringkat jackpot dikonfigurasikan sebagai **ganjaran tetap**, jumlah jackpot tetap yang telah dikonfigurasikan akan dibayar terus.', '- Jika peringkat jackpot dikonfigurasikan sebagai **ganjaran pekali**, ganjaran tetap akan dikira sebagai **nilai pertaruhan nombor menang × pekali odds**, dan satu juta tetap tidak akan dibayar secara automatik.', '', '**Contoh:**', '', '- Jika peringkat jackpot dikonfigurasikan sebagai ganjaran tetap **💎1,000,000**', '- Pemain mencapai peringkat jackpot tersebut dan menang', '- Maka pemain akan terus menerima **💎1,000,000**', '', '---', ].join('\n'), confirm: 'Saya Faham', streakRewardTable: { title: 'Jadual Ganjaran Kemenangan Berturut-turut', columns: { streak: 'Peringkat', rewardType: 'Jenis Ganjaran', oddsFactor: 'Odds', fixedAmount: 'Ganjaran Tetap', isJackpot: 'Jackpot', }, rewardTypes: { coefficient: 'Ganjaran Pekali', fixed: 'Ganjaran Tetap', }, streakValue: 'Pusingan {{streak}}', yes: TEXT_YES, no: TEXT_NO, empty: 'Tiada konfigurasi ganjaran', }, }, procedures: { title: 'Tambah Nilai / Pengeluaran', contentPlaceholder: 'Pilih tindakan yang ingin anda teruskan', withdraw: 'Keluarkan', topup: 'Tambah Nilai', }, autoSetting: { title: TEXT_AUTO_HOSTING, startAutoSpin: 'Mula Putaran Auto', rows: { stopIfBalanceLowerThan: 'Henti jika baki lebih rendah daripada', stopIfSingleWinExceeds: 'Henti jika kemenangan tunggal melebihi', stopOnAnyJackpot: 'Henti pada sebarang jackpot', }, }, userInfo: { title: 'Maklumat Pengguna', tabs: { profile: 'Profil', financeRecords: 'Rekod Tambah Nilai / Pengeluaran', walletRecords: TEXT_WALLET_RECORDS, message: TEXT_SITE_MESSAGES, }, profile: { name: 'Nama', tel: 'Telefon', registeredAt: 'Tarikh daftar', copyInviteLink: 'Salin pautan jemputan', logout: 'Log Keluar', loggingOut: 'Sedang log keluar...', signature: 'Tandatangan saya unik seperti personaliti saya. Bahagian ini akan memaparkan ringkasan profil sebenar kemudian.', }, message: { title: TEXT_SITE_MESSAGES, back: 'Kembali', loading: 'Memuatkan mesej...', loadFailed: 'Gagal memuatkan mesej. Sila cuba lagi kemudian.', empty: 'Belum ada mesej', read: 'Sudah dibaca', unread: 'Belum dibaca', eventBonus: '[Acara Bonus Tambah Nilai] Dari 1 Oktober hingga 7 Oktober 2026, tuntut ganjaran rebat anda...', check: TEXT_VIEW, deleteRecords: 'Padam rekod', }, financeRecords: { deposit: 'Rekod Tambah Nilai', withdraw: 'Rekod Pengeluaran', orderNo: 'No. Pesanan', amount: 'Jumlah', bonusAmount: 'Jumlah Bonus', status: 'Status', statuses: { pending_review: 'Menunggu Semakan', approved: 'Diluluskan', rejected: 'Ditolak', failed: 'Gagal', }, loading: 'Memuatkan rekod...', loadFailed: 'Gagal memuatkan rekod. Sila cuba lagi kemudian.', empty: 'Belum ada rekod', page: TEXT_PAGE_INDICATOR, previous: TEXT_PREV_PAGE, next: TEXT_NEXT_PAGE, }, walletRecords: { amount: 'Jumlah', balanceAfter: 'Selepas', balanceBefore: 'Sebelum', empty: 'Belum ada rekod dompet', loadFailed: 'Gagal memuatkan rekod dompet. Sila cuba lagi kemudian.', loading: 'Memuatkan rekod dompet...', next: TEXT_NEXT_PAGE, page: TEXT_PAGE_INDICATOR, previous: TEXT_PREV_PAGE, remark: 'Catatan', time: TEXT_TIME, type: TEXT_WALLET_RECORDS, }, }, withdrawTopup: { applyWithdraw: 'Mohon Pengeluaran', applyTopup: 'Mohon Tambah Nilai', }, }, autoSpin: { eyebrow: 'Putaran auto', title: 'Putaran auto sedang berjalan', description: 'Mod auto akan menutup papan sambil mengekalkan fokus sel sasaran dan kemajuan.', runningRounds: 'Putaran auto berjalan, {{count}} pusingan selesai', trailingLabel: 'Input manual dikunci', }, footer: { implementationTitle: 'Pelaksanaan semasa', implementationSubtitle: 'Iterasi ini mengutamakan shell dwi-peranti, model dikongsi, dan sambungan logik perniagaan.', implementationBody: 'Langkah seterusnya ialah API sebenar, WebSocket, UI store penuh, dan state machine kitaran pusingan.', limitsTitle: 'Had meja', limitsSubtitle: 'Diambil daripada data lobi semasa', minBet: 'Taruhan minimum', maxBet: 'Taruhan maksimum', }, }, commonUi: { actions: { submitting: TEXT_SUBMITTING, }, dialog: { close: 'Tutup notifikasi', confirm: 'OK', no: TEXT_NO, yes: TEXT_YES, }, modal: { close: 'Tutup modal', defaultAriaLabel: 'Modal', }, boot: { loading: 'Memuatkan sumber', syncing: 'Menyegerakkan dek bunga dan antara muka permainan', }, support: { title: 'Sokongan Langsung', connecting: 'Menyambung ke sokongan', }, toast: { lobbyInitFailed: 'Gagal memuatkan lobi permainan', loginRequired: 'Sila log masuk sebelum memasuki permainan', loginSuccess: 'Log masuk berjaya', logoutSuccess: 'Telah log keluar', logoutLocalOnly: 'Permintaan log keluar gagal. Sesi tempatan telah dikosongkan.', registerSuccess: 'Pendaftaran berjaya', inviteLinkCopied: 'Pautan jemputan telah disalin', inviteLinkCopyFailed: 'Gagal menyalin pautan jemputan. Sila salin secara manual.', insufficientBalance: 'Baki tidak mencukupi. Sila laraskan taruhan.', betLimitExceeded: TEXT_BET_LIMIT_EXCEEDED, betUnavailable: 'Taruhan tidak tersedia untuk pusingan ini', betPlaced: 'Taruhan berjaya dihantar', noRecentSuccessfulBet: 'Tiada rekod taruhan berjaya untuk pusingan sebelumnya', repeatSelectionsRestored: 'Pilihan dari pusingan berjaya terakhir telah dipulihkan', betRejected: 'Taruhan tidak diterima', betPlaceFailed: 'Gagal menghantar taruhan. Sila cuba lagi.', selectNumbersBeforeAutoHosting: 'Sila pilih nombor terlebih dahulu', autoHostingStarted: 'Putaran auto bermula', autoHostingStopped: 'Putaran auto dihentikan', autoHostingStoppedBalance: 'Syarat baki dicapai. Putaran auto telah dihentikan.', autoHostingStoppedBetLimit: 'Melebihi had taruhan tunggal. Putaran auto telah dihentikan.', autoHostingStoppedWin: 'Syarat kemenangan tunggal dicapai. Putaran auto telah dihentikan.', autoHostingStoppedJackpot: 'Jackpot dicapai. Putaran auto telah dihentikan.', autoHostingSubmitFailed: 'Taruhan auto-hosting gagal. Auto-hosting telah dihentikan.', requestFailed: 'Permintaan gagal. Sila cuba lagi kemudian.', configError: 'Ralat konfigurasi. Sila hubungi sokongan.', }, }, auth: { common: { arrowIconAlt: 'Anak panah', actions: { submitting: TEXT_SUBMITTING, }, passwordVisibility: { hide: 'Sembunyikan kata laluan', show: 'Tunjukkan kata laluan', }, }, login: { actions: { submit: TEXT_LOGIN, }, fields: { username: { label: TEXT_MOBILE_LABEL, placeholder: TEXT_MOBILE_PLACEHOLDER, }, password: { label: TEXT_PASSWORD_LABEL, placeholder: TEXT_PASSWORD_PLACEHOLDER, }, }, footer: { registerAccount: 'Daftar akaun', forgotPassword: 'Lupa kata laluan', }, errors: { submitFailed: 'Log masuk gagal. Sila cuba lagi kemudian.', invalidCredentials: 'Akaun atau kata laluan tidak betul.', }, }, register: { actions: { submit: TEXT_REGISTER, }, fields: { mobile: { label: TEXT_MOBILE_LABEL, placeholder: TEXT_MOBILE_PLACEHOLDER, }, captcha: { label: 'Kod:', placeholder: 'Masukkan kod pengesahan', }, password: { label: TEXT_PASSWORD_LABEL, placeholder: TEXT_PASSWORD_PLACEHOLDER, }, confirmPassword: { label: 'Sahkan Kata Laluan:', placeholder: 'Masukkan semula kata laluan', }, inviteCode: { label: 'Kod Jemputan:', placeholder: 'Masukkan kod jemputan', }, }, footer: { alreadyHaveAccount: 'Sudah ada akaun', needHelp: 'Perlukan bantuan', }, errors: { submitFailed: 'Pendaftaran gagal. Sila cuba lagi kemudian.', unauthorized: 'Pendaftaran tidak dibenarkan. Sila cuba lagi kemudian.', }, sms: { countdown: '{{seconds}}s', errors: { submitFailed: 'Gagal menghantar kod. Sila cuba lagi kemudian.', }, send: 'Dapatkan kod', sending: TEXT_SUBMITTING, success: 'Kod pengesahan telah dihantar.', }, }, validation: { captcha: { required: 'Sila masukkan kod pengesahan.', }, username: { required: 'Sila masukkan nombor telefon anda.', invalidPhone: 'Sila masukkan nombor telefon yang sah.', }, password: { min: 'Kata laluan mesti sekurang-kurangnya 6 aksara.', max: 'Kata laluan mesti maksimum 32 aksara.', }, inviteCode: { required: 'Sila masukkan kod jemputan.', max: 'Kod jemputan mesti maksimum 32 aksara.', }, confirmPassword: { mismatch: 'Kedua-dua kata laluan tidak sepadan.', }, }, errors: { requestFailed: 'Permintaan gagal. Sila cuba lagi kemudian.', authTokenConfigMissing: 'Konfigurasi pengesahan tiada. Sila hubungi sokongan.', timeout: 'Permintaan tamat masa. Sila cuba lagi kemudian.', serviceUnavailable: 'Perkhidmatan tidak tersedia buat sementara waktu. Sila cuba lagi kemudian.', }, }, gameDesktop: { header: { systemTime: 'Masa Sistem', rules: 'Peraturan', message: TEXT_SITE_MESSAGES, bgm: 'BGM', id: 'ID', fullscreen: 'Skrin', login: TEXT_LOGIN, register: TEXT_REGISTER, }, control: { trend: 'Trend', map: 'Peta', selected: 'Dipilih', totalBet: 'Jumlah Taruhan', confirm: TEXT_CONFIRM, selectNumbers: 'Pilih Nombor', insufficientBalance: 'Baki Tidak Mencukupi', betLimitExceeded: 'Melebihi Had', submitting: TEXT_SUBMITTING, actions: { clear: 'Kosongkan', repeat: 'Ulang', 'auto-spin': TEXT_AUTO_HOSTING, }, }, status: { odds: 'Peluang', streak: 'Streak', limit: 'Had', roundId: 'Pusingan', phase: { betting: { label: 'Buka', description: '(Menerima Taruhan)', }, locked: { label: TEXT_LOCKED, description: '(Taruhan Ditutup)', }, revealing: { label: 'Cabutan', description: '(Mendedahkan Hasil)', }, settled: { label: 'Cabutan', description: '(Pusingan Tamat)', }, waiting: { label: 'Menunggu', description: '(Menunggu Pusingan Seterusnya)', }, }, }, title: { announcement: 'Pengumuman', }, animal: { insufficientBalanceRecharge: 'Baki tidak mencukupi, sila tambah nilai', betLimitExceeded: TEXT_BET_LIMIT_EXCEEDED, loading: 'Memuatkan', selectionLimitReached: 'Melebihi pilihan aksara yang dibenarkan', tapToEnter: 'Ketik Untuk Masuk', getStart: 'Mula', noBet: 'Belum Bertaruh', noReward: 'Belum Menang Pusingan Ini', selectedResult: 'Pilihan Anda', winningResult: 'Bunga Menang', }, history: { title: 'Sejarah', pending: 'PENDING', win: 'WIN', lost: 'LOST', orderNo: 'No. Pesanan', roundId: 'ID Pusingan', numbers: 'Nombor Pertaruhan', createdAt: TEXT_TIME, settledAt: 'Masa Selesai', totalPoolAmount: 'Jumlah Pertaruhan', winningResult: 'Keputusan Menang', payout: 'Jumlah Menang', empty: 'Belum ada sejarah', end: 'Tiada lagi rekod', loading: TEXT_LOADING, settled: TEXT_SETTLED, }, periodHistory: { title: 'Sejarah Keputusan Cabutan', close: 'Tutup sejarah keputusan cabutan', empty: 'Belum ada keputusan cabutan', failed: 'Gagal memuatkan keputusan cabutan', loading: TEXT_LOADING, retry: 'Cuba lagi', }, topup: { title: 'Konfigurasi Tambah Nilai', platformCoinLabel: 'Syiling Platform', currencyLabel: TEXT_CURRENCY_TYPE, channelLabel: TEXT_PAYMENT_CHANNEL, rateHint: 'Kadar pertukaran hanya untuk rujukan. Jumlah akhir tertakluk kepada kadar semasa tambah nilai.', flow: { channelTitle: 'Pilih Saluran Pembayaran', currencyTitle: 'Mata Wang', methodTitle: 'Kaedah Tambah Nilai', bankTitle: 'Bank', bankPlaceholder: 'Pilih bank', noBank: 'Tiada bank tersedia', paymentMethods: { QR: 'Kod QR', ONLINE_DEBIT: 'Perbankan Dalam Talian', E_WALLET: 'Dompet Elektronik', }, }, tier: { bonus: 'Bonus', coins: 'Syiling Diterima', createSuccess: 'Pesanan tambah nilai berjaya dicipta', empty: 'Tiada tier tambah nilai', failed: 'Gagal memuatkan tier tambah nilai', loading: 'Memuatkan tier tambah nilai...', missingPayUrl: 'Pautan pembayaran tiada. Sila cuba lagi kemudian.', openPayUrlFailed: 'Gagal membuka halaman pembayaran. Semak tetapan popup pelayar anda.', source: 'Endpoint tier tambah nilai', title: 'Tier Tambah Nilai', }, preview: { title: 'Pratonton Tambah Nilai', depositTitle: 'Pilih mata wang tambah nilai dan saluran pembayaran', depositRate: 'Kadar Tambah Nilai ({{currency}})', depositRateValue: '1 {{currency}} = {{coins}} {{platformCoinLabel}}', amount: 'Contoh Kredit', }, }, mobile: { placeholder: 'Halaman mudah alih sedang dibina', }, withdraw: { availableBalance: 'Baki tersedia: {{amount}}', currencySelection: 'Pilihan jenis mata wang', selectCurrency: 'Pilih jenis mata wang', referenceRateNotice: 'Kadar pertukaran hanya untuk rujukan. Jumlah akhir tertakluk kepada kadar semasa pengeluaran.', eWallet: 'Dompet elektronik', bank: 'Bank', minimumAmount: 'Minimum {{currency}} {{amount}}', processingTime: 'Masa pemprosesan', arrivalTimeValue: 'Masuk dalam 30 saat', notice: 'Perhatian', feeNotice: 'Transaksi antara RM10 dan RM99.99 akan dikenakan yuran pengeluaran minimum RM 1.', cancel: 'Batal', confirm: TEXT_CONFIRM, submitSuccess: 'Permohonan pengeluaran berjaya dihantar', withdrawal: 'Pengeluaran', fields: { diamondAmount: 'Jumlah Berlian Pengeluaran', currencyType: TEXT_CURRENCY_TYPE, paymentChannel: TEXT_PAYMENT_CHANNEL, paymentType: 'Jenis Pembayaran', bankCode: 'Kod Bank', cardHolderName: 'Nama Pemegang Kad', bankAccountNumber: 'Nombor Akaun Bank', receiverEmail: 'E-mel Penerima', receiverPhone: 'Telefon Penerima', }, placeholders: { bankCode: 'Pilih kod bank', paymentType: 'Pilih jenis pembayaran', cardHolderName: 'Masukkan nama pemegang kad', bankAccountNumber: 'Masukkan nombor akaun bank', receiverEmail: 'Masukkan e-mel penerima', receiverPhone: 'Masukkan nombor telefon penerima', }, errors: { amountRequired: 'Sila masukkan jumlah berlian pengeluaran.', amountBelowMinimum: 'Jumlah pengeluaran tidak boleh kurang daripada minimum ({{currency}} {{amount}} / {{diamonds}} berlian).', amountBelowPaymentMinimum: 'Jumlah pengeluaran tidak boleh kurang daripada minimum jenis pembayaran ini ({{amount}}).', amountAbovePaymentMaximum: 'Jumlah pengeluaran tidak boleh melebihi maksimum jenis pembayaran ini ({{amount}}).', bankCodeRequired: 'Sila pilih kod bank.', bankCodeUnavailable: 'Tiada kod bank tersedia buat masa ini.', cardHolderNameRequired: 'Sila masukkan nama pemegang kad.', bankAccountRequired: 'Sila masukkan nombor akaun bank.', paymentChannelRequired: 'Sila pilih saluran pembayaran.', paymentChannelUnavailable: 'Tiada saluran pembayaran tersedia buat masa ini.', paymentTypeRequired: 'Sila pilih jenis pembayaran.', receiverEmailInvalid: 'Sila masukkan alamat e-mel yang sah.', receiverPhoneInvalid: 'Sila masukkan nombor telefon yang sah.', amountExceedsBalance: 'Jumlah pengeluaran tidak boleh melebihi baki semasa.', }, success: { orderNo: 'No. pesanan: {{orderNo}}', actualArrivalCoin: 'Berlian masuk sebenar: {{amount}}', feeCoin: 'Berlian yuran: {{amount}}', reviewRequired: 'Semakan risiko diperlukan: {{value}}', }, preview: { title: 'Pratonton Pertukaran', diamondAmount: 'Jumlah Berlian', exchangeRate: 'Kadar Pertukaran ({{currency}})', exchangeRateValue: '{{coins}} {{platformCoinLabel}} = 1 {{currency}}', convertible: 'Boleh Tukar {{currency}}', handlingFee: 'Yuran Pengendalian', quickDiamondAmount: '{{amount}} berlian', quickHandlingFee: 'Yuran ditolak: {{fee}}', fixedExchangeDiamondAmount: 'Jumlah Berlian Tukaran Tetap', }, }, }, } as const