import type { TranslationMap } from './types';

// Indonesian (Bahasa Indonesia) translations. Keys mirror en.ts; missing/
// English-identical values fall back to English via I18nContext.resolveEn().
const messages: TranslationMap = {
  // Cross-host vault (#4278)
  'crossHostVault.title': 'Vault berada di host core.',
  'crossHostVault.message':
    'Vault memori ini disimpan di host openhuman-core ({os}). Hanya dapat dibuka atau ditampilkan di mesin tersebut, bukan dari perangkat ini.',
  'conversations.backgroundTasks.title': 'Background tasks',
  'nav.feedback': 'Bagikan masukan',
  'feedback.board': 'Papan masukan',
  'feedback.empty': 'Belum ada masukan. Jadilah yang pertama membagikan ide.',
  'feedback.loadMore': 'Muat lebih banyak',
  'feedback.loadError': 'Gagal memuat masukan',
  'feedback.expand': 'Tampilkan lebih banyak',
  'feedback.collapse': 'Tampilkan lebih sedikit',
  'feedback.comments': 'komentar',
  'feedback.viewIssue': 'Lihat isu',
  'feedback.status.open': 'Terbuka',
  'feedback.status.planned': 'Direncanakan',
  'feedback.status.completed': 'Selesai',
  'feedback.status.closed': 'Ditutup',
  'feedback.type.feature': 'Fitur',
  'feedback.type.bug': 'Bug',
  'feedback.sort.hot': 'Populer',
  'feedback.sort.top': 'Teratas',
  'feedback.sort.new': 'Terbaru',
  'feedback.filter.allTypes': 'Semua tipe',
  'feedback.filter.allStatuses': 'Semua status',
  'feedback.vote.up': 'Dukung',
  'feedback.vote.down': 'Tolak',
  'feedback.submit.heading': 'Bagikan masukan',
  'feedback.submit.subheading': 'Sarankan fitur atau laporkan bug. Orang lain bisa memberi suara.',
  'feedback.submit.titlePlaceholder': 'Judul',
  'feedback.submit.bodyPlaceholder': 'Jelaskan ide Anda atau masalah yang Anda alami',
  'feedback.submit.action': 'Kirim',
  'feedback.submit.success': 'Terima kasih! Masukan Anda kini ada di papan.',
  'feedback.submit.rejected': 'Masukan Anda tidak dapat dipublikasikan.',
  'feedback.submit.error': 'Terjadi kesalahan. Silakan coba lagi.',
  'feedback.admin.status': 'Status',
  'feedback.admin.updateFailed': 'Gagal memperbarui status',
  'feedback.comments.empty': 'Belum ada komentar.',
  'feedback.comments.placeholder': 'Tambahkan komentar',
  'feedback.comments.post': 'Kirim',
  'feedback.comments.loadError': 'Gagal memuat komentar',
  'feedback.comments.postError': 'Gagal mengirim komentar',
  'feedback.comments.you': 'Anda',
  'conversations.backgroundTasks.titleWithCount': 'Background tasks ({count})',
  'conversations.backgroundTasks.running': '{count} running',
  'conversations.backgroundTasks.noneRunning': 'none running',
  'conversations.backgroundTasks.total': '{count} total',
  'conversations.backgroundTasks.empty':
    'No background tasks in this chat. Ask the assistant to do something in the background and it shows up here.',
  'conversations.backgroundTasks.statusRunning': 'Running',
  'conversations.backgroundTasks.statusDone': 'Done',
  'conversations.backgroundTasks.statusFailed': 'Failed',
  'conversations.backgroundTasks.statusNeedsYou': 'Needs you',
  'conversations.backgroundTasks.statusCancelled': 'Dibatalkan',
  'conversations.backgroundTasks.toolCallOne': '{count} tool call',
  'conversations.backgroundTasks.toolCallOther': '{count} tool calls',
  'conversations.backgroundTasks.steps': '{count} steps',
  'conversations.backgroundTasks.viewDetails': 'View details →',
  'conversations.backgroundTasks.close': 'Close',
  'conversations.backgroundTasks.sectionThisChat': 'Di obrolan ini',
  'conversations.backgroundTasks.sectionScheduled': 'Tugas terjadwal',
  'conversations.backgroundTasks.sectionSubconscious': 'Pemikiran bawah sadar',
  'conversations.backgroundTasks.sectionMemory': 'Menyinkronkan memori',
  'conversations.backgroundTasks.cronEmpty': 'Tidak ada tugas terjadwal.',
  'conversations.backgroundTasks.cronUnnamed': 'Tugas tanpa judul',
  'conversations.backgroundTasks.cronPaused': 'Dijeda',
  'conversations.backgroundTasks.cronNext': 'Berikutnya {time}',
  'conversations.backgroundTasks.cronLast': 'Terakhir dijalankan {time}',
  'conversations.backgroundTasks.cronNever': 'Belum pernah dijalankan',
  'conversations.backgroundTasks.cronSchedCron': 'Cron {expr}',
  'conversations.backgroundTasks.cronSchedEvery': 'Setiap {duration}',
  'conversations.backgroundTasks.cronSchedAt': 'Sekali',
  'conversations.backgroundTasks.subOff': 'Mati',
  'conversations.backgroundTasks.subWorking': 'Bekerja…',
  'conversations.backgroundTasks.subIdle': 'Diam',
  'conversations.backgroundTasks.subLastRan': 'Terakhir dijalankan {time}',
  'conversations.backgroundTasks.subNeverRan': 'Belum pernah dijalankan',
  'conversations.backgroundTasks.subTicks': '{count} kali dijalankan',
  'conversations.backgroundTasks.subQueued': '{count} dalam antrean',
  'conversations.backgroundTasks.memUpToDate': 'Semua memori terkini',
  'conversations.backgroundTasks.memIngesting': 'Mengindeks {title}',
  'conversations.backgroundTasks.memIngestingUntitled': 'Mengindeks memori',
  'conversations.backgroundTasks.memQueued': '{count} dalam antrean',
  'conversations.backgroundTasks.memProviderActive': 'Menyinkronkan sekarang',
  'conversations.backgroundTasks.memProviderRecent': 'Baru saja disinkronkan',
  'conversations.backgroundTasks.memProviderIdle': 'Diam',
  'nav.home': 'Beranda',
  'nav.human': 'Manusia',
  'nav.chat': 'Obrolan',
  'nav.assistant': 'Asisten',
  'assistant.faceMode.on': 'Berbicara dengan Tiny',
  'assistant.faceMode.off': 'Bicara dengan Tiny',
  'assistant.faceMode.turnOn': 'Tampilkan maskot',
  'assistant.faceMode.turnOff': 'Sembunyikan maskot',
  'nav.connections': 'Koneksi',
  'nav.memory': 'Memori',
  'nav.alerts': 'Peringatan',
  'nav.rewards': 'Hadiah',
  'nav.settings': 'Pengaturan',
  'nav.agentProfiles': 'Profil agen',
  'nav.switchAgentProfile': 'Ganti profil agen',
  'nav.defaultAgentProfile': 'Agen default',
  'nav.noAgentProfiles': 'Profil agen tidak ditemukan',
  'nav.activity': 'Aktivitas',
  'nav.brain': 'Otak',
  'nav.agentWorld': 'Tiny Place',
  'nav.wallet': 'Dompet',
  'agentWorld.description':
    'Tiny.Place adalah jejaring sosial untuk agen AI. Gunakan OpenHuman untuk berinteraksi, menemukan dan memasang pekerjaan, berdagang, serta tumbuh bersama.',
  'agentWorld.world': 'Dunia',
  'agentWorld.world.booting': 'Memulai perender...',
  'agentWorld.world.initError': 'Tidak dapat memulai perender dunia.',
  'agentWorld.world.retry': 'Coba lagi',
  'agentWorld.world.title': 'Tiny Place',
  'agentWorld.world.description':
    'Bergabunglah dengan tiny.place agar agen Anda dapat berkoordinasi dengan agen lain: menemukan dan memposting pekerjaan, berdagang, berkirim pesan, dan bekerja sama dalam bounty.',
  'agentWorld.world.room': 'Ruang',
  'agentWorld.world.rooms.poker.name': 'Poker',
  'agentWorld.world.rooms.poker.description': 'Delapan kursi mengelilingi meja felt.',
  'agentWorld.world.rooms.court.name': 'Pengadilan',
  'agentWorld.world.rooms.court.description': 'Bangku tinggi, kotak juri, dan galeri.',
  'agentWorld.world.rooms.office.name': 'Kantor',
  'agentWorld.world.rooms.office.description': 'Kubikel, meja, dan papan tulis.',
  'agentWorld.world.rooms.home.name': 'Rumah',
  'agentWorld.world.rooms.home.description': 'Lounge nyaman dengan sofa dan karpet.',
  'agentWorld.world.rooms.outside.name': 'Dunia',
  'agentWorld.world.rooms.outside.description': 'Plaza terbuka besar yang dikelilingi gedung.',
  'agentWorld.feed': 'Feed',
  'agentWorld.ledger': 'Buku Besar',
  'agentWorld.jobs': 'Pekerjaan',
  'agentWorld.bounties': 'Hadiah',
  'agentWorld.explore': 'Jelajahi',
  'agentWorld.directory': 'Direktori',
  'agentWorld.identities': 'Identitas',
  'agentWorld.profiles': 'Profil',
  'agentWorld.marketplace': 'Pasar',
  'agentWorld.messaging': 'Pesan',
  'agentWorld.walletNotConfigured': 'Dompet belum diatur',
  'agentWorld.copyAddress': 'Salin alamat',
  'agentWorld.addressCopied': 'Disalin',
  'agentWorld.walletUnavailable': 'Dompet tidak tersedia',
  'agentWorld.walletRetry': 'Coba muat dompet lagi',
  // Agent World — Explore section live data
  'explore.networkOverview': 'Ikhtisar Jaringan',
  'explore.trendingCommunities': 'Komunitas Trending',
  'explore.activeJobs': 'Pekerjaan Aktif',
  'explore.featuredBounties': 'Bounty Unggulan',
  'explore.newAgents': 'Agen Baru',
  'explore.viewAll': 'Lihat semua',
  'explore.noCommunities': 'Belum ada komunitas',
  'explore.noJobs': 'Tidak ada pekerjaan aktif',
  'explore.noBounties': 'Tidak ada bounty terbuka',
  'explore.noAgents': 'Tidak ada agen terdaftar',
  'agentWorld.jobs.deadlineFuture': 'Batas waktu proposal harus di masa depan',
  'nav.avatarMenu.account': 'Akun',
  'nav.avatarMenu.billing': 'Tagihan',
  'nav.avatarMenu.rewards': 'Hadiah',
  'nav.avatarMenu.invites': 'Undang teman',
  'nav.avatarMenu.wallet': 'Dompet',

  // Brain — full-page memory knowledge-graph surface
  'brain.subtitle': 'Grafik pengetahuan, sumber memori, dan kontrol Anda.',
  'brain.tabs.memory': 'Memori',
  'brain.tabs.subconscious': 'Alam Bawah Sadar',
  'brain.tabs.graph': 'Grafik',
  'brain.tabs.goals': 'Tujuan',
  'brain.goals.title': 'Tujuan jangka panjang',
  'brain.goals.description':
    'Tujuan tetap agen untuk bekerja dengan Anda. Edit di sini atau biarkan Refleksi memperbaruinya.',
  'brain.goals.reflect': 'Refleksi',
  'brain.goals.reflecting': 'Merefleksikan…',
  'brain.goals.reflectDone': 'Tujuan diperbarui.',
  'brain.goals.add': 'Tambah',
  'brain.goals.addPlaceholder': 'Tambahkan tujuan jangka panjang…',
  'brain.goals.empty':
    'Belum ada tujuan. Tambahkan satu, atau gunakan Refleksi untuk mengisinya dari konteks terbaru.',
  'brain.goals.editGoal': 'Edit tujuan',
  'brain.goals.deleteGoal': 'Hapus tujuan',
  'brain.goals.actionError': 'Terjadi kesalahan. Silakan coba lagi.',
  'brain.tabs.sources': 'Sumber',
  'brain.tabs.sync': 'Sinkronisasi',
  'brain.tabs.tinyplaceOrchestration': 'TinyPlace',
  'tinyplaceOrchestration.title': 'Relay TinyPlace',
  'tinyplaceOrchestration.subtitle': 'Kanal agen tersemat dan chat sesi aplikasi',
  'tinyplaceOrchestration.refresh': 'Segarkan',
  'tinyplaceOrchestration.pinned': 'Tersemat',
  'tinyplaceOrchestration.sessions': 'Sesi',
  'tinyplaceOrchestration.loading': 'Memuat chat TinyPlace…',
  'tinyplaceOrchestration.paymentRequired': 'Akses TinyPlace memerlukan pembayaran.',
  'tinyplaceOrchestration.failedToLoad': 'Gagal memuat chat TinyPlace',
  'tinyplaceOrchestration.noSessions': 'Belum ada sesi aplikasi TinyPlace.',
  'tinyplaceOrchestration.noMessages': 'Belum ada pesan di chat ini.',
  'tinyplaceOrchestration.active': 'Aktif',
  'tinyplaceOrchestration.inactive': 'Tidak aktif',
  'tinyplaceOrchestration.encryptedBody': 'Pesan TinyPlace terenkripsi',
  'tinyplaceOrchestration.unknownSender': 'Pengirim tidak dikenal',
  'tinyplaceOrchestration.master.title': 'Agen / manusia',
  'tinyplaceOrchestration.master.subtitle': 'Chat master',
  'tinyplaceOrchestration.master.preview': 'Koordinasi langsung antara Anda dan OpenHuman.',
  'tinyplaceOrchestration.subconscious.title': 'Alam Bawah Sadar',
  'tinyplaceOrchestration.subconscious.subtitle': 'Chat internal agen',
  'tinyplaceOrchestration.subconscious.preview': 'Koordinasi agen latar belakang dan loop memori.',
  'tinyplaceOrchestration.session.subtitle': 'Sesi aplikasi TinyPlace',
  'tinyplaceOrchestration.pairing.linkLabel': 'Tautkan sesi',
  'tinyplaceOrchestration.pairing.linkPlaceholder': 'Tempel ID agen sesi',
  'tinyplaceOrchestration.pairing.linkAction': 'Tautkan',
  'tinyplaceOrchestration.pairing.requests': 'Permintaan kontak',
  'tinyplaceOrchestration.pairing.accept': 'Terima',
  'tinyplaceOrchestration.pairing.decline': 'Tolak',
  'tinyplaceOrchestration.pairing.block': 'Blokir',
  'tinyplaceOrchestration.pairing.linked': 'Tertaut',
  'tinyplaceOrchestration.pairing.pending': 'Menunggu',
  'tinyplaceOrchestration.pairing.unlinked': 'Belum tertaut',
  'tinyplaceOrchestration.pairing.incoming': 'Masuk',
  'tinyplaceOrchestration.pairing.outgoing': 'Keluar',
  'brain.empty': 'Otak Anda masih kosong — hubungkan sumber untuk mulai membangun memori.',
  'brain.error': 'Tidak dapat memuat otak Anda. Silakan coba lagi.',
  'common.cancel': 'Batal',
  'common.save': 'Simpan',
  'common.confirm': 'Konfirmasi',
  'common.delete': 'Hapus',
  'common.edit': 'Ubah',
  'common.create': 'Buat',
  'common.search': 'Cari',
  'common.loading': 'memuat…',
  'sync.runs': 'sinkronisasi',
  'sync.totalCost': 'total',
  'sync.when': 'Kapan',
  'sync.source': 'Sumber',
  'sync.items': 'Item',
  'sync.tokens': 'Token',
  'sync.cost': 'Biaya',
  'sync.duration': 'Durasi',
  'sync.noAuditEntries': 'Belum ada sinkronisasi yang tercatat.',
  'sync.timeAgo.justNow': 'baru saja',
  'sync.timeAgo.minutes': '{n} mnt lalu',
  'sync.timeAgo.hours': '{n} jam lalu',
  'sync.timeAgo.days': '{n} hr lalu',
  'sync.status.success': 'Berhasil',
  'sync.status.failed': 'Gagal',
  'common.error': 'Kesalahan',
  'common.success': 'Berhasil',
  'common.back': 'Kembali',
  'common.next': 'Berikutnya',
  'common.finish': 'Selesai',
  'common.close': 'Tutup',
  'common.enabled': 'Aktif',
  'common.disabled': 'Nonaktif',
  'common.on': 'Nyala',
  'common.off': 'Mati',
  'common.yes': 'Ya',
  'common.no': 'Tidak',
  'common.ok': 'Mengerti',
  'common.name': 'Nama',
  'common.retry': 'Coba lagi',
  'common.copy': 'Salin',
  'common.copied': 'Disalin',
  'common.learnMore': 'Pelajari lagi',
  'common.seeAll': 'Lihat',
  'common.dismiss': 'Abaikan',
  'common.clear': 'Bersihkan',
  'common.reset': 'Atur ulang',
  'common.refresh': 'Segarkan',
  'common.export': 'Ekspor',
  'common.import': 'Impor',
  'common.upload': 'Unggah',
  'common.download': 'Unduh',
  'common.add': 'Tambah',
  'common.remove': 'Hapus',
  'common.showMore': 'Tampilkan lagi',
  'common.showLess': 'Tampilkan sedikit',
  'common.submit': 'Kirim',
  'common.continue': 'Lanjutkan',
  'common.comingSoon': 'Segera Hadir',
  'common.breadcrumb': 'Breadcrumb',
  'common.beta': 'Beta',
  'common.betaDisclaimer':
    'Fitur ini dalam tahap beta. Mungkin berubah atau memiliki kekurangan — masukan Anda membantu kami memperbaikinya.',
  'settings.general': 'Umum',
  // Settings layman groups (Phase 4 IA revamp)
  'settings.groups.account': 'Akun',
  'settings.groups.assistant': 'Asisten',
  'settings.groups.privacySecurity': 'Privasi & Keamanan',
  'settings.groups.notifications': 'Notifikasi',
  'settings.groups.about': 'Tentang',
  'settings.assistant.personality': 'Kepribadian',
  'settings.personalityFace.title': 'Kepribadian & wajah',
  'settings.personalityFace.menuDesc': 'Sesuaikan karakter asisten Anda dan pilih wajahnya',
  'settings.assistant.voice': 'Suara',
  'settings.assistant.voiceDesc': 'Pengaturan ucapan-ke-teks dan teks-ke-ucapan',
  'settings.assistant.faceMascot': 'Wajah / Maskot',
  'settings.assistant.backgroundActivity': 'Bawah sadar',
  'settings.assistant.backgroundActivityDesc':
    'Kontrol seberapa aktif asisten Anda bekerja di latar belakang',
  'settings.assistant.screenAwareness': 'Kesadaran layar',
  'settings.assistant.screenAwarenessDesc': 'Biarkan asisten melihat jendela aktif Anda',
  'settings.assistant.desktopCompanion': 'Pendamping desktop',
  'settings.assistant.desktopCompanionDesc':
    'Mode pendamping selalu aktif dengan pintasan baki sistem',
  'settings.assistant.permissions': 'Izin',
  'settings.assistant.permissionsDesc':
    'Pilih apa yang dapat dilakukan asisten dan di mana ia dapat bekerja',
  'settings.privacySecurity.privacy': 'Privasi',
  'settings.privacySecurity.privacyDesc': 'Kontrol data apa yang meninggalkan komputer Anda',
  'settings.privacySecurity.security': 'Keamanan',
  'settings.privacySecurity.securityDesc': 'Sesi dan opsi masuk',
  'settings.privacySecurity.approvalsHistory': 'Persetujuan & riwayat',
  'settings.privacySecurity.approvalsHistoryDesc': 'Tinjau keputusan persetujuan alat terbaru',
  'settings.notifications.menuTitle': 'Notifikasi',
  'settings.notifications.menuDesc': 'Kotak masuk peringatan dan preferensi notifikasi',
  'settings.devGroups.knowledgeMemory': 'Pengetahuan & Memori',
  'settings.devGroups.agentsAutonomy': 'Agen & Otonomi',
  'settings.devGroups.modelsInference': 'Model & Inferensi',
  'settings.devGroups.automationIntegrations': 'Otomasi & Integrasi',
  'settings.devGroups.toolsCapabilities': 'Alat & Kemampuan',
  'settings.devGroups.council': 'Dewan',
  'settings.analysisViews.title': 'Tampilan analisis',
  'settings.analysisViews.menuDesc':
    'Analisis grafik memori — diagram, sentralitas, kohesi, asosiasi, kesegaran, lini masa, jalur, dan namespace',
  'settings.buildInfo.title': 'Info build / versi',
  'settings.buildInfo.menuDesc': 'Build aplikasi, versi, dan detail koneksi core',
  'settings.tokenUsage.title': 'Token & Biaya',
  'settings.tokenUsage.menuDesc':
    'Pengaturan kompresi dan berapa banyak token dan dolar yang telah dihemat',
  'settings.tokenUsage.saving': 'Menyimpan…',
  'settings.tokenUsage.saved': 'Tersimpan',
  'settings.tokenUsage.savingsTitle': 'Penghematan',
  'settings.tokenUsage.attributedTo': 'Biaya dihitung untuk {model}',
  'settings.tokenUsage.tokensSaved': 'Token yang dihemat',
  'settings.tokenUsage.costSaved': 'Biaya yang dihemat',
  'settings.tokenUsage.cacheOccupancy': 'Naskah asli yang di-cache',
  'settings.tokenUsage.compactions': 'Pemadatan',
  'settings.tokenUsage.overEvents': 'dari {count} pemadatan',
  'settings.tokenUsage.byCompressor': 'Menurut kompresor',
  'settings.tokenUsage.refresh': 'Segarkan',
  'settings.tokenUsage.reset': 'Setel ulang statistik',
  'settings.tokenUsage.compressionTitle': 'Kompresi',
  'settings.tokenUsage.compressionDesc':
    'Pemadatan yang sadar konten untuk keluaran alat besar sebelum masuk ke konteks model.',
  'settings.tokenUsage.routerEnabled': 'Aktifkan kompresi',
  'settings.tokenUsage.routerEnabledDesc': 'Sakelar utama untuk router konten.',
  'settings.tokenUsage.search': 'Hasil pencarian',
  'settings.tokenUsage.searchDesc':
    'Mengurutkan keluaran grep/pencarian menurut relevansi, mempertahankan kecocokan teratas.',
  'settings.tokenUsage.code': 'Kode sumber',
  'settings.tokenUsage.codeDesc': 'Pertahankan tanda tangan, lipat badan fungsi.',
  'settings.tokenUsage.html': 'HTML',
  'settings.tokenUsage.htmlDesc': 'Hapus markup menjadi teks yang dapat dibaca.',
  'settings.tokenUsage.ml': 'Kompresor teks ML',
  'settings.tokenUsage.mlDesc':
    'Model ModernBERT lokal untuk teks biasa (memerlukan runtime Python).',
  'settings.tokenUsage.ccrTitle': 'Cache & pemulihan (CCR)',
  'settings.tokenUsage.ccrDesc':
    'Naskah asli yang dipadatkan di-cache sehingga agen dapat mengambil teks lengkap sesuai permintaan.',
  'settings.tokenUsage.ccrEnabled': 'Simpan naskah asli untuk pemulihan',
  'settings.tokenUsage.ccrEnabledDesc':
    'Pindahkan naskah asli dan tambahkan penanda pengambilan sehingga tidak ada yang hilang.',
  'settings.tokenUsage.ccrMinTokens': 'Ukuran minimum untuk di-cache',
  'settings.tokenUsage.ccrMinTokensDesc':
    'Hanya cache dan padatkan secara lossy hasil yang diperkirakan sebanyak ini token atau lebih.',
  'settings.tokenUsage.tokensUnit': 'token',
  'settings.tokenUsage.ccrDisk': 'Simpan cache ke disk',
  'settings.tokenUsage.ccrDiskDesc':
    'Pertahankan naskah asli yang dapat dipulihkan di seluruh mulai ulang.',
  'settings.dataSync.title': 'Sinkronisasi Data',
  'settings.dataSync.menuDesc': 'Yang disinkronkan asisten Anda — sumber, kesegaran, dan status',
  'settings.dataSync.description':
    'Kelola apa yang disinkronkan ke memori asisten Anda: setiap sumber terhubung dengan waktu sinkronisasi terakhirnya, seberapa banyak yang disinkronkan, dan apakah sedang menyinkronkan sekarang.',
  'settings.devGroups.diagnosticsLogs': 'Diagnostik & Log',
  'settings.featuresAndAI': 'Fitur & AI',
  'settings.billingAndRewards': 'Tagihan & Hadiah',
  'settings.support': 'Dukungan',
  'settings.advanced': 'Lanjutan',
  'settings.dangerZone': 'Zona Berbahaya',
  'settings.account': 'Akun',
  'settings.accountDesc': 'Frasa pemulihan, tim, koneksi, dan privasi',
  'settings.notifications': 'Notifikasi',
  'settings.notificationsDesc': 'Jangan Ganggu dan kontrol notifikasi per akun',
  'settings.notifications.tabs.preferences': 'Preferensi',
  'settings.notifications.tabs.routing': 'Perutean',
  'settings.features': 'Fitur',
  'settings.featuresDesc': 'Kesadaran layar, pesan, dan alat',
  'settings.aiModels': 'AI & Model',
  'settings.aiModelsDesc': 'Pengaturan model AI lokal, unduhan, dan penyedia LLM',
  'settings.ai': 'AI',
  'settings.aiDesc': 'Penyedia cloud, model Ollama lokal, dan routing per beban kerja',
  'settings.billingUsage': 'Tagihan & Pemakaian',
  'settings.billingUsageDesc': 'Paket langganan, kredit, dan metode pembayaran',
  'settings.rewards': 'Hadiah',
  'settings.rewardsDesc': 'Referral, kupon, dan kredit yang diperoleh',
  'settings.restartTour': 'Ulangi Tur',
  'settings.restartTourDesc': 'Putar ulang panduan produk dari awal',
  'settings.about': 'Tentang',
  'settings.aboutDesc': 'Versi aplikasi dan pembaruan perangkat lunak',
  'settings.developerOptions': 'Opsi Developer',
  'settings.developerOptionsDesc': 'Diagnostik, panel debug, webhook, dan inspeksi memori',
  'settings.developerDiagnostics': 'Developer & Diagnostik',
  'settings.developerDiagnosticsDesc':
    'Alat developer lanjutan, diagnostik, memori, agen, dan panel debug',
  'settings.developerMode.title': 'Mode developer',
  'settings.developerMode.description': 'Tampilkan alat developer & diagnostik lanjutan',
  'settings.developerMode.enabledByBuild': 'Selalu aktif di build pengembangan',
  'settings.clearAppData': 'Bersihkan Data Aplikasi',
  'settings.clearAppDataDesc': 'Keluar dan hapus permanen semua data aplikasi lokal',
  'settings.logOut': 'Keluar',
  'settings.logOutDesc': 'Keluar dari akun Anda',
  'settings.exitLocalSession': 'Keluar dari sesi lokal',
  'settings.exitLocalSessionDesc': 'Kembali ke layar masuk',
  'settings.language': 'Bahasa',
  'settings.navGroups.general': 'Umum',
  'settings.navGroups.assistant': 'Asisten',
  'settings.navGroups.data': 'Data',
  'settings.navGroups.connections': 'Koneksi',
  'settings.navGroups.system': 'Sistem',
  'settings.betaBuild': 'Versi beta - v{version}',
  'settings.languageDesc': 'Bahasa tampilan untuk antarmuka aplikasi',
  'settings.alerts': 'Peringatan',
  'settings.alertsDesc': 'Lihat peringatan terbaru dan aktivitas di kotak masuk Anda',
  'settings.account.profile': 'Profil',
  'settings.account.profileDesc': 'Nama, email, dan avatar',
  'settings.account.devices': 'Perangkat',
  'settings.account.devicesDesc': 'Pasangkan dan kelola perangkat seluler',
  'settings.account.teamMembers': 'Tim & anggota',
  'settings.account.teamMembersDesc': 'Kelola akses tim dan peran anggota',
  'settings.account.dataMigration': 'Data & migrasi',
  'settings.account.dataMigrationDesc': 'Impor memori dari asisten lain',
  'settings.account.recoveryPhrase': 'Frasa Pemulihan',
  'settings.account.recoveryPhraseDesc': 'Lihat dan cadangkan frasa pemulihan akun Anda',
  'settings.account.team': 'Tim',
  'settings.account.teamDesc': 'Kelola anggota tim dan izin',
  'settings.account.connections': 'Koneksi',
  'settings.account.connectionsDesc': 'Kelola akun dan layanan yang terhubung',
  'settings.account.privacy': 'Privasi',
  'settings.account.privacyDesc': 'Kontrol data apa saja yang keluar dari komputer Anda',
  'migration.title': 'Impor dari asisten lain',
  'migration.description':
    'Migrasikan memori dan catatan dari asisten lokal lain ke ruang kerja ini. Mulai dengan Pratinjau untuk melihat persis apa yang akan berubah, lalu klik Terapkan untuk menyalin datanya. Memori Anda saat ini dicadangkan terlebih dahulu.',
  'migration.vendorLabel': 'Sumber',
  'migration.vendor.openclaw': 'OpenClaw',
  'migration.vendor.hermes': 'Agen Hermes',
  'migration.sourceLabel': 'Path ruang kerja sumber (opsional)',
  'migration.sourcePlaceholder':
    'Biarkan kosong untuk deteksi otomatis (misalnya ~/.openclaw/workspace)',
  'migration.sourcePlaceholderHermes': 'Biarkan kosong untuk deteksi otomatis (mis. ~/.hermes)',
  'migration.sourceHint':
    'Kosong berarti memakai lokasi default sumber. Isi path eksplisit jika ruang kerja sudah dipindahkan.',
  'migration.previewAction': 'Pratinjau',
  'migration.previewRunning': 'Memuat pratinjau…',
  'migration.applyAction': 'Terapkan impor',
  'migration.applyRunning': 'Mengimpor…',
  'migration.applyDisclaimer':
    'Terapkan terbuka setelah Pratinjau berhasil untuk sumber yang sama. Memori yang ada dicadangkan sebelum impor apa pun.',
  'migration.reportTitlePreview': 'Pratinjau — belum ada yang diimpor',
  'migration.reportTitleApplied': 'Impor selesai',
  'migration.report.source': 'Ruang kerja sumber',
  'migration.report.target': 'Ruang kerja tujuan',
  'migration.report.fromSqlite': 'Dari SQLite (brain.db)',
  'migration.report.fromMarkdown': 'Dari Markdown',
  'migration.report.imported': 'Diimpor',
  'migration.report.skippedUnchanged': 'Dilewati (tidak berubah)',
  'migration.report.renamedConflicts': 'Diganti nama saat konflik',
  'migration.report.warnings': 'Peringatan',
  'migration.report.previewHint':
    'Belum ada data yang diimpor. Klik Terapkan impor untuk menyalinnya.',
  'migration.report.appliedHint':
    'Entri yang diimpor kini ada di memori Anda. Jalankan Pratinjau lagi untuk membandingkan.',
  'migration.confirmImport.singular':
    'Impor {count} entri ke ruang kerja saat ini?\n\nSumber: {source}\nTujuan: {target}\n\nMemori yang ada akan dicadangkan sebelum impor dimulai.',
  'migration.confirmImport.plural':
    'Impor {count} entri ke ruang kerja saat ini?\n\nSumber: {source}\nTujuan: {target}\n\nMemori yang ada akan dicadangkan sebelum impor dimulai.',
  'settings.notifications.doNotDisturb': 'Jangan Ganggu',
  'settings.notifications.doNotDisturbDesc': 'Jeda semua notifikasi selama periode tertentu',
  'settings.notifications.channelControls': 'Kontrol Per Kanal',
  'settings.notifications.channelControlsDesc': 'Atur preferensi notifikasi untuk setiap kanal',
  'settings.features.screenAwareness': 'Kesadaran Layar',
  'settings.features.screenAwarenessDesc': 'Izinkan asisten melihat jendela aktif Anda',
  'settings.features.messaging': 'Pesan',
  'settings.features.messagingDesc': 'Pengaturan kanal dan integrasi pesan',
  'settings.features.tools': 'Alat',
  'settings.features.toolsDesc': 'Kelola alat dan integrasi yang terhubung',
  'settings.ai.localSetup': 'Pengaturan AI Lokal',
  'settings.ai.localSetupDesc': 'Unduh dan konfigurasikan model AI lokal',
  'settings.ai.llmProvider': 'Penyedia LLM',
  'settings.ai.llmProviderDesc': 'Pilih dan konfigurasikan penyedia AI Anda',
  'clearData.title': 'Bersihkan Data Aplikasi',
  'clearData.warning':
    'Ini akan mengeluarkan Anda dan menghapus permanen data aplikasi lokal termasuk:',
  'clearData.bulletSettings': 'Pengaturan aplikasi dan percakapan',
  'clearData.bulletCache': 'Semua data cache integrasi lokal',
  'clearData.bulletWorkspace': 'Data workspace',
  'clearData.bulletOther': 'Semua data lokal lainnya',
  'clearData.irreversible': 'Tindakan ini tidak dapat dibatalkan.',
  'clearData.clearing': 'Membersihkan Data Aplikasi...',
  'clearData.failed': 'Gagal membersihkan data dan keluar. Silakan coba lagi.',
  'clearData.failedLogout': 'Gagal keluar. Silakan coba lagi.',
  'clearData.failedPersist': 'Gagal membersihkan status aplikasi tersimpan. Silakan coba lagi.',
  'welcome.logoAlt': 'OpenHuman',
  'welcome.title': 'Selamat datang di OpenHuman',
  'welcome.subtitle': 'Asisten AI Anda untuk komunitas',
  'welcome.connectPrompt': 'Konfigurasikan RPC URL (Lanjutan)',
  'welcome.selectRuntime': 'Pilih Runtime',
  'welcome.clearingAppData': 'Menghapus data aplikasi...',
  'welcome.clearAppDataAndRestart': 'Hapus data aplikasi & memulai ulang',
  'welcome.clearAppDataWarning':
    'Ini akan menghapus rahasia dan akun yang tersimpan secara lokal di perangkat ini. Akun cloud Anda tidak terpengaruh — Anda dapat masuk kembali segera setelahnya.',
  'welcome.resetErrorFallback':
    'Tidak dapat menghapus data aplikasi. Silakan keluar dan buka kembali OpenHuman, lalu coba lagi.',
  'welcome.signingIn': 'Memasukkan Anda...',
  'welcome.termsIntro': 'Dengan melanjutkan, Anda menyetujui',
  'welcome.termsOfUse': 'Persyaratan',
  'welcome.termsJoiner': 'dan',
  'welcome.privacyPolicy': 'Kebijakan Privasi',
  'welcome.termsOutro': '.',
  'welcome.urlPlaceholder': 'http://localhost:8089',
  'welcome.invalidUrl': 'Masukkan URL HTTP atau HTTPS yang valid',
  'welcome.connecting': 'Menguji',
  'welcome.connect': 'Uji',
  'home.greeting': 'Selamat pagi',
  'home.greetingAfternoon': 'Selamat siang',
  'home.greetingEvening': 'Selamat malam',
  'home.askAssistant': 'Tanyakan apa saja ke asisten Anda...',
  'home.statusOk': 'Asistenmu siap kapan pun kamu siap. Ketik sesuatu di bawah untuk memulai.',
  'home.statusBackendOnly':
    'Menghubungkan ulang ke backend... agen Anda akan segera tersedia lagi.',
  'home.statusCoreUnreachable':
    'Core sidecar lokal tidak merespons. Proses latar OpenHuman mungkin crash atau gagal dimulai.',
  'home.statusInternetOffline':
    'Perangkat Anda sedang offline. Periksa jaringan atau mulai ulang aplikasi untuk menyambung lagi.',
  'home.restartCore': 'Mulai Ulang Core',
  'home.restartingCore': 'Memulai ulang core...',
  'home.themeToggle.toLight': 'Beralih ke mode terang',
  'home.themeToggle.toDark': 'Beralih ke mode gelap',
  'home.usageExhaustedTitle': 'Jatah penggunaan Anda telah habis',
  'home.usageExhaustedBody':
    'Kuota penggunaan yang termasuk saat ini sudah habis. Mulai langganan untuk membuka kapasitas berkelanjutan yang lebih besar.',
  'home.usageExhaustedCta': 'Mulai berlangganan',
  'openrouterFree.cta': 'Gunakan model gratis OpenRouter',
  'openrouterFree.saving': 'Menghubungkan OpenRouter...',
  'openrouterFree.error':
    'Tidak dapat beralih ke model gratis OpenRouter. Periksa login OpenRouter Anda dan coba lagi.',
  'home.routinesCard': 'Rutinitas Anda',
  'home.routinesActive': '{count} aktif',
  'routines.title': 'Rutinitas Anda',
  'routines.subtitle': 'Hal yang dilakukan asisten Anda secara otomatis',
  'routines.loading': 'Memuat rutinitas…',
  'routines.empty': 'Belum ada rutinitas',
  'routines.emptyHint':
    'Asistenmu bisa menjalankan tugas sesuai jadwal seperti pengarahan pagi atau ringkasan harian.',
  'routines.refresh': 'Segarkan',
  'routines.nextRun': 'Jalankan berikutnya',
  'routines.lastRunSuccess': 'Terakhir berjalan berhasil',
  'routines.lastRunFailed': 'Terakhir berjalan gagal',
  'routines.notRunYet': 'Belum pernah dijalankan',
  'routines.runNow': 'Jalankan Sekarang',
  'routines.running': 'Berjalan...',
  'routines.runNowTimedOut': 'Waktu habis — silakan muat ulang dan coba lagi.',
  'routines.viewHistory': 'Lihat riwayat',
  'routines.loadingHistory': 'Memuat…',
  'routines.noHistory': 'Belum ada riwayat eksekusi.',
  'routines.statusSuccess': 'Berhasil',
  'routines.statusError': 'Kesalahan',
  'routines.showOutput': 'Tampilkan output',
  'routines.hideOutput': 'Sembunyikan output',
  'routines.toggleEnabled': 'Aktifkan atau matikan rutinitas ini',
  'routines.typeAgent': 'Agen',
  'routines.typeCommand': 'Perintah',
  'nav.routines': 'Routines',
  'chat.newThread': 'Thread baru',
  'chat.newConversation': 'Percakapan baru',
  'chat.newWindowWelcome1': 'Selamat datang, {name} 👋',
  'chat.newWindowWelcome2': 'Ayo mulai, {name} 🧑‍🍳.',
  'chat.newWindowWelcome3': 'Waktunya fokus 🧘🏻',
  'chat.typeMessage': 'Apa yang bisa saya bantu hari ini?',
  'chat.send': 'Kirim pesan',
  'chat.stopGeneration': 'Hentikan pembuatan',
  'chat.parallelBranchHint': 'Ketik cabang paralel — ⌘/Ctrl+Enter untuk mengirim',
  'chat.followupHint':
    'Antrekan tindak lanjut — dikirim setelah balasan ini · ⌘/Ctrl+Enter untuk cabang paralel',
  'chat.queuedFollowups.label': 'Tindak lanjut dalam antrean',
  'chat.queuedFollowups.clear': 'Hapus',
  'chat.queuedFollowups.clearFailed': 'Gagal mengosongkan antrean — coba lagi.',
  'chat.parallelBranchLabel': 'Cabang paralel',
  'chat.thinking': 'Berpikir...',
  'chat.noMessages': 'Belum ada pesan',
  'chat.startConversation': 'Mulai percakapan',
  'chat.regenerate': 'Buat ulang',
  'chat.copyResponse': 'Salin respons',
  'chat.citations': 'Sitasi',
  'chat.toolUsed': 'Alat yang digunakan',
  'scope.legacy': 'Lama',
  'scope.user': 'Pengguna',
  'scope.project': 'Proyek',
  'skills.title': 'Koneksi',
  'skills.search': 'Cari koneksi...',
  'skills.noResults': 'Koneksi tidak ditemukan',
  'skills.loadingIntegrations': 'Memuat integrasi…',
  'skills.connect': 'Hubungkan',
  'skills.disconnect': 'Putuskan',
  'skills.configure': 'Kelola',
  'skills.connected': 'Terhubung',
  'skills.available': 'Tersedia',
  'skills.addAccount': 'Tambah Akun',
  'skills.channels': 'Pesan',
  'skills.explorer.emptyCta': 'Instal dari URL',
  'skills.explorer.emptyDescription':
    'Instal paket SKILL.md atau letakkan folder bergaya Hermes di ~/.openhuman/skills.',
  'skills.explorer.emptyTitle': 'Tidak ada skill ditemukan',
  'skills.explorer.installFromUrl': 'Instal dari URL',
  'skills.explorer.newSkill': 'Skill baru',
  'skills.explorer.subtitle':
    'Jelajahi paket SKILL.md, termasuk markdown, skrip, referensi, templat, contoh, dan prompt bergaya Hermes.',
  'skills.explorer.title': 'Penjelajah skill',
  'skills.explorer.searchPlaceholder': 'Cari skill...',
  'skills.explorer.scopeUser': 'User',
  'skills.explorer.scopeProject': 'Project',
  'skills.explorer.scopeLegacy': 'Legacy',
  'skills.explorer.noDescription': 'Tidak ada deskripsi.',
  'skills.explorer.uninstallSuccess': 'Skill berhasil dihapus.',
  'skills.explorer.registryTab': 'Registri',
  'skills.explorer.installedTab': 'Terpasang',
  'skills.explorer.allFormats': 'Semua format',
  'skills.explorer.refreshRegistry': 'Segarkan registri',
  'skills.explorer.registryEmptyTitle': 'Tidak ada entri registri',
  'skills.explorer.registryEmptyDescription':
    'Tidak dapat memuat registri keterampilan. Periksa koneksi Anda dan coba segarkan.',
  'skills.explorer.showingOf':
    'Menampilkan {shown} dari {total} hasil. Perbaiki pencarian Anda untuk melihat lebih banyak.',
  'skills.explorer.installed': 'Terpasang',
  'skills.explorer.install': 'Pasang',
  'skills.explorer.installing': 'Memasang…',
  'skills.integrations': 'Integrasi Composio',
  'skills.integrationsSubtitle':
    'Koneksi OAuth berbasis cloud — masuk dengan akun Anda dan Composio mengelola token agar agen dapat membaca dan bertindak atas nama Anda. Tidak perlu mengelola API key.',
  'skills.composio.noApiKeyTitle': 'Belum ada API key Composio yang dikonfigurasi',
  'skills.composio.noApiKeyDescription':
    'Mode lokal menggunakan API key Composio milik Anda sendiri. Buka Pengaturan → Lanjutan → Composio untuk menambahkannya sebelum menghubungkan integrasi di sini.',
  'skills.composio.noApiKeyCta': 'Buka di Pengaturan',
  'skills.tabs.composio': 'Composio',
  'skills.tabs.channels': 'Saluran',
  'skills.tabs.explorer': 'Skill',
  'skills.tabs.meetings': 'Rapat Google Meet',
  'skills.tabs.mcp': 'MCP Server',
  'connections.tabs.composio': 'Composio',
  'connections.tabs.channels': 'Saluran',
  'connections.tabs.mcp': 'Server MCP',
  'connections.tabs.skills': 'Keterampilan',
  'connections.tabs.meetings': 'Rapat',
  'connections.groups.integrations': 'Integrasi',
  'connections.tabs.oauth': 'OAuth',
  'connections.tabs.composioKey': 'Composio',
  'connections.groups.apiKeys': 'Kunci API',
  'connections.groups.intelligence': 'Intelijen',
  'memory.title': 'Memori',
  'memory.search': 'Cari memori...',
  'memory.noResults': 'Memori tidak ditemukan',
  'memory.empty': 'Belum ada memori. Memori dibuat otomatis saat Anda berinteraksi.',
  'memory.tab.memory': 'Memori',
  'memory.tab.memoryTree': 'Pohon Memori',
  'memory.tab.tasks': 'Tugas',
  'memory.tab.tasksDescription':
    'Buat dan lacak tugas — to-do Anda sendiri beserta papan yang dibangun agen Anda di berbagai percakapan.',
  'memory.tab.subconscious': 'Bawah sadar',
  'memory.tab.agentWork': 'Kerja agen',
  'memory.tab.agentWorkDescription':
    'Pusat kendali untuk setiap proses agen latar belakang — dikelompokkan berdasarkan apa yang butuh masukan Anda, apa yang sedang berjalan, dan apa yang sudah selesai.',
  'memory.tab.worktrees': 'Worktree',
  'memory.tab.worktreesDescription':
    'Worktree git terisolasi dari worker agen paralel — periksa perubahan, buka, atau bersihkan.',
  'memory.tab.teams': 'Tim',
  'memory.tab.teamsDescription':
    'Tim agen yang terkoordinasi — siapa yang menangani setiap tugas, apa yang terhambat, dan apa yang dibicarakan rekan satu tim satu sama lain.',
  'memory.tab.agents': 'Perpustakaan',
  'memory.tab.agentsDescription':
    'Telusuri dan jalankan agen yang tersedia — masing-masing dengan alat, kemampuan, dan area fokusnya sendiri.',
  'memory.tab.workflows': 'Workflows',
  'memory.tab.workflowsDescription':
    'Prosedur yang dapat digunakan ulang dan dijalankan — sebuah tujuan beserta langkah-langkah untuk mencapainya. Buat satu, instal dari URL, atau buka alur kerja untuk menjalankannya.',
  'memory.tab.dreams': 'Mimpi',
  'memory.tab.calls': 'Panggilan',
  'memory.tab.diagram': 'Diagram',
  'memory.tab.centrality': 'Centrality',
  'memory.tab.namespaces': 'Namespace',
  'memory.tab.timeline': 'Timeline',
  'memory.tab.settings': 'Pengaturan',
  'memory.analyzeNow': 'Analisis Sekarang',
  'memoryTimeline.title': 'Lini Masa Memori',
  'memoryTimeline.intro':
    'Kapan asisten mempelajari tentang Anda — fakta dikelompokkan berdasarkan bulan terakhir diperkuat. Menunjukkan pertumbuhan, lonjakan aktivitas, dan periode tenang.',
  'memoryTimeline.loading': 'Membangun lini masa…',
  'memoryTimeline.errorPrefix': 'Tidak dapat memuat graf:',
  'memoryTimeline.retry': 'Retry',
  'memoryTimeline.namespaceLabel': 'Namespace',
  'memoryTimeline.namespaceAll': 'Semua namespace',
  'memoryTimeline.empty': 'Belum ada graf pengetahuan.',
  'memoryTimeline.emptyHint':
    'Ketika asisten mencatat fakta tentang Anda, lini masanya akan muncul di sini.',
  'memoryTimeline.metricTotal': 'Facts',
  'memoryTimeline.metricMonths': 'Bulan aktif',
  'memoryTimeline.metricRecent': '30 hari terakhir',
  'memoryTimeline.heading': 'Fakta yang dipelajari per bulan',
  'memoryTimeline.busiestCaption': 'Paling aktif: {period} ({count})',
  'memoryTimeline.undatedNote': '{count} fakta tanpa tanggal tercatat.',
  'memoryTimeline.truncated': 'Menampilkan {shown} terbaru dari {total} bulan.',
  'namespaceOverview.title': 'Ikhtisar Namespace',
  'namespaceOverview.intro':
    'Bagaimana pengetahuan Anda terdistribusi di seluruh konteks — jumlah fakta dan entitas berbeda yang tercatat di setiap namespace.',
  'namespaceOverview.loading': 'Menggabungkan namespace…',
  'namespaceOverview.errorPrefix': 'Tidak dapat memuat grafiknya:',
  'namespaceOverview.retry': 'Coba lagi',
  'namespaceOverview.empty': 'Belum ada grafik pengetahuan.',
  'namespaceOverview.emptyHint':
    'Saat asisten mencatat fakta di seluruh konteks, setiap namespace akan muncul di sini.',
  'namespaceOverview.metricNamespaces': 'Namespace',
  'namespaceOverview.metricFacts': 'Fakta',
  'namespaceOverview.metricEntities': 'Entitas',
  'namespaceOverview.heading': 'Berdasarkan namespace',
  'namespaceOverview.unnamespaced': '(tanpa namespace)',
  'namespaceOverview.factsLabel': '{count} fakta',
  'namespaceOverview.entitiesLabel': '{count} entitas',
  'namespaceOverview.entitiesShort': '{count} ent.',
  'namespaceOverview.truncated': 'Menampilkan {shown} teratas dari {total} namespace.',
  'graphCentrality.title': 'Centralitas Grafik Pengetahuan',
  'graphCentrality.intro':
    'PageRank melalui grafik memori Anda permukaan hub load- bantalan - dan entiti konektor yang menghubungkan lain-terpisah cluster, yang jumlah frekuensi mentah tidak dapat mengungkapkan.',
  'graphCentrality.loading': 'Komputer sentralitas...',
  'graphCentrality.errorPrefix': 'Tidak dapat memuat grafiknya:',
  'graphCentrality.retry': 'Coba lagi',
  'graphCentrality.empty': 'Belum ada grafik pengetahuan.',
  'graphCentrality.emptyHint':
    'Sebagai asisten mencatat fakta tentang Anda, entitas yang paling terhubung akan muncul di sini.',
  'graphCentrality.namespaceLabel': 'Namespace',
  'graphCentrality.namespaceAll': 'Semua ruang-nama',
  'graphCentrality.metricEntities': 'Entitas',
  'graphCentrality.metricConnections': 'Koneksi',
  'graphCentrality.metricClusters': 'Cluster',
  'graphCentrality.clustersCaption': '{components} cluster terbesar memegang {largest}',
  'graphCentrality.approximateBadge': 'approximate',
  'graphCentrality.approximateTitle': 'Berhenti di puncak iterasi sebelum sepenuhnya konverging',
  'graphCentrality.rankedHeading': 'Entitas atas dengan pengaruh',
  'graphCentrality.colRank': '#',
  'graphCentrality.colEntity': 'Entitas',
  'graphCentrality.colInfluence': 'Influensi',
  'graphCentrality.colLinks': 'Taut',
  'graphCentrality.bridgeBadge': 'connector',
  'graphCentrality.bridgeTitle':
    'Konektor - lebih berpengaruh daripada jumlah link yang menunjukkan',
  'graphCentrality.degreeTitle': '{in} keluar',
  'memory.tab.associations': 'Associations',
  'entityAssociations.title': 'Asosiasi Entitas',
  'entityAssociations.intro':
    'Entitas yang berbagi banyak koneksi yang sama berasosiasi — meskipun tidak ada satu fakta pun yang menghubungkan mereka secara langsung. Kesamaan Jaccard mengungkap pasangan tersembunyi ini.',
  'entityAssociations.loading': 'Menghitung asosiasi…',
  'entityAssociations.errorPrefix': 'Tidak dapat memuat graf:',
  'entityAssociations.retry': 'Retry',
  'entityAssociations.empty': 'Belum ada asosiasi.',
  'entityAssociations.emptyHint':
    'Ketika entitas mulai berbagi koneksi, pasangan terkuat akan muncul di sini.',
  'entityAssociations.namespaceLabel': 'Namespace',
  'entityAssociations.namespaceAll': 'Semua namespace',
  'entityAssociations.metricEntities': 'Entities',
  'entityAssociations.metricPairs': 'Associations',
  'entityAssociations.rankedHeading': 'Asosiasi terkuat',
  'entityAssociations.linkedBadge': 'linked',
  'entityAssociations.inferredBadge': 'inferred',
  'entityAssociations.linkedTitle': 'Entitas-entitas ini terhubung langsung.',
  'entityAssociations.inferredTitle':
    'Tidak ada tautan langsung — terkait hanya melalui koneksi bersama.',
  'entityAssociations.sharedLabel': '{shared} bersama',
  'entityAssociations.pairTitle': '{jaccard}% mirip · {shared} dari {union} koneksi bersama',
  'entityAssociations.truncated': 'Menampilkan {shown} dari {total} — terkuat lebih dulu.',
  'memory.tab.freshness': 'Freshness',
  'memoryFreshness.title': 'Kesegaran Pengetahuan',
  'memoryFreshness.intro':
    'Fakta yang belum dikonfirmasi ulang oleh asisten baru-baru ini akan memudar mengikuti kurva lupa. Ini menunjukkan apa yang menjadi usang dan perlu diperiksa ulang, agar fakta lama tidak dianggap masih pasti.',
  'memoryFreshness.loading': 'Menghitung kesegaran…',
  'memoryFreshness.errorPrefix': 'Tidak dapat memuat graf:',
  'memoryFreshness.retry': 'Retry',
  'memoryFreshness.empty': 'Belum ada graf pengetahuan.',
  'memoryFreshness.emptyHint':
    'Ketika asisten mencatat fakta tentang Anda, kesegarannya akan dilacak di sini.',
  'memoryFreshness.namespaceLabel': 'Namespace',
  'memoryFreshness.namespaceAll': 'Semua namespace',
  'memoryFreshness.metricFresh': 'Fresh',
  'memoryFreshness.metricFading': 'Fading',
  'memoryFreshness.metricStale': 'Stale',
  'memoryFreshness.recallCaption': 'Rata-rata recall {recall}% dari {total} fakta',
  'memoryFreshness.queueHeading': 'Antrean konfirmasi ulang',
  'memoryFreshness.queueTruncated': 'Menampilkan {shown} dari {total} — tangani ini lebih dulu.',
  'memoryFreshness.allFresh': 'Semua fakta masih segar — tidak perlu dikonfirmasi ulang.',
  'memoryFreshness.statusFading': 'fading',
  'memoryFreshness.statusStale': 'stale',
  'memoryFreshness.ageLabel': '{days} hari lalu',
  'memoryFreshness.recallTitle': '{recall}% recall · waktu paruh {halfLife} hari',
  'memory.tab.path': 'Jalur',
  'connectionPath.title': 'Jalur Koneksi',
  'connectionPath.intro':
    'Telusuri rantai relasi terpendek yang menghubungkan dua entitas mana pun — bagaimana graf menghubungkan keduanya, bahkan melalui beberapa lompatan.',
  'connectionPath.loading': 'Memuat graf…',
  'connectionPath.errorPrefix': 'Tidak dapat memuat graf:',
  'connectionPath.retry': 'Coba lagi',
  'connectionPath.namespaceLabel': 'Namespace',
  'connectionPath.namespaceAll': 'Semua namespace',
  'connectionPath.sourceLabel': 'Dari',
  'connectionPath.targetLabel': 'Ke',
  'connectionPath.sourcePlaceholder': 'Entitas awal',
  'connectionPath.targetPlaceholder': 'Entitas akhir',
  'connectionPath.prompt': 'Pilih dua entitas untuk menelusuri bagaimana keduanya terhubung.',
  'connectionPath.empty': 'Belum ada graf pengetahuan.',
  'connectionPath.emptyHint':
    'Setelah asisten mencatat fakta-fakta terkait, Anda dapat menelusuri koneksi di sini.',
  'connectionPath.resultHeading': 'Jalur terpendek',
  'connectionPath.pathSummary': 'Berjarak {length} lompatan',
  'connectionPath.sameMessage': 'Pilih dua entitas yang berbeda.',
  'connectionPath.missingSource': '"{entity}" tidak ada dalam graf.',
  'connectionPath.missingTarget': '"{entity}" tidak ada dalam graf.',
  'connectionPath.noPath': 'Tidak ditemukan koneksi antara "{source}" dan "{target}".',
  'memoryTree.status.title': 'Pohon Memori',
  'memoryTree.status.autoSyncLabel': 'Sinkronisasi otomatis',
  'memoryTree.status.autoSyncDescription':
    'Jeda untuk menghentikan ingest baru. Wiki yang ada tetap dapat dikueri.',
  'memoryTree.status.statusTile': 'Status',
  'memoryTree.status.lastSyncTile': 'Sinkronisasi terakhir',
  'memoryTree.status.totalChunksTile': 'Total potongan',
  'memoryTree.status.wikiSizeTile': 'Ukuran wiki',
  'memoryTree.status.statusRunning': 'Berjalan',
  'memoryTree.status.statusPaused': 'Dijeda',
  'memoryTree.status.statusSyncing': 'Menyinkronkan',
  'memoryTree.status.statusError': 'Kesalahan',
  'memoryTree.status.statusIdle': 'Diam',
  'memoryTree.status.never': 'Tidak pernah',
  'memoryTree.status.fetchError': 'Gagal mengambil status Pohon Memori',
  'memoryTree.status.retry': 'Coba lagi',
  'memoryTree.status.toggleFailed': 'Gagal mengalihkan sinkronisasi otomatis',
  'memoryTree.status.justNow': 'baru saja',
  'memoryTree.status.secondsAgo': '{count} dtk lalu',
  'memoryTree.status.minuteAgo': '1 mnt lalu',
  'memoryTree.status.minutesAgo': '{count} mnt lalu',
  'memoryTree.status.hourAgo': '1 jam lalu',
  'memoryTree.status.hoursAgo': '{count} jam lalu',
  'memoryTree.status.dayAgo': '1 hari lalu',
  'memoryTree.status.daysAgo': '{count} hari lalu',
  'memoryTree.status.integrationsTitle': 'Kesehatan per integrasi',
  'memoryTree.status.integrationsEmpty': 'Tidak ada integrasi tersambung',
  'memoryTree.status.integrationActive': 'Aktif',
  'memoryTree.status.integrationStale': 'Usang',
  'memoryTree.status.integrationChunks': 'Potongan: {count}',
  'alerts.title': 'Peringatan',
  'alerts.empty': 'Belum ada peringatan',
  'alerts.markAllRead': 'Tandai semua sudah dibaca',
  'alerts.unread': 'belum dibaca',
  'rewards.title': 'Hadiah',
  'rewards.referrals': 'Referral',
  'rewards.coupons': 'Tukarkan',
  'rewards.localUnavailable':
    'Login lokal tidak mendapatkan reward, kupon, atau kredit referral. Keluar lalu lanjutkan dengan masuk menggunakan akun OpenHuman jika Anda ingin reward dihitung.',
  'rewards.localUnavailableCta': 'Buka Pengaturan Akun',
  'rewards.credits': 'Kredit',
  'rewards.referralCode': 'Kode referral Anda',
  'rewards.copyCode': 'Salin kode',
  'rewards.share': 'Bagikan',
  'onboarding.welcome': 'Hai. Saya OpenHuman.',
  'onboarding.welcomeDesc':
    'Asisten AI super cerdas yang berjalan di komputer Anda. Privat, sederhana, dan sangat kuat.',
  'onboarding.context': 'Pengumpulan Konteks',
  'onboarding.contextDesc': 'Hubungkan alat dan layanan yang Anda gunakan setiap hari.',
  'onboarding.localAI': 'AI Lokal',
  'onboarding.localAIDesc': 'Siapkan model AI lokal yang berjalan di mesin Anda.',
  'onboarding.chatProvider': 'Penyedia Chat',
  'onboarding.chatProviderDesc': 'Pilih cara Anda ingin berinteraksi dengan asisten.',
  'onboarding.referral': 'Rujukan',
  'onboarding.referralDesc': 'Gunakan kode referral jika Anda memilikinya.',
  'onboarding.finish': 'Selesaikan Pengaturan',
  'onboarding.finishDesc': 'Semua siap! Mulai gunakan OpenHuman.',
  'onboarding.skip': 'Lewati',
  'onboarding.getStarted': 'Mulai',
  'onboarding.runtimeChoice.title': 'Bagaimana Anda ingin menjalankan OpenHuman?',
  'onboarding.runtimeChoice.subtitle':
    'Pilih pengaturan yang paling sesuai untuk Anda. Anda dapat mengubahnya nanti di Pengaturan.',
  'onboarding.runtimeChoice.cloud.title': 'Sederhana',
  'onboarding.runtimeChoice.cloud.tagline': 'Biarkan OpenHuman mengelola segalanya untuk Anda.',
  'onboarding.runtimeChoice.cloud.f1': 'Keamanan bawaan',
  'onboarding.runtimeChoice.cloud.f2': 'Kompresi token untuk memaksimalkan penggunaan Anda',
  'onboarding.runtimeChoice.cloud.f3': 'Satu langganan, semua model sudah termasuk',
  'onboarding.runtimeChoice.cloud.f4': 'Tidak perlu mengelola API key',
  'onboarding.runtimeChoice.cloud.f5': 'Mudah diatur',
  'onboarding.runtimeChoice.custom.title': 'Jalankan Kustom',
  'onboarding.runtimeChoice.custom.tagline':
    'Bawa key Anda sendiri. Kontrol penuh atas apa yang Anda gunakan.',
  'onboarding.runtimeChoice.custom.f1': 'Anda memerlukan API key untuk hampir semuanya',
  'onboarding.runtimeChoice.custom.f2': 'Memanfaatkan ulang layanan yang sudah Anda bayar',
  'onboarding.runtimeChoice.custom.f3': 'Bisa gratis jika Anda menjalankan semuanya secara lokal',
  'onboarding.runtimeChoice.custom.f4': 'Lebih banyak pengaturan, lebih banyak kontrol',
  'onboarding.runtimeChoice.custom.f5': 'Terbaik untuk pengguna power dan developer',
  'onboarding.runtimeChoice.cloud.creditHighlight': 'Kredit gratis saat mendaftar',
  'onboarding.runtimeChoice.continueCloud': 'Lanjutkan dengan Sederhana',
  'onboarding.runtimeChoice.continueCustom': 'Lanjutkan dengan Kustom',
  'onboarding.runtimeChoice.recommended': 'Direkomendasikan',
  'onboarding.runtimeChoice.exitError': 'Tidak dapat menyelesaikan orientasi. Silakan coba lagi.',
  'onboarding.apiKeys.title': 'Mari Tambahkan API Key Anda',
  'onboarding.apiKeys.subtitle':
    'Anda dapat menempelkannya sekarang atau lewati dan tambahkan nanti di Pengaturan › AI. Key disimpan di perangkat ini, dienkripsi saat penyimpanan.',
  'onboarding.apiKeys.openaiLabel': 'API key OpenAI',
  'onboarding.apiKeys.openaiPlaceholder': 'sk-...',
  'onboarding.apiKeys.openaiOauthHint':
    'Gunakan ChatGPT Plus/Pro (berlangganan) atau kunci OpenAI API — keduanya tidak diperlukan.',
  'onboarding.apiKeys.openaiOauthOpening': 'Membuka proses masuk…',
  'onboarding.apiKeys.openaiOauthConnect': 'Masuk dengan ChatGPT',
  'onboarding.apiKeys.openaiOauthConnected': 'Terhubung dengan ChatGPT',
  'onboarding.apiKeys.openaiOauthCallbackHint':
    'Setelah masuk, tempel URL pengalihan lengkap dari browser Anda (dimulai dengan {url}).',
  'onboarding.apiKeys.oauthDesktopOnly': 'Masuk ChatGPT hanya tersedia di aplikasi desktop.',
  'onboarding.apiKeys.oauthStartFailed':
    'Tidak dapat memulai proses masuk ChatGPT. Coba lagi atau gunakan kunci API.',
  'onboarding.apiKeys.oauthPasteRedirect': 'Tempel URL pengalihan dari browser Anda setelah masuk.',
  'onboarding.apiKeys.oauthCompleteFailed':
    'Proses masuk ChatGPT tidak selesai. Periksa URL pengalihan dan coba lagi.',
  'onboarding.apiKeys.finishSignIn': 'Selesaikan proses masuk ChatGPT',
  'onboarding.apiKeys.orApiKey': 'atau kunci API',
  'onboarding.apiKeys.anthropicLabel': 'API key Anthropic',
  'onboarding.apiKeys.anthropicPlaceholder': 'sk-ant-...',
  'onboarding.apiKeys.saveError':
    'Tidak dapat menyimpan key tersebut. Periksa kembali dan coba lagi.',
  'onboarding.apiKeys.skipForNow': 'Lewati untuk sekarang',
  'onboarding.apiKeys.continue': 'Simpan dan lanjutkan',
  'onboarding.apiKeys.saving': 'Menyimpan...',
  'onboarding.custom.stepperInference': 'Inferensi',
  'onboarding.custom.stepperVoice': 'Suara',
  'onboarding.custom.stepperOAuth': 'OAuth',
  'onboarding.custom.stepperSearch': 'Pencarian',
  'onboarding.custom.stepperEmbeddings': 'Embeddings',
  'onboarding.custom.stepperMemory': 'Memori',
  'onboarding.custom.stepCounter': 'Langkah {n} dari {total}',
  'onboarding.custom.defaultTitle': 'Bawaan',
  'onboarding.custom.defaultSubtitle': 'Biarkan OpenHuman mengelolanya untuk Anda.',
  'onboarding.custom.configureTitle': 'Konfigurasi',
  'onboarding.custom.configureSubtitle': 'Saya akan memilih apa yang digunakan.',
  'onboarding.custom.progressAriaLabel': 'Progres orientasi',
  'onboarding.custom.continue': 'Lanjutkan',
  'onboarding.custom.back': 'Kembali',
  'onboarding.custom.finish': 'Selesaikan Pengaturan',
  'onboarding.custom.configureLater':
    'Anda dapat menyelesaikan pengaturan ini setelah orientasi. Kami akan mengarahkan Anda ke halaman Pengaturan yang sesuai setelah selesai.',
  'onboarding.custom.openSettings': 'Buka di Pengaturan',
  'onboarding.custom.inference.title': 'Inferensi (Teks)',
  'onboarding.custom.inference.subtitle':
    'Model bahasa mana yang harus menjawab pertanyaan dan menjalankan agen Anda?',
  'onboarding.custom.inference.defaultDesc':
    'OpenHuman mengarahkan setiap beban kerja ke model default yang masuk akal. Tidak perlu key, tidak perlu pengaturan.',
  'onboarding.custom.inference.configureDesc':
    'Bawa key OpenAI atau Anthropic Anda sendiri. Kami menggunakannya untuk setiap beban kerja berbasis teks.',
  'onboarding.custom.voice.title': 'Suara',
  'onboarding.custom.voice.subtitle': 'Speech-to-text dan text-to-speech untuk mode suara.',
  'onboarding.custom.voice.defaultDesc':
    'OpenHuman dilengkapi dengan STT/TTS terkelola yang langsung berfungsi. Tidak ada yang perlu dikonfigurasi.',
  'onboarding.custom.voice.configureDesc':
    'Gunakan ElevenLabs / OpenAI Whisper / dll. milik Anda sendiri. Konfigurasi di Pengaturan › Suara.',
  'onboarding.custom.oauth.title': 'Koneksi (OAuth)',
  'onboarding.custom.oauth.subtitle':
    'Gmail, Slack, Notion, dan layanan terhubung lainnya yang memerlukan OAuth.',
  'onboarding.custom.oauth.defaultDesc':
    'OpenHuman menjalankan workspace Composio terkelola. Satu klik untuk menghubungkan setiap layanan nanti.',
  'onboarding.custom.oauth.configureDesc':
    'Bawa akun Composio / API key Anda sendiri. Konfigurasi di Pengaturan › Koneksi.',
  'onboarding.custom.search.title': 'Pencarian Web',
  'onboarding.custom.search.subtitle': 'Cara OpenHuman mencari web atas nama Anda.',
  'onboarding.custom.search.defaultDesc':
    'OpenHuman menggunakan backend pencarian terkelola. Tidak perlu key.',
  'onboarding.custom.search.configureDesc':
    'Bawa key penyedia pencarian Anda sendiri (Tavily, Brave, dll.). Konfigurasi di Pengaturan › Alat.',
  'onboarding.custom.embeddings.title': 'Embeddings',
  'onboarding.custom.embeddings.subtitle':
    'Cara OpenHuman menghasilkan embedding vektor untuk pencarian memori semantik.',
  'onboarding.custom.embeddings.defaultDesc':
    'OpenHuman menggunakan layanan embedding terkelola. Tidak perlu API key.',
  'onboarding.custom.embeddings.configureDesc':
    'Gunakan penyedia embedding Anda sendiri (OpenAI, Voyage, Ollama, dll.).',
  'onboarding.custom.memory.title': 'Memori',
  'onboarding.custom.memory.subtitle':
    'Cara OpenHuman mengingat konteks, preferensi, dan percakapan sebelumnya.',
  'onboarding.custom.memory.defaultDesc':
    'OpenHuman mengelola penyimpanan dan pengambilan memori secara otomatis. Tidak ada yang perlu diatur.',
  'onboarding.custom.memory.configureDesc':
    'Periksa, ekspor, atau hapus memori sendiri. Konfigurasi di Pengaturan › Memori.',
  'accounts.addAccount': 'Tambah Akun',
  'accounts.addApps': 'Tambah aplikasi',
  'accounts.manageAccounts': 'Kelola Akun',
  'accounts.noAccounts': 'Belum ada akun terhubung',
  'accounts.connectAccount': 'Hubungkan akun untuk memulai',
  'accounts.agent': 'Agen',
  'accounts.respondQueue': 'Antrean Respons',
  'accounts.disconnect': 'Putuskan',
  'accounts.disconnectConfirm': 'Yakin ingin memutuskan akun ini?',
  'accounts.disconnectClearMemory': 'Hapus juga memori dari sumber ini',
  'accounts.disconnectClearMemoryHint':
    'Menghapus secara permanen potongan memori lokal yang terhubung ke koneksi ini.',
  'accounts.searchAccounts': 'Cari akun...',
  'channels.title': 'Kanal',
  'channels.configure': 'Konfigurasi Kanal',
  'channels.setup': 'Pengaturan',
  'channels.noChannels': 'Belum ada kanal yang dikonfigurasi',
  'channels.localManagedUnavailable': 'Channel terkelola tidak tersedia untuk pengguna lokal.',
  'channels.addChannel': 'Tambah Kanal',
  'channels.status.connected': 'Terhubung',
  'channels.status.disconnected': 'Terputus',
  'channels.status.error': 'Kesalahan',
  'channels.status.configuring': 'Mengonfigurasi',
  'channels.defaultMessaging': 'Kanal Pesan Default',
  'channels.setAsDefault': 'Jadikan bawaan',
  'channels.defaultBadge': 'Bawaan',
  'webhooks.title': 'Webhook',
  'webhooks.create': 'Buat Webhook',
  'webhooks.noWebhooks': 'Belum ada webhook yang dikonfigurasi',
  'webhooks.url': 'URL',
  'webhooks.secret': 'Rahasia',
  'webhooks.events': 'Event',
  'webhooks.archiveDirectory': 'Direktori Arsip',
  'webhooks.todayFile': 'File Hari Ini',
  'invites.title': 'Undangan',
  'invites.create': 'Buat Undangan',
  'invites.noInvites': 'Tidak ada undangan tertunda',
  'invites.code': 'Kode Undangan',
  'invites.copyLink': 'Salin Link',
  'invites.generate': 'Hasilkan Undangan',
  'invites.generating': 'Menghasilkan...',
  'invites.refreshing': 'Menyegarkan undangan...',
  'invites.loading': 'Memuat undangan...',
  'invites.copyCodeAria': 'Salin kode undangan',
  'invites.revokeAria': 'Cabut undangan',
  'invites.usedUp': 'Habis',
  'invites.uses': 'Kegunaan: {current}{max}',
  'invites.expiresOn': 'Kedaluwarsa {date}',
  'invites.empty': 'Belum ada undangan',
  'invites.emptyHint': 'Buat kode undangan untuk dibagikan dengan orang lain',
  'invites.revokeTitle': 'Cabut Kode Undangan',
  'invites.revokePromptPrefix': 'Apakah Anda yakin ingin mencabut kode undangan',
  'invites.revokeWarning':
    'Kode undangan ini tidak akan lagi berlaku dan tidak dapat digunakan untuk bergabung dengan tim.',
  'invites.revoking': 'Mencabut...',
  'invites.revokeAction': 'Mencabut Undangan',
  'invites.failedGenerate': 'Gagal membuat undangan',
  'invites.failedRevoke': 'Gagal mencabut undangan',
  'team.refreshingMembers': 'Menyegarkan anggota...',
  'team.loadingMembers': 'Memuat anggota...',
  'team.memberCount': '{count} anggota',
  'team.memberCountPlural': '{count} anggota',
  'team.you': '(Anda)',
  'team.removeAria': 'Hapus {name}',
  'team.noMembers': 'Tidak ada anggota yang ditemukan',
  'team.removeTitle': 'Hapus Anggota Tim',
  'team.removePromptPrefix': 'Apakah Anda yakin ingin menghapus',
  'team.removePromptSuffix': 'dari tim?',
  'team.removeWarning': 'Mereka akan kehilangan akses ke tim dan semua sumber daya tim.',
  'team.removing': 'Menghapus...',
  'team.removeAction': 'Hapus Anggota',
  'team.changeRoleTitle': 'Ubah Peran Anggota',
  'team.changeRolePrompt': 'Ubah peran {name} dari {oldRole} menjadi {newRole}?',
  'team.changeRoleAdminGrant':
    'Ini akan memberikan mereka izin admin penuh termasuk kemampuan untuk mengelola anggota tim.',
  'team.changeRoleAdminRemove':
    'Ini akan mencabut izin admin mereka dan mereka tidak lagi dapat mengelola tim.',
  'team.changing': 'Mengubah...',
  'team.changeRoleAction': 'Mengubah Peran',
  'team.failedChangeRole': 'Gagal mengubah peran',
  'team.failedRemoveMember': 'Gagal menghapus anggota',
  'devOptions.title': 'Opsi Developer',
  'devOptions.titleDiagnostics': 'Developer & Diagnostik',
  'devOptions.diagnostics': 'Diagnostik',
  'devOptions.diagnosticsDesc': 'Kesehatan sistem, log, dan metrik performa',
  'devOptions.toolPolicyDiagnosticsDesc':
    'Alat inventaris, postur kebijakan, allowzes MCP, dan blok terbaru',
  'devOptions.toolPolicyDiagnostics.loading': 'Memuat…',
  'devOptions.toolPolicyDiagnostics.unavailable': 'Diagnostik tidak tersedia',
  'devOptions.toolPolicyDiagnostics.posture.title': 'Postur kebijakan',
  'devOptions.toolPolicyDiagnostics.posture.autonomy': 'Autonomy:',
  'devOptions.toolPolicyDiagnostics.posture.workspaceOnly': 'Hanya ruang kerja:',
  'devOptions.toolPolicyDiagnostics.posture.maxActionsPerHour': 'Maks. tindakan/jam:',
  'devOptions.toolPolicyDiagnostics.posture.approvalMediumRisk': 'Persetujuan (resiko sedang):',
  'devOptions.toolPolicyDiagnostics.posture.blockHighRisk': 'Resiko tinggi blok:',
  'devOptions.toolPolicyDiagnostics.inventory.title': 'Inventaris',
  'devOptions.toolPolicyDiagnostics.inventory.totalTools': 'Total alat',
  'devOptions.toolPolicyDiagnostics.inventory.enabledTools': 'Perangkat yang diaktifkan',
  'devOptions.toolPolicyDiagnostics.inventory.mcpStdioTools': 'Perkakas stdio MCP',
  'devOptions.toolPolicyDiagnostics.inventory.jsonRpcTools': 'Alat JSON-RPC',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.title': 'Allowlist MCP',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.summary': 'Diaktifkan: {enabled}',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.unnamed': '< tanpa nama >',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.allowDeny':
    'ijinkan = {allowCount} menyangkal = {denyCount}',
  'devOptions.toolPolicyDiagnostics.mcpWriteAudit.title': 'MCP menulis audit',
  'devOptions.toolPolicyDiagnostics.mcpWriteAudit.summary': 'Diaktifkan: {enabled}',
  'devOptions.toolPolicyDiagnostics.recentBlocked.title': 'Panggilan terblok baru-baru ini',
  'devOptions.toolPolicyDiagnostics.recentBlocked.empty': 'Tidak ada panggilan diblokir direkam.',
  'devOptions.toolPolicyDiagnostics.redactedSurfaces.title': 'Permukaan Redacted',
  'devOptions.toolPolicyDiagnostics.redactedSurfaces.summary': 'Penulis-mampu: {writeCount}',
  'devOptions.debugPanels': 'Panel Debug',
  'devOptions.debugPanelsDesc': 'Feature flag, inspeksi status, dan alat debugging',
  'devOptions.webhooks': 'Webhook',
  'devOptions.webhooksDesc': 'Konfigurasi dan uji integrasi webhook',
  'devOptions.memoryInspection': 'Inspeksi Memori',
  'devOptions.memoryInspectionDesc': 'Jelajahi, kueri, dan kelola entri memori',
  'voice.pushToTalk': 'Tekan untuk Bicara',
  'voice.recording': 'Merekam...',
  'voice.processing': 'Memproses...',
  'voice.languageHint': 'Bahasa',
  'misc.rehydrating': 'Memuat data Anda...',
  'misc.checkingServices': 'Memeriksa layanan...',
  'misc.serviceUnavailable': 'Layanan Tidak Tersedia',
  'misc.somethingWentWrong': 'Terjadi kesalahan',
  'misc.tryAgainLater': 'Silakan coba lagi nanti.',
  'misc.restartApp': 'Mulai Ulang Aplikasi',
  'misc.updateAvailable': 'Pembaruan Tersedia',
  'misc.updateNow': 'Perbarui Sekarang',
  'misc.updateLater': 'Nanti',
  'misc.downloading': 'Mengunduh...',
  'misc.installing': 'Menginstal...',
  'misc.beta': 'Beta',
  'misc.betaFeedback': 'Kirim masukan',
  'mnemonic.title': 'Frasa Pemulihan',
  'mnemonic.warning': 'Tulis kata-kata ini berurutan dan simpan di tempat aman.',
  'mnemonic.copyWarning':
    'Jangan pernah membagikan frasa pemulihan. Siapa pun yang memiliki kata-kata ini dapat mengakses akun Anda.',
  'mnemonic.copied': 'Frasa pemulihan disalin ke clipboard',
  'mnemonic.reveal': 'Tampilkan frasa',
  'mnemonic.revealPhrase': 'Tampilkan frasa pemulihan',
  'mnemonic.hidden': 'Frasa pemulihan disembunyikan',
  'privacy.title': 'Privasi & Keamanan',
  'privacy.description': 'Laporan transparansi data yang dikirim ke layanan eksternal.',
  'privacy.empty': 'Tidak ada transfer data eksternal terdeteksi.',
  'privacy.whatLeavesComputer': 'Data yang keluar dari komputer Anda',
  'privacy.loading': 'Memuat detail privasi...',
  'privacy.loadError':
    'Tidak dapat memuat daftar privasi live. Kontrol analitik di bawah tetap berfungsi.',
  'privacy.noCapabilities': 'Belum ada kemampuan yang mengungkap pergerakan data.',
  'privacy.sentTo': 'Dikirim ke',
  'privacy.leavesDevice': 'Keluar dari perangkat',
  'privacy.staysLocal': 'Tetap lokal',
  'privacy.anonymizedAnalytics': 'Analitik Produk',
  'privacy.shareAnonymizedData': 'Bagikan Analitik Produk dan Diagnostik',
  'privacy.shareAnonymizedDataDesc':
    'Bantu meningkatkan OpenHuman dengan membagikan laporan crash dan peristiwa penggunaan yang dibatasi privasi, termasuk ID akun stabil dan metadata versi aplikasi. Pesan, kunci dompet, kunci API, dan token sesi tidak pernah dikumpulkan.',
  'privacy.meetingFollowUps': 'Tindak lanjut rapat',
  'privacy.autoHandoffMeet': 'Serahkan transkrip Google Meet otomatis ke orchestrator',
  'privacy.autoHandoffMeetDesc':
    'Saat panggilan Google Meet berakhir, orchestrator OpenHuman dapat membaca transkrip dan mengambil tindakan seperti menyusun pesan, menjadwalkan tindak lanjut, atau memposting ringkasan ke workspace Slack yang terhubung. Nonaktif secara default.',
  'privacy.analyticsDisclaimer':
    'Saat aktif, Analitik Produk dan Diagnostik dapat menyertakan laporan crash dan peristiwa penggunaan yang dibatasi privasi, ID akun stabil, dan metadata versi aplikasi. Pesan, kunci dompet, kunci API, dan token sesi tidak pernah dikumpulkan. Pengaturan ini bisa diubah kapan saja.',
  'settings.about.version': 'Versi',
  'settings.about.updateAvailable': 'tersedia',
  'settings.about.softwareUpdates': 'Pembaruan perangkat lunak',
  'settings.about.lastChecked': 'Terakhir diperiksa',
  'settings.about.checking': 'Memeriksa...',
  'settings.about.checkForUpdates': 'Periksa pembaruan',
  'settings.about.releases': 'Rilis',
  'settings.about.releasesDesc': 'Telusuri catatan rilis dan build sebelumnya di GitHub.',
  'settings.about.openReleases': 'Buka rilis GitHub',
  'settings.about.connection': 'Koneksi',
  'settings.about.connectionMode': 'Mode',
  'settings.about.connectionModeLocal': 'Lokal',
  'settings.about.connectionModeCloud': 'Awan',
  'settings.about.connectionModeUnset': 'Tidak dipilih',
  'settings.about.serverUrl': 'URL Server',
  'settings.about.serverUrlUnavailable': 'Tidak tersedia',
  'settings.about.connectionHelperLocal':
    'Spawn in- proses oleh Tauri shell pada aplikasi peluncuran. Port dipilih saat startup, jadi URL ini berubah antara peluncuran.',
  'settings.about.connectionHelperCloud':
    'Terhubung ke inti remote. Ubah ini dalam BootCheck atau mode awan picker.',
  'settings.heartbeat.title': 'Detak jantung & loop',
  'settings.usage.title': 'Penggunaan & batas',
  'settings.usage.menuDesc': 'Biaya, penggunaan token, anggaran, dan aktivitas latar belakang',
  'settings.costDashboard.title': 'Papan dashboard Biaya',
  'settings.costDashboard.sevenDayCost': '7 hari biaya harian',
  'settings.costDashboard.sevenDayTokens': 'Penggunaan token 7 hari',
  'settings.costDashboard.totalSpend': 'Total 7 hari',
  'settings.costDashboard.monthlyPace': 'Kecepatan bulanan',
  'settings.costDashboard.budgetLimit': 'Batas anggaran',
  'settings.costDashboard.utilization': 'Utilisasi',
  'settings.costDashboard.modelBreakdown': 'Kerusakan per- model',
  'settings.costDashboard.model': 'Model AI',
  'settings.costDashboard.provider': 'Penyedia',
  'settings.costDashboard.cost': 'Biaya',
  'settings.costDashboard.tokens': 'Token',
  'settings.costDashboard.requests': 'Permintaan',
  'settings.costDashboard.percentOfTotal': '% total',
  'settings.costDashboard.inputTokens': 'Input',
  'settings.costDashboard.outputTokens': 'Output',
  'settings.costDashboard.budgetNormal': 'Pada trek',
  'settings.costDashboard.budgetWarning': 'Peringatan',
  'settings.costDashboard.budgetExceeded': 'Lebih dari anggaran',
  'settings.costDashboard.noBudget': 'Tak ada batas yang ditata',
  'settings.costDashboard.noData': 'Tidak ada biaya yang dicatat belum selama 7 hari terakhir.',
  'settings.costDashboard.noModels': 'Tidak ada aktivitas model dalam 7 hari terakhir.',
  'settings.costDashboard.loading': 'Memuat dasbor biaya...',
  'settings.costDashboard.disabledHint':
    'Papan dashboard biaya dinonaktifkan dalam konfigurasi. Set [cost.dashboard] diaktifkan = true dalam config.toml untuk mengaktifkan kembali.',
  'settings.costDashboard.subtitle':
    'Hidup menghabiskan dan token membakar seluruh kawanan. Bars auto- refresh setiap beberapa detik - tidak ada halaman reload yang dibutuhkan.',
  'settings.costDashboard.summaryAriaLabel': 'Metric ringkasan biaya',
  'settings.costDashboard.lastSevenDays': '7 hari terakhir',
  'settings.costDashboard.utilizationOf': 'of',
  'settings.costDashboard.thisMonth': 'bulan ini',
  'settings.costDashboard.monthlyPaceHint':
    'Diproyeksikan pengeluaran bulanan pada tingkat harian (avg × 30).',
  'settings.costDashboard.budgetLimitHint':
    'Anggaran bulanan dibaca dari Cost.months _ limit _ usd di config.toml.',
  'settings.costDashboard.dailyTarget': 'Target harian',
  'settings.costDashboard.today': 'Hari ini',
  'settings.costDashboard.todayBadge': 'TODAY',
  'settings.costDashboard.unknownProvider': '-',
  'settings.costDashboard.justNow': 'Baru saja',
  'settings.costDashboard.secondsAgo': '{value}s yang lalu',
  'settings.costDashboard.minutesAgo': '{value}m yang lalu',
  'settings.costDashboard.hoursAgo': '{value}h yang lalu',
  'settings.costDashboard.daysAgo': '{value}d yang lalu',
  'settings.costDashboard.updated': 'Diperbarui',
  'settings.costDashboard.refresh': 'Segarkan',
  'settings.costDashboard.utcNote': 'Hari libur di UTC',
  'settings.costDashboard.stackedNote': 'Masukan + keluaran ditumpuk',
  'settings.costDashboard.modelBreakdownHint': 'Diperburuk 7 hari terakhir.',
  'settings.costDashboard.categoryDistribution': 'Pengeluaran per kategori',
  'settings.costDashboard.categoryDistributionHint':
    'Disimpulkan dari catatan terbaru untuk chat, embedding, suara, gambar, dan reranking.',
  'settings.costDashboard.noCategories': 'Belum ada pengeluaran kategori yang dicatat.',
  'settings.costDashboard.categoryMeta': '{requests} permintaan • {tokens} token',
  'settings.costDashboard.usageLog': 'Log penggunaan',
  'settings.costDashboard.usageLogHint':
    'Catatan terbaru dari {days} hari terakhir, dibatasi {limit} baris.',
  'settings.costDashboard.logTotal': '{requests} permintaan • {cost}',
  'settings.costDashboard.noUsageLog': 'Tidak ada catatan penggunaan untuk periode ini.',
  'settings.costDashboard.when': 'Waktu',
  'settings.costDashboard.category': 'Kategori',
  'settings.costDashboard.session': 'Sesi',
  'settings.costDashboard.noDataHint':
    'Kirim pesan agen - penggunaan token dari panggilan penyedia berikutnya akan mengisi bagan dalam waktu ~10.',
  'settings.search.title': 'Mesin pencari',
  'settings.search.menuDesc':
    'Baku bagi OpenHuman- mengatur pencarian atau menghubungkan penyedia anda sendiri dengan kunci API.',
  'settings.search.description':
    'Pilih mesin pencari yang digunakan agen, atau nonaktifkan alat pencarian sepenuhnya. Managed menggunakan backend OpenHuman (tanpa pengaturan). Parallel, Brave, dan Querit berjalan langsung dari mesin Anda menggunakan kunci API Anda.',
  'settings.search.engineAria': 'Mesin pencari',
  'settings.search.engineDisabledLabel': 'Disabled',
  'settings.search.engineDisabledDesc':
    'Hapus alat pencarian dari konteks agen dan daftar alat yang tersedia.',
  'settings.search.engineManagedLabel': 'OpenHuman Dikelola',
  'settings.search.engineManagedDesc':
    'Baku. Diarahkan melalui backend OpenHuman — tidak diperlukan kunci API.',
  'settings.search.localManagedUnavailable':
    'Pencarian OpenHuman Managed tidak tersedia untuk pengguna lokal. Tambahkan API key Parallel atau Brave Anda sendiri untuk mengaktifkan pencarian web.',
  'settings.search.engineParallelLabel': 'Parallel',
  'settings.search.engineParallelDesc':
    'Parallel Langsung API: pencarian, ekstrak, percakapan, penelitian, perkaya, alat dataset.',
  'settings.search.engineBraveLabel': 'Brave Penelusuran',
  'settings.search.engineBraveDesc':
    'Brave Langsung Pencarian API: web, berita, gambar, dan alat video.',
  'settings.search.engineQueritLabel': 'Querit',
  'settings.search.engineQueritDesc':
    'Querit Langsung API: pencarian web dengan situs, rentang waktu, negara, dan filter bahasa.',
  'settings.search.statusConfigured': 'Dikonfigurasi',
  'settings.search.statusNeedsKey': 'Memerlukan kunci API',
  'settings.search.fallbackToManaged':
    'Tidak ada kunci yang dikonfigurasi - pencarian akan jatuh kembali ke Managed sampai kunci disimpan.',
  'settings.search.getApiKey': 'Dapatkan kunci API',
  'settings.search.save': 'Simpan',
  'settings.search.clear': 'Hapus',
  'settings.search.show': 'Tampilkan',
  'settings.search.hide': 'Sembunyikan',
  'settings.search.statusSaving': 'Menyimpan…',
  'settings.search.statusSaved': 'Tersimpan.',
  'settings.search.statusError': 'Gagal',
  'settings.search.parallelKeyLabel': 'Parallel API kunci',
  'settings.search.braveKeyLabel': 'Brave Penelusuran API kunci',
  'settings.search.queritKeyLabel': 'kunci Querit API',
  'settings.search.placeholderStored': '•••••••• (disimpan)',
  'settings.search.placeholderParallel': 'pk_...',
  'settings.search.placeholderBrave': 'BSA...',
  'settings.search.placeholderQuerit': 'kunci Querit API',
  'settings.search.allowedSitesLabel': 'Situs yang diijinkan',
  'settings.search.allowedSitesHint':
    'Host yang boleh dibuka dan dibaca oleh asisten — melalui pengambilan web dan alat browser — satu per baris, mis. reuters.com. Sebuah host juga mencakup subdomain-nya. Penelusuran web itu sendiri tidak dibatasi oleh daftar ini.',
  'settings.search.allowedSitesAllOn':
    'Asisten dapat membuka website publik. Alamat lokal dan pribadi tetap diblokir.',
  'settings.search.allowedSitesPlaceholder': 'reuters.com\napnews.com\ngithub.com',
  'settings.search.allowedSitesSave': 'Simpan situs web',
  'settings.search.accessModeAria': 'Mode akses web',
  'settings.search.accessAllowAll': 'Izinkan semua',
  'settings.search.accessCustom': 'Kustom',
  'settings.search.accessBlockAll': 'Blokir semua',
  'settings.search.accessBlockAllHint':
    'Semua akses web diblokir - asisten tidak dapat membuka atau membaca website apapun.',
  // ─── Settings global search bar ────────────────────────────
  'settings.settingsSearch.placeholder': 'Cari pengaturan…',
  'settings.settingsSearch.ariaLabel': 'Cari pengaturan',
  'settings.settingsSearch.clear': 'Hapus pencarian',
  'settings.settingsSearch.resultsLabel': 'Hasil pencarian',
  'settings.settingsSearch.noResults': 'Tidak ada pengaturan yang cocok untuk “{query}”',
  'settings.embeddings.title': 'Sematan',
  'settings.embeddings.description':
    'Pilih penyedia embedding yang mengubah memori menjadi vektor untuk pencarian semantik. Mengubah penyedia, model, atau dimensi membatalkan vektor yang tersimpan dan memerlukan reset memori penuh.',
  'settings.embeddings.providerAria': 'Penyedia embedding',
  'settings.embeddings.statusConfigured': 'Dikonfigurasi',
  'settings.embeddings.statusNeedsKey': 'Perlu kunci API',
  'settings.embeddings.requiresSignIn': 'Memerlukan masuk OpenHuman',
  'settings.embeddings.managedLoginRequired':
    'Embedding terkelola memerlukan masuk OpenHuman. Masuk untuk menggunakan backend OpenHuman.',
  'settings.embeddings.managedBannerIntro':
    'Embedding terkelola dirutekan melalui backend OpenHuman dan memerlukan sesi akun OpenHuman.',
  'settings.embeddings.managedBannerLocalSession':
    'Keluar dari sesi lokal dan masuk untuk menggunakan penyedia ini, atau beralih ke penyedia embedding lokal atau bawa-kunci-sendiri.',
  'settings.embeddings.managedBannerRemoteSession':
    'Masuk lagi untuk menyegarkan sesi OpenHuman Anda, atau beralih ke penyedia embedding lokal atau bawa-kunci-sendiri.',
  'settings.embeddings.signInAgain': 'Masuk lagi',
  'settings.embeddings.apiKeyLabel': 'Kunci API {provider}',
  'settings.embeddings.placeholderStored': '•••••••• (disimpan)',
  'settings.embeddings.placeholderKey': 'Tempel kunci API Anda…',
  'settings.embeddings.keyStoredEncrypted': 'Kunci API Anda disimpan terenkripsi di perangkat ini.',
  'settings.embeddings.show': 'Tampilkan',
  'settings.embeddings.hide': 'Sembunyikan',
  'settings.embeddings.save': 'Simpan',
  'settings.embeddings.clear': 'Hapus',
  'settings.embeddings.model': 'Model AI',
  'settings.embeddings.dimensions': 'Dimensi',
  'settings.embeddings.customEndpoint': 'Endpoint kustom',
  'settings.embeddings.customModelPlaceholder': 'Nama model',
  'settings.embeddings.customDimsPlaceholder': 'Meredupkan',
  'settings.embeddings.applyCustom': 'Terapkan',
  'settings.embeddings.testConnection': 'Uji koneksi',
  'settings.embeddings.testing': 'Menguji…',
  'settings.embeddings.testSuccess': 'Terhubung — {dims} dimensi',
  'settings.embeddings.connectionTestFailed': 'Pengujian gagal',
  'settings.embeddings.verifyFallback':
    'Tidak dapat memverifikasi endpoint embeddings. Pastikan endpoint berjalan dan menyediakan model embedding, lalu simpan lagi.',
  'settings.embeddings.testFailed': 'Gagal: {error}',
  'settings.embeddings.saving': 'Menyimpan…',
  'settings.embeddings.saved': 'Tersimpan.',
  'settings.embeddings.errorPrefix': 'Gagal',
  'settings.embeddings.wipeTitle': 'Reset vektor memori?',
  'settings.embeddings.wipeBody':
    'Mengubah penyedia embedding, model, atau dimensi akan menghapus semua vektor memori yang tersimpan. Memori harus dibangun ulang sebelum pencarian berfungsi kembali. Ini tidak dapat dibatalkan.',
  'settings.embeddings.cancel': 'Batal',
  'settings.embeddings.confirmWipe': 'Hapus & terapkan',
  'settings.embeddings.setupTitle': 'Siapkan {provider}',
  'settings.embeddings.saveAndSwitch': 'Simpan & ganti',
  'settings.embeddings.optional': 'opsional',
  'settings.embeddings.vectorSearchDisabled':
    'Pencarian Vektor dinonaktifkan. Recall memori akan menggunakan kata kunci pencocokan dan retensi saja - tidak ada peringkat semantik.',
  'settings.embeddings.clearKey': 'Hapus kunci API',
  'pages.settings.ai.embeddings': 'Penyematan',
  'pages.settings.ai.embeddingsDesc': 'Model encoding vektor untuk pengambilan memori',
  'mcp.alphaBadge': 'Alfa',
  'mcp.alphaBannerText':
    'Dukungan server MCP masih dalam tahap alpha awal. Registry, alur instalasi, dan koneksi alat mungkin berperilaku tidak terduga atau berubah antara rilis.',
  'mcp.toolList.noTools': 'Tidak ada alat yang tersedia.',
  'mcp.setup.secretDialog.title': 'MCP Penyiapan — Masukkan Rahasia',
  'mcp.setup.secretDialog.bodyPrefix': 'Agen penyiapan MCP memerlukan',
  'mcp.setup.secretDialog.bodySuffix':
    'Nilai Anda dikirim langsung ke inti proses dan tidak pernah memasuki percakapan AI.',
  'mcp.setup.secretDialog.inputLabel': 'Nilai',
  'mcp.setup.secretDialog.inputPlaceholder': 'Tempel di sini',
  'mcp.setup.secretDialog.show': 'Tampilkan',
  'mcp.setup.secretDialog.hide': 'Sembunyikan',
  'mcp.setup.secretDialog.submit': 'Kirim',
  'mcp.setup.secretDialog.cancel': 'Batal',
  'mcp.setup.secretDialog.submitting': 'Mengirimkan…',
  'mcp.setup.secretDialog.errorPrefix': 'Gagal mengirimkan:',
  'mcp.setup.secretDialog.privacyNote':
    'Terenkripsi di meja rahasia MCP lokal. Tidak pernah log atau dikirim ke model.',
  'devices.betaBadge': 'Beta',
  'devices.betaText':
    'Fitur ini sedang dalam versi beta. Pasangkan ponsel iOS dengan OpenHuman ini untuk menggunakannya sebagai klien jarak jauh.',
  'devices.comingSoonDescription':
    'Pemasangan perangkat akan segera hadir. Halaman ini akan menjadi tempat untuk memasangkan iPhone dan mengelola perangkat yang terhubung.',
  'devices.title': 'Perangkat',
  'devices.pairIphone': 'Pasangkan iPhone',
  'devices.noPaired': 'Tidak ada perangkat yang dipasangkan',
  'devices.emptyState':
    'Pindai kode QR di iPhone Anda untuk menghubungkannya ke sesi OpenHuman ini.',
  'devices.devicePairedTitle': 'Perangkat yang dipasangkan',
  'devices.devicePairedMessage': 'iPhone berhasil tersambung.',
  'devices.deviceRevokedTitle': 'Perangkat dicabut',
  'devices.deviceRevokedMessage': '{label} dihapus.',
  'devices.revokeFailedTitle': 'Pencabutan gagal',
  'devices.online': 'Online',
  'devices.offline': 'Offline',
  'devices.lastSeenNever': 'Tidak pernah',
  'devices.lastSeenNow': 'Baru saja',
  'devices.lastSeenMinutes': '{count}m lalu',
  'devices.lastSeenHours': '{count}h lalu',
  'devices.lastSeenDays': '{count}d lalu',
  'devices.revoke': 'Cabut',
  'devices.revokeAria': 'Cabut {label}',
  'devices.confirmRevokeTitle': 'Cabut perangkat?',
  'devices.confirmRevokeBody':
    '{label} tidak akan lagi dapat terhubung. Tindakan ini tidak dapat dibatalkan.',
  'devices.loadFailed': 'Gagal memuat perangkat: {message}',
  'devices.pairModal.title': 'Pasangkan iPhone',
  'devices.pairModal.loading': 'Membuat kode penyandingan…',
  'devices.pairModal.instructions': 'Buka aplikasi OpenHuman di iPhone Anda dan pindai kode ini.',
  'devices.pairModal.expiresIn': 'Masa berlaku kode akan habis dalam ~{count} menit',
  'devices.pairModal.expiresInPlural': 'Masa berlaku kode akan habis dalam ~{count} menit',
  'devices.pairModal.showDetails': 'Tampilkan detailnya',
  'devices.pairModal.hideDetails': 'Sembunyikan detailnya',
  'devices.pairModal.channelId': 'ID Saluran',
  'devices.pairModal.pairingUrl': 'Penyandingan URL',
  'devices.pairModal.expiredTitle': 'QR code kedaluwarsa',
  'devices.pairModal.expiredBody': 'Buat kode baru untuk melanjutkan penyandingan.',
  'devices.pairModal.generateNewCode': 'Buat kode baru',
  'devices.pairModal.successTitle': 'Dipasangkan dengan iPhone',
  'devices.pairModal.autoClose': 'Menutup secara otomatis…',
  'devices.pairModal.errorPrefix': 'Gagal membuat penyandingan: {message}',
  'devices.pairModal.errorTitle': 'Ada yang tidak beres',
  'devices.pairModal.copyUrl': 'Salin',
  'mcp.catalog.searchAria': 'Cari katalog server MCP',
  'mcp.catalog.searchPlaceholder': 'Cari katalog server MCP...',
  'mcp.catalog.loadFailed': 'Gagal memuat katalog',
  'mcp.catalog.noResults': 'Tidak ada server yang ditemukan.',
  'mcp.catalog.noResultsFor': 'Tidak ditemukan server untuk "{query}".',
  'mcp.catalog.loadMore': 'Muat selengkapnya',
  'mcp.configAssistant.title': 'Asisten konfigurasi',
  'mcp.configAssistant.empty':
    'Tanyakan tentang konfigurasi, env vars yang diperlukan, atau langkah setup.',
  'mcp.configAssistant.autoPromptCta': 'Dapatkan bantuan penyiapan langkah demi langkah',
  'mcp.configAssistant.suggestedValues': 'Nilai yang disarankan:',
  'mcp.configAssistant.valueHidden': '(nilai tersembunyi)',
  'mcp.configAssistant.applySuggested': 'Terapkan nilai yang disarankan',
  'mcp.configAssistant.reinstallHint': 'Instal ulang dengan nilai ini untuk menerapkannya.',
  'mcp.configAssistant.thinking': 'Berpikir...',
  'mcp.configAssistant.inputPlaceholder':
    'Ajukan suatu pertanyaan (Masukkan untuk mengirim, Shift + Enter untuk baris baru)',
  'mcp.configAssistant.send': 'Kirim',
  'mcp.configAssistant.failedResponse': 'Gagal mendapat respons',
  'mcp.toolList.availableSingular': '{count} alat tersedia',
  'mcp.toolList.availablePlural': '{count} alat tersedia',
  'mcp.toolList.tryTool': 'Cobalah',
  'mcp.toolList.tryToolAria': 'Buka tempat bermain eksekusi untuk {name}',
  'mcp.playground.title': 'Jalankan {name}',
  'mcp.playground.close': 'Tutup taman bermain',
  'mcp.playground.inputSchema': 'Skema masukan',
  'mcp.playground.argsLabel': 'Argumen (JSON)',
  'mcp.playground.argsHelp':
    'Tipe JSON yang cocok dengan skema masukan. Masukan kosong diperlakukan sebagai {}.',
  'mcp.playground.runShortcut': '/Ctrl + Enter untuk dijalankan',
  'mcp.playground.format': 'Format',
  'mcp.playground.invalidJson': 'JSON tidak valid',
  'mcp.playground.run': 'Jalankan alat',
  'mcp.playground.running': 'Berjalan...',
  'mcp.playground.result': 'Hasil',
  'mcp.playground.resultError': 'Alat mengembalikan galat',
  'mcp.playground.copyResult': 'Hasil salinan',
  'mcp.playground.copied': 'Disalin',
  'mcp.playground.history': 'Riwayat',
  'mcp.playground.historyEmpty': 'Belum ada doa dalam sesi ini.',
  'mcp.playground.historyLoad': 'Muat',
  'mcp.playground.unexpectedError': 'Terjadi galat saat memanggil alat.',
  'mcp.catalog.deployed': 'Dikerahkan',
  'mcp.catalog.installCount': '{count} diinstal',
  'app.update.dismissNotification': 'Tutup pemberitahuan pembaruan',
  'bootCheck.rpcAuthSuffix': 'di setiap RPC.',
  'app.localAiDownload.expandAria': 'Perluas kemajuan pengunduhan',
  'app.localAiDownload.collapseAria': 'Ciutkan kemajuan pengunduhan',
  'app.localAiDownload.dismissAria': 'Tutup pemberitahuan unduhan',
  'mobile.nav.ariaLabel': 'Navigasi seluler',
  'progress.stepsAria': 'Langkah kemajuan',
  'progress.stepAria': 'Langkah {current} dari {total}',
  'workspace.vaultsTitle': 'Gudang pengetahuan',
  'workspace.vaultsDesc': 'Arahkan ke folder lokal; file dipotong dan dicerminkan ke dalam memori.',
  'calls.title': 'Panggilan',
  'calls.comingSoonBody': 'Panggilan dengan bantuan AI akan segera hadir. Pantau terus.',
  'art.rotatingTetrahedronAria': 'Pesawat ruang angkasa tetrahedron terbalik yang berputar',
  'mcp.installed.title': 'Terpasang',
  'mcp.installed.browseCatalog': 'Jelajahi katalog',
  'mcp.installed.empty': 'Belum ada server MCP yang terinstal.',
  'mcp.installed.toolSingular': '{count} alat',
  'mcp.installed.toolPlural': '{count} alat',
  'mcp.health.title': 'Kesehatan',
  'mcp.health.summaryAria': 'Ringkasan sambungan kesehatan MCP',
  'mcp.health.connectedCount': '{count} tersambung',
  'mcp.health.connectingCount': 'Menghubungkan {count}',
  'mcp.health.errorCount': 'Kesalahan {count}',
  'mcp.health.disconnectedCount': '{count} diam',
  'mcp.health.retryAll': 'Coba lagi semua ({count})',
  'mcp.health.retryAllAria': 'Coba lagi semua server {count} terdistorsi',
  'mcp.health.disconnectAll': 'Putuskan semua ({count})',
  'mcp.health.disconnectAllAria': 'Putuskan semua server {count} terhubung dengan server MCP',
  'mcp.health.disconnectConfirm.title': 'Putuskan semua server MCP?',
  'mcp.health.disconnectConfirm.body':
    'Ini akan memutuskan {count} server MCP yang sedang terhubung. Konfigurasi dan rahasia yang terpasang tetap disimpan; Anda dapat menghubungkan kembali server mana saja nanti.',
  'mcp.health.disconnectConfirm.cancel': 'Batal',
  'mcp.health.disconnectConfirm.confirm': 'Putuskan semua',
  'mcp.health.opErrorGeneric': 'Operasi Bulk gagal. Lihat log.',
  'mcp.health.bulkPartialFailure': '{failed} dari {total} server gagal. Lihat log.',
  'mcp.installed.search.landmarkAria': 'Pencarian terinstal server MCP',
  'mcp.installed.search.inputAria': 'Filter yang terpasang server MCP dengan nama',
  'mcp.installed.search.placeholder': 'Penyaring server...',
  'mcp.installed.search.clearAria': 'Bersihkan filter',
  'mcp.installed.search.countMatches': '{shown} dari server {total}',
  'mcp.installed.search.noMatches': 'Tak ada server yang cocok dengan "{query}".',
  'mcp.inventory.openButton': 'Inventaris',
  'mcp.inventory.openAria': 'Buka panel inventaris MCP yang dapat diasah',
  'mcp.inventory.title': 'Sharable MCP Inventaris',
  'mcp.inventory.subtitle':
    'Ekspor server MCP terinstal Anda sebagai manifest bebas portabel, atau impor satu dari rekan satu tim. Nilai env rahasia tidak pernah disertakan atau diimpor.',
  'mcp.inventory.close': 'Tutup panel inventaris',
  'mcp.inventory.tablistAria': 'Daerah inventaris',
  'mcp.inventory.tab.export': 'Ekspor',
  'mcp.inventory.tab.import': 'Impor',
  'mcp.inventory.export.empty':
    'Belum ada server MCP yang terpasang - belum ada yang perlu diekspor. Pasang satu dari katalog pertama.',
  'mcp.inventory.export.privacyTitle': 'Apa yang ada di sini jelas',
  'mcp.inventory.export.privacyBody':
    'Nama server, nama yang memenuhi syarat, hanya config variabel KEY, dan bukan rahasia saja. Nilai rahasia, identifikasi mesin Anda, dan penanda waktu instal sengaja dilucuti.',
  'mcp.inventory.export.serverCount': 'Server {count} dalam daftar muatan ini',
  'mcp.inventory.export.copy': 'Salin',
  'mcp.inventory.export.copied': 'Disalin',
  'mcp.inventory.export.copyAria': 'Salin manifest JSON ke papan klip',
  'mcp.inventory.export.download': 'Unduh',
  'mcp.inventory.export.downloadAria': 'Unduh daftar muatan sebagai berkas JSON',
  'mcp.inventory.import.trustTitle': 'Perlakukan manifestasi impor sebagai kode tidak terpercaya',
  'mcp.inventory.import.trustBody':
    'Server MCP adalah alat yang kau berikan pada agenmu. Hanya impor manifestasi dari sumber yang Anda percaya. Setiap instalasi memerlukan klik eksplisit Anda; tidak ada yang otomatis terinstal.',
  'mcp.inventory.import.pasteLabel': 'Tempel daftar muatan JSON',
  'mcp.inventory.import.pastePlaceholder':
    'Tempel daftar muatan di sini, atau unggah berkas .json di bawah ini.',
  'mcp.inventory.import.preview': 'Pratinjau',
  'mcp.inventory.import.clear': 'Bersihkan',
  'mcp.inventory.import.uploadFile': 'atau mengunggah sebuah berkas .json',
  'mcp.inventory.import.uploadFileAria': 'Unggah berkas manifest .json',
  'mcp.inventory.import.fileTooLarge': 'Berkas terlalu besar (lebih dari 1 MB). Menolak beban.',
  'mcp.inventory.import.fileReadFailed': 'Tidak dapat membaca berkas.',
  'mcp.inventory.import.parseErrorPrefix': 'Tidak dapat mengurai daftar muatan:',
  'mcp.inventory.import.previewHeading': 'Pratinjau',
  'mcp.inventory.import.previewCounts': 'Server {total} - {newly} baru, {already} telah dipasang',
  'mcp.inventory.import.previewEmpty': 'Terlihat tidak ada server.',
  'mcp.inventory.import.exportedFrom': 'Diusir dari {exporter}',
  'mcp.inventory.import.exportedAt': 'di {when}',
  'mcp.inventory.import.statusNew': 'Baru',
  'mcp.inventory.import.statusAlreadyInstalled': 'Sudah dipasang',
  'mcp.inventory.import.envKeysLabel': 'Env kunci',
  'mcp.inventory.import.install': 'Instal',
  'mcp.inventory.import.installAria': 'Pasang {name} dari daftar muatan ini',
  'mcp.inventory.import.skipped': 'dilewati',
  'mcp.inventory.parseError.empty': 'Menyatakan kosong.',
  'mcp.inventory.parseError.invalidJson': 'JSON tidak sah.',
  'mcp.inventory.parseError.rootNotObject': 'Menyatakan harus menjadi objek JSON di akar.',
  'mcp.inventory.parseError.unsupportedSchema':
    'Skema manifest tidak didukung - berkas ini tidak dihasilkan oleh sebuah exporter yang kompatibel.',
  'mcp.inventory.parseError.missingExportedAt': 'Kehilangan atau tidak valid `exported_at` field.',
  'mcp.inventory.parseError.missingExportedBy': 'Kehilangan atau tidak valid `exported_by` field.',
  'mcp.inventory.parseError.invalidServers': 'Hilang atau tidak valid `servers` array.',
  'mcp.inventory.parseError.serverNotObject': 'Entri server bukan objek.',
  'mcp.inventory.parseError.serverMissingQualifiedName':
    'Sebuah entri server hilang yang memenuhi syarat _ nama.',
  'mcp.inventory.parseError.serverMissingDisplayName': 'Entri server kehilangan nama layarnya.',
  'mcp.inventory.parseError.serverEnvKeysNotArray':
    'Entri server memiliki ruas env _ keys yang bukan array string.',
  'mcp.inventory.parseError.serverContainsEnv':
    'Sebuah entri server berisi sebuah peta nilai `env`. Menolak impor - manifest hanya harus memuat env _ keys (names), jangan pernah nilai rahasia.',
  'mcp.inventory.parseError.duplicateQualifiedName':
    'Duplikasi _ nama memenuhi syarat ditemukan dalam daftar muatan. Setiap server harus muncul sekali.',
  'mcp.tab.loading': 'Memuat MCP server...',
  'mcp.tab.emptyDetail': 'Pilih server atau telusuri katalog.',
  'mcp.tab.filter.all': 'Semua',
  'mcp.tab.filter.installed': 'Terpasang ({count})',
  'mcp.tab.filter.registry': 'Registri',
  'mcp.tab.column.name': 'Nama',
  'mcp.tab.column.description': 'Deskripsi',
  'mcp.tab.column.type': 'Tipe',
  'mcp.tab.column.author': 'Penulis',
  'mcp.tab.column.action': 'Aksi',
  'mcp.tab.transport.hosted': 'Terhosting',
  'mcp.tab.transport.local': 'Stdio',
  'mcp.tab.transportFilter.label': 'Tipe',
  'mcp.tab.transportFilter.aria': 'Filter server berdasarkan transport',
  'mcp.tab.link.website': 'Situs web',
  'mcp.tab.link.repo': 'Repositori',
  'mcp.tab.transport.hostedHint':
    'Berjalan di server jarak jauh — masuk atau token diatur saat memasang',
  'mcp.tab.transport.localHint': 'Berjalan di perangkat Anda — mungkin perlu token saat memasang',
  'mcp.tab.officialBadge': 'Resmi',
  'mcp.tab.officialHint': 'Server resmi dari vendor',
  'mcp.tab.badge.installed': 'Terpasang',
  'mcp.tab.badge.registry': 'Registri',
  'mcp.tab.action.manage': 'Kelola',
  'mcp.tab.aria.viewDetails': 'Lihat detail untuk {name}',
  'mcp.tab.aria.installServer': 'Instal {name}',
  'mcp.install.loadingDetail': 'Memuat detail server...',
  'mcp.install.back': 'Kembali',
  'mcp.install.title': 'Instal {name}',
  'mcp.install.requiredEnv': 'Variabel lingkungan yang diperlukan',
  'mcp.install.enterValue': 'Masukkan {key}',
  'mcp.install.show': 'Tampilkan',
  'mcp.install.hide': 'Sembunyikan',
  'mcp.install.configLabel': 'Konfigurasi (JSON opsional)',
  'mcp.install.configPlaceholder': '{"key": "value"}',
  'mcp.install.missingRequired': '"{key}" diperlukan',
  'mcp.install.invalidJson': 'Konfigurasi JSON bukan JSON yang valid',
  'mcp.install.failedDetail': 'Gagal memuat detail server',
  'mcp.install.failedInstall': 'Penginstalan gagal',
  'mcp.install.button': 'Penginstalan',
  'mcp.install.installing': 'Penginstalan...',
  'mcp.install.by': 'oleh',
  'mcp.install.useCount': '{count} instalasi',
  'mcp.install.connections': 'Koneksi tersedia',
  'mcp.install.published': 'diterbitkan',
  'mcp.install.configureAndInstall': 'Konfigurasi & instal',
  'mcp.install.configureTitle': 'Konfigurasi {name}',
  'mcp.install.advancedConfig': 'Konfigurasi lanjutan',
  'mcp.detail.suggestedEnvReady': 'Nilai lingkungan yang disarankan sudah siap',
  'mcp.detail.suggestedEnvBody':
    'Instal ulang server ini dengan nilai yang disarankan untuk diterapkan: {keys}',
  'mcp.detail.connect': 'Sambungkan',
  'mcp.detail.connecting': 'Sambungan...',
  'mcp.detail.authenticate': 'Masuk',
  'mcp.detail.authRequired':
    'Server ini mengharuskan Anda masuk atau menambahkan token akses sebelum dapat tersambung. Klik “Masuk” untuk mengautentikasi.',
  'mcp.detail.disconnect': 'Putuskan sambungan',
  'mcp.detail.hideAssistant': 'Sembunyikan asisten',
  'mcp.detail.helpConfigure': 'Bantu saya mengonfigurasi',
  'mcp.detail.confirmUninstall': 'Konfirmasi uninstall?',
  'mcp.detail.confirmUninstallAction': 'Ya, hapus instalan',
  'mcp.detail.uninstall': 'Hapus instalan',
  'mcp.detail.envVars': 'Variabel lingkungan',
  'mcp.detail.reconfigure': 'Konfigurasi ulang',
  'mcp.detail.reconfigureHint':
    'Masukkan nilai baru untuk setiap variabel, lalu hubungkan kembali. Ini menggantikan nilai yang tersimpan.',
  'mcp.detail.saveReconnect': 'Simpan dan hubungkan kembali',
  'mcp.detail.reconfigureSaving': 'Menyimpan…',
  'mcp.detail.reconfigureSuccess': 'Lingkungan diperbarui dan terhubung kembali.',
  'mcp.detail.reconfigureReconnectFailed':
    'Tersimpan, tetapi gagal menghubungkan kembali dengan nilai baru.',
  'mcp.detail.enable': 'Aktifkan',
  'mcp.detail.disable': 'Nonaktifkan',
  'mcp.status.disabled': 'Dinonaktifkan',
  'mcp.status.unauthorized': 'Perlu masuk',
  'mcp.detail.tools': 'Alat',
  'mcp.connectAuth.title': 'Hubungkan {name}',
  'mcp.connectAuth.hint':
    'Tambahkan autentikasi yang dibutuhkan server ini, lalu hubungkan. Token disimpan terenkripsi. Biarkan kosong untuk server yang tidak memerlukan autentikasi.',
  'mcp.connectAuth.requiredLabel': 'Wajib',
  'mcp.connectAuth.customHeadersLabel': 'Header kustom',
  'mcp.connectAuth.customHeadersEmpty':
    'Tidak ada header kustom. Tambahkan satu jika server ini memerlukan header autentikasi yang tidak dideklarasikan oleh registri.',
  'mcp.connectAuth.addHeader': '+ Tambah header',
  'mcp.connectAuth.headerName': 'Nama header',
  'mcp.connectAuth.headerValue': 'Nilai',
  'mcp.connectAuth.removeHeader': 'Hapus header',
  'mcp.connectAuth.howToGetToken': 'Bantuan & konfigurasi',
  'mcp.connectAuth.tokenProvider': 'Dapatkan token Anda di:',
  'mcp.connectAuth.findToken': 'Di mana saya mendapatkan token?',
  'mcp.connectAuth.hideHelp': 'Sembunyikan bantuan',
  'mcp.connectAuth.schemeLabel': 'Cara mengirim nilai',
  'mcp.connectAuth.schemeBearer': 'Bearer',
  'mcp.connectAuth.schemeRaw': 'Tidak ada',
  'mcp.connectAuth.reconnectFailed': 'Kredensial tersimpan, tetapi koneksi gagal.',
  'mcp.connectAuth.oauthHint':
    'Server ini menggunakan OAuth. Masuk melalui browser Anda untuk mengizinkan OpenHuman.',
  'mcp.connectAuth.signIn': 'Masuk dengan browser',
  'mcp.connectAuth.oauthWaiting': 'Menunggu proses masuk…',
  'mcp.connectAuth.oauthOrToken':
    'Sudah punya token akses? Tempelkan sebagai header Authorization di bawah ini saja.',
  'mcp.connectAuth.oauthTimeout': 'Waktu menunggu proses masuk lewat browser habis. Coba lagi.',
  'mcp.connectAuth.authError.oauthRequired':
    'Server ini menggunakan OAuth. Gunakan “Masuk dengan browser” — token yang ditempelkan tidak akan diterima.',
  'mcp.connectAuth.authError.tokenRejected':
    'Server menolak token ini. Pastikan token benar dan belum kedaluwarsa.',
  'mcp.connectAuth.authError.credentialRequired':
    'Server ini memerlukan autentikasi. Tambahkan token, atau masuk.',
  'onboarding.skipForNow': 'Lewati Sekarang',
  'onboarding.localAI.continueWithCloud': 'Lanjutkan dengan Cloud',
  'onboarding.localAI.useLocalAnyway':
    'Gunakan AI lokal tetap (tidak disarankan untuk perangkat Anda)',
  'onboarding.localAI.useLocalInstead': 'Gunakan AI lokal saja (hubungkan Ollama sekarang)',
  'onboarding.localAI.setupIssue': 'Penyiapan AI lokal mengalami masalah',
  'autonomy.title': 'Otonomi agen',
  'autonomy.maxActionsLabel': 'Tindakan maksimal per jam',
  'autonomy.maxActionsHelp':
    'Jumlah maksimum tindakan alat yang dapat dijalankan agen per jam bergulir. Nilai baru berlaku untuk obrolan berikutnya. Pekerjaan cron dan pendengar saluran tetap menggunakan batas saat ini sampai Anda me-restart OpenHuman.',
  'autonomy.statusSaving': 'Menyimpan…',
  'autonomy.statusSaved': 'Tersimpan.',
  'autonomy.statusFailed': 'Gagal',
  'autonomy.unlimitedNote': 'Tidak terbatas — pembatasan tarif dinonaktifkan.',
  'autonomy.invalidIntegerMsg':
    'Harus berupa bilangan bulat positif (gunakan preset Tidak Terbatas untuk tanpa batas).',
  'autonomy.presetUnlimited': 'Tidak terbatas (default)',
  'triggers.toggleFailed': '{action} gagal untuk {trigger}: {message}',
  'settings.ai.overview': 'Ringkasan Sistem AI',
  'settings.ai.configStatus': 'Status Konfigurasi',
  'settings.ai.fallbackMode': 'Mode Fallback',
  'settings.ai.loadedFromRuntime': 'Dimuat dari Runtime',
  'settings.ai.loadingDuration': 'Durasi Muat',
  'settings.ai.localRuntime': 'Runtime Model Lokal',
  'settings.ai.openManager': 'Buka Pengelola',
  'settings.ai.retryDownload': 'Coba Unduh Lagi',
  'settings.ai.state': 'Status',
  'settings.ai.targetModel': 'Model Target',
  'settings.ai.download': 'Unduh',
  'settings.ai.localModelUnavailable': 'Status model lokal tidak tersedia.',
  'settings.ai.soulConfig': 'Konfigurasi Persona SOUL',
  'settings.ai.refreshing': 'Menyegarkan...',
  'settings.ai.refreshSoul': 'Segarkan SOUL',
  'settings.ai.loadingSoul': 'Memuat konfigurasi SOUL...',
  'settings.ai.identity': 'Identitas',
  'settings.ai.personality': 'Kepribadian',
  'settings.ai.safetyRules': 'Aturan Keamanan',
  'settings.ai.source': 'Sumber',
  'settings.ai.loaded': 'Dimuat',
  'settings.ai.toolsConfig': 'Konfigurasi TOOLS',
  'settings.ai.refreshTools': 'Segarkan TOOLS',
  'settings.ai.toolsAvailable': 'Alat Tersedia',
  'settings.ai.tools': 'alat',
  'settings.ai.activeSkills': 'Skill Aktif',
  'settings.ai.skills': 'skill',
  'settings.ai.skillsOverview': 'Ringkasan Skill',
  'settings.ai.refreshingAll': 'Menyegarkan Semua...',
  'settings.ai.refreshAll': 'Segarkan Semua Konfigurasi AI',
  'settings.notifications.suppressAll': 'Tahan semua notifikasi',
  'settings.notifications.suppressAllDesc':
    'Blokir semua toast notifikasi OS dari aplikasi tertanam terlepas dari status fokus.',
  'settings.notifications.toggleDnd': 'Alihkan Jangan Ganggu',
  'settings.notifications.categories': 'Kategori',
  'settings.notifications.categoryFooter':
    'Menonaktifkan kategori menghentikan notifikasi baru jenis tersebut muncul di pusat notifikasi. Notifikasi yang sudah ada tetap tersimpan sampai dibersihkan.',
  'settings.billing.movedToWeb': 'Tagihan dipindahkan ke web',
  'settings.billing.openDashboard': 'Buka dashboard tagihan',
  'settings.billing.movedToWebDesc':
    'Perubahan langganan, metode pembayaran, kredit, dan invoice kini dikelola di web TinyHumans.',
  'settings.billing.backToSettings': 'Kembali ke pengaturan',
  'settings.billing.openingBrowser': 'Membuka browser Anda...',
  'settings.billing.browserNotOpen': 'Jika browser tidak terbuka, gunakan tombol di atas.',
  'settings.billing.browserOpenFailed':
    'Browser tidak dapat dibuka otomatis. Gunakan tombol di atas.',
  'settings.tools.chooseCapabilities':
    'Pilih kemampuan yang dapat digunakan OpenHuman atas nama Anda.',
  'settings.tools.saveChanges': 'Simpan Perubahan',
  'settings.tools.preferencesSaved': 'Preferensi tersimpan',
  'settings.tools.saveFailed': 'Gagal menyimpan preferensi. Coba lagi.',
  'settings.screenAwareness.mode': 'Mode',
  'settings.screenAwareness.allExceptBlacklist': 'Semua Kecuali Blacklist',
  'settings.screenAwareness.whitelistOnly': 'Whitelist Saja',
  'settings.screenAwareness.screenMonitoring': 'Pemantauan Layar',
  'settings.screenAwareness.saveSettings': 'Simpan Pengaturan',
  'settings.screenAwareness.session': 'Sesi',
  'settings.screenAwareness.status': 'Status',
  'settings.screenAwareness.active': 'Aktif',
  'settings.screenAwareness.stopped': 'Berhenti',
  'settings.screenAwareness.remaining': 'Tersisa',
  'settings.screenAwareness.startSession': 'Mulai Sesi',
  'settings.screenAwareness.stopSession': 'Hentikan Sesi',
  'settings.screenAwareness.analyzeNow': 'Analisis Sekarang',
  'settings.screenAwareness.macosOnly':
    'Tangkapan layar desktop dan kontrol izin Screen Awareness saat ini hanya didukung di macOS.',
  'connections.comingSoon': 'Segera hadir',
  'connections.setUp': 'Atur',
  'connections.configured': 'Dikonfigurasi',
  'connections.unavailable': 'Tidak tersedia',
  'connections.checking': 'Memeriksa...',
  'connections.walletConfigured':
    'Identitas EVM, BTC, Solana, dan Tron lokal dikonfigurasi dari frasa pemulihan Anda.',
  'connections.walletReady':
    'Siapkan identitas EVM, BTC, Solana, dan Tron lokal dari satu frasa pemulihan.',
  'connections.walletError':
    'Tidak dapat memeriksa status dompet. Ketuk untuk mencoba lagi dari panel Frasa Pemulihan.',
  'connections.walletChecking': 'Memeriksa status dompet...',
  'connections.walletIdentities': 'Identitas dompet',
  'connections.walletDerived':
    'Diturunkan secara lokal dari frasa pemulihan Anda dan hanya disimpan sebagai metadata aman.',
  'connections.privacySecurity': 'Privasi & Keamanan',
  'connections.privacySecurityDesc':
    'Semua data dan kredensial disimpan lokal dengan kebijakan zero-data retention. Informasi Anda dienkripsi dan tidak pernah dibagikan ke pihak ketiga.',
  'channels.status.connecting': 'Menghubungkan',
  'channels.status.notConfigured': 'Belum dikonfigurasi',
  'channels.noActiveRoute': 'Tidak ada rute aktif',
  'channels.activeRoute': 'Rute aktif',
  'channels.loadingDefinitions': 'Memuat definisi kanal...',
  'channels.channelConnections': 'Koneksi Kanal',
  'channels.configureAuthModes': 'Konfigurasi mode autentikasi untuk setiap kanal pesan.',
  'channels.configNotAvailable': 'Konfigurasi untuk',
  'channels.channel': 'kanal',
  'devOptions.coreModeNotSet': 'Mode core: belum diatur',
  'devOptions.coreModeNotSetDesc':
    'Pemilih boot-check belum dikonfirmasi. Gunakan Ganti mode di pemilih untuk memilih Lokal atau Cloud.',
  'devOptions.local': 'Lokal',
  'devOptions.embeddedCoreSidecar': 'Core sidecar tertanam',
  'devOptions.sidecarSpawned':
    'Dijalankan dalam proses oleh shell Tauri saat aplikasi diluncurkan.',
  'devOptions.cloud': 'Cloud',
  'devOptions.remoteCoreRpc': 'RPC core jarak jauh',
  'devOptions.token': 'Token',
  'devOptions.tokenNotSet': 'belum diatur — RPC akan 401',
  'devOptions.triggerSentryTest': 'Picu Tes Sentry (staging)',
  'devOptions.triggerSentryTestDesc':
    'Mengirim error bertag untuk memverifikasi pipeline Sentry. Issue #1072 — hapus setelah verifikasi.',
  'devOptions.sendTestEvent': 'Kirim event tes',
  'devOptions.sending': 'Mengirim...',
  'devOptions.eventSent': 'Event terkirim',
  'devOptions.sentryDisabled': '(tidak ada id — Penjaga dinonaktifkan dalam build ini)',
  'devOptions.failed': 'Gagal',
  'devOptions.appLogs': 'Log aplikasi',
  'devOptions.appLogsDesc':
    'Buka folder berisi file log harian bergulir. Lampirkan file terbaru saat melaporkan masalah.',
  'devOptions.openLogsFolder': 'Buka folder log',
  'mnemonic.phraseSaved': 'Frasa pemulihan tersimpan',
  'mnemonic.walletReady': 'Identitas dompet multi-chain siap. Kembali ke pengaturan...',
  'mnemonic.writeDownWords': 'Tulis',
  'mnemonic.wordsInOrder':
    'kata ini secara berurutan dan simpan di tempat aman. Frasa ini mengamankan kunci enkripsi lokal dan identitas dompet EVM, BTC, Solana, dan Tron Anda.',
  'mnemonic.cannotRecover':
    'Frasa ini tidak dapat dipulihkan jika hilang dan harus tetap sepenuhnya lokal di perangkat Anda.',
  'mnemonic.copyToClipboard': 'Salin ke Clipboard',
  'mnemonic.alreadyHavePhrase': 'Saya sudah memiliki frasa pemulihan',
  'mnemonic.consentSaved':
    'Saya menyimpan frasa ini dan menyetujui penggunaannya untuk pengaturan dompet lokal',
  'mnemonic.enterPhraseToRestore':
    'Masukkan frasa pemulihan Anda di bawah untuk memulihkan identitas dompet lokal, atau tempel frasa lengkap ke kolom mana saja (12 kata untuk cadangan baru; frasa 24 kata dari versi lama tetap berfungsi).',
  'mnemonic.words': 'Kata',
  'mnemonic.validPhrase': 'Frasa pemulihan valid',
  'mnemonic.generateNewPhrase': 'Buat frasa pemulihan baru',
  'mnemonic.securingData': 'Mengamankan Data Anda...',
  'mnemonic.saveRecoveryPhrase': 'Simpan Frasa Pemulihan',
  'mnemonic.userNotLoaded': 'Pengguna belum dimuat. Silakan masuk lagi atau segarkan halaman.',
  'mnemonic.invalidPhrase': 'Frasa pemulihan tidak valid. Periksa kata-kata Anda dan coba lagi.',
  'mnemonic.somethingWentWrong': 'Terjadi kesalahan. Silakan coba lagi.',
  'mnemonic.walletAlreadyConfigured': 'Dompetmu sudah diatur.',
  'mnemonic.walletSource': 'Sumber',
  'mnemonic.walletWordCount': 'Jumlah kata frasa pemulihan',
  'mnemonic.walletLastUpdated': 'Terakhir diperbarui',
  'mnemonic.replaceWallet': 'Ganti dompet',
  'mnemonic.replaceWalletWarning':
    'Ini akan mengganti dompetmu saat ini secara permanen. Pastikan kamu telah mencadangkan frasa pemulihan sebelum melanjutkan.',
  'mnemonic.replaceWalletConfirm': 'Saya mengerti, ganti dompet saya',
  'mnemonic.loadingWalletStatus': 'Memeriksa status dompet...',
  'mnemonic.viewAccounts': 'Akun dompet',
  'mnemonic.revealRecoveryPhrase': 'Tampilkan frasa pemulihan',
  'mnemonic.hidePhrase': 'Sembunyikan frasa',
  'team.failedToCreate': 'Gagal membuat tim',
  'team.invalidInviteCode': 'Kode undangan tidak valid atau sudah kedaluwarsa',
  'team.failedToSwitch': 'Gagal berpindah tim',
  'team.failedToLeave': 'Gagal meninggalkan tim',
  'team.role.owner': 'Pemilik',
  'team.role.admin': 'Administrator',
  'team.role.billingManager': 'Manajer Tagihan',
  'team.role.member': 'Anggota',
  'team.active': 'Aktif',
  'team.personalTeam': 'Tim pribadi',
  'team.manageTeam': 'Kelola Tim',
  'team.switching': 'Berpindah...',
  'team.switch': 'Pindah',
  'team.leaving': 'Keluar...',
  'team.leave': 'Keluar',
  'team.yourTeams': 'Tim Anda',
  'team.createNewTeam': 'Buat Tim Baru',
  'team.teamName': 'Nama tim',
  'team.creating': 'Membuat...',
  'team.joinExistingTeam': 'Bergabung dengan Tim yang Ada',
  'team.personalAutoCreatedNote':
    'Tim pribadi Anda dibuat secara otomatis. Untuk berkolaborasi, gabung ke tim yang sudah ada dengan kode undangan di bawah.',
  'team.inviteCode': 'Kode undangan',
  'team.joining': 'Bergabung...',
  'team.join': 'Bergabung',
  'team.leaveTeam': 'Tinggalkan Tim',
  'team.confirmLeave': 'Yakin ingin meninggalkan',
  'team.leaveWarning':
    'Anda akan kehilangan akses ke tim dan semua sumber daya tim. Anda memerlukan undangan baru untuk bergabung kembali.',
  'team.management': 'Manajemen Tim',
  'team.notFound': 'Tim tidak ditemukan',
  'team.accessDenied': 'Akses ditolak',
  'team.members': 'Anggota',
  'team.membersDesc': 'Mengelola anggota tim dan peran',
  'team.invites': 'Undangan',
  'team.invitesDesc': 'Membuat dan mengelola kode undangan',
  'team.settings': 'Pengaturan Tim',
  'team.settingsDesc': 'Edit nama dan pengaturan tim',
  'team.editSettings': 'Edit Pengaturan Tim',
  'team.enterName': 'Masukkan nama tim',
  'team.saving': 'Menyimpan...',
  'team.saveChanges': 'Simpan Perubahan',
  'team.delete': 'Hapus Tim',
  'team.deleteDesc': 'Hapus tim ini secara permanen',
  'team.deleting': 'Menghapus...',
  'team.failedToUpdate': 'Gagal memperbarui tim',
  'team.failedToDelete': 'Gagal menghapus tim',
  'team.manageTitle': 'Kelola {name}',
  'team.planCreated': '{plan} Rencana • Dibuat {date}',
  'team.confirmDelete': 'Apakah Anda yakin ingin menghapus {name}?',
  'team.deleteWarning':
    'Tindakan ini tidak dapat dibatalkan. Semua data tim akan dihapus secara permanen.',
  'voice.title': 'Dikte Suara',
  'voice.settings': 'Pengaturan Suara',
  'voice.settingsDesc': 'Tahan hotkey untuk mendiktekan dan memasukkan teks ke kolom aktif.',
  'voice.hotkey': 'Pintasan',
  'voice.activationMode': 'Mode Aktivasi',
  'voice.tapToToggle': 'Ketuk untuk mengalihkan',
  'voice.writingStyle': 'Gaya Penulisan',
  'voice.verbatimTranscription': 'Transkripsi kata per kata',
  'voice.naturalCleanup': 'Pembersihan natural',
  'voice.autoStart': 'Mulai server suara otomatis dengan core',
  'voice.customDictionary': 'Kamus Kustom',
  'voice.customDictionaryDesc':
    'Tambahkan nama, istilah teknis, dan kata domain untuk meningkatkan akurasi pengenalan.',
  'voice.addWord': 'Tambahkan kata...',
  'voice.sttDisabled': 'Dikte suara dinonaktifkan sampai model STT lokal diunduh dan siap.',
  'voice.openLocalAiModel': 'Buka Model AI Lokal',
  'voice.serverRestarted': 'Server suara dimulai ulang dengan pengaturan baru.',
  'voice.settingsSaved': 'Pengaturan suara tersimpan.',
  'voice.serverStarted': 'Server suara dimulai.',
  'voice.serverStopped': 'Server suara dihentikan.',
  'voice.saveVoiceSettings': 'Simpan Pengaturan Suara',
  'voice.startVoiceServer': 'Mulai Server Suara',
  'voice.stopVoiceServer': 'Hentikan Server Suara',
  'voice.debugTitle': 'Debug Suara',
  'voice.failedToLoadSettings': 'Gagal memuat pengaturan suara',
  'voice.failedToSaveSettings': 'Gagal menyimpan pengaturan suara',
  'voice.failedToStartServer': 'Gagal memulai server suara',
  'voice.failedToStopServer': 'Gagal menghentikan server suara',
  'voice.sttDisabledPrefix': 'Dikte suara dinonaktifkan sampai model STT lokal diunduh. Gunakan',
  'voice.sttDisabledSuffix': 'di atas untuk menginstal Whisper.',
  'voice.debug.failedToLoadVoiceDebugData': 'Gagal memuat data debug suara',
  'voice.debug.settingsSaved': 'Pengaturan debug disimpan.',
  'voice.debug.failedToSaveSettings': 'Gagal menyimpan pengaturan suara',
  'voice.debug.runtimeStatus': 'Status Runtime',
  'voice.debug.runtimeStatusDesc':
    'Diagnostik langsung untuk server suara dan mesin ucapan-ke-teks.',
  'voice.debug.server': 'Server',
  'voice.debug.unavailable': 'Tidak tersedia',
  'voice.debug.ready': 'Siap',
  'voice.debug.notReady': 'Belum siap',
  'voice.debug.hotkey': 'Hotkey',
  'voice.debug.notAvailable': 't/a',
  'voice.debug.mode': 'Mode',
  'voice.debug.transcriptions': 'Transkripsi',
  'voice.debug.serverError': 'Kesalahan Server',
  'voice.debug.advancedSettings': 'Pengaturan Lanjutan',
  'voice.debug.advancedSettingsDesc':
    'Parameter penyesuaian tingkat rendah untuk perekaman dan deteksi keheningan.',
  'voice.debug.minimumRecordingSeconds': 'Detik Perekaman Minimum',
  'voice.debug.silenceThreshold': 'Ambang Batas Senyap (RMS)',
  'voice.debug.silenceThresholdDesc':
    'Rekaman dengan energi di bawah nilai ini dianggap sebagai keheningan dan dilewati. Lebih rendah = lebih sensitif.',
  'voice.debug.alwaysOn': 'Mendengarkan terus-menerus',
  'voice.debug.alwaysOnDesc':
    'Biarkan mikrofon tetap aktif dan kirim ucapan Anda ke agen secara otomatis, tanpa pintasan. Berhenti sementara saat layar terkunci.',
  'voice.providers.saved': 'Penyedia suara disimpan.',
  'voice.providers.failedToSave': 'Gagal menyimpan penyedia suara',
  'voice.providers.ellipsis': '…',
  'voice.providers.installing': 'Menginstal',
  'voice.providers.installingBusy': 'Menginstal…',
  'voice.providers.reinstallLocally': 'Instal ulang secara lokal',
  'voice.providers.repair': 'Perbaikan',
  'voice.providers.retryLocally': 'Coba lagi secara lokal',
  'voice.providers.installLocally': 'Instal secara lokal',
  'voice.providers.whisperReady': 'Whisper sudah siap.',
  'voice.providers.whisperInstallStarted': 'Penginstalan Whisper dimulai',
  'voice.providers.queued': 'antri',
  'voice.providers.failedToInstallWhisper': 'Gagal menginstal Whisper',
  'voice.providers.piperReady': 'Piper sudah siap.',
  'voice.providers.piperInstallStarted': 'Penginstalan Piper dimulai',
  'voice.providers.failedToInstallPiper': 'Gagal menginstal Piper',
  'voice.providers.title': 'Penyedia Suara',
  'voice.providers.desc':
    'Pilih tempat transkripsi dan sintesis dijalankan. Gunakan tombol Instal secara lokal untuk mengunduh biner dan model ke workspace Anda. Penyedia lokal dapat disimpan sebelum instalasi selesai — tidak perlu pengaturan WHISPER_BIN atau PIPER_BIN secara manual.',
  'voice.providers.sttProvider': 'Penyedia Ucapan-ke-Teks',
  'voice.providers.sttProviderAria': 'Penyedia STT',
  'voice.providers.cloudWhisperProxy': 'Cloud (Proksi Bisikan)',
  'voice.providers.localWhisper': 'Bisikan Lokal',
  'voice.providers.installRequired': '(perlu instalasi)',
  'voice.providers.whisperInstalledTitle': 'Bisikan dipasang. Klik untuk menginstal ulang.',
  'voice.providers.whisperDownloadTitle': 'Unduh whisper.cpp dan model GGML ke workspace Anda.',
  'voice.providers.installed': 'Terpasang',
  'voice.providers.installFailed': 'Penginstalan gagal',
  'voice.providers.notInstalled': 'Tidak terinstal',
  'voice.providers.whisperModel': 'Model Bisikan',
  'voice.providers.whisperModelAria': 'Model Bisikan',
  'voice.providers.whisperModelTiny': 'Kecil (39 MB, tercepat)',
  'voice.providers.whisperModelBase': 'Dasar (74 MB)',
  'voice.providers.whisperModelSmall': 'Kecil (244 MB)',
  'voice.providers.whisperModelMedium': 'Sedang (769 MB, disarankan)',
  'voice.providers.whisperModelLargeTurbo': 'Besar v3 Turbo (1,5 GB, akurasi terbaik)',
  'voice.providers.ttsProvider': 'Penyedia Text-to-Speech',
  'voice.providers.ttsProviderAria': 'Penyedia TTS',
  'voice.providers.cloudElevenLabsProxy': 'Cloud (proksi ElevenLabs)',
  'voice.providers.localPiper': 'Piper Lokal',
  'voice.providers.piperInstalledTitle': 'Piper sudah terpasang. Klik untuk menginstal ulang.',
  'voice.providers.piperDownloadTitle':
    'Unduh Piper dan suara en_US-lessac-medium bawaan ke workspace Anda.',
  'voice.providers.piperVoice': 'Suara Piper',
  'voice.providers.piperVoiceAria': 'Suara Piper',
  'voice.providers.customVoiceOption': 'Lainnya (ketik di bawah)…',
  'voice.providers.customVoiceAria': 'Piper voice id (khusus)',
  'voice.providers.customVoicePlaceholder': 'en_US-lessac-medium',
  'voice.providers.piperVoicesDesc':
    'Suara berasal dari huggingface.co/rhasspy/piper-voices. Mengganti suara mungkin memerlukan klik Instal/Instal Ulang untuk mengunduh .onnx baru.',
  'voice.providers.mascotVoice': 'Suara Maskot',
  'voice.providers.mascotVoiceDescPrefix':
    'Suara ElevenLabs yang digunakan maskot untuk balasan lisan dikonfigurasi di bawah',
  'voice.providers.mascotSettings': 'Pengaturan Maskot',
  'voice.providers.mascotVoiceDescSuffix': '.',
  'voice.providers.hotkeyPlaceholder': 'Fn',
  'voice.providers.piperPreset.lessacMedium': 'AS · Lessac (netral, disarankan)',
  'voice.providers.piperPreset.lessacHigh': 'AS · Lessac (kualitas lebih tinggi, lebih besar)',
  'voice.providers.piperPreset.ryanMedium': 'AS · Ryan (pria)',
  'voice.providers.piperPreset.amyMedium': 'AS · Amy (wanita)',
  'voice.providers.piperPreset.librittsHigh': 'AS · LibriTTS (multi-speaker)',
  'voice.providers.piperPreset.alanMedium': 'GB · Alan (pria)',
  'voice.providers.piperPreset.jennyDiocoMedium': 'GB · Jenny Dioco (wanita)',
  'voice.providers.piperPreset.northernEnglishMaleMedium': 'GB · Bahasa Inggris Utara (pria)',
  'voice.providers.chip.cloud': 'OpenHuman (Terkelola)',
  'voice.providers.chip.cloudAria': 'Penyedia terkelola OpenHuman selalu aktif',
  'voice.providers.chip.whisper': 'Whisper (Lokal)',
  'voice.providers.chip.enableWhisper': 'Aktifkan Whisper STT lokal',
  'voice.providers.chip.disableWhisper': 'Nonaktifkan Whisper STT lokal',
  'voice.providers.chip.piper': 'Piper (Lokal)',
  'voice.providers.chip.enablePiper': 'Aktifkan Piper TTS lokal',
  'voice.providers.chip.disablePiper': 'Nonaktifkan Piper TTS lokal',
  'voice.providers.chip.enableProvider': 'Enable',
  'voice.providers.chip.disableProvider': 'Disable',
  'voice.providers.chip.apiKeyLabel': 'Kunci API',
  'voice.providers.chip.apiKeyPlaceholder': 'sk-…',
  'voice.providers.chip.comingSoon': 'segera hadir',
  'voice.modal.title': 'Configure',
  'voice.modal.desc':
    'Masukkan API key Anda untuk mengaktifkan penyedia ini. Anda dapat menguji koneksi sebelum menyimpan.',
  'voice.modal.testKey': 'Uji Kunci',
  'voice.modal.testing': 'Menguji…',
  'voice.modal.saveAndEnable': 'Simpan & Aktifkan',
  'voice.modal.enable': 'Enable',
  'voice.modal.whisperDesc':
    'Pilih ukuran model dan instal biner Whisper serta model GGML ke workspace Anda. Model yang lebih besar lebih akurat tetapi lebih lambat.',
  'voice.modal.piperDesc':
    'Pilih suara dan instal biner Piper serta model ONNX ke workspace Anda. Piper berjalan sepenuhnya offline dengan latensi rendah.',
  'voice.routing.title': 'Perutean Suara',
  'voice.routing.desc':
    'Pilih penyedia yang diaktifkan untuk menangani ucapan-ke-teks dan teks-ke-ucapan.',
  'voice.routing.save': 'Save',
  'voice.routing.testStt': 'Uji STT',
  'voice.routing.testTts': 'Uji TTS',
  'voice.routing.elevenlabsVoice': 'Suara ElevenLabs',
  'voice.routing.elevenlabsVoiceAria': 'Pemilihan suara ElevenLabs',
  'voice.routing.elevenlabsVoiceIdAria': 'ID suara ElevenLabs (kustom)',
  'voice.routing.elevenlabsVoiceDesc':
    'Pilih suara yang dikurasi atau tempel ID suara kustom dari dasbor ElevenLabs Anda.',
  'voice.externalProviders.title': 'Penyedia Suara Eksternal',
  'voice.externalProviders.desc':
    'Hubungkan API STT/TTS pihak ketiga seperti Deepgram, ElevenLabs, atau OpenAI secara langsung.',
  'voice.externalProviders.keySet': 'Kunci diatur',
  'voice.externalProviders.noKey': 'Tidak ada API key',
  'voice.externalProviders.test': 'Test',
  'voice.externalProviders.testing': 'Menguji…',
  'voice.externalProviders.remove': 'Remove',
  'voice.externalProviders.provider': 'Provider',
  'voice.externalProviders.selectProvider': 'Pilih penyedia…',
  'voice.externalProviders.apiKey': 'Kunci API',
  'voice.externalProviders.apiKeyPlaceholder': 'sk-…',
  'voice.externalProviders.add': 'Add',
  'pttSettings.title': 'Tekan untuk bicara',
  'pttSettings.description':
    'Tahan sebuah tombol untuk berbicara dengan OpenHuman saat kamu sedang di aplikasi lain. Lepas tombol untuk mengirim; jika «Bacakan balasan» aktif, OpenHuman akan menyuarakan balasannya.',
  'pttSettings.shortcutLabel': 'Pintasan',
  'pttSettings.shortcutPlaceholder': 'Tekan sebuah tombol (mis. F13)',
  'pttSettings.shortcutUnsetHint':
    'Tekan untuk bicara mati — pilih pintasan untuk mengaktifkannya.',
  'pttSettings.speakRepliesLabel': 'Suarakan balasan agen',
  'pttSettings.showOverlayLabel': 'Tampilkan lapisan saat tombol ditahan',
  'pttSettings.errorConflictsWithDictation':
    'Pintasan ini sudah dipakai oleh dikte. Pilih tombol lain.',
  'pttSettings.errorModifierOnly':
    'Pilih tombol biasa (mis. F13) — pintasan hanya pengubah tidak berfungsi untuk tekan untuk bicara.',
  'pttSettings.errorEmpty': 'Pilih tombol untuk diikat.',
  'pttSettings.errorAccessibility':
    'macOS memerlukan izin Aksesibilitas untuk pintasan ini. Buka Pengaturan Sistem → Privasi & Keamanan → Aksesibilitas lalu aktifkan OpenHuman.',
  'pttSettings.errorShortcutInUse': 'Aplikasi lain sudah memakai pintasan ini. Pilih yang lain.',
  'pttSettings.errorUnsupportedWayland':
    'Sesi Wayland belum mendukung pintasan global di OpenHuman — beralihlah ke sesi X11 atau gunakan tombol dikte di dalam aplikasi.',
  'pttSettings.exclusiveFullscreenHint':
    'Pada game layar penuh eksklusif, lapisan tidak akan tampil — kamu hanya akan mendengar nada. Beralihlah ke layar penuh tanpa bingkai untuk melihat lapisan.',
  'pttOverlay.listening': 'Mendengarkan…',
  'pttOverlay.idle': 'Siaga',
  'autocomplete.title': 'Pelengkap Otomatis',
  'autocomplete.settings': 'Pengaturan',
  'autocomplete.acceptWithTab': 'Terima dengan Tab',
  'autocomplete.stylePreset': 'Preset Gaya',
  'autocomplete.style.balanced': 'Seimbang',
  'autocomplete.style.concise': 'Ringkas',
  'autocomplete.style.formal': 'Resmi',
  'autocomplete.style.casual': 'Santai',
  'autocomplete.style.custom': 'Kustom',
  'autocomplete.disabledApps': 'Aplikasi yang Dinonaktifkan (satu bundle/token aplikasi per baris)',
  'autocomplete.saveSettings': 'Simpan Pengaturan',
  'autocomplete.saving': 'Menyimpan...',
  'autocomplete.runtime': 'Waktu Proses',
  'autocomplete.running': 'Berjalan',
  'autocomplete.start': 'Mulai',
  'autocomplete.stop': 'Hentikan',
  'autocomplete.settingsSaved': 'Pengaturan pelengkap otomatis tersimpan.',
  'autocomplete.started': 'Pelengkap otomatis dimulai.',
  'autocomplete.didNotStart': 'Pelengkap otomatis tidak dimulai. Periksa apakah sudah diaktifkan.',
  'autocomplete.stopped': 'Pelengkap otomatis dihentikan.',
  'autocomplete.advancedSettings': 'Pengaturan lanjutan',
  'autocomplete.debugTitle': 'Debug Pelengkap Otomatis',
  'chat.agentChat': 'Chat Agen',
  'chat.overrides': 'Penggantian',
  'chat.model': 'Model',
  'chat.temperature': 'Temperatur',
  'chat.conversation': 'Percakapan',
  'chat.startAgentConversation': 'Mulai percakapan dengan agen.',
  'chat.you': 'Anda',
  'chat.agent': 'Agen',
  'chat.askAgent': 'Tanyakan apa saja ke agen...',
  'chat.sendMessage': 'Kirim Pesan',
  'composio.triageTitle': 'Pemicu Integrasi',
  'composio.triageDesc':
    'Saat aktif, setiap pemicu Composio yang masuk menjalani langkah triase AI yang mengklasifikasikan event dan mungkin memulai tindakan otomatis — satu giliran LLM lokal per pemicu. Nonaktifkan secara global atau per integrasi jika Anda lebih suka tinjauan manual. Jika variabel lingkungan',
  'composio.disableAllTriage': 'Nonaktifkan triase AI untuk semua pemicu',
  'composio.triggersStillRecorded':
    'Pemicu tetap dicatat ke riwayat — tidak ada giliran LLM yang dijalankan.',
  'composio.disableSpecificIntegrations': 'Nonaktifkan triase AI untuk integrasi tertentu',
  'composio.settingsSaved': 'Pengaturan disimpan',
  'composio.saveFailed': 'Gagal menyimpan. Coba lagi.',
  'cron.title': 'Cron Job',
  'cron.scheduledJobs': 'Job Terjadwal',
  'cron.manageCronJobs': 'Kelola cron job dari penjadwal core.',
  'cron.refreshCronJobs': 'Segarkan Cron Job',
  'localModel.modelStatus': 'Status Model',
  'localModel.downloadModels': 'Unduh Model',
  'localModel.usage': 'Pemakaian',
  'localModel.usageDesc':
    'Pilih subsistem mana yang berjalan di model lokal. Yang nonaktif memakai cloud.',
  'localModel.enableRuntime': 'Aktifkan runtime AI lokal',
  'localModel.enableRuntimeDesc':
    'Sakelar utama. Nonaktif secara default; Ollama tetap idle. Saat aktif, peringkas tree, kecerdasan layar, dan autocomplete selalu memakai model lokal.',
  'localModel.advancedSettings': 'Pengaturan lanjutan',
  'localModel.debugTitle': 'Debug Model Lokal',
  'screenAwareness.debugTitle': 'Debug Kesadaran Layar',
  'screenAwareness.debug.debugAndDiagnostics': 'Debug & Diagnostik',
  'screenAwareness.debug.collapse': 'Ciutkan',
  'screenAwareness.debug.expand': 'Perluas',
  'screenAwareness.debug.failedToSave': 'Gagal menyimpan kecerdasan layar',
  'screenAwareness.debug.policyTitle': 'Kebijakan Intelijen Layar',
  'screenAwareness.debug.baselineFps': 'FPS Dasar',
  'screenAwareness.debug.useVisionModel': 'Gunakan Model Visi',
  'screenAwareness.debug.useVisionModelDesc':
    'Kirim tangkapan layar ke LLM vision untuk konteks yang lebih kaya. Jika dinonaktifkan, hanya teks OCR yang digunakan dengan LLM teks — lebih cepat dan tidak memerlukan model vision.',
  'screenAwareness.debug.keepScreenshots': 'Simpan Tangkapan Layar',
  'screenAwareness.debug.keepScreenshotsDesc':
    'Simpan tangkapan layar yang diambil ke workspace alih-alih menghapusnya setelah diproses',
  'screenAwareness.debug.allowlist': 'Daftar yang diizinkan (satu aturan per baris)',
  'screenAwareness.debug.denylist': 'Daftar Tolak (satu aturan per baris)',
  'screenAwareness.debug.saveSettings': 'Simpan Pengaturan Kecerdasan Layar',
  'screenAwareness.debug.sessionStats': 'Statistik Sesi',
  'screenAwareness.debug.framesEphemeral': 'Bingkai (sementara)',
  'screenAwareness.debug.panicStop': 'Berhenti panik',
  'screenAwareness.debug.defaultPanicHotkey': 'Cmd+Shift+.',
  'screenAwareness.debug.vision': 'Vision',
  'screenAwareness.debug.idle': 'idle',
  'screenAwareness.debug.visionQueue': 'Antrean vision',
  'screenAwareness.debug.lastVision': 'Vision terakhir',
  'screenAwareness.debug.notAvailable': 'n/a',
  'screenAwareness.debug.visionSummaries': 'Ringkasan Vision',
  'screenAwareness.debug.refreshing': 'Menyegarkan…',
  'screenAwareness.debug.noSummaries': 'Belum ada ringkasan.',
  'screenAwareness.debug.unknownApp': 'Aplikasi Tidak Dikenal',
  'screenAwareness.debug.macosOnly': 'Screen Intelligence V1 saat ini hanya didukung di macOS.',
  'memory.debugTitle': 'Debug Memori',
  'memory.documents': 'Dokumen',
  'memory.filterByNamespace': 'Filter berdasarkan namespace...',
  'memory.refresh': 'Segarkan',
  'memory.noDocumentsFound': 'Tidak ada dokumen yang ditemukan.',
  'memory.delete': 'Hapus',
  'memory.rawResponse': 'Respons mentah',
  'memory.namespaces': 'Namespace',
  'memory.noNamespacesFound': 'Tidak ada namespace yang ditemukan.',
  'memory.queryRecall': 'Kueri & Penarikan Kembali',
  'memory.namespace': 'Namespace',
  'memory.queryText': 'Teks kueri...',
  'memory.defaultMaxChunks': '10',
  'memory.maxChunks': 'potongan maksimal',
  'memory.query': 'Kueri',
  'memory.recall': 'Penarikan kembali',
  'memory.queryLabel': 'Kueri',
  'memory.recallLabel': 'Penarikan kembali',
  'memory.queryResult': 'Hasil kueri',
  'memory.recallResult': 'Hasil penarikan',
  'memory.clearNamespace': 'Hapus Namespace',
  'memory.clearNamespaceDescription': 'Hapus secara permanen semua dokumen dalam namespace.',
  'memory.selectNamespace': 'Pilih namespace...',
  'memory.exampleNamespace': 'mis. skill:gmail:user@example.com',
  'memory.clear': 'Hapus',
  'memory.deleteConfirm': 'Hapus dokumen "{documentId}" di namespace "{namespace}"?',
  'memory.clearNamespaceConfirm':
    'Ini akan menghapus secara permanen SEMUA dokumen di namespace "{namespace}". Lanjutkan?',
  'memory.clearNamespaceSuccess': 'Namespace "{namespace}" dihapus.',
  'memory.clearNamespaceEmpty': 'Tidak ada yang perlu dihapus di "{namespace}".',
  'webhooks.debugTitle': 'Debug Webhook',
  'webhooks.failedToLoadDebugData': 'Gagal memuat data debug webhook',
  'webhooks.clearLogsConfirm': 'Hapus semua log debug webhook yang diambil?',
  'webhooks.failedToClearLogs': 'Gagal menghapus log webhook',
  'webhooks.loading': 'Memuat...',
  'webhooks.refresh': 'Segarkan',
  'webhooks.clearing': 'Menghapus...',
  'webhooks.clearLogs': 'Hapus Log',
  'webhooks.registered': 'terdaftar',
  'webhooks.captured': 'direkam',
  'webhooks.live': 'langsung',
  'webhooks.disconnected': 'terputus',
  'webhooks.lastEvent': 'Acara terakhir',
  'webhooks.at': 'pukul',
  'webhooks.registeredWebhooks': 'Webhook Terdaftar',
  'webhooks.noActiveRegistrations': 'Tidak ada registrasi aktif.',
  'webhooks.resolvingBackendUrl': 'Menyelesaikan backend URL…',
  'webhooks.capturedRequests': 'Permintaan yang Diambil',
  'webhooks.noRequestsCaptured': 'Belum ada permintaan webhook yang ditangkap.',
  'webhooks.unrouted': 'tidak dirutekan',
  'webhooks.pending': 'tertunda',
  'webhooks.requestHeaders': 'Header Permintaan',
  'webhooks.queryParams': 'Param Kueri',
  'webhooks.requestBody': 'Isi Permintaan',
  'webhooks.responseHeaders': 'Header Respons',
  'webhooks.responseBody': 'Isi Respons',
  'webhooks.rawPayload': 'Payload Mentah',
  'webhooks.empty': '[kosong]',
  'providerSetup.error.defaultDetails': 'Penyiapan penyedia gagal.',
  'providerSetup.error.providerFallback': 'Penyedia',
  'providerSetup.error.credentialsRejected':
    '{provider} menolak kredensial. Periksa API key dan coba lagi.',
  'providerSetup.error.endpointNotRecognized':
    '{provider} tidak mengenali endpoint. Periksa URL dasar dan coba lagi.',
  'providerSetup.error.providerUnavailable':
    '{provider} tidak tersedia saat ini. Coba lagi atau periksa status penyedia.',
  'providerSetup.error.unreachable':
    'Tidak dapat menjangkau {provider}. Periksa URL endpoint dan koneksi jaringan, lalu coba lagi.',
  'providerSetup.error.couldNotReachWithMessage': 'Tidak dapat menjangkau {provider}: {message}',
  'providerSetup.error.technicalDetails': 'Detail teknis',
  'notifications.routingTitle': 'Perutean Notifikasi',
  'notifications.routing.pipelineStats': 'Statistik saluran',
  'notifications.routing.total': 'Total',
  'notifications.routing.unread': 'Belum Dibaca',
  'notifications.routing.unscored': 'Belum diberi skor',
  'notifications.routing.intelligenceTitle': 'Intelijen Notifikasi',
  'notifications.routing.intelligenceDesc':
    'Setiap notifikasi dari akun yang terhubung dinilai oleh model AI lokal. Notifikasi penting secara otomatis diteruskan ke agen orkestrator Anda agar tidak ada yang terlewat.',
  'notifications.routing.howItWorks': 'Cara kerjanya',
  'notifications.routing.level.drop': 'Hapus',
  'notifications.routing.level.dropDesc': 'Kebisingan / spam — disimpan tetapi tidak muncul',
  'notifications.routing.level.acknowledge': 'Akui',
  'notifications.routing.level.acknowledgeDesc':
    'Prioritas rendah — ditampilkan di pusat notifikasi',
  'notifications.routing.level.react': 'Bereaksi',
  'notifications.routing.level.reactDesc': 'Prioritas sedang — memicu respons agen terfokus',
  'notifications.routing.level.escalate': 'Eskalasi',
  'notifications.routing.level.escalateDesc': 'Prioritas tinggi — diteruskan ke agen orkestra',
  'notifications.routing.perProvider': 'Per penyedia perutean',
  'notifications.routing.threshold': 'Ambang batas',
  'notifications.routing.routeToOrchestrator': 'Rute ke orkestrator',
  'notifications.routing.loadSettingsError':
    'Gagal memuat pengaturan. Buka kembali panel ini untuk mencoba lagi.',
  'common.reload': 'Muat ulang',
  'common.skip': 'Lewati',
  'common.disable': 'Nonaktifkan',
  'common.enable': 'Aktifkan',
  'chat.safetyTimeout': 'Tidak ada respons dari agen setelah 2 menit. Coba lagi atau cek koneksi.',
  'chat.filter.general': 'Umum',
  'chat.filter.subconscious': 'Bawah sadar',
  'chat.filter.meetings': 'Rapat',
  'chat.filter.tasks': 'Tugas',
  'chat.selectThread': 'Pilih thread',
  'chat.threads': 'Thread',
  'chat.noThreads': 'Belum ada thread',
  'chat.noLabelThreads': 'Tidak ada thread "{label}"',
  'chat.deleteThread': 'Hapus thread',
  'chat.deleteThreadConfirm': 'Yakin ingin menghapus "{title}"?',
  'chat.untitledThread': 'Thread tanpa judul',
  'chat.editThreadTitle': 'Edit judul utas',
  'chat.hideSidebar': 'Sembunyikan sidebar',
  'chat.showSidebar': 'Tampilkan sidebar',
  'chat.searchThreads': 'Cari percakapan',
  'layout.resizeSidebar': 'Ubah ukuran sidebar',
  'layout.showSidebar': 'Tampilkan sidebar',
  'chat.newThreadShortcut': 'Thread baru (/new)',
  'chat.new': 'Baru',
  'chat.failedToLoadMessages': 'Gagal memuat pesan',
  'chat.thinkingIteration': 'Berpikir... ({n})',
  'chat.thinkingDots': 'Berpikir...',
  'chat.approachingLimit': 'Mendekati batas pemakaian',
  'chat.approachingLimitMsg': 'Anda telah memakai {pct}% dari kuota yang tersedia.',
  'chat.upgrade': 'Tingkatkan',
  'chat.weeklyLimitHit': 'Anda telah mencapai batas mingguan.',
  'chat.resets': 'Reset',
  'chat.topUpToContinue': 'Isi ulang untuk melanjutkan.',
  'chat.budgetComplete': 'Budget bawaan Anda sudah habis. Tambah kredit atau upgrade untuk lanjut.',
  'chat.topUp': 'Isi Ulang',
  'chat.cycle': 'Siklus',
  'chat.cycleSpent': 'Terpakai siklus ini',
  'chat.cycleRemaining': 'Sisa',
  'chat.left': 'tersisa',
  'chat.setup': 'Atur',
  'chat.switchToText': 'Beralih ke teks',
  'chat.superContext.label': 'Super konteks',
  'chat.superContext.hint':
    'Super konteks memungkinkan OpenHuman mengumpulkan dan menyiapkan konteks dari semua data yang dapat diaksesnya agar dapat memberikan jawaban yang sangat relevan. Super konteks masih dalam tahap beta awal.',
  'chat.transcribing': 'Mentranskripsi...',
  'chat.stopAndSend': 'Berhenti dan kirim',
  'chat.startTalking': 'Mulai bicara',
  'chat.playingVoiceReply': 'Memutar balasan suara',
  'chat.voiceHint': 'Gunakan mikrofon untuk bicara',
  'chat.micUnavailable': 'Mikrofon tidak tersedia',
  'chat.turn': 'giliran',
  'chat.turns': 'giliran',
  'chat.openWorkerThread': 'Buka thread worker',
  'chat.attachment.attach': 'Lampirkan gambar',
  'chat.attachment.remove': 'Hapus {name}',
  'chat.attachment.tooMany': 'Maksimal {max} gambar per pesan',
  'chat.attachment.tooManyFiles': 'Maksimal {max} file per pesan',
  'chat.attachment.tooManyVideos': 'Maksimal {max} video per pesan',
  'chat.attachment.videoNotSupported':
    'Model ini tidak dapat membaca video. Anda dapat menggunakan tingkat Penalaran OpenHuman untuk melampirkan video Anda.',
  'chat.attachment.dropToAttach': 'Lepaskan file untuk melampirkan',
  'chat.attachment.tooLarge': 'Gambar melebihi batas ukuran {max}',
  'chat.attachment.unsupportedType':
    'Jenis file tidak didukung. Gunakan gambar (PNG, JPEG, WebP, GIF, BMP) atau file PDF, TXT, atau Markdown.',
  'chat.attachment.imageNotSupported':
    'Model ini tidak dapat membaca gambar. Anda dapat menggunakan tingkat Penalaran OpenHuman untuk melampirkan gambar Anda.',
  'chat.attachment.readFailed': 'Tidak dapat membaca file',
  'memory.searchAria': 'Cari memori',
  'memory.searchPlaceholder': 'Cari entri memori...',
  'memory.sourceFilter.all': 'Semua sumber',
  'memory.sourceFilter.email': 'Email',
  'memory.sourceFilter.calendar': 'Kalender',
  'memory.sourceFilter.telegram': 'Telegram',
  'memory.sourceFilter.aiInsight': 'Insight AI',
  'memory.sourceFilter.system': 'Sistem',
  'memory.sourceFilter.trading': 'Perdagangan',
  'memory.sourceFilter.security': 'Keamanan',
  'memory.ingestionActivity': 'Aktivitas Ingesti',
  'memory.events': 'peristiwa',
  'memory.event': 'peristiwa',
  'memory.overTheLast': 'selama',
  'memory.months': 'bulan',
  'memory.peak': 'Puncak',
  'memory.perDay': '/hari',
  'memory.less': 'Lebih sedikit',
  'memory.more': 'Lebih banyak',
  'memory.on': 'pada',
  'memory.loading': 'Memuat Memori',
  'memory.fetching': 'Mengambil entri memori Anda...',
  'memory.analyzing': 'Menganalisis Memori',
  'memory.analyzingHint': 'Memproses memori Anda untuk mengekstrak insight...',
  'memory.noMatches': 'Tidak Ada Hasil',
  'memory.noMatchesHint': 'Coba ubah kata kunci atau filter.',
  'memory.allCaughtUp': 'Semua Sudah Selesai',
  'memory.allCaughtUpHint': 'Tidak ada entri memori baru untuk diproses.',
  'memory.noAnalysis': 'Belum Ada Analisis',
  'memory.noAnalysisHint': 'Jalankan analisis untuk menemukan pola dalam memori Anda.',
  'memory.emptyHint': 'Mulai berinteraksi untuk membuat memori pertama Anda.',
  'mic.unavailable': 'Mikrofon tidak tersedia',
  'mic.permissionDenied': 'Izin mikrofon ditolak',
  'mic.failedToStartRecorder': 'Gagal memulai perekam',
  'mic.deviceUnavailable': 'Mikrofon yang dipilih tidak tersedia — coba perangkat lain.',
  'mic.deviceInUse': 'Mikrofon sedang digunakan oleh aplikasi lain.',
  'mic.error': 'Kesalahan mikrofon',
  'mic.transcribing': 'Mentranskripsi...',
  'mic.retryingTranscription': 'Mencoba ulang… ({attempt} dari {max})',
  'mic.tapToSend': 'Ketuk untuk mengirim',
  'mic.waitingForAgent': 'Menunggu agen...',
  'mic.tapAndSpeak': 'Ketuk dan bicara',
  'mic.stopRecording': 'Hentikan perekaman dan kirim',
  'mic.startRecording': 'Mulai merekam',
  'mic.deviceSelector': 'Perangkat mikrofon',
  'mic.tapToSendCountdown': 'Ketuk untuk mengirim ({seconds}d)',
  'token.usageLimitReached': 'Batas pemakaian tercapai',
  'token.approachingLimit': 'Mendekati batas',
  'token.planClickForDetails': 'paket - klik untuk detail',
  'token.sessionTokens': 'Masuk: {in} | Keluar: {out} | Giliran: {turns}',
  'token.limit': 'Batas Tercapai',
  'token.inLabel': 'MSK',
  'token.outLabel': 'KLR',
  'token.inputTokens': 'Token masuk sesi ini',
  'token.outputTokens': 'Token keluar sesi ini',
  'token.turnsCount': 'Putaran inferensi sesi ini',
  'token.turn': 'putaran',
  'token.turns': 'putaran',
  'token.ctxLabel': 'CTX',
  'token.contextWindow': 'Penggunaan jendela konteks (putaran terakhir)',
  'token.cachedLabel': 'Tersimpan',
  'token.costLabel': 'Biaya',
  'token.costTitle': 'Perkiraan biaya sesi ini (USD)',
  'token.sessionUsageTitle': 'Penggunaan sesi',
  'token.subAgentsHeading': 'Penggunaan sub-agen',
  'token.byAgentHeading': 'Per agen',
  'token.orchestrator': 'Orkestrator',
  'token.noSubAgents': 'Belum ada penggunaan sub-agen',
  'token.popInput': 'Token masukan',
  'token.popOutput': 'Token keluaran',
  'token.popCacheHit': 'Cache hit',
  'token.popContext': 'Jendela konteks',
  'token.tipInput':
    'Token yang dikirim ke model pada sesi ini — prompt Anda ditambah riwayat percakapan.',
  'token.tipOutput': 'Token yang dihasilkan model pada sesi ini.',
  'token.tipCacheHit':
    'Token masukan yang dilayani dari prefiks prompt yang di-cache, ditagih dengan tarif lebih rendah.',
  'token.clickForDetails': 'Klik untuk detail penggunaan sesi',
  'catalog.noCapabilityBinding': 'Tidak ada binding kemampuan',
  'catalog.downloadFailed': 'Unduhan gagal',
  'catalog.active': 'Aktif',
  'catalog.installed': 'Terinstal',
  'catalog.notDownloaded': 'Belum diunduh',
  'catalog.inUse': 'Sedang Dipakai',
  'catalog.use': 'Gunakan',
  'catalog.deleteModel': 'Hapus model',
  'catalog.download': 'Unduh',
  'navigator.recent': 'Terbaru',
  'navigator.today': 'Hari Ini',
  'navigator.thisWeek': 'Minggu Ini',
  'navigator.sources': 'Sumber',
  'navigator.email': 'Email',
  'navigator.slack': 'Slack',
  'navigator.chat': 'Obrolan',
  'navigator.documents': 'Dokumen',
  'navigator.people': 'Orang',
  'navigator.topics': 'Topik',
  'dreams.description':
    'Mimpi adalah refleksi yang dibuat AI yang mensintesis pola dari memori Anda.',
  'dreams.comingSoon': 'Segera hadir',
  'assignment.memoryLlm': 'LLM Memori',
  'assignment.memoryLlmAria': 'Pemilihan LLM Memori',
  'assignment.embedder': 'Penyemat',
  'assignment.loaded': 'Dimuat',
  'assignment.notDownloaded': 'Belum diunduh',
  'assignment.usedForExtractSummarise': 'Digunakan untuk ekstraksi dan ringkasan',
  'insights.knownFacts': 'Fakta yang Diketahui',
  'insights.preferences': 'Preferensi',
  'insights.relationships': 'Hubungan',
  'insights.skills': 'Skill',
  'insights.opinions': 'Pendapat',
  'insights.other': 'Lainnya',
  'insights.title': 'Wawasan',
  'insights.empty': 'Belum ada wawasan. Wawasan dibuat seiring bertambahnya memori Anda.',
  'insights.description': 'Berdasarkan {count} relasi di grafik memori Anda.',
  'insights.items': 'item',
  'insights.more': 'lagi',
  'calls.joiningCall': 'Bergabung ke panggilan',
  'calls.meetWindowOpening': 'Jendela Meet sedang dibuka...',
  'calls.failedToStart': 'Gagal memulai panggilan Meet',
  'calls.couldNotStart': 'Tidak dapat memulai panggilan',
  'calls.failedToClose': 'Gagal menutup panggilan',
  'calls.couldNotClose': 'Tidak dapat menutup panggilan',
  'calls.joinMeet': 'Bergabung ke panggilan Google Meet',
  'calls.joinMeetDescription': 'Masukkan tautan Google Meet untuk bergabung.',
  'calls.meetLink': 'Tautan Meet',
  'calls.displayName': 'Nama Tampilan',
  'calls.openingMeet': 'Membuka Meet...',
  'calls.joinCall': 'Bergabung ke Panggilan',
  'calls.activeCalls': 'Panggilan Aktif',
  'calls.leave': 'Keluar',
  'workspace.wipeConfirm':
    'Yakin ingin menghapus semua memori? Tindakan ini tidak dapat dibatalkan.',
  'workspace.resetTreeConfirm': 'Yakin ingin membangun ulang pohon memori?',
  'workspace.wipeTitle': 'Hapus Memori',
  'workspace.resetting': 'Mereset...',
  'workspace.resetMemory': 'Reset Memori',
  'workspace.resetTreeTitle': 'Bangun Ulang Pohon Memori',
  'workspace.rebuilding': 'Membangun ulang...',
  'workspace.resetMemoryTree': 'Reset Pohon Memori',
  'workspace.building': 'Membangun...',
  'workspace.buildSummaryTrees': 'Bangun Pohon Ringkasan',
  'workspace.viewVault': 'Lihat Vault',
  'workspace.openingVaultTitle': 'Membuka vault di Obsidian',
  'workspace.openingVaultMessage':
    'Jika Obsidian tidak terbuka, instal dari obsidian.md atau gunakan Tampilkan Folder. Path vault:',
  'workspace.openVaultFailedTitle': 'Tidak dapat membuka vault di Obsidian',
  'workspace.openVaultFailedMessage':
    'Gunakan Tampilkan Folder untuk membuka direktori vault secara langsung. Path vault:',
  'workspace.revealVaultFailed': 'Tidak dapat menampilkan folder vault',
  'workspace.revealFolder': 'Tampilkan Folder',
  'workspace.checkingVault': 'Memeriksa…',
  'workspace.vaultNotRegisteredHelp':
    'Obsidian hanya membuka folder yang telah Anda tambahkan sebagai vault. Di Obsidian, pilih "Buka folder sebagai vault" dan pilih folder di bawah — Anda hanya perlu melakukan ini sekali. Lalu klik Lihat Vault lagi.',
  'workspace.obsidianNotFoundHelp':
    'Kami tidak dapat menemukan Obsidian di perangkat ini. Instal, atau — jika dipasang di lokasi non-standar — atur folder konfigurasinya di Lanjutan.',
  'workspace.openAnyway': 'Buka di Obsidian tetap',
  'workspace.installObsidian': 'Instal Obsidian',
  'workspace.obsidianAdvanced': 'Obsidian dipasang di tempat lain?',
  'workspace.obsidianConfigDirLabel': 'Folder konfigurasi Obsidian',
  'workspace.obsidianConfigDirHint':
    'Jalur ke folder yang berisi obsidian.json (mis. ~/.config/obsidian). Biarkan kosong untuk deteksi otomatis.',
  'workspace.obsidianConfigDirPlaceholder': '~/.config/obsidian',
  'workspace.graphLoadFailed': 'Gagal memuat grafik memori',
  'workspace.loadingGraph': 'Memuat grafik memori...',
  'workspace.graphViewMode': 'Mode tampilan grafik memori',
  'workspace.trees': 'Pohon',
  'workspace.contacts': 'Kontak',
  'graph.noContactMentions': 'Tidak ada sebutan kontak',
  'graph.noMemory': 'Tidak ada memori',
  'graph.source': 'Sumber',
  'graph.topic': 'Topik',
  'graph.global': 'Keseluruhan',
  'graph.document': 'Dokumen',
  'graph.contact': 'Kontak',
  'graph.nodes': 'node',
  'graph.parentChild': 'induk-anak',
  'graph.documentContact': 'dokumen-kontak',
  'graph.link': 'tautan',
  'graph.links': 'tautan',
  'graph.children': 'anak',
  'graph.clickToOpenObsidian': 'Klik untuk membuka di Obsidian',
  'graph.person': 'Orang',
  'graph.resetView': 'Atur ulang tampilan',
  'modal.dontShowAgain': 'Jangan tampilkan saran serupa',
  'reflections.loading': 'Memuat refleksi...',
  'reflections.empty': 'Belum ada refleksi',
  'reflections.title': 'Refleksi',
  'reflections.proposedAction': 'Tindakan yang Diusulkan',
  'reflections.act': 'Tindakan',
  'reflections.dismiss': 'Abaikan',
  'reflections.viewConversation': 'Lihat',
  'subconscious.mode.label': 'Mode Alam Bawah Sadar',
  'subconscious.mode.off.title': 'Mati',
  'subconscious.mode.off.desc': 'Alam bawah sadar dinonaktifkan.',
  'subconscious.mode.simple.title': 'Sederhana',
  'subconscious.mode.simple.desc': 'Pengamatan hanya-baca. Hanya akses memori dan file.',
  'subconscious.mode.aggressive.title': 'Agresif',
  'subconscious.mode.aggressive.desc':
    'Akses alat penuh. Dapat menulis, membuat agen, dan mendelegasikan tugas.',
  'subconscious.mode.aggressiveWarning':
    'Mode agresif memberikan alam bawah sadar akses alat penuh termasuk menulis dan membuat sub-agen.',
  'subconscious.interval.label': 'Frekuensi',
  'subconscious.interval.minutes': '{n} mnt',
  'subconscious.interval.hours': '{n} jam',
  'subconscious.interval.oneHour': '1 jam',
  'subconscious.interval.oneDay': '24 jam',
  'whatsapp.chatsSynced': 'obrolan disinkronkan',
  'whatsapp.chatSynced': 'obrolan disinkronkan',
  'sync.active': 'Aktif',
  'sync.recent': 'Terbaru',
  'sync.idle': 'Siaga',
  'sync.memorySources': 'Sumber Memori',
  'sync.noConnectedSources': 'Tidak ada sumber terhubung',
  'sync.chunks': 'chunk',
  'sync.lastChunk': 'Chunk terakhir:',
  'sync.pending': 'tertunda',
  'sync.processed': 'diproses',
  'sync.syncing': 'Menyinkronkan...',
  'sync.sync': 'Sinkronkan',
  'sync.failedToLoad': 'Gagal memuat status sinkronisasi',
  'sync.noContent':
    'Belum ada konten yang disinkronkan ke memori. Hubungkan integrasi untuk memulai.',
  'memorySyncInterval.title': 'Jadwal sinkronisasi',
  'memorySyncInterval.lastSynced': 'Terakhir disinkronkan',
  'memorySyncInterval.never': 'tidak pernah',
  'memorySyncInterval.everyHours': 'Setiap {h} jam',
  'memorySyncInterval.everyMinutes': 'Setiap {m} menit',
  'memorySyncInterval.manual': 'Hanya manual',
  'memorySyncInterval.saveFailed': 'Gagal memperbarui jadwal sinkronisasi',
  'memorySources.title': 'Sumber Memori',
  'memorySources.empty': 'Belum ada sumber ingatan. Tambahkan satu untuk mulai makan memori.',
  'memorySources.customSources': 'Sumber Kustom',
  'memorySources.addSource': 'Tambah Sumber',
  'memorySources.noCustomSources':
    'Belum ada sumber khusus. Tambahkan folder, GitHub repo, RSS feed, atau halaman web untuk memulai.',
  'memorySources.loadingConnections': 'Memuat koneksi...',
  'memorySources.noConnections':
    'Tak ditemukan koneksi Composio yang aktif. Hubungkan integrasi dulu.',
  'memorySources.pickConnection': 'Pilih koneksi',
  'memorySources.selectConnection': '- Pilih koneksi -',
  'memorySources.comingSoon': 'Segera hadir',
  'memorySources.composioListFailed': 'Gagal memuat koneksi Composio.',
  'memorySources.browse': 'Jelajahi...',
  'memorySources.folderPathPlaceholder': '/Users/you/notes',
  'memorySources.globPatternPlaceholder': '* * /*.md',
  'memorySources.repoUrlPlaceholder': 'https://github.com/org/repo',
  'memorySources.branchPlaceholder': 'main',
  'memorySources.feedUrlPlaceholder': 'https://example.com/feed.xml',
  'memorySources.pageUrlPlaceholder': 'https://example.com/article',
  'memorySources.cssSelectorPlaceholder': 'article',
  'memorySources.searchQueryPlaceholder': 'dari: keselamatan AI pengguna',
  'memorySources.kind.composio': 'Integrasi',
  'memorySources.kind.conversation': 'Percakapan',
  'memorySources.kind.folder': 'Folder Lokal',
  'memorySources.kind.github_repo': 'Repo GitHub',
  'memorySources.kind.twitter_query': 'Pencarian Twitter',
  'memorySources.kind.rss_feed': 'Feed RSS',
  'memorySources.kind.web_page': 'Halaman Web',
  'memorySources.sync.successTitle': 'Menyinkronkan',
  'memorySources.sync.successMessage': 'Kemajuan akan segera muncul.',
  'memorySources.sync.failedTitle': 'Sinkronisasi gagal:',
  'memorySources.sync.completeTitle': 'Tersinkron',
  'memorySources.sync.itemsSynced': 'item tersinkron',
  'memorySources.sync.upToDate': 'Sudah terbaru',
  'memorySources.sync.failedLabel': 'Gagal',
  'time.justNow': 'baru saja',
  'time.secondsAgoSuffix': 'd lalu',
  'time.minutesAgoSuffix': 'm lalu',
  'time.hoursAgoSuffix': 'j lalu',
  'time.daysAgoSuffix': 'h lalu',
  'memorySources.pickKind': 'Sumber apa yang ingin Anda tambahkan?',
  'memorySources.backToKinds': 'Kembali ke tipe sumber',
  'memorySources.label': 'Label',
  'memorySources.labelPlaceholder': 'Catatan penelitianku.',
  'memorySources.add': 'Tambah',
  'memorySources.adding': 'Menambahkan…',
  'memorySources.added': 'Sumber ditambahkan',
  'memorySources.removed': 'Sumber dihapus',
  'memorySources.remove': 'Hapus',
  'memorySources.enable': 'Aktifkan',
  'memorySources.disable': 'Nonaktifkan',
  'memorySources.toggleFailed': 'Gagal mengalihkan',
  'memorySources.removeFailed': 'Gagal menghapus',
  'memorySources.folderPath': 'Path folder',
  'memorySources.globPattern': 'Pola glob',
  'memorySources.repoUrl': 'URL repositori',
  'memorySources.branch': 'Branch',
  'memorySources.feedUrl': 'URL feed',
  'memorySources.pageUrl': 'URL halaman',
  'memorySources.cssSelector': 'pemilih CSS (opsional)',
  'memorySources.searchQuery': 'Kueri pencarian',
  'memorySources.build.title': 'Bangun',
  'memorySources.build.building': 'Membangun…',
  'memorySources.build.successTitle': 'Pohon dibangun',
  'memorySources.build.failedTitle': 'Pembangunan gagal',
  'memorySources.build.sealsMessage': 'penyegelan selesai',
  'memorySources.allIn.button': 'Aktifkan Semua',
  'memorySources.allIn.title': 'Aktifkan Semua?',
  'memorySources.allIn.message':
    'Ini akan mengaktifkan semua sumber memori dan menghapus semua batas sinkronisasi. Membangun grafik memori terkaya, tetapi mungkin menggunakan lebih banyak kredit.',
  'memorySources.allIn.confirm': 'Ya',
  'memorySources.allIn.cancel': 'Tidak',
  'memorySources.allIn.success': 'Semua sumber diaktifkan tanpa batas. Sinkronisasi dimulai.',
  'memorySources.allIn.failed': 'Gagal mengaktifkan semua. Silakan coba lagi.',
  'memorySources.settings.button': 'Pengaturan',
  'memorySources.settings.title': 'Pengaturan sinkronisasi',
  'memorySources.settings.maxPrs': 'Maksimal pull request',
  'memorySources.settings.maxIssues': 'Maksimal isu',
  'memorySources.settings.maxCommits': 'Maksimal commit',
  'memorySources.settings.maxItems': 'Maksimal item',
  'memorySources.settings.sinceDays': 'Periode ke belakang (hari)',
  'memorySources.settings.syncDepthDays': 'Kedalaman sinkronisasi (hari)',
  'memorySources.settings.maxTokens': 'Maksimal token per sinkronisasi',
  'memorySources.settings.maxCost': 'Biaya maksimal per sinkronisasi (USD)',
  'memorySources.settings.unlimited': 'Tanpa batas',
  'memorySources.settings.unlimitedTooltip':
    'Anda memilih menyinkronkan maksimum untuk {toolkit}. Anda dapat mengubah batas di sini.',
  'memorySources.settings.maxed': 'Penuh',
  'memorySources.settings.save': 'Simpan',
  'memorySources.settings.saving': 'Menyimpan…',
  'memorySources.settings.saved': 'Pengaturan tersimpan',
  'memorySources.settings.saveFailed': 'Gagal menyimpan pengaturan',
  'backend.aiBackend': 'Backend AI',
  'backend.cloud': 'Awan',
  'backend.recommended': 'Direkomendasikan',
  'backend.cloudDescription': 'Model cepat dan kuat yang dihosting di server kami. Siap dipakai.',
  'backend.privacyNote': 'Data pribadi, pesan, atau kunci tidak pernah dikirim ke server kami.',
  'backend.local': 'Lokal',
  'backend.advanced': 'Lanjutan',
  'backend.localDescription':
    'Jalankan model di mesin Anda sendiri menggunakan Ollama. Privasi penuh, perlu pengaturan.',
  'backend.ramRecommended': 'RAM 16GB+ direkomendasikan',
  'subconscious.tasks': 'tugas',
  'subconscious.ticks': 'tick',
  'subconscious.last': 'Terakhir',
  'subconscious.failed': 'gagal',
  'subconscious.tickInterval': 'Interval Tick',
  'subconscious.runNow': 'Jalankan Sekarang',
  'subconscious.providerUnavailableTitle': 'Subconscious dijeda',
  'subconscious.providerSettings': 'Pengaturan AI',
  'subconscious.scratchpadInfo':
    'Pada setiap siklus, alam bawah sadar memeriksa apa yang berubah di seluruh sumber yang terhubung, lalu mencatat tindak lanjut di daftar tugas Anda, memperbarui sasaran Anda, atau memberi tahu Anda saat ada sesuatu yang perlu diperhatikan. Periksa Pengaturan → Akses agen untuk mengonfigurasi mode dan frekuensi.',
  'subconscious.approvalNeeded': 'Persetujuan Diperlukan',
  'subconscious.requiresApproval': 'Memerlukan persetujuan',
  'subconscious.fixInConnections': 'Perbaiki di Koneksi',
  'subconscious.goAhead': 'Lanjutkan',
  'subconscious.activeTasks': 'Tugas Aktif',
  'subconscious.noActiveTasks': 'Tidak ada tugas aktif',
  'subconscious.default': 'Bawaan',
  'subconscious.addTaskPlaceholder': 'Tambahkan tugas baru...',
  'subconscious.activityLog': 'Log Aktivitas',
  'subconscious.noActivity': 'Belum ada aktivitas',
  'subconscious.decision.nothingNew': 'Tidak ada yang baru',
  'subconscious.decision.completed': 'Selesai',
  'subconscious.decision.evaluating': 'Mengevaluasi',
  'subconscious.decision.waitingApproval': 'Menunggu persetujuan',
  'subconscious.decision.failed': 'Gagal',
  'subconscious.decision.cancelled': 'Dibatalkan',
  'subconscious.decision.skipped': 'Dilewati',
  // Subconscious triggers (event-driven orchestrator) debug panel
  'subconsciousTriggers.title': 'Pemicu Bawah Sadar',
  'subconsciousTriggers.subtitle': 'Orkestrator latar belakang berbasis peristiwa',
  'subconsciousTriggers.pipeline': 'Alur',
  'subconsciousTriggers.mode': 'Mode',
  'subconsciousTriggers.orchestrator': 'Orkestrator',
  'subconsciousTriggers.running': 'Berjalan',
  'subconsciousTriggers.stopped': 'Berhenti',
  'subconsciousTriggers.promotionsPerHour': 'Promosi / jam',
  'subconsciousTriggers.queueDepth': 'Kedalaman antrean',
  'subconsciousTriggers.orchestratorThread': 'Utas orkestrator',
  'subconsciousTriggers.userThread': 'Utas pengguna',
  'subconsciousTriggers.disabledHint': 'Aktifkan mode berbasis peristiwa untuk mengaktifkan alur.',
  'subconsciousTriggers.enable': 'Aktifkan',
  'subconsciousTriggers.disable': 'Nonaktifkan',
  'actionable.complete': 'Selesai',
  'actionable.dismiss': 'Abaikan',
  'actionable.snooze': 'Tunda',
  'actionable.new': 'Baru',
  'stats.storage': 'Penyimpanan',
  'stats.files': 'file',
  'stats.documents': 'Dokumen',
  'stats.today': 'hari ini',
  'stats.namespaces': 'Namespace',
  'stats.relations': 'Relasi',
  'stats.firstMemory': 'Memori Pertama',
  'stats.latest': 'Terbaru',
  'stats.sessions': 'Sesi',
  'stats.tokens': 'token',
  'bootCheck.invalidUrl': 'Masukkan URL runtime.',
  'bootCheck.urlMustStartWith': 'URL harus diawali dengan http:// atau https://',
  'bootCheck.validUrlRequired': 'Itu bukan URL yang valid (coba https://core.example.com/rpc)',
  'bootCheck.tokenRequired': 'Kami memerlukan token autentikasi untuk terhubung.',
  'bootCheck.httpPublicWarning':
    'Ini adalah URL HTTP biasa pada host publik — lalu lintas tidak akan dienkripsi. Gunakan HTTPS kecuali Anda memercayai jaringan ini.',
  'bootCheck.chooseCoreMode': 'Pilih Runtime',
  'bootCheck.connectToCore': 'Hubungkan ke Runtime Anda',
  'bootCheck.desktopDescription':
    'OpenHuman memerlukan runtime untuk berpikir. Pilih di mana runtime harus berada.',
  'bootCheck.webDescription':
    'Di web, OpenHuman terhubung ke runtime yang Anda kendalikan. Masukkan URL dan token autentikasi di bawah, atau ambil aplikasi desktop untuk menjalankannya langsung di mesin Anda.',
  'bootCheck.preferDesktop': 'Lebih suka menyimpan semuanya di perangkat Anda sendiri?',
  'bootCheck.downloadDesktop': 'Dapatkan Aplikasi Desktop',
  'bootCheck.localRecommended': 'Jalankan Secara Lokal (Direkomendasikan)',
  'bootCheck.localDescription':
    'Berjalan langsung di komputer Anda. Tercepat, sepenuhnya privat, tidak perlu pengaturan.',
  'bootCheck.cloudMode': 'Jalankan di Cloud (Kompleks)',
  'bootCheck.cloudDescription':
    'Hubungkan ke runtime yang Anda hosting di tempat lain. Tetap online 24×7 sehingga Anda tidak perlu terus menjalankan perangkat ini.',
  'bootCheck.coreRpcUrl': 'URL Runtime',
  'bootCheck.rpcUrlPlaceholder': 'https://core.example.com/rpc',
  'bootCheck.authToken': 'Token Autentikasi',
  'bootCheck.bearerTokenPlaceholder': 'Token bearer dari runtime jarak jauh Anda',
  'bootCheck.storedLocally': 'Hanya disimpan di perangkat ini. Dikirim sebagai ',
  'bootCheck.testing': 'Menguji...',
  'bootCheck.testConnection': 'Uji Koneksi',
  'bootCheck.connectedOk': 'Terhubung. Anda siap melanjutkan.',
  'bootCheck.authFailed': 'Token tersebut tidak berfungsi. Periksa kembali dan coba lagi.',
  'bootCheck.unreachablePrefix': 'Tidak dapat mencapainya:',
  'bootCheck.checkingCore': 'Membangunkan runtime Anda...',
  'bootCheck.cannotReach': 'Tidak Dapat Menjangkau Runtime',
  'bootCheck.cannotReachDesc':
    'Kami tidak dapat terhubung ke runtime Anda. Ingin mencoba yang berbeda?',
  'bootCheck.switchMode': 'Pilih Runtime Berbeda',
  'bootCheck.quit': 'Keluar',
  'bootCheck.legacyDetected': 'Runtime Latar Belakang Lama Terdeteksi',
  'bootCheck.legacyDescription':
    'Daemon OpenHuman yang diinstal terpisah sudah berjalan di perangkat ini. Kami perlu membersihkannya sebelum runtime bawaan dapat mengambil alih.',
  'bootCheck.removing': 'Menghapus...',
  'bootCheck.removeContinue': 'Hapus dan Lanjutkan',
  'bootCheck.localNeedsRestart': 'Runtime Lokal Perlu Dimulai Ulang',
  'bootCheck.localNeedsRestartDesc':
    'Runtime lokal Anda menggunakan versi berbeda dari aplikasi ini. Mulai ulang cepat akan menyinkronkannya kembali.',
  'bootCheck.restarting': 'Memulai ulang...',
  'bootCheck.restartCore': 'Mulai Ulang Runtime',
  'bootCheck.cloudNeedsUpdate': 'Runtime Cloud Perlu Diperbarui',
  'bootCheck.cloudNeedsUpdateDesc':
    'Runtime cloud Anda menggunakan versi berbeda dari aplikasi ini. Jalankan pembaruan untuk menyinkronkannya kembali.',
  'bootCheck.updating': 'Memperbarui...',
  'bootCheck.updateCloudCore': 'Perbarui Runtime Cloud',
  'bootCheck.versionCheckFailed': 'Pemeriksaan Versi Runtime Gagal',
  'bootCheck.versionCheckFailedDesc':
    'Runtime Anda aktif tetapi tidak melaporkan versinya. Mungkin sudah usang. Mulai ulang atau perbarui untuk melanjutkan.',
  'bootCheck.working': 'Memproses...',
  'bootCheck.restartUpdateCore': 'Mulai Ulang / Perbarui Runtime',
  'bootCheck.unexpectedError': 'Kesalahan Boot-Check Tak Terduga',
  'bootCheck.actionFailed': 'Terjadi kesalahan. Silakan coba lagi.',
  'bootCheck.portConflictTitle': 'Tidak dapat memulai mesin aplikasi',
  'bootCheck.portConflictBody':
    'Proses lain sedang menggunakan port jaringan yang dibutuhkan OpenHuman. Kami akan mencoba memperbaikinya secara otomatis.',
  'bootCheck.portConflictFixButton': 'Perbaiki Otomatis',
  'bootCheck.portConflictFixing': 'Memperbaiki…',
  'bootCheck.portConflictFixFailed':
    'Perbaikan otomatis tidak berhasil. Silakan restart komputer Anda dan coba lagi.',
  'bootCheck.portConflictOwner':
    '{name} (PID {pid}) sedang menggunakan port jaringan yang dibutuhkan OpenHuman.',
  'bootCheck.portConflictGuidance':
    'Tutup program tersebut untuk membebaskan port, atau paksa tutup di bawah, lalu coba lagi.',
  'bootCheck.portConflictForceQuit': 'Paksa tutup {name}',
  'bootCheck.portConflictForceQuitting': 'Menutup {name}…',
  'bootCheck.portConflictForceQuitFailed':
    'Tidak dapat menutup program tersebut. Anda mungkin perlu menutupnya secara manual, lalu coba lagi.',
  'notifications.justNow': 'baru saja',
  'notifications.minAgo': '{n}m lalu',
  'notifications.hrAgo': '{n}j lalu',
  'notifications.dayAgo': '{n}h lalu',
  'notifications.category.messages': 'Pesan',
  'notifications.category.agents': 'Agen',
  'notifications.category.skills': 'Skill',
  'notifications.category.system': 'Sistem',
  'notifications.category.meetings': 'Rapat',
  'notifications.category.reminders': 'Pengingat',
  'notifications.category.important': 'Penting',
  'notifications.filterAll': 'Semua',
  'notifications.filterEmpty': 'Tidak ada peringatan di kategori ini',
  'about.update.status.checking': 'Memeriksa...',
  'about.update.status.available': 'v{version} tersedia',
  'about.update.status.availableNoVersion': 'Pembaruan tersedia',
  'about.update.status.downloading': 'Mengunduh...',
  'about.update.status.readyToInstall': 'v{version} siap diinstal',
  'about.update.status.readyToInstallNoVersion':
    'Versi baru sudah diunduh dan siap. Mulai ulang untuk menerapkan.',
  'about.update.status.installing': 'Menginstal...',
  'about.update.status.restarting': 'Memulai ulang...',
  'about.update.status.upToDate': 'Anda memakai versi terbaru.',
  'about.update.status.error': 'Pemeriksaan pembaruan gagal',
  'about.update.status.default': 'Periksa pembaruan',
  'welcome.connectionFailed': 'Koneksi gagal: {status} {statusText}',
  'welcome.connectionFailedMsg': 'Koneksi gagal: {message}',
  'welcome.continueLocally': 'Lanjutkan secara lokal',
  'welcome.continueLocallyExperimental': 'Lanjutkan Secara Lokal (Eksperimental)',
  'welcome.localSessionStarting': 'Memulai sesi lokal...',
  'welcome.localSessionDesc': 'Menggunakan profil lokal offline dan melewati TinyHumans OAuth.',
  'chat.agentChatDesc': 'Buka sesi chat langsung dengan agen.',
  'chat.modelPlaceholder': 'gpt-4o',
  'channels.activeRouteValue': '{channel} lewat {authMode}',
  'privacy.dataKind.messages': 'Pesan',
  'privacy.dataKind.agents': 'Agen',
  'privacy.dataKind.skills': 'Skill',
  'privacy.dataKind.system': 'Sistem',
  'privacy.dataKind.meetings': 'Rapat',
  'privacy.dataKind.reminders': 'Pengingat',
  'privacy.dataKind.important': 'Penting',
  'onboarding.enableLocalAI': 'Aktifkan AI Lokal',
  'onboarding.skills.status.available': 'Tersedia',
  'onboarding.skills.status.connected': 'Terhubung',
  'onboarding.skills.status.connecting': 'Menghubungkan',
  'onboarding.skills.status.error': 'Kesalahan',
  'onboarding.skills.status.unavailable': 'Tidak tersedia',
  'composio.statusUnavailable': 'Status tidak tersedia',
  'composio.authExpired': 'Autentikasi kedaluwarsa',
  'composio.reconnect': 'Hubungkan ulang',
  'composio.expiredAuthorization': '{name} otorisasi kedaluwarsa',
  'composio.expiredDescription':
    'Sambungkan kembali untuk mengaktifkan kembali alat {name}. OpenHuman akan membuat integrasi ini tidak tersedia sampai Anda menyegarkan akses OAuth.',
  'composio.envVarOverrides': 'diatur, itu menggantikan pengaturan ini.',
  'composio.previewBadge': 'Pratinjau',
  'composio.previewTooltip':
    'Integrasi agen segera hadir — Anda dapat terhubung, tetapi agen belum dapat menggunakan perangkat ini.',
  'memory.day.sun': 'Min',
  'memory.day.mon': 'Sen',
  'memory.day.tue': 'Sel',
  'memory.day.wed': 'Rab',
  'memory.day.thu': 'Kam',
  'memory.day.fri': 'Jum',
  'memory.day.sat': 'Sab',
  'memory.ingesting': 'Mengingesti',
  'memory.ingestionQueued': 'Dalam antrean',
  'memory.ingestingTitle': 'Mengingesti {title}',
  'mic.noAudioCaptured': 'Tidak ada audio tertangkap',
  'mic.noSpeechDetected': 'Tidak ada suara terdeteksi',
  'mic.lowConfidenceResult': 'Tidak dapat memahami audio dengan jelas — silakan coba lagi',
  'mic.failedToStopRecording': 'Gagal menghentikan perekaman: {message}',
  'mic.transcriptionFailed': 'Transkripsi gagal: {message}',
  'reflections.kind.retrospective': 'Retrospektif',
  'reflections.kind.derivedFact': 'Fakta Turunan',
  'reflections.kind.moodInsight': 'Wawasan Suasana Hati',
  'reflections.kind.relationshipInsight': 'Wawasan Hubungan',
  'graph.tooltip.summary': 'Ringkasan',
  'graph.tooltip.contact': 'Kontak',
  'localModel.usage.never': 'Tidak pernah',
  'localModel.usage.mediumLoad': 'Beban sedang',
  'localModel.usage.lowLoad': 'Beban rendah',
  'localModel.usage.idleMode': 'Mode idle',
  'localModel.rebootstrapComplete': 'Bootstrap ulang model selesai.',
  'localModel.modelsVerified': 'Model lokal diverifikasi.',
  'accounts.addModal.allConnected': 'Semua terhubung',
  'accounts.addModal.title': 'Tambah akun',
  'accounts.respondQueue.empty': 'Kosong',
  'accounts.respondQueue.hide': 'Sembunyikan antrean balasan',
  'accounts.respondQueue.loadFailed': 'Gagal memuat antrean respons',
  'accounts.respondQueue.loading': 'Memuat antrean...',
  'accounts.respondQueue.pending': 'Tertunda',
  'accounts.respondQueue.show': 'Tampilkan antrean balasan',
  'accounts.respondQueue.title': 'Antrean respons',
  'accounts.webviewHost.almostReady': 'Hampir siap...',
  'accounts.webviewHost.loadTimeout': 'Waktu muat webview habis',
  'accounts.webviewHost.loading': 'Memuat {providerName}...',
  'accounts.webviewHost.loadingAccount': 'Memuat akun',
  'accounts.webviewHost.restoringSession': 'Memulihkan sesi...',
  'accounts.webviewHost.retryLoading': 'Coba muat ulang',
  'accounts.webviewHost.takingLonger':
    '{providerName} memakan waktu lebih lama dari yang diharapkan.',
  'accounts.webviewHost.timeoutHint': 'Petunjuk waktu habis',
  'app.connectionBadge.composio': 'Composio',
  'app.connectionBadge.messaging': 'Pesan',
  'app.connectionIndicator.connected': 'Terhubung ke OpenHuman AI 🚀',
  'app.connectionIndicator.connecting': 'Menghubungkan',
  'app.connectionIndicator.coreOffline': 'Core tidak online',
  'app.connectionIndicator.disconnected': 'Terputus',
  'app.connectionIndicator.offline': 'Tidak online',
  'app.connectionIndicator.reconnecting': 'Menyambung ulang…',
  'app.errorFallback.componentStack': 'Stack komponen',
  'app.errorFallback.contactSupport': 'Hubungi dukungan',
  'app.errorFallback.copyEventId': 'Salin',
  'app.errorFallback.eventIdCopied': 'Tersalin',
  'app.errorFallback.eventIdLabel': 'ID Kesalahan',
  'app.errorFallback.revealLogs': 'Tampilkan log',
  'app.errorFallback.downloadLatest': 'Unduh terbaru',
  'app.errorFallback.heading': 'Judul',
  'app.errorFallback.hint': 'Petunjuk',
  'app.errorFallback.reloadApp': 'Muat ulang aplikasi',
  'app.errorFallback.subheading': 'Subjudul',
  'app.errorFallback.tryRecover': 'Coba pulihkan',
  'app.localAiDownload.installing': 'Menginstal...',
  'app.localAiDownload.preparing': 'Mempersiapkan...',
  'app.openhumanLink.accounts.continueWith': 'Lanjutkan dengan masuk {label}',
  'app.openhumanLink.accounts.done': 'Selesai',
  'app.openhumanLink.accounts.intro': 'Pengantar',
  'app.openhumanLink.accounts.webviewNote': 'Catatan webview',
  'app.openhumanLink.billing.openDashboard': 'Buka dashboard',
  'app.openhumanLink.billing.stayOnTrial': 'Tetap di trial',
  'app.openhumanLink.billing.trialCredit': 'Kredit pendaftaran',
  'app.openhumanLink.billing.trialDesc':
    'Penawaran kredit dapat berbeda menurut promosi dan kelayakan akun.',
  'app.openhumanLink.defaultBody':
    't siap di popup belum. Buka halaman pengaturan lengkap jika Anda',
  'app.openhumanLink.discord.intro': 'Pengantar',
  'app.openhumanLink.discord.openInvite': 'Buka undangan',
  'app.openhumanLink.discord.perk1': 'Keuntungan 1',
  'app.openhumanLink.discord.perk2': 'Keuntungan 2',
  'app.openhumanLink.discord.perk3': 'Keuntungan 3',
  'app.openhumanLink.discord.perk4': 'Keuntungan 4',
  'app.openhumanLink.discordReport.intro':
    'Mohon maaf — terjadi kesalahan di pihak kami. Kami berusaha mencatat error ini secara otomatis, tetapi membagikan detailnya di Discord membantu kami memperbaikinya lebih cepat.',
  'app.openhumanLink.discordReport.openDiscord': 'Buka Discord',
  'app.openhumanLink.done': 'Selesai',
  'app.openhumanLink.notifications.desktopOnly':
    'Notifikasi native hanya tersedia di aplikasi desktop (jalankan `pnpm dev:app`).',
  'app.openhumanLink.notifications.permissionOff':
    'Izin notifikasi nonaktif. Aktifkan OpenHuman di Pengaturan Sistem → Notifikasi, lalu coba lagi.',
  'app.openhumanLink.notifications.triggerFailed':
    'OpenHuman tidak dapat memicu notifikasi sistem. Periksa pengaturan notifikasi OS dan coba lagi.',
  'app.openhumanLink.notifications.welcomeBody':
    'Anda akan menerima pemberitahuan di sini saat ada hal yang memerlukan perhatian Anda.',
  'app.openhumanLink.notifications.welcomeTitle': 'OpenHuman siap digunakan',
  'app.openhumanLink.status.closed': 'Tertutup',
  'app.openhumanLink.status.connected': 'Terhubung',
  'app.openhumanLink.status.error': 'Kesalahan',
  'app.openhumanLink.status.loading': 'Memuat…',
  'app.openhumanLink.status.needsSignIn': 'Perlu masuk',
  'app.openhumanLink.status.timedOut': 'Waktu habis',
  'app.openhumanLink.loadingChannelSetup': 'Memuat pengaturan kanal',
  'app.openhumanLink.maybeLater': 'Mungkin nanti',
  'app.openhumanLink.notifications.asking': 'Menanyakan ke OS Anda...',
  'app.openhumanLink.notifications.blocked': 'Diblokir',
  'app.openhumanLink.notifications.blockedStep1': 'Langkah 1 diblokir',
  'app.openhumanLink.notifications.blockedStep2': 'Langkah 2 diblokir',
  'app.openhumanLink.notifications.blockedStep3': 'Langkah 3 diblokir',
  'app.openhumanLink.notifications.intro': 'Pengantar',
  'app.openhumanLink.notifications.promptHint': 'Petunjuk prompt',
  'app.openhumanLink.notifications.retry': 'Coba ulang notifikasi tes',
  'app.openhumanLink.notifications.send': 'Kirim notifikasi tes',
  'app.openhumanLink.notifications.sendFailed': 'Tidak bisa mengirim: {error}',
  'app.openhumanLink.notifications.sent':
    'Notifikasi uji telah dikirim. Jika Anda tidak menerimanya, buka System Settings → Notifications → OpenHuman, aktifkan Allow Notifications, dan atur Banner Style ke Persistent.',
  'app.openhumanLink.skipForNow': 'Lewati untuk sekarang',
  'app.openhumanLink.telegramUnavailable': 'Telegram tidak tersedia',
  'app.openhumanLink.title.accounts': 'Hubungkan aplikasi Anda',
  'app.openhumanLink.title.billing': 'Tagihan & kredit',
  'app.openhumanLink.title.discord': 'Bergabung ke komunitas',
  'app.openhumanLink.title.discordReport': 'Laporkan error ini',
  'app.openhumanLink.title.messaging': 'Hubungkan kanal chat',
  'app.openhumanLink.title.notifications': 'Izinkan notifikasi',
  'app.persistRehydration.body': 'Isi',
  'app.persistRehydration.heading': 'Judul',
  'app.persistRehydration.resetCta': 'Mereset...',
  'app.persistRehydration.resetting': 'Mereset...',
  'app.routeLoading.initializing': 'Menginisialisasi OpenHuman...',
  'app.update.currentlyOn': '{version}',
  'app.update.errorFallback': 'Terjadi kesalahan saat memperbarui.',
  'app.update.header.default': 'Perbarui',
  'app.update.header.error': 'Pembaruan gagal',
  'app.update.header.installing': 'Menginstal pembaruan',
  'app.update.header.readyToInstall': 'Pembaruan siap diinstal',
  'app.update.header.restarting': 'Memulai ulang...',
  'app.update.later': 'Nanti',
  'app.update.newVersionReady': 'Versi baru siap diinstal.',
  'app.update.progress.downloaded': '{amount} diunduh',
  'app.update.progress.installing': 'Menginstal versi baru...',
  'app.update.progress.restarting': 'Meluncurkan ulang aplikasi...',
  'app.update.progress.working': '{percent}%',
  'app.update.restartNote': 'Catatan mulai ulang',
  'app.update.restartNow': 'Mulai ulang sekarang',
  'app.update.versionReady': 'Versi {newVersion} siap diinstal.',
  'channels.discord.accountLinked': 'Akun terhubung',
  'channels.discord.connect': 'Hubungkan',
  'channels.discord.linkTokenExpired': 'Token tautan kedaluwarsa. Silakan coba lagi.',
  'channels.discord.linkTokenInstruction': '{token}',
  'channels.discord.linkTokenLabel': 'Label token tautan',
  'channels.discord.linkTokenOnce': 'Token tautan sekali pakai',
  'channels.discord.picker.allPermissionsOk':
    'Bot memiliki semua izin yang diperlukan di kanal ini.',
  'channels.discord.picker.botNotInServers': 'Bot tidak ada di server',
  'channels.discord.picker.category': 'Kategori',
  'channels.discord.picker.channel': 'Kanal',
  'channels.discord.picker.checkingPermissions': 'Memeriksa izin',
  'channels.discord.picker.loadingChannels': 'Memuat kanal...',
  'channels.discord.picker.loadingServers': 'Memuat server...',
  'channels.discord.picker.missingPermissions': 'Izin tidak lengkap',
  'channels.discord.picker.noChannels': 'Tidak ada kanal teks ditemukan',
  'channels.discord.picker.noServers': 'Tidak ada server ditemukan',
  'channels.discord.picker.selectChannel': 'Pilih kanal',
  'channels.discord.picker.selectServer': 'Pilih server',
  'channels.discord.picker.server': 'Server',
  'channels.discord.picker.serverChannelSelection': 'Pemilihan Server & Channel',
  'channels.discord.savedRestartRequired':
    'Kanal tersimpan. Mulai ulang aplikasi untuk mengaktifkannya.',
  'channels.telegram.connect': 'Hubungkan',
  'channels.telegram.managedDmConnecting': 'DM terkelola menghubungkan',
  'channels.telegram.managedDmTimeout': 'Waktu DM terkelola habis',
  'channels.telegram.reconnect': 'Hubungkan ulang',
  'channels.telegram.savedRestartRequired':
    'Kanal tersimpan. Mulai ulang aplikasi untuk mengaktifkannya.',
  'channels.web.alwaysAvailable': 'Selalu tersedia',
  'chat.approval.approve': 'Setujui',
  'chat.approval.alwaysAllow': 'Selalu izinkan',
  'chat.approval.alwaysAllowHint':
    'Berhenti meminta alat ini - tambahkan ke daftar Always- ijinkan',
  'chat.approval.deciding': 'Bekerja…',
  'chat.approval.deny': 'Tolak',
  'chat.approval.error': 'Tidak bisa merekam keputusan Anda - coba lagi.',
  'chat.approval.fallback': 'Agen ingin melakukan tindakan yang membutuhkan persetujuanmu.',
  'chat.approval.title': 'Perlu persetujuan',
  'chat.approval.tool': 'Alat:',
  'channels.authMode.managed_dm': 'Masuk dengan OpenHuman',
  'channels.authMode.oauth': 'OAuth Masuk',
  'channels.authMode.bot_token': 'Gunakan Token Bot Anda sendiri',
  'channels.authMode.api_key': 'Gunakan Kunci API Anda sendiri',
  'channels.fieldRequired': '{field} diperlukan',
  'channels.mcp.title': 'MCP Server',
  'channels.mcp.description':
    'Jelajahi dan kelola server Model Context Protocol yang memperluas AI dengan alat baru.',
  'channels.discord.displayName': 'Discord',
  'channels.discord.description': 'Mengirim dan menerima pesan melalui Discord.',
  'channels.discord.authMode.bot_token.description': 'Berikan token bot Discord Anda sendiri.',
  'channels.discord.authMode.oauth.description':
    'Instal bot OpenHuman ke server Discord Anda melalui OAuth.',
  'channels.discord.authMode.managed_dm.description':
    'Tautkan akun Discord pribadi Anda ke bot OpenHuman.',
  'channels.discord.fields.bot_token.label': 'Token Bot',
  'channels.discord.fields.bot_token.placeholder': 'Token bot Discord Anda',
  'channels.discord.fields.guild_id.label': 'ID Server (Guild)',
  'channels.discord.fields.guild_id.placeholder': 'Opsional: batasi ke server tertentu',
  'channels.telegram.displayName': 'Telegram',
  'channels.telegram.description': 'Mengirim dan menerima pesan melalui Telegram.',
  'channels.telegram.authMode.managed_dm.description':
    'Kirim pesan langsung ke bot OpenHuman Telegram.',
  'channels.telegram.authMode.bot_token.description':
    'Berikan token Bot Telegram Anda sendiri dari @Botfather.',
  'channels.telegram.fields.bot_token.label': 'Token Bot',
  'channels.telegram.fields.bot_token.placeholder': '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11',
  'channels.telegram.fields.allowed_users.label': 'Pengguna yang Diizinkan',
  'channels.telegram.fields.allowed_users.placeholder': 'dipisahkan koma Telegram nama pengguna',
  'channels.telegram.remoteControlTitle': 'Kendali jarak jauh (Telegram)',
  'channels.telegram.remoteControlBody':
    'Dari obrolan Telegram yang diizinkan, kirim /status, /sessions, /new, atau /help. Perutean model masih menggunakan /model dan /models.',
  'channels.web.displayName': 'Web',
  'channels.web.description': 'Mengobrol melalui UI web bawaan.',
  'channels.web.authMode.managed_dm.description':
    'Gunakan obrolan web tertanam — tidak perlu penyiapan.',
  'channels.yuanbao.connect': 'Connect',
  'channels.yuanbao.connecting': 'Menghubungkan…',
  'channels.yuanbao.fieldRequired': '{field} wajib diisi',
  'channels.yuanbao.reconnect': 'Reconnect',
  'channels.yuanbao.savedRestartRequired':
    'Saluran disimpan. Restart aplikasi untuk mengaktifkannya.',
  'channels.yuanbao.unexpectedStatus': 'Status koneksi tidak terduga: {status}',
  'chat.unsubscribeApproval.approve': 'Setujui & Berhenti Berlangganan',
  'chat.unsubscribeApproval.approved': '✓ Berhasil berhenti berlangganan.',
  'chat.unsubscribeApproval.denied': '✕ Permintaan ditolak.',
  'chat.unsubscribeApproval.deny': 'Tolak',
  'chat.unsubscribeApproval.processing': 'Memproses...',
  'chat.unsubscribeApproval.title': 'Permintaan Berhenti Berlangganan',
  'commandPalette.ariaLabel': 'Palet perintah',
  'commandPalette.description': 'Deskripsi',
  'commandPalette.label': 'Perintah',
  'commandPalette.noResults': 'Tidak ada hasil',
  'commandPalette.placeholder': 'Ketik perintah atau cari...',
  'commandPalette.searchAria': 'Cari perintah',
  'commandPalette.shortcutHint': 'Tekan ? untuk semua pintasan',
  'commandPalette.title': 'Palet perintah',
  'kbd.ariaLabel': 'Pintasan keyboard: {shortcut}',
  'shortcuts.title': 'Pintasan Keyboard',
  'shortcuts.subtitle': 'Percepat alur kerja Anda dengan pintasan keyboard ini.',
  'shortcuts.menuDesc': 'Jelajahi semua pintasan keyboard di aplikasi.',
  'shortcuts.empty': 'Tidak ada pintasan keyboard yang tersedia saat ini.',
  'shortcuts.openHint': 'Buka daftar ini kapan saja dengan',
  'shortcuts.group.navigation': 'Navigasi',
  'shortcuts.group.profiles': 'Profil',
  'shortcuts.group.chat': 'Chat',
  'shortcuts.group.view': 'Tampilan',
  'shortcuts.group.general': 'Umum',
  'shortcuts.group.help': 'Bantuan',
  'shortcuts.action.home': 'Ke Beranda',
  'shortcuts.action.chat': 'Ke Chat',
  'shortcuts.action.knowledge': 'Ke Pengetahuan & Memori',
  'shortcuts.action.connections': 'Ke Koneksi',
  'shortcuts.action.activity': 'Ke Aktivitas',
  'shortcuts.action.settings': 'Buka Pengaturan',
  'shortcuts.action.newChat': 'Chat Baru',
  'shortcuts.action.toggleSidebar': 'Alihkan bilah sisi',
  'shortcuts.action.commandPalette': 'Palet Perintah',
  'iosMascot.connectedTo': 'Tersambung ke',
  'iosMascot.defaultPairedLabel': 'Desktop',
  'iosMascot.disconnect': 'Putuskan sambungan',
  'iosMascot.error.generic': 'Ada yang tidak beres. Silakan coba lagi.',
  'iosMascot.error.sendFailed': 'Gagal mengirim. Periksa koneksi Anda.',
  'iosMascot.pushToTalk': 'Tekan untuk bicara',
  'iosMascot.sendMessage': 'Kirim pesan',
  'iosMascot.thinking': 'Berpikir...',
  'iosMascot.typeMessage': 'Ketik a pesan...',
  'iosPair.connectedLoading': 'Tersambung! Memuat...',
  'iosPair.connecting': 'Menyambungkan ke desktop...',
  'iosPair.desktopLabel': 'Desktop',
  'iosPair.error.camera': 'Pemindaian kamera gagal. Periksa izin kamera dan coba lagi.',
  'iosPair.error.connectionFailed':
    'Koneksi gagal. Pastikan aplikasi desktop sedang berjalan dan coba lagi.',
  'iosPair.error.invalidQr': 'Kode QR tidak valid. Pastikan Anda memindai kode pairing OpenHuman.',
  'iosPair.error.unreachableDesktop':
    'Tidak dapat menjangkau desktop. Pastikan kedua perangkat online dan coba lagi.',
  'iosPair.expired': 'QR code kedaluwarsa. Minta desktop untuk membuat ulang kode.',
  'iosPair.instructions':
    'Buka OpenHuman di desktop Anda, buka Pengaturan > Perangkat, dan ketuk "Pasangkan ponsel" untuk menampilkan kode QR.',
  'iosPair.retryScan': 'Coba pindai lagi',
  'iosPair.scanQrCode': 'Pindai QR code',
  'iosPair.scannerOpening': 'Pemindai terbuka...',
  'iosPair.step.openDesktop': 'Buka OpenHuman di desktop',
  'iosPair.step.openSettings': 'Buka Pengaturan > Perangkat',
  'iosPair.step.showQr': 'Ketuk "Pasangkan ponsel" untuk menampilkan QR',
  'iosPair.title': 'Pasangkan dengan desktop Anda',
  'composio.connect.additionalConfigRequired': 'Konfigurasi tambahan diperlukan',
  'composio.connect.atlassianSubdomainHint': 'acme',
  'composio.connect.atlassianSubdomainLabel': 'Label subdomain Atlassian',
  'composio.connect.connect': 'Hubungkan',
  'composio.connect.connectedAccounts': 'Akun terhubung',
  'composio.connect.defaultLabel': 'Default',
  'composio.connect.disconnectAccount': 'Hapus',
  'composio.connect.addAnotherAccount': 'Tambah akun lain',
  'composio.connect.dynamicsOrgNameHint':
    'Misalnya, "myorg" untuk myorg.crm.dynamics.com. Masukkan nama organisasi pendek saja, bukan URL lengkap.',
  'composio.connect.dynamicsOrgNameLabel': 'Nama Organisasi Dynamics 365',
  'composio.connect.connectionFailed': 'Koneksi gagal (status: {status}).',
  'composio.connect.disconnectFailed': 'Putus koneksi gagal: {msg}',
  'composio.connect.disconnecting': 'Memutus koneksi...',
  'composio.connect.idleDescription': 'Hubungkan',
  'composio.connect.idleDescriptionSuffix':
    'akun Anda. Kami akan membuka jendela browser, Anda menyetujui akses di sana, dan aplikasi ini akan mendeteksi koneksi secara otomatis.',
  'composio.connect.isConnected': 'terhubung.',
  'composio.connect.manage': 'Kelola',
  'composio.connect.needsFieldsPrefix': 'Untuk menghubungkan',
  'composio.connect.needsFieldsSuffix':
    'kami memerlukan informasi tambahan. Isi bidang yang hilang di bawah dan coba lagi.',
  'composio.connect.needsSubdomain': 'Untuk menghubungkan',
  'composio.connect.needsSubdomainSuffix':
    'masukkan subdomain Atlassian Anda (mis. acme untuk acme.atlassian.net) lalu coba lagi.',
  'composio.connect.oauthComplete': 'OAuth untuk diselesaikan…',
  'composio.connect.oauthTimeout': 'Waktu OAuth habis',
  'composio.connect.permissions': 'Izin',
  'composio.connect.permissionsDefault': 'Baca + Tulis diaktifkan secara default',
  'composio.connect.permissionsNote': 'dapat mengekspos',
  'composio.connect.permissionsNoteSuffix':
    'Izin agen milik OpenHuman dikendalikan di bawah sebagai sakelar read, write, dan admin.',
  'composio.connect.reopenBrowser': 'Buka ulang browser',
  'composio.connect.requestingUrl': 'Meminta URL koneksi...',
  'composio.connect.requiredFieldEmpty': 'Bidang ini wajib diisi.',
  'composio.connect.retryConnection': 'Coba koneksi lagi',
  'composio.connect.scopeLoadError': 'Tidak dapat memuat preferensi scope: {msg}',
  'composio.connect.scopeSaveError': 'Tidak dapat menyimpan scope {key}: {msg}',
  'composio.connect.scope.read': 'Baca',
  'composio.connect.scope.readHint': 'Izinkan agen membaca data dari koneksi ini.',
  'composio.connect.scope.write': 'Tulis',
  'composio.connect.scope.writeHint':
    'Izinkan agen membuat atau mengubah data melalui koneksi ini.',
  'composio.connect.scope.admin': 'Admin',
  'composio.connect.scope.adminHint':
    'Mengizinkan agen mengelola pengaturan, izin, atau tindakan destruktif.',
  'composio.connect.subdomainInvalid':
    'Masukkan hanya subdomain pendek (mis. "acme"), bukan URL lengkap. Hanya boleh berisi huruf, angka, dan tanda hubung.',
  'composio.connect.subdomainRequired': 'Masukkan subdomain Atlassian Anda untuk melanjutkan.',
  'composio.connect.wabaIdHint':
    'Temukan melalui GET /me/businesses lalu GET /{business_id}/owned_whatsapp_business_accounts menggunakan token akses Meta Anda.',
  'composio.connect.wabaIdLabel': 'Label ID WABA',
  'composio.connect.atlassianSubdomainPlaceholder': 'your-subdomain',
  'composio.connect.dynamicsOrgNamePlaceholder': 'myorg',
  'composio.connect.wabaIdPlaceholder': 'e.g. 123456789012345',
  'composio.connect.wabaIdRequired':
    'Masukkan ID Akun Bisnis WhatsApp (WABA ID) Anda untuk melanjutkan.',
  'composio.connect.waitingFor': 'Menunggu',
  'composio.connect.waitingHint': 'Petunjuk menunggu',
  'composio.triggers.heading': 'Pemicu',
  'composio.triggers.listenFrom': 'Dengarkan event dari',
  'composio.triggers.loadError': 'Tidak bisa memuat trigger',
  'composio.triggers.sessionExpired':
    'Sesi OpenHuman Anda telah berakhir. Masuk lagi untuk memuat trigger.',
  'composio.triggers.needsConfiguration': 'Perlu konfigurasi',
  'composio.triggers.noneAvailable': 'Tidak ada trigger yang tersedia saat ini untuk',
  'conversations.taskKanban.moveLeft': 'Pindah ke kiri',
  'conversations.taskKanban.moveRight': 'Pindah ke kanan',
  'conversations.taskKanban.title': 'Tugas',
  'conversations.threadTodo.title': 'Rencana',
  'conversations.planReview.title': 'Tinjau rencana',
  'conversations.planReview.subtitle':
    'Setujui untuk menjalankannya, tolak untuk membuangnya, atau kirim masukan untuk merevisinya.',
  'conversations.planReview.approve': 'Setujui & jalankan',
  'conversations.planReview.reject': 'Tolak',
  'conversations.planReview.feedbackLabel': 'Minta perubahan',
  'conversations.planReview.feedbackPlaceholder': 'Jelaskan apa yang harus diubah…',
  'conversations.planReview.sendFeedback': 'Kirim masukan',
  'conversations.threadGoal.label': 'Tujuan',
  'conversations.threadGoal.setCta': 'Tetapkan tujuan',
  'conversations.threadGoal.placeholder': 'Apa yang harus dicapai utas ini?',
  'conversations.threadGoal.save': 'Simpan',
  'conversations.threadGoal.cancel': 'Batal',
  'conversations.threadGoal.edit': 'Edit tujuan',
  'conversations.threadGoal.clear': 'Hapus tujuan',
  'conversations.threadGoal.complete': 'Tandai selesai',
  'conversations.threadGoal.pause': 'Jeda',
  'conversations.threadGoal.resume': 'Lanjutkan',
  'conversations.threadGoal.tokensSuffix': 'token',
  'conversations.threadGoal.status.active': 'Aktif',
  'conversations.threadGoal.status.paused': 'Dijeda',
  'conversations.threadGoal.status.budget_limited': 'Anggaran tercapai',
  'conversations.threadGoal.status.complete': 'Selesai',
  'conversations.taskKanban.approval.default': 'Default',
  'conversations.taskKanban.approval.notRequired': 'Tidak diperlukan',
  'conversations.taskKanban.approval.notRequiredBadge': 'tidak ada persetujuan',
  'conversations.taskKanban.approval.required': 'Diperlukan',
  'conversations.taskKanban.approval.requiredBadge': 'approval',
  'conversations.taskKanban.approval.requiredBeforeExecution': 'Diperlukan sebelum eksekusi',
  'conversations.taskKanban.briefButton': 'Ringkasan tugas',
  'conversations.taskKanban.briefTitle': 'Ringkasan tugas',
  'conversations.taskKanban.closeBrief': 'Tutup ringkasan tugas',
  'conversations.taskKanban.field.acceptanceCriteria': 'Kriteria penerimaan',
  'conversations.taskKanban.field.allowedTools': 'Alat yang diizinkan',
  'conversations.taskKanban.field.approval': 'Persetujuan',
  'conversations.taskKanban.field.assignedAgent': 'Agen yang ditugaskan',
  'conversations.taskKanban.field.blocker': 'Penghambat',
  'conversations.taskKanban.field.evidence': 'Bukti',
  'conversations.taskKanban.field.notes': 'Catatan',
  'conversations.taskKanban.field.objective': 'Tujuan',
  'conversations.taskKanban.field.plan': 'Rencana',
  'conversations.taskKanban.field.status': 'Status',
  'conversations.taskKanban.field.title': 'Judul',
  'conversations.taskKanban.saveChanges': 'Simpan perubahan',
  'conversations.taskKanban.deleteCard': 'Hapus',
  'conversations.taskKanban.workTask': 'Kerjakan tugas',
  'conversations.taskKanban.viewWork': 'Lihat pekerjaan',
  'conversations.taskKanban.startingTask': 'Memulai…',
  'conversations.taskKanban.updateFailed': 'Tak bisa memutakhirkan tugas; perubahan tak disimpan.',
  'conversations.taskKanban.sourcesButton': 'Sumber',
  'conversations.taskKanban.source.openExternal': 'Buka tugas eksternal',
  'conversations.taskKanban.source.openExternalShort': 'Buka',
  'conversations.taskKanban.source.unknownProvider': 'Sumber tidak dikenal',
  'conversations.taskKanban.source.urgencyValue': 'Urgensi {percent}%',
  'conversations.taskKanban.sources.desktopOnly':
    'Kontrol sumber tugas tersedia di aplikasi desktop.',
  'conversations.taskKanban.sources.title': 'Sumber tugas',
  'conversations.taskKanban.sources.statusEnabled': 'Polling otomatis aktif',
  'conversations.taskKanban.sources.manage': 'Kelola sumber',
  'conversations.taskKanban.source.title': 'Sumber',
  'conversations.taskKanban.source.sourceId': 'ID sumber',
  'conversations.taskKanban.source.externalId': 'ID eksternal',
  'conversations.taskKanban.source.repo': 'Repositori',
  'conversations.taskKanban.source.urgency': 'Urgensi',
  'conversations.toolTimeline.turn': 'giliran',
  'conversations.toolTimeline.step': 'Langkah',
  'conversations.toolTimeline.workerThread': 'thread worker',
  'conversations.subagent.viewProcessing': 'Lihat proses lengkap',
  'conversations.subagent.parent': 'Induk',
  'conversations.subagent.thinking': 'Berpikir',
  'conversations.subagent.thoughts': 'Pemikiran',
  'conversations.subagent.response': 'Respons',
  'conversations.subagent.toolCalls': 'Panggilan alat',
  'conversations.subagent.working': 'Bekerja…',
  'conversations.subagent.noOutputYet': 'Belum ada keluaran',
  'conversations.subagent.input': 'Masukan',
  'conversations.subagent.output': 'Keluaran',
  'conversations.subagent.noOutput': 'Tidak ada keluaran',
  'conversations.subagent.close': 'Tutup',
  'conversations.subagent.cancel': 'Batalkan tugas',
  'conversations.subagent.cancelling': 'Membatalkan…',
  'conversations.subagent.cancelFailed': 'Tidak dapat membatalkan tugas. Coba lagi.',
  'conversations.subagent.statusRunning': 'berjalan',
  'conversations.subagent.statusCompleted': 'selesai',
  'conversations.subagent.statusFailed': 'gagal',
  'conversations.subagent.statusAwaitingUser': 'menunggu pengguna',
  'conversations.subagent.statusCancelled': 'dibatalkan',
  'conversations.agentTaskInsights.title': 'Wawasan tugas agen',
  'conversations.agentTaskInsights.response': 'Respons',
  'conversations.agentTaskInsights.processSourceTitle': 'Sumber proses agen',
  'conversations.agentTaskInsights.stepsHeading': 'Langkah',
  'conversations.agentTaskInsights.sourcesHeading': 'Sumber',
  'conversations.agentTaskInsights.noSteps': 'Tidak ada langkah yang tercatat',
  'conversations.agentTaskInsights.viewProcessSource': 'Lihat sumber proses agen lengkap',
  'conversations.agentTaskInsights.processing': 'Memproses',
  'conversations.agentTaskInsights.done': 'Selesai',
  'conversations.agentTaskInsights.failed': 'Gagal',
  'conversations.agentTaskInsights.running': 'Berjalan',
  'conversations.agentTaskInsights.cancelled': 'Dibatalkan',
  'conversations.agentTaskInsights.awaitingUser': 'Menunggu masukan',
  'conversations.agentTaskInsights.viewDetails': 'Lihat detail',
  'conversations.agentTaskInsights.subagentsHeading': 'Sub-agen',
  'daemon.serviceBlockingGate.body': 'Isi',
  'daemon.serviceBlockingGate.downloadHint': 'Petunjuk unduhan',
  'daemon.serviceBlockingGate.downloadLatest': 'Unduh Versi Terbaru',
  'daemon.serviceBlockingGate.retryCore': 'Coba Ulang Core',
  'daemon.serviceBlockingGate.retryFailed':
    'Coba ulang gagal. Unduh build aplikasi terbaru dan coba lagi.',
  'daemon.serviceBlockingGate.retrying': 'Mencoba ulang...',
  'daemon.serviceBlockingGate.title': 'Core OpenHuman tidak tersedia',
  'home.banners.discordSubtitle': 'Subtitle Discord',
  'home.banners.discordTitle': 'Bergabung ke Discord Kami',
  'home.banners.earlyBirdDismiss': 'Abaikan banner early bird',
  'home.banners.earlyBirdFirstSub': 'langganan pertama.',
  'home.banners.earlyBirdOn': 'Early bird aktif',
  'home.banners.earlyBirdTitle': '1.000 pengguna pertama dapat diskon 60%.',
  'home.banners.earlyBirdUseCode': 'Gunakan kode early bird',
  'home.banners.getSubscription': 'dapatkan langganan',
  'home.banners.promoCreditsBody': 'Kamu punya {amount} kredit promo. Kamu bisa',
  'home.banners.promoCreditsUsage': 'Penggunaan kredit promo',
  'intelligence.memoryChunk.detail.chunk': 'Potongan',
  'intelligence.memoryChunk.detail.copyChunkId': 'Salin ID chunk',
  'intelligence.memoryChunk.detail.embeddingInfo': 'bge-m3 1024dim',
  'intelligence.memoryChunk.detail.noEmbedding': 'Tidak ada embedding',
  'intelligence.memoryChunk.letterhead.from': 'dari',
  'intelligence.memoryChunk.letterhead.to': 'ke',
  'intelligence.memoryChunk.mentioned.chunkOne': '1 potongan',
  'intelligence.memoryChunk.mentioned.chunkOther': '{count} chunk',
  'intelligence.memoryChunk.mentioned.heading': 'd i s e b u t k a n',
  'intelligence.memoryChunk.scoreBars.ariaScore': '{name} skor {pct} persen',
  'intelligence.memoryChunk.scoreBars.atThreshold': 'pada {threshold}',
  'intelligence.memoryChunk.scoreBars.dropped': 'dibuang',
  'intelligence.memoryChunk.scoreBars.heading': 'm e n g a p a   d i s i m p a n',
  'intelligence.memoryChunk.scoreBars.kept': 'dipertahankan',
  'intelligence.diagram.title': 'Diagram Arsitektur',
  'intelligence.diagram.description':
    'Output arsitektur lokal terbaru dari endpoint diagram yang dikonfigurasi.',
  'intelligence.diagram.refresh': 'Refresh',
  'intelligence.diagram.refreshAria': 'Segarkan diagram',
  'intelligence.diagram.emptyTitle': 'Belum ada diagram tersedia',
  'intelligence.diagram.emptyDescription':
    'Buat diagram arsitektur dari orkestrator dan panel ini akan diperbarui dari endpoint lokal yang dikonfigurasi.',
  'intelligence.diagram.skillInstallCommand': 'npx skills add yizhiyanhua-ai/fireworks-tech-graph',
  'intelligence.diagram.promptExample':
    'Buat diagram arsitektur swarm saat ini dalam gaya terminal gelap',
  'intelligence.diagram.imageAlt': 'Diagram arsitektur OpenHuman terbaru yang dihasilkan',
  'intelligence.diagram.refreshesEvery': 'Diperbarui setiap {seconds}d',
  'intelligence.memoryText.entityTypePrefix': 'Tipe entitas',
  'intelligence.screenDebug.active': 'Aktif',
  'intelligence.screenDebug.app': 'Aplikasi',
  'intelligence.screenDebug.bounds': 'Batas',
  'intelligence.screenDebug.captureAlt': 'Hasil tes tangkapan',
  'intelligence.screenDebug.captureFailed': 'Gagal',
  'intelligence.screenDebug.captureSuccess': 'Berhasil',
  'intelligence.screenDebug.captureTest': 'Tes tangkapan',
  'intelligence.screenDebug.capturing': 'Menangkap',
  'intelligence.screenDebug.frames': 'Frame',
  'intelligence.screenDebug.idle': 'Siaga',
  'intelligence.screenDebug.lastApp': 'Aplikasi Terakhir',
  'intelligence.screenDebug.mode': 'Mode',
  'intelligence.screenDebug.permAccessibility': 'Izin aksesibilitas',
  'intelligence.screenDebug.permInput': 'Izin input',
  'intelligence.screenDebug.permScreen': 'Aksesibilitas',
  'intelligence.screenDebug.permissions': 'Izin',
  'intelligence.screenDebug.platformNotSupported': 'Platform tidak didukung',
  'intelligence.screenDebug.recentVisionSummaries': 'Ringkasan visi terbaru',
  'intelligence.screenDebug.session': 'Sesi',
  'intelligence.screenDebug.size': 'Ukuran',
  'intelligence.screenDebug.status': 'Status',
  'intelligence.screenDebug.testCapture': 'Tes tangkapan',
  'intelligence.screenDebug.time': 'Waktu',
  'intelligence.screenDebug.title': 'Judul',
  'intelligence.screenDebug.unknown': 'Tidak diketahui',
  'intelligence.screenDebug.visionQueue': 'Antrean Visi',
  'intelligence.screenDebug.visionState': 'Status Visi',
  'intelligence.tasks.activeBoardOne': '1 board aktif di seluruh percakapan',
  'intelligence.tasks.activeBoardOther': '{count} board aktif di seluruh percakapan',
  'intelligence.tasks.empty': 'Belum ada papan tugas agen',
  'intelligence.tasks.emptyHint': 'Petunjuk kosong',
  'intelligence.tasks.failedToLoad': 'Gagal memuat',
  'intelligence.tasks.live': 'langsung',
  'intelligence.tasks.loadingBoards': 'Memuat papan tugas...',
  'intelligence.tasks.threadPrefix': 'Utas {thread}',
  'intelligence.tasks.subtitle': 'Tugas Anda dan papan tugas agen di seluruh ruang kerja.',
  'intelligence.tasks.newTask': 'Tugas baru',
  'intelligence.tasks.personalBoardTitle': 'Tugas Agen',
  'intelligence.tasks.personalEmpty': 'Belum ada tugas pribadi',
  'intelligence.tasks.composer.title': 'Tugas baru',
  'intelligence.tasks.composer.titleLabel': 'Judul',
  'intelligence.tasks.composer.titlePlaceholder': 'Apa yang perlu dilakukan?',
  'intelligence.tasks.composer.statusLabel': 'Status',
  'intelligence.tasks.composer.attachLabel': 'Lampirkan ke percakapan',
  'intelligence.tasks.composer.attachNone': 'Pribadi (tanpa percakapan)',
  'intelligence.tasks.composer.objectiveLabel': 'Tujuan',
  'intelligence.tasks.composer.objectivePlaceholder': 'Opsional — hasil yang diinginkan',
  'intelligence.tasks.composer.notesLabel': 'Catatan',
  'intelligence.tasks.composer.notesPlaceholder': 'Catatan opsional',
  'intelligence.tasks.composer.create': 'Buat tugas',
  'intelligence.tasks.composer.creating': 'Membuat…',
  'intelligence.tasks.composer.createFailed': 'Gagal membuat tugas',
  'intelligence.tasks.composer.assignAgentLabel': 'Biarkan agen mengerjakan ini secara otomatis',
  'intelligence.tasks.composer.assignAgentHint':
    'Papan tugas akan mengambil dan menjalankannya untuk Anda. Biarkan nonaktif untuk tugas pribadi biasa.',
  'intelligence.tasks.sourceList.subtitle': 'Tugas sumber yang menunggu menjadi pekerjaan agen.',
  'intelligence.tasks.sourceList.empty': 'Tidak ada tugas sumber yang menunggu.',
  'intelligence.tasks.sourceList.queued': 'Dalam antrean',
  'intelligence.tasks.sourceList.workOnTask': 'Kerjakan tugas',
  'intelligence.tasks.sourcePlan.title': 'Perjelas tugas sumber',
  'intelligence.tasks.sourcePlan.subtitle': 'Tinjau draf riset sebelum membuat tugas agen.',
  'intelligence.tasks.sourcePlan.researchAgent': 'Draf agen riset',
  'intelligence.tasks.sourcePlan.approve': 'Setujui rencana',
  'intelligence.tasks.sourcePlan.creating': 'Membuat tugas…',
  'intelligence.tasks.sourcePlan.createFailed': 'Gagal membuat tugas agen',
  'intelligence.tasks.workTaskFailed': 'Gagal memulai pengerjaan tugas',
  'intelligence.workTask.sourceTaskHeading': 'Tugas sumber:',
  'intelligence.workTask.repositoryLine': '- Repositori: {repo}',
  'intelligence.workTask.externalIdLine': '- ID eksternal: {externalId}',
  'intelligence.workTask.urlLine': '- Tautan: {url}',
  'intelligence.workTask.closingInstruction':
    'Mulailah dengan menyatakan kembali rencana implementasi konkret secara singkat, lalu jalankan. Jaga agar kemajuan tetap terlihat di utas ini dan perbarui papan tugas ketika status pekerjaan berubah.',
  'intelligence.agentWork.subtitle':
    'Setiap proses agen latar belakang, dikelompokkan menurut status siklus hidup.',
  'intelligence.agentWork.loading': 'Memuat kerja agen…',
  'intelligence.agentWork.failedToLoad': 'Gagal memuat kerja agen',
  'intelligence.agentWork.empty': 'Belum ada proses agen latar belakang.',
  'intelligence.agentWork.bucket.needsInput': 'Perlu masukan',
  'intelligence.agentWork.bucket.working': 'Berjalan',
  'intelligence.agentWork.bucket.completed': 'Selesai',
  'intelligence.agentWork.bucket.failed': 'Gagal',
  'intelligence.agentWork.bucket.stopped': 'Berhenti',
  'intelligence.agentWork.column.agent': 'Agen',
  'intelligence.agentWork.column.status': 'Status',
  'intelligence.agentWork.column.elapsed': 'Berlalu',
  'intelligence.agentWork.column.cost': 'Biaya',
  'intelligence.agentWork.column.tokens': 'Token',
  'intelligence.agentWork.status.pending': 'Tertunda',
  'intelligence.agentWork.status.running': 'Berjalan',
  'intelligence.agentWork.status.awaitingUser': 'Perlu masukan',
  'intelligence.agentWork.status.paused': 'Dijeda',
  'intelligence.agentWork.status.completed': 'Selesai',
  'intelligence.agentWork.status.failed': 'Gagal',
  'intelligence.agentWork.status.cancelled': 'Dibatalkan',
  'intelligence.agentWork.status.interrupted': 'Terputus',
  'intelligence.agentWork.kind.subagent': 'Subagen',
  'intelligence.agentWork.kind.workerThread': 'Thread worker',
  'intelligence.agentWork.kind.backgroundAgent': 'Agen latar belakang',
  'intelligence.agentWork.kind.teamMember': 'Anggota tim',
  'intelligence.agentWork.kind.workflowChild': 'Anak alur kerja',
  'intelligence.agentWork.openThread': 'Buka utas',
  'intelligence.agentWork.openWorker': 'Buka pekerja',
  'worktree.label': 'Worktree',
  'worktree.dirty': 'Perubahan belum di-commit',
  'worktree.clean': 'Bersih',
  'worktree.changedFile': 'berkas berubah',
  'worktree.changedFiles': 'berkas berubah',
  'worktree.removing': 'Menghapus…',
  'worktree.removeFailed': 'Gagal menghapus worktree',
  'worktree.diffFailed': 'Gagal memuat diff',
  'worktree.diffLoading': 'Memuat diff…',
  'worktree.diffEmpty': 'Tidak ada perubahan dibandingkan HEAD.',
  'worktree.dirtyConfirm':
    'Worktree ini memiliki perubahan yang belum di-commit. Menghapusnya akan membuang pekerjaan itu. Branch worker tetap dipertahankan.',
  'worktree.action.open': 'Buka folder',
  'worktree.action.diff': 'Diff',
  'worktree.action.hideDiff': 'Sembunyikan diff',
  'worktree.action.remove': 'Hapus',
  'worktree.action.removeAnyway': 'Buang & hapus',
  'worktree.action.preserve': 'Pertahankan',
  'worktree.panel.subtitle': 'Worktree git terisolasi yang dibuat oleh worker agen paralel.',
  'worktree.panel.loading': 'Memuat worktree…',
  'worktree.panel.failedToLoad': 'Gagal memuat worktree',
  'worktree.panel.empty':
    'Tidak ada worktree terisolasi. Worker paralel dengan isolasi worktree akan muncul di sini.',
  'worktree.panel.overlapsTitle': 'Perubahan yang tumpang tindih',
  'worktree.panel.overlapHint':
    'Berkas-berkas ini diubah oleh lebih dari satu worktree — selaraskan sebelum menggabungkan.',
  'intelligence.agentWork.action.stop': 'Hentikan',
  'intelligence.agentWork.action.retry': 'Coba lagi',
  'intelligence.agentWork.action.continue': 'Lanjutkan',
  'intelligence.agentWork.action.followUp': 'Tindak lanjut',
  'intelligence.agentWork.action.send': 'Kirim',
  'intelligence.agentWork.action.cancel': 'Batal',
  'intelligence.agentWork.action.continuePlaceholder': 'Balas untuk membuka blokir agen ini…',
  'intelligence.agentWork.action.followUpPlaceholder': 'Kirim instruksi lanjutan…',
  'intelligence.agentWork.action.failed': 'Tindakan gagal',
  'intelligence.teams.subtitle': 'Tim agen yang terkoordinasi dan tugas yang mereka bagikan.',
  'intelligence.teams.loading': 'Memuat tim…',
  'intelligence.teams.failedToLoad': 'Gagal memuat tim',
  'intelligence.teams.empty': 'Belum ada tim agen',
  'intelligence.teams.emptyHint':
    'Tim muncul di sini ketika sebuah agen membuat sub-agen terkoordinasi untuk berbagi satu tujuan.',
  'intelligence.teams.refresh': 'Segarkan',
  'intelligence.teams.backToList': 'Semua tim',
  'intelligence.teams.status.active': 'Aktif',
  'intelligence.teams.status.closed': 'Ditutup',
  'intelligence.teams.header.lead': 'pemimpin',
  'intelligence.teams.header.taskCount': '{count} tugas',
  'intelligence.teams.header.memberCount': '{count} anggota',
  'intelligence.teams.member.active': 'Aktif',
  'intelligence.teams.member.pending': 'Tertunda',
  'intelligence.teams.member.idle': 'Diam',
  'intelligence.teams.member.stopped': 'Dihentikan',
  'intelligence.teams.column.todo': 'Akan dikerjakan',
  'intelligence.teams.column.ready': 'Siap',
  'intelligence.teams.column.inProgress': 'Sedang berjalan',
  'intelligence.teams.column.blocked': 'Terhambat',
  'intelligence.teams.column.done': 'Selesai',
  'intelligence.teams.emptyColumn': 'Kosong',
  'intelligence.teams.unclaimed': 'Belum diambil',
  'intelligence.teams.pickedUpBy': 'Diambil oleh {name}',
  'intelligence.teams.depLockTitle': '{count} dependensi belum terpenuhi',
  'intelligence.teams.gate.pending': 'Gerbang tertunda',
  'intelligence.teams.gate.passed': 'Gerbang lolos',
  'intelligence.teams.gate.failed': 'Gerbang gagal',
  'intelligence.teams.gate.label': 'Gerbang: {status}',
  'intelligence.teams.activity.title': 'Aktivitas tim',
  'intelligence.teams.activity.empty': 'Belum ada pesan',
  'intelligence.teams.activity.toTeam': 'tim',
  'intelligence.teams.member.start': 'Mulai',
  'intelligence.teams.composer.placeholder': 'Pesan ke rekan tim…',
  'intelligence.teams.composer.send': 'Kirim',
  'intelligence.teams.composer.recipient': 'Penerima',
  'intelligence.teams.composer.toTeam': 'Seluruh tim',
  'intelligence.teams.action.blocked': 'Menunggu dependensi',
  'intelligence.teams.action.alreadyClaimed': 'Sudah diambil rekan tim lain',
  'intelligence.teams.action.alreadyActive': 'Rekan tim sudah berjalan',
  'intelligence.teams.action.noClaimableTask': 'Tidak ada tugas siap untuk rekan ini',
  'intelligence.teams.action.unknownTask': 'Tugas tidak ditemukan',
  'intelligence.refine.objectiveDefault':
    'Ubah tugas sumber menjadi tugas agen yang siap diimplementasikan: {title}',
  'intelligence.refine.sourceLine': 'Sumber: {url}',
  'intelligence.refine.sourceIntake': 'Sumber: penerimaan sumber tugas',
  'intelligence.refine.repositoryLine': 'Repositori: {repo}',
  'intelligence.refine.externalTaskLine': 'Tugas eksternal: {externalId}',
  'intelligence.refine.planStep1':
    'Baca tugas sumber yang ditautkan dan konfirmasikan perilaku persis yang diminta.',
  'intelligence.refine.planStep2':
    'Periksa jalur kode yang relevan dan identifikasi batas implementasi terkecil.',
  'intelligence.refine.planStep3':
    'Implementasikan perubahan dengan pengujian terfokus pada perilaku yang terlihat oleh pengguna.',
  'intelligence.refine.planStep4':
    'Jalankan validasi tertarget dan catat risiko yang tersisa atau pekerjaan lanjutan.',
  'intelligence.refine.acceptance1': 'Persyaratan tugas sumber terwakili dalam implementasi akhir.',
  'intelligence.refine.acceptance2':
    'Pengujian unit atau integrasi yang relevan mencakup perilaku yang diubah.',
  'intelligence.refine.acceptance3':
    'Hasil validasi dan risiko yang belum terselesaikan dicatat saat penyelesaian.',
  'notifications.card.dismiss': 'Abaikan notifikasi',
  'notifications.card.importanceTitle': 'Tingkat penting: {pct}%',
  'notifications.center.empty': 'Belum ada notifikasi',
  'notifications.center.emptyHint': 'Petunjuk kosong',
  'notifications.center.filterAll': 'Filter semua',
  'notifications.center.markAllRead': 'Tandai semua sudah dibaca',
  'notifications.center.title': 'Notifikasi',
  'notifications.meeting.joinListen': 'Gabung (hanya mendengarkan)',
  'notifications.meeting.joinActive': 'Gabung & balas',
  'notifications.meeting.skip': 'Bukan yang ini',
  'notifications.meeting.alwaysJoin': 'Selalu gabung',
  'notifications.meeting.actionError': 'Tindakan tidak dapat diselesaikan. Silakan coba lagi.',
  'oauth.button.connecting': 'Menghubungkan...',
  'oauth.button.loopbackTimeout':
    'Masuk habis waktu — browser tidak menyelesaikan pengalihan OAuth. Silakan coba lagi.',
  'oauth.login.continueWith': 'Lanjutkan dengan',
  'onboarding.contextGathering.buildingDesc': 'Deskripsi pembangunan',
  'onboarding.contextGathering.buildingProfile': 'Membangun profil Anda...',
  'onboarding.contextGathering.continueToChat': 'Lanjutkan ke chat',
  'onboarding.contextGathering.coreAlive':
    'Core dapat diakses — peluncuran pertama bisa memakan waktu satu menit.',
  'onboarding.contextGathering.coreAliveProbing': 'Memeriksa koneksi core…',
  'onboarding.contextGathering.coreUnreachable':
    'Core tidak merespons. Anda bisa melanjutkan dan coba lagi nanti.',
  'onboarding.contextGathering.errorDesc':
    'Kami tidak bisa membangun profil lengkap Anda sekarang, tapi tidak apa-apa — Anda bisa lanjut dan profil Anda akan terbentuk seiring waktu.',
  'onboarding.contextGathering.stillWorkingDesc':
    'Peluncuran pertama bisa memakan waktu 30–60 detik sementara kami menyiapkan model dan alat lokal Anda. Anda bisa melanjutkan ke chat kapan saja — pembuatan profil tetap berjalan di latar belakang.',
  'onboarding.contextGathering.stillWorkingTitle': 'Masih membangun profil Anda…',
  'onboarding.contextGathering.title': 'Pengumpulan Konteks',
  'openhuman.team_list_teams': 'Daftar tim',
  'overlay.ariaAttention': 'Pesan perhatian',
  'overlay.ariaCompanion': 'Pendamping aktif',
  'overlay.ariaOrb': 'Overlay OpenHuman',
  'overlay.ariaVoiceActive': 'Input suara aktif',
  'overlay.companion.error': 'Kesalahan',
  'overlay.companion.listening': 'Mendengarkan…',
  'overlay.companion.pointing': 'Menunjuk…',
  'overlay.companion.speaking': 'Berbicara…',
  'overlay.companion.thinking': 'Berpikir…',
  'overlay.orbTitle': 'Seret untuk memindahkan · Klik dua kali untuk mereset posisi',
  'pages.settings.account.connections': 'Koneksi',
  'pages.settings.account.connectionsDesc': 'Deskripsi koneksi',
  'pages.settings.account.migration': 'Impor dari asisten lain',
  'pages.settings.account.migrationDesc':
    'Migrasikan memori dan catatan dari OpenClaw (dan, segera, Hermes) ke ruang kerja ini.',
  'pages.settings.account.privacy': 'Privasi',
  'pages.settings.account.privacyDesc': 'Deskripsi privasi',
  'pages.settings.account.recoveryPhrase': 'Frasa pemulihan',
  'pages.settings.account.recoveryPhraseDesc': 'Deskripsi frasa pemulihan',
  'pages.settings.account.team': 'Tim',
  'pages.settings.account.teamDesc': 'Deskripsi tim',
  'pages.settings.accountSection.description':
    'Frasa pemulihan, tim, koneksi, dan pengaturan privasi.',
  'pages.settings.accountSection.title': 'Akun',
  'pages.settings.ai.llm': 'LLM',
  'pages.settings.ai.llmDesc': 'Deskripsi LLM',
  'pages.settings.ai.voice': 'Suara',
  'pages.settings.ai.voiceDesc': 'Deskripsi suara',
  'pages.settings.aiSection.description':
    'Penyedia model bahasa, Ollama lokal, dan suara (STT / TTS).',
  'pages.settings.aiSection.title': 'AI',
  'settings.developerMenu.composio.title': 'Composio',
  'settings.developerMenu.composio.desc':
    'Mode perutean, pemicu integrasi, dan arsip riwayat pemicu.',
  'pages.settings.features.desktopCompanion': 'Pendamping Desktop',
  'pages.settings.features.desktopCompanionDesc':
    'Asisten suara dengan kesadaran layar — mendengar, melihat, berbicara, menunjuk',
  'pages.settings.features.messagingChannels': 'Kanal pesan',
  'pages.settings.features.messagingChannelsDesc': 'Deskripsi kanal pesan',
  'pages.settings.features.notifications': 'Notifikasi',
  'pages.settings.features.notificationsDesc': 'Deskripsi notifikasi',
  'pages.settings.features.screenAwareness': 'Kesadaran layar',
  'pages.settings.features.screenAwarenessDesc': 'Deskripsi kesadaran layar',
  'pages.settings.features.tools': 'Alat',
  'pages.settings.features.toolsDesc': 'Deskripsi alat',
  'pages.settings.featuresSection.description': 'Kesadaran layar, pesan, dan alat.',
  'pages.settings.featuresSection.title': 'Fitur',
  'privacy.dataKind.credentials': 'Kredensial',
  'privacy.dataKind.derived': 'Turunan',
  'privacy.dataKind.diagnostics': 'Diagnostik',
  'privacy.dataKind.metadata': 'Metadata',
  'privacy.dataKind.raw': 'Mentah',
  'privacy.whatLeaves.link.label': 'Apa yang keluar dari komputer saya?',
  'rewards.community.achievementsUnlocked': '{unlocked} dari {total} pencapaian terbuka',
  'rewards.community.connectDiscord': 'Hubungkan Discord',
  'rewards.community.connectDiscordError':
    'Tidak dapat memulai koneksi Discord. Silakan coba lagi.',
  'rewards.community.connectingDiscord': 'Menghubungkan…',
  'rewards.community.cumulativeTokens': 'Token kumulatif',
  'rewards.community.currentStreak': 'Streak saat ini',
  'rewards.community.disconnectDiscord': 'Putuskan',
  'rewards.community.disconnectDiscordError': 'Tidak dapat memutuskan Discord. Silakan coba lagi.',
  'rewards.community.disconnectingDiscord': 'Memutuskan…',
  'rewards.community.discordAccount': 'Akun Discord',
  'rewards.community.discordConnected': 'Discord terhubung',
  'rewards.community.discordConnectedAs': 'Terhubung sebagai {username}',
  'rewards.community.discordLinkedNotInGuild': 'Discord terhubung tidak ada di guild',
  'rewards.community.discordMember': 'Bergabung ke server',
  'rewards.community.discordNotLinked': 'Discord belum terhubung',
  'rewards.community.discordServer': 'Server Discord',
  'rewards.community.discordStatusUnavailable': 'Status Discord tidak tersedia',
  'rewards.community.discordWaiting': 'Menunggu Discord',
  'rewards.community.heroSubtitle': 'Subtitle hero',
  'rewards.community.heroTitle': 'Judul hero',
  'rewards.community.joinDiscord': 'Gabung Discord',
  'rewards.community.loadingRewards': 'Memuat hadiah...',
  'rewards.community.locked': 'Terbuka',
  'rewards.community.retrying': 'Mencoba ulang...',
  'rewards.community.roleAssigned': 'Role ditetapkan',
  'rewards.community.roleAssignmentCount': '{assigned} dari {unlocked} role ditetapkan',
  'rewards.community.roleClaimDesc':
    'Kamu telah membuka role Discord tetapi belum bergabung ke server OpenHuman. Bergabunglah agar role ditetapkan secara otomatis.',
  'rewards.community.roleClaimTitle': 'Klaim role Discord kamu',
  'rewards.community.roleJoinToClaim': 'Gabung server untuk klaim',
  'rewards.community.rolePending': 'Menyinkronkan role…',
  'rewards.community.rolesAndRewards': 'Peran & Hadiah',
  'rewards.community.streakDays': '{n}',
  'rewards.community.syncPending': 'Sinkronisasi hadiah tertunda',
  'rewards.community.syncPendingDesc': 'Deskripsi tertunda sinkronisasi',
  'rewards.community.syncUnavailable': 'Sinkronisasi tidak tersedia',
  'rewards.community.tryAgain': 'Mencoba ulang...',
  'rewards.community.unknown': 'Tidak diketahui',
  'rewards.community.unlocked': 'Terbuka',
  'rewards.community.yourProgress': 'Progres Anda',
  'rewards.coupon.colCode': 'Kode',
  'rewards.coupon.colRedeemed': 'Ditukarkan',
  'rewards.coupon.colReward': 'Hadiah',
  'rewards.coupon.colStatus': 'Status',
  'rewards.coupon.loadingHistory': 'Memuat riwayat hadiah...',
  'rewards.coupon.noCodes': 'Belum ada kode hadiah yang ditukarkan.',
  'rewards.coupon.pending': 'Tertunda',
  'rewards.coupon.placeholder': 'Kode kupon',
  'rewards.coupon.promoCredits': 'Kredit promo',
  'rewards.coupon.recentRedemptions': 'Penukaran terbaru',
  'rewards.coupon.redeemAccepted':
    '{code} diterima. {amount} akan terbuka setelah tindakan yang diperlukan diselesaikan.',
  'rewards.coupon.redeemButton': 'Tukarkan Kode',
  'rewards.coupon.redeemSuccess': '{code} ditukarkan. {amount} telah ditambahkan ke kredit Anda.',
  'rewards.coupon.redeemedCodes': 'Kode yang ditukarkan',
  'rewards.coupon.redeeming': 'Menukarkan...',
  'rewards.coupon.statusApplied': 'Diterapkan',
  'rewards.coupon.statusPendingAction': 'Menunggu tindakan',
  'rewards.coupon.statusRedeemed': 'Ditukarkan',
  'rewards.coupon.subtitle': 'Subjudul',
  'rewards.coupon.title': 'Tukarkan kode kupon',
  'rewards.referralSection.activity': 'Aktivitas referral',
  'rewards.referralSection.apply': 'Menerapkan...',
  'rewards.referralSection.applying': 'Menerapkan...',
  'rewards.referralSection.colReferredUser': 'Pengguna yang direferensikan',
  'rewards.referralSection.colReward': 'Hadiah',
  'rewards.referralSection.colStatus': 'Status',
  'rewards.referralSection.colUpdated': 'Diperbarui',
  'rewards.referralSection.completed': 'Selesai',
  'rewards.referralSection.copyCode': 'Salin kode',
  'rewards.referralSection.copyFailed': 'Salin gagal',
  'rewards.referralSection.haveCode': 'Punya kode referral?',
  'rewards.referralSection.haveCodeDesc': 'Deskripsi punya kode',
  'rewards.referralSection.linked': 'Terhubung',
  'rewards.referralSection.linkedCode': '(kode {code})',
  'rewards.referralSection.loading': 'Memuat program referral...',
  'rewards.referralSection.retry': 'Coba lagi',
  'rewards.referralSection.noReferrals': 'Tidak ada referral',
  'rewards.referralSection.pendingReferrals': 'Referral tertunda',
  'rewards.referralSection.placeholder': 'Kode referral',
  'rewards.referralSection.share': 'Bagikan',
  'rewards.referralSection.statusCompleted': 'Status selesai',
  'rewards.referralSection.statusExpired': 'Status kedaluwarsa',
  'rewards.referralSection.statusJoined': 'Status bergabung',
  'rewards.referralSection.subtitle': 'Subjudul',
  'rewards.referralSection.title': 'Undang teman, dapatkan kredit',
  'rewards.referralSection.totalEarned': 'Total diperoleh',
  'rewards.referralSection.yourCode': 'Kode Anda',
  'settings.ai.addCloudProvider': 'Tambah penyedia cloud',
  'settings.ai.addProvider': 'Menyimpan...',
  'settings.ai.apiKeyFieldLabel': 'Label kolom API key',
  'settings.ai.apiKeyRequired': 'Tempelkan API key Anda untuk melanjutkan.',
  'settings.ai.apiKeyStoredEncrypted': 'API key disimpan terenkripsi',
  'settings.ai.apiKeysEncrypted': 'auth-profiles.json',
  'settings.ai.clearStoredKey': 'Hapus key tersimpan',
  'settings.ai.connectProvider': 'Hubungkan penyedia',
  'settings.ai.customRouting': 'Routing kustom',
  'settings.ai.defaultResolvesTo': 'Default diarahkan ke',
  'settings.ai.discard': 'Buang',
  'settings.ai.editProvider': 'Edit penyedia',
  'settings.ai.llmProviders': 'Penyedia LLM',
  'settings.ai.llmProvidersDesc': 'Deskripsi penyedia LLM',
  'settings.ai.localOllama': 'Lokal (Ollama)',
  'settings.ai.modelLabel': 'Model AI',
  'settings.ai.noCustomProviders': 'Tidak ada penyedia kustom',
  'settings.ai.openAiCompat.authHeaderExample': 'Otorisasi: Pembawa <kunci Anda>',
  'settings.ai.openAiCompat.authHeaderLabel': 'Header autentikasi',
  'settings.ai.openAiCompat.baseUrlLabel': 'Basis URL',
  'settings.ai.openAiCompat.baseUrlUnavailable': 'Tidak tersedia',
  'settings.ai.openAiCompat.clearKey': 'Hapus kunci',
  'settings.ai.openAiCompat.description':
    'Arahkan harness lokal ke server /v1 ini untuk diteruskan melalui penyedia yang dikonfigurasi di bawah. Autentikasi menggunakan kunci stabil yang Anda tetapkan di sini, bukan bearer inti internal aplikasi.',
  'settings.ai.openAiCompat.keyConfigured': 'Kunci dikonfigurasi',
  'settings.ai.openAiCompat.keyRequired': 'Kunci diperlukan',
  'settings.ai.openAiCompat.rotateKey': 'Tombol putar',
  'settings.ai.openAiCompat.setKey': 'Setel kunci',
  'settings.ai.openAiCompat.title': 'Titik akhir yang kompatibel dengan OpenAI',
  'settings.ai.providerLabel': 'Penyedia',
  'skills.mcpComingSoon.title': 'MCP Server',
  'skills.mcpComingSoon.description':
    'Manajemen server MCP akan segera hadir. Tab ini akan menjadi tempat untuk menemukan, menghubungkan, dan memantau integrasi server MCP Anda.',
  'settings.ai.routing': 'Perutean',
  'settings.ai.claudeCode.button': 'Claude Code',
  'settings.ai.claudeCode.inlineNotConnected':
    'Tidak terhubung — merutekan obrolan melalui Claude Code CLI lokal Anda.',
  'settings.ai.claudeCode.checkingSignIn': 'Memeriksa status masuk…',
  'settings.ai.claudeCode.inlineConnected': 'Terhubung.',
  'settings.ai.claudeCode.signedInAs': 'Masuk sebagai',
  'settings.ai.claudeCode.subscriptionFallback': 'Langganan Claude',
  'settings.ai.claudeCode.usingApiKeyEnv': 'Menggunakan ANTHROPIC_API_KEY',
  'settings.ai.claudeCode.cliNotInstalled': 'CLI belum terpasang',
  'settings.ai.claudeCode.signInUnknown': 'Status masuk tidak diketahui',
  'settings.ai.claudeCode.connectedNotSignedIn': 'Terhubung · belum masuk',
  'settings.ai.claudeCode.modalTitle': 'Claude Code CLI',
  'settings.ai.claudeCode.modalDescription':
    'Merutekan beban kerja obrolan, agentik, dan penalaran melalui Claude Code CLI yang terpasang secara lokal. Tanpa kunci API — menggunakan login milik CLI itu sendiri.',
  'settings.ai.claudeCode.close': 'Tutup',
  'settings.ai.claudeCode.connection': 'Koneksi',
  'settings.ai.claudeCode.enabled': 'Aktif',
  'settings.ai.claudeCode.notEnabled': 'Tidak aktif',
  'settings.ai.claudeCode.disconnect': 'Putuskan',
  'settings.ai.claudeCode.disconnecting': 'Memutuskan…',
  'settings.ai.claudeCode.enable': 'Aktifkan Claude Code',
  'settings.ai.claudeCode.enabling': 'Mengaktifkan…',
  'settings.ai.claudeCode.authentication': 'Autentikasi',
  'settings.ai.claudeCode.recheck': 'Periksa ulang',
  'settings.ai.claudeCode.checking': 'Memeriksa…',
  'settings.ai.claudeCode.openingTerminal': 'Membuka terminal…',
  'settings.ai.claudeCode.signIn': 'Masuk dengan Claude',
  'settings.ai.claudeCode.reconnect': 'Hubungkan ulang',
  'settings.ai.claudeCode.loginHint':
    'Membuka terminal yang menjalankan claude login. Setelah selesai, klik Periksa ulang.',
  'settings.ai.claudeCode.loginError': 'Tidak dapat membuka terminal login. Silakan coba lagi.',
  'settings.ai.claudeCode.fullAccess': 'Akses penuh',
  'settings.ai.claudeCode.fullAccessOn':
    'Claude Code dapat menjalankan perintah, menggunakan jaringan, dan membuat subagen.',
  'settings.ai.claudeCode.fullAccessOff':
    'Hanya terima suntingan — menerapkan suntingan berkas secara otomatis, membatasi perintah & jaringan.',
  'settings.ai.claudeCode.sandboxNoteMac':
    'Di macOS, ~/.openhuman tetap dilindungi oleh sandbox di kedua mode.',
  'settings.ai.claudeCode.sandboxNoteOther':
    'Akses penuh tidak dibatasi di platform ini — aktifkan hanya jika Anda mempercayai ruang kerja.',
  'settings.ai.claudeCode.enableToCheck': 'Aktifkan Claude Code untuk memeriksa status masuk.',
  'settings.ai.claudeCode.usingApiKeyEnvDetail': 'Menggunakan ANTHROPIC_API_KEY dari lingkungan.',
  'settings.ai.claudeCode.notFoundInstall':
    'Claude Code CLI tidak ditemukan — pasang dengan: npm install -g @anthropic-ai/claude-code',
  'settings.ai.claudeCode.unknownDetail':
    'Tidak dapat menentukan status masuk. claude CLI Anda mungkin lebih lama dari dukungan status autentikasi — coba Hubungkan ulang, lalu Periksa ulang.',
  'settings.ai.claudeCode.notSignedIn': 'Belum masuk.',
  'settings.ai.routingCustom': 'Routing kustom',
  'settings.ai.routingDefault': 'Bawaan',
  'settings.ai.routingDesc': 'Deskripsi routing',
  'settings.ai.saveChanges': 'Menyimpan...',
  'settings.ai.saving': 'Menyimpan...',
  'settings.ai.unsavedChange': 'perubahan belum disimpan',
  'settings.ai.unsavedChanges': 'perubahan belum disimpan',
  'settings.ai.workloadGroupBackground': 'Grup beban kerja latar',
  'settings.ai.workloadGroupChat': 'Grup beban kerja chat',
  'settings.ai.disconnectProvider': 'Putuskan sambungan {label}',
  'settings.ai.connectProviderLabel': 'Sambungkan {label}',
  'settings.ai.editProviderEndpoint': 'Ubah titik akhir {label}',
  'settings.ai.defaultLocalEndpoint': 'http://localhost:11434/v1',
  'settings.ai.editEndpoint': 'Edit titik akhir',
  'settings.ai.endpointUrlLabel': 'Titik Akhir URL',
  'settings.ai.localRuntimeHelper':
    'Dimana {label} bisa dihubungi. Baku adalah localhost; arahkan ini ke host jarak jauh (misalnya, http://10.0.0.4:11434/v1) untuk memakai suatu contoh bersama.',
  'settings.ai.endpointUrlRequired': 'Titik akhir URL diperlukan.',
  'settings.ai.endpointProtocolRequired': 'Titik akhir harus dimulai dengan http:// atau https://.',
  'settings.ai.connectProviderDialog': 'Hubungkan {label}',
  'settings.ai.getProviderApiKey': 'Dapatkan API Key',
  'settings.ai.or': 'Atau',
  'settings.ai.codexOauthMissingAuthUrl':
    'Codex OAuth tidak mengembalikan URL otorisasi. Coba masuk lagi.',
  'settings.ai.codexOauthMissingCallbackUrl':
    'Tempel URL pengalihan dari browser Anda setelah masuk.',
  'settings.ai.openRouterOauthDescription':
    'Masuk dengan kunci OpenRouter dan impor sebuah user yang dikendalikan API menggunakan PKCE.',
  'settings.ai.connecting': 'Menghubungkan...',
  'settings.ai.backgroundLoops': 'Perulangan latar belakang',
  'settings.ai.backgroundLoopsDesc':
    'Lihat apa yang berjalan tanpa pesan obrolan, jeda kerja detak jantung, dan memeriksa buku kas kredit baru-baru ini.',
  'settings.ai.heartbeatControls': 'Kontrol detak jantung',
  'settings.ai.heartbeatControlsDesc':
    'Default off. Mengaktifkan memulai loop; menonaktifkan menonaktifkan tugas yang sedang berjalan.',
  'settings.ai.heartbeatLoop': 'Putaran detak jantung',
  'settings.ai.heartbeatLoopDesc':
    'Master penjadwalan untuk perencana + inferensi bawah sadar opsional.',
  'settings.ai.subconsciousInference': 'Inferensi bawah sadar',
  'settings.ai.subconsciousInferenceDesc':
    'Model runs - didukung /reflection evaluasi pada detak jantung.',
  'settings.ai.calendarMeetingChecks': 'Pemeriksaan rapat kalender',
  'settings.ai.calendarMeetingChecksDesc':
    'Memanggil daftar acara kalender untuk koneksi kalender Google yang aktif.',
  'settings.ai.calendarCap': 'Batas kalender',
  'settings.ai.connectionsPerTick': '{count} samb/centang',
  'settings.ai.meetingLookahead': 'Pertemuan ke depan',
  'settings.ai.minutesShort': '{count} mnt',
  'settings.ai.reminderLookahead': 'Pengingat ke depan',
  'settings.ai.cronReminderChecks': 'Pemeriksaan pengingat cron',
  'settings.ai.cronReminderChecksDesc':
    'Pemindaian memungkinkan pekerjaan cron untuk pengingat-seperti item mendatang.',
  'settings.ai.relevantNotificationChecks': 'Pemeriksaan notifikasi yang relevan',
  'settings.ai.relevantNotificationChecksDesc':
    'Promoses mendesak pemberitahuan lokal ke peringatan proaktif.',
  'settings.ai.externalDelivery': 'Pengiriman eksternal',
  'settings.ai.externalDeliveryDesc':
    'Biarkan detak jantung memperingatkan mengirim pesan proaktif ke saluran eksternal.',
  'settings.ai.interval': 'Interval',
  'settings.ai.running': 'Berjalan...',
  'settings.ai.plannerTickNow': 'Perencana centang sekarang',
  'settings.ai.loadingHeartbeatControls': 'Memuat kontrol detak jantung...',
  'settings.ai.heartbeatControlsUnavailable': 'Kontrol detak jantung tidak tersedia.',
  'settings.ai.loopMap': 'Peta loop',
  'settings.ai.plannerSummary':
    'Perencana: {sourceEvents} peristiwa sumber, {sent} terkirim, {deduped} dihapuskan.',
  'settings.ai.routeLabel': 'rute: {route}',
  'settings.ai.on': 'aktif',
  'settings.ai.off': 'nonaktif',
  'settings.ai.recentUsageLedger': 'Buku besar penggunaan terkini',
  'settings.ai.recentUsageLedgerDesc':
    'Backend baris mengekspos action/time hari ini; sumber tag membutuhkan dukungan backend.',
  'settings.ai.latestSpend': 'Pembelanjaan terbaru: {amount} pada {time} ({action})',
  'settings.ai.topActions': 'Tindakan teratas',
  'settings.ai.noSpendRows': 'Tidak ada baris pembelanjaan yang dimuat.',
  'settings.ai.topHours': 'Jam sibuk',
  'settings.ai.noHourlySpend': 'Belum ada pembelanjaan per jam.',
  'settings.ai.openhumanDefault': 'OpenHuman (baku)',
  'settings.ai.localModelResolved': 'Ollama',
  'settings.ai.customRoutingForWorkload': 'Perutean khusus untuk {label}',
  'settings.ai.loadingModels': 'Memuat model...',
  'settings.ai.enterModelIdManually': 'atau masukkan id model secara manual:',
  'settings.ai.modelIdPlaceholderForProvider': '{slug} ID model',
  'settings.ai.modelIdPlaceholder': 'model-id',
  'settings.ai.selectModel': 'Pilih model...',
  'settings.ai.temperatureOverride': 'Penggantian suhu',
  'settings.ai.temperatureOverrideSlider': 'Penggantian suhu (slider)',
  'settings.ai.temperatureOverrideValue': 'Penggantian suhu (nilai)',
  'settings.ai.temperatureOverrideDesc':
    'Turunkan = lebih deterministik. Biarkan tak diperiksa untuk memakai penyedia bawaan.',
  'settings.ai.modelVision': 'Mendukung visi (input gambar)',
  'settings.ai.modelVisionDesc':
    'Aktifkan jika model ini menerima gambar. Memungkinkan penyusun obrolan melampirkan gambar saat model ini dipilih.',
  'settings.ai.testFailed': 'Pengujian gagal',
  'settings.ai.testingModel': 'Pengujian model...',
  'settings.ai.modelResponse': 'Respons model',
  'settings.ai.providerWithValue': 'Penyedia: {value}',
  'settings.ai.noneDash': '-',
  'settings.ai.promptHelloWorld': 'Perintah: Halo dunia',
  'settings.ai.startedAt': 'Dimulai: {value}',
  'settings.ai.waitingForModelResponse': 'Menunggu respon dari model yang dipilih...',
  'settings.ai.response': 'Respon',
  'settings.ai.testing': 'Pengujian...',
  'settings.ai.test': 'Pengujian',
  'settings.ai.slugMissingError': 'Masukkan nama penyedia untuk menghasilkan siput.',
  'settings.ai.slugInUseError': 'Nama penyedia tersebut sudah digunakan.',
  'settings.ai.slugReservedError': 'Pilih nama penyedia yang berbeda.',
  'settings.ai.providerNamePlaceholder': 'Penyedia Saya',
  'settings.ai.slugLabel': 'Siput:',
  'settings.ai.openAiUrlLabel': 'URL OpenAI',
  'settings.ai.openAiUrlPlaceholder': 'https://api.openai.com/v1',
  'settings.ai.keepExistingKeyPlaceholder': 'Biarkan kosong untuk mempertahankan kunci yang ada',
  'settings.ai.reindexingMemory': 'Mengindeks ulang memori',
  'settings.ai.reindexingMemoryMessage':
    'Embeddings sedang diproses kembali. Butir memori {pending} sedang tertanam kembali di bawah model saat ini - semantic recall berkurang sampai ini selesai. Pencarian kata kunci terus bekerja, dan kembali embedding terus di latar belakang jika Anda menutup ini.',
  'settings.ai.signInWithOpenRouter': 'Masuk dengan OpenRouter',
  'settings.ai.weekBudget': 'Anggaran minggu',
  'settings.ai.cycleRemaining': 'Sisa siklus',
  'settings.ai.cycleTotalSpend': 'Total pembelanjaan siklus',
  'settings.ai.avgSpendRow': 'Baris pembelanjaan rata-rata',
  'settings.ai.backgroundApiReads': 'Bg API dibaca',
  'settings.ai.backgroundWakeups': 'Bg bangun',
  'settings.ai.budgetMath': 'Perhitungan anggaran',
  'settings.ai.rowsLeft': 'Baris tersisa',
  'settings.ai.rowsPerFullWeekBudget': 'Baris anggaran per minggu penuh',
  'settings.ai.sampleBurnRate': 'Laju pembakaran sampel',
  'settings.ai.projectedEmpty': 'Proyeksi kosong',
  'settings.ai.apiReadsPerDollarRemaining': 'API pembacaan per $ yang tersisa',
  'settings.ai.loopCallBudget': 'Anggaran panggilan berulang',
  'settings.ai.heartbeatTicks': 'Detak jantung berdetak',
  'settings.ai.calendarPlannerCalls': 'Panggilan perencana kalender',
  'settings.ai.calendarFanoutCap': 'Batas fanout kalender',
  'settings.ai.subconsciousModelCalls': 'Panggilan model bawah sadar',
  'settings.ai.composioSyncScans': 'Composio pemindaian sinkronisasi',
  'settings.ai.totalBackgroundApiReadBudget': 'Total bg API anggaran baca',
  'settings.ai.memoryWorkerPolls': 'Jajak pendapat pekerja memori',
  'settings.ai.defaultProviderName': 'OpenHuman',
  'settings.ai.routing.managed': 'Terkelola',
  'settings.ai.routing.managedAlwaysOn': 'Always on',
  'settings.ai.routing.managedHint':
    'Managed is always available as a fallback. To use your own model, choose a routing mode below.',
  'settings.ai.routing.managedDesc':
    'OpenHuman akan menjalankan semua kesimpulan di awan, memilih model terbaik untuk tugas ini, mengoptimalkan biaya, dan menjaga standar routing teraman.',
  'settings.ai.routing.managedMsg':
    'OpenHuman akan menangani semua inferensi untuk setiap beban kerja dan secara otomatis memilih rute terbaik untuk biaya, kualitas, dan keamanan.',
  'settings.ai.routing.useYourOwn': 'Gunakan Model Anda Sendiri',
  'settings.ai.routing.useYourOwnDesc':
    'Pilih satu model + penyedia dan setiap beban kerja di dalamnya. Ini sederhana, tetapi dapat tidak efisien karena inferensi ringan dan kelas berat semua berbagi rute yang sama.',
  'settings.ai.routing.advanced': 'Tingkat Lanjut',
  'settings.ai.routing.advancedDesc':
    'Pilih model yang berbeda untuk tugas yang berbeda. Ini adalah pilihan terbaik untuk optimasi biaya ketat dan kontrol yang paling.',
  'settings.ai.routing.customDesc':
    'Routing halus memberikan optimasi biaya terbaik dan kontrol yang paling. Gunakan baris di bawah ini untuk memutuskan loading kerja mana yang tetap Managed, yang menggunakan nilai baku yang sama, dan pin yang digunakan untuk model tertentu.',
  'settings.ai.routing.chatAndConversations': 'Obrolan dan Percakapan',
  'settings.ai.routing.chatDesc':
    'Model digunakan selama interaksi pengguna langsung, membalas, penalaran, loop agen, dan bantuan coding.',
  'settings.ai.routing.backgroundTasks': 'Tugas Latar Belakang',
  'settings.ai.routing.bgTasksDesc':
    'Model digunakan di luar aliran percakapan utama untuk summarisasi, detak jantung, pembelajaran, dan evaluasi bawah sadar.',
  'settings.ai.routing.workload.chat.label': 'Chat',
  'settings.ai.routing.workload.chat.description':
    'Direct conversational back-and-forth — “Quick” mode in Conversations',
  'settings.ai.routing.workload.chat.hint':
    'Recommended: a cheap or mid-cost fast chat model with high tokens/sec and low latency. Open-source local models can work well here if they feel responsive.',
  'settings.ai.routing.workload.reasoning.label': 'Reasoning',
  'settings.ai.routing.workload.reasoning.description':
    'Main chat agent, meeting summarizer — “Reasoning” mode in Conversations',
  'settings.ai.routing.workload.reasoning.hint':
    'Recommended: a more expensive frontier or strong reasoning model for deep thinking. This is used for the main chat agent, meeting summaries, and heavier answer synthesis.',
  'settings.ai.routing.workload.agentic.label': 'Agentic',
  'settings.ai.routing.workload.agentic.description':
    'Sub-agent runners, tool loops, GIF decisions',
  'settings.ai.routing.workload.agentic.hint':
    'Recommended: a reliable instruction-following model with strong tool use. Mid-cost frontier models are usually safest; capable open-source models can work if tool calling is stable.',
  'settings.ai.routing.workload.coding.label': 'Coding',
  'settings.ai.routing.workload.coding.description': 'Code generation and refactor passes',
  'settings.ai.routing.workload.coding.hint':
    'Recommended: a coding-tuned model with strong instruction following, edit quality, and long-context performance. This is usually worth spending more on.',
  'settings.ai.routing.workload.vision.label': 'Vision',
  'settings.ai.routing.workload.vision.description':
    'Image understanding for the vision sub-agent — always multimodal',
  'settings.ai.routing.workload.vision.hint':
    'Recommended: a multimodal model that accepts image input. The managed default (vision-v1) is image-capable; any provider you route here is always treated as vision-enabled.',
  'settings.ai.routing.workload.memory.label': 'Memory summarization',
  'settings.ai.routing.workload.memory.description': 'Tree-extracts and consolidations',
  'settings.ai.routing.workload.memory.hint':
    'Recommended: a cheaper summarization model. It should be consistent and compact, but it does not need premium frontier-level reasoning.',
  'settings.ai.routing.workload.heartbeat.label': 'Heartbeat',
  'settings.ai.routing.workload.heartbeat.description': 'Background reasoning between user turns',
  'settings.ai.routing.workload.heartbeat.hint':
    'Recommended: a cheap, efficient background model. This runs often between turns, so low cost matters more than maximum intelligence.',
  'settings.ai.routing.workload.learning.label': 'Learning · Reflections',
  'settings.ai.routing.workload.learning.description': 'Periodic reflection over recent history',
  'settings.ai.routing.workload.learning.hint':
    'Recommended: a stronger reflective model. This can be mid-cost or premium because it benefits from better synthesis over recent history.',
  'settings.ai.routing.workload.subconscious.label': 'Subconscious',
  'settings.ai.routing.workload.subconscious.description': 'Eventfulness scoring + drift checks',
  'settings.ai.routing.workload.subconscious.hint':
    'Recommended: a very cheap monitoring model, ideally one that is lightweight and predictable. This is for eventfulness scoring, drift checks, and quiet background evaluation.',
  'settings.ai.routing.addCustomProvider': 'Tambahkan Penyedia Khusus',
  'settings.ai.globalModel.title': 'Pilih satu model untuk semuanya',
  'settings.ai.globalModel.desc':
    'Rute ini semua masuk melalui satu model. Hal ini lebih sederhana, tetapi dapat tidak efisien untuk biaya dan kualitas karena tugas ringan dan berat semua akan menggunakan rute yang sama.',
  'settings.ai.globalModel.noProviders':
    'Tambah atau hubungkan penyedia terlebih dahulu. Kemudian Anda dapat rute setiap beban kerja melalui satu model di sini.',
  'settings.ai.globalModel.provider': 'Penyedia',
  'settings.ai.globalModel.model': 'Model AI',
  'settings.ai.globalModel.loadingModels': 'Memuat model…',
  'settings.ai.globalModel.enterModelId': 'Masukkan id model',
  'settings.ai.globalModel.appliesToAll':
    'Applies penyedia + model yang sama untuk chatting, penalaran, coding, memori, detak jantung, belajar, dan bawah sadar. Embeddings dikonfigurasi secara terpisah. Perubahan simpan ketika Anda klik save.',
  'settings.ai.globalModel.saving': 'Menyimpan…',
  'settings.ai.globalModel.saved': 'Tersimpan',
  'settings.ai.workload.noModel': 'Tidak ada model yang dipilih',
  'settings.ai.workload.changeModel': 'Ubah Model',
  'settings.ai.workload.chooseModel': 'Pilih Model',
  'settings.ai.provider.ollama': 'Ollama',
  'settings.autocomplete.appFilter.acceptSuggestion': 'Terima saran',
  'settings.autocomplete.appFilter.app': 'Aplikasi',
  'settings.autocomplete.appFilter.currentSuggestion': 'Saran saat ini',
  'settings.autocomplete.appFilter.contextOverride': 'Penggantian Konteks (opsional)',
  'settings.autocomplete.appFilter.debounce': 'Debounce',
  'settings.autocomplete.appFilter.debugFocus': 'Debug fokus',
  'settings.autocomplete.appFilter.enabled': 'Diaktifkan',
  'settings.autocomplete.appFilter.getSuggestion': 'Dapatkan saran',
  'settings.autocomplete.appFilter.lastError': 'Kesalahan terakhir',
  'settings.autocomplete.appFilter.liveLogs': 'Log Langsung',
  'settings.autocomplete.appFilter.model': 'Model AI',
  'settings.autocomplete.appFilter.noLogs': ') :',
  'settings.autocomplete.appFilter.phase': 'Fase',
  'settings.autocomplete.appFilter.platformSupported': 'Platform didukung',
  'settings.autocomplete.appFilter.refreshStatus': 'Menyegarkan...',
  'settings.autocomplete.appFilter.refreshing': 'Menyegarkan...',
  'settings.autocomplete.appFilter.running': 'Berjalan',
  'settings.autocomplete.appFilter.runtime': 'Waktu proses',
  'settings.autocomplete.appFilter.test': 'Tes',
  'settings.autocomplete.completionStyle.acceptedCompletion':
    '{count} pelengkapan diterima tersimpan — digunakan untuk mempersonalisasi saran berikutnya.',
  'settings.autocomplete.completionStyle.acceptedCompletions':
    '{count} pelengkapan diterima tersimpan — digunakan untuk mempersonalisasi saran berikutnya.',
  'settings.autocomplete.completionStyle.clearHistory': 'Membersihkan...',
  'settings.autocomplete.completionStyle.clearing': 'Membersihkan...',
  'settings.autocomplete.completionStyle.debounce': 'Tunda input (ms)',
  'settings.autocomplete.completionStyle.enabled': 'Diaktifkan',
  'settings.autocomplete.completionStyle.maxChars': 'Maks Karakter',
  'settings.autocomplete.completionStyle.noHistory':
    'Belum ada pelengkapan yang diterima. Terima saran dengan Tab untuk mulai mempersonalisasi.',
  'settings.autocomplete.completionStyle.overlayTtl': 'TTL Overlay (ms)',
  'settings.autocomplete.completionStyle.personalizationHistory': 'Riwayat Personalisasi',
  'settings.autocomplete.completionStyle.styleExamples': 'Contoh Gaya (satu per baris)',
  'settings.autocomplete.completionStyle.styleInstructions': 'Instruksi Gaya',
  'settings.autocomplete.debug.acceptedPrefix': 'Diterima: {value}',
  'settings.autocomplete.debug.acceptFailed': 'Gagal menerima saran',
  'settings.autocomplete.debug.alreadyRunning': 'Pelengkapan otomatis sudah berjalan.',
  'settings.autocomplete.debug.clearHistoryFailed': 'Gagal menghapus riwayat',
  'settings.autocomplete.debug.didNotStart': 'Pelengkapan otomatis tidak dimulai.',
  'settings.autocomplete.debug.disabledInSettings':
    'Pelengkapan otomatis dinonaktifkan di pengaturan. Aktifkan dan simpan terlebih dahulu.',
  'settings.autocomplete.debug.fetchSuggestionFailed': 'Gagal mengambil saran saat ini',
  'settings.autocomplete.debug.inspectFocusedElementFailed': 'Gagal memeriksa elemen fokus',
  'settings.autocomplete.debug.loadSettingsFailed': 'Gagal memuat pengaturan pelengkapan otomatis',
  'settings.autocomplete.debug.noSuggestionApplied': 'Tidak ada saran yang diterapkan.',
  'settings.autocomplete.debug.noSuggestionReturned': 'Tidak ada saran yang dikembalikan.',
  'settings.autocomplete.debug.refreshStatusFailed':
    'Gagal menyegarkan status pelengkapan otomatis',
  'settings.autocomplete.debug.saveAdvancedSettingsFailed': 'Gagal menyimpan pengaturan lanjutan',
  'settings.autocomplete.debug.startFailed': 'Gagal memulai pelengkapan otomatis',
  'settings.autocomplete.debug.stopFailed': 'Gagal menghentikan pelengkapan otomatis',
  'settings.autocomplete.debug.suggestionPrefix': 'Saran: {value}',
  'settings.autocomplete.shared.none': 'Tidak ada',
  'settings.autocomplete.shared.notApplicable': 'n/a',
  'settings.autocomplete.shared.unknown': 'Tidak diketahui',
  'settings.billing.autoRecharge.addAmount': 'Tambahkan jumlah ini',
  'settings.billing.autoRecharge.addCard': 'Tambah kartu',
  'settings.billing.autoRecharge.amountHint': 'Petunjuk jumlah',
  'settings.billing.autoRecharge.defaultCard': 'Kartu default',
  'settings.billing.autoRecharge.lastRechargeFailed': 'Isi ulang terakhir gagal',
  'settings.billing.autoRecharge.lastRecharged': 'Terakhir diisi ulang',
  'settings.billing.autoRecharge.expires': 'Kedaluwarsa {date}',
  'settings.billing.autoRecharge.noCards': 'Tidak ada kartu',
  'settings.billing.autoRecharge.paymentMethods': 'Metode Pembayaran',
  'settings.billing.autoRecharge.rechargeInProgress': 'Isi ulang sedang berlangsung',
  'settings.billing.autoRecharge.spentThisWeek': '${spent} dari ${limit} digunakan minggu ini',
  'settings.billing.autoRecharge.rechargeWhen': 'Isi ulang saat saldo turun di bawah',
  'settings.billing.autoRecharge.saveSettings': 'Menyimpan...',
  'settings.billing.autoRecharge.saving': 'Menyimpan...',
  'settings.billing.autoRecharge.setDefault': ':',
  'settings.billing.autoRecharge.subtitle': 'Subjudul',
  'settings.billing.autoRecharge.title': 'Aktifkan Isi Ulang Otomatis',
  'settings.billing.autoRecharge.toggleAriaLabel': 'Alihkan isi ulang otomatis',
  'settings.billing.autoRecharge.weeklyLimit': 'Batas pengeluaran mingguan',
  'settings.billing.history.desc': 'Deskripsi',
  'settings.billing.history.empty': 'Kosong',
  'settings.billing.history.openPortal': 'Buka portal',
  'settings.billing.history.posted': 'Diposting',
  'settings.billing.history.title': 'Judul',
  'settings.billing.inferenceBudget.cycleEnds': 'Siklus berakhir',
  'settings.billing.inferenceBudget.exhausted': 'Habis',
  'settings.billing.inferenceBudget.loadError': 'Error memuat',
  'settings.billing.inferenceBudget.noBudgetDesc': 'Deskripsi tidak ada budget',
  'settings.billing.inferenceBudget.noRecurringBudget': 'Tidak ada budget berulang',
  'settings.billing.inferenceBudget.noRecurringPlanBudget': 'Tidak ada anggaran paket berulang',
  'settings.billing.inferenceBudget.noRecurringWeeklyDesc':
    'Rencana Anda saat ini tidak termasuk anggaran inferensi mingguan berulang. Penggunaan dibayar dari kredit yang tersedia sebagai gantinya.',
  'settings.billing.inferenceBudget.remaining': 'Tersisa',
  'settings.billing.inferenceBudget.remainingSummary': '{remaining} / {budget} tersisa',
  'settings.billing.inferenceBudget.spentThisCycle': 'Menghabiskan {amount} siklus ini',
  'settings.billing.inferenceBudget.cycleEndsOn': 'Siklus berakhir {date}',
  'settings.billing.inferenceBudget.exhaustedDesc':
    'Penggunaan langganan disertakan habis. Atas kredit untuk terus menggunakan AI tanpa menunggu siklus berikutnya.',
  'settings.billing.inferenceBudget.discountVsPayg':
    '{pct}% lebih murah setiap panggilan daripada gaji-as-you-go.',
  'settings.billing.inferenceBudget.cycleSpend': 'Pembelanjaan siklus',
  'settings.billing.inferenceBudget.totalAmount': 'Total {amount}',
  'settings.billing.inferenceBudget.inference': 'Inferensi',
  'settings.billing.inferenceBudget.integrations': 'Integrasi',
  'settings.billing.inferenceBudget.calls': '{count} panggilan',
  'settings.billing.inferenceBudget.dailySpend': 'Pembelanjaan harian',
  'settings.billing.inferenceBudget.dailySpendPoint': '{date}: {amount}',
  'settings.billing.inferenceBudget.topModels': 'Model teratas',
  'settings.billing.inferenceBudget.noInferenceUsage':
    'Tidak ada penggunaan kesimpulan siklus ini.',
  'settings.billing.inferenceBudget.topIntegrations': 'Integrasi teratas',
  'settings.billing.inferenceBudget.noIntegrationUsage':
    'Tidak ada penggunaan integrasi siklus ini.',
  'settings.billing.inferenceBudget.tenHourCap': 'Batas sepuluh jam',
  'settings.billing.inferenceBudget.title': 'Judul',
  'settings.billing.inferenceBudget.unableToLoad': 'Tidak dapat memuat data penggunaan',
  'settings.billing.inferenceBudget.notAvailable': 'n/a',
  'settings.billing.payAsYouGo.available': 'Tersedia',
  'settings.billing.payAsYouGo.chargeCustomAmount': 'Membuka...',
  'settings.billing.payAsYouGo.chooseTopUpDesc': 'Deskripsi pilih isi ulang',
  'settings.billing.payAsYouGo.chooseTopUpTitle': 'Judul pilih isi ulang',
  'settings.billing.payAsYouGo.creditBalanceDesc': 'Deskripsi saldo kredit',
  'settings.billing.payAsYouGo.creditBalanceTitle': 'Judul saldo kredit',
  'settings.billing.payAsYouGo.customAmount': 'Jumlah kustom',
  'settings.billing.payAsYouGo.enterAmount': 'Masukkan jumlah',
  'settings.billing.payAsYouGo.opening': 'Membuka',
  'settings.billing.payAsYouGo.promotionalCredits': 'Kredit Promosi',
  'settings.billing.payAsYouGo.topUpBalance': 'Isi Ulang Saldo',
  'settings.billing.payAsYouGo.topUpCredits': 'Isi Ulang Kredit',
  'settings.billing.payAsYouGo.unableToLoad': 'Tidak dapat memuat saldo.',
  'settings.billing.subscription.annual': 'Tahunan',
  'settings.billing.subscription.billedAnnually': 'Ditagih tahunan',
  'settings.billing.subscription.chooseSubtitle': 'Subtitle pilih',
  'settings.billing.subscription.chooseTitle': 'Judul pilih',
  'settings.billing.subscription.cryptoDesc': 'Deskripsi crypto',
  'settings.billing.subscription.cryptoQuestion': 'Pertanyaan crypto',
  'settings.billing.subscription.current': 'Saat ini',
  'settings.billing.subscription.currentPlan': 'Paket saat ini',
  'settings.billing.subscription.monthly': 'Bulanan',
  'settings.billing.subscription.paymentConfirmed': 'Pembayaran dikonfirmasi',
  'settings.billing.subscription.perMonth': 'Per bulan',
  'settings.billing.subscription.popular': 'Populer',
  'settings.billing.subscription.save': '{pct}',
  'settings.billing.subscription.upgrade': 'Tingkatkan',
  'settings.billing.subscription.waiting': 'Menunggu',
  'settings.billing.subscription.waitingPayment': 'Menunggu pembayaran',
  'settings.composio.apiKeyDesc': 'API key Composio saat ini tersimpan di perangkat ini.',
  'settings.composio.apiKeyExamplePlaceholder': 'ck_live_xxxxxxxxxxxxxxxx',
  'settings.composio.apiKeyLabel': 'API key Composio',
  'settings.composio.apiKeyStored': 'API key tersimpan',
  'settings.composio.apiKeyStoredPlaceholder': 'Ini dia.',
  'settings.composio.clearedToBackend': 'Beralih ke mode Backend',
  'settings.composio.confirmItem1': 'Akun di app.composio.dev dengan API key',
  'settings.composio.confirmItem2':
    'Menghubungkan ulang setiap integrasi melalui akun Composio pribadi Anda',
  'settings.composio.confirmItem3':
    'Catatan: trigger Composio (webhook real-time) belum berjalan di mode Direct — hanya pemanggilan tool sinkron',
  'settings.composio.confirmNeedItems': 'Anda akan butuh:',
  'settings.composio.confirmSwitch': 'Saya mengerti, beralih ke Direct',
  'settings.composio.confirmTitle': '⚠️ Beralih ke mode Direct',
  'settings.composio.confirmWarning':
    'Integrasi Anda yang sudah ada (Gmail, Slack, GitHub, dll. yang terhubung melalui OpenHuman) tidak akan terlihat — mereka berada di tenant Composio yang dikelola OpenHuman.',
  'settings.composio.intro':
    'Composio mengintegrasikan 250+ aplikasi eksternal sebagai tool yang dapat dipanggil agen Anda. Pilih cara pemanggilan tool tersebut dirutekan.',
  'settings.composio.title': 'Composio',
  'settings.composio.modeDirect': 'Langsung (bawa API key Anda sendiri)',
  'settings.composio.modeDirectDesc':
    'Panggilan langsung ke backend.composio.dev. Berdaulat / ramah offline. Eksekusi tool berjalan sinkron; webhook trigger real-time belum dirutekan dalam mode direct (isu lanjutan).',
  'settings.composio.modeManaged': 'Terkelola (OpenHuman menanganinya untuk Anda)',
  'settings.composio.modeManagedDesc':
    'OpenHuman mem-proxy pemanggilan tool melalui backend kami (disarankan). Autentikasi dibrokerkan; Anda tidak perlu menempel API key Composio. Webhook dirutekan sepenuhnya.',
  'settings.composio.routingMode': 'Mode routing',
  'settings.composio.saveErrorNoKey':
    'Gagal menyimpan. Mode Direct memerlukan API key yang tidak kosong.',
  'settings.composio.saving': 'Menyimpan...',
  'settings.composio.switching': 'Mengalihkan…',
  'settings.companion.title': 'Perusahaan Desktop',
  'settings.companion.session': 'Sesi',
  'settings.companion.activeLabel': 'Aktif',
  'settings.companion.inactiveStatus': 'Tidak aktif',
  'settings.companion.stopping': 'Berhenti…',
  'settings.companion.stopSession': 'Hentikan Sesi',
  'settings.companion.starting': 'Mulai…',
  'settings.companion.startSession': 'Mulai Sesi',
  'settings.companion.sessionId': 'ID Sesi',
  'settings.companion.turns': 'Putaran',
  'settings.companion.remaining': 'Tersisa',
  'settings.companion.configuration': 'Konfigurasi',
  'settings.companion.hotkey': 'Tombol Pintas',
  'settings.companion.activationMode': 'Mode Aktivasi',
  'settings.companion.sessionTtl': 'Sesi TTL',
  'settings.companion.screenCapture': 'Tangkapan Layar',
  'settings.companion.appContext': 'Konteks Aplikasi',
  'settings.cron.jobs.commandRequired': 'Perintah wajib diisi untuk tugas shell',
  'settings.cron.jobs.createJob': 'Tugas Terjadwal Baru',
  'settings.cron.jobs.created': 'Tugas dibuat',
  'settings.cron.jobs.custom': 'Kustom',
  'settings.cron.jobs.desc': 'Deskripsi',
  'settings.cron.jobs.edit': 'Edit',
  'settings.cron.jobs.editJob': 'Edit Tugas Terjadwal',
  'settings.cron.jobs.empty': 'Tidak ada cron job core ditemukan.',
  'settings.cron.jobs.errorCreate': 'Gagal membuat tugas cron: {message}',
  'settings.cron.jobs.errorLoadList': 'Gagal memuat tugas cron inti: {message}',
  'settings.cron.jobs.errorLoadRuns': 'Gagal memuat riwayat eksekusi: {message}',
  'settings.cron.jobs.errorRemove': 'Gagal menghapus tugas cron inti: {message}',
  'settings.cron.jobs.errorRun': 'Gagal menjalankan tugas cron inti: {message}',
  'settings.cron.jobs.errorToggle': 'Gagal memperbarui tugas cron inti: {message}',
  'settings.cron.jobs.errorUpdate': 'Gagal memperbarui tugas cron: {message}',
  'settings.cron.jobs.formAtLabel': 'Jalankan pada',
  'settings.cron.jobs.formCancel': 'Batal',
  'settings.cron.jobs.formCommand': 'Perintah shell',
  'settings.cron.jobs.formCommandPlaceholder': 'mis. curl https://example.com/health',
  'settings.cron.jobs.formCreate': 'Buat',
  'settings.cron.jobs.formCronCustom': 'Ekspresi kustom',
  'settings.cron.jobs.formCronCustomPlaceholder': 'mis. */30 * * * *',
  'settings.cron.jobs.formCronPreset': 'Preset',
  'settings.cron.jobs.formCronPreview': 'Berjalan: {preview}',
  'settings.cron.jobs.formDeleteAfterRun': 'Hapus setelah eksekusi pertama',
  'settings.cron.jobs.formDelivery': 'Mode pengiriman',
  'settings.cron.jobs.formDeliveryNone': 'Tidak ada (hanya output)',
  'settings.cron.jobs.formDeliveryProactive': 'Proaktif (notifikasi push)',
  'settings.cron.jobs.formError': 'Gagal menyimpan tugas',
  'settings.cron.jobs.formEveryLabel': 'Interval (milidetik)',
  'settings.cron.jobs.formEveryPlaceholder': 'mis. 3600000',
  'settings.cron.jobs.formJobType': 'Jenis tugas',
  'settings.cron.jobs.formJobTypeAgent': 'Agent (prompt AI)',
  'settings.cron.jobs.formJobTypeShell': 'Perintah shell',
  'settings.cron.jobs.formName': 'Nama tugas',
  'settings.cron.jobs.formNamePlaceholder': 'mis. daily-report, cleanup-task',
  'settings.cron.jobs.formPrompt': 'Prompt agent',
  'settings.cron.jobs.formPromptPlaceholder': 'Apa yang harus dilakukan agent setiap eksekusi?',
  'settings.cron.jobs.formPromptRequired': 'Prompt wajib diisi untuk tugas agent',
  'settings.cron.jobs.formSave': 'Simpan',
  'settings.cron.jobs.formSaving': 'Menyimpan…',
  'settings.cron.jobs.formScheduleAt': 'Sekali jalan (jalankan pada)',
  'settings.cron.jobs.formScheduleCron': 'Berulang (cron)',
  'settings.cron.jobs.formScheduleEvery': 'Interval (setiap N md)',
  'settings.cron.jobs.formScheduleRequired': 'Jadwal wajib diisi',
  'settings.cron.jobs.formScheduleType': 'Jenis jadwal',
  'settings.cron.jobs.formSessionIsolated': 'Terisolasi (disarankan)',
  'settings.cron.jobs.formSessionMain': 'Sesi utama',
  'settings.cron.jobs.formSessionTarget': 'Target sesi',
  'settings.cron.jobs.lastStatus': 'Status terakhir',
  'settings.cron.jobs.loading': 'Memuat cron job...',
  'settings.cron.jobs.loadingRuns': 'Memuat run',
  'settings.cron.jobs.nextRun': 'Jalan berikutnya',
  'settings.cron.jobs.pause': 'Jeda',
  'settings.cron.jobs.paused': 'Dijeda',
  'settings.cron.jobs.recentRuns': 'Jalan terbaru',
  'settings.cron.jobs.removing': 'Menghapus',
  'settings.cron.jobs.resume': 'Lanjutkan',
  'settings.cron.jobs.runningNow': 'Sedang berjalan',
  'settings.cron.jobs.saving': 'Menyimpan...',
  'settings.cron.jobs.schedule': 'Jadwal',
  'settings.cron.jobs.title': 'Cron Job Core',
  'settings.cron.jobs.updated': 'Tugas diperbarui',
  'settings.cron.jobs.viewRuns': 'Lihat run',
  'settings.cron.schedule.every2hours': 'Setiap 2 jam',
  'settings.cron.schedule.every30min': 'Setiap 30 menit',
  'settings.cron.schedule.every6hours': 'Setiap 6 jam',
  'settings.cron.schedule.everyHour': 'Setiap jam',
  'settings.cron.schedule.onceDaily': 'Sekali sehari (9 pagi)',
  'settings.localModel.deviceCapability.active': 'Aktif',
  'settings.localModel.deviceCapability.appliedTier': 'Tingkat yang diterapkan',
  'settings.localModel.deviceCapability.applying': 'Menerapkan',
  'settings.localModel.deviceCapability.cores': '{count}',
  'settings.localModel.deviceCapability.couldNotLoadPresets': 'Tidak dapat memuat preset',
  'settings.localModel.deviceCapability.cpu': 'CPU',
  'settings.localModel.deviceCapability.customModelIds': 'ID model kustom',
  'settings.localModel.deviceCapability.detected': 'Terdeteksi',
  'settings.localModel.deviceCapability.disabled': 'Dinonaktifkan',
  'settings.localModel.deviceCapability.disabledDesc': 'Deskripsi dinonaktifkan',
  'settings.localModel.deviceCapability.downloadingModels': '(mengunduh model)',
  'settings.localModel.deviceCapability.downloadingSetupDesc':
    'Mengunduh penginstal OllamaSetup (~2 GB) dan membongkarnya. Ini mungkin memerlukan beberapa waktu pada pemasangan pertama.',
  'settings.localModel.deviceCapability.failedToApplyPreset': 'Gagal menerapkan preset',
  'settings.localModel.deviceCapability.gpu': 'GPU',
  'settings.localModel.deviceCapability.installFailed': 'Instalasi Ollama gagal',
  'settings.localModel.deviceCapability.installFailedDesc':
    'Penginstal keluar sebelum Ollama dapat digunakan. Klik coba ulang, atau instal manual dari ollama.com.',
  'settings.localModel.deviceCapability.installFirst': 'Jalankan Ollama terlebih dahulu.',
  'settings.localModel.deviceCapability.installFirstDesc':
    'Tier lokal bergantung pada endpoint Ollama yang dikelola eksternal. Jalankan sendiri, tarik model yang Anda inginkan, dan tetap gunakan "Disabled (cloud fallback)" hingga runtime dapat dijangkau.',
  'settings.localModel.deviceCapability.installOllamaFirst':
    'Jalankan Ollama terlebih dahulu untuk menggunakan tier ini',
  'settings.localModel.deviceCapability.installingOllama': 'Menginstal Ollama',
  'settings.localModel.deviceCapability.loadingDeviceInfo': 'Memuat info perangkat',
  'settings.localModel.deviceCapability.localAiDisabled':
    'AI lokal dinonaktifkan — menggunakan fallback cloud.',
  'settings.localModel.deviceCapability.modelTier': 'Tingkat Model',
  'settings.localModel.deviceCapability.needsOllama': 'Memerlukan Ollama',
  'settings.localModel.deviceCapability.notDetected': 'Tidak terdeteksi',
  'settings.localModel.deviceCapability.disabledLowercase': 'dinonaktifkan',
  'settings.localModel.deviceCapability.presetDetails':
    'Obrolan: {chatModel} · Penglihatan: {visionModel} · Target RAM: {targetRamGb} GB',
  'settings.localModel.deviceCapability.ram': 'RAM',
  'settings.localModel.deviceCapability.recommended': 'Direkomendasikan',
  'settings.localModel.deviceCapability.retryInstall': 'Mencoba ulang...',
  'settings.localModel.deviceCapability.retrying': 'Mencoba ulang...',
  'settings.localModel.deviceCapability.starting': 'Memulai...',
  'settings.localModel.download.audioPathPlaceholder': 'Path absolut ke file audio',
  'settings.localModel.download.capabilityChat': 'Obrolan',
  'settings.localModel.download.capabilityEmbedding': 'Penyematan',
  'settings.localModel.download.capabilityAssets': 'Aset Kemampuan',
  'settings.localModel.download.capabilityStt': 'STT',
  'settings.localModel.download.capabilityTts': 'TTS',
  'settings.localModel.download.capabilityVision': 'Penglihatan',
  'settings.localModel.download.downloading': 'Mengunduh...',
  'settings.localModel.download.embeddingDimensions': 'Dimensi: {dimensions}',
  'settings.localModel.download.embeddingModel': 'Model: {modelId}',
  'settings.localModel.download.embeddingPlaceholder': 'Satu string input per baris...',
  'settings.localModel.download.embeddingVectors': 'Vektor: {count}',
  'settings.localModel.download.noThinkMode': 'Mode tanpa berpikir',
  'settings.localModel.download.notAvailable': 't/a',
  'settings.localModel.download.promptPlaceholder':
    'Ketik prompt apa saja dan jalankan terhadap model lokal...',
  'settings.localModel.download.quantizationPref': 'Preferensi kuantisasi',
  'settings.localModel.download.runEmbeddingTest': 'Menjalankan...',
  'settings.localModel.download.runPromptTest': 'Jalankan Uji Prompt',
  'settings.localModel.download.runSummaryTest': 'Jalankan Uji Ringkasan',
  'settings.localModel.download.runTranscriptionTest': 'Menjalankan...',
  'settings.localModel.download.runTtsTest': 'Menjalankan...',
  'settings.localModel.download.runVisionTest': 'Menjalankan...',
  'settings.localModel.download.running': 'Menjalankan...',
  'settings.localModel.download.runningPrompt': 'Menjalankan prompt',
  'settings.localModel.download.summaryHelper':
    'Panggilan `openhuman.inference_summarize` melalui Rust core',
  'settings.localModel.download.summarizePlaceholder':
    'Tempel teks untuk diringkas dengan model lokal...',
  'settings.localModel.download.testCustomPrompt': 'Tes Prompt Kustom',
  'settings.localModel.download.testEmbeddings': 'Tes Embedding',
  'settings.localModel.download.testSummarization': 'Tes Ringkasan',
  'settings.localModel.download.testVisionPrompt': 'Tes Prompt Visi',
  'settings.localModel.download.testVoiceInput': 'Tes Input Suara (STT)',
  'settings.localModel.download.testVoiceOutput': 'Tes Output Suara (TTS)',
  'settings.localModel.download.transcript': 'Transkrip:',
  'settings.localModel.download.ttsOutput': 'Keluaran: {outputPath}',
  'settings.localModel.download.ttsOutputPlaceholder': 'Path WAV output opsional',
  'settings.localModel.download.ttsPlaceholder': 'Masukkan teks untuk disintesis...',
  'settings.localModel.download.ttsVoice': 'Suara: {voiceId}',
  'settings.localModel.download.visionImagePlaceholder':
    'Satu referensi gambar per baris (data URI, URL, atau penanda path lokal)',
  'settings.localModel.download.visionPromptPlaceholder': 'Masukkan prompt untuk model visi...',
  'settings.localModel.status.allChecksPassed': 'Semua pemeriksaan berhasil',
  'settings.localModel.status.artifact': 'Artefak',
  'settings.localModel.status.backend': 'Bagian Belakang',
  'settings.localModel.status.binary': 'Biner',
  'settings.localModel.status.bootstrapResume': 'Bootstrap / Lanjutkan',
  'settings.localModel.status.checking': 'Memeriksa...',
  'settings.localModel.status.checkingOllama': 'Memeriksa Ollama',
  'settings.localModel.status.contextBelowMinimumBadge':
    '{contextLength} ctx - di bawah {required} mnt',
  'settings.localModel.status.contextBelowMinimumTitle':
    'Ditolak: jendela konteks {contextLength} token berada di bawah minimum {required}-token yang diperlukan lapisan memori. Penarikan kembali akan dirusak oleh pemotongan diam-diam.',
  'settings.localModel.status.contextOkBadge': '{contextLength} KTX',
  'settings.localModel.status.contextOkTitle':
    'Jendela konteks {contextLength} token memenuhi minimum lapisan memori {required} token.',
  'settings.localModel.status.contextUnknownBadge': 'ctx tidak diketahui',
  'settings.localModel.status.contextUnknownTitle':
    'Jendela konteks tidak diketahui; tidak dapat mengonfirmasi bahwa itu memenuhi minimum lapisan memori {required}-token.',
  'settings.localModel.status.customLocation': 'Lokasi kustom',
  'settings.localModel.status.customLocationDesc': 'Deskripsi lokasi kustom',
  'settings.localModel.status.diagnosticsHint':
    'Klik "Run Diagnostics" untuk memverifikasi Ollama berjalan dan model telah terinstal.',
  'settings.localModel.status.downloadingUnknown': 'Mengunduh (ukuran tidak diketahui)',
  'settings.localModel.status.eta': 'ETA',
  'settings.localModel.status.expectedModels': 'Model yang diharapkan',
  'settings.localModel.status.expectedChat': 'Obrolan: {model}',
  'settings.localModel.status.expectedEmbedding': 'Penyematan: {model}',
  'settings.localModel.status.expectedVision': 'Visi: {model}',
  'settings.localModel.status.externalProcess': 'Proses eksternal',
  'settings.localModel.status.forceRebootstrap': 'Paksa Re-bootstrap',
  'settings.localModel.status.generationTps': 'TPS Generasi',
  'settings.localModel.status.hideErrorDetails': 'Sembunyikan detail error',
  'settings.localModel.status.installManually': 'Instal manual',
  'settings.localModel.status.installManuallyFrom': 'Instal manual dari',
  'settings.localModel.status.installOllama': 'Memulai...',
  'settings.localModel.status.installedModels': 'Model terinstal',
  'settings.localModel.status.installing': 'Menginstal...',
  'settings.localModel.status.installingOllama': 'Menginstal runtime Ollama...',
  'settings.localModel.status.issues': 'Masalah',
  'settings.localModel.status.issuesFound': '{count} masalah ditemukan',
  'settings.localModel.status.lastLatency': 'Latensi Terakhir',
  'settings.localModel.status.model': 'Model AI',
  'settings.localModel.status.notAvailable': 't/a',
  'settings.localModel.status.notFound': 'Tidak ditemukan',
  'settings.localModel.status.notRunning': 'Tidak berjalan',
  'settings.localModel.status.ollamaBinaryPath': 'Path biner Ollama',
  'localModel.ollamaServer.helperText': 'Contoh: http://192.168.1.5:11434',
  'localModel.ollamaServer.label': 'URL Server Ollama',
  'localModel.ollamaServer.modelCount': 'model',
  'localModel.ollamaServer.placeholder': 'http://localhost:11434',
  'localModel.ollamaServer.reachable': 'Dapat Dijangkau',
  'localModel.ollamaServer.resetButton': 'Setel Ulang ke Default',
  'localModel.ollamaServer.saveButton': 'Simpan',
  'localModel.ollamaServer.testButton': 'Uji Koneksi',
  'localModel.ollamaServer.unreachable': 'Tidak Dapat Dijangkau',
  'localModel.ollamaServer.validationError': 'Harus berupa URL http:// atau https:// yang valid',
  'settings.localModel.status.ollamaDiagnostics': 'Diagnostik Ollama',
  'settings.localModel.status.ollamaNotInstalled': 'Runtime Ollama tidak tersedia',
  'settings.localModel.status.ollamaNotInstalledDesc':
    'OpenHuman kini memperlakukan Ollama sebagai runtime inferensi eksternal. Jalankan server Ollama Anda sendiri, tarik model yang diinginkan, lalu arahkan routing workload ke sana.',
  'settings.localModel.status.progress': 'Progres',
  'settings.localModel.status.provider': 'Penyedia',
  'settings.localModel.status.retryBootstrap': 'Coba Ulang Bootstrap',
  'settings.localModel.status.runDiagnostics': 'Memeriksa...',
  'settings.localModel.status.running': 'Berjalan',
  'settings.localModel.status.runningExternalProcess': 'Berjalan via proses eksternal',
  'settings.localModel.status.runtimeStatus': 'Status Runtime',
  'settings.localModel.status.server': 'Server',
  'settings.localModel.status.setPath': 'Mengatur...',
  'settings.localModel.status.setting': 'Mengatur...',
  'settings.localModel.status.showErrorDetails': 'Sembunyikan detail error',
  'settings.localModel.status.showInstallErrorDetails': 'Sembunyikan detail error',
  'settings.localModel.status.suggestedFixes': 'Perbaikan yang disarankan',
  'settings.localModel.status.thenSetPath': 'Lalu atur path',
  'settings.localModel.status.triggering': 'Memicu...',
  'settings.localModel.status.unavailable': 'Tidak tersedia',
  'settings.localModel.status.working': 'Memproses...',
  'settings.developerMenu.ai.title': 'Konfigurasi AI',
  'settings.developerMenu.ai.desc':
    'Penyedia cloud, model Ollama lokal, dan routing per beban kerja',
  'settings.developerMenu.screenAwareness.title': 'Kesadaran Layar',
  'settings.developerMenu.screenAwareness.desc':
    'Izin tangkapan layar, kebijakan pemantauan, dan kontrol sesi',
  'settings.developerMenu.messagingChannels.title': 'Kanal Pesan',
  'settings.developerMenu.messagingChannels.desc':
    'Atur mode autentikasi Telegram/Discord dan routing kanal default',
  'settings.developerMenu.tools.title': 'Alat',
  'settings.developerMenu.tools.desc':
    'Aktifkan atau nonaktifkan kemampuan yang bisa digunakan OpenHuman atas nama Anda',
  'settings.developerMenu.agentChat.title': 'Chat Agen',
  'settings.developerMenu.agentChat.desc':
    'Uji percakapan agen dengan override model dan temperatur',
  'settings.developerMenu.devWorkflow.title': 'Alur Kerja Dev',
  'settings.developerMenu.devWorkflow.desc':
    'Agen Autonomus yang mengambil isu GitHub-mu dan menaikkan PRs sesuai jadwal',
  'settings.developerMenu.devWorkflow.panelDesc':
    'Mengkonfigurasi agen pengembang otonom yang memilih isu GitHub yang ditugaskan kepada Anda dan menaikkan permintaan tarik secara otomatis sesuai jadwal.',
  'settings.developerMenu.skillsRunner.title': 'Pemandu Skill',
  'settings.developerMenu.skillsRunner.desc':
    'Jalankan keterampilan bundled-hoc - mengisi masukan dan api latar belakang otonom run',
  'settings.developerMenu.skillsRunner.panelDesc':
    'Pilih keterampilan bundled, mengisi masukan yang dideklarasikan, dan api-dan-lupa menjalankan latar belakang. Gunakan Dev Workflow sebagai gantinya jika Anda ingin cron- dijadwalkan pekerjaan berulang.',
  'settings.skillsRunner.skill': 'Skill',
  'settings.skillsRunner.selectSkill': 'Pilih keterampilan...',
  'settings.skillsRunner.loadingSkills': 'Memuat keterampilan...',
  'settings.skillsRunner.loadingDescription': 'Memuat masukan keterampilan...',
  'settings.skillsRunner.noInputs': 'Keterampilan ini menyatakan tidak ada masukan.',
  'settings.skillsRunner.placeholder.required': 'required',
  'settings.skillsRunner.runNow': 'Lari sekarang',
  'settings.skillsRunner.starting': 'Mulai...',
  'settings.skillsRunner.started': 'Mulai - jalankan id:',
  'settings.skillsRunner.logPath': 'Log:',
  'settings.skillsRunner.error.listSkills': 'Gagal memuat keterampilan:',
  'settings.skillsRunner.error.describe': 'Gagal memuat masukan:',
  'settings.skillsRunner.error.missingRequired': 'Kehilangan masukan yang diperlukan:',
  'settings.skillsRunner.error.run': 'Jalankan gagal untuk dimulai:',
  'settings.skillsRunner.error.preflightGate': 'Gerbang prapenerbangan gagal',
  'settings.skillsRunner.error.runtimeUnavailable': 'Runtime tidak tersedia',
  'settings.skillsRunner.error.runtimeUnavailableDefault': 'tidak tersedia',
  'settings.skillsRunner.schedule.heading': 'Jadwal (berulang)',
  'settings.skillsRunner.schedule.help':
    'Simpan keterampilan ini + masukan sebagai tugas berulang cron. Agen akan memanggil run-skill di setiap tick.',
  'settings.skillsRunner.schedule.frequency': 'Frekuensi',
  'settings.skillsRunner.schedule.every30min': 'Setiap 30 menit',
  'settings.skillsRunner.schedule.everyHour': 'Setiap jam',
  'settings.skillsRunner.schedule.every2hours': 'Setiap 2 jam',
  'settings.skillsRunner.schedule.every6hours': 'Setiap 6 jam',
  'settings.skillsRunner.schedule.onceDaily': 'Setiap hari (9: 00)',
  'settings.skillsRunner.schedule.save': 'Simpan jadwal',
  'settings.skillsRunner.schedule.saving': 'Menyimpan...',
  'settings.skillsRunner.schedule.saved': 'Jadwal disimpan.',
  'settings.skillsRunner.schedule.error': 'Pengiriman jadwal gagal:',
  'settings.skillsRunner.schedule.loadingJobs': 'Memuat jadwal yang ada...',
  'settings.skillsRunner.schedule.noJobs':
    'Tidak ada jadwal yang disimpan untuk keterampilan ini belum.',
  'settings.skillsRunner.schedule.existing': 'Tugas yang dijadwalkan untuk keterampilan ini:',
  'settings.skillsRunner.schedule.inputsLabel': 'Masukan',
  'settings.skillsRunner.schedule.inputsNone': 'Tidak ada masukan',
  'settings.skillsRunner.schedule.runNow': 'Lari',
  'settings.skillsRunner.schedule.remove': 'Hapus',
  'settings.skillsRunner.scheduleEnabled': 'Diaktifkan',
  'settings.skillsRunner.scheduleDisabled': 'Dijeda',
  'settings.skillsRunner.scheduleToggleAria': 'Jungkitkan jadwal diaktifkan',
  'settings.skillsRunner.schedule.history': 'Riwayat',
  'settings.skillsRunner.schedule.historyLoading': 'Memuat riwayat...',
  'settings.skillsRunner.schedule.historyEmpty': 'Belum ada jadwal untuk ini.',
  'settings.skillsRunner.schedule.historyNoOutput': 'Tidak ada keluaran yang ditangkap.',
  'settings.skillsRunner.schedule.active': 'Aktif',
  'settings.skillsRunner.schedule.lastRunLabel': 'terakhir:',
  'settings.skillsRunner.recentRuns.headingForSkill':
    'Berjalan baru-baru ini untuk keterampilan ini',
  'settings.skillsRunner.recentRuns.headingAll': 'Keterampilan terbaru (semua)',
  'settings.skillsRunner.recentRuns.refresh': 'Segarkan',
  'settings.skillsRunner.recentRuns.loading': 'Memuat run baru-baru ini...',
  'settings.skillsRunner.recentRuns.empty': 'Tidak berjalan baru-baru ini.',
  'settings.skillsRunner.viewer.loading': 'Memuat log...',
  'settings.skillsRunner.viewer.tailing': 'Hidup tailing',
  'settings.skillsRunner.viewer.fetching': 'fetching',
  'settings.skillsRunner.viewer.error': 'Gagal membaca log:',
  'settings.skillsRunner.repoPicker.loading': 'Memuat repositori...',
  'settings.skillsRunner.repoPicker.select': 'Pilih suatu repositori...',
  'settings.skillsRunner.repoPicker.empty':
    'Tidak ada repositori yang dikembalikan. Hubungkan GitHub melalui Composio untuk mengisi daftar ini.',
  'settings.skillsRunner.repoPicker.notConnected':
    'GitHub tidak terhubung melalui Composio. Sambungkan ke Skills Composio dulu.',
  'settings.skillsRunner.repoPicker.privateTag': '(privat)',
  'settings.skillsRunner.branchPicker.needRepo': 'Pilih repo dulu...',
  'settings.skillsRunner.branchPicker.loading': 'Memuat branch...',
  'settings.skillsRunner.branchPicker.select': 'Pilih suatu branch...',
  'settings.devWorkflow.githubRepository': 'Repositori GitHub',
  'settings.devWorkflow.loadingRepositories': 'Memuat repositori...',
  'settings.devWorkflow.selectRepository': 'Pilih suatu repositori',
  'settings.devWorkflow.privateTag': '(privat)',
  'settings.devWorkflow.detectingForkInfo': 'Mendeteksi info garpu...',
  'settings.devWorkflow.forkDetected': 'Fork terdeteksi',
  'settings.devWorkflow.upstream': 'Upstream:',
  'settings.devWorkflow.forkPrNote': 'PRS akan diangkat melawan repositori hulu.',
  'settings.devWorkflow.notForkNote':
    'Bukan garpu. PRs akan diangkat terhadap repositori ini secara langsung.',
  'settings.devWorkflow.targetBranch': 'Branch Target',
  'settings.devWorkflow.targetBranchNote': 'PRS akan diangkat melawan cabang ini',
  'settings.devWorkflow.loadingBranches': 'Memuat branch...',
  'settings.devWorkflow.runFrequency': 'Jalankan Frekuensi',
  'settings.devWorkflow.runFrequencyNote':
    'Seberapa sering agen harus memeriksa masalah dan meningkatkan PRS.',
  'settings.devWorkflow.updateConfiguration': 'Mutakhirkan Konfigurasi',
  'settings.devWorkflow.saveConfiguration': 'Simpan Konfigurasi',
  'settings.devWorkflow.remove': 'Hapus',
  'settings.devWorkflow.saved': 'Tersimpan',
  'settings.devWorkflow.activeConfiguration': 'Konfigurasi Aktif',
  'settings.devWorkflow.activeConfigRepository': 'Repositori:',
  'settings.devWorkflow.activeConfigUpstream': 'Upstream:',
  'settings.devWorkflow.activeConfigTargetBranch': 'Branch target:',
  'settings.devWorkflow.activeConfigSchedule': 'Jadwal:',
  'settings.devWorkflow.enabled': 'Diaktifkan',
  'settings.devWorkflow.paused': 'Dijeda',
  'settings.devWorkflow.nextRun': 'Jalankan berikutnya',
  'settings.devWorkflow.lastRun': 'Terakhir berjalan',
  'settings.devWorkflow.runNow': 'Lari sekarang',
  'settings.devWorkflow.running': 'Berjalan...',
  'settings.devWorkflow.recentRuns': 'Berjalan terkini',
  'settings.devWorkflow.cronSaveError': 'Gagal menyimpan konfigurasi',
  'settings.devWorkflow.lastOutput': 'Keluaran terakhir',
  'settings.devWorkflow.noOutput': 'Tak ada keluaran yang ditangkap',
  'settings.devWorkflow.runningStatus':
    'Agen berjalan - memilih masalah dan bekerja pada memperbaiki...',
  'settings.devWorkflow.errorNotConnected':
    'GitHub tidak terhubung. Mohon hubungkan GitHub melalui Settings > Advanced > Composio pertama.',
  'settings.devWorkflow.errorToolNotEnabled':
    'Alat GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER tidak diaktifkan di backend ini. Mohon minta admin Anda untuk mengaktifkannya dalam integrasi Composio (backend#842).',
  'settings.devWorkflow.errorNotAuthenticated': 'Tidak dikonfirmasi. Silakan masuk dulu.',
  'settings.devWorkflow.errorNoRepositories':
    'Tidak ada repositori yang ditemukan untuk akun GitHub ini.',
  'settings.devWorkflow.schedule.every30min': 'Setiap 30 menit',
  'settings.devWorkflow.schedule.everyHour': 'Setiap jam',
  'settings.devWorkflow.schedule.every2hours': 'Setiap 2 jam',
  'settings.devWorkflow.schedule.every6hours': 'Setiap 6 jam',
  'settings.devWorkflow.schedule.onceDaily': 'Setiap hari (jam 9 pagi)',
  'settings.developerMenu.tasks.title': 'Tugas',
  'settings.developerMenu.tasks.desc':
    'Jelajahi dan kelola papan tugas — daftar tugas Anda sendiri serta papan yang dibuat agen di seluruh percakapan.',
  'settings.developerMenu.cronJobs.title': 'Pekerjaan Cron',
  'settings.developerMenu.cronJobs.desc': 'Lihat dan atur pekerjaan terjadwal untuk skill runtime',
  'settings.developerMenu.localModelDebug.title': 'Debug Model Lokal',
  'settings.developerMenu.localModelDebug.desc':
    'Konfigurasi Ollama, unduhan aset, pengujian model, dan diagnostik',
  'settings.developerMenu.webhooks.title': 'Webhook',
  'settings.developerMenu.webhooks.desc':
    'Periksa pendaftaran webhook runtime dan log permintaan yang tertangkap',
  'settings.developerMenu.eventLog.title': 'Log Peristiwa',
  'settings.developerMenu.eventLog.desc':
    'Siaran warna langsung dari semua agen, alat, dan peristiwa sistem',
  'settings.developerMenu.eventLog.allTypes': 'Semua jenis',
  'settings.developerMenu.eventLog.filterAgent': 'Filter...',
  'settings.developerMenu.eventLog.download': 'Unduh',
  'settings.developerMenu.eventLog.events': 'events',
  'settings.developerMenu.eventLog.live': 'Live',
  'settings.developerMenu.eventLog.disconnected': 'Terputus',
  'settings.developerMenu.eventLog.waiting': 'Menunggu peristiwa...',
  'settings.developerMenu.eventLog.notConnected': 'Tidak terhubung ke inti',
  'settings.developerMenu.eventLog.jumpToLatest': 'Lompat ke terbaru',
  'settings.developerMenu.eventLog.badge.tool': 'TOOL',
  'settings.developerMenu.eventLog.badge.agent': 'AGENT',
  'settings.developerMenu.eventLog.badge.info': 'INFO',
  'settings.developerMenu.eventLog.badge.mem': 'MEM',
  'settings.developerMenu.eventLog.badge.chan': 'CHAN',
  'settings.developerMenu.eventLog.badge.cron': 'CRON',
  'settings.developerMenu.eventLog.badge.hook': 'HOOK',
  'settings.developerMenu.eventLog.badge.warn': 'WARN',
  'settings.developerMenu.eventLog.badge.skill': 'SKILL',
  'settings.developerMenu.eventLog.badge.comp': 'COMP',
  'settings.developerMenu.eventLog.badge.mcp': 'MCP',
  'settings.developerMenu.intelligence.title': 'Kecerdasan',
  'settings.developerMenu.intelligence.desc':
    'Ruang kerja memori, mesin bawah sadar, mimpi, dan pengaturan',
  'settings.developerMenu.notificationRouting.title': 'Routing Notifikasi',
  'settings.developerMenu.notificationRouting.desc':
    'Penilaian kepentingan AI dan eskalasi orkestrator untuk peringatan integrasi',
  'settings.developerMenu.composeioTriggers.title': 'Pemicu ComposeIO',
  'settings.developerMenu.composeioTriggers.desc': 'Lihat riwayat pemicu ComposeIO dan arsip',
  'settings.developerMenu.composioRouting.title': 'Routing Composio (Mode Langsung)',
  'settings.developerMenu.composioRouting.desc':
    'Gunakan kunci API Composio Anda sendiri dan rutekan panggilan langsung ke backend.composio.dev',
  'settings.developerMenu.integrationTriggers.title': 'Pemicu Integrasi',
  'settings.developerMenu.integrationTriggers.desc':
    'Atur pengaturan triase AI untuk pemicu integrasi Composio',
  'settings.developerMenu.mcpServer.title': 'Server MCP',
  'settings.developerMenu.mcpServer.desc':
    'Konfigurasikan klien MCP eksternal untuk terhubung ke OpenHuman',
  'settings.developerMenu.autonomy.title': 'Otonomi agen',
  'settings.developerMenu.autonomy.desc': 'Batas laju aksi alat dan ambang keamanan',
  'settings.developerMenu.autocomplete.title': 'Pelengkap otomatis',
  'settings.developerMenu.autocomplete.desc':
    'Pengaturan pelengkap otomatis AI inline dan panel debug',
  'settings.developerMenu.voiceDebug.title': 'Suara (debug)',
  'settings.developerMenu.voiceDebug.desc': 'Status runtime dikte suara dan pengaturan debug',
  'settings.mcpServer.title': 'Server MCP',
  'settings.mcpServer.toolsSectionTitle': 'Alat yang tersedia',
  'settings.mcpServer.toolsSectionDesc':
    'Alat yang diekspos melalui server stdio MCP saat menjalankan openhuman-core mcp',
  'settings.mcpServer.configSectionTitle': 'Konfigurasi Klien',
  'settings.mcpServer.configSectionDesc':
    'Pilih klien MCP Anda untuk membuat cuplikan konfigurasi yang tepat',
  'settings.mcpServer.copySnippet': 'Salin ke Clipboard',
  'settings.mcpServer.copied': 'Tersalin!',
  'settings.mcpServer.openConfigFile': 'Buka File Konfigurasi',
  'settings.mcpServer.binaryPathNotFound':
    'Binary OpenHuman tidak ditemukan. Jika menjalankan dari source, build dengan: cargo build --bin openhuman-core',
  'settings.mcpServer.openConfigError': 'Gagal membuka file konfigurasi',
  'settings.mcpServer.clientClaudeDesktop': 'Claude Desktop',
  'settings.mcpServer.clientCursor': 'Kursor',
  'settings.mcpServer.clientCodex': 'Codex',
  'settings.mcpServer.clientZed': 'Zed',
  'settings.mcpServer.configFilePath': 'File konfigurasi',
  'settings.mcpServer.clientSelectorAriaLabel': 'Pemilih klien MCP',
  'settings.appearance.menuDesc': 'Pilih terang, gelap, atau ikuti tema sistem',
  'settings.agentAccess.title': 'Agen OS akses',
  'settings.agentAccess.menuDesc':
    'Kontrol di mana agen dapat read/write dan apakah dapat menggunakan shell.',
  'settings.agentAccess.loadError': 'Gagal memuat pengaturan akses',
  'settings.agentAccess.saveError': 'Gagal menyimpan pengaturan akses',
  'settings.agentAccess.saved': 'Tersimpan - berlaku pada pesan berikutnya.',
  'settings.agentAccess.desktopOnly': 'Pengaturan akses hanya tersedia pada aplikasi desktop.',
  'settings.agentAccess.loading': 'Memuat…',
  'settings.agentAccess.accessMode': 'Mode akses',
  'settings.agentAccess.tier.readonly.title': 'Baca saja',
  'settings.agentAccess.tier.readonly.desc':
    'Baca berkas dan jalankan baca-saja perintah untuk dieksplorasi - tetapi tidak pernah menulis, edits, atau menjalankan apapun yang mengubah keadaan.',
  'settings.agentAccess.tier.supervised.title': 'Tanyakan sebelum menyunting',
  'settings.agentAccess.tier.supervised.desc':
    'Membuat berkas baru dengan bebas, tapi meminta persetujuan Anda sebelum menyunting berkas yang ada, menjalankan perintah, mencapai jaringan, atau memasang apapun.',
  'settings.agentAccess.tier.full.title': 'Akses penuh',
  'settings.agentAccess.tier.full.desc':
    'Menjalankan perintah dengan akses penuh akun pengguna Anda - dapat read/write di mana saja diperbolehkan, kecuali kredensial dan sistem toko. Perintah penghancuran, akses jaringan, dan instalasi masih meminta persetujuan.',
  'settings.agentAccess.defaultTag': '(bawaan)',
  'settings.agentAccess.fullWarning':
    'Akses penuh menjalankan perintah dengan akses penuh akun Anda dan tidak sandboxed. Hanya mengaktifkannya ketika Anda mempercayai agen dengan mesin ini. Direktori kredensial dan sistem tetap diblokir, dan destruktif, jaringan, dan aksi instalasi masih meminta persetujuan.',
  'settings.agentAccess.confine.label': 'Confine ke area kerja',
  'settings.agentAccess.confine.desc':
    'Batasi agen ke direktori area kerja (ditambah folder yang diberikan), modus akses mana yang dipilih. Ketika mati, dapat mencapai mana saja pengguna dapat - kecuali selalu-diblokir kredensial dan sistem direktori.',
  'settings.agentAccess.requireTaskPlanApproval.label': 'Perlu persetujuan rencana tugas',
  'settings.agentAccess.requireTaskPlanApproval.desc':
    'Jeda sebelum agen yang ditugaskan mengeksekusi suatu tugas singkat.',
  'settings.agentAccess.tinyplaceAutopilot.title': 'Agen tiny.place otonom',
  'settings.agentAccess.tinyplaceAutopilot.desc':
    'Biarkan OpenHuman bertindak di tiny.place sendiri: secara terjadwal ia mencari pekerjaan yang berharga — bounty terbuka lebih dulu —, mengerjakan yang sesuai keahliannya, dan bertindak dari identitas Anda. Ia berjalan tanpa pengawasan dan dapat membelanjakan dana, jadi gunakan devnet saat menguji. Nonaktif secara bawaan.',
  'settings.agentAccess.tinyplaceAutopilot.label': 'Jalankan otomatis',
  'settings.agentAccess.timeout.label': 'Batas waktu tindakan',
  'settings.agentAccess.timeout.desc':
    'Berapa lama satu alat atau tindakan boleh berjalan sebelum dibatalkan. Tingkatkan nilai ini jika model lokal besar terhenti sebelum selesai merespons.',
  'settings.agentAccess.timeout.unit': 'detik',
  'settings.agentAccess.timeout.invalid':
    'Masukkan bilangan bulat detik dalam rentang yang diizinkan',
  'settings.agentAccess.timeout.envOverride':
    'Variabel lingkungan OPENHUMAN_TOOL_TIMEOUT_SECS menggantikan pengaturan ini, sehingga perubahan di sini tidak berpengaruh hingga variabel tersebut dihapus.',
  'settings.agentAccess.grantedFolders': 'Folder yang diberikan',
  'settings.agentAccess.alwaysAllow': 'Selalu-diperbolehkan alat',
  'settings.agentAccess.alwaysAllowDesc':
    'Perkakas yang Anda tandai "Always allow" dalam run percakapan tanpa bertanya. Hapus satu yang akan diminta lagi.',
  'settings.agentAccess.alwaysAllowNone': 'Belum ada alat yang diperbolehkan.',
  'settings.agentAccess.grantedDesc':
    'Folder agen dapat membaca dan menulis, selain ke ruang kerja. Toko Credential (~/.ssh, ~/.gnupg, ~/.aws,) dan direktori kunci sistem (/etc, /System,:\\ Windows,...) selalu diblokir, bahkan di dalam folder yang diberikan.',
  'settings.agentAccess.noneGranted': 'Tidak ada folder yang diberikan.',
  'settings.agentAccess.readWrite': 'baca + tulis',
  'settings.agentAccess.readOnly': 'read-only',
  'settings.agentAccess.remove': 'Hapus',
  'settings.agentAccess.pathPlaceholder': 'Jalur folder absolut',
  'settings.agentAccess.accessLevelLabel': 'Aras akses',
  'settings.agentAccess.add': 'Tambah',
  'settings.agentAccess.saving': 'Menyimpan...',
  'settings.agentAccess.changesApply': 'Perubahan pada pesan berikutnya.',
  'settings.agentAccess.directories': 'Direktori',
  'settings.agentAccess.actionSandbox': 'Sandbox aksi',
  'settings.agentAccess.readWriteAccess': 'baca + tulis',
  'settings.agentAccess.actionSandboxDesc':
    'Direktori kerja default untuk alat shell, file, dan git.',
  'settings.agentAccess.actionDir.edit': 'Edit',
  'settings.agentAccess.actionDir.save': 'Simpan',
  'settings.agentAccess.actionDir.cancel': 'Batal',
  'settings.agentAccess.actionDir.placeholder': 'Jalur absolut, mis. /Users/you/Projects',
  'settings.agentAccess.actionDir.envLocked':
    'Disetel oleh OPENHUMAN_ACTION_DIR. Ubah variabel lingkungan untuk menggantinya.',
  'settings.agentAccess.actionDir.saved': 'Direktori aksi diperbarui.',
  'settings.agentAccess.internalState': 'Status internal',
  'settings.agentAccess.agentBlocked': 'diblokir untuk agen',
  'settings.agentAccess.internalStateDesc':
    'Database memori, sesi, token, dan data inti lainnya. Tidak dapat diakses oleh alat agen.',
  'settings.agentAccess.actionDirInputLabel': 'Jalur sandbox tindakan',
  'settings.agentAccess.actionDirSave': 'Simpan',
  'settings.agentAccess.actionDirSaving': 'Menyimpan…',
  'settings.agentAccess.actionDirSaved': 'Sandbox tindakan diperbarui.',
  'settings.agentAccess.actionDirEmptyError': 'Jalur tidak boleh kosong.',
  'settings.agentAccess.actionDirSaveError': 'Tidak dapat memperbarui sandbox tindakan.',
  'settings.agentAccess.actionDirEnvOverrideError':
    'OPENHUMAN_ACTION_DIR sudah diatur — hapus variabel env untuk mengedit ini dari Pengaturan.',
  'settings.agentAccess.actionDirEnvOverrideNote':
    'Ditimpa oleh OPENHUMAN_ACTION_DIR — hapus variabel env untuk mengelola dari Pengaturan.',
  'settings.agentAccess.approvalHistory': 'Riwayat persetujuan',
  'settings.agentAccess.approvalHistoryDesc':
    'Tinjau keputusan Setuju / Tolak yang diminta oleh agen sebelumnya.',
  'settings.agentAccess.viewApprovalHistory': 'Lihat riwayat persetujuan',

  // ── Panel Izin ────────────────────────────────────────────────────
  'settings.permissions.title': 'Izin',
  'settings.permissions.menuDesc':
    'Pilih apa yang dapat dilakukan asisten Anda dan di mana ia dapat bekerja.',
  'settings.permissions.accessMode': 'Apa yang bisa dilakukan asisten?',
  'settings.permissions.accessModeDesc':
    'Pilih seberapa banyak kebebasan yang dimiliki asisten saat mengambil tindakan di komputer Anda.',
  'settings.permissions.preset.readonly.title': 'Lihat, jangan sentuh',
  'settings.permissions.preset.readonly.desc':
    'Asisten dapat membaca file dan menjelajah — tetapi tidak pernah menulis, mengedit, atau menjalankan apa pun yang mengubah status.',
  'settings.permissions.preset.supervised.title': 'Tanya saya dulu',
  'settings.permissions.preset.supervised.desc':
    'Dapat membuat file baru secara bebas, tetapi selalu meminta persetujuan Anda sebelum mengedit, menjalankan perintah, atau mengakses jaringan.',
  'settings.permissions.preset.full.title': 'Kontrol penuh',
  'settings.permissions.preset.full.desc':
    'Berjalan dengan akses akun penuh Anda. Perintah destruktif, akses jaringan, dan instalasi masih meminta persetujuan.',
  'settings.permissions.folders': 'Di mana bisa bekerja?',
  'settings.permissions.foldersDesc':
    'Folder default yang dibaca dan ditulis asisten. Anda dapat menambahkan folder lain di pengaturan Lanjutan.',

  'settings.meetings.title': 'Rapat',
  'settings.meetings.menuDesc': 'Gabung otomatis, ringkasan, dan transkrip Asisten Rapat',
  'settings.meetings.desktopOnly': 'Pengaturan rapat hanya tersedia di desktop.',
  'settings.meetings.loading': 'Memuat…',
  'settings.meetings.loadError': 'Gagal memuat pengaturan rapat.',
  'settings.meetings.saveError': 'Gagal menyimpan pengaturan rapat.',
  'settings.meetings.saved': 'Tersimpan',
  'settings.meetings.saving': 'Menyimpan…',
  'settings.meetings.autoJoin.title': 'Kebijakan gabung otomatis',
  'settings.meetings.autoJoin.desc': 'Saat acara kalender memiliki tautan Google Meet',
  'settings.meetings.autoJoin.askEachTime': 'Tanya setiap kali',
  'settings.meetings.autoJoin.always': 'Selalu gabung',
  'settings.meetings.autoJoin.never': 'Jangan pernah gabung',
  'settings.meetings.autoSummarize.title': 'Ringkasan setelah panggilan',
  'settings.meetings.autoSummarize.desc': 'Buat ringkasan setelah panggilan berakhir',
  'settings.meetings.autoSummarize.ask': 'Tanya setelah panggilan',
  'settings.meetings.autoSummarize.always': 'Selalu ringkas',
  'settings.meetings.autoSummarize.never': 'Jangan pernah ringkas',
  'settings.meetings.listenOnly': 'Mode hanya mendengarkan',
  'settings.meetings.listenOnlyDesc': 'Gabung dengan mikrofon dimatikan',
  'settings.meetings.ingestTranscripts': 'Serap transkrip backend',
  'settings.meetings.ingestTranscriptsDesc': 'Simpan transkrip rapat di memori',
  'settings.sandbox.title': 'Eksekusi sandbox',
  'settings.sandbox.menuDesc': 'Konfigurasikan backend sandbox untuk isolasi alat agen.',
  'settings.sandbox.loading': 'Memuat…',
  'settings.sandbox.desktopOnly': 'Pengaturan sandbox hanya tersedia di aplikasi desktop.',
  'settings.sandbox.loadError': 'Gagal memuat pengaturan sandbox.',
  'settings.sandbox.saveError': 'Gagal menyimpan pengaturan sandbox.',
  'settings.sandbox.saved': 'Tersimpan — berlaku untuk sesi agen baru.',
  'settings.sandbox.saving': 'Menyimpan…',
  'settings.sandbox.status': 'Status',
  'settings.sandbox.dockerStatus': 'Docker',
  'settings.sandbox.available': 'Tersedia',
  'settings.sandbox.unavailable': 'Tidak tersedia',
  'settings.sandbox.detectedBackend': 'Backend OS',
  'settings.sandbox.enableLabel': 'Aktifkan eksekusi sandbox',
  'settings.sandbox.enableDesc': 'Jalankan alat agen di dalam lingkungan sandbox yang terisolasi.',
  'settings.sandbox.backendLabel': 'Backend',
  'settings.sandbox.backendDesc':
    'Pilih backend isolasi yang akan digunakan untuk eksekusi sandbox.',
  'settings.sandbox.backend.auto': 'Otomatis (deteksi yang terbaik tersedia)',
  'settings.sandbox.backend.docker': 'Docker',
  'settings.sandbox.backend.landlock': 'Landlock (Linux)',
  'settings.sandbox.backend.firejail': 'Firejail (Linux)',
  'settings.sandbox.backend.bubblewrap': 'Bubblewrap (Linux)',
  'settings.sandbox.backend.none': 'Tidak ada (tanpa sandbox)',
  'settings.sandbox.dockerSettings': 'Pengaturan Docker',
  'settings.sandbox.dockerImage': 'Gambar',
  'settings.sandbox.dockerImagePlaceholder': 'alpine:3.20',
  'settings.sandbox.memoryLimit': 'Batas memori',
  'settings.sandbox.memoryUnit': 'MB',
  'settings.sandbox.cpuLimit': 'Batas CPU',
  'settings.sandbox.cpuUnit': 'inti',
  'settings.sandbox.envPassthrough': 'Terusan variabel lingkungan',
  'settings.sandbox.envPassthroughDesc': 'Variabel lingkungan yang diteruskan ke dalam sandbox.',
  'settings.sandbox.noEnvVars': 'Tidak ada variabel lingkungan yang dikonfigurasi.',
  'settings.approvalHistory.title': 'Riwayat persetujuan',
  'settings.approvalHistory.subtitle': 'Keputusan persetujuan alat terbaru, terbaru lebih dulu.',
  'settings.approvalHistory.refresh': 'Segarkan',
  'settings.approvalHistory.loading': 'Memuat riwayat persetujuan…',
  'settings.approvalHistory.retry': 'Coba lagi',
  'settings.approvalHistory.emptyState': 'Belum ada keputusan persetujuan yang tercatat.',
  'settings.approvalHistory.errorGeneric': 'Tidak dapat memuat riwayat persetujuan. Coba lagi.',
  'settings.approvalHistory.decidedAt': 'Diputuskan {date}',
  'settings.approvalHistory.decision.approveOnce': 'Disetujui sekali',
  'settings.approvalHistory.decision.approveAlways': 'Selalu diizinkan',
  'settings.approvalHistory.decision.deny': 'Denied',
  'settings.theme.variantLight': 'Terang',
  'settings.theme.variantDark': 'Gelap',
  'settings.theme.variantAuto': 'Otomatis',
  'settings.theme.variantAria': 'Varian tema',
  'settings.theme.backdropHeading': 'Latar belakang',
  'settings.theme.backdrop.mesh': 'Jaring',
  'settings.theme.backdrop.solid': 'Solid',
  'settings.theme.backdrop.image': 'Gambar',
  'settings.theme.backdropImageUrl': 'URL gambar latar belakang',
  'settings.theme.backdropDots': 'Tampilkan titik latar belakang',
  'settings.theme.backdropHint':
    'Jaring menampilkan gradien beranimasi; Solid menggunakan latar belakang polos; Gambar menampilkan milik Anda sendiri.',
  'settings.theme.autoForkHint':
    'Mengedit preset secara otomatis menyimpan perubahan Anda sebagai tema kustom baru.',
  'settings.theme.title': 'Studio Tema',
  'settings.theme.menuDesc': 'Sesuaikan warna dan font sepenuhnya, atau pilih tema bawaan.',
  'settings.theme.presetsHeading': 'Tema',
  'settings.theme.builtInBadge': 'Bawaan',
  'settings.theme.customBadge': 'Khusus',
  'settings.theme.customizeHint':
    'Tema bawaan hanya dapat dibaca. Duplikasi tema ini untuk mengubah warna dan fontnya.',
  'settings.theme.duplicate': 'Duplikasi & sesuaikan',
  'settings.theme.copyName': '{name} (khusus)',
  'settings.theme.importedName': 'Tema yang diimpor',
  'settings.theme.contrastWarn':
    'Kontras rendah antara teks dan latar belakang — tema ini mungkin sulit dibaca.',
  'settings.theme.group.surfaces': 'Permukaan',
  'settings.theme.group.text': 'Teks',
  'settings.theme.group.borders': 'Batas',
  'settings.theme.group.accents': 'Warna aksen',
  'settings.theme.showShades': 'Tampilkan semua corak aksen',
  'settings.theme.hideShades': 'Sembunyikan semua corak aksen',
  'settings.theme.fontsHeading': 'Font',
  'settings.theme.fontRole.title': 'Judul',
  'settings.theme.fontRole.heading': 'Tajuk',
  'settings.theme.fontRole.body': 'Isi',
  'settings.theme.fontRole.mono': 'Monospasi',
  'settings.theme.fontRole.serif': 'Serif',
  'settings.theme.fontCurrent': 'Saat ini',
  'settings.theme.actions': 'Kelola tema',
  'settings.theme.reset': 'Setel ulang penggantian',
  'settings.theme.delete': 'Hapus tema',
  'settings.theme.export': 'Salin JSON',
  'settings.theme.copied': 'Tersalin!',
  'settings.theme.import': 'Impor tema',
  'settings.theme.importHint':
    'Tempel JSON tema yang diekspor untuk menambahkannya sebagai tema khusus.',
  'settings.theme.importApply': 'Impor',
  'settings.theme.importError': 'Tidak dapat mengurai JSON tema tersebut.',
  'settings.appearance.title': 'Tampilan',
  'settings.appearance.themeHeading': 'Tema',
  'settings.appearance.themeAria': 'Tema',
  'settings.appearance.modeLight': 'Terang',
  'settings.appearance.modeLightDesc': 'Permukaan terang, teks gelap.',
  'settings.appearance.modeDark': 'Gelap',
  'settings.appearance.modeDarkDesc': 'Permukaan redup, lebih nyaman untuk malam hari.',
  'settings.appearance.modeSystem': 'Ikuti sistem',
  'settings.appearance.modeSystemDesc': 'Ikuti pengaturan tampilan OS Anda.',
  'settings.appearance.helperText':
    'Mode gelap mengubah seluruh aplikasi - obrolan, pengaturan, dan panel - ke palet redup. "Ikuti sistem" mengikuti tampilan OS Anda dan diperbarui otomatis.',
  'settings.appearance.fontSizeHeading': 'Ukuran font',
  'settings.appearance.fontSizeAria': 'Ukuran font',
  'settings.appearance.fontSizeSmall': 'Kecil',
  'settings.appearance.fontSizeSmallDesc': 'Teks ringkas — tampilkan lebih banyak di layar.',
  'settings.appearance.fontSizeMedium': 'Sedang',
  'settings.appearance.fontSizeMediumDesc': 'Ukuran default yang seimbang.',
  'settings.appearance.fontSizeLarge': 'Besar',
  'settings.appearance.fontSizeLargeDesc': 'Teks lebih besar agar lebih mudah dibaca.',
  'settings.appearance.fontSizeXLarge': 'Sangat besar',
  'settings.appearance.fontSizeXLargeDesc': 'Teks terbesar untuk keterbacaan maksimal.',
  'settings.appearance.fontSizeHelperText':
    'Menskalakan teks di seluruh aplikasi — obrolan, pengaturan, dan panel — terlepas dari pengaturan font sistem Anda.',
  'settings.appearance.tabBarHeading': 'Bilah tab bawah',
  'settings.appearance.tabBarAlwaysShowLabels': 'Selalu tampilkan label',
  'settings.appearance.tabBarAlwaysShowLabelsDesc':
    'Saat nonaktif, label hanya muncul saat diarahkan atau untuk tab yang aktif.',
  'settings.appearance.chatHeading': 'Chat',
  'settings.appearance.assistantTextMode': 'Respons asisten sebagai teks',
  'settings.appearance.hideAgentInsights': 'Sembunyikan proses berpikir agen',
  'settings.appearance.hideAgentInsightsDesc':
    'Ciutkan lini masa langkah demi langkah agen secara langsung di obrolan. Tautan "Memproses" yang berkedip tetap memungkinkan Anda membuka proses lengkapnya.',
  'settings.appearance.assistantTextModeDesc':
    'Tampilkan balasan asisten sebagai teks tanpa bingkai, sementara pesan Anda tetap dalam gelembung.',
  'settings.mascot.active': 'Aktif',
  'settings.mascot.characterDesc': 'Deskripsi karakter',
  'settings.mascot.characterDraft': 'Draf',
  'settings.mascot.characterHeading': 'Judul karakter',
  'settings.mascot.customGifError':
    'Masukkan HTTPS .gif URL, loopback HTTP .gif URL, file:// .gif URL, atau jalur .gif lokal.',
  'settings.mascot.customGifHeading': 'Avatar GIF khusus',
  'settings.mascot.customGifLabel': 'Avatar GIF khusus URL',
  'settings.mascot.customGifPlaceholder': 'https://example.com/avatar.gif',
  'settings.mascot.characterPreview': 'Pratinjau',
  'settings.mascot.characterStates': 'status',
  'settings.mascot.characterVisemes': 'visem',
  'settings.mascot.colorAria': 'Warna OpenHuman',
  'settings.mascot.colorDesc': 'Deskripsi warna',
  'settings.mascot.colorHeading': 'Judul warna',
  'settings.mascot.colorBlack': 'Hitam',
  'settings.mascot.colorBurgundy': 'Burgundi',
  'settings.mascot.colorCustom': 'Kustom',
  'settings.mascot.colorNavy': 'Biru tua',
  'settings.mascot.primaryColor': 'Warna primer',
  'settings.mascot.secondaryColor': 'Warna sekunder',
  'settings.mascot.colorYellow': 'Kuning',
  'settings.mascot.libraryUnavailable': 'Library OpenHuman tidak tersedia',
  'settings.mascot.title': 'OpenHuman',
  'settings.mascot.loadingLibrary': 'Memuat perpustakaan OpenHuman...',
  'settings.mascot.loadDetailError': 'Tidak dapat memuat maskot.',
  'settings.mascot.loadLibraryError': 'Tidak dapat memuat perpustakaan maskot.',
  'settings.mascot.localDefault': 'OpenHuman Lokal (default)',
  'settings.mascot.menuTitle': 'Maskot',
  'settings.mascot.menuDesc': 'Pilih warna maskot yang digunakan di seluruh aplikasi',
  'settings.mascot.noCharacters': 'Belum ada karakter OpenHuman yang tersedia',
  'settings.mascot.noColorVariants': 'Tidak ada varian warna',
  'settings.mascot.voice.current': 'saat ini',
  'settings.mascot.voice.customDesc':
    'Temukan ID suara di api.elevenlabs.io/v1/voices atau dasbor ElevenLabs Anda. Hanya ID yang disimpan — kunci API Anda tetap di backend.',
  'settings.mascot.voice.customHeading': 'ID suara kustom',
  'settings.mascot.voice.customOption': 'Lainnya (tempel ID suara)…',
  'settings.mascot.voice.customPlaceholder': 'mis. 21m00Tcm4TlvDq8ikWAM',
  'settings.mascot.voice.desc':
    'Pilih suara ElevenLabs yang digunakan maskot untuk balasan lisan. Filter berdasarkan jenis kelamin, pilih dari daftar pilihan, tempel ID kustom, atau biarkan aplikasi memilih suara yang sesuai dengan bahasa antarmuka.',
  'settings.mascot.voice.genderFemale': 'Wanita',
  'settings.mascot.voice.genderHeading': 'Jenis kelamin suara',
  'settings.mascot.voice.genderMale': 'Pria',
  'settings.mascot.voice.heading': 'Suara',
  'settings.mascot.voice.preset': 'Pratinjau suara',
  'settings.mascot.voice.presetHeading': 'Pratinjau suara',
  'settings.mascot.voice.preview': 'Pratinjau suara',
  'settings.mascot.voice.previewError': 'Pratinjau suara gagal',
  'settings.mascot.voice.previewText': 'Halo, saya asisten Anda. Ini adalah pratinjau suara.',
  'settings.mascot.voice.previewing': 'Memuat pratinjau…',
  'settings.mascot.voice.reset': 'Atur ulang ke default',
  'settings.mascot.voice.useLocaleDefault': 'Cocokkan bahasa aplikasi',
  'settings.mascot.voice.useLocaleDefaultDesc':
    'Pilih otomatis suara untuk bahasa antarmuka saat ini.',
  'settings.persona.title': 'Persona',
  'settings.persona.menuTitle': 'Persona',
  'settings.persona.menuDesc':
    'Nama, kepribadian, avatar, dan suara - asisten Anda sebagai satu identitas',
  'settings.persona.identityHeading': 'Identitas',
  'settings.persona.identityDesc':
    'Sebuah nama tampilan dan deskripsi pendek untuk asisten Anda. Shown dalam aplikasi; tidak mengubah bagaimana asisten alasan.',
  'settings.persona.displayNameLabel': 'Tampilkan nama',
  'settings.persona.displayNamePlaceholder': 'Nova.',
  'settings.persona.descriptionLabel': 'Deskripsi',
  'settings.persona.descriptionPlaceholder': 'Misalnya A tenang, asisten ringkas untuk tim saya.',
  'settings.persona.soul.heading': 'Kepribadian (SOUL.md)',
  'settings.persona.soul.desc':
    'Kepribadian mendorong asisten mengikuti setiap percakapan. Tilikan disimpan ke area kerja Anda dan ambil efek pada jawaban berikutnya.',
  'settings.persona.soul.editorLabel': 'Isi SOUL.md',
  'settings.persona.soul.reset': 'Atur ulang ke default',
  'settings.persona.soul.usingDefault': 'Menggunakan baku bundled',
  'settings.persona.soul.loadError': 'Tidak dapat memuat SOUL.md',
  'settings.persona.soul.saveError': 'Tidak dapat menyimpan SOUL.md',
  'settings.persona.soul.resetError': 'Tidak dapat mereset SOUL.md',
  'settings.persona.appearanceHeading': 'Avatar & Suara',
  'settings.persona.appearanceDesc':
    'Warna Mascot, avatar GIF kustom, dan suara balasan dikonfigurasi dalam pengaturan Mascot.',
  'settings.persona.openMascotSettings': 'Buka pengaturan Mascot',
  'settings.memoryWindow.balanced.badge': 'Direkomendasikan',
  'settings.memoryWindow.balanced.hint':
    'Default yang masuk akal — kontinuitas yang baik tanpa membakar token tambahan di setiap run.',
  'settings.memoryWindow.balanced.label': 'Seimbang',
  'settings.memoryWindow.description':
    'Seberapa banyak konteks yang diingat OpenHuman dimasukkan ke setiap run agen baru. Jendela yang lebih besar terasa lebih sadar akan percakapan sebelumnya, tetapi menggunakan lebih banyak token — dan biaya lebih mahal — di setiap run.',
  'settings.memoryWindow.extended.badge': 'Lebih banyak konteks',
  'settings.memoryWindow.extended.hint':
    'Lebih banyak memori jangka panjang yang dimasukkan ke setiap run. Biaya token per giliran lebih tinggi.',
  'settings.memoryWindow.extended.label': 'Diperluas',
  'settings.memoryWindow.maximum.badge': 'Biaya tertinggi',
  'settings.memoryWindow.maximum.hint':
    'Jendela teraman terbesar. Kontinuitas terbaik, tagihan token per run jauh lebih tinggi.',
  'settings.memoryWindow.maximum.label': 'Maksimum',
  'settings.memoryWindow.minimal.badge': 'Termurah',
  'settings.memoryWindow.minimal.hint':
    'Jendela memori terkecil. Termurah, tercepat, kontinuitas paling sedikit antar run.',
  'settings.memoryWindow.minimal.label': 'Ringkas',
  'settings.memoryWindow.title': 'Jendela memori jangka panjang',
  'settings.agentbox.title': 'AgentBox',
  'settings.agentbox.desc': 'Status adaptor pasar GMI Cloud dan konfigurasi penyedia',
  'settings.agentbox.intro':
    'Status hanya-baca dari adaptor pasar AgentBox. Mode dan penyedia GMI MaaS diatur oleh variabel lingkungan saat inti dimulai.',
  'settings.agentbox.modeLabel': 'Mode pasar',
  'settings.agentbox.providerHeading': 'Penyedia GMI MaaS',
  'settings.agentbox.slug': 'Slug penyedia',
  'settings.agentbox.baseUrl': 'URL dasar',
  'settings.agentbox.model': 'Model',
  'settings.agentbox.notConfigured':
    'Belum dikonfigurasi. Atur variabel lingkungan GMI_MAAS_BASE_URL, GMI_MAAS_API_KEY, dan GMI_MODELS.',
  'settings.agentbox.unavailable': 'Status AgentBox tidak tersedia',
  'settings.modelHealth.title': 'Model Kesehatan',
  'settings.modelHealth.desc':
    'Kualitas permodel, tingkat halusinasi, dan perbandingan biaya di seluruh model aktif',
  'settings.modelHealth.allStatuses': 'Semua status',
  'settings.modelHealth.models': 'models',
  'settings.modelHealth.loading': 'Memuat data model...',
  'settings.modelHealth.empty': 'Tidak ada model yang terdaftar',
  'settings.modelHealth.col.model': 'Model AI',
  'settings.modelHealth.col.quality': 'Kualitas',
  'settings.modelHealth.col.halluc': 'Halluc. Laju',
  'settings.modelHealth.col.cost': 'Biaya / 1M keluar',
  'settings.modelHealth.col.agents': 'Agen',
  'settings.modelHealth.col.status': 'Status',
  'settings.modelHealth.badge.keep': 'Simpan',
  'settings.modelHealth.badge.replace': 'Ganti',
  'settings.modelHealth.badge.staging': 'Tes pencegah',
  'settings.modelHealth.badge.vision': 'Hanya visi',
  'settings.modelHealth.swap': 'Ganti?',
  'settings.modelHealth.modal.title': 'Ganti Model?',
  'settings.modelHealth.modal.hallucRate': 'Laju halusinasi',
  'settings.modelHealth.modal.cancel': 'Batal',
  'settings.modelHealth.modal.apply': 'Terapkan Penggantian',
  'settings.modelHealth.tag.cheaper': 'CHEAPER',
  'settings.modelHealth.tag.better': 'BETTER',
  'settings.desktopAgent.title': 'Agen Desktop',
  'settings.desktopAgent.description': 'Periksa dan berikan izin yang dibutuhkan agen desktop.',
  'settings.desktopAgent.microphone': 'Mikrofon',
  'settings.desktopAgent.grant': 'Berikan',
  'settings.desktopAgent.notRequiredOnOs': 'Tidak diperlukan di sistem operasi ini',
  'settings.desktopAgent.allGranted':
    'Semua siap — agen desktop memiliki semua izin yang dibutuhkan.',
  'settings.desktopAgent.recheck': 'Periksa ulang',
  'settings.desktopAgent.restartAndRecheck': 'Mulai ulang inti dan periksa ulang',
  'settings.desktopAgent.seamless.title': 'Tindakan agen',
  'settings.desktopAgent.seamless.label': 'Biarkan agen bertindak tanpa bertanya',
  'settings.desktopAgent.seamless.description':
    'Berikan akses penuh dan setujui otomatis tindakan desktop (membuka aplikasi, mengendalikan antarmuka aplikasi) agar agen menjalankannya tanpa permintaan persetujuan.',
  'settings.desktopAgent.seamless.note':
    'Hanya tindakan desktop yang melewati permintaan — menjalankan perintah shell, menyunting berkas, permintaan jaringan, dan memasang perangkat lunak tetap meminta izin. Mematikan ini menghentikan persetujuan otomatis tindakan desktop, tetapi tingkat akses tidak berubah.',
  'settings.desktopAgent.beta':
    'Beta — agen desktop masih eksperimental dan mungkin tidak selalu bekerja seperti yang diharapkan.',
  'settings.desktopAgent.wakeWordHint':
    'Ucapkan “Hey Tiny” sebelum perintah Anda untuk membangunkan agen.',
  'settings.screenIntel.permissions.accessibility': 'Aksesibilitas',
  'settings.screenIntel.permissions.grantHint': 'Petunjuk izin',
  'settings.screenIntel.permissions.inputMonitoring': 'Pemantauan Input',
  'settings.screenIntel.permissions.macosAppliesPrivacy': 'macOS menerapkan privasi',
  'settings.screenIntel.permissions.openInputMonitoring': 'Meminta...',
  'settings.screenIntel.permissions.refreshStatus': 'Menyegarkan...',
  'settings.screenIntel.permissions.refreshing': 'Menyegarkan...',
  'settings.screenIntel.permissions.requestAccessibility': 'Meminta...',
  'settings.screenIntel.permissions.requestScreenRecording': 'Meminta...',
  'settings.screenIntel.permissions.requesting': 'Meminta...',
  'settings.screenIntel.permissions.restartRefresh': 'Memulai ulang core...',
  'settings.screenIntel.permissions.restartingCore': 'Memulai ulang core...',
  'settings.screenIntel.permissions.screenRecording': 'Perekaman Layar',
  'settings.screenIntel.permissions.title': 'Izin',
  'skills.card.moreActions': 'Tindakan lainnya',
  'skills.channelIcon.discord': 'Discord',
  'skills.channelIcon.imessage': 'iMessage',
  'skills.channelIcon.telegram': 'Telegram',
  'skills.channelIcon.web': 'Web',
  'skills.channelIcon.yuanbao': 'Yuanbao',
  'skills.composio.poweredBy': 'Didukung oleh Composio',
  'skills.composio.staleStatusTitle': 'Koneksi menunjukkan status basi',
  'skills.create.allowedTools': 'Tool yang diizinkan',
  'skills.create.allowedToolsHelp': 'Dirender ke frontmatter SKILL.md sebagai',
  'skills.create.allowedToolsPlaceholder': 'node_exec, ambil',
  'skills.create.author': 'Penulis',
  'skills.create.authorPlaceholder': 'Nama Anda',
  'skills.create.commaSeparated': '(dipisahkan koma)',
  'skills.create.createBtn': 'Buat skill',
  'skills.create.createError': 'Tidak dapat membuat skill',
  'skills.create.creating': 'Membuat...',
  'skills.create.description': 'Deskripsi',
  'skills.create.descriptionPlaceholder': 'Apa fungsi skill ini?',
  'skills.create.optional': '(opsional)',
  'skills.create.inputs.heading': 'Inputs',
  'skills.create.inputs.help':
    'Deklarasikan parameter yang dibutuhkan skill. Skills Runner akan merender formulir untuk ini saat dijalankan.',
  'skills.create.inputs.add': 'Tambah input',
  'skills.create.inputs.row.name': 'Nama input',
  'skills.create.inputs.row.namePlaceholder': 'mis. repo',
  'skills.create.inputs.row.nameError':
    'Hanya huruf, angka, garis bawah, dan tanda hubung; harus diawali dengan huruf.',
  'skills.create.inputs.row.description': 'Deskripsi input',
  'skills.create.inputs.row.descriptionPlaceholder': 'Apa yang dimasukkan ke field ini?',
  'skills.create.inputs.row.type': 'Type',
  'skills.create.inputs.row.required': 'Required',
  'skills.create.inputs.row.remove': 'Hapus input',
  'skills.create.inputs.type.string': 'Text',
  'skills.create.inputs.type.integer': 'Number',
  'skills.create.inputs.type.boolean': 'Ya / Tidak',
  'skills.create.license': 'Lisensi',
  'skills.create.licensePlaceholder': 'MIT',
  'skills.create.name': 'Nama',
  'skills.create.namePlaceholder': 'mis. Jurnal Trading',
  'skills.create.scope': 'Cakupan',
  'skills.create.scopeProjectHint': '/.openhuman/skills/',
  'skills.create.scopeUserHint':
    'Ditulis ke ~/.openhuman/skills/<slug>/SKILL.md — tersedia di semua workspace.',
  'skills.create.slugLabel': 'Label slug',
  'skills.create.subtitle': 'SKILL.md',
  'skills.create.tags': 'Tag',
  'skills.create.tagsPlaceholder': 'perdagangan, penelitian',
  'skills.create.title': 'Skill baru',
  'skills.detail.allowedTools': 'Alat yang diizinkan',
  'skills.detail.author': 'Penulis',
  'skills.detail.license': 'Lisensi',
  'skills.detail.bundledResources': 'Sumber daya bundel',
  'skills.detail.description': 'Deskripsi',
  'skills.detail.closeAriaLabel': 'Tutup detail skill',
  'skills.detail.location': 'Lokasi',
  'skills.detail.noBundledResources': 'Tidak ada sumber daya bundel.',
  'skills.detail.platforms': 'Platform',
  'skills.detail.relatedSkills': 'Skill terkait',
  'skills.detail.source': 'URL Sumber',
  'skills.detail.sourceFormat': 'Format',
  'skills.detail.stars': 'Bintang',
  'skills.detail.tags': 'Tag',
  'skills.detail.warnings': 'Peringatan',
  'skills.detail.version': 'Versi',
  'skills.install.errors.alreadyInstalledHint':
    'Keterampilan dengan siput ini sudah ada di ruang kerja. Hapus dulu atau ubah frontmatter `metadata.id` / `name`.',
  'skills.install.errors.alreadyInstalledTitle': 'Keterampilan sudah terpasang',
  'skills.install.errors.fetchFailedHint':
    'Permintaan tidak berhasil diselesaikan. Periksa poin URL pada file publik yang dapat dijangkau, dan host mengembalikan respons 2xx.',
  'skills.install.errors.fetchFailedTitle': 'Pengambilan gagal',
  'skills.install.errors.fetchTimedOutHint':
    'Host jarak jauh tidak merespons tepat waktu. Coba lagi atau tambah batas waktu (1-600 detik).',
  'skills.install.errors.fetchTimedOutTitle': 'Waktu pengambilan habis',
  'skills.install.errors.fetchTooLargeHint':
    'SKILL.md harus di bawah 1 MiB. Pisahkan sumber daya yang dibundel menjadi file `referensi/` atau `skrip/` alih-alih menyatukannya.',
  'skills.install.errors.fetchTooLargeTitle': 'SKILL.md terlalu besar',
  'skills.install.errors.genericHint':
    'Backend menghasilkan kesalahan. Pesan mentahnya ditunjukkan di bawah ini.',
  'skills.install.errors.genericTitle': 'Tidak dapat menginstal keterampilan',
  'skills.install.errors.invalidSkillHint':
    'Materi depan harus berupa YAML yang valid dengan kolom `nama` dan `deskripsi` yang tidak kosong, diakhiri dengan `---`.',
  'skills.install.errors.invalidSkillTitle': 'SKILL.md tidak diurai',
  'skills.install.errors.invalidUrlHint':
    'Hanya HTTPS URL publik yang diperbolehkan. Host pribadi, loopback, dan metadata diblokir.',
  'skills.install.errors.invalidUrlTitle': 'URL ditolak',
  'skills.install.errors.unsupportedUrlHint':
    'Hanya tautan `.md` langsung yang berfungsi. Untuk GitHub, tautan ke file (github.com/owner/repo/blob/.../SKILL.md) - akar pohon dan repo tidak diinstal.',
  'skills.install.errors.unsupportedUrlTitle': 'formulir URL tidak didukung',
  'skills.install.errors.writeFailedHint':
    'Direktori keterampilan ruang kerja tidak dapat ditulis. Periksa izin sistem file untuk `<workspace>/.openhuman/skills/`.',
  'skills.install.errors.writeFailedTitle': 'Tidak dapat menulis SKILL.md',
  'skills.install.fetchLog': 'Ambil log',
  'skills.install.fetchingPrefix': 'Mengambil',
  'skills.install.fetchingSuffix':
    'ini dapat memakan waktu hingga batas waktu yang Anda konfigurasikan.',
  'skills.install.installBtn': 'Menginstal...',
  'skills.install.installComplete': 'Instalasi selesai',
  'skills.install.installing': 'Menginstal...',
  'skills.install.parseWarnings': 'Peringatan parse',
  'skills.install.rawError': 'Error mentah',
  'skills.install.subtitleMiddle': 'di atas HTTPS dan menginstalnya di bawah',
  'skills.install.subtitlePrefix': 'Hanya mengambil satu',
  'skills.install.subtitleSuffix': 'HTTPS; host pribadi dan loopback diblokir.',
  'skills.install.successDiscovered': 'Menemukan {count} keterampilan baru.',
  'skills.install.successNoNewIds':
    'Skill terpasang, tetapi tidak ada ID skill baru yang muncul - katalog mungkin sudah berisi skill dengan slug yang sama.',
  'skills.install.timeoutHint': '(detik, opsional)',
  'skills.install.timeoutHelp':
    'Defaultnya adalah 60 detik. Nilai di luar 1-600 dijepit di sisi server.',
  'skills.install.timeoutInvalid': 'Harus berupa bilangan bulat antara 1 dan 600.',
  'skills.install.timeoutLabel': 'Label waktu habis',
  'skills.install.timeoutPlaceholder': '60',
  'skills.install.title': 'Pasang skill dari URL',
  'skills.install.urlHelpMiddle': 'berkas.',
  'skills.install.urlHelpPrefix': 'Tautan langsung ke',
  'skills.install.urlHelpSuffix': 'URLs penulisan ulang otomatis ke',
  'skills.install.urlInvalidPrefix': 'URL harus berupa tautan',
  'skills.install.urlInvalidSuffix': 'yang dibuat dengan baik.',
  'skills.install.urlLabel': 'URL skill',
  'skills.install.urlPlaceholder': 'https://raw.githubusercontent.com/owner/repo/main/SKILL.md',
  'skills.meetingBots.bannerDesc': 'Deskripsi banner',
  'skills.meetingBots.bannerTitle': 'Judul banner',
  'skills.meetingBots.busyTitle': 'OpenHuman sedang sibuk',
  'skills.meetingBots.comingSoon': 'Segera hadir',
  'skills.meetingBots.couldNotLeaveTitle': 'Tidak dapat keluar dari rapat',
  'skills.meetingBots.couldNotStartTitle': 'Tidak bisa memulai OpenHuman',
  'skills.meetingBots.displayName': 'Nama tampilan',
  'skills.meetingBots.failedToStart': 'Gagal memulai OpenHuman.',
  'skills.meetingBots.joiningMessage': 'Seharusnya muncul sebagai peserta dalam beberapa detik.',
  'skills.meetingBots.joiningTitle': 'OpenHuman bergabung ke rapat',
  'skills.meetingBots.meetingLink': 'Tautan rapat',
  'skills.meetingBots.modalAriaLabel': 'Kirim OpenHuman ke rapat',
  'skills.meetingBots.modalDesc': 'Deskripsi modal',
  'skills.meetingBots.modalTitle': 'Kirim OpenHuman ke rapat',
  'skills.meetingBots.newBadge': 'Lencana baru',
  'skills.meetingBots.platformComingSoon': '{label} dukungan akan segera hadir.',
  'skills.meetingBots.platformHints.gmeet': 'meet.google.com/abc-defg-hij',
  'skills.meetingBots.platformHints.teams': 'team.microsoft.com/...',
  'skills.meetingBots.platformHints.webex': 'webex.com/meet/...',
  'skills.meetingBots.platformHints.zoom': 'zoom.us/j/...',
  'skills.meetingBots.platforms.gmeet': 'Google Temui',
  'skills.meetingBots.platforms.teams': 'Microsoft Teams',
  'skills.meetingBots.platforms.webex': 'Webex',
  'skills.meetingBots.platforms.zoom': 'Zoom',
  'skills.meetingBots.sendTo': 'Kirim ke',
  'skills.meetingBots.serverOverloaded':
    'OpenHuman sedang menerima beban tinggi saat ini. Silakan coba lagi dalam beberapa menit.',
  'skills.meetingBots.soonSuffix': 'segera',
  'skills.meetingBots.starting': 'Memulai...',
  'skills.meetingBots.recentCallsAriaLabel': 'Panggilan rapat terbaru',
  'skills.meetingBots.recentCallsHeading': 'Panggilan terbaru',
  'skills.meetingBots.recentCallsEmpty':
    'Belum ada panggilan sebelumnya — riwayat rapat Anda akan muncul di sini.',
  'skills.meetingBots.recentCallsLoading': 'Memuat\u2026',
  'skills.meetingBots.recentCallAddedBy': 'Ditambahkan oleh {name}',
  'skills.meetingBots.recentCallParticipants': 'Dengan {names}',
  'skills.meetingBots.recentCallTurnSingular': '{count} giliran',
  'skills.meetingBots.recentCallTurnPlural': '{count} giliran',
  'skills.meetingBots.recentCallDuration': '{seconds}d dalam panggilan',
  'skills.meetingBots.callDetailLoading': 'Memuat transkrip…',
  'skills.meetingBots.callDetailError': 'Tidak dapat memuat transkrip.',
  'skills.meetingBots.callDetailRetry': 'Coba lagi',
  'skills.meetingBots.callDetailEmpty':
    'Tidak ada transkrip atau ringkasan yang direkam untuk panggilan ini.',
  'skills.meetingBots.callSummaryHeading': 'Ringkasan',
  'skills.meetingBots.callKeyPointsHeading': 'Poin penting',
  'skills.meetingBots.callActionItemsHeading': 'Item tindakan',
  'skills.meetingBots.callTranscriptHeading': 'Transkrip',
  'skills.meetingBots.liveBadge': 'Langsung',
  'skills.meetingBots.liveTitle': 'Dalam Rapat',
  'skills.meetingBots.liveStatusJoining': 'Bergabung\u2026',
  'skills.meetingBots.liveStatusActive': 'Langsung dalam rapat',
  'skills.meetingBots.liveStatusListening': 'Mendengarkan (dibisukan)',
  'skills.meetingBots.liveStatusEnded': 'Rapat selesai',
  'skills.meetingBots.liveStatusError': 'Gagal bergabung',
  'skills.meetingBots.liveTranscriptHeading': 'Transkrip langsung',
  'skills.meetingBots.liveTranscriptEmpty': 'Menunggu ucapan…',
  'skills.meetingBots.leaveButton': 'Keluar',
  'skills.meetingBots.leavingButton': 'Keluar\u2026',
  'skills.meetingBots.respondToParticipant': 'Nama Anda di Rapat Ini',
  'skills.meetingBots.respondToParticipantHint': 'mis. Budi (nama tampilan Anda di panggilan)',
  'skills.meetingBots.respondToParticipantDesc':
    'Masukkan nama tampilan Anda yang tepat dari rapat. Bot hanya merespons ketika Anda menyebut namanya (frasa bangun).',
  'skills.meetingBots.wakePhrase': 'Frasa Bangun',
  'skills.meetingBots.wakePhraseHint': 'Hey OpenHuman',
  'skills.meetingBots.wakePhraseDesc': 'Peserta harus mengucapkan ini sebelum bot merespons.',
  'skills.meetingBots.activeMode': 'Tanggapi saat saya menyapa',
  'skills.meetingBots.activeModeDesc':
    'Saat aktif, bot menjawab dengan suara setelah Anda mengucapkan frasa pemicunya. Saat nonaktif, bot hanya mendengarkan dan mentranskripsikan.',
  'skills.meetingBots.history.allPlatforms': 'Semua platform',
  'skills.meetingBots.history.copyTranscript': 'Salin',
  'skills.meetingBots.history.downloadTranscript': 'Unduh',
  'skills.meetingBots.history.earlier': 'Sebelumnya',
  'skills.meetingBots.history.participantCount': '{count} peserta',
  'skills.meetingBots.history.participantCountPlural': '{count} peserta',
  'skills.meetingBots.history.runWithOpenHuman': 'Jalankan dengan OpenHuman',
  'skills.meetingBots.history.searchPlaceholder': 'Cari panggilan…',
  'skills.meetingBots.history.selectPrompt':
    'Pilih panggilan untuk melihat ringkasan dan transkripnya.',
  'skills.meetingBots.history.today': 'Hari ini',
  'skills.meetingBots.history.yesterday': 'Kemarin',
  'skills.meetingBots.upcoming.heading': 'Mendatang',
  'skills.meetingBots.upcoming.when': 'Kapan',
  'skills.meetingBots.upcoming.meeting': 'Rapat',
  'skills.meetingBots.upcoming.platform': 'Platform',
  'skills.meetingBots.upcoming.people': 'Orang',
  'skills.meetingBots.upcoming.joinPolicy': 'Kebijakan bergabung',
  'skills.meetingBots.upcoming.joinNow': 'Bergabung sekarang',
  'skills.meetingBots.upcoming.joinNowAriaLabel': 'Bergabung dengan {title}',
  'skills.meetingBots.upcoming.join': 'Bergabung',
  'skills.meetingBots.upcoming.auto': 'Otomatis',
  'skills.meetingBots.upcoming.ask': 'Tanya',
  'skills.meetingBots.upcoming.skip': 'Lewati',
  'skills.meetingBots.upcoming.today': 'Hari ini',
  'skills.meetingBots.upcoming.tomorrow': 'Besok',
  'skills.meetingBots.upcoming.empty':
    'Tidak ada rapat mendatang — hubungkan Google Calendar untuk melihatnya di sini.',
  'skills.meetingBots.upcoming.error': 'Tidak dapat memuat rapat mendatang.',
  'skills.meetingBots.upcoming.retry': 'Coba lagi',
  'skills.meetingBots.upcoming.refresh': 'Segarkan',
  'skills.meetingBots.upcoming.filterAll': 'Semua platform',
  'skills.meetingBots.upcoming.participants': '{count} peserta',
  'skills.meetingBots.upcoming.imminent': 'Segera dimulai',
  'skills.meetingBots.upcoming.autoJoinsAt': 'Bergabung otomatis ~pukul {time}',
  'skills.meetingBots.upcoming.asksAtStart': 'Bertanya saat mulai',
  'skills.meetingBots.upcoming.watchCalendarHint':
    "Aktifkan 'Pantau kalender saya' di Pengaturan Default (ikon gigi) agar Auto/Tanya berlaku — jika tidak, kebijakan ini disimpan tetapi tidak akan dipicu.",
  'skills.meetingBots.relative.now': 'sekarang',
  'skills.meetingBots.relative.inMinutes': 'dalam {count}m',
  'skills.meetingBots.relative.inHours': 'dalam {count}j',
  'skills.meetingBots.relative.minutesAgo': '{count}m lalu',
  'skills.meetingBots.relative.hoursAgo': '{count}j lalu',
  'skills.meetingBots.relative.daysAgo': '{count}h lalu',
  'skills.meetingBots.relative.yesterday': 'kemarin',
  'skills.meetingBots.defaults.drawerTitle': 'Default Rapat',
  'skills.meetingBots.defaults.closeDrawer': 'Tutup',
  'skills.meetingBots.defaults.openDefaults': 'Pengaturan rapat',
  'skills.meetingBots.defaults.watchCalendar': 'Pantau kalender saya',
  'skills.meetingBots.defaults.watchCalendarDesc':
    'Biarkan OpenHuman memantau kalender yang terhubung agar dapat bergabung otomatis atau meminta konfirmasi untuk rapat berdasarkan kebijakan di bawah ini. Ini terpisah dari notifikasi pengingat rapat.',
  'skills.meetingBots.defaults.globalPolicy': 'Kebijakan bergabung otomatis global',
  'skills.meetingBots.defaults.perPlatformTitle': 'Pengaturan per platform',
  'skills.meetingBots.defaults.perPlatformDesc': 'Timpa kebijakan global untuk platform tertentu.',
  'skills.meetingBots.defaults.useDefault': 'Gunakan default',
  'skills.resource.preview.closeAriaLabel': 'Tutup pratinjau',
  'skills.resource.preview.failed': 'Pratinjau gagal',
  'skills.resource.preview.loading': 'Memuat pratinjau...',
  'skills.resource.tree.assets': 'Aset',
  'skills.resource.tree.examples': 'Contoh',
  'skills.resource.tree.other': 'Lainnya',
  'skills.resource.tree.prompts': 'Prompt',
  'skills.resource.tree.references': 'Referensi',
  'skills.resource.tree.scripts': 'Skrip',
  'skills.resource.tree.templates': 'Templat',
  'skills.resource.tree.empty': 'Tidak ada sumber daya bundel.',
  'skills.search.placeholder': 'Teks placeholder',
  'skills.setup.autocomplete.acceptKey': 'Kunci terima',
  'skills.setup.autocomplete.activeDesc': 'Deskripsi aktif',
  'skills.setup.autocomplete.activeTitle': 'Auto-Complete Aktif',
  'skills.setup.autocomplete.customizeSettings': 'Sesuaikan pengaturan',
  'skills.setup.autocomplete.debounce': 'Tunda input',
  'skills.setup.autocomplete.description': 'Deskripsi',
  'skills.setup.autocomplete.enableBtn': 'Mengaktifkan...',
  'skills.setup.autocomplete.enableError': 'Gagal mengaktifkan pelengkap otomatis',
  'skills.setup.autocomplete.enabling': 'Mengaktifkan...',
  'skills.setup.autocomplete.notSupported': 'Tidak didukung',
  'skills.setup.autocomplete.stepEnable': 'Aktifkan pelengkap otomatis',
  'skills.setup.autocomplete.stepSuccess': 'Siap digunakan',
  'skills.setup.autocomplete.stylePreset': 'Preset gaya',
  'skills.setup.autocomplete.stylePresetValue': 'Seimbang (dapat dikonfigurasi nanti)',
  'skills.setup.autocomplete.title': 'Auto-Complete Teks',
  'skills.setup.screenIntel.activeDesc': 'Deskripsi aktif',
  'skills.setup.screenIntel.activeTitle': 'Kecerdasan Layar Diaktifkan',
  'skills.setup.screenIntel.advancedSettings': 'Pengaturan lanjutan',
  'skills.setup.screenIntel.allGranted': 'Semua izin diberikan',
  'skills.setup.screenIntel.captureMode': 'Mode tangkap',
  'skills.setup.screenIntel.captureModeValue': 'Semua jendela (dapat dikonfigurasi nanti)',
  'skills.setup.screenIntel.deniedHint':
    'Setelah memberikan izin di Pengaturan Sistem, klik di bawah untuk memulai ulang dan mengambil perubahan.',
  'skills.setup.screenIntel.enableBtn': 'Mengaktifkan...',
  'skills.setup.screenIntel.enableDesc':
    's di layar Anda dan memberikan konteks berguna ke agen Anda',
  'skills.setup.screenIntel.enableError': 'Gagal mengaktifkan Kecerdasan Layar',
  'skills.setup.screenIntel.enabling': 'Mengaktifkan...',
  'skills.setup.screenIntel.grant': 'Membuka...',
  'skills.setup.screenIntel.granted': 'Diberikan',
  'skills.setup.screenIntel.macosOnly': 'Hanya macOS',
  'skills.setup.screenIntel.opening': 'Membuka...',
  'skills.setup.screenIntel.panicHotkey': 'Hotkey panik',
  'skills.setup.screenIntel.permAccessibility': 'Aksesibilitas',
  'skills.setup.screenIntel.permInputMonitoring': 'Pemantauan Input',
  'skills.setup.screenIntel.permScreenRecording': 'Perekaman Layar',
  'skills.setup.screenIntel.permissionsDesc': 'Deskripsi izin',
  'skills.setup.screenIntel.permissionPathLabel': 'macOS menerapkan privasi ke:',
  'skills.setup.screenIntel.refreshStatus': 'Segarkan status',
  'skills.setup.screenIntel.restartRefresh': 'Memulai ulang...',
  'skills.setup.screenIntel.restarting': 'Memulai ulang...',
  'skills.setup.screenIntel.stepEnable': 'Aktifkan skill',
  'skills.setup.screenIntel.stepPermissions': 'Berikan izin',
  'skills.setup.screenIntel.stepSuccess': 'Siap digunakan',
  'skills.setup.screenIntel.title': 'Kecerdasan Layar',
  'skills.setup.screenIntel.visionModel': 'Model visi',
  'skills.setup.voice.activation': 'Aktivasi',
  'skills.setup.voice.activeDescPrefix': 'Fn',
  'skills.setup.voice.activeDescSuffix': 'Fn',
  'skills.setup.voice.activeTitle': 'Kecerdasan Suara Aktif',
  'skills.setup.voice.customizeSettings': 'Sesuaikan pengaturan',
  'skills.setup.voice.downloadSttBtn': 'Unduh tombol STT',
  'skills.setup.voice.enableDesc': 'Deskripsi aktifkan',
  'skills.setup.voice.hotkey': 'Pintasan',
  'skills.setup.voice.startBtn': 'Memulai...',
  'skills.setup.voice.startError': 'Gagal memulai server suara',
  'skills.setup.voice.starting': 'Memulai...',
  'skills.setup.voice.stepEnable': 'Mulai server suara',
  'skills.setup.voice.stepSetup': 'Unduhan model diperlukan',
  'skills.setup.voice.stepSuccess': 'Siap digunakan',
  'skills.setup.voice.sttNotReady': 'Model speech-to-text belum siap',
  'skills.setup.voice.sttNotReadyDesc':
    'Kecerdasan Suara memerlukan model Whisper lokal untuk transkripsi. Unduh dari pengaturan Model Lokal.',
  'skills.setup.voice.sttReady': 'Model speech-to-text siap',
  'skills.setup.voice.sttReturnHint': 'Petunjuk kembali STT',
  'skills.setup.voice.title': 'Kecerdasan Suara',
  'skills.uninstall.couldNotUninstall': 'Tidak bisa mencopot',
  'skills.uninstall.description':
    'Ini akan menghapus permanen direktori skill dan semua resource yang dibundel. Agen akan berhenti melihatnya pada giliran berikutnya.',
  'skills.uninstall.title': 'Copot',
  'skills.uninstall.uninstallBtn': 'Copot',
  'skills.uninstall.uninstalling': 'Mencopot…',
  'upsell.global.limitMessage': 'Upgrade paket atau isi ulang kredit untuk melanjutkan',
  'upsell.global.limitTitle': 'Anda',
  'upsell.global.nearLimitMessage':
    'Anda telah menggunakan {pct}% dari batas pemakaian. Upgrade untuk batas lebih tinggi.',
  'upsell.global.nearLimitTitle': 'Mendekati batas pemakaian',
  'upsell.usageLimit.bodyBudget':
    'Anda telah mencapai batas mingguan.{reset} Tingkatkan paket Anda atau isi ulang kredit untuk menghindari batas.',
  'upsell.usageLimit.bodyRate':
    'Anda telah mencapai batas laju inferensi 10 jam.{reset} Tingkatkan untuk batas yang lebih tinggi.',
  'upsell.usageLimit.heading': 'Batas Pemakaian Tercapai',
  'upsell.usageLimit.notNow': 'Tidak sekarang',
  'upsell.usageLimit.perWindow': '{amount}',
  'upsell.usageLimit.planIncludes': '{plan}',
  'upsell.usageLimit.resetsIn': 'Akan direset {time}.',
  'upsell.usageLimit.upgradePlan': 'Upgrade paket',
  'upsell.usageLimit.weeklyInference': '{amount}',
  'walkthrough.steps.startChat.title': 'Mulai di chat',
  'walkthrough.steps.startChat.content':
    'Chat adalah titik awal Anda. Jendela baru terbuka dengan sapaan dan tindakan cepat yang sama seperti setelah penyiapan.',
  'walkthrough.steps.sayHello.title': 'Sapa dulu',
  'walkthrough.steps.sayHello.content':
    'Ketuk di sini untuk memulai percakapan dengan asisten AI kapan saja.',
  'walkthrough.steps.meetAi.title': 'Kenali AI Anda',
  'walkthrough.steps.meetAi.content':
    'Di sinilah percakapan berlangsung. Ajukan pertanyaan, minta ringkasan, atau susun ide. Semuanya tetap bisa dicari.',
  'walkthrough.steps.connectWorld.title': 'Hubungkan dunia Anda',
  'walkthrough.steps.connectWorld.content':
    'Gmail, Slack, WhatsApp, dan lainnya: setiap koneksi memberi asisten Anda kemampuan baru.',
  'walkthrough.steps.messagingApps.title': 'Chat di tempat Anda biasa berada',
  'walkthrough.steps.messagingApps.content':
    'WhatsApp, Telegram, Slack, Discord: hubungkan aplikasi pesan agar asisten dapat menjangkau Anda di mana saja.',
  'walkthrough.steps.settings.title': 'Sesuaikan sendiri',
  'walkthrough.steps.settings.content':
    'Preferensi, privasi, dan notifikasi ada di sini. Anda dapat memulai ulang tur ini dari halaman ini kapan saja.',
  'walkthrough.steps.chatTab.title': 'Kembali ke chat',
  'walkthrough.steps.chatTab.content':
    'Gunakan tab Chat kapan pun Anda ingin kembali ke percakapan.',
  'walkthrough.steps.humanTab.title': 'Kenali profil Human Anda',
  'walkthrough.steps.humanTab.content':
    'Human menyatukan konteks pribadi, identitas, dan profil yang dilihat asisten.',
  'walkthrough.steps.brainTab.title': 'Buka Brain Anda',
  'walkthrough.steps.brainTab.content':
    'Brain adalah grafik memori: tempat melihat apa yang diketahui OpenHuman dan bagaimana ide saling terhubung.',
  'walkthrough.steps.agentWorldTab.title': 'Jelajahi Agent World',
  'walkthrough.steps.agentWorldTab.content':
    'Agent World adalah tempat agen yang dapat digunakan ulang dan automasi bersama.',
  'walkthrough.steps.connectionsTab.title': 'Kelola koneksi',
  'walkthrough.steps.connectionsTab.content':
    'Connections selalu tersedia di navigasi utama saat Anda ingin menambah atau menyesuaikan layanan.',
  'walkthrough.steps.feedbackTab.title': 'Kirim masukan',
  'walkthrough.steps.feedbackTab.content':
    'Feedback memberi tempat langsung untuk melaporkan masalah atau meminta peningkatan.',
  'walkthrough.steps.allSet.title': 'Semua siap!',
  'walkthrough.steps.allSet.content':
    'Asisten meninggalkan catatan sambutan: ini ruang Anda untuk chat, bertanya, atau menyusun ide. Selamat mencoba!',
  'walkthrough.tooltip.letsGo': 'Ayo mulai!',
  'walkthrough.tooltip.next': 'Berikutnya →',
  'walkthrough.tooltip.skip': 'Lewati tur',
  'walkthrough.tooltip.stepCounter': '{n} dari {total}',
  'webhooks.activity.empty': 'Kosong',
  'webhooks.activity.title': 'Aktivitas Terbaru',
  'webhooks.composioHistory.empty': 'Kosong',
  'webhooks.composioHistory.metadataId': 'ID Metadata',
  'webhooks.composioHistory.metadataUuid': 'UUID Metadata',
  'webhooks.composioHistory.payload': 'Muatan',
  'webhooks.composioHistory.title': 'Riwayat Pemicu ComposeIO',
  'webhooks.tunnels.active': 'Aktif',
  'webhooks.tunnels.createFailed': 'Gagal membuat tunnel',
  'webhooks.tunnels.creating': 'Membuat...',
  'webhooks.tunnels.deleteFailed': 'Gagal menghapus tunnel',
  'webhooks.tunnels.descriptionPlaceholder': 'Deskripsi (opsional)',
  'webhooks.tunnels.echo': 'Echo',
  'webhooks.tunnels.empty': 'Kosong',
  'webhooks.tunnels.enableEcho': 'Aktifkan Echo',
  'webhooks.tunnels.inactive': 'Tidak aktif',
  'webhooks.tunnels.namePlaceholder': 'Nama tunnel (mis. telegram-bot)',
  'webhooks.tunnels.newTunnel': 'Tunnel baru',
  'webhooks.tunnels.removeEcho': 'Hapus Echo',
  'webhooks.tunnels.title': 'Tunnel Webhook',
  'webhooks.tunnels.toggleFailed': 'Gagal mengalihkan echo',
  'composio.directModeRequiresKey':
    'Gagal menyimpan. Mode Direct memerlukan API key yang tidak kosong.',
  'composio.integrationSlugsHelp': 'Siput integrasi yang dipisahkan koma, mis.',
  'composio.integrationSlugsExample': 'gmail, slack',
  'composio.integrationSlugsCaseInsensitive': 'Tidak peka huruf besar-kecil.',
  'composio.integrationSlugsPlaceholder': 'gmail, slack, ...',
  'composio.notYetRouted': 'belum dirutekan',
  'composio.triggers.loading': 'Memuat…',
  'conversations.taskKanban.todo': 'Akan dikerjakan',
  'chat.addReaction': 'Tambahkan reaksi',
  'chat.agentProfile.create': 'Buat profil agen',
  'chat.agentProfile.createFailed': 'Tidak dapat membuat profil agen.',
  'chat.agentProfile.customDescription': 'Profil agen khusus',
  'chat.agentProfile.defaultAgentLabel': 'Orchestrator',
  'chat.agentProfile.exists': 'Profil agen "{name}" sudah ada.',
  'chat.agentProfile.label': 'Profil agen',
  'chat.agentProfile.quick': 'Cepat',
  'chat.agentProfile.reasoning': 'Penalaran',
  'chat.agentProfile.namePlaceholder': 'Nama profil',
  'chat.agentProfile.promptStylePlaceholder': 'Gaya perintah',
  'chat.agentProfile.allowedToolsPlaceholder': 'Alat yang diizinkan',
  'chat.backToThread': 'kembali ke {title}',
  'chat.parentThread': 'thread induk',
  'chat.removeReaction': 'Hapus {emoji}',
  'settings.composio.loading': 'Memuat…',
  'settings.mascot.noCharactersAvailable': 'Belum ada karakter OpenHuman yang tersedia',
  'skills.uninstall.confirmTitle': 'Copot {name}?',
  'conversations.taskKanban.blocked': 'Terhambat',
  'conversations.taskKanban.done': 'Selesai',
  'conversations.taskKanban.pending': 'Tertunda',
  'conversations.taskKanban.working': 'Bekerja',
  'conversations.taskKanban.awaitingApproval': 'Menunggu persetujuan',
  'conversations.taskKanban.ready': 'Siap',
  'conversations.taskKanban.rejected': 'Ditolak',
  'conversations.taskKanban.inProgress': 'Sedang berjalan',
  'conversations.taskKanban.awaitingApprovalColumn': 'Menunggu Persetujuan',
  'conversations.taskKanban.blockedColumn': 'Terhambat',
  'conversations.taskKanban.evidenceBadge': 'Bukti ({count})',
  'conversations.taskKanban.needsInput': 'Tugas-tugas ini membutuhkan masukan Anda',
  'conversations.taskKanban.emptyColumn': 'Tidak ada tugas',
  'conversations.taskKanban.dragHint': 'Seret untuk memindahkan antar kolom',
  'conversations.taskKanban.movingCard': 'Memindahkan…',
  'conversations.taskKanban.statusBadge.ready': 'Siap dimulai',
  'conversations.taskKanban.statusBadge.rejected': 'Ditolak',
  'intelligence.memoryChunk.detail.copiedHint': 'disalin',
  'settings.composio.notYetRouted': 'belum dirutekan',
  'settings.localModel.download.manageExternal': 'Kelola model ini di runtime eksternal Anda.',
  'settings.localModel.status.manageOllamaExternal':
    'Kelola proses Ollama dan unduhan model di luar OpenHuman, lalu jalankan ulang diagnostik.',
  'settings.localModel.status.ollamaDocs': 'Dokumentasi Ollama',
  'settings.localModel.status.thenRetry':
    'untuk instruksi pengaturan, lalu coba lagi setelah runtime Anda dapat dijangkau.',
  'devOptions.menuAi': 'Konfigurasi AI',
  'devOptions.menuAiDesc': 'Penyedia cloud, model Ollama lokal, dan routing per beban kerja',
  'devOptions.menuScreenAware': 'Kesadaran Layar',
  'devOptions.menuScreenAwareDesc': 'Izin tangkapan layar, kebijakan pemantauan, dan kontrol sesi',
  'devOptions.menuMessaging': 'Channel Pesan',
  'devOptions.menuMessagingDesc':
    'Konfigurasikan mode autentikasi Telegram/Discord dan routing channel bawaan',
  'devOptions.menuTools': 'Alat',
  'devOptions.menuToolsDesc':
    'Aktifkan atau nonaktifkan kemampuan yang dapat digunakan OpenHuman atas nama Anda',
  'devOptions.menuAgentChat': 'Obrolan Agen',
  'devOptions.menuAgentChatDesc': 'Uji percakapan agen dengan override model dan suhu',
  'devOptions.menuCronJobs': 'Pekerjaan Cron',
  'devOptions.menuCronJobsDesc': 'Lihat dan konfigurasikan pekerjaan terjadwal untuk skill runtime',
  'devOptions.menuLocalModelDebug': 'Debug Model Lokal',
  'devOptions.menuLocalModelDebugDesc':
    'Konfigurasi Ollama, unduhan aset, pengujian model, dan diagnostik',
  'devOptions.menuWebhooksDebug': 'Webhook',
  'devOptions.menuWebhooksDebugDesc':
    'Periksa pendaftaran webhook runtime dan log permintaan yang ditangkap',
  'devOptions.menuIntelligence': 'Kecerdasan',
  'devOptions.menuIntelligenceDesc': 'Workspace memori, mesin subconscious, mimpi, dan pengaturan',
  'devOptions.menuNotificationRouting': 'Routing Notifikasi',
  'devOptions.menuNotificationRoutingDesc':
    'Skor kepentingan AI dan eskalasi orkestrator untuk alert integrasi',
  'devOptions.menuComposeIOTriggers': 'Pemicu ComposeIO',
  'devOptions.menuComposeIOTriggersDesc': 'Lihat riwayat dan arsip pemicu ComposeIO',
  'devOptions.menuComposioRouting': 'Routing Composio (Mode Direct)',
  'devOptions.menuComposioRoutingDesc':
    'Gunakan API key Composio milik Anda sendiri dan rutekan panggilan langsung ke backend.composio.dev',
  'devOptions.menuComposioTriggers': 'Pemicu Integrasi',
  'devOptions.menuComposioTriggersDesc':
    'Konfigurasikan pengaturan triase AI untuk pemicu integrasi Composio',
  'memory.sourceFilterAria': 'Filter berdasarkan sumber',
  'calls.comingSoonDescription': 'Panggilan dengan bantuan AI akan segera hadir. Pantau terus.',
  'whatsapp.title': 'WhatsApp',
  'subconscious.priority.critical': 'kritis',
  'subconscious.priority.important': 'penting',
  'subconscious.priority.normal': 'normal',
  'subconscious.durationSeconds': '{seconds}d',
  'subconscious.durationMilliseconds': '{milliseconds}md',
  'settings.appearance': 'Tampilan',
  'settings.appearanceDesc': 'Pilih terang, gelap, atau ikuti tema sistem Anda',
  'settings.mascot': 'Maskot',
  'settings.mascotDesc': 'Pilih warna maskot yang digunakan di seluruh aplikasi',
  'pages.settings.account.walletBalances': 'Saldo Dompet',
  'pages.settings.account.walletBalancesDesc': 'Lihat saldo multi-rantai untuk dompet lokal Anda',
  'walletBalances.title': 'Saldo Dompet',
  'walletBalances.refresh': 'Refresh',
  'walletBalances.loading': 'Memuat saldo…',
  'walletBalances.retry': 'Retry',
  'walletBalances.emptyState': 'Belum ada akun dompet — atur dompet di Frasa Pemulihan.',
  'walletBalances.copyAddress': 'Salin alamat',
  'walletBalances.providerMissing': 'penyedia tidak tersedia',
  'walletBalances.rawBalance': 'Mentah: {raw}',
  'walletBalances.errorGeneric':
    'Tidak dapat memuat saldo dompet. Atur dompet Anda di Frasa Pemulihan dan coba lagi.',
  'walletBalances.setupHint':
    'Frasa pemulihan Anda belum disiapkan. Siapkan untuk mengaktifkan dompet Anda dan melihat saldo langsung.',
  'walletBalances.setupCta': 'Siapkan frasa pemulihan',
  'walletBalances.notSetUp': 'Belum disiapkan',
  'walletBalances.send': 'Kirim',
  'walletBalances.receive': 'Terima',
  'walletReceive.scanHint': 'Pindai kode ini atau salin alamat di bawah untuk menerima dana.',
  'walletReceive.addressLabel': 'Alamat {network}',
  'walletReceive.onlyChainWarning':
    'Hanya kirim aset {network} ke alamat ini. Mengirim aset dari jaringan lain dapat mengakibatkan kehilangan permanen.',
  'walletSend.available': 'Tersedia',
  'walletSend.recipient': 'Alamat penerima',
  'walletSend.recipientPlaceholder': 'Tempel alamat tujuan',
  'walletSend.recipientRequired': 'Masukkan alamat penerima',
  'walletSend.amount': 'Jumlah',
  'walletSend.invalidAmount': 'Masukkan jumlah yang valid',
  'walletSend.review': 'Tinjau',
  'walletSend.preparing': 'Menyiapkan…',
  'walletSend.confirmHint':
    'Tinjau detail di bawah. Penandatanganan dilakukan secara lokal — tidak ada yang disiarkan sampai Anda mengonfirmasi.',
  'walletSend.estimatedFee': 'Estimasi biaya jaringan',
  'walletSend.confirmSend': 'Konfirmasi & kirim',
  'walletSend.sending': 'Mengirim…',
  'walletSend.sent': 'Transaksi terkirim',
  'walletSend.txHash': 'Hash transaksi',
  'walletSend.viewExplorer': 'Lihat di explorer',
  'walletSend.done': 'Selesai',
  'walletSend.genericError': 'Tidak dapat menyelesaikan transfer. Silakan coba lagi.',
  'settings.taskSources.title': 'Sumber Tugas',
  'settings.integrations.title': 'Integrasi',
  'settings.integrations.menuDesc': 'Sumber tugas, perutean Composio, dan pemicu webhook',
  'settings.taskSources.subtitle': 'Tarik tugas dari alat Anda ke papan todo agen',
  'settings.taskSources.description':
    'Kumpulkan item kerja dari GitHub, Notion, Linear, dan ClickUp, perkaya mereka, dan rute mereka ke agen papan todo.',
  'settings.taskSources.connectHint':
    'Sumber tugas menggunakan akun yang terhubung Anda. Hubungkan mereka dengan Integrations.',
  'settings.taskSources.disabledBanner':
    'Sumber tugas dinonaktifkan di pengaturan. Aktifkan mereka untuk melakukan polling secara otomatis.',
  'settings.taskSources.loadError': 'Gagal memuat sumber tugas',
  'settings.taskSources.addTitle': 'Tambahkan suatu sumber tugas',
  'settings.taskSources.provider': 'Penyedia',
  'settings.taskSources.name': 'Nama (opsional)',
  'settings.taskSources.namePlaceholder': 'mis. Masalah terbuka saya',
  'settings.taskSources.github.repo': 'Repositori (pemilik/nama, opsional)',
  'settings.taskSources.github.labels': 'Label (koma - dipisahkan)',
  'settings.taskSources.notion.database': 'ID Basis Data (papan)',
  'settings.taskSources.notion.browseDatabases': 'Jelajahi basis data',
  'settings.taskSources.notion.loadingDatabases': 'Memuat basis data…',
  'settings.taskSources.notion.selectDatabase': 'Pilih basis data…',
  'settings.taskSources.notion.noDatabases': 'Tidak ada basis data untuk koneksi ini.',
  'settings.taskSources.linear.team': 'ID tim (opsional)',
  'settings.taskSources.clickup.team': 'ID workspace (tim) (opsional)',
  'settings.taskSources.assignedToMe': 'Hanya item yang ditugaskan kepada saya',
  'settings.taskSources.add': 'Tambah sumber',
  'settings.taskSources.adding': 'Menambahkan…',
  'settings.taskSources.preview': 'Pratinjau',
  'settings.taskSources.previewResult': 'Tugas {count} cocok dengan penyaring ini',
  'settings.taskSources.fetchNow': 'Ambil sekarang',
  'settings.taskSources.fetching': 'Mengambil...',
  'settings.taskSources.fetchResult':
    'Merutekan {routed} dari {fetched} tugas; menghapus {pruned} tugas usang',
  'settings.taskSources.syncAll': 'Sinkronkan semua',
  'settings.taskSources.syncing': 'Menyinkronkan...',
  'settings.taskSources.configured': 'Sumber yang dikonfigurasi',
  'settings.taskSources.empty': 'Belum ada sumber tugas yang dikonfigurasi.',
  'settings.taskSources.proactive': 'Proaktif',
  'settings.taskSources.lastFetch': 'Terakhir mengambil',
  'settings.taskSources.never': 'Tidak pernah',
  'settings.taskSources.statusEnabled': 'Diaktifkan',
  'settings.taskSources.statusDisabled': 'Dinonaktifkan',
  'settings.taskSources.enable': 'Aktifkan',
  'settings.taskSources.disable': 'Nonaktifkan',
  'settings.taskSources.remove': 'Hapus',
  'settings.taskSources.removeConfirm':
    'Hapus sumber tugas ini? Semua riwayat tugas akan dihapus dan tak dapat dibatalkan.',
  'settings.taskSources.refresh': 'Segarkan',
  'settings.taskSources.providers.github': 'GitHub',
  'settings.taskSources.providers.notion': 'Notion',
  'settings.taskSources.providers.linear': 'Linear',
  'settings.taskSources.providers.clickup': 'ClickUp',
  'skills.dashboard.enable': 'Aktifkan alur kerja terjadwal',
  'skills.dashboard.disable': 'Nonaktifkan alur kerja terjadwal',
  'skills.dashboard.lastRun': 'Terakhir dijalankan',
  'skills.dashboard.nextRun': 'Dijalankan berikutnya',
  'skills.dashboard.cardOpenRunner': 'Buka di pemandu',
  'skills.new.title': 'Buat alur kerja',
  'settings.agents.title': 'Agen',
  'settings.agents.subtitle':
    'Atur agen yang tersedia untuk delegasi - membangun - dalam default dan agen custom Anda sendiri.',
  'settings.agents.menuDesc': 'Kelola built-in dan agen gubahan',
  'settings.agents.newAgent': 'Agen baru',
  'settings.agents.loadError': 'Gagal memuat agen',
  'settings.agents.empty': 'Belum ada agen',
  'settings.agents.sourceDefault': 'Bawaan',
  'settings.agents.sourceCustom': 'Kustom',
  'settings.agents.enable': 'Aktifkan agen',
  'settings.agents.disable': 'Nonaktifkan agen',
  'settings.agents.edit': 'Edit',
  'settings.agents.delete': 'Hapus',
  'settings.agents.reset': 'Atur ulang ke default',
  'settings.agents.modelLabel': 'Model AI',
  'settings.agents.toolsLabel': 'Perkakas',
  'settings.agents.toolsAll': 'Semua alat',
  'settings.agents.toolsCount': '{count} alat',
  'settings.agents.actionFailed': 'Gagal memperbarui agen',
  'settings.agents.orchestratorLocked': 'Penakluk selalu aktif.',
  'settings.agents.editor.createTitle': 'Agen baru',
  'settings.agents.editor.editTitle': 'Sunting agen',
  'settings.agents.editor.id': 'ID',
  'settings.agents.editor.idHint': 'Huruf kecil, nomor, _ dan - saja.',
  'settings.agents.editor.name': 'Nama',
  'settings.agents.editor.description': 'Deskripsi',
  'settings.agents.editor.model': 'Model (opsional)',
  'settings.agents.editor.modelPlaceholder': 'Pewaris, petunjuk: cepat, atau id model',
  'settings.agents.editor.systemPrompt': 'Prompt sistem (opsional)',
  'settings.agents.editor.tools': 'Alat yang diizinkan',
  'settings.agents.editor.toolsHint': 'Satu nama alat per baris. Gunakan * untuk semua alat.',
  'settings.agents.editor.defaultsNote':
    'Menyunting agen built-in menyimpan override yang dapat Anda reset nanti.',
  'settings.agents.editor.save': 'Simpan',
  'settings.agents.editor.create': 'Buat agen',
  'settings.agents.editor.saving': 'Menyimpan...',
  'nav.workflows': 'Workflows',
  'workflows.title': 'Alur Kerja',
  'workflows.subtitle':
    'Prosedur yang dapat digunakan ulang dan dijalankan — sebuah tujuan beserta langkah-langkah untuk mencapainya. Buat satu, instal dari URL, atau buka alur kerja untuk menjalankannya.',
  'workflows.createNew': 'Alur kerja baru',
  'workflows.listHeading': 'Workflows',
  'workflows.delete': 'Hapus Alur Kerja',
  'workflows.deleteError': 'Gagal menghapus alur kerja',
  'workflows.warnings': '{count} peringatan',
  'workflows.empty.title': 'Belum ada alur kerja',
  'workflows.empty.body':
    'Buat alur kerja untuk menentukan aturan dan skrip untuk fase siklus hidup tugas.',
  'workflows.create.title': 'Alur Kerja Baru',
  'workflows.create.subtitle': 'Tentukan kumpulan aturan terikat siklus hidup untuk agen.',
  'workflows.create.name': 'Name',
  'workflows.create.namePlaceholder': 'mis. Alur kerja proyek Python',
  'workflows.create.description': 'Description',
  'workflows.create.descriptionPlaceholder': 'Apa yang dilakukan alur kerja ini?',
  'workflows.create.whenToUse': 'Kapan digunakan',
  'workflows.create.whenToUsePlaceholder': 'Kapan agen harus menggunakan alur kerja ini?',
  'workflows.create.optional': '(opsional)',
  'workflows.create.createBtn': 'Buat alur kerja',
  'workflows.create.creating': 'Creating…',
  'workflows.create.createError': 'Tidak dapat membuat alur kerja',
  'workflows.create.successTitle': 'Alur kerja dibuat',
  'workflows.create.successMessage': 'berhasil dibuat.',
  'workflows.deleteConfirm.title': 'Hapus alur kerja',
  'workflows.deleteConfirm.body': 'Hapus "{name}"? Tindakan ini tidak dapat dibatalkan.',
  'workflows.detail.tags': 'Tags',
  'workflows.detail.location': 'Location',
  'workflows.detail.warnings': 'Warnings',
  'workflows.detail.phases': 'Phases',
  'workflows.detail.noPhases': 'Tidak ada fase yang ditentukan.',
  'workflows.detail.loadError': 'Gagal memuat alur kerja lengkap',
  'workflows.phase.rules': 'Rules',
  'workflows.phase.rules.empty': 'Tidak ada aturan.',
  'workflows.phase.scripts': 'Scripts',
  'workflows.phase.scripts.empty': 'Tidak ada skrip.',
  'workflows.phase.toolScope': 'Cakupan alat',
  'workflows.phase.toolScope.allow': 'Allow',
  'workflows.phase.toolScope.deny': 'Deny',
  'workflows.phase.toolScope.inherited': 'Diwarisi dari pengaturan default alur kerja.',
  'workflows.phase.toolScope.empty': 'Tidak ada batasan alat.',
  'workflows.phase.context': 'Context',
  'workflows.phase.context.empty': 'Tidak ada penyedia konteks.',
  'settings.agentsSection.title': 'Agents',
  'settings.agentsSection.description':
    'Kelola agen Anda, otonomi mereka, dan apa yang dapat mereka akses di komputer ini.',
  'settings.agentsSection.menuDesc': 'Registri, otonomi & akses OS',
  'settings.cryptoSection.title': 'Kripto',
  'settings.cryptoSection.description':
    'Kelola frasa pemulihan Anda dan lihat saldo di seluruh akun dompet Anda.',
  'settings.cryptoSection.menuDesc': 'Frasa pemulihan & saldo dompet',
  'settings.notificationsHub.title': 'Notifikasi',
  'settings.notificationsHub.description':
    'Lihat kotak masuk lansiran Anda dan kelola preferensi notifikasi serta perutean.',
  'settings.notificationsHub.menuDesc': 'Kotak masuk lansiran & preferensi notifikasi',
  'settings.notificationsHub.settingsItem': 'Pengaturan notifikasi',
  'settings.notificationsHub.settingsItemDesc': 'Preferensi & perutean',
  'settings.agents.editor.notFound': 'Agen tidak ditemukan.',
  'settings.agents.editor.modelInherit': 'Warisi (default platform)',
  'settings.agents.editor.modelHints': 'Petunjuk rute',
  'settings.agents.editor.modelTiers': 'Tingkatan model',
  'settings.agents.editor.modelCustom': 'ID model kustom…',
  'settings.agents.editor.modelCustomPlaceholder': 'mis. anthropic/claude-sonnet-4',
  'settings.agents.editor.selectTools': 'Tambah alat',
  'settings.agents.editor.toolsAllSelected': 'Semua alat',
  'settings.agents.editor.toolsNoneSelected': 'Tidak ada alat yang dipilih',
  'settings.agents.editor.removeToolAria': 'Hapus {tool}',
  'settings.agents.editor.toolsModalTitle': 'Alat yang diizinkan',
  'settings.agents.editor.toolsSelectedCount': '{count} dipilih',
  'settings.agents.editor.toolsSearchPlaceholder': 'Cari alat…',
  'settings.agents.editor.toolsAllowAll': 'Izinkan semua alat (*)',
  'settings.agents.editor.toolsAllowAllHint':
    'Agen ini dapat menggunakan semua alat yang tersedia.',
  'settings.agents.editor.toolsLoading': 'Memuat alat…',
  'settings.agents.editor.toolsLoadError': 'Gagal memuat alat',
  'settings.agents.editor.toolsEmpty': 'Tidak ada alat yang cocok dengan pencarian Anda.',
  'settings.agents.editor.toolsDone': 'Done',
  'settings.agents.editor.builtInReadonly':
    'Agen bawaan tidak dapat diedit. Anda dapat mengaktifkan, menonaktifkan, atau meresetnya dari daftar agen.',
  // Chat — agent-generated artifacts (#2779)
  'chat.artifact.aria': 'Artefak: {title}',
  'chat.artifact.generating': 'Membuat {kind}…',
  'chat.artifact.ready': 'Siap',
  'chat.artifact.failed': 'Gagal dibuat',
  'chat.artifact.download': 'Unduh',
  'chat.artifact.downloading': 'Mengunduh…',
  'chat.artifact.downloaded': 'Disimpan ke {path}',
  'chat.artifact.download_failed': 'Unduhan gagal: {reason}',
  'chat.artifact.retry': 'Coba lagi',
  'chat.artifact.reveal': 'Tampilkan di folder',
  'chat.artifact.show_more': 'Tampilkan selengkapnya',
  'chat.artifact.show_less': 'Tampilkan lebih sedikit',

  // Chat — files panel (#3024)
  'chat.files.chip.aria.one': '{count} file di chat ini',
  'chat.files.chip.aria.other': '{count} file di chat ini',
  'chat.files.panel.aria': 'File di chat ini',
  'chat.files.panel.title': 'File ({count})',
  'chat.files.panel.empty': 'Belum ada file. Minta agen membuatnya.',
  'chat.files.panel.close': 'Tutup panel file',
  'chat.files.delete.aria': 'Hapus {title}',
  'chat.files.delete.confirm': 'Hapus file ini?',
  'chat.files.delete.cancel': 'Batal',
  'chat.files.delete.action': 'Hapus',
  'chat.files.delete.failed': 'Tidak bisa menghapus file. Coba lagi.',
  'chat.files.error.not_desktop': 'Unduhan hanya tersedia di aplikasi desktop.',
  'chat.files.error.missing_artifact_id': 'ID artefak tidak ada.',
  'chat.files.error.missing_artifact_path': 'Jalur artefak tidak ada dalam respons core.',
  'chat.files.error.resolve_failed': 'Tidak dapat memuat artefak. Coba lagi.',
  'chat.files.error.download_failed': 'Unduhan gagal. Coba lagi.',
  'chat.files.error.delete_failed': 'Tidak bisa menghapus file. Coba lagi.',
  'autocomplete.debounceMs': 'Debounce (md)',
  'autocomplete.maxChars': 'Karakter konteks maks',
  'autocomplete.overlayTtlMs': 'Batas waktu overlay (md)',
  'memory.tab.council': 'Council',
  'activity.tabs.automations': 'Otomatisasi',
  'activity.tabs.automationsDescription':
    'Prosedur yang dapat digunakan kembali dan dijalankan — tujuan beserta langkah-langkah untuk mencapainya.',
  'activity.tabs.backgroundActivity': 'Bawah sadar',
  'activity.tabs.alerts': 'Peringatan',

  'intelligence.agents.title': 'Pustaka Agen',
  'intelligence.agents.subtitle':
    'Periksa spesialis yang dapat dijalankan dan kirim satu tugas ke agen tertentu.',
  'intelligence.agents.refresh': 'Segarkan',
  'intelligence.agents.loading': 'Memuat agen…',
  'intelligence.agents.failedToLoad': 'Tidak dapat memuat agen',
  'intelligence.agents.empty': 'Tidak ada agen yang dapat dijalankan.',
  'intelligence.agents.readOnly': 'Hanya baca',
  'intelligence.agents.writeCapable': 'Dapat menulis',
  'intelligence.agents.allTools': 'Semua alat',
  'intelligence.agents.toolCountOne': '{count} alat',
  'intelligence.agents.toolCountOther': '{count} alat',
  'intelligence.agents.subagentCountOne': '{count} subagen',
  'intelligence.agents.subagentCountOther': '{count} subagen',
  'intelligence.agents.startChat': 'Mulai chat',
  'intelligence.agents.startChatPrompt':
    'Mulai chat dengan agen ini. Perkenalkan spesialisasimu, tanyakan konteks yang diperlukan, lalu tunggu tugas saya.',
  'intelligence.agents.copyId': 'Salin ID',
  'intelligence.agents.copied': 'Disalin',
  'intelligence.agents.taskPlaceholder': 'Tugas untuk agen ini',
  'intelligence.agents.runTask': 'Jalankan tugas',
  'intelligence.agents.running': 'Berjalan…',
  'intelligence.agents.runFailed': 'Tidak dapat memulai agen yang dipilih',
  'intelligence.agents.model.inherit': 'Warisi',
  'intelligence.agents.tier.chat': 'Chat',
  'intelligence.agents.tier.reasoning': 'Penalaran',
  'intelligence.agents.tier.worker': 'Pekerja',
  'modelCouncil.title': 'Dewan Model',
  'modelCouncil.intro':
    'Ajukan satu pertanyaan, dapatkan jawaban independen dari beberapa model secara paralel, lalu model ketua mensintesis di mana mereka sepakat, tidak sepakat, dan apa yang ditambahkan masing-masing secara unik.',
  'modelCouncil.listTitle': 'Councils',
  'modelCouncil.listIntro':
    'Pilih dewan tersimpan, edit agen dan hakimnya, atau buat dewan baru untuk jenis keputusan tertentu.',
  'modelCouncil.addCouncil': 'Dewan baru',
  'modelCouncil.openCouncil': 'Buka dewan',
  'modelCouncil.editCouncil': 'Edit dewan',
  'modelCouncil.editCurrentCouncil': 'Edit dewan saat ini',
  'modelCouncil.editCouncilAria': 'Edit {name}',
  'modelCouncil.deleteCouncilAria': 'Hapus {name}',
  'modelCouncil.backToCouncils': 'Kembali ke daftar dewan',
  'modelCouncil.saveCouncil': 'Simpan dewan',
  'modelCouncil.savingCouncil': 'Saving…',
  'modelCouncil.cancelEdit': 'Cancel',
  'modelCouncil.loadingCouncils': 'Memuat dewan…',
  'modelCouncil.noCouncils': 'Belum ada dewan. Tambahkan satu untuk memulai.',
  'modelCouncil.noCouncilDescription': 'Tanpa deskripsi',
  'modelCouncil.registryErrorPrefix': 'Registri dewan gagal:',
  'modelCouncil.councilNameLabel': 'Nama dewan',
  'modelCouncil.councilDescriptionLabel': 'Description',
  'modelCouncil.councilDescriptionPlaceholder': 'Kapan menggunakan dewan ini',
  'modelCouncil.selectModel': 'Select',
  'modelCouncil.modelPickerHelp': 'Pilih petunjuk routing atau pin model penyedia yang tepat.',
  'modelCouncil.closeModelPicker': 'Close',
  'modelCouncil.hint.chat': 'Obrolan',
  'modelCouncil.hint.code': 'Kode',
  'modelCouncil.hint.default': 'Bawaan',
  'modelCouncil.hint.reasoning': 'Penalaran',
  'modelCouncil.hint.summarize': 'Ringkasan',
  'modelCouncil.modelPickerHints': 'Hints',
  'modelCouncil.modelPickerProviderModel': 'Penyedia + model',
  'modelCouncil.modelProviderLabel': 'Penyedia model',
  'modelCouncil.modelIdLabel': 'ID model',
  'modelCouncil.useProviderModel': 'Gunakan model penyedia',
  'modelCouncil.questionLabel': 'Question',
  'modelCouncil.questionPlaceholder': 'Ajukan pertanyaan ke dewan…',
  'modelCouncil.membersLabel': 'Model anggota',
  'modelCouncil.maxMembersNote': 'hingga {max}',
  'modelCouncil.memberPlaceholder': 'mis. gpt-5.2',
  'modelCouncil.memberAria': 'Model anggota {n}',
  'modelCouncil.removeMemberAria': 'Hapus model anggota {n}',
  'modelCouncil.addMember': '+ Tambah model',
  'modelCouncil.settingsTitle': 'Pengaturan dewan',
  'modelCouncil.settingsSummary': '{count} juri · hakim: {judge}',
  'modelCouncil.juryCountLabel': 'Jumlah juri',
  'modelCouncil.debateRoundsLabel': 'Putaran debat',
  'modelCouncil.debateRoundsHelp':
    'Setiap juri terus berdebat lintas putaran sebelum hakim menulis sintesis akhir.',
  'modelCouncil.judgeAgentLabel': 'Agen hakim',
  'modelCouncil.defaultJudge': 'Hakim default',
  'modelCouncil.savedProfile': 'Profil tersimpan',
  'modelCouncil.customAgent': 'Agen kustom',
  'modelCouncil.judgeProfileLabel': 'Profil hakim',
  'modelCouncil.chooseProfile': 'Pilih profil',
  'modelCouncil.judgeNameLabel': 'Nama hakim',
  'modelCouncil.judgeNamePlaceholder': 'Hakim utama',
  'modelCouncil.rosterHeading': 'Daftar dewan',
  'modelCouncil.rosterHelp':
    'Setiap juri dapat mewarisi agen default, memakai profil tersimpan, atau menjadi profil kustom untuk run ini.',
  'modelCouncil.loadingProfiles': 'Memuat profil…',
  'modelCouncil.jurorLabel': 'Juri {n}',
  'modelCouncil.profileModeLabel': 'Sumber profil',
  'modelCouncil.mode.default': 'Default',
  'modelCouncil.mode.profile': 'Profil',
  'modelCouncil.mode.custom': 'Kustom',
  'modelCouncil.memberProfileAria': 'Profil juri {n}',
  'modelCouncil.memberNameAria': 'Nama juri {n}',
  'modelCouncil.memberNamePlaceholder': 'Nama agen',
  'modelCouncil.profileModelPlaceholder': 'Timpa model profil',
  'modelCouncil.memberBriefAria': 'Brief juri {n}',
  'modelCouncil.memberBriefPlaceholder': 'Perspektif juri ini',
  'modelCouncil.jurorFallback': 'Juri',
  'modelCouncil.sharedReasoningLabel': 'File penalaran bersama',
  'modelCouncil.sharedReasoningHelp':
    'Dewan bekerja pada draf bersama ini sebelum hakim menulis sintesis.',
  'modelCouncil.liveScratchpadHelp':
    'Pembaruan juri ditambahkan di sini setelah setiap putaran, lalu dimasukkan ke putaran berikutnya.',
  'modelCouncil.liveScratchpadBadge': 'Live',
  'modelCouncil.scratchpadRoundHeading': 'Pembaruan putaran {round}',
  'modelCouncil.scratchpadNoResponse': 'Tidak ada respons',
  'modelCouncil.chairLabel': 'Model ketua',
  'modelCouncil.chairPlaceholder': 'mis. claude-opus-4-8',
  'modelCouncil.chairHelp': 'Ketua membaca setiap jawaban anggota dan menulis sintesis.',
  'modelCouncil.run': 'Kumpulkan dewan',
  'modelCouncil.running': 'Convening…',
  'modelCouncil.runningHint': 'Menanyai anggota secara paralel, lalu mensintesis…',
  'modelCouncil.deliberationHeading': 'Deliberasi dewan',
  'modelCouncil.deliberationHelp':
    'Maskot menunjukkan setiap agen sedang berpikir saat file penalaran bersama sedang digunakan.',
  'modelCouncil.debateRoundInstruction':
    'Tanggapi juri lainnya. Pertahankan ketidaksepakatan, revisi pandangan Anda jika beralasan, dan tetap eksplisitkan kesimpulan Anda saat ini.',
  'modelCouncil.debateFinalInstruction':
    'Ini adalah putaran juri terakhir Anda. Konvergensi di mana bukti mendukung, sebutkan ketidaksepakatan yang tersisa, dan berikan hakim kesimpulan yang jelas.',
  'modelCouncil.roundLabel': 'Putaran {round}',
  'modelCouncil.currentRoundThinking': 'Melanjutkan putaran berikutnya…',
  'modelCouncil.thinkingBadge': 'Thinking',
  'modelCouncil.thinkingWithBrief': 'Bekerja dari perspektif ini: {brief}',
  'modelCouncil.thought.evidence':
    'Memeriksa bukti, asumsi, dan apa yang sudah tercatat dalam file penalaran bersama.',
  'modelCouncil.thought.plan': 'Merancang jalur praktis dan di mana eksekusi bisa terhambat.',
  'modelCouncil.thought.risk':
    'Mencari modus kegagalan, konteks yang hilang, dan kesimpulan yang rapuh.',
  'modelCouncil.thought.tradeoffs':
    'Membandingkan pertukaran sebelum memberikan hakim posisi yang ringkas.',
  'modelCouncil.thought.synthesis':
    'Menyiapkan pandangan berbeda agar hakim dapat membandingkan ketidaksepakatan nyata.',
  'modelCouncil.judgeWaitingBadge': 'Judge',
  'modelCouncil.judgeWaitingThought':
    'Menunggu jawaban juri, lalu membaca file penalaran bersama untuk sintesis.',
  'modelCouncil.judgeSynthesizingBadge': 'Synthesizing',
  'modelCouncil.judgeSynthesizingThought':
    'Membaca pemikiran langsung juri dan menulis sintesis akhir dewan.',
  'modelCouncil.errorPrefix': 'Dewan gagal:',
  'modelCouncil.resultsHeading': 'Hasil dewan',
  'modelCouncil.memberAnswered': 'Answered',
  'modelCouncil.memberFailed': 'Failed',
  'modelCouncil.synthesisHeading': 'Synthesis',
  'modelCouncil.synthesisBy': 'oleh {model}',
  'modelCouncil.usageHeading': 'Penggunaan debat',
  'modelCouncil.usageEstimated':
    'Perkiraan jumlah token dari prompt dan respons debat. Harga sebenarnya memerlukan penggunaan penyedia dari RPC dewan.',
  'modelCouncil.usageEstimatedBadge': 'Estimasi token',
  'modelCouncil.usageInputTokens': 'Input',
  'modelCouncil.usageOutputTokens': 'Output',
  'modelCouncil.usageTotalTokens': 'Total',
  'graphCohesion.brokerBadge': 'broker',
  'graphCohesion.brokerTitle':
    'Lubang struktural: tetangga entitas ini tidak saling terhubung — entitas inilah satu-satunya tautan di antara mereka.',
  'graphCohesion.colCohesion': 'Kohesi',
  'graphCohesion.colEntity': 'Entitas',
  'graphCohesion.colLinks': 'Tautan',
  'graphCohesion.colRank': '#',
  'graphCohesion.empty': 'Belum ada graf pengetahuan.',
  'graphCohesion.emptyHint':
    'Saat asisten mencatat fakta-fakta terhubung tentang Anda, struktur pengelompokannya akan muncul di sini.',
  'graphCohesion.errorPrefix': 'Tidak dapat memuat graf:',
  'graphCohesion.intro':
    'Seberapa rapat lingkungan di sekitar setiap entitas terjalin. Broker — entitas yang tetangganya tidak saling terhubung — adalah titik-titik tunggal yang menyatukan klaster yang sebenarnya terpisah, hal yang tidak dapat diungkap oleh pengurutan frekuensi atau PageRank.',
  'graphCohesion.loading': 'Menghitung kohesi…',
  'graphCohesion.metricConnections': 'Koneksi',
  'graphCohesion.metricEntities': 'Entitas',
  'graphCohesion.metricTriangles': 'Segitiga',
  'graphCohesion.namespaceAll': 'Semua ruang nama',
  'graphCohesion.namespaceLabel': 'Ruang nama',
  'graphCohesion.noBrokers': 'Belum ada entitas dengan dua atau lebih koneksi.',
  'graphCohesion.rankedHeading': 'Broker — lingkungan paling renggang',
  'graphCohesion.retry': 'Coba lagi',
  'graphCohesion.summaryCaption': 'Pengelompokan rata-rata {avg} · transitivitas {transitivity}',
  'graphCohesion.title': 'Kohesi Graf',
  'memory.tab.cohesion': 'Cohesion',

  'harnessInit.title': 'Menyiapkan semuanya',

  'announcement.gotIt': 'Mengerti',
  'harnessInit.subtitle':
    'OpenHuman sedang menyiapkan komponen yang dibutuhkan saat pertama kali dijalankan.',
  'harnessInit.stepPython': 'Runtime Python',
  'harnessInit.stepSpacy': 'Model bahasa',
  'harnessInit.stepNode': 'Runtime Node.js',
  'harnessInit.statePending': 'Menunggu',
  'harnessInit.stateRunning': 'Memasang…',
  'harnessInit.stateDone': 'Siap',
  'harnessInit.stateSkipped': 'Dilewati',
  'harnessInit.stateFailed': 'Gagal',
  'harnessInit.failedMessage':
    'Beberapa langkah penyiapan tidak selesai. Anda dapat mencoba lagi atau melanjutkan — OpenHuman akan menggunakan cadangan bawaan.',
  'harnessInit.retry': 'Coba lagi',
  'harnessInit.continueAnyway': 'Lanjutkan saja',
  'harnessInit.runInBackground': 'Jalankan di latar belakang',
  'harnessInit.backgroundHint': 'Anda dapat terus menggunakan OpenHuman saat proses ini selesai.',

  'keyring.consent.title': 'Penyimpanan aman tidak tersedia',
  'keyring.consent.description':
    'Keychain sistem operasi Anda tidak dapat diakses. OpenHuman memerlukan izin Anda untuk menyimpan rahasia menggunakan penyimpanan lokal terenkripsi.',
  'keyring.consent.reasonPrefix': 'Alasan:',
  'keyring.consent.showDetails': 'Apa artinya ini?',
  'keyring.consent.hideDetails': 'Sembunyikan detail',
  'keyring.consent.tradeoffTitle': 'Kompromi keamanan',
  'keyring.consent.tradeoffBody':
    'Dengan penyimpanan lokal terenkripsi, rahasia Anda dienkripsi di disk menggunakan kunci master yang disimpan bersama data. Ini kurang aman dibandingkan keychain OS yang menggunakan perlindungan berbasis perangkat keras. Pencadangan atau sinkronisasi file mungkin menyertakan data terenkripsi.',
  'keyring.consent.consentButton': 'Gunakan penyimpanan lokal terenkripsi',
  'keyring.consent.retryButton': 'Coba ulang OS Keychain',
  'keyring.consent.declineButton': 'Tolak',
  'keyring.consent.retrying': 'Mencoba ulang…',
  'keyring.consent.error': 'Gagal menyimpan preferensi. Silakan coba lagi.',
  'keyring.consent.retryFailed': 'Keychain masih tidak tersedia.',
  'keyring.settings.title': 'Keamanan',
  'keyring.settings.storageMode': 'Mode penyimpanan rahasia',
  'keyring.settings.mode.osKeychain': 'Keychain OS',
  'keyring.settings.mode.encryptedFile': 'Lokal terenkripsi',
  'keyring.settings.mode.consentPending': 'Belum dikonfigurasi',
  'keyring.settings.mode.declined': 'Ditolak',
  'keyring.settings.availability': 'Ketersediaan keychain',
  'keyring.settings.available': 'OS keychain tersedia',
  'keyring.settings.unavailable': 'OS keychain tidak tersedia',
  'keyring.settings.backend': 'Backend',
  'keyring.settings.retryButton': 'Coba ulang deteksi keychain',
  'keyring.settings.retryFailed': 'Percobaan ulang gagal. Keychain masih tidak tersedia.',
  'keyring.settings.consentTitle': 'Persetujuan penyimpanan',
  'keyring.settings.consentDescription':
    'Pilih bagaimana rahasia disimpan saat keychain OS tidak tersedia.',
  'keyring.settings.grantConsent': 'Izinkan penyimpanan lokal terenkripsi',
  'keyring.settings.revokeConsent': 'Tolak penyimpanan lokal',
  'pages.settings.account.security': 'Keamanan',
  'pages.settings.account.securityDesc': 'Mode penyimpanan rahasia dan status keychain',
  // #002 memory-pipeline-hardening: degraded badges + typed remediation.
  'memoryTree.status.statusDegraded': 'Terdegradasi',
  'memoryTree.status.degradedRecall': 'Recall semantik dinonaktifkan',
  'memoryTree.status.degradedStructure': 'Struktur wiki tidak lengkap',
  'memoryTree.status.extractionCoverage': 'Cakupan ekstraksi: {pct}% bagian memiliki struktur',
  'memory.health.remediation.budget_exhausted':
    'Embedding memori mencapai batas anggaran terkelola. Siapkan embedding Ollama lokal (Pengaturan → AI → Sematan) atau tambahkan kunci API embedding Anda sendiri untuk terus membangun memori.',
  'memory.health.remediation.auth_missing':
    'Kredensial embedding tidak ditemukan. Masuk ke OpenHuman, atau siapkan embedding Ollama lokal di Pengaturan → AI → Sematan.',
  'memory.health.remediation.auth_invalid':
    'Kredensial embedding Anda ditolak. Autentikasi ulang, atau beralih ke embedding Ollama lokal di Pengaturan → AI → Sematan.',
  'memory.health.remediation.embeddings_unconfigured':
    'Tidak ada penyedia embedding yang dikonfigurasi, sehingga recall semantik nonaktif. Siapkan embedding Ollama lokal (disarankan) atau tambahkan kunci embedding di Pengaturan → AI → Sematan.',
  'memory.health.remediation.embedding_dim_mismatch':
    'Model embedding mengembalikan ukuran vektor yang salah (memori mengharapkan 1024 dimensi). Pilih model 1024 dimensi, atau minta 1024 dimensi dari penyedia Anda.',
  'memory.health.remediation.local_model_unavailable':
    'Model lokal yang diperlukan tidak tersedia. Instal/jalankan Ollama dan unduh model, atau alihkan beban kerja ini ke penyedia cloud di Pengaturan → AI.',
  'memory.health.remediation.extraction_timeout':
    'Model ekstraksi memori kehabisan waktu, sehingga wiki memiliki sedikit struktur. Ganti model ekstraksi memori ke yang lebih cepat di Pengaturan → AI.',
  'memory.health.remediation.summarizer_unavailable':
    'Tidak ada penyedia ringkasan yang tersedia untuk Buat Pohon Ringkasan. Aktifkan AI lokal (Ollama), atau aktifkan ringkasan cloud di Pengaturan → AI → Memori.',
  'memory.health.remediation.empty_input_refused':
    'Item memori dilewati karena teksnya kosong. Tidak diperlukan tindakan — item baru tetap disematkan seperti biasa.',
  'memory.health.remediation.storage_unavailable':
    'OpenHuman tidak dapat menulis ke penyimpanan memorinya — disk atau kartu SD tampaknya rusak, penuh, atau hanya-baca. Periksa drive dan kosongkan ruang; pemrosesan memori akan dilanjutkan secara otomatis setelah penyimpanan dapat ditulisi kembali.',
  'memory.health.remediation.transient':
    'Kesalahan sementara mengganggu pemrosesan memori. Akan dicoba lagi secara otomatis.',
  'memory.health.remediation.unknown':
    'Pemrosesan memori mengalami masalah. Periksa Pengaturan → AI untuk konfigurasi.',
  // Chat — agent-generated artifacts (#2779)

  // Chat composer toolbar
  'composer.attachFile': 'Lampirkan file',
  'composer.modelSelector': 'Model',
  'composer.voiceMode': 'Mode suara',
  'composer.qualityHigh': 'Tinggi',
  // Agent activity level
  'activityLevel.title': 'Tingkat aktivitas agen',
  'activityLevel.description':
    'Kendalikan seberapa proaktif agen Anda. Tingkat lebih tinggi menggunakan lebih banyak token.',
  'activityLevel.off': 'Mati',
  'activityLevel.offDesc':
    'Tidak ada pemrosesan latar belakang. Hanya sinkronisasi saat tombol ditekan.',
  'activityLevel.minimal': 'Minimal',
  'activityLevel.minimalDesc': 'Sinkronisasi sumber sekali sehari. Tidak ada pesan proaktif.',
  'activityLevel.moderate': 'Sedang',
  'activityLevel.moderateDesc': 'Sinkronisasi setiap jam. Ringkasan harian. Menyarankan tindakan.',
  'activityLevel.active': 'Aktif',
  'activityLevel.activeDesc':
    'Sinkronisasi setiap 10 menit. Memantau saluran, mengurutkan, dan menyusun balasan.',
  'activityLevel.alwaysOn': 'Selalu aktif',
  'activityLevel.alwaysOnDesc':
    'Sinkronisasi real-time. Otonomi penuh dalam batas yang ditentukan.',
  'activityLevel.currentMonth': 'Bulan ini: ${amount}',
  'activityLevel.saved': 'Tingkat aktivitas diperbarui.',
  'activityLevel.default': 'bawaan',
  'activityLevel.costFree': '$0',
  'activityLevel.costRange': '~${min}–${max}/bln',

  // Sync budget dialog
  'syncBudget.title': 'Anggaran sinkronisasi',
  'syncBudget.maxTokens': 'Token maksimum per sinkronisasi',
  'syncBudget.maxTokensHelp': 'Hentikan sinkronisasi setelah sejumlah token ini dikonsumsi.',
  'syncBudget.maxCost': 'Biaya maksimum per sinkronisasi (USD)',
  'syncBudget.maxCostHelp': 'Batas dolar mutlak per jalannya sinkronisasi.',
  'syncBudget.syncDepth': 'Kedalaman sinkronisasi',
  'syncBudget.syncDepthHelp': 'Hanya ambil item dari jendela waktu ini.',
  'syncBudget.days7': '7 hari terakhir',
  'syncBudget.days30': '30 hari terakhir',
  'syncBudget.days90': '90 hari terakhir',
  'syncBudget.allTime': 'Sepanjang waktu',
  'syncBudget.unlimited': 'Tidak terbatas',
  'syncBudget.saved': 'Anggaran disimpan.',

  // Sync confirm dialog
  'syncConfirm.title': 'Konfirmasi sinkronisasi',
  'syncConfirm.message':
    'Sinkronisasi ini akan memproses ~{items} item (~{tokens} token, est. ${cost}).',
  'syncConfirm.budgetNote': 'Batas anggaran: ${max}',
  'syncConfirm.proceed': 'Lanjutkan',
  'syncConfirm.cancel': 'Batal',
  'syncConfirm.estimating': 'Memperkirakan biaya...',

  // Monthly cost badge
  'monthlyCost.badge': '${amount} bulan ini',
  'monthlyCost.noData': 'Tidak ada sinkronisasi bulan ini',

  // Onboarding: Custom > Activity
  'onboarding.custom.stepperActivity': 'Aktivitas',
  'onboarding.custom.stepperVault': 'Vault',
  'onboarding.custom.activity.title': 'Aktivitas agen',
  'onboarding.custom.activity.subtitle':
    'Seberapa proaktif agen Anda memantau dan bertindak di latar belakang.',
  'onboarding.custom.activity.defaultDesc':
    'Aktivitas sedang — sinkronisasi per jam, ringkasan harian.',
  'onboarding.custom.activity.configureDesc':
    'Pilih tingkat aktivitas Anda sendiri. Konfigurasi di Pengaturan › Tingkat aktivitas agen.',
  'onboarding.custom.vault.title': 'Pengaturan Memori & Vault',
  'onboarding.custom.vault.subtitle':
    'Konfirmasi di mana catatan memori ditulis, bagaimana data sumber dibaca, dan apakah pipeline vault Anda sehat.',
  'onboarding.custom.vault.defaultDesc':
    'Gunakan default memori yang dikelola OpenHuman. Jalur vault dan kondisi sinkronisasi tetap dapat ditinjau nanti.',
  'onboarding.custom.vault.configureDesc':
    'Tinjau kepemilikan vault, jalankan pemeriksaan kesehatan, dan sesuaikan kontrol memori sekarang.',
  'onboarding.custom.vault.localDisabledReason':
    'Pengaturan terkelola memerlukan masuk OpenHuman dan tidak tersedia dalam mode lokal.',
  'onboarding.custom.vault.exitError': 'Tidak dapat menyelesaikan orientasi. Silakan coba lagi.',
  'vaultHealth.title': 'Daftar Periksa Kesehatan Vault',
  'vaultHealth.setupTitle': 'Kesehatan pengaturan vault',
  'vaultHealth.workspaceVault': 'Vault ruang kerja:',
  'vaultHealth.refresh': 'Segarkan',
  'vaultHealth.refreshing': 'Menyegarkan…',
  'vaultHealth.revealFolder': 'Tampilkan Folder',
  'vaultHealth.openInObsidian': 'Buka di Obsidian',
  'vaultHealth.installObsidian': 'Pasang Obsidian',
  'vaultHealth.openObsidianError': 'Tidak dapat membuka Obsidian',
  'vaultHealth.revealError': 'Tidak dapat menampilkan folder vault',
  'vaultHealth.downloadError': 'Tidak dapat membuka halaman unduhan Obsidian',
  'vaultHealth.loadError': 'Tidak dapat memuat kesehatan vault:',
  'vaultHealth.lastSync': 'Sinkronisasi terakhir:',
  'vaultHealth.passed': 'Lulus',
  'vaultHealth.needsAttention': 'Perlu perhatian',
  'vaultHealth.existsLabel': 'Jalur vault ruang kerja ada',
  'vaultHealth.existsRecovery':
    'Folder vault tidak ditemukan. Mulai sinkronisasi atau buat folder ini, lalu segarkan daftar periksa ini.',
  'vaultHealth.writableLabel': 'Vault dapat ditulis oleh OpenHuman',
  'vaultHealth.writableRecovery':
    'OpenHuman belum dapat menulis ke vault ini. Berikan izin tulis dan segarkan.',
  'vaultHealth.obsidianLabel': 'Vault terdaftar di Obsidian',
  'vaultHealth.obsidianRecovery':
    'Di Obsidian, pilih "Buka folder sebagai vault" untuk jalur ini, lalu segarkan daftar periksa ini.',
  'vaultHealth.pipelineLabel': 'Pipeline memori sehat',
  'vaultHealth.pipelineRecovery':
    'Pipeline memori dijeda atau mengalami kesalahan. Aktifkan kembali Sinkronisasi Otomatis di status Pohon Memori dan coba lagi.',
  'vaultHealth.timeNever': 'Tidak pernah',
  'vaultHealth.timeJustNow': 'baru saja',
  'vaultHealth.timeMinAgo': '{n} menit lalu',
  'vaultHealth.timeHrAgo': '{n} jam lalu',
  'vaultHealth.timeDayAgo': '{n} hari lalu',
  'vaultHealth.timeDaysAgo': '{n} hari lalu',
  'memoryData.howItWorks': 'Cara kerja penyimpanan memori',
  'memoryData.workspaceVault': 'Vault ruang kerja · tulis',
  'memoryData.workspaceVaultDesc':
    'OpenHuman menulis catatan memori yang dihasilkan ke memory_tree/content.',
  'memoryData.connectedSources': 'Sumber terhubung · baca',
  'memoryData.connectedSourcesDesc':
    'Folder, kotak surat, obrolan, dan repositori diimpor untuk pengindeksan memori — file aslinya tidak pernah ditulis ulang.',
  'memoryData.internalFiles': 'File pohon memori internal',
  'memoryData.internalFilesDesc':
    'Indeks, status antrean, dan ringkasan dikelola oleh OpenHuman agar pemanggilan dan sinkronisasi tetap sehat.',
  'memoryData.windowError': 'Jendela memori',
  'memoryData.windowUpdated': 'Jendela memori diperbarui',
  'memoryData.windowUpdatedMsg': 'Diatur ke {window}.',
  'skills.create.whenToUse': 'Kapan digunakan',
  'skills.create.whenToUsePlaceholder': 'mis. saat pengguna meminta untuk memilah kotak masuk',
  'skills.create.whenToUseHelp':
    'Pemicu yang dikenali agen untuk memutuskan menjalankan alur kerja ini. Biarkan kosong untuk memakai deskripsi.',
  'skills.create.inputs.row.descriptionError': 'Deskripsi diperlukan untuk setiap input.',
  'skills.detail.run': 'Jalankan',
  'skills.detail.runAriaLabel': 'Jalankan alur kerja ini',
  'skills.run.title': 'Alur kerja',
  'workflows.installFromUrl': 'Instal dari URL',
  // Security banner (approval-gate host-aware boot state)
  'security.approvalGateDisabled.title': 'Gerbang persetujuan dinonaktifkan',
  'security.approvalGateDisabled.body':
    'OPENHUMAN_APPROVAL_GATE=0 disetel di lingkungan Anda. Alat dengan efek eksternal akan berjalan tanpa meminta konfirmasi.',
  'security.approvalGateOverrideIgnored.title': 'Override diblokir',
  'security.approvalGateOverrideIgnored.body':
    'Override OPENHUMAN_APPROVAL_GATE=0 terdeteksi tetapi diabaikan: aplikasi desktop selalu menjaga gerbang persetujuan tetap aktif.',

  // Run queue
  'runQueue.mode.interrupt': 'Interupsi',
  'runQueue.mode.steer': 'Arahkan',
  'runQueue.mode.followup': 'Tindak lanjut',
  'runQueue.mode.collect': 'Tambah konteks',
  'runQueue.queued': 'Pesan masuk antrean',
  'runQueue.steerHint': 'Arahkan giliran saat ini',
  'runQueue.followupHint': 'Masukkan ke antrean sebagai tindak lanjut',
  'runQueue.collectHint': 'Tambahkan sebagai konteks tambahan',
  'runQueue.status': '{total} dalam antrean',
  'runQueue.cleared': 'Antrean dikosongkan',
  'notch.ready': 'Siap',
  'notch.processing': 'Memproses…',
  'notch.listening': 'Mendengar…',
  'notch.thinking': 'Berpikir…',
  'notch.speaking': 'Berbicara…',
  'notch.transcribing': 'Mentranskrip…',
  'notch.executing': 'Mengeksekusi…',
  'memory.tab.orchestration': 'Orkestrasi',
  'memory.tab.orchestrationDescription':
    'Jalankan alur kerja multi-agen — sebarkan satu pertanyaan ke agen-agen paralel, periksa silang temuan mereka, dan saksikan setiap fase berakhir menjadi satu jawaban tersintesis.',
  'orchestration.subtitle':
    'Mulai alur kerja multi-agen, pantau kemajuan fasenya, dan baca hasil tersintesisnya.',
  'orchestration.loading': 'Memuat alur kerja…',
  'orchestration.failedToLoad': 'Gagal memuat alur kerja',
  'orchestration.definitions': 'Alur kerja tersedia',
  'orchestration.noDefinitions': 'Tidak ada definisi alur kerja yang tersedia.',
  'orchestration.approvalRequired': 'Persetujuan diperlukan',
  'orchestration.start': 'Mulai',
  'orchestration.confirmStart': 'Mulai jalankan',
  'orchestration.starting': 'Memulai…',
  'orchestration.questionLabel': 'Pertanyaan riset (opsional)',
  'orchestration.questionPlaceholder': 'Apa yang harus diteliti para agen?',
  'orchestration.runProgress': 'Kemajuan eksekusi',
  'orchestration.recentRuns': 'Eksekusi terbaru',
  'orchestration.noRuns': 'Belum ada eksekusi alur kerja.',
  'orchestration.close': 'Tutup',
  'orchestration.tier.readOnly': 'Hanya-baca',
  'orchestration.tier.standard': 'Standar',
  'orchestration.tier.editCapable': 'Mampu menyunting',
  'orchestration.approval.title': 'Setujui eksekusi alur kerja ini',
  'orchestration.approval.body':
    'Ini adalah eksekusi berbiaya tinggi atau berkonkurensi tinggi dan memerlukan persetujuan eksplisit Anda sebelum dimulai:',
  'orchestration.approval.reason.tier':
    'Agen-agennya dapat melakukan tindakan di luar riset hanya-baca.',
  'orchestration.approval.reason.concurrency': 'Ini menjalankan banyak agen pada saat yang sama.',
  'orchestration.approval.reason.children':
    'Ini dapat memunculkan agen dalam jumlah sangat besar secara total.',
  'orchestration.approval.tier': 'Tingkat keamanan',
  'orchestration.approval.concurrency': 'Konkurensi',
  'orchestration.approval.maxChildren': 'Maks. agen',
  'orchestration.approval.approve': 'Setujui & mulai',
  'orchestration.approval.starting': 'Memulai…',
  'orchestration.approval.cancel': 'Batal',
  'orchestration.runStatus.pending': 'Menunggu',
  'orchestration.runStatus.running': 'Berjalan',
  'orchestration.runStatus.completed': 'Selesai',
  'orchestration.runStatus.failed': 'Gagal',
  'orchestration.runStatus.cancelled': 'Dibatalkan',
  'orchestration.runStatus.interrupted': 'Terputus',
  'orchestration.phaseStatus.pending': 'Menunggu',
  'orchestration.phaseStatus.running': 'Berjalan',
  'orchestration.phaseStatus.completed': 'Selesai',
  'orchestration.phaseStatus.failed': 'Gagal',
  'orchestration.detail.stop': 'Hentikan',
  'orchestration.detail.resume': 'Lanjutkan',
  'orchestration.detail.agents': 'agen',
  'orchestration.detail.childRefs': 'Agen anak',
  'orchestration.detail.synthesis': 'Sintesis akhir',
  // ── Agent Profiles ───────────────────────────────────────────────────────
  'settings.profiles.title': 'Profil Agen',
  'settings.profiles.subtitle':
    'Agen dengan kepribadian — masing-masing dengan jiwa, memori, konektor, dan keterampilannya sendiri.',
  'settings.profiles.menuDesc': 'Buat dan kelola profil agen',
  'settings.profiles.new': 'Profil baru',
  'settings.profiles.empty': 'Belum ada profil agen',
  'settings.profiles.loadError': 'Tidak dapat memuat profil',
  'settings.profiles.active': 'Aktif',
  'settings.profiles.setActive': 'Jadikan aktif',
  'settings.profiles.sourceBuiltIn': 'Bawaan',
  'settings.profiles.sourceCustom': 'Khusus',
  'settings.profiles.deleteConfirm': 'Hapus profil ini? Tindakan ini tidak dapat dibatalkan.',
  'settings.profiles.editor.createTitle': 'Profil baru',
  'settings.profiles.editor.editTitle': 'Edit profil',
  'settings.profiles.editor.name': 'Nama',
  'settings.profiles.editor.id': 'ID',
  'settings.profiles.editor.idHint': 'Hanya huruf kecil, angka, dan tanda hubung.',
  'settings.profiles.editor.description': 'Deskripsi',
  'settings.profiles.editor.soul': 'Jiwa (SOUL.md)',
  'settings.profiles.editor.soulHint':
    'Identitas khusus untuk profil ini. Kosong akan kembali ke SOUL.md ruang kerja.',
  'settings.profiles.editor.baseAgent': 'Agen dasar',
  'settings.profiles.editor.baseAgentHint':
    'Definisi agen yang dijalankan profil ini (mis. orchestrator).',
  'settings.profiles.editor.model': 'Model',
  'settings.profiles.editor.modelHint': 'Penggantian model opsional. Kosong akan mewarisi default.',
  'settings.profiles.editor.temperature': 'Temperatur',
  'settings.profiles.editor.systemPromptSuffix': 'Sufiks prompt sistem',
  'settings.profiles.editor.agentConversations': 'Ingat percakapan agen',
  'settings.profiles.editor.agentConversationsHint':
    'Sertakan memori obrolan sebelumnya dan antar-obrolan dalam konteks profil ini.',
  'settings.profiles.editor.memorySources': 'Sumber memori',
  'settings.profiles.editor.memorySourcesHint': 'Sumber memori yang diingat profil ini.',
  'settings.profiles.editor.connectors': 'Konektor',
  'settings.profiles.editor.connectorsHint': 'Toolkit Composio yang dapat digunakan profil ini.',
  'settings.profiles.editor.skills': 'Keterampilan',
  'settings.profiles.editor.skillsHint':
    'Alur kerja yang dapat didaftar dan dijalankan profil ini.',
  'settings.profiles.editor.mcpServers': 'Server MCP',
  'settings.profiles.editor.mcpServersHint': 'Server MCP yang dapat dijangkau profil ini.',
  'settings.profiles.editor.all': 'Semua',
  'settings.profiles.editor.selected': 'Terpilih',
  'settings.profiles.editor.addPlaceholder': 'Ketik id, tekan Enter',
  'settings.profiles.editor.removeAria': 'Hapus {item}',
  'settings.profiles.editor.notFound': 'Profil tidak ditemukan',
  'settings.profiles.editor.saving': 'Menyimpan…',
  'settings.profiles.editor.idRequired': 'ID profil tidak boleh kosong',
  'agentworld.jobs.applyModal.title': 'Lamar Pekerjaan',
  'agentworld.jobs.applyModal.successHeading': 'Proposal berhasil dikirim!',
  'agentworld.jobs.applyModal.successBody': 'Pemasang lowongan akan meninjau lamaran Anda.',
  'agentworld.jobs.applyModal.coverLetterLabel': 'Surat Lamaran',
  'agentworld.jobs.applyModal.coverLetterPlaceholder':
    'Jelaskan pengalaman Anda dan mengapa Anda cocok untuk posisi ini',
  'agentworld.jobs.applyModal.bidAmountLabel': 'Jumlah Tawaran',
  'agentworld.jobs.applyModal.bidAmountPlaceholder': 'mis. 450 USDC',
  'agentworld.jobs.applyModal.deliveryLabel': 'Estimasi Pengiriman',
  'agentworld.jobs.applyModal.deliveryPlaceholder': 'mis. 2 minggu',
  'agentworld.jobs.applyModal.cancel': 'Batal',
  'agentworld.jobs.applyModal.submit': 'Kirim Lamaran',
  'agentworld.jobs.applyModal.submitting': 'Melamar…',
  'agentworld.messaging.missingSignalBundle':
    'Pengguna ini belum mengaktifkan pesan terenkripsi. Minta mereka membuka Agent World dan mengaktifkan DM aman sebelum Anda mengirim pesan.',

  // User-actionable runtime errors (#3931)
  'userErrors.title': 'Tindakan diperlukan',
  'userErrors.dismiss': 'Tutup',
  'userErrors.action.openBilling': 'Buka penagihan',
  'userErrors.action.openProviderSettings': 'Pengaturan penyedia',
  'userErrors.budgetExceeded.title': 'Anggaran terkelola habis',
  'userErrors.budgetExceeded.body':
    'Anggaran AI terkelola Anda sudah habis. Tambahkan anggaran atau ubah paket.',
  'userErrors.insufficientCredits.title': 'Kredit penyedia diperlukan',
  'userErrors.insufficientCredits.body':
    'Penyedia AI Anda kehabisan kredit. Isi ulang atau perbarui kunci API-nya.',
  'userErrors.apiKeyMissing.title': 'Kunci API diperlukan',
  'userErrors.apiKeyMissing.body':
    'Penyedia AI Anda belum memiliki kunci API. Tambahkan satu di pengaturan penyedia untuk melanjutkan.',
  'userErrors.scope.chat': 'Obrolan',
  'userErrors.scope.cron': 'Tugas terjadwal',
  // Agent World — Identity trading (confirm-before-spend + balance gate)
  'agentWorld.trading.amountLabel': 'Jumlah',
  'agentWorld.trading.networkLabel': 'Jaringan',
  'agentWorld.trading.balanceLabel': 'Saldo Anda',
  'agentWorld.trading.walletLabel': 'Dompet',
  'agentWorld.trading.balanceUnknown': 'Tidak diketahui',
  'agentWorld.trading.cancel': 'Batal',
  'agentWorld.trading.addFunds': 'Tambah dana',
  'agentWorld.trading.confirmPay': 'Konfirmasi & bayar',
  'agentWorld.trading.confirmCommit': 'Konfirmasi',
  'agentWorld.trading.continue': 'Lanjutkan',
  'agentWorld.trading.submitting': 'Mengirim…',
  'agentWorld.trading.placeBid': 'Ajukan tawaran',
  'agentWorld.trading.submitOffer': 'Kirim penawaran',
  'agentWorld.trading.bidTitlePrefix': 'Tawar untuk',
  'agentWorld.trading.offerTitlePrefix': 'Penawaran untuk',
  'agentWorld.trading.bidReviewTitlePrefix': 'Konfirmasi tawaran untuk',
  'agentWorld.trading.offerReviewTitlePrefix': 'Konfirmasi penawaran untuk',
  'agentWorld.trading.spendInsufficient':
    'Saldo tidak cukup untuk menyelesaikan pembayaran ini. Tambahkan dana ke dompet Anda untuk melanjutkan.',
  'agentWorld.trading.spendBroadcastNote':
    'Dompet Anda akan menandatangani dan menyiarkan pembayaran ini di',
  'agentWorld.trading.commitInsufficientWarning':
    'Saldo Anda mungkin tidak menutupi ini jika komitmen diterima. Anda tetap dapat mengirimkannya — dana hanya berpindah saat diterima.',
  'agentWorld.trading.commitSettleNote':
    'Ini adalah komitmen bertanda tangan — dana hanya berpindah jika diterima.',
  'agentWorld.trading.commitReviewSubtitle': 'Tinjau komitmen Anda sebelum mengirim.',
  'agentWorld.trading.balanceUnverified':
    'Kami tidak dapat memverifikasi saldo dompet Anda. Anda tetap dapat melanjutkan — pembayaran diperiksa saat dikirim.',
  'agentWorld.trading.amountTooManyDecimals': 'Jumlah ini memiliki terlalu banyak angka desimal.',
  'agentWorld.trading.amountMustBePositive': 'Masukkan jumlah lebih besar dari nol.',
  'agentWorld.trading.amountInvalid': 'Masukkan jumlah yang valid.',

  // Code block chrome
  'codeBlock.copy': 'Salin',
  'codeBlock.copied': 'Disalin!',
};

export default messages;
