{
  "app": {
    "brand": "nanobot",
    "loading": {
      "connecting": "Menghubungkan ke nanobot…",
      "boot": "Memuat nanobot…"
    },
    "error": {
      "title": "Tidak dapat menjangkau nanobot",
      "gatewayHint": "Pastikan gateway sedang berjalan (`nanobot gateway`) dan halaman ini dibuka pada mesin yang sama."
    },
    "auth": {
      "title": "Autentikasi diperlukan",
      "hint": "Masukkan secret yang dikonfigurasi sebagai tokenIssueSecret di konfigurasi gateway.",
      "placeholder": "Kata sandi",
      "submit": "Hubungkan",
      "invalid": "Kata sandi tidak valid. Coba lagi."
    },
    "account": {
      "section": "Akun",
      "logoutHint": "Putuskan browser ini dari gateway.",
      "logout": "Keluar"
    },
    "system": {
      "section": "Sistem",
      "restartHint": "Mulai ulang nanobot untuk menerapkan perubahan runtime.",
      "restart": "Mulai ulang nanobot",
      "restarting": "Memulai ulang...",
      "restartEngine": "Mulai ulang engine",
      "restartingEngine": "Memulai ulang engine..."
    },
    "restart": {
      "completed": "Mulai ulang selesai dalam {{seconds}} dtk."
    },
    "documentTitle": {
      "base": "nanobot",
      "chat": "{{title}} · nanobot"
    },
    "meta": {
      "description": "UI web nanobot — ngobrol dengan workspace nanobot Anda."
    }
  },
  "sidebar": {
    "navigation": "Navigasi bilah samping",
    "collapse": "Ciutkan sidebar",
    "newChat": "Obrolan baru",
    "searchAria": "Cari",
    "searchPlaceholder": "Cari",
    "searchResults": "Hasil",
    "noSearchResults": "Tidak ada chat yang cocok.",
    "recent": "Terbaru",
    "settings": "Pengaturan",
    "language": {
      "label": "Bahasa",
      "ariaLabel": "Ganti bahasa"
    },
    "apps": "Aplikasi",
    "automations": "Otomasi",
    "skills": {
      "title": "Skill"
    }
  },
  "settings": {
    "backToChat": "Kembali ke chat",
    "sidebar": {
      "title": "Pengaturan",
      "ariaLabel": "Bagian pengaturan"
    },
    "nav": {
      "general": "Umum",
      "byok": "BYOK",
      "overview": "Ikhtisar",
      "appearance": "Tampilan",
      "models": "Model",
      "providers": "Penyedia",
      "image": "Gambar",
      "voice": "Suara",
      "browser": "Internet",
      "runtime": "Sistem",
      "advanced": "Keamanan",
      "cliApps": "Aplikasi CLI",
      "mcp": "MCP",
      "apps": "Aplikasi",
      "automations": "Otomasi",
      "skills": "Skill"
    },
    "sections": {
      "interface": "Antarmuka",
      "ai": "AI",
      "system": "Sistem",
      "about": "Tentang",
      "status": "Status",
      "localPreferences": "Preferensi lokal",
      "presets": "Preset",
      "imageGeneration": "Pembuatan gambar",
      "imageDefaults": "Default",
      "webSearch": "Pencarian web",
      "webBehavior": "Perilaku",
      "identity": "Identitas",
      "webuiSafety": "Keamanan WebUI",
      "capabilities": "Kemampuan",
      "cliApps": "Aplikasi CLI",
      "mcp": "Layanan MCP",
      "apps": "Aplikasi",
      "nativeHost": "Host native",
      "hostSafety": "Keamanan aplikasi",
      "voiceInput": "Input suara"
    },
    "rows": {
      "theme": "Tema",
      "language": "Bahasa",
      "provider": "Penyedia",
      "model": "Model",
      "restart": "Mulai ulang nanobot",
      "configPath": "Path konfigurasi",
      "activePreset": "Preset aktif",
      "gateway": "Gerbang",
      "restartState": "Status mulai ulang",
      "pendingChanges": "Perubahan tertunda",
      "selectedPreset": "Preset terpilih",
      "presetModel": "Model preset",
      "density": "Kerapatan",
      "activityMode": "Detail aktivitas",
      "fileEditDisplay": "Tampilan edit file",
      "codeWrap": "Bungkus kode",
      "maxResults": "Hasil maksimum",
      "timeout": "Batas waktu",
      "jinaReader": "Pembaca Jina",
      "imageGeneration": "Pembuatan gambar",
      "imageProvider": "Penyedia gambar",
      "imageProviderStatus": "Status penyedia",
      "imageProviderBase": "Basis penyedia",
      "imageModel": "Model gambar",
      "defaultAspectRatio": "Rasio default",
      "defaultImageSize": "Ukuran default",
      "maxImagesPerTurn": "Maks. gambar per giliran",
      "imageSaveDir": "Direktori simpan",
      "botName": "Nama bot",
      "botIcon": "Ikon bot",
      "timezone": "Zona waktu",
      "workspacePath": "Workspace default",
      "localServiceAccess": "Layanan lokal",
      "webuiDefaultAccess": "Akses default",
      "currentModel": "Konfigurasi saat ini",
      "brandLogos": "Logo merek",
      "cliAppsCatalog": "Katalog",
      "cliAppsFilter": "Saring",
      "engine": "Mesin",
      "logs": "Log",
      "diagnostics": "Diagnostik",
      "contextWindow": "Jendela konteks",
      "transcription": "Transkripsi",
      "transcriptionProvider": "Penyedia",
      "transcriptionProviderStatus": "Status penyedia",
      "transcriptionModel": "Model",
      "transcriptionLanguage": "Bahasa",
      "voiceLimits": "Batas"
    },
    "help": {
      "theme": "Beralih antara tampilan terang dan gelap.",
      "language": "Pilih bahasa yang digunakan WebUI.",
      "provider": "Selecciona el proveedor para nuevas solicitudes de modelo.",
      "model": "Define el nombre de modelo predeterminado de nanobot.",
      "configPath": "Archivo de configuración que usa actualmente el gateway.",
      "selectedPreset": "Los preajustes con nombre son de solo lectura aquí; edítalos en config.json.",
      "presetModel": "Beralih ke Default untuk mengedit model dan penyedia dari WebUI.",
      "density": "Hanya disimpan di browser ini.",
      "activityMode": "Pilih seberapa banyak detail aktivitas agen yang ditampilkan secara default.",
      "fileEditDisplay": "Pilih aktivitas edit file dibuka sebagai jumlah baris atau diff.",
      "codeWrap": "Menjaga baris kode panjang tetap terbaca di layar kecil.",
      "maxResults": "Resultados devueltos por cada llamada web_search.",
      "timeout": "Segundos antes de que una solicitud de búsqueda expire.",
      "jinaReader": "Usa Jina Reader para web_fetch cuando esté disponible.",
      "imageGeneration": "Expone generate_image en chats cuando hay un proveedor de imagen configurado.",
      "imageProvider": "Elige el proveedor registrado usado por generate_image.",
      "imageProviderStatus": "La generación de imágenes reutiliza credenciales de Proveedores.",
      "imageModel": "Nombre del modelo enviado al proveedor de imágenes seleccionado.",
      "defaultAspectRatio": "Se usa cuando el prompt no elige una proporción.",
      "defaultImageSize": "Petunjuk ukuran yang dikirim ke penyedia yang mendukungnya.",
      "maxImagesPerTurn": "Batas atas untuk satu permintaan generate_image.",
      "botName": "Se muestra donde nanobot usa un nombre visible.",
      "botIcon": "Emoji o texto corto junto al nombre del bot.",
      "timezone": "Se usa para horarios y respuestas con conciencia temporal.",
      "localServiceAccess": "Izinkan perintah shell Full Access menjangkau layanan localhost.",
      "webuiDefaultAccess": "Digunakan oleh chat web tanpa izin khusus proyek.",
      "securityManagedControls": "Las capturas web siempre protegen servicios locales, privados y metadata. La seguridad de canales core se gestiona en config.json.",
      "currentModel": "Digunakan untuk balasan baru.",
      "selectedModelProvider": "Definido por el modelo seleccionado.",
      "selectedModelValue": "Definido por el modelo seleccionado.",
      "brandLogos": "Tampilkan logo penyedia pihak ketiga dan CLI di Pengaturan.",
      "cliAppsCatalog": "Instala solo adaptadores CLI de apps que nanobot puede ejecutar localmente; las apps nativas no se modifican.",
      "cliAppsFilter": "Busca por app, categoría o capacidad.",
      "logs": "Abre la carpeta de registros del motor nativo.",
      "diagnostics": "Exporta un pequeño informe de runtime para soporte.",
      "localServiceAccessNative": "Permite que comandos shell con Full Access alcancen servicios en este Mac.",
      "webuiDefaultAccessNative": "Usado por chats nativos sin permiso específico de proyecto.",
      "contextWindow": "Pilih anggaran konteks default untuk konfigurasi model ini.",
      "transcription": "Transkripsikan input mikrofon sebelum dikirim. Pesan suara channel memakai pengaturan yang sama.",
      "transcriptionProvider": "Menggunakan kredensial penyedia yang sesuai dari Providers.",
      "transcriptionProviderStatus": "API key tetap berada di providers, bukan di pengaturan transkripsi.",
      "transcriptionModel": "Biarkan memakai default yang teresolusi kecuali penyedia membutuhkan id model khusus.",
      "transcriptionLanguage": "Petunjuk ISO-639 opsional, seperti en, zh, ja, atau ko."
    },
    "values": {
      "light": "Terang",
      "dark": "Gelap",
      "notAvailable": "Tidak tersedia",
      "enabled": "Aktif",
      "disabled": "Nonaktif",
      "restartPending": "Menunggu mulai ulang",
      "ready": "Siap",
      "privateEngine": "Mesin privat",
      "unixSocket": "Soket Unix",
      "defaultWorkspace": "Workspace default",
      "comfortable": "Nyaman",
      "compact": "Ringkas",
      "auto": "Otomatis",
      "expanded": "Diperluas",
      "summary": "Ringkasan",
      "diff": "Diff",
      "collapsedDiff": "Diff diciutkan",
      "on": "Aktif",
      "off": "Nonaktif",
      "defaultPermission": "Izin default",
      "fullAccess": "Akses penuh",
      "configured": "Terkonfigurasi",
      "notConfigured": "Belum dikonfigurasi",
      "pending": "Tertunda",
      "restartingEngine": "Memulai ulang"
    },
    "status": {
      "loading": "Memuat pengaturan...",
      "loadError": "Tidak dapat memuat pengaturan",
      "unsaved": "Perubahan belum disimpan.",
      "upToDate": "Sudah terbaru.",
      "savedRestart": "Guardado. Reinicia nanobot para aplicar.",
      "restartAfterSaving": "Guarda los cambios y reinicia cuando puedas.",
      "savedRestartApply": "Guardado. Reinicia cuando puedas.",
      "imageProviderRestart": "Cambios del proveedor de imagen guardados. Reinicia cuando puedas.",
      "hostRestartAfterSaving": "Al guardar, nanobot reiniciará su motor.",
      "hostRestartPending": "Guardado. El motor se reiniciará cuando esté listo.",
      "hostApiUnavailable": "Las acciones del host solo están disponibles en la app nativa.",
      "logsOpened": "Carpeta de registros abierta.",
      "logsOpenFailed": "No se pudo abrir la carpeta de registros.",
      "diagnosticsExported": "Diagnóstico exportado a {{path}}.",
      "diagnosticsExportFailed": "No se pudo exportar el diagnóstico."
    },
    "actions": {
      "save": "Simpan",
      "saving": "Menyimpan",
      "edit": "Edit",
      "cancel": "Batal",
      "open": "Buka",
      "export": "Ekspor",
      "opening": "Membuka...",
      "exporting": "Mengekspor..."
    },
    "byok": {
      "description": "Gunakan kunci provider Anda sendiri. Nanobot membaca nilai ini dari config saat ini, dan hanya provider yang sudah dikonfigurasi yang bisa dipilih di Umum.",
      "configured": "Terkonfigurasi",
      "notConfigured": "Belum dikonfigurasi",
      "configuredSection": "Terkonfigurasi",
      "notConfiguredSection": "Belum dikonfigurasi",
      "showMore": "Tampilkan {{count}} lagi",
      "showLess": "Tampilkan lebih sedikit",
      "apiKey": "API key",
      "apiBase": "API base",
      "apiKeyPlaceholder": "Masukkan API key",
      "apiKeyConfiguredPlaceholder": "Kosongkan untuk mempertahankan key saat ini",
      "configuredKeyHint": "Key terkonfigurasi",
      "apiBasePlaceholder": "Gunakan default provider",
      "apiKeyRequired": "API key diperlukan untuk mengonfigurasi provider ini.",
      "showApiKey": "Tampilkan API key",
      "hideApiKey": "Sembunyikan API key",
      "noConfiguredProviders": "Belum ada provider terkonfigurasi",
      "configureFirst": "Konfigurasikan provider di BYOK terlebih dahulu.",
      "openByok": "Buka BYOK",
      "tabs": {
        "ariaLabel": "Jenis kredensial BYOK",
        "llm": "LLM",
        "webSearch": "Pencarian web"
      },
      "webSearch": {
        "provider": "Penyedia pencarian",
        "providerHelp": "Pilih backend yang digunakan alat web search.",
        "selectProvider": "Pilih provider",
        "credentials": "Kredensial",
        "noCredentialRequired": "Tidak perlu key",
        "noCredentialHelp": "DuckDuckGo berfungsi tanpa menyimpan API key.",
        "apiKeyHelp": "Disimpan di config dan ditampilkan tersamarkan setelah disimpan.",
        "baseUrl": "Base URL",
        "baseUrlHelp": "SearXNG memerlukan URL instance Anda sendiri.",
        "baseUrlPlaceholder": "https://search.example.com",
        "apiKeyRequired": "Provider pencarian ini memerlukan API key.",
        "baseUrlRequired": "SearXNG memerlukan Base URL.",
        "missingCredential": "Tambahkan kredensial yang diperlukan sebelum menyimpan.",
        "saveHint": "Perubahan berlaku untuk permintaan web search baru."
      }
    },
    "overview": {
      "model": "Model saat ini",
      "providers": "Penyedia",
      "configuredCount": "{{count}} dikonfigurasi",
      "totalProviders": "{{count}} tersedia",
      "webSearch": "Pencarian web",
      "imageGeneration": "Pembuatan gambar",
      "voiceInput": "Input suara",
      "workspace": "Ruang kerja"
    },
    "usage": {
      "title": "Aktivitas token",
      "shortTitle": "Token Usage",
      "subtitle": "Penggunaan yang dilaporkan penyedia selama 12 bulan terakhir.",
      "empty": "Aktivitas token akan muncul setelah balasan model baru.",
      "totalTokens": "Total token",
      "peakTokens": "Puncak token",
      "thirtyDayTokens": "Token 30 hari",
      "currentStreak": "Rentetan saat ini",
      "longestStreak": "Rentetan terpanjang",
      "daysValue": "{{count}} h",
      "last30": "30 hari",
      "activeDays": "Hari aktif",
      "requests": "Permintaan",
      "estimated": "perkiraan",
      "includesEstimates": "termasuk perkiraan",
      "cellTitle": "{{date}}: {{tokens}} token, {{requests}} permintaan",
      "sources": {
        "user": "Chat",
        "api": "API",
        "cron": "Otomasi",
        "dream": "Memori",
        "system": "Sistem"
      }
    },
    "providers": {
      "searchPlaceholder": "Cari penyedia",
      "noMatches": "Tidak ada penyedia yang cocok.",
      "saveProvider": "Simpan penyedia"
    },
    "image": {
      "selectProvider": "Pilih penyedia",
      "selectAspect": "Pilih rasio",
      "selectSize": "Pilih ukuran",
      "configureProvider": "Konfigurasi penyedia",
      "missingCredential": "Configura este proveedor antes de activar la generación de imágenes."
    },
    "models": {
      "selectModel": "Pilih model",
      "addConfiguration": "Tambah konfigurasi",
      "newConfiguration": "Konfigurasi model baru",
      "newConfigurationHelp": "Simpan penyedia dan model sebagai opsi sekali klik.",
      "configurationName": "Nama konfigurasi",
      "configurationNameHelp": "Ganti nama konfigurasi model tersimpan ini.",
      "configurationNamePlaceholder": "Menulis cepat",
      "searchModels": "Cari atau ketik ID model",
      "useCustomModel": "Gunakan",
      "loadingModels": "Memuat model...",
      "searchCatalog": "Cari katalog penyedia untuk memilih model.",
      "modelsAvailable": "tersedia",
      "noModelResults": "Tidak ada model yang cocok.",
      "loadFailed": "Daftar model tidak tersedia.",
      "unsupportedModelList": "Ketik ID model secara manual.",
      "providerNotConfigured": "Konfigurasikan penyedia ini sebelum memuat model.",
      "autoProviderCustomOnly": "Mode penyedia otomatis memakai ID model kustom."
    },
    "timezone": {
      "select": "Pilih zona waktu",
      "search": "Cari zona waktu",
      "empty": "Tidak ada zona waktu yang cocok."
    },
    "cliApps": {
      "allCategories": "Semua kategori",
      "availableCount": "{{count}} aplikasi",
      "installedCount": "{{count}} terpasang",
      "summary": "{{installed}} dari {{total}} CLI terpasang",
      "filterAll": "Semua",
      "filterInstalled": "CLI terpasang",
      "filterNotInstalled": "Belum terpasang",
      "searchPlaceholder": "Cari CLI",
      "statusInstalled": "Terpasang",
      "statusAvailable": "Tersedia",
      "statusMissing": "Dependensi hilang",
      "statusUnsupported": "Tidak didukung",
      "statusNotInstalled": "Belum terpasang",
      "unsupported": "Tidak didukung",
      "loading": "Memuat aplikasi CLI...",
      "empty": "Tidak ada aplikasi CLI yang cocok dengan filter ini.",
      "readyTitle": "@{{name}} siap",
      "readyStatus": "Siap",
      "readyPrompt": "Gunakan @{{name}} untuk melihat kemampuan CLI ini.",
      "readyTry": "Coba @{{name}}",
      "readyCopied": "Disalin",
      "openChat": "Buka chat",
      "requires": "Membutuhkan",
      "test": "Uji CLI",
      "update": "Perbarui CLI",
      "uninstall": "Copot CLI",
      "install": "Pasang CLI",
      "unavailable": "Tidak tersedia",
      "noDescription": "Tidak ada deskripsi."
    },
    "about": {
      "version": "Versi",
      "checking": "Memeriksa pembaruan...",
      "checkForUpdates": "Periksa pembaruan",
      "upToDate": "Anda sudah menggunakan versi terbaru",
      "updateAvailable": "Pembaruan tersedia v{{version}}"
    },
    "mcp": {
      "allCategories": "Semua kategori",
      "summary": "{{installed}} dari {{total}} preset diaktifkan",
      "filterAll": "Semua",
      "filterInstalled": "Aktif",
      "filterNotInstalled": "Tidak aktif",
      "searchPlaceholder": "Cari preset MCP",
      "moreOptions": "Opsi MCP lainnya",
      "moreOptionsSubtitle": "Tambahkan server khusus atau impor mcp.json.",
      "customTitle": "MCP khusus",
      "customSubtitle": "Tambahkan server MCP stdio, HTTP, atau SSE apa pun.",
      "customAction": "Khusus",
      "importAction": "Impor",
      "serverName": "Nama server",
      "serverUrl": "URL",
      "transport": "Transport",
      "command": "Perintah",
      "args": "Args JSON",
      "headers": "Headers JSON",
      "env": "Env JSON",
      "timeout": "Batas waktu alat",
      "advancedOptions": "Opsi lanjutan",
      "hideAdvanced": "Sembunyikan lanjutan",
      "saveCustom": "Simpan MCP",
      "configImport": "Impor mcp.json",
      "importConfig": "Impor",
      "restartRequired": "Mulai ulang nanobot untuk menyambungkan alat MCP yang diperbarui.",
      "toolsFound": "{{count}} alat",
      "loading": "Memuat preset MCP...",
      "empty": "Tidak ada preset MCP yang cocok dengan filter ini.",
      "openDocs": "Buka dokumentasi",
      "test": "Uji",
      "remove": "Hapus",
      "enable": "Aktifkan",
      "enabled": "Aktif",
      "setup": "Hubungkan",
      "configure": "Hubungkan",
      "connectTitle": "Hubungkan {{name}}",
      "connectHint": "Tambahkan kunci dari pengaturan akun Anda.",
      "saveAndEnable": "Simpan dan aktifkan",
      "updateSetup": "Perbarui konfigurasi",
      "configured": "terkonfigurasi",
      "keepExisting": "Biarkan kosong untuk mempertahankan nilai saat ini",
      "statusConfigured": "Terkonfigurasi",
      "statusMissingCredentials": "Butuh kunci",
      "statusMissingDependency": "Butuh dependensi",
      "statusComingSoon": "Segera hadir",
      "statusNotInstalled": "Tidak aktif",
      "toolScope": "Alat",
      "allTools": "Semua",
      "noTools": "Tidak ada",
      "testForTools": "Jalankan Uji untuk memeriksa dan memilih alat individual."
    },
    "legal": {
      "thirdPartyBrands": "Nama produk, logo, dan merek adalah milik pemiliknya masing-masing. Penggunaan hanya untuk identifikasi dan tidak menyiratkan dukungan."
    },
    "apps": {
      "description": "Aktifkan plugin, adaptor aplikasi lokal, dan server alat terhubung.",
      "cliLabel": "CLI",
      "mcpLabel": "MCP",
      "channelLabel": "Kanal",
      "featureLabel": "Fitur",
      "filterAll": "Semua",
      "filterPlugins": "Plugin",
      "filterCli": "Aplikasi CLI",
      "filterMcp": "Layanan MCP",
      "enabledSummary": "{{count}} aktif",
      "caption": "{{plugins}} plugin · {{cli}} CLI · {{mcp}} MCP",
      "searchPlaceholder": "Cari aplikasi",
      "featured": "Katalog",
      "loading": "Memuat aplikasi...",
      "empty": "Tidak ada aplikasi yang cocok.",
      "restartRequired": "Mulai ulang nanobot untuk menerapkan aplikasi dan fitur yang diperbarui."
    },
    "nanobotFeatures": {
      "enabled": "Aktif",
      "enable": "Aktifkan",
      "disable": "Nonaktifkan",
      "ready": "Siap",
      "missingDependency": "Dukungan belum terpasang",
      "installSupport": "Instal dukungan",
      "installConfirmTitle": "Instal dukungan untuk {{name}}?",
      "installConfirmDescription": "nanobot akan menambahkan yang dibutuhkan {{name}}, lalu mengaktifkannya. Lanjutkan?",
      "installConfirmAction": "Instal dan aktifkan",
      "websocketRequired": "Wajib untuk WebUI",
      "channelDisabled": "Kanal dinonaktifkan",
      "notEnabled": "Belum aktif"
    },
    "automations": {
      "filters": {
        "all": "Semua",
        "active": "Aktif",
        "paused": "Dijeda",
        "failed": "Perlu ditangani",
        "system": "Sistem"
      },
      "sort": {
        "next": "Jalankan berikutnya",
        "last": "Jalankan terakhir",
        "updated": "Diperbarui",
        "name": "Nama"
      },
      "search": "Cari tugas, pesan, chat terkait, atau jadwal",
      "queue": "Antrean",
      "loading": "Memuat otomasi...",
      "noMatches": "Tidak ada otomasi yang cocok dengan tampilan ini.",
      "empty": "Belum ada otomasi.",
      "emptyHint": "Buat dari tempat tugas ini berjalan agar nanobot menyimpan konteks yang tepat.",
      "oneShot": "Satu kali",
      "systemTask": "Automasi yang dikelola sistem",
      "localTrigger": "Pemicu lokal",
      "labels": {
        "schedule": "Jadwal",
        "next": "Berikutnya",
        "origin": "Chat tertaut",
        "created": "Dibuat",
        "updated": "Diperbarui"
      },
      "runNow": "Jalankan sekarang",
      "pause": "Jeda",
      "resume": "Lanjutkan",
      "edit": "Edit",
      "delete": "Hapus",
      "protected": "Terlindungi",
      "editTitle": "Edit otomasi",
      "save": "Simpan",
      "deleteTitle": "Hapus otomasi",
      "deleteDescription": "Ini menghapus {{name}} dari penyimpanan cron. Pesan chat sebelumnya tetap ada di sesi.",
      "cancel": "Batal",
      "status": {
        "system": "Sistem",
        "running": "Sedang berjalan",
        "paused": "Dijeda",
        "failed": "Gagal",
        "completed": "Selesai",
        "noSchedule": "Tanpa jadwal",
        "active": "Aktif"
      },
      "origin": {
        "system": "Sistem",
        "unknown": "Tidak ada chat tertaut"
      },
      "channels": {
        "api": "API",
        "cli": "CLI",
        "dingtalk": "DingTalk",
        "discord": "Discord",
        "email": "Email",
        "feishu": "Feishu",
        "matrix": "Matrix",
        "msteams": "Microsoft Teams",
        "qq": "QQ",
        "slack": "Slack",
        "telegram": "Telegram",
        "wechat": "WeChat",
        "wecom": "WeCom",
        "weixin": "WeChat",
        "whatsapp": "WhatsApp"
      },
      "schedule": {
        "at": "Pada {{time}}",
        "every": "Setiap {{duration}}",
        "cron": "Cron {{expr}}",
        "cronWithTz": "Cron {{expr}} · {{tz}}",
        "withTz": "{{summary}} · {{tz}}",
        "dailyAt": "Setiap hari pukul {{time}}",
        "weekdaysAt": "Hari kerja pukul {{time}}",
        "hourlyAt": "Setiap jam pada :{{minute}}",
        "hourlyWindow": "Setiap jam {{start}}-{{end}} pada :{{minute}}",
        "local": "Pemicu lokal",
        "custom": "Jadwal khusus"
      },
      "next": {
        "paused": "Dijeda",
        "pending": "Sedang berjalan",
        "local": "Menunggu pemicu",
        "none": "Tidak ada jadwal berikutnya"
      },
      "message": {
        "showMore": "Tampilkan pesan lengkap",
        "showLess": "Tampilkan lebih sedikit"
      },
      "fields": {
        "name": "Nama",
        "message": "Pesan",
        "scheduleType": "Jenis jadwal",
        "every": "Setiap",
        "unit": "Unit",
        "cronExpression": "Ekspresi cron",
        "timezone": "Zona waktu",
        "runAt": "Jalankan pada"
      },
      "scheduleTypes": {
        "every": "Interval",
        "cron": "Cron",
        "at": "Sekali"
      },
      "everyUnits": {
        "second": "Detik",
        "minute": "Menit",
        "hour": "Jam",
        "day": "Hari"
      },
      "validation": {
        "nameRequired": "Nama wajib diisi.",
        "messageRequired": "Pesan wajib diisi.",
        "intervalRequired": "Interval harus berupa angka positif.",
        "cronRequired": "Ekspresi cron wajib diisi.",
        "timeRequired": "Waktu eksekusi wajib diisi.",
        "futureRequired": "Waktu eksekusi harus berada di masa depan."
      }
    },
    "oauth": {
      "authentication": "Autentikasi OAuth",
      "signIn": "Masuk",
      "signingIn": "Masuk...",
      "signInAgain": "Masuk lagi",
      "signOut": "Keluar",
      "signedInAs": "Masuk sebagai {{account}}",
      "signInHelp": "Inicia sesión desde este dispositivo; no se guarda API key en config.",
      "signInRequired": "Perlu masuk",
      "signInBeforeSaving": "Inicia sesión antes de guardar este proveedor OAuth como proveedor activo.",
      "signedIn": "Sudah masuk",
      "notSignedIn": "Belum masuk"
    },
    "skills": {
      "description": "Tinjau skill instruksi yang dapat dimuat agent ini selama percakapan.",
      "caption": "{{available}} tersedia · {{total}} total",
      "featured": "Skill agent",
      "empty": "Tidak ada skill yang tersedia.",
      "sourceWorkspace": "Kustom",
      "sourceBuiltin": "Bawaan",
      "statusAvailable": "Tersedia",
      "statusUnavailable": "Tidak tersedia",
      "unavailableReason": "Kurang: {{reason}}",
      "openDetails": "Buka detail {{name}}",
      "loadingDetail": "Memuat detail skill...",
      "loadFailed": "Tidak dapat memuat detail skill.",
      "descriptionTitle": "Deskripsi",
      "source": "Sumber",
      "status": "Status",
      "requirements": "Kebutuhan",
      "noRequirements": "Tidak ada kebutuhan eksplisit.",
      "commands": "Perintah",
      "environment": "Variabel lingkungan",
      "missingCommands": "CLI hilang",
      "missingEnvironment": "ENV hilang",
      "unavailableReasonLabel": "Alasan tidak tersedia",
      "rawInstructions": "SKILL.md mentah",
      "rawInstructionsEmpty": "Tidak ada instruksi mentah.",
      "detailDescription": "Detail untuk {{name}}."
    },
    "voice": {
      "selectProvider": "Pilih penyedia",
      "configureProvider": "Konfigurasi penyedia",
      "languageAuto": "Auto"
    }
  },
  "chat": {
    "fallbackTitle": "Obrolan {{id}}",
    "forkTitle": "Cabang: {{title}}",
    "loading": "Memuat…",
    "noSessions": "Belum ada sesi.",
    "showMore": "Tampilkan {{count}} lagi",
    "collapsed": "{{count}} obrolan diciutkan",
    "showLess": "Tampilkan lebih sedikit",
    "actions": "Aksi obrolan untuk {{title}}",
    "newInProject": "Mulai obrolan baru di {{project}}",
    "activity": {
      "running": "Agent running",
      "complete": "Agent finished",
      "updated": "New activity"
    },
    "pin": "Pin",
    "unpin": "Unpin",
    "rename": "Rename",
    "renameTitle": "Rename chat",
    "renameDescription": "Choose a local sidebar name for this chat.",
    "renamePlaceholder": "Chat name",
    "renameProjectTitle": "Rename project",
    "renameProjectDescription": "Choose a local sidebar name for this project.",
    "renameProjectPlaceholder": "Project name",
    "renameSave": "Save",
    "archive": "Archive",
    "unarchive": "Unarchive",
    "showArchived": "Show archived",
    "hideArchived": "Hide archived",
    "delete": "Hapus",
    "newChat": "Obrolan baru",
    "groups": {
      "pinned": "Pinned",
      "all": "Chats",
      "projects": "Projects",
      "today": "Today",
      "yesterday": "Yesterday",
      "earlier": "Earlier",
      "archived": "Archived"
    }
  },
  "deleteConfirm": {
    "title": "Hapus obrolan ini?",
    "description": "Tindakan ini tidak dapat dibatalkan.",
    "cancel": "Batal",
    "confirm": "Hapus",
    "automationsDescription": "Obrolan ini memiliki automasi terjadwal. Menghapusnya juga akan menghapus automasi tersebut.",
    "moreAutomations": "+ {{count}} lagi",
    "confirmWithAutomations": "Hapus",
    "schedule": {
      "at": "{{time}}",
      "every": "Setiap {{duration}}",
      "cron": "Cron {{expr}}",
      "cronWithTz": "Cron {{expr}} · {{tz}}",
      "local": "Pemicu lokal",
      "unknown": "Jadwal khusus"
    },
    "next": {
      "label": "Berikutnya: {{time}}",
      "disabled": "Dijeda",
      "local": "Menunggu pemicu",
      "none": "Tidak ada jadwal berikutnya"
    }
  },
  "connection": {
    "idle": "Idle",
    "connecting": "Menghubungkan…",
    "open": "Terhubung",
    "reconnecting": "Menyambung ulang…",
    "closed": "Terputus",
    "error": "Kesalahan koneksi"
  },
  "thread": {
    "loadingConversation": "Memuat percakapan…",
    "empty": {
      "greetings": {
        "workOn": "Apa yang kita kerjakan bersama?",
        "start": "Kita mulai dari mana?",
        "build": "Apa yang kita bangun hari ini?",
        "tackle": "Apa yang kita selesaikan bersama?"
      },
      "quickActions": {
        "plan": {
          "title": "Buat rencana proyek",
          "prompt": "Buat rencana proyek ringkas untuk apa yang sebaiknya saya bangun berikutnya."
        },
        "analyze": {
          "title": "Analisis data ini",
          "prompt": "Bantu saya menganalisis data ini dan soroti pola yang paling penting."
        },
        "brainstorm": {
          "title": "Brainstorm ide",
          "prompt": "Brainstorm beberapa ide praktis dan tradeoff untuk masalah ini."
        },
        "code": {
          "title": "Tulis kode",
          "prompt": "Bantu saya menulis kode untuk tugas ini, mulai dari perubahan berguna yang paling kecil."
        },
        "summarize": {
          "title": "Ringkas dokumen ini",
          "prompt": "Ringkas dokumen ini dan daftar poin-poin utamanya."
        },
        "more": {
          "title": "Lainnya",
          "prompt": "Tunjukkan beberapa cara berguna Anda dapat membantu di workspace ini."
        }
      },
      "imageQuickActions": {
        "icon": {
          "title": "Desain ikon aplikasi",
          "prompt": "Buat ikon aplikasi 1:1 yang bersih untuk nanobot: robot ramah, gaya vektor sederhana, palet biru dan putih lembut, tanpa teks."
        },
        "sticker": {
          "title": "Buat stiker",
          "prompt": "Buat gambar gaya stiker yang lucu dari asisten robot kecil, latar terlihat transparan, ekspresif dan menyenangkan."
        },
        "poster": {
          "title": "Buat poster",
          "prompt": "Buat konsep poster yang rapi untuk asisten AI pribadi, komposisi modern, hierarki visual kuat, cocok untuk landing page."
        },
        "product": {
          "title": "Mockup produk",
          "prompt": "Buat gambar mockup produk yang bersih untuk aplikasi web AI percakapan, antarmuka minimal, pencahayaan premium, bingkai perangkat realistis."
        },
        "portrait": {
          "title": "Potret bergaya",
          "prompt": "Buat potret bergaya dari pendamping AI yang ramah, pencahayaan lembut, detail tetapi tetap mudah didekati, gaya ilustrasi modern."
        },
        "edit": {
          "title": "Edit gambar",
          "prompt": "Bantu saya mengedit gambar. Minta saya mengunggah atau menyebutkan gambar terlebih dahulu, lalu buat hasil editnya."
        }
      }
    },
    "header": {
      "toggleSidebar": "Tampilkan atau sembunyikan sidebar",
      "newChat": "Mulai chat baru",
      "toggleTheme": "Alihkan tema dari header",
      "settings": "Buka pengaturan",
      "sessionInfo": "Detail sesi"
    },
    "sessionInfo": {
      "title": "Sesi",
      "untitled": "Chat tanpa judul",
      "automations": "Otomasi",
      "count": "{{count}}",
      "loading": "Memuat otomasi...",
      "loadFailed": "Tidak dapat memuat otomasi.",
      "empty": "Belum ada otomasi dalam sesi ini.",
      "disabled": "Mati",
      "schedule": {
        "at": "Pada {{time}}",
        "every": "Setiap {{duration}}",
        "cron": "Cron {{expr}}",
        "cronWithTz": "Cron {{expr}} · {{tz}}",
        "local": "Pemicu lokal",
        "unknown": "Jadwal khusus"
      },
      "next": {
        "label": "Berikutnya {{time}}",
        "pending": "Segera berjalan",
        "disabled": "Dijeda",
        "local": "Menunggu pemicu",
        "none": "Tidak ada jadwal berikutnya"
      }
    },
    "composer": {
      "placeholderThread": "Ketik pesan Anda…",
      "placeholderHero": "Apa yang sedang Anda pikirkan?",
      "placeholderOpening": "Membuka obrolan baru…",
      "placeholderStreaming": "Model sedang merespons…",
      "inputAria": "Input pesan",
      "sendHint": "Enter untuk kirim · Shift+Enter untuk baris baru",
      "runRuntimeTitle": "Berjalan · {{elapsed}}",
      "goalStateStrip": "Tujuan · {{label}}",
      "goalStateFallback": "Tujuan",
      "goalStateExpandAria": "Lihat tujuan lengkap",
      "goalStateSheetTitle": "Tujuan",
      "goalStateCloseAria": "Tutup tujuan",
      "send": "Kirim pesan",
      "stop": "Hentikan respons",
      "modelNotConfigured": "Model belum dikonfigurasi",
      "configureModel": "Konfigurasi model",
      "queued": {
        "label": "Panduan antrean",
        "guide": "Pandu",
        "delete": "Hapus panduan",
        "edit": "Edit panduan",
        "drag": "Seret untuk mengurutkan"
      },
      "attachImage": "Lampirkan gambar",
      "imageMode": {
        "label": "Buat gambar",
        "toggle": "Alihkan mode pembuatan gambar",
        "placeholder": "Deskripsikan atau edit gambar…",
        "aspectAria": "Rasio aspek gambar",
        "aspectLabel": "Rasio gambar",
        "aspect": {
          "auto": "Otomatis",
          "1_1": "Persegi 1:1",
          "3_4": "Potret 3:4",
          "9_16": "Story 9:16",
          "4_3": "Lanskap 4:3",
          "16_9": "Lebar 16:9"
        }
      },
      "tools": {
        "search": "Cari",
        "reason": "Bernalar",
        "deepResearch": "Riset mendalam",
        "voice": "Input suara"
      },
      "voice": {
        "hint": "Klik untuk mendikte atau tahan",
        "stop": "Hentikan rekaman",
        "transcribing": "Mentranskripsi...",
        "recordingStatus": "Merekam {{time}}"
      },
      "voiceErrors": {
        "unsupported": "Input suara tidak didukung di browser ini.",
        "permission": "Izin mikrofon diperlukan.",
        "notConfigured": "Konfigurasikan penyedia transkripsi terlebih dahulu.",
        "tooLong": "Rekaman terlalu panjang.",
        "tooShort": "Tahan sedikit lebih lama untuk merekam suara.",
        "noInput": "Tidak ada input mikrofon yang terdeteksi.",
        "failed": "Tidak dapat mentranskripsi audio."
      },
      "slash": {
        "ariaLabel": "Perintah slash",
        "label": "perintah",
        "navigateHint": "↑↓ Pilih",
        "selectHint": "Enter/Tab Sisipkan",
        "closeHint": "Esc Tutup",
        "commands": {
          "new": {
            "title": "Obrolan baru",
            "description": "Reset chat ini dan mulai percakapan baru."
          },
          "stop": {
            "title": "Hentikan tugas saat ini",
            "description": "Batalkan giliran agent yang sedang aktif di chat ini."
          },
          "restart": {
            "title": "Mulai ulang nanobot",
            "description": "Mulai ulang proses bot di tempat."
          },
          "status": {
            "title": "Tampilkan status",
            "description": "Tampilkan status runtime, provider, dan channel."
          },
          "model": {
            "title": "Model",
            "description": "Tampilkan atau ganti preset model aktif."
          },
          "history": {
            "title": "Tampilkan riwayat",
            "description": "Cetak N pesan percakapan tersimpan terbaru."
          },
          "dream": {
            "title": "Jalankan Dream",
            "description": "Picu konsolidasi memori secara manual."
          },
          "dream_log": {
            "title": "Tampilkan log Dream",
            "description": "Tampilkan perubahan dari konsolidasi Dream terakhir."
          },
          "dream_restore": {
            "title": "Pulihkan memori",
            "description": "Kembalikan memori ke snapshot Dream sebelumnya."
          },
          "dream_prompt": {
            "title": "Memori Dream",
            "description": "Atur cara Dream menyusun memori workspace ini."
          },
          "goal": {
            "title": "Tujuan jangka panjang",
            "description": "Instruksikan agen memperlakukan ini sebagai tujuan multi-langkah yang berkelanjutan."
          },
          "trigger": {
            "title": "Buat trigger lokal",
            "description": "Buat trigger CLI yang terikat ke sesi chat ini."
          },
          "help": {
            "title": "Tampilkan bantuan",
            "description": "Daftar perintah slash yang tersedia."
          },
          "pairing": {
            "title": "Pemasangan",
            "description": "Kelola permintaan pemasangan."
          }
        },
        "badges": {
          "current": "Saat ini",
          "recent": "Terbaru"
        },
        "details": {
          "goalActive": "Tujuan sedang berjalan",
          "goalReady": "Mulai tujuan berkelanjutan",
          "history": "Tampilkan pesan terbaru",
          "stopRunning": "Sedang berjalan"
        }
      },
      "encoding": "Memproses…",
      "remove": "Hapus lampiran",
      "normalizedSizeHint": "{{orig}} → {{current}} (auto)",
      "imageRejected": {
        "unsupported_type": "Tipe file tidak didukung",
        "too_many_images": "Maksimal {{max}} gambar per pesan",
        "magic_mismatch": "File ini tampaknya bukan gambar asli",
        "decode_failed": "Tidak dapat mendekode gambar ini",
        "too_large": "Gambar terlalu besar — coba yang lebih kecil",
        "io": "Tidak dapat membaca file ini"
      },
      "mentions": {
        "ariaLabel": "Aplikasi",
        "label": "Aplikasi",
        "cliGroup": "App CLI",
        "mcpGroup": "Layanan MCP",
        "cliBadge": "CLI",
        "mcpBadge": "MCP",
        "cliDescription": "Gunakan @{{name}} sebagai aplikasi CLI lokal",
        "mcpDescription": "Gunakan @{{name}} sebagai server MCP"
      },
      "workspace": {
        "accessAria": "Mode akses workspace",
        "projectAria": "Pilih proyek",
        "projectPlaceholder": "Pilih proyek",
        "default": "Izin default",
        "full": "Akses penuh"
      }
    },
    "scrollToBottom": "Gulir ke bawah",
    "loadEarlier": "Muat pesan sebelumnya",
    "forkedFromHistory": "Fork dari riwayat",
    "promptNavigator": {
      "open": "Buka navigator prompt",
      "title": "Prompt",
      "search": "Cari prompt",
      "noResults": "Tidak ada prompt yang cocok.",
      "jumpTo": "Lompat ke prompt: {{label}}"
    }
  },
  "message": {
    "streaming": "sedang mengalir",
    "assistantTyping": "Asisten sedang mengetik",
    "toolSingle": "Menggunakan sebuah alat",
    "toolMany": "Menggunakan {{count}} alat",
    "toolSummary": "{{count}} alat",
    "toolSummaryMany": "{{count}} alat",
    "reasoningTools": "Penalaran · {{count}} alat",
    "reasoningToolsSingular": "Penalaran · 1 alat",
    "reasoning": "Penalaran",
    "reasoningStreaming": "Berpikir…",
    "reasoningSummary": "Penalaran",
    "agentActivitySummary": "{{reasoning}} langkah · {{tools}} panggilan alat",
    "agentActivityToolsOnly": "{{tools}} panggilan alat",
    "agentActivityLiveSummary": "Berjalan… · {{reasoning}} langkah · {{tools}} panggilan alat",
    "agentActivityLiveToolsOnly": "Berjalan… · {{tools}} panggilan alat",
    "imageAttachment": "Lampiran gambar",
    "forkFromHere": "Fork",
    "copyReply": "Salin",
    "copiedReply": "Disalin",
    "turnLatencyTitle": "Waktu respons (ujung ke ujung)",
    "fileEditViewDiff": "Lihat diff",
    "fileEditViewLargeDiff": "Lihat diff besar",
    "fileEditDiffLineCount": "{{count}} baris",
    "fileEditUnchangedLinesHidden": "{{count}} baris tidak berubah disembunyikan",
    "fileEditShowMoreLines": "Tampilkan {{count}} baris lagi",
    "fileEditShowFewerLines": "Tampilkan lebih sedikit baris",
    "fileEditOpenFile": "Buka file",
    "fileEditDiffTruncated": "Diff dipotong. Buka file untuk melihat perubahan lengkap.",
    "activityThinkingFor": "Berpikir selama {{duration}}",
    "activityThought": "Selesai berpikir",
    "activityThoughtFor": "Selesai berpikir dalam {{duration}}",
    "activityWorkingFor": "Memproses selama {{duration}}",
    "activityWorked": "Selesai memproses",
    "activityWorkedFor": "Diproses selama {{duration}}",
    "cliActivityRunningOne": "Menggunakan @{{name}}",
    "cliActivityRanOne": "Menggunakan @{{name}} selesai",
    "cliActivityFailedOne": "@{{name}} gagal",
    "cliActivityRunningMany": "Menggunakan {{count}} aplikasi CLI",
    "cliActivityRanMany": "{{count}} aplikasi CLI digunakan",
    "cliActivityFailedMany": "{{count}} aplikasi CLI gagal",
    "cliRunRunning": "Menggunakan",
    "cliRunRan": "Digunakan",
    "cliRunFailed": "Gagal",
    "automationSourceFallback": "Otomatisasi",
    "automationTriggered": "Dipicu otomatis"
  },
  "lightbox": {
    "title": "Pratinjau gambar",
    "open": "Lihat gambar",
    "prev": "Gambar sebelumnya",
    "next": "Gambar berikutnya",
    "close": "Tutup pratinjau"
  },
  "filePreview": {
    "aria": "Pratinjau file",
    "close": "Tutup pratinjau file",
    "loading": "Memuat pratinjau...",
    "failed": "Tidak dapat mempratinjau file ini.",
    "routeMissing": "Pratinjau file memerlukan gateway terbaru. Mulai ulang nanobot gateway lalu coba lagi.",
    "resize": "Ubah ukuran pratinjau file",
    "truncated": "Pratinjau dipotong karena file ini besar."
  },
  "code": {
    "fallbackLanguage": "kode",
    "copyAria": "Salin kode",
    "copy": "Salin",
    "copied": "Tersalin"
  },
  "common": {
    "dismiss": "Tutup"
  },
  "errors": {
    "messageTooBig": {
      "title": "Pesan terlalu besar",
      "body": "Server menolak pesan terakhir karena melebihi batas ukuran. Hapus beberapa gambar atau gunakan berkas yang lebih kecil, lalu coba lagi."
    },
    "workspaceScopeRejected": {
      "title": "Workspace tidak berubah",
      "body": "Gateway menolak proyek atau mode akses yang diminta, jadi Nanobot tetap memakai workspace sebelumnya."
    }
  },
  "workspace": {
    "dialog": {
      "defaultProject": "Workspace default",
      "manual": "Tempel path",
      "manualPlaceholder": "/Users/name/project",
      "usePath": "Gunakan path",
      "absolutePathRequired": "Masukkan path folder absolut di mesin ini."
    }
  }
}
