@ezychat/web 0.1.46 → 0.1.48

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/dist-lib/chunks/admin-CpYxtKzJ.js +694 -0
  2. package/dist-lib/chunks/admin-Da2uR7mY.js +695 -0
  3. package/dist-lib/chunks/{app-C2A7ZZsu.js → app-3jWCMPbu.js} +3 -1
  4. package/dist-lib/chunks/{app-RX8Fy2Oz.js → app-Diwr0AD0.js} +3 -1
  5. package/dist-lib/chunks/{inbox-DccyncVL.js → inbox-DtLIGOCo.js} +29 -14
  6. package/dist-lib/chunks/{inbox-Bdg6faLa.js → inbox-u9BCZ1IH.js} +29 -14
  7. package/dist-lib/ezychat-web.css +1 -1
  8. package/dist-lib/index.js +10987 -4997
  9. package/dist-lib/types/admin/AdminLayout.d.ts +14 -1
  10. package/dist-lib/types/admin/AiContextPanel.d.ts +10 -5
  11. package/dist-lib/types/admin/AiEditDialog.d.ts +6 -2
  12. package/dist-lib/types/admin/AiMemberPage.d.ts +6 -0
  13. package/dist-lib/types/admin/AiTryIt.d.ts +7 -2
  14. package/dist-lib/types/admin/InboxAccess.d.ts +9 -0
  15. package/dist-lib/types/admin/InboxesPage.d.ts +3 -0
  16. package/dist-lib/types/admin/PresetBadge.d.ts +8 -0
  17. package/dist-lib/types/admin/agent-path.d.ts +6 -0
  18. package/dist-lib/types/admin/ai-status.d.ts +15 -1
  19. package/dist-lib/types/admin/inbox-status.d.ts +16 -0
  20. package/dist-lib/types/api/ai.d.ts +194 -6
  21. package/dist-lib/types/api/inbox-mutations.d.ts +70 -0
  22. package/dist-lib/types/api/queries.d.ts +78 -3
  23. package/dist-lib/types/extensions/agent-section.d.ts +18 -0
  24. package/dist-lib/types/extensions/index.d.ts +1 -0
  25. package/dist-lib/types/extensions/types.d.ts +1 -1
  26. package/dist-lib/types/i18n/resources.d.ts +222 -3
  27. package/dist-lib/types/inbox/ChatFilters.d.ts +4 -1
  28. package/dist-lib/types/inbox/ChatListItem.d.ts +4 -2
  29. package/dist-lib/types/inbox/ConversationHeader.d.ts +4 -2
  30. package/dist-lib/types/inbox/InboxChip.d.ts +6 -0
  31. package/dist-lib/types/inbox/WaBanner.d.ts +6 -1
  32. package/dist-lib/types/inbox/useDirectory.d.ts +26 -4
  33. package/dist-lib/types/inbox/useVisibleInboxes.d.ts +12 -0
  34. package/dist-lib/types/index.d.ts +1 -1
  35. package/dist-lib/types/lib/whatsapp-format.d.ts +5 -0
  36. package/dist-lib/types/setup/AiAssistantStep.d.ts +3 -2
  37. package/dist-lib/types/wa/PhoneLink.d.ts +7 -2
  38. package/package.json +2 -2
  39. package/dist-lib/chunks/admin-CO4a2wgk.js +0 -620
  40. package/dist-lib/chunks/admin-DviFuAwJ.js +0 -621
