- 重构桌面版状态栏布局,优化响应式设计和组件结构 - 添加hud变体类型的彩金池ticker组件,支持新的视觉样式 - 为移动版状态栏调整网格布局和间距设置 - 在多个语言包中添加彩金池促销文案 - 设置默认彩金池金额并改进计时器逻辑 - 优化移动版入口文件中的组件排列方式
867 lines
33 KiB
TypeScript
867 lines
33 KiB
TypeScript
/* 以下为多语言中重复出现的文案,统一声明一次后在下方各 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
|