fix(webui): complete i18n audit

This commit is contained in:
chengyongru
2026-08-03 17:53:33 +08:00
committed by chengyongru
parent df11fd92a6
commit 2b63715282
22 changed files with 1535 additions and 994 deletions
+243 -199
View File
@@ -26,8 +26,8 @@
"restartHint": "Mulai ulang nanobot untuk menerapkan perubahan runtime.",
"restart": "Mulai ulang nanobot",
"restarting": "Memulai ulang...",
"restartEngine": "Mulai ulang engine",
"restartingEngine": "Memulai ulang engine..."
"restartEngine": "Mulai ulang mesin",
"restartingEngine": "Memulai ulang mesin..."
},
"restart": {
"completed": "Mulai ulang selesai dalam {{seconds}} dtk."
@@ -37,7 +37,16 @@
"chat": "{{title}} · nanobot"
},
"meta": {
"description": "UI web nanobot — ngobrol dengan workspace nanobot Anda."
"description": "UI web nanobot — ngobrol dengan ruang kerja nanobot Anda."
},
"pairing": {
"title": "Hubungkan pengguna chat",
"description": "Masukkan kode pairing yang ditampilkan di chat.",
"code": "Kode pairing",
"matched": "Cocok dengan {{channel}}. Menghubungkan...",
"expiresInline": "Kode kedaluwarsa {{expires}}.",
"queueCount": "{{count}} menunggu",
"noMatch": "Tidak ada permintaan tertunda yang cocok dengan kode ini."
}
},
"sidebar": {
@@ -57,7 +66,7 @@
"apps": "Aplikasi",
"automations": "Otomasi",
"skills": {
"title": "Skill"
"title": "Keterampilan"
}
},
"settings": {
@@ -83,7 +92,7 @@
"mcp": "MCP",
"apps": "Aplikasi",
"automations": "Otomasi",
"skills": "Skill"
"skills": "Keterampilan"
},
"sections": {
"interface": "Antarmuka",
@@ -92,9 +101,9 @@
"about": "Tentang",
"status": "Status",
"localPreferences": "Preferensi lokal",
"presets": "Preset",
"presets": "Prasetel",
"imageGeneration": "Pembuatan gambar",
"imageDefaults": "Default",
"imageDefaults": "Bawaan",
"webSearch": "Pencarian web",
"webBehavior": "Perilaku",
"regional": "Regional",
@@ -103,7 +112,7 @@
"cliApps": "Aplikasi CLI",
"mcp": "Layanan MCP",
"apps": "Aplikasi",
"nativeHost": "Host native",
"nativeHost": "Host asli",
"hostSafety": "Keamanan aplikasi",
"voiceInput": "Input suara"
},
@@ -114,15 +123,15 @@
"model": "Model",
"restart": "Mulai ulang nanobot",
"configPath": "Path konfigurasi",
"activePreset": "Preset aktif",
"activePreset": "Prasetel aktif",
"gateway": "Gerbang",
"restartState": "Status mulai ulang",
"pendingChanges": "Perubahan tertunda",
"selectedPreset": "Preset terpilih",
"presetModel": "Model preset",
"selectedPreset": "Prasetel terpilih",
"presetModel": "Model prasetel",
"density": "Kerapatan",
"activityMode": "Detail aktivitas",
"fileEditDisplay": "Tampilan edit file",
"fileEditDisplay": "Tampilan perubahan file",
"codeWrap": "Bungkus kode",
"maxResults": "Hasil maksimum",
"timeout": "Batas waktu",
@@ -132,14 +141,14 @@
"imageProviderStatus": "Status penyedia",
"imageProviderBase": "Basis penyedia",
"imageModel": "Model gambar",
"defaultAspectRatio": "Rasio default",
"defaultImageSize": "Ukuran default",
"defaultAspectRatio": "Rasio bawaan",
"defaultImageSize": "Ukuran bawaan",
"maxImagesPerTurn": "Maks. gambar per giliran",
"imageSaveDir": "Direktori simpan",
"timezone": "Zona waktu",
"workspacePath": "Workspace default",
"workspacePath": "Ruang kerja bawaan",
"localServiceAccess": "Layanan lokal",
"webuiDefaultAccess": "Akses default",
"webuiDefaultAccess": "Akses bawaan",
"currentModel": "Konfigurasi saat ini",
"brandLogos": "Logo merek",
"cliAppsCatalog": "Katalog",
@@ -158,44 +167,44 @@
"help": {
"theme": "Beralih antara tampilan terang dan gelap.",
"language": "Pilih bahasa yang digunakan WebUI.",
"provider": "Selecciona el proveedor para nuevas solicitudes de modelo.",
"model": "Pilih model yang digunakan oleh preset ini.",
"configPath": "Archivo de configuración que usa actualmente el gateway.",
"selectedPreset": "Los preajustes con nombre son de solo lectura aquí; edítalos en config.json.",
"presetModel": "Beralih ke Default untuk mengedit model dan penyedia dari WebUI.",
"provider": "Pilih penyedia untuk permintaan model baru.",
"model": "Pilih model yang digunakan oleh prasetel ini.",
"configPath": "File konfigurasi gateway yang sedang digunakan.",
"selectedPreset": "Prasetel bernama hanya-baca di sini; ubah di config.json.",
"presetModel": "Beralih ke Bawaan untuk mengubah model dan penyedia dari WebUI.",
"density": "Hanya disimpan di browser ini.",
"activityMode": "Pilih seberapa banyak detail aktivitas agen yang ditampilkan secara default.",
"fileEditDisplay": "Pilih aktivitas edit file dibuka sebagai jumlah baris atau diff.",
"fileEditDisplay": "Pilih apakah aktivitas perubahan file ditampilkan sebagai jumlah baris atau perbedaan.",
"codeWrap": "Menjaga baris kode panjang tetap terbaca di layar kecil.",
"maxResults": "Resultados devueltos por cada llamada web_search.",
"timeout": "Segundos antes de que una solicitud de búsqueda expire.",
"jinaReader": "Usa Jina Reader para web_fetch cuando esté disponible.",
"imageGeneration": "Expone generate_image en chats cuando hay un proveedor de imagen configurado.",
"imageProvider": "Elige el proveedor registrado usado por generate_image.",
"imageProviderStatus": "La generación de imágenes reutiliza credenciales de Proveedores.",
"imageModel": "Nombre del modelo enviado al proveedor de imágenes seleccionado.",
"defaultAspectRatio": "Se usa cuando el prompt no elige una proporción.",
"maxResults": "Hasil yang dikembalikan oleh setiap panggilan web_search.",
"timeout": "Detik sebelum permintaan penyedia pencarian mencapai batas waktu.",
"jinaReader": "Gunakan Jina Reader untuk web_fetch jika tersedia.",
"imageGeneration": "Tampilkan generate_image di chat saat penyedia gambar yang dikonfigurasi tersedia.",
"imageProvider": "Pilih penyedia registry yang digunakan oleh generate_image.",
"imageProviderStatus": "Pembuatan gambar menggunakan kembali kredensial penyedia dari bagian Penyedia.",
"imageModel": "Nama model yang dikirim ke penyedia gambar yang dipilih.",
"defaultAspectRatio": "Digunakan saat instruksi tidak memilih rasio aspek.",
"defaultImageSize": "Petunjuk ukuran yang dikirim ke penyedia yang mendukungnya.",
"maxImagesPerTurn": "Batas atas untuk satu permintaan generate_image.",
"timezone": "Se usa para horarios y respuestas con conciencia temporal.",
"localServiceAccess": "Izinkan perintah shell Full Access menjangkau layanan localhost.",
"timezone": "Dipakai untuk jadwal dan balasan yang peka waktu.",
"localServiceAccess": "Izinkan perintah shell dengan akses penuh menjangkau layanan lokal.",
"webuiDefaultAccess": "Digunakan oleh chat web tanpa izin khusus proyek.",
"securityManagedControls": "Las capturas web siempre protegen servicios locales, privados y metadata. La seguridad de canales core se gestiona en config.json.",
"securityManagedControls": "Pengambilan web selalu melindungi layanan lokal, privat, dan metadata. Keamanan kanal inti tetap dikelola di config.json.",
"currentModel": "Digunakan untuk balasan baru.",
"selectedModelProvider": "Definido por el modelo seleccionado.",
"selectedModelValue": "Definido por el modelo seleccionado.",
"selectedModelProvider": "Ditentukan oleh model yang dipilih.",
"selectedModelValue": "Ditentukan oleh model yang dipilih.",
"brandLogos": "Tampilkan logo penyedia pihak ketiga dan CLI di Pengaturan.",
"cliAppsCatalog": "Instala solo adaptadores CLI de apps que nanobot puede ejecutar localmente; las apps nativas no se modifican.",
"cliAppsFilter": "Busca por app, categoría o capacidad.",
"logs": "Abre la carpeta de registros del motor nativo.",
"diagnostics": "Exporta un pequeño informe de runtime para soporte.",
"localServiceAccessNative": "Permite que comandos shell con Full Access alcancen servicios en este Mac.",
"webuiDefaultAccessNative": "Usado por chats nativos sin permiso específico de proyecto.",
"contextWindow": "Pilih anggaran konteks default untuk konfigurasi model ini.",
"transcription": "Transkripsikan input mikrofon sebelum dikirim. Pesan suara channel memakai pengaturan yang sama.",
"transcriptionProvider": "Menggunakan kredensial penyedia yang sesuai dari Providers.",
"transcriptionProviderStatus": "API key tetap berada di providers, bukan di pengaturan transkripsi.",
"transcriptionModel": "Biarkan memakai default yang teresolusi kecuali penyedia membutuhkan id model khusus.",
"cliAppsCatalog": "Instal hanya adaptor CLI aplikasi yang dapat dijalankan nanobot secara lokal; aplikasi asli tidak diubah.",
"cliAppsFilter": "Cari berdasarkan aplikasi, kategori, atau kemampuan.",
"logs": "Buka folder log mesin asli.",
"diagnostics": "Ekspor laporan waktu proses singkat untuk dukungan.",
"localServiceAccessNative": "Izinkan perintah shell dengan akses penuh mengakses layanan di Mac ini.",
"webuiDefaultAccessNative": "Digunakan oleh chat bawaan tanpa izin khusus proyek.",
"contextWindow": "Pilih anggaran konteks bawaan untuk konfigurasi model ini.",
"transcription": "Transkripsikan input mikrofon sebelum dikirim. Pesan suara kanal memakai pengaturan yang sama.",
"transcriptionProvider": "Menggunakan kredensial penyedia yang sesuai dari Penyedia.",
"transcriptionProviderStatus": "Kunci API tetap berada di bagian penyedia, bukan di pengaturan transkripsi.",
"transcriptionModel": "Biarkan memakai bawaan yang ter-resolve kecuali penyedia membutuhkan ID model khusus.",
"transcriptionLanguage": "Petunjuk ISO-639 opsional, seperti en, zh, ja, atau ko."
},
"values": {
@@ -208,74 +217,78 @@
"ready": "Siap",
"privateEngine": "Mesin privat",
"unixSocket": "Soket Unix",
"defaultWorkspace": "Workspace default",
"defaultWorkspace": "Ruang kerja bawaan",
"comfortable": "Nyaman",
"compact": "Ringkas",
"auto": "Otomatis",
"expanded": "Diperluas",
"default": "Default",
"default": "Bawaan",
"summary": "Ringkasan",
"diff": "Diff",
"collapsedDiff": "Diff diciutkan",
"diff": "Perbedaan",
"collapsedDiff": "Perbedaan diciutkan",
"on": "Aktif",
"off": "Nonaktif",
"defaultPermission": "Izin default",
"defaultPermission": "Izin bawaan",
"fullAccess": "Akses penuh",
"configured": "Terkonfigurasi",
"notConfigured": "Belum dikonfigurasi",
"pending": "Tertunda",
"restartingEngine": "Memulai ulang"
"restartingEngine": "Memulai ulang",
"checking": "Memeriksa",
"running": "Berjalan",
"needsSetup": "Perlu penyiapan"
},
"status": {
"loading": "Memuat pengaturan...",
"loadError": "Tidak dapat memuat pengaturan",
"unsaved": "Perubahan belum disimpan.",
"upToDate": "Sudah terbaru.",
"savedRestart": "Guardado. Reinicia nanobot para aplicar.",
"restartAfterSaving": "Guarda los cambios y reinicia cuando puedas.",
"savedRestartApply": "Guardado. Reinicia cuando puedas.",
"imageProviderRestart": "Cambios del proveedor de imagen guardados. Reinicia cuando puedas.",
"hostRestartAfterSaving": "Al guardar, nanobot reiniciará su motor.",
"hostRestartPending": "Guardado. El motor se reiniciará cuando esté listo.",
"hostApiUnavailable": "Las acciones del host solo están disponibles en la app nativa.",
"logsOpened": "Carpeta de registros abierta.",
"logsOpenFailed": "No se pudo abrir la carpeta de registros.",
"diagnosticsExported": "Diagnóstico exportado a {{path}}.",
"diagnosticsExportFailed": "No se pudo exportar el diagnóstico."
"savedRestart": "Tersimpan. Mulai ulang nanobot untuk menerapkan.",
"restartAfterSaving": "Simpan perubahan, lalu mulai ulang saat siap.",
"savedRestartApply": "Tersimpan. Mulai ulang saat siap.",
"imageProviderRestart": "Perubahan penyedia gambar tersimpan. Mulai ulang saat siap.",
"hostRestartAfterSaving": "Saat disimpan, nanobot akan memulai ulang mesinnya.",
"hostRestartPending": "Tersimpan. Mesin akan dimulai ulang saat siap.",
"hostApiUnavailable": "Tindakan host hanya tersedia di aplikasi asli.",
"logsOpened": "Folder log dibuka.",
"logsOpenFailed": "Tidak dapat membuka folder log.",
"diagnosticsExported": "Diagnostik diekspor ke {{path}}.",
"diagnosticsExportFailed": "Tidak dapat mengekspor diagnostik."
},
"actions": {
"save": "Simpan",
"saving": "Menyimpan",
"saveOrder": "Simpan urutan",
"savePreset": "Simpan preset",
"savePreset": "Simpan prasetel",
"delete": "Hapus",
"deleting": "Menghapus...",
"edit": "Edit",
"edit": "Ubah",
"cancel": "Batal",
"dismiss": "Abaikan",
"open": "Buka",
"export": "Ekspor",
"opening": "Membuka...",
"exporting": "Mengekspor..."
},
"byok": {
"description": "Gunakan kunci provider Anda sendiri. Nanobot membaca nilai ini dari config saat ini dan hanya provider yang sudah dikonfigurasi yang dapat digunakan dalam preset model.",
"description": "Gunakan kunci penyedia Anda sendiri. Nanobot membaca nilai ini dari konfigurasi saat ini dan hanya penyedia yang sudah dikonfigurasi yang dapat digunakan dalam prasetel model.",
"configured": "Terkonfigurasi",
"notConfigured": "Belum dikonfigurasi",
"configuredSection": "Terkonfigurasi",
"notConfiguredSection": "Belum dikonfigurasi",
"showMore": "Tampilkan {{count}} lagi",
"showLess": "Tampilkan lebih sedikit",
"apiKey": "API key",
"apiBase": "API base",
"apiKeyPlaceholder": "Masukkan API key",
"apiKeyConfiguredPlaceholder": "Kosongkan untuk mempertahankan key saat ini",
"configuredKeyHint": "Key terkonfigurasi",
"apiBasePlaceholder": "Gunakan default provider",
"apiKeyRequired": "API key diperlukan untuk mengonfigurasi provider ini.",
"showApiKey": "Tampilkan API key",
"hideApiKey": "Sembunyikan API key",
"noConfiguredProviders": "Belum ada provider terkonfigurasi",
"configureFirst": "Konfigurasikan provider di BYOK terlebih dahulu.",
"apiKey": "Kunci API",
"apiBase": "Basis API",
"apiKeyPlaceholder": "Masukkan kunci API",
"apiKeyConfiguredPlaceholder": "Kosongkan untuk mempertahankan kunci saat ini",
"configuredKeyHint": "Kunci yang dikonfigurasi",
"apiBasePlaceholder": "Gunakan nilai bawaan penyedia",
"apiKeyRequired": "Kunci API diperlukan untuk mengonfigurasi penyedia ini.",
"showApiKey": "Tampilkan kunci API",
"hideApiKey": "Sembunyikan kunci API",
"noConfiguredProviders": "Belum ada penyedia yang dikonfigurasi",
"configureFirst": "Konfigurasikan penyedia di BYOK terlebih dahulu.",
"openByok": "Buka BYOK",
"tabs": {
"ariaLabel": "Jenis kredensial BYOK",
@@ -284,19 +297,19 @@
},
"webSearch": {
"provider": "Penyedia pencarian",
"providerHelp": "Pilih backend yang digunakan alat web search.",
"selectProvider": "Pilih provider",
"providerHelp": "Pilih backend yang digunakan alat pencarian web.",
"selectProvider": "Pilih penyedia",
"credentials": "Kredensial",
"noCredentialRequired": "Tidak perlu key",
"noCredentialHelp": "DuckDuckGo berfungsi tanpa menyimpan API key.",
"noCredentialRequired": "Tidak perlu kunci",
"noCredentialHelp": "DuckDuckGo berfungsi tanpa menyimpan kunci API.",
"apiKeyHelp": "Disimpan di config dan ditampilkan tersamarkan setelah disimpan.",
"baseUrl": "Base URL",
"baseUrl": "URL dasar",
"baseUrlHelp": "SearXNG memerlukan URL instance Anda sendiri.",
"baseUrlPlaceholder": "https://search.example.com",
"apiKeyRequired": "Provider pencarian ini memerlukan API key.",
"baseUrlRequired": "SearXNG memerlukan Base URL.",
"apiKeyRequired": "Penyedia pencarian ini memerlukan kunci API.",
"baseUrlRequired": "SearXNG memerlukan URL dasar.",
"missingCredential": "Tambahkan kredensial yang diperlukan sebelum menyimpan.",
"saveHint": "Perubahan berlaku untuk permintaan web search baru."
"saveHint": "Perubahan berlaku untuk permintaan pencarian web baru."
}
},
"overview": {
@@ -311,7 +324,7 @@
},
"usage": {
"title": "Aktivitas token",
"shortTitle": "Token Usage",
"shortTitle": "Penggunaan token",
"subtitle": "Penggunaan yang dilaporkan penyedia selama 12 bulan terakhir.",
"empty": "Aktivitas token akan muncul setelah balasan model baru.",
"totalTokens": "Total token",
@@ -358,8 +371,18 @@
"selectProvider": "Pilih penyedia",
"selectAspect": "Pilih rasio",
"selectSize": "Pilih ukuran",
"selectModel": "Pilih model gambar",
"searchOrTypeModel": "Cari atau ketik ID model",
"typeModelId": "Ketik ID model yang didukung penyedia ini.",
"configureProvider": "Konfigurasi penyedia",
"missingCredential": "Configura este proveedor antes de activar la generación de imágenes."
"missingCredential": "Konfigurasikan penyedia ini sebelum mengaktifkan pembuatan gambar."
},
"capabilities": {
"providerSupport": "Dukungan penyedia",
"providerInstallOnSave": "Dukungan yang diperlukan akan dipasang otomatis saat Anda menyimpan penyedia ini.",
"searchSupport": "Dukungan penyedia pencarian",
"searchInstallOnSave": "Dukungan Olostep akan dipasang otomatis saat Anda menyimpan.",
"installing": "Memasang dukungan..."
},
"models": {
"selectModel": "Pilih model",
@@ -372,12 +395,12 @@
"callOrder": "Urutan pemanggilan model",
"primary": "Utama",
"fallbackNumber": "Cadangan {{number}}",
"addToOrder": "Aktifkan preset",
"newPreset": "Preset model baru",
"addToOrder": "Aktifkan prasetel",
"newPreset": "Prasetel model baru",
"newPresetHelp": "Simpan model yang dapat digunakan kembali beserta pengaturan generasinya.",
"presets": "Preset model",
"editPreset": "Edit preset",
"presetName": "Nama preset",
"presets": "Prasetel model",
"editPreset": "Ubah prasetel",
"presetName": "Nama prasetel",
"presetNameHelp": "Nama singkat yang digunakan di pengaturan model.",
"presetNamePlaceholder": "Menulis cepat",
"advancedOptions": "Opsi lanjutan",
@@ -386,22 +409,22 @@
"temperature": "Temperatur",
"reasoningEffort": "Upaya penalaran",
"convertTitle": "Konversi pengaturan model saat ini",
"convertHelp": "Ubah model utama dan cadangan yang ada menjadi preset agar urutannya dapat dikelola di sini.",
"convertHelp": "Ubah model utama dan cadangan yang ada menjadi prasetel agar urutannya dapat dikelola di sini.",
"converting": "Mengonversi...",
"convertAction": "Konversi ke preset",
"convertAction": "Konversi ke prasetel",
"dragToReorder": "Seret untuk mengurutkan ulang",
"moveUp": "Naikkan",
"moveDown": "Turunkan",
"removeFromOrder": "Nonaktifkan preset",
"removeFromOrder": "Nonaktifkan prasetel",
"inCallOrder": "Dalam urutan pemanggilan",
"disabled": "Nonaktif",
"noPresets": "Belum ada preset model",
"noPresetsHelp": "Buat preset, lalu tambahkan ke urutan pemanggilan.",
"removeBeforeDelete": "Hapus preset ini dari urutan pemanggilan sebelum menghapusnya.",
"noPresets": "Belum ada prasetel model",
"noPresetsHelp": "Buat prasetel, lalu tambahkan ke urutan pemanggilan.",
"removeBeforeDelete": "Hapus prasetel ini dari urutan pemanggilan sebelum menghapusnya.",
"providerSetupRequired": "Penyedia perlu dikonfigurasi",
"configureProviderBeforeSaving": "Konfigurasikan penyedia ini sebelum menyimpan preset.",
"deletePresetTitle": "Hapus preset model?",
"deletePresetHelp": "Preset “{{name}}” akan dihapus. Kredensial penyedia tidak terpengaruh.",
"configureProviderBeforeSaving": "Konfigurasikan penyedia ini sebelum menyimpan prasetel.",
"deletePresetTitle": "Hapus prasetel model?",
"deletePresetHelp": "Prasetel “{{name}}” akan dihapus. Kredensial penyedia tidak terpengaruh.",
"searchModels": "Cari atau ketik ID model",
"useCustomModel": "Gunakan",
"loadingModels": "Memuat model...",
@@ -458,11 +481,11 @@
},
"mcp": {
"allCategories": "Semua kategori",
"summary": "{{installed}} dari {{total}} preset diaktifkan",
"summary": "{{installed}} dari {{total}} prasetel diaktifkan",
"filterAll": "Semua",
"filterInstalled": "Aktif",
"filterNotInstalled": "Tidak aktif",
"searchPlaceholder": "Cari preset MCP",
"searchPlaceholder": "Cari prasetel MCP",
"moreOptions": "Opsi MCP lainnya",
"moreOptionsSubtitle": "Tambahkan server khusus atau impor mcp.json.",
"customTitle": "MCP khusus",
@@ -473,9 +496,9 @@
"serverUrl": "URL",
"transport": "Transport",
"command": "Perintah",
"args": "Args JSON",
"headers": "Headers JSON",
"env": "Env JSON",
"args": "Argumen JSON",
"headers": "Header JSON",
"env": "Lingkungan JSON",
"timeout": "Batas waktu alat",
"advancedOptions": "Opsi lanjutan",
"hideAdvanced": "Sembunyikan lanjutan",
@@ -484,8 +507,8 @@
"importConfig": "Impor",
"restartRequired": "Mulai ulang nanobot untuk menyambungkan alat MCP yang diperbarui.",
"toolsFound": "{{count}} alat",
"loading": "Memuat preset MCP...",
"empty": "Tidak ada preset MCP yang cocok dengan filter ini.",
"loading": "Memuat prasetel MCP...",
"empty": "Tidak ada prasetel MCP yang cocok dengan filter ini.",
"openDocs": "Buka dokumentasi",
"test": "Uji",
"remove": "Hapus",
@@ -503,6 +526,7 @@
"statusMissingCredentials": "Butuh kunci",
"statusMissingDependency": "Butuh dependensi",
"statusComingSoon": "Segera hadir",
"comingSoon": "Segera hadir",
"statusNotInstalled": "Tidak aktif",
"toolScope": "Alat",
"allTools": "Semua",
@@ -544,7 +568,7 @@
"restartRequired": "Mulai ulang nanobot untuk menerapkan aplikasi dan fitur yang diperbarui."
},
"channels": {
"description": "Hubungkan nanobot ke aplikasi chat. Memasang dukungan hanya menambahkan paket integrasi; sebagian besar kanal tetap memerlukan token atau pengaturan workspace.",
"description": "Hubungkan nanobot ke aplikasi chat. Memasang dukungan hanya menambahkan paket integrasi; sebagian besar kanal tetap memerlukan token atau pengaturan ruang kerja.",
"caption": "{{enabled}} aktif · {{total}} kanal",
"searchPlaceholder": "Cari kanal",
"backToChannels": "Semua kanal",
@@ -554,7 +578,7 @@
"restartRequired": "Mulai ulang nanobot untuk menerapkan dukungan kanal yang diperbarui.",
"requires": "Memerlukan: {{requirements}}",
"setUp": "Siapkan",
"setupGuide": "Panduan setup",
"setupGuide": "Panduan penyiapan",
"setupSummary": "Mengaktifkan hanya menyalakan dukungan nanobot. Tambahkan kredensial platform, lalu mulai ulang nanobot.",
"configKeys": "Kunci konfigurasi",
"enable": "Aktifkan kanal",
@@ -565,6 +589,8 @@
"advanced": "Lanjutan",
"checkAndEnable": "Periksa dan aktifkan",
"checkConnection": "Periksa koneksi",
"connectionChecks": "Pemeriksaan koneksi",
"open": "Buka",
"checkedAndEnabled": "Sudah diperiksa dan diaktifkan.",
"checking": "Memeriksa...",
"checkOnly": "Periksa saja",
@@ -655,11 +681,13 @@
"runNow": "Jalankan sekarang",
"pause": "Jeda",
"resume": "Lanjutkan",
"edit": "Edit",
"edit": "Ubah",
"delete": "Hapus",
"protected": "Terlindungi",
"editTitle": "Edit otomasi",
"editTitle": "Ubah otomasi",
"save": "Simpan",
"commandCopied": "Disalin",
"copyCommand": "Salin",
"deleteTitle": "Hapus otomasi",
"deleteDescription": "Ini menghapus {{name}} dari penyimpanan cron. Pesan chat sebelumnya tetap ada di sesi.",
"cancel": "Batal",
@@ -719,6 +747,7 @@
"fields": {
"name": "Nama",
"message": "Pesan",
"command": "Perintah",
"scheduleType": "Jenis jadwal",
"every": "Setiap",
"unit": "Unit",
@@ -753,11 +782,11 @@
"signInAgain": "Masuk lagi",
"signOut": "Keluar",
"signedInAs": "Masuk sebagai {{account}}",
"signInHelp": "Inicia sesión desde este dispositivo; no se guarda API key en config.",
"signInHelp": "Masuk dari perangkat ini; kunci API tidak disimpan di config.",
"remoteSignInHelp": "Pilih Masuk untuk membuka xAI di komputer Anda, lalu tempel kode otorisasi yang ditampilkan setelah masuk.",
"codexRemoteSignInHelp": "Masuk melalui browser ini, lalu tempel URL callback localhost lengkap kembali ke nanobot.",
"signInRequired": "Perlu masuk",
"signInBeforeSaving": "Masuk ke penyedia ini sebelum menyimpan preset.",
"signInBeforeSaving": "Masuk ke penyedia ini sebelum menyimpan prasetel.",
"signedIn": "Sudah masuk",
"notSignedIn": "Belum masuk",
"proxyLabel": "Proksi jaringan",
@@ -776,56 +805,56 @@
"finishSignIn": "Selesaikan masuk"
},
"skills": {
"description": "Tinjau skill instruksi yang dapat dimuat agent ini selama percakapan.",
"description": "Tinjau keterampilan instruksi yang dapat dimuat agen ini selama percakapan.",
"caption": "{{available}} tersedia · {{total}} total",
"views": "Tampilan skill",
"views": "Tampilan keterampilan",
"installedTab": "Terpasang",
"discoverTab": "Temukan",
"customGroup": "Kustom",
"builtinGroup": "Bawaan",
"otherGroup": "Lainnya",
"searchInstalled": "Cari skill terpasang",
"searchInstalled": "Cari keterampilan terpasang",
"filterAll": "Semua",
"filterEnabled": "Aktif",
"filterDisabled": "Nonaktif",
"noMatching": "Tidak ada skill yang cocok.",
"noMatching": "Tidak ada keterampilan yang cocok.",
"statusDisabled": "Nonaktif",
"statusEnabled": "Aktif",
"statusNeedsSetup": "Perlu penyiapan",
"showLess": "Tampilkan lebih sedikit",
"showMore": "Tampilkan lebih banyak",
"enabledControl": "Gunakan skill ini",
"enabledDescription": "Izinkan agen memuat skill ini saat persyaratannya terpenuhi.",
"enabledControl": "Gunakan keterampilan ini",
"enabledDescription": "Izinkan agen memuat keterampilan ini saat persyaratannya terpenuhi.",
"enableSkill": "Aktifkan {{name}}",
"disableSkill": "Nonaktifkan {{name}}",
"updateFailed": "Skill ini tidak dapat diperbarui.",
"deleteTitle": "Hapus skill",
"deleteDescription": "Hapus skill ini dari workspace saat ini.",
"updateFailed": "Keterampilan ini tidak dapat diperbarui.",
"deleteTitle": "Hapus keterampilan",
"deleteDescription": "Hapus keterampilan ini dari ruang kerja saat ini.",
"deleteAction": "Hapus",
"deleteFailed": "Skill ini tidak dapat dihapus.",
"deleteFailed": "Keterampilan ini tidak dapat dihapus.",
"deleteConfirmTitle": "Hapus {{name}}?",
"deleteConfirmDescription": "Tindakan ini menghapus file skill dari workspace saat ini dan tidak dapat dibatalkan.",
"deleteConfirmAction": "Hapus skill",
"instructionsTitle": "Petunjuk skill",
"deleteConfirmDescription": "Tindakan ini menghapus file keterampilan dari ruang kerja saat ini dan tidak dapat dibatalkan.",
"deleteConfirmAction": "Hapus keterampilan",
"instructionsTitle": "Petunjuk keterampilan",
"setupRequired": "Perlu penyiapan",
"setupDescription": "Instal dependensi yang belum tersedia di mesin yang menjalankan nanobot, lalu periksa lagi.",
"copySetupCommand": "Salin perintah penyiapan",
"checkAgain": "Periksa lagi",
"marketplaceSearchFailed": "Tidak dapat mencari marketplace skill.",
"marketplaceInstallFailed": "Tidak dapat memasang skill ini.",
"marketplaceSearchPlaceholder": "Cari skill",
"marketplaceSearchLabel": "Cari skill",
"marketplaceSearchFailed": "Tidak dapat mencari marketplace keterampilan.",
"marketplaceInstallFailed": "Tidak dapat memasang keterampilan ini.",
"marketplaceSearchPlaceholder": "Cari keterampilan",
"marketplaceSearchLabel": "Cari keterampilan",
"marketplaceSearching": "Mencari",
"marketplaceProviderFilter": "Sumber skill",
"marketplaceProviderFilter": "Sumber keterampilan",
"marketplaceProviderAll": "Semua",
"marketplaceTrendingTitle": "Tren per marketplace",
"marketplaceTrendingDescription": "Setiap marketplace mempertahankan peringkat dan metrik pemasangannya sendiri.",
"marketplaceViewAll": "Lihat semua",
"marketplaceTrendingUnavailable": "Skill populer sementara tidak tersedia.",
"marketplaceEmpty": "Tidak ada skill yang ditemukan untuk “{{query}}”.",
"marketplaceTrendingUnavailable": "Keterampilan populer sementara tidak tersedia.",
"marketplaceEmpty": "Tidak ada keterampilan yang ditemukan untuk “{{query}}”.",
"marketplaceConfirmTitle": "Pasang {{name}}?",
"marketplaceConfirmDescription": "Skill pihak ketiga ini berasal dari {{provider}} ({{source}}) dan mungkin berisi instruksi atau skrip yang dapat dijalankan.",
"marketplaceConfirmInstall": "Pasang skill",
"marketplaceConfirmDescription": "Keterampilan pihak ketiga ini berasal dari {{provider}} ({{source}}) dan mungkin berisi instruksi atau skrip yang dapat dijalankan.",
"marketplaceConfirmInstall": "Pasang keterampilan",
"marketplaceOpen": "Buka {{name}} di {{provider}}",
"marketplaceOpenProvider": "Buka {{provider}}",
"marketplaceInstalls24h": "{{formattedCount}} pemasangan / 24 jam",
@@ -836,16 +865,16 @@
"marketplaceInstall": "Pasang",
"marketplaceNoTrend": "Belum ada tren",
"marketplaceTrendLabel": "Tren pemasangan 8 minggu",
"featured": "Skill agent",
"empty": "Tidak ada skill yang tersedia.",
"featured": "Keterampilan agen",
"empty": "Tidak ada keterampilan yang tersedia.",
"sourceWorkspace": "Kustom",
"sourceBuiltin": "Bawaan",
"statusAvailable": "Tersedia",
"statusUnavailable": "Tidak tersedia",
"unavailableReason": "Kurang: {{reason}}",
"openDetails": "Buka detail {{name}}",
"loadingDetail": "Memuat detail skill...",
"loadFailed": "Tidak dapat memuat detail skill.",
"loadingDetail": "Memuat detail keterampilan...",
"loadFailed": "Tidak dapat memuat detail keterampilan.",
"descriptionTitle": "Deskripsi",
"source": "Sumber",
"status": "Status",
@@ -863,7 +892,7 @@
"voice": {
"selectProvider": "Pilih penyedia",
"configureProvider": "Konfigurasi penyedia",
"languageAuto": "Auto"
"languageAuto": "Otomatis"
}
},
"chat": {
@@ -877,34 +906,34 @@
"actions": "Aksi topik untuk {{title}}",
"newInProject": "Mulai topik baru di {{project}}",
"activity": {
"running": "Agent running",
"complete": "Agent finished",
"updated": "New activity"
"running": "Agen sedang berjalan",
"complete": "Agen selesai",
"updated": "Aktivitas baru"
},
"pin": "Pin",
"unpin": "Unpin",
"rename": "Rename",
"pin": "Sematkan",
"unpin": "Lepas sematan",
"rename": "Ganti nama",
"renameTitle": "Ganti nama topik",
"renameDescription": "Pilih nama lokal di bilah sisi untuk topik ini.",
"renamePlaceholder": "Nama topik",
"renameProjectTitle": "Rename project",
"renameProjectDescription": "Choose a local sidebar name for this project.",
"renameProjectPlaceholder": "Project name",
"renameSave": "Save",
"archive": "Archive",
"unarchive": "Unarchive",
"showArchived": "Show archived",
"hideArchived": "Hide archived",
"renameProjectTitle": "Ganti nama proyek",
"renameProjectDescription": "Pilih nama lokal untuk proyek ini di bilah sisi.",
"renameProjectPlaceholder": "Nama proyek",
"renameSave": "Simpan",
"archive": "Arsipkan",
"unarchive": "Batalkan arsip",
"showArchived": "Tampilkan yang diarsipkan",
"hideArchived": "Sembunyikan yang diarsipkan",
"delete": "Hapus",
"newChat": "Topik baru",
"groups": {
"pinned": "Pinned",
"pinned": "Disematkan",
"all": "Topik",
"projects": "Projects",
"today": "Today",
"yesterday": "Yesterday",
"earlier": "Earlier",
"archived": "Archived"
"projects": "Proyek",
"today": "Hari ini",
"yesterday": "Kemarin",
"earlier": "Sebelumnya",
"archived": "Diarsipkan"
}
},
"deleteConfirm": {
@@ -931,7 +960,7 @@
}
},
"connection": {
"idle": "Idle",
"idle": "Tidak aktif",
"connecting": "Menghubungkan…",
"open": "Terhubung",
"reconnecting": "Menyambung ulang…",
@@ -957,8 +986,8 @@
"prompt": "Bantu saya menganalisis data ini dan soroti pola yang paling penting."
},
"brainstorm": {
"title": "Brainstorm ide",
"prompt": "Brainstorm beberapa ide praktis dan tradeoff untuk masalah ini."
"title": "Curah gagasan",
"prompt": "Curahkan beberapa ide praktis dan pertimbangannya untuk masalah ini."
},
"code": {
"title": "Tulis kode",
@@ -970,7 +999,7 @@
},
"more": {
"title": "Lainnya",
"prompt": "Tunjukkan beberapa cara berguna Anda dapat membantu di workspace ini."
"prompt": "Tunjukkan beberapa cara berguna Anda dapat membantu di ruang kerja ini."
}
},
"imageQuickActions": {
@@ -984,19 +1013,19 @@
},
"poster": {
"title": "Buat poster",
"prompt": "Buat konsep poster yang rapi untuk asisten AI pribadi, komposisi modern, hierarki visual kuat, cocok untuk landing page."
"prompt": "Buat konsep poster yang rapi untuk asisten AI pribadi, komposisi modern, hierarki visual kuat, cocok untuk halaman arahan."
},
"product": {
"title": "Mockup produk",
"prompt": "Buat gambar mockup produk yang bersih untuk aplikasi web AI percakapan, antarmuka minimal, pencahayaan premium, bingkai perangkat realistis."
"title": "Maket produk",
"prompt": "Buat gambar maket produk yang bersih untuk aplikasi web AI percakapan, antarmuka minimal, pencahayaan premium, bingkai perangkat realistis."
},
"portrait": {
"title": "Potret bergaya",
"prompt": "Buat potret bergaya dari pendamping AI yang ramah, pencahayaan lembut, detail tetapi tetap mudah didekati, gaya ilustrasi modern."
},
"edit": {
"title": "Edit gambar",
"prompt": "Bantu saya mengedit gambar. Minta saya mengunggah atau menyebutkan gambar terlebih dahulu, lalu buat hasil editnya."
"title": "Ubah gambar",
"prompt": "Bantu saya mengubah gambar. Minta saya mengunggah atau menyebutkan gambar terlebih dahulu, lalu buat hasil ubahannya."
}
}
},
@@ -1055,21 +1084,21 @@
"label": "Panduan antrean",
"guide": "Pandu",
"delete": "Hapus panduan",
"edit": "Edit panduan",
"edit": "Ubah panduan",
"drag": "Seret untuk mengurutkan"
},
"attachImage": "Lampirkan file",
"imageMode": {
"label": "Buat gambar",
"toggle": "Alihkan mode pembuatan gambar",
"placeholder": "Deskripsikan atau edit gambar…",
"placeholder": "Deskripsikan atau ubah gambar…",
"aspectAria": "Rasio aspek gambar",
"aspectLabel": "Rasio gambar",
"aspect": {
"auto": "Otomatis",
"1_1": "Persegi 1:1",
"3_4": "Potret 3:4",
"9_16": "Story 9:16",
"9_16": "Cerita 9:16",
"4_3": "Lanskap 4:3",
"16_9": "Lebar 16:9"
}
@@ -1109,7 +1138,7 @@
},
"stop": {
"title": "Hentikan tugas saat ini",
"description": "Batalkan giliran agent yang sedang aktif di chat ini."
"description": "Batalkan giliran agen yang sedang aktif di chat ini."
},
"restart": {
"title": "Mulai ulang nanobot",
@@ -1117,11 +1146,11 @@
},
"status": {
"title": "Tampilkan status",
"description": "Tampilkan status runtime, provider, dan channel."
"description": "Tampilkan status waktu proses, penyedia, dan kanal."
},
"model": {
"title": "Model",
"description": "Tampilkan atau ganti preset model aktif."
"description": "Tampilkan atau ganti prasetel model aktif."
},
"history": {
"title": "Tampilkan riwayat",
@@ -1141,15 +1170,15 @@
},
"dream_prompt": {
"title": "Memori Dream",
"description": "Atur cara Dream menyusun memori workspace ini."
"description": "Atur cara Dream menyusun memori ruang kerja ini."
},
"goal": {
"title": "Tujuan jangka panjang",
"description": "Instruksikan agen memperlakukan ini sebagai tujuan multi-langkah yang berkelanjutan."
},
"trigger": {
"title": "Buat trigger lokal",
"description": "Buat trigger CLI yang terikat ke sesi chat ini."
"title": "Buat pemicu lokal",
"description": "Buat pemicu CLI yang terikat ke sesi chat ini."
},
"help": {
"title": "Tampilkan bantuan",
@@ -1173,7 +1202,7 @@
},
"encoding": "Memproses…",
"remove": "Hapus lampiran",
"normalizedSizeHint": "{{orig}} → {{current}} (auto)",
"normalizedSizeHint": "{{orig}} → {{current}} (otomatis)",
"textTooLarge": "Teks pesan terlalu besar (maksimum {{max}})",
"imageRejected": {
"unsupported_type": "Tipe file tidak didukung",
@@ -1190,32 +1219,35 @@
"mentions": {
"ariaLabel": "Aplikasi",
"label": "Aplikasi",
"cliGroup": "App CLI",
"cliGroup": "Aplikasi CLI",
"mcpGroup": "Layanan MCP",
"cliBadge": "CLI",
"mcpBadge": "MCP",
"cliDescription": "Gunakan @{{name}} sebagai aplikasi CLI lokal",
"mcpDescription": "Gunakan @{{name}} sebagai server MCP"
"mcpDescription": "Gunakan @{{name}} sebagai server MCP",
"cliTitle": "Aplikasi CLI: {{name}}",
"mcpTitle": "Server MCP: {{name}}"
},
"workspace": {
"accessAria": "Mode akses workspace",
"accessAria": "Mode akses ruang kerja",
"projectAria": "Pilih proyek",
"projectPlaceholder": "Pilih proyek",
"default": "Izin default",
"defaultShort": "Default",
"default": "Izin bawaan",
"defaultShort": "Bawaan",
"full": "Akses penuh",
"fullShort": "Penuh"
}
},
"scrollToBottom": "Gulir ke bawah",
"loadEarlier": "Muat pesan sebelumnya",
"forkedFromHistory": "Fork dari riwayat",
"forkedFromHistory": "Cabang dari riwayat",
"promptNavigator": {
"open": "Buka navigator prompt",
"title": "Prompt",
"search": "Cari prompt",
"noResults": "Tidak ada prompt yang cocok.",
"jumpTo": "Lompat ke prompt: {{label}}"
"open": "Buka navigasi instruksi",
"title": "Instruksi",
"search": "Cari instruksi",
"noResults": "Tidak ada instruksi yang cocok.",
"jumpTo": "Lompat ke instruksi: {{label}}",
"railAria": "Navigasi instruksi pengguna"
}
},
"message": {
@@ -1239,19 +1271,27 @@
"agentActivityLiveSummary": "Berjalan… · {{reasoning}} langkah · {{tools}} panggilan alat",
"agentActivityLiveToolsOnly": "Berjalan… · {{tools}} panggilan alat",
"imageAttachment": "Lampiran gambar",
"videoAttachment": "Lampiran video",
"fileAttachment": "Lampiran file",
"attachmentUnavailable": "Lampiran tidak tersedia",
"dataTable": "Tabel data",
"fileEditPreparing": "Menyiapkan perubahan file…",
"openLink": "Buka tautan: {{label}}",
"openAttachment": "Buka {{name}}",
"skill": "Keterampilan: {{name}}",
"askAboutSelection": "Tanyakan tentang ini",
"forkFromHere": "Fork",
"forkFromHere": "Buat cabang",
"copyReply": "Salin",
"copiedReply": "Disalin",
"turnLatencyTitle": "Waktu respons (ujung ke ujung)",
"fileEditViewDiff": "Lihat diff",
"fileEditViewLargeDiff": "Lihat diff besar",
"fileEditViewDiff": "Lihat perbedaan",
"fileEditViewLargeDiff": "Lihat perbedaan besar",
"fileEditDiffLineCount": "{{count}} baris",
"fileEditUnchangedLinesHidden": "{{count}} baris tidak berubah disembunyikan",
"fileEditShowMoreLines": "Tampilkan {{count}} baris lagi",
"fileEditShowFewerLines": "Tampilkan lebih sedikit baris",
"fileEditOpenFile": "Buka file",
"fileEditDiffTruncated": "Diff dipotong. Buka file untuk melihat perubahan lengkap.",
"fileEditDiffTruncated": "Perbedaan dipotong. Buka file untuk melihat perubahan lengkap.",
"activityThinkingFor": "Berpikir selama {{duration}}",
"activityThought": "Selesai berpikir",
"activityThoughtFor": "Selesai berpikir dalam {{duration}}",
@@ -1279,6 +1319,7 @@
},
"filePreview": {
"aria": "Pratinjau file",
"breadcrumb": "Jalur file",
"close": "Tutup pratinjau file",
"loading": "Memuat pratinjau...",
"failed": "Tidak dapat mempratinjau file ini.",
@@ -1293,7 +1334,10 @@
"copied": "Tersalin"
},
"common": {
"dismiss": "Tutup"
"dismiss": "Tutup",
"close": "Tutup",
"current": "Saat ini",
"cancel": "Batal"
},
"errors": {
"messageTooBig": {
@@ -1301,8 +1345,8 @@
"body": "Server menolak pesan terakhir karena melebihi batas ukuran. Hapus beberapa gambar atau gunakan berkas yang lebih kecil, lalu coba lagi."
},
"workspaceScopeRejected": {
"title": "Workspace tidak berubah",
"body": "Gateway menolak proyek atau mode akses yang diminta, jadi Nanobot tetap memakai workspace sebelumnya."
"title": "Ruang kerja tidak berubah",
"body": "Gateway menolak proyek atau mode akses yang diminta, jadi Nanobot tetap memakai ruang kerja sebelumnya."
},
"turnRejected": {
"title": "Pesan tidak terkirim",
@@ -1311,7 +1355,7 @@
},
"workspace": {
"dialog": {
"defaultProject": "Workspace default",
"defaultProject": "Ruang kerja bawaan",
"manual": "Tempel path",
"manualPlaceholder": "/Users/name/project",
"usePath": "Gunakan path",