@@ -0,0 +1,695 @@
1
+ //#region src/i18n/locales/ms/admin.json
2
+ var e = "Pentadbir", t = "Pentadbir · {{section}}", n = {
3
+ label: "Bahagian pentadbir",
4
+ members: "Ahli",
5
+ quickReplies: "Balasan pantas",
6
+ whatsapp: "WhatsApp",
7
+ tunnel: "Akses telefon",
8
+ settings: "Tetapan",
9
+ audit: "Audit"
10
+ }, r = {
11
+ inbox: "Peti masuk",
12
+ menu: "Menu pentadbir",
13
+ footer: "Alatan pentadbir dan sokongan",
14
+ backToInbox: "Kembali ke peti masuk",
15
+ logOut: "Log keluar",
16
+ loggingOut: "Sedang log keluar…",
17
+ logOutFailed: "Tidak dapat log keluar: {{error}}",
18
+ loading: "Memuatkan"
19
+ }, i = {
20
+ copied: "Disalin ke papan keratan",
21
+ copyFailed: "Gagal menyalin — pilih teks dan salin secara manual.",
22
+ loadFailed: "Tidak dapat dimuatkan",
23
+ loading: "Memuatkan",
24
+ unsaved: "Belum disimpan"
25
+ }, a = {
26
+ title: "Ahli",
27
+ description: "Orang yang boleh log masuk ke peti masuk pasukan.",
28
+ add: "Tambah ahli",
29
+ searchLabel: "Cari ahli",
30
+ searchPlaceholder: "Cari nama, nama pengguna atau peranan",
31
+ count_other: "{{shown}} daripada {{count}} ahli",
32
+ added: "Ditambah <time>{{date}}</time>",
33
+ you: "(anda)",
34
+ columns: {
35
+ member: "Ahli",
36
+ role: "Peranan",
37
+ status: "Status",
38
+ created: "Dicipta",
39
+ actions: "Tindakan"
40
+ },
41
+ empty: {
42
+ noMatchTitle: "Tiada ahli yang sepadan",
43
+ noMatchBody: "Cuba nama, nama pengguna atau peranan lain.",
44
+ clearSearch: "Kosongkan carian",
45
+ noneTitle: "Belum ada ahli",
46
+ noneBody: "Tambah ahli supaya mereka boleh log masuk."
47
+ },
48
+ status: {
49
+ disabled: "Dinyahdayakan",
50
+ active: "Aktif",
51
+ mustChangePassword: "Perlu tukar kata laluan"
52
+ },
53
+ actions: {
54
+ editMember: "Edit {{name}}",
55
+ moreFor: "Tindakan lain untuk {{name}}",
56
+ resetPassword: "Set semula kata laluan",
57
+ signOutEverywhere: "Log keluar di semua peranti",
58
+ enable: "Dayakan",
59
+ disable: "Nyahdayakan"
60
+ },
61
+ form: {
62
+ role: "Peranan",
63
+ username: "Nama pengguna",
64
+ displayName: "Nama paparan",
65
+ tempPass: "Kata laluan sementara",
66
+ tempPasswordHint: "Mereka akan diminta menukarnya semasa log masuk kali pertama.",
67
+ tempPasswordManualHint: "Penjanaan automatik tidak tersedia dalam pelayar ini. Masukkan kata laluan yang kukuh; mereka akan menukarnya semasa log masuk kali pertama.",
68
+ generate: "Jana",
69
+ usernameTooShort: "Nama pengguna mesti sekurang-kurangnya 3 aksara.",
70
+ passTooShort: "Kata laluan mesti sekurang-kurangnya 8 aksara.",
71
+ ownRoleHint: "Anda tidak boleh menukar peranan anda sendiri."
72
+ },
73
+ create: {
74
+ title: "Tambah ahli",
75
+ submit: "Cipta ahli",
76
+ done: "{{name}} telah ditambah. Kongsi kata laluan sementara dengan mereka."
77
+ },
78
+ edit: {
79
+ title: "Edit {{name}}",
80
+ done: "Ahli dikemas kini."
81
+ },
82
+ disable: {
83
+ enableTitle: "Dayakan {{name}}?",
84
+ disableTitle: "Nyahdayakan {{name}}?",
85
+ enableBody: "Mereka akan dapat log masuk semula.",
86
+ disableBody: "Ahli yang dinyahdayakan dilog keluar serta-merta dan tidak boleh log masuk.",
87
+ enabled: "{{name}} boleh log masuk semula.",
88
+ disabled: "{{name}} telah dinyahdayakan."
89
+ },
90
+ reset: {
91
+ title: "Set semula kata laluan untuk {{name}}?",
92
+ body: "Kata laluan sementara baharu akan dijana dan semua sesi mereka akan dilog keluar.",
93
+ newTitle: "Kata laluan sementara baharu",
94
+ newBody: "Kongsi kata laluan ini dengan {{name}}. Ia hanya dipaparkan sekali; mereka mesti menukarnya semasa log masuk seterusnya. Sesi mereka yang lain telah dilog keluar."
95
+ },
96
+ revoke: {
97
+ title: "Log keluar {{name}} di semua peranti?",
98
+ confirm: "Log keluar",
99
+ body: "Semua peranti mereka akan dilog keluar serta-merta.",
100
+ done: "{{name}} telah dilog keluar dari semua peranti."
101
+ }
102
+ }, o = {
103
+ title: "Balasan pantas",
104
+ description: "Ejen menaip <kbd>/</kbd> diikuti pintasan dalam ruang tulis untuk memasukkan balasan.",
105
+ new: "Balasan pantas baharu",
106
+ searchLabel: "Cari balasan pantas",
107
+ searchPlaceholder: "Cari pintasan atau teks balasan",
108
+ count_other: "{{shown}} daripada {{count}} balasan pantas",
109
+ empty: {
110
+ noMatchTitle: "Tiada balasan pantas yang sepadan",
111
+ noMatchBody: "Cuba pintasan atau frasa lain.",
112
+ noneTitle: "Belum ada balasan pantas",
113
+ noneBody: "Cipta satu untuk mempercepat jawapan biasa.",
114
+ clearSearch: "Kosongkan carian"
115
+ },
116
+ editLabel: "Edit /{{shortcut}}",
117
+ delete: {
118
+ title: "Padam /{{shortcut}}?",
119
+ body: "Balasan pantas ini tidak lagi tersedia kepada ejen.",
120
+ done: "/{{shortcut}} dipadam."
121
+ },
122
+ form: {
123
+ editTitle: "Edit /{{shortcut}}",
124
+ shortcut: "Pintasan",
125
+ shortcutHint: "Ditaip selepas / dalam ruang tulis, cth. /{{example}}",
126
+ shortcutExample: "harga",
127
+ shortcutInvalid: "Gunakan 1-32 huruf kecil, digit, \"-\" atau \"_\".",
128
+ body: "Teks balasan",
129
+ bodyRequired: "Teks balasan diperlukan.",
130
+ saved: "/{{shortcut}} disimpan."
131
+ },
132
+ moreLabel: "Tindakan lain untuk /{{shortcut}}"
133
+ }, s = {
134
+ title: "Log audit",
135
+ description: "Log masuk, perubahan ahli, tindakan WhatsApp dan terowong.",
136
+ download: "Muat turun log",
137
+ empty: "Belum ada entri audit",
138
+ loadOlder: "Muatkan yang lama",
139
+ system: "Sistem",
140
+ aiAssistantToken: "Token pembantu AI",
141
+ tokenOwner: "Pemilik: {{name}}",
142
+ userNumber: "Pengguna #{{id}}",
143
+ columns: {
144
+ time: "Masa",
145
+ who: "Siapa",
146
+ action: "Tindakan",
147
+ details: "Butiran",
148
+ ip: "IP"
149
+ },
150
+ actions: {
151
+ authLogin: "Log masuk",
152
+ authLoginFailed: "Log masuk gagal",
153
+ authLogout: "Log keluar",
154
+ authChangePassword: "Kata laluan ditukar",
155
+ authResetAdminCli: "Kata laluan pentadbir diset semula",
156
+ setupAdmin: "Akaun pentadbir dicipta",
157
+ userCreate: "Ahli ditambah",
158
+ userUpdate: "Ahli dikemas kini",
159
+ userResetPassword: "Kata laluan ahli diset semula",
160
+ userRevokeSessions: "Ahli dilog keluar dari semua peranti",
161
+ quickReplyCreate: "Balasan pantas dicipta",
162
+ quickReplyUpdate: "Balasan pantas dikemas kini",
163
+ quickReplyDelete: "Balasan pantas dipadam",
164
+ waLogout: "WhatsApp dinyahpaut",
165
+ waRelink: "Pemautan WhatsApp dimulakan semula",
166
+ waTakeover: "Sesi WhatsApp diambil alih",
167
+ waPairingCode: "Kod gandingan WhatsApp diminta",
168
+ tunnelStart: "Terowong dimulakan",
169
+ tunnelStop: "Terowong dihentikan",
170
+ cloudflareLogin: "Log masuk Cloudflare dimulakan",
171
+ cloudflareCreate: "Alamat peti masuk Cloudflare dikonfigurasi",
172
+ settingsUpdate: "Tetapan dikemas kini",
173
+ chatsResolveAll: "Semua sembang terbuka diselesaikan",
174
+ chatMerge: "Sembang digabungkan",
175
+ chatStartFromGroup: "Sembang dimulakan daripada kumpulan",
176
+ logsDownload: "Log dimuat turun",
177
+ aiConnectionUpdate: "Sambungan AI diubah",
178
+ aiMemberUpdate: "Ahli AI diubah",
179
+ aiDocumentAdd: "Konteks perniagaan ditambah",
180
+ aiDocumentUpdate: "Konteks perniagaan disunting",
181
+ aiDocumentRemove: "Konteks perniagaan dibuang",
182
+ aiHandoff: "AI menyerahkan sembang kepada pasukan",
183
+ aiResolve: "AI menyelesaikan sembang",
184
+ aiVoiceUpdate: "Tetapan mesej suara diubah",
185
+ aiVoiceModelDownload: "Muat turun model suara dimulakan",
186
+ aiVoiceModelCancel: "Muat turun model suara dibatalkan",
187
+ aiVoiceModelRemove: "Model suara dibuang",
188
+ customerProfileUpdate: "Butiran pelanggan dikemas kini",
189
+ apiTokenCreate: "Token akses dicipta",
190
+ apiTokenRevoke: "Token akses dibatalkan",
191
+ apiTokenAuthFailed: "Token pembantu AI ditolak",
192
+ mcpEnable: "Akses pembantu AI dihidupkan",
193
+ mcpDisable: "Akses pembantu AI dimatikan",
194
+ inboxCreate: "Peti masuk ditambah",
195
+ inboxUpdate: "Peti masuk dikemas kini",
196
+ inboxRemove: "Peti masuk dibuang",
197
+ inboxAccessUpdate: "Akses peti masuk ditukar",
198
+ aiAgentCreate: "Ejen AI dicipta",
199
+ aiAgentDelete: "Ejen AI dipadam",
200
+ aiAgentInboxUpdate: "Peti masuk ejen AI ditukar"
201
+ },
202
+ fields: {
203
+ chat: "Sembang",
204
+ group: "Kumpulan",
205
+ from: "Daripada",
206
+ to: "Kepada",
207
+ member: "Ahli",
208
+ assignedTo: "Ditugaskan kepada",
209
+ reason: "Sebab",
210
+ enabled: "Didayakan",
211
+ disabled: "Dinyahdayakan",
212
+ role: "Peranan",
213
+ mode: "Mod",
214
+ model: "Model",
215
+ kind: "Jenis",
216
+ size: "Saiz",
217
+ document: "Item",
218
+ transcription: "Transkripsi",
219
+ resolvedCount: "Sembang diselesaikan",
220
+ username: "Nama pengguna",
221
+ displayName: "Nama paparan",
222
+ id: "ID",
223
+ shortcut: "Pintasan",
224
+ hostname: "Nama hos",
225
+ subdomain: "Subdomain",
226
+ tunnelName: "Terowong",
227
+ domain: "Domain",
228
+ restartRequired: "Perlu mula semula",
229
+ moved: "Dipindahkan",
230
+ name: "Nama",
231
+ tags: "Tag",
232
+ instructions: "Arahan",
233
+ handoffRules: "Peraturan serahan",
234
+ text: "Teks",
235
+ token: "Token",
236
+ port: "Port",
237
+ lanEnabled: "Akses LAN",
238
+ historyDays: "Hari sejarah",
239
+ expires: "Tamat tempoh",
240
+ inbox: "Peti masuk",
241
+ inboxes: "Peti masuk",
242
+ members: "Ahli",
243
+ agent: "Ejen AI",
244
+ preset: "Titik permulaan",
245
+ internal: "Dalaman"
246
+ },
247
+ reasons: {
248
+ rateLimited: "Terlalu banyak cubaan",
249
+ invalid: "Nama pengguna atau kata laluan salah",
250
+ malformed: "Tiada token yang sah",
251
+ unknown: "Token tidak dikenali",
252
+ revoked: "Token dibatalkan",
253
+ expired: "Token tamat tempoh",
254
+ userInactive: "Pemilik dinyahaktifkan",
255
+ notAdmin: "Pemilik bukan pentadbir",
256
+ mustChangePassword: "Pemilik perlu menukar kata laluan"
257
+ },
258
+ yes: "Ya",
259
+ no: "Tidak",
260
+ changed: "Mengubah {{fields}}",
261
+ filterLabel: "Tunjuk",
262
+ filterAll: "Semua aktiviti",
263
+ filterChanges: "Sembunyikan log masuk",
264
+ hiddenSignIns_one: "{{count}} log masuk disembunyikan",
265
+ hiddenSignIns_other: "{{count}} log masuk disembunyikan",
266
+ details: { customerChanged: "Diubah: {{fields}}" },
267
+ customerFields: {
268
+ name: "nama",
269
+ company: "syarikat",
270
+ email: "e-mel",
271
+ otherPhone: "telefon lain",
272
+ address: "alamat",
273
+ tags: "tag"
274
+ },
275
+ listSeparator: ", "
276
+ }, c = {
277
+ access: {
278
+ label: "Benarkan pembantu AI membaca peti masuk ini",
279
+ description: "Sambungkan mana-mana pembantu AI yang serasi dengan MCP. Ia boleh membaca sembang, nota dan statistik, serta membaca, menguji dan menukar arahan, peraturan serahan dan konteks perniagaan Ejen Jualan AI. Ia menghantar balasan kepada pelanggan hanya dengan token yang membenarkannya. Setiap perubahan disimpan dalam log audit.",
280
+ worksFromLabel: "Berfungsi dari",
281
+ worksFromLocal: "komputer yang menjalankan {{product}}.",
282
+ worksFromTunnel: "komputer yang menjalankan {{product}}, dan dari mana-mana sahaja melalui terowong anda:",
283
+ privacyLabel: "Privasi",
284
+ privacy: "Sembang yang dibaca oleh pembantu dihantar kepada syarikat yang mengendalikannya (contohnya Anthropic, OpenAI atau Google), di bawah akaun yang anda sambungkan.",
285
+ turnedOn: "Akses pembantu AI dihidupkan",
286
+ turnedOff: "Akses pembantu AI dimatikan"
287
+ },
288
+ noTunnel: {
289
+ title: "Tiada terowong yang berjalan",
290
+ body: "Pembantu pada komputer yang menjalankan {{product}} boleh menyambung sekarang. Untuk menyambung dari tempat lain, hidupkan Akses telefon dahulu.",
291
+ link: "Buka Akses telefon"
292
+ },
293
+ tokens: {
294
+ title: "Token akses",
295
+ description: "Tampal token ke dalam pembantu AI anda untuk menyambung. Sesiapa yang mempunyai token boleh membaca peti masuk (dan menghantar balasan, jika token membenarkannya), jadi rahsiakannya.",
296
+ create: "Cipta token",
297
+ empty: "Belum ada token. Cipta satu untuk setiap pembantu dan komputer yang anda gunakan.",
298
+ created: "Dicipta {{date}}",
299
+ lastUsed: "Digunakan {{when}}",
300
+ neverUsed: "Belum digunakan",
301
+ expires: "Tamat {{date}}",
302
+ neverExpires: "Tiada tamat tempoh",
303
+ expired: "Tamat tempoh {{date}}",
304
+ revoke: "Batalkan",
305
+ revokeLabel: "Batalkan token {{name}}",
306
+ revokeTitle: "Batalkan “{{name}}”?",
307
+ revokeBody: "Mana-mana pembantu yang menggunakan token ini akan berhenti berfungsi serta-merta. Tindakan ini tidak boleh dibuat asal.",
308
+ revokeConfirm: "Batalkan token",
309
+ revoked: "Token dibatalkan",
310
+ canSendBadge: "Boleh menghantar",
311
+ canNewBadge: "Nombor baharu"
312
+ },
313
+ create: {
314
+ title: "Cipta token akses",
315
+ description: "Satu token untuk setiap pembantu dan komputer. Anda boleh membatalkannya pada bila-bila masa.",
316
+ name: "Nama",
317
+ nameHint: "Supaya anda mengenalinya kemudian, cth. komputer yang mana.",
318
+ nameRequired: "Masukkan nama.",
319
+ nameTooLong: "Gunakan 64 aksara atau kurang.",
320
+ expiry: "Tamat selepas",
321
+ expiry30: "30 hari",
322
+ expiry90: "90 hari",
323
+ expiry365: "1 tahun",
324
+ expiryNever: "Tidak pernah",
325
+ submit: "Cipta token",
326
+ canSend: "Boleh menghantar mesej WhatsApp",
327
+ canSendHint: "Pembantu AI anda boleh membalas dalam sembang sedia ada, sebagai anda.",
328
+ canSendWarning: "Balasan terus sampai kepada pelanggan anda. Kebanyakan pembantu AI bertanya kepada anda sebelum setiap mesej; semak setiap satu sebelum anda meluluskannya.",
329
+ canNew: "Juga boleh menghantar mesej kepada nombor baharu",
330
+ canNewHint: "Pembantu boleh memulakan sembang dengan nombor yang tiada dalam peti masuk. WhatsApp menyemak nombor itu dahulu. Sehingga 20 nombor baharu sehari.",
331
+ canNewWarningTitle: "Risiko disekat oleh WhatsApp",
332
+ canNewWarning: "WhatsApp boleh menyekat nombor anda jika ia menghantar mesej kepada orang yang tidak memintanya. Hidupkan ini hanya jika pasukan anda menghubungi orang yang bersetuju untuk dihubungi. Pembantu juga menerima amaran ini."
333
+ },
334
+ created: {
335
+ title: "Salin token anda sekarang",
336
+ description: "Ini satu-satunya kali token ini ditunjukkan. Jika hilang, batalkannya dan cipta yang baharu.",
337
+ secretLabel: "Token anda",
338
+ copyToken: "Salin token",
339
+ connect: "Sambungkan pembantu anda",
340
+ clientClaude: "Claude Code",
341
+ clientGemini: "Gemini CLI",
342
+ clientOther: "Lain-lain",
343
+ claudeHint: "Jalankan ini dalam terminal:",
344
+ geminiHint: "Tambah entri mcpServers ke ~/.gemini/settings.json (cipta fail itu jika belum ada):",
345
+ copyCommand: "Salin arahan",
346
+ copySettings: "Salin tetapan",
347
+ serverUrl: "URL pelayan",
348
+ header: "Pengepala Authorization",
349
+ copyUrl: "Salin URL",
350
+ copyHeader: "Salin pengepala",
351
+ otherHint: "Gunakan ini dalam mana-mana aplikasi MCP yang menerima URL pelayan dan pengepala (contohnya Codex CLI, Cursor atau VS Code).",
352
+ oauthHint: "Aplikasi yang hanya log masuk dengan OAuth, seperti ChatGPT dan penyambung claude.ai, belum disokong.",
353
+ localOnly: "Alamat ini hanya berfungsi pada komputer yang menjalankan {{product}}. Mulakan terowong untuk menyambung dari tempat lain.",
354
+ askHint: "Kemudian tanya soalan seperti “Sembang mana yang sedang menunggu balasan?”"
355
+ },
356
+ permissions: {
357
+ edit: "Kebenaran",
358
+ editLabel: "Tukar perkara yang boleh dilakukan oleh token {{name}}",
359
+ title: "Kebenaran “{{name}}”",
360
+ description: "Pilih perkara yang boleh dilakukan oleh pembantu AI dengan token ini. Anda kekalkan token yang sama: tidak perlu menyambung semula.",
361
+ takesEffect: "Perubahan berkuat kuasa pada permintaan seterusnya oleh pembantu. Membaca peti masuk dan alat persediaan AI kekal hidup.",
362
+ save: "Simpan",
363
+ saved: "Kebenaran disimpan"
364
+ }
365
+ }, l = {
366
+ title: "Tetapan",
367
+ saved: "Tetapan disimpan.",
368
+ save: "Simpan tetapan",
369
+ portInvalid: "Port mesti antara 1024 dan 65535.",
370
+ historyInvalid: "Sejarah mesti antara 0 dan 365 hari.",
371
+ restartTitle: "Perlu dimulakan semula",
372
+ restartBody: "Perubahan rangkaian berkuat kuasa selepas aplikasi (atau perkhidmatan) dimulakan semula.",
373
+ network: {
374
+ title: "Rangkaian",
375
+ port: "Port",
376
+ portHint: "Tukar hanya jika aplikasi lain sudah menggunakan port ini. Lalai 7420.",
377
+ lan: "Benarkan akses dari rangkaian setempat (LAN)",
378
+ lanHint: "Peranti lain pada Wi-Fi yang sama boleh membuka peti masuk.",
379
+ lanWarningTitle: "Trafik LAN ialah HTTP biasa",
380
+ lanWarningBody: "Kata laluan dan mesej dihantar tanpa penyulitan dalam rangkaian setempat anda. Dayakan ini hanya pada rangkaian yang anda percayai; gunakan terowong untuk akses jauh yang disulitkan."
381
+ },
382
+ history: {
383
+ title: "Sejarah",
384
+ days: "Bilangan hari sejarah untuk diimport semasa memaut",
385
+ daysHint: "0–365 hari. Digunakan apabila anda memaut WhatsApp seterusnya.",
386
+ unit: "hari"
387
+ },
388
+ device: {
389
+ title: "Peranti ini",
390
+ description: "Disimpan dalam pelayar ini dan berkuat kuasa serta-merta.",
391
+ themeHint: "Sistem mengikut tetapan cerah atau gelap peranti anda.",
392
+ notifications: "Pemberitahuan",
393
+ notificationsHint: "Terima pemberitahuan untuk mesej baharu apabila peti masuk tidak dibuka.",
394
+ languageHint: "Menu, butang dan mesej dalam aplikasi ini.",
395
+ languageShort: {
396
+ en: "English",
397
+ ms: "BM",
398
+ "zh-CN": "中文"
399
+ }
400
+ },
401
+ tabs: {
402
+ general: "Umum",
403
+ ai: "AI",
404
+ integrations: "Integrasi",
405
+ device: "Keutamaan",
406
+ maintenance: "Penyelenggaraan"
407
+ },
408
+ description: "Tetapan seluruh pasukan untuk peti masuk ini, serta keutamaan anda sendiri.",
409
+ account: {
410
+ title: "Akaun anda",
411
+ description: "Disimpan pada akaun anda, jadi ia mengikut anda di setiap peranti."
412
+ }
413
+ }, u = {
414
+ title: "Hujung hari",
415
+ description: "Tamatkan hari dengan menyelesaikan setiap sembang terbuka bagi seluruh pasukan. Mesej disimpan dan mesej masuk baharu akan membuka semula sembang secara automatik.",
416
+ loading: "Memuatkan sembang terbuka…",
417
+ none: "Tiada sembang terbuka untuk diselesaikan.",
418
+ openCount_other: "{{count}} sembang terbuka",
419
+ button: "Selesaikan semua sembang terbuka",
420
+ confirmTitle: "Selesaikan semua sembang terbuka?",
421
+ confirm: "Selesaikan semua",
422
+ done_other: "{{count}} sembang diselesaikan.",
423
+ confirmBody: "Ini akan menyelesaikan semua sembang yang sedang terbuka bagi seluruh pasukan. Penerima tugasan akan dikosongkan. Mesej dan kiraan belum dibaca dikekalkan. Anda boleh membuka semula sembang secara individu kemudian.",
424
+ confirmBodyWithCount: "Ini akan menyelesaikan semua sembang yang sedang terbuka bagi seluruh pasukan ({{openCount}} sekarang). Penerima tugasan akan dikosongkan. Mesej dan kiraan belum dibaca dikekalkan. Anda boleh membuka semula sembang secara individu kemudian."
425
+ }, d = {
426
+ description: "Nombor WhatsApp yang dipautkan kepada peti masuk pasukan ini.",
427
+ state: {
428
+ open: "Bersambung",
429
+ connecting: "Menyambung",
430
+ qr: "Menunggu imbasan QR",
431
+ disconnected: "Terputus",
432
+ loggedOut: "Telah log keluar",
433
+ replaced: "Dibuka di tempat lain",
434
+ blocked: "Disekat"
435
+ },
436
+ connection: "Sambungan",
437
+ status: "Status",
438
+ linkedNumber: "Nombor dipautkan",
439
+ name: "Nama",
440
+ replacedTitle: "Sesi dibuka di tempat lain",
441
+ replacedBody: "Nombor ini telah disambungkan dari tempat lain. Gunakan “Ambil alih” untuk menyambung semula di sini.",
442
+ unlinkedBody: "Pautkan nombor sekali lagi dengan “Paut semula”.",
443
+ scanTitle: "Imbas untuk memaut",
444
+ scanHint: "Pada telefon: WhatsApp → Tetapan → Peranti dipaut → Paut peranti.",
445
+ qrLabel: "Kod QR pautan WhatsApp",
446
+ waitingQrTitle: "Menunggu kod QR",
447
+ waitingQrBody: "Kod akan muncul di sini dalam beberapa saat.",
448
+ phoneTitle: "Atau paut dengan nombor telefon",
449
+ phoneHint: "Dapatkan kod 8 aksara dan bukannya mengimbas QR.",
450
+ linkTitle: "Paut WhatsApp",
451
+ linkBody: "Paut semula untuk memaparkan kod QR baharu, kemudian imbas dari telefon.",
452
+ actionsTitle: "Tindakan",
453
+ actions: {
454
+ logout: {
455
+ label: "Log keluar",
456
+ title: "Log keluar daripada WhatsApp?",
457
+ body: "Peranti dipaut dialih keluar daripada telefon. Peti masuk pasukan berhenti menerima dan menghantar mesej sehingga anda memaut semula. Sejarah mesej dikekalkan.",
458
+ done: "Telah log keluar daripada WhatsApp.",
459
+ hint: "Alih keluar peti masuk ini daripada peranti dipaut pada telefon. Sejarah mesej dikekalkan."
460
+ },
461
+ relink: {
462
+ label: "Paut semula",
463
+ title: "Paut semula WhatsApp?",
464
+ body: "Sesi semasa dibuang dan kod QR baharu dipaparkan. Imbas dari WhatsApp > Peranti dipaut pada telefon.",
465
+ done: "Sesi diset semula — imbas kod QR baharu.",
466
+ hint: "Buang sesi semasa dan mulakan gandingan baharu dengan kod QR baharu."
467
+ },
468
+ takeover: {
469
+ label: "Ambil alih",
470
+ title: "Ambil alih sesi?",
471
+ body: "Contoh lain (cth. WhatsApp Web pada komputer lain) telah menggantikan sambungan ini. Mengambil alih akan menyambung semula di sini dan memutuskan yang satu lagi.",
472
+ done: "Menyambung semula di sini.",
473
+ hint: "Sambung semula di sini dan putuskan sesi yang dibuka di tempat lain."
474
+ }
475
+ }
476
+ }, f = {
477
+ title: "Akses telefon",
478
+ description: "Beri pasukan anda pautan untuk membuka peti masuk dari telefon di mana-mana sahaja.",
479
+ state: {
480
+ stopped: "Dihentikan",
481
+ starting: "Bermula",
482
+ running: "Berjalan",
483
+ error: "Ralat"
484
+ },
485
+ modes: {
486
+ off: "Mati",
487
+ offHint: "Hanya komputer ini (dan LAN, jika didayakan).",
488
+ quick: "Pautan sementara",
489
+ quickHint: "Pautan percuma yang berubah apabila dimulakan semula. Tiada akaun diperlukan.",
490
+ named: "Domain anda",
491
+ namedHint: "Log masuk ke Cloudflare dan pilih alamat peti masuk kekal."
492
+ },
493
+ action: {
494
+ disconnect: "Putuskan Cloudflare",
495
+ namedConnecting: "Menyambung alamat tersimpan…",
496
+ namedConnect: "Sambung alamat tersimpan",
497
+ quickRestart: "Mulakan semula pautan sementara",
498
+ quickCreate: "Cipta pautan sementara"
499
+ },
500
+ tokenTooShort: "Token itu kelihatan terlalu pendek.",
501
+ tokenRequired: "Tampal token terowong dari papan pemuka Cloudflare.",
502
+ copyUrl: "Salin URL",
503
+ qrLabel: "Kod QR URL terowong",
504
+ scanHint: "Imbas dengan kamera telefon untuk membuka peti masuk.",
505
+ quickNote: "Pautan sementara berubah setiap kali sambungan atau aplikasi dimulakan semula. Pilih Domain anda untuk alamat peti masuk kekal.",
506
+ lastError: "Ralat terakhir",
507
+ connectTitle: "Cara pasukan anda menyambung",
508
+ remoteAccess: "Akses jauh",
509
+ remoteAccessMode: "Mod akses jauh",
510
+ advancedToken: "Lanjutan: guna token terowong",
511
+ advancedTokenBody: "Untuk terowong sedia ada yang dikonfigurasi dalam papan pemuka Cloudflare. Log masuk berpandu di atas mengendalikan persediaan ini untuk anda.",
512
+ token: "Token terowong",
513
+ tokenHint: "Cloudflare Zero Trust → Networks → Tunnels → terowong anda → install token.",
514
+ tokenSavedPlaceholder: "•••••••• (disimpan — biarkan kosong untuk kekal)",
515
+ hostname: "Nama hos awam",
516
+ hostnameHint: "Nama hos yang dihalakan ke http://127.0.0.1:<port> dalam konfigurasi terowong.",
517
+ connectWithToken: "Sambung dengan token",
518
+ disconnectNote: "Putuskan Cloudflare menghentikan pautan awam. Peti masuk masih berfungsi pada komputer ini. Mesej dan domain tersimpan dikekalkan, jadi anda boleh menyambung semula kemudian.",
519
+ disconnectNoteLan: "Putuskan Cloudflare menghentikan pautan awam. Peti masuk masih berfungsi pada komputer ini dan melalui rangkaian setempat yang didayakan. Mesej dan domain tersimpan dikekalkan, jadi anda boleh menyambung semula kemudian.",
520
+ diagnostics: "Lanjutan: diagnostik sambungan"
521
+ }, p = {
522
+ loading: "Memuatkan persediaan Cloudflare",
523
+ invalidApproval: "Alamat log masuk Cloudflare tidak dapat disahkan. Batalkan log masuk dan cuba lagi.",
524
+ saved: {
525
+ label: "Alamat Cloudflare tersimpan anda",
526
+ running: "Domain anda telah bersambung",
527
+ starting: "Menyambungkan peti masuk anda…",
528
+ idle: "Sambungan Cloudflare disimpan",
529
+ runningBody: "Pasukan anda boleh menggunakan alamat ini dan log masuk dengan akaun peti masuk mereka.",
530
+ startingBody: "Menunggu Cloudflare menyambung. Pastikan komputer ini dan aplikasi terus berjalan.",
531
+ idleBody: "Sambungkan alamat tersimpan di bawah supaya peti masuk tersedia kepada pasukan anda.",
532
+ change: "Tukar alamat"
533
+ },
534
+ setupLabel: "Sediakan domain Cloudflare anda",
535
+ step1: {
536
+ title: "1. Sambungkan akaun Cloudflare anda",
537
+ body: "Log masuk di Cloudflare dan luluskan domain yang ingin anda gunakan. Kembali ke sini selepas kelulusan. Anda memerlukan domain yang sudah ditambah ke akaun Cloudflare anda.",
538
+ connected: "Akaun Cloudflare telah bersambung.",
539
+ refresh: "Muat semula domain",
540
+ another: "Pilih domain lain",
541
+ anotherHint: "Hanya domain yang diluluskan dipaparkan di bawah. Pilih domain lain memulakan kelulusan Cloudflare baharu.",
542
+ waitingApproval: "Menunggu kelulusan anda di Cloudflare…",
543
+ preparing: "Menyediakan log masuk Cloudflare…",
544
+ open: "Buka log masuk Cloudflare",
545
+ cancel: "Batalkan log masuk",
546
+ autoUpdate: "Halaman ini dikemas kini secara automatik selepas kelulusan. Pastikan aplikasi terus berjalan.",
547
+ retry: "Cuba log masuk Cloudflare lagi",
548
+ signIn: "Log masuk ke Cloudflare"
549
+ },
550
+ attention: "Persediaan Cloudflare perlu perhatian",
551
+ noDomainTitle: "Tiada domain diluluskan ditemui",
552
+ noDomainBody: "Tambah domain ke Cloudflare, kemudian pilih domain lain untuk meluluskannya. Jika anda baru meluluskan domain, cuba Muat semula domain.",
553
+ formInvalid: "Semak domain, alamat dan nama terowong.",
554
+ step2: {
555
+ title: "2. Pilih alamat peti masuk anda",
556
+ domain: "Domain",
557
+ domainPlaceholder: "Pilih domain yang diluluskan",
558
+ account: "Akaun: {{name}}",
559
+ prefix: "Awalan alamat",
560
+ prefixHint: "Perkataan pendek sebelum domain anda, seperti inbox atau support.",
561
+ preview: "Pasukan anda akan membuka",
562
+ previewLabel: "Pratonton alamat peti masuk",
563
+ tunnelName: "Nama terowong",
564
+ tunnelNameHint: "Nama mesra dalam Cloudflare supaya anda dapat mengenali aplikasi ini. Ia tidak mengubah alamat."
565
+ },
566
+ step3: {
567
+ saveTitle: "3. Simpan perubahan anda",
568
+ connectTitle: "3. Sambungkan peti masuk anda",
569
+ body: "Ini menerbitkan peti masuk menggunakan alamat di atas dan menyediakan sambungan Cloudflare. Ahli pasukan masih perlu log masuk peti masuk seperti biasa. Pastikan komputer ini dan aplikasi terus berjalan.",
570
+ connecting: "Menyambungkan peti masuk anda…",
571
+ saveSubmit: "Simpan dan sambung perubahan",
572
+ createSubmit: "Cipta dan sambung peti masuk",
573
+ unchanged: "Alamat dan nama terowong ini sudah disimpan.",
574
+ cancel: "Batalkan perubahan"
575
+ }
576
+ }, m = /*#__PURE__*/ JSON.parse("{\"settingsTitle\":\"AI\",\"settingsDescription\":\"Sambungkan ChatGPT atau kunci API OpenAI. Semua ejen AI anda berkongsi satu penyedia dan model.\",\"roleBadge\":\"AI · Ejen Jualan\",\"membersDescription\":\"Pasukan dan ejen AI anda untuk perbualan pelanggan.\",\"assistant\":\"Pembantu AI\",\"behavior\":\"Membalas selepas 10 saat dalam perbualan pelanggan yang belum ditugaskan dan mengambil alih perbualan. Tugaskan perbualan kepada diri anda untuk mengambil alih. AI hanya menyelesaikan perbualan selepas pengesahan pelanggan. Apabila memerlukan bantuan, AI menugaskannya kepada ejen manusia dalam talian tanpa perbualan terbuka, atau mengembalikannya sebagai belum ditugaskan.\",\"memberName\":\"Nama ahli AI\",\"roleDescription\":\"Peranan: Ejen Jualan — menjawab soalan asas menggunakan pengetahuan perniagaan anda.\",\"keySaved\":\"Kunci API OpenAI telah disimpan.\",\"keyMissing\":\"Kunci API OpenAI belum dikonfigurasikan.\",\"connectionMode\":\"Mod sambungan\",\"apiKey\":\"Kunci API OpenAI\",\"keepKeyHint\":\"Masukkan kunci baharu. Biarkan kosong untuk mengekalkan kunci tersimpan.\",\"apiKeyHint\":\"Disimpan dengan selamat pada pelayan peti masuk. Penggunaan API dicaj berasingan daripada ChatGPT.\",\"enterKey\":\"Masukkan kunci API\",\"cancelLogin\":\"Batalkan log masuk\",\"openLogin\":\"Buka log masuk\",\"invalidLink\":\"Pautan log masuk tidak sah. Batalkan log masuk dan cuba lagi.\",\"model\":\"Model (pilihan)\",\"apiModelHint\":\"Biarkan kosong untuk menggunakan gpt-4.1-mini.\",\"instructions\":\"Arahan AI\",\"instructionsHint\":\"Diisi dengan arahan yang disyorkan; ubah suai mengikut gaya anda, atau kekalkan seperti sedia ada.\",\"saveConnection\":\"Simpan sambungan AI\",\"connectionSaved\":\"Sambungan AI peti masuk disimpan.\",\"memberSaved\":\"Tetapan ahli AI disimpan.\",\"checkSettings\":\"Semak tetapan AI.\",\"fileTypeError\":\"Pilih dokumen TXT, Markdown, PDF atau DOCX.\",\"fileSizeError\":\"Dokumen mestilah 10 MB atau lebih kecil.\",\"chatgptState\":\"ChatGPT: {{state}}\",\"modelInvalid\":\"Mod ChatGPT menyokong {{models}}. Biarkan kosong untuk menggunakan model lalai.\",\"modelSeparator\":\" atau \",\"refreshError\":\"Tidak dapat mengemas kini status sambungan AI. {{error}}\",\"state\":{\"unavailable\":\"tidak tersedia\",\"signed_out\":\"telah log keluar\",\"signing_in\":\"sedang log masuk\",\"connected\":\"disambungkan\",\"error\":\"ralat\",\"expired\":\"tamat tempoh\"},\"signedInAs\":\"Log masuk sebagai {{email}}\",\"signedIn\":\"Log masuk ke ChatGPT\",\"signInSavesMode\":\"Log masuk juga menyimpan ChatGPT sebagai mod sambungan.\",\"signOut\":\"Log keluar\",\"signInWithChatgpt\":\"Log masuk dengan ChatGPT\",\"testConnection\":\"Uji sambungan\",\"testOk\":\"{{model}} membalas: {{reply}}\",\"testFailed\":\"Ujian gagal: {{error}}\",\"chatgptModel\":\"Model\",\"modelAuto\":\"Auto (disyorkan)\",\"modelsLive\":\"Model yang tersedia untuk akaun ChatGPT anda.\",\"modelsFallback\":\"Senarai model lalai. Log masuk untuk memuatkan model akaun anda.\",\"modeApi\":\"Kunci API\",\"modeChatgpt\":\"ChatGPT\",\"pasteLabel\":\"Log masuk pada komputer lain?\",\"pasteHint\":\"Selepas anda meluluskan, pelayar membuka halaman yang mungkin tidak dimuatkan. Salin alamat penuh dari bar alamat dan tampal di sini.\",\"pastePlaceholder\":\"http://localhost:1455/auth/callback?code=…\",\"pasteSubmit\":\"Selesaikan log masuk\",\"saveBeforeTest\":\"Simpan sambungan sebelum mengujinya.\",\"bannerExpiredTitle\":\"Log masuk ChatGPT telah tamat tempoh\",\"bannerErrorTitle\":\"Sambungan ChatGPT berhenti berfungsi\",\"bannerFallback\":\"Sambungan AI tidak berfungsi.\",\"bannerChatsReleased\":\"Ahli AI tidak menjawab. Perbualan kekal belum ditugaskan untuk pasukan anda sehingga sambungan berfungsi semula.\",\"bannerExpiredText\":\"Log masuk ChatGPT telah tamat tempoh. Log masuk semula.\",\"popupBlocked\":\"Halaman log masuk disekat daripada dibuka. Gunakan Buka log masuk.\",\"page\":{\"defaultTitle\":\"Ejen Jualan AI\",\"breadcrumb\":\"Laluan navigasi\",\"pill\":{\"off\":\"Mati\",\"on\":\"Hidup\",\"needsConnection\":\"Perlu sambungan\",\"needsKnowledge\":\"Perlu konteks perniagaan\"},\"turnOn\":\"Hidupkan\",\"turnOff\":\"Matikan\",\"reasonConnection\":\"Sambungkan AI di bawah dahulu.\",\"reasonKnowledge\":\"Tambah konteks perniagaan dahulu.\",\"turnedOn\":\"Ahli AI dihidupkan.\",\"turnedOff\":\"Ahli AI dimatikan.\",\"draftSaved\":\"Ahli AI disimpan sebagai draf supaya konteks perniagaan boleh ditambah.\",\"stepName\":\"Nama & peranan\",\"stepInstructions\":\"Arahan AI\",\"stepContext\":\"Konteks perniagaan\",\"stepHandoff\":\"Peraturan serahan\",\"stepTry\":\"Cuba\",\"instructionsPlaceholder\":\"Contoh: Balas dengan ringkas dan sopan. Jawab soalan tentang harga, penghantaran dan waktu operasi. Serahkan kepada manusia untuk aduan atau bayaran balik.\",\"useDefaultInstructions\":\"Guna arahan lalai\",\"handoffLabel\":\"Peraturan serahan\",\"handoffHint\":\"Bila AI patut menyerahkan sembang kepada pasukan anda? Satu peraturan setiap baris. Biarkan kosong jika tiada peraturan tambahan.\",\"handoffPlaceholder\":\"Contoh:\\n- Pelanggan meminta bayaran balik\\n- Pelanggan mahukan sebut harga\",\"handoffSystem\":\"Sentiasa diserahkan, walau apa pun yang anda tulis di sini: pelanggan meminta untuk bercakap dengan orang, permintaan yang AI tidak dapat laksanakan (pesanan, tempahan, bayaran), jawapan yang tiada dalam konteks perniagaan anda, serta hal undang-undang, perubatan atau data peribadi.\",\"useDefaultHandoff\":\"Guna peraturan lalai\",\"howItWorks\":\"Cara ia berfungsi\",\"connectionLine\":\"Sambungan: {{state}}\",\"openSettings\":\"Tetapan → AI\",\"save\":\"Simpan\",\"description\":\"Sediakan, uji dan hidupkan pembantu AI yang menjawab sembang pelanggan.\",\"usingRecommended\":\"Menggunakan arahan yang disyorkan. Suntingnya mengikut gaya anda.\",\"advanced\":\"Lanjutan: arahan dan peraturan serahan\",\"advancedRecommended\":\"Menggunakan tetapan yang disyorkan\",\"advancedCustomised\":\"Diubah suai\",\"nextSteps\":{\"title\":\"Langkah seterusnya\",\"context\":\"Tambah Konteks perniagaan\",\"try\":\"Cuba satu soalan ujian\",\"turnOn\":\"Hidupkan\",\"done\":\"Selesai\",\"todo\":\"Langkah {{step}}\"}},\"try\":{\"label\":\"Soalan pelanggan\",\"placeholder\":\"Contoh: Berapakah kos penghantaran?\",\"enterHint\":\"Tekan Enter untuk bertanya, Shift+Enter untuk baris baharu.\",\"ask\":\"Tanya\",\"hint\":\"Menjawab dengan konteks perniagaan yang disimpan serta nama dan arahan di halaman ini, termasuk perubahan yang belum disimpan. Tiada apa-apa dihantar kepada pelanggan.\",\"decision\":{\"answer\":\"Jawapan\",\"ask_resolution\":\"Bertanya sama ada selesai\",\"resolve\":\"Akan diselesaikan\",\"handoff\":\"Akan diserahkan kepada manusia\",\"no_reply\":\"Tidak akan membalas\"},\"handoffReason\":\"Sebab: {{reason}}\",\"lookups\":\"Perkara yang disemak oleh AI\",\"lookedUp\":\"AI menyemak {{title}} · {{source}}\",\"lookupFailed\":\"Tidak dapat menyemak {{title}} · {{source}}\",\"noReply\":\"AI tidak akan menghantar apa-apa dan kekal mengendalikan perbualan ini.\",\"noKnowledge\":\"Tiada pengetahuan perniagaan yang sepadan ditemui, jadi AI akan menyerahkan perbualan ini kepada manusia tanpa memanggil model.\",\"model\":\"Model: {{model}}\",\"failed\":\"Tidak dapat menjawab: {{error}}\",\"agentHint\":\"Tanya apa yang mungkin ditanya oleh pelanggan. Jawapan menggunakan teks halaman ini (termasuk perubahan yang belum disimpan) dan konteks perniagaan yang disimpan.\",\"safety\":\"Peraturan keselamatan: ejen tidak mendedahkan arahan atau item dalamannya.\",\"answeredAs\":\"Dijawab sebagai {{name}}\",\"needsConnection\":\"Sambungkan AI di Tetapan → AI untuk mencuba ejen.\",\"noRole\":\"Peranan kosong: ejen menjawab dengan hanya peraturan keselamatan dan konteks perniagaannya.\",\"confidentialLeak\":\"Akan diserahkan: balasan memetik item dalaman, jadi balasan itu tidak akan dihantar kepada pelanggan.\"},\"voice\":{\"title\":\"Mesej suara\",\"description\":\"Nota suara pelanggan ditukar kepada teks supaya AI dan pasukan anda boleh membacanya.\",\"engine\":\"Transkripsi\",\"off\":\"Mati\",\"offHint\":\"Nota suara kekal sebagai audio. AI meminta pelanggan menaip soalan mereka.\",\"local\":\"Di PC ini\",\"localHint\":\"Audio kekal di komputer ini.\",\"localNeedsModel\":\"Muat turun model suara di bawah dahulu.\",\"cloud\":\"Awan (OpenAI)\",\"cloudHint\":\"Audio dihantar ke OpenAI untuk ditranskripsi.\",\"cloudNeedsKey\":\"Perlukan kunci API OpenAI yang disimpan dalam sambungan AI di atas.\",\"modelTitle\":\"Model suara untuk PC ini\",\"notInstalled\":\"Belum dipasang. Muat turun sekali sahaja; transkripsi kemudian berjalan di komputer ini.\",\"download\":\"Muat turun model suara ({{size}} MB)\",\"downloading\":\"Memuat turun… {{percent}}%\",\"downloadProgress\":\"{{done}} daripada {{total}} MB\",\"cancel\":\"Batal muat turun\",\"installed\":\"Dipasang\",\"remove\":\"Buang\",\"removeTitle\":\"Buang model suara?\",\"removeText\":\"Nota suara tidak lagi ditranskripsi di PC ini. Anda boleh memuat turun model ini semula kemudian.\",\"removeConfirm\":\"Buang model\",\"saved\":\"Tetapan mesej suara disimpan\",\"privacy\":\"Di PC ini, nota suara tidak pernah meninggalkan komputer ini. Dengan Awan, audio dihantar ke OpenAI. Transkrip disimpan bersama sembang.\",\"errors\":{\"disk_space\":\"Ruang cakera tidak mencukupi. Kosongkan sekurang-kurangnya 800 MB dan cuba lagi.\",\"network\":\"Muat turun gagal. Semak sambungan internet dan cuba lagi.\",\"verification\":\"Fail yang dimuat turun tidak sepadan dengan checksum yang dijangka dan telah dipadam. Cuba lagi.\",\"redirect\":\"Muat turun dihantar ke alamat yang tidak dijangka dan telah dihentikan.\",\"write\":\"Model suara tidak dapat disimpan di komputer ini.\",\"unknown\":\"Muat turun gagal. Cuba lagi.\"}},\"contextPanel\":{\"hint\":\"Fail dan teks yang digunakan oleh AI untuk menjawab: profil syarikat, produk, harga, polisi dan soalan lazim.\",\"limits\":\"Sehingga 20 item, 10 MB setiap fail\",\"search\":\"Cari konteks perniagaan\",\"searchPlaceholder\":\"Cari mengikut nama\",\"select\":\"Pilih\",\"cancel\":\"Batal\",\"deleteSelected_other\":\"Padam {{count}}\",\"add\":\"Tambah\",\"upload\":\"Muat naik dari peranti\",\"addText\":\"Tambah kandungan teks\",\"name\":\"Nama\",\"size\":\"Saiz\",\"details\":\"Butiran\",\"type\":\"Jenis\",\"kindFile\":\"Fail\",\"kindText\":\"Kandungan teks\",\"added\":\"Ditambah {{when}}\",\"meta\":\"{{size}} · {{added}}\",\"selectItem\":\"Pilih {{name}}\",\"empty\":\"Belum ada konteks: tambah profil syarikat, senarai produk, harga dan soalan lazim anda.\",\"noMatches\":\"Tiada item sepadan dengan “{{query}}”.\",\"limitReached\":\"Padam satu item untuk menambah yang lain (sehingga 20).\",\"textLabel\":\"Kandungan teks\",\"characterCount\":\"{{count}} / {{max}} aksara\",\"namePlaceholder\":\"Contoh: Senarai harga\",\"textPlaceholder\":\"Contoh:\\nKedai Ezy menjual kek dan roti di Johor Bahru.\\nDibuka setiap hari 9 pagi–6 petang, tutup pada cuti umum.\\nPenghantaran dalam 10 km berharga RM10.\\n\\nS: Adakah anda menerima tempahan khas?\\nJ: Ya, dengan notis 3 hari.\",\"addTextTitle\":\"Tambah kandungan teks\",\"save\":\"Simpan\",\"delete\":\"Padam\",\"close\":\"Tutup\",\"loading\":\"Memuatkan…\",\"loadError\":\"Tidak dapat membuka item ini. {{error}}\",\"preview\":\"Teks yang diekstrak (baca sahaja)\",\"previewTruncated\":\"Menunjukkan bahagian awal teks yang diekstrak.\",\"fileReadOnly\":\"Fail tidak boleh disunting. Padam fail ini dan muat naik versi baharu.\",\"textAdded\":\"Kandungan teks ditambah.\",\"fileAdded\":\"Fail ditambah.\",\"changesSaved\":\"Perubahan disimpan.\",\"deleted_other\":\"{{count}} item dipadam.\",\"confirmOne\":\"Padam {{name}}?\",\"confirmMany_other\":\"Padam {{count}} item?\",\"confirmText\":\"AI berhenti menggunakannya serta-merta. Tindakan ini tidak boleh dibuat asal.\",\"deleteFailed\":\"Tidak dapat memadam: {{names}}\",\"namesMore\":\"{{names}} +{{count}} lagi\",\"internal\":\"Dalaman\",\"internalHint\":\"Ejen menggunakan ini untuk membuat keputusan (contohnya harga terendah) tetapi tidak pernah memberitahunya kepada pelanggan.\",\"internalIntro\":\"Tandakan item sebagai Dalaman supaya ejen menggunakannya untuk membuat keputusan (contohnya harga terendah) tanpa memberitahu pelanggan.\",\"internalBadgeTitle\":\"Digunakan untuk membuat keputusan, tidak diberitahu kepada pelanggan\",\"internalFilterLabel\":\"Tunjuk\",\"internalFilterAll\":\"Semua ({{count}})\",\"internalFilterCustomer\":\"Untuk pelanggan ({{count}})\",\"internalFilterInternal\":\"Dalaman ({{count}})\",\"internalFilterEmpty\":\"Tiada item dalam paparan ini.\",\"internalAudience\":\"Siapa boleh mendengarnya\",\"internalAudienceCustomer\":\"Untuk pelanggan\",\"internalAudienceInternal\":\"Dalaman\",\"internalTotal\":\"Item dalaman: {{count}} / {{max}} aksara\",\"addFileTitle\":\"Tambah fail\",\"fileLabel\":\"Fail\",\"itemSaved\":\"Item disimpan\",\"actions\":\"Tindakan\",\"markInternal\":\"Tandakan sebagai Dalaman\",\"markCustomer\":\"Tandakan untuk pelanggan\",\"markInternalFor\":\"Tandakan {{name}} sebagai Dalaman\",\"markCustomerFor\":\"Tandakan {{name}} untuk pelanggan\",\"markedInternal\":\"{{name}} kini Dalaman.\",\"markedCustomer\":\"{{name}} kini untuk pelanggan.\"},\"defaults\":{\"sales\":{\"instructions\":\"PERANAN\\nAnda pembantu WhatsApp perniagaan ini. Anda menjawab pertanyaan pelanggan dan soalan tentang produk, serta mewakili perniagaan secara profesional.\\n\\nSKOP\\nAnda membantu tentang:\\n- Produk: ciri, spesifikasi, varian, ketersediaan dan cara penggunaan\\n- Pertanyaan umum: waktu operasi, lokasi, cara membuat pesanan, kawasan penghantaran, kaedah bayaran dan polisi pemulangan\\n- Langkah seterusnya: cara membuat pesanan, cara meminta sebut harga, atau menghubungi pasukan kami\\nAnda tidak membantu tentang topik yang tiada kaitan dengan perniagaan atau produknya (sembang umum, berita, pengekodan, kerja rumah, pendapat, politik, agama). Balas dengan sopan dalam satu baris dan bawa semula perbualan, contohnya: \\\"Maaf, saya hanya boleh membantu dengan soalan tentang produk dan perkhidmatan kami. Bagaimana saya boleh membantu?\\\"\\n\\nPENGETAHUAN\\n- Kekalkan nama produk, nombor model dan harga tepat seperti dalam konteks perniagaan.\\n- Jangan meneka harga, stok, spesifikasi, tarikh penghantaran, promosi atau polisi. Jika maklumat tiada, nyatakannya dan biar pasukan kami mengesahkan.\\n- Jangan menjanjikan diskaun, hadiah percuma atau pengecualian.\\n\\nBAHASA\\n- Balas dalam bahasa pelanggan. Jika mereka mencampurkan bahasa, balas dalam bahasa utama mesej mereka.\\n- Jika anda tidak dapat membalas dalam bahasa mereka, gunakan bahasa lalai yang dinyatakan dalam konteks perniagaan, jika tiada gunakan bahasa Inggeris.\\n\\nGAYA\\n- Profesional, sopan dan mesra; tiada slanga. Paling banyak satu emoji, dan hanya jika sesuai.\\n- Satu hingga tiga ayat pendek. Gunakan senarai pendek hanya untuk pilihan atau spesifikasi.\\n- Jawab dahulu: tiada ucapan panjang dan jangan mengulang soalan.\\n- Tanya paling banyak satu soalan penjelasan apabila perlu (contohnya model, saiz atau kawasan mana).\\n- Format WhatsApp sahaja: *tebal* untuk butiran penting dan baris baharu biasa. Tiada tajuk, jadual atau pautan yang tidak diberikan kepada anda.\",\"handoffRules\":\"- Pelanggan kecewa atau membuat aduan\\n- Pelanggan meminta bayaran balik, pemulangan, pertukaran atau tuntutan waranti\\n- Pelanggan bertanya tentang pesanan, penghantaran atau bayaran sedia ada\\n- Pelanggan mahukan pesanan pukal atau tempahan khas, atau sebut harga\\n- Pelanggan mahu tawar-menawar harga atau meminta diskaun\"},\"faq\":{\"instructions\":\"PERANAN\\nAnda meja bantuan WhatsApp perniagaan ini. Anda menjawab soalan pelanggan dengan jelas dan tepat. Anda tidak menjual: jangan mengesyorkan produk, menjual tambahan atau meminta pelanggan membuat pesanan.\\n\\nSKOP\\nAnda membantu tentang:\\n- Soalan tentang perkhidmatan, waktu operasi, lokasi, harga dan yuran yang ditulis dalam konteks perniagaan\\n- Prosedur dan polisi: cara membuat tempahan, apa yang perlu dibawa, berapa lama masa diambil, siapa yang perlu dihubungi\\n- Langkah seterusnya: di mana borang boleh didapati, cara membuat temu janji, atau menghubungi pasukan kami\\nAnda tidak membantu tentang topik yang tiada kaitan dengan perniagaan (sembang umum, berita, pengekodan, kerja rumah, pendapat, politik, agama). Balas dengan sopan dalam satu baris dan bawa semula perbualan, contohnya: \\\"Maaf, saya hanya boleh membantu dengan soalan tentang perkhidmatan kami. Apa yang anda ingin tahu?\\\"\\n\\nPENGETAHUAN\\n- Jawab hanya daripada konteks perniagaan. Kekalkan nama, masa, yuran dan langkah tepat seperti yang ditulis.\\n- Jangan meneka. Jika maklumat tiada, nyatakannya dan biar pasukan kami mengesahkan.\\n- Jangan memberi nasihat perubatan, undang-undang atau kewangan peribadi, dan jangan menjanjikan pengecualian.\\n\\nBAHASA\\n- Balas dalam bahasa pelanggan. Jika mereka mencampurkan bahasa, balas dalam bahasa utama mesej mereka.\\n- Jika anda tidak dapat membalas dalam bahasa mereka, gunakan bahasa lalai yang dinyatakan dalam konteks perniagaan, jika tiada gunakan bahasa Inggeris.\\n\\nGAYA\\n- Tenang, sopan dan membantu; tiada slanga dan tiada bahasa jualan. Paling banyak satu emoji, dan hanya jika sesuai.\\n- Satu hingga tiga ayat pendek. Gunakan senarai bernombor yang pendek hanya untuk langkah.\\n- Jawab dahulu: tiada ucapan panjang dan jangan mengulang soalan.\\n- Tanya paling banyak satu soalan penjelasan apabila perlu.\\n- Format WhatsApp sahaja: *tebal* untuk butiran penting dan baris baharu biasa. Tiada tajuk, jadual atau pautan yang tidak diberikan kepada anda.\",\"handoffRules\":\"- Pelanggan kecewa atau membuat aduan\\n- Pelanggan mahu membuat, menukar atau membatalkan temu janji atau pesanan\\n- Pelanggan bertanya tentang akaun, kes, bayaran atau rekod peribadi mereka sendiri\\n- Pelanggan meminta pengecualian daripada peraturan atau polisi\"}},\"replaceKey\":\"Ganti kunci\",\"keepKey\":\"Kekalkan kunci tersimpan\",\"modelAdvanced\":\"Lanjutan: pilih model\",\"edit\":{\"open\":\"Sunting dengan AI\",\"unavailable\":\"Sambungkan AI di atas untuk menggunakan Sunting dengan AI.\",\"title\":{\"instructions\":\"Sunting arahan AI dengan AI\",\"handoffRules\":\"Sunting peraturan serahan dengan AI\"},\"description\":\"Terangkan perubahan. Anda menyemaknya sebelum apa-apa digunakan.\",\"requestLabel\":\"Apa yang perlu diubah?\",\"placeholder\":{\"instructions\":\"cth. Balas dengan nada yang lebih mesra dan santai\",\"handoffRules\":\"cth. Serahkan permintaan bayaran balik kepada staf\"},\"suggest\":\"Cadangkan\",\"suggestAgain\":\"Cadangkan lagi\",\"writing\":\"Sedang menulis cadangan…\",\"result\":{\"instructions\":\"Cadangan arahan AI\",\"handoffRules\":\"Cadangan peraturan serahan\"},\"removed\":\"Dibuang:\",\"added\":\"Ditambah:\",\"noChange\":\"Tiada perubahan dicadangkan — cuba terangkan dengan cara lain.\",\"failed\":\"AI tidak dapat mencadangkan perubahan. Cuba lagi.\",\"discard\":\"Buang\",\"apply\":{\"instructions\":\"Guna pada arahan AI\",\"handoffRules\":\"Guna pada peraturan serahan\"},\"applyNote\":\"Menggunakan cadangan hanya mengisi kotak; tekan Simpan pada halaman untuk menyimpannya.\",\"applied\":\"Digunakan. Tekan Simpan untuk menyimpannya.\",\"unchanged_other\":\"{{count}} baris tidak berubah\"},\"keyOk\":\"Kunci berfungsi.\",\"connectionReady\":\"Sambungan AI sudah sedia.\",\"setupAgent\":\"Sediakan ejen AI anda\",\"moreFeatures\":\"Lagi ciri AI\",\"moreFeaturesHint\":\"Mesej suara dan Pengayaan pelanggan\",\"remoteSignInHint\":\"Log masuk daripada pelayar pada komputer yang menjalankan peti masuk; dari komputer lain, tampal alamat terakhir apabila diminta.\",\"connect\":{\"title\":\"Sambungkan AI\",\"chatgpt\":\"Log masuk dengan ChatGPT\",\"recommended\":\"Disyorkan\",\"note\":\"Menggunakan akaun ChatGPT anda. Sambungan ini tidak rasmi dan mungkin berhenti berfungsi; anda boleh bertukar kepada kunci API pada bila-bila masa.\",\"signingIn\":\"Sedang log masuk… selesaikan dalam tetingkap ChatGPT.\",\"cancel\":\"Batal\",\"connectedChatgpt\":\"Disambungkan ke ChatGPT\",\"connectedAs\":\"Log masuk sebagai {{email}}\",\"connectedKey\":\"Kunci API OpenAI telah disemak dan disimpan\",\"useKey\":\"Guna kunci API OpenAI\",\"useChatgpt\":\"Guna Log masuk dengan ChatGPT\",\"keyLabel\":\"Kunci API OpenAI\",\"keyHint\":\"Bermula dengan sk-. Cipta satu di platform.openai.com → API keys.\",\"testKey\":\"Uji kunci\",\"keyFailedFallback\":\"Kunci ini tidak berfungsi. Pastikan anda menyalin semuanya.\",\"keyInvalid\":\"OpenAI tidak menerima kunci ini. Pastikan anda menyalin semuanya.\",\"keyUnreachable\":\"Tidak dapat menghubungi OpenAI untuk menyemak kunci. Semak sambungan internet dan cuba lagi.\",\"keyRateLimited\":\"OpenAI sibuk atau kunci ini telah mencapai hadnya. Tunggu seminit dan cuba lagi.\",\"keyForbidden\":\"OpenAI tidak membenarkan kunci ini menyenaraikan model. Kunci terhad atau had wilayah boleh menyebabkan ini; kunci mungkin masih berfungsi untuk balasan.\",\"saveAnyway\":\"Simpan juga\"},\"agents\":{\"add\":\"Tambah ejen AI\",\"aiBadge\":\"AI\",\"limitHint\":\"Satu ejen AI bagi setiap peti masuk. Tambah peti masuk untuk menambah ejen lain.\",\"noInbox\":\"Tiada peti masuk\",\"answersInbox\":\"Menjawab {{name}}\",\"newTitle\":\"Ejen AI baharu\",\"newDescription\":\"Pilih titik permulaan, beri ejen satu nama, kemudian simpan. Anda boleh menukar setiap teks kemudian.\",\"description\":\"Ejen ini menjawab sembang WhatsApp dengan peranannya sendiri, konteks perniagaannya sendiri dan peraturan serahannya sendiri.\",\"pickTitle\":\"Titik permulaan\",\"pickHint\":\"Ini hanya mengisi peranan dan peraturan serahan. Anda boleh menukarnya.\",\"nameTitle\":\"Nama\",\"nameLabel\":\"Nama ejen\",\"nameHint\":\"Pelanggan tidak melihat nama ini. Pasukan anda melihatnya pada sembang yang dijawab oleh ejen.\",\"nameRequired\":\"Masukkan nama untuk ejen.\",\"inboxLabel\":\"Peti masuk\",\"inboxHint\":\"Ejen menjawab sembang baharu peti masuk ini. Satu ejen bagi setiap peti masuk.\",\"inboxNone\":\"Tiada (ejen tidak menjawab sebarang sembang)\",\"inboxHas\":\"{{inbox}} (ada {{agent}})\",\"inboxMove\":\"{{agent}} menjawab {{inbox}} sekarang. Apabila anda menyimpan, {{agent}} dikeluarkan daripada {{inbox}} dan berhenti menjawab di sana.\",\"roleTitle\":\"Peranan\",\"roleLabel\":\"Peranan (arahan)\",\"roleHint\":\"Siapa ejen itu, apa yang dibantunya dan cara ia menulis. Fakta dimasukkan dalam konteks perniagaan.\",\"rolePlaceholder\":\"Terangkan peranan, contohnya: Anda menjawab soalan tentang perkhidmatan dan waktu operasi klinik kami.\",\"handoffTitle\":\"Peraturan serahan\",\"handoffHint\":\"Satu kes bagi setiap baris. Ejen menyerahkan sembang ini kepada pasukan anda.\",\"handoffPlaceholder\":\"Contohnya: Pelanggan mahu membuat temu janji.\",\"useTemplate\":\"Guna templat {{preset}}\",\"templateTitle\":\"Guna templat {{preset}}?\",\"templateBody\":\"Ini menggantikan peranan dan peraturan serahan dengan teks permulaan {{preset}}. Teks yang anda ubah hilang apabila anda menyimpan.\",\"templateConfirm\":\"Guna templat\",\"templateApplied\":\"Templat digunakan. Simpan untuk mengekalkannya.\",\"customTemplateNote\":\"Templat Tersuai adalah kosong.\",\"advanced\":\"Lanjutan: peranan dan peraturan serahan\",\"advancedBlank\":\"Peranan belum ditulis\",\"usingTemplate\":\"Menggunakan teks permulaan {{preset}}. Ubah teks ini supaya sesuai dengan perniagaan anda.\",\"tryTitle\":\"Cuba\",\"deleteTitle\":\"Padam ejen ini\",\"deleteHint\":\"Ejen berhenti menjawab. Sembangnya kembali kepada pasukan anda, tanpa ditugaskan. Item konteks perniagaannya dipadam.\",\"delete\":\"Padam ejen\",\"deleteConfirmTitle\":\"Padam {{name}}?\",\"deleteConfirmBody_other\":\"{{name}} berhenti menjawab dan sembangnya yang terbuka kembali kepada pasukan anda, tanpa ditugaskan. {{count}} item konteks perniagaannya dipadam. Tindakan ini tidak boleh dibuat asal.\",\"deleted\":\"{{name}} dipadam\",\"created\":\"{{name}} dicipta. Tambah konteks perniagaannya, kemudian hidupkannya.\",\"saved\":\"Ejen disimpan\",\"save\":\"Simpan\",\"create\":\"Cipta ejen\",\"limitTitle\":\"Anda sudah mempunyai bilangan maksimum ejen AI\",\"limitBody\":\"Satu ejen AI bagi setiap peti masuk. Tambah peti masuk di Pentadbir → Peti masuk, atau ubah ejen yang sedia ada.\",\"limitBodyLite\":\"Lite mempunyai satu ejen AI. Ubah ejen anda.\",\"backToMembers\":\"Kembali ke Ahli\",\"notFoundTitle\":\"Ejen AI ini tidak wujud\",\"notFoundBody\":\"Ejen ini mungkin telah dipadam.\",\"on\":\"Hidup\",\"off\":\"Mati\",\"errors\":{\"agent_limit\":\"Anda tidak boleh menambah lebih banyak ejen AI dalam edisi ini.\",\"inbox_has_agent\":\"Peti masuk ini sudah mempunyai ejen AI. Pilih peti masuk lain.\",\"internal_too_large\":\"Item dalaman boleh mengandungi sehingga {{max}} aksara kesemuanya. Pendekkan item dalaman atau jadikannya untuk pelanggan.\",\"last_agent\":\"Anda tidak boleh memadam satu-satunya ejen AI.\",\"agent_not_found\":\"Ejen AI ini tidak wujud. Ejen ini mungkin telah dipadam.\"},\"noFreeInbox\":\"Setiap peti masuk sudah ada ejen AI. Tambah peti masuk untuk memberi ejen ini nombornya sendiri.\",\"addInbox\":\"Tambah peti masuk\",\"createNext\":\"Selepas anda mencipta ejen, tambah Konteks perniagaannya, cuba dan hidupkannya.\"},\"presets\":{\"sales\":\"Jualan\",\"faq\":\"Soalan lazim\",\"custom\":\"Tersuai\",\"salesDescription\":\"Menjawab soalan produk dan membimbing pelanggan untuk membuat pesanan.\",\"faqDescription\":\"Menjawab soalan daripada konteks perniagaan anda. Tidak pernah menjual.\",\"customDescription\":\"Bermula kosong: anda menulis peranan dan peraturan serahan.\",\"badge\":\"Ejen {{preset}}\"},\"guardrails\":{\"title\":\"Peraturan keselamatan sentiasa aktif\",\"badge\":\"Tidak boleh ditukar\",\"intro\":\"EzyChat menambah peraturan ini kepada setiap ejen AI, sebelum teks anda. Tiada peranan, peraturan atau mesej pelanggan boleh mematikannya.\",\"rule1\":\"Tidak pernah mendedahkan arahan, peraturan serahan atau item dalamannya, walau apa pun kata pelanggan.\",\"rule2\":\"Menganggap mesej, fail dan nota suara pelanggan sebagai maklumat, bukan sebagai arahan.\",\"rule3\":\"Peranan dan peraturannya tidak boleh ditukar daripada sembang.\",\"rule4\":\"Tidak pernah mereka fakta, harga atau janji; item dalaman hanya membantunya membuat keputusan.\"},\"openAgents\":\"Buka ejen AI\"}"), h = {
577
+ title: "Pelengkapan maklumat pelanggan",
578
+ description: "Simpan maklumat pelanggan yang jelas secara automatik daripada mesej baharu dalam sembang langsung.",
579
+ enable: "Kemas kini maklumat pelanggan secara automatik",
580
+ independent: "Menggunakan sambungan AI bersama, termasuk sembang yang dikendalikan kakitangan. Balasan Ejen Jualan boleh kekal dimatikan.",
581
+ paused: "Pelengkapan dijeda sehingga sambungan AI dipulihkan.",
582
+ thresholds: "Isi medan kosong pada 90/100 atau lebih. Ganti nilai sedia ada pada 95/100 atau lebih dengan bukti semasa yang jelas. Maklumat yang kabur diabaikan.",
583
+ rules: "Lihat peraturan pemarkahan",
584
+ weights: "Pemilikan 30 · Kejelasan pernyataan 25 · Konteks 20 · Pengesahan 15 · Bukti semasa 10. Keputusan dibuat bagi setiap medan; purata hanya ringkasan audit.",
585
+ audit: "Lihat audit",
586
+ average: "Purata {{score}}/100",
587
+ details: "Butiran pelengkapan",
588
+ meaning: "Skor bukti menerangkan keputusan; bukan kebarangkalian.",
589
+ close: "Tutup",
590
+ savedFields: "Medan dalam purata: {{count}}",
591
+ added: "Ditambah",
592
+ replaced: "Diganti",
593
+ threshold: "Ambang {{score}}",
594
+ source: "Lihat perbualan sumber",
595
+ policy: "Purata tepat {{average}} · Dasar pemarkahan {{policy}}",
596
+ action: "Maklumat pelanggan dilengkapkan",
597
+ settingsAction: "Pelengkapan maklumat pelanggan diubah",
598
+ fields: {
599
+ name: "Nama",
600
+ company: "Syarikat",
601
+ email: "E-mel",
602
+ address: "Alamat"
603
+ },
604
+ criteria: {
605
+ ownership: "Pemilikan",
606
+ clarity: "Kejelasan pernyataan",
607
+ context: "Konteks",
608
+ validation: "Pengesahan",
609
+ freshness: "Bukti semasa"
610
+ },
611
+ reasons: {
612
+ self_reported: "Pelanggan memberikan maklumat semasa mereka secara jelas.",
613
+ correction: "Pelanggan membetulkan maklumat tersimpan mereka secara jelas."
614
+ }
615
+ }, g = {
616
+ title: "Peti masuk",
617
+ add: "Tambah peti masuk",
618
+ emptyTitle: "Belum ada peti masuk",
619
+ emptyBody: "Tambah nombor WhatsApp pertama anda: beri nama, kemudian imbas kod QR dengan telefonnya.",
620
+ description: "Satu peti masuk untuk setiap nombor WhatsApp. Paut setiap nombor dengan aplikasi WhatsApp pada telefonnya, melalui imbasan QR, seperti yang anda lakukan sekarang.",
621
+ edit: "Sunting",
622
+ remove: "Buang",
623
+ status: "Status",
624
+ whoCanOpen: "Siapa boleh membukanya",
625
+ admin: "pentadbir",
626
+ accessHint: "Pentadbir melihat setiap peti masuk. Pilih ejen yang boleh membuka peti masuk ini dalam Sunting, atau di bawah Ahli.",
627
+ typeLinkedPhone: "Aplikasi WhatsApp (telefon dipaut)",
628
+ numberAfterScan: "Ditunjukkan selepas imbasan",
629
+ limitReached: "Edisi ini membenarkan {{max}} peti masuk. Buang satu untuk menambah yang lain.",
630
+ membersField: "Siapa boleh membukanya",
631
+ membersFieldHint: "Pentadbir sentiasa melihat setiap peti masuk. Tandakan ejen yang boleh membuka sembang peti masuk ini.",
632
+ membersFieldNoAgents: "Belum ada ejen. Tambah mereka di bawah Ahli.",
633
+ membersFieldNone: "Tiada ejen ditandakan: hanya pentadbir melihat peti masuk ini.",
634
+ removeTitle: "Buang “{{name}}”?",
635
+ removeConfirm: "Buang peti masuk",
636
+ removeBodyPhone: "EzyChat menyahpaut telefon ini dan berhenti menerima dan menghantar untuk nombor ini. Sembangnya kekal, baca sahaja, untuk pentadbir.",
637
+ removed: "Peti masuk dibuang",
638
+ required: "Ruangan ini wajib diisi.",
639
+ saved: "Peti masuk disimpan",
640
+ createdPhone: "Peti masuk ditambah. Sekarang imbas kod QR dengan telefon.",
641
+ addTitle: "Tambah peti masuk",
642
+ editTitle: "Peti masuk “{{name}}”",
643
+ dialogDescription: "Beri nama peti masuk, pilih siapa boleh membukanya, simpan, kemudian imbas kod QR dengan telefon yang mempunyai nombor ini.",
644
+ save: "Simpan",
645
+ name: "Nama peti masuk",
646
+ nameHint: "Nama yang pasukan anda lihat pada setiap sembang, cth. Jualan atau Katering.",
647
+ scanTitle: "Imbas kod QR",
648
+ scanBody: "Buka Sunting dan imbas kod QR dengan telefon yang mempunyai nombor ini.",
649
+ scanSteps: "Pada telefon: WhatsApp → Tetapan → Peranti dipaut → Paut peranti, kemudian halakan kamera ke kod ini.",
650
+ linkedAs: "Dipaut ke {{number}}",
651
+ relink: "Paut telefon semula",
652
+ offlineTitle: "Telefon di luar talian",
653
+ offlineBody: "EzyChat tidak boleh menghantar atau menerima untuk nombor ini. Cas telefon dan sambungkan ke internet; jika ia kekal di luar talian, paut semula.",
654
+ state: {
655
+ connected: "Bersambung",
656
+ waiting_scan: "Menunggu imbasan QR",
657
+ phone_offline: "Telefon di luar talian"
658
+ },
659
+ membersAccess: "Akses peti masuk",
660
+ membersAccessAll: "Semua peti masuk (pentadbir)",
661
+ membersAccessNone: "Tiada peti masuk: ejen ini tidak melihat sebarang sembang",
662
+ membersAccessTitle: "Peti masuk untuk {{name}}",
663
+ membersAccessDescription: "Ejen ini hanya melihat sembang dan pemberitahuan daripada peti masuk yang anda tandakan.",
664
+ membersAccessNoInboxes: "Belum ada peti masuk. Tambah satu di bawah Peti masuk.",
665
+ membersAccessSave: "Simpan",
666
+ membersAccessSaved: "Akses peti masuk disimpan",
667
+ aiAgent: "Ejen AI",
668
+ aiAgentNone: "Tiada",
669
+ aiAgentField: "Ejen AI",
670
+ aiAgentFieldHint: "Ejen AI yang menjawab sembang baharu peti masuk ini. Satu ejen bagi setiap peti masuk.",
671
+ aiAgentOption: "{{agent}} (di {{inbox}})",
672
+ aiAgentMove: "{{agent}} menjawab {{inbox}} sekarang. Apabila anda menyimpan, {{agent}} berpindah ke peti masuk ini dan berhenti menjawab {{inbox}}.",
673
+ aiAgentReplace: "{{agent}} menjawab peti masuk ini sekarang. Apabila anda menyimpan, {{agent}} dikeluarkan.",
674
+ aiAgentRemove: "Ejen AI-nya {{agent}} dikeluarkan dan berhenti menjawab."
675
+ }, _ = {
676
+ title: e,
677
+ titleWithSection: t,
678
+ nav: n,
679
+ layout: r,
680
+ ui: i,
681
+ members: a,
682
+ quickReplies: o,
683
+ audit: s,
684
+ integrations: c,
685
+ settings: l,
686
+ resolveAll: u,
687
+ whatsapp: d,
688
+ tunnel: f,
689
+ cloudflare: p,
690
+ ai: m,
691
+ enrichment: h,
692
+ inboxes: g
693
+ };
694
+ //#endregion
695
+ export { m as ai, s as audit, p as cloudflare, _ as default, h as enrichment, g as inboxes, c as integrations, r as layout, a as members, n as nav, o as quickReplies, u as resolveAll, l as settings, e as title, t as titleWithSection, f as tunnel, i as ui, d as whatsapp };