// Malay (ms).
export default {
  'brand': 'WebBrain',

  'sp.status.disconnected': 'Tidak disambung',
  'sp.status.connected': 'Tersambung ({model})',
  'sp.status.error': 'Ralat: {msg}',
  'sp.status.failed': 'Sambungan gagal',
  'sp.btn.verbose': 'Togol log alat terperinci',
  'sp.btn.language': 'Bahasa',
  'sp.btn.settings': 'Tetapan',
  'sp.btn.clear': 'Perbualan baharu (kosongkan sejarah)',
  'sp.btn.send': 'Hantar',
  'sp.btn.stop.title': 'Hentikan ejen',
  'sp.btn.stop.label': 'Henti',

  'sp.inspection': 'WebBrain mula meneliti halaman ini',

  'sp.greeting.html': 'Hai! Saya <strong>WebBrain</strong>. Saya boleh membaca halaman ini, menjawab soalan, mengklik butang, mengisi borang, dan mengautomatikkan tugas berbilang langkah.',
  'sp.greeting.hint': 'Cuba: "Rumuskan halaman ini" atau "Cari semua pautan tentang harga"',
  'sp.help_message': 'Bagaimana saya boleh membantu pada halaman ini?',
  'sp.cleared_message': 'Perbualan dikosongkan. Bagaimana saya boleh membantu?',

  'sp.mode.ask': 'Tanya',
  'sp.mode.ask.title': 'Tanya soalan tentang halaman — tiada perubahan dibuat',
  'sp.mode.act': 'Lakukan',
  'sp.mode.act.title': 'Biarkan WebBrain mengklik, menaip, dan menavigasi untuk anda',
  'sp.mode.act.warning': 'Mod Lakukan: WebBrain akan berinteraksi dengan halaman bagi pihak anda. Gunakan atas risiko anda sendiri.',
  'sp.mode.act.confirm': 'Mod Lakukan membenarkan WebBrain mengklik, menaip, menatal dan menavigasi bagi pihak anda.\n\nIa berjalan di dalam sesi pelayar anda yang telah disahkan, jadi ia mempunyai akses yang sama seperti anda pada setiap laman web yang anda log masuk.\n\nPerhatikan tindakannya dan hentikan bila-bila masa dengan butang ◼.\n\nTeruskan?',

  'sp.input.ask_placeholder': 'Tanya apa-apa sahaja tentang halaman ini...',
  'sp.input.act_placeholder': 'Beritahu saya apa yang perlu dilakukan pada halaman ini...',

  'sp.activity.thinking': 'Sedang berfikir...',
  'sp.activity.thinking_step': 'Sedang berfikir (langkah {step})...',
  'sp.activity.continuing': 'Sedang meneruskan...',
  'sp.activity.stopping': 'Sedang berhenti...',

  'sp.copy': 'Salin',
  'sp.copied': 'Disalin!',
  'sp.copy.code.title': 'Salin kod',

  'sp.error_prefix': 'Ralat: {msg}',
  'sp.stopped_by_user': '[Dihentikan oleh pengguna]',
  'sp.stopped_by_user_html': '<em>Dihentikan oleh pengguna.</em>',

  'sp.continue_bar': 'Had langkah dicapai ({steps} langkah). Mahu saya teruskan?',
  'sp.continue_btn': 'Teruskan',

  'sp.step.details': 'butiran',
  'sp.step.input_label': 'Input',
  'sp.step.result_label': 'Keputusan',

  'sp.api.enabled_html': '🔓 <strong>Pengubahan API diaktifkan</strong> untuk perbualan ini. Ejen kini boleh menggunakan POST/PUT/PATCH/DELETE melalui fetch_url dan execute_js apabila ia menilai API lebih boleh dipercayai berbanding UI untuk sesuatu langkah. UI tetap menjadi pilihan utama secara lalai. Bendera ini akan dikosongkan apabila anda menetapkan semula perbualan.',
  'sp.api.badge_html': '<span>🔓 Pengubahan API dibenarkan</span>',

  'tool.read_page': 'Membaca halaman',
  'tool.get_interactive_elements': 'Mengimbas elemen interaktif',
  'tool.click': 'Mengklik',
  'tool.type_text': 'Menaip',
  'tool.scroll': 'Menatal',
  'tool.navigate': 'Menavigasi',
  'tool.extract_data': 'Mengekstrak data',
  'tool.wait_for_element': 'Menunggu elemen',
  'tool.get_selection': 'Membaca pilihan',
  'tool.execute_js': 'Menjalankan skrip',
  'tool.new_tab': 'Membuka tab baharu',
  'tool.screenshot': 'Mengambil tangkapan skrin',
  'tool.done': 'Menyiapkan',
  'tool.click.selector': 'Mengklik "{selector}"',
  'tool.click.index': 'Mengklik elemen #{index}',
  'tool.type_text.text': 'Menaip "{text}"',
  'tool.navigate.url': 'Pergi ke {url}',
  'tool.new_tab.url': 'Membuka {url}',
  'tool.scroll.direction': 'Menatal ke {direction}',
  'tool.extract_data.type': 'Mengekstrak {type}',
  'tool.wait_for_element.selector': 'Menunggu "{selector}"',

  'st.title': 'Tetapan WebBrain',
  'st.subtitle': 'Konfigurasi pembekal LLM dan keutamaan paparan anda · v{version}',
  'st.tab.display': 'Paparan',
  'st.tab.providers': 'Pembekal',
  'st.tab.vision': 'Penglihatan',
  'st.tab.profile': 'Profil',
  'st.tab.account': 'Akaun',

  'st.account.not_signed_in': 'Belum log masuk',
  'st.account.sign_in': 'Log Masuk / Daftar',
  'st.account.sign_out': 'Log Keluar',
  'st.account.provider_name': 'WebBrain Cloud',

  'st.display.language.label': 'Bahasa',
  'st.display.language.desc': 'Bahasa antara muka untuk pemalam WebBrain.',
  'st.display.verbose.label': 'Mod terperinci',
  'st.display.verbose.desc': 'Tunjukkan butiran penuh panggilan alat, argumen, dan hasil JSON mentah. Dimatikan secara lalai untuk pengalaman sembang yang lebih bersih.',
  'st.display.screenshot.label': 'Tangkapan skrin sandaran',
  'st.display.screenshot.desc': 'Ambil tangkapan skrin halaman apabila pembacaan DOM gagal atau memulangkan kandungan yang tidak mencukupi. Memerlukan model yang menyokong penglihatan.',
  'st.display.site_adapters.label': 'Penyesuai laman',
  'st.display.site_adapters.desc': 'Suntikkan panduan ringkas yang disusun secara manual untuk laman trafik tinggi yang dikenali (GitHub, Gmail, Stripe, AWS, dll.) ke dalam mesej pertama ejen. Membantu ejen mengelak jalan buntu yang biasa. Menambah sedikit kos token pada giliran pertama perbualan di laman yang sepadan.',
  'st.display.auto_screenshot.label': 'Tangkapan skrin auto',
  'st.display.auto_screenshot.desc': 'Tangkap tangkapan skrin viewport secara automatik selepas ejen bertindak pada halaman, supaya model yang menyokong penglihatan dapat melihat apa yang berubah. Menggunakan lebih banyak token. Dimatikan secara senyap jika model aktif tidak menyokong imej.',
  'st.display.auto_screenshot.off': 'Mati',
  'st.display.auto_screenshot.navigation': 'Apabila navigasi',
  'st.display.auto_screenshot.state_change': 'Apabila keadaan berubah (lalai)',
  'st.display.auto_screenshot.every_step': 'Setiap langkah',
  'st.display.tracing.label': 'Rakam jejak (untuk perbandingan model)',
  'st.display.tracing.desc_html': 'Simpan setiap larian (permintaan LLM, respons, panggilan alat, tangkapan skrin) ke dalam IndexedDB tempatan supaya anda boleh memeriksa dan membandingkan model secara bersebelahan. Dibuka dalam tab Jejak yang berasingan. Dimatikan secara lalai kerana ia menambah penulisan cakera pada setiap langkah. <a href="traces.html" target="_blank" style="color:var(--accent);">Buka halaman Jejak →</a>',
  'st.display.allow_local_network.label': 'Benarkan ejen mengakses rangkaian tempatan',
  'st.display.allow_local_network.desc': 'Membenarkan alat fetch_url ejen mencapai loopback (127.0.0.1, localhost) dan alamat peribadi/RFC1918 (10.x, 192.168.x, 172.16–31.x). Berguna untuk pelayan pembangunan tempatan, alat intranet, atau API yang dihos sendiri. Dimatikan secara lalai — apabila dimatikan, halaman yang disuntik prompt-injection tidak boleh mendorong ejen untuk meneliti rangkaian tempatan anda. Alamat metadata awan (169.254.169.254) dan nama hos *.internal/*.local kekal disekat walaupun dihidupkan.',
  'st.display.notify_sound.label': 'Bunyi selesai',
  'st.display.notify_sound.desc': 'Mainkan bunyi pendek di panel sisi apabila ejen menyelesaikan tugas. Tidak akan dimainkan jika anda membatalkan larian.',
  'st.display.max_steps.label': 'Langkah maksimum ejen',
  'st.display.max_steps.desc': 'Jumlah maksimum langkah penggunaan alat yang boleh dilakukan ejen bagi setiap mesej. Nilai lebih tinggi membenarkan tugas berbilang langkah yang lebih kompleks, tetapi mungkin menggunakan lebih banyak token.',
  'st.display.traces_link.label': 'Jejak',
  'st.display.traces_link.desc': 'Periksa larian yang dirakam secara bersebelahan. Hanya tersedia apabila rakaman jejak dihidupkan.',
  'st.display.traces_link.open': 'Buka Jejak →',

  'st.providers.info.html': '<strong>Bermula dengan llama.cpp:</strong><br>Jalankan <code>llama-server -m your-model.gguf --port 8080</code> untuk memulakan pelayan tempatan.<br>Tiada kunci API diperlukan — semuanya berjalan pada mesin anda.',
  'st.providers.save': 'Simpan',
  'st.providers.test': 'Uji sambungan',
  'st.providers.set_active': 'Jadikan aktif',
  'st.providers.active': 'AKTIF',
  'st.providers.saved': 'Disimpan!',
  'st.providers.testing': 'Sedang menguji...',
  'st.providers.connected': 'Tersambung! Model: {model}',
  'st.providers.unknown_model': 'tidak diketahui',
  'st.providers.failed': 'Gagal: {error}',
  'st.providers.load_models': 'Muatkan model',
  'st.providers.loading': 'Memuatkan…',
  'st.providers.models_loaded': '{count} model dimuatkan',

  'st.provider.field.server_url': 'URL pelayan',
  'st.provider.field.api_base_url': 'URL asas API',
  'st.provider.field.api_key': 'Kunci API',
  'st.provider.field.model': 'Model',
  'st.provider.field.model_optional': 'Model (pilihan)',
  'st.provider.field.supports_vision': 'Model menyokong penglihatan (multimodal)',
  'st.provider.field.compact_prompt': 'Prompt ringkas (disyorkan untuk model kecil, aktif secara lalai)',
  'st.provider.field.model_loaded_hint': 'biarkan kosong untuk menggunakan model yang telah dimuatkan',

  'st.vision.desc': 'Jika ditetapkan, tangkapan skrin dihantar kepada model ini untuk membaca halaman, manakala pembekal aktif mengendalikan perancangan dan panggilan alat. Biarkan kosong agar pembekal aktif juga mengendalikan penglihatan. Hanya hujung yang serasi dengan OpenAI.',
  'st.vision.save': 'Simpan',
  'st.vision.test': 'Uji sambungan',
  'st.vision.clear': 'Kosongkan',
  'st.vision.cleared': 'Dikosongkan.',
  'st.vision.saved': 'Disimpan!',
  'st.vision.testing': 'Sedang menguji...',
  'st.vision.connected': 'Tersambung! Model: {model}',
  'st.vision.failed': 'Gagal: {error}',
  'st.vision.fill_required': 'Isi URL Asas dan Model terlebih dahulu.',

  'st.profile.desc_html': 'Simpan bio ringkas yang boleh digunakan ejen untuk mengisi borang pendaftaran tanpa bertanya setiap kali — nama anda, e-mel kerja, syarikat, dan kata laluan <em>pakai buang</em> untuk pendaftaran berisiko rendah. Apabila diaktifkan, teks di bawah ditambahkan kepada system prompt ejen pada setiap perbualan.',
  'st.profile.enabled.label': 'Aktifkan isi-auto profil',
  'st.profile.enabled.desc': 'Suntikkan teks profil ke dalam system prompt ejen. Dinyahaktifkan = ejen tidak akan melihat teks ini.',
  'st.profile.text.label': 'Teks profil',
  'st.profile.text.placeholder': 'Saya Jane Doe. E-mel saya jane@example.com. Saya bekerja di Acme Inc. Kata laluan lalai saya untuk pendaftaran berisiko rendah ialah SomePhrase-42!. Saya tinggal di Berlin.',
  'st.profile.save': 'Simpan',
  'st.profile.clear': 'Kosongkan',
  'st.profile.saved': 'Disimpan.',
  'st.profile.cleared': 'Dikosongkan.',
  'st.profile.security_html': '<strong>Keselamatan — sila baca:</strong><br><ul style="margin:6px 0 0 18px;padding:0;line-height:1.55;"><li>Teks yang anda masukkan di sini disimpan <strong>sebagai teks biasa</strong> dalam storan tempatan pelayar anda. Ia <strong>tidak</strong> dihantar kepada projek WebBrain — tetapi <strong>dihantar</strong> kepada pembekal LLM yang anda konfigurasikan pada setiap giliran, sebagai sebahagian daripada system prompt.</li><li><strong>Jangan letakkan kata laluan untuk akaun penting</strong> di sini (Google, Apple, iCloud, perbankan, SSO kerja, e-mel utama). Akaun-akaun itu sepatutnya menggunakan 2FA dan anda sememangnya tidak perlu menyerahkannya kepada ejen.</li><li>Kes penggunaan yang dimaksudkan ialah <strong>kata laluan pakai buang</strong> yang anda guna semula untuk pendaftaran laman berisiko rendah (surat berita, percubaan percuma, akaun forum).</li><li>Jika profil pelayar ini diceroboh, penyerang yang mempunyai akses cakera boleh membaca teks ini. Kekalkan ia seminimum mungkin.</li></ul>',

  'tr.title': 'Jejak WebBrain',
  'tr.runs': '{n} larian',
  'tr.run': '{n} larian',
  'tr.btn.refresh': '↻ Muat semula',
  'tr.btn.refresh.title': 'Muat semula senarai larian',
  'tr.btn.compare': '⇔ Bandingkan',
  'tr.btn.compare.title': 'Masuk mod perbandingan (pilih 2 larian)',
  'tr.btn.compare.picking': '⇔ Bandingkan (pilih 2)',
  'tr.btn.export': '⇩ Eksport JSON',
  'tr.btn.export.title': 'Eksport larian terpilih sebagai JSON',
  'tr.btn.delete': '✕ Padam',
  'tr.btn.delete.title': 'Padam larian terpilih',
  'tr.btn.clear_all': 'Kosongkan semua',
  'tr.btn.clear_all.title': 'Padam setiap larian yang disimpan',

  'tr.filter.placeholder': 'Tapis mengikut tugas / model / URL',
  'tr.filter.all_models': 'Semua model',
  'tr.no_match': 'Tiada larian yang sepadan.',
  'tr.no_task': '(tiada tugas)',

  'tr.conversation.label': 'Perbualan',
  'tr.conversation.turn_of': 'giliran {n} daripada {total}',
  'tr.conversation.tooltip': 'Sebahagian daripada perbualan {n} giliran ({id}). Buka larian untuk berpindah antara giliran.',

  'tr.cost.label': 'Kos:',
  'tr.cost.tooltip': 'Jumlah kos LLM yang dilaporkan pembekal (USD). Diserlahkan oren apabila ≥ $0.50 tanpa jawapan akhir — kemungkinan larian yang membazir.',

  'tr.empty.title': 'Tiada larian dipilih.',
  'tr.empty.hint_html': 'Pilih satu larian dari sebelah kiri untuk melihat garis masa langkah demi langkah. Klik <b>Bandingkan</b> untuk memilih dua larian dan melihatnya bersebelahan.',

  'tr.compare_mode.title': 'Mod perbandingan',
  'tr.compare_mode.picked': 'Dipilih {n}/2. Klik satu lagi larian untuk melengkapkan perbandingan.',
  'tr.compare_mode.hint': 'Klik dua larian dalam senarai untuk membandingkannya bersebelahan.',

  'tr.status.label': 'status',
  'tr.steps.label': 'langkah',
  'tr.step': '{n} langkah',
  'tr.steps_plural': '{n} langkah',
  'tr.duration.label': 'tempoh',
  'tr.intokens.label': 'token masuk',
  'tr.outtokens.label': 'token keluar',
  'tr.tokens_short': '{n} tok',
  'tr.unknown_model': 'tidak diketahui',
  'tr.final_label': 'Akhir:',

  'tr.deleted': 'Dipadam.',
  'tr.all_deleted': 'Semua larian dipadam.',
  'tr.select_first': 'Pilih satu larian terlebih dahulu.',
  'tr.confirm_delete': 'Padam larian ini?',
  'tr.confirm_delete_all': 'Padam SEMUA larian yang dirakam? Ini tidak boleh dibuat asal.',

  'tr.event.llm_request': '→ permintaan LLM',
  'tr.event.llm_response': '← respons LLM',
  'tr.event.vision_sub_call': '👁 sub-panggilan penglihatan',
  'tr.event.error_kind': '⚠ ralat',
  'tr.event.messages_tools': '{m} mesej, {t} alat · {model}',
  'tr.event.screenshot_caption': 'tangkapan skrin',
  'tr.event.screenshot_missing': '(blob tangkapan skrin hilang)',
  'tr.event.description_truncated': '... [dipotong dalam paparan perbandingan]',
  'tr.event.vision_failed': 'sub-panggilan penglihatan gagal: {error}',
  'tr.event.description': 'huraian',
  'tr.event.args': 'argumen',
  'tr.event.result': 'keputusan',
  'tr.event.step': 'langkah {step}',
};
