{
  "product": "YSK Server",
  "tagline": "AI-centric, security-first Linux server management platform",
  "company": "YSK Limited",
  "agents": {
    "title": "Waktu proses Agen AI",
    "body": "Instalasi dan pengawasan OpenClaw / Hermes / IonClaw; semua panggilan alat melewati Daftar yang Diizinkan dan persetujuan.",
    "status": {
      "running": "Berlari",
      "activating": "Mulai",
      "stuck": "Mulai macet",
      "connected": "On line",
      "registered": "Hanya terdaftar",
      "stale": "Basi",
      "disconnected": "Luring",
      "not_installed": "Tidak dipasang",
      "failed": "Gagal",
      "error": "Kesalahan",
      "unknown": "Tidak diselidiki",
      "fallback": "Tidak dikenal"
    },
    "cmdStatus": {
      "queued": "Mengantri",
      "acked": "Dikejar",
      "done": "Selesai",
      "error": "Kesalahan"
    },
    "activatingStuckHint": "Mengaktifkan lebih dari 5 menit — dianggap gagal. Periksa jurnal.",
    "noOnlineAgents": "Tidak ada agen online",
    "journal": "jurnal",
    "writeUnit": "Tulis satuan",
    "writeUnitConfirm": "Tulis unit systemd untuk {{kind}} di bawah /etc/systemd. Layanan tidak dimulai atau diaktifkan.",
    "liveN": "{{count}} daring",
    "registeredOnly": "Hanya terdaftar",
    "awaitProbe": "Menunggu penyelidikan",
    "runtimes": "Waktu proses",
    "running": "Berlari",
    "liveAgents": "Agen daring",
    "fleet": "Armada",
    "aiTasks": "tugas AI",
    "expBanner": "Eksperimental.",
    "expBody": "Pendaftaran ≠ online. Operasi nyata menggunakan CLI:",
    "expDocs": "Dokumen: repo",
    "expEdge": "Di tepi:",
    "expPayload": "; rekomendasi muatan perintah",
    "fleetCan": "Apa yang bisa dilakukan armada",
    "fleetCanDesc": "Bukan daftar kosong — kemampuan bidang kontrol nyata untuk node tepi",
    "capRegister": "Daftar",
    "capRegisterD": "Menulis daftar bidang kontrol (status “hanya terdaftar”) — proses mungkin tidak berjalan",
    "capCommand": "Memerintah",
    "capCommandD": "Preset CLI (kesiapan / host / proyek…) atau kustom; edge pulls, menjalankan ysk-server, dan acks",
    "capHistory": "Sejarah perintah",
    "capHistoryD": "antri/selesai/kesalahan, kode keluar, hasil JSON cantik",
    "capDelete": "Menghapus",
    "capDeleteD": "Menghapus sesi dan pesan terkait",
    "capStatus": "Status",
    "capStatusD": "Hanya terdaftar → online (detak jantung) → basi (>60 detik tanpa detak jantung)",
    "statusFlowTitle": "Aliran status",
    "statusFlow": "Hanya terdaftar → online → basi (>60an) → offline (terputus). Filter “Offline” terputus.",
    "colSession": "Sesi UUID",
    "copySession": "Salin UUID sesi untuk cluster / CLI --session",
    "staleFor": "Tak terlihat {{age}}",
    "commandTitle": "Antrean perintah untuk sesi ini",
    "historyTitleShort": "Buka riwayat perintah (hanya baca)",
    "fleetTitle": "Armada ({{count}})",
    "fleetDesc": "Registri bidang kendali · terdaftar ≠ node online",
    "registerPlus": "+ Daftarkan agen",
    "colId": "ID",
    "colStatus": "Status",
    "colGroup": "Kelompok",
    "colLastSeen": "Terakhir terlihat",
    "command": "Memerintah",
    "history": "Sejarah",
    "emptyAgents": "Tidak ada agen yang terdaftar",
    "emptyAgentsDesc": "Daftar dari daftar, atau tunggu proses edge untuk mendaftar sendiri",
    "historyTitle": "Riwayat perintah · {{id}}",
    "historyDesc": "antri sampai node menarik;",
    "refreshHistory": "Segarkan sejarah",
    "colTime": "Waktu",
    "finishedAt": "Selesai {{at}}",
    "colCommand": "Memerintah",
    "colResult": "Ringkasan hasil",
    "colExit": "KELUAR",
    "hasResult": "Memiliki hasil",
    "emptyCmds": "Belum ada perintah",
    "emptyCmdsDesc": "Antrian dengan “Perintah”; tetap mengantri sampai agen edge online",
    "edgeOnlineTitle": "Bagaimana agen edge online",
    "edgeOnlineDesc": "Setelah registrasi panel, node harus menjalankan loop keluar ke perintah detak jantung/tarikan",
    "controlPlaneApi": "API bidang kendali:",
    "controlPlaneHint": "(harus dapat dijangkau; gunakan alamat panel asli dalam produksi)",
    "queueNote": "Tanpa proses edge, “Command” tetap berfungsi: ia mengantri hingga agen online.",
    "runtimeTitle": "Waktu proses AI",
    "runtimeDesc": "Jalur dan unit penyelidikan;",
    "emptyRuntime": "Belum ada hasil penyelidikan",
    "emptyRuntimeDesc": "Segarkan untuk memuat waktu proses, atau selidiki satu per satu",
    "pathExists": "Ada",
    "pathMissing": "Tidak dipasang",
    "unitUnknown": "{{unit}} · tidak diketahui",
    "unitFallback": "satuan",
    "path": "Jalur",
    "probe": "Menguji",
    "install": "Memasang",
    "recentOps": "Operasi terkini",
    "registerTitle": "Daftar agen",
    "registerDesc": "Hanya menulis daftar bidang kendali; tidak berarti node sedang online",
    "register": "Daftar",
    "agentId": "ID Agen",
    "agentIdHint": "ID unik, mis. edge-1 atau gateway kantor",
    "group": "Kelompok",
    "groupHint": "Untuk filter zonasi/daftar",
    "registerNote": "Status menunjukkan “hanya terdaftar” hingga node menjalankan agen keluar dan detak jantung.",
    "cmdTitle": "Perintah · {{id}}",
    "cmdTitlePlain": "Memerintah",
    "cmdDesc": "Mengantri; agen tepi menarik, menjalankan, dan mengambil (tetap mengantri saat offline)",
    "enqueue": "Entri",
    "cmdPreset": "Perintah (CLI pertama)",
    "cmdTypeAria": "Jenis perintah",
    "customCli": "CLI khusus",
    "cliArgs": "Argumen CLI",
    "cliArgsHint": "Jangan sertakan server ysk; misalnya jurnal log --unit nginx.service",
    "cmdNote": "Agen server Edge ysk dijalankan mengeksekusi CLI JSON secara lokal (menambahkan --json). Perubahan host masih memerlukan YSK_EXECUTE=1 di edge. Lihat kode keluar dan JSON di Riwayat.",
    "resultTitle": "Hasil perintah · keluar {{code}}",
    "resultTitlePlain": "Hasil perintah",
    "codeComment": "# Konsep: register → loop detak jantung → perintah tarik → ack\n# Perpustakaan: ysk-server-core runOutboundAgent / agentCycle",
    "resultOuter": "Luar: edge ack (exitCode / stderr). Hasil batin:",
    "deleteTitle": "Hapus {{id}}?",
    "deleteTitlePlain": "Hapus agen?",
    "deleteDesc": "Riwayat perintah terkait juga akan dihapus.",
    "fact": {
      "kind": "Jenis",
      "name": "Nama",
      "status": "Status",
      "unitActive": "Melayani",
      "unitName": "Satuan",
      "pathExists": "Jalan ada",
      "installPath": "Instal jalur"
    },
    "installBlocked": "Tidak dapat menyelesaikan instalasi di panel admin",
    "registeredMsg": "Terdaftar {{id}} (hanya bidang kontrol; node harus menjalankan agen keluar dan detak jantung untuk online)",
    "registerFailed": "Pendaftaran gagal",
    "removedFleet": "Pendaftaran armada dihapus",
    "enqueuedMsg": "Perintah antrian {{id}}… (berjalan setelah penarikan node)",
    "enqueueFailed": "Antrean gagal",
    "loadCommandsFailed": "Gagal memuat perintah",
    "probedMsg": "Diselidiki {{kind}}",
    "probeFailed": "Penyelidikan gagal",
    "wroteUnitMsg": "Menulis {{kind}} pengaturan unit",
    "writeFailed": "Penulisan gagal",
    "installedMsg": "Dipasang {{kind}}",
    "installIncomplete": "Penginstalan tidak lengkap",
    "badgeDryRun": "lari kering",
    "badgeBlocked": "diblokir",
    "labelStderr": "stderr",
    "labelAckCli": "ack + CLI JSON",
    "labelStdoutBody": "Badan CLI yang kokoh",
    "resultOuterHint": "Hasil luarnya adalah CLI --json stdout.",
    "noteAllowlist": "Panggilan alat agen harus melewati daftar yang diizinkan.",
    "noteRbacCap": "Peran agen dibatasi pada tingkat penulisan rendah."
  },
  "ai": {
    "status": {
      "completed": "Selesai",
      "done": "Selesai",
      "executed": "Dieksekusi",
      "failed": "Gagal",
      "error": "Kesalahan",
      "rejected": "Ditolak",
      "pending": "Tertunda",
      "planned": "Berencana",
      "approved": "Disetujui",
      "running": "Berlari",
      "cancelled": "Dibatalkan"
    },
    "activeCount": "{{count}} aktif",
    "taskCount": "{{count}} tugas",
    "tasks": "Tugas",
    "active": "Aktif",
    "tasksTab": "Tugas ({{count}})",
    "playbooksTab": "Buku pedoman ({{count}})",
    "queueTitle": "Antrian tugas",
    "queueSub": "Pilih untuk melihat rencana & langkah · tidak ada tindakan tambahan pada status terminal",
    "createTaskPlus": "+ Buat tugas",
    "emptyTasks": "Belum ada tugas",
    "emptyTasksDesc": "Buat tugas dari daftar, atau jalankan buku pedoman",
    "browsePlaybooks": "Telusuri buku pedoman",
    "noPrompt": "(tidak ada perintah)",
    "stepsOf": "Langkah {{done}}/{{total}}",
    "noPlanSummary": "(tidak ada ringkasan rencana)",
    "pipelineAria": "Fase tugas",
    "phase": {
      "plan": "Rencana",
      "approve": "Tinjauan",
      "run": "Menjalankan",
      "done": "Selesai"
    },
    "approveRun": "Setujui & jalankan",
    "cancelTask": "Batalkan tugas",
    "terminalHint": "Tugas selesai — membuat tugas baru atau menjalankan buku pedoman",
    "stepsTitle": "Langkah ({{count}})",
    "noSteps": "Belum ada langkah",
    "needsApproval": "Perlu persetujuan",
    "noApproval": "Tidak ada persetujuan",
    "reject": "Menolak",
    "selectTask": "Pilih tugas",
    "selectTaskDesc": "Pilih tugas di sebelah kiri untuk melihat rencana dan langkah",
    "playbooksTitle": "Buku pedoman",
    "playbooksSub": "Operasi preset · berjalan membuat tugas dan beralih ke Tugas",
    "countItems": "{{count}}",
    "searchPh": "Nama / deskripsi",
    "noPlaybooks": "Tidak ada pedoman yang cocok",
    "noPlaybooksDesc": "Ubah kata kunci atau hapus pencarian",
    "run": "Berlari",
    "createTitle": "Buat tugas AI",
    "createDesc": "Perencanaan ≠ dilaksanakan. Alat tetap berada dalam daftar yang diizinkan.",
    "generatePlan": "Hasilkan rencana",
    "promptLabel": "Instruksi bahasa alami",
    "promptHint": "misalnya periksa beban host; atau status nginx",
    "promptPh": "Jelaskan apa yang Anda inginkan…",
    "createHint": "Berikutnya: Menyetujui & menjalankan di detail tugas, atau menolak setiap langkah."
  },
  "apache": {
    "pageDesc": "Situs Apache (proyek PHP + mandiri)",
    "pillSites": "{{count}} situs",
    "pillSitesSplit": "{{n}} situs · {{leftover}} sisa",
    "listTitle": "Situs ({{count}})",
    "emptyTitle": "Tidak ada situs",
    "createSite": "+ Buat situs",
    "createTitle": "Buat situs",
    "editTitle": "Sunting situs",
    "deleteTitle": "Hapus situs?",
    "deleteDesc": "Hapus situs Apache ini?",
    "stopSites": "{{n}} situs akan berhenti menjawab HTTP.",
    "colServerName": "Nama server",
    "colSource": "Sumber",
    "colKind": "Jenis",
    "colTarget": "Target",
    "colStatus": "Status",
    "filterSource": "Penyaring sumber",
    "sourceAll": "Semua",
    "sourceProject": "Proyek",
    "sourceStandalone": "Mandiri",
    "sourceArtifact": "Di disk",
    "sourceOrphan": "Sisa",
    "orphanSite": "Proyek hilang",
    "openProject": "Buka proyek",
    "kindLabel": "Jenis",
    "kindProxy": "Proksi",
    "kindStatic": "Statis",
    "kindPhp": "PHP",
    "upstreamLabel": "Hulu",
    "rootLabel": "Akar dokumen",
    "sslLabel": "SSL",
    "sslTerminatedUpstream": "TLS berakhir di depan Nginx",
    "apply": "Menerapkan",
    "notInstalled": "Apache tidak diinstal",
    "globalSettings": "Pengaturan global",
    "siteSettings": "Pengaturan situs",
    "saveApply": "Simpan & terapkan",
    "settingsSaved": "Disimpan",
    "setGzip": "Gzip",
    "setShowVersion": "Tampilkan versi",
    "setHttp2": "HTTP/2",
    "setBody": "Tubuh maksimal",
    "setKeepalive": "Tetap hidup",
    "setAccessLog": "Catatan akses",
    "logOn": "Pada",
    "logOff": "Mati",
    "setForceHttps": "Paksa HTTPS",
    "setHsts": "HSTS",
    "setIndexes": "Daftar direktori",
    "bodyInherit": "Global",
    "conflict": "Konflik nama",
    "conflictHint": "ServerName yang sama memiliki banyak sumber. Pertahankan baris proyek/mandiri dan hapus disk yatim piatu.",
    "removeArtifact": "Hapus sisa",
    "removeArtifactTitle": "Hapus sisa konfigurasi?",
    "removeArtifactDesc": "Hapus konfigurasi Apache yang tidak diklaim ini dari direktori data panel dan nonaktifkan sistem kembar jika memungkinkan. Tidak menghapus proyek.",
    "removeArtifactHint": "Hanya menghapus conf sisa di disk ini. Tidak menghapus proyek.",
    "previewConf": "Pratinjau konf",
    "cleanupConflicts": "Bersihkan sisa-sisa konflik",
    "cleanupConflictsTitle": "Bersihkan semua sisa konflik?",
    "cleanupConflictsDesc": "Hapus setiap konfigurasi artefak pada disk yang bertentangan dengan proyek atau Nama Server mandiri. Baris proyek disimpan.",
    "artifactRemovedOk": "Konfigurasi sisa dihapus"
  },
  "applyStatus": {
    "draft": "Draf",
    "written": "Tertulis (data panel)",
    "planned": "Sedang berlangsung",
    "applied": "Diterapkan pada tuan rumah",
    "failed": "Gagal",
    "pendingExecute": "Membutuhkan eksekusi host",
    "uploaded": "Diunggah",
    "issued": "Diterbitkan",
    "missing": "Berkas hilang"
  },
  "audit": {
    "recent": "Audit terbaru",
    "lastN": "Terakhir {{n}}",
    "actions": {
      "protection.change": "Pengaturan perlindungan diubah",
      "auth.locale": "Bahasa UI berubah",
      "auth.login": "Masuk",
      "auth.logout": "Keluar",
      "system.firewall.allow_port": "Firewall mengizinkan port",
      "system.firewall.deny": "Firewall menolak IP",
      "system.firewall.apply": "Firewall berlaku",
      "project.deploy": "Penyebaran proyek",
      "project.create": "Proyek dibuat",
      "project.delete": "Proyek dihapus",
      "ssl.request": "permintaan SSL",
      "ssl.upload": "Unggahan SSL",
      "system.firewall.enable": "Mengaktifkan/menonaktifkan firewall",
      "system.firewall.delete_rule": "Hapus aturan firewall",
      "system.firewall.delete_deny": "Hapus IP penolakan permanen",
      "db.adminer.apply": "Proyek peramban DB",
      "project.goLive": "Proyek ditayangkan",
      "project.publish": "Publikasikan Nginx",
      "project.suspend": "Tangguhkan proyek",
      "software.install": "Instal perangkat lunak",
      "software.update": "Perbarui perangkat lunak",
      "backup.restore": "Pemulihan cadangan",
      "backup.run": "Jalankan cadangan",
      "backup.delete": "Cadangan dihapus"
    }
  },
  "backups": {
    "settingsSaved": "Pengaturan cadangan disimpan",
    "saveFailed": "Gagal menyimpan",
    "downloadStarted": "Pengunduhan dimulai: {{name}}",
    "nothingToDo": "Tidak ada hubungannya",
    "tarOkSideFail": "tar OK / langkah samping mengalami masalah",
    "success": "Kesuksesan",
    "hasFailures": "Memiliki kegagalan",
    "notYet": "Belum",
    "enabled": "Diaktifkan",
    "needPassword": "Kata sandi tidak ada",
    "off": "Mati",
    "lastRun": "Terakhir {{label}}",
    "backupFiles": "File cadangan",
    "projects": "Proyek",
    "lastAll": "Terakhir semuanya",
    "latestFile": "Arsip terbaru",
    "remote": "Terpencil",
    "withBackups": "Proyek dengan cadangan",
    "ops": "Tindakan",
    "remoteExclude": "Jarak jauh / kecualikan",
    "about": "Tentang",
    "noBackups": "Belum ada cadangan",
    "noBackupsDesc": "Jalankan “Cadangkan semua proyek” atau Cadangkan pada detail proyek",
    "goOps": "Lanjutkan ke tindakan",
    "projectShort": "Proyek",
    "download": "Unduh",
    "preview": "Pratinjau",
    "restoreWeb": "Pulihkan web",
    "restoreFull": "Pemulihan penuh",
    "restoreFullTitle": "Timpa file proyek dan database dari arsip ini — ketikkan nama file untuk mengonfirmasi",
    "restoreWebTitle": "Pulihkan file situs web hanya dari arsip ini",
    "previewTitle": "Pratinjau pemulihan tanpa menulis",
    "partialSkipped": "Parsial — beberapa proyek dilewati",
    "delete": "Menghapus",
    "opsTitle": "Tindakan",
    "opsHint": "0 proyek atau semua dilewati = sukses;",
    "noProjects": "(tidak ada proyek)",
    "successRatio": "· {{ok}}/{{total}} oke",
    "summary": "Ringkasan{{extra}}",
    "backupFailed": "Pencadangan gagal",
    "backupDone": "Pencadangan selesai",
    "backupAll": "Cadangkan semua proyek",
    "controlPlane": "Bidang kendali cadangan",
    "controlPlaneDone": "Pencadangan bidang kontrol selesai",
    "cronCmd": "Perintah: ysk-server backup semua --data-dir …",
    "cronHint": "Jadwalkan POST dengan install=true memuat crontab host saat EXECUTE aktif;",
    "dailyCronRegistered": "Terdaftar setiap hari jadwal 03:00",
    "registerDailyCron": "Daftar jadwal harian (+ install)",
    "resticNeedConfig": "Aktifkan restic dan setel kata sandi di bawah Remote / kecualikan terlebih dahulu",
    "resticFailed": "istirahat gagal",
    "resticDone": "restic inkremental selesai",
    "resticOnly": "Jalankan istirahat saja",
    "listSnapshots": "Daftar snapshot istirahat",
    "lastAllDetail": "Detail cadangan lengkap terakhir",
    "time": "Waktu",
    "result": "Hasil",
    "nothingZero": "Tidak ada hubungannya (0 proyek)",
    "notes": "Catatan",
    "status": "Status",
    "skipped": "Dilewati",
    "failed": "Gagal",
    "lastNoProjects": "Tidak ada proyek yang memerlukan cadangan terakhir kali.",
    "noPerProject": "Tidak ada hasil per proyek.",
    "remoteSide": "Tangga samping jarak jauh/istirahat",
    "step": "Melangkah",
    "remoteStep": "Terpencil",
    "restoreProjectId": "Pulihkan projectId (kosong = daftar semua)",
    "needProjectOrTag": "Isi projectId atau snapshot harus memiliki proyek: tag",
    "dryRunDone": "uji coba selesai (tidak ada penulisan)",
    "allSuccess": "Semua berhasil",
    "failOrSkip": "Kegagalan / lompatan",
    "noteN": "Catatan {{n}}",
    "enableRemote": "Aktifkan dorongan jarak jauh",
    "targetKind": "Jenis sasaran",
    "remoteKindAria": "Jenis target jarak jauh",
    "localPath": "Jalur lokal",
    "host": "Tuan rumah",
    "port": "Pelabuhan",
    "username": "Nama belakang",
    "password": "Kata sandi",
    "passwordSshHint": "Kosong untuk menggunakan kunci SSH host",
    "savedLeaveEmpty": "Biarkan kosong jika sudah disimpan",
    "s3Bucket": "Jalur ember",
    "region": "Wilayah",
    "endpointOptional": "Titik akhir (opsional)",
    "localMirror": "Jalur cermin lokal",
    "remotePath": "Jalur jarak jauh",
    "remotePathHint": "Relatif terhadap rumah pengguna jarak jauh (atau chroot SFTP). “.” apakah itu rumah.",
    "resticTitle": "Istirahat tambahan",
    "resticDesc": "Opsional; istirahatlah di PATH. Kata sandi diperlukan saat diaktifkan (tidak ada default)",
    "enableRestic": "Aktifkan istirahat",
    "repoPath": "jalur repo",
    "repoPassword": "Kata sandi repo",
    "repoPassSaved": "Disimpan; kosong = simpan. Diperlukan saat diaktifkan.",
    "repoPassRequired": "Diperlukan ketika restic diaktifkan (tidak ada kata sandi default)",
    "savedPlaceholder": "Tersimpan (kosong = simpan)",
    "required": "Diperlukan",
    "s3RepoUrl": "Atau URL repo S3",
    "excludeTitle": "Kecualikan aturan",
    "excludeSub": "tar mengecualikan jalur, satu gumpalan per baris",
    "excludeList": "Kecualikan daftar",
    "saveAll": "Simpan semua pengaturan",
    "restoreFailed": "Pemulihan gagal",
    "previewDone": "Pratinjau selesai",
    "restoreDone": "Pemulihan selesai",
    "previewQ": "Pratinjau konten cadangan?",
    "restoreWebQ": "Pemulihan selektif (web)?",
    "restoreFullQ": "Pemulihan penuh?",
    "previewDesc": "Daftar {{name}} saja — tidak ada perubahan file.",
    "restoreWebDesc": "Ekstrak {{name}} ke rumah proyek (lebih aman).",
    "restoreFullDesc": "Pemulihan tar penuh {{name}}; dapat menimpa file yang ada.",
    "restore": "Memulihkan",
    "cancel": "Membatalkan",
    "deleteFailed": "Penghapusan gagal",
    "deleted": "Dihapus",
    "deleteTitle": "Hapus file cadangan?",
    "deleteDesc": "Hapus secara permanen {{name}}",
    "tabTrash": "Tempat sampah daur ulang",
    "trashTitle": "Tempat sampah daur ulang ({{count}})",
    "trashSub": "Arsip yang dihapus tetap berada di sini selama 7 hari, kemudian dihapus secara permanen.",
    "trashEmpty": "Tempat sampah daur ulang kosong",
    "trashEmptyDesc": "File cadangan yang dihapus muncul di sini selama 7 hari.",
    "trashRestore": "Memulihkan",
    "trashPurge": "Hapus selamanya",
    "trashEmptyAll": "Tempat sampah kosong",
    "trashExpires": "Kedaluwarsa {{at}}",
    "trashPurgeTitle": "Hapus cadangan ini secara permanen?",
    "trashPurgeDesc": "Hapus {{name}} secara permanen. Hal ini tidak dapat dibatalkan.",
    "trashEmptyTitle": "Tempat sampah kosong?",
    "trashEmptyDescConfirm": "Hapus {{count}} arsip secara permanen. Ketik hitungan untuk mengonfirmasi.",
    "trashRestored": "Dipulihkan dari tempat sampah",
    "trashPurged": "Dihapus secara permanen",
    "trashedOk": "Dipindahkan ke keranjang sampah",
    "resticSafeTitle": "restic mengembalikan ke direktori aman?",
    "resticSafeDesc": "Pulihkan {{snapshot}} ke direktori proyek {{project}} .restic-restore-*",
    "resticRestoreDone": "pemulihan istirahat selesai",
    "overwriteTitle": "Bahaya: menimpa rumah",
    "overwriteDesc": "Akan menimpa rumah untuk proyek {{project}}. Ketik OVERWRITE untuk mengonfirmasi.",
    "confirmString": "Konfirmasikan string",
    "overwriteHome": "Timpa rumah",
    "resticOverwriteDone": "istirahat menimpa rumah selesai",
    "opsResult": "Hasil operasi",
    "filesTitle": "File cadangan ({{count}})",
    "filesSub": "Manajemen-dir tar · pengunduhan memerlukan login · pemulihan: dry-run / web / penuh",
    "backupAllBtn": "Cadangkan semua",
    "yes": "Ya",
    "no": "TIDAK",
    "safeDir": "Direktori aman",
    "remotePushTitle": "Target dorong jarak jauh",
    "remotePushSub": "Setelah tar lokal berhasil, dorong ke SFTP, jalur lokal, atau S3",
    "accessKey": "Kunci Akses",
    "secretKey": "Kunci Rahasia",
    "overwriteConfirmHint": "Ketik OVERWRITE untuk mengonfirmasi penimpaan",
    "testRemote": "Uji tujuan",
    "testRemoteHint": "Menyambungkan ke host jarak jauh dan menulis file probe kecil. Bukan hanya baca.",
    "testRemoteDone": "Probe jarak jauh selesai",
    "testRemoteFailed": "Probe jarak jauh gagal",
    "resticRepoPh": "Direktori data panel / restic-repo",
    "testDisabledHint": "Aktifkan push jarak jauh sebelum pengujian.",
    "identityId": "Identitas SSH keluar",
    "identityHint": "Lebih disukai. Gudang yang sama dengan /keamanan SSH. Kata sandi memerlukan sshpass.",
    "identityNone": "Tidak ada — kata sandi atau kunci default",
    "skippedListHint": "Proyek-proyek ini dilewati:",
    "skippedPendingOs": "Dilewati — Pengguna OS/rumah tidak tersedia",
    "goLogs": "Buka log",
    "goAbout": "Catatan cadangan",
    "previewListingTitle": "Isi arsip",
    "restoreNamedDesc": "Pulihkan {{name}} ke dalam proyek {{project}}.",
    "overwriteNamedDesc": "Timpa file proyek {{project}} dari snapshot {{snapshot}}.",
    "resticSafeNamed": "Pulihkan snapshot {{snapshot}} proyek {{project}} ke dalam direktori aman."
  },
  "btTracker": {
    "title": "Pelacak BT",
    "sub": "Self-hosted BitTorrent / WebTorrent tracker for file shares",
    "pageDesc": "Seed panel file shares over BitTorrent. Start the tracker, set a public announce host, then create BT shares in Files.",
    "status": "Status",
    "running": "Berlari",
    "stopped": "Berhenti",
    "installed": "Installed (bundled)",
    "start": "Start tracker",
    "stop": "Stop tracker",
    "stopTitle": "Hentikan pelacak — penyemaian dan pengunduhan akan terhenti",
    "stopDesc": "Menjalankan torrent berhenti diumumkan. Rekan terputus hingga Anda memulai pelacak lagi.",
    "fillPublicHost": "Gunakan {{host}}",
    "fillPublicHostTitle": "Isikan nama host panel saat ini sebagai host pengumuman publik",
    "refresh": "Menyegarkan",
    "settings": "Pengaturan",
    "httpPort": "HTTP / WebSocket port",
    "udpPort": "UDP port (0 = off)",
    "listenHost": "Listen host",
    "listenHostHint": "0.0.0.0 mendengarkan di setiap alamat. Lebih suka 127.0.0.1 kecuali rekan-rekan harus menghubungi host ini.",
    "listenAllWarn": "Pelacak terikat ke semua alamat. Dengan firewall dimatikan, ini bersifat publik. Ikat 127.0.0.1 hanya untuk lokal, atau batasi port di firewall.",
    "bindLoopback": "127.0.0.1 saja",
    "bindAll": "0.0.0.0 (semua)",
    "wsEnabled": "WebSocket tracker (browser WebTorrent)",
    "wsEnabledHint": "Required for browser WebTorrent clients",
    "autostart": "Autostart with panel",
    "autostartHint": "Start tracker when ysk-server serve boots",
    "publicAnnounceHost": "Public announce host",
    "publicAnnounceHostHint": "Host or host:port used in magnet announce URLs. Empty = 127.0.0.1 until you set a public hostname.",
    "maxSeeds": "Max concurrent seeds",
    "seederPorts": "Seeder peer ports",
    "seederPortMin": "Port rekan dimulai",
    "seederPortMax": "Ujung port rekan",
    "seederPortsHint": "Local peer listen range for the in-process seeder",
    "saveSettings": "Save settings",
    "applyHint": "Saving ports does not open the firewall — use network exposure or Start after EXECUTE.",
    "torrents": "Tracked torrents",
    "torrentsEmpty": "No announce traffic yet",
    "torrentsEmptyHint": "Create a file share with BitTorrent mode in Files. This table fills as peers announce and the server seeds.",
    "torrentsDesc": "Live swarm from the tracker, plus local seeder status for panel shares.",
    "colName": "Nama",
    "colHash": "Info hash",
    "colSeeds": "Benih",
    "colLeechers": "Lintah",
    "colStatus": "Status",
    "announceUrls": "Announce URLs",
    "announceDesc": "Put these trackers in clients, or rely on magnets generated by the panel.",
    "copy": "Menyalin",
    "copied": "Disalin",
    "statsTorrents": "Torrent",
    "statsLibrary": "Perpustakaan",
    "statsLibraryHint": "Torrent di panel perpustakaan/file share",
    "statsTrackerLeftover": "Tracker leftover",
    "statsTrackerLeftoverHint": "Tracker announce hashes that are not library rows",
    "leftoverHashesTitle": "Pelacak sisa hash",
    "publicHostMissingLive": "Pelacak mendengarkan tetapi host pengumuman publik belum disetel. Rekan di luar host tidak dapat menemukan benih ini.",
    "leftoverHashesHint": "Hanya baca. Pengumuman ini bukan baris perpustakaan atau berbagi.",
    "statsPeers": "Teman sejawat",
    "statsAnnounces": "Mengumumkan",
    "statsAnnouncesHint": "Umumkan permintaan yang dilihat oleh proses pelacak",
    "statsJobs": "Active jobs",
    "openShares": "File shares",
    "needExecute": "Enable system-change permission (YSK_EXECUTE) to open ports and run production seeds.",
    "guideTitle": "What is this?",
    "guideBody": "When you create a BT file share, YSK builds a .torrent, seeds it, and announces peers via this tracker. Open the port if downloaders are off-host.",
    "restoreSeeds": "Re-seed BT shares",
    "restoreSeedsHint": "Start tracker if needed and re-seed shares that still have a .torrent on disk.",
    "bundledNote": "Bundled with YSK Server (Node). No apt install/uninstall — Start/Stop manages the process.",
    "stackTitle": "Perangkat lunak",
    "jobs": "Torrent jobs",
    "jobsEmpty": "No background torrent jobs",
    "jobsEmptyHint": "Large shares (≥128 MiB) build .torrent files in the background so the Files dialog stays responsive.",
    "jobsDesc": "Background create-torrent queue for large file or folder shares.",
    "colJob": "Pekerjaan",
    "colShare": "Membagikan",
    "colJobStatus": "Job status",
    "colEnqueued": "Enqueued",
    "refreshJobs": "Refresh jobs",
    "tabOverview": "Ringkasan",
    "tabTorrents": "Torrent",
    "tabJobs": "Pekerjaan",
    "tabSettings": "Pengaturan",
    "tabAbout": "Tentang",
    "heroRunning": "Tracker is live",
    "heroStopped": "Tracker is stopped",
    "heroRunningSub": "Peers can announce and discover seeds for panel shares.",
    "heroStoppedSub": "Start the tracker before sharing large files over BitTorrent.",
    "live": "Hidup",
    "liveOff": "Menganggur",
    "quickStart": "Quick start",
    "quickStartDesc": "Three steps to share files over BitTorrent.",
    "step1Title": "Set public announce host",
    "step1Hint": "Hostname clients use in magnets (Settings).",
    "step2Title": "Start the tracker",
    "step2Hint": "Open port exposure if peers are off this host.",
    "step3Title": "Create a BT share",
    "step3Hint": "In Files → Share, choose BitTorrent or both.",
    "stepDone": "Selesai",
    "stepTodo": "Semua yang harus dilakukan",
    "networkCard": "Jaringan",
    "networkCardDesc": "Where the tracker listens and what host appears in magnets.",
    "seederCard": "Alat penyemai benih",
    "seederCardDesc": "In-process WebTorrent seeder limits and peer ports.",
    "lifecycleCard": "Siklus hidup",
    "lifecycleCardDesc": "Boot behaviour and how the service is packaged.",
    "pid": "PID",
    "port": "Pelabuhan",
    "announceHost": "Announce host",
    "goSettings": "Open settings",
    "searchTorrents": "Search name or hash…",
    "filterAll": "Semua",
    "filterSeeding": "Penyemaian",
    "filterOther": "Lainnya",
    "noMatch": "No torrents match your filter",
    "seedStatusSeeding": "Penyemaian",
    "seedStatusPending": "Tertunda",
    "seedStatusError": "Kesalahan",
    "seedStatusStopped": "Berhenti",
    "seedStatusNone": "Tidak ada",
    "notesTitle": "Service notes",
    "exposureTitle": "Network access",
    "protoHttp": "HTTP",
    "protoWs": "WS",
    "protoUdp": "UDP",
    "saveOk": "Settings saved",
    "saveOkRestart": "Tersimpan — mulai ulang pelacak untuk menerapkan port",
    "startedOk": "Tracker started",
    "stoppedOk": "Tracker stopped",
    "restoredOk": "Re-seed finished",
    "restoredCount": "Diunggulkan kembali {{seeded}} dari {{attempted}} torrent",
    "portInvalid": "Masukkan port dari 1 hingga 65535.",
    "extraTrackerRequired": "Masukkan URL pengumuman.",
    "stopPort": "Port pelacak {{port}} akan berhenti mendengarkan.",
    "stopPid": "Proses PID {{pid}} akan keluar.",
    "swarmLeftoverUnlisted": "{{count}} pengumuman sisa tambahan tidak memiliki hash dalam daftar ini.",
    "httpPortHint": "Default 8000 (YSK catalog / firewall chip). Open TCP if peers are off-host.",
    "udpPortHint": "Optional classic UDP announce. 0 = off (browser WebTorrent uses HTTP/WS). Prefer 6969 or the same port as HTTP if you open UDP on the firewall.",
    "udpPortOff": "0 · Off",
    "udpPortSameHttp": "Same as HTTP ({{port}})",
    "udpPortClassic": "6969 · Classic",
    "portSuggest8000": "8000 · Recommended",
    "announceHostUnset": "Belum diatur",
    "tabTrackers": "Pelacak",
    "addTorrent": "Tambahkan torrent",
    "addTorrentTitle": "Tambahkan torrent",
    "addTorrentHint": "Unggah .torrent atau tempel magnet. Pilih folder File. WebTorrent mengunduh file dan seed yang hilang setelah selesai.",
    "dropTorrent": "Letakkan .torrent di sini",
    "chooseFile": "atau pilih file",
    "magnetLabel": "magnet",
    "magnetPlaceholder": "magnet:?xt=guci:btih:…",
    "inspect": "Membaca",
    "extraTrackersPreview": "Juga akan mengumumkan kepada {{n}} pelacak tambahan",
    "saveLocation": "Simpan lokasi",
    "saveRootPublic": "File publik",
    "newFolder": "Folder baru",
    "destPreview": "Akan menulis ke",
    "startDownload": "Mulai unduh",
    "filterDownloading": "Mengunduh",
    "filterPaused": "Dijeda",
    "filterError": "Kesalahan",
    "emptyDrop": "Letakkan .torrent di sini, atau pilih file",
    "emptyHint": "File masuk ke folder yang Anda pilih. Jika sudah lengkap, inang ini berbiji. Mesin: WebTorrent — tidak ada perangkat lunak pengunduhan tambahan.",
    "pause": "Berhenti sebentar",
    "resume": "Melanjutkan",
    "openFolder": "Buka map",
    "remove": "Menghapus",
    "removeKeep": "Hapus, simpan file",
    "removeDelete": "Hapus dan hapus file",
    "removeConfirm": "Hapus torrent ini dari perpustakaan?",
    "kindShare": "Membagikan",
    "filesInTorrent": "file",
    "extraTrackersDesc": "URL pengumuman tambahan. Pengunduhan perpustakaan/seed dan seed berbagi file menggunakannya sebagai tambahan pada daftar .torrent. Hal ini tidak membuka pelacak lokal terhadap kelompok yang sewenang-wenang.",
    "extraTrackersEmpty": "Tidak ada pelacak tambahan. Tambahkan URL pengumuman HTTP(S), UDP, atau WS(S) sehingga host ini dapat menemukan rekannya.",
    "extraTrackerAdd": "Menambahkan",
    "extraTrackerUrl": "Umumkan URL",
    "extraTrackerApply": "Terapkan pada benih yang ada saat ini",
    "extraTrackerApplyOk": "Menerapkan pelacak tambahan",
    "extraEnabled": "Pada",
    "extraTrackerBad": "URL harus diawali dengan http://, https://, udp://, ws://, atau wss://",
    "extraTrackerDup": "Sudah terdaftar",
    "extraTrackerLimit": "Maksimum 32 pelacak tambahan",
    "addOk": "Ditambahkan ke perpustakaan",
    "savedTo": "Menyimpan",
    "folderEmpty": "Tidak ada subfolder",
    "needTorrentFile": "Pilih file .torrent",
    "torrentTooBig": ".torrent lebih besar dari 8 MiB",
    "seedStatusDownloading": "Mengunduh",
    "seedStatusChecking": "Memeriksa",
    "seedStatusPaused": "Dijeda",
    "seedStatusQueued": "Mengantri",
    "swarmLeftover": "Tracker punya {{count}} announce di luar pustaka (sumber berbeda dari daftar Torrent)",
    "addSourceSection": "Sumber",
    "addSourceFile": "Berkas",
    "addSourceMagnet": "magnet",
    "previewSection": "Pratinjau",
    "saveRoot": "Akar",
    "clearFile": "Hapus berkas",
    "extraTrackersTitle": "Announce tambahan",
    "extraTrackersEmptyTitle": "Belum ada Tracker",
    "extraEnabledCount": "{{count}} aktif",
    "extraApplyHint": "Aktifkan setidaknya satu untuk menerapkan ke seed yang ada",
    "destMode": "Cara memakai folder ini",
    "seedExisting": "Seed berkas yang ada",
    "downloadNewFolder": "Unduh ke folder baru",
    "destFileConflict": "Berkas {{name}} sudah ada di sini. Pilih folder lain, atau seed berkas yang ada jika cocok.",
    "waitingPeers": "Menunggu peer. Jika berkas sudah di host ini, tambahkan lagi dan pilih seed berkas yang ada."
  },
  "catalog": {
    "sw": {
      "vsftpd": "vsftpd (FTPS)",
      "db_util": "db-util (DB pengguna FTP)",
      "nginx": "Nginx",
      "certbot": "Certbot (Let's Encrypt)",
      "mysql_client": "Klien MySQL/MariaDB",
      "mysql_server": "server MySQL",
      "mariadb_server": "server MariaDB",
      "postgresql_client": "klien PostgreSQL",
      "postgresql": "Server PostgreSQL",
      "redis_tools": "Klien Redis",
      "redis_server": "Server ulang",
      "ufw": "firewall UFW",
      "fail2ban": "fail2ban",
      "postfix": "Postfix",
      "dovecot": "Dovecot",
      "opendkim": "OpenDKIM",
      "pdns_server": "PowerDNS",
      "git": "Git",
      "node": "Node.js",
      "php": "PHP",
      "python": "Python",
      "go": "Go",
      "rust": "Rust",
      "chromium": "Chromium / Chrome"
    },
    "php": {
      "session": "Sidang",
      "opcache": "OPcache"
    }
  },
  "cdn": {
    "fromProjectOk": "Situs CDN dibuat dari proyek — terapkan edge/DNS",
    "fromProjectUpdated": "Situs CDN terikat proyek telah diperbarui",
    "fromProjectFailed": "dari proyek gagal",
    "nodeUpdated": "Node diperbarui",
    "nodeCreated": "Node dibuat",
    "saveFailed": "Gagal menyimpan",
    "geoMapInvalid": "GeoMap JSON tidak valid, mis. {\"hkg\":[\"node-id\"]}",
    "siteUpdated": "Situs diperbarui",
    "siteCreated": "Situs dibuat",
    "probeOnline": "Selidiki OK (online)",
    "probeOffline": "Penyelidikan gagal (offline)",
    "probeFailed": "Penyelidikan gagal",
    "batchProbeOk": "Semua node diperiksa",
    "batchProbePartial": "Beberapa/semua node tidak sehat",
    "batchProbeFailed": "Pemeriksaan batch gagal",
    "drainingSet": "Setel ke pengurasan",
    "drainCleared": "Saluran pembuangan dibersihkan",
    "confirmDeleteNode": "Hapus simpul CDN ini?",
    "nodeDeleted": "Node dihapus",
    "deleteFailed": "Penghapusan gagal",
    "confirmDeleteSite": "Hapus situs CDN ini?",
    "siteDeleted": "Situs dihapus",
    "blocked": "Diblokir (membutuhkan izin perubahan sistem)",
    "previewRender": "Pratinjau render ({{status}}) hash={{hash}}",
    "fanoutDone": "Fan-out selesai ({{status}})",
    "purgeDone": "Pembersihan selesai ({{status}})",
    "dnsSyncDone": "Sinkronisasi DNS selesai ({{status}})",
    "sslDone": "SSL selesai ({{status}})",
    "confWritten": "Konf tertulis ({{status}})",
    "partialFail": "Tidak sepenuhnya berhasil ({{status}}) — lihat catatan",
    "statNodes": "Node",
    "hitNoStats": "Belum ada statistik edge",
    "loopbackOriginBlocked": "Tidak akan menerapkan origin loopback {{url}} ke edge jarak jauh. Setel origin yang dapat dijangkau.",
    "applyFailedHint": "Gagal menerapkan — lihat catatan di bawah",
    "applyFailedNoNote": "Tidak ada alasan yang tersimpan. Terapkan ulang untuk menangkap kesalahan.",
    "applyStatus": {
      "draft": "Draf",
      "planned": "Direncanakan",
      "applying": "Menerapkan",
      "applied": "Diterapkan",
      "failed": "Gagal",
      "partial": "Sebagian"
    },
    "statSites": "Situs",
    "statSitesCount": "{{n}} situs",
    "cacheMethod": {
      "none": "Tidak ada perkiraan",
      "access_log": "Catatan akses",
      "cache_dir": "Direktori cache",
      "log_format": "Perlu format log"
    },
    "geoMapLabel": "Peta geografis (JSON)",
    "statApplyFailed": "Penerapan gagal",
    "pillNodesSites": "{{n}} node · {{s}} situs",
    "statOnline": "On line",
    "statHit": "Tingkat hit",
    "hitUnknown": "Tidak dikenal",
    "lastHealthHint": "Pemeriksaan terakhir {{at}} · {{ok}}",
    "lastHealthNever": "Belum diperiksa — jalankan Probe",
    "lastHealthFail": "penyelidikan gagal",
    "healthLoopNeedSites": "Tambahkan situs terlebih dahulu",
    "nodeStatus": {
      "online": "on line",
      "offline": "luring",
      "draining": "menguras",
      "unknown": "tidak dikenal"
    },
    "recentNotes": "Catatan terkini",
    "previewOnlyNote": "Hanya pratinjau — tidak ada yang ditulis sampai ke tepinya.",
    "statByRegion": "Wilayah:",
    "statByApply": "Terapkan status:",
    "col": {
      "origin": "Asal",
      "edges": "Tepian",
      "apply": "Menerapkan",
      "dns": "DNS",
      "edgesOnline": "Tepi online / diterapkan",
      "dnsRr": "Catatan DNS CDN"
    },
    "mode": {
      "origin_pull": "Tarikan asal",
      "reverse_proxy": "Proksi terbalik",
      "static_edge": "Tepi statis"
    },
    "dnsStrategy": {
      "multi_a": "Beberapa catatan A",
      "cname": "CNAME",
      "geo": "Geografis"
    },
    "edgesOnlineApplied": "{{online}}/{{total}} daring · {{applied}} diterapkan",
    "hitMiss": "Pukul {{hits}} / meleset {{misses}}",
    "cacheBytes": "Tembolok ≈ {{n}} B",
    "hitRateUnknown": "Tidak ada log akses dengan status cache dan tidak ada direktori cache, sehingga tingkat hit tidak dapat diperkirakan.",
    "edgeConfPreview": "Pratinjau konfigurasi tepi Nginx",
    "tabs": {
      "nodes": "Node",
      "sites": "Situs",
      "dashboard": "Dasbor",
      "about": "Tentang"
    },
    "nodesTitle": "Node CDN ({{count}})",
    "nodesDesc": "Daftarkan kontrol / asal / edge / dns. Penyelidikan memperbarui status.",
    "offlineHint": "Offline — pemeriksaan gagal. Hapus node jika masih tersisa.",
    "colName": "Nama",
    "colRole": "Peran",
    "colStatus": "Status",
    "clearDrain": "Bersihkan saluran pembuangan",
    "drain": "Mengeringkan",
    "drainTitle": "Berhenti mengirimkan lalu lintas CDN baru ke edge ini",
    "drainDesc": "Tiriskan “{{name}}”? Koneksi yang ada tetap ada hingga selesai.",
    "drainLastTitle": "Ini adalah tepian terakhir — saluran pembuangan akan membuat setiap lokasi tidak memiliki tepian",
    "drainLastDesc": "“{{name}}” adalah satu-satunya keunggulan. Tiriskan dan semua situs tidak memiliki keunggulan.",
    "clearDrainTitle": "Terima lagi lalu lintas baru di tepi ini",
    "clearDrainDesc": "Hapus pengurasan pada “{{name}}”?",
    "deleteNodeTitle": "Hapus tepi CDN ini",
    "deleteLastNodeTitle": "Hapus tepi terakhir — semua situs tidak akan memiliki tepi",
    "purge": "Membersihkan",
    "previewTitle": "Pratinjau konfigurasi nginx (tidak perlu menulis)",
    "writeConfTitle": "Tulis file konfigurasi edge nginx",
    "applyEdgesTitle": "Terapkan situs ini ke tepinya (tulis nginx)",
    "purgeTitle": "Bersihkan cache di bagian tepinya",
    "dnsSyncTitle": "Tulis catatan DNS CDN",
    "probeDnsTitle": "Probe edge dan DNS (hanya baca)",
    "distSslTitle": "Salin materi TLS ke tepinya",
    "leIssueTitle": "Terbitkan sertifikat Let's Encrypt dan distribusikan",
    "deleteSiteTitle": "Hapus situs CDN ini",
    "siteOpConfirmGeneric": "Jalankan tindakan ini pada “{{name}}”?",
    "siteOpConfirmDesc": "Situs “{{name}}” · {{action}}. Ini dapat mengubah nginx, DNS, atau sertifikat.",
    "siteOpConfirm": {
      "apply": "Terapkan situs ini ke tepinya?",
      "render": "Tulis konfigurasi nginx untuk situs ini?",
      "purge": "Bersihkan cache untuk situs ini?",
      "dns-sync": "Sinkronkan DNS untuk situs ini?",
      "dist": "Distribusikan TLS ke edge?",
      "issue": "Masalah Mari Enkripsi dan Distribusikan?"
    },
    "emptyNodesTitle": "Belum ada node CDN",
    "emptyNodesDesc": "Gunakan “+ Tambahkan simpul” untuk mendaftarkan keunggulan, lalu buat situs.",
    "sitesTitle": "Situs CDN ({{count}})",
    "sitesDesc": "Domain + asal + tepian + cache + DNS multi-A. Terapkan edge/sinkronisasi DNS/pembersihan.",
    "healthLoopOk": "Loop kesehatan selesai untuk semua situs",
    "healthLoopPartial": "Loop kesehatan gagal sebagian",
    "healthLoopFailed": "loop kesehatan gagal",
    "colDomain": "Domain",
    "colMode": "Mode",
    "emptySitesTitle": "Belum ada situs CDN",
    "emptySitesDesc": "Gunakan “+ Tambahkan situs” di toolbar tabel.",
    "emptySitesNoEdge": "Belum ada edge: daftarkan node pada tab Nodes terlebih dahulu, lalu buat situs.",
    "dashboardTitle": "Dasbor CDN",
    "updatedAt": "Diperbarui {{at}}",
    "dashboardEmpty": "Dasbor tidak dimuat",
    "siteStatus": "Status situs",
    "cacheHitEstimate": "Tingkat cache hit (perkiraan)",
    "dashboardNotes": "Catatan dasbor",
    "editNode": "Edit simpul CDN",
    "addNode": "Tambahkan simpul CDN",
    "nodeAddrHint": "Isi minimal satu IPv4/IPv6/healthUrl/baseUrl",
    "sshHostHint": "Kosong = gunakan IPv4; 127.0.0.1 = berlaku lokal",
    "sshHostPlaceholder": "Biarkan kosong untuk IPv4 publik",
    "sshUser": "pengguna SSH",
    "fleetHint": "Hanya armada (tanpa SSH): antrian penyebaran untuk agen;",
    "fleetPlaceholder": "UUID sesi halaman agen",
    "editSite": "Sunting situs CDN",
    "addSite": "Tambahkan situs CDN",
    "originHint": "Asal sebagai URL untuk saat ini; pengikatan proyek nanti",
    "commaSeparated": "Dipisahkan koma",
    "originUrl": "URL asal tepi",
    "edgeNodes": "Node tepi",
    "cache": "Cache",
    "dnsPolicy": "kebijakan DNS",
    "dnsPolicyHint": "multi_a = multi IP; failover = hanya yang paling sehat",
    "zoneOptional": "Kosong = zona pencocokan otomatis berdasarkan domain",
    "sslMode": "Modus SSL",
    "sslModeHint": "unggah = sertifikat pada halaman SSL; le_http01 = tepi ACME",
    "leEmailOptional": "Email LE (opsional)",
    "leEmailHint": "Isi awal untuk penerbitan",
    "shieldHint": "Tepi non-pelindung berasal melalui simpul ini",
    "geoMapHint": "Untuk strategi=geo, mis. {\"hkg\":[\"id1\"],\"nrt\":[\"id2\"]}",
    "geoSubdomain": "Subdomain geografis",
    "addNodeBtn": "+ Tambahkan simpul",
    "addSiteBtn": "+ Tambahkan situs",
    "probeAll": "Selidiki semuanya",
    "healthLoop": "Lingkaran kesehatan",
    "setDraining": "Atur pengurasan",
    "fromProjectUpdatedAlt": "Situs CDN terikat proyek telah diperbarui",
    "refresh": "Menyegarkan",
    "closePreview": "Tutup pratinjau",
    "probe": "Menguji",
    "preview": "Pratinjau",
    "writeConf": "Tulis konf",
    "applyEdges": "Terapkan tepinya",
    "dnsSync": "Sinkronisasi DNS",
    "probeDns": "Selidiki+DNS",
    "distSsl": "Distribusikan SSL",
    "leIssue": "masalah LE",
    "reaggregate": "Segarkan agregat",
    "createEdgeFirst": "Buat simpul tepi terlebih dahulu",
    "enableProxyCache": "Aktifkan proxy_cache",
    "autoMatch": "(pencocokan otomatis)",
    "none": "(tidak ada)",
    "writeRegionDns": "Tulis subdomain wilayah A/AAAA (misalnya hkg)",
    "workflowHint": "Alur: tulis conf → terapkan edge → probe+DNS → SSL",
    "healthLoopAll": "Lingkaran kesehatan semua situs",
    "deleteNodeDesc": "Menghapus simpul CDN \"{{name}}\".",
    "deleteSiteDesc": "Menghapus situs CDN \"{{name}}\".",
    "deleteSiteC1": "Kebijakan situs dan asosiasi edge",
    "deleteSiteC2": "Konfigurasi nginx yang diterapkan mungkin memerlukan pembersihan terpisah atau penerapan ulang",
    "statOnlineOf": "Daring {{n}}/{{total}}",
    "colRegion": "Wilayah",
    "statDraining": "Menguras {{n}}",
    "statOffline": "Luring {{n}}",
    "localTest": "lokal / tes",
    "statHitRate": "Tingkat hit {{v}}"
  },
  "cli": {
    "unknownCommand": "Perintah tidak diketahui: {{command}}\nJalankan `{{cli}} bantuan`",
    "usagePrefix": "Penggunaan:",
    "security": {
      "help": "Penggunaan: status keamanan server ysk\n       daftar sesi keamanan server ysk|cabut|cabut-yang lain [--pengguna U]\n       daftar kunci api keamanan ysk-server|buat|hapus …",
      "sessionsHelp": "Penggunaan: daftar sesi keamanan server ysk [--pengguna U]\n       sesi keamanan ysk-server dicabut --id PREFIX [--user U]\n       sesi keamanan server ysk mencabut yang lain [--pengguna U] [--keep-token T]",
      "apiKeysHelp": "Penggunaan: daftar kunci api keamanan server ysk\n       kunci api keamanan server ysk buat --nama N [--pengguna U] [--lingkup penuh|baca]\n       kunci api keamanan server ysk hapus --id KEY_ID",
      "noUser": "Tidak ada pengguna yang ditemukan. Buat admin terlebih dahulu atau berikan --user <name|id>",
      "tokenOnce": "token ditampilkan sekali — simpan dengan aman",
      "sessionRevokeUsage": "Penggunaan: sesi keamanan server ysk dicabut --id <sessionIdPrefix> [--user U]",
      "apiKeyDeleteUsage": "Penggunaan: kunci api keamanan server ysk hapus --id KEY_ID"
    },
    "help": {
      "blurb": "CLI bidang kendali — pilih --json untuk agen AI.\nDokumen: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json",
      "main": "{{product}} ({{cli}}) v{{version}}\n\nCLI bidang kendali — pilih --json untuk agen AI.\nDokumen: docs/agent/README.md · docs/cli/reference.md · docs/agent/commands.json\n\nPenggunaan:\n  {{cli}} <perintah> [pilihan]\n\nPerintah:\n  pengaturan Init dataDir + admin\n  perbarui Pembaruan mandiri, periksa/terapkan\n  melayani HTTP API + Web UI\n  instalasi unit sistem Instal ysk-server.service [--enable]\n  alat Daftar alat; alat dijalankan --alat <nama> [--dry-run]\n  tanya NL → rencana AI [--eksekusi]\n  daftar proyek|dapatkan|membuat|menyebarkan|menghentikan|kesehatan|cadangan|templat\n  cadangan semua|daftar|status|pulihkan|hapus|jadwal|bidang kendali|pengaturan|istirahat\n  templat Templat aplikasi\n  hosting nginx|dns|db|pembantu firewall\n  zona dns|zona (alias AI → hosting dns-*)\n  sumber log|kueri|jurnal|ikhtisar\n  ikhtisar host|metrik (hanya baca)\n  nginx status|daftar|uji|sinkronisasi\n  daftar ssl|dapatkan (sertifikat)\n  daftar db-cluster|dapatkan|buat|rencana (rencana HA-pertama)\n  ssh-key list|buat|impor|publik|ekspor|instal|hapus (gudang identitas SSH)\n  ssh-2fa list|enroll|confirm|install|pam|retire (SSH login TOTP ≠ panel 2FA)\n  layanan Matriks layanan host (probe systemctl)\n  pertahanan | status perlindungan|larangan|batalkan pelarangan|daftar putih\n  status keamanan|sesi|api-keys (bendera 2FA · pencabutan sesi · kunci API)\n  node cdn|situs|render|terapkan|purge|probe|dasbor|loop kesehatan|dari-proyek\n  runtime agen|daftar armada|perintah|daftar (panel + tepi)\n  agen menjalankan poller armada keluar (eksperimental)\n  status penyimpanan|ekspor|impor|migrasi (json|sqlite|backend dokumen postgres)\n  daftar file|baca|tulis|mkdir|rm|stat|ganti nama|salin|pindahkan|chmod|sampah|berbagi (kotak pasir)\n  cron list|buat|hapus|aktifkan|nonaktifkan|jalankan|instal|status\n  domain email|kotak surat|keterkiriman|bootstrap|dns (paritas panel)\n  kesehatan Snapshot mode lokal atau --url http://host:port/health\n  kesiapan | dokter Kesiapan produksi (jujur)\n  migrasi inventaris|host|posting|status|resume (migrasi host penuh)\n  versi | bantuan\n\nDunia:\n  --json JSON stdout (AI)\n  --data-dir JALUR\n  --config JALUR\n  --bantuan | --versi\n\nKeluar: 0 ok · 1 kesalahan · 2 validasi · 3 diblokir · 4 tidak ditemukan · 5 kesalahan host\n\nKeamanan:\n  Operasi berbahaya secara default adalah uji coba (hanya paket).\n  Lewati --execute (alias --apply) + env YSK_EXECUTE=1 untuk mengubah host.\n\nContoh:\n  {{cli}} kesiapan --json\n  {{cli}} tuan rumah --json\n  {{cli}} status nginx --json\n  {{cli}} daftar ssl --json\n  {{cli}} proyek mendapatkan --id UUID --json\n  {{cli}} larangan pertahanan --ip 1.2.3.4 --json # rencana uji coba\n  {{cli}} daftar proyek --json\n  {{cli}} mencatat kueri --jurnal sumber: --baris 100 --json\n  {{cli}} alat --json"
    },
    "usage": {
      "tools": {
        "run": {
          "--tool": {
            "name": {
              "--arg": {
                "cd327c": "Penggunaan: alat ysk-server dijalankan --tool <nama> [--arg key=val] [--dry-run]"
              }
            }
          }
        }
      },
      "email": {
        "domains": {
          "list": {
            "create": {
              "get": {
                "b94a62": "Penggunaan: daftar domain email server ysk|buat|dapatkan …"
              }
            }
          },
          "create": {
            "--domain": {
              "example": {
                "bd4036": "Penggunaan: domain email server ysk dibuat --domain example.com --ip A.B.C.D"
              }
            }
          }
        },
        "mailboxes": {
          "list": {
            "create": {
              "42b26c": "Penggunaan: daftar kotak surat email ysk-server|buat …"
            }
          },
          "create": {
            "--domain": {
              "example": {
                "7227f3": "Penggunaan: kotak surat email server ysk dibuat --domain example.com --pengguna lokal [--kata sandi P]"
              }
            }
          }
        },
        "dns": {
          "--domain": {
            "example": {
              "com": {
                "26b806": "Penggunaan: ysk-server email dns --domain example.com"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "73dad0": "Penggunaan: email server ysk <sub> [--data-dir PATH] [--json]\n  daftar domain|buat|dapatkan [--q TEKS]\n    buat --domain example.com --ip A.B.C.D\n    dapatkan --domain example.com | --id UUID\n  daftar kotak surat|buat [--domain D | --id domainId]\n    buat --domain D --pengguna lokal [--kata sandi P]\n  keterkiriman --domain D | --id UUID\n  ikhtisar keterkiriman\n  bootstrap --domain D --ip ABCD [--install]\n  dns --domain D | --id UUID # Paket DNS untuk panel\nJuga: hosting email-apply|email-mailbox|email-deliverability (alias)"
              }
            }
          }
        },
        "deliverability": {
          "--domain": {
            "example": {
              "com": {
                "b0dff0": "Penggunaan: kemampuan pengiriman email server ysk --domain example.com"
              }
            }
          }
        },
        "bootstrap": {
          "--domain": {
            "example": {
              "com": {
                "affc8d": "Penggunaan: ysk-server email bootstrap --domain example.com --ip 1.2.3.4 [--install]"
              }
            }
          }
        }
      },
      "cron": {
        "delete": {
          "--id": {
            "job": {
              "id": {
                "f6aafe": "Penggunaan: ysk-server cron delete --id JOB_ID"
              }
            }
          }
        },
        "sub": {
          "--id": {
            "job": {
              "id": {
                "99cfdf": "Penggunaan: ysk-server cron {{sub}} --id JOB_ID"
              }
            }
          },
          "--data-dir": {
            "path": {
              "--json": {
                "0349e6": "Pemakaian: ysk-server cron <sub> [--data-dir PATH] [--json]\n  list [--project-id ID] [--q TEXT]\n  create --schedule \"0 3 * * *\" --command CMD [--project-id ID] [--user USER]\n  update --id JOB_ID [--schedule S] [--command CMD] [--user USER] [--project-id ID] [--enable|--disable]\n  delete --id JOB_ID\n  enable|disable --id JOB_ID\n  run --id JOB_ID              # run-now (needs YSK_EXECUTE=1)\n  install                     # load managed crontab (needs EXECUTE)\n  status                      # probe managed file vs host crontab\n  host [list] [--user USER] [--jobs-only]\n  host edit --user USER --old-schedule S --old-command C --schedule S --command C --execute\n  host disable|enable|delete|adopt --user USER --old-schedule S --old-command C --execute\n  host run --user USER --command C --execute\nHonesty: install / host write blocked without YSK_EXECUTE=1.\n"
              }
            }
          }
        },
        "run": {
          "--id": {
            "job": {
              "id": {
                "a0a97f": "Penggunaan: ysk-server cron dijalankan --id JOB_ID"
              }
            }
          }
        },
        "create": {
          "--schedule": {
            "0": {
              "3": {
                "9a8328": "Penggunaan: ysk-server cron create --schedule \"0 3 * * *\" --command CMD [--project-id ID] [--user USER]"
              }
            }
          }
        }
      },
      "files": {
        "stat": {
          "--path": {
            "rel": {
              "17c8f2": "Penggunaan: stat file server ysk --path REL"
            }
          }
        },
        "read": {
          "--path": {
            "rel": {
              "e35f8d": "Penggunaan: file server ysk dibaca --path REL"
            }
          }
        },
        "mkdir": {
          "--path": {
            "rel": {
              "ae0438": "Penggunaan: file server ysk mkdir --path REL"
            }
          }
        },
        "rm": {
          "--path": {
            "rel": {
              "--permanent": {
                "fe2051": "Penggunaan: file ysk-server rm --path REL [--permanent]"
              }
            }
          }
        },
        "rename": {
          "--from": {
            "rel": {
              "--to": {
                "35a260": "Penggunaan: ganti nama file ysk-server --dari REL --menjadi REL"
              }
            }
          }
        },
        "copy": {
          "--from": {
            "rel": {
              "--to": {
                "5337f4": "Penggunaan: salinan file ysk-server --dari REL --ke REL"
              }
            }
          }
        },
        "move": {
          "--from": {
            "rel": {
              "--to": {
                "75cf5d": "Penggunaan: file server ysk dipindahkan --dari REL --ke REL"
              }
            }
          }
        },
        "chmod": {
          "--path": {
            "rel": {
              "--mode": {
                "39f983": "Penggunaan: file server ysk chmod --path REL --mode 644"
              }
            }
          }
        },
        "trash": {
          "restore": {
            "--id": {
              "trash": {
                "c89ce9": "Penggunaan: pemulihan sampah file server ysk --id TRASH_ID"
              }
            }
          },
          "list": {
            "restore": {
              "purge": {
                "ef063d": "Penggunaan: daftar sampah file server ysk|pemulihan|pembersihan"
              }
            }
          }
        },
        "shares": {
          "list": {
            "ac342c": "Penggunaan: daftar berbagi file ysk-server"
          }
        },
        "webdav": {
          "status": {
            "token": {
              "disable": {
                "f8e94b": "Penggunaan: file server ysk status webdav|token|nonaktifkan"
              }
            }
          }
        },
        "sub": {
          "--root": {
            "public": {
              "project": {
                "42ebd4": "Penggunaan: file server ysk <sub> [--root public|project:ID] [--data-dir PATH] [--json]\n  daftar [--path DIR] [--q TEKS] [--urutkan nama|ukuran|waktu] [--order asc|desc]\n  stat --jalur REL\n  baca --jalur REL\n  tulis --path REL --content TEKS | --file LOKAL\n  mkdir --jalur REL\n  rm --jalur REL [--permanen]\n  ganti nama --dari REL --menjadi REL\n  salin --dari REL --ke REL\n  pindahkan --dari REL --ke REL\n  chmod --jalur REL --mode 644\n  daftar sampah|pulihkan|pembersihan [--id TRASH_ID]\n  daftar saham\n  daftar favorit\n  unggah --dir REL --file LOKAL [--file LOCAL2…]\n  status webdav|token|nonaktifkan\nSandbox: hanya root file publik atau proyek rumah (jalur terbatas)."
              }
            }
          }
        },
        "write": {
          "--path": {
            "rel": {
              "--content": {
                "0addb1": "Penggunaan: file ysk-server tulis --path REL --content TEXT | --file LOKAL"
              }
            }
          }
        },
        "upload": {
          "--dir": {
            "rel": {
              "--file": {
                "f8c3bf": "Penggunaan: unggah file ysk-server --dir REL --file LOCAL [--file LOCAL2…]"
              }
            }
          }
        }
      },
      "store": {
        "import": {
          "--in": {
            "file": {
              "json": {
                "5b6fdd": "Penggunaan: impor penyimpanan server-ysk --di FILE.json"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "d580e4": "Penggunaan: penyimpanan server ysk <sub> [--data-dir PATH] [--json]\n  status Tampilkan jenis + jumlah backend\n  ekspor --out FILE.json Dump cuplikan dokumen\n  import --in FILE.json Timpa snapshot dari file\n  migrasi --ke sqlite|json [--out PATH]\n    Salin penyimpanan saat ini ke file backend lain\nEnv: YSK_STORE=json|sqlite|postgres YSK_DATABASE_URL=postgres://…\nKejujuran: backend gumpalan dokumen (belum skema relasional penuh)."
              }
            }
          }
        },
        "migrate": {
          "--to": {
            "json": {
              "sqlite": {
                "1c52a3": "Penggunaan: penyimpanan server-ysk bermigrasi --ke json|sqlite [--out PATH]\n  (postgres: ekspor JSON lalu impor di bawah YSK_DATABASE_URL)"
              }
            }
          }
        }
      },
      "cdn": {
        "nodes": {
          "delete": {
            "--id": {
              "node": {
                "0c6a1e": "Penggunaan: node cdn ysk-server menghapus --id NODE_ID"
              }
            }
          },
          "drain": {
            "--id": {
              "node": {
                "a8aa81": "Penggunaan: node cdn ysk-server menguras --id NODE_ID [--off]"
              }
            }
          },
          "list": {
            "upsert": {
              "delete": {
                "52549e": "Penggunaan: daftar node cdn ysk-server|upsert|hapus|probe|kuras …"
              }
            }
          },
          "upsert": {
            "--name": {
              "name": {
                "8f6f39": "Penggunaan: ysk-server cdn node upsert --name NAME [--id ID] [--base-url U] [--fleet-agent-id S] [--ssh-host H] [--region R]"
              }
            }
          }
        },
        "sites": {
          "get": {
            "--id": {
              "site": {
                "3c3c35": "Penggunaan: situs cdn server ysk mendapatkan --id SITE_ID"
              }
            }
          },
          "delete": {
            "--id": {
              "site": {
                "51ef8f": "Penggunaan: situs cdn server ysk menghapus --id SITE_ID"
              }
            }
          },
          "list": {
            "get": {
              "upsert": {
                "609da6": "Penggunaan: daftar situs cdn ysk-server|dapatkan|upsert|hapus …"
              }
            }
          },
          "upsert": {
            "--name": {
              "n": {
                "6ebb75": "Penggunaan: situs cdn server ysk upsert --name N --domains a.com,b.com [--edge-id ID]… [--origin-url U] [--origin-project ID]"
              }
            }
          }
        },
        "render": {
          "--site-id": {
            "id": {
              "--dry-run": {
                "2149eb": "Penggunaan: ysk-server cdn render --site-id ID [--dry-run]"
              }
            }
          }
        },
        "apply": {
          "--site-id": {
            "id": {
              "--edge-id": {
                "a527b3": "Penggunaan: ysk-server cdn apply --site-id ID [--edge-id EDGE]"
              }
            }
          }
        },
        "purge": {
          "--site-id": {
            "id": {
              "--edge-id": {
                "bc08ec": "Penggunaan: ysk-server cdn purge --site-id ID [--edge-id EDGE]"
              }
            }
          }
        },
        "dns-sync": {
          "--site-id": {
            "id": {
              "--apply-zone": {
                "343068": "Penggunaan: ysk-server cdn dns-sync --site-id ID [--apply-zone]"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "092842": "Penggunaan: ysk-server cdn <sub> [--data-dir PATH] [--json]\n  daftar node|upsert|hapus|probe|kuras\n  daftar situs|masukkan|hapus|dapatkan\n  render --ID-situs ID [--dry-run]\n  apply --site-id ID [--edge-id ID] # fan-out (antrian armada oke tanpa EXECUTE)\n  pembersihan --ID-situs ID [--ID-edge-ID]\n  sinkronisasi dns --ID situs-ID [--apply-zone]\n  menyelidiki | dasbor | lingkaran kesehatan [--apply-zone]\n  dari-proyek --ID-proyek ID [--ID-tepi ID…]\nKejujuran: apply_status ditulis/antri ≠ edge nginx diterapkan sampai agen ack / EXECUTE memuat ulang."
              }
            }
          }
        },
        "from-project": {
          "--project-id": {
            "id": {
              "--edge-id": {
                "a96f42": "Penggunaan: ysk-server cdn dari-proyek --ID proyek-id [--ID tepi-id]…"
              }
            }
          }
        }
      },
      "agents": {
        "fleet": {
          "remove": {
            "--session": {
              "session": {
                "1827fe": "Penggunaan: armada agen server ysk menghapus --session SESSION_ID"
              }
            }
          },
          "register": {
            "--id": {
              "agent": {
                "209b2d": "Penggunaan: daftar armada agen server ysk --id AGENT_ID [--group g] [--edge]"
              }
            }
          },
          "commands": {
            "--session": {
              "session": {
                "f8067c": "Penggunaan: perintah armada agen server ysk --session SESSION_ID"
              }
            }
          }
        },
        "register": {
          "--id": {
            "agent": {
              "id": {
                "3c4477": "Penggunaan: agen server ysk mendaftar --id AGENT_ID [--group g]"
              }
            }
          }
        },
        "commands": {
          "--session": {
            "session": {
              "id": {
                "e620d2": "Penggunaan: perintah agen server ysk --session SESSION_ID"
              }
            }
          }
        },
        "runtimes": {
          "probe": {
            "fleet": {
              "list": {
                "261fa4": "Penggunaan: agen server ysk [runtime|probe|daftar armada|daftar armada|perintah armada|daftar|perintah]"
              }
            }
          }
        }
      },
      "agent": {
        "run": {
          "--control-plane": {
            "url": {
              "--id": {
                "cfefbe": "Penggunaan: agen server ysk dijalankan --control-plane URL --id AGENT_ID [--group g]"
              }
            }
          }
        }
      },
      "ask": {
        "check": {
          "system": {
            "info": {
              "b0c781": "Penggunaan: ysk-server bertanya \"periksa info sistem\""
            }
          }
        }
      },
      "backup": {
        "delete": {
          "--project-id": {
            "id": {
              "--name": {
                "d66c29": "Penggunaan: cadangan ysk-server hapus --project-id ID --name ARCHIVE"
              }
            }
          }
        },
        "restic": {
          "list": {
            "run": {
              "restore": {
                "10402b": "Penggunaan: daftar sisa cadangan server ysk|jalankan|pulihkan …"
              }
            }
          },
          "restore": {
            "--project-id": {
              "id": {
                "a8f133": "Penggunaan: pemulihan restic cadangan ysk-server --project-id ID --snapshot SNAP [--dry-run] [--overwrite-home --confirm PHRASE]"
              }
            }
          }
        },
        "sub": {
          "--data-dir": {
            "path": {
              "--json": {
                "777243": "Penggunaan: cadangan server ysk <sub> [--data-dir PATH] [--json]\n  semua Cadangkan semua rumah proyek (+ sisi jarak jauh/diam saat dikonfigurasi)\n  daftar [--ID proyek-id] [--q TEKS]\n  status Terakhir dijalankan + pemeriksaan jadwal\n  pulihkan --project-id ID --name ARCHIVE [--mode penuh|web|dry-run]\n  hapus --project-id ID --name ARCHIVE\n  jadwal [--cron \"0 3 * * *\"] [--install]\n  Cuplikan bidang kontrol ysk.json + config.json\n  control-plane-restore --name ARCHIVE [--mode dry-run|penuh] [--confirm RESTORE-CONTROL-PLANE]\n  pengaturan [dapatkan|set] Jarak jauh / pengecualian / istirahat\n    set --remote-kind local|sftp|s3 --remote-path P [--remote-host H] …\n    mengatur --mengecualikan a,b,c | --pengecualian-file FILE\n    setel --restic-enable --restic-password P [--restic-repo PATH]\n    set --from-json FILE # patch lengkap {jarak jauh?,pengecualian?,istirahat?}\n  restic list|run|restore Pembantu restic tambahan"
              }
            }
          }
        },
        "control-plane-restore": {
          "--name": {
            "archive": {
              "--mode": {
                "316a76": "Penggunaan: ysk-server backup control-plane-restore --name ARCHIVE [--mode dry-run|full] [--confirm RESTORE-CONTROL-PLANE]"
              }
            }
          }
        },
        "restore": {
          "--project-id": {
            "id": {
              "--name": {
                "bc7041": "Penggunaan: pemulihan cadangan ysk-server --project-id ID --name ARCHIVE [--mode penuh|web|dry-run]"
              }
            }
          }
        }
      },
      "packages": {
        "list": {
          "--q": {
            "text": {
              "b8e16b": "Penggunaan: daftar paket ysk-server [--q text]"
            }
          }
        }
      },
      "projects": {
        "stop": {
          "--id": {
            "projectid": {
              "b15409": "Penggunaan: proyek server ysk berhenti --id <projectId>"
            }
          }
        },
        "backup": {
          "--id": {
            "projectid": {
              "e62846": "Penggunaan: cadangan proyek ysk-server --id <projectId>"
            }
          }
        },
        "health": {
          "--id": {
            "projectid": {
              "e816ec": "Penggunaan: kesehatan proyek ysk-server --id <projectId>"
            }
          }
        },
        "isolation": {
          "provision": {
            "--id": {
              "projectid": {
                "5aff44": "Penggunaan: penyediaan isolasi proyek ysk-server --id <projectId>\n       ysk-server proyek isolasi penyediaan-semua [--batas 20]"
              }
            }
          },
          "backfill-owners": {
            "--owner-user-id": {
              "id": {
                "8691da": "Penggunaan: ysk-server memproyeksikan isolasi backfill-owners --owner-user-id <id>"
              }
            }
          },
          "list": {
            "provision": {
              "provision-all": {
                "8e9da3": "Penggunaan: daftar isolasi proyek ysk-server|provision|provision-all|backfill-owners"
              }
            }
          }
        },
        "get": {
          "--id": {
            "projectid": {
              "name": {
                "b0d532": "Penggunaan: proyek server ysk dapatkan --id <projectId|name> [--json]"
              }
            }
          }
        },
        "create": {
          "--name": {
            "name": {
              "--domain": {
                "66e857": "Penggunaan: proyek server ysk dibuat --name <name> [--domain d] [--runtime node|php|static|python|go|rust] [--template id]"
              }
            }
          }
        },
        "deploy": {
          "--id": {
            "projectid": {
              "--entry": {
                "339111": "Penggunaan: penerapan proyek server ysk --id <projectId> [--entry f] [--port N] [--fpm|--builtin] [--reload]"
              }
            }
          }
        },
        "git-deploy": {
          "--id": {
            "id": {
              "--git-url": {
                "a513f5": "Penggunaan: proyek server ysk git-deploy --id ID [--git-url URL] [--branch main] [--no-redeploy] [--kedalaman 1] [--entry f]"
              }
            }
          }
        },
        "template": {
          "--id": {
            "projectid": {
              "--template": {
                "591ce4": "Penggunaan: templat proyek ysk-server --id <projectId> --template <id> [--force]"
              }
            }
          }
        },
        "list": {
          "get": {
            "create": {
              "deploy": {
                "253b48": "Penggunaan: daftar proyek ysk-server|get|create|deploy|git-deploy|stop|backup|template|health [opsi]\n  menyebarkan --id UUID [--entri f] [--port N] [--fpm|--builtin] [--reload]\n  git-deploy --id UUID [--git-url URL] [--cabang B] [--tidak ada penerapan ulang]"
              }
            }
          }
        }
      },
      "cli": {
        "name": {
          "db-cluster": {
            "get": {
              "--id": {
                "00f803": "Penggunaan: {{CLI_NAME}} db-cluster get --id UUID [--json]"
              }
            },
            "plan": {
              "--id": {
                "483f52": "Penggunaan: {{CLI_NAME}} rencana db-cluster --id UUID [--json]"
              }
            },
            "artifacts": {
              "--id": {
                "6b33c4": "Penggunaan: {{CLI_NAME}} artefak db-cluster --id UUID [--json]"
              }
            },
            "bundle": {
              "--id": {
                "94ed27": "Penggunaan: {{CLI_NAME}} bundel db-cluster --id UUID [--json]"
              }
            },
            "delete": {
              "--id": {
                "3de0e4": "Penggunaan: {{CLI_NAME}} db-cluster delete --id UUID [--json]"
              }
            },
            "create": {
              "--name": {
                "e3b733": "Penggunaan: {{CLI_NAME}} db-cluster create --name N --engine mariadb --kind mariadb-galera --member HOST=role[:access] ..."
              }
            },
            "apply": {
              "--id": {
                "4cddb8": "Penggunaan: {{CLI_NAME}} db-cluster apply --id UUID [--execute] [--bootstrap] [--json]"
              }
            },
            "probe": {
              "--id": {
                "22870c": "Penggunaan: {{CLI_NAME}} pemeriksaan db-cluster --id UUID [--peers] [--json]"
              }
            },
            "install-peers": {
              "--id": {
                "600b02": "Penggunaan: {{CLI_NAME}} db-cluster install-peers --id UUID [--execute] [--no-restart] [--identity ID] [--json]"
              }
            },
            "push": {
              "--id": {
                "697080": "Penggunaan: {{CLI_NAME}} db-cluster push --id UUID [--ID anggota] [--ID identitas] [--eksekusi] [--json]"
              }
            },
            "fleet": {
              "--id": {
                "239462": "Penggunaan: {{CLI_NAME}} armada db-cluster --id UUID [--op apply|probe|plan] [--execute] [--edge-execute] [--json]"
              }
            },
            "list": {
              "get": {
                "3b9cfa": "Penggunaan: {{CLI_NAME}} daftar db-cluster|dapatkan|membuat|rencana|menerapkan|menyelidiki|menginstal-rekan|artefak|bundel|push|armada|ikhtisar|hapus [--peers] [--eksekusi] [--json]"
              }
            }
          },
          "ssh-key": {
            "get": {
              "--id": {
                "292716": "Penggunaan: {{CLI_NAME}} ssh-key get --id UUID [--json]"
              }
            },
            "public": {
              "--id": {
                "525d7d": "Penggunaan: {{CLI_NAME}} ssh-key public --id UUID"
              }
            },
            "export": {
              "--id": {
                "0a6d81": "Penggunaan: {{CLI_NAME}} ssh-key ekspor --id UUID [--out PATH] [--json]"
              }
            },
            "delete": {
              "--id": {
                "a6e2f2": "Penggunaan: {{CLI_NAME}} ssh-key delete --id UUID [--json]"
              }
            },
            "create": {
              "--name": {
                "8b1d79": "Penggunaan: {{CLI_NAME}} ssh-key create --name N [--algo ed25519|rsa-4096] [--tujuan pengguna|panel|tidak terikat] [--ID proyek] [--pengguna U] [--home PATH] [--reveal] [--json]"
              }
            },
            "import": {
              "--name": {
                "6eb800": "Penggunaan: {{CLI_NAME}} ssh-key import --name N --file PATH [--panel tujuan|pengguna] [--json]"
              }
            },
            "install": {
              "--id": {
                "b99c56": "Penggunaan: {{CLI_NAME}} ssh-key install --id UUID [--execute] [--json]"
              }
            },
            "test": {
              "--id": {
                "e1aed3": "Penggunaan: {{CLI_NAME}} tes ssh-key --id UUID --target pengguna@host[:port] [--execute] [--json]"
              }
            },
            "rotate": {
              "--id": {
                "9c3224": "Penggunaan: {{CLI_NAME}} ssh-key memutar --id UUID [--reveal] [--json]"
              }
            },
            "authorize-self": {
              "--id": {
                "b7ea2e": "Penggunaan: {{CLI_NAME}} ssh-key authorize-self --id UUID [--json]"
              }
            },
            "uninstall": {
              "--id": {
                "afcba0": "Penggunaan: {{CLI_NAME}} ssh-key uninstall --id UUID [--execute] [--json]"
              }
            },
            "list": {
              "get": {
                "2c92c6": "Penggunaan: {{CLI_NAME}} ssh-key list|get|create|import|public|export|install|test|rotate|authorize-self|uninstall|delete [--json]"
              }
            }
          },
          "ssh-2fa": {
            "reveal": {
              "--id": {
                "a6c27f": "Penggunaan: {{CLI_NAME}} ssh-2fa mengungkapkan --id UUID [--json]"
              }
            },
            "retire": {
              "--id": {
                "6e1fa3": "Penggunaan: {{CLI_NAME}} ssh-2fa pensiun --id UUID [--json]"
              }
            },
            "enroll": {
              "--user": {
                "081432": "Penggunaan: {{CLI_NAME}} ssh-2fa daftarkan --pengguna LINUX|--ID proyek [--home PATH] [--from-panel] [--json]"
              }
            },
            "confirm": {
              "--id": {
                "9ee8a2": "Penggunaan: {{CLI_NAME}} ssh-2fa konfirmasi --id UUID --kode 123456 [--json]"
              }
            },
            "install": {
              "--id": {
                "dace06": "Penggunaan: {{CLI_NAME}} ssh-2fa install --id UUID [--execute] [--json]"
              }
            },
            "uninstall": {
              "--id": {
                "0bb464": "Penggunaan: {{CLI_NAME}} ssh-2fa uninstall --id UUID [--execute] [--json]"
              }
            },
            "list": {
              "enroll": {
                "802ed0": "Penggunaan: {{CLI_NAME}} daftar ssh-2fa|daftarkan|konfirmasi|instal|uninstall|pam|ungkapkan|pensiunkan [--json]"
              }
            }
          },
          "ssl": {
            "list": {
              "get": {
                "79c232": "Penggunaan: {{CLI_NAME}} daftar ssl|dapatkan --domain X [--json]"
              }
            },
            "get": {
              "--domain": {
                "91c444": "Penggunaan: {{CLI_NAME}} ssl get --domain example.com [--json]"
              }
            }
          },
          "dns": {
            "zone": {
              "--zone": {
                "ad30fa": "Penggunaan: {{CLI_NAME}} zona dns --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--validasi] [--reload]"
              }
            },
            "zones": {
              "zone": {
                "5b8bda": "Penggunaan: {{CLI_NAME}} zona dns|zona --zona X --ip A.B.C.D [--ipv6 …] [--json]"
              }
            }
          },
          "nginx": {
            "status": {
              "list": {
                "d67a16": "Penggunaan: {{CLI_NAME}} status nginx|daftar|uji|sinkronisasi [--eksekusi] [--json]"
              }
            }
          },
          "host": {
            "overview": {
              "metrics": {
                "93c828": "Penggunaan: {{CLI_NAME}} ikhtisar host|metrik|jaringan [--path /] [--json]"
              }
            }
          },
          "logs": {
            "sources": {
              "overview": {
                "79058c": "Penggunaan: {{CLI_NAME}} log sumber|ikhtisar|unit|jurnal|kueri [--source id] [--json]"
              }
            }
          },
          "services": {
            "sub": {
              "--unit": {
                "4fe3fa": "Penggunaan: {{CLI_NAME}} layanan {{sub}} --unit <systemd-unit> [--execute] [--json]"
              }
            },
            "matrix": {
              "start": {
                "4f3a35": "Penggunaan: {{CLI_NAME}} matriks layanan|mulai|berhenti|mulai ulang|muat ulang --unit NAME [--execute] [--json]"
              }
            }
          },
          "defense": {
            "ban": {
              "--ip": {
                "cc22de": "Penggunaan: {{CLI_NAME}} larangan pertahanan --ip <ip> [--metode fail2ban|ufw|keduanya] [--alasan t] [--eksekusi]"
              }
            },
            "unban": {
              "--ip": {
                "46aa23": "Penggunaan: {{CLI_NAME}} pertahanan unban --ip <ip> [--method fail2ban|ufw|keduanya] [--execute]"
              }
            },
            "whitelist": {
              "--action": {
                "c1cbdf": "Penggunaan: {{CLI_NAME}} daftar putih pertahanan --daftar tindakan|tambahkan|hapus [--ip IP]"
              }
            },
            "status": {
              "bans": {
                "a8d96b": "Penggunaan: {{CLI_NAME}} status pertahanan|larangan|tersangka|larangan|batalkan pelarangan|daftar putih|stack-apply|fail2ban|firewall|timeline|preset [--json]\n melarang [--q teks] [--sumber fail2ban|panel|ufw|auto]\n tersangka [--q teks]\n stack-apply [--execute] # UFW + fail2ban + preset saat ini\ngagal2ban | firewall # probe mendalam (jujur)\n garis waktu [--batas N] [--q teks]\n preset # daftar + Preset aktif"
              }
            }
          }
        }
      },
      "system": {
        "unit-install": {
          "--enable": {
            "--data-dir": {
              "path": {
                "33daa1": "Penggunaan: instalasi unit sistem ysk-server [--enable] [--data-dir PATH]"
              }
            }
          }
        }
      },
      "users": {
        "create": {
          "--username": {
            "u": {
              "--password": {
                "7145c7": "Penggunaan: pengguna server ysk membuat --username <u> --password <p> [--role operator|viewer|admin] [--package-id id]"
              }
            }
          }
        },
        "list": {
          "--q": {
            "text": {
              "--role": {
                "544685": "Penggunaan: daftar pengguna server ysk [--q teks] [--peran admin|operator|penampil]\n       pengguna server ysk membuat --nama pengguna u --kata sandi p [--operator peran]"
              }
            }
          }
        }
      },
      "rbac": {
        "list": {
          "policies": {
            "330ade": "Penggunaan: daftar rbac server ysk|kebijakan\n       ysk-server rbac tampilkan --operator peran\n       audit rbac ysk-server # rute→cap matriks sampel"
          }
        }
      },
      "hosting": {
        "postgres-provision": {
          "--db": {
            "name": {
              "--user": {
                "2c8889": "Penggunaan: ysk-server hosting postgres-provision --db NAME --user U --password P(min8) [--execute]\n  Uji coba default (tidak ada perubahan host). Lewati --execute + YSK_EXECUTE=1 untuk mendaftar."
              }
            }
          }
        },
        "mysql-provision": {
          "--db": {
            "name": {
              "--user": {
                "fc25aa": "Penggunaan: ysk-server hosting mysql-provision --db NAME --user U --password P(min8) [--execute]\n  Uji coba default (tidak ada perubahan host). Lewati --execute + YSK_EXECUTE=1 untuk mendaftar."
              }
            }
          }
        },
        "dns-zone": {
          "--zone": {
            "example": {
              "com": {
                "bdaa0d": "Penggunaan: ysk-server hosting dns-zone --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--validasi] [--reload]"
              }
            }
          }
        },
        "powerdns-load": {
          "--zone": {
            "example": {
              "com": {
                "dba49c": "Penggunaan: ysk-server hosting powerdns-load --zone example.com --ip A.B.C.D [--ipv6 X:X::X] [--load|--execute]"
              }
            }
          }
        },
        "email-apply": {
          "--domain": {
            "example": {
              "com": {
                "37d350": "Penggunaan: ysk-server hosting email-apply --domain example.com [--install|--execute]"
              }
            }
          }
        },
        "email-mailbox": {
          "--domain": {
            "x": {
              "--local": {
                "3d9be3": "Penggunaan: ysk-server hosting email-kotak surat --domain X --pengguna lokal [--kata sandi P] [--ip A.B.C.D]"
              }
            }
          }
        },
        "ftps-apply": {
          "--domain": {
            "files": {
              "example": {
                "284a7c": "Penggunaan: ysk-server hosting ftps-apply --domain files.example.com [--install|--execute]"
              }
            }
          }
        },
        "webmail-apply": {
          "--domain": {
            "webmail": {
              "example": {
                "2ad5b5": "Penggunaan: ysk-server hosting webmail-apply --domain webmail.example.com [--download]"
              }
            }
          }
        },
        "public-files": {
          "--domain": {
            "files": {
              "example": {
                "0e9013": "Penggunaan: ysk-server hosting file publik --domain files.example.com [--reload]"
              }
            }
          }
        },
        "email-deliverability": {
          "--domain": {
            "example": {
              "com": {
                "8774a4": "Penggunaan: ysk-server hosting pengiriman email --domain example.com\n       ysk-server hosting kemampuan pengiriman email --id <domainId>"
              }
            }
          }
        },
        "email-bootstrap": {
          "--domain": {
            "example": {
              "com": {
                "796da5": "Penggunaan: ysk-server hosting email-bootstrap --domain example.com --ip 1.2.3.4 [--admin postmaster] [--password P] [--install]"
              }
            }
          }
        }
      },
      "migrate": {
        "post": {
          "--job": {
            "id": {
              "--data-dir": {
                "6a73cd": "Penggunaan: ysk-server migrasi posting --pekerjaan <id> --data-dir PATH --execute"
              }
            }
          }
        },
        "host": {
          "--target": {
            "root": {
              "new": {
                "3e94a2": "Penggunaan: ysk-server migrasi host --target root@NEW_IP [--identity-file PATH|--identity-id ID] [--password] --execute --data-dir PATH"
              }
            }
          }
        }
      },
      "x": {
        "972912": "Penggunaan:\n  ysk-server memigrasi inventaris [--data-dir PATH] --json\n  ysk-server migrasi host --target root@IP [--identity-file PATH|--identity-id ID|--password PW] --execute [--maintenance] [--force-wipe-target]\n  ysk-server migrasi posting --job ID --data-dir PATH --execute # sesuai target\n  status migrasi server ysk [--ID pekerjaan]\n  ysk-server migrasi melanjutkan --ID pekerjaan --eksekusi\n  ysk-server migrate orphan-homes [--data-dir PATH] --json\n  ysk-server migrate orphan-homes --path /home/ysk-server-UUID --confirm PATH --execute\n"
      },
      "hostingHelp": "Penggunaan: hosting server ysk <sub>\n  Uji coba default operasi berbahaya; tambahkan --execute (+ YSK_EXECUTE=1) untuk diterapkan\n  nginx | sinkronisasi nginx [--eksekusi]\n  ketentuan redis | ketentuan postgres | ketentuan mysql [--eksekusi]\n  dns-zone --zone X --ip A.B.C.D [--ipv6 X:X::X] [--validasi] [--reload]\n  zona-dns | status powerdns | powerdns-install [--install|--eksekusi]\n  powerdns-load --zone X --ip ABCD [--load|--execute]\n  lamaran email --domain X [--install|--eksekusi]\n  email-kotak surat --domain X --pengguna lokal [--kata sandi P] [--ip A.B.C.D] [--sistem]\n  ftps-apply --domain X [--install|--eksekusi]\n  waktu proses | runtime-install --kind node|php|python|go|rust --version V [--install|--execute]\n  tempat perlindungan merpati-passdb --domain X | --semua\n  webmail-apply --domain webmail.example.com [--unduh]\n  file publik --file domain.example.com [--reload]\n  email-bootstrap --domain example.com --ip A.B.C.D [--install|--execute]\n  email-deliverability --domain example.com # PTR/DNSBL/paket pemanasan (jujur)\n  penerapan firewall [--smtp] [--eksekusi]",
      "logsQuery": "Penggunaan: {{CLI_NAME}} kueri log --source <id> [--lines N] [--grep G] [--since 1h] [--priority err]\n  contoh sumber: jurnal: jurnal:nginx.service file:syslog project:<uuid>\n  {{CLI_NAME}} mencatat sumber --json\n  {{CLI_NAME}} log jurnal [--unit nginx.service] --json"
    },
    "msg": {
      "domain": {
        "missing": {
          "pass": {
            "5be09b": "Domain hilang — berikan --ip untuk membuat domain terlebih dahulu"
          }
        }
      },
      "--root": {
        "must": {
          "be": {
            "a84834": "--root harus bersifat publik atau proyek:<id>"
          }
        }
      },
      "need": {
        "--content": {
          "or": {
            "4d7001": "Perlu --content atau --file"
          }
        },
        "at": {
          "least": {
            "7d311a": "Membutuhkan setidaknya satu --member HOST[=role][:access]"
          }
        }
      },
      "action": {
        "must": {
          "be": {
            "ba14c1": "tindakan harus daftar|tambah|hapus"
          }
        }
      },
      "use": {
        "ysk-server": {
          "backup": {
            "ca67f4": "Gunakan: ysk-server backup control-plane-restore --name ARCHIVE (bukan pemulihan --project-id control-plane)"
          }
        }
      },
      "new": {
        "domain": {
          "requires": {
            "986b78": "Domain baru memerlukan --ip A.B.C.D (tidak ada default placeholder)"
          }
        }
      },
      "import-sync": {
        "prefers": {
          "fleet": {
            "4d7590": "import-sync lebih memilih muatan clusterSync armada; atau --file snapshot.json"
          }
        }
      },
      "security": {
        "control": {
          "plane": {
            "f59a63": "KEAMANAN: bidang kontrol terikat secara publik (0.0.0.0/::). Lebih suka 127.0.0.1 + proksi terbalik / UFW."
          }
        }
      }
    },
    "err": {
      "unknown": {
        "email": {
          "sub": {
            "sub": {
              "e37257": "Sub email tidak dikenal: {{sub}}\nJalankan: bantuan email ysk-server"
            }
          }
        },
        "cron": {
          "sub": {
            "sub": {
              "e1a9ed": "Sub cron tidak dikenal: {{sub}}\nJalankan: bantuan cron ysk-server"
            }
          }
        },
        "files": {
          "sub": {
            "sub": {
              "07ad7e": "Sub file tidak dikenal: {{sub}}\nJalankan: bantuan file ysk-server"
            }
          }
        },
        "store": {
          "sub": {
            "sub": {
              "b7a083": "Sub toko tidak dikenal: {{sub}}\nJalankan: bantuan toko ysk-server"
            }
          }
        },
        "cdn": {
          "subcommand": {
            "sub": {
              "76664f": "Subperintah cdn tidak diketahui: {{sub}}\nJalankan: bantuan cdn ysk-server"
            }
          }
        },
        "backup": {
          "subcommand": {
            "sub": {
              "4092ad": "Subperintah cadangan tidak diketahui: {{sub}}\nJalankan: bantuan cadangan ysk-server"
            }
          }
        }
      }
    },
    "setup": {
      "dryRunOk": "{{product}} pengaturan uji coba OK",
      "dryRunNext": "Jalankan kembali tanpa --dry-run untuk menulis konfigurasi dan menginisialisasi database",
      "weakPassword": "Kata sandi admin lemah atau default. Berikan --admin-password yang kuat (min 8, bukan \"admin\"/default umum), atau setel YSK_ALLOW_INSECURE_DEFAULTS=1 hanya untuk pengembang lokal.",
      "weakPasswordShort": "Kata sandi admin yang lemah atau default ditolak",
      "nextStart": "Mulai (API + UI Web): {{cli}} serve --config {{configPath}}",
      "nextOpen": "Buka http://{{host}}:{{port}}/ dan login sebagai {{user}}",
      "nextUnit": "Templat unit sistem: {{unitPath}}",
      "nextInstall": "Instal unit (root + YSK_EXECUTE): {{cli}} instalasi unit sistem --enable --data-dir {{dataDir}}",
      "nextExecute": "Mutasi host produksi memerlukan YSK_EXECUTE=1 dan root",
      "nextGolive": "Tayangkan: docs/deploy/go-live.md + kesiapan ysk-server --json",
      "secPassword": "KEAMANAN: segera ubah kata sandi admin (bootstrap menggunakan kata sandi yang lemah/default)",
      "sec2fa": "KEAMANAN: aktifkan admin 2FA di bawah Keamanan → Akun",
      "secListen": "KEAMANAN: mendengarkan di semua antarmuka — letakkan di belakang firewall / proxy terbalik; lebih suka 127.0.0.1 + terowongan SSH untuk admin",
      "ok": "{{product}} penyiapan selesai (database diinisialisasi)",
      "okInsecure": "{{product}} setup selesai (database diinisialisasi) [INSECURE BOOTSTRAP — ubah kata sandi]"
    }
  },
  "common": {
    "all": "Semua",
    "cancel": "Membatalkan",
    "confirm": "Mengonfirmasi",
    "refresh": "Menyegarkan",
    "loading": "Memuat…",
    "save": "Menyimpan",
    "apply": "Menerapkan",
    "close": "Menutup",
    "copy": "Menyalin",
    "copied": "Disalin",
    "expandAll": "Perluas semuanya",
    "collapseAll": "Ciutkan semuanya",
    "empty": "Kosong",
    "back": "Kembali",
    "showTechnical": "Tampilkan detail teknis",
    "hideTechnical": "Sembunyikan detail teknis",
    "needExecute": "Membutuhkan YSK_EXECUTE",
    "needRoot": "Perlu akar",
    "needExecuteRoot": "Membutuhkan YSK_EXECUTE dan root",
    "writtenOnly": "Ditulis ke data panel; tidak diterapkan pada host",
    "applyToLive": "Terapkan untuk menerapkannya",
    "saveDraft": "Simpan draf",
    "languageName": "Bahasa inggris",
    "languageNative": "Bahasa inggris",
    "language": "Bahasa",
    "switchLanguage": "Ganti bahasa",
    "showPassword": "Menunjukkan",
    "hidePassword": "Bersembunyi",
    "searchGlobal": "Mencari…",
    "menu": "Menu",
    "processing": "Bekerja…",
    "unavailable": "Tidak tersedia saat ini",
    "retry": "Mencoba kembali",
    "success": "Kesuksesan",
    "ok": "OK",
    "failed": "Gagal",
    "blocked": "Tidak bisa lari",
    "status": "Status",
    "port": "Pelabuhan",
    "url": "URL",
    "actions": "Tindakan",
    "noData": "Tidak ada data",
    "input": "Masukan",
    "pleaseEnter": "Masukkan {{value}}",
    "pleaseFill": "Silakan isi kolom ini",
    "required": "Wajib",
    "about": "Tentang",
    "more": "Lagi",
    "operation": "Tindakan",
    "delete": "Menghapus",
    "edit": "Sunting",
    "create": "Membuat",
    "install": "Memasang",
    "installing": "Memasang…",
    "reprobe": "Periksa kembali",
    "search": "Mencari",
    "yes": "Ya",
    "no": "TIDAK",
    "on": "Pada",
    "off": "Mati",
    "open": "Membuka",
    "enabled": "Diaktifkan",
    "disabled": "Dengan disabilitas",
    "installed": "Dipasang",
    "notInstalled": "Tidak dipasang",
    "running": "Berlari",
    "stopped": "Berhenti",
    "ready": "Siap",
    "unknown": "Tidak dikenal",
    "normal": "OK",
    "degraded": "Terdegradasi",
    "missing": "Hilang",
    "available": "Tersedia",
    "applied": "Terapan",
    "notApplied": "Tidak diterapkan",
    "completed": "Selesai",
    "incomplete": "Tidak lengkap",
    "probed": "Diselidiki",
    "notProbed": "Tidak diselidiki",
    "probe": "Menguji",
    "name": "Nama",
    "username": "Nama belakang",
    "password": "Kata sandi",
    "domain": "Domain",
    "host": "Tuan rumah",
    "version": "Versi",
    "type": "Jenis",
    "mode": "Mode",
    "notes": "Catatan",
    "time": "Waktu",
    "steps": "Tangga",
    "target": "Target",
    "package": "Kemasan",
    "panel": "Panel",
    "system": "Sistem",
    "user": "Pengguna",
    "project": "Proyek",
    "database": "Basis data",
    "mail": "Surat",
    "files": "File",
    "memory": "Ingatan",
    "custom": "Kebiasaan",
    "static": "Statis",
    "lifecycle": "Siklus hidup",
    "loadFailed": "Gagal memuat",
    "saveFailed": "Gagal menyimpan",
    "opFailed": "Operasi gagal",
    "installFailed": "Penginstalan gagal",
    "createFailed": "Pembuatan gagal",
    "deleteFailed": "Penghapusan gagal",
    "applyFailed": "Penerapan gagal",
    "startFailed": "Mulai gagal",
    "statusLoadFailed": "Gagal memuat status",
    "downloadFailed": "Pengunduhan gagal",
    "uploadDone": "{{count}} file yang diunggah",
    "downloadStarted": "Pengunduhan dimulai: {{name}}",
    "savedOk": "Disimpan",
    "noneSelectedShort": "—",
    "unknownError": "Kesalahan tidak diketahui",
    "writtenSettings": "Pengaturan ditulis",
    "panelBlocked": "Tidak dapat menyelesaikan tindakan ini di panel admin",
    "partialSuccess": "Operasi tidak sepenuhnya berhasil",
    "createdOk": "Dibuat",
    "updatedOk": "Diperbarui",
    "deletedOk": "Dihapus",
    "applyDone": "Lamaran selesai",
    "applyIncomplete": "Terapkan tidak lengkap",
    "checking": "Memeriksa…",
    "dismiss": "Menutup",
    "hide": "Bersembunyi",
    "show": "Menunjukkan",
    "done": "Selesai",
    "next": "Berikutnya",
    "previous": "Sebelumnya",
    "redirectedTo": "Membuka {{to}} (sebelumnya {{from}})"
  },
  "cron": {
    "presetCdTrue": "cd aplikasi + benar (tes)",
    "presetCleanTmp": "Suhu bersih (sampel)",
    "presetNpmCron": "npm jalankan cron (jika ada)",
    "presetAppBin": "Jalankan biner aplikasi",
    "presetRsync": "Sinkronisasi statis (contoh rsync)",
    "noLinuxUser": "(tidak ada pengguna linux) · {{name}}",
    "projectUser": "Pengguna proyek",
    "panelUser": "ysk · panel / sistem",
    "system": "Sistem",
    "rootCareful": "root · sistem (hati-hati)",
    "customUser": "{{user}} · adat",
    "success": "Kesuksesan",
    "failed": "Gagal",
    "noProjects": "Belum ada proyek",
    "noProjectsHint": "Buat proyek (dan sebaiknya pengguna sistem) sebelum mendaftarkan cron",
    "userSuffix": "· pengguna",
    "mon": "Senin",
    "tue": "Selasa",
    "wed": "Menikahi",
    "thu": "Kam",
    "fri": "Jumat",
    "sat": "Duduk",
    "sun": "Matahari",
    "everyNMin": "Setiap N menit",
    "fixedInterval": "Interval tetap",
    "hourly": "Per jam",
    "atMinute": "Sebentar lagi",
    "daily": "Sehari-hari",
    "atTime": "Pada waktunya",
    "weekly": "Mingguan",
    "weekdayTime": "Hari kerja + waktu",
    "monthly": "Bulanan",
    "dayTime": "Hari + waktu",
    "advanced": "Canggih",
    "customExpr": "Ekspresi khusus",
    "everyMinute": "Setiap menit",
    "everyMinutes": "Setiap {{n}} menit",
    "hourlyAt": "Setiap jam pada menit {{n}}",
    "dailyAt": "Setiap hari {{time}}",
    "weeklyNone": "Mingguan (tanpa hari) {{time}}",
    "weeklyAt": "Mingguan {{days}} {{time}}",
    "monthlyAt": "Hari bulanan {{day}} {{time}}",
    "customAt": "Kustom: {{expr}}",
    "frequency": "Frekuensi jadwal",
    "interval": "Selang",
    "fromHour": "Dari jam sibuk",
    "intervalMinutes": "menit interval",
    "min1": "1 menit",
    "minN": "{{n}} mnt",
    "minuteOfHour": "Menit setiap jam",
    "minPad": "{{n}} mnt",
    "hour": "Jam",
    "minute": "Menit",
    "pickWeekdays": "Pilih hari kerja",
    "dayOfMonth": "Hari dalam sebulan",
    "dayOfMonthHint": "Dilewati jika bulan tidak memiliki hari itu",
    "cronExpr": "Ekspresi crontab",
    "cronExprHint": "Lima kolom: min jam hari bulan hari kerja (0=Minggu)",
    "cronExprPh": "ekspresi crontab",
    "needLinuxUser": "Proyek yang dipilih tidak memiliki pengguna Linux — buat satu di bawah Sumber Daya proyek terlebih dahulu",
    "boundProject": "Terikat pada proyek; dijalankan sebagai {{user}} (isolasi pengguna run)",
    "systemJob": "Pekerjaan sistem; dijalankan sebagai {{user}}",
    "writtenManage": "Ditulis ke crontab terkelola (belum diinstal pada host)",
    "needInstall": "Tekan Instal ke crontab sistem untuk menerapkannya",
    "createdManageOnly": "Dibuat (khusus manajemen)",
    "installedSystem": "Dipasang ke sistem",
    "hostSynced": "Host disinkronkan",
    "hostNotInstalled": "Bukan sebagai tuan rumah",
    "statusUnknown": "Status tidak diketahui",
    "systemCrontab": "Crontab sistem",
    "synced": "Disinkronkan",
    "managedLines": "Jalur yang dikelola",
    "jobsOnlyManage": "Pekerjaan hanya bersifat manajemen. Crontab sistem",
    "hostHasYsk": "termasuk entri YSK",
    "hostNoYsk": "tidak diinstal atau tidak ada entri YSK",
    "pressInstall": "Pekerjaan yang terdaftar belum ada di crontab sistem — klik Instal ke sistem.",
    "jobsTab": "Pekerjaan ({{count}})",
    "jobsTabPending": "Pekerjaan ({{count}}) · tertunda {{pending}}",
    "registeredJobs": "Pekerjaan terdaftar ({{count}})",
    "jobsSub": "Entri manajemen · Instal ke sistem setelah perubahan",
    "addJob": "+ Tambahkan pekerjaan",
    "noCron": "Belum ada cron",
    "noCronDesc": "Tambahkan pekerjaan (kanan atas daftar), lalu instal ke crontab sistem",
    "onceInstalled": "Dipasang sebelumnya",
    "manageOnly": "Kelola saja",
    "projectLabel": "Proyek",
    "systemLevel": "Sistem",
    "runOnce": "Jalankan sekarang",
    "runOnceOk": "Berlari sekali",
    "updatedManage": "Manajemen diperbarui; instal ulang ke crontab sistem",
    "updatedManageShort": "Manajemen diperbarui",
    "deletedManage": "Dihapus dari manajemen; instal ulang untuk menyinkronkan host",
    "installStatus": "Status pemasangan",
    "manageVsHost": "Manajemen vs tuan rumah",
    "hostYsk": "Tuan rumah YSK",
    "lastInstall": "Pemasangan terakhir",
    "installToSystem": "Instal ke crontab sistem",
    "installHint": "Instal menggabungkan crontab host: mempertahankan jalur non-YSK dan hanya memperbarui pekerjaan yang dikelola panel",
    "hostPreview": "Pratinjau crontab host",
    "cannotRead": "Tidak dapat membaca atau tidak diinstal (membutuhkan hak istimewa)",
    "addJobTitle": "Tambahkan pekerjaan",
    "addJobDesc": "Menulis manajemen; Instal ke sistem agar crontab dapat dijalankan",
    "createManageOnly": "Buat (khusus manajemen)",
    "whenRun": "Kapan harus lari",
    "whenRunHint": "Pilih frekuensi di bawah; mode lanjutan untuk crontab mentah",
    "userPathHint": "Jalur pengguna + perintah mengikuti beranda/runtime proyek",
    "pickProject": "— pilih proyek —",
    "runAsUser": "Jalankan sebagai pengguna",
    "runAsHint": "Pengguna proyek menyinkronkan proyek di atas; pengguna sistem = cron tingkat sistem",
    "noProjectsYet": "(belum ada proyek)",
    "runInHome": "Jalankan di bawah proyek rumah ({{home}}); dibungkus dengan runuser saat disimpan",
    "absPath": "Lebih memilih jalur absolut",
    "commonCmds": "Perintah umum ({{runtime}})",
    "actualPreview": "Garis crontab sebenarnya (pratinjau)",
    "noLinuxName": "Proyek ini tidak memiliki nama pengguna Linux — buat pengguna sistem di Sumber Daya terlebih dahulu.",
    "afterCreate": "Setelah membuat:",
    "projectParen": "(proyek {{name}})",
    "systemParen": "(tingkat sistem, tidak terikat)",
    "weekLabel": "Hari kerja",
    "willRun": "Akan lari",
    "projectNoLinux": "(tidak ada pengguna linux)",
    "createManageOnlyParen": "Buat (khusus manajemen)",
    "runAsHintFull": "Pengguna proyek menyinkronkan proyek di atas; pengguna sistem = cron tingkat sistem",
    "systemParenFull": "(tingkat sistem, tidak terikat)",
    "hostOtherLines": "Host jalur non-YSK",
    "hostOtherLinesVal": "{{other}} lainnya ({{total}} jalur pekerjaan tuan rumah)",
    "deleteTitle": "Hapus tugas cron?",
    "deleteDesc": "Menghapus \"{{name}}\". Hanya bidang kontrol hingga diterapkan ke crontab sistem.",
    "hostJobs": "Pekerjaan tuan rumah",
    "hostJobsTitle": "Crontab host ({{count}})",
    "usersScanned": "Pengguna",
    "filterUser": "Pengguna",
    "filterAll": "Semua pengguna",
    "sourceYsk": "Panel",
    "sourceHost": "Tuan rumah",
    "noHostJobs": "Tidak ada pekerjaan crontab dalam cakupan ini",
    "hostPartial": "Tidak dapat membaca crontab setiap pengguna (diperlukan root)",
    "pendingInstall": "Pemasangan tertunda ({{count}})",
    "pendingStale": "Tidak ditulis ke crontab sistem selama {{days}} hari — tidak akan berjalan.",
    "willNotRun": "Tidak ditulis ke crontab sistem — tidak akan berjalan.",
    "hourRange": "Jam harus 0–23.",
    "minuteRange": "Menit harus 0–59.",
    "hoursCommon": "Jam umum",
    "hoursAll": "Semua jam",
    "invalidExpr": "Bukan ekspresi cron 5 bidang yang valid.",
    "needCommand": "Diperlukan perintah.",
    "needUser": "Pilih proyek atau pengguna sistem.",
    "hostCounts": "Garis tuan rumah",
    "hostCountsVal": "{{ysk}} · lainnya {{other}} · jumlah {{total}}",
    "hostYskYes": "garis panel hadir",
    "hostYskNo": "tidak ada garis panel",
    "emptyHostCrontab": "Tidak ada crontab untuk {{user}}.",
    "writtenOnHost": "Tertulis",
    "registeredJobsChip": "Terdaftar",
    "registeredVsWritten": "Terdaftar di panel vs ditulis ke host crontab",
    "installPreviewTitle": "Pratinjau sebelum menginstal ke crontab sistem",
    "installPreviewDesc": "Ini menggabungkan blok YSK ke dalam crontab host. Jalur non-YSK yang ada tetap ada.",
    "installPreviewMerge": "Instal menulis blok penggabungan crontab Server YSK. Itu tidak menggantikan seluruh crontab.",
    "installPreviewEmpty": "Tidak ada pekerjaan terkelola yang tertunda — instalasi masih menyegarkan blok YSK.",
    "editJobTitle": "Sunting pekerjaan",
    "editJobDesc": "Perubahan tetap ada di panel sampai Anda menginstal ke crontab sistem.",
    "saveJob": "Simpan (hanya manajemen)",
    "panelLines": "Garis panel",
    "otherLines": "Garis lainnya",
    "totalLines": "Total",
    "writtenOnHostHint": "Baris sudah ditulis ke crontab host",
    "registeredJobsHint": "Pekerjaan yang terdaftar di panel (termasuk instalasi yang tertunda)",
    "pendingInstallCount": "{{n}} pemasangan tertunda",
    "systemJobBadge": "Tidak ada proyek · pengguna sistem",
    "hostEdit": "Sunting",
    "hostEditTitle": "Edit baris crontab host",
    "hostEditDesc": "Menulis crontab langsung pengguna ini sekarang. Membutuhkan root dan YSK_EXECUTE=1. Jalur lainnya tetap ada.",
    "hostSave": "Tulis crontab",
    "hostSaveTitle": "Tulis baris crontab ini?",
    "hostSaveDesc": "Replaces the live line for {{user}}. Type EDIT to confirm.\n\nCurrent:\n{{from}}\n\nNext:\n{{to}}",
    "hostDisable": "Cacat",
    "hostDisableTitle": "Nonaktifkan baris crontab host?",
    "hostDisableDesc": "Komentari baris untuk {{user}}. Ketik DISABLE untuk mengonfirmasi.",
    "hostEnable": "Memungkinkan",
    "hostEnableTitle": "Aktifkan baris crontab host?",
    "hostEnableDesc": "Menghapus komentar untuk {{user}}. Ketik ENABLE untuk mengonfirmasi.",
    "hostRunTitle": "Jalankan perintah host ini sekali?",
    "hostRunDesc": "Berjalan sebagai {{user}} sekarang. Tidak mengubah crontab. Ketik RUN untuk mengonfirmasi.",
    "hostAdopt": "Masukkan ke dalam panel",
    "hostAdoptTitle": "Bawa jalur host ini ke panel?",
    "hostAdoptDesc": "Beri tag saluran langsung # ysk:id dan daftarkan. Pemasangan berikutnya tidak akan menduplikasinya. Ketik ADOPT untuk mengonfirmasi.",
    "hostDeleteTitle": "Hapus baris crontab host?",
    "hostDeleteDesc": "Menghapus saluran langsung untuk {{user}}. Ketikkan perintah untuk mengonfirmasi.",
    "hostUserLocked": "Pemilik Crontab (tidak dapat berpindah antar pengguna di sini)",
    "hostLinePreview": "Baris yang akan ditulis",
    "disabledJob": "Dengan disabilitas",
    "confirmMismatch": "Konfirmasi harus sesuai dengan perintah.",
    "writtenHost": "Menulis crontab host",
    "adoptedHost": "Dibawa ke panel",
    "keepDisabledHint": "Jalur ini dinonaktifkan. Simpan terus dikomentari.",
    "currentLine": "Saat ini",
    "nextLine": "Berikutnya"
  },
  "dashboard": {
    "serviceAria": "{{name}}: {{state}}",
    "sev": {
      "ok": "OK",
      "warn": "Peringatan",
      "bad": "Masalah"
    },
    "title": "Dasbor",
    "health": "Kesehatan",
    "protection": "Modus perlindungan",
    "welcome": "Selamat datang di Server YSK",
    "audit": "Audit terbaru",
    "needLogin": "Masuk untuk melihat acara audit",
    "features": "Fitur",
    "featuresHint": "Lencana: Siap = perangkat lunak diinstal;",
    "badge": {
      "panel": "Panel",
      "notInstalled": "Tidak dipasang",
      "ready": "Siap",
      "installed": "Dipasang",
      "prodReady": "Produk siap",
      "check": "Memeriksa",
      "needPerm": "Perlu perm"
    },
    "status": {
      "healthy": "Sehat",
      "prodReady": "Produk siap",
      "needsCheck": "Perlu diperiksa"
    },
    "stat": {
      "backups": "Cadangan",
      "notifications": "Peringatan",
      "certExpiry": "Masa berlaku sertifikat"
    },
    "tabs": {
      "overview": "Ringkasan",
      "wizard": "Buat cepat",
      "notifications": "Peringatan",
      "features": "Fitur"
    },
    "serviceHealth": "Kesehatan layanan",
    "serviceHealthDesc": "Pemeriksaan systemctl langsung",
    "fullServiceMatrix": "Matriks layanan penuh",
    "readinessCheck": "Kesiapan:",
    "prodOk": "Produksi siap",
    "notFullyReady": "Belum sepenuhnya siap",
    "readinessBlocked": "{{n}} pemblokir",
    "modeScore": "Modus {{mode}} · skor {{ready}}/{{total}}",
    "mode": {
      "degraded": "terdegradasi",
      "production_capable": "siap produksi",
      "blocked": "diblokir",
      "normal": "normal"
    },
    "details": "Detail",
    "certExpiryTitle": "Masa berlaku sertifikat:",
    "certExpired": "kedaluwarsa",
    "certDays": "{{days}}d",
    "securityStrip": "Keamanan & terapkan status",
    "securityStripDesc": "Peringatan langsung + terapkan audit kejujuran (tertulis ≠ diterapkan)",
    "notifCount": "Peringatan {{count}}",
    "criticalCount": "· kritis {{count}}",
    "warnCount": "· peringatkan {{count}}",
    "applyAuditBadge": "Terapkan audit · oke {{ok}} · peringatkan {{warn}} · buruk {{bad}}",
    "executeBadge": "JALANKAN {{state}}",
    "executeLabel": "EXECUTE",
    "publicNo2fa": "Panel ini mendengarkan semua antarmuka dan akun admin Anda tidak memiliki 2FA.",
    "go": "Membuka",
    "open": "Membuka",
    "noCriticalWarn": "Tidak ada peringatan kritis atau peringatan",
    "notifCenter": "Pusat notifikasi",
    "noHealthYet": "Status kesehatan belum tersedia",
    "sysChange": "Perubahan sistem",
    "opened": "Pada",
    "closed": "Mati",
    "readinessLink": "Kesiapan →",
    "hostMetrics": "Metrik tuan rumah",
    "loadAvg": "Rata-rata beban (1 · 5 · 15 menit)",
    "memoryDash": "Memori —",
    "metricsLink": "Metrik →",
    "runningOf": "Berjalan {{running}}/{{total}}",
    "noProjects": "Belum ada proyek",
    "wizardLink": "Buat cepat →",
    "allProjects": "Semua proyek →",
    "recentN": "Terakhir {{n}}",
    "runningCount": "Berjalan {{n}}",
    "securityLink": "Keamanan →",
    "wizardTitle": "Buat cepat",
    "wizardDesc": "Buat proyek dan opsional draf DNS/mail/database (terapkan pada setiap halaman fitur)",
    "projectName": "Nama proyek",
    "projectNameHint": "Nama tampilan; membuat direktori yang cocok",
    "nameRequired": "Masukkan nama proyek",
    "domainOptional": "Domain (opsional)",
    "domainHint": "Diperlukan untuk mengaktifkan opsi DNS dan email",
    "runtime": "Waktu proses",
    "runtimeHint": "Menetapkan versi runtime default dan gaya penerapan",
    "runtimeVersion": "Versi waktu proses",
    "versionHint": "Menulis pengaturan versi lingkungan eksekusi proyek",
    "serverIpv4": "Server IPv4",
    "serverIpv4Hint": "DNS A / surat SPF",
    "serverIpv4Ph": "Ini menghosting IPv4 publik",
    "serverIpv6": "Server IPv6 (opsional)",
    "serverIpv6Hint": "Menulis AAAA / ip6: saat disetel",
    "serverIpv6Ph": "IPv6 Publik (opsional)",
    "needDomainFirst": "Isi domain dulu",
    "withDns": "Buat juga zona DNS",
    "withDnsDesc": "Membutuhkan domain; registrasi saja — terapkan zona pada halaman DNS",
    "withMail": "Daftarkan juga domain email",
    "withMailDesc": "Membutuhkan domain; instal perangkat lunak & DNS di halaman detail email",
    "withDb": "Juga menyusun database MySQL",
    "withDbDesc": "Registrasi pesawat kendali; terapkan pada halaman mesin SQL",
    "wizardHint": "Pembuatan cepat tidak ditayangkan secara otomatis",
    "wizardSubmit": "Membuat",
    "wizardOk": "Dibuat",
    "wizardPartial": "Gagal sebagian",
    "notifCenterTitle": "Pemberitahuan ({{count}})",
    "notifCenterDesc": "Kritis {{critical}} · peringatkan {{warn}} · info {{info}}",
    "noNotifs": "Tidak ada pemberitahuan",
    "noNotifsDesc": "Peringatan sistem dan tugas yang harus dilakukan muncul di sini",
    "applyAuditTitle": "Terapkan audit status",
    "applyAuditDesc": "oke {{ok}} · peringatkan {{warn}} · buruk {{bad}}",
    "barTitle": "{{count}} peringatan host",
    "levelCritical": "Kritis",
    "levelWarn": "Peringatan",
    "levelInfo": "Informasi",
    "colTitle": "Peringatan",
    "colDetail": "Rincian",
    "colSource": "Sumber",
    "notifSearch": "Peringatan pencarian",
    "notifAll": "Semua",
    "notifDismiss": "Bersembunyi",
    "goFix": "Memperbaiki"
  },
  "dataTable": {
    "empty": "Tidak ada data",
    "actions": "Tindakan"
  },
  "db": {
    "serviceSettings": "Pengaturan layanan",
    "installedOk": "{{engine}} terpasang",
    "startedOk": "{{engine}} dimulai",
    "installFirst": "Instal {{engine}} terlebih dahulu",
    "softwareMissing": "{{engine}} perangkat lunak tidak diinstal",
    "serviceOverview": "Ikhtisar layanan",
    "readonlyStatus": "Status hanya baca",
    "readonlyProbe": "Pemeriksaan hanya-baca",
    "systemChange": "Perubahan sistem",
    "opened": "Diaktifkan",
    "notOpened": "Dengan disabilitas",
    "admin": "Admin",
    "client": "Klien",
    "hasClient": "Ya",
    "noClient": "TIDAK",
    "canProvision": "Dapat membuat DB",
    "dumpOk": "Pembuangan selesai",
    "dumpFailed": "Pembuangan gagal",
    "noDumpToImport": "Tidak ada file dump untuk diimpor",
    "expiredTempUsersProcessed": "Kedaluwarsa pengguna sementara diproses",
    "dumpFirstDb": "Buang DB pertama",
    "importLatestDump": "Impor dump terbaru",
    "cleanupExpiredTempUsers": "Bersihkan pengguna sementara yang kedaluwarsa",
    "adminerEntry": "Proyek peramban DB",
    "browserProjectTitle": "Buat proyek browser DB",
    "browserTool": "Alat",
    "browserNameHint": "Membuat proyek PHP; nama harus unik",
    "browserNameTaken": "Nama proyek sudah ada: {{name}}",
    "browserProjectCreated": "Proyek browser DB dibuat",
    "createBrowserProject": "Buat proyek dan terapkan",
    "downloadPhpMyAdmin": "Unduh phpMyAdmin (membutuhkan perubahan sistem + jaringan)",
    "createDatabase": "Buat basis data",
    "installBannerHint": "Gunakan spanduk di atas untuk memasang {{engine}}.",
    "exclusiveMariaHint": "Host ini menjalankan MariaDB. Gunakan halaman MariaDB atau sakelar sekali klik (ketik SWITCH).",
    "exclusiveMysqlHint": "Host ini menjalankan MySQL. Gunakan halaman MySQL atau saklar sekali klik (ketik SWITCH).",
    "openMaria": "MariaDB",
    "openMysql": "MySQL",
    "openMariaService": "Layanan MariaDB",
    "openMysqlService": "layanan MySQL",
    "startService": "Mulai layanan",
    "openServiceConsole": "Buka konsol layanan",
    "opsResult": "Hasil operasi",
    "tempPasswordOnce": "Kata sandi read-only sementara (ditampilkan satu kali):",
    "tabDatabases": "Basis Data ({{count}})",
    "tabUsers": "Pengguna ({{count}})",
    "tabTemp": "Suhu hanya-baca ({{count}})",
    "tabRemote": "Host jarak jauh ({{count}})",
    "dbList": "Daftar basis data",
    "charset": "rangkaian karakter",
    "noDatabasesYet": "Belum ada database",
    "emptyDbInstallFirst": "Instal {{engine}} melalui banner, lalu Buat database",
    "emptyDbCannotProvision": "Tidak dapat membuat database di server saat ini",
    "emptyDbCreateHint": "Gunakan Buat database, lalu Terapkan",
    "emptyDbHostHasRows": "Host sudah memiliki database yang tidak ada dalam daftar sarana kendali ini.",
    "registeredVsHostHint": "Terdaftar di panel / ditemukan di host",
    "registeredCount": "Terdaftar",
    "hostCount": "Di tuan rumah",
    "registeredUsers": "Pengguna terdaftar",
    "registeredUsersHint": "Hanya pendaftaran panel — tidak semua akun MySQL",
    "hostStillExists": "Masih menjadi tuan rumah",
    "expiresLabel": "Kedaluwarsa",
    "dumpNeedRegistered": "Daftarkan dulu basis data di panel",
    "dumpFirstDbTitle": "Ekspor basis data terdaftar pertama",
    "importNeedRegistered": "Daftarkan dulu basis data di panel",
    "importLatestNeedConfirm": "Perlu konfirmasi — mengimpor ke basis data terdaftar",
    "hostHasUntracked": "{{count}} database host tidak terdaftar di panel",
    "hostInventoryHint": "Tabel ini hanya berisi baris bidang kontrol. Nama langsung berasal dari SHOW DATABASES.",
    "userList": "Pengguna",
    "userListDesc": "Berikan pengguna akses ke database",
    "createUserBtn": "+ Buat pengguna",
    "noUsersYet": "Belum ada pengguna",
    "tempReadonlyUsers": "Pengguna hanya baca sementara",
    "tempReadonlyDesc": "Tanda bidang kendali habis masa berlakunya setelah TTL;",
    "dbName": "Nama basis data",
    "ttlHours": "TTL (jam)",
    "ttlHoursHint": "Ditandai tidak valid setelah habis masa berlakunya",
    "createReadonlyUser": "Buat pengguna hanya-baca",
    "tempUserCreated": "Pengguna hanya-baca sementara dibuat",
    "expiresAt": "Kedaluwarsa",
    "revokeRegistration": "Cabut pendaftaran",
    "remoteDbHosts": "Host basis data jarak jauh",
    "remoteDbHostsDesc": "Daftarkan target koneksi (kata sandi tidak digaungkan kembali)",
    "remoteTest": "Uji koneksi",
    "remoteTestDone": "Pemeriksaan host jarak jauh selesai",
    "remoteTestOk": "dapat dijangkau",
    "remoteTestFail": "tidak dapat dijangkau",
    "remoteNotChecked": "tidak diuji",
    "remoteDeleteTitle": "Hapus pendaftaran ini saja",
    "remoteDeleteConfirm": "Hapus pendaftaran {{name}}? Server jarak jauh tidak diubah.",
    "displayName": "Nama tampilan",
    "prodReplicaPlaceholder": "Replika produksi",
    "remoteHostSaved": "Host jarak jauh disimpan",
    "createDbTitle": "Buat basis data {{engine}}",
    "createDbDesc": "Setelah registrasi bidang kontrol, Terapkan untuk menulis di server",
    "dbNameHint": "Huruf kecil alnum dan garis bawah; berlaku untuk sistem setelah dibuat",
    "alsoCreateUser": "Buat juga pengguna",
    "alsoCreateUserDesc": "Buat login yang dapat terhubung ke database ini",
    "passwordMin8": "Setidaknya 8 karakter",
    "passwordMin8chars": "Setidaknya 8 karakter",
    "allowConnectHost": "Tuan rumah yang diizinkan",
    "allowConnectHostHint": "Seringkali % (apa saja) atau localhost",
    "allowConnectHostHintShort": "Seringkali % atau localhost",
    "createDbHint": "Hanya menulis bidang kontrol; Terapkan menjalankan CREATE DATABASE di server.",
    "createUserTitle": "Buat {{engine}} pengguna",
    "createUserDesc": "Terapkan setelah dibuat",
    "bindDatabase": "Mengikat basis data",
    "bindDatabaseHint": "Opsional; memberikan hak istimewa pada DB ini",
    "noneOption": "- tidak ada -",
    "importDumpTitle": "Impor dump?",
    "importDumpDesc": "Impor {{dump}} ke {{db}}",
    "import": "Impor",
    "importOk": "Impor selesai",
    "importFailed": "Impor gagal",
    "deleteDbTitle": "Hapus registrasi basis data?",
    "deleteDbDesc": "Menghapus catatan bidang kontrol saja; tidak DROP database server.",
    "deleteUserTitle": "Hapus pendaftaran pengguna?",
    "deleteUserDesc": "Menghapus catatan bidang kontrol saja.",
    "adminerTitle": "Peramban basis data admin",
    "adminerDesc": "Unduh Adminer + tulis Nginx conf; berlaku untuk sistem yang berjalan nginx -t + reload",
    "adminerWritten": "Adminer ditulis ke file manajemen",
    "adminerApplied": "Admin melamar",
    "writeOnly": "Tulis saja (tertulis)",
    "applyToSystem": "Terapkan ke sistem",
    "adminerRisk": "Admin Publik berisiko — membatasi IP sumber atau menambahkan autentikasi HTTP. Membutuhkan soket PHP-FPM (default php8.2).",
    "vhostName": "Nama host virtual",
    "vhostHint": "Arahkan DNS A ke host ini untuk akses eksternal",
    "downloadAdminer": "Download Adminer PHP (membutuhkan YSK_EXECUTE + jaringan keluar)",
    "downloadAdminerDesc": "Off = gunakan file yang sudah diunduh saja",
    "adminerWriteHint": "Tulis saja = manajemen tertulis;",
    "pgInstallBanner": "Instal PostgreSQL melalui banner terlebih dahulu",
    "pgEmptyCreateHint": "Setelah dibuat, Terapkan ke sistem untuk menulis di server",
    "pgNoDbs": "Belum ada database PostgreSQL",
    "pgCreateTitle": "Buat basis data PostgreSQL",
    "pgCreateDesc": "Registrasi pesawat kendali; Berlaku untuk menjalankan sistem CREATE DATABASE",
    "pgAlsoCreateRole": "Juga buat peran",
    "pgAlsoCreateRoleDesc": "Buat peran login dan berikan database ini",
    "roleName": "Nama peran",
    "roleHint": "Peran PostgreSQL/pengguna login",
    "pgDeleteDbDesc": "Menghapus catatan bidang kontrol (tidak otomatis DROP kecuali penerapan pencabutan dijalankan).",
    "update": "Memperbarui",
    "alsoCreateRole": "Juga buat peran",
    "cluster": {
      "standaloneOtherEngines": "Mesin ini berdiri sendiri. Mesin lain memiliki cluster: {{names}}.",
      "roleUnassigned": "Tidak ada peran yang ditetapkan",
      "title": "Gugus",
      "description": "Rencanakan → manajemen tulis → terapkan → probe → distribusi rekan/armada. Uji coba default.",
      "redirectedFromCluster": "Anda dialihkan ke sini dari /cluster. Ini adalah tab cluster database.",
      "notApplied": "Tidak diterapkan",
      "plannedAt": "Dibuat {{when}}",
      "clearStalePlans": "Hapus rencana basi",
      "clearStalePlansTitle": "Hapus kluster terencana yang sudah basi?",
      "clearStalePlansDesc": "Menghapus {{n}} pendaftaran terencana/draf yang lebih lama dari 7 hari. Tidak berlaku atau mendorong. Konfigurasi sistem tidak disentuh.",
      "landingTitle": "Kluster basis data",
      "landingDesc": "No database engine is installed on this host. Open an engine page to install, then return here.",
      "landingNoneInstalled": "MySQL, MariaDB, PostgreSQL, and Redis are not installed. /cluster does not open a MySQL tab when MySQL is missing.",
      "openEngine": "Buka {{engine}}",
      "overviewPill": "Cluster {{n}}",
      "enginesInstalled": "Mesin",
      "plannedCount": "Berencana",
      "overviewList": "Cluster ({{count}})",
      "overviewEmpty": "Belum ada pendaftaran cluster.",
      "engine": "Mesin",
      "kind": "Baik",
      "members": "Anggota",
      "kindGalera": "Galeri Sederhana",
      "kindMysqlReplica": "MySQL utama/replika",
      "kindPgReplica": "Replika streaming PostgreSQL",
      "kindRedisReplica": "Redis primer/replika",
      "createGalera": "Buat Galera sederhana",
      "createMysqlReplica": "Buat primer/replika",
      "createPgReplica": "Buat replika streaming",
      "createSentinel": "Buat Penjaga",
      "createRedisReplica": "Buat replika Redis",
      "needRealIps": "Masukkan IP/nama host lokal dan peer yang sebenarnya",
      "hostInvalid": "Masukkan IPv4, IPv6, atau nama host yang valid.",
      "statusNote": "Status: {{status}} (rencana sukses ≠ kesehatan cluster)",
      "artifactNote": "Artefak: {{dir}}",
      "planGenerated": "Rencana dibuat (uji coba)",
      "planUpdated": "Paket diperbarui",
      "manageWritten": "File manajemen ditulis (dry-run)",
      "bootstrapTried": "Bootstrap mencoba",
      "applyTried": "Penerapan konfigurasi sistem telah dicoba",
      "localOk": "Lokal oke",
      "localProbeFail": "Penyelidikan lokal gagal",
      "probedWithPeers": "Diselidiki (termasuk rekan sejawat)",
      "probedLocal": "Diperiksa secara lokal",
      "peerTarNote": "Paket rekan diunduh (.tar.gz) — ekstrak dan instal conf di rekan",
      "downloaded": "Diunduh",
      "peerPushed": "Didorong untuk mengintip",
      "pushPlanGenerated": "Rencana dorong dibuat",
      "registrationDeleted": "Pendaftaran dihapus",
      "nodes": "Node",
      "remoteInstallPlan": "Rencana pemasangan jarak jauh",
      "fleetSession": "Id sesi agen armada",
      "fleetSessionHint": "Optional. Paste a session UUID from /agents. Then this peer uses fleet (no SSH). Leave empty for SSH scp.",
      "fleetSessionPh": "UUID sesi halaman agen",
      "fleetSessionNone": "Tidak ada — gunakan SSH",
      "fleetSessionOpenAgents": "Buka /agents untuk mendaftarkan sesi",
      "createWizardTitle": "Membuka panduan rencana. Membutuhkan IP lokal dan ≥1 rekan. Hanya menulis artefak panel (dry-run). Jangan menghidupkan ulang mesin sampai Anda melamar.",
      "bootstrap": "tali sepatu",
      "fleetApply": "Armada berlaku",
      "planTitle": "Regenerasi paket cluster (tidak ada perubahan host)",
      "writeFileTitle": "Tulis file manajemen di bawah direktori data panel (dry-run)",
      "probeLocalTitle": "Selidiki host ini saja",
      "probeAllTitle": "Selidiki setiap anggota yang terdaftar",
      "bootstrapTitle": "Instal drop-in lokal dan bootstrap node pertama",
      "remoteInstallPlanTitle": "Pratinjau instalasi jarak jauh (tidak ada eksekusi)",
      "downloadBundleTitle": "Unduh paket peer conf (.tar.gz)",
      "pushPlanTitle": "Pratinjau push to peer (tanpa scp)",
      "fleetSyncPlanTitle": "Pratinjau sinkronisasi armada (tidak ada eksekusi)",
      "fleetApplyTitle": "Enqueue berlaku untuk anggota armada?",
      "status": {
        "healthy": "Sehat",
        "planned": "Berencana",
        "partial": "Sebagian",
        "failed": "Gagal",
        "draft": "Draf",
        "degraded": "Terdegradasi",
        "applied": "Terapan"
      },
      "fleetSyncPlan": "Rencana sinkronisasi armada",
      "standaloneTitle": "Saat ini: mandiri",
      "standaloneRepl": "Tidak ada replika yang terdaftar. Atur replika utama/master + untuk menghasilkan conf dan skrip.",
      "standaloneHa": "Tidak ada HA yang terdaftar. Tambahkan node rekan untuk menghasilkan rencana conf, lalu bootstrap/gabung.",
      "recentProbe": "Pemeriksaan terbaru (wsrep lokal)",
      "probeRequired": "sehat membutuhkan pemeriksaan yang lewat",
      "planPreview": "Pratinjau rencana",
      "planPreviewDesc": "uji coba · sukses hanya berarti langkah/konferensi yang dihasilkan",
      "files": "File",
      "systemChangeNeed": "Diperlukan saat melamar",
      "planModalDesc": "Pilih node → buat rencana (tidak mengubah sistem rekan)",
      "generatePlan": "Hasilkan rencana",
      "clusterName": "Nama klaster",
      "localIp": "IP/host lokal",
      "primaryIpHint": "Host bidang kontrol (utama/master + akses=lokal)",
      "localIpHint": "Host bidang kontrol (akses=lokal)",
      "ipExample1": "misalnya 10.0.0.1",
      "ipExample2": "misalnya 10.0.0.2",
      "ipExample3": "misalnya 10.0.0.3",
      "replicaIp": "Replika IP/host",
      "peerIp": "IP rekan/host",
      "replicaHint": "Node replika",
      "peerHint": "Node kedua (Galera lebih memilih 3)",
      "thirdNode": "Node ke-3 (opsional)",
      "thirdNodeHint": "Direkomendasikan untuk Galera / multi replika",
      "sstMethod": "metode SST",
      "forbidDemoIp": "Tidak ada IP demo (203.0.113.x).",
      "fwGalera": "Buka internal 3306/4567/4444/4568.",
      "fwPg": "Streaming membutuhkan internal 5432; ubah CHANGE_ME kata sandi dalam skrip.",
      "fwRedis": "Redis internal 6379 (penjaga 26379).",
      "fwRepl": "Replika memerlukan port internal yang cocok; ubah CHANGE_ME sandi.",
      "needExecuteRoot": "Menerapkan konfigurasi sistem memerlukan YSK_EXECUTE=1 + root.",
      "topology": "Topologi: {{kind}}",
      "applyLocalTitle": "Terapkan konfigurasi sistem lokal?",
      "applyBootstrapDesc": "Menginstal drop-in dan bootstrap Galera (galera_new_cluster)",
      "applyJoinDesc": "Instal drop-in Galera dan systemctl restart mariadb",
      "confirmApply": "Konfirmasikan lamaran",
      "deleteClusterTitle": "Hapus pendaftaran cluster?",
      "remoteInstallTitle": "Rekan instalasi jarak jauh?",
      "pushTitle": "Dorong untuk mengintip?",
      "fleetSyncTitle": "Sinkronisasi armada?",
      "confirmOp": "Mengonfirmasi",
      "deleteClusterDesc": "Konfigurasi sistem tidak dihapus secara otomatis (v1).",
      "remoteInstallDesc": "Instal conf + restart pada rekan. Membutuhkan YSK_EXECUTE + SSH.",
      "pushDesc": "scp file ke rekan /tmp?",
      "fleetSyncDesc": "Sinkronkan snapshot klaster ke tepi armada, lalu terapkan.",
      "fleetApplyDesc": "Enqueue berlaku untuk anggota armada.",
      "remoteInstalled": "Terpasang jarak jauh",
      "fleetSynced": "Sinkronisasi armada dalam antrean",
      "fleetApplyQueued": "Armada melamar dalam antrian",
      "engineNotInstalled": "{{engine}} tidak diinstal pada host ini — instal terlebih dahulu, atau buka mesin yang sebenarnya sedang berjalan.",
      "plan": "Rencana",
      "writeFile": "Menulis file",
      "applyLocal": "Terapkan lokal",
      "probeAll": "Selidiki semua node",
      "remoteInstall": "Pemasangan jarak jauh",
      "downloadBundle": "Unduh bundel",
      "pushPlan": "Rencana dorong",
      "pushExecute": "Dorong eksekusi",
      "fleetSync": "Sinkronisasi armada",
      "localConfPreview": "Pratinjau konferensi lokal",
      "refresh": "Menyegarkan",
      "close": "Menutup",
      "cancel": "Membatalkan",
      "delete": "Menghapus",
      "probe": "Menguji",
      "name": "Nama",
      "type": "Jenis"
    },
    "console": {
      "dataBrowse": "Telusuri data",
      "dbManage": "Admin basis data",
      "realtime": "Hidup",
      "reload": "Muat ulang",
      "needRestart": "Diperlukan mulai ulang",
      "affectsProjects": "Situs dan layanan yang menggunakan mesin ini akan terganggu.",
      "lifecycle": "Siklus hidup",
      "overview": "Ringkasan",
      "actionDone": "{{action}} selesai",
      "installDone": "Penginstalan selesai",
      "noChanges": "Tidak ada yang bisa diterapkan",
      "settingsApplied": "Pengaturan diterapkan",
      "notReadFromService": "Tidak dibaca dari layanan",
      "applyMode": "Mode Terapkan: {{mode}}",
      "dirtyNotApplied": "Dimodifikasi, tidak diterapkan",
      "highRisk": "Pengaturan berisiko tinggi",
      "engine": "Mesin",
      "bootEnabled": "Mulai saat boot",
      "uptimeSec": "Waktu aktif",
      "currentConnections": "Koneksi",
      "changes": "Perubahan",
      "serviceTitle": "{{title}} layanan",
      "softwareMissing": "{{title}} perangkat lunak tidak diinstal",
      "overviewDesc": "Info baca-saja dari probe (bukan kolom formulir)",
      "lifecycleDesc": "Instal, mulai, hentikan, dan aktifkan saat boot",
      "about": "Tentang",
      "cluster": "Gugus",
      "noSettings": "Tidak ada pengaturan dalam kategori ini (atau tidak didukung dalam versi ini)",
      "applyHint": "Hidup dapat berubah secara online;",
      "applyCategory": "Terapkan kategori",
      "applyAll": "Terapkan semua perubahan",
      "applyCatCount": "Terapkan kategori ({{n}})",
      "applyAllCount": "Terapkan semua ({{n}})",
      "lifecycleNote": "Pada Pengaturan, Hidup berubah secara online; diperlukan restart memerlukan restart Siklus hidup setelah diterapkan.",
      "installEngine": "Gunakan spanduk di atas untuk memasang {{title}}.",
      "reloadConfig": "Muat ulang konfigurasi",
      "disableBoot": "Nonaktifkan saat boot",
      "disableBootConfirm": "Mesin tidak akan hidup setelah reboot sampai Anda mengaktifkannya kembali.",
      "needRights": "Membutuhkan hak perubahan sistem dan admin. Kegagalan menunjukkan alasannya - jangan pernah memalsukan kesuksesan.",
      "noneFetched": "- tidak ada -"
    },
    "importEntry": "Entri: {{url}}",
    "adminerRiskFull": "Admin Publik berisiko — membatasi IP sumber atau menambahkan autentikasi HTTP. Membutuhkan soket PHP-FPM (default php8.2).",
    "adminerWriteHintFull": "Tulis saja = manajemen tertulis;",
    "pgInstalled": "PostgreSQL diinstal",
    "pgStarted": "PostgreSQL dimulai",
    "notInstalledShort": "Tidak dipasang",
    "serviceConsole": "Konsol layanan",
    "installPgFirst": "Instal PostgreSQL terlebih dahulu",
    "pgSoftwareMissing": "Perangkat lunak PostgreSQL tidak diinstal",
    "installPgBanner": "Gunakan banner di atas untuk menginstal PostgreSQL.",
    "createPlus": "+ Buat",
    "dbNameHintPg": "Huruf kecil alnum dan garis bawah; terapkan setelah dibuat",
    "deleteNotePg": "Menghapus registrasi tidak MENGHENTIKAN DB server; terapkan sukses berarti DDL berjalan di host.",
    "tabDatabasesSimple": "Basis Data ({{count}})",
    "frozenTitle": "Layanan basis data perlu diperbaiki",
    "frozenBody": "Masalah terdeteksi (mode beku: {{mode}};",
    "unfreezeBtn": "Diagnosis dan perbaikan",
    "unfreezeConfirmTitle": "Perbaiki {{engine}}?",
    "unfreezeConfirmDesc": "Menjalankan rencana perbaikan umum dari diagnostik (stop, clear freeze, sanitize config, init emp",
    "unfreezeConfirmBtn": "Konfirmasikan perbaikan",
    "unfreezeOk": "{{engine}} perbaikan selesai",
    "startAfterUnfreeze": "Mulai layanan (rencana perbaikan berjalan otomatis jika terjadi kegagalan)",
    "serviceDownTitle": "Layanan basis data sedang down",
    "serviceDownBody": "Pelayanannya tidak sehat",
    "adoptHostDb": "Daftar {{name}}",
    "adoptHostDbTitle": "Hanya mendaftarkan nama di control plane; tidak mengubah data host.",
    "cleanupExpiredTempUsersTitle": "Menghapus pengguna sementara panel yang sudah kedaluwarsa",
    "invalidSqlIdent": "Gunakan pengenal huruf kecil: mulai dengan huruf, lalu huruf, angka, atau garis bawah.",
    "remoteHostRequired": "Masukkan host jarak jauh.",
    "remoteTestUnsaved": "Simpan host ini terlebih dahulu, lalu Uji koneksi. Atau isi host dan simpan.",
    "serverNotInstalled": "Mesin ini tidak diinstal di server.",
    "dumpNeedEngine": "Instal mesin sebelum mengekspor database.",
    "unboundDatabase": "Pendaftaran basis data dihapus",
    "userGoneRefresh": "Pengguna itu sudah pergi. Daftarnya telah disegarkan."
  },
  "dialogs": {
    "confirmDefault": "Mengonfirmasi",
    "cancelDefault": "Membatalkan",
    "severity": {
      "consequencesTitle": "Ini akan:",
      "typeToConfirm": "Ketik \"{{text}}\" untuk mengonfirmasi"
    }
  },
  "dns": {
    "templates": {
      "minimal": "Minimal — hanya puncak A",
      "web": "Web — puncak + www",
      "mail": "Surat — puncak + surat + MX + SPF",
      "full": "Penuh — web + email + ftp + SPF",
      "cdn": "CDN — apex + www + cdn (siap multi-tepi)"
    },
    "dnssecOk": "Kunci DNSSEC dihasilkan (tertulis — zona tidak ditandatangani / tidak ada di registrar)",
    "dnssecNotOk": "Kunci DNSSEC tidak dibuat (hanya catatan atau alat tidak tersedia — tidak ada keberhasilan palsu)",
    "dnssecFailed": "DNSSEC gagal",
    "blocked": "Diblokir (membutuhkan izin perubahan sistem)",
    "clusterDone": "Selesai ({{status}})",
    "clusterPartial": "Tidak sepenuhnya berhasil ({{status}}) — lihat detailnya di bawah",
    "clusterFailed": "Operasi klaster gagal",
    "validateFailed": "Validasi catatan gagal",
    "validateRequestFailed": "Permintaan validasi gagal",
    "lookupFailed": "Pencarian gagal",
    "statRecords": "Catatan",
    "statSelected": "Terpilih",
    "notInstalled": "Perangkat lunak DNS yang diperlukan tidak diinstal",
    "dsForRegistrar": "DS (untuk registrar; tidak diterbitkan secara otomatis):",
    "tabs": {
      "zones": "Zona",
      "records": "Catatan",
      "cluster": "Gugus",
      "dnssec": "DNSSEC",
      "tools": "Peralatan",
      "ddns": "DDNS",
      "about": "Tentang"
    },
    "recentWrite": "Hasil penulisan terbaru",
    "zonesTitle": "Zona ({{count}})",
    "zonesDesc": "Setelah dibuat, tulis/terapkan zona tersebut",
    "createZone": "+ Buat zona",
    "mailZonesMissing": "Domain email tidak memiliki zona DNS di sini: {{domains}}.",
    "createMailZone": "Buat zona email",
    "colZoneName": "Nama zona",
    "colServerIp": "IP server",
    "colTemplate": "Templat",
    "colStatus": "Status",
    "emptyZonesTitle": "Belum ada zona DNS",
    "emptyZonesDesc": "Gunakan \"Buat zona\" di toolbar daftar",
    "applyZoneTitle": "Tulis file zona dan daftar ke PowerDNS bernama.conf + temukan kembali (tulis ≠ gali jawaban)",
    "applyZone": "Tulis / lamar",
    "recordsFor": "Catatan — {{zone}}",
    "recordsNeedSelect": "Catatan (pilih zona terlebih dahulu)",
    "statusLabel": "Status",
    "addRecord": "+ Tambahkan catatan",
    "writeZoneFile": "Zona tulis & muat",
    "healthLoaded": "Sarat",
    "stateLoaded": "Sarat",
    "healthPublicNs": "NS publik",
    "statePublicNs": "NS publik",
    "publicNsHere": "→ tuan rumah ini",
    "requestLeTitle": "Permintaan Mari Enkripsi untuk {{zone}}",
    "requestZoneSsl": "Minta SSL untuk zona",
    "soaTitle": "SOA/TTL bawaan",
    "soaDesc": "Server nama SOA dan $TTL saat menulis file zona;",
    "soaBlockNs": "Server nama",
    "soaBlockTiming": "TTL & pengatur waktu",
    "recordsListTitle": "Catatan DNS ({{count}})",
    "recordsListDesc": "Setelah diedit, gunakan \"Tulis file zona\" di atas nama pembaruan file pada disk.",
    "soaNsLabel": "server nama SOA",
    "soaNsHint": "Biarkan kosong → default ns1.zone.",
    "defaultTtl": "TTL bawaan (detik)",
    "min1": "1 menit",
    "min5": "5 menit",
    "min10": "10 menit",
    "hour1": "1 jam",
    "day1": "1 hari",
    "customSeconds": "Detik khusus",
    "soaSaved": "SOA disimpan (bidang kontrol) — “Tulis file zona” untuk diterapkan",
    "soaSaveFailed": "Gagal menyimpan SOA",
    "soaSavedAndWritten": "Menyimpan dan menulis file zona",
    "soaWriteFailed": "Penulisan SOA gagal",
    "failed": "Gagal",
    "colType": "Jenis",
    "colName": "Nama",
    "colValue": "Nilai",
    "emptyRecords": "Tidak ada catatan",
    "noZoneSelectedTitle": "Tidak ada zona yang dipilih",
    "noZoneSelectedDesc": "Pilih zona pada tab Zona",
    "clusterTitle": "kluster DNS",
    "clusterDesc": "Setelah SCP file zona, muat ulang jarak jauh (rndc / bernama / bind9 / pdns)",
    "peerHost": "Tuan rumah sejawat",
    "peerHostHint": "Nama host atau IP NS sekunder (login kunci SSH)",
    "sshUser": "pengguna SSH",
    "sshUserHint": "Perlu menulis ke jalur target dan memuat ulang izin",
    "labelOptional": "Label (opsional)",
    "labelPlaceholder": "misalnya ns2 / hkg-tepi-dns",
    "opPerPeer": "Operasi ini (per rekan)",
    "registeredPeers": "Rekan terdaftar ({{count}})",
    "lastProbeHint": "pembaruan lastProbe setelah probe atau push",
    "noPeers": "Belum ada rekan yang mendaftar",
    "zoneDirMissing": "· direktori zona hilang",
    "generateKeys": "Hasilkan kunci; tidak ditayangkan secara otomatis",
    "selectZoneFirst": "Pilih zona terlebih dahulu",
    "lookupTitle": "Pencarian DNS (gali)",
    "lookupDesc": "Penyelesai publik kueri; verifikasi multi-A / CDN. Tidak menciptakan jawaban.",
    "lookupNamePlaceholder": "misalnya contoh.com atau www.contoh.com",
    "lookupType": "Jenis kueri",
    "lookupResults": "Hasil ({{count}})",
    "lookupNoAnswerFail": "Tidak ada jawaban / gagal",
    "digNotInstalled": "penggalian tidak diinstal",
    "digNotInstalledHint": "Tab ini memerlukan biner dig (bind9-dnsutils). Itu bukan NXDOMAIN. Instal bind9-dnsutils dari manajer paket host; halaman ini tidak menginstalnya secara otomatis.",
    "method": "Metode: {{method}}",
    "noAnswers": "Tidak ada jawaban",
    "noAnswersDesc": "NXDOMAIN, kosongkan RRset, atau atasi kegagalan",
    "lookupOkHint": "Hasil kueri langsung",
    "lookupFailHint": "Pencarian gagal atau kosong. Periksa nama, jenis, dan penyelesai hulu.",
    "validateTitle": "Validasi rekaman",
    "validateDesc": "Buat/edit validasi otomatis (bentrok CNAME, format A/AAAA, dll.).",
    "createZoneTitle": "Buat zona DNS",
    "createZoneDesc": "Hasilkan catatan dari templat",
    "createZoneNeedValid": "Masukkan nama zona dan alamat IPv4 yang valid",
    "zoneNameHint": "misalnya example.com (tanpa titik tambahan)",
    "invalidZone": "Nama zona tidak valid. Gunakan domain asli (misalnya example.com).",
    "invalidIpv4": "IPv4 tidak valid. Setiap oktet harus 0–255.",
    "serverIpv4": "Server IPv4",
    "serverIpv4Hint": "Alamat yang digunakan untuk catatan templat A",
    "thisHostIpv4": "Ini menghosting IPv4 publik",
    "serverIpv6Optional": "Server IPv6 (opsional)",
    "serverIpv6Hint": "Menulis AAAA ketika v6 publik ada; bisa dibiarkan kosong",
    "thisHostIpv6": "IPv6 publik host ini (opsional)",
    "soaNsCreateHint": "Biarkan kosong untuk ns1.zone-name",
    "defaultTtlLabel": "TTL bawaan",
    "defaultTtlHint": "Default untuk SOA dan catatan baru",
    "recordTemplate": "Templat rekaman",
    "editRecord": "Sunting catatan",
    "addRecordTitle": "Tambahkan catatan",
    "recordModalDesc": "Zona {{zone}} · tulis file zona setelah disimpan",
    "recordType": "Jenis catatan DNS",
    "nameHint": "@ = puncak; www = subdomain",
    "mxPlaceholder": "misalnya 10 mail.example.com.",
    "spfPlaceholder": "misalnya v=spf1 a mx ip4:… ip6:… ~semua",
    "needIpv6": "Masukkan alamat IPv6",
    "needIpv4": "Masukkan alamat IPv4",
    "valueHint": "IP, nama host, atau konten rekaman",
    "ipv6Address": "alamat IPv6",
    "ipv4Address": "alamat IPv4",
    "cacheTime": "Waktu cache",
    "deleteZoneTitle": "Hapus zona?",
    "deleteZoneDesc": "Juga menghapus registrasi catatan DNS-nya.",
    "deleteRecordTitle": "Hapus catatan?",
    "deleteRecordDesc": "Tulis file zona setelah penghapusan",
    "addPeer": "Tambahkan rekan",
    "probe": "Menguji",
    "pushZones": "Zona dorong",
    "reloadRemote": "Muat ulang jarak jauh",
    "generateDnssec": "Hasilkan kunci DNSSEC",
    "lookup": "Pencarian",
    "saveSoa": "Simpan SOA",
    "saveSoaAndWrite": "Simpan dan tulis file zona",
    "saveSoaSettings": "Simpan pengaturan SOA",
    "saveSoaAndWriteBtn": "Simpan dan tulis file zona",
    "goToZones": "Pergi ke zona",
    "refresh": "Menyegarkan",
    "pushReload": "Tekan + muat ulang",
    "pushOnly": "Hanya dorong (tanpa isi ulang)",
    "reloadOnly": "Hanya isi ulang jarak jauh",
    "probePeers": "Selidiki rekan-rekan",
    "clusterDefaultHint": "Default: tekan lalu muat ulang DNS pada rekan; membutuhkan hak perubahan sistem.",
    "notProbed": "Belum diselidiki",
    "probeHealthy": "Penyelidikan: {{status}}",
    "pushReloadShort": "Tekan+muat ulang",
    "dnssecCardDesc": "Hasilkan kunci/DS;",
    "currentZone": "Zona saat ini:",
    "generateAndSign": "Hasilkan kunci dan coba zona penandatanganan",
    "lookupName": "Nama",
    "fillCurrentZone": "Isi zona saat ini",
    "lookupToolHint": "Lebih menyukai penggalian tuan rumah;",
    "validateExtra": "Kesalahan memblokir penyimpanan; memperingatkan (misalnya apex CNAME) hanya memberi tahu.",
    "createAfterHint": "Setelah dibuat, tinjau tab Records dan tulis file zona ke disk.",
    "valueLabel": "Nilai",
    "ttlHint": "Waktu cache",
    "soaSavedControl": "SOA disimpan (bidang kontrol) — tulis file zona untuk diterapkan",
    "soaNs2Label": "NS Sekunder (opsional)",
    "soaNs2Hint": "FQDN server nama kedua, mis. ns2.example.com.",
    "soaHostmaster": "Tuan rumah SOA (RNAME)",
    "soaHostmasterHint": "Gunakan titik alih-alih @, mis. hostmaster.example.com.",
    "soaRefresh": "Segarkan (detik)",
    "soaRetry": "Coba lagi (detik)",
    "soaExpire": "Kedaluwarsa (detik)",
    "soaMinimum": "TTL cache minimum/negatif (detik)",
    "soaTimingHint": "Parameter waktu SOA dalam hitungan detik.",
    "healthTitle": "Kesehatan layanan DNS",
    "healthDesc": "Kebenaran host: unit / port 53 / file zona tertulis / jawaban penggalian lokal (tertulis ≠ dimuat ulang ≠",
    "healthPillOk": "DNS oke",
    "healthPillBad": "Masalah DNS",
    "healthService": "Melayani",
    "healthServiceDown": "turun",
    "healthListen": "Pelabuhan 53",
    "healthWritten": "File zona",
    "healthAnswering": "Jawaban lokal",
    "healthAnsweringYes": "Ya",
    "healthAnsweringNo": "tidak/menolak",
    "healthRefresh": "Selidiki ulang",
    "healthProbeLocal": "Periksa kesehatan lagi",
    "healthOpen53": "Buka firewall 53 (TCP+UDP)",
    "healthOpened53": "Diminta membuka 53 TCP+UDP",
    "healthOpen53Failed": "Gagal membuka 53",
    "healthPortClosed": "tidak mendengarkan",
    "healthPortOpenAlready": "53 tampak terbuka",
    "healthHint": "Jika penggalian ditolak, perbaiki PowerDNS, buka port 53, lalu tulis zona.",
    "stateService": "Melayani",
    "stateListen": "Mendengarkan",
    "stateWritten": "Tertulis",
    "stateAnswering": "Jawaban lokal",
    "lookupServer": "Server (@)",
    "lookupServerHint": "127.0.0.1 = autentikasi lokal; pengujian IP publik secara eksternal; kosong = pemecah sistem",
    "healthHealPdns": "Sembuhkan ikatan PowerDNS",
    "healNeedInstall": "PowerDNS belum diinstal — instal di tab Perangkat Lunak terlebih dahulu",
    "applyNeedService": "Layanan DNS tidak berjalan — mulai atau instal sebelum menerapkan",
    "goStartService": "Mulai layanan DNS",
    "startBindHint": "Jika start kembali ke stop, port 53 sering ditahan oleh systemd-resolved. Gunakan Heal bind di bawah, lalu mulai lagi.",
    "deleteZoneNeedName": "Hapus zona ini — Anda akan mengetikkan nama zona untuk mengonfirmasi",
    "healthHealPdnsHint": "Setel alamat lokal ke IP publik untuk menghindari bentrok dengan penyelesaian sistem pada 0",
    "healthHealPdnsOk": "PowerDNS terikat ke {{ip}} dan mulai mencoba",
    "healthHealPdnsFailed": "Pemulihan PowerDNS gagal",
    "startProbeFailed": "Tidak dapat memeriksa ulang kesehatan DNS setelah dimulai",
    "startNotListening": "PowerDNS mulai kembali, tetapi unit tidak menjawab pada port 53",
    "aboutTitle": "Pentingnya DNS",
    "aboutSub": "Zona pertama; catatan, cluster, dan DNSSEC memerlukan domain yang dipilih.",
    "aboutZonesTitle": "Zona dan ruang lingkup",
    "aboutZonesBody": "Pilih zona di bawah Zona, lalu kelola catatan, kluster, dan DNSSEC untuk domain tersebut.",
    "aboutHealthTitle": "Kesehatan layanan",
    "aboutHealthBody": "Gunakan Alat untuk menyelidiki PowerDNS, memulihkan ikatan, dan membuka port 53.",
    "aboutStackTitle": "Perangkat lunak",
    "aboutStackBody": "Periksa/perbarui paket PowerDNS di bawah Perangkat Lunak.",
    "aboutDdnsTitle": "DDNS",
    "aboutDdnsBody": "Tab DDNS memperbarui catatan bernama A/AAAA ketika alamat WAN host ini berubah. Itu tidak menggantikan zona CRUD. Tertulis tidak sama dengan kebenaran penyelesai publik.",
    "ddns": {
      "honesty": "Penulisan yang berhasil belum menjadi DNS publik. Cache penyelesai dan NS registrar masih berlaku. IP kosong atau pribadi tidak pernah dipublikasikan.",
      "needExecute": "Pembaruan penyedia memerlukan root dan YSK_EXECUTE=1. Deteksi masih berjalan.",
      "lastRun": "Lari terakhir",
      "nextRun": "Jalankan berikutnya",
      "wanRemembered": "Mengingat WAN IPv4",
      "updateNow": "Perbarui sekarang",
      "updateTitle": "Publikasikan alamat WAN yang terdeteksi?",
      "updateDesc": "Calls Cloudflare, nsupdate, or the local zone for each enabled record. Type UPDATE to confirm.",
      "updated": "Pembaruan DDNS selesai",
      "updateFailed": "Pembaruan DDNS gagal",
      "probe": "Selidiki WAN",
      "probed": "Pemeriksaan WAN selesai",
      "probeFailedUi": "Pemeriksaan WAN gagal",
      "forceHint": "Pembaruan sekarang diterbitkan ulang meskipun alamatnya tidak berubah. Probe tidak pernah memanggil penyedia.",
      "saved": "Disimpan",
      "saveFailed": "Tidak dapat menyimpan",
      "deleted": "Rekam dihapus",
      "emptyTitle": "Tidak ada catatan DDNS",
      "emptyDesc": "Tambahkan nama host di bawah. Cloudflare, RFC 2136, atau zona PowerDNS host ini (managedBy=ddns).",
      "colFqdn": "Nama host",
      "colProvider": "Penyedia",
      "colPublished": "Diterbitkan",
      "colEnabled": "Negara",
      "colFrom": "Dari",
      "colTo": "Ke",
      "colWhen": "Kapan",
      "colNote": "Catatan",
      "pauseRecord": "Berhenti sebentar",
      "resumeRecord": "Melanjutkan",
      "statusCard": "status WAN",
      "recordsCard": "Nama host",
      "addCard": "Tambahkan nama host",
      "settingsCard": "Pengaturan",
      "historyTitle": "Pembaruan terkini",
      "historyEmpty": "Belum ada riwayat DDNS",
      "paused": "Penjadwal dijeda",
      "pausedHint": "Pembaruan terjadwal tidak aktif. Probe dan Update sekarang masih berjalan.",
      "schedulerOn": "Pembaruan terjadwal",
      "schedulerOnHint": "Penjadwal dalam proses. Bukan crontab. Mati berarti tidak ada upsert otomatis.",
      "zone": "Daerah",
      "zoneHint": "Leave empty to use the last two labels of the hostname",
      "zoneSelectHint": "Zona lokal di host ini. Cloudflare dan RFC 2136 dapat menggunakan nama zona apa pun.",
      "noLocalZones": "Belum ada zona lokal. Buat satu di tab Zona terlebih dahulu jika Anda menggunakan PowerDNS Lokal.",
      "providerLocal": "Daya LokalDNS",
      "proxied": "Cloudflare diproksi",
      "proxiedHint": "Awan oranye. Tinggalkan untuk nama host VPN / WireGuard.",
      "proxiedWarnTitle": "Awan jingga cloudflare?",
      "proxiedWarnDesc": "Catatan yang diproksi menyembunyikan IP asal. Nama host VPN dan WireGuard harus tetap menjadi DNS saja. Ketik PROXY untuk mengonfirmasi.",
      "addRecord": "Tambahkan nama host",
      "interval": "Interval (detik)",
      "intervalHint": "60–86400. Penjadwal dalam proses; bukan crontab.",
      "cfToken": "Token API Cloudflare",
      "cfTokenHint": "Hanya tulis. Env CF_API_TOKEN digunakan jika disetel. Tidak pernah ditampilkan lagi.",
      "tokenConfigured": "Token Cloudflare disimpan. Biarkan kosong untuk menyimpannya.",
      "tokenMissing": "Tidak ada token Cloudflare yang disimpan (env CF_API_TOKEN masih berlaku).",
      "rfcServer": "Server RFC 2136",
      "rfcServerHint": "Server jarak jauh memerlukan file kunci TSIG di bawah direktori data. Loopback mungkin tidak ditandatangani. Rahasianya tidak pernah disampaikan pada argv.",
      "rfcKeyFile": "File kunci TSIG",
      "rfcKeyFileHint": "Relatif terhadap direktori data DDNS, atau jalur absolut di bawah direktori data.",
      "rfcKeyConfigured": "Jalur file kunci disimpan. Biarkan kosong untuk menyimpannya.",
      "primaryFqdn": "Nama host utama",
      "primaryFqdnHint": "Digunakan sebagai petunjuk titik akhir VPN. Tidak menulis ulang rekan-rekan yang ada.",
      "updateIdentity": "Ingat WAN IPv4",
      "updateIdentityHint": "Simpan IPv4 publik terakhir dalam status DDNS untuk host ini",
      "vpnHint": "VPN Endpoint dapat menggunakan nama host DDNS (tidak ditulis ulang secara otomatis).",
      "sslHint": "Mari Enkripsi HTTP-01 memerlukan nama host untuk diselesaikan di sini. Sertifikat tidak diterbitkan ulang pada perubahan IP.",
      "deleteTitle": "Hapus nama host DDNS?",
      "deleteDesc": "Ketik {{fqdn}} untuk mengonfirmasi. Baris lokal ManageBy=ddns tidak dihapus dari editor zona.",
      "err": {
        "requiresExecute": "Membutuhkan root dan YSK_EXECUTE=1 untuk dipublikasikan.",
        "missingToken": "Token Cloudflare API tidak ada.",
        "rfc2136NeedKey": "RFC 2136 jarak jauh memerlukan file kunci TSIG di bawah direktori data.",
        "rfc2136KeyMissing": "File kunci TSIG hilang atau berada di luar direktori data.",
        "noPublicIpv4": "Tidak ada IPv4 publik yang terdeteksi.",
        "noPublicIpv6": "Tidak ada IPv6 publik yang terdeteksi.",
        "notPublicIpv4": "IPv4 yang terdeteksi tidak bersifat publik.",
        "notPublicIpv6": "IPv6 yang terdeteksi tidak bersifat publik.",
        "probeFailed": "Pemeriksaan IP publik gagal.",
        "localNoZone": "Tidak ada zona DNS lokal untuk nama host ini.",
        "localNeedsDb": "Penyedia lokal memerlukan database bidang kontrol.",
        "managedByClash": "Nama itu dimiliki oleh fitur lain (bukan DDNS).",
        "unknownProvider": "Penyedia DDNS tidak dikenal.",
        "nsupdateFailed": "pembaruan gagal.",
        "updateFailed": "Pembaruan penyedia gagal.",
        "invalidFqdn": "Nama host tidak valid.",
        "invalidType": "Tipenya harus A atau AAAA.",
        "invalidProvider": "Penyedia tidak dikenal.",
        "notFound": "Catatan tidak ditemukan.",
        "confirmMismatch": "Konfirmasi harus sesuai dengan nama host.",
        "schedulerDisabled": "DDNS terjadwal dijeda.",
        "provider": "Penyedia mengembalikan kesalahan."
      }
    },
    "createMailZoneNow": "Zona email dibuat {{domain}}",
    "toolsFirewallTitle": "Dinding Api (UFW)",
    "toolsFirewallHint": "Izinkan atau tolak port 53. Tidak menjalankan atau menghentikan PowerDNS.",
    "toolsUnitTitle": "Unit PowerDNS",
    "toolsUnitHint": "Unit systemd pdns — mulai, henti, restart, reload.",
    "installConfirmTitle": "Pasang PowerDNS?",
    "installConfirmDesc": "Memasang pdns-server dan menulis konfigurasi terkelola. Perlu root dan YSK_EXECUTE=1.",
    "installConfirmConsequence": "Setelah pasang dan mulai, PowerDNS mengikat port 53.",
    "installPort53Busy": "Port 53 sudah dipakai. PowerDNS mungkin gagal bind sampai pendengar itu dihentikan atau diperbaiki.",
    "installPort53BusyConsequence": "Perbaiki bind atau hentikan pendengar lain sebelum mengharapkan jawaban di 53."
  },
  "docker": {
    "title": "Docker",
    "subtitle": "Pasang dan kendalikan mesin Docker, kontainer, citra, proyek Compose, dan disk di host ini.",
    "refresh": "Segarkan",
    "notInstalled": "Docker Engine belum terpasang. Pasang docker.io dan docker-compose-v2 dari halaman ini.",
    "protected": "Dilindungi",
    "pruneConfirm": "Ketik PRUNE untuk mengonfirmasi pembersihan volume atau sistem",
    "needEngineTitle": "Instal Mesin Docker terlebih dahulu",
    "stopEngineDesc": "Ini menghentikan mesin Docker dan semua container {{n}} di host ini.",
    "notInstalledValue": "Tidak dipasang",
    "nameHint": "Huruf, angka, garis bawah, titik, tanda hubung (maks 128)",
    "volPlaceholder": "data saya",
    "netPlaceholder": "jaringan saya",
    "runPorts": "Publikasikan port",
    "runPortsHint": "host:kontainer per baris, mis. 8080:80",
    "runEnv": "Lingkungan",
    "runEnvHint": "KEY=nilai per baris",
    "runRestart": "Mulai ulang kebijakan",
    "runNetwork": "Jaringan",
    "runVolumes": "Volume",
    "runVolumesHint": "volume: tujuan per baris",
    "runAdvancedHint": "Untuk tumpukan multi-layanan, gunakan node validator atau Tulis file yang sudah ada di host ini.",
    "daemonConfirmTitle": "Terapkan pengaturan daemon?",
    "daemonConfirmDesc": "Menulis daemon.json dan memulai ulang docker.service. Semua kontainer akan terganggu.",
    "settingsHint": "Hanya subset aman daemon.json. Menerapkan menulis berkas dan memulai ulang docker.service.",
    "cli": {
      "usage": "Pemakaian: ysk-server docker status|ps|images|volumes|networks|df|logs|inspect|exec|start|stop|restart|rm|pull|run|prune|engine|compose [--image IMG] [--name N] [--preset version|help|hostname] [--bin BIN] [--project P] [--execute] [--json]"
    },
    "tab": {
      "overview": "Ringkasan",
      "containers": "Kontainer",
      "images": "Citra",
      "compose": "Compose",
      "volumes": "Volume",
      "networks": "Jaringan",
      "prune": "Bersihkan",
      "settings": "Pengaturan",
      "about": "Tentang"
    },
    "col": {
      "engine": "Mesin",
      "containers": "Kontainer",
      "version": "Versi",
      "dataRoot": "Direktori data",
      "disk": "Cakram",
      "validators": "Tumpukan validator",
      "name": "Nama",
      "image": "Citra",
      "status": "Status",
      "ports": "Port",
      "managed": "Dikelola panel",
      "size": "Ukuran",
      "driver": "Pengemudi",
      "type": "Jenis",
      "reclaimable": "Dapat diklaim ulang"
    },
    "state": {
      "up": "Aktif",
      "down": "Berhenti",
      "running": "Berlari",
      "exited": "Keluar",
      "exitedCode": "Keluar ({{n}})",
      "restarting": "Memulai ulang",
      "restartingCount": "Memulai ulang · {{n}} kali",
      "paused": "Dijeda",
      "created": "Dibuat",
      "dead": "Mati",
      "removing": "Menghapus",
      "unknown": "Tidak dikenal"
    },
    "df": {
      "images": "Gambar",
      "containers": "Kontainer",
      "volumes": "Volume lokal",
      "builder": "Bangun cache",
      "other": "Lainnya"
    },
    "actions": {
      "start": "Mulai",
      "stop": "Henti",
      "restart": "Mulai ulang",
      "remove": "Hapus",
      "logs": "Log",
      "inspect": "Periksa",
      "exec": "Exec (versi)",
      "run": "Jalankan citra",
      "pull": "Ambil",
      "up": "Naikkan",
      "down": "Turunkan",
      "createVolume": "Buat volume",
      "createNetwork": "Buat jaringan",
      "pruneContainers": "Bersihkan kontainer",
      "pruneImages": "Bersihkan citra",
      "pruneVolumes": "Bersihkan volume",
      "pruneSystem": "Bersihkan sistem",
      "startEngine": "Mulai mesin",
      "stopEngine": "Henti mesin",
      "restartEngine": "Mulai ulang mesin",
      "applyDaemon": "Terapkan pengaturan mesin"
    },
    "empty": {
      "containers": "Tidak ada kontainer",
      "images": "Tidak ada citra",
      "compose": "Tidak ada proyek Compose",
      "composeDesc": "Proyek berasal dari node validator atau file Tulis yang sudah ada di host ini. Halaman ini tidak menerima unggahan YAML sembarangan.",
      "composeCta": "Buka node validator",
      "volumes": "Tidak ada volume",
      "networks": "Tidak ada jaringan"
    },
    "logs": {
      "empty": "Belum ada log",
      "follow": "Mengikuti"
    },
    "deleteRunningWarn": "Penampung ini masih berjalan atau dimulai ulang. Ini akan dihapus secara paksa.",
    "settings": {
      "logMaxSize": "Batas log kontainer",
      "liveRestore": "Pemulihan langsung (pertahankan kontainer jika daemon dimulai ulang)",
      "mirrors": "Cermin Registry (satu URL per baris)",
      "insecure": "Registry tanpa enkripsi (satu host per baris)"
    },
    "about": {
      "body": "Docker adalah layanan host kelas satu di YSK Server, setara Nginx. Dipasang lewat panel (Ubuntu docker.io + docker-compose-v2). Node validator berjalan sebagai proyek Compose yskval-*.",
      "honesty": "Perubahan host membutuhkan root dan YSK_EXECUTE=1. Default adalah dry-run. Halaman ini bukan Kubernetes.",
      "validators": "Buka node validator"
    },
    "alerts": {
      "daemonTitle": "Daemon Docker tidak berjalan",
      "daemonBody": "Docker terpasang tetapi docker.service tidak aktif. Tumpukan validator tidak dapat dimulai."
    },
    "errors": {
      "notInstalled": "Docker belum terpasang",
      "daemonDown": "Daemon Docker tidak aktif",
      "needCompose": "docker compose (plugin v2) wajib",
      "badImage": "Referensi citra tidak valid",
      "badName": "Nama tidak valid",
      "badPort": "Publikasi port tidak valid",
      "badEnv": "Variabel lingkungan tidak valid",
      "badVolume": "Kait volume tidak valid",
      "badNetwork": "Jaringan tidak valid",
      "protectedNetwork": "Tidak dapat menghapus jaringan Docker bawaan",
      "badRestart": "Kebijakan mulai ulang tidak valid",
      "badPrune": "Lingkup pembersihan tidak valid",
      "needPruneConfirm": "Membersihkan volume atau sistem memerlukan confirm=PRUNE",
      "badDaemon": "Pengaturan mesin tidak valid",
      "composeMissing": "Berkas Compose proyek ini tidak ditemukan",
      "logsFailed": "Tidak dapat membaca log kontainer",
      "mutateFailed": "Perintah Docker gagal",
      "engineFailed": "Tidak dapat mengendalikan docker.service",
      "badExec": "Exec terbatas pada biner dan prasetel yang diizinkan (tanpa shell, tanpa TTY)",
      "uninstallBusy": "Hentikan kontainer yang dikelola panel (termasuk tumpukan validator) sebelum mencopot Docker",
      "badCommand": "Perintah atau titik masuk tidak valid",
      "portBusy": "Port host {{bind}}:{{port}} sudah digunakan",
      "nameInUse": "Kontainer bernama {{name}} sudah ada. Hapus atau pilih nama lain.",
      "unpublished": "Kontainer tidak terhubung ke jaringan atau memublikasikan port. Tidak menganggap ini sebagai permulaan."
    },
    "notes": {
      "dryMutate": "Hanya dry-run. Tambahkan --execute dan YSK_EXECUTE=1 untuk mengubah host.",
      "dryPrune": "Pratinjau pembersihan (belum diterapkan).",
      "dryEngine": "Kontrol mesin adalah dry-run.",
      "dryDaemon": "Akan menulis /etc/docker/daemon.json dan memulai ulang docker.service.",
      "daemonWrote": "daemon.json ditulis",
      "start": "Kontainer dimulai",
      "stop": "Kontainer dihentikan",
      "restart": "Kontainer dimulai ulang",
      "remove": "Kontainer dihapus",
      "ran": "Kontainer dimulai dari citra",
      "leftoverRemoved": "Menghapus wadah sisa {{name}} setelah kegagalan pengikatan",
      "pulled": "Citra diambil",
      "exec": "Exec yang diizinkan dijalankan",
      "imageRemoved": "Citra dihapus",
      "volumeCreated": "Volume dibuat",
      "volumeRemoved": "Volume dihapus",
      "networkCreated": "Jaringan dibuat",
      "networkRemoved": "Jaringan dihapus",
      "pruned": "Pembersihan selesai",
      "compose": {
        "up": "Proyek Compose dimulai",
        "down": "Proyek Compose dihentikan",
        "restart": "Proyek Compose dimulai ulang",
        "rm": "Proyek penulisan dihapus"
      },
      "engine": {
        "start": "docker.service dimulai",
        "stop": "docker.service dihentikan",
        "restart": "docker.service dimulai ulang"
      }
    },
    "ui": {
      "whatYouGet": "Apa yang dilakukan halaman ini",
      "whatYouGetLead": "Pasang Docker Engine dulu. Setelah itu Anda dapat menjalankan satu kontainer, menarik citra, dan melihat tumpukan Compose validator yang sudah ada di hos ini.",
      "capEngine": "Mesin",
      "capEngineDesc": "Pasang docker.io dan docker-compose-v2 sekali klik. Mulai dan hentikan docker.service di sini.",
      "capWork": "Kontainer dan citra",
      "capWorkDesc": "Pilih citra umum, tarik, jalankan, lalu baca log atau periksa kontainer.",
      "capStacks": "Tumpukan validator",
      "capStacksDesc": "Tumpukan multi-layanan adalah proyek Compose validator (yskval-*). Halaman ini tidak menerima unggahan YAML.",
      "cardEngine": "Mesin",
      "cardDisk": "Cakram",
      "cardWork": "Di hos ini",
      "compose": "Compose",
      "cgroup": "grup c",
      "used": "Terpakai",
      "free": "Kosong",
      "running": "Berjalan",
      "images": "Citra",
      "volumes": "Volume",
      "networks": "Jaringan",
      "goImages": "Citra",
      "goValidators": "Node validator",
      "imagePickHint": "Pilih citra umum. Gunakan Lain hanya jika perlu rujukan berbeda.",
      "imageCustom": "Lain",
      "driver": "Penggerak",
      "driverLocalOnly": "Panel ini hanya membuat volume local.",
      "netDefaultDriver": "Jaringan baru memakai penggerak bridge bawaan Docker.",
      "pruneWhat": "Apa yang dihapus",
      "pruneAck": "Saya mengerti data yang tidak terpakai akan dihapus dan tidak dapat dipulihkan",
      "pruneAckDesc": "Pembersihan volume atau sistem tidak dapat dibatalkan. Kontainer berhenti dan citra tidak terpakai pada cakupan yang dipilih dihapus.",
      "pruneNow": "Bersihkan sekarang",
      "useMirrors": "Gunakan cermin registri",
      "useInsecure": "Izinkan registri tanpa enkripsi",
      "publishPorts": "Terbitkan porta ke hos",
      "attachVolume": "Lampirkan volume",
      "setEnv": "Atur variabel lingkungan",
      "defaultNet": "Bawaan",
      "mountPath": "Jalur pasang",
      "restartNo": "Tidak pernah",
      "restartUnless": "Kecuali dihentikan",
      "restartAlways": "Selalu",
      "restartOnFail": "Jika gagal",
      "needAck": "Konfirmasi sebelum membersihkan",
      "scopeContainers": "Kontainer berhenti",
      "scopeImages": "Citra tidak terpakai",
      "scopeVolumes": "Volume tidak terpakai",
      "scopeBuilder": "Tembolok bangun",
      "scopeSystem": "Semua yang tidak terpakai",
      "noVolumesYet": "Belum ada volume — buat dulu di tab Volume.",
      "command": "Memerintah",
      "commandHint": "Opsional. Token setelah gambar. Biarkan kosong untuk menggunakan gambar CMD.",
      "entrypoint": "Titik masuk",
      "entrypointHint": "Biner tunggal opsional. Biarkan kosong untuk menggunakan gambar ENTRYPOINT.",
      "portMap": "tuan rumah: wadah",
      "portOccupied": "Port host ini sudah digunakan",
      "validatorImage": "Dikelola oleh node validator",
      "newVolume": "Volume bernama baru",
      "loopbackUrl": "URL pengujian lokal",
      "nginxProxy": "Buat proksi terbalik Nginx",
      "intentPorts": "Diminta (tidak dipublikasikan)",
      "customPort": "Porta hos lain",
      "customPortHost": "Porta hos",
      "customPortContainer": "Porta kontainer",
      "pctUsed": "{{n}}% terpakai",
      "customPortHint": "1–65535. Contoh: 9090 → 80.",
      "pickBridge": "Jaringan jembatan"
    },
    "deleteTitle": "Hapus {{id}}",
    "deleteDesc": "Hal ini tidak dapat dibatalkan.",
    "deleteC1": "Sumber daya dihapus dari host ini.",
    "deleteComposeVal": "Ini adalah tumpukan validator — instance validator juga dihapus.",
    "pruneTitle": "Pangkas sumber daya Docker",
    "pruneDesc": "Ketik PRUNE untuk mengonfirmasi. Data yang tidak digunakan tidak dapat dipulihkan.",
    "pruneC1": "Sumber daya yang tidak digunakan dalam cakupan yang dipilih akan dihapus.",
    "pruneC2": "Volume dan pemangkasan sistem secara permanen menghapus volume data yang tidak digunakan.",
    "pruneC3": "Kontainer yang dihentikan atau gambar yang tidak digunakan dalam cakupan ini akan dihapus."
  },
  "email": {
    "title": "E-mail",
    "subtitle": "Domain, DNS, kotak surat, dan relay",
    "externalTodos": "Tugas yang harus Anda tangani di luar server",
    "ptr": "Reverse DNS (PTR) harus diatur oleh VPS/penyedia cloud Anda",
    "port25": "Port Keluar 25 mungkin diblokir; minta buka blokir atau gunakan relay",
    "create": "Buat domain email",
    "createHint": "Setelah membuat, tinjau DNS, kotak surat, dan pemeriksaan kesehatan",
    "domains": "Domain terdaftar",
    "empty": "Belum ada domain email",
    "emptyHint": "Buat domain untuk mendapatkan data DNS dan tugas eksternal",
    "searchPlaceholder": "Cari domain…",
    "domain": "Domain",
    "serverIp": "IP server",
    "notFound": "Domain email tidak ditemukan",
    "backToList": "Kembali ke domain email",
    "softwareNeeded": "Perangkat lunak email yang diperlukan tidak diinstal",
    "applyApplied": "Terapan",
    "applyWritten": "Tertulis",
    "applyFailed": "Gagal",
    "applyDraft": "Draf",
    "queueMsgCount": "Antrian {{count}} pesan",
    "queueLoadFailed": "Gagal memuat antrean",
    "queueFlushRequested": "Antrian diminta",
    "queueFlushFailed": "Pembilasan gagal",
    "queueDeleted": "Dihapus {{id}}",
    "queueDeleteFailed": "Penghapusan gagal",
    "pillDomains": "{{count}} domain",
    "pillNoDomain": "Tidak ada domain",
    "statDomains": "Domain",
    "statHealthy80": "Kesehatan ≥80",
    "statApplied": "Terapan",
    "statDraft": "Draf",
    "tabDomains": "Domain",
    "tabWebmail": "email web",
    "tabQueue": "Antre",
    "tabStack": "Perangkat lunak",
    "tabOps": "Peran",
    "webmailGlobalDesc": "Satu aplikasi email web untuk seluruh panel — setiap domain email masuk melalui URL yang sama.",
    "webmailGlobalHint": "Membutuhkan izin perubahan sistem (YSK_EXECUTE) dan jaringan keluar untuk mengunduh Roundcube/SnappyMail. Tidak ada setengah proyek yang dibuat tanpa EXECUTE.",
    "webmailMovedHint": "Webmail dikonfigurasi secara global (bukan per domain).",
    "openGlobalWebmailSettings": "Buka pengaturan email web",
    "domainsTitle": "Domain ({{filtered}}/{{total}})",
    "domainsListDesc": "Domain email terdaftar di host ini",
    "emptyFilterHint": "Tidak ada domain yang cocok dengan pencarian",
    "emptyCreateHint": "Gunakan Buat di toolbar untuk mendaftarkan domain;",
    "queueLocalTitle": "Antrian surat",
    "needExecute": "Membutuhkan YSK_EXECUTE",
    "viewQueue": "Lihat antrian",
    "flushQueue": "Antrian siram",
    "flushQueueEmpty": "Antrian kosong",
    "flushQueueNeedExecute": "Membilas antrian memerlukan YSK_EXECUTE (izin eksekusi host)",
    "queueHint": "Antrean Postfix lokal. Melihat adalah probe baca; mengosongkan perlu YSK_EXECUTE.",
    "deleteThisId": "Hapus tanda pengenal ini",
    "queueEmpty": "Tidak ada surat yang ditangguhkan",
    "queueEmptyHint": "Tidak ada pesan yang ditangguhkan",
    "mtaTitle": "perangkat lunak MTA",
    "mtaBody": "Probe dan instalasi sekali klik didorong oleh spanduk di atas",
    "mtaSmtp": "SMTP keluar / masuk",
    "mtaImap": "Kotak surat IMAP/POP3",
    "mtaDkim": "Penandatanganan DKIM keluar",
    "mtaMissingHint": "Ketika perangkat lunak hilang, spanduk menunjukkan instal/probe ulang",
    "pathTitle": "Jalur penyiapan domain",
    "path1": "Daftarkan domain (kanan atas)",
    "path2": "Buka detail domain → pengaturan email sekali klik",
    "path3": "Tambahkan MX / SPF / DKIM / DMARC pada halaman DNS atau checklist eksternal",
    "path4": "SSL untuk nama host email/webmail",
    "viewDomainList": "Lihat daftar domain",
    "opsPanelTitle": "Panel vs eksternal",
    "opsThisPage": "Halaman ini: registri domain, tampilan antrian, pemeriksaan perangkat lunak",
    "opsDetail": "Detail domain: bootstrap, kotak surat, alias, relay, webmail",
    "opsHost": "Penyedia host: PTR, kebijakan keluar Port 25",
    "opsRegistrar": "Panitera: publikasikan MX / SPF / DKIM / DMARC",
    "statusTitle": "Status",
    "statusDraft": "draf: hanya panel",
    "deliverabilityChecks": "Cek",
    "statusWritten": "tertulis: file manajemen ditulis, mungkin tidak ditayangkan",
    "statusApplied": "diterapkan: berhasil diterapkan sebelumnya (masih periksa layanan aktif)",
    "statusReputation": "Reputasi kotak masuk tidak akan pernah 100% otomatis",
    "createModalDesc": "",
    "registerDomain": "Membuat",
    "domainApexHint": "Tidak ada surat. awalan",
    "serverIpv4Hint": "MX/A/SPF",
    "serverIpv4Ph": "IPv4 publik",
    "serverIpv6": "IPv6 (opsional)",
    "serverIpv6Hint": "AAAA/SPF ip6",
    "serverIpv6Ph": "Opsional",
    "registerNote": "",
    "flushConfirmTitle": "Hapus seluruh antrean email?",
    "flushConfirmDesc": "Pesan dalam antrian akan dihapus. Tidak dapat dibatalkan.",
    "flushConfirm": "Menyiram",
    "tabMailbox": "Kotak surat",
    "tabAliases": "Alias ​​/ maju",
    "tabHealth": "Kesehatan",
    "tabRelay": "Menyampaikan",
    "tabSieve": "Saring / SSO",
    "tabAdvanced": "Canggih",
    "pillApplied": "Terapan",
    "pillManaged": "File yang dikelola",
    "pillDraft": "Draf",
    "statHealth": "Kesehatan",
    "statApply": "Menerapkan",
    "statDomain": "Domain",
    "pausedFlag": "Dijeda (bendera)",
    "normal": "Normal",
    "statMailboxes": "Kotak surat",
    "statDnsRecords": "Catatan DNS",
    "dnsTodosTitle": "DNS",
    "copyAllRecords": "Salin semua catatan",
    "openDnsPage": "Buka halaman DNS",
    "healthScore": "Skor kesehatan",
    "healthUnchecked": "Belum diperiksa",
    "healthUncheckedHint": "DNS / PTR / port 25 belum diperiksa.",
    "healthPartialScore": "Sebagian {{n}}/100 (khusus DNS)",
    "healthPartialHint": "Hanya daftar periksa DNS — aktif dan daftar hitam tidak diperiksa.",
    "deliverabilityScore": "Paket keterkiriman",
    "opendkimNoReload": "OpenDKIM tidak mendukung reload — gunakan restart setelah mengubah kunci atau tabel.",
    "opendkimNoReloadTitle": "systemctl reload opendkim tidak didukung pada tumpukan ini",
    "healthChecklist": "Daftar periksa {{score}}/100",
    "healthChecklistHint": "Skor daftar — DNS / PTR / port 25 belum diuji",
    "healthLiveHint": "Skor uji langsung",
    "suggestedRecords": "Catatan yang disarankan",
    "externalTodosCount": "Tugas eksternal",
    "colType": "Jenis",
    "colName": "Nama",
    "colValue": "Nilai",
    "colNote": "Catatan",
    "copy": "Menyalin",
    "noDnsRecords": "Tidak ada catatan DNS",
    "externalTodosHeading": "Tugas eksternal (panel tidak dapat melakukan ini)",
    "externalTodosBody": "PTR, port 25, dan registrar DNS ada di tangan Anda.",
    "copyExternalTodos": "Salin daftar tugas eksternal",
    "todoDone": "Selesai",
    "todoPending": "Semua yang harus dilakukan",
    "refreshDnsHint": "Klik Refresh untuk memuat saran DNS",
    "mailboxListTitle": "Kotak surat ({{count}})",
    "createMailbox": "+ Buat kotak surat",
    "writeDovecot": "Tulis kata sandi Dovecot DB",
    "noMailboxes": "Belum ada kotak pesan — klik Buat kotak pesan",
    "mailboxOpsResult": "Hasil operasi kotak surat",
    "aliasesTitle": "Alias ​​/ maju / catch-all",
    "aliasType": "Jenis",
    "aliasTypeAria": "Tipe alias",
    "typeForward": "Maju",
    "typeAlias": "Alias",
    "localPart": "Bagian lokal",
    "localPartHint": "misalnya penjualan",
    "targetMailbox": "Kotak surat sasaran",
    "targetMailboxHint": "Dipisahkan koma untuk beberapa",
    "addAlias": "Tambahkan alias",
    "noAliases": "Belum ada alias/penerusan",
    "aliasResult": "Hasil alias",
    "autoreplyTitle": "Balasan otomatis / tangguhkan",
    "autoreplyDesc": "Balasan otomatis",
    "autoreplyBodyHint": "Opsional berlaku untuk sistem",
    "enableAutoreply": "Aktifkan balasan otomatis",
    "enableAutoreplyDesc": "liburan.saringan; setelah sistem menerapkan mount .dovecot.sieve",
    "applyToSystem": "Berlaku untuk sistem (Postfix / Dovecot)",
    "applyToSystemDesc": "Membutuhkan YSK_EXECUTE=1 + akar; kegagalan tidak dipalsukan sebagai kesuksesan",
    "subject": "Subjek",
    "body": "Tubuh",
    "saveApplyAutoreply": "Simpan dan terapkan balasan otomatis",
    "saveAutoreplyWritten": "Simpan balasan otomatis (tertulis)",
    "suspendApply": "Tangguhkan dan terapkan REJECT",
    "suspendWritten": "Tangguhkan domain (tertulis)",
    "resumeApply": "Lanjutkan dan perbarui peta",
    "resumeWritten": "Lanjutkan domain (tertulis)",
    "flagsResult": "Bendera / sistem menerapkan hasil",
    "defaultAutoreplySubject": "Balasan otomatis",
    "defaultAutoreplyBody": "Kami telah menerima email Anda dan akan membalasnya nanti.",
    "healthLiveTitle": "Kesehatan pengiriman (pemeriksaan DNS/port langsung)",
    "healthLiveDesc": "Cek langsung",
    "serverIpLabel": "IP server",
    "liveCheck": "Cek langsung",
    "liveOk": "Sebagian besar oke",
    "liveBad": "Masalah ditemukan",
    "notTested": "Tidak diuji",
    "blacklist": "Daftar Hitam",
    "healthExternalNote": "PTR dan port 25 harus diatur di penyedia host.",
    "runLiveCheck": "Jalankan pemeriksaan langsung",
    "dnsblThisIp": "DNSBL (IP ini)",
    "multiIpRbl": "RBL multi-IP",
    "warmupAdvice": "Tip pemanasan",
    "probeMatrix": "Hasil penyelidikan",
    "colItem": "Barang",
    "colStatus": "Status",
    "pass": "Lulus",
    "fail": "Gagal",
    "unknown": "Tidak dikenal",
    "colDetail": "Detil",
    "outboundPort25": "Pelabuhan keluar 25",
    "noProbeResults": "Belum ada hasil penyelidikan",
    "noLiveYet": "Cek langsung belum berjalan",
    "noLiveYetHint": "Jalankan pemeriksaan langsung terlebih dahulu",
    "mailSslTitle": "Sertifikat & TLS",
    "mailSslHint": "Masalah sebenarnya ada di halaman SSL; lompat ke nama host mail / webmail / domain di sini",
    "openSslPage": "Buka halaman SSL",
    "webmailSsoSkeleton": "Kerangka SSO email web",
    "writeRoundcubeSso": "Tulis kerangka SSO Roundcube",
    "ssoSkeletonSymlink": "Kerangka SSO + symlink sistem",
    "rateLimitTitle": "Tarif keluar / antispam",
    "rateLimitDesc": "Menulis landasan Postfix dan pengaturan Rspamd (hanya diterapkan dengan YSK_EXECUTE + root)",
    "hourlyMsgCap": "Batas pesan per jam",
    "hourlyMsgCapHint": "Global menggunakan jumlah minimum di seluruh domain",
    "enableAntispam": "Aktifkan tanda antispam (Rspamd multimap)",
    "enableAntispamDesc": "Tidak aktif menandakan antispam domain tidak aktif",
    "writeControlOnly": "Tulis panel saja",
    "applyToSystemBtn": "Terapkan ke sistem",
    "dnsblResult": "Hasil DNSBL",
    "warmupResult": "Hasil pemanasan",
    "policyResult": "Hasil kebijakan",
    "relayTitle": "Relai keluar SMTP",
    "relayHost": "Relai tuan rumah",
    "applyRelaySystem": "Berlaku untuk sistem Postfix",
    "applyRelaySystemDesc": "Tulis sistem relai Postfix",
    "saveApplyRelay": "Simpan dan terapkan ke sistem",
    "saveOnly": "Simpan pengaturan saja",
    "relayResult": "Hasil estafet",
    "webmailSsoTitle": "Sistem masuk tunggal email web",
    "webmailSsoDesc": "Menerbitkan token satu kali;",
    "mailboxPasswordOptional": "Kata sandi kotak surat (opsional)",
    "mailboxPasswordHint": "Opsional",
    "mailboxPasswordPh": "Dengan kata sandi, token dapat login otomatis ke Roundcube",
    "ssoTokenHint": "Keluarkan token login berumur pendek",
    "issueSsoToken": "Terbitkan token SSO",
    "sieveTitle": "Filter saringan",
    "sieveDesc": "Filter",
    "sieveTemplateHint": "Templat filter bawaan",
    "writeDefaultSieve": "Tulis Saringan default",
    "listWrittenFiles": "Daftar file tertulis",
    "result": "Hasil",
    "domainSslTitle": "SSL untuk domain ini",
    "domainSslDesc": "SSL host email",
    "requestCert": "Minta sertifikat untuk {{domain}}",
    "clientAutoTitle": "Konfigurasi otomatis klien",
    "clientAutoDesc": "Konfigurasi otomatis klien",
    "clientAutoHint": "Hasilkan penemuan otomatis/konfigurasi otomatis",
    "generateCopyXml": "Hasilkan dan salin konfigurasi XML",
    "queueTitle": "Antrian surat",
    "queueDesc": "Antrian lokal",
    "publicAutoconfig": "Konfigurasi publik",
    "bootstrapTitle": "Pengaturan email sekali klik",
    "bootstrapDesc": "Pengaturan sekali klik",
    "adminPassword": "Kata sandi Admin",
    "adminPasswordHint": "Kata sandi kotak surat Admin",
    "adminPasswordPh": "Setidaknya 8 karakter",
    "adminPasswordRequired": "Tetapkan kata sandi admin minimal 8 karakter",
    "bootstrapBtn": "Pengaturan email sekali klik",
    "webmailInstallDesc": "Unduh / terapkan Roundcube",
    "webmailHostname": "Nama host email web",
    "webmailHostnameHint": "vhost server_name, mis. webmail.example.com",
    "installWebmail": "Instal / terapkan Webmail",
    "bootstrapResult": "Hasil Bootstrap/Webmail",
    "createMailboxTitle": "Buat kotak surat",
    "createMailboxDesc": "Alamat lengkapnya adalah {{local}}@{{domain}}",
    "createMailboxBtn": "Buat kotak surat",
    "localPartLabel": "Bagian lokal",
    "localPartFullHint": "Alamat lengkapnya adalah {{local}}@{{domain}}",
    "passwordOptionalHint8": "Opsional; hash ditulis hanya jika minimal 8 karakter",
    "live": {
      "noMx": "tidak ada MX",
      "mxLookupFailed": "Pencarian MX gagal",
      "noSpf": "tanpa SPF TXT",
      "spfLookupFailed": "Pencarian SPF gagal",
      "noDkim": "tidak ada DKIM TXT",
      "dkimLookupFailed": "Pencarian DKIM gagal",
      "noDmarc": "tidak ada DMARC",
      "dmarcLookupFailed": "Pencarian DMARC gagal",
      "noPtr": "tidak ada PTR",
      "ptrLookupFailed": "Pencarian PTR gagal",
      "port25Open": "TCP 25 keluar tampak terbuka (selidiki ke gmail-smtp-in.l.google.com)",
      "port25Blocked": "Pemeriksaan TCP 25 keluar gagal — mungkin diblokir; minta buka blokir atau gunakan relai",
      "dnsblListed": "TERDAFTAR: {{list}}",
      "dnsblClean": "bersihkan di {{list}}"
    },
    "deliv": {
      "mx": "catatan MX",
      "mxFix": "Tambahkan MX di penyedia DNS yang menunjuk ke host email",
      "spf": "SPF TXT",
      "spfFix": "Publikasikan v=spf1 termasuk IP ini",
      "dkim": "DKIM TXT",
      "dkimFix": "Publikasikan selector._domainkey TXT dari panel",
      "dmarc": "DMARC TXT",
      "dmarcFix": "Publikasikan kebijakan _dmarc (mulai dengan p=none)",
      "ptr": "DNS Terbalik (PTR)",
      "ptrFix": "Atur PTR di VPS/konsol cloud agar sesuai dengan nama host email — panel tidak dapat mengaturnya",
      "port25": "Pelabuhan Keluar 25",
      "port25Fix": "Minta pembukaan kunci Port 25 dari hoster, atau konfigurasikan relai SMTP (pengiriman 587)",
      "dnsbl": "Reputasi DNSBL",
      "dnsblFix": "Hapus daftar di layanan terdaftar; hentikan pengiriman sampai bersih",
      "relay": "Relai SMTP (ketika Port 25 diblokir)",
      "relayOptional": "Probe port 25 terbuka — relai opsional",
      "relayPresent": "Konfigurasi relai ada di bawah dataDir (penerapan mungkin masih perlu EXECUTE)",
      "relayMissing": "Tidak ada relai yang dikonfigurasi — diperlukan jika Port 25 tetap diblokir",
      "relayFix": "Panel Email → Relay, atau ysk-server hosting email-bootstrap dengan relay",
      "warmup": "Rencana pemanasan",
      "warmupDetail": "{{phases}} fase · hari ke-1 maks {{day1}} pesan",
      "warmupFix": "Ikuti batas fase; jangan meledakkan daftar dingin dari IP baru",
      "honesty1": "Panel tidak pernah menjamin pengiriman kotak masuk ke seluruh dunia (penyaringan Gmail/Outlook bersifat eksternal).",
      "honesty2": "PTR dan Port 25 dimiliki oleh VPS/penyedia jaringan — bukan oleh bidang kontrol YSK.",
      "honesty3": "DNS MX/SPF/DKIM/DMARC harus dipublikasikan di penyedia DNS resmi.",
      "honestyPortBlocked": "Port 25 tampak diblokir — gunakan relai atau minta buka kunci sebelum volume tinggi.",
      "honestyPortOk": "Pemeriksaan port 25 berhasil — masih memantau pantulan dan DNSBL."
    },
    "catchall": "Menangkap semuanya",
    "webmailRoundcube": "email web",
    "warmup": {
      "p1g1": "Kirim hanya kepada penerima yang transaksional/terkenal baik",
      "p1g2": "Pantau pantulan; menjaga tingkat pengaduan mendekati nol",
      "p1g3": "Pastikan SPF/DKIM/DMARC/PTR aktif sebelum volume",
      "p2g1": "Perluas perlahan ke kontak yang aktif saja",
      "p2g2": "Periksa DNSBL setiap hari; jeda jika terdaftar",
      "p2g3": "Lebih memilih pengiriman 587 daripada pengiriman massal pada port 25 jika dibatasi",
      "p3g1": "Gandakan volume hanya jika metrik tetap bersih",
      "p3g2": "Daftar segmen; segera hilangkan pantulan keras",
      "p4g1": "Dekati volume normal jika tidak ada blok",
      "p4g2": "Tetap pantau rua DMARC",
      "c1": "PTR cocok dengan HELO/EHLO (nama host email)",
      "c2": "SPF + DKIM + DMARC dipublikasikan dan diselaraskan",
      "c3": "DNSBL bersih di Spamhaus / SpamCop / Barracuda",
      "c4": "Port keluar 25 terbuka atau relai dikonfigurasi",
      "c5": "Tidak ada rentang IP “email massal” yang dibeli",
      "c6": "Usia/riwayat domain dipertimbangkan (domain baru = peningkatan yang lebih lambat)",
      "noteNewIp": "Perlakukan IP ini sebagai IP baru — mulai dari batas fase hari ke-1–3",
      "noteOldIp": "IP yang ada masih mendapatkan keuntungan dari peningkatan bertahap setelah perubahan konfigurasi",
      "noteProcess": "Pemanasan adalah proses operator; YSK melacak tip + DNSBL, bukan memasarkan volume ESP"
    },
    "health": {
      "dnsUnconfirmed": "Catatan DNS (MX/SPF/DKIM) belum dikonfirmasi",
      "dmarcMissing": "DMARC tidak ada — sangat disarankan",
      "dmarcUnpublished": "DMARC dibuat di panel tetapi belum dipublikasikan di DNS publik",
      "ptrBad": "PTR membalikkan DNS hilang atau salah — permintaan di penyedia VPS",
      "port25Blocked": "Port Keluar 25 tampak diblokir — minta buka blokir atau gunakan relai SMTP",
      "port25Unknown": "Status port 25 tidak diketahui — jalankan pemeriksaan konektivitas"
    },
    "stack": {
      "tlsNote": "Sertifikat TLS melalui Let's Encrypt untuk SMTP/IMAP",
      "externalNote": "DNS/PTR/Port25 eksternal masih diperlukan agar dapat dikirim"
    },
    "test": {
      "defaultSubject": "Tes email Server YSK",
      "needMta": "Memerlukan pemasangan MTA (Postfix) lokal dan konfigurasi Port 25/relai",
      "checkSpam": "Periksa folder spam penerima dan log email server setelah pengiriman",
      "hintDeferred": "Jika ditangguhkan: periksa kredensial blok atau relai Port 25",
      "hintSpam": "Jika diterima tetapi spam: tingkatkan SPF/DKIM/DMARC/PTR dan pemanasan",
      "hintLogs": "Periksa /var/log/mail.log atau journalctl -u postfix"
    },
    "leMailHost": "Minta sertifikat · {{host}}",
    "leWebmailHost": "Minta sertifikat · {{host}} (webmail)",
    "leApexHost": "Minta sertifikat · {{host}} (puncak)",
    "applyMailTls": "Terapkan jalur TLS email",
    "applyMailTlsHint": "Sertifikat harus ada; menulis jalur layanan email dan memuat ulang.",
    "probeMx": "MX",
    "probeSpf": "SPF",
    "probeDkim": "DKIM",
    "probeDmarc": "DMARC",
    "probePtr": "PTR",
    "probeDnsbl": "DNSBL",
    "dnsAuthRepairTitle": "Otentikasi DNS perlu diperbaiki",
    "dnsAuthRepairHint": "Salin catatan dari tab DNS dan publikasikan.",
    "fixHintSpf": "SPF gagal: publikasikan v=spf1 TXT di @.",
    "fixHintDkim": "DKIM gagal: publikasikan selector._domainkey TXT.",
    "fixHintDmarc": "DMARC gagal: publikasikan _dmarc TXT.",
    "fixHintMx": "MX gagal: arahkan MX ke email.<domain>.",
    "mailTls": {
      "needRootExecute": "Menerapkan TLS email memerlukan root dan YSK_EXECUTE.",
      "certMissing": "Tidak ada file sertifikat untuk {{host}} ({{path}}).",
      "getCertFirst": "Terbitkan sertifikat Let's Encrypt untuk {{host}} di halaman SSL terlebih dahulu.",
      "certFound": "Ditemukan sertifikat untuk {{host}}.",
      "postconfFailed": "postconf gagal: {{detail}}",
      "postfixPathsSet": "Jalur sertifikat TLS postfix ditetapkan.",
      "postfixReloaded": "Postfix dimuat ulang.",
      "postfixReloadFailed": "Gagal memuat ulang postfix: {{detail}}",
      "dovecotApplied": "Menulis cuplikan TLS Dovecot dan mencoba memuat ulang.",
      "dovecotSkipped": "Melewati Dovecot (tidak diinstal atau doveconf tidak tersedia).",
      "dovecotSslOmitted": "Sertifikat surat hilang; menulis ssl=no agar Dovecot dapat memulai tanpa file LE."
    },
    "policyApplySystemHint": "Centang “apply to system” untuk menulis peta Postfix/Rspamd dan memuat ulang;",
    "rateLimitAppliedNote": "Tarif keluar per jam dan tanda antispam diterapkan (saat penerapan sistem aktif).",
    "bootstrapHonesty": "Satu klik menulis file panel; berlaku untuk hak kebutuhan sistem. DNS/PTR/port 25 bersifat manual.",
    "bootstrapAfterSteps": "Berikutnya: ① ​​mempublikasikan DNS (MX/SPF/DKIM/DMARC) ② menerbitkan SSL email ③ Menerapkan jalur TLS email.",
    "bootstrapThenSsl": "Berikutnya: menerbitkan SSL email",
    "bootstrap": {
      "mtaOk": "Konfigurasi MTA ditulis (file {{count}})",
      "mtaIncomplete": "MTA tidak lengkap: {{detail}}",
      "seeNotes": "lihat catatan",
      "mailboxOk": "Kotak surat {{address}} (status {{status}})",
      "mailboxExists": "Kotak surat sudah ada (dilewati): {{detail}}",
      "passdbOk": "Passdb dovecot tertulis ({{count}} kotak surat)",
      "webmailOk": "Paket email web {{mode}} untuk {{host}}",
      "mailTlsTodo": "TLS email: terbitkan sertifikat untuk {{mailHost}}, lalu gunakan Terapkan jalur TLS email di tab kesehatan.",
      "externalDns": "Eksternal (milik operator): atur MX/SPF/DKIM/DMARC di DNS; PTR di VPS; Port 25 atau relai SMTP.",
      "healthScore": "Skor kesehatan {{score}}/{{max}} (DNS/PTR/Port25 tidak dilengkapi secara otomatis)",
      "webmailProjectOk": "Proyek email web {{tool}} @ {{host}} ({{status}})",
      "dovecotApplyOk": "Otentikasi virtual Dovecot diterapkan"
    },
    "tabDeliverability": "Pengiriman",
    "pendingCount": "Tertunda",
    "externalTodosOneLiner": "PTR, port 25, dan registrar DNS harus dilakukan oleh Anda.",
    "runDeliverabilityPack": "Jalankan pemeriksaan pengiriman",
    "deliverabilityTitle": "Cek pengiriman",
    "deliverabilityEmpty": "Belum diperiksa",
    "deliverabilityEmptyDesc": "Jalankan pemeriksaan pengiriman untuk DNS, PTR, dan port 25.",
    "panelReady": "Dapat diperiksa panel",
    "gaps": "Kesenjangan",
    "checkOk": "OK",
    "checkExternal": "Luar",
    "checkFail": "Gagal",
    "mailboxListDesc": "Tulis kata sandi DB setelah dibuat",
    "aliasesDesc": "Alias ​​​​dan seterusnya",
    "relayDesc": "relai SMTP",
    "deliverabilityDesc": "Pemeriksaan PTR/DNS/port 25",
    "dnsTodosDesc": "Salin lalu tambahkan di host DNS Anda",
    "deliverabilityHonesty": "Tidak dapat mengatur PTR atau membuka kunci port 25 untuk Anda",
    "warmupSuggest": "Saran pemanasan",
    "writeSsoSkeleton": "Tulis kerangka SSO Roundcube",
    "rateLimitPerHour": "Batas pesan per jam",
    "rateLimitGlobalHint": "Global memakai nilai terendah tiap domain",
    "savePolicyWritten": "Hanya ditulis ke control plane",
    "dnsblMultiIp": "RBL multi-IP",
    "webmailTool": "Perangkat lunak email web",
    "webmailToolRoundcube": "Kubus Bulat (default)",
    "webmailToolSnappy": "SnappyMail (ringan)",
    "webmailProjectName": "Nama proyek",
    "installWebmailProject": "Buat & tayangkan",
    "openWebmail": "Buka email web",
    "webmailRisk": "Email web publik berisiko — segera aktifkan HTTPS.",
    "webmailForceHttps": "Paksa HTTPS (Roundcube; SSL diperlukan)",
    "reinstallWebmail": "Instal ulang/perbarui",
    "installWebmailTitle": "Buat proyek webmail bersama (instalasi pertama)",
    "reinstallWebmailTitle": "Membangun kembali/meningkatkan proyek webmail yang ada",
    "reinstallNeedInstall": "Instal webmail terlebih dahulu",
    "webmailSsoAdvanced": "Lanjutan · Plugin SSO",
    "tlsRoleMail": "email (IMAP/SMTP)",
    "tlsRoleMailHint": "Nama host server email",
    "tlsRoleWebmail": "email web",
    "tlsRoleWebmailHint": "Host virtual email web",
    "tlsRoleApex": "Domain puncak",
    "tlsRoleApexHint": "Sertifikat web / puncak",
    "tlsRequestLe": "Permintaan LE",
    "tlsRequestLeFor": "Minta LE untuk {{host}}",
    "advancedToolsTitle": "Antrian & klien",
    "flushQueueConfirm": "Hapus antrian MTA lokal? Hal ini tidak dapat dibatalkan.",
    "mailSslTitleShort": "Sertifikat & TLS",
    "deleteDomain": "Hapus domain",
    "deleteDomainConfirmTitle": "Hapus domain email?",
    "deleteDomainConfirm": "Menghapus {{domain}} beserta kotak pesan, alias, dan data bidang kontrolnya. Konfigurasi sistem Postfix/Dovecot mungkin masih perlu dibersihkan.",
    "deleteDomainBtn": "Menghapus",
    "deleteMailbox": "Hapus kotak surat",
    "deleteMailboxTitle": "Hapus kotak surat?",
    "deleteMailboxDesc": "Menghapus {{address}}, data bidang kontrol, dan Maildir lokal jika ada.",
    "deleteMailboxC1": "Login kotak surat dan file surat",
    "deleteMailboxC2": "Menulis ulang peta virtual domain (bidang kontrol)",
    "deleteMailboxC3": "Sistem Dovecot/Postfix mungkin masih perlu dibersihkan",
    "deleteAliasTitle": "Hapus alias/teruskan?",
    "deleteAliasDesc": "Menghapus {{source}}.",
    "deleteImpact": "{{mailboxes}} kotak surat · {{records}} data DNS · {{aliases}} alias",
    "deleteDomainC1": "Semua kotak surat dan alias",
    "deleteDomainC2": "DKIM bidang kontrol, saran DNS, dan tanda",
    "deleteDomainC3": "Direktori dataDir/email lokal jika ada",
    "deleteDomainC4": "Peta sistem MTA mungkin tetap ada; bersihkan secara terpisah jika diperlukan",
    "deleteDialogTitle": "Hapus domain email secara permanen",
    "deleteDialogDesc": "Akan menghapus {{domain}}. Hal ini tidak dapat dibatalkan.",
    "deletePermanent": "Hapus secara permanen",
    "deleteRemoveData": "Hapus juga data email lokal",
    "deleteRemoveDataDesc": "Hapus centang untuk menghapus dari panel saja; Maildir tetap ada di disk",
    "deleteTypeName": "Ketik domain untuk mengonfirmasi",
    "deleteTypeNameHint": "Harus sama persis: {{name}}",
    "deleteWillData": "Direktori dataDir/email lokal jika ada",
    "deleteKeepData": "Simpan data email dataDir lokal",
    "deleteSystemWarn": "Peta Sistem Postfix/Dovecot tidak dibersihkan secara otomatis; bersihkan secara terpisah jika diperlukan.",
    "hostIpPick": "Tuan rumah IPv4",
    "hostIpPickV6": "Tuan rumah IPv6",
    "editMailboxTitle": "Edit kotak surat",
    "editMailboxDesc": "Ubah kata sandi atau pengaturan login untuk {{address}}",
    "editMailboxSave": "Simpan perubahan",
    "newPassword": "Kata sandi baru",
    "newPasswordHint": "Biarkan kosong untuk menyimpan kata sandi saat ini (minimal 8 karakter jika disetel)",
    "confirmPassword": "Konfirmasikan kata sandi",
    "mailboxStatus": "Status",
    "mailboxStatusActive": "Aktif (login diperbolehkan)",
    "mailboxStatusDisabled": "Dinonaktifkan (login diblokir)",
    "mailboxStatusHint": "Nonaktifkan ekspor * ke passdb Dovecot sehingga login ditolak",
    "colAddress": "Alamat",
    "colLocalPart": "Bagian lokal",
    "colPassword": "Kata sandi",
    "colCreated": "Dibuat",
    "hasPassword": "Mengatur",
    "noPassword": "Tidak disetel",
    "mailboxPager": "Halaman kotak surat",
    "prevPage": "Sebelumnya",
    "nextPage": "Berikutnya",
    "pageOf": "Halaman {{page}} / {{total}} · {{count}}",
    "mailboxEmptyTitle": "Belum ada kotak surat",
    "passwordMismatch": "Kata sandi tidak cocok",
    "passwordTooShort": "Kata sandi minimal harus 8 karakter",
    "mailboxUpdateNeedField": "Tetapkan kata sandi baru atau ubah status",
    "catchallHint": "Bagian lokal tak dikenal dikirim ke kotak tujuan. Draf sampai diterapkan.",
    "queueSearchPh": "Cari ID, pengirim, atau penerima…",
    "queueId": "ID antrean",
    "queueSender": "Pengirim",
    "queueRecipients": "Penerima",
    "queueSize": "Ukuran",
    "queueReason": "Alasan",
    "queueActive": "Aktif",
    "queueHeld": "Ditahan",
    "queueDeferred": "Tertunda",
    "deleteQueueTitle": "Hapus pesan antrean ini?",
    "deleteQueueDesc": "Hapus {{id}} dari antrean MTA lokal. Perlu YSK_EXECUTE.",
    "openQueuePage": "Buka antrean surat",
    "dovecotFailedHint": "Dovecot failed. Open the Software tab for status; if the mail certificate is missing, issue it on the SSL page first.",
    "dovecotFailedStatus": "Tempat perlindungan merpati adalah {{status}}. Buka tab Perangkat Lunak untuk ringkasan unit.",
    "mailCertMissing": "Tidak ada sertifikat untuk {{hosts}}. Terbitkan di halaman SSL.",
    "mailCertPresent": "Sertifikat email telah diterbitkan — ini bukan masalah sertifikat yang hilang.",
    "webmailNeedCert": "Tidak ada sertifikat untuk {{host}} — terbitkan di SSL sebelum memaksa HTTPS.",
    "domainRequired": "Masukkan domain",
    "domainInvalid": "Masukkan domain yang valid",
    "serverIpRequired": "Masukkan IP server",
    "serverIpInvalid": "Masukkan alamat IP yang valid",
    "serverIpv6Invalid": "Masukkan alamat IPv6 yang valid",
    "localPartRequired": "Masukkan bagian lokal",
    "localPartInvalid": "Bagian lokal hanya boleh menggunakan huruf, angka, . _ + -",
    "aliasDestRequired": "Masukkan setidaknya satu alamat tujuan",
    "mailboxStatusManaged": "Dikelola",
    "mailboxStatusActiveShort": "Aktif",
    "mailboxStatusDisabledShort": "Dengan disabilitas",
    "mailboxStatusSystem": "Sistem disediakan",
    "mailboxStatusPending": "Sistem tertunda",
    "mailboxStatusFailed": "Sistem gagal",
    "dnsblCleanStatus": "Tidak terdaftar",
    "dnsblListedStatus": "Terdaftar",
    "deliverabilityDone": "Pemeriksaan pengiriman selesai ({{score}}/100)",
    "sieveEmpty": "Tidak ada file Saringan tertulis",
    "sieveListed": "{{count}} file tertulis",
    "webmailHostnameRequired": "Masukkan nama host email web",
    "sieveFilesTitle": "File tertulis"
  },
  "errors": {
    "YSK_UNAUTHORIZED": "Tidak sah",
    "YSK_FORBIDDEN": "Terlarang",
    "YSK_NOT_FOUND": "Tidak ditemukan",
    "YSK_VALIDATION": "Masukan tidak valid",
    "YSK_ALLOWLIST_DENIED": "Tidak ada dalam daftar yang diizinkan",
    "YSK_APPROVAL_REQUIRED": "Diperlukan persetujuan",
    "YSK_APPROVAL_PENDING": "Persetujuan tertunda",
    "YSK_APPROVAL_REJECTED": "Persetujuan ditolak",
    "YSK_SANDBOX_VIOLATION": "Pelanggaran kotak pasir",
    "YSK_LLM_UNTRUSTED": "Keluaran LLM tidak tepercaya",
    "YSK_CONFIG_INVALID": "Konfigurasi tidak valid",
    "YSK_SETUP_INCOMPLETE": "Penyiapan tidak lengkap",
    "YSK_UPDATE_FAILED": "Pembaruan gagal",
    "YSK_INTERNAL": "Kesalahan dalaman",
    "YSK_NEED_EXECUTE": "Diperlukan izin eksekusi host",
    "YSK_NEED_ROOT": "Diperlukan root",
    "YSK_RATE_LIMITED": "Terlalu banyak upaya; coba lagi nanti",
    "YSK_TOTP_REQUIRED": "Kode otentikasi diperlukan",
    "auth": {
      "needCredentials": "Masukkan nama pengguna dan kata sandi",
      "rateLimited": "Terlalu banyak upaya masuk; coba lagi nanti",
      "badCredentials": "Nama pengguna atau kata sandi salah",
      "accountSuspended": "Akun ditangguhkan",
      "adminTotpStrict": "Admin harus mengaktifkan 2FA (ketat). Gunakan akun terdaftar atau nonaktifkan mode ketat.",
      "totpReplay": "Kode sudah digunakan; tunggu periode berikutnya",
      "totpRequired": "Diperlukan kode autentikasi yang valid",
      "mustEnrollTotp": "Kebijakan admin: aktifkan autentikasi dua faktor sekarang",
      "userNotFound": "Pengguna tidak ditemukan",
      "totpSetupNeedReauth": "Mengaktifkan 2FA memerlukan kata sandi Anda (atau kode langkah terbaru)",
      "totpBeginFirst": "Mulai pengaturan 2FA terlebih dahulu",
      "totpInvalid": "Kode autentikasi tidak valid",
      "stepUpRequired": "Tindakan ini memerlukan kode autentikasi baru",
      "missingCredential": "Kredensial tidak ada",
      "apiKeyUserMissing": "Pemilik kunci API tidak ditemukan",
      "apiKeyInvalid": "Kunci API tidak valid",
      "sessionExpired": "Sesi berakhir; masuk lagi",
      "sessionIdle": "Batas waktu menganggur; masuk lagi",
      "totpNotEnabled": "2FA tidak diaktifkan",
      "totpSecretNoDataDir": "Rahasia TOTP dienkripsi tetapi dataDir tidak disetel",
      "mustChangePassword": "Anda harus mengatur kata sandi baru sebelum lanjut",
      "policyNeedsOwn2fa": "Aktifkan 2FA untuk akun ini dan konfirmasi dengan kode TOTP sebelum memerlukan 2FA untuk akun lainnya"
    },
    "http": {
      "notFoundRoute": "Tidak ditemukan: {{method}} {{path}}",
      "unauthorized": "Tidak masuk atau sesi berakhir",
      "forbidden": "Anda tidak memiliki izin untuk tindakan ini",
      "notFound": "Sumber daya tidak ditemukan",
      "unprocessable": "Permintaan ditolak oleh server",
      "requestFailed": "Permintaan gagal ({{status}})",
      "jsonInvalid": "JSON tidak valid",
      "internal": "Kesalahan dalaman",
      "payloadTooLarge": "Isi permintaan terlalu besar"
    },
    "YSK_HOST_BROWSE_SSRF": "Penjelajahan host diblokir oleh kebijakan keamanan",
    "YSK_HOST_BROWSE_SESSION": "Sesi penelusuran host tidak ditemukan atau kedaluwarsa",
    "YSK_HOST_BROWSE_UPSTREAM": "Pengambilan upstream penelusuran host gagal",
    "YSK_HOST_BROWSE_NEED_CHROME": "Mesin browser sebenarnya memerlukan Chrome/Chromium di host"
  },
  "fail2ban": {
    "backToProtection": "Perlindungan",
    "statCurrentBan": "Larangan saat ini",
    "statTotal": "Dilarang total",
    "statBanList": "Daftar larangan",
    "statBoot": "Saat boot",
    "startedOk": "fail2ban dimulai",
    "startService": "Mulai layanan",
    "notInstalled": "fail2ban tidak diinstal",
    "toolHintPrefix": "Alat yang mendasari:",
    "toolHintBody": "fail2ban = setelah memindai log,",
    "toolHintTemp": "sementara",
    "toolHintBody2": "larangan · untuk penggunaan respons serangan",
    "toolHintUfw": "UFW = port / aturan permanen",
    "tabs": {
      "bans": "Daftar larangan",
      "whitelist": "Daftar putih",
      "jails": "Penjara",
      "policy": "Kebijakan",
      "service": "Melayani",
      "about": "Tentang"
    },
    "manualBanTitle": "Larangan manual (sementara)",
    "ipPlaceholder": "IPv4 atau IPv6",
    "banipOk": "banip selesai",
    "manualBanHint": "Blokir sementara;",
    "currentBans": "Saat ini dilarang",
    "bannedTableTitle": "IP yang dilarang (klien fail2ban langsung)",
    "bannedTableDesc": "Membutuhkan akses klien; batalkan pelarangan membutuhkan YSK_EXECUTE",
    "unbanOk": "Tidak dilarang",
    "unban": "Batalkan pelarangan",
    "addWhitelistTitle": "Tambahkan ke daftar putih abaikan",
    "whitelistAdded": "Ditambahkan ke daftar putih",
    "addWhitelistShort": "+Daftar Putih",
    "emptyBansTitle": "Tidak ada IP yang dilarang",
    "emptyBansDesc": "Atau tidak ada izin untuk membaca klien fail2ban",
    "ignoreipTitle": "abaikan daftar putih",
    "ignoreipDesc": "IP tidak pernah dilarang (file panel + klien fail2ban langsung opsional)",
    "whitelistEmptyWarn": "Daftar putih kosong; jail bisa memblokir Anda. Tambahkan IP login sebelum menerapkan ignoreip.",
    "suggestIgnoreLogin": "IP login Anda {{ip}}",
    "applyIgnoreEmptyWarn": "Menerapkan dengan daftar putih kosong mengosongkan ignoreip",
    "applyIgnoreNeedConfirm": "Menulis ulang ignoreip jail dan memuat ulang fail2ban",
    "addIp": "Tambahkan alamat IP",
    "addWhitelist": "Tambahkan ke daftar putih",
    "applyPolicyIgnoreip": "Terapkan kebijakan (termasuk abaikan)",
    "applyIgnoreipOk": "Menulis abaikan ke jail.local dan diterapkan",
    "ignoreipHint": "Tanpa YSK_EXECUTE hanya file panel yang ditulis (apply_status=tertulis);",
    "whitelistTitle": "Daftar Putih ({{count}})",
    "whitelistRemoved": "Dihapus dari daftar putih",
    "remove": "Menghapus",
    "emptyWhitelistTitle": "Belum ada IP yang masuk daftar putih",
    "emptyWhitelistDesc": "Tambahkan IP admin agar Anda tidak diblokir",
    "activeJails": "Penjara aktif",
    "colCurrent": "Saat ini",
    "colTotal": "Total",
    "colDesc": "Keterangan",
    "emptyJailsTitle": "Tidak ada penjara",
    "emptyJailsDesc": "Layanan tidak berjalan atau jail.local tidak diterapkan",
    "policyTitle": "Kebijakan penjara",
    "policyDesc": "Menulis panel jail.local; terapkan salinan + muat ulang (bukan melalui UFW)",
    "bantimeHint": "Durasi larangan",
    "findtimeHint": "Jendela penghitungan",
    "maxretryHint": "Kegagalan maksimal di jendela",
    "customExample2h": "Kustom, mis. 2 jam",
    "customExample15m": "Kustom, mis. 15m",
    "customMaxretry": "Kustom 1–50",
    "min": "{{n}} mnt",
    "hour": "{{n}} jam",
    "week": "{{n}} minggu",
    "enableJailsHint": "Aktifkan jail (centang lalu terapkan):",
    "writtenOnlyMsg": "Menulis file panel (tidak diterapkan pada host)",
    "writeOnly": "Tulis file panel saja",
    "appliedOk": "fail2ban diterapkan",
    "applyToSystem": "Terapkan ke sistem",
    "systemdTitle": "kontrol sistem",
    "enableAndStart": "Aktifkan dan mulai",
    "serviceHint": "Untuk penggunaan respons serangan",
    "serviceHintSuffix": "(menyebut penjara halaman ini + batas kecepatan Nginx;",
    "actionOk": {
      "enable": "fail2ban diaktifkan dan dimulai",
      "start": "fail2ban dimulai",
      "reload": "fail2ban dimuat ulang",
      "restart": "fail2ban dimulai ulang",
      "stop": "fail2ban dihentikan"
    },
    "statWhitelist": "Daftar putih",
    "invalidIp": "Masukkan IPv4, IPv6, atau CIDR yang valid.",
    "whitelistPendingApply": "Disimpan ke daftar panel. Tekan Terapkan kebijakan untuk menulis jail.local.",
    "ignoreipFile": "dataDir/fail2ban/ignoreip.txt",
    "jailsTabHint": "Status penjara aktif. Aktifkan atau nonaktifkan jail di tab Kebijakan.",
    "colJail": "Penjara",
    "colEnabled": "Pada",
    "serviceStateLine": "Satuan {{unit}} · {{state}} · boot {{boot}}",
    "jail": {
      "sshd": "Kekerasan SSH",
      "nginxHttpAuth": "Otentikasi HTTP Nginx",
      "nginxBotsearch": "Pemindai Nginx/probe bot",
      "nginxBadbots": "Nginx dikenal sebagai bot jahat",
      "nginxLimitReq": "Penjara dengan batas kecepatan Nginx",
      "postfix": "Kekerasan email postfix",
      "dovecot": "Login surat merpati",
      "recidive": "Pelanggar berulang"
    },
    "cannotBanSelf": "Ini adalah host atau IP login Anda — tambahkan ke abaikan alih-alih melarang",
    "suggestIgnoreHint": "IP admin yang disarankan (file panel hanya sampai Anda menerapkan kebijakan):",
    "suggestIgnoreAdd": "Tambahkan {{ip}}"
  },
  "featurePage": {
    "back": "Kembali"
  },
  "files": {
    "pillFiles": "{{count}} file",
    "pillTrash": "{{count}} di tempat sampah",
    "pillSpace": "{{used}} digunakan",
    "statFiles": "File",
    "statFolders": "Folder",
    "statUsage": "Penggunaan",
    "statSelected": "Terpilih",
    "statTrash": "Sampah",
    "statShares": "Bagikan",
    "publicSiteSettings": "Pengaturan situs publik",
    "opsResultTitle": "Hasil operasi file",
    "closeResult": "Tutup hasilnya",
    "tabBrowse": "Jelajahi",
    "tabTrash": "Sampah",
    "tabShares": "Bagikan",
    "spaceLabel": "Ruang angkasa",
    "publicFiles": "File publik",
    "viewLabel": "Melihat",
    "allFiles": "Semua file",
    "favorites": "Favorit",
    "upload": "Mengunggah",
    "newFolder": "Folder baru",
    "newTextFile": "File teks baru",
    "download": "Unduh",
    "copy": "Menyalin",
    "move": "Bergerak",
    "zip": "Ritsleting",
    "unzip": "Buka zip",
    "unzipDone": "Membuka ritsleting {{path}}",
    "unzipFailed": "Buka zip gagal",
    "delete": "Menghapus",
    "searchName": "Mencari…",
    "sortAria": "Menyortir",
    "sortNameAsc": "Nama↑",
    "sortNameDesc": "Nama↓",
    "sortSizeAsc": "Kecil↑",
    "sortSizeDesc": "Besar↓",
    "sortMtimeDesc": "Terbaru",
    "sortMtimeAsc": "Tertua",
    "viewList": "Daftar",
    "viewIcons": "Ikon",
    "viewAria": "Modus tampilan",
    "toolbarAria": "Tindakan berkas",
    "pathAria": "Jalur",
    "rootPublic": "Publik",
    "rootProject": "Proyek",
    "emptyFavorites": "Belum ada favorit",
    "emptyFolder": "Folder ini kosong",
    "emptyFolderHint": "Letakkan file atau folder di sini untuk diunggah, atau klik Unggah",
    "selectItem": "Pilih {{name}}",
    "colName": "Nama",
    "colSize": "Ukuran",
    "colMtime": "Dimodifikasi",
    "rename": "Ganti nama",
    "unfavorite": "Tidak favorit",
    "favorite": "Favorit",
    "share": "Membagikan",
    "versions": "Versi",
    "selectAllAria": "Pilih semua",
    "selectAll": "Pilih semua",
    "folder": "Map",
    "dirNamedLikeFile": "(sisa folder; nama terlihat seperti berkas)",
    "dropToUpload": "Jatuhkan untuk mengunggah",
    "trashTitle": "Sampah ({{count}})",
    "trashDesc": "File yang terhapus dapat dikembalikan atau dihapus secara permanen",
    "emptyTrash": "Sampah kosong",
    "emptyTrashTitle": "Sampah kosong?",
    "emptyTrashDesc": "Setiap file di sampah akan dihapus secara permanen. Hal ini tidak dapat dibatalkan.",
    "purgeForeverDesc": "File ini akan dihapus secara permanen. Hal ini tidak dapat dibatalkan.",
    "emptyTrashDone": "Sampah dikosongkan",
    "colOrigPath": "Jalur asli",
    "colDeletedAt": "Dihapus pada",
    "restore": "Memulihkan",
    "restored": "Pulih",
    "purgeForever": "Hapus selamanya",
    "purged": "Dihapus secara permanen",
    "trashEmpty": "Sampah kosong",
    "sharesTitle": "Tautan berbagi publik ({{count}})",
    "colPath": "Jalur",
    "colLink": "Link",
    "colDownloads": "Unduhan",
    "unshare": "Batalkan pembagian",
    "unshareDone": "Bagikan dibatalkan",
    "sharesEmpty": "Belum ada pembagian",
    "sharesEmptyHint": "Klik Bagikan pada baris file",
    "webdavTitle": "Pengaturan WebDAV",
    "webdavDesc": "Pasang root file publik melalui HTTP Basic di Finder, Windows, atau rclone. Token ditampilkan satu kali.",
    "enableIssueToken": "Aktifkan dan keluarkan token",
    "webdavReissueToken": "Terbitkan ulang token",
    "webdavReissueConfirm": "Menerbitkan ulang kata sandi lama akan segera membatalkan; klien yang dipasang akan terputus. Melanjutkan?",
    "webdavDisableConfirm": "Menonaktifkan akan menolak semua koneksi /webdav. Melanjutkan?",
    "tokenIssued": "Token dikeluarkan",
    "status": "Status",
    "enabledMount": "Diaktifkan · {{path}}",
    "notEnabled": "Tidak diaktifkan",
    "disable": "Cacat",
    "webdavAlreadyOff": "WebDAV sudah nonaktif",
    "webdavDisabled": "WebDAV dinonaktifkan",
    "webdavEnabledNoEcho": "Diaktifkan (kata sandi tidak akan ditampilkan lagi; keluarkan ulang jika diperlukan)",
    "webdavDefaultOff": "Nonaktif secara default — klik Aktifkan dan keluarkan token untuk memulai",
    "webdavAfterEnable": "Tersedia setelah WebDAV diaktifkan dan token diterbitkan.",
    "webdavOn": "Diaktifkan",
    "webdavOff": "Dengan disabilitas",
    "webdavOffNoToken": "Dinonaktifkan (tidak ada token aktif)",
    "webdavTokenId": "Token #{{id}}",
    "webdavTokenInactive": "Dinonaktifkan — token #{{id}} tidak aktif",
    "webdavUpdated": "Diperbarui {{at}}",
    "webdavTokenOnceTitle": "Salin kata sandinya sekarang",
    "webdavTokenOnceHint": "Kata sandi ini hanya ditampilkan sekali; itu tidak dapat diambil setelah Anda meninggalkan halaman ini.",
    "webdavConnTitle": "Koneksi",
    "webdavConnDesc": "Gunakan URL ini dengan kredensial HTTP Basic di klien Anda",
    "webdavUrl": "URL server",
    "webdavUsername": "Nama belakang",
    "webdavPassword": "Kata sandi (tanda)",
    "webdavPasswordHidden": "Dikeluarkan sebelumnya dan tidak ditampilkan ulang — terbitkan ulang atau gunakan kata sandi yang disimpan",
    "webdavPasswordNone": "Belum diterbitkan",
    "webdavRoot": "Pasang akar",
    "webdavRootValue": "Root file publik panel",
    "webdavAuth": "Otentikasi",
    "webdavAuthValue": "HTTP Basic · pengguna ysk · kata sandi = token yang dikeluarkan panel",
    "webdavConnBundle": "detail koneksi",
    "webdavCopyAll": "Salin semua detail koneksi",
    "webdavClientsTitle": "Pengaturan klien",
    "webdavClientsDesc": "Resep mount umum (lebih suka HTTPS; percayakan sertifikat yang ditandatangani sendiri di klien jika diperlukan)",
    "webdavClientFinder": "Penemu MacOS",
    "webdavClientFinderHint": "Buka → Hubungkan ke Server… (⌘K), tempel URL, pengguna ysk, kata sandi = token.",
    "webdavClientWin": "jendela",
    "webdavClientWinHint": "PC ini → Petakan drive jaringan → gunakan kredensial yang berbeda; atau Cyberduck / WinSCP (WebDAV).",
    "webdavNotesTitle": "Catatan",
    "webdavNote1": "WebDAV memetakan root file publik saja — bukan keseluruhan sistem file host.",
    "webdavNote2": "Ekspos port panel melalui proxy terbalik/firewall; lebih suka HTTPS saja.",
    "webdavNote3": "Menerbitkan ulang token lama akan langsung membatalkan; nonaktifkan menolak semua permintaan /webdav.",
    "webdavNote4": "Mendukung OPSI / PROPFIND / GET / PUT; rangkaian LOCK lengkap mungkin tidak lengkap.",
    "copiedLabel": "Menyalin “{{label}}”",
    "newFolderTitle": "Folder baru",
    "willCreateAt": "Akan dibuat di bawah \"{{path}}\"",
    "nameRequired": "Masukkan nama",
    "folderCreated": "Folder dibuat",
    "create": "Membuat",
    "folderName": "Nama folder",
    "noPathSepHint": "Tidak boleh berisi pemisah jalur",
    "newTextTitle": "File teks baru",
    "fileNameRequired": "Masukkan nama file",
    "textFileCreated": "File teks dibuat",
    "fileName": "Nama berkas",
    "fileNameHint": "misalnya readme.md atau catatan.txt",
    "versionsTitle": "Riwayat versi",
    "versionsDesc": "",
    "noVersions": "Belum ada riwayat versi",
    "noVersionsHint": "",
    "versionRestored": "Pulih",
    "restoreVersionConfirm": "Pulihkan {{version}} pada file saat ini {{file}}? Ini akan menimpa file pada disk.",
    "renameTitle": "Ganti nama",
    "renameCurrent": "Saat ini: {{name}}",
    "renamed": "Berganti nama",
    "newName": "Nama baru",
    "newNameHint": "Hanya mengganti nama; tetap berada di direktori yang sama",
    "copyTo": "Salin ke…",
    "moveTo": "Pindah ke…",
    "copyMoveDesc": "{{action}} {{count}} item",
    "actionCopy": "Menyalin",
    "actionMove": "Bergerak",
    "copied": "Disalin",
    "moved": "Terharu",
    "targetFolderPath": "Jalur folder target",
    "targetFolderHint": "Relatif terhadap root, mis. dokumen atau dokumen/a; kosong = akar",
    "shareCreateTitle": "Bagikan berkas",
    "shareCreateDesc": "Buat tautan unduhan publik. Kata sandi opsional.",
    "createLink": "Buat tautan",
    "sharePath": "Jalur:",
    "passwordOptional": "Kata sandi (opsional)",
    "passwordOptionalHint": "Biarkan kosong untuk akses terbuka",
    "passwordPlaceholder": "Opsional",
    "linkCreated": "Tautan dibuat:",
    "chmodTitle": "Ubah izin (chmod)",
    "chmodDone": "chmod {{mode}} → {{count}} item",
    "chmodDoneShort": "chmod {{mode}} selesai",
    "chmodFailed": "chmod gagal",
    "apply": "Menerapkan",
    "chmodApplyHint": "Terapkan ke {{count}} item yang dipilih (oktal, misalnya 644/755)",
    "chmod644": "644 berkas",
    "chmod755": "755 dapat dieksekusi",
    "chmod600": "600 pribadi",
    "chmod700": "700 dir pribadi",
    "chmod775": "775 kelompok menulis",
    "chmodCustomPh": "Kustom 0644…",
    "mode": "Mode",
    "zipTitle": "Kompres menjadi zip",
    "zipCreated": "Dibuat {{path}}",
    "zipDone": "Di-zip → {{path}}",
    "zipFailed": "zip gagal",
    "compress": "Kompres",
    "zipHint": "Zip {{count}} item yang dipilih ke dalam folder saat ini (memerlukan zip pada host)",
    "destFileName": "Nama file tujuan",
    "destPathHint": "Jalur: {{path}}",
    "movedToTrash": "Dipindahkan ke sampah",
    "moveToTrashTitle": "Pindah ke sampah?",
    "moveToTrashDesc": "Hapus {{count}} item (dapat dipulihkan dari sampah)",
    "deleteMore": "dan {{n}} lainnya",
    "unshareTitle": "Cabut bagian ini?",
    "unshareDesc": "Cabut tautan untuk {{name}} ({{url}}). Tautan segera berhenti berfungsi.",
    "preview": "Pratinjau",
    "imagePreviewNeedLogin": "Pratinjau gambar perlu login; gunakan unduhan sebagai gantinya",
    "pdfDownloadHint": "Unduh PDF untuk dibuka (membutuhkan header autentikasi)",
    "noEmbedPreview": "Tipe ini tidak dapat disematkan; silakan unduh.",
    "uploadDone": "{{count}} file yang diunggah",
    "downloadFailedStatus": "Pengunduhan gagal ({{status}})",
    "downloadFailed": "Pengunduhan gagal",
    "uploadFolder": "Unggah folder",
    "dropFolderOrFile": "Letakkan file atau folder untuk diunggah",
    "uploadPanelTitle": "Unggahan",
    "uploadPanelStats": "{{done}}/{{total}} selesai · {{err}} gagal",
    "uploadClearDone": "Jelas selesai",
    "uploadInFolder": "Map {{folder}}",
    "uploadStatusDone": "Selesai",
    "uploadStatusError": "Gagal",
    "uploadStatusQueued": "Mengantri",
    "uploadNoFile": "Tidak ada data berkas",
    "uploadSomeFailed": "{{count}} item gagal",
    "uploadTruncated": "Upload dibatasi hingga {{max}} item ({{total}} dipilih; sisanya dilewati)",
    "previewFailed": "Pratinjau gagal",
    "videoNotSupported": "Browser Anda tidak dapat memutar video ini.",
    "audioNotSupported": "Browser Anda tidak dapat memutar audio ini.",
    "edit": "Sunting",
    "editorTitle": "Sunting · {{name}}",
    "editorSave": "Menyimpan",
    "editorSavedIdle": "Disimpan",
    "editorSaved": "Disimpan {{name}}",
    "editorSaveFailed": "Gagal menyimpan",
    "editorDirty": "Belum disimpan",
    "editorClean": "Disimpan",
    "editorChars": "{{count}} karakter",
    "editorAria": "Penyunting untuk {{name}}",
    "editorDiscardConfirm": "Buang perubahan yang belum disimpan?",
    "shareReadyTitle": "Tautan sudah siap",
    "shareReadyDesc": "Salin dan kirim tautan ini. Siapa pun yang memilikinya dapat mengunduh.",
    "shareReadyBadge": "Dibuat",
    "shareProtected": "Dilindungi kata sandi",
    "shareOpenAccess": "Tidak ada kata sandi",
    "shareLinkLabel": "Tautan publik",
    "shareCopyHint": "Pilih bidang atau gunakan Salin.",
    "shareAgain": "Tautan baru",
    "shareCreatedToast": "Bagikan tautan dibuat",
    "linkCopied": "Tautan disalin",
    "linkCopyFailed": "Tidak dapat menyalin — pilih dan salin secara manual",
    "shareExpireLabel": "Tautan kedaluwarsa",
    "shareExpireHint": "Setelah waktu ini tautan berhenti berfungsi",
    "shareExpireNever": "Tidak pernah",
    "shareExpire1h": "1 jam",
    "shareExpire1d": "1 hari",
    "shareExpire7d": "7 hari",
    "shareExpire30d": "30 hari",
    "shareExpireCustom": "Kebiasaan…",
    "shareExpireAt": "Berakhir pada",
    "shareExpireInvalid": "Pilih tanggal dan waktu yang akan datang",
    "shareExpiresAt": "Kedaluwarsa {{at}}",
    "colExpires": "Kedaluwarsa",
    "pdfInlineHint": "Jika PDF tidak ditampilkan, unduhlah.",
    "publicShareTitle": "Seseorang berbagi file dengan Anda",
    "publicShareSub": "Unduh dengan aman dari tautan ini — tidak perlu akun",
    "publicShareChecking": "Memeriksa tautan…",
    "publicShareDownloading": "Mengunduh…",
    "publicShareWait": "Harap tunggu",
    "publicShareNeedPassword": "Tautan ini memerlukan kata sandi untuk mengunduh",
    "publicSharePasswordPh": "Bagikan kata sandi",
    "publicShareDownload": "Unduh",
    "publicShareDownloadAgain": "Unduh lagi",
    "publicShareDone": "Pengunduhan dimulai",
    "publicShareDoneHint": "Periksa unduhan browser Anda; ketuk lagi jika tidak ada yang muncul",
    "publicShareNotFound": "Bagikan tidak ditemukan atau kedaluwarsa",
    "publicShareDenied": "Tidak dapat mengakses bagian ini",
    "publicShareBadPassword": "Kata sandi salah",
    "publicShareMissing": "Tautan berbagi tidak valid",
    "publicShareFailed": "Pengunduhan gagal ({{status}})",
    "publicShareFailedGeneric": "Pengunduhan gagal",
    "publicShareDefaultName": "unduh",
    "publicSharePanelLogin": "Masuk panel",
    "publicShareLang": "Bahasa",
    "publicShareProgress": "{{loaded}} / {{total}} ({{pct}}%)",
    "publicShareProgressIndeterminate": "Diterima {{loaded}}…",
    "publicShareCancel": "Membatalkan",
    "publicShareCancelled": "Pengunduhan dibatalkan",
    "publicSharePoweredBy": "Didukung oleh {{company}}",
    "publicSharePoweredPrefix": "Didukung oleh",
    "publicSharePoweredSuffix": "",
    "publicShareHasAccount": "Punya akun? Masuk",
    "password": "Kata sandi",
    "editorLines": "{{count}} garis",
    "editorLargeHint": "File besar — ​​pengeditan mungkin terasa lambat. Lebih suka mengunduh untuk file multi-MB (batas server ~2MB).",
    "editorLnCol": "Ln {{line}}, Kol {{col}}",
    "editorSpaces": "Spasi: {{n}}",
    "copyLink": "Salin tautan",
    "versionsTitleShort": "Riwayat versi",
    "versionsCount": "{{count}} / {{max}}",
    "versionN": "v{{n}}",
    "versionLatest": "Terbaru",
    "shareModeLabel": "Metode pengunduhan",
    "shareModeDirect": "Unduh langsung",
    "shareModeBt": "BitTorrent (WebTorrent)",
    "shareModeBoth": "Langsung + BitTorrent",
    "shareModeHint": "BT membutuhkan pelacak yang sedang berjalan (File → BT Tracker). Tautan magnet dapat digunakan oleh siapa saja yang memiliki tautan tersebut.",
    "shareModeBtBlocked": "Pelacak tidak berjalan — mulai sebelum membuat pembagian BT, atau pilih Langsung saja.",
    "shareMagnet": "Tautan magnet",
    "shareTorrentFile": "Unduh .torrent",
    "shareSeedStatus": "Status penyemaian",
    "shareBtStats": "Status BitTorrent",
    "btSeeds": "Benih",
    "btLeechers": "Lintah",
    "btPeers": "Teman sejawat",
    "btUploadSpeed": "Kecepatan unggah",
    "btDownloadSpeed": "Kecepatan unduh",
    "btUploaded": "Diunggah",
    "btDownloaded": "Diunduh",
    "btRatio": "Perbandingan",
    "btUpdatedAt": "Diperbarui",
    "btServerStats": "Penanam server",
    "btClientStats": "Klien Anda",
    "btSeeding": "Penyemaian",
    "btPending": "Penyemaian tertunda",
    "btStopped": "Benih berhenti",
    "btError": "Kesalahan benih",
    "publicShareMethod": "Bagaimana Anda ingin mengunduh?",
    "publicShareDirect": "Unduh langsung",
    "publicShareBt": "BitTorrent",
    "openBtTracker": "Buka Pelacak BT",
    "publicShareBtInBrowser": "Unduh di browser (WebTorrent)",
    "publicShareBtProgress": "Diunduh {{pct}}% · {{peers}} rekan · ↓ {{down}} · ↑ {{up}}",
    "publicShareBtStarting": "Terhubung dengan rekan-rekan…",
    "publicShareBtFailed": "WebTorrent gagal: {{detail}}",
    "publicShareBtNeedMagnet": "Tidak ada URI magnet untuk pembagian ini",
    "publicShareBtUnsupported": "Browser ini tidak dapat menjalankan WebTorrent; gunakan magnet atau .torrent sebagai gantinya",
    "btNone": "—",
    "uploadStatusSkipped": "Dilewati",
    "uploadStatusCancelled": "Dibatalkan",
    "conflict": {
      "titleFile": "Item bernama “{{name}}” sudah ada",
      "titleFolder": "Folder bernama “{{name}}” sudah ada",
      "descFile": "Pilih tindakan. Tidak ada yang ditimpa sebelum Anda memilih Ganti.",
      "descFolder": "Pilih tindakan. Gabung mempertahankan folder yang ada lalu lanjut ke isinya.",
      "incoming": "Yang akan ditambah",
      "existing": "Sudah di sini",
      "kindFile": "Berkas",
      "kindFolder": "Map",
      "skip": "Lewati",
      "skipHint": "Jangan tambahkan item ini",
      "keepBoth": "Simpan keduanya",
      "keepBothHint": "Simpan yang masuk sebagai {{name}}",
      "replace": "Ganti",
      "replaceHint": "Timpa berkas yang ada. Cuplikan versi disimpan jika memungkinkan.",
      "replaceFolderHint": "Timpa berkas dengan nama yang sama di folder ini. Berkas lain tetap.",
      "merge": "Gabung",
      "mergeHint": "Pertahankan folder yang ada dan tambahkan berkas masuk ke dalamnya",
      "applyAll": "Terapkan ke semua konflik nama yang tersisa",
      "applyAllHint": "Gunakan tindakan ini untuk sisa drop atau transfer ini",
      "cancelRest": "Batalkan sisanya",
      "progress": "{{current}} dari {{total}}",
      "typeMismatch": "Sudah ada {{destKind}} bernama “{{name}}”. Yang masuk adalah {{incomingKind}}.",
      "skipped": "Dilewati",
      "cancelled": "Dibatalkan"
    },
    "webdavReissueUnchanged": "ID token tidak berubah setelah diterbitkan ulang — penulisan mungkin tidak berlanjut. Coba lagi.",
    "webdavDisableFailed": "WebDAV masih aktif setelah dinonaktifkan — penulisan mungkin tidak berlanjut. Coba lagi."
  },
  "firewall": {
    "profiles": {
      "web": {
        "label": "Tuan rumah web",
        "short": "SSH · 80 · 443"
      },
      "mail": {
        "label": "Web + surat",
        "short": "Juga 25/465/587/993"
      },
      "ftps": {
        "label": "Web + FTPS",
        "short": "21+PASV 30000–30100"
      }
    },
    "appliedProfile": "Profil yang diterapkan: {{label}}",
    "backToProtection": "Perlindungan",
    "statRules": "Aturan",
    "statDenyIps": "IP penolakan permanen",
    "statAllow": "Mengizinkan",
    "statDeny": "Membantah",
    "statDefaultIn": "Bawaan masuk",
    "defaultNotApplied": "tidak ada (UFW nonaktif)",
    "ufwOffHint": "Masuk default tidak diterapkan saat UFW mati",
    "executeOn": "Pada",
    "executeOff": "Mati",
    "ufwDisabled": "UFW dinonaktifkan",
    "ufwEnabled": "UFW diaktifkan",
    "disableUfw": "Nonaktifkan UFW",
    "enableUfw": "Aktifkan UFW",
    "notInstalled": "UFW tidak diinstal",
    "toolHintPrefix": "Alat yang mendasari:",
    "toolHintBody": "UFW = port / aturan permanen · untuk respon serangan dan penggunaan larangan otomatis",
    "toolHintfail2ban": "fail2ban = larangan sementara berbasis log",
    "toolHintFail2ban": "fail2ban = larangan sementara berbasis log",
    "executeOffHint": "Sistem berubah nonaktif — status dapat dibaca;",
    "tabs": {
      "rules": "Aturan",
      "ports": "Buka port",
      "deny": "IP penolakan permanen",
      "profiles": "Profil",
      "about": "Tentang",
      "services": "Layanan"
    },
    "currentRules": "Aturan saat ini",
    "rulesSourceHint": "Aturan bernomor UFW (status ufw bernomor)",
    "colAction": "Tindakan",
    "colTo": "Ke",
    "colFrom": "Dari",
    "deleteShort": "Menghapus",
    "denyBadge": "DENY",
    "emptyRulesTitle": "Tidak ada aturan atau tidak ada izin untuk membaca",
    "emptyRulesInstalled": "UFW tidak aktif atau memerlukan root untuk membacanya",
    "emptyRulesNotInstalled": "Instal UFW lalu segarkan",
    "allowPortTitle": "Izinkan pelabuhan",
    "protocol": "Protokol",
    "protoBoth": "Keduanya",
    "protoBothLabel": "TCP+UDP",
    "port": "Pelabuhan",
    "portHint": "Pilih port umum, atau port khusus di bawah",
    "portHintYsk": "Semua port layanan YSK (Panel, Web, SSH, mail, FTP, DNS, DB, Redis);",
    "privatePortWarn": "{{service}} biasanya harus bersifat pribadi; izin publik berisiko. Lebih suka IP sumber/CIDR.",
    "privatePortWarnWithFrom": "{{service}} hanya akan mengizinkan sumber tertentu; periksa kembali IP/CIDR.",
    "allowFrom": "Sumber IP/CIDR (opsional)",
    "allowFromHint": "Kosong = dimana saja; atur IP atau CIDR untuk mengizinkan hanya sumber tersebut di port ini",
    "allowFromPlaceholder": "misalnya 203.0.113.10 atau 10.0.0.0/8",
    "customPort": "Port khusus (misalnya 8080 atau 30000:30100)",
    "allowedPort": "Diizinkan {{proto}}/{{port}}",
    "allowedPortFrom": "Diizinkan {{proto}}/{{port}} dari {{from}}",
    "allowThisPort": "Izinkan port ini",
    "allowPortHint": "Simpan 22/80/443 untuk host web;",
    "denyTitle": "IP penolakan permanen",
    "denySub": "UFW DENY · berbeda dengan larangan fail2ban sementara",
    "denyPlaceholder": "IPv4 atau IPv6 untuk ditolak",
    "deniedOk": "Ditolak secara permanen",
    "removedDeny": "DENY dihapus",
    "remove": "Menghapus",
    "noDenyRules": "Tidak ada aturan penolakan IP permanen",
    "oneClickProfiles": "Profil sekali klik",
    "oneClickDesc": "Tulis skrip panel dan terapkan UFW (tidak menginstal fail2ban — gunakan halaman fail2ban)",
    "customApply": "Berlaku khusus",
    "allowSmtp": "Izinkan port SMTP/IMAP",
    "extraTcp": "Port TCP ekstra",
    "extraTcpHint": "Pilih preset; atau koma/rentang khusus",
    "noExtra": "Tidak ada tambahan",
    "mailGroup": "Kumpulan surat",
    "customExtraPlaceholder": "Kustom: 8080,9000:9010",
    "appliedCustom": "Aturan khusus diterapkan",
    "applyToSystem": "Terapkan ke sistem",
    "deletedRule": "Dihapus #{{n}}",
    "deleteRuleTitle": "Hapus aturan #{{n}}?",
    "deleteRuleDesc": "Menghapus nomor aturan UFW (membutuhkan izin perubahan sistem).",
    "servicesTitle": "Layanan terkelola",
    "servicesHint": "Eksposur jaringan yang diinginkan untuk layanan YSK. Membuka layanan akan menyinkronkan aturan ini secara otomatis.",
    "servicesUfwOff": "UFW tidak aktif. Daftar ini adalah paparan yang diinginkan, bukan aturan yang diterapkan oleh tuan rumah.",
    "servicesEmpty": "Belum ada data paparan layanan",
    "servicesEmptyDesc": "Mulai layanan terkelola (web, FTPS, VPN, DB…) untuk mengisi daftar ini.",
    "servicesManualHint": "Chip port manual ada di tab Ports — lebih suka mengelola akses di sini sehingga aturan tetap diberi tag (ysk-svc).",
    "portsManualHint": "Aturan manual tingkat lanjut. Pilih tab Layanan untuk perangkat lunak yang dikelola.",
    "colService": "Melayani",
    "colMode": "Mode",
    "colPorts": "Pelabuhan",
    "colSync": "Status",
    "synced": "Disinkronkan",
    "syncNow": "Sinkronisasi",
    "disableConfirmTitle": "Nonaktifkan UFW?",
    "disableConfirmDesc": "Firewall host akan berhenti menyaring lalu lintas. Di jaringan publik, SSH dan panel bisa terekspos.",
    "disableConfirmConsequence": "Aturan izinkan/tolak tetap tersimpan, tetapi tidak ditegakkan sampai UFW diaktifkan lagi.",
    "desiredOnlyUfwOff": "Diinginkan: {{mode}} · UFW nonaktif (tidak diterapkan)",
    "syncNotApplied": "UFW mati · tidak diterapkan"
  },
  "ftp": {
    "title": "akun FTPS",
    "accountsCount": "{{count}} akun",
    "accounts": "Akun",
    "applied": "Terapan",
    "pendingApply": "Lamaran tertunda",
    "sftpKeys": "Kunci SFTP",
    "softwareMissing": "Perangkat lunak layanan FTPS tidak diinstal",
    "ftpAccounts": "akun FTP",
    "sftpPubkeys": "Kunci publik SFTP",
    "homeDir": "Direktori rumah",
    "domain": "Domain",
    "user": "Pengguna",
    "keyFingerprint": "Sidik jari kunci (awalan)",
    "createHint": "Buat akun FTP di tab Akun terlebih dahulu, lalu kembali ke sini untuk mendaftarkan kunci.",
    "pubkeyHint": "Gunakan “+ Tambahkan kunci publik”, pilih pengguna FTP, dan tempel baris ssh-ed25519 atau ssh-rsa lengkap.",
    "sftpKeyInvalid": "Butuh nama pengguna dan kunci publik yang dimulai dengan ssh-.",
    "quickSelect": "Pilih akun dengan cepat",
    "quickSelectHint": "Klik nama pengguna untuk mengisi formulir kunci baru",
    "editAccount": "Edit akun FTP",
    "createAccount": "Buat akun FTP",
    "accountModalDesc": "Pilih domain dan beranda dari daftar, atau ketik dengan bebas. Simpan lalu Terapkan untuk menulis vsftpd",
    "usernameHintCreate": "Alnum, titik, garis bawah, tanda hubung; tidak dapat diubah setelah dibuat",
    "usernameHint": "Alnum, titik, garis bawah, tanda hubung",
    "newPasswordOptional": "Kata sandi baru (opsional)",
    "passwordKeepHint": "Kosong tetap terkini",
    "passwordMin8": "Setidaknya 8 karakter",
    "domainHint": "Domain situs atau email untuk pengelompokan dan petunjuk jalur",
    "domainPh": "Buat domain situs/mail terlebih dahulu, atau ketik sementara",
    "homeHint": "Root setelah login (lingkup chroot terlihat)",
    "addPubkey": "Tambahkan kunci publik SFTP",
    "addPubkeyDesc": "Pilih akun, catatan opsional, dan tempel satu baris kunci publik lengkap. Menulis file tidak membuktikan login berfungsi.",
    "pubkeyAdded": "Kunci publik ditambahkan",
    "ftpUsername": "nama pengguna FTP",
    "ftpUsernameHint": "Harus cocok dengan akun FTP yang terdaftar",
    "ftpUsernamePh": "Sama seperti akun FTP",
    "note": "Catatan",
    "noteHint": "Label perangkat, mis. laptop/kantor",
    "notePh": "Tuan rumah laptop / kantor",
    "sshPubkey": "Kunci publik SSH",
    "sshPubkeyHint": "Biasanya dari ~/.ssh/id_ed25519.pub, tempel seluruh baris",
    "deleteAccountTitle": "Hapus akun FTP?",
    "deleteAccountNamed": "Hapus akun FTP {{name}}?",
    "deleteAccountDesc": "Terapkan lagi setelah dihapus",
    "deleteKeyTitle": "Hapus kunci publik SFTP?",
    "deleteKeyDesc": "Menghapus dari file manajemen; sistem Authorized_keys mungkin perlu dimuat ulang.",
    "serviceTitle": "layanan vsftpd",
    "softwareMissingService": "Perangkat lunak FTPS tidak diinstal",
    "lifecycle": "Siklus hidup",
    "overview": "Ringkasan",
    "network": "Jaringan",
    "security": "Keamanan",
    "installStart": "Instal dan mulai",
    "listenPort": "Dengarkan pelabuhan",
    "accountCount": "Akun",
    "loginBanner": "Spanduk masuk",
    "sslDomain": "domain SSL",
    "plaintextInsecure": "Cleartext FTP (tanpa TLS) — tidak aman. Aktifkan FTPS sebelum mengekspos port 21.",
    "plaintextPublicLive": "vsftpd mendengarkan pada alamat publik tanpa FTPS. Kredensial berjalan dengan jelas. Aktifkan FTPS, ikat ke host ini saja, atau konfirmasikan PLAINTEXT untuk mempertahankan postur ini.",
    "bindAddress": "Dengarkan cakupannya",
    "bindAddressHint": "Pemasangan baru hanya terikat pada host ini. Mendengarkan publik tanpa FTPS memerlukan konfirmasi yang diketik.",
    "bindLocal": "Hanya tuan rumah ini",
    "bindLocalHint": "127.0.0.1 — baik-baik saja tanpa TLS untuk pengujian lokal",
    "bindPublic": "Publik",
    "bindPublicHint": "Semua antarmuka — aktifkan FTPS atau konfirmasi PLAINTEXT",
    "enableFtpsAndStart": "Aktifkan FTPS dan mulai",
    "publicPlainNeedConfirm": "FTP cleartext publik memerlukan konfirmasi PLAINTEXT",
    "plainConfirmTitle": "Mulai FTP publik tanpa FTPS?",
    "plainConfirmDesc": "Port 21 akan menerima login dan data yang jelas pada alamat publik.",
    "plainConfirmC1": "Nama pengguna dan kata sandi terlihat di jaringan.",
    "plainConfirmC2": "PASV akan mengiklankan IP publik yang dikonfigurasi.",
    "plainConfirmC3": "Firewall host dan grup keamanan cloud tidak dibuka untuk Anda.",
    "plainConfirmAction": "Mulai FTP teks jernih",
    "pasvRange": "Kisaran PASV",
    "forceTls": "Paksa TLS",
    "allowWrite": "Izinkan menulis",
    "networkTitle": "Pengaturan jaringan",
    "networkDesc": "Dengarkan port dan PASV;",
    "listenPortHint": "Bawaan 21; buka firewall jika menggunakan port lain",
    "customPort": "Pelabuhan khusus",
    "ipStack": "tumpukan IP",
    "ipStackHint": "Kebanyakan build vsftpd: mendengarkan dan mendengarkan_ipv6 saling eksklusif;",
    "listenConflictLive": "Vsftpd.conf langsung telah mendengarkan={{v4}} dan mendengarkan_ipv6={{v6}} — keduanya YA akan gagal untuk memulai.",
    "listenConflictNeedFix": "Perbaiki dulu dengar / dengar_ipv6 (tidak bisa keduanya YA), lalu terapkan.",
    "fixListenIpv4": "Gunakan IPv4 saja (listen=YES, listening_ipv6=NO)",
    "liveFileValue": "Ajukan sekarang: {{value}}",
    "startBlockedFailed": "Layanan gagal — terapkan konfigurasi yang valid sebelum memulai",
    "ftpsNeedCert": "Pilih domain sertifikat terlebih dahulu",
    "ipv4Only": "hanya IPv4",
    "ipv6Mapped": "IPv6 (dipetakan OK)",
    "bannerHint": "Selamat datang string yang dilihat klien setelah terhubung",
    "pasvStart": "Pelabuhan awal PASV",
    "pasvStartHint": "Saluran data pasif dimulai",
    "customStart": "Awal khusus",
    "pasvEnd": "Pelabuhan akhir PASV",
    "pasvEndHint": "Harus ≥ mulai; firewall harus mengizinkan jangkauan tersebut",
    "openFirewallPage": "Buka halaman firewall",
    "customEnd": "Akhir khusus",
    "pasvPublicIp": "IP publik PASV",
    "detectPublicIp": "Deteksi IP publik",
    "detectPublicIpTitle": "Isi IPv4 non-loopback pertama dari host ini",
    "pasvPublicIpHint": "NAT/cloud: atur IP publik; lokal dapat dibiarkan kosong",
    "pasvIpRequired": "Isi IP publik PASV sebelum menerapkan (NAT/cloud). Deteksi atau ketik alamat.",
    "optionalEmpty": "(opsional)",
    "securityTitle": "Pengaturan keamanan",
    "securityDesc": "TLS, akses tulis, chroot; Terapkan dan mulai ulang agar diterapkan",
    "sslCertDomain": "Domain sertifikat SSL",
    "sslCertDomainHint": "Pilih domain sertifikat yang diunggah/dikeluarkan",
    "enableFtps": "Aktifkan FTPS (SSL/TLS)",
    "enableFtpsDesc": "TLS pada saluran kontrol; direkomendasikan",
    "forceTlsLogin": "Paksa login TLS",
    "forceTlsLoginDesc": "Tolak FTP biasa; klien membutuhkan FTPS",
    "allowWriteDesc": "Mati = unduh/daftar saja",
    "chrootUsers": "Pengguna chroot",
    "chrootUsersDesc": "Penjara ke rumah setelah login",
    "writableChroot": "Izinkan chroot yang dapat ditulisi",
    "writableChrootDesc": "Pertahankan chroot bahkan ketika home dapat ditulisi (kebutuhan umum vsftpd)",
    "settingsSaved": "Pengaturan disimpan",
    "installIncomplete": "Penginstalan tidak dapat diselesaikan",
    "ftpsReady": "FTPS siap",
    "settingsApplied": "Pengaturan diterapkan",
    "opsResult": "Hasil operasi",
    "saved": "Disimpan",
    "accountsList": "Daftar akun",
    "accountsListDesc": "Setelah dibuat, Terapkan untuk menyinkronkan vsftpd. Jika layanan tidak ada, instal di atasnya",
    "startService": "awal.",
    "createAccountPlus": "+ Buat akun",
    "noFtpAccounts": "Belum ada akun FTP",
    "noFtpAccountsDesc": "Buat akun (daftar kanan atas); atur rumah dan domain, lalu terapkan.",
    "applyHint": "Catatan: Terapkan manajemen penulisan saja; mendengarkan membutuhkan vsftpd aktif.",
    "sshdMatchNote": "; sistem sshd Pencocokan harus dikonfigurasi agar dapat diterapkan.",
    "addPubkeyPlus": "+ Tambahkan kunci publik",
    "noPubkeys": "Tidak ada kunci publik yang terdaftar",
    "pickDomain": "— pilih domain —",
    "currentDomain": "{{domain}} (saat ini)",
    "pickHome": "— pilih pulang —",
    "currentHome": "{{path}} (saat ini)",
    "fullPath": "Jalur lengkap:",
    "emptyHomes": "Jika daftarnya kosong, buat proyek atau situs terlebih dahulu untuk opsi beranda.",
    "pickAccount": "— pilih akun —",
    "installFtpsBanner": "Gunakan banner di atas untuk menginstal FTPS, lalu mulai layanan.",
    "applyRestart": "Terapkan dan mulai ulang",
    "afterInstall": "Setelah instalasi, Anda dapat masuk dengan akun FTPS. Hak admin diperlukan untuk menginstal.",
    "saveSettings": "Simpan pengaturan",
    "saveApplyHint": "Simpan panel pembaruan saja; Terapkan dan mulai ulang penulisan vsftpd.conf dan muat ulang.",
    "installAndStart": "Instal & mulai",
    "manageAccounts": "Akun",
    "openFirewallPorts": "Buka port firewall",
    "firewallPortsApplied": "Firewall mengizinkan TCP {{ports}}",
    "sftpTabDesc": "Daftarkan kunci publik SSH untuk akun FTP sehingga klien dapat menggunakan login kunci SFTP. Pilih akun, tempel satu baris kunci, lalu simpan.",
    "sftpNeedAccountTitle": "Belum ada akun FTP",
    "sftpNeedAccount": "Buat setidaknya satu akun FTP terlebih dahulu, lalu daftarkan kunci publik untuk pengguna tersebut.",
    "sftpFilterLabel": "Akun",
    "sftpFilterAll": "Semua akun",
    "sftpKeyCount": "{{count}} kunci",
    "sftpEmptyFiltered": "Tidak ada kunci untuk akun ini",
    "sftpEmptyFilteredDesc": "“{{user}}” belum memiliki kunci publik SSH yang terdaftar.",
    "sftpRegister": "Daftarkan kunci",
    "sftpAddedAt": "Ditambahkan {{time}}",
    "sftpTechSummary": "Detail teknis (lanjutan)",
    "sftpTechNote": "Kunci ditulis di bawah jalur yang dikelola",
    "filterProject": "Hanya akun FTP proyek ini",
    "clearProjectFilter": "Tampilkan semua akun",
    "vsftpdFailedHint": "vsftpd gagal. Buka tab Service (listen dan listening_ipv6 tidak boleh keduanya YA).",
    "vsftpdFailedGeneric": "vsftpd gagal. Buka tab Layanan untuk pengaturan langsung dan jurnal.",
    "stateFailed": "Gagal memulai",
    "tabService": "Melayani"
  },
  "geo": {
    "continents": {
      "AS": "Asia",
      "EU": "Eropa",
      "NA": "Amerika Utara",
      "SA": "Amerika Selatan",
      "AF": "Afrika",
      "OC": "Oceania",
      "AN": "Antartika"
    },
    "countries": {
      "CN": "Cina",
      "HK": "Hongkong",
      "MO": "Makau",
      "TW": "Taiwan",
      "JP": "Jepang",
      "KR": "Korea Selatan",
      "KP": "Korea Utara",
      "SG": "Singapura",
      "MY": "Malaysia",
      "TH": "Thailand",
      "VN": "Vietnam",
      "PH": "Filipina",
      "ID": "Indonesia",
      "IN": "India",
      "AU": "Australia",
      "NZ": "Selandia Baru",
      "US": "Amerika Serikat",
      "CA": "Kanada",
      "MX": "Meksiko",
      "BR": "Brazil",
      "AR": "Argentina",
      "GB": "Inggris Raya",
      "IE": "Irlandia",
      "DE": "Jerman",
      "FR": "Perancis",
      "NL": "Belanda",
      "BE": "Belgia",
      "CH": "Swiss",
      "AT": "Austria",
      "SE": "Swedia",
      "NO": "Norwegia",
      "DK": "Denmark",
      "FI": "Finlandia",
      "PL": "Polandia",
      "CZ": "Ceko",
      "ES": "Spanyol",
      "PT": "Portugal",
      "IT": "Italia",
      "RU": "Rusia",
      "UA": "Ukraina",
      "TR": "Turki",
      "IL": "Israel",
      "AE": "UAE",
      "SA": "Arab Saudi",
      "EG": "Mesir",
      "ZA": "Afrika Selatan",
      "NG": "Nigeria",
      "PK": "Pakistan",
      "BD": "Bangladesh",
      "IR": "Iran",
      "IQ": "Irak",
      "RO": "Rumania",
      "BG": "Bulgaria",
      "HU": "Hongaria",
      "GR": "Yunani",
      "LT": "Lithuania",
      "LV": "Latvia",
      "EE": "Estonia",
      "BY": "Belarusia",
      "KZ": "Kazakstan",
      "UZ": "Uzbekistan",
      "CL": "Chili",
      "CO": "Kolumbia",
      "PE": "Peru",
      "VE": "Venezuela",
      "CU": "Kuba",
      "SC": "Seychelles",
      "PA": "Panama"
    },
    "regions": {
      "CN-BJ": "Beijing",
      "CN-SH": "Shanghai",
      "CN-TJ": "Tianjin",
      "CN-CQ": "Chongqing",
      "CN-GD": "Guangdong",
      "CN-ZJ": "Zhejiang",
      "CN-JS": "Jiangsu",
      "CN-SD": "Shandong",
      "CN-HN": "Henan",
      "CN-HB": "Hubei",
      "CN-HU": "Hunan",
      "CN-SC": "Sichuan",
      "CN-HE": "Hebei",
      "CN-FJ": "Fujian",
      "CN-AH": "Anhui",
      "CN-JX": "Jiangxi",
      "CN-LN": "Liaoning",
      "CN-JL": "Jilin",
      "CN-HL": "Heilongjiang",
      "CN-SX": "Shanxi",
      "CN-SN": "Shaanxi",
      "CN-GS": "Gansu",
      "CN-QH": "Qinghai",
      "CN-HA": "Hainan",
      "CN-YN": "Yunnan",
      "CN-GZ": "Guizhou",
      "CN-GX": "Guangxi",
      "CN-NX": "Ningxia",
      "CN-XJ": "Xinjiang",
      "CN-XZ": "Tibet",
      "CN-NM": "Mongolia Dalam",
      "TW-TPE": "Taipei",
      "TW-TXG": "Taichung",
      "TW-KHH": "Kaohsiung",
      "HK-HK": "Hongkong",
      "MO-MO": "Makau",
      "US-CA": "CA",
      "US-NY": "NY",
      "US-TX": "TX",
      "US-FL": "FL",
      "US-WA": "WA",
      "US-IL": "IL",
      "US-VA": "VA",
      "US-OR": "OR",
      "US-GA": "GA",
      "US-NJ": "NJ",
      "US-MA": "MA",
      "US-OH": "OH",
      "US-PA": "PA",
      "US-AZ": "AZ",
      "US-CO": "CO",
      "US-NC": "NC",
      "US-MI": "MI",
      "US-NV": "NV",
      "JP-13": "Tokyo",
      "JP-27": "Osaka",
      "JP-14": "Kanagawa",
      "JP-23": "Aichi",
      "KR-11": "seoul",
      "KR-26": "Busan",
      "SG-01": "SG",
      "AU-NSW": "NSW",
      "AU-VIC": "VIC",
      "GB-ENG": "ENG",
      "DE-BE": "BE",
      "DE-BY": "BY",
      "RU-MOW": "MOW",
      "RU-SPE": "SPE"
    }
  },
  "hostBrowse": {
    "tabBrowse": "Jelajahi",
    "subtitle": "Jelajahi internet atau LAN melalui host ini. Target tidak pernah melihat identitas browser desktop Anda.",
    "modeInternet": "Internet",
    "modeIntranet": "Intranet",
    "modeHint": "Internet memblokir IP pribadi; Intranet memungkinkan target LAN. Keduanya memblokir metadata cloud.",
    "urlPlaceholder": "https://example.com atau 192.168.1.1",
    "go": "Pergi",
    "back": "Kembali",
    "forward": "Maju",
    "reload": "Muat ulang",
    "stop": "Berhenti",
    "clearCookies": "Hapus cookie",
    "clearCookiesConfirm": "Ini menghapus cookie yang disimpan di host untuk sesi penjelajahan ini. Situs yang telah masuk harus masuk lagi.",
    "closeSession": "Tutup sesi",
    "copyUrl": "Salin URL",
    "newSession": "Sesi baru",
    "privacyOn": "Privasi aktif",
    "viaHost": "melalui tuan rumah",
    "emptyTitle": "Penjelajahan yang dimediasi host",
    "emptyBody": "Masukkan URL. DNS, TLS, dan jalan keluar menggunakan server ini — bukan browser Anda. Cookies tetap berada di toples sisi server.",
    "needUrl": "Masukkan URL di atas untuk memulai sesi.",
    "ssrfBlocked": "Diblokir oleh kebijakan keamanan (SSRF / mode)",
    "loadFailed": "Pengambilan gagal di host",
    "sessionReady": "Sesi siap",
    "noSession": "Tidak ada sesi",
    "statusLine": "{{status}} · {{ms}}ms · {{type}} · melalui host",
    "cookies": "kue",
    "latency": "Latensi",
    "locked": "HTTPS",
    "insecure": "HTTP",
    "loading": "Memuat…",
    "modeSwitchHint": "Mode peralihan membuka sesi baru dan menghapus cookie.",
    "copied": "URL disalin",
    "downloadHint": "Respons non-HTML — membuka bingkai konten atau menavigasi lagi.",
    "engineLabel": "Mesin",
    "engineProxy": "Proksi",
    "engineBrowser": "Peramban asli",
    "engineSwitchHint": "Pergantian mesin membuka sesi baru.",
    "needChrome": "Browser sebenarnya memerlukan sistem Chrome/Chromium (atau setel YSK_HOST_BROWSE_CHROME). Menggunakan proxy sebaliknya.",
    "engineBrowserNeedChrome": "Browser asli (Chrome tidak terpasang)",
    "egressHint": "Situs target melihat alamat keluar server ini ({{host}}), bukan laptop Anda. Cookie tetap berada di toples sesi server.",
    "needChromeFallback": "Chrome tidak tersedia — beralih ke mesin proxy.",
    "liveError": "Streaming langsung gagal",
    "liveWaiting": "Menghubungkan browser host…",
    "tabSettings": "Pengaturan",
    "softwareNeeded": "Chromium / Chrome diperlukan untuk mesin browser yang sebenarnya",
    "softwareHint": "Instal sekali klik distro Chromium melalui apt. Biner Google Chrome juga terdeteksi jika sudah ada. Membutuhkan root + YSK_EXECUTE=1.",
    "closeNoSession": "Belum ada sesi",
    "goInstallChrome": "Buka tab Perangkat Lunak",
    "settingsIntro": "Pengaturan panel ini mengesampingkan variabel lingkungan proses untuk Penelusuran Host.",
    "settingsEngine": "Mesin bawaan",
    "engineAuto": "Mobil",
    "settingsChromePath": "Jalur Chrome / Chromium",
    "settingsChromePathHint": "Kosong = deteksi otomatis. Contoh: /usr/bin/google-chrome",
    "settingsLoopback": "Izinkan loopback dalam mode intranet (127.0.0.1)",
    "settingsNoSandbox": "Chromium --no-sandbox (hanya penampung)",
    "settingsSave": "Simpan pengaturan",
    "settingsSaved": "Pengaturan Penelusuran Host disimpan",
    "envHintsTitle": "Proses env (hanya baca; pengaturan panel diutamakan saat disetel)",
    "stream": {
      "label": "Kualitas",
      "smooth": "Mulus",
      "balanced": "Seimbang",
      "sharp": "Tajam"
    },
    "zoom": {
      "label": "Perbesar",
      "fit": "Bugar",
      "fill": "Mengisi"
    },
    "retryNav": "Coba lagi navigasi",
    "retryLive": "Hubungkan kembali aliran",
    "tryProxy": "Beralih ke mesin proxy",
    "err": {
      "LIVE_NO_FRAME": "Waktu streaming habis: tidak ada frame yang diterima. Hubungkan kembali atau coba lagi navigasi.",
      "LIVE_WS_FAIL": "Koneksi langsung gagal. Hubungkan kembali alirannya.",
      "SSRF_BLOCKED": "Target diblokir oleh kebijakan keamanan.",
      "BOT_CHALLENGE": "Target mungkin memerlukan verifikasi manusia atau otomatisasi blok. Selesaikan tantangan di layar jika ditampilkan.",
      "TIMEOUT": "Waktu muat habis. Silakan coba lagi.",
      "DNS_FAIL": "Resolusi DNS gagal.",
      "TLS_FAIL": "Koneksi TLS/SSL gagal.",
      "NAV_FAIL": "Navigasi gagal.",
      "CHROME_LAUNCH": "Tidak dapat memulai host Chromium. Periksa pengaturan pemasangan dan tanpa kotak pasir.",
      "SESSION_GONE": "Sesi berakhir. Navigasi lagi.",
      "NEED_CHROME": "Chrome/Kromium diperlukan."
    },
    "home": "Rumah",
    "bookmark": "Penanda buku",
    "bookmarkAdd": "Menambah atau menghapus penanda",
    "bookmarkList": "Daftar penanda",
    "bookmarks": "Bookmark",
    "history": "Sejarah",
    "bookmarkToggled": "Penanda diperbarui",
    "newTab": "tab baru",
    "fullscreen": "Layar penuh",
    "mediaNote": "Browser sebenarnya: video dialirkan; audio belum dijembatani ke panel (fase 2).",
    "isolationNote": "Browser sebenarnya menciptakan pengguna Linux sementara untuk Chrome; meninggalkan halaman atau waktu tunggu menganggur akan menghancurkan pengguna tersebut.",
    "resumeHint": "Lanjutkan sesi sebelumnya ({{count}} tab)",
    "resumeHintDetail": "Lanjutkan sesi sebelumnya ({{count}} tab) · {{url}} · {{when}}",
    "resumeHintOwned": "Lanjutkan penjelajahan terakhir untuk {{user}} ({{count}} tab) · {{url}} · {{when}}",
    "clearSessionData": "Hapus data sesi",
    "clearSessionConfirm": "Tindakan ini membuang snapshot resume untuk sesi penelusuran sebelumnya. Anda tidak dapat memulihkan tab tersebut setelahnya.",
    "resume": "Melanjutkan",
    "resumeDismiss": "Membubarkan",
    "resumeDone": "Sesi dilanjutkan",
    "settingsSafety": "Keamanan navigasi",
    "settingsSafetyHint": "Ketat memblokir host yang lebih berisiko; Santai memungkinkan target intranet lebih luas. Tidak menonaktifkan perlindungan SSRF untuk metadata cloud.",
    "safetyStrict": "Ketat",
    "safetyStandard": "Standar",
    "safetyRelaxed": "Santai",
    "settingsBlockHosts": "Akhiran host yang diblokir",
    "settingsBlockHostsHint": "Satu nama host atau akhiran per baris (mis. malware.test). Pencocokan persis dan akhiran diblokir.",
    "settingsAllowDangerousDownloads": "Izinkan unduhan berisiko tinggi (exe/skrip)",
    "settingsAudioBridge": "Jembatankan audio halaman ke panel",
    "settingsAudioBridgeHint": "Streaming host audio Chrome ke browser ini. Beberapa situs memerlukan klik untuk membuka kunci pemutaran.",
    "downloads": "Unduhan",
    "downloadsEmpty": "Tidak ada unduhan di sesi ini",
    "downloadReady": "Siap",
    "downloadBlocked": "Diblokir",
    "downloadPending": "Tertunda",
    "downloadFailed": "Gagal",
    "downloadSave": "Menyimpan",
    "audioUnlock": "Aktifkan suara",
    "audioUnlockHint": "Klik untuk membuka kunci pemutaran audio di tab ini",
    "audioUnlocked": "Audio tidak terkunci",
    "audioPlaying": "Pemutaran audio",
    "audioNeedsUnlock": "Audio perlu dibuka kuncinya",
    "audioBridgedHint": "Audio halaman dijembatani dari browser host",
    "audioNotBridged": "Audio mati",
    "audioNotBridgedHint": "Aktifkan jembatan audio di Pengaturan untuk mendengarkan halaman",
    "mediaPolicyTitle": "Media di browser sebenarnya",
    "mediaVideoLabel": "Video",
    "mediaVideoDesc": "Dirender di host dan dialirkan sebagai bingkai ke panel.",
    "mediaAudioLabel": "Audio",
    "mediaAudioDesc": "Jembatan opsional dari host Chrome; mungkin memerlukan klik buka kunci.",
    "mediaPolicyLabel": "Kebijakan",
    "mediaPolicyDesc": "Unduhan dan putar otomatis mengikuti pengaturan keamanan dan unduhan di atas.",
    "frameBlocked": "Halaman tidak dapat ditampilkan dalam bingkai panel.",
    "historyEmpty": "Tidak ada riwayat di sesi ini.",
    "bookmarksEmpty": "Belum ada bookmark.",
    "closeSessionHint": "Menghapus cookie untuk sesi penjelajahan ini. Bookmark tetap ada.",
    "envUnset": "tidak disetel",
    "envPanelValue": "panel: {{value}}",
    "envColVar": "Variabel",
    "envColHost": "Proses host",
    "envColPanel": "Pengaturan panel",
    "envColEffective": "Berlaku",
    "settingsNoSandboxWarn": "Menonaktifkan kotak pasir Chromium. Gunakan hanya di dalam wadah tepercaya. Berlaku pada sesi browser nyata berikutnya.",
    "settingsDangerDlWarn": "Mengizinkan pengunduhan skrip dan eksekusi melalui browser host. Konfirmasikan bahwa Anda memerlukan ini.",
    "settingsDangerConfirmTitle": "Aktifkan pengaturan penjelajahan berisiko tinggi?"
  },
  "legal": {
    "hubTitle": "Hukum",
    "hubSub": "Ketentuan penggunaan, kebijakan privasi, dan penafian YSK Server",
    "terms": "Ketentuan penggunaan",
    "privacy": "Kebijakan privasi",
    "disclaimer": "Penafian",
    "updated": "Terakhir diperbarui {{date}}",
    "englishPrevails": "Bahasa resmi: Inggris dan Tionghoa tertulis Hong Kong. Jika berbeda, versi Inggris yang berlaku.",
    "notOfficialLocale": "Bahasa tampilan bukan bahasa hukum resmi. Teks yang mengikat di bawah ini adalah Inggris kecuali Anda menggantinya.",
    "officialLang": "Teks resmi",
    "officialEn": "Bahasa inggris",
    "officialZh": "繁體中文（香港）",
    "signIn": "Masuk",
    "mitNote": "Kode sumber dilisensikan di bawah MIT. Halaman ini adalah syarat penggunaan tambahan.",
    "backToIndex": "Semua dokumen hukum"
  },
  "listToolbar": {
    "searchPlaceholder": "Mencari…",
    "searchAria": "Daftar pencarian",
    "clearSearch": "Hapus pencarian",
    "clearAll": "Hapus filter",
    "resultCount": "{{count}} hasil",
    "showingOf": "Menampilkan {{shown}} dari {{total}}",
    "activeFilters": "{{count}} filter aktif",
    "noResults": "Tidak ada kecocokan",
    "noResultsHint": "Coba kata kunci lain atau hapus filter.",
    "searching": "Mencari…",
    "emptyChip": "Tidak ada item dalam filter ini"
  },
  "logViewer": {
    "banIpTitle": "Larangan {{ip}} dalam Perlindungan",
    "filter": "Menyaring",
    "filterPh": "Kata kunci",
    "levels": "Tingkat",
    "wrap": "Membungkus",
    "follow": "Mengikuti",
    "download": "Unduh",
    "nextError": "Kesalahan selanjutnya",
    "prevError": "Kesalahan sebelumnya",
    "lines": "{{n}} garis",
    "shown": "{{n}} ditampilkan",
    "errors": "Salah {{n}}",
    "warnings": "Peringatkan {{n}}",
    "all": "Semua",
    "empty": "Tidak ada garis log"
  },
  "login": {
    "title": "Masuk ke YSK Server",
    "subtitle": "Konsol server",
    "username": "Nama pengguna",
    "password": "Kata sandi",
    "submit": "Masuk",
    "failed": "Gagal masuk. Periksa nama pengguna atau kata sandi.",
    "footer": "Produk dari YSK Limited",
    "totpRequired": "2FA aktif untuk akun ini. Masukkan kode 6 digit.",
    "totpLabel": "Kode autentikasi",
    "totpHint": "Kode 6 digit dari aplikasi autentikator",
    "submitting": "Sedang masuk…",
    "sessionExpired": "Sesi berakhir; masuk lagi",
    "newPassword": "Kata sandi baru",
    "newPasswordAgain": "Konfirmasi kata sandi baru",
    "changePassword": "Ubah kata sandi",
    "passwordMismatch": "Kata sandi tidak cocok",
    "passwordChanged": "Kata sandi diperbarui"
  },
  "logs": {
    "catSystem": "File sistem",
    "catMail": "Surat",
    "catSecurity": "Keamanan",
    "catApp": "Aplikasi",
    "catOther": "Lainnya",
    "journalService": "Satuan jurnal",
    "unavailable": "Tidak tersedia",
    "compressed": "· terkompresi",
    "noLogFileYet": "(belum ada file log)",
    "afterDeploy": "Muncul setelah diterapkan",
    "logsLoaded": "Log dimuat",
    "sseFailed": "SSE gagal, kembali ke jajak pendapat",
    "sseInterrupted": "SSE menyela",
    "settingsSaved": "Pengaturan disimpan",
    "exportedJsonl": "JSONL yang diekspor",
    "exported": "Diekspor",
    "bookmarkSaved": "Penanda disimpan",
    "title": "Pusat pencatatan",
    "fullAccess": "Akses penuh",
    "nonRoot": "Non-root",
    "noExecute": "Tidak ada EKSEKUSI",
    "error": "Kesalahan",
    "projectLog": "Log proyek",
    "filesCount": "{{count}} berkas",
    "tabExplore": "Mengeksplorasi",
    "tabMaint": "Pemeliharaan",
    "tabSettings": "Pengaturan",
    "tabAbout": "Tentang",
    "sources": "Sumber log",
    "filterPlaceholder": "Filter unit/file…",
    "filterSources": "Filter sumber",
    "noProjectLogs": "Tidak ada log proyek — muncul setelah penerapan",
    "noMatchSources": "Tidak ada sumber yang cocok",
    "projectPrefix": "Proyek ·",
    "timeRange": "Rentang waktu",
    "unlimited": "Tak terbatas",
    "priority": "Prioritas",
    "all": "Semua",
    "keywordIp": "Kata Kunci / IP…",
    "custom": "Kebiasaan",
    "copied": "Disalin",
    "truncated": "· terpotong",
    "following": "· mengikuti",
    "followingSse": "· mengikuti (SSE)",
    "loadingSources": "Memuat sumber…",
    "pickSource": "Pilih sumber di sebelah kiri, atau pintasan · lalu Kueri",
    "noRowsInWindow": "Tidak ada catatan dalam jangka waktu ini",
    "showInactiveUnits": "Tampilkan unit yang tidak aktif",
    "sseNeedFollow": "Aktifkan Ikuti dulu — SSE hanya untuk live tail",
    "maintOverview": "Ikhtisar pemeliharaan",
    "executable": "Dapat dieksekusi",
    "restricted": "Terbatas",
    "needRootExecute": "Membutuhkan root+EKSEKUSI",
    "retention": "Penyimpanan",
    "retentionHint": "misalnya 7 hari · 14 hari · 30 hari",
    "defaultLines": "Garis bawaan",
    "followInterval": "Ikuti interval",
    "maxBytes": "Byte maks",
    "maskSecrets": "Rahasia topeng",
    "defaultVacuumDays": "Hari vakum default",
    "d7": "7 hari",
    "d14": "14 hari",
    "d30": "30 hari",
    "d90": "90 hari",
    "journalAlerts": "Peringatan jurnal",
    "autoVacuum": "Vakum otomatis",
    "deleted": "Dihapus",
    "bookmarkDeleted": "Penanda dihapus",
    "opsResult": "Hasil operasi",
    "saveBookmark": "Simpan penanda",
    "bookmarkNamePrompt": "Nama untuk kueri saat ini",
    "query": "Pertanyaan",
    "follow": "Mengikuti",
    "export": "Ekspor",
    "vacuum": "Kekosongan",
    "loadFailed": "Gagal memuat",
    "projectLogsLink": "Proyek → Log",
    "projectLogsDesc": "— pintasan per situs + tautan dalam",
    "queryFollow": "Tanyakan dan ikuti",
    "queryFollowDesc": "Garis default, ikuti interval, batas respons pada Jelajahi",
    "retentionAlerts": "Retensi dan peringatan",
    "retentionAlertsDesc": "default vakum, peringatan disk jurnal, jendela pembersihan otomatis",
    "dailyNeedRoot": "Setiap hari (membutuhkan root + EXECUTE)",
    "customAllow": "Jalur izin khusus",
    "customAllowDesc": "Hanya /var/log atau /run/log · tolak .ssh, kunci, /etc",
    "pathsCount": "{{n}} jalur",
    "noCustomPaths": "Belum ada jalur khusus",
    "bookmarks": "Bookmark",
    "bookmarksDesc": "Filter Jelajahi Umum; buka sakelar ke Jelajahi dan terapkan sumber",
    "noBookmarks": "Tidak ada bookmark — kueri pada Jelajahi lalu Simpan bookmark",
    "settingsWriteNote": "Pengaturan tulis ke panel DB; jendela pemeriksaan vakum otomatis setiap 15 menit.",
    "saveSettings": "Simpan pengaturan",
    "vacuumDaysQ": "Waktu vakum {{days}}?",
    "vacuumSizeQ": "Vakum ukuran 500M?",
    "vacuumDesc": "journalctl vakum menghapus log lama secara permanen.",
    "vacuumRequested": "Penyedot debu diminta",
    "vacuumSizeRequested": "Ukuran vakum diminta",
    "scLogs": "Mengamati jurnal/file/proyek",
    "scProtection": "Respons insiden, larangan otomatis (klik IP)",
    "shortcuts": "Jalan pintas",
    "projectsOnly": "Hanya proyek",
    "filesTitle": "{{n}} berkas",
    "bookmarksLabel": "Bookmark",
    "filter": "Menyaring",
    "followSec": "Ikuti {{sec}}s",
    "wrap": "Membungkus",
    "bookmark": "Penanda buku",
    "standby": "Menganggur",
    "partialFail": "Sebagian/gagal",
    "lines": "{{n}} garis",
    "followingSseDyn": "· mengikuti{{sse}}",
    "ipBan": "IP → larangan",
    "vacuumNote": "Disk jurnal sistemd gratis. Tidak ada EXECUTE → diblokir, tidak ada kesuksesan palsu.",
    "vacuumTime": "Waktu vakum",
    "vacuumNeedRetention": "Isi dulu jendela retensi (mis. 14d)",
    "vacuumNeedConfirm": "Perlu konfirmasi — menghapus log journal lama",
    "vacuumSizeNeedConfirm": "Perlu konfirmasi — membatasi penggunaan disk journal",
    "vacuumHint": "Disarankan ≥7 hari; periksa kembali disk setelahnya.",
    "logrotateStatus": "Status logrotate sistem (probe baca-saja)",
    "logrotateMissing": "Tidak ada file status atau tidak dapat dibaca — periksa paket logrotate di matriks layanan",
    "relatedOps": "Operasi terkait",
    "relatedOpsDesc": "Pengamatan log vs respons insiden",
    "scLogsLine": "Mengamati jurnal/file/proyek",
    "scProtLine": "Respons insiden, larangan otomatis (klik IP)",
    "journalVacuumTitle": "Kekosongan jurnal",
    "journalSection": "Jurnal",
    "sseLabel": "SSE",
    "logrotateLabel": "logrotate",
    "srcNginx": "nginx",
    "srcSsh": "ssh",
    "srcfail2ban": "fail2ban",
    "srcFail2ban": "fail2ban",
    "srcAuthLog": "auth.log",
    "srcNginxError": "kesalahan nginx",
    "srcLetsEncrypt": "letsencrypt",
    "groupJournal": "Jurnal",
    "groupVarLog": "/var/log",
    "prioErr": "salah+",
    "prioWarn": "memperingatkan+",
    "prioInfo": "info+",
    "vacuumSize": "Batasi hingga 500 MB",
    "logrotateNoStatus": "Belum ada file status logrotate (normal jika belum pernah dijalankan).",
    "autoVacuumOff": "Pembersihan otomatis tidak aktif. Waktu tidak terpakai sampai Anda mengaktifkannya.",
    "aboutAllowlist": "Jelajahi hanya dapat membaca unit jurnal dan jalur /var/log yang diizinkan. Jalur host sewenang-wenang tidak ditawarkan.",
    "aboutCustomPath": "Tambahkan jalur khusus pada Pengaturan (hanya/var/log atau/run/log). Kemudian buka dari Jelajahi.",
    "vacuumSizeAlreadyBelow": "Pemakaian saat ini sudah di bawah batas; biasanya tidak menghapus apa pun.",
    "vacuumSizeNoopDesc": "journal sudah di bawah 500 MB. Tetap menjalankan vacuum --size=500M dan biasanya tidak menghapus apa pun.",
    "journalDiskHint": "Pemakaian systemd-journald saat ini (journal aktif). Tidak termasuk file rotasi di /var/log.",
    "varLogDiskHint": "Perkiraan /var/log, termasuk file rotasi.",
    "queryFirst": "Kueri dulu",
    "errorsWindowHint": "Kesalahan terbaru dari pemeriksaan ikhtisar terakhir (tidak diperbarui secara langsung saat Anda berpindah tab)",
    "sourceCount": "{{shown}} ditampilkan",
    "sourceUnavailable": "Sumber ini belum menghasilkan log",
    "sourceNoLog": "Belum ada catatan",
    "projectSourcesTitle": "{{n}} sumber (berkas + journal)",
    "logrotatePath": "Jalur",
    "logrotateLast": "Terakhir diputar",
    "exportJsonl": "Ekspor JSONL",
    "sseLive": "(siaran langsung)",
    "logrotateExpand": "Tampilkan {{n}} selengkapnya",
    "logrotateCollapse": "Tampilkan lebih sedikit",
    "logrotateVersion": "Versi status {{v}}"
  },
  "metrics": {
    "alert": {
      "memory_high": "Memori tinggi",
      "load_high": "Beban tinggi",
      "disk_high": "Disk tinggi"
    },
    "loadFailed": "Gagal memuat metrik",
    "projectUsageFailed": "Gagal memuat penggunaan proyek",
    "procListFailed": "Daftar proses gagal",
    "streamEnded": "Streaming berakhir ({{reason}})",
    "streamOpenFailed": "Tidak dapat membuka streaming",
    "signalFailed": "Sinyal gagal",
    "detailFailed": "Tidak dapat memuat detailnya",
    "alertCount": "{{count}} peringatan",
    "attention": "Perlu perhatian",
    "normal": "OK",
    "disk": "Disk",
    "alerts": "Peringatan",
    "auto5s": "Otomatis 5 detik",
    "hostSettings": "Pengaturan tuan rumah",
    "loading": "Memuat metrik…",
    "tabs": {
      "overview": "Ringkasan",
      "live": "Proses langsung",
      "disk": "Disk",
      "projectUsage": "Penggunaan proyek",
      "alerts": "Peringatan"
    },
    "load": "Memuat",
    "load1m": "Muat 1m",
    "uptime": "Waktu aktif",
    "filterCpu5": "CPU ≥5%.",
    "filterMem5": "memori ≥5%.",
    "signalHint": "Pilih proses, lalu kirim TERM atau KILL.",
    "signalFromRow": "Pilih proses ini untuk TERM / KILL",
    "selectForSignal": "Memilih",
    "forceKillTitleNamed": "BUNUH PID {{pid}} ({{cmd}})?",
    "sendSigTitleNamed": "Kirim TERM ke PID {{pid}} ({{cmd}})?",
    "min1": "1m",
    "min5": "5m",
    "min15": "15m",
    "loadHint": "Relatif terhadap {{cpus}} CPU; di atas 1,0× mungkin mengantri.",
    "memory": "Ingatan",
    "total": "Total",
    "available": "Tersedia",
    "mainDisk": "disk akar",
    "path": "Jalur",
    "diskReadFail": "Tidak dapat membaca disk",
    "viewAllMounts": "Lihat semua {{count}} tunggangan →",
    "nAlerts": "{{count}} peringatan",
    "details": "Detail",
    "noThresholdAlerts": "Tidak ada peringatan ambang batas memori/beban/disk",
    "projectDisk": "Disk proyek (du asli)",
    "viewAllProjectUsage": "Lihat semua penggunaan proyek →",
    "loadProjectDisk": "Muat penggunaan disk proyek (du nyata) →",
    "followSse": "Ikuti (SSE)",
    "interval": "Selang",
    "sort": "Menyortir",
    "rows": "Baris",
    "onceQuery": "Kueri satu kali",
    "procSearchPh": "Cari PID / PENGGUNA / PERINTAH",
    "procSearchAria": "Proses pencarian",
    "filterAll": "Semua",
    "filterMine": "Non-sistem",
    "selectedN": "{{count}} dipilih",
    "showOf": "· menampilkan {{shown}}/{{total}}",
    "topLoading": "Memuat ringkasan teratas… (/proc/stat dual sample)",
    "topAria": "ringkasan teratas",
    "perCore": "Per-inti",
    "noPerCore": "Tidak ada data per inti",
    "uptimeDays": "{{d}} hari, {{h}}:{{m}}",
    "used": "Digunakan",
    "free": "Bebas",
    "signal": "Sinyal",
    "kill": "Membunuh",
    "send": "Mengirim",
    "procDetail": "Detil proses",
    "refreshProc": "Segarkan proses",
    "noProcs": "Tidak ada proses",
    "noProcsFilter": "Tidak ada proses yang cocok dengan filter",
    "mounts": "Gunung",
    "fs": "Sistem file",
    "mount": "Gunung",
    "size": "Ukuran",
    "usage": "Penggunaan",
    "project": "Proyek",
    "quota": "Kuota",
    "ratio": "Membagikan",
    "unlimited": "Tak terbatas",
    "noProjects": "Belum ada proyek",
    "noProjectsDesc": "Buat proyek untuk melihat penggunaan rumah sebenarnya di sini",
    "usageNote": "Penggunaan dari du lokal (tidak diperkirakan). Kuota adalah batas lunak bidang kontrol; hard setquota perlu diterapkan ke host.",
    "thresholdAlerts": "Peringatan ambang batas",
    "alertsBuiltinOnly": "Hanya ambang batas CPU/memori/disk bawaan. Tidak ada email, webhook, atau saluran Slack.",
    "lastEvaluated": "Terakhir diperiksa",
    "alertsOkTitle": "Semuanya jelas",
    "alertsOkDesc": "Tidak ada peringatan ambang batas memori/beban/disk.",
    "cpu": "CPU",
    "command": "Memerintah",
    "user": "Pengguna",
    "clearSelection": "Hapus pilihan",
    "batchSignal": "Sinyal kumpulan",
    "liveHint": "Daftar proses langsung (SSE atau polling). Sinyal memerlukan root + YSK_EXECUTE.",
    "signalTo": "Sinyal {{sig}} → PID {{pid}}",
    "procAlive": "Proses masih hidup (kill -0 ok)",
    "procGone": "Proses berakhir",
    "procTable": "Proses ({{count}}{{more}})",
    "procTableDesc": "daftar ps · pilih untuk TERM/KILL (membutuhkan YSK_EXECUTE)",
    "selectAllAria": "Pilih semua yang difilter",
    "selectPidAria": "Pilih PID {{pid}}",
    "controlPlane": "Pesawat kendali",
    "controlPlaneNoSignal": "Proses bidang kendali tidak dapat diberi sinyal",
    "protectedPid": "PID 1 / init / systemd tidak dapat diberi sinyal dari panel",
    "sigTermTitle": "Kirim SIGTERM (minta proses untuk keluar)",
    "sigKillTitle": "Kirim SIGKILL (force kill — tidak dapat ditangkap)",
    "batchTerm": "TERM",
    "batchKill": "KILL",
    "rawTopLabel": "Atasan mentah (tidak diterjemahkan)",
    "followSseLabel": "Ikuti (siaran langsung)",
    "alertsReadOnly": "Hanya ambang batas CPU/memori/disk bawaan. Tidak ada email, webhook, atau saluran Slack.",
    "alertsGoNotifications": "Buka pusat notifikasi",
    "lastCheck": "Pemeriksaan terakhir",
    "rawTopHint": "Keluaran atas(1) yang tidak diterjemahkan",
    "detailShort": "Informasi",
    "procUnavailable": "Tidak dapat memperoleh proses",
    "noProcData": "Belum ada data proses",
    "noProcFilter": "Tidak ada proses yang cocok dengan filter",
    "clickOnceOrFollow": "Jalankan kueri sekali pakai atau aktifkan tindak lanjut",
    "liveFootnote": "Seperti SSH top: /proc/stat dual sample untuk %Cpu (per-core = top “1”), Mem/Swap, Tasks; tabel proses dari ps. Bukan PTY interaktif. Membunuh membutuhkan YSK_EXECUTE; PID 1 dan bidang kontrol dilindungi secara default.",
    "forceKillTitle": "Bunuh paksa PID {{pid}} (SIGKILL)",
    "sendSigTitle": "Kirim SIG{{sig}} ke PID {{pid}}",
    "forceKillDesc": "Tidak bisa ditangkap; mungkin kehilangan data. Perintah: {{cmd}}",
    "termDesc": "Proses mungkin bersih dan keluar. Perintah: {{cmd}}",
    "forceKillBtn": "Paksa BUNUH",
    "sendTermBtn": "Kirim JANGKA",
    "procPidTitle": "Proses PID {{pid}}",
    "readingProc": "Membaca /memproses…",
    "applyRenice": "Oleskan renice",
    "reniceHint": "-20 tertinggi · 19 terendah (perlu EXECUTE)",
    "noData": "Tidak ada data",
    "shareOfMeasured": "{{pct}}% diukur",
    "mountsTitle": "Pemasangan disk ({{count}})",
    "mountsDesc": "Df -P -B1 nyata (tmpfs difilter)",
    "noMounts": "Tidak ada daftar pemasangan",
    "noMountsDesc": "df tidak tersedia atau difilter. Disk root masih dalam Ikhtisar.",
    "seeProjectUsage": "Penggunaan rumah proyek ada di tab Penggunaan proyek (nyata · {{size}})",
    "measuringDu": "Mengukur rumah proyek (du)…",
    "projectUsageTitle": "Penggunaan disk proyek ({{count}})",
    "projectUsageDesc": "Du asli · total {{total}} · {{at}}",
    "projectUsageDescEmpty": "Jalankan du pada setiap proyek home_dir",
    "remeasure": "Ukur ulang",
    "usageNoteFull": "Penggunaan dari du lokal (tidak diperkirakan). Kuota adalah batas lunak bidang kontrol; hard setquota perlu diterapkan ke host.",
    "sseNeedLogin": "Tidak masuk; tidak dapat membuka SSE",
    "sseSessionExpired": "Tidak masuk atau sesi berakhir; tidak dapat membuka SSE",
    "sseHttpError": "streaming HTTP {{status}}",
    "colFilesystem": "Sistem file",
    "colMount": "Gunung",
    "colSize": "Ukuran",
    "colUsed": "Digunakan",
    "colAvail": "Tersedia",
    "colUsePct": "Digunakan %",
    "colHome": "Rumah",
    "usageNoteLink": "Kuota lunak bidang kontrol. Terapkan batasan keras pada tab Isolasi proyek.",
    "shareNoQuotaHint": "Tanpa kuota, rasio bukan persentase. Atur di tab Isolasi proyek.",
    "setQuotaLink": "Atur kuota",
    "unusualHome": "Jalur tidak biasa",
    "unusualHomeHint": "Bukan rumah proyek /home/…. Isolasi kanonik adalah /home/ysk-server-{id}."
  },
  "migrate": {
    "tabInventory": "Inventaris",
    "tabTarget": "Target",
    "tabRun": "Berlari",
    "tabDone": "Selesai",
    "refreshFailed": "Penyegaran gagal",
    "migrateIncomplete": "Migrasi tidak selesai",
    "requestFailed": "Permintaan migrasi gagal",
    "title": "Migrasi host penuh",
    "subtitle": "Bidang kendali sumber → salinan lengkap ke host baru. Setelah itu hanya ubah IP/DNS publik; akun, jalur, dan proyek tetap sama.",
    "inventorying": "Inventarisasi",
    "inventoried": "Diinventarisasi",
    "inventoriedWarn": "Diinventarisasi · {{n}} peringatan",
    "inventoriedOrphans": "Diinventarisasi · {{n}} sisa rumah",
    "inventoriedWarnAndOrphans": "Diinventarisasi · {{w}} peringatan · {{n}} sisa",
    "inventoryFailed": "Inventaris gagal",
    "pendingInventory": "Persediaan tertunda",
    "projects": "Proyek",
    "mailboxes": "Kotak surat",
    "users": "Pengguna",
    "software": "Perangkat lunak",
    "jobs": "Pekerjaan",
    "notFound": "Tidak ditemukan",
    "wizard": "Penyihir migrasi",
    "jobLog": "Riwayat pekerjaan",
    "about": "Tentang",
    "steps": "Langkah-langkah migrasi",
    "sourceInventory": "Inventarisasi sumber",
    "sourceInventoryDesc": "Pemindaian bidang kontrol dan jalur proyek hanya-baca; tidak mengubah sistem",
    "inventoryRunning": "Menginventarisasi host ini…",
    "host": "Tuan rumah",
    "projectHome": "Proyek / rumah",
    "needSoftware": "Perangkat lunak untuk diinstal",
    "noInventory": "Belum ada inventaris",
    "noInventoryHint": "Gunakan Refresh (kanan atas) untuk memindai status host dan pekerjaan",
    "targetHost": "Tuan rumah sasaran",
    "targetHostDesc": "Root SSH saja; kata sandi hanya untuk permintaan ini dan tidak disimpan",
    "sshTarget": "sasaran SSH",
    "sshPort": "Pelabuhan SSH",
    "targetDataDir": "Target dataDir",
    "authMethod": "Metode autentikasi",
    "rootPassword": "Kata sandi akar",
    "notPersisted": "Tidak bertahan",
    "passwordNotStored": "Kata sandi hanya digunakan untuk sesi SSH ini dan tidak disimpan di disk.",
    "overwriteDanger": "Overwrite akan menggantikan data YSK yang ada pada target. Hal ini tidak dapat dibatalkan dari panel.",
    "outboundIdentity": "Identitas keluar di brankas",
    "dryRun": "Pemeriksaan awal uji coba",
    "startMigrate": "Mulai migrasi host penuh",
    "needSshTarget": "Masukkan target SSH",
    "needMaintWindow": "Periksa jendela pemeliharaan",
    "needRootPassword": "Masukkan kata sandi akar",
    "needRequired": "Lengkapi bidang yang wajib diisi",
    "result": "Hasil migrasi",
    "blocked": "Diblokir",
    "failed": "Gagal",
    "detail": "Detail",
    "jobsTitle": "Pekerjaan migrasi ({{count}})",
    "jobsDesc": "Nyatakan di bawah dataDir/migrate/;",
    "phase": "Fase",
    "jobPhase": "Pekerjaan {{id}} · {{phase}}",
    "phaseName": {
      "failed": "Gagal",
      "done": "Selesai",
      "running": "Berlari",
      "queued": "Mengantri",
      "cancelled": "Dibatalkan"
    },
    "target": "Target",
    "updated": "Diperbarui",
    "notes": "Catatan",
    "noJobs": "Belum ada pekerjaan migrasi",
    "noJobsHint": "Pekerjaan muncul setelah uji coba atau migrasi penuh di wizard.",
    "confirmTitle": "Konfirmasikan migrasi host penuh",
    "confirmDesc": "Akankah rsync dan bootstrap {{target}}",
    "confirmStart": "Konfirmasikan mulai",
    "cancel": "Membatalkan",
    "success": "Kesuksesan",
    "unfilledTarget": "(tidak ada sasaran)",
    "restartApiHint": "Jika Anda baru saja menerapkan versi baru, mulai ulang API (",
    "afterRestart": ") lalu Segarkan.",
    "inventoryWarnings": "Peringatan inventaris ({{count}})",
    "orphanHomesHint": "Sisa rumah proyek (bukan di toko). Hapus hanya setelah Anda mengonfirmasi bahwa itu tidak digunakan.",
    "orphanHomesTitle": "Sisa rumah proyek ({{count}})",
    "orphanHomesSummary": "{{count}} jalur pada disk tidak ada di penyimpanan. Cadangkan terlebih dahulu jika tidak yakin, lalu hapus jalur yang tidak digunakan.",
    "orphanColHome": "Rumah",
    "orphanColModified": "Dimodifikasi",
    "orphanColEntries": "Entri",
    "orphanEntries": "{{n}} entri tingkat atas dalam direktori",
    "orphanKpi": "Sisa",
    "sourceOs": "OS",
    "sourceDataDir": "dataDir",
    "sourceDbRedis": "Basis Data / Redis",
    "sourceDbRedisValue": "{{db}} basis data · {{redis}} Redis",
    "orphanRemove": "Hapus sisa rumah",
    "orphanRemoveTitle": "Hapus sisa proyek rumah?",
    "orphanRemoveDesc": "Hapus {{path}} dari disk secara permanen. Ini bukan proyek toko. Membutuhkan YSK_EXECUTE=1.",
    "orphanRemovePhrase": "Ketik DELETE untuk mengonfirmasi.",
    "orphanRemoveNeedConfirm": "Perlu konfirmasi",
    "orphanBackupFirst": "Cadangkan terlebih dahulu (buka Cadangan)",
    "orphanMtime": "Terakhir diubah {{at}}",
    "expandAllWarnings": "Tampilkan semua peringatan {{n}}",
    "collapseWarnings": "Tampilkan lebih sedikit",
    "moreWarnings": "…dan {{n}} lainnya",
    "authPassword": "kata sandi root (beralih ke kunci setelah pemasangan kunci sementara)",
    "authIdentity": "Id brankas identitas SSH",
    "authAgent": "Agen/kunci default lokal",
    "confirmMaint": "Konfirmasikan jendela pemeliharaan",
    "confirmMaintDesc": "· Sumber dijeda sebentar untuk dump yang konsisten (diperlukan untuk migrasi sebenarnya)",
    "allowOverwrite": "Izinkan penimpaan data YSK yang ada sesuai target",
    "allowOverwriteDesc": "· Diperlukan jika target sudah memiliki ysk.json",
    "dryRunOnly": "Hanya lari kering",
    "dryRunOnlyDesc": "· Inventaris + pemeriksaan awal saja; tidak ada rsync atau target penulisan",
    "executeNote": "Host membutuhkan YSK_EXECUTE=1 dan API root. Setelah migrasi, perbarui DNS A/AAAA dan periksa cloud firewall + mail PTR.",
    "dnsCutover": "Peralihan DNS (manual)",
    "dnsCutoverDesc": "Poin A/AAAA untuk nama-nama ini ke IP publik yang baru;"
  },
  "multiCheck": {
    "customPlaceholder": "Kode khusus",
    "searchPlaceholder": "Mencari…",
    "emptyText": "Tidak ada item yang cocok",
    "removeTitle": "Klik untuk menghapus",
    "noneSelected": "Tidak ada yang dipilih",
    "optionsAria": "Pilihan",
    "showingCapped": "Menampilkan {{shown}} pertama dari {{total}} — gunakan pencarian untuk mempersempit",
    "add": "Menambahkan",
    "bulkAria": "Seleksi massal",
    "selectAll": "Pilih semua",
    "selectAllTitle": "Pilih semua item {{n}}",
    "selectFiltered": "Pilih difilter ({{n}})",
    "selectFilteredTitle": "Pilih semua {{n}} hasil pencarian",
    "clearAll": "Hapus semuanya",
    "clearFiltered": "Hapus disaring",
    "selectedCount": "{{n}} / {{total}} dipilih",
    "chipsCollapsed": "{{n}} dipilih — perluas",
    "chipsCollapse": "Runtuh"
  },
  "nav": {
    "dashboard": "Dasbor",
    "ai": "Tugas AI",
    "projects": "Proyek",
    "security": "Keamanan akun",
    "email": "E-mail",
    "files": "File",
    "system": "Sistem berlaku",
    "updates": "Pembaruan",
    "agents": "Agen AI (exp.)",
    "login": "Login",
    "logout": "Keluar",
    "publicFiles": "File publik",
    "ftp": "FTPS",
    "ftpService": "FTPS",
    "mysql": "MySQL",
    "mysqlService": "layanan MySQL",
    "mariadb": "MariaDB",
    "mariadbService": "Layanan MariaDB",
    "postgres": "PostgreSQL",
    "postgresService": "layanan PostgreSQL",
    "redis": "Redis",
    "redisService": "layanan redis",
    "cluster": "Cluster",
    "dns": "DNS",
    "ssl": "Sertifikat SSL",
    "nginx": "Nginx",
    "node": "Node.js",
    "php": "PHP",
    "python": "Python",
    "go": "Go",
    "rust": "Rust",
    "protection": "Pusat Pertahanan",
    "firewall": "tembok api",
    "fail2ban": "fail2ban",
    "users": "Pengguna & paket",
    "services": "Layanan",
    "metrics": "Metrik",
    "network": "Jaringan",
    "logs": "Pusat pencatatan",
    "cron": "Kron",
    "backups": "Cadangan",
    "migrate": "Migrasi tuan rumah",
    "systemd": "systemd",
    "readiness": "Kesiapan",
    "systemIndex": "Alat sistem",
    "sections": {
      "overview": "Ringkasan",
      "sites": "Akun & situs",
      "mail": "E-mail",
      "files": "File & FTP",
      "databases": "Basis Data",
      "dnsSsl": "DNS & SSL",
      "runtimes": "Waktu proses",
      "security": "Keamanan",
      "system": "Sistem",
      "ai": "AI",
      "validators": "Validator",
      "containers": "Kontainer"
    },
    "java": "Java",
    "kotlin": "Kotlin",
    "bun": "Bun",
    "software": "Perangkat lunak",
    "terminal": "Terminal",
    "hostBrowse": "Telusuri Tuan Rumah",
    "cdn": "CDN",
    "vpn": "VPN",
    "vnc": "VNC",
    "apache": "Apache",
    "bookmarkedProjects": "Proyek yang ditandai",
    "bookmarkedEmailDomains": "Domain yang ditandai",
    "bookmark": "Sematkan ke bilah sisi",
    "unbookmark": "Lepas pin dari sidebar",
    "bookmarkPinned": "Disematkan",
    "bookmarkAdded": "Disematkan ke sidebar",
    "bookmarkRemoved": "Dihapus dari bilah sisi",
    "btTracker": "BT Tracker",
    "support": "Mendukung",
    "noAccessTitle": "Tidak ada akses",
    "noAccessDesc": "Peran Anda tidak mencakup halaman ini. Minta admin jika Anda membutuhkannya.",
    "backToDashboard": "Kembali ke dasbor",
    "validators": "Validator (Beta)",
    "docker": "Buruh pelabuhan"
  },
  "network": {
    "title": "Antarmuka jaringan",
    "canMutate": "Yg mungkin berubah",
    "readOnlyBlocked": "Hanya baca / diblokir",
    "statIfaces": "Antarmuka",
    "statUp": "Ke atas",
    "oper": {
      "up": "Ke atas",
      "down": "Turun",
      "unknown": "Tidak dikenal",
      "loopback": "Selalu aktif",
      "loopbackHint": "Loopback selalu tersedia dan tidak dapat diubah.",
      "other": "Lainnya"
    },
    "statGateway": "Gerbang",
    "pageActions": "Tindakan halaman",
    "loadingSnap": "Memuat cuplikan jaringan…",
    "mutateHint": "Perubahan berlaku secara langsung; dapat diatur ulang saat reboot.",
    "cannotMutate": "Tidak dapat diubah: perlu EXECUTE dan root.",
    "tabs": {
      "ifaces": "Antarmuka",
      "routes": "Rute",
      "dns": "DNS",
      "advanced": "Canggih",
      "about": "Tentang",
      "realip": "IP / CDN asli"
    },
    "ifaceSummary": "{{count}} antarmuka · {{up}} ATAS",
    "noIfaces": "Tidak ada antarmuka",
    "noIfacesDesc": "ip tidak tersedia atau tidak ada izin",
    "colName": "Nama",
    "colStatus": "Status",
    "ifaceOps": "{{name}} tindakan",
    "routeTable": "Tabel rute",
    "defaultGw": "Gerbang bawaan {{gw}}",
    "liveIpRoute": "Rute ip langsung",
    "noRoutes": "Tidak ada rute",
    "colDest": "Tujuan",
    "addRoute": "Tambahkan rute",
    "persistNm": "Simpan ke koneksi NetworkManager (selamat dari reboot)",
    "ephemeralRoute": "Hanya rute ip langsung (mungkin hilang saat reboot)",
    "destPlaceholder": "default atau 10.0.0.0/8",
    "devOptional": "Pengembang (opsional)",
    "defaultDev": "Jalan keluar default: {{dev}}",
    "saveNm": "Simpan (NetworkManager, selamat dari reboot)",
    "ephemeralHint": "Tidak dicentang = tinggal menambahkan rute ip saja",
    "nmUnavailable": "NetworkManager tidak berjalan — hanya rute langsung yang dapat ditambahkan",
    "defaultRouteDownNeedName": "Ini adalah rute keluar default. Ketikkan nama antarmuka untuk mengonfirmasi — panel mungkin terputus.",
    "saveRoute": "Simpan rute",
    "dnsSettings": "Pengaturan DNS",
    "dnsNmHint": "Menulis koneksi NM “{{conn}}” dan menyambung kembali (persisten)",
    "dnsCannotApply": "Tidak dapat diterapkan: memerlukan koneksi NM aktif + EXECUTE + root",
    "mode": "Mode",
    "connection": "Koneksi",
    "source": "Sumber",
    "ignoreAutoDns": "Abaikan-auto-dns saat ini",
    "ignoreYes": "ya (abaikan DHCP DNS)",
    "ignoreNo": "tidak (ikuti DHCP)",
    "nameserverEditHint": "Tambah/hapus server; terapkan tulis NetworkManager dan sambungkan kembali",
    "routerDns": "Perute {{dns}}",
    "current": "Saat ini",
    "serverList": "Daftar server",
    "emptyDnsTitle": "Belum ada server DNS",
    "emptyDnsDesc": "Klik “Tambahkan server” untuk memulai",
    "keepOneRow": "Simpan setidaknya satu baris (hapus lalu hapus)",
    "removeServer": "Hapus server ini",
    "searchDomainsPlaceholder": "Opsional, dipisahkan oleh ruang",
    "ignoreDhcpDns": "Abaikan DNS otomatis DHCP (ipv4.ignore-auto-dns=yes)",
    "restoreDhcpHint": "\"Kembalikan DHCP DNS\" kembali ke router",
    "noNmConnection": "Tidak ada koneksi NM — tidak akan mengedit secara membabi buta /etc/resolv.conf (tidak ada keberhasilan yang salah).",
    "needExecuteRoot": "Membutuhkan YSK_EXECUTE=1 dan root untuk penulisan sebenarnya.",
    "resolveTest": "Tes penyelesaian",
    "resolveTestDesc": "getent ahosts (resolusi lokal aktual)",
    "hostname": "Nama host",
    "testFailed": "Tes gagal",
    "stackDetect": "Deteksi tumpukan jaringan lokal",
    "available": "Tersedia",
    "unavailable": "Tidak tersedia",
    "persistNmCap": "Bertahan (NM)",
    "ifaceDetail": "Antarmuka {{name}}",
    "type": "Jenis",
    "addresses": "Alamat",
    "noAddresses": "Tidak ada alamat",
    "ifaceAdjust": "Penyesuaian antarmuka",
    "addIpTitle": "Tambahkan IP · {{name}}",
    "saveIp": "Simpan IP",
    "add": "Menambahkan",
    "cidrPlaceholder": "misalnya 10.0.0.5/24 atau 2001:db8::5/64",
    "saveIpHint": "Tulis koneksi +ipv4/ipv6.addresses dan koneksikan",
    "confirmIfaceName": "Ketik nama antarmuka “{{name}}” untuk mengonfirmasi",
    "deleteRouteTitle": "Hapus rute?",
    "deleteRouteNamed": "Hapus rute {{dst}}?",
    "deleteRouteBody": "Hapus {{dst}}{{via}}{{dev}} dari tabel perutean langsung.",
    "viaGw": "melalui {{gw}}",
    "onDev": "pada {{dev}}",
    "deleteDefaultWarn": "— menghapus default dapat menyebabkan konektivitas terputus.",
    "alsoRemoveNm": "Hapus juga dari koneksi NetworkManager (hilang setelah reboot)",
    "loadFailed": "Gagal memuat",
    "loadNetworkFailed": "Gagal memuat jaringan",
    "on": "Pada",
    "off": "Mati",
    "addServer": "Tambahkan server",
    "applyDns": "Terapkan DNS",
    "restoreDhcpDns": "Pulihkan DNS DHCP",
    "test": "Tes",
    "refresh": "Menyegarkan",
    "hostSettings": "Pengaturan tuan rumah",
    "protection": "Perlindungan",
    "defaultEgressBadge": "Bawaan",
    "opsAria": "{{name}} tindakan",
    "details": "Detail",
    "addIp": "Tambahkan alamat IP",
    "reset": "Mengatur ulang",
    "ephemeralOnly": "Hidup saja",
    "saveRouteHint": "Simpan tulis koneksi NM + koneksi ke atas;",
    "deleteShort": "Del",
    "resetForm": "Setel ulang formulir",
    "applyDnsNotes": "Terapkan menjalankan koneksi nmcli modifikasi + atas; pemutusan hubungan singkat adalah normal. Stub 127.0.0.53 tidak ditulis (diselesaikan secara lokal).",
    "testResolve": "Uji tekad",
    "loadRaw": "Muat keluaran mentah",
    "hideRaw": "Sembunyikan keluaran mentah",
    "rawLoadedAt": "Dimuat {{time}}",
    "confirmDown": "Konfirmasi Turun",
    "linkDownTitle": "Ambil {{name}} offline",
    "linkDownNeedConfirm": "Ketikkan nama antarmuka untuk mengonfirmasi",
    "defaultRouteDownWarn": "Antarmuka ini adalah rute keluar default; turun dapat memotong akses panel.",
    "deleteDefaultMayDrop": "— menghapus default dapat menyebabkan konektivitas terputus.",
    "deleteDefaultPanelWarn": "Menghapus rute default dapat membatalkan sesi panel ini. Ketik DEFAULT untuk mengonfirmasi.",
    "deleteDefaultNeedConfirm": "Perlu konfirmasi — ketik DEFAULT (dapat memutus panel ini)",
    "deleteRouteNeedConfirm": "Perlu konfirmasi",
    "typeDefaultToConfirm": "Ketik DEFAULT untuk mengonfirmasi",
    "gateway": "Gerbang",
    "nameservers": "Server nama",
    "searchDomains": "Cari domain",
    "backend": "Bagian belakang",
    "cidr": "CIDR",
    "realip": {
      "title": "CDN / IP klien asli",
      "desc": "Pulihkan IP pengunjung di belakang CDN; CIDR tepi kepercayaan saja.",
      "provider": "Penyedia bawaan",
      "providerHint": "tidak ada = asal langsung; pilih CDN saat berada di belakang tepi.",
      "mode": "Modus kepercayaan",
      "modeSingle": "Header penyedia tunggal (disarankan)",
      "modeXff": "X-Forwarded-For + gabungan CDN CIDR",
      "customCidrs": "CIDR ekstra tepercaya",
      "customCidrsHint": "Satu CIDR per baris.",
      "lastRefresh": "Penyegaran CIDR terakhir",
      "active": "Default aktif",
      "republishHint": "Publikasikan ulang proyek Nginx setelah disimpan.",
      "refresh": "Segarkan daftar IP CDN",
      "refreshOk": "Daftar CIDR disegarkan",
      "providers": {
        "none": "Tidak ada (asal langsung)",
        "cloudflare": "awan suar",
        "fastly": "Dengan cepat",
        "bunny": "Kelinci CDN",
        "cloudfront": "AWS CloudFront",
        "azure_frontdoor": "Pintu Depan Azure",
        "gcore": "Dapatkan CDN",
        "custom": "Proksi khusus"
      },
      "needProvider": "Pilih penyedia CDN sebelum mengambil daftar IP-nya.",
      "spoofWarn": "Mempercayai CIDR yang salah memungkinkan klien memalsukan header X-Forwarded-For/CDN sebagai IP mereka."
    },
    "linkUp": "Ke atas",
    "linkDown": "Turun",
    "linkDownDefault": "Rute default turun",
    "loopbackImmutable": "Loopback tidak dapat diubah",
    "operUnknownHint": "Kernel tidak melaporkan UP/DOWN (umum untuk lo). Antarmuka masih dapat digunakan.",
    "persistNmHint": "Bertahan berarti perubahan dapat bertahan saat reboot melalui NetworkManager."
  },
  "nginx": {
    "pillSites": "{{count}} situs",
    "statSites": "Situs",
    "statSslFlag": "Bendera SSL",
    "purgeOk": "Dibersihkan",
    "projectSitesHint": "Situs proyek (konf terkelola) dan situs mandiri dicantumkan secara terpisah. Edit proyek Nginx di bawah Proyek → Jaringan.",
    "purgeCache": "Bersihkan cache + muat ulang",
    "purgeCacheTitle": "Bersihkan cache Nginx dan muat ulang?",
    "purgeCacheDesc": "Menghapus cache pada disk dan memuat ulang Nginx. Situs langsung tetap terjaga.",
    "notInstalled": "Nginx tidak diinstal",
    "listTitle": "Situs ({{count}})",
    "listDesc": "Setelah dibuat, klik Terapkan untuk menyinkronkan ke sistem",
    "createSite": "+ Buat situs",
    "colServerName": "Nama server",
    "colKind": "Jenis",
    "kindProxy": "Proksi terbalik",
    "kindStatic": "Statis",
    "kindPhp": "PHP-FPM",
    "colTarget": "Hulu / akar",
    "colStatus": "Status",
    "emptyTitle": "Tidak ada situs",
    "emptyDesc": "Gunakan “Buat situs” di toolbar daftar; lalu Terapkan",
    "applyTitle": "Tulis data panel dan coba sync + nginx -t + reload",
    "applyToSystem": "Sinkronkan ke sistem",
    "createTitle": "Buat situs Nginx",
    "createDesc": "Terapkan diperlukan setelah membuat",
    "editTitle": "Sunting situs Nginx",
    "editDesc": "Terapkan diperlukan setelah menyimpan",
    "deleteTitle": "Hapus situs?",
    "deleteDesc": "Hapus situs ini?",
    "deleteTitleNamed": "Hapus situs {{name}}?",
    "deleteDescNamed": "Hapus {{name}} dari panel. Situs yang diterapkan juga akan menghapus konfigurasi nginx yang dikelolanya.",
    "invalidServerName": "Masukkan nama host yang valid (mis. app.example.com).",
    "needUpstream": "Upstream diperlukan untuk situs proksi terbalik.",
    "needRoot": "Root dokumen diperlukan untuk situs statis dan PHP.",
    "serverNameHint": "nama_server, mis. app.example.com",
    "kindLabel": "Jenis situs",
    "upstreamLabel": "Hulu",
    "upstreamHint": "misalnya 127.0.0.1:3000 atau http://backend:8080",
    "rootLabel": "Akar dokumen",
    "rootHintPhp": "Root dokumen proyek PHP, mis. /var/www/app/public",
    "rootHintStatic": "Jalur absolut ke file statis",
    "sslLabel": "Aktifkan blok SSL",
    "sslDesc": "Memancarkan mendengarkan 443 ssl; ikat sertifikat dari halaman SSL jika sudah siap",
    "saveThenApply": "Setelah disimpan, klik Apply untuk menulis konfigurasi nginx",
    "statProjectSites": "Proyek",
    "projectListTitle": "Lokasi proyek ({{count}})",
    "projectListDesc": "Konfigurasi yang dikelola panel dari publikasi proyek / goLive — buka tab Jaringan proyek untuk mengubah.",
    "colProject": "Proyek",
    "colRuntime": "Waktu proses",
    "colConf": "Konf",
    "confWritten": "Tertulis",
    "confMissing": "Tidak ada jalan",
    "projectEmptyTitle": "Belum ada proyek Nginx",
    "projectEmptyDesc": "Publikasikan Nginx dari tab Jaringan proyek setelah penerapan",
    "preview": "Pratinjau",
    "openProject": "Buka proyek",
    "projectPager": "Halaman situs proyek",
    "prevPage": "Sebelumnya",
    "nextPage": "Berikutnya",
    "pageOf": "Halaman {{page}} / {{total}} · {{count}}",
    "projectConfEmpty": "(file conf kosong)",
    "projectConfReadFail": "Gagal membaca konferensi proyek",
    "projectPreviewPath": "{{path}}",
    "pageDesc": "Situs Nginx",
    "filterSource": "Sumber",
    "sourceAll": "Semua",
    "sourceProject": "Proyek",
    "sourceStandalone": "Mandiri",
    "colSource": "Sumber",
    "filterProject": "Difilter berdasarkan proyek",
    "globalSettings": "Pengaturan global",
    "siteSettings": "Pengaturan situs",
    "saveApply": "Simpan & terapkan",
    "settingsSaved": "Disimpan",
    "setGzip": "Gzip",
    "setShowVersion": "Tampilkan versi server",
    "setShowVersionDesc": "Mati = server_tokens mati",
    "setHttp2": "HTTP/2 (SSL)",
    "setBody": "Tubuh maksimal",
    "setKeepalive": "Tetap hidup",
    "setAccessLog": "Catatan akses",
    "logOn": "Pada",
    "logBuffered": "Disangga",
    "logOff": "Mati",
    "setForceHttps": "Paksa HTTPS",
    "setHsts": "HSTS",
    "setCfRealIp": "IP Asli Cloudflare",
    "setIndexes": "Daftar direktori",
    "bodyInherit": "Global",
    "stopSites": "{{n}} situs akan berhenti menjawab HTTP."
  },
  "notFound": {
    "title": "Halaman tidak ditemukan",
    "body": "Tidak ada halaman panel di {{path}}.",
    "hint": "URL yang tidak dikenal tidak lagi mengirim Anda ke dasbor.",
    "home": "Dasbor"
  },
  "notes": {
    "agents": {
      "sessionNotFound": "Sesi tidak ditemukan: {{sessionId}}"
    },
    "notFound": "Tidak ditemukan",
    "needPath": "Tentukan jalur",
    "needName": "Masukkan nama",
    "needHost": "Masukkan host",
    "needDomain": "Masukkan domain",
    "needProjectName": "Masukkan nama proyek",
    "needServerIp": "Tentukan IP server",
    "passwordMin8": "Kata sandi minimal harus 8 karakter",
    "invalidPath": "Jalur tidak valid",
    "invalidIp": "Alamat IP tidak valid",
    "invalidIp46": "IPv4/IPv6 tidak valid",
    "invalidPackageName": "Nama paket tidak valid",
    "fileMissing": "Berkas tidak ada",
    "notRegularFile": "Bukan file biasa",
    "readFailed": "Gagal membaca",
    "pathResolveFailed": "Gagal menyelesaikan jalur",
    "fieldInvalid": "Bidang tidak valid {{field}}: {{value}}",
    "apt": {
      "updateIndex": "Perbarui indeks paket"
    },
    "state": {
      "closed": "Tertutup",
      "active": "Aktif"
    },
    "cat": {
      "security": "Keamanan",
      "mail": "Surat",
      "database": "Basis data",
      "runtime": "Waktu proses"
    },
    "ssh": {
      "identityNotFound": "Identitas tidak ditemukan",
      "registrationNotFound": "Pendaftaran tidak ditemukan",
      "keyOkNologin": "Key accepted. Account has no login shell (nologin) — use SFTP. Treated as PASS.",
      "keyOkSftp": "SFTP pwd berhasil setelah shell SSH ditolak."
    },
    "cdn": {
      "siteNotFound": "Situs CDN tidak ditemukan",
      "nodeMissing": "Node tidak ada",
      "loopbackOriginRemote": "Asal adalah 127.0.0.1 — yaitu host ini, bukan edge jarak jauh. Tetapkan IP asal yang dapat dijangkau atau bind_ip.",
      "originRemoteRewrite": "Tepi jarak jauh akan menggunakan asal yang dapat dijangkau {{url}} alih-alih loopback.",
      "originRemoteUnknown": "Asal adalah loopback dan tidak ada IP publik/LAN atau bind_ip yang diketahui — apply akan menolak tepi jarak jauh sampai ada yang disetel.",
      "needSshOrFleet": "Tepi jarak jauh memerlukan identitas SSH keluar (atau nama pengguna) atau sesi armada /agents. URL kesehatan saja tidak menerapkan transportasi.",
      "probe": {
        "timeout": "Hubungkan batas waktu setelah {{ms}}ms ({{detail}}). Rekan mungkin di-firewall.",
        "dns": "Pencarian DNS gagal ({{detail}}).",
        "refused": "Koneksi ditolak setelah {{ms}}ms ({{detail}}). Pelabuhan tertutup atau blok satu arah.",
        "tls": "Verifikasi TLS gagal ({{detail}}).",
        "unreach": "Host tidak dapat dijangkau setelah {{ms}}ms ({{detail}}).",
        "http": "Pemeriksaan HTTP gagal setelah {{ms}}ms ({{detail}})."
      }
    },
    "backup": {
      "testUnsaved": "Menguji nilai formulir yang belum disimpan (tidak ditulis ke pengaturan).",
      "testIdentity": "ssh (identity) to {{spec}} ok",
      "sshAuthFailed": "Kunci SSH atau kata sandi ditolak (kunci publik). Pilih identitas keluar atau instal sshpass.",
      "remotePathIsFile": "Jalur jarak jauh {{path}} adalah sebuah file. Gunakan direktori.",
      "remoteMkdirFailed": "Tidak dapat membuat direktori jarak jauh: {{detail}}",
      "sidecarPushed": "Juga mendorong sespan SQL {{name}}",
      "fileNotFound": "File cadangan tidak ditemukan",
      "resticNoPassword": "restic diaktifkan tetapi kata sandi tidak disetel",
      "resticNotInPath": "istirahat tidak di PATH",
      "dbEnvUnreadable": "Tidak dapat membaca .db.env; melewatkan dump SQL.",
      "dbEnvNoName": ".db.env tidak memiliki nama basis data; melewatkan dump SQL.",
      "targetOutside": "Target pemulihan harus berada di dalam rumah proyek atau root file publik.",
      "controlPlaneDryRun": "Hanya pratinjau — tidak ada yang tertulis. Di panel, gunakan Pulihkan dan konfirmasikan frasa yang akan ditulis.",
      "controlPlaneNeedConfirm": "Pemulihan bidang kontrol penuh memerlukan frasa konfirmasi RESTORE-CONTROL-PLANE.",
      "controlPlaneRestartAfter": "Mulai ulang API setelah pemulihan berhasil.",
      "movedToTrash": "Memindahkan {{name}} ke keranjang sampah. Penghapusan permanen setelah {{days}} hari.",
      "restoreNameExists": "Tidak dapat memulihkan {{name}} — arsip aktif dengan nama tersebut sudah ada.",
      "restoredFromTrash": "Dipulihkan {{name}} dari keranjang sampah.",
      "trashEmptied": "Menghapus {{n}} arsip secara permanen dari keranjang sampah.",
      "partialOk": "Keberhasilan sebagian — {{n}} proyek dilewati"
    },
    "health": {
      "portListening": "Port {{port}} sedang mendengarkan",
      "portNotListening": "Port {{port}} tidak mendengarkan",
      "httpOk": "HTTP Oke {{status}}",
      "httpFail": "HTTP gagal: {{detail}}"
    },
    "redis": {
      "cliMissing": "redis-cli tidak diinstal",
      "requirepassAlreadySet": "Redis sudah memiliki persyaratan — tidak ditimpa.",
      "requirepassApplied": "requirepass diterapkan saat runtime",
      "requirepassApplyFailed": "Tidak dapat CONFIG SET requirepass (akan bergantung pada restart + conf)",
      "generatedRequirepass": "Kata sandi Redis yang dihasilkan (ditampilkan sekali): {{password}}"
    },
    "nginx": {
      "reloaded": "nginx dimuat ulang",
      "configOk": "Pemeriksaan konfigurasi Nginx berhasil",
      "reloadExit": "Kode keluar isi ulang Nginx={{code}}",
      "managedDir": "Dir konfigurasi terkelola: {{path}}",
      "includeHint": "Di nginx: sertakan {{path}}/*.conf;",
      "removedOrphan": "Menghapus conf nginx yatim piatu {{path}}",
      "keptLiveSsl": "Pertahankan blok HTTPS langsung di {{path}} (template terkelola tidak dapat didengarkan 443)",
      "orphanCleanupFailed": "Pembersihan nginx yatim piatu gagal: {{detail}}",
      "settingsWritten": "Cuplikan global Nginx ditulis",
      "settingsNeedExecute": "Terapkan kebutuhan YSK_EXECUTE",
      "reloadFailed": "pemuatan ulang nginx gagal"
    },
    "ssl": {
      "requestCert": "Minta sertifikat"
    },
    "ftp": {
      "startVsftpd": "Mulai vsftpd",
      "writeVsftpd": "Tulis konfigurasi vsftpd",
      "vsftpdStarted": "vsftpd dimulai",
      "openPortsStep": "Port firewall (manual)",
      "openPortsReminder": "Buka port TCP di firewall host dan grup keamanan cloud: {{ports}}. Penerapan FTPS tidak membuka port untuk Anda.",
      "openPortsPasvHint": "Jika proses masuk berhasil tetapi DAFTAR direktori habis, rentang data PASV diblokir — buka yang lengkap",
      "publicPlaintextBlocked": "Menolak untuk memulai FTP publik tanpa FTPS. Ikat ke host ini saja, aktifkan FTPS dengan sertifikat, atau konfirmasikan PLAINTEXT untuk mengekspos teks jelas pada alamat publik."
    },
    "deploy": {
      "nodeMissingIsolated": "Biner node hilang untuk penerapan terisolasi: {{path}} — instal Node {{version}} toolchain lalu terapkan ulang. Menolak untuk menulis unit yang akan menjadi 203/EXEC.",
      "nodeMissing": "Biner node hilang: {{path}} — instal toolchain (Node {{version}}) lalu terapkan ulang",
      "nodeRejectedPath": "Biner simpul ditolak untuk pengguna proyek: {{path}} — gunakan {{planned}}",
      "unitUnhealthy": "unit systemd tidak sehat ({{detail}}). journalctl -u {{unit}} — 203/EXEC sering kali berarti biner tidak dapat dieksekusi oleh pengguna proyek",
      "skippedPanelNode": "Melewati panel Node di {{path}} (tidak dapat dieksekusi oleh pengguna proyek; akan menyebabkan systemd 203/EXEC)",
      "usingFallback": "Biner simpul: menggunakan {{path}} (direncanakan {{planned}} tidak ditemukan)",
      "usingPanelExec": "Biner simpul: mundur ke panel execPath {{path}}",
      "usingPanelDegraded": "Biner node: penerapan terdegradasi menggunakan panel {{path}} (bukan untuk Systemd User=ysks_*)",
      "nodeNotFoundPlanned": "Node {{version}} biner tidak ditemukan di host — unit akan menggunakan {{planned}}; instal toolchain lalu terapkan ulang"
    },
    "files": {
      "needSrcDst": "Tentukan jalur sumber dan tujuan",
      "pathOutsideSandbox": "Jalur di luar kotak pasir: {{target}}",
      "notFoundRel": "Tidak ditemukan: {{relPath}}",
      "fileNotFoundRel": "Berkas tidak ditemukan: {{relPath}}",
      "notFoundFrom": "Tidak ditemukan: {{fromPath}}",
      "alreadyExists": "Sudah ada: {{name}}"
    },
    "dns": {
      "needZoneServerIp": "Masukkan zona dan IP server",
      "noClusterPeer": "Tidak ada rekan cluster yang terdaftar",
      "planOnly": "Hanya paket — atur apply=true (root + YSK_EXECUTE) untuk diinstal ke /etc/powerdns dan temukan kembali",
      "needRootNamed": "Perlu root + EXECUTE untuk memperbarui /etc/powerdns/named.conf dan menemukan kembali zona",
      "noManagedZonesClear": "Tidak ada file zona terkelola di bawah dataDir/dns/zones — yang akan menghapus penyertaan PowerDNS YSK",
      "bindRegistered": "PowerDNS BIND: {{count}} zona terdaftar (daftar zona dikonfirmasi)",
      "listZonesIncomplete": "zona bernama.conf/runtime diperbarui tetapi zona daftar tidak mengonfirmasi semua zona — tidak menandai dimuat (periksa log pdns/bind-config)",
      "noLaunchDefaultBind": "tidak ada peluncuran= ditemukan — defaultnya adalah jalur pengikatan",
      "writeNotAnswerDig": "Menulis file zona saja tidak menjawab penggalian — muat ke PowerDNS (ikat bernama.conf + temukan kembali)",
      "bindDigFailed": "Zona terdaftar tetapi penggalian SOA gagal — tidak diklaim dimuat",
      "bindLoadedOk": "Zona {{zone}} terdaftar melalui PowerDNS BIND bernama.conf + dig OK",
      "bindSyncFailed": "Sinkronisasi BIND bernama.conf gagal atau penggalian tidak menjawab",
      "bindSkipPdnsutil": "Melewati jalur BIND (backend lebih memilih pdnsutil)",
      "pdnsCtlNoConfirm": "pdns_control ada tetapi zona tidak dikonfirmasi; periksa /etc/powerdns/named.conf atau gunakan backend pdnsutil",
      "usingExistingZone": "Menggunakan file zona yang ada: {{path}}",
      "healNeedRoot": "Perlu root + EXECUTE untuk menulis ulang alamat lokal pdns",
      "pdnsUnitActive": "unit pdns: aktif",
      "pdnsUnitInactive": "unit pdns: tidak aktif",
      "udp53Listening": "UDP/53: mendengarkan",
      "udp53NotListening": "UDP/53: masih tidak mendengarkan",
      "healResyncOk": "Pendengar yang disembuhkan + menyinkronkan ulang zona terkelola ke PowerDNS BIND",
      "healResyncPartial": "Pendengar sudah pulih tetapi sinkronisasi ulang zona belum selesai — klik Tulis & muat zona / muat powerdns",
      "installAfterLoad": "Setelah instalasi, terapkan zona DNS (tulis bernama.conf + temukan kembali) atau POST powerdns/load",
      "bindFileNotEnough": "BIND backend: file zona saja tidak menjawab dig sampai bernama.conf menyertakannya",
      "zeroDomainsHint": "Zona daftar PowerDNS: 0 — file zona pada disk tidak dimuat (bernama",
      "localAFailed": "lokal Penyelidikan gagal untuk www/ftp/@ di bawah {{zone}}",
      "publicNsCloudflare": "NS publik adalah DNS/CDN pihak ketiga (misalnya Cloudflare) — penggalian publik TIDAK akan menggunakan zona host ini",
      "publicNsOther": "NS publik bukan host ini — pemeriksaan di seluruh dunia mengabaikan PowerDNS lokal hingga NS registrar berubah",
      "publicNsHere": "NS publik terlihat seperti server nama dalam zona (ns1/ns2.zone) — dunia mungkin menanyakan Anda",
      "firewall53Hint": "UDP/53 tidak mendengarkan dari ss — buka firewall 53 keduanya (TCP+UDP) jika penggalian eksternal gagal",
      "applyDigOk": "PowerDNS BIND: daftar-zona + gali OK",
      "applyDigFail": "Zona terdaftar di conf tetapi penggalian masih kosong/DITOLAK — tidak ada penandaan yang diterapkan",
      "applySyncIncomplete": "Sinkronisasi pengikatan PowerDNS tidak lengkap — file zona hanya pada disk (tidak diterapkan). Perbaiki log EXECUTE/root atau pdns.",
      "writeOnlyHint": "Hanya file zona yang ditulis — PowerDNS tidak akan menjawab sampai memuat/menerapkan register yang diberi nama",
      "noActiveUnit": "Tidak ada unit bernama/bind9/pdns yang aktif",
      "pdnsUnitRestarts": "status unit pdns/mulai ulang: {{detail}}",
      "port53LoopbackOnly": "Port 53 hanya dalam loopback (diselesaikan sistem 127.0.0.53) — bukan server nama otoritatif produk",
      "port53Closed": "Port 53 tidak mendengarkan (UDP/TCP)",
      "udp53NotPublic": "UDP/53 tidak mendengarkan pada alamat publik",
      "tcp53NotPublic": "TCP/53 tidak mendengarkan pada alamat publik",
      "noManagedZones": "Tidak ada file zona terkelola di bawah dataDir/dns/zones",
      "pdnsListZones": "Zona daftar PowerDNS: {{n}}",
      "lookupIgnoredAt": "dig tidak tersedia — @{{server}} diabaikan. Tidak menggunakan pemecah masalah sistem sebagai jawaban server tersebut.",
      "digNotInstalled": "penggalian tidak diinstal",
      "digEmpty": "menggali: tidak ada jawaban",
      "localAOk": "lokal A {{name}} → {{ip}}"
    },
    "db": {
      "needExecuteCreate": "Eksekusi host tidak aktif; tidak dapat membuat database dari panel",
      "dryRunMysql": "uji coba: database tidak dibuat. Gunakan --execute dengan YSK_EXECUTE=1 untuk menyediakan",
      "remoteNoCreds": "Tidak ada nama pengguna/kata sandi yang disimpan — hanya TCP (pendaftaran bukan login).",
      "remoteReachable": "TCP {{host}}:{{port}} terbuka ({{ms}}ms).",
      "remoteUnreachable": "TCP {{host}}:{{port}} ditutup atau difilter ({{ms}}ms)."
    },
    "net": {
      "invalidIface": "Nama antarmuka tidak valid",
      "invalidDev": "Nama perangkat tidak valid",
      "needNmActive": "Tidak dapat bertahan: memerlukan koneksi NetworkManager yang aktif"
    },
    "project": {
      "notFound": "Proyek tidak ditemukan: {{id}}",
      "docRootMustBeRelative": "Akar dokumen harus relatif terhadap asal proyek (bukan jalur absolut).",
      "docRootInvalid": "Akar dokumen tidak valid (tidak ada .. atau karakter ilegal).",
      "domainInvalid": "Nama domain tidak valid: {{domain}}",
      "domainInUse": "Domain {{domain}} sudah digunakan oleh proyek “{{other}}”."
    },
    "email": {
      "domainNotFound": "Domain email tidak ditemukan: {{id}}",
      "wroteNginx": "Menulis konfigurasi Nginx: {{nginxPath}}",
      "wrotePath": "Menulis {{path}}",
      "domainDeleted": "Domain dihapus {{domain}} ({{mailboxes}} kotak surat, {{aliases}} alias)",
      "domainDataDirRemoved": "Direktori data lokal dihapus {{path}}",
      "domainDataDirRemoveFailed": "Tidak dapat menghapus direktori data {{path}}: {{detail}}",
      "domainDeleteSystemHint": "Bidang kendali dihapus; terapkan kembali domain yang tersisa atau bersihkan peta MTA sistem jika diperlukan",
      "mailboxDeleted": "Kotak surat dihapus {{address}}",
      "mailboxNotFound": "Kotak surat tidak ditemukan",
      "mailboxDataRemoved": "Menghapus jalur lokal {{path}}",
      "domainDeleteConfirmMismatch": "Konfirmasikan nama tidak cocok dengan domain; penghapusan ditolak",
      "domainDataKept": "Menyimpan data email dataDir lokal (removeData=false)",
      "mailboxPasswordUpdated": "Kata sandi diperbarui untuk {{address}}",
      "mailboxStatusUpdated": "Status untuk {{address}} disetel ke {{status}}",
      "mailboxUpdateEmpty": "Tidak ada yang perlu diperbarui — berikan kata sandi dan/atau status",
      "mailboxStatusInvalid": "Status kotak surat tidak valid",
      "mailboxNoChanges": "Tidak ada perubahan yang diterapkan",
      "dovecotApplyNeedRoot": "Penerapan autentikasi virtual Dovecot memerlukan root + YSK_EXECUTE",
      "dovecotNotInstalled": "Dovecot tidak diinstal pada host ini",
      "dovecotNoPassdbSnippets": "Tidak ada cuplikan passdb domain yang ditemukan di dataDir/email",
      "dovecotApplyFailed": "Penerapan autentikasi virtual Dovecot gagal: {{detail}}",
      "dovecotApplyOk": "Autentikasi virtual Dovecot terpasang ({{conf}}, {{count}} cuplikan domain)",
      "dovecotPassdbWrittenNeedApply": "File passwd ditulis di bawah dataDir - jalankan apply (EXECUTE+root) sehingga Dovecot memuatnya",
      "postqueueSetgidBroken": "Alat antrian postfix gagal: setgid_group kosong di main.cf. Setel setgid_group=postdrop (panel mencoba memperbaiki ketika YSK_EXECUTE aktif).",
      "postqueueMailDown": "Postfix tidak berjalan (showq tidak tersedia). Panel mencoba memulainya ketika YSK_EXECUTE aktif — periksa tab Perangkat Lunak/status sistemctl postfix.",
      "postqueueSpoolMissing": "Direktori antrian postfix tidak ada (misalnya hold/). Panel mencoba membuat spool tree dan memulai Postfix ketika YSK_EXECUTE aktif.",
      "invalidDomain": "Masukkan domain email yang valid",
      "invalidServerIp": "Masukkan IP server yang valid",
      "mailboxLocalPartInvalid": "Bagian lokal kotak surat hanya boleh menggunakan huruf, angka, . _ + -",
      "passwordTooShort": "Kata sandi minimal harus 8 karakter"
    },
    "software": {
      "startUnit": "Mulai {{u}}",
      "installedSpec": "Dipasang {{title}}",
      "installPkg": "Instal {{p}}",
      "npmGlobal": "npm instal -g {{pkgs}}",
      "needNodeForNpm": "node/npm tidak ditemukan — instal Node.js sebelum {{title}}",
      "uninstallNoTargets": "Tidak ada perangkat lunak yang dipilih untuk dihapus instalasinya",
      "uninstallNothingInstalled": "Tidak ada yang diinstal untuk cakupan yang dipilih",
      "uninstallProtected": "Komponen yang dilindungi dilewati: {{ids}}",
      "uninstallConfirmMismatch": "Frasa konfirmasi tidak cocok",
      "uninstallOk": "{{n}} komponen yang telah dicopot pemasangannya",
      "uninstallPartial": "Pencopotan pemasangan selesai dengan kesalahan — periksa langkah-langkahnya"
    },
    "php": {
      "aptPackages": "Akan menginstal paket {{count}}: {{list}}"
    },
    "runtime": {
      "plugins": "Alat pendamping: {{list}}",
      "pluginsOk": "Alat pendamping terpasang",
      "pluginsFailed": "Beberapa alat gagal atau dilewati: {{list}}",
      "pluginsUninstall": "Copot pemasangan alat: {{list}}",
      "pluginsUninstallOk": "Alat pendamping dicopot pemasangannya",
      "pluginsUninstallFailed": "Beberapa alat gagal dicopot pemasangannya atau dilewati: {{list}}",
      "pluginsNoneToUninstall": "Tidak ada alat untuk dihapus instalasinya (sudah hilang atau diperlukan)"
    },
    "approval": {
      "notFound": "Persetujuan tidak ditemukan: {{id}}"
    },
    "readiness": {
      "core": "Pesawat kendali",
      "security": "Izin & keamanan",
      "binaries": "Biner / paket",
      "hosting": "Tuan rumah",
      "dns": "DNS",
      "email": "E-mail",
      "isolation": "Isolasi proyek",
      "ops": "Operasi",
      "runtimesNode": "Node.js",
      "runtimesPhp": "PHP",
      "runtimesPython": "ular piton",
      "runtimesGo": "Go",
      "pm2": "PM2",
      "runtimesNodeFix": "Instal Node dari /runtimes/node",
      "runtimesPhpFix": "Instal PHP dari /runtimes/php",
      "runtimesPythonFix": "Instal Python dari /runtimes/python",
      "runtimesGoFix": "Instal Go dari /runtimes/go",
      "pm2Fix": "Instal PM2 dari halaman runtime Node"
    },
    "needAdmin": "Izin administrator diperlukan",
    "notInstalled": "Tidak dipasang",
    "unknown": "Tidak dikenal",
    "failed": "Gagal",
    "running": "Berlari",
    "stopped": "Berhenti",
    "probe": "Menguji",
    "install": "Memasang",
    "port": "Pelabuhan",
    "git": {
      "missingBin": "git tidak ada di PATH",
      "auth": "Otentikasi gagal. Tambahkan kunci penerapan atau token HTTPS.",
      "hostkey": "Verifikasi kunci host SSH gagal. Konfirmasikan dan sematkan kunci host.",
      "dirty": "Pohon yang berfungsi memiliki {{count}} perubahan lokal. Tarikan diblokir.",
      "diverged": "Tidak dapat mempercepat. Reset ke referensi jarak jauh jika Anda ingin membuang riwayat Git lokal.",
      "missingRef": "Cabang, tag, atau komit itu tidak ada di remote.",
      "shallow": "Klon ini dangkal. Ambil riwayat lengkap sebelum menyematkan komitmen lama.",
      "notRepo": "app/ belum merupakan repositori Git.",
      "diffEmpty": "Tidak ada perbedaan yang tidak dipentaskan (tidak termasuk .env yang dilindungi).",
      "unrelated": "Sejarah yang tidak berhubungan. Klon ulang hanya setelah konfirmasi — file khusus akan hilang.",
      "lock": "Git index.lock hadir. Hapus hanya jika tidak ada proses git yang berjalan.",
      "disk": "Disk penuh atau kuota terlampaui.",
      "timeout": "Waktu Git habis.",
      "network": "Kesalahan jaringan saat berbicara dengan remote.",
      "lfs": "Repo ini menggunakan Git LFS dan git-lfs tidak tersedia.",
      "submodule": "Pembaruan submodul gagal.",
      "unknown": "Git gagal. Lihat keluaran perintah.",
      "fetchOk": "Diambil dari asal.",
      "checkoutOk": "Sudah diperiksa {{ref}}.",
      "resetOk": "Setel ulang dengan susah payah ke {{ref}}.",
      "envRestored": "Memulihkan app/.env dari bidang kontrol.",
      "needPinHost": "Kunci host SSH tidak disematkan. Pindai dan sematkan sebelum mengkloning atau mengambil.",
      "tokenSaved": "Token HTTPS disimpan (tidak pernah ditampilkan lagi).",
      "tokenCleared": "Token HTTPS dihapus.",
      "tokenInvalid": "Token minimal harus terdiri dari 8 karakter.",
      "deployKeyCreated": "Kunci penerapan telah dibuat. Tambahkan kunci publik pada host Git.",
      "deployKeyCleared": "Kunci penerapan terlepas dari proyek ini.",
      "hostPinned": "Kunci host SSH yang disematkan untuk {{host}}.",
      "hostUnpinned": "Menghapus kunci host SSH yang disematkan.",
      "hostScanFailed": "ssh-keyscan tidak mengembalikan kunci untuk host itu.",
      "hookEnabled": "Kait Git masuk aktif. Tempel sendiri URL tersebut ke GitHub, Gitea, atau GitLab.",
      "hookDisabled": "Kait Git masuk tidak aktif. URL tidak akan disinkronkan.",
      "hookSecretOnce": "Salin rahasia kait ini sekarang. Itu tidak ditampilkan lagi.",
      "refsNeedUrl": "Masukkan URL Git terlebih dahulu.",
      "refsOk": "Memuat {{branches}} cabang dan {{tags}} tag.",
      "refsEmpty": "Remote yang diiklankan tidak ada cabang atau tag."
    },
    "auto": {
      "n0001": "Status: diterapkan",
      "n0002": "Pengguna tidak ditemukan",
      "n0003": "diblokir: membutuhkan YSK_EXECUTE=1",
      "n0004": "Sumber daya tidak ditemukan",
      "n0005": "Tidak dapat diterapkan pada host: memerlukan YSK_EXECUTE + root",
      "n0006": "Eksekusi host diperlukan",
      "n0007": "Status: tertulis",
      "n0008": "Hak istimewa root diperlukan untuk menyelesaikan ini",
      "n0009": "buatdatabase",
      "n0010": "Selesai",
      "n0011": "Tidak ditemukan",
      "n0012": "Status: gagal",
      "n0013": "tidak berjalan",
      "n0014": "awal",
      "n0015": "Tidak diinstal mysql",
      "n0016": "Tidak diinstal psql",
      "n0017": "firewall UFW",
      "n0018": "Waktu proses",
      "n0019": "Tidak ditemukan cron",
      "n0020": "",
      "n0021": "Kebijakan tidak diterapkan: 0/1 admin mengaktifkan 2FA",
      "n0022": "Admin autentikasi dua faktor",
      "n0023": "Log biner (replikasi)",
      "n0024": "Tidak ditemukan",
      "n0025": "Perubahan sistem dinonaktifkan",
      "n0026": "Pemutus arus larangan otomatis tersandung",
      "n0027": "Silakan tentukan agentId",
      "n0028": "Proyek tidak ditemukan",
      "n0029": "membutuhkan nama",
      "n0030": "Keadaan darurat",
      "n0031": "melarang tidak mengaktifkan",
      "n0032": "uji coba: ini bukan sistem",
      "n0033": "uji coba: bukan sistem",
      "n0034": "1 replika",
      "n0035": "pemeriksaan simpul Sukses",
      "n0036": "eksekusi serverHost tidak diaktifkan, tidak dapat melakukan rsync",
      "n0037": "menerapkan kembali langkah-langkah kunciGagal",
      "n0038": "tidak dapat melakukan bootstrap: tidak mengaktifkan YSK_EXECUTE",
      "n0039": "bootstrap Membutuhkan YSK_EXECUTE=1",
      "n0040": "Koneksi maksimal",
      "n0041": "Ikat alamat",
      "n0042": "domain",
      "n0043": "menguras",
      "n0044": "Tidak ditemukan simpul CDN",
      "n0045": "(GitHub Rilis terbaru)",
      "n0046": "jalankan (direktori sistem YSK_EXECUTE)",
      "n0047": "dry-run: tambahkan --execute terlebih dahulu ke sistem nginx",
      "n0048": "membutuhkanadmin",
      "n0049": "projectId dan nama",
      "n0050": "^.*akun atau kata sandi.*$",
      "n0051": "^.*membutuhkan verifikasi.*$",
      "n0052": "echo \"pdnsutil Tidak ditemukan: \" >&2",
      "n0053": ": ''}(Mungkin tidak bertahan saat reboot; gunakan Simpan untuk bertahan)",
      "n0054": "# rsa_cert_file= (bukan sertifikat)",
      "n0055": "$_GET / $_POST / $_COOKIE",
      "n0056": "--kata sandi, atau YSK_MIGRATE_SSH_PASSWORD",
      "n0057": "-1 nonaktifkan; 0",
      "n0058": "/proc/meminfo bisa",
      "n0059": "/proc/stat can — CPU% tidak bisa",
      "n0060": "0 = batas; bisa 256mb",
      "n0061": "0 = gunakan semua CPU",
      "n0062": "0 (mati)",
      "n0063": "Beban 1 menit melebihi CPU × 2",
      "n0064": "1. panelmembuat database MySQL",
      "n0065": "1 = paling aman; 2 = kinerja lebih baik",
      "n0066": "2. WordPress ke aplikasi/publik",
      "n0067": "3. pengaturan wp-config.php",
      "n0068": "4.PHP + Nginx/SSL",
      "n0069": "IPv4",
      "n0070": "IPv4",
      "n0071": "AAAA IPv6",
      "n0072": "AAAA IPv6",
      "n0073": "AOF tetap ada",
      "n0074": "File Admin tidak ada; silakan unduh:benar",
      "n0075": "Agen tidak dapat menulis",
      "n0076": "Agen berjalan",
      "n0077": "Daftar yang diizinkan",
      "n0078": "Aksum + Tokio; peti pembuatan kargo ()",
      "n0079": "Axum: pembuatan kargo --release crates.io",
      "n0080": "Lewati penyelesaian nama",
      "n0081": "Server pemeriksaan",
      "n0082": "Server kumpulan karakter",
      "n0083": "Simpul bootstrap ()",
      "n0084": "Pemindaian bot",
      "n0085": "CLI OPcache",
      "n0086": "CONFIG SET database tidak Berhasil (bisa restart)",
      "n0087": "CPU untuk 1–10.000",
      "n0088": "Cloudflare UA tidak Berhasil",
      "n0089": "Tolong Cloudflare Sedang Diserang",
      "n0090": "Cookie Aman (HTTPS)",
      "n0091": "Indeks DB untuk 0–15",
      "n0092": "Pengguna sistem tidak dibuat untuk proyek ini",
      "n0093": "ID DB Pengguna tidak ditemukan — silakan buat pengguna sistem",
      "n0094": "DB_PASSWORD untuk — silakan buat halaman MySQL atau WP_DB_*",
      "n0095": "DDoS",
      "n0096": "DKIM",
      "n0097": "DMARC",
      "n0098": "DNS tertulis ≠ penyelesai ( TTL/)",
      "n0099": "Tolong registrar DS.",
      "n0100": "Django: pip install Django/gunicorn",
      "n0101": "Turun konfirmasiNama dllantarmuka",
      "n0102": "Layanan Email dataDir — basis data ( dataDir Maildir)",
      "n0103": "Muat ulang FPM Gagal",
      "n0104": "FTPS memerlukan domain",
      "n0105": "FastAPI + uvicorn; persyaratan.txt; / dan /kesehatan",
      "n0106": "Labu app.py; persyaratan.txt; / dan /kesehatan",
      "n0107": "GTID: conf gtid_mode=AKTIF",
      "n0108": "Galera Mendukung mariadb",
      "n0109": "URL Git Tidak Valid",
      "n0110": "GitHub package.json Versi tidak ada",
      "n0111": "Rilis GitHub Tag yang hilang",
      "n0112": "Jalankan waktu proses",
      "n0113": "certbot",
      "n0114": "Konfigurasi HTTP dengan ACME webroot (bukan TLS)",
      "n0115": "HTTP Gagal",
      "n0116": "Aktifkan HTTPS",
      "n0117": "IMAP/POP Gagal",
      "n0118": "IP tidak (/ memperkaya)",
      "n0119": "IP Tidak Valid",
      "n0120": "IPv4 0–32",
      "n0121": "IPv6 0–128",
      "n0122": "Log siram InnoDB di trx commit",
      "n0123": "Ukuran file log InnoDB",
      "n0124": "Ukuran kumpulan buffer InnoDB",
      "n0125": "Instal dan publikasikan melalui panel admin (instal Webmail).",
      "n0126": "L7 banjir / lalu lintas tidak normal",
      "n0127": "LLM Tidak Normal (Hilang)",
      "n0128": "Mari Enkripsi HTTP-01 membutuhkan 80 kaleng; Token API DNS-01.",
      "n0129": "BatasNOFILE untuk 64–10000000",
      "n0130": "MTU 68–65535",
      "n0131": "Host surat MX",
      "n0132": "MX: host pertama (10 mail.example.com.)",
      "n0133": "server MariaDB",
      "n0134": "Mewajibkan klien untuk menggunakan TLS",
      "n0135": "server MySQL",
      "n0136": "Klien MySQL/MariaDB",
      "n0137": "NetworkManager tidak tersedia, tidak dapat menulis DNS",
      "n0138": "Batas kecepatan Nginx yang lebih ketat (~8 permintaan/dtk)",
      "n0139": "Batas kecepatan Nginx yang ketat (~3 persyaratan/dtk)",
      "n0140": "Batas kecepatan Nginx yang lembut (~20 permintaan/dtk)",
      "n0141": "fail2ban",
      "n0142": "Penginstalan Node gagal",
      "n0143": "Node.js",
      "n0144": "OPcache (MB)",
      "n0145": "Dokumen PHP + wp-config()",
      "n0146": "firewall (UFW)",
      "n0147": "Proses PHPmulaibukan proses",
      "n0148": "PHP terdegradasi — tidak dengan pengguna proyek Linux (Membutuhkan root + createsystemuser)",
      "n0149": "PID untuk",
      "n0150": "PID Tidak Valid",
      "n0151": "PING berhasil",
      "n0152": "Mulai PM2 gagal — pidfile mulai",
      "n0153": "postfix",
      "n0154": "POST",
      "n0155": "Per pengirim: pesan domain pengirim amplop/jam; DEFER_IF_PERMIT",
      "n0156": "Postfix menangguhkan peta Diterapkan (check_recipient_access REJECT)",
      "n0157": "Server PostgreSQL",
      "n0158": "Server PostgreSQLTidak diinstal",
      "n0159": "klien PostgreSQL",
      "n0160": "Layanan PostgreSQL tidak berjalan",
      "n0161": "Alat PowerDNS",
      "n0162": "Utama: membuat pengguna replikasi (SQL)",
      "n0163": "Python Django ()",
      "n0164": "redis-server",
      "n0165": "Perilaku ular piton",
      "n0166": "aturan RDB",
      "n0167": "RDB",
      "n0168": "RUSTFLAGS (membangun)",
      "n0169": "Redis dbIndex untuk 0–15",
      "n0170": "Redis dump Membutuhkan YSK_EXECUTE=1",
      "n0171": "Server ulang",
      "n0172": "Server RedisTidak terpasang atau tidak dapat tersambung",
      "n0173": "Redis mulai tidak bisa PING",
      "n0174": "Klien Redis",
      "n0175": "Mulai ulang",
      "n0176": "Pemulihan Redis memerlukan YSK_EXECUTE",
      "n0177": "Perpanjangan melalui certbot.timer (dns-01 )",
      "n0178": "Karat membangun/menjalankan",
      "n0179": "Bucket/jalur S3 bukan pengaturan",
      "n0180": "SFTP.ssh chown Membutuhkan root + YSK_EXECUTE",
      "n0181": "SIGKILL konfirmasi Pembunuhan: benar",
      "n0182": "SMTP /",
      "n0183": "SPF",
      "n0184": "SRV: target pelabuhan bobot prioritas",
      "n0185": "SSH",
      "n0186": "Koneksi SSHGagal",
      "n0187": "SSH Membutuhkan YSK_EXECUTE=1",
      "n0188": "Verifikasi SSO ()· kata sandi",
      "n0189": "Verifikasi SSO ()· kata sandi",
      "n0190": "SST=mariabackup: simpul mariadb-backup",
      "n0191": "Sidang",
      "n0192": "Sidang",
      "n0193": "Sidang",
      "n0194": "TCP (sedang digunakan)",
      "n0195": "TOTP Sukses",
      "n0196": "TasksMax untuk 1–1000000",
      "n0197": "UFW Tidak terpasang",
      "n0198": "Bacaan Status UFW gagal",
      "n0199": "VACUUM",
      "n0200": "WAL dll",
      "n0201": "Web + surat",
      "n0202": "UI Web: Tidak ditemukan: (buat aplikasi/web atau setel YSK_WEB_ROOT)\\n",
      "n0203": "Tuan rumah web",
      "n0204": "Antarmuka web",
      "n0205": "Verifikasi WebAuthnGagal",
      "n0206": "WebDAV tidak",
      "n0207": "Domain email web tidak valid",
      "n0208": "Kartubebas/dns-01: certbot TXT; panel akan memulai DNS DS/TXT selesai",
      "n0209": "WordPress (PHP)",
      "n0210": "YSK PHP OK — WordPress Belum diinstal\\\\n",
      "n0211": "YSK_EXECUTE aktif tetapi prosesnya bukan root — beberapa pemuatan ulang systemctl/nginx akan diblokir",
      "n0212": "YSK_EXECUTE aktifkan",
      "n0213": "YSK_EXECUTE tidak aktif — tertulis ≠ diterapkan",
      "n0214": "YSK_EXECUTE tidak aktif — mutasi host tetap tertulis/draf sampai Anda menyetel YSK_EXECUTE=1",
      "n0215": "log akses Gagal",
      "n0216": "access=armada memerlukan FleetAgentId",
      "n0217": "tindakan untuk reboot | matikan | membatalkan",
      "n0218": "puncak + www (tepi)+ host cdn",
      "n0219": "puncak server CNAME/",
      "n0220": "app.py — dilewati",
      "n0221": "diterapkan ≠ sehat — silakan selidiki wsrep",
      "n0222": "terapkan muat ulang sshd; Error Match can — uji coba pertama",
      "n0223": "applySystem menangguhkan/perubahan balasan otomatis",
      "n0224": "apply_status=tertulis (Sukses ≠ sistem MTA; tambahkan applySystem:true firstapply)",
      "n0225": "aplikasi/web/dist ada",
      "n0226": "apt list --upgradeable: (dapat diperbarui atau tidak Siap)",
      "n0227": "instalasi tepat gagal",
      "n0228": "apt-get Tersedia",
      "n0229": "penonaktifan vakum otomatis",
      "n0230": "diblokir: membutuhkan HostExecutor + YSK_EXECUTE=1",
      "n0231": "bootstrap: Node Gagal",
      "n0232": "bootstrap: apt Gagal",
      "n0233": "langkah kunci bootstrapGagal",
      "n0234": "Versi kandidat tidak",
      "n0235": "kargo / karat dll",
      "n0236": "certbot exit 0 — centang /etc/letsencrypt/live/",
      "n0237": "chown membutuhkan YSK_EXECUTE + root",
      "n0238": "klon (perancah / rintisan YSK)",
      "n0239": "cluster_size Tidak Diketahui atau 0",
      "n0240": "perintah ysk-server / ysk-server",
      "n0241": "file bidang kendali selesai",
      "n0242": "cwd bisa",
      "n0243": "dataDir",
      "n0244": "dataDir ysk.json — Status selesai",
      "n0245": "dataDir/email ada",
      "n0246": "dataDir/web ada",
      "n0247": "basis data Tidak ditemukan:",
      "n0248": "db-util (database pengguna FTP)",
      "n0249": "proyek deployNode Node",
      "n0250": "df Tersedia dudukan ( atau )",
      "n0251": "penggalian tidak tersedia, simpul dns",
      "n0252": "gali: tidak ada jawaban (NXDOMAIN atau kosong)",
      "n0253": "dns-01: panel TXT — selesai\" SSL\"",
      "n0254": "dnssec-dsfromkey bukan DS",
      "n0255": "dnssec-keygen PATH (apt install bind9-dnsutils)",
      "n0256": "dnssec-keygen gagal",
      "n0257": "dnssec-signzone tidak tersedia — keepkey/DS",
      "n0258": "dnssec-signzone tidak.ditandatangani",
      "n0259": "domain",
      "n0260": "domain Tidak ditemukan:",
      "n0261": "dovecot reload gagal atau servicenot (saringan Menulis; reload Sukses)",
      "n0262": "uji coba pengiriman armada (tidak diantrekan)",
      "n0263": "dorongan rekan kerja kering (bukan scp)",
      "n0264": "instalasi jarak jauh kering (bukan ssh)",
      "n0265": "transfer uji coba selesai (bootstrap penuh)",
      "n0266": "dry-run — lulus lamaran/eksekusi ke rumah",
      "n0267": "dry-run — lulus apply/execute benar-benar ssh",
      "n0268": "uji coba — bukan menulis /etc",
      "n0269": "uji coba: tambahkan --execute terlebih dahulu, terapkan ufw",
      "n0270": "dry-run: inventaris + preflight lolos, bukan paket/transfer",
      "n0271": "Uji coba: pemeriksaan/rencana saja. Lewati --execute dengan YSK_EXECUTE=1 untuk benar-benar menyediakan.",
      "n0272": "Uji coba: menulis file yang dikelola (dataDir). Lewati --execute dengan YSK_EXECUTE=1 sebagai root untuk menginstal drop-in sistem.",
      "n0273": "Uji coba: tidak dilarang. Lewati --execute dengan YSK_EXECUTE=1 untuk benar-benar melarang.",
      "n0274": "Uji coba: tidak dilarang. Lewati --execute dengan YSK_EXECUTE=1 untuk benar-benar membatalkan pelarangan.",
      "n0275": "dryRun=true — ubah API",
      "n0276": "dryRun: tidak menulis",
      "n0277": "dump Menulis dataDir, bukan transfer",
      "n0278": "aktifkan gagal",
      "n0279": "jalankan ( YSK_EXECUTE=1 + root)",
      "n0280": "eksekusi membutuhkan enqueue",
      "n0281": "ekspor admin",
      "n0282": "fail2ban applyGagal",
      "n0283": "layanan fail2ban",
      "n0284": "fail2ban tidak aktif",
      "n0285": "fail2ban tidak",
      "n0286": "fail2ban",
      "n0287": "fail2ban StatusBaca gagal",
      "n0288": "fail2ban: sshd, nginx-http-auth dan jail standar",
      "n0289": "fd tidak tersedia",
      "n0290": "file (berkas)",
      "n0291": "pembersihan armada diblokir — enqueue atau SSH",
      "n0292": "armada harap armada db-cluster --op probe --eksekusi",
      "n0293": "dari Admin Panel",
      "n0294": "fromPanel memerlukan peningkatan: POST /api/v1/auth/totp/step-up",
      "n0295": "sertifikat PEM rantai penuh",
      "n0296": "gerbang untuk IP",
      "n0297": "geo apex: EDNS tulis geo edge multi-A (·pengguna Anycast)",
      "n0298": "tepi geoMap — tepi",
      "n0299": "geo: bukan pengaturan geoMap — dll multi_a (tepi). silakan dns.geoMap wilayah→nodeIds",
      "n0300": "git biner Tidak ditemukan: di PATH",
      "n0301": "git biner",
      "n0302": "pergi biner",
      "n0303": "URL http(s) healthUrl",
      "n0304": "http-01 webroot — 80 kaleng ACME conf disebarkan",
      "n0305": "identitas bukan pengguna linux/proyek — tidak dapat mengotorisasi_kunci",
      "n0306": "abaikanip: dataDir/fail2ban/ignoreip.txt",
      "n0307": "index.html + CSS, root Nginx atau",
      "n0308": "instal conf → systemctl restart mariadb (bukan node bootstrap)",
      "n0309": "antarmuka alamat ip -j addr",
      "n0310": "manifes pekerjaan",
      "n0311": "jurnal; bisa izin",
      "n0312": "journalctl dapat memerlukan root atau pengguna systemd-journal/adm",
      "n0313": "kunci",
      "n0314": "Kunci hilang atau tidak dihapus",
      "n0315": "kill -0 Sukses: bisa untuk zombie atau izin",
      "n0316": "bunuh -0 gagal",
      "n0317": "Penerapan gagal pada host",
      "n0318": "Terapkan diblokir pada host",
      "n0319": "direktori cache lokal/",
      "n0320": "host lokal atau *",
      "n0321": "logis DB 0... N-1; memulai ulang",
      "n0322": "logrotate Terpasang",
      "n0323": "logrotate Tidak diinstal atau PATH",
      "n0324": "main.py — dilewati",
      "n0325": "kelola.py + pengaturan minimal/url/wsgi; pip instal Django",
      "n0326": "manifes dumpRelPath — bukan ？",
      "n0327": "manifes rdbRelPath",
      "n0328": "memoriMax 512M atau 1G",
      "n0329": "migrasi host --execute + YSK_EXECUTE=1, atau --dry-run ( inventaris+preflight)",
      "n0330": "migrasi pos --eksekusi YSK_EXECUTE=1 ( target)",
      "n0331": "migrasi pos Membutuhkan YSK_EXECUTE=1",
      "n0332": "migrasi pos Membutuhkan YSK_EXECUTE=1 ( target)",
      "n0333": "bootstrap minimal gagal",
      "n0334": "klien mysql / mariadb",
      "n0335": "replika mysql Mendukung mysql",
      "n0336": "nama mysql_databases",
      "n0337": "bernama-checkzone PATH - Menulis, bukan memverifikasi",
      "n0338": "nginx -t atau gagal memuat ulang",
      "n0339": "nginx -t tidak lulus, tidak memuat ulang",
      "n0340": "nginx reload ok · Status: diterapkan",
      "n0341": "pemuatan ulang nginx gagal",
      "n0342": "nginx biner",
      "n0343": "nginx tidak ditemukan",
      "n0344": "layanan nginx",
      "n0345": "Biner tidak di PATH; layanan tidak dapat siap",
      "n0346": "simpul bisa",
      "n0347": "npm versi Hilang terbaru",
      "n0348": "npm exit 0 Biner tidak ditemukan — paket tidak dapat CLI atau PATH tidak diperbarui",
      "n0349": "nullok bukan pengguna",
      "n0350": "nullok:.google_authenticator kunci yang tersedia pengguna",
      "n0351": "jalur open_basedir",
      "n0352": "openssl tidak tersedia, hash YSK-SCRYPT",
      "n0353": "biner openssl",
      "n0354": "opsionalDll Transfer gagal (dapat menargetkan sertifikat)",
      "n0355": "perisai asal: simpul ini untuk perisai, asal",
      "n0356": "proyek atau url origin.kind",
      "n0357": "origin.project memerlukan projectId",
      "n0358": "URL http(s) asal.url",
      "n0359": "originShieldNodeId edgeNodeIds",
      "n0360": "paket dump Tidak lengkap — transfer",
      "n0361": "paket Gagal — transfer",
      "n0362": "paket Membutuhkan YSK_EXECUTE=1",
      "n0363": "pam.d/sshd bukan pam_google_authenticator (tidak diterapkan)",
      "n0364": "panel bukan pengaturan 2FA atau rahasia — harap \"\" TOTP terlebih dahulu",
      "n0365": "rahasia panel TOTP — Web 2FA atau --from-panel pertama",
      "n0366": "login panel Gagal menulis, bisa gagal2 melarang log (jurnal atau )",
      "n0367": "kunci sandi",
      "n0368": "kunci sandi Gagal",
      "n0369": "kunci sandi Sukses",
      "n0370": "pdnsutil Tidak ditemukan: — instal alat PowerDNS atau jalankan skrip pembantu sebagai root setelah instalasi",
      "n0371": "pemeriksaan SSH rekan YSK_EXECUTE=1 (lokal)",
      "n0372": "rekan Tidak diperiksa ( selidiki lokal)",
      "n0373": "peer nodeapply conf dan bergabung",
      "n0374": "Biner php Tidak ditemukan: — instal php-cli",
      "n0375": "biner php",
      "n0376": "php bukan JALUR",
      "n0377": "pidfile dengan userstart (terdegradasi)",
      "n0378": "pidfile startbukan pid",
      "n0379": "pm2 PATH (Tersedia pidfile/systemd)",
      "n0380": "pm2 Tidak ditemukan: di PATH — instal: npm i -g pm2",
      "n0381": "pasca transfer mengajukan permohonan kembali",
      "n0382": "pemulihan pasca transfer",
      "n0383": "postconf bukan message_rate_limit (selesai diterapkan)",
      "n0384": "postgres-replika Mendukung postgres",
      "n0385": "nama postgres_databases",
      "n0386": "postqueue tidak tersedia atau mailNot diinstal",
      "n0387": "Instal nginx pada host, atau gunakan perangkat lunak panel/instal runtime",
      "n0388": "Instal nginx pada sistem, atau gunakan perangkat lunak panel/instal runtime",
      "n0389": "kunci privat PEM",
      "n0390": "produksiSiap tidak (datacan )",
      "n0391": "hal",
      "n0392": "ps Terdegradasi: --sort/",
      "n0393": "ps Terdegradasi: pri/vsz/stat dll",
      "n0394": "klien psql",
      "n0395": "pembersihan Gagal atau target",
      "n0396": "biner python3",
      "n0397": "antri ≠ pembersihan tepi",
      "n0398": "antri ≠ edge reload — agen dan cdn.edge.apply",
      "n0399": "antri ≠ edge — Agen keluar/JSON",
      "n0400": "jalur nyata",
      "n0401": "jalur nyata",
      "n0402": "mengajukan permohonan kembali Membutuhkan YSK_EXECUTE=1",
      "n0403": "cluster redisMendukung redis",
      "n0404": "registry shasum bukan sha256 (npm sha1)— dengan integritas npm untuk",
      "n0405": "muat ulang/mulai ulang gagal",
      "n0406": "kiriman jarak jauh Gagal — dapat menargetkan kiriman migrasi",
      "n0407": "pencadangan restic selesai (keluar restic tertulis/diterapkan)",
      "n0408": "restic diaktifkan tetapi kata sandi tidak disetel — tolak kata sandi (harap buat cadangan pengaturan)",
      "n0409": "jangan istirahat",
      "n0410": "restic not — tidak dapat memotret",
      "n0411": "restic not — harap aktifkan \"/\" terlebih dahulu dan atur kata sandi",
      "n0412": "restic dinonaktifkan (hanya tar)",
      "n0413": "istirahat tidak (dilewati)",
      "n0414": "restic Belum diinstal ( PATH), silakan instal sistem restic",
      "n0415": "pulihkan oke; mengajukan permohonan kembali/verifikasi",
      "n0416": "pemulihan selesai",
      "n0417": "pemulihan Gagal",
      "n0418": "pulihkan tidak Berhasil",
      "n0419": "pemulihan Membutuhkan YSK_EXECUTE=1",
      "n0420": "pulihkan+ajukan permohonan kembali oke; memeriksa",
      "n0421": "rsync dataDir gagal",
      "n0422": "rsync Membutuhkan YSK_EXECUTE=1",
      "n0423": "scp Penulisan tidak dapat memuat ulang: rndc/named/bind9/pdns",
      "n0424": "scp Sukses ≠ rekan restart / gabung",
      "n0425": "kunci rahasia Tersedia",
      "n0426": "kunci utama rahasia",
      "n0427": "penjaga bukan penjaga",
      "n0428": "penjaga: replikasi INFO; tolong tuan penjaga",
      "n0429": "IP server IPv4",
      "n0430": "server IPv6 Tidak Valid",
      "n0431": "setquota PATH — (menyebarkan du )",
      "n0432": "jalur shell tidak valid",
      "n0433": "sinyal untuk TERM | MEMBUNUH | HUP | USR1",
      "n0434": "ssh true berhasil → terverifikasi",
      "n0435": "sshd keyboard-interaktif / respons tantangan diaktifkan",
      "n0436": "sshd tidak bisa KbdInteractiveAuthentication — TOTP tidak bisa SSH",
      "n0437": "sshpass Tersedia (kata sandi)",
      "n0438": "Pengguna Pencocokan yang ketat (kata sandi tidak aktif)",
      "n0439": "jalur symlink",
      "n0440": "direktori log symlink",
      "n0441": "proyek symlink ke rumah",
      "n0442": "sistemctl Gagal",
      "n0443": "systemd Gagal — PM2/pidfile",
      "n0444": "systemd not: Diperlukan izin eksekusi host dan admin",
      "n0445": "target: pengguna@host atau pengguna@host:port",
      "n0446": "token",
      "n0447": "token",
      "n0448": "top -b tidak tersedia (dengan ps untuk )",
      "n0449": "transfer: dataDir rsync Gagal",
      "n0450": "transfer: tidak dapat membuat direktori",
      "n0451": "transfer selesai (bootstrap penuh)",
      "n0452": "transfer Selesai, pemulihan target/pengajuan kembali/verifikasi Gagal",
      "n0453": "transfer Gagal",
      "n0454": "transfer Gagal",
      "n0455": "transfer Membutuhkan YSK_EXECUTE=1",
      "n0456": "transfer/bootstrap gagal",
      "n0457": "ufw Gagal",
      "n0458": "satuan dan tindakan",
      "n0459": "penambahan pengguna memerlukan YSK_EXECUTE + root",
      "n0460": "nilai (256KB)",
      "n0461": "verifikasi nonaktif",
      "n0462": "verifikasi tidak lulus — untuk selesai",
      "n0463": "verifikasi lulus — pekerjaan=selesai",
      "n0464": "vsftpd Mulai gagal",
      "n0465": "vsftpd bukan Successstart",
      "n0466": "tertimbang: tepi",
      "n0467": "wp-config.php — dilewati",
      "n0468": "tertulis ≠ Dovecot Pigeonhole — ManageSieve atau symlink ke saringan pengguna",
      "n0469": "tertulis ≠ Roundcube — aktifkanSistem atau symlink",
      "n0470": "Tertulis ≠ diterapkan: sinkronisasi ke sistem conf.d, jalankan nginx -t, lalu muat ulang",
      "n0471": "tertulis ≠ can — membalikkan proxy ke panel /webdav",
      "n0472": "tertulis ≠ prosesreload",
      "n0473": "Instalasi CLI ysk-server gagal — dapatkah npm i -g ysk-server",
      "n0474": "ysk-web Nginx/www-data (tidak dapat dibaca dunia)",
      "n0475": "ysk-web YSK_EXECUTE + root ( Nginx tidak bisa 750 home)",
      "n0476": "sidik jari ysk.json (dapat mengajukan permohonan kembali) sumber≠ lokal",
      "n0477": "sidik jari ysk.json dan",
      "n0478": "sidik jari ysk.json dan (bind_ip)",
      "n0479": "ysk.json",
      "n0480": "ysk.json Gagal",
      "n0481": "penerapan zona diblokir ( JALANKAN)— perbarui",
      "n0482": "perbaikan zona selesai",
      "n0483": "zona tidak valid",
      "n0484": "zona Tidak ditemukan:",
      "n0485": "zona Gagal",
      "n0486": "format binlog",
      "n0487": "memasang",
      "n0488": "dibuat satu (draft silakan ke halaman \"berlaku\")",
      "n0489": "dan POSTING",
      "n0490": "Pencadangan penuh terakhir mengalami kegagalan",
      "n0491": ": tulis conf → terapkan edge → DNS (dan bisa SSL)",
      "n0492": ": PAM /etc/pam.d/sshd (nullok)",
      "n0493": ": instalasi sistem libpam-google-authenticator + PAM ()",
      "n0494": "dapat menghapus direktori",
      "n0495": "dapat menghapus direktori atau jalur",
      "n0496": "",
      "n0497": "operasi ini",
      "n0498": "Mendukung (izinkan TERM / KILL / HUP / USR1)",
      "n0499": "data",
      "n0500": "hapus admin",
      "n0501": "port tidak valid",
      "n0502": "Diterapkan ke sistem",
      "n0503": "settingsWrote dataDir (berlaku untuk systemenablesystemchange)",
      "n0504": "Penggunaan memori host lebih dari 90%",
      "n0505": "Metrik tuan rumah",
      "n0506": "Cache data InnoDB utama",
      "n0507": "Biner tidak ada di PATH; layanan tidak dapat siap",
      "n0508": "Binlog kedaluwarsa (detik)",
      "n0509": "Batas waktu interaktif",
      "n0510": ": firewall, email PTR/rDNS, disimpan",
      "n0511": "kekosongan",
      "n0512": "ke halaman Cron \"instal ke crontab sistem\" akan benar-benar",
      "n0513": "dengan root Nginx atau \"\" publik/",
      "n0514": "Mulai layanan ysk-server sebagai root (systemctl / unit bidang kontrol)",
      "n0515": "Mulai sebagai root dan setel YSK_EXECUTE=1 (lihat pengaturan host/penerapan dokumen)",
      "n0516": "dengan pengguna (terdegradasi — bukan pengguna proyek Linux)",
      "n0517": "shell — menyangkal",
      "n0518": "Log kueri lambat",
      "n0519": "serverTidak diinstal (perintah -v )",
      "n0520": "Waktu kueri yang lama (detik)",
      "n0521": "serverTidak menginstal MySQL",
      "n0522": "serverTidak menginstal PostgreSQL",
      "n0523": "serverTidak diinstal Redis",
      "n0524": "serverTidak diinstal, Tidak dapat menyelesaikan ini dari panel manajemen",
      "n0525": "servertidak mengaktifkan YSK_EXECUTE",
      "n0526": "serverHost yang dijalankan tidak diaktifkan atau Root hilang, panel tidak dapat dipasang",
      "n0527": "eksekusi serverHost tidak diaktifkan, tidak dapat Redis",
      "n0528": "eksekusi serverHost tidak diaktifkan, tidak dapat memasang panel Webmail",
      "n0529": "eksekusi serverHost tidak diaktifkan, tidak dapat diterapkan",
      "n0530": "eksekusi serverHost tidak diaktifkan, tidak dapat membuat koneksi SSH",
      "n0531": "eksekusi serverHost tidak diaktifkan, tidak dapat membuang",
      "n0532": "Eksekusi host tidak aktif; panel tidak dapat menyelesaikan operasi tingkat sistem",
      "n0533": "eksekusi serverHost tidak diaktifkan: Menulis file yang dikelola, tidak dapat diberi nama-zona pemeriksaan/muat ulang",
      "n0534": "Port TCP yang didengarkan server",
      "n0535": "untuk",
      "n0536": "",
      "n0537": "Hash YSK-SCRYPT (untuk hash openssl)",
      "n0538": "YSK_SECRETS_KEY",
      "n0539": "baseUrl/.ysk-cdn-health path (lokasi kesehatan kaleng C2)",
      "n0540": "versi (override terbaru)",
      "n0541": "YSK_VERSI_TERBARU (/)",
      "n0542": "tidak tersedia",
      "n0543": "mysqldump — paket tidak bisa MySQL",
      "n0544": "pg_dump — paket tidak dapat Postgres",
      "n0545": "redis-cli — paket tidak dapat Redis RDB",
      "n0546": "sshpass",
      "n0547": "membutuhkan rsync (Tidak diinstal)",
      "n0548": "tidak lulus",
      "n0549": "lulus",
      "n0550": "128M, 256M, 512M, -1 ()",
      "n0551": "misalnya 512MiB; biarkan kosong untuk tidak disetel",
      "n0552": "900 1 300 10; cacat",
      "n0553": ": --member 10.0.0.3=replika:armada:SESSION_UUID",
      "n0554": "= ASN (sistem), bukan",
      "n0555": "22/80/443; bisa lepas port",
      "n0556": "disimpan: 10",
      "n0557": "proses server-ysk.pid",
      "n0558": "",
      "n0559": "deteksi ke pam_google_authenticator",
      "n0560": "Tar cadangan berhasil tetapi remote/restic mengalami masalah",
      "n0561": "admin",
      "n0562": "admin menyamar",
      "n0563": "admin dapat beroperasi",
      "n0564": "puncak A",
      "n0565": "Konfigurasi terkelola yang terdaftar (tidak ditulis ke sistem)",
      "n0566": "tulis pengaturan PM2, bukan mulai",
      "n0567": "file yang dikelola tulis (tidak memuat ulang)",
      "n0568": "writemanagesettings — Siap dan muat ulang",
      "n0569": "tulis (tidak aktifkan)",
      "n0570": "(berlaku: salah); kata sandi",
      "n0571": "Mendukung postgres + replika postgres",
      "n0572": "Mendukung redis + redis-replika|redis-sentinel",
      "n0573": ", MEMUKUL",
      "n0574": "resolusi rintisan (127.0.0.53); DNS tolong selesaikan",
      "n0575": "Peringatan, bisa",
      "n0576": "untuk; / Status cache log akses tepi CDN",
      "n0577": "willwrite systemd Lingkungan / proses env",
      "n0578": "izinkan URL disertakan",
      "n0579": "izinkan file URL",
      "n0580": "izinkan file",
      "n0581": ": + / + (memperkaya)+ ASN; kebijakan kota mati",
      "n0582": "fan-out tepi diterapkan",
      "n0583": "fan-out tepi Gagal",
      "n0584": "pembersihan tepi Sukses",
      "n0585": "memuat ulang server nama rekan",
      "n0586": "rekan reload gagal - file tidak bisa",
      "n0587": "rekan Gagal",
      "n0588": "rekan: zona dan isi ulang jarak jauh Berhasil",
      "n0589": "Semua berhasil",
      "n0590": "Semua dilewati (tidak ada rumah yang dapat dicadangkan) — tidak dianggap sebagai kegagalan",
      "n0591": "",
      "n0592": "RDB, pulihkan",
      "n0593": "Variabel waktu proses lainnya",
      "n0594": "",
      "n0595": "atau",
      "n0596": "— penerapan manual\"\" (Tidak pernah otomatis)",
      "n0597": "Skor sangat tinggi — preset darurat memerlukan konfirmasi manual (tidak pernah otomatis)",
      "n0598": "direktori",
      "n0599": "proses",
      "n0600": "hapus konfirmasi defaultDefault: benar",
      "n0601": "hapus file atau direktori",
      "n0602": "deletesystemuser — tolak",
      "n0603": "hapus: Eksekusi host tidak diaktifkan, jalur direktori data yang dikelola",
      "n0604": "untuk fail2ban terapkan dan aktifkan layanan",
      "n0605": "untuk mengaktifkan halaman (lembut/normal)",
      "n0606": "Mengeras",
      "n0607": "atau",
      "n0608": "Sedang diserang",
      "n0609": "21 dan PASV",
      "n0610": "Tulis file panel saja",
      "n0611": "Dapat diterapkan ke sistem",
      "n0612": "dapat dataDir/cluster/<id>/",
      "n0613": "Anda dapat melihat pengaturan; menginstal, memulai ulang, dan menulis pengaturan sistem memerlukan izin eksekusi host",
      "n0614": "bisa \"\" atau \"menambahkan\"",
      "n0615": "Instal dan konfigurasikan Postfix dari Email",
      "n0616": "bisa: SSL, WP-CLI,",
      "n0617": "",
      "n0618": "izinkan pemulihan ke direktori.restic-restore-*",
      "n0619": "Mulai, hentikan, mulai ulang, aktifkan saat boot",
      "n0620": "proses mulai, bukan proses",
      "n0621": "cache op",
      "n0622": "SSL",
      "n0623": "Aktif",
      "n0624": "mengajukan",
      "n0625": "mengajukan",
      "n0626": "simpul wsrep, HA ≥2 simpul",
      "n0627": "\"\"buat MySQL (atau DB) dan WP_DB_*",
      "n0628": "domain — mempertahankan liburan tingkat domain",
      "n0629": "Domain tidak valid",
      "n0630": "domainStatus: aktif ()",
      "n0631": "domainStatus: ditangguhkan (; dll Postfix )",
      "n0632": "Port, alamat pengikatan, batas koneksi",
      "n0633": "portcheckTidak normal",
      "n0634": "Waktu proses",
      "n0635": "Memerlukan transportasi aman (TLS)",
      "n0636": "(.gz dll)",
      "n0637": "Bot",
      "n0638": "menguji",
      "n0639": "Pilihan terakhir ketika di luar kendali",
      "n0640": "kemasan",
      "n0641": "packageinstallnot: Diperlukan izin eksekusi host",
      "n0642": "pembaruan paket memerlukan izin admin sistem",
      "n0643": "berlaku untuk vsftpd",
      "n0644": "berlaku untuk sistem",
      "n0645": "applywillmanaged file; YSK_EXECUTE=1 + root diterapkan",
      "n0646": "",
      "n0647": "magang (MB)",
      "n0648": "kata sandi",
      "n0649": "Kesalahan, silakan melamar",
      "n0650": "Keamanan → Keamanan saya → aktifkan 2FA; kebijakan mungkin menetapkan requireAdminTotp",
      "n0651": "dan jalur",
      "n0652": "instal PAM",
      "n0653": "instal vsftpd",
      "n0654": "Penginstalan gagal",
      "n0655": "paket instalasi",
      "n0656": "pemasangan selesai",
      "n0657": "memasang",
      "n0658": "instal pengaturan sistem",
      "n0659": "",
      "n0660": "",
      "n0661": "kata sandi",
      "n0662": "kata sandi SQL CHANGE_ME",
      "n0663": "Kata sandi disimpan sebagai hash crypt (bukan teks biasa)",
      "n0664": "kata sandi untuk",
      "n0665": "kata sandi memerlukan sshpass",
      "n0666": "kata sandi memerlukan instalasi lokal sshpass",
      "n0667": "kata sandi memerlukan 8",
      "n0668": "kata sandi ( 8 )— buatbukan tulishash",
      "n0669": "pengaturan kata sandi",
      "n0670": "dll.",
      "n0671": "dan tolong",
      "n0672": "membantah",
      "n0673": "Menulis NODE_OPTIONS=--max-old-space-size=N",
      "n0674": "tulis drop-in Nginx",
      "n0675": "tulis ke rumah ≠ PAM",
      "n0676": "Penulisan gagal",
      "n0677": "menulis",
      "n0678": "file tulis",
      "n0679": "",
      "n0680": "Sertakan ke sshd_config, atau POST /api/v1/sftp/sshd-snippet/apply install",
      "n0681": "Isolasi pengguna Project Linux",
      "n0682": "ID proyek",
      "n0683": "id proyek tidak valid, tidak dapat pulang",
      "n0684": "id proyek, tidak bisasystemuser",
      "n0685": "proyek internal-sftp Cocokkan shell interaktif pengguna — TOTP SSH shell/scp",
      "n0686": "log yang dikelola proyek tidak valid",
      "n0687": "proyek",
      "n0688": "proyek atau tidak pengaturan rumah",
      "n0689": "projectcannotsystemuser",
      "n0690": "proyek",
      "n0691": "proyek (503)",
      "n0692": "proyekBuat gagal,",
      "n0693": "domain proyek — harap atur domain terlebih dahulu",
      "n0694": "proyek linux_user",
      "n0695": "direktori cache nginx host pembersihan proyek (bukan zona per-vhost)",
      "n0696": "projectMissing linuxUser — tidak dapat membuat FTP",
      "n0697": "proyekLinux_user",
      "n0698": "proyek; ＝",
      "n0699": "Detail proyek → Sumber daya → buat pengguna sistem / migrasi ke /home/ysk-server-{id} (membutuhkan YSK_EXECUTE + root)",
      "n0700": "penjara",
      "n0701": "Direktori beranda hilang atau tidak dalam tata letak isolasi proyek",
      "n0702": "bukan GeoIP — harap perbarui \"IP\".",
      "n0703": "bukan port, harap proyek pertama",
      "n0704": "bukan ke sistem Nginx (file terkelola)",
      "n0705": "bukan serverbuat Redis, harap redis-cli, TCP dan YSK_EXECUTE=1",
      "n0706": "Tidak diterapkan pada layanan vsftpd — silakan \"terapkan\" atau halaman layanan vsftpd selesai dimulai",
      "n0707": "Tidak diterapkan domain email",
      "n0708": "bukan antarmuka Web — API",
      "n0709": "bukan GeoIP — harap perbarui",
      "n0710": "bukan kunci DNSSEC",
      "n0711": "bukan simpul CDN",
      "n0712": "bukan kunci sandi",
      "n0713": "tidak (paket akan)",
      "n0714": "bukan pengaturan koneksi LLM",
      "n0715": "bukan zona: silakan panel",
      "n0716": "CDN",
      "n0717": "Belum ada konfigurasi Nginx yang dikelola",
      "n0718": "Tersedia HIT/MISS — tingkat hit keseluruhan Tidak diketahui",
      "n0719": "Belum ada proyek",
      "n0720": "— tolong rencanakan dulu",
      "n0721": "Siap",
      "n0722": "dan kue",
      "n0723": "aktifkan --sekarang fail2ban",
      "n0724": "galera_new_cluster (bootstrap)",
      "n0725": "Memuat ulang fail2ban",
      "n0726": "memuat ulang nginx",
      "n0727": "Memulai ulang fail2ban",
      "n0728": "scp zone (ditulis pada peer ≠ bernama reloaded)",
      "n0729": "scp to peer /tmp (ditulis pada peer ≠ layanan dimulai ulang)",
      "n0730": "systemctl memuat ulang nginx",
      "n0731": "dan Roundcube",
      "n0732": "UFW dinonaktifkan (Peringatan: hostport)",
      "n0733": "proyek php.ini; terapkan FPM/",
      "n0734": "pengaturan pengelolaan (Tidak diterapkan pada layanan sistem)",
      "n0735": "pengaturan (bukan sistem yang diterapkan)",
      "n0736": "Dihapus",
      "n0737": "Kunci yang dihapus · Authorized_keys",
      "n0738": "cluster yang dihapus; manual konfigurasi sistem (v1)",
      "n0739": "Kunci lokal yang dihapus",
      "n0740": "ip addr add (pengaturanTulis, reboot)",
      "n0741": "terapkan database (mulai ulang)",
      "n0742": "mati/mulai ulang",
      "n0743": "ke sistem dan memuat ulang",
      "n0744": "awal",
      "n0745": "HSTS diaktifkan",
      "n0746": "Sinkronisasi NTP diaktifkan",
      "n0747": "Mengaktifkan UFW",
      "n0748": "WebDAV Diaktifkan · Ysk pengguna dasar · kata sandi untuk token ()",
      "n0749": "Layanan systemd diaktifkan",
      "n0750": "hentikan redis",
      "n0751": "direktori cache nginx dan muat ulang (hostnot proxy_cache bisa)",
      "n0752": "serverdonecertificatetolong",
      "n0753": "UFW khusus CF yang diterapkan (CF asal + keepport)",
      "n0754": "fail2ban yang diterapkan",
      "n0755": "Pengaturan yang diterapkan pada sistem Postfix",
      "n0756": "Diterapkan pada sistem Nginx",
      "n0757": "Aturan firewall yang diterapkan",
      "n0758": "Diinstal dan ysk-server.service",
      "n0759": "Diinstal ke crontab sistem pengguna",
      "n0760": "Wrote.google_authenticator (5 kode awal)",
      "n0761": "Menulis cuplikan rspamd multimap + postfix",
      "n0762": "Instalasi tulis",
      "n0763": "Menulis; silakan \"terapkan batas pada OS\" atau Terapkan unit tulis",
      "n0764": "Menulis manajemen jail.local (tidak diterapkan pada sistem)",
      "n0765": "Ditulis ke file yang dikelola; belum diterapkan pada sistem conf.d",
      "n0766": "Pengaturan tertulis (bukan paket)",
      "n0767": "Menulis; proyek akan diproses",
      "n0768": "File yang dikelola ditulis, Tidak diterapkan konfigurasi sistem: YSK_EXECUTE=1",
      "n0769": "File yang dikelola ditulis, Tidak diterapkan sistem conf: membutuhkan root",
      "n0770": "blok: kandidatVersion",
      "n0771": "blok: perbarui",
      "n0772": "blok: Izin administrator diperlukan",
      "n0773": "buat direktori DNSSEC ()",
      "n0774": "dari",
      "n0775": "dari (instalasi disk tidak; uninstall --purge)",
      "n0776": "dari; akun sistem DROP USER (: bukan drop)",
      "n0777": "dari koneksi",
      "n0778": "membantah",
      "n0779": "ditolak berdasarkan daftar yang diizinkan",
      "n0780": "menyangkal: menaikkantarget",
      "n0781": "memindai log akses nginx",
      "n0782": "MySQL/MariaDB membuat pengguna",
      "n0783": "Pembuatan PostgreSQL",
      "n0784": "versi ()",
      "n0785": "",
      "n0786": "",
      "n0787": "menangkap semua",
      "n0788": "DS (silakan registrar — panelwill)",
      "n0789": "addbackup (kunci master dataDir bisa)",
      "n0790": "Kata sandi hash SHA512-CRYPT (Dovecot)",
      "n0791": "melewatkan pemeriksaan pengaturan Nginx (Tidak diinstal atau tidak izin perubahan sistem)",
      "n0792": "jalur sertifikat (file /etc/ysk-server/certs)",
      "n0793": "UA",
      "n0794": "",
      "n0795": "",
      "n0796": "DIHAPUS",
      "n0797": "DIHAPUS",
      "n0798": ",",
      "n0799": "versi = Kandidat yang tepat, Tersedia kenaikan gaji",
      "n0800": "Disalin ke /etc/fail2ban/jail.local",
      "n0801": "(filenot; dapat menghapus instalan)",
      "n0802": "memulai ulang",
      "n0803": "mati",
      "n0804": "mulai ulang postgresql",
      "n0805": "mulai ulang server redis",
      "n0806": "restart redis-server dengan applyrestart",
      "n0807": "mulai ulang (muat ulang)",
      "n0808": "Koneksi diaktifkan kembali (bertahan setelah reboot)",
      "n0809": "Konfigurasi tepi TLS ()",
      "n0810": "Nginx dimuat ulang (situs statis aktif jika DNS mengarah ke sini)",
      "n0811": "Nginx memuat ulang",
      "n0812": "Izin perubahan sistem aktif (YSK_EXECUTE)",
      "n0813": "kata sandi — Roundcube bisa masuk",
      "n0814": "mengelola; layanan FTP izin sistem",
      "n0815": "akun (mod pengguna -U)",
      "n0816": "akun (mod pengguna -L)",
      "n0817": "pathcan",
      "n0818": "IP ini",
      "n0819": "buat pengguna sistem memerlukan izin admin sistem",
      "n0820": "buatdomainmail dan halaman berlaku",
      "n0821": "Selesai",
      "n0822": "\"\"",
      "n0823": "Tinjau SSH dan port yang tidak penting",
      "n0824": "",
      "n0825": "1 replika; dapat konferensi utama",
      "n0826": "2 simpul ( 3); Bisa",
      "n0827": "Pertimbangkan mode CDN Under Attack",
      "n0828": "aktifkan larangan",
      "n0829": "HTTPS (HTTP→301)",
      "n0830": "Plugin otentikasi default",
      "n0831": "",
      "n0832": ": status=aktif",
      "n0833": "Jalur log kesalahan",
      "n0834": "(MS)",
      "n0835": "Catatan umum",
      "n0836": "sertifikat, mohon Gagal",
      "n0837": "≥ berkas",
      "n0838": "pengaturanketahanancadangan",
      "n0839": "Berhasil berarti target ini menerima BatchMode SSH (non-interaktif). Ini bukan pemberian akses global.",
      "n0840": "atau 32767",
      "n0841": "perangkat lunak diinstal",
      "n0842": "izin/",
      "n0843": "",
      "n0844": "Biner CLI tidak ditemukan — systemd akan mengaktifkan placeholder senyap",
      "n0845": "Tidak ditemukan zona DNS — harap dns.zoneId, atau zona firstcreatedomain",
      "n0846": "PowerDNS tidak ditemukan — harap instal pdns-server / pdns-tools",
      "n0847": "Direktori plugin Roundcube tidak ditemukan — Menulis; silakan instal Roundcube atau roundcubePluginsDir",
      "n0848": "SQL tidak ditemukan",
      "n0849": "Tidak ditemukan Saringan",
      "n0850": "Tidak ditemukan config.inc.php — harap: $config[\\'plugins\\'][] = \\'ysk_sso\\';",
      "n0851": "Tidak ditemukan edge.conf — harap terlebih dahulu",
      "n0852": "Tidak ditemukan: kunci",
      "n0853": "Tidak ditemukan: migrasi pekerjaan",
      "n0854": "Tidak ditemukan pm2 — tidak bisa dengan penghentian PM2",
      "n0855": "Tidak ditemukan",
      "n0856": "Klaster tidak ditemukan",
      "n0857": "Tidak ditemukan dapat memuat ulang server nama lokal (rndc/named/bind9/pdns)",
      "n0858": "Tidak ditemukanSertifikat yang tersedia — harap halaman SSL pertama, atau LE",
      "n0859": "Tidak ditemukan Koneksi NetworkManager yang tersedia",
      "n0860": "Tidak ditemukan",
      "n0861": "Tidak ditemukan",
      "n0862": "Log akses proyek tidak ditemukan — harap nginx jalur access_log atau log",
      "n0863": "Tidak ditemukan",
      "n0864": "Tidak ditemukan",
      "n0865": "Tidak ditemukan versi",
      "n0866": "Tidak ditemukan simpul",
      "n0867": "Tidak ditemukan database",
      "n0868": "membantah",
      "n0869": "menolak loopback",
      "n0870": "tolak Renice",
      "n0871": "tolak systemctl aktifkan: Agen CLI tidak diinstal (placeholder berjalan)",
      "n0872": "tolak putaran balik ()",
      "n0873": "menolak penghapusan loopback",
      "n0874": "tolak homeDir — harap timpaHome + konfirmasiFrase atau direktori target",
      "n0875": "tolak PID 1 (init/systemd )",
      "n0876": "tolak ya; dapat memaksaControlPlane",
      "n0877": "tolak (ysk-server); membutuhkan tolong paksa Diri Sendiri",
      "n0878": "jalur penolakan",
      "n0879": "penolakan atau tidak",
      "n0880": "bertahan default memerlukan Gateway",
      "n0881": "Kegigihan",
      "n0882": "untuk",
      "n0883": "Perintah diblokir: perubahan host memerlukan izin perubahan sistem (YSK_EXECUTE)",
      "n0884": "memindai",
      "n0885": "jalur pemindaian",
      "n0886": "menyelidiki replikasi INFO",
      "n0887": "probe TAMPILKAN STATUS MASTER / REPLIKA",
      "n0888": "selidiki pg_is_in_recovery / pg_stat_replication",
      "n0889": "probe wsrep (TAMPILKAN STATUS SEPERTI 'wsrep%')",
      "n0890": "Bidang kontrol menulis konfigurasi tetapi tidak diterapkan pada host — gunakan Terapkan di setiap halaman fitur",
      "n0891": "Bidang kontrol tetap dalam mode normal",
      "n0892": "Penurunan darurat bidang kendali (operasi lokal)",
      "n0893": "Direktori data bidang kontrol",
      "n0894": "Pesawat kendali memasuki petunjuk perlindungan DDos",
      "n0895": "selesai (sebagian/gagal)",
      "n0896": "Otentikasi lebih cepat ketika klien hanya menggunakan IP",
      "n0897": ": Zona Cloudflare + CF_API_TOKEN terlebih dahulu dapat Under Attack API",
      "n0898": "tidak dapat dilakukan",
      "n0899": "Nginx dan fail2ban",
      "n0900": "Performa & sumber daya",
      "n0901": "alamat IP/domain. silakan periksa Spamhaus dll, dan.",
      "n0902": "A/AAAA (puncak dan www)",
      "n0903": "DMARC TXT",
      "n0904": "DNS MX/SPF/DKIM",
      "n0905": "_dmarc TXT dengan dan.",
      "n0906": "Metode + ambang batas",
      "n0907": "DNS MX, SPF (TXT) dan DKIM (TXT). Cloudflare: mailoffplease DNS().",
      "n0908": "Instal alat PowerDNS dari halaman DNS",
      "n0909": "Instal certbot dari halaman SSL",
      "n0910": "Instal fail2ban dari Pusat Pertahanan atau spanduk perangkat lunak",
      "n0911": "Instal dan aktifkan UFW dari Pusat Pertahanan",
      "n0912": "Instal Redis dari halaman Redis",
      "n0913": "Instal paket yang diperlukan untuk pemeriksaan ini",
      "n0914": "Sehari-hari",
      "n0915": "Log",
      "n0916": "direktori log proyek logwrite",
      "n0917": "mencatat",
      "n0918": "mencatat",
      "n0919": "logpathallow",
      "n0920": "mencatat dll",
      "n0921": "jalur log tidak valid",
      "n0922": "",
      "n0923": "Dan",
      "n0924": "Tabel membuka cache",
      "n0925": "versi PHP",
      "n0926": "Lebih banyak penjara fail2ban, pelarangan lebih cepat",
      "n0927": "tolong Redis",
      "n0928": "perbarui fail2ban jail (file terkelola)",
      "n0929": "pembaruanTidak lengkap",
      "n0930": "Batasan Nginx yang paling ketat (~1 persyaratan/dtk)",
      "n0931": "12 direktori",
      "n0932": "8 server nama",
      "n0933": "mengajukan",
      "n0934": "",
      "n0935": "WAL",
      "n0936": "",
      "n0937": "",
      "n0938": "Kesalahan koneksi maksimal",
      "n0939": "",
      "n0940": "Server HTTP (/kesehatan)+ direktori publik",
      "n0941": "",
      "n0942": "",
      "n0943": "Tersedia kenaikan gaji",
      "n0944": "Saat muncul scan/brute force",
      "n0945": "",
      "n0946": "database/Redis dump Gagal, (akan ditransfer)",
      "n0947": "layanan tidak valid",
      "n0948": "bukan WordPress (/)— WORDPRESS_INSTALL.txt",
      "n0949": "tidak dengan unit sistem mulai (Membutuhkan root + )— pidfile",
      "n0950": "bukan ke pam_google_authenticator — apt install libpam-google-authenticator",
      "n0951": "bukan 2FA",
      "n0952": "Ringkasan bidang kontrol hanya diekspor (Nginx tidak disinkronkan)",
      "n0953": "Tidak diterapkan pada sistem nginx ( YSK_EXECUTE + root)— Status: tertulis",
      "n0954": "Tidak diterapkan ke sistem: YSK_EXECUTE + root",
      "n0955": "redis-cli tidak diinstal",
      "n0956": "bukan file tulis",
      "n0957": "bukan systemcan verifikasi perubahan - akan baik-baik saja",
      "n0958": "tidak untuk postgresql conf.d — conf dataDir; akan diterapkansistem",
      "n0959": "tidak untuk rahasia/ssh/.master.key YSK_SECRETS_KEY — targetcan tidak dapat vault/2FA",
      "n0960": "bukan",
      "n0961": "Tidak diselidiki",
      "n0962": "bukan certbot/LE cron (Sistem yang tersedia certbot.timer)",
      "n0963": "bukan nginx conf",
      "n0964": "Kunci sandi tidak dikenal",
      "n0965": "Sumber tidak diketahui (jurnal:... / file:... / proyek:...)",
      "n0966": "Tidak dikenal",
      "n0967": "Perangkat lunak tidak dikenal",
      "n0968": "ID perangkat lunak tidak dikenal",
      "n0969": "Perangkat lunak tidak dikenal",
      "n0970": "Tidak dikenal",
      "n0971": "tidak, tolak ( buang )",
      "n0972": "bukan proyek rumah — tulis ftps/ssh; sshd Cocok",
      "n0973": "tidak berlaku pembaruan: silakan direktori git YSK_SOURCE_ROOT, atau publikasikan paket npm YSK_NPM_PACKAGE",
      "n0974": "tidak — akan\"\"",
      "n0975": "tidak - akan",
      "n0976": "bukan City Lite — /ASN; perbarui dapat DB-IP ( CC BY)",
      "n0977": "bukan Kota Lite — /; harap perbarui (DB-IP)",
      "n0978": "tidak ke /etc/nginx (bukan root atau bukan EXECUTE)— conf dataDir yang dikelola",
      "n0979": "bukan pengaturan CF_API_TOKEN — tidak bisa Cloudflare API",
      "n0980": "bukan pengaturan Cloudflare API Token — uji coba",
      "n0981": "bukan pengaturan (nonaktifkan)",
      "n0982": "Selesai",
      "n0983": "tidak silakan instal ke sistem (installSystem=false)",
      "n0984": "YSK_EXECUTE tidak diaktifkan",
      "n0985": "Perubahan sistem tidak aktif (bidang kontrol hanya dapat menulis pengaturan)",
      "n0986": "tidak mengaktifkan perubahan sistem: tidak dapat dnssec-keygen",
      "n0987": "bukan kata sandi — verifikasi email ()",
      "n0988": "tidak memverifikasi/memuat ulang: eksekusi serverHost tidak diaktifkan (file yang dikelola tulis)",
      "n0989": "conf, tolong rencanakan dulu",
      "n0990": "cadangan",
      "n0991": "daerah",
      "n0992": "sertifikat ( atau dari tidak )",
      "n0993": "tidak sah",
      "n0994": "Batas laju pelarangan mencapai jam ini — periksa Pusat Pertahanan",
      "n0995": "ip lokal dapat Mendukung -j; tolong angkat iproute2 (catatan)",
      "n0996": "nginx lokal -t OK (konf terkelola, ≠ tepi diterapkan)",
      "n0997": "wsrep lokal bisa, ukurannya bukan node",
      "n0998": "ysk.json lokal tidak dapat membaca/sidik jari",
      "n0999": "Node lokal baik-baik saja; status sehat lengkap perlu pemeriksaan sejawat (belum selesai).",
      "n1000": "nginx lokal — conf Menulis, bukan memuat ulang",
      "n1001": "koneksi NM lokal yang tersedia; akanSukses. bisa \"\" atau NetworkManager.",
      "n1002": "ps lokal yang tersedia — tidak bisa ()",
      "n1003": "koneksi NM lokal; akanSukses. bisa \"\" atau NetworkManager.",
      "n1004": "bisa melarang",
      "n1005": "tidak sah",
      "n1006": "status layanan",
      "n1007": "Penggunaan sistem file root lebih dari 90%",
      "n1008": "direktori tidak valid",
      "n1009": "Ruang disk root",
      "n1010": "Ringkasan",
      "n1011": "TcpListener ( peti); Kargo.toml",
      "n1012": "bersih/http; go.mod; / dan /kesehatan",
      "n1013": "Mode: produksi siap",
      "modeProductionCapable": "siap produksi",
      "modeDegraded": "terdegradasi",
      "n1014": ": bukan",
      "n1015": "Uji coba selesai — tidak ada yang disalin atau dimuat ulang (matikan uji coba untuk sinkronisasi sesungguhnya)",
      "n1016": "Uji coba selesai — sinkronisasi nyata memerlukan root dan YSK_EXECUTE",
      "n1017": "with.conf",
      "n1018": "with.sieve",
      "n1019": "File",
      "n1020": "file dan POST",
      "n1021": "File tidak ada atau bisa",
      "n1022": "File tidak ada atau Dihapus",
      "n1023": "proses pemeriksaan; tuan rumah",
      "n1024": "file periksa",
      "n1025": "memeriksa ()",
      "n1026": "memeriksa",
      "n1027": "karena, tidak bisa menulis",
      "n1028": "izin untuk 3–4",
      "n1029": "izin dan",
      "n1030": "OK",
      "n1031": "Operasi sehari-hari",
      "n1032": "silakan SECRET_KEY/DEBUG dan configdatabase",
      "n1033": "perencana Mendukung mariadb + mariadb-galera",
      "n1034": "perencana Mendukung mysql + replika mysql",
      "n1035": "manajemen layanan systemd host ini",
      "n1036": "waktu proses Node proyek ini, tolong Node",
      "n1037": "runtime Node proyek ini, silakan Node (atau runtime untuk statis)",
      "n1038": "pembaruan ini (/). silakan melamar.",
      "n1039": "ini untuk (DNS /IP ); tidak bisa PTR/ 25",
      "n1040": "ini berlaku untuk sistem",
      "n1041": "paket perangkat lunak yang tepat ini",
      "n1042": "pengaturan;,, batas",
      "n1043": "proyek dengan pengguna Linux/aktif",
      "n1044": "Batas larangan otomatis setiap jam",
      "n1045": "(Info IP Ringan)",
      "n1046": "Larangan permanen",
      "n1047": "node tepi — harap tepi halaman CDN pertama",
      "n1048": "dapat mengajukan kenaikan gaji (kandidat atau dan versi)",
      "n1049": "proyek bisa diam",
      "n1050": "pencadangan projectcan (0 )— untuk Gagal",
      "n1051": "bisa untuk",
      "n1052": "log/cadangan; pengaturan host",
      "n1053": "aturan firewall — tolak",
      "n1054": "membutuhkan dan",
      "n1055": "buat pengguna sistem...",
      "n1056": "browser diaktifkan, selesai menginstal WP",
      "n1057": ".zone bisa",
      "n1058": "HostExecutor — silakan chown file",
      "n1059": "HostExecutor — chown (silakan chown)",
      "n1060": "IP tulis DNS",
      "n1061": "Koneksi NMbisa;",
      "n1062": "Koneksi NMbisa;",
      "n1063": "Tempat pembuangan sampah Redis",
      "n1064": "pembuangan basis data SQL",
      "n1065": "sasaran SSH",
      "n1066": "SSH/target armada",
      "n1067": "mengakses status cache log, direktori cache — hit-rate Tidak diketahui (harap log_format atau terapkan edge terlebih dahulu)",
      "n1068": "access=armada FleetAgentId",
      "n1069": "access=ssh — silakan buat:ssh atau anggota",
      "n1070": "Ditulis pada bidang kendali; tidak diterapkan pada host",
      "n1071": "tepat-dapatkan",
      "n1072": "tantangan otentikasi",
      "n1073": "ikat_ip",
      "n1074": "dataDir — perbaruidatabase",
      "n1075": "domain vacation.sieve — dilewati per kotak surat",
      "n1076": "edge dapat diterapkan ( lewati/kuras)— conf ditulis",
      "n1077": "galera_new_cluster; mulai ulang mariadb",
      "n1078": "rumah_dir",
      "n1079": "install — Status untuk disimpan",
      "n1080": "pengguna linux",
      "n1081": "kunci utama / YSK_SECRETS_KEY",
      "n1082": "server nama (tidak dapat dikonfigurasi)",
      "n1083": "rdbRelPath",
      "n1084": "tantangan pendaftaran",
      "n1085": "ssh rekan",
      "n1086": "ssh rekan bisa",
      "n1087": "sshpass ( kunci/agen )",
      "n1088": "liburan.saringan bisa",
      "n1089": "vhost memerlukan pembaruan (atau server conf)",
      "n1090": "wsrep Status (tidak bisa Galera atau servicenot )",
      "n1091": "jail aktif atau fail2ban tidak berjalan",
      "n1092": "mencatat",
      "n1093": "sistem kaleng (tertulis)",
      "n1094": "dapat menargetkan ( healthUrl / baseUrl / publicIpv4)",
      "n1095": "Log akses yang tersedia ( atau )",
      "n1096": "Log akses yang tersedia (Tersedia / dilarang)",
      "n1097": "Akses/log autentikasi yang tersedia",
      "n1098": "IP edge yang tersedia — DNS (tetap dikelola)",
      "n1099": "Tersedia pengguna ketat (atau tidak)",
      "n1100": "konf. tidak valid",
      "n1101": "ID ekspor tidak valid",
      "n1102": "ekspor tidak valid",
      "n1103": "linux_user tidak valid",
      "n1104": "Kunci publik tidak valid",
      "n1105": "ID cuplikan tidak valid",
      "n1106": "Token tidak valid",
      "n1107": "Satuan tidak valid",
      "n1108": "satuan tidak valid",
      "n1109": "ukuran vakum tidak valid (: 500M)",
      "n1110": "waktu vakum tidak valid (: 7d)",
      "n1111": "cadangan tidak valid",
      "n1112": "cadangan tidak valid",
      "n1113": "port tidak valid",
      "n1114": "kunci tidak valid",
      "n1115": "ID proyek tidak valid",
      "n1116": "cadangan tidak valid",
      "n1117": "pola yang tidak valid",
      "n1118": "aturan tidak valid",
      "n1119": "database tidak valid",
      "n1120": "domain — peta untuk (systemapplywill postmap )",
      "n1121": "IP",
      "n1122": "Pengayaan larangan otomatis yang tersedia",
      "n1123": "tidak dapat melarang ke sistem: YSK_EXECUTE; untuk larangan panel",
      "n1124": "tidak dapat membuang Redis: redis-cli",
      "n1125": "tidak dapat membuang: eksekusi serverHost tidak diaktifkan",
      "n1126": "tidak dapat menyebar: Eksekusi host tidak diaktifkan",
      "n1127": "tidak dapat mengimpor: eksekusi serverHost tidak diaktifkan",
      "n1128": "tidak dapat dicantumkan: Eksekusi host tidak diaktifkan",
      "n1129": "tidak dapat menyelidiki kluster DNS: Eksekusi host tidak diaktifkan",
      "n1130": "tidak dapat menyelidiki: Eksekusi host tidak diaktifkan (SSH EXECUTE)",
      "n1131": "tidak dapat membersihkan cache: Eksekusi host tidak diaktifkan (YSK_EXECUTE)",
      "n1132": "tidak dapat membersihkan: Eksekusi host tidak diaktifkan",
      "n1133": "tidak dapat memuat ulang dari jarak jauh: Eksekusi host tidak diaktifkan",
      "n1134": "tidak dapat berhenti: Eksekusi host tidak diaktifkan",
      "n1135": "tidak dapat memulihkan: Eksekusi host tidak diaktifkan",
      "n1136": "tidak dapat scp: YSK_EXECUTE=1",
      "n1137": "tidak bisa pulang ke rumah",
      "n1138": "tidak dapat menghubungkan: Eksekusi host tidak diaktifkan",
      "n1139": "tidak dapat membatalkan pemblokiran: Eksekusi host tidak diaktifkan",
      "n1140": "tidak dapat membatalkan pemblokiran: YSK_EXECUTE",
      "n1141": "tidak bisa Adminer: Eksekusi host tidak diaktifkan",
      "n1142": "tidak bisa WordPress: eksekusi serverHost tidak diaktifkan",
      "n1143": "tidak bisa PM2, pengelolaan proses lokal",
      "n1144": "tidak bisa: tidak mengaktifkan YSK_EXECUTE",
      "n1145": "tidak dapat menghentikan PM2: eksekusi serverHost tidak diaktifkan",
      "n1146": "tidak dapat SSL: Eksekusi host tidak diaktifkan",
      "n1147": "Sinkronisasi diblokir: memerlukan YSK_EXECUTE",
      "n1148": "tidak dapat ke sistem Nginx: Diperlukan izin eksekusi host",
      "n1149": "tidak dapat memulai PM2: eksekusi serverHost tidak diaktifkan",
      "n1150": "tidak dapat Apache: Diperlukan izin eksekusi host",
      "n1151": "tidak dapat NTP: Host memerlukan izin eksekusi dan root",
      "n1152": "tidak dapat PHP-FPM: memerlukan izin admin sistem",
      "n1153": "tidak dapat melayani systemd (mohon izin)",
      "n1154": "tidak dapat melayani sistem: memerlukan izin admin sistem",
      "n1155": "tidak dapat melayani: memerlukan izin admin sistem",
      "n1156": "tidak dapat menargetkan instalasi rsync, menargetkan rsync",
      "n1157": "tidak dapat membuat akun sistem: memerlukan YSK_EXECUTE + root; (ditulis/diblokir)",
      "n1158": "tidak dapat certbot: Eksekusi host tidak diaktifkan",
      "n1159": "tidak dapat beroperasi: Diperlukan izin eksekusi host (YSK_EXECUTE) dan root",
      "n1160": "tidak dapat diterapkan ke sistem: memerlukan YSK_EXECUTE + root",
      "n1161": "tidak dapat menerapkan pengaturan sistem: Diperlukan izin eksekusi host",
      "n1162": "tidak dapat diterapkan: Gagal",
      "n1163": "tidak dapat menginstal PowerDNS: memerlukan izin admin sistem",
      "n1164": "tidak dapat menginstal ke /etc/ssh: memerlukan YSK_EXECUTE + root",
      "n1165": "tidak dapat menginstal ke sistem: eksekusi serverHost tidak diaktifkan (file yang dikelola tulis)",
      "n1166": "tidak bisa: eksekusi serverHost tidak diaktifkan atau layanan email tidak diinstal",
      "n1167": "tidak dapat membuat database pengguna virtual ( db_load)",
      "n1168": "tidak dapat membuat database, bisa Gagal",
      "n1169": "tidak dapat membuat pengguna email sistem: memerlukan izin admin sistem",
      "n1170": "tidak dapat dari versi npm atau GitHub (bukan )",
      "n1171": "tidak dapat menyelidiki sistemctl",
      "n1172": "tidak dapat cluster DNS: Eksekusi host tidak diaktifkan",
      "n1173": "tidak bisa: Eksekusi host tidak diaktifkan (backupSuccess)",
      "n1174": "tidak bisa metrik",
      "n1175": "tidak bisa: eksekusi serverHost tidak diaktifkan",
      "n1176": "tidak dapat ACME: Eksekusi host tidak diaktifkan",
      "n1177": "tidak dapat meng-crypt passwordhash (membutuhkan openssl passwd)",
      "n1178": "tidak bisa: eksekusi serverHost tidak diaktifkan",
      "n1179": "tidak bisa Tugas (status ps Gagal)",
      "n1180": "tidak dapat membuat zona ke direktori dnssec",
      "n1181": "tidak dapat sidik jari ysk.json",
      "n1182": "tidak bisa /etc/resolv.conf",
      "n1183": "tidak dapat membaca cmdline (bisa atau izin)",
      "n1184": "tidak dapat membaca aturan bernomor",
      "n1185": "tidak dapat membaca statistik",
      "n1186": "tidak dapat dibaca: eksekusi serverHost tidak diaktifkan",
      "n1187": "tidak dapat membaca pengguna dengan centang 2FA",
      "n1188": "tidak dapat membaca target",
      "n1189": "tidak dapat mengubah UFW: YSK_EXECUTE=1",
      "n1190": "canchangehost/: Diperlukan izin eksekusi host dan root",
      "n1191": "tidak dapat diubah: Diperlukan izin eksekusi host (YSK_EXECUTE) dan root",
      "n1192": "tidak dapat zona PowerDNS: eksekusi serverHost tidak diaktifkan",
      "n1193": "tidak bisa IPv4/IPv6",
      "n1194": "tidak dapat terhubung 127.0.0.1:6379",
      "n1195": "tidak dapat menargetkan koneksi",
      "n1196": "",
      "n1197": "Tidak ada pemblokir keras dalam penyelidikan ini",
      "n1198": "direktori kunci",
      "n1199": "pengguna",
      "n1200": "— saringan sistem",
      "n1201": "buatdirektori",
      "n1202": "Pemutus sirkuit",
      "n1203": "Menulis dataDir/security/fail2ban (bukan ke/etc)",
      "n1204": "; silakan muat ulang",
      "n1205": "Draf status — silakan ke halaman layanan FTP \"berlaku\" akan menulis vsftpd",
      "n1206": "Status dan versi",
      "n1207": "Status:",
      "n1208": "Status: diterapkan (landasan + kebijakan per pengirim + peta)",
      "n1209": "Status: diterapkan (symlink + plugin konfigurasi[] Diaktifkan)",
      "n1210": "Status: diterapkan (direktori)",
      "n1211": "Status: diterapkan ( homeDir)",
      "n1212": "Status: diterapkan (sistemSukses)",
      "n1213": "Status: diterapkan (kunci+ zona; bukan registrar )",
      "n1214": "Status: diblokir — file terkelolaWrote; bukan Postfix/Dovecot",
      "n1215": "Status: diblokir (placeholder tertulis)",
      "n1216": "Status: diblokir (daemon kebijakan; systemapply EXECUTE+root)",
      "n1217": "Status: dieksekusi ≠, hingga certbot selesai memuat ulang",
      "n1218": "Status: gagal (nginx -t atau gagal memuat ulang)",
      "n1219": "Status: parsial — akan diterapkan (Sukses)",
      "n1220": "Status: parsial — sistemGagal",
      "n1221": "Status: parsial (symlink Berhasil; konfigurasi tambahkan plugin)— akan selesai diterapkan",
      "n1222": "Status: hanya pratinjau",
      "n1223": "Status: tertulis/sebagian (sistem/muat ulang/verifikasi tidak Berhasil)",
      "n1224": "Status: tertulis/sebagian (langkah kunciGagal — diterapkan)",
      "n1225": "Status: tertulis (berlaku=salah; Tidak diterapkan pada sistem)",
      "n1226": "Status: tertulis (berlaku sistem yang diblokir)",
      "n1227": "Status: ditulis (conf Menulis; memuat ulang diblokir)",
      "n1228": "Status: tertulis ()— tepi Tidak diterapkan; Pembagian PR-C3 + nginx -t/muat ulang",
      "n1229": "Status: tertulis (Tidak diterapkan pada sistem Postfix/Rspamd)",
      "n1230": "Status: tertulis (bukan ke sistem Nginx; applySystem akan mencoba memuat ulang)",
      "n1231": "Status: tertulis (kelola; live fail2ban-client YSK_EXECUTE, atau \"→ apply to system\" jail.local)",
      "n1232": "Status: tertulis (kunci/DS; zona bukan atau bukan zona )",
      "n1233": "Status: tertulis (bukan SSO)",
      "n1234": "Status: tertulis (tidak /tidak )— Berhasil",
      "n1235": "Status: tertulis (/ file terkelola)",
      "n1236": "Status: Menulis dan Berhasil memuat ulang server nama",
      "n1237": "Status: Zona pengelolaan penulisan (bukan untuk DNS, bukan untuk memuat ulang server nama)",
      "n1238": "Status: Menulis file yang dikelola (Tidak diterapkan ke sistem)",
      "n1239": "Status: data (bukan )",
      "n1240": "TOTP (dan operator panel 2FA)",
      "n1241": "operator panel 2FA",
      "n1242": "Siklus hidup",
      "n1243": "dapat mematikan dan mengisi ulang",
      "n1244": "silakan nonaktifkan",
      "n1245": "Gerbang produksi: belum sepenuhnya terpenuhi — tinjau item di bawah",
      "n1246": "Gerbang produksi: lulus (izin, Nginx, Node siap)",
      "n1247": "Isolasi produksi: buka tab Sumber Daya proyek untuk membuat pengguna dan rumah Linux",
      "n1248": "pengguna 2–32 [a-z0-9._-]",
      "n1249": "tolong SSL memerlukan domain dan",
      "n1250": "batasan; jalur:",
      "n1251": "sistem; bisa jalur",
      "n1252": "",
      "n1253": "Lewati penyelesaian nama DNS",
      "n1254": "melewatkan chown (bukan dengan root )",
      "n1255": "melewatkan chown ( YSK_EXECUTE + root)— filecan untuk pengguna",
      "n1256": "simpul pengurasan",
      "n1257": "melewatkan memuat ulang: verifikasi zonaGagal",
      "n1258": "reload jarak jauh (reload=false)— tertulis ≠ diterapkan",
      "n1259": "mod pengguna (bukan os_provisioned)",
      "n1260": "penerapan zona yang dilewati (applyZone=false)— memperbarui catatan",
      "n1261": "Melewati nama pengguna yang tidak valid",
      "n1262": "DDoS — Terdegradasiaktif",
      "n1263": "IP: tolak",
      "n1264": ": dilewati",
      "n1265": "IP/domain dan",
      "n1266": "Alamat yang akan diikat (0.0.0.0 = semua)",
      "n1267": "",
      "n1268": "dengan proses lokal",
      "n1269": "dengan PHP",
      "n1270": "izin untuk firewallStatus (bukan )",
      "n1271": "Tidak berjalan sebagai root; beberapa pengaturan sistem tidak dapat diterapkan",
      "n1272": "target ysk.json Gagal",
      "n1273": "target ysk-server CLI — silakan bootstrap atau npm i -g ysk-server",
      "n1274": "menargetkan data YSK, forceWipeTarget",
      "n1275": "rsync target",
      "n1276": "untuk akar",
      "n1277": "pengguna target",
      "n1278": "target rsync (instal bootstrap)",
      "n1279": "targetmembutuhkan sshpass (Tidak diinstal)",
      "n1280": "targetGagal",
      "n1281": "target tidak lolos",
      "n1282": "target lolos",
      "n1283": "with.zip",
      "n1284": "benar-benar mengeksekusi + YSK_EXECUTE=1",
      "n1285": "<?",
      "n1286": "dilewati: tidak os_provisioned",
      "n1287": "pengguna tamu",
      "n1288": "80/443 bisa dari ke (LE HTTP-01)",
      "n1289": "Waktu proses PHP dan FPM Siap",
      "n1290": "Pelabuhan 25",
      "n1291": "Disk, cadangan, AOF/WAL",
      "n1292": "Ruang disk rendah",
      "n1293": "",
      "n1294": "/local, terapkan geo",
      "n1295": "",
      "n1296": "; 0 = (CLI)",
      "n1297": "; Tolong",
      "n1298": "kemasan",
      "n1299": "Berapa lama untuk menyimpan log biner",
      "n1300": "tidak sah",
      "n1301": "simpul tepi",
      "n1302": "versi host",
      "n1303": "host simpul tidak valid",
      "n1304": "simpul tidak valid",
      "n1305": "pengurasan simpul —, pengurasan status",
      "n1306": "terapkan sistem YSK_EXECUTE + root",
      "n1307": "pengguna sistem (bukan ketentuan atau )",
      "n1308": "Administrator sistem (akar)",
      "n1309": "Bukan root — jalur sistem useradd / systemd / nginx dibatasi",
      "n1310": "Izin perubahan sistem",
      "n1311": "Beban sistem",
      "n1312": "Perangkat lunak sistem",
      "n1313": "",
      "n1314": "",
      "n1315": "",
      "n1316": "(verifikasi port tidak bisa)",
      "n1317": "tidak dapat terhubung",
      "n1318": "jaring",
      "n1319": "rsync",
      "n1320": "ssh",
      "n1321": "ysk.json",
      "n1322": "Conf tidak ada, harap rencanakan dulu",
      "n1323": "DataDir tidak ada, runtime tidak dapat diinstal",
      "n1324": "Pengguna linux/homeDir tidak ada",
      "n1325": "Larangan sementara",
      "n1326": "kunciGagal",
      "n1327": "pemasangan kunci gagal",
      "n1328": "VACUUM",
      "n1329": "larangan → mati ()",
      "n1330": "larangan: tidak mengaktifkan perubahan sistem (YSK_EXECUTE)",
      "n1331": "melarang",
      "n1332": "Beralih otomatis atau manual",
      "n1333": "tidak dapat dinonaktifkan",
      "n1334": "IP: tolak",
      "n1335": "",
      "n1336": ": Status tertulis — bukan Dovecot/Pigeonhole ( ManageSieve atau symlink)",
      "n1337": "meningkat secara otomatis",
      "n1338": "izinkan jalan",
      "n1339": "target",
      "n1340": "simpul tepi",
      "n1341": "membutuhkandomain",
      "n1342": "memerlukan node",
      "n1343": "membutuhkan (kontrol/asal/tepi/dns)",
      "n1344": "dan operator panel 2FA",
      "n1345": "kunci_otorisasi jarak jauh, perbarui atau otorisasi sendiri",
      "n1346": "Domain tidak valid",
      "n1347": "Ukuran tabel tmp",
      "n1348": "filter/jail systemctl muat ulang fail2ban",
      "n1349": "jail.local Gagal",
      "n1350": "Lihat log audit",
      "n1351": "Sukses (rahasia)",
      "n1352": "batas_permintaan",
      "n1353": "tidak sah",
      "n1354": "Jumlah sinyal 0–100 → tingkat ancaman",
      "n1355": "Memori, buffer, konkurensi",
      "n1356": "",
      "n1357": "Penggunaan memori tinggi",
      "n1358": "Tekanan memori",
      "n1359": "",
      "n1360": "Memori & V8",
      "n1361": "Ukuran tabel tumpukan maksimal",
      "n1362": "bisa untuk",
      "n1363": "",
      "n1364": "Kesalahan saat mencatat",
      "n1365": "",
      "n1366": "pengaturan DNS (PTR)",
      "n1367": "pengaturan pengaturan; izin konfigurasi/restart sistem",
      "n1368": "pengaturanWroteApply gagal",
      "n1369": "pengaturanWroteconnectionRestart gagal; tolong koneksi nmcli",
      "n1370": "settingsWroteconnectionGagal, harap koneksi nmcli aktif",
      "n1371": "pengaturan produk ysk-server",
      "n1372": "kesalahan pengaturan (untuk)",
      "n1373": "pengaturanDataDir tidak ada",
      "n1374": "blokir TCP 25. tolong, atau SMTP.",
      "n1375": "Skor",
      "n1376": ": buat, dll CDN",
      "n1377": ": penyelesai akan A —; tepi IP atau Anycast",
      "n1378": "tolong CIDR, 192.168.1.10/24",
      "n1379": "silakan POST /api/v1/ssl/upload atau POST /api/v1/ssl/letsencrypt",
      "n1380": "silakan node CDN pertama (PR-C1)",
      "n1381": "harap pemeliharaan terlebih dahulu Diterima",
      "n1382": "Buka Operasi cadangan dan periksa sideResults",
      "n1383": "Buka halaman Cadangan untuk detailnya",
      "n1384": "Buka Peringatan → terapkan audit status",
      "n1385": "Buka Pusat Pertahanan untuk meninjau sinyal dan mengganti preset perlindungan",
      "n1386": "silakan rekan instal conf dan restart / gabung",
      "n1387": "Silakan masukkan Namaserver",
      "n1388": "silakan serverName dan upstream",
      "n1389": "silakan nama server dan direktori",
      "n1390": "silakan nama server, direktori dan soket FPM",
      "n1391": "Silakan masuk zona",
      "n1392": "tolong zona",
      "n1393": "tolong tuan rumah",
      "n1394": "tolong klaster (≤64)",
      "n1395": "Tolong",
      "n1396": "silakan pengguna, dan",
      "n1397": "tolong simpul (IP tidak tersedia)",
      "n1398": "silakan DNS A/AAAA IP; periksafirewall dan kirim PTR",
      "n1399": "silakan XML ke nama host, atau ke host DNS",
      "n1400": "Silakan tentukan IP",
      "n1401": "tolong tindakan atau mtu",
      "n1402": "Silakan tentukan dataDir",
      "n1403": "Silakan tentukan mendengarkanHost",
      "n1404": "tolong zip jalurnya",
      "n1405": "tolong buat cadangan",
      "n1406": "tolong Status (/)",
      "n1407": "Tolong",
      "n1408": "Tolong",
      "n1409": "tolong settingpathnya",
      "n1410": "Tentukan jalur dan izin",
      "n1411": "Tentukan jalur dan versi",
      "n1412": "Tentukan jalur dan",
      "n1413": "tolong DKIM",
      "n1414": "silakan Git URL (atau pengaturan proyek pertama)",
      "n1415": "tolong IP",
      "n1416": "tolong bungkus",
      "n1417": "tolong paket dan versinya",
      "n1418": "tolong kata sandinya (8)",
      "n1419": "Tolong",
      "n1420": "Tolong",
      "n1421": "tolong — Diaktifkan",
      "n1422": "silakan \"berlaku ke sistem\" atau proyek PHP (kumpulan php_admin_*)",
      "n1423": "silakan /etc/default/ufw IPV6=ya",
      "n1424": "Pastikan dataDir ada dan proses dapat menulis ke dalamnya",
      "n1425": "silahkan nameserver, atau \"restore DHCP DNS\"",
      "n1426": "silakan publicIpv4 / publicIpv6 / healthUrl / baseUrl",
      "n1427": "Tolong",
      "n1428": "tolong ajukan",
      "n1429": "harap batasi IP atau autentikasi HTTP",
      "n1430": "Peringatan: manifest packagedAt — DB harap paketkan terlebih dahulu",
      "n1431": "Peringatan: unit untuk biner CLI aktif Tidak ditemukan (dapat unit placeholder)",
      "n1432": "Peringatan: targetkan data YSK",
      "n1433": "Peringatan: antarmuka ini untuk, panel kaleng bawah",
      "n1434": "Peringatan: secret/ssh/.master.key YSK_SECRETS_KEY (vault/2FA tidak bisa)",
      "n1435": "Peringatan: config.json (bisa setup )",
      "n1436": "baca dilarang Gagal",
      "n1437": "izin membaca yang dilarang dapat; batalkan pelarangan/larangan YSK_EXECUTE",
      "n1438": "baca dilarang Gagal (izin atau layanan)",
      "n1439": "baca larangan fail2ban Gagal",
      "n1440": "bacaGagal",
      "n1441": "readlogGagal",
      "n1442": "file baca",
      "n1443": "sistem baca",
      "n1444": "ubah konfirmasi defaultDefault: benar",
      "n1445": "file yang dikelola changewillwrite; \"berlaku ke sistem\" akan /etc/php/.../conf.d dan memuat ulang FPM",
      "n1446": "Beban tinggi",
      "n1447": "datacan; install/restartserviceHost menjalankan izin yang diperlukan",
      "n1448": "databasecan (>7 )— perbarui",
      "n1449": "databasetidak dibuat. tolong mysql dan YSK_EXECUTE=1.",
      "n1450": "databasetidak dibuat. silakan psql, TCP dan YSK_EXECUTE=1.",
      "n1451": "basis data",
      "n1452": "nama basis data",
      "n1453": "basis data",
      "n1454": "direktori data",
      "n1455": "Buka tab Sumber Daya proyek untuk membuat pengguna sistem",
      "n1456": "batas",
      "n1457": "",
      "n1458": "pathallow",
      "n1459": "jalur mengizinkan direktori log",
      "n1460": "jalurdeny",
      "n1461": "",
      "n1462": "home: target kanonik selesai",
      "n1463": "; setquota tolong \"terapkan batasan pada OS\"",
      "n1464": "",
      "n1465": "data tidak valid",
      "n1466": "; bisa paket",
      "n1467": "untuk RAM 25%",
      "n1468": "Koneksi & jaringan",
      "n1469": "(bisa MEMBUNUH)",
      "n1470": "(bunuh -0 Gagal)",
      "n1471": "Canggih",
      "n1472": ": panel rahasia ( dan operator 2FA — )",
      "n1473": "Operasi",
      "n1474": "Pengaturan SFTP selesai (host/nama pengguna/jalur)",
      "n1475": "diterapkan ≠ cluster sehat — silakan selidiki --peers",
      "n1476": "migrasi posting Gagal",
      "n1477": "mkdir Gagal",
      "n1478": "posting oke=salah",
      "n1479": "cadangan tidak (dilewati)",
      "n1480": "pasang YSK_EXECUTE=1",
      "n1481": "Tidak ditemukan rndc / nama aktif|bind9|pdns",
      "n1482": "Push atau restic jarak jauh gagal — tar lokal mungkin berhasil; lihat hasil samping",
      "n1483": "mengajukan,,",
      "n1484": "aktif bernama/bind9/pdns (bisa scp file)",
      "n1485": "nginx — conf scp (ditulis pada peer)",
      "n1486": "Langkah jarak jauh/istirahat diproses",
      "n1487": "membutuhkan YSK_EXECUTE + root",
      "n1488": "pulihkan bukan chown (Membutuhkan root + YSK_EXECUTE)",
      "n1489": "DNSBL tidak lengkapMendukung IPv6;",
      "n1490": "rekan melamar; tertulis atau Gagal - memuat ulang cluster",
      "n1491": "peer reload Sukses (sebagian)",
      "n1492": "Beberapa atau semua pencadangan gagal — lihat hasilnya",
      "n1493": "atau Tidak diterapkan pada sistem ( YSK_EXECUTE)",
      "n1494": "Gagal — periksa kunci SSH/firewall",
      "n1495": "Gagal — langkah",
      "n1496": "sistemGagal",
      "n1497": "",
      "n1498": "PHP + Nginx (aplikasi/publik)",
      "n1499": "Dapat diganti pada waktu penerapan",
      "n1500": "akan membangun -o app.; hostMenginstal rantai alat Go",
      "n1501": "akankah venv + pip; ExecStart uvicorn utama: aplikasi",
      "n1502": "akankah venv + pip; entri app.py (bukan ASGI)",
      "n1503": "/terapkan kumpulan FPM tulis php_admin_value",
      "n1504": ": panel\"\"akan memulai server.js; tertulis ≠",
      "n1505": "host surat A",
      "n1506": "host surat AAAA (IPv6)",
      "n1507": "Direktori pengaturan manajemen email",
      "n1508": "tanda pengenal tidak valid",
      "n1509": "tidak sah",
      "n1510": "untuk 1–1000000 MiB",
      "n1511": "1 MiB",
      "n1512": "restart layanan sistem",
      "n1513": "larangan menambahkan",
      "n1514": "memuat ulang vsftpd",
      "n1515": "layanan muat ulang",
      "n1516": "Kesalahan dll",
      "n1517": "Log kesalahan, log kueri lambat",
      "n1518": "Kesalahan dan log",
      "n1519": "Angka ambang batas",
      "n1520": "ROW direkomendasikan untuk replikasi",
      "n1521": "Tunggu batas waktu",
      "n1522": "Mati",
      "n1523": "firewall (UFW tidak menerapkan sistem)",
      "n1524": "firewall(): TCP 3306, 4567, 4444, 4568",
      "n1525": "Preset menulis nginx limit_req",
      "n1526": "(tahan), turunkan",
      "n1527": "Pertahanan: kritis",
      "n1528": "Pertahanan: preset darurat disarankan",
      "n1529": "Pertahanan: kemungkinan serangan",
      "n1530": "batasMenulis; berlaku untuk OS YSK_EXECUTE + root",
      "n1531": "Batas tarif",
      "n1532": "",
      "n1533": "/db; Postfix/Rspamd tolong \"terapkan/ke sistem\"",
      "n1534": ": terdegradasi — build/processcan dengan pengguna; silakan buat pengguna sistem",
      "n1535": ": terdegradasi — proses dapat dengan pengguna; silakan root + YSK_EXECUTE dan buat pengguna sistem",
      "n1536": "menyimpan; rahasia TOTP. Otentikator bisa.",
      "n1537": "JALANKAN + root dulu bisa vakum",
      "n1538": "NetworkManager aktif mempertahankan DNS (akan /etc/resolv.conf)",
      "n1539": "YSK_EXECUTE dulu bisa ufw apply",
      "n1540": "YSK_EXECUTE akan benar-benar diblokir secara otomatis",
      "n1541": "YSK_EXECUTE banip",
      "n1542": "Layanan fail2ban YSK_EXECUTE",
      "n1543": "YSK_EXECUTE=1 jurnal vakum kaleng pertama",
      "n1544": "jalankan: benar atau dryRun: benar",
      "n1545": "nginx log_format $upstream_cache_status (atau X-YSK-Cache) HIT/LEWATKAN pertama",
      "n1546": "Membutuhkan root + YSK_EXECUTE akan benar-benar ditambahkan oleh pengguna; akanSukses",
      "n1547": "Membutuhkan jurnal rootctl --vacuum",
      "n1548": "Membutuhkan root terlebih dahulu, bisa UFW",
      "n1549": "host Kargo/karat terpasangc",
      "n1550": "tuan rumah Python dan pip",
      "n1551": "host Python dan pip (installwillFailed)",
      "n1552": "install bind9-dnsutils dan aktifkan systemchangepermission, bisa banget dnssec-keygen.",
      "n1553": "Memerlukan konfirmasi string DARURAT; hindari mengunci diri sendiri",
      "n1554": "sistem sshd Cocok / Pengaturan pengguna akan benar-benar",
      "n1555": "membutuhkan --target atau melanjutkan --pekerjaan",
      "n1556": "memerlukan izin admin MySQL/MariaDB",
      "n1557": "membutuhkan YSK_EXECUTE",
      "n1558": "membutuhkan Admin YSK_EXECUTE",
      "n1559": "membutuhkan admin",
      "n1560": "membutuhkan aws CLI (atau restic s3 repo)",
      "n1561": "membutuhkan id atau semuanya",
      "n1562": "membutuhkan ip",
      "n1563": "membutuhkan jobId",
      "n1564": "membutuhkan linuxUser atau projectId",
      "n1565": "membutuhkan simpul utama",
      "n1566": "membutuhkan nginx geoip2 (libnginx-mod-http-geoip2) terlebih dahulu akan HTTP",
      "n1567": "membutuhkan node primer",
      "n1568": "membutuhkan kunci pribadi",
      "n1569": "membutuhkan projectId",
      "n1570": "membutuhkan akar",
      "n1571": "membutuhkan sumber",
      "n1572": "memerlukan sshpass, kunci YSK (identityId), atau kunci SSH lokal",
      "n1573": "membutuhkan target (root@host) atau jobId dengan resume",
      "n1574": "memerlukan target, atau target jobId",
      "n1575": "membutuhkan nama pengguna dan ssh-",
      "n1576": "membutuhkan domain zona",
      "n1577": "membutuhkan kata sandi",
      "n1578": "membutuhkan email",
      "n1579": "membutuhkan email dan domain",
      "n1580": "memerlukan versi dan versi",
      "n1581": "memerlukan CandidVersion (bisa dll saat ini atau )",
      "n1582": "memerlukan izin admin sistem selesai diinstal",
      "n1583": "Root diperlukan untuk siklus hidup dan penulisan sistem",
      "n1584": "Izin eksekusi host diperlukan/muat ulang",
      "n1585": "Host menjalankan izin yang diperlukan untuk sistem dan memuat ulang Nginx",
      "n1586": "Host menjalankan izin yang diperlukan check_policy_service",
      "n1587": "Izin eksekusi host memerlukan nginx conf dan memuat ulang",
      "n1588": "Sinkronisasi diblokir: memerlukan root",
      "n1589": "membutuhkan node primer",
      "n1590": "",
      "n1591": "Bukan root — jalur sistem useradd / systemd / nginx dibatasi",
      "n1592": "bukan seccomp membutuhkan runAsUser",
      "n1593": "Permintaan publik / mnt",
      "n1594": "koneksi panel; Tersedia\"\" ( )",
      "n1595": "Panel tidak berjalan sebagai root",
      "n1596": "Tersedia berlaku: salah",
      "n1597": "— bukan file tulis",
      "n1598": "Pekerja uvicorn default",
      "n1599": "dengan Redis DB",
      "n1600": "",
      "n1601": "File lokal",
      "n1602": "jalur log tidak valid",
      "n1603": "startError",
      "n1604": "Kesalahan, dan lain-lain",
      "n1605": "Kesalahan ()",
      "n1606": "membangun kaleng; Catatan/log gagal",
      "n1607": "",
      "n1608": "verifikasi tidak valid",
      "n1609": "lulus",
      "n1610": "Indeks paket tidak disegarkan (YSK_EXECUTE nonaktif) — hanya menampilkan daftar apt; aktifkan eksekusi untuk menjalankan pembaruan apt-get",
      "n1611": "UFW tidak aktif: {{n}} aturan penolakan permanen disimpan di user.rules tetapi kernel tidak menerapkannya.",
      "n1612": "UFW tidak aktif. Aturan penolakan hanya akan ditulis ke user.rules — kernel tidak akan menghapus paket. Aktifkan UFW terlebih dahulu. Tidak mengaktifkan secara otomatis.",
      "t0001": "mendengarkanPort tidak valid: {{v0}}",
      "t0002": "versi pemulihan {{v0}}",
      "t0003": "file (>{{v0}} byte)",
      "t0004": ": {{v0}}",
      "t0005": "sasaran: {{v0}}",
      "t0006": "tidak ditemukan: {{v0}}",
      "t0007": "Gagal: {{v0}}",
      "t0008": "{{v0}} → {{v1}}",
      "t0009": "tidak ditemukan: {{v0}}",
      "t0010": "Gagal: {{v0}}",
      "t0011": "{{v0}} → {{v1}}",
      "t0012": "tidak bisa dari Status {{v0}} untuk",
      "t0013": "operasi ini memerlukan: {{v0}}",
      "t0014": "Status tidak valid: {{v0}}",
      "t0015": "{{v0}}",
      "t0016": "Tidak diketahui: {{v0}}",
      "t0017": "{{v0}} tidak bisa {{v1}} ( {{v2}})",
      "t0018": "{{v0}} operasi tidak terbaca memerlukan id",
      "t0019": "tuan rumah: {{v0}}",
      "t0020": "izinkan: {{v0}}",
      "t0021": "tolak: {{v0}}",
      "t0022": "tidak ditemukan Buku Panduan: {{v0}}",
      "t0023": "ip -j addr gagal: {{v0}}",
      "t0024": "ip -j rute gagal: {{v0}}",
      "t0025": "nmcli writeGagal: {{v0}}",
      "t0026": "{{v0}} → koneksi\"{{v1}}\"",
      "t0027": "peringatan koneksi: {{v0}}",
      "t0028": "Koneksi diaktifkan kembali (bertahan setelah reboot)",
      "t0029": "{{v0}} → {{v1}} (; reboot bisa hilang)",
      "t0030": "dari koneksi\"{{v0}}\" {{v1}}",
      "t0031": "NM: {{v0}}",
      "t0032": "Dihapus {{v0}} ← {{v1}}",
      "t0033": "tautan gagal: {{v0}}",
      "t0034": "turun {{v0}}",
      "t0035": "tautan gagal: {{v0}}",
      "t0036": "berhasil {{v0}}",
      "t0037": "MTU Gagal: {{v0}}",
      "t0038": "gateway tulis nmcli Gagal: {{v0}}",
      "t0039": "simpan gateway default {{v0}} → koneksi\"{{v1}}\" (reboot)",
      "t0040": "rute penulisan nmcli Gagal: {{v0}}",
      "t0041": "simpan {{v0}} →\"{{v1}}\" (boot ulang)",
      "t0042": "penambahan rute ip gagal: {{v0}}",
      "t0043": "tambahkan {{v0}}${gw?",
      "t0044": ": ''}(Mungkin tidak bertahan saat reboot; gunakan Simpan untuk bertahan)",
      "t0045": "dari koneksi\"{{v0}}\" ipv4.gateway",
      "t0046": "Gerbang NM: {{v0}}",
      "t0047": "dari \"{{v0}}\" {{v1}}",
      "t0048": "Rute NM: {{v0}}",
      "t0049": "ip rute del gagal: {{v0}}",
      "t0050": "{{v0}}",
      "t0051": "{{v0}}",
      "t0052": "DNS tidak valid: {{v0}}",
      "t0053": "IP DNS: {{v0}}",
      "t0054": "modifikasi nmcli gagal: {{v0}}",
      "t0055": "pulihkan {{v0}} DHCP DNS (abaikan-auto-dns=tidak)",
      "t0056": "modifikasi nmcli gagal: {{v0}}",
      "t0057": "Menulis {{v0}}: DNS {{v1}}${search.length?",
      "t0058": "Gagal: {{v0}}",
      "t0059": "{{v0}} → {{v1}}",
      "t0060": "{{v0}}",
      "t0061": "Token SSO ({{v0}} )",
      "t0062": "Pemasangan Webmail gagal: {{v0}}",
      "t0063": "{{v0}}",
      "t0064": "sistemGagal: {{v0}}",
      "t0065": "liburan ke {{v0}} direktori saringan (tertulis)",
      "t0066": "saringan +.dovecot.sieve → {{v0}}@{{v1}}",
      "t0067": "Tautan saringan aktif dinonaktifkan → {{v0}}@{{v1}}",
      "t0068": "{{v0}}@{{v1}} saringan Gagal: {{v2}}",
      "t0069": "Menulis daemon kebijakan per pengirim (domain {{v0}})",
      "t0070": "{{v0}} gagal (keluar {{v1}}): {{v2}}",
      "t0071": "Menulis plugin {{v0}}",
      "t0072": "symlink gagal: {{v0}}",
      "t0073": "melakukan symlink {{v0}} → {{v1}}",
      "t0074": "konfigurasi Gagal: {{v0}}",
      "t0075": "plugin konfigurasi {{v0}}: {{v1}}",
      "t0076": "Menulis {{v0}}: {{v1}}",
      "t0077": "{{v0}} dan www.{{v1}} ke IP server. CDN (Cloudflare) bisa atau.",
      "t0078": "Pengaturan VPS/IP PTR, dan dan HELO/EHLO ({{v0}}). tolong (AWS/GCP).",
      "t0079": "{{v0}}",
      "t0080": "postsuper gagal: {{v0}}",
      "t0081": "domain: {{v0}}",
      "t0082": ": {{v0}}",
      "t0083": "buat Maildir: {{v0}}",
      "t0084": "buat pengguna sistem {{v0}}",
      "t0085": "createsystemuserGagal: {{v0}}",
      "t0086": ": {{v0}}",
      "t0087": "tulis passdb Gagal: {{v0}}",
      "t0088": ": {{v0}}",
      "t0089": "buat {{v0}}: {{v1}} → {{v2}}",
      "t0090": "Domain email tidak ditemukan: {{v0}}",
      "t0091": "Menulis liburan {{v0}}",
      "t0092": "Menulis {{v0}}",
      "t0093": "virtual_alias: {{v0}} ({{v1}} )",
      "t0094": "Landasan postfix: smtpd_client_message_rate_limit={{v0}} / 3600s (; tarif domain )",
      "t0095": "pascakonf: {{v0}}",
      "t0096": "Menulis rspamd ratelimit.conf (~{{v0}}/h)",
      "t0097": "peta ({{v0}} domain)",
      "t0098": "{{v0}}: blok (allowlocal LLM)",
      "t0099": "LLM tolong Gagal: {{v0}}",
      "t0100": "{{v0}}–{{v1}} Tidak ditemukan pelabuhan yang tersedia",
      "t0101": "harap konfirmasi: {{v0}}",
      "t0102": "{{v0}}s akan dengan 1 (shutdown +N dengan )",
      "t0103": "mulai ulang ( {{v0}} )",
      "t0104": "mati ( {{v0}} )",
      "t0105": "Gagal membaca: {{v0}}",
      "t0106": "Gagal: {{v0}}",
      "t0107": "layanan tidak valid: {{v0}}",
      "t0108": "jalur yang diizinkan menulis: {{v0}}",
      "t0109": "pembersihan/muat ulang gagal: {{v0}}",
      "t0110": "DB {{v0}}: {{v1}} kunci",
      "t0111": "(ketik {{v0}} — )",
      "t0112": "Menulis {{v0}}",
      "t0113": "Gagal menulis: {{v0}}",
      "t0114": "Kunci hilang atau tidak dihapus",
      "t0115": "rumah: {{v0}}",
      "t0116": "tidak dapat mengambil snapshot JSON: {{v0}}",
      "t0117": "{{v0}} istirahat",
      "t0118": "beranda konfirmasiPhrase=\"{{v0}}\" ()",
      "t0119": "uji coba: snapshot {{v0}} {{v1}} jalur (100)",
      "t0120": "uji coba gagal: {{v0}}",
      "t0121": "pulihkan cuplikan {{v0}} → {{v1}}",
      "t0122": "pulihkan pintu keluar yang gagal={{v0}}",
      "t0123": "Manajemen penulisan: {{v0}}",
      "t0124": "proyek pengguna Linux {{v0}} (Cocokkan Pengguna ysks_*,ysk_*)",
      "t0125": "tolong: cp {{v0}} /etc/ssh/sshd_config.d/ && systemctl muat ulang sshd",
      "t0126": "sshd -t Gagal, tidak memuat ulang: {{v0}}",
      "t0127": "Instal {{v0}} dan muat ulang sshd",
      "t0128": "Gagal memuat ulang yang diinstal: {{v0}}",
      "t0129": "Menulis {{v0}} ({{v1}} byte)",
      "t0130": "Konfigurasi Nginx yang dikelola: {{v0}} (panel dataDir nginx/conf.d)",
      "t0131": "Tidak diketahui: {{v0}}",
      "t0132": "{{v0}}: {{v1}}",
      "t0133": "{{v0}} — dilewati (kekuatan bisa )",
      "t0134": "Pemasangan WordPress — {{v0}}",
      "t0135": "domain: {{v0}}",
      "t0136": "entri {{v0}}.wsgi:aplikasi (gunicorn)",
      "t0137": "akankah kargo dibangun --release;./target/release/{{v0}}",
      "t0138": "Axum: pembuatan kargo --release crates.io",
      "t0139": "./target/rilis/{{v0}}",
      "t0140": "buat {{v0}}, {{v1}}, Kesalahan {{v2}}",
      "t0141": "{{v0}}pengguna Linux proyek selesai (halaman → buat pengguna sistem).",
      "t0142": "rumah: /home/ysk-server-{{v0}} · pengguna: {{v1}}",
      "t0143": "apakah chown {{v0}}:{{v1}} → {{v2}}",
      "t0144": "dengan pengguna proyek {{v0}}",
      "t0145": "file pid dengan runuser -u {{v0}} mulai",
      "t0146": "Menulis kumpulan FPM: {{v0}}",
      "t0147": "Kumpulan yang diaktifkan: {{v0}}",
      "t0148": "/etc/php/{{v0}}/fpm tidak ditemukan — instal php{{v1}}-fpm",
      "t0149": "{{v0}} Terpasang",
      "t0150": "instal {{v0}}",
      "t0151": "tidak menginstal {{v0}}",
      "t0152": "Pemeriksaan SSH gagal: {{v0}}",
      "t0153": "server nama: {{v0}}",
      "t0154": "direktori zona ({{v0}}.zone)",
      "t0155": "direktori zona: {{v0}}",
      "t0156": "isi ulang jarak jauh gagal: {{v0}}",
      "t0157": "{{v0}}: scp gagal {{v1}}",
      "t0158": "scp {{v0}} Oke → {{v1}}",
      "t0159": "scp /Gagal (ok={{v0}} gagal={{v1}})",
      "t0160": "pengaktifan gagal: {{v0}}",
      "t0161": "penonaktifan gagal: {{v0}}",
      "t0162": "UFW DENY dari {{v0}} (aturan, )",
      "t0163": "penolakan gagal: {{v0}}",
      "t0164": "UFW MENOLAK {{v0}}",
      "t0165": "penghapusan gagal: {{v0}}",
      "t0166": "aturan #{{v0}}",
      "t0167": "#{{v0}} Gagal: {{v1}}",
      "t0168": "izinkan {{v0}}/{{v1}}",
      "t0169": "izinkan gagal: {{v0}}",
      "t0170": "muat ulang Gagal ({{v0}}): {{v1}}",
      "t0171": ": dengan pengguna proyek {{v0}} aktif",
      "t0172": "Simpul: {{v0}}",
      "t0173": "pelabuhan: {{v0}}",
      "t0174": "Node Panel Terapan ({{v0}})",
      "t0175": "terapkanTidak ditemukan: {{v0}}",
      "t0176": "dengan unit systemd: {{v0}}",
      "t0177": "dengan PM2: {{v0}}",
      "t0178": "proses mulaiGagal: {{v0}}",
      "t0179": "mulai pid={{v0}}, pidfile={{v1}}",
      "t0180": "Pengaturan Nginx (file terkelola): {{v0}}",
      "t0181": "buat halaman: {{v0}}",
      "t0182": ": {{v0}}",
      "t0183": "Pengaturan Nginx: {{v0}}",
      "t0184": "direktori: {{v0}}",
      "t0185": "HTTP: {{v0}} ({{v1}})",
      "t0186": ": {{v0}}",
      "t0187": "→ {{v0}}",
      "t0188": "sertifikat: {{v0}}",
      "t0189": "SSL diaktifkan (Let's Encrypt path; atau halaman SSL {{v0}} sertifikat)",
      "t0190": "memuat ulang Nginx Gagal: {{v0}}",
      "t0191": "Tuan rumah tulis: {{v0}}",
      "t0192": "Runtime {{v0}} — Git, mulai ulang proses",
      "t0193": "Menulis {{v0}} ({{v1}} )",
      "t0194": "Pengguna kumpulan PHP-FPM: {{v0}} (proyek)",
      "t0195": "versi waktu proses → {{v0}}",
      "t0196": "panel php.ini ({{v0}} php_admin_*)",
      "t0197": "Pengaturan PHP-FPM Nginx: {{v0}}",
      "t0198": "Isi ulang Nginx ={{v0}}: {{v1}}",
      "t0199": "Pid server PHP={{v0}} @ 127.0.0.1:{{v1}}",
      "t0200": "SIGTERM {{v0}}",
      "t0201": "SIGKILL {{v0}}",
      "t0202": "pid {{v0}}",
      "t0203": "deployProses runtime\"{{v0}}\"",
      "t0204": ": dengan pengguna proyek {{v0}} dan mulai",
      "t0205": "Waktu proses: {{v0}} · port {{v1}} · entri {{v2}}",
      "t0206": ": {{v0}}",
      "t0207": "Gagal: {{v0}}",
      "t0208": "Panel Terapan {{v0}} ({{v1}})",
      "t0209": "Menulis sistemd: {{v0}}",
      "t0210": "aktifkan --sekarang unit proyek (Pengguna={{v0}})",
      "t0211": "systemctl Mulai gagal: {{v0}}",
      "t0212": "unit sistem tulis Gagal: {{v0}}",
      "t0213": "pidfile mulai pid={{v0}}${mode === 'terisolasi'?",
      "t0214": "pidfile Mulai gagal: {{v0}}",
      "t0215": "checknot lolos ({{v0}}ms): {{v1}}",
      "t0216": "lulus pemeriksaan ({{v0}}ms)",
      "t0217": "Menulis Nginx: {{v0}}",
      "t0218": "{{v0}} IP terlarang",
      "t0219": "telah membatalkan pelarangan {{v0}} @ {{v1}}",
      "t0220": "pembatalan pelarangan gagal: {{v0}}",
      "t0221": "kelola: {{v0}} ({{v1}} )",
      "t0222": "sshd abaikanip {{v0}} {{v1}} · Status: diterapkan",
      "t0223": "fail2ban-client abaikan Gagal: {{v0}} (file terkelolaWrote; diterapkan)",
      "t0224": "penjara fail2ban: {{v0}}",
      "t0225": "Unit tulis {{v0}}",
      "t0226": "Status masih {{v0}} (tidak diterapkan)",
      "t0227": "Status_berlaku tak terduga: {{v0}}",
      "t0228": "basis data: {{v0}} ( 0–{{v1}})",
      "t0229": "ke {{v0}}",
      "t0230": "tidak dapat ke direktori konfigurasi sistem: {{v0}}",
      "t0231": "conf Gagal: {{v0}}",
      "t0232": "mulai ulang {{v0}}",
      "t0233": "ke {{v0}} Gagal: {{v1}}",
      "t0234": "direktori penolakan: {{v0}}",
      "t0235": "direktori: {{v0}}",
      "t0236": "direktori yang dilewati (pindaian): {{v0}}",
      "t0237": "{{v0}} (tidak )",
      "t0238": "jurnal php{{v0}}-fpm (log kumpulan bukan )",
      "t0239": "grep\"{{v0}}\": {{v1}} (pindai {{v2}} byte)",
      "t0240": "{{v0}} (berkas {{v1}} byte, )",
      "t0241": "{{v0}} (berkas {{v1}} byte)",
      "t0242": "untuk {{v0}} log (bukan mati)",
      "t0243": "tidak dapat membaca: {{v0}}",
      "t0244": "\"{{v0}}\": {{v1}}, {{v2}} ()",
      "t0245": "{{v0}} serverTidak terpasang",
      "t0246": "{{v0}} layanan tidak berjalan",
      "t0247": "{{v0}} Tidak terpasang",
      "t0248": ": {{v0}}",
      "t0249": "pelayan: {{v0}}",
      "t0250": "{{v0}} Siap",
      "t0251": "{{v0}} Penginstalan tidak lengkap",
      "t0252": "{{v0}} layanan dimulai",
      "t0253": "Mulai gagal: {{v0}}",
      "t0254": "Mendukung Node.js {{v0}}; versi tersedia: {{v1}}",
      "t0255": "Mendukung versi PHP {{v0}}; Tersedia: {{v1}}",
      "t0256": "Mendukung versi Python {{v0}}; Tersedia: {{v1}}",
      "t0257": "Mendukung versi Go {{v0}}; Tersedia: {{v1}}",
      "t0258": "Waktu proses tidak diketahui: {{v0}}",
      "t0259": "gali: tidak ada jawaban (NXDOMAIN atau kosong)",
      "t0260": "{{v0}}",
      "t0261": "PostgreSQL gagal: {{v0}}",
      "t0262": "MySQL gagal: {{v0}}",
      "t0263": "{{v0}}: tidak dapat DROP — EXECUTE+root ( kadaluwarsa)",
      "t0264": "{{v0}}: DROP gagal {{v1}}",
      "t0265": "{{v0}}: DROP gagal {{v1}}",
      "t0266": "{{v0}}: kedaluwarsa (bukan akun sistem DROP)",
      "t0267": "Pengguna FTP: {{v0}}",
      "t0268": "buat FTP {{v0}}",
      "t0269": "Jalur penjara: {{v0}}",
      "t0270": "Kata sandi disimpan sebagai hash crypt (bukan teks biasa)",
      "t0271": "dengan pengguna proyek Linux: {{v0}} (terapkan vsftpd )",
      "t0272": "Melewati nama pengguna yang tidak valid",
      "t0273": "{{v0}}: kata sandi → hash ruang bawah tanah",
      "t0274": "{{v0}} hashnot crypt (openssl tidak tersedia)— bisa Gagal",
      "t0275": "{{v0}} passwordhash, tidak bisa",
      "t0276": "{{v0}} proyek linuxUser — tamu\"{{v1}}\" (mohon FTP )",
      "t0277": "Menulis pengaturan {{v0}}",
      "t0278": "{{v0}}",
      "t0279": "{{v0}} Diterapkan, vsftpd Berjalan",
      "t0280": "melewatkan chown {{v0}}: pengguna sistem\"{{v1}}\" (silakan buat pengguna sistem proyek terlebih dahulu)",
      "t0281": "chown gagal {{v0}}: {{v1}}",
      "t0282": "Direktori FTP ({{v0}})",
      "t0283": "direktori proyek {{v0}}",
      "t0284": "proyek {{v0}} publik",
      "t0285": "surat {{v0}}",
      "t0286": "bukan membuat pengguna sistem (memerlukan izin admin sistem). rumah: {{v0}}; direktori.",
      "t0287": "{{v0}}; rumah {{v1}}",
      "t0288": "berhenti {{v0}}",
      "t0289": "Rumah yang dihapus: {{v0}}",
      "t0290": "rumah tidak (bisa ): {{v0}} — {{v1}}",
      "t0291": "tolak penghapusan jalur beranda: {{v0}}",
      "t0292": "bukan OS home (Membutuhkan root): {{v0}}; pengguna sistem {{v1}} bisa",
      "t0293": "zona beban pdnsutil gagal: {{v0}}",
      "t0294": "zona pdnsutil {{v0}}",
      "t0295": "systemctl {{v0}} fail2ban oke",
      "t0296": "{{v0}} gagal: {{v1}}",
      "t0297": "larangan fail2ban {{v0}} @ {{v1}} (, batas bantime)",
      "t0298": "banip gagal: {{v0}}",
      "t0299": "penjara: {{v0}}",
      "t0300": "abaikanip: dataDir/fail2ban/ignoreip.txt",
      "t0301": "pemeriksaan pemasangan: {{v0}}",
      "t0302": "proyek {{v0}} (paket: {{v1}})",
      "t0303": "{{v0}} (paket: {{v1}})",
      "t0304": "basis data {{v0}} (paket: {{v1}})",
      "t0305": "Menulis {{v0}} (DB {{v1}}@{{v2}}; Tersedia)",
      "t0306": "permulaan pm2 gagal: {{v0}}",
      "t0307": "pm2 mulai {{v0}}",
      "t0308": "{{v0}} tidak diinstal",
      "t0309": "{{v0}}",
      "t0310": "Diterapkan {{v0}}",
      "t0311": "dengan dapat memulai ulang: {{v0}}",
      "t0312": "terapkan {{v0}}",
      "t0313": "mulai ulang (silakan mulai ulang): {{v0}}",
      "t0314": "ALTER SYSTEM {{v0}} dan muat ulang",
      "t0315": "mulai ulang: {{v0}}",
      "t0316": "melakukan {{v0}} {{v1}}",
      "t0317": "ini: {{v0}}",
      "t0318": "/etc/php/{{v0}}/fpm — harap instal terlebih dahulu php{{v1}}-fpm",
      "t0319": "Terapkan {{v0}} dan muat ulang php{{v1}}-fpm",
      "t0320": "ini; gagal memuat ulang: {{v0}}",
      "t0321": "Draf zona DNS {{v0}} (untuk penulisan/penerapan DNS)",
      "t0322": "IPv6 {{v0}}",
      "t0323": "domain surat {{v0}}",
      "t0324": "Draf DB MySQL {{v0}} (untuk menerapkan basis data)",
      "t0325": "dilewati: direktori {{v0}}",
      "t0326": "Proyek {{v0}}/{{v1}} yang dicadangkan",
      "t0327": "(dilewati {{v0}} tanpa direktori utama)",
      "t0328": "direktori proyek: {{v0}}",
      "t0329": "tar gagal: {{v0}}",
      "t0330": "Cadangan tulis {{v0}}",
      "t0331": "uji coba: file {{v0}}+ ( {{v1}})",
      "t0332": "tidak bisa: {{v0}}",
      "t0333": "pulihkan (web) ke {{v0}}",
      "t0334": "pemulihan webGagal: {{v0}}",
      "t0335": "pemulihanGagal: {{v0}}",
      "t0336": "dari {{v0}} pulihkan ke direktori proyek",
      "t0337": "apakah chown {{v0}}:{{v1}} → {{v2}}",
      "t0338": ": {{v0}}",
      "t0339": "kelola crontab: {{v0}}",
      "t0340": "crontab gagal: {{v0}}",
      "t0341": "pg_dump gagal: {{v0}}",
      "t0342": "pembuangan gagal: {{v0}}",
      "t0343": "psql gagal: {{v0}}",
      "t0344": "impor gagal: {{v0}}",
      "t0345": "target {{v0}} bukan git — tolak kloning dengan data (.ysk-scaffold )",
      "t0346": "melakukan kloning {{v0}} → {{v1}}",
      "t0347": "tarik pembaruan: {{v0}}",
      "t0348": "pengguna linux tidak valid: {{v0}}",
      "t0349": "Diterapkan {{v0}}: {{v1}} + www-data/nginx; rumah 750, g+rX publik",
      "t0350": "ysk-web applyGagal: {{v0}}",
      "t0351": "jalur {{v0}}",
      "t0352": "konferensi nginx: {{v0}}",
      "t0353": "Pengunduhan gagal: {{v0}}",
      "t0354": "Admin → {{v0}}",
      "t0355": "{{v0}}",
      "t0356": "konferensi nginx: {{v0}}",
      "t0357": "→ {{v0}}",
      "t0358": "port tidak valid: {{v0}}",
      "t0359": "dengan pengguna {{v0}} instal crontab",
      "t0360": "kunci {{v0}}",
      "t0361": "zona → {{v0}} ( muat ulang DNS; pendaftar manual DS)",
      "t0362": "tidak ke zona terkelola ( dns/zones/{{v0}}.zone)—",
      "t0363": "{{v0}} file di bawah {{v1}}",
      "t0364": "TCP {{v0}}:{{v1}} Oke ({{v2}}ms)",
      "t0365": "TCP {{v0}}:{{v1}} gagal: {{v2}}",
      "t0366": "PING gagal: {{v0}}",
      "t0367": ": {{v0}}MB > {{v1}}MB",
      "t0368": "({{v0}} / {{v1}} MiB), tidak bisa{{v2}}",
      "t0369": "Jalur pulang belum siap ({{v0}})",
      "t0370": "Pengguna Linux {{v0}} tidak tersedia",
      "t0371": "Siap {{v0}} / terdegradasi {{v1}} / tidak terisolasi {{v2}} ({{v3}} total)",
      "t0372": "· Tertunda: {{v0}}{{v1}}",
      "t0373": "Isolasi proyek \"{{v0}}\".",
      "t0374": "ke jalur lokal {{v0}}",
      "t0375": "identitas {{v0}}: {{v1}}",
      "t0376": "sftp (identitas) ke {{v0}} berhasil",
      "t0377": "sftp (identitas) gagal: {{v0}}",
      "t0378": "sftp ke {{v0}} berhasil",
      "t0379": "sftp gagal: {{v0}}",
      "t0380": "sftp ke {{v0}} berhasil",
      "t0381": "sftp gagal: {{v0}} (bisa set backup remote identityId)",
      "t0382": "S3 {{v0}}",
      "t0383": "S3 gagal: {{v0}}",
      "t0384": ": {{v0}}/{{v1}} admin Mengaktifkan 2FA",
      "t0385": "Kebijakan tidak ditegakkan: {{v0}}/{{v1}} admin mengaktifkan 2FA",
      "t0386": "{{v0}} JALUR",
      "t0387": "{{v0}} tidak ditemukan",
      "t0388": "Instal {{v0}} atau tambahkan ke PATH",
      "t0389": "Versi tersedia: {{v0}}",
      "t0390": "{{v0}}% ( {{v1}}MB)",
      "t0391": "{{v0}}% ({{v1}})",
      "t0392": "mulai layanan {{v0}}",
      "t0393": "Modus: {{v0}}",
      "t0394": "Siap {{v0}} / Terdegradasi {{v1}} / Hilang {{v2}} (total {{v3}})",
      "t0395": "Tidak ditemukan ( {{v0}})",
      "t0396": "simpul host: {{v0}}",
      "t0397": "tuan rumah php: {{v0}}",
      "t0398": "tuan rumah python: {{v0}}",
      "t0399": "tuan rumah pergi: {{v0}}",
      "t0400": "kargo tuan rumah: {{v0}}",
      "t0401": "Node Tersedia: {{v0}}",
      "t0402": "PHP Tersedia: {{v0}}",
      "t0403": "Python Tersedia: {{v0}}",
      "t0404": "Tersedia: {{v0}}",
      "t0405": "Tersedia Karat: {{v0}}",
      "t0406": "instal Node {{v0}}",
      "t0407": "instal PHP {{v0}}",
      "t0408": "instal Python {{v0}}",
      "t0409": "instal Go {{v0}} ke /usr/local/ysk/go",
      "t0410": "instal Rust ({{v0}}) ke /usr/local/ysk/rust",
      "t0411": "Penginstalan gagal: {{v0}}",
      "t0412": "Skrip instalasi OpenJDK {{v0}} yang disiapkan",
      "t0413": "Skrip pemasangan Kotlin {{v0}} yang telah disiapkan (membutuhkan JDK)",
      "t0414": "Skrip instalasi Bun yang Disiapkan ({{v0}}).",
      "t0415": "rumah proyek: {{v0}}",
      "t0416": "pengguna target {{v0}} (rumah proyek); tolong.ssh chown (API akan)",
      "t0417": "apakah chown {{v0}} → {{v1}}",
      "t0418": "chown.ssh gagal: {{v0}}",
      "t0419": "Kunci yang dihapus · Authorized_keys",
      "t0420": "Mendukung: {{v0}}",
      "t0421": "TTL {{v0}} 30–604800",
      "t0422": "{{v0}} CNAME dan ()",
      "t0423": "{{v0}} Target CNAME",
      "t0424": "pengaturanGagal: {{v0}}",
      "t0425": "{{v0}} Pengaturan manajemen penulisan",
      "t0426": "tidak dapat mengajukan: {{v0}}",
      "t0427": "{{v0}} pengaturan ke direktori sistem",
      "t0428": "{{v0}} tidak valid",
      "t0429": "rumah bukan jalan ( {{v0}})",
      "t0430": "mod pengguna -s gagal: {{v0}}",
      "t0431": "Gagal: {{v0}}",
      "t0432": "Gagal: {{v0}}",
      "t0433": "set-property Gagal: {{v0}} (menyebarkan unit willwrite)",
      "t0434": "unit {{v0}} tidak aktif — membatasi DB, menyebarkan unit tulis",
      "t0435": "setquota tidak Berhasil (sistem file tidak dapat user_xattr/kuota): {{v0}}",
      "t0436": "rumah: {{v0}}",
      "t0437": "apakah chown {{v0}} → {{v1}}",
      "t0438": "tajuk atas gagal: {{v0}}",
      "t0439": "ps selesaiGagal: {{v0}}",
      "t0440": "TIDAK={{v0}}",
      "t0441": "PID {{v0}} (proses.pid)",
      "t0442": "atau selidiki (bunuh -0 keluar {{v0}})",
      "t0443": "kill -s {{v0}} gagal: ${err ||",
      "t0444": "{{v0}} → PID {{v1}}",
      "t0445": "{{v0}} proyek ditangguhkan",
      "t0446": "{{v0}} proyek tidak ada pengguna sistem",
      "t0447": "{{v0}} menunggu persetujuan",
      "t0448": "Sertifikat kedaluwarsa: {{v0}}",
      "t0449": "Masa berlaku sertifikat akan habis dalam {{v0}} hari: {{v1}}",
      "t0450": "Waktu: {{v0}}",
      "t0451": "Daftar DNSBL: {{v0}}",
      "t0452": "{{v0}} penerapan gagal/diblokir",
      "t0453": "{{v0}} item masih ditulis/draf",
      "t0454": "Prasetel pertahanan otomatis: {{v0}}",
      "t0455": "Operasi gagal: {{v0}}",
      "t0456": "Penggunaan disk jurnal tinggi: ≈{{v0}} MB",
      "t0457": "Ambang batas {{v0}} MB — vakum di pusat Log atau sesuaikan retensi",
      "t0458": "df gagal: {{v0}}",
      "t0459": "{{v0}} proyek ( {{v1}})",
      "t0460": "versi {{v0}} → {{v1}}",
      "t0461": "naikkan {{v0}}",
      "t0462": "Gagal keluar={{v0}}",
      "t0463": "apt list --upgradeable: {{v0}} dapat ditingkatkan",
      "t0464": "apt list --upgradeable tidak tersedia (keluar {{v0}}); kebijakan apt-cache",
      "t0465": "kebijakan dpkg+apt-cache: {{v0}} paket",
      "t0466": "dpkg/apt-cache policy Gagal atau (keluar {{v0}})— dapat apt atau izin",
      "t0467": "Node {{v0}} (bukan paket nodejs yang dapat dinaikkan)",
      "t0468": "dapat menaikkan (kandidat ≠ saat ini): {{v0}}",
      "t0469": "registri npm HTTP {{v0}}",
      "t0470": "GitHub merilis HTTP {{v0}}",
      "t0471": "Paket GitHub.json HTTP {{v0}}",
      "t0472": "npm: {{v0}}@{{v1}}",
      "t0473": "npm {{v0}} tidak tersedia: {{v1}}",
      "t0474": "Rilis GitHub tidak tersedia: {{v0}}",
      "t0475": "Paket GitHub.json ({{v0}}): {{v1}}",
      "t0476": "Paket GitHub.json tidak tersedia: {{v0}}",
      "t0477": "pembaruan: {{v0}} → {{v1}}",
      "t0478": "direktori {{v0}} git repo — bisa YSK_SOURCE_ROOT, atau npm (YSK_NPM_PACKAGE)",
      "t0479": "Pengunduhan tarball GitHub gagal: {{v0}}",
      "t0480": "hingga {{v0}} (hanya pementasan)— bukan Runninginstall; tolong /git direktori selesai",
      "t0481": "git: {{v0}}",
      "t0482": "git apply {{v0}} Gagal (keluar {{v1}}): {{v2}}",
      "t0483": "perbaruitarget {{v0}} dan buat — harap mulai ulang versi server ysk",
      "t0484": "Dipasang {{v0}}",
      "t0485": "Pembaruan npm gagal: {{v0}}",
      "t0486": "YSK_NPM_PACKAGE pasang {{v0}}",
      "t0487": "YSK_NPM_PACKAGE Pemasangan gagal: {{v0}}",
      "t0488": "dapat menaikkan {{v0}} → {{v1}} (CVE KRITIS, )",
      "t0489": "dapat menaikkan {{v0}} → {{v1}} (CVE TINGGI, )",
      "t0490": "bisa menaikkan {{v0}} → {{v1}} (bisa, )",
      "t0491": "dapat menaikkan {{v0}} → {{v1}} ()",
      "t0492": "dapat menaikkan {{v0}} → {{v1}} (Kandidat yang tepat)",
      "t0493": "Tersedia kenaikan gaji, OSV {{v0}}",
      "t0494": "Status layanan: {{v0}}",
      "t0495": "deteksi untuk dapat: {{v0}}",
      "t0496": "Agen Tak Dikenal berjalan: {{v0}}",
      "t0497": "Agen Pendukung: {{v0}}",
      "t0498": "installGagal (akan Berhasil): {{v0}}",
      "t0499": "Sesi agen tidak ditemukan: {{v0}}",
      "t0500": "Tidak ditemukan: {{v0}}",
      "t0501": "pengguna: {{v0}}",
      "t0502": "pengguna: {{v0}}",
      "t0503": "pengguna SFTP proyek (ysks_/ysk_, internal-sftp kbd-interactive): {{v0}}",
      "t0504": "dari pengguna ketat: {{v0}}",
      "t0505": "{{v0}} kunci publik pengguna+TOTP, nonaktifkan kata sandi",
      "t0506": "file yang dikelola: {{v0}}",
      "t0507": "Instal {{v0}} dan muat ulang sshd",
      "t0508": "instal/sshd -t Gagal: {{v0}}",
      "t0509": "File yang akan dikelola PAM: {{v0}}",
      "t0510": "chown Gagal: {{v0}}",
      "t0511": "Peringatan: mode 400 (status: {{v0}})",
      "t0512": "PAM (file terkelola): {{v0}}",
      "t0513": "sshd (file yang dikelola): {{v0}}",
      "t0514": "scratch (ini): {{v0}} — harap simpan",
      "t0515": "pam.d/sshd: {{v0}}",
      "t0516": "pengguna {{v0}} SSH 2FA ({{v1}}). menonaktifkan/pensiun.",
      "t0517": "kunci utama rahasia: {{v0}}",
      "t0518": "chown Gagal: {{v0}}",
      "t0519": "ssh gagal: {{v0}}",
      "t0520": "kunci utama: {{v0}} (harap dicadangkan)",
      "t0521": "kunci utama: {{v0}}",
      "t0522": "sidik jari: {{v0}} ({{v1}})",
      "t0523": "Menulis UFW khusus CF: {{v0}}",
      "t0524": "pelabuhan: {{v0}}",
      "t0525": "CF IPv4: {{v0}}",
      "t0526": "CF IPv6: {{v0}}",
      "t0527": "ufw Gagal: {{v0}}",
      "t0528": "autentikasi IP gagal: {{v0}}",
      "t0529": "IP Teratas {{v0}}",
      "t0530": "{{v0}} · {{v1}}",
      "t0531": "Preset pertahanan peralihan otomatis → {{v0}}{{v1}}",
      "t0532": "Preset pertahanan peralihan otomatis: {{v0}}",
      "t0533": "SSH gagal×{{v0}}",
      "t0534": "auth Gagal {{v0}} IP",
      "t0535": "tolong ×{{v0}}",
      "t0536": "pindai×{{v0}}",
      "t0537": "{{v0}}/{{v1}}",
      "t0538": "selesai {{v0}} IP: Berhasil {{v1}}",
      "t0539": ": larangan otomatis {{v0}}",
      "t0540": ": {{v0}}",
      "t0541": "larangan {{v0}} IP",
      "t0542": "tidak dapat membuat zona {{v0}} (HTTP {{v1}})",
      "t0543": ": {{v0}} tingkat_keamanan → {{v1}}",
      "t0544": ": {{v0}} → tingkat_keamanan={{v1}}",
      "t0545": "({{v0}})",
      "t0546": "{{v0}}",
      "t0547": "konfirmasi=\"{{v0}}\"",
      "t0548": "Menulis batas kecepatan Nginx: {{v0}}",
      "t0549": "Menyuntikkan penanda batas kecepatan ke {{v0}} vhost",
      "t0550": "Preset pertahanan aktif → {{v0}}",
      "t0551": "larangan → {{v0}} ({{v1}} / {{v2}})",
      "t0552": "Preset pertahanan yang diterapkan: {{v0}}",
      "t0553": "fail2ban gagal: {{v0}}",
      "t0554": "ufw gagal: {{v0}}",
      "t0555": "{{v0}}",
      "t0556": "penghapusan ufw gagal: {{v0}}",
      "t0557": "{{v0}}",
      "t0558": "{{v0}}: {{v1}}",
      "t0559": "ke {{v0}} vhost",
      "t0560": "cluster_size={{v0}} < simpul {{v1}}",
      "t0561": "{{v0}} gugus simpul",
      "t0562": "penyelidikan Mendukung {{v0}}",
      "t0563": "mysql/mariadb Gagal: {{v0}}",
      "t0564": "TAMPILKAN REPLIKA/BUDAK gagal: {{v0}}",
      "t0565": "TAMPILKAN MASTER gagal: {{v0}}",
      "t0566": "replika untuk pemulihan, ={{v0}}",
      "t0567": "pemulihan primer, ={{v0}}",
      "t0568": "replika Peran tidak normal={{v0}}",
      "t0569": "tuan, peran={{v0}}",
      "t0570": "{{v0}} · {{v1}}",
      "t0571": "tar gagal: {{v0}}",
      "t0572": "{{v0}} ({{v1}} byte)",
      "t0573": "{{v0}} target rekan",
      "t0574": "{{v0}}: identitas {{v1}} tidak tersedia — kunci",
      "t0575": "{{v0}}: ssh mkdir gagal {{v1}}",
      "t0576": "{{v0}}: {{v1}}",
      "t0577": "{{v0}}/{{v1}}: scp gagal {{v2}}",
      "t0578": "{{v0}} agen · op={{v1}}",
      "t0579": "{{v0}}: antrean gagal {{v1}}",
      "t0580": "Tidak diketahui {{v0}}",
      "t0581": "Konferensi Galera ({{v0}})",
      "t0582": "{{v0}} instal conf dan gabung ( / SSH / armada)",
      "t0583": "instal conf → systemctl restart mariadb (bukan node bootstrap)",
      "t0584": "Konfigurasi tidak ditemukan: {{v0}}",
      "t0585": "penerapan lokal Dukungan {{v0}}",
      "t0586": "Drop-in sistem yang diinstal: {{v0}}",
      "t0587": "konfigurasi sistem tulis Gagal: {{v0}}",
      "t0588": "galera_new_cluster gagal: {{v0}}",
      "t0589": "systemctl restart {{v0}} (dari /slot/skrip penjaga/)",
      "t0590": "apakah systemctl memulai ulang {{v0}}",
      "t0591": "penyelidikan ssh gagal: {{v0}}",
      "t0592": "pemeriksaan replika gagal: {{v0}}",
      "t0593": "penyelidikan utama gagal: {{v0}}",
      "t0594": "{{v0}} pemeriksaan simpul OK · ukuran={{v1}}",
      "t0595": "{{v0}} pemeriksaan simpul OK",
      "t0596": "instal ke {{v0}} dan {{v1}}",
      "t0597": "scp gagal {{v0}}",
      "t0598": "instalasi conf gagal: {{v0}}",
      "t0599": "conf Menulis restart {{v0}} Gagal",
      "t0600": "Menulis {{v0}}${mulai ulang?",
      "t0601": "Mendukung: {{v0}}",
      "t0602": "Mendukung klaster: {{v0}}",
      "t0603": "hentikan {{v0}} unit proyek (ok-ish {{v1}})",
      "t0604": "berhenti bukan keluar ( {{v0}})— dump",
      "t0605": "dan {{v0}} RDB (dilewati dump)",
      "t0606": "selesai → {{v0}}",
      "t0607": "buat pengguna {{v0}} uid={{v1}}",
      "t0608": "pengguna {{v0}}",
      "t0609": "penambahan pengguna gagal: {{v0}}",
      "t0610": "chown gagal: {{v0}}",
      "t0611": "pulang, melewatkan chown: {{v0}}",
      "t0612": "membuang atau: {{v0}}",
      "t0613": "RDB: {{v0}}",
      "t0614": "pulihkan RDB → {{v0}}",
      "t0615": "RDB Gagal: {{v0}}",
      "t0616": "redis mulai/ping: {{v0}}",
      "t0617": ": {{v0}} — membuang dataDir rsync ke (dumpRelPath)",
      "t0618": "tidak dapat menargetkan sha256: {{v0}}",
      "t0619": "ysk.json sha256 {{v0}}...",
      "t0620": "ysk.json lokal={{v0}} jarak jauh={{v1}}",
      "t0621": "dataDir lokal: {{v0}}",
      "t0622": "dataDir: {{v0}}",
      "t0623": "melewatkan rumah: {{v0}}",
      "t0624": "rumah dataDir, dataDir: {{v0}}",
      "t0625": "rsync rumah gagal {{v0}}",
      "t0626": "transfer: home rsync Gagal {{v0}}",
      "t0627": "dilewati: {{v0}}",
      "t0628": "transfer selesai → {{v0}}:{{v1}}",
      "t0629": "proyek {{v0}} rumah: {{v1}}",
      "t0630": "proyek {{v0}} bind_ip={{v1}} — bisa ( IP )",
      "t0631": "proyek {{v0}} rumah bukan jalur: {{v1}}",
      "t0632": "Rumah yatim piatu di disk (tidak ada proyek toko yang cocok): {{v0}}",
      "t0633": "Direktur Mail: {{v0}}",
      "t0634": "{{v0}} — tidak dapat menargetkan",
      "t0635": "tidak dapat menyelidiki {{v0}}",
      "t0636": "{{v0}} · {{v1}}",
      "t0637": "proyek {{v0}} · {{v1}} · DB {{v2}} · Redis {{v3}}",
      "t0638": "Pasang perangkat lunak {{v0}} · homes {{v1}}",
      "t0639": "host peralihan {{v0}}",
      "t0640": "{{v0}} peringatan — tinjau sebelum peralihan.",
      "t0641": "kunci {{v0}}",
      "t0642": "tidak dapat mengetik: {{v0}}",
      "t0643": "targettidak menulis kunci_otorisasi: {{v0}}",
      "t0644": "{{v0}} instal ( kunci )",
      "t0645": "deletekeyGagal: {{v0}}",
      "t0646": "{{v0}} Tersedia",
      "t0647": "dataDir: {{v0}}",
      "t0648": "~{{v0}}",
      "t0649": "Tersedia {{v0}} (buang )",
      "t0650": ": Tersedia {{v0}}, ≥ {{v1}}",
      "t0651": "Peringatan {{v0}} (tidak )",
      "t0652": "Koneksi SSH {{v0}}",
      "t0653": "pengguna {{v0}} bukan root (MVP membutuhkan root)",
      "t0654": "Mendukung OS ({{v0}}); membutuhkan Debian/Ubuntu",
      "t0655": "targetTersedia {{v0}} ≥ {{v1}}",
      "t0656": "target: Tersedia {{v0}}, membutuhkan {{v1}}",
      "t0657": "target {{v0}}/ysk.json — tolak ( forceWipeTarget)",
      "t0658": "direktori target ysk.json: {{v0}}",
      "t0659": "pembuatan direktori target: {{v0}}",
      "t0660": "{{v0}}s",
      "t0661": "{{v0}}s ≥ 120s (TLS/TOTP)",
      "t0662": "proyek {{v0}} bind_ip={{v1}} — untuk (antarmuka)",
      "t0663": "{{v0}} proyek.bind_ip",
      "t0664": "tidak dapat bertahan bind_ip: {{v0}}",
      "t0665": "sinkronisasi nginx: {{v0}}",
      "t0666": ": {{v0}}",
      "t0667": "identitas {{v0}} tidak tersedia",
      "t0668": "SSH gagal keluar={{v0}}: {{v1}}",
      "t0669": "jalur: {{v0}}",
      "t0670": "rsync gagal keluar={{v0}}: {{v1}}",
      "t0671": "Redis RDB Menulis {{v0}} (--rdb)",
      "t0672": "--rdb gagal: {{v0}}",
      "t0673": "BGSAVE gagal: {{v0}}",
      "t0674": "Redis RDB {{v0}} → {{v1}} (BGSAVE)",
      "t0675": "tidak dapat Redis RDB (src={{v0}})",
      "t0676": "{{v0}} {{v1}} {{v2}}",
      "t0677": "pulang, dilewati: {{v0}}",
      "t0678": "rumah {{v0}}",
      "t0679": "Direktur Mail: {{v0}}",
      "t0680": "maildir {{v0}}",
      "t0681": "sidik jari ysk.json (dapat mengajukan permohonan kembali) sumber≠ lokal",
      "t0682": "Kesalahan kesiapan: {{v0}}",
      "t0683": "Peralihan DNS: dengan IP A/AAAA → {{v0}}{{v1}}",
      "t0684": "verifikasi Gagal: {{v0}} ketidakcocokan",
      "t0685": "verifikasi lulus (ketidakcocokan={{v0}})",
      "t0686": "target tidak valid: {{v0}} (membutuhkan root@host atau host)",
      "t0687": "tidak menemukan pekerjaan {{v0}}",
      "t0688": ": target YSK_EXECUTE=1 pos migrasi server ysk --job {{v0}} --data-dir {{v1}}",
      "t0689": "selesai → {{v0}}",
      "t0690": "host peralihan: {{v0}}",
      "t0691": "posting selesai @ {{v0}}",
      "t0692": "Tidak ditemukan pekerjaan {{v0}} ( dataDir rsync)",
      "t0693": "tidak Sukses ({{v0}})",
      "t0694": "bootstrap selesai → {{v0}}",
      "t0695": "tidak Gagal: {{v0}}",
      "t0696": "Mode yang didukung: {{v0}}",
      "t0697": "Tidak ditemukan simpul tepi: {{v0}}",
      "t0698": "simpul {{v0}} tepi (atau asal)",
      "t0699": "Mendukung DNS: {{v0}}",
      "t0700": "Mendukung mode SSL: {{v0}}",
      "t0701": "CDN {{v0}}",
      "t0702": "Node pelindung asal tidak ada: {{v0}}",
      "t0703": "tepi: {{v0}}",
      "t0704": "URL asal (dari ikatan proyek): {{v0}}",
      "t0705": "perbarui CDN {{v0}}",
      "t0706": "buat CDN {{v0}}",
      "t0707": "perisai asal: perisai tepi {{v0}} → {{v1}}",
      "t0708": "origin.kind=proyek bukan projectOriginUrl — {{v0}}",
      "t0709": "edge {{v0}} ({{v1}}): direncanakan (tidak menyebar — PR-C3)",
      "t0710": "tepi {{v0}}: simpul",
      "t0711": "Menulis nginx yang dikelola: {{v0}}",
      "t0712": "Tepi tertulis: {{v0}}",
      "t0713": "nginx lokal -t gagal (proxy_cache_path bisa http{}): {{v0}}",
      "t0714": "certId={{v0}} domain={{v1}}",
      "t0715": "certId={{v0}} Berkas tidak ada: {{v1}}",
      "t0716": "tidak ditemukan certId={{v0}}",
      "t0717": "sertifikat dataDir {{v0}}",
      "t0718": "lokal Mari Enkripsi {{v0}}",
      "t0719": "scp gagal {{v0}}",
      "t0720": "mkdir gagal {{v0}}",
      "t0721": "certbot gagal: {{v0}}",
      "t0722": "originShieldNodeId={{v0}} — perisai",
      "t0723": "{{v0}}: Target SSH — SSH berlaku (armada dilewati)",
      "t0724": "armada tidak bisa (diblokir={{v0}})— enqueue atau SSH",
      "t0725": "armada {{v0}} edge — antri ≠ agen nginx memuat ulang; Agen",
      "t0726": "FleetAgentId={{v0}} — memerlukan antrean armada (API akan); atau SSH berlaku",
      "t0727": "tidak ditemukan konf: {{v0}}",
      "t0728": "conf Gagal: {{v0}}",
      "t0729": "antrian armada gagal: {{v0}}",
      "t0730": "nginx -t gagal: {{v0}}",
      "t0731": "SSH mkdir gagal: {{v0}}",
      "t0732": "scp gagal: {{v0}}",
      "t0733": "isi ulang jarak jauh gagal: {{v0}}",
      "t0734": "FleetAgentId={{v0}} — membersihkan enqueue armada atau SSH",
      "t0735": "antrean gagal: {{v0}}",
      "t0736": "pembersihan gagal: {{v0}}",
      "t0737": "pembersihan jarak jauh gagal: {{v0}}",
      "t0738": "pembersihan armada {{v0}} — antrian ≠ pembersihan tepi",
      "t0739": "geo {{v0}}: Node tidak dikenal {{v1}}",
      "t0740": "maxRr tertimbang={{v0}} ( {{v1}})",
      "t0741": "minHealthyEdges={{v0}} {{v1}} tepi —: Tepi IP ( offline)",
      "t0742": "edge {{v0}} — dilewati",
      "t0743": "penyelidikan {{v0}}: {{v1}}",
      "t0744": "zoneId={{v0}} ({{v1}})",
      "t0745": "{{v0}} pengelolaan pengguna {{v1}} — CDN write ManagedBy=cdn (bisa dan; silakan cek zona)",
      "t0746": "subdomain geografis {{v0}}: IP — dilewati",
      "t0747": "access_log {{v0}} ({{v1}} token status cache)",
      "t0748": "baca log {{v0}}",
      "t0749": "direktori cache {{v0}} ≈ {{v1}} byte (bukan )",
      "t0750": "tembolok {{v0}}/{{v1}}",
      "t0751": "IPv4 tidak valid: {{v0}}",
      "t0752": "IPv6 tidak valid: {{v0}}",
      "t0753": "simpul CDN {{v0}}",
      "t0754": "HTTP {{v0}} (untuk ){{v1}}",
      "t0755": "HTTP Gagal: {{v0}}",
      "t0756": "TCP {{v0}}:443/80 tidak dapat terkoneksi",
      "t0757": "{{v0}}/{{v1}}",
      "t0758": "daftar-unit gagal: {{v0}}",
      "t0759": "{{v0}} unit layanan",
      "t0760": "satuan {{v0}}",
      "t0761": "{{v0}} byte",
      "t0762": "jurnalctl · {{v0}}",
      "t0763": "melakukan vakum: {{v0}}",
      "t0764": "vakum gagal: {{v0}}",
      "t0765": "penyaring: {{v0}}",
      "t0766": "berkas {{v0}} · {{v1}} byte · {{v2}}",
      "t0767": "daftar jalur yang diizinkan: {{v0}}",
      "t0768": "Jurnal: ≈{{v0}} MB ( {{v1}} MB)",
      "t0769": "proyek {{v0}} · {{v1}} log (direktori)",
      "t0770": "Diekspor {{v0}} ({{v1}})",
      "t0771": "tidak untuk {{v0}}",
      "t0772": "(DB-IP City Lite {{v0}}; Gagal)",
      "t0773": "mundur {{v0}}",
      "t0774": ": {{v0}} · {{v1}} · {{v2}} · {{v3}}{{v4}} · ASN {{v5}}",
      "t0775": "file ({{v0}} B), dapatkah Pengunduhan gagal",
      "t0776": "{{v0}} mundur (Sukses)",
      "t0777": "perbarui {{v0}} ({{v1}} B)",
      "t0778": "Pembaruan gagal {{v0}}: {{v1}}{{v2}}",
      "t0779": "Tidak ditemukan pengaturan: {{v0}}",
      "t0780": "tidak bisa diatur: {{v0}}",
      "t0781": "Tidak ditemukansertifikat: {{v0}}",
      "t0782": "uji coba: bukan systemctl {{v0}}. tambahkan --execute YSK_EXECUTE=1 + root terlebih dahulu",
      "t0783": "tidak menemukan pekerjaan {{v0}}",
      "t0784": "UI Web: Tidak ditemukan (buat aplikasi/web atau setel YSK_WEB_ROOT)\\n",
      "t0785": "Pembuatan zona DNS (draf): {{v0}}",
      "t0786": "Pembuatan zona DNS gagal: {{v0}}",
      "t0787": "domain surat: {{v0}}",
      "t0788": "pembuatan domain email gagal: {{v0}}",
      "t0789": "hingga {{v0}} dapat mematikan cron",
      "t0790": "istirahat {{v0}}/{{v1}} oke",
      "t0791": ": {{v0}} {{v1}}",
      "t0792": "pengaturan {{v0}}. --memaksa.",
      "t0793": "pengaturan {{v0}}",
      "t0794": "Tidak ditemukan antarmuka {{v0}}",
      "t0795": "nama host gagal: {{v0}}",
      "t0796": "nama host cantik gagal: {{v0}}",
      "t0797": "zona waktu gagal: {{v0}}",
      "tScoreFrom": "skor={{score}} dari={{from}}",
      "appliedTag": "(terapan)",
      "writtenTag": "(hanya tertulis)",
      "selfDestMissing": "Direktori instalasi yang berjalan tidak ditemukan (systemd ExecStart atau cli.js)",
      "selfDestUnwritable": "Tidak dapat menulis ke direktori instalasi yang berjalan {{v0}}",
      "selfApplied": "{{v0}} diterapkan ke {{v1}}",
      "selfVerifyFail": "Berkas versi tidak berisi {{v0}} setelah diterapkan",
      "selfDownloadFail": "Tidak dapat mengunduh atau mengekstrak paket resmi {{v0}}: {{v1}}",
      "selfOverlayFail": "Tidak dapat menerapkan paket resmi ke direktori yang berjalan: {{v0}}",
      "selfUpgradeHint": "Penerapan panel gagal. Sebagai root: curl -fsSL https://raw.githubusercontent.com/yanshekki/ysk-server/main/install.sh | bash -s -- --upgrade"
    },
    "tpl": {
      "deleted": "Dihapus {{name}}",
      "removed": "Dihapus {{name}}",
      "failedDetail": "Gagal: {{detail}}",
      "failedColon": "Gagal: {{detail}}",
      "actionFailed": "{{action}} gagal: {{detail}}",
      "restartFailed": "Gagal memulai ulang: {{detail}}",
      "chownFailed": "chown gagal: {{detail}}",
      "available": "Tersedia: {{detail}}",
      "supportedNotProbed": "Mendukung {{name}} — belum diselidiki",
      "wrote": "Menulis {{path}}",
      "wroteSettings": "Pengaturan penulisan {{path}}",
      "wroteManaged": "Menulis file yang dikelola {{path}}",
      "copyFailed": "Penyalinan gagal: {{detail}}",
      "copyFailed2": "Penyalinan gagal: {{detail}}",
      "reloadFailed": "Gagal memuat ulang: {{detail}}",
      "reloadFailed2": "Gagal memuat ulang: {{detail}}",
      "nginxReloadFailed": "gagal memuat ulang nginx: {{detail}}",
      "nginxTestFailed": "nginx -t gagal: {{detail}}",
      "nginxConfigFailed": "Pemeriksaan konfigurasi Nginx gagal: {{detail}}",
      "psqlFailed": "psql gagal: {{detail}}",
      "redisCliFailed": "redis-cli gagal: {{detail}}",
      "restartFailed2": "gagal memulai ulang: {{detail}}",
      "missing": "Hilang {{name}}",
      "project": "Proyek {{name}}",
      "logNotFound": "Log tidak ditemukan: {{path}}",
      "clusterNotFound": "Klaster tidak ditemukan: {{id}}",
      "domainInvalid": "Domain tidak valid: {{domain}}",
      "exported": "Diekspor {{path}}",
      "reenabledLink": "Koneksi diaktifkan kembali {{name}}",
      "installed": "Dipasang",
      "missingDataDir": "DataDir tidak ada",
      "installIncomplete": "Penginstalan tidak lengkap",
      "noPackages": "Tidak ada paket",
      "recentlyUpdated": "Baru-baru ini diperbarui",
      "needRootRead": "Membutuhkan root untuk membaca",
      "reenabledPersist": "Koneksi diaktifkan kembali (bertahan dari reboot)",
      "runtimeOnlyHint": "(Mungkin tidak bertahan saat reboot; gunakan Simpan untuk bertahan)",
      "statusWrittenPartial": "Status: tertulis/sebagian",
      "keyMissingOrNotDeleted": "Kunci hilang atau tidak dihapus",
      "passwordCryptStored": "Kata sandi disimpan sebagai hash crypt (bukan teks biasa)",
      "skipInvalidUsername": "Melewati nama pengguna yang tidak valid",
      "digNoAnswer": "gali: tidak ada jawaban (NXDOMAIN atau kosong)",
      "ipAddrAddFailed": "penambahan alamat ip gagal: {{detail}}",
      "ipAddrDelFailed": "alamat ip del gagal: {{detail}}",
      "connUpWarn": "peringatan koneksi: {{detail}}",
      "ntpEnableFailed": "Gagal mengaktifkan NTP: {{detail}}",
      "cancelFailed": "Pembatalan gagal: {{detail}}",
      "powerCmdFailed": "Perintah daya gagal: {{detail}}",
      "reniceFailed": "renice gagal: {{detail}}",
      "pgIncludeHint": "Sertakan file ini di postgresql.conf, atau salin saat mengajukan permohonan",
      "none": "tidak ada",
      "success": "Kesuksesan",
      "on": "pada",
      "off": "mati",
      "continueOp": "melanjutkan",
      "unavailable": "tidak tersedia",
      "unknownError": "kesalahan yang tidak diketahui",
      "noParen": "(tidak ada)",
      "keepOldDb": "(menyimpan DB lama)",
      "ufwNotDetected": "UFW tidak terdeteksi pada host ini",
      "fail2banStartHint": "Mulai di halaman fail2ban",
      "hasExecuteNotRoot": "EXECUTE aktif tetapi proses bukan root",
      "notRootTarget": "Bukan root (target useradd/apt akan diblokir)",
      "reapplyDone": "menerapkan kembali langkah-langkah penting yang telah selesai",
      "someFailed": "Beberapa gagal — lihat hasilnya",
      "securityDesc": "Kata sandi, TLS, batasan lokal",
      "yskControlPlane": "Pesawat kendali YSK",
      "sslDistributeNote": "Distribusi SSL: sertifikat di tepi ≠ rantai kepercayaan browser lengkap; verifikasi dengan dig / curl -vI https://",
      "autoNever": "Tidak pernah otomatis",
      "autoManualEmergency": "Manual DARURAT saja",
      "probeMech": "TCP publik, permintaan panel/mnt, TCP tidak digunakan, fail2ban, UFW",
      "probeTunable": "Naikkan/turunkan ambang batas",
      "priorityBlockers": "Alamat {{count}} pemblokir terlebih dahulu: {{list}}",
      "readinessNotProduction": "Kesiapan belum siap produksi: {{list}}",
      "noRestart": "tidak ada restart",
      "cityPolicyOff": "(kebijakan kota tidak aktif)",
      "pidStarted": "Proses dimulai pid={{pid}} {{extra}}",
      "pidUser": "(pengguna={{user}})",
      "pidDegraded": "(terdegradasi)",
      "killFailed": "kill -s {{sig}} gagal: {{detail}}",
      "routeAdded": "Menambahkan rute {{dst}}{{via}}{{dev}}",
      "dnsWritten": "Menulis {{conn}}: DNS {{dns}}{{search}}",
      "peerInstalled": "Dipasang ke {{dest}}{{restart}}"
    },
    "installedTool": "Terpasang (alat)",
    "cron": {
      "preserveHostLines": "{{count}} baris crontab host non-YSK yang dipertahankan (bukan penghapusan penuh).",
      "noHostLinesOrEmpty": "Tidak ada baris crontab host non-YSK tambahan (atau kosong).",
      "installReplacesYskOnly": "Instal pembaruan pekerjaan bertanda YSK saja; pekerjaan host lainnya digabungkan dan dipertahankan.",
      "hostScanNeedRoot": "Membaca crontab pengguna lain memerlukan bidang kendali sebagai root; hanya crontab pengguna proses yang terdaftar.",
      "hostScanSkipUser": "Melewati pengguna {{user}} (tidak ada izin)",
      "hostUserInvalid": "Pengguna crontab tidak valid.",
      "hostScheduleInvalid": "Jadwal cron host tidak valid.",
      "hostLineNotJob": "Garis crontab itu bukanlah pekerjaan.",
      "hostLineMissing": "Tidak ada baris crontab yang cocok (crontab host mungkin telah berubah).",
      "hostLineDuplicate": "Baris pekerjaan tersebut muncul {{count}} kali; edit satu baris unik terlebih dahulu.",
      "hostReadFailed": "Tidak dapat membaca crontab: {{detail}}",
      "hostWriteFailed": "penulisan crontab gagal: {{detail}}",
      "hostRewriteNeedExecute": "Menulis baris crontab host memerlukan root dan YSK_EXECUTE=1. Hanya pratinjau.",
      "hostRewriteNeedRoot": "Mengedit crontab pengguna lain memerlukan bidang kontrol sebagai root.",
      "hostPreview": "Baris berikutnya: {{line}}",
      "hostPreviewDelete": "Berikutnya: hapus baris itu.",
      "hostRewritten": "Menulis crontab untuk {{user}}.",
      "hostRunNeedExecute": "Menjalankan perintah host cron memerlukan YSK_EXECUTE=1.",
      "hostRan": "Jalankan perintah host cron sebagai {{user}}.",
      "hostAdoptNeedExecute": "Mengadopsi baris host ke dalam panel memerlukan YSK_EXECUTE=1 (jika tidak, instalasi akan menduplikasinya).",
      "hostAdopted": "Baris host diberi tag # ysk:{{id}} dan terdaftar di panel.",
      "hostConfirmMismatch": "Konfirmasi harus sesuai dengan perintah.",
      "hostAdoptOnlyInstallUser": "Masuk ke panel hanya untuk penulisan Instal crontab (root / pengguna proses ini). Pengguna lain akan diduplikasi saat instalasi.",
      "hostAdoptEnableFirst": "Aktifkan jalur host sebelum membawanya ke panel.",
      "hostPercentNewline": "crontab memperlakukan % yang tidak lolos sebagai baris baru. Tulis format tanggal sebagai \\%Y (atau hindari %)."
    },
    "dbBrowser": {
      "pmaInstalled": "phpMyAdmin diinstal di {{path}}",
      "pmaConfigWritten": "Konfigurasi phpMyAdmin dan tmp ditulis (autentikasi cookie; disarankan HTTPS)",
      "pmaExtractFailed": "Pengunduhan/ekstrak phpMyAdmin gagal: {{detail}}",
      "projectCreated": "Proyek dibuat {{id}} ({{name}})"
    },
    "firewallAllow": {
      "already": "{{port}}/{{proto}}{{from}} : sudah diperbolehkan",
      "partial": "Parsial: {{ok}} oke, {{fail}} gagal",
      "fromLabel": "dari {{from}}"
    },
    "firewallDeleteByComment": {
      "removed": "Menghapus {{n}} aturan firewall yang cocok {{prefix}}",
      "none": "Tidak ada aturan firewall yang cocok {{prefix}}"
    },
    "serviceExposure": {
      "needsDecision": "{{service}}: konfirmasi apakah akan mengekspos layanan ini di jaringan",
      "private": "{{service}}: dijaga kerahasiaannya (firewall publik tidak diizinkan)",
      "restrictedEmpty": "Mode terbatas memerlukan setidaknya satu IP/CIDR yang diizinkan",
      "badCountry": "Kode negara tidak valid: {{cc}}",
      "zoneDownloadFail": "Pengunduhan zona negara gagal untuk {{cc}}: {{detail}}",
      "zoneEmpty": "Zona negara untuk {{cc}} kosong",
      "zoneDownloaded": "Mengunduh {{n}} CIDR untuk {{cc}}",
      "zoneMissing": "Tidak ada file zona untuk {{cc}} — letakkan di bawah geoip/zona negara atau izinkan pengunduhan",
      "zoneCidrCap": "Daftar CIDR negara dibatasi hingga {{n}} entri",
      "geoNeedExecute": "Daftar negara yang diizinkan memerlukan YSK_EXECUTE",
      "geoNeedRoot": "Daftar negara yang diizinkan memerlukan root",
      "geoNoCidrs": "Tidak ada CIDR negara yang dimuat — tidak dapat menerapkan daftar geografis yang diizinkan",
      "ipsetMissing": "ipset tidak diinstal — daftar negara yang diizinkan dilewati",
      "ipsetApplyFail": "penerapan ipset/iptables gagal: {{detail}}",
      "ipsetApplied": "Daftar negara yang diizinkan ditetapkan {{set}} ({{countries}}, {{n}} CIDR)",
      "ipsetCleared": "Hapus ipset negara {{set}}",
      "geoBestEffort": "Pemfilteran negara adalah upaya terbaik (ipset); kelompok keamanan cloud terpisah"
    },
    "goLive": {
      "deployIncomplete": "goLive: penerapan tidak lengkap",
      "deployFailed": "penerapan goLive gagal: {{detail}}",
      "publishIncomplete": "goLive: publikasi tidak lengkap",
      "publishFailed": "publikasi goLive gagal: {{detail}}"
    },
    "ops": {
      "projectNameExists": "Nama proyek sudah ada: {{name}}",
      "sslNotReady": "SSL belum siap: tidak ada sertifikat untuk {{domain}}.",
      "sslNotReadyDetail": "SSL belum siap: tidak ada sertifikat untuk {{domain}} (panel SSL atau jalur langsung Let's Encrypt).",
      "sslGoToPage": "Terbitkan atau unggah sertifikat pada SSL, lalu publikasikan + SSL.",
      "sslRejectWrite": "Menolak untuk menulis SSL nginx conf untuk menghindari kegagalan nginx -t.",
      "installAborted": "Instalasi dibatalkan (klien terputus atau dibatalkan)",
      "phpPackagesPartialFail": "Beberapa paket PHP gagal: {{list}} (core CLI mungkin masih berfungsi)",
      "pdnsBindConflict": "PowerDNS tidak dapat mengikat 0.0.0.0:53 (sedang digunakan); sering bertentangan dengan penyelesaian sistem. Ikat IP publik (panel: Perbaiki PowerDNS)."
    },
    "webmail": {
      "notInstalled": "Webmail tidak diinstal; aktifkan pengunduhan dan jalankan kembali",
      "needExecute": "Mengunduh webmail memerlukan izin perubahan sistem (YSK_EXECUTE) dan jaringan keluar",
      "needExecuteBeforeCreate": "Tidak akan membuat setengah proyek sampai EXECUTE diaktifkan",
      "notRoundcubeTree": "Akar dokumen bukan pohon Roundcube lengkap (mungkin masih berupa php-halo)",
      "notSnappyTree": "Akar dokumen bukanlah pohon SnappyMail lengkap",
      "installIncompleteHint": "Proyek ada tetapi email web tidak lengkap — aktifkan EXECUTE lalu Instal Ulang/Tingkatkan",
      "extractFailed": "{{tool}} unduhan atau ekstrak gagal: {{detail}}",
      "roundcubeInstalled": "Roundcube terpasang {{version}} → {{path}}",
      "roundcubeReuse": "Menggunakan kembali Roundcube yang diinstal → {{path}}",
      "roundcubeConfigWritten": "Menulis konfigurasi Roundcube (SQLite, IMAP 993, SMTP 587)",
      "snappyInstalled": "Menginstal SnappyMail {{version}} → {{path}}",
      "snappyReuse": "Menggunakan kembali SnappyMail yang diinstal → {{path}}",
      "snappyAdminHint": "Saat pertama kali dibuka, selesaikan pengaturan admin SnappyMail dan tambahkan domain IMAP lokal",
      "imapSmtpHint": "IMAP {{imap}}:993 · SMTP {{smtp}}:587 (login dengan alamat kotak surat lengkap dan kata sandi)",
      "projectCreated": "Membuat proyek PHP {{name}} ({{tool}}, {{id}})",
      "domainRequired": "Nama host email web diperlukan",
      "openHint": "Masuk dengan alamat kotak surat dan kata sandi; buka URL dari Proyek atau halaman ini setelah ditayangkan",
      "sslHint": "Rekomendasikan Mari Enkripsi untuk {{domain}} (halaman SSL)",
      "bootstrapLegacyHint": "Bootstrap tidak memiliki layanan proyek - menulis kerangka dataDir; gunakan Buat & tayangkan di panel untuk jalur proyek PHP",
      "ssoPluginInstalled": "Plugin SSO terpasang → {{path}}",
      "forceHttpsOn": "Roundcube force_https diaktifkan (diperlukan HTTPS)",
      "forceHttpsOff": "force_https off — setelah SSL, instal ulang dengan force HTTPS dicentang",
      "reinstallHint": "Proyek ada — gunakan Instal Ulang/Tingkatkan atau instal ulang:true",
      "reinstalling": "Menginstal ulang webmail ke proyek {{name}} ({{id}})",
      "reinstallStart": "Memulai instal ulang/peningkatan (pin versi {{version}}, proyek {{id}})",
      "projectNotFound": "Proyek email web tidak ditemukan",
      "snappyAdminOnce": "Admin SnappyMail {{user}} — kata sandi ditampilkan satu kali (lihat hasil / file SEKALI)",
      "snappyAdminPassword": "Kata sandi admin SnappyMail (salin sekarang): {{password}}",
      "publicHtmlStub": "Root dokumen masih memiliki rintisan paket SnappyMail/RainLoop. HTTP harus melayani pohon aplikasi public_html — instal ulang webmail setelah perbaikan ini.",
      "goLiveFailed": "File webmail terinstal, namun kondisi go-live/deploy proyek gagal — perluas detailnya.",
      "forceHttpsNeedsSsl": "Roundcube force_https aktif: ikat SSL untuk nama host ini sebelum mengandalkan HTTPS publik, atau hapus centang force HTTPS hingga saat itu.",
      "roundcubePublicHtmlDocRoot": "Root dokumen HTTP disetel ke Roundcube public_html ({{path}})",
      "docRootUpdated": "Akar dokumen proyek diperbarui menjadi {{path}}",
      "docRootUpdateFailed": "Tidak dapat memperbarui akar dokumen proyek: {{detail}}",
      "sqliteSchemaReady": "Skema Roundcube SQLite diinisialisasi",
      "sqliteSchemaFailed": "Init skema Roundcube SQLite gagal: {{detail}}",
      "snappyFullEmailLogin": "Login kotak surat harus menggunakan email lengkap (pengguna@domain); bagian lokal pendek dinonaktifkan",
      "removedBogusPublicHtml": "Menghapus sisa public_html (php-hello) sehingga webmail tidak dilayani dari pohon yang salah",
      "snappyDocRoot": "Akar dokumen HTTP SnappyMail: {{path}}",
      "phpHelloStillPresent": "Instal php-hello kiri (YSK PHP OK) sebagai root situs — ekstrak webmail tidak menggantikannya"
    },
    "vpn": {
      "needInstall": "Instal {{engine}}",
      "openvpnComing": "Jalur lengkap OpenVPN dipentaskan untuk rilis berikutnya.",
      "outlineComing": "Outline / Shadowsocks dipentaskan untuk rilis selanjutnya.",
      "needExecuteServer": "Penyiapan server VPN memerlukan root dan YSK_EXECUTE=1.",
      "serverStopped": "{{engine}} server berhenti.",
      "serverStopFailed": "Tidak dapat menghentikan {{engine}} server: {{detail}}",
      "needExecuteClient": "Koneksi klien VPN memerlukan root dan YSK_EXECUTE=1.",
      "keygenFailed": "Pembuatan kunci WireGuard gagal (apakah wg terinstal?).",
      "serverKeysCreated": "Kunci server WireGuard dibuat.",
      "applyFailed": "Gagal menerapkan konfigurasi WireGuard: {{detail}}",
      "serverActive": "Server WireGuard diterapkan (UDP {{port}}).",
      "serverMissing": "Server WireGuard tidak diinisialisasi — jalankan Start server terlebih dahulu.",
      "peerCreated": "Klien «{{name}}» dibuat.",
      "peerNotFound": "Klien tidak ditemukan.",
      "peerRemoved": "Klien dihapus.",
      "peersSynced": "Daftar rekan dimuat ulang pada antarmuka WireGuard yang sedang berjalan.",
      "setEndpointHint": "Tetapkan titik akhir publik (host:port) sehingga klien seluler dapat menjangkau server ini.",
      "invalidConf": "Conf harus menyertakan [Interface] dan PrivateKey.",
      "clientImported": "Profil «{{name}}» diimpor.",
      "profileNotFound": "Profil klien tidak ditemukan.",
      "clientUpFailed": "Koneksi gagal: {{detail}}",
      "clientUp": "Terhubung: {{name}}",
      "clientDown": "Terputus: {{name}}",
      "clientDeleted": "Profil yang dihapus: {{name}}",
      "autostartOn": "Mulai otomatis aktif: {{name}}",
      "autostartOff": "Mulai otomatis mati: {{name}}",
      "ovpnPkiStart": "Menghasilkan OpenVPN PKI (mungkin memerlukan waktu beberapa menit untuk parameter DH)…",
      "ovpnPkiDone": "OpenVPN PKI siap.",
      "ovpnServerActive": "Server OpenVPN diterapkan ({{proto}} {{port}}).",
      "invalidOvpn": "Konfigurasi OpenVPN harus menyertakan arahan klien/jarak jauh.",
      "ssHonest": "Menggunakan shadowocks-libev ss-server — bukan Outline Manager lengkap.",
      "ssKeysCreated": "Kata sandi server Shadowsocks dibuat.",
      "ssServerActive": "Server Shadowsocks diterapkan (port {{port}}).",
      "ssSharedPassword": "Semua label ss:// berbagi satu kata sandi server (rotasi dengan memastikan ulang server).",
      "ssPackageYielded": "Menghentikan/menyamarkan unit default Debian shadowocks-libev sehingga YSK dapat mengikat {{port}} publik pada host ini.",
      "ssEndpointAutofilled": "Titik akhir publik disetel ke {{endpoint}}.",
      "ssClientsRewritten": "{{n}} klien ss:// URI yang dibuat ulang untuk titik akhir/kata sandi saat ini.",
      "ssUfwOpened": "Membuka UFW {{port}}/tcp+udp untuk Shadowsocks (jika ufw diinstal).",
      "endpointAutofilled": "Titik akhir publik disetel ke {{endpoint}}.",
      "ovpnClientsRewritten": "Diperbarui dari jarak jauh= di {{n}} profil klien OpenVPN untuk diunduh/QR.",
      "accessFullNat": "Internet penuh diaktifkan (IP forward + NAT)",
      "accessLanOnly": "Mode khusus LAN (tanpa NAT internet)",
      "accessReconnectHint": "Klien yang sudah terhubung harus terhubung kembali untuk mengambil rute baru",
      "ovpnNatDurable": "OpenVPN NAT/forward diinstal untuk reboot (systemd ExecStartPost).",
      "clientFullTunnelProtect": "Klien terowongan penuh terdeteksi (AllowedIPs 0.0.0.0/0). Perlindungan host yang diterapkan sehingga balasan panel/SSH tetap berada di LAN NIC.",
      "clientFullTunnelHint": "Tip: hanya untuk akses terpisah, atur AllowedIPs ke VPN/LAN CIDRs (bukan 0.0.0.0/0) di konfigurasi, lalu sambungkan kembali."
    },
    "vnc": {
      "needInstall": "Instal {{stack}}",
      "needExecute": "YSK_EXECUTE dinonaktifkan — tidak dapat menginstal paket atau menyediakan pengguna Linux.",
      "needRoot": "Tidak berjalan sebagai root — sistem useradd dan vncserver apply diblokir.",
      "hostnameResolves": "Nama host {{hostname}} terselesaikan.",
      "hostnameUnresolvable": "Host ini tidak dapat menentukan nama hostnya sendiri ({{hostname}}). Permulaan sesi VNC akan gagal sampai /etc/hosts diperbaiki.",
      "hostnameAlreadyResolves": "Nama host {{hostname}} sudah terselesaikan — /etc/hosts tidak berubah.",
      "hostnameWouldAppend": "Akan ditambahkan ke /etc/hosts: {{line}}",
      "hostnameAppended": "Ditambahkan ke /etc/hosts: {{line}}",
      "hostnameAppendFailed": "Tidak dapat menulis /etc/hosts: {{detail}}",
      "hostnameAliasPresent": "Nama host {{hostname}} sudah merupakan alias /etc/hosts yang sama persis — tidak ditambahkan lagi.",
      "hostnameStillUnresolvable": "Menulis /etc/hosts tetapi {{hostname}} masih belum terselesaikan. Konfirmasikan host nsswitch menyertakan file.",
      "skipStartHostname": "Tidak memulai tampilan — perbaiki resolusi nama host terlebih dahulu.",
      "novncAssetsOnly": "aset web noVNC ditemukan; biner websockify masih hilang.",
      "viewerNeedExecute": "Memulai desktop VNC lokal untuk tampilan browser memerlukan root + YSK_EXECUTE",
      "browserSessionReady": "Sesi VNC browser siap: {{name}}",
      "clientPathUserReachable": "Jalur: titik akhir yang dapat dijangkau pengguna — {{name}} → {{target}} (browser melalui panel)",
      "clientPathServerProxy": "Jalur: proksi server — {{name}} → {{target}} (keluar melalui server ini)",
      "clientOpenInBrowserHint": "Gunakan \"Buka di browser\" pada daftar klien untuk klien VNC tertanam",
      "probeOk": "Jangkauan OK: bidang kontrol dapat membuka TCP ke {{target}}",
      "probeRefused": "Tidak ada yang mendengarkan di {{target}} (koneksi ditolak). Apakah VNC berjalan di host itu?",
      "probeTimeout": "Waktu habis untuk menyambung ke {{target}} dari server ini. Periksa firewall/perutean.",
      "probeDns": "Tidak dapat menyelesaikan nama host «{{host}}».",
      "probeNet": "Jaringan tidak dapat dijangkau untuk {{target}} dari server ini.",
      "probeFailed": "Tidak dapat mencapai {{target}}: {{detail}}",
      "probeInvalid": "Target VNC tidak valid {{host}}:{{port}}",
      "probeHintUserReachable": "Jalur “dapat dijangkau pengguna”: panel ini masih harus membuka TCP ke host publik (browser tidak dapat menggunakan RFB saja).",
      "probeHintServerProxy": "Jalurnya adalah “proksi server”: target harus dapat dijangkau dari jaringan host bidang kendali ini.",
      "connectHostOverride": "Proksi server: menampilkan host {{display}}, TCP terhubung ke {{connect}}",
      "probeConnectHostHint": "Tampilkan target {{display}}, periksa/sambungkan alamat {{connect}} (penggantian koneksi-host).",
      "accountNotFound": "Akun VNC tidak ditemukan",
      "accountExists": "Akun VNC dengan nama ini atau pengguna Linux sudah ada",
      "accountCreated": "Membuat akun VNC {{name}} ({{user}}, tampilan :{{display}})",
      "accountUpdated": "Akun VNC yang diperbarui {{name}}",
      "accountDeleted": "Akun VNC dihapus {{name}}",
      "invalidName": "Nama akun tidak valid",
      "invalidGeometry": "Resolusi tidak valid (misalnya, gunakan 1920x1080)",
      "displayBusy": "Nomor tampilan tidak valid atau sudah digunakan",
      "displayExhausted": "Tidak ada nomor tampilan VNC gratis yang tersisa dalam jangkauan",
      "userWrittenOnly": "Pengguna Linux {{user}} hanya direkam di bidang kontrol (membutuhkan root + YSK_EXECUTE untuk menambahkan pengguna)",
      "userExists": "Pengguna Linux {{user}} sudah ada",
      "userCreated": "Membuat pengguna Linux {{user}}",
      "useraddFailed": "penambahan pengguna gagal untuk {{user}}: {{detail}}",
      "userdelBlocked": "Tidak dapat menghapus pengguna Linux {{user}} tanpa root + YSK_EXECUTE",
      "userAlreadyGone": "Pengguna Linux {{user}} sudah tidak ada",
      "userdelFailed": "userdel gagal untuk {{user}}: {{detail}}",
      "userdelLeftover": "Akun panel dihapus, tetapi pengguna Linux {{user}} masih ada di host. Hapus dari Pengguna atau host.",
      "userDeleted": "Menghapus pengguna Linux {{user}}",
      "passwordTooShort": "Kata sandi VNC minimal harus 6 karakter",
      "passwordWrittenOnly": "Kata sandi hanya ditandai di bidang kontrol (membutuhkan root + YSK_EXECUTE untuk vncpasswd)",
      "passwordFailed": "Gagal menulis kata sandi VNC: {{detail}}",
      "passwordNeedTiger": "vncpasswd tidak ditemukan. Instal TigerVNC (tigervnc-standalone-server) sebelum mengatur kata sandi.",
      "passwordSet": "Kata sandi VNC disetel untuk {{user}}",
      "passwordUpdated": "Kata sandi diperbarui untuk {{name}}",
      "passwordMetaOnly": "Kata sandi disimpan sebagai meta hanya sampai sistem diterapkan",
      "xstartupWrittenOnly": "xstartup tidak ditulis ke rumah (perlu root + YSK_EXECUTE)",
      "xstartupWriteFailed": "Gagal menulis ~/.vnc/xstartup ({{detail}}). Perlu root + YSK_EXECUTE.",
      "xstartupFailed": "VNC xstartup/desktop gagal ditampilkan :{{display}} ({{detail}}). Lebih suka profil XFCE atau instal terminal.",
      "xstartupWritten": "Menulis {{path}}",
      "sessionStartBlocked": "Tidak dapat memulai sesi VNC tanpa root + YSK_EXECUTE",
      "sessionStartFailed": "Gagal memulai tampilan :{{display}}: {{detail}}",
      "sessionStartHostname": "Gagal memulai tampilan :{{display}}: host ini tidak dapat menentukan nama hostnya sendiri. Tambahkan nama host ke /etc/hosts (atau perbaiki DNS) lalu mulai sesi lagi.",
      "sessionStarted": "Memulai VNC untuk {{user}} pada :{{display}} (port {{port}})",
      "sessionStartUnverified": "Perintah mulai dikembalikan OK tetapi port RFB belum mendengarkan",
      "sessionAlreadyRunning": "VNC sudah berjalan untuk {{user}} pada :{{display}} (port {{port}})",
      "vncserverMissing": "Pembungkus server TigerVNC (tigervncserver/vncserver) tidak diinstal — gunakan tab Instal",
      "vncserverWrapperMissing": "Ditemukan {{found}} tetapi tidak ada pembungkus Tigervncserver/vncserver — instal ulang Tigervnc-standalone-server",
      "vncPackageWithoutBin": "Paket Tigervnc-standalone-server telah diinstal tetapi skrip awal tidak ada — instal ulang paket tersebut",
      "needPasswordBeforeStart": "Tetapkan kata sandi VNC (≥6 karakter) sebelum memulai",
      "displayPortBusy": "Tampilan :{{display}} → port {{port}} sudah digunakan — hentikan sesi lainnya atau pilih tampilan lain",
      "sessionStartPermission": "Izin ditolak memulai tampilan :{{display}}",
      "staleLockCleared": "Menghapus kunci basi untuk tampilan :{{display}}, mencoba lagi",
      "sessionStopBlocked": "Tidak dapat menghentikan sesi VNC tanpa root + YSK_EXECUTE",
      "sessionStopped": "Menghentikan VNC untuk tampilan {{user}} :{{display}}",
      "linuxUserKept": "Pertahankan pengguna Linux {{user}} di sistem",
      "novncStartBlocked": "Tidak dapat memulai noVNC tanpa root + YSK_EXECUTE",
      "novncAlreadyRunning": "noVNC sudah berjalan di port {{port}}",
      "novncStartFailed": "Gagal memulai websockify: {{detail}}",
      "novncStarted": "noVNC mendengarkan di 127.0.0.1:{{httpPort}} → RFB {{rfbPort}}",
      "novncNotRunning": "noVNC tidak berjalan",
      "novncStopBlocked": "Tidak dapat menghentikan noVNC tanpa root + YSK_EXECUTE",
      "novncStopped": "Menghentikan noVNC pada port {{httpPort}}",
      "directNeedsAllBind": "Pengikatan RFB adalah localhost — klien langsung tidak dapat menjangkau dari luar tanpa terowongan",
      "directOpenFirewall": "Buka TCP {{port}} di firewall untuk klien langsung",
      "viaServerReady": "noVNC aktif — buka URL lokal atau gunakan terowongan SSH",
      "viaServerStartFirst": "Mulai noVNC untuk mengaktifkan akses browser melalui server",
      "viewTicketIssued": "Mengeluarkan tiket tampilan berumur pendek",
      "invalidPort": "Nomor port tidak valid",
      "firewallNeedExecute": "Membuka port UFW memerlukan YSK_EXECUTE",
      "firewallNeedRoot": "Membuka port UFW memerlukan root",
      "firewallFailed": "ufw izinkan gagal: {{detail}}",
      "firewallOpened": "UFW mengizinkan TCP {{port}}",
      "clientInvalid": "Nama klien dan host diperlukan",
      "clientNotFound": "Profil klien tidak ditemukan",
      "clientUpBlocked": "Tidak dapat menghubungkan klien VNC tanpa root + YSK_EXECUTE",
      "clientUpFailed": "Koneksi klien gagal: {{detail}}",
      "clientViaServerUp": "Klien {{name}} siap untuk browser VNC melalui panel (catatan websockify lama dihentikan). Target tetap dapat dijangkau melalui Buka di browser.",
      "clientDirectUp": "Klien {{name}} hanya menggunakan VNC dalam browser (jalur vncviewer host dihapus). Buka di browser → {{target}}.",
      "clientNeedViewer": "Vncviewer desktop bersifat opsional. Gunakan Buka di browser untuk klien VNC tertanam.",
      "clientDownBlocked": "Tidak dapat memutuskan sambungan tanpa root + YSK_EXECUTE",
      "clientDown": "Klien terputus {{name}}",
      "clientDeleted": "Profil klien dihapus",
      "sessionStartCwd": "Permulaan VNC gagal: direktori kerja tidak dapat diakses oleh pengguna sesi (tampilan :{{display}}). Diperbaiki dengan memulai dari RUMAH.",
      "desktopRestarted": "Profil desktop diterapkan dan sesi dimulai ulang ({{desktop}}). Hubungkan kembali VNC/noVNC.",
      "desktopNeedsStart": "Profil desktop {{desktop}} ditulis ke xstartup. Mulai sesi untuk melamar.",
      "linuxUserRolledBack": "Menghapus sisa pengguna Linux {{user}} setelah kata sandi VNC gagal.",
      "linuxUserOrphan": "Tidak dapat menghapus sisa pengguna Linux {{user}} setelah kata sandi VNC gagal."
    },
    "apache": {
      "needServerName": "Nama server diperlukan",
      "siteExists": "Situs sudah ada",
      "siteNotFound": "Situs tidak ditemukan",
      "wroteConf": "Menulis {{path}}",
      "needExecute": "Membutuhkan YSK_EXECUTE",
      "settingsWritten": "Default Apache ditulis",
      "managedDir": "Dir terkelola {{path}}",
      "dryRun": "Lari kering",
      "copyFailed": "Penyalinan gagal: {{file}}",
      "configOk": "konfigurasi oke",
      "configFailed": "tes konfigurasi gagal: {{detail}}",
      "reloaded": "Apache dimuat ulang",
      "reloadFailed": "Gagal memuat ulang",
      "skippedOrphans": "Melewati {{count}} konferensi yatim piatu (tidak dimiliki)",
      "artifactInvalid": "Nama konferensi artefak tidak valid",
      "artifactOwned": "Conf {{file}} dimiliki oleh proyek atau situs mandiri",
      "artifactNotFound": "Konfigurasi artefak tidak ditemukan: {{file}}",
      "artifactRemoveFailed": "Gagal menghapus {{file}}: {{detail}}",
      "artifactRemoved": "Menghapus konferensi yatim piatu {{file}}",
      "artifactSystemPending": "DataDir dibersihkan; sistem kembar Apache membutuhkan YSK_EXECUTE/root untuk menonaktifkan",
      "artifactSystemDisabled": "Situs sistem dinonaktifkan {{site}}",
      "artifactSystemFailed": "Penonaktifan sistem gagal: {{detail}}",
      "conflictProjectsOnly": "Domain {{name}} diklaim oleh beberapa proyek — ubah domain proyek",
      "cleanupNothing": "Tidak ada konflik artefak yang perlu dihapus",
      "conflictOwnedKeep": "Conf yang dimiliki tetap {{file}} (juga NamaServer {{domain}})",
      "retiredOrphan": "Pensiunan yatim piatu conf {{file}} (ServerName bentrok dengan {{domain}})"
    },
    "btTracker": {
      "needExecute": "YSK_EXECUTE tidak aktif — pemasangan/mulai pelacak dan port publik memerlukan izin perubahan sistem.",
      "startWithoutExecute": "Memulai pelacak tanpa YSK_EXECUTE — mendengarkan mungkin berhasil; firewall host tidak akan dibuka.",
      "alreadyRunning": "Pelacak BitTorrent sudah berjalan dalam proses ini.",
      "notRunning": "Pelacak BitTorrent tidak berjalan.",
      "started": "Pelacak BitTorrent mendengarkan pada port {{port}}.",
      "startFailed": "Gagal memulai pelacak: {{detail}}",
      "stopped": "Pelacak BitTorrent berhenti.",
      "maxSeeds": "Benih serentak maksimum tercapai ({{n}}).",
      "seedStarted": "Pembagian benih {{id}}.",
      "seedStopped": "Berhenti menyemai pembagian.",
      "seedPending": "Penyemaian belum siap — mulai pelacak dan pastikan YSK_EXECUTE bila diperlukan.",
      "notSeeding": "Bagian ini saat ini tidak diunggulkan oleh bidang kendali.",
      "btNeedsTracker": "Berbagi BT membutuhkan pelacak yang berjalan. Buka File → BT Tracker dan mulai.",
      "restoreTrackerFailed": "Pelacak BT gagal memulai saat pemulihan boot",
      "restoreDone": "Pemulihan BT: diunggulkan {{seeded}}/{{attempted}} (gagal {{failed}})",
      "workerMissing": "Skrip pekerja terpisah tidak ada; dimulai dalam proses (mati dengan proses ini)",
      "startedDetached": "Pekerja lepas pelacak BT dimulai (pid {{pid}}, port {{port}})",
      "runningDetached": "Pelacak berjalan sebagai pekerja terpisah (pid {{pid}})",
      "jobQueued": "Pembuatan torrent BT dalam antrean (bagian besar)",
      "jobRunning": "Pembuatan torrent BT berjalan",
      "libraryAdded": "Menambahkan {{name}} ke perpustakaan WebTorrent",
      "libraryInspectFailed": "Tidak dapat membaca .torrent atau magnet itu",
      "libraryDup": "Torrent itu sudah ada di perpustakaan",
      "libraryDestBad": "Folder penyimpanan bukan jalur File yang valid",
      "libraryTorrentTooBig": "File .torrent lebih besar dari 8 MiB",
      "libraryNotFound": "Item perpustakaan tidak ditemukan",
      "libraryPaused": "Dijeda",
      "libraryResumed": "Dilanjutkan",
      "libraryRemoved": "Dihapus dari perpustakaan",
      "libraryFilesRemoved": "Menghapus file yang diunduh",
      "libraryRestoreDone": "Pemulihan perpustakaan: dimulai {{started}}/{{attempted}} (gagal {{failed}})",
      "applyTrackersDone": "Menerapkan pelacak tambahan ke {{n}} slot pengumuman langsung",
      "libraryNeedServe": "Disimpan. Buka panel (ysk-server serve) sehingga WebTorrent dapat mengunduh atau melakukan seed.",
      "libraryDestIsFile": "Tidak dapat membuat folder bernama {{name}} — file dengan nama tersebut sudah ada.",
      "librarySeedMissing": "Tidak ada file yang cocok di folder itu untuk diunggulkan.",
      "libraryWaitingPeers": "Menunggu rekan-rekan. Jika file sudah ada di host ini, tambahkan lagi dan pilih seed yang ada."
    },
    "migrate": {
      "orphanConfirm": "Ketik jalur beranda sisa yang tepat untuk mengonfirmasi penghapusan.",
      "orphanStillInStore": "Rumah itu masih milik proyek di toko.",
      "orphanMissing": "Jalur tidak ada di disk: {{path}}",
      "orphanNeedExecute": "Akan menghapus sisa {{path}}. Membutuhkan YSK_EXECUTE=1.",
      "orphanRmFailed": "Tidak dapat menghapus sisa rumah: {{detail}}",
      "orphanRemoved": "Menghapus sisa proyek rumah {{path}}."
    },
    "publicFiles": {
      "liveConf": "Konf Nginx yang aktif: {{path}}",
      "publicRoot": "Akar publik: {{path}}",
      "confNameStale": "Berkas {{file}} tidak cocok dengan server_name saat ini {{serverName}}. Terapkan ulang berkas publik untuk mengganti nama."
    },
    "leftover": {
      "staleCliTitle": "CLI sisa yang basi",
      "staleCli": "CLI yang tersisa masih ada: {{path}} (produk yang berjalan {{version}}). PATH mungkin lebih menyukainya. Hapus dengan: rm -f {{path}}",
      "apacheDefaultTitle": "Situs default sisa Apache",
      "apacheDefault": "Apache 000-default masih diaktifkan. Itu adalah file situs stok — ini tidak berarti Apache mendengarkan di publik :80 (YSK Apache diharapkan pada 127.0.0.1:8080). Overlay tidak menonaktifkannya. Terapkan Apache dari panel atau hosting apache apply --execute.",
      "nginxCatchAllTitle": "Nginx penampung semuanya hilang",
      "nginxCatchAll": "ysk-000-default.conf tidak ada di /etc/nginx/conf.d. SNI yang tidak diketahui bisa gagal. Jalankan proyek nginx-sync --execute.",
      "vsftpdTitle": "unit vsftpd gagal",
      "vsftpd": "vsftpd gagal. Overlay tidak menulis ulang mendengarkan/listen_ipv6. Terapkan FTP dari panel.",
      "dovecotTitle": "Dovecot TLS menunjuk pada sertifikat yang hilang",
      "dovecot": "Dovecot ssl_cert menunjukkan {{path}} yang hilang. Overlay tidak menulis ulang ssl=no. Terapkan TLS email setelah menerbitkan sertifikat, atau terapkan tumpukan email.",
      "overlayDoesNotHeal": "Hamparan produk tidak menulis ulang nginx, Apache, vsftpd, atau Dovecot. Gunakan perintah apply yang terdaftar (root + YSK_EXECUTE=1).",
      "executeStaleCli": "Lewati --execute (root + YSK_EXECUTE=1) untuk menghapus bin CLI yang sudah basi.",
      "executeMissingTls": "Lewati --execute (root + YSK_EXECUTE=1) untuk menonaktifkan TLS sertifikat yang hilang sehingga vsftpd/Dovecot dapat dimulai.",
      "executeGeneric": "Lewati --execute (root + YSK_EXECUTE=1) untuk menerapkan pembersihan sisa untuk temuan di atas.",
      "staleCliRemoved": "CLI sisa {{path}} dihapus.",
      "staleCliRemoveFailed": "Gagal menghapus CLI sisa {{path}}: {{detail}}",
      "vsftpdSslOff": "Sertifikat FTPS tidak ada: vsftpd disetel ssl_enable=NO lalu dimulai ulang.",
      "dovecotSslOff": "{{path}} tidak ada: Dovecot disetel ssl=no lalu dimulai ulang.",
      "readinessTitle": "Tuan rumah sisa makanan setelah overlay",
      "readinessClean": "Tidak ada sisa default Apache, nginx catch-all yang hilang, vsftpd yang gagal, atau CLI basi yang terdeteksi.",
      "nginxRemoved": "Menghapus sisa nginx conf {{path}}.",
      "nginxNotLeftover": "Bukan sisa file publik conf — tolak penghapusan.",
      "nginxUnusedKeep": "000-default tidak digunakan, bukan sisa — tidak dihapus.",
      "nginxSystemCopy": "Salinan sistem masih ada: {{path}}. Membutuhkan YSK_EXECUTE + root untuk menghapus.",
      "nginxReloadFailed": "nginx -t atau muat ulang gagal setelah menghapus {{path}}."
    },
    "defense": {
      "panelReqLabel": "Permintaan panel / mnt",
      "panelReqExcluded": "Lalu lintas panel yang diautentikasi — ditampilkan di sini, tidak dihitung dalam skor ancaman",
      "tcpOk": "TCP {{target}} dapat dijangkau",
      "tcpFail": "TCP {{target}} gagal",
      "dnsDegraded": "Jalur DNS terdegradasi",
      "reqRateHigh": "Tingkat permintaan publik {{reqs}}/mnt ≥ {{threshold}}",
      "ddosHeuristic": "Tingkat permintaan publik yang tinggi ditambah kegagalan pemeriksaan tepi"
    }
  },
  "ops": {
    "blocked": {
      "needExecute": "Eksekusi host tidak aktif; tindakan ini tidak dapat diselesaikan dari panel",
      "needExecuteShort": "Eksekusi host tidak diaktifkan",
      "needExecuteBlocked": "Diblokir: eksekusi host tidak aktif",
      "needRoot": "Hak istimewa root diperlukan",
      "needExecuteRoot": "Membutuhkan YSK_EXECUTE=1 dan root",
      "needExecuteYsk": "Membutuhkan YSK_EXECUTE=1",
      "writeOutsideDataDir": "Penulisan diblokir: eksekusi host tidak aktif dan jalur berada di luar direktori data panel",
      "nginxReload": "Tidak dapat memuat ulang Nginx: diperlukan eksekusi host",
      "signal": "Tidak dapat mengirim sinyal: diperlukan eksekusi host (YSK_EXECUTE)",
      "signalNote": "YSK_EXECUTE=1 diperlukan untuk pembunuhan sesungguhnya",
      "renice": "Tidak dapat membatalkan: diperlukan eksekusi host (YSK_EXECUTE)",
      "install": "Eksekusi host tidak aktif; instalasi tidak dapat diselesaikan dari panel",
      "update": "Eksekusi host tidak aktif; pembaruan tidak dapat diselesaikan dari panel",
      "panel": "Tidak dapat menyelesaikan ini dari panel manajemen"
    },
    "honesty": {
      "blockedNotOk": "Perbaikan kejujuran: diblokir tidak bisa oke = benar",
      "blockedNotApplied": "Perbaikan kejujuran: diblokir tidak dapat apply_status=diterapkan",
      "okFalseNotApplied": "Perbaikan kejujuran: ok=false tidak dapat apply_status=diterapkan"
    },
    "status": {
      "applied": "Status: diterapkan",
      "failed": "Status: gagal",
      "written": "Status: tertulis",
      "blocked": "Status: diblokir"
    },
    "notes": {
      "writtenSettings": "Pengaturan ditulis",
      "completed": "Selesai",
      "partialSuccess": "Operasi hanya berhasil sebagian",
      "notInstalled": "Tidak dipasang",
      "running": "Berlari",
      "stopped": "Berhenti",
      "unknown": "Tidak dikenal"
    }
  },
  "opsResult": {
    "title": "Hasil",
    "status": "Status",
    "port": "Pelabuhan",
    "url": "URL",
    "pid": "PID",
    "blocked": "Tidak bisa lari",
    "success": "Kesuksesan",
    "failed": "Gagal",
    "retry": "Mencoba kembali",
    "showDetails": "Detail ({{count}})",
    "hideDetails": "Sembunyikan detailnya",
    "stepBuildOk": "Pembangunan selesai",
    "stepHealthOk": "Pemeriksaan kesehatan berlalu",
    "stepProcessStarted": "Proses dimulai",
    "stepSystemdFallback": "Unit Systemd belum siap — proses dimulai melalui pidfile",
    "stepNginxWritten": "Konfigurasi Nginx ditulis",
    "stepConfigsSynced": "Konfigurasi disinkronkan ke sistem",
    "stepStoppedOld": "Menghentikan proses sebelumnya",
    "stepTuningApplied": "Penyetelan waktu proses diterapkan",
    "stepUnitWritten": "Unit layanan tertulis",
    "stepSystemdStartFailed": "Peluncuran sistem gagal — menggunakan proses fallback",
    "portListening": "Port {{port}} sedang mendengarkan",
    "portNotListening": "Port {{port}} tidak mendengarkan",
    "httpOk": "HTTP Oke {{status}}",
    "httpFail": "HTTP gagal: {{detail}}"
  },
  "pageGuide": {
    "missing": "Belum ada konten bantuan yang tersedia untuk halaman ini.",
    "missingTitle": "Tidak ada panduan",
    "eyebrow": "Tentang",
    "canDoTitle": "Apa yang bisa Anda lakukan",
    "workflowTitle": "Aliran yang disarankan",
    "notesTitle": "Catatan",
    "cliTitle": "Referensi cepat CLI",
    "cliFoot": "Untuk flag lengkap, jalankan ysk-server <command> --help atau lihat dokumen.",
    "relatedTitle": "Terkait"
  },
  "playbooks": {
    "discover-host": {
      "name": "Penemuan tuan rumah",
      "description": "Inventaris host hanya-baca"
    },
    "nginx-health": {
      "name": "Pemeriksaan kesehatan Nginx",
      "description": "Periksa status layanan nginx"
    },
    "nginx-restart": {
      "name": "Nginx restart (risiko tinggi)",
      "description": "Mulai ulang nginx setelah disetujui"
    },
    "local-llm-ops-only": {
      "name": "Hanya operasi LLM lokal",
      "description": "Penemuan darurat dalam mode perlindungan"
    },
    "disk-pressure": {
      "name": "Pemeriksaan tekanan disk",
      "description": "Penggunaan disk hanya-baca melalui df"
    },
    "mail-stack-status": {
      "name": "Status tumpukan surat",
      "description": "Periksa unit postfix + dovecot"
    },
    "security-units": {
      "name": "Unit keamanan",
      "description": "fail2ban + status sshd (hanya baca)"
    },
    "web-stack-status": {
      "name": "Status tumpukan web",
      "description": "pemeriksaan nginx + php-fpm"
    },
    "emergency-read-only": {
      "name": "Sapuan darurat hanya-baca",
      "description": "Hanya fakta yang aman untuk perlindungan"
    },
    "backup-health": {
      "name": "Kesiapan cadangan",
      "description": "Periksa proses disk + daftar sebelum jendela pencadangan"
    },
    "db-stack-status": {
      "name": "Status tumpukan basis data",
      "description": "unit mysql/mariadb/redis/postgres"
    },
    "ssl-nginx-check": {
      "name": "Pemeriksaan SSL + Nginx",
      "description": "status nginx sebelum operasi sertifikat"
    }
  },
  "presetChips": {
    "customPlaceholder": "Kebiasaan…"
  },
  "projects": {
    "title": "Proyek",
    "subtitle": "",
    "create": "Buat proyek",
    "createHint": "Setelah dibuat, buka detail untuk menyebarkan, menerbitkan, dan menyempurnakan sumber daya",
    "empty": "Belum ada proyek",
    "emptyHint": "Buat proyek pertama Anda, lalu terapkan dan publikasikan Nginx",
    "emptyFilter": "Tidak ada proyek yang cocok",
    "emptyFilterHint": "Hapus pencarian atau ubah filter runtime",
    "name": "Nama",
    "domain": "Domain (opsional)",
    "detail": "Detil proyek",
    "deploy": "Menyebarkan",
    "deployPhp": "Terapkan PHP",
    "stop": "Berhenti",
    "health": "Pemeriksaan kesehatan",
    "publishNginx": "Publikasikan Nginx",
    "publishNginxSsl": "Publikasikan Nginx + SSL",
    "opsResult": "Hasil operasi",
    "runtime": "Waktu proses",
    "template": "Templat (opsional)",
    "templateNone": "- tidak ada -",
    "searchPlaceholder": "Cari nama, domain, atau ID…",
    "listDesc": "Kelola situs di host ini.",
    "filterAll": "Semua waktu proses",
    "statTotal": "Total",
    "statRunning": "Berlari",
    "statDegraded": "Terdegradasi",
    "statUnhealthy": "Tidak sehat",
    "statStopped": "Berhenti / siap",
    "statStoppedOnly": "Berhenti",
    "statReadyOnly": "Siap",
    "statPendingOs": "OS yang tertunda",
    "status": {
      "failed": "Gagal",
      "failedHint": "Penerapan atau pemeriksaan kesehatan gagal — periksa log",
      "unhealthy": "Tidak sehat",
      "unhealthyHint": "Proses sudah selesai tetapi pemeriksaan kesehatan gagal",
      "pendingOs": "Pengguna OS tertunda",
      "pendingOsHint": "Pengguna sistem tidak tersedia",
      "degraded": "Berjalan (terdegradasi)",
      "degradedHint": "Proses sudah habis tetapi mode produksi belum penuh (misalnya non-root/pidfile)",
      "deploying": "Menyebarkan",
      "published": "Diterbitkan",
      "publishedHint": "Konfigurasi Nginx tertulis; proses mungkin terpisah",
      "running": "Berlari",
      "stopped": "Berhenti",
      "ready": "Siap",
      "readyHint": "Dibuat — terapkan untuk memulai",
      "unknown": "Tidak dikenal"
    },
    "checklist": {
      "title": "Jalur peluncuran",
      "desc": "Selesaikan langkah-langkah ini untuk melayani lalu lintas",
      "created": "Dibuat",
      "os": "pengguna sistem operasi",
      "deploy": "Menyebarkan",
      "nginx": "Nginx",
      "health": "Kesehatan"
    },
    "next": {
      "pendingOsTitle": "Pengguna sistem tidak tersedia",
      "provisionOsAction": "Buat pengguna sistem",
      "pendingOsBody": "Proyek ini belum memiliki pengguna sistem yang terisolasi.",
      "pendingOsActions": "Anda masih dapat menerapkan; isolasi penuh memerlukan hak istimewa admin di host.",
      "deployTitle": "Berikutnya: Terapkan",
      "deployBody": "Gunakan Deploy di header, atau tab Deploy untuk Git.",
      "nginxTitle": "Berikutnya: Publikasikan Nginx",
      "nginxBody": "Buka tab Jaringan untuk mempublikasikan Nginx (SSL opsional)."
    },
    "healthDetail": {
      "none": "Belum ada pemeriksaan kesehatan",
      "overall": "Hasil",
      "nginxStatus": "Status Nginx",
      "nginxReloaded": "Nginx memuat ulang",
      "httpStatus": "HTTP",
      "latency": "Latensi",
      "error": "Kesalahan",
      "at": "Diperiksa di",
      "deployMode": "Modus penerapan",
      "edgeKind": "Tepian",
      "goLiveOk": "Tayangkan langsung",
      "goLiveAt": "Tayangkan langsung di",
      "degraded": "Terdegradasi"
    },
    "railPhp": "PHP / situs",
    "railStatic": "Situs statis",
    "sectionPhpDeploy": "penerapan PHP",
    "sectionPhpDeployDesc": "Tulis situs/kumpulan PHP dan terapkan jika diizinkan",
    "sectionStaticDeploy": "Konten statis",
    "sectionStaticDeployDesc": "Situs statis menggunakan file + Nginx — tanpa proses Node",
    "staticDeployHint": "Tarik konten melalui Git, lalu Publikasikan Nginx di bawah Jaringan.",
    "noDomain": "Tidak ada domain",
    "lastDeploy": "Penerapan terakhir",
    "neverDeployed": "Tidak pernah diterapkan",
    "created": "Dibuat {{name}}",
    "backToList": "Kembali ke proyek",
    "openUrl": "Buka URL",
    "openUrlNeedDomain": "Tetapkan domain terlebih dahulu — jangan buka 127.0.0.1 di browser Anda",
    "needOsUser": "Buat pengguna sistem pada tab Isolasi terlebih dahulu",
    "goIsolation": "Buka tab Isolasi",
    "homeMissing": "Direktori home tidak ada",
    "homeMissingHint": "Pemeriksaan langsung yang sama dengan inventaris migrasi — buat pengguna sistem di Isolasi",
    "stopTitle": "Hentikan proyek ini (unit systemd dan situs publik)",
    "deployTitle": "Terapkan proyek ini",
    "httpStatsHint": "Dari log akses proyek ini (contoh terakhir)",
    "httpStatsNone": "Belum ada log akses proyek",
    "notFound": "Proyek tidak ditemukan",
    "home": "Direktori rumah",
    "env": "Lingkungan",
    "backup": "Cadangan",
    "resources": "Sumber daya",
    "quotaUnlimited": "Tidak ada kuota",
    "lastHealth": "Kesehatan terakhir",
    "tabOverview": "Ringkasan",
    "tabDeploy": "Menyebarkan",
    "tabApp": "Aplikasi",
    "tabNetwork": "Jaringan",
    "tabResources": "Sumber daya",
    "tabIsolation": "Isolasi",
    "tabLogs": "Log",
    "tabAdvanced": "Canggih",
    "tabMore": "Lagi",
    "createGoLive": "Terapkan dan publikasikan Nginx setelah dibuat",
    "createPreferredPort": "Port tetap (opsional)",
    "goLiveOk": "Dikerahkan dan diterbitkan",
    "goLivePartial": "Dibuat; menyebarkan/menerbitkan tidak lengkap",
    "nginxLive": "Hidup",
    "nginxWritten": "Tertulis",
    "nginxNeedsDeploy": "Perlu diterapkan",
    "nginxFailed": "Publikasi gagal",
    "netEdgeStatus": "Status tepi",
    "netUpstream": "Hulu",
    "netPortTitle": "Pelabuhan proses",
    "netCurrentPort": "Pelabuhan saat ini",
    "netPublishTitle": "Menerbitkan",
    "netConfPreview": "Konf",
    "savePublishSsl": "Simpan dan publikasikan + SSL",
    "retryLiveTitle": "Tayangan langsung tidak lengkap",
    "retryLiveBody": "Deploy atau publikasi Nginx tidak selesai. Coba lagi di bawah.",
    "retryDeploy": "Coba terapkan lagi",
    "retryPublish": "Coba lagi publikasikan Nginx",
    "preferredPortRedeployHint": "Simpan, lalu terapkan ulang untuk proses menggunakan port ini",
    "railProcess": "Proses",
    "railNginx": "Nginx",
    "railOs": "pengguna sistem operasi",
    "railHealth": "Kesehatan",
    "nginxPublished": "Konfigurasi diterbitkan",
    "nginxNone": "Tidak dipublikasikan",
    "osProvisioned": "Pengguna sistem disediakan",
    "osPending": "Isolasi OS tertunda",
    "healthOk": "Sehat",
    "healthBad": "Gagal",
    "healthUnknown": "Tidak diperiksa",
    "sectionRuntimeDeploy": "Penerapan waktu proses",
    "sectionRuntimeDeployDesc": "Mulai proses runtime proyek ini (Node / PHP)",
    "sectionGit": "Penerapan Git",
    "sectionGitDesc": "Tarik dari Git dan terapkan ulang",
    "sectionEnv": "Variabel lingkungan",
    "sectionEnvDesc": "Tulis baris KEY=value ke proyek .env",
    "gitUrl": "URL Git",
    "gitDeploy": "Penerapan Git",
    "envFile": "Env (.env)",
    "saveEnv": "Simpan lingkungan",
    "sectionNginx": "Nginx & SSL",
    "sectionNginxDesc": "Tulis dan terapkan konfigurasi situs",
    "domainHint": "Tetapkan domain pada waktu pembuatan untuk publikasi yang lebih bersih",
    "sectionQuota": "Kuota disk",
    "sectionQuotaDesc": "Batasi ukuran direktori home (MiB)",
    "sectionLimits": "CPU/memori",
    "sectionLimitsDesc": "batas sistem; dipindahtugaskan untuk menerapkan unit tersebut",
    "quotaMb": "Kuota (MiB)",
    "memoryMax": "Memori Maks",
    "cpuQuota": "% kuota CPU",
    "setQuota": "Tetapkan kuota",
    "setResources": "Simpan batas sumber daya",
    "sectionLogs": "Log aplikasi",
    "sectionLogsDesc": "Ekor file log terbaru di bawah proyek rumah",
    "viewLogs": "Muat log",
    "logsEmpty": "Belum ada log yang dimuat",
    "logsNoFiles": "(belum ada file log — terapkan terlebih dahulu)",
    "sectionAdvanced": "Tindakan lainnya",
    "sectionAdvancedDesc": "Cadangan dan konten templat",
    "downloadWp": "Unduh WordPress",
    "dangerZone": "Zona bahaya",
    "dangerZoneDesc": "Hapus menghapus catatan proyek dan sumber daya terkait",
    "delete": "Hapus proyek",
    "confirmStopTitle": "Hentikan proyek ini?",
    "confirmStopDesc": "Ini akan menghentikan proses yang berjalan untuk “{{name}}”.",
    "confirmDeleteTitle": "Hapus proyek ini?",
    "confirmDeleteDesc": "Hapus “{{name}}”? Hal ini tidak dapat dibatalkan dari UI.",
    "close": "Menutup",
    "statProjects": "{{count}} proyek",
    "noProjectsShort": "Belum ada proyek",
    "runtimeStatic": "Statis",
    "logsLoadFailed": "Gagal memuat log",
    "deleteFailed": "Penghapusan gagal",
    "tabAbout": "Tentang",
    "statusLabel": "Status",
    "userLabel": "Pengguna",
    "nginxValuePublished": "Diterbitkan",
    "nginxValueNone": "Tidak dipublikasikan",
    "osValueReady": "Siap",
    "osValuePending": "Tertunda",
    "openFiles": "File",
    "enableCdn": "Aktifkan CDN",
    "openLogs": "Log",
    "osUserReadyMsg": "Pengguna sistem siap. {{detail}}",
    "osUserNeedRoot": "Tidak dapat membuat pengguna sistem: memerlukan YSK_EXECUTE + root. {{detail}}",
    "osUserIncomplete": "Penyediaan pengguna sistem tidak lengkap",
    "saveLogDirsFailed": "Gagal menyimpan direktori log",
    "createName": "Nama proyek",
    "noPathSepHint": "Nama tidak boleh mengandung / atau \\.",
    "createRuntime": "Waktu proses",
    "createRuntimeHint": "Anda dapat mengubah opsi penerapan nanti secara mendetail",
    "createVersion": "Versi",
    "createVersionHint": "Disimpan sebagai runtime_version; digunakan oleh penerapan / FPM",
    "createVersionAria": "Versi waktu proses",
    "createPrimaryDomain": "Domain primer",
    "createPrimaryDomainHint": "Opsional untuk saat ini",
    "createAliases": "Alias",
    "createAliasesHint": "Dipisahkan koma atau baris baru",
    "createTemplate": "Templat",
    "createTemplateHint": "Satu Halo Dunia! demo per waktu proses; memilih template akan menyetel runtime tersebut",
    "createTemplateNote": "Templat hanya menulis kerangka; terapkan untuk membangun/memulai.",
    "createRuntimeNow": "Waktu proses saat ini:",
    "createTemplateFooter": ". Templat opsional untuk memulai lebih cepat, atau biarkan kosong.",
    "createDraftResources": "Buat juga draf sumber daya dengan domain",
    "createNeedDomainFirst": "Masukkan domain primer terlebih dahulu agar opsi draf diterapkan secara bersamaan.",
    "createDnsZone": "Buat juga zona DNS",
    "createDnsZoneDesc": "Hanya menulis draf manajemen — bukan DNS otoritatif langsung",
    "createMailDomain": "Daftarkan juga domain email",
    "createMailDomainDesc": "Selesaikan kotak surat dan lamar di halaman surat nanti",
    "createServerIpv4": "Server IPv4",
    "createServerIpv4Hint": "Untuk templat DNS / email",
    "createServerIpv4Ph": "Ini menghosting IPv4 publik",
    "createServerIpv6": "Server IPv6 (opsional)",
    "createServerIpv6Ph": "IPv6 Publik (opsional)",
    "sshCardDesc": "Kunci login menentukan siapa yang bisa masuk;",
    "sshLoginKeys": "Login kunci publik diperbolehkan",
    "sshKeyCount": "{{count}} kunci",
    "sshOutbound": "Identitas keluar",
    "sshOutboundNone": "Tidak dibuat",
    "sshOutboundCreated": "Identitas keluar dibuat (kunci pribadi dienkripsi)",
    "sshCreateFailed": "Pembuatan gagal",
    "sshWriteTried": "Mencoba menulis ke disk",
    "sshOutboundHint": "Setelah dibuat, pengguna proyek ini dapat menggunakan git/scripts outbound.",
    "sshCreateOutbound": "Buat identitas keluar",
    "sshWriteHome": "Tulis ke rumah/.ssh",
    "sshOpenWorkspace": "Buka ruang kerja SSH",
    "sshManageLoginKeys": "Kelola kunci login",
    "logsSectionDesc": "Pindai log/, log/ dan direktori tambahan; cari berdasarkan nama atau kata kunci konten",
    "logsNameSearch": "Pencarian nama file",
    "logsNameSearchHint": "Cocokkan jalur relatif, mis. kesalahan, aplikasi.keluar",
    "logsContentKw": "Kata kunci konten",
    "logsContentKwHint": "Pencarian file ekor (bukan file lengkap)",
    "logsSearch": "Mencari",
    "logsRescan": "Pindai ulang",
    "logsRefreshFile": "Segarkan file ini",
    "logsCopy": "Salin konten",
    "logsDownloadTail": "Unduh ekor",
    "logsCenter": "Pusat pencatatan",
    "logsHitsTitle": "{{count}} file dengan hits — klik untuk membuka ekor (dengan filter kata kunci)",
    "logsLinesHit": "{{count}} garis hit",
    "logsFileCount": "File log {{count}}",
    "logsNameFilter": "(nama mengandung “{{q}}”)",
    "logsScanning": "Memindai log…",
    "logsNoneYet": "Belum ada file log — muncul setelah penerapan/jalankan; direktori tambahan juga berfungsi.",
    "logsNoContent": "Belum ada konten",
    "logsRelated": "Sumber terkait",
    "logsRelatedDesc": "jurnal / nginx / PHP-FPM (lihat pusat log)",
    "logsAvailable": "Tersedia",
    "logsMissing": "Hilang",
    "logsOpenInCenter": "Buka di pusat log",
    "logsExtraDirs": "Direktori log tambahan",
    "logsExtraDirsDesc": "Jalur relatif ke rumah proyek (selain log/ dan log/)",
    "logsDirList": "Daftar direktori",
    "logsDirListHint": "Satu per baris; jalur relatif rumah saja",
    "logsReset": "Mengatur ulang",
    "logsSaveScan": "Simpan dan pindai",
    "logsDefaultNote": "Selalu memindai log/ dan log/. Dir tambahan hanya mencakup *.log / *.out / *.err.",
    "resOsTitle": "Isolasi pengguna sistem",
    "resOsDesc": "Setiap proyek memiliki pengguna Linux sendiri;",
    "resLinuxUser": "pengguna Linux",
    "resOsIsolation": "isolasi sistem operasi",
    "resOsReady": "Siap",
    "resOsNotCreated": "Belum dibuat (membutuhkan admin)",
    "resHomeDir": "Direktori rumah",
    "resCanonical": "Jalur yang dituju",
    "resUserMissing": "Pengguna hilang",
    "resShellLive": "Cangkang/kunci hidup",
    "resLocked": "Terkunci",
    "resUnlocked": "Tidak terkunci",
    "resHomeMode": "modus rumah",
    "resHomeExists": "Ada · mode {{mode}}",
    "resHomeMissing": "Hilang",
    "resIsolationOn": "Terpencil",
    "resIsolationPending": "Isolasi yang tertunda",
    "resOsHint": "Proses dijalankan sebagai pengguna proyek",
    "resProvisionUser": "Membuat/memperbaiki pengguna sistem",
    "resRefreshStatus": "Segarkan status",
    "resFixHome": "Perbaiki kepemilikan rumah",
    "resMigrateHome": "Bermigrasi ke /home/ysk-server-…",
    "resQuotaDesc": "Kuota lunak (du sebelum penerapan) + penerapan keras jika setkuota ada",
    "resQuotaHint": "misalnya 1024 = 1 GiB",
    "resSetSoftQuota": "Hemat kuota lunak",
    "resLimitsTitle": "Batasan proses dan akun",
    "resLimitsDesc": "systemd MemoryMax / CPUQuota / TasksMax / NOFILE + shell / kunci",
    "resLimitsDescSystemd": "systemd cgroup: MemoryMax / CPUQuota / TasksMax / NOFILE + shell / kunci",
    "resLimitsDescPm2": "PM2: memori dipetakan ke max_memory_restart; batasan lainnya menggunakan systemd.",
    "resRunnerSystemd": "Manajer proses: systemd",
    "resRunnerPm2": "Manajer proses: PM2",
    "resMemMax": "Memori maks",
    "resMemHint": "misalnya 512M atau 1G",
    "resMemHintSystemd": "systemd MemoryMax (hard cap cgroup, misalnya 512M atau 1G)",
    "resMemHintPm2": "Menulis ekosistem max_memory_restart (batas restart, bukan cgroup kill);",
    "resFieldSystemdOnly": "hanya cgroup sistem; masih disimpan ke DB ketika Anda beralih kembali ke systemd",
    "resCpuHint": "100 = satu CPU",
    "resCustomPct": "Kebiasaan %",
    "resTasksHint": "Tugas maksimal",
    "resNofileHint": "Batas buka file",
    "resShellHint": "Nologin bawaan",
    "resShellBashRisk": "pesta · risiko",
    "resLockAccount": "Kunci akun Linux",
    "resLockDesc": "mod pengguna -L; hapus centang untuk membuka kunci",
    "resLimitsHint": "Simpan & terapkan tulis DB dan coba usermod / setquota / systemctl set-property",
    "resLimitsHintSystemd": "Simpan & terapkan status panel tulis dan batas OS/systemd bila diizinkan.",
    "resLimitsHintPm2": "Simpan & terapkan status panel tulis dan batas memori PM2.",
    "resSaveApply": "Simpan dan terapkan batasan pada OS",
    "resSaveControlOnly": "Simpan Mem/CPU untuk mengontrol pesawat saja",
    "resReapply": "Mendaftar ulang satu kali (tidak ada perubahan formulir)",
    "resMigrateDone": "Migrasi selesai",
    "resMigrateIncomplete": "Migrasi tidak selesai",
    "resMigrateTitle": "Migrasikan pengguna sistem ke rumah?",
    "resMigrateDesc": "Bermigrasi ke /home/ysk-server-{id} dan membuat/memperbaiki pengguna sistem",
    "resMigrate": "Bermigrasi",
    "resWrittenOnly": "Ditulis untuk mengendalikan pesawat; OS tidak diterapkan (membutuhkan root). {{notes}}",
    "resAppliedOs": "Batasan diterapkan pada OS. {{notes}}",
    "resSaved": "Disimpan",
    "resIncomplete": "Tidak lengkap",
    "resApplyLimitsFailed": "Gagal menerapkan batas",
    "resApplied": "Terapan",
    "resApplyFailed": "Penerapan gagal",
    "resChownOk": "chown selesai",
    "resChownFailed": "chown gagal",
    "netSavedPublished": "Jaringan disimpan dan Nginx diterbitkan",
    "netSavedOnly": "Pengaturan jaringan disimpan (tidak dipublikasikan)",
    "netSaveFailed": "Gagal menyimpan",
    "netSuspended": "Proyek ditangguhkan — pengunjung mendapat 503. Batalkan penangguhan lalu publikasikan.",
    "netDomainTitle": "Domain",
    "netDomainDesc": "Domain primer dan alias; simpan juga dapat menulis konfigurasi manajemen Nginx",
    "netPrimaryDomain": "Domain primer",
    "netPrimaryHint": "Domain pengunjung, mis. app.example.com",
    "netAliases": "Alias",
    "netAliasesHint": "Satu per baris, mis. www atau subdomain blog",
    "netNeedPrimary": "Masukkan domain primer terlebih dahulu",
    "netHttpsTitle": "HTTPS dan pengalihan situs",
    "netHttpsDesc": "Publikasikan Nginx setelah disimpan. Situs lengkap 301 mengesampingkan proksi/PHP/konten statis",
    "netForceHttps": "Paksa HTTPS",
    "netForceHttpsDesc": "HTTP → HTTPS (301); membutuhkan sertifikat SSL dan penerbitan SSL",
    "netForceHttpsOn": "HTTP akan dialihkan ke HTTPS setelah Anda mempublikasikan edge.",
    "netForceHttpsOff": "Tidak ada pengalihan paksa yang disimpan.",
    "netBoundCert": "Sertifikat terikat",
    "netBoundCertExpiry": "kedaluwarsa {{at}}",
    "netNoBoundCert": "Tidak ada sertifikat di disk untuk nama host ini",
    "netForceHttpsNeedCert": "Terbitkan sertifikat di /ssl untuk domain ini sebelum memaksa HTTPS.",
    "netHttpsLiveNotForced": "File tepi ada; HTTPS mungkin sudah berfungsi. Kotak ini hanya memaksa HTTP→HTTPS.",
    "netHsts": "Aktifkan HST",
    "netHstsDesc": "Browser tetap menggunakan HTTPS (disarankan setelah memaksa HTTPS)",
    "netHstsNeedHttps": "Aktifkan paksa HTTPS terlebih dahulu",
    "netRedirectUrl": "URL pengalihan situs lengkap",
    "netRedirectHint": "Opsional. Situs lengkap 301 ke URL ini (pindah / apex→www)",
    "netBasicAuthTitle": "Otentikasi dasar HTTP (login browser)",
    "netBasicAuthDesc": "Menulis htpasswd saat dipublikasikan; nama pengguna kosong = nonaktif. Kata sandi kosong = tetap tersimpan",
    "netAuthUserHint": "Kosong menonaktifkan autentikasi",
    "netAuthPassHint": "Diperlukan pertama kali; biarkan kosong nanti untuk disimpan",
    "netAuthPassSet": "Tetapkan atau perbarui kata sandi",
    "netCacheNote": "Kontrol Cache Statis/PHP statis 7d secara default; pembersihan membersihkan direktori cache nginx host (membutuhkan YSK_EXECUTE)",
    "netPurgeOk": "Mencoba membersihkan cache",
    "netPurgeFailed": "pembersihan gagal",
    "netDocrootTitle": "Direktori situs (docroot)",
    "netDocrootDesc": "Sehubungan dengan proyek rumah; digunakan sebagai root Nginx saat dipublikasikan (aplikasi default/publik)",
    "netDocrootLabel": "Akar dokumen",
    "netDocrootFull": "Jalur lengkap: {{path}}",
    "netDocrootCustom": "Jalur relatif khusus…",
    "netAdvancedTitle": "Lanjutan & publikasikan",
    "netAdvancedDesc": "Ikat IP, publikasikan ke sistem Nginx",
    "netCollapseBind": "Ciutkan pengikatan IP",
    "netExpandBind": "Perluas pengikatan IP",
    "netBindIp": "Ikat IP",
    "netBindHint": "Kosong = semua antarmuka",
    "netBindPh": "Kosong = semua; atau mengikat IP",
    "netNeedDomainSave": "Masukkan dan simpan domain primer terlebih dahulu",
    "ovUsed": "Digunakan",
    "ovQuota": "Kuota",
    "ovQuotaUnset": "Tidak disetel",
    "ovQuotaStatus": "Status kuota",
    "ovOverQuota": "Melebihi kuota",
    "ovQuotaOk": "OK",
    "ovDocroot": "Akar dokumen",
    "ovAccessSample": "Akses sampel",
    "ovLines": "{{count}} garis",
    "ovDailyDays": "Hari statistik harian",
    "ovDailyTitle": "Statistik kunjungan harian (maks 60 hari)",
    "ovDailyDesc": "Bergulir dari sampel log akses",
    "ovQuickTitle": "Pintasan situs",
    "ovQuickDesc": "Publikasikan dan buat cadangan (penyebaran utama melalui header atau tab Deploy)",
    "ovNeedNetworkDomain": "Tetapkan domain pada tab Jaringan terlebih dahulu",
    "ovPublishNginx": "Publikasikan Nginx",
    "ovPublishSsl": "Publikasikan Nginx + SSL",
    "ovBackupProject": "Cadangkan proyek ini",
    "ovOpenFiles": "Buka file proyek",
    "ovNoDomainHint": "Tidak ada domain — atur di tab Jaringan sebelum dipublikasikan.",
    "ovPublishNote": "Publikasikan konfigurasi manajemen penulisan; live Nginx reload memerlukan hak perubahan sistem.",
    "ovStatic": "Statis",
    "ovAliases": "Alias",
    "ovForceOn": "Dipaksa",
    "ovForceOff": "Tidak dipaksa",
    "advFtpCreated": "FTP {{user}} dibuat (draf — berlaku di halaman FTPS)",
    "advCreateFailed": "Pembuatan gagal",
    "advFtpFailed": "Pembuatan FTP gagal",
    "advMaintTitle": "Pemeliharaan",
    "advMaintDesc": "Cadangkan, tangguhkan/lanjutkan, alat opsional",
    "advBackupProject": "Cadangkan proyek ini",
    "advOneClickWp": "WordPress sekali klik (unduh + pengaturan)",
    "advSuspendedHint": "Ditangguhkan: proses dihentikan, pengunjung mendapat 503.",
    "advSuspendHint": "Penangguhan menghentikan proses dan menampilkan halaman pemeliharaan 503.",
    "advFtpTitle": "Proyek FTP (jalur penjara)",
    "advFtpDesc": "Akun dipenjara ke direktori aplikasi proyek; terapkan pada halaman layanan FTPS setelah dibuat",
    "advFtpUserHint": "Opsional; sistem dapat menghasilkan",
    "advFtpPassHint": "Setidaknya 8 karakter",
    "advDangerTitle": "Zona bahaya",
    "advDangerDesc": "Penghapusan tidak dapat dibatalkan dari UI — buat cadangan terlebih dahulu.",
    "advDelete": "Hapus proyek",
    "deployPyHint": "Bawaan: venv + pip; ASGI melalui uvicorn, Django melalui gunicorn.",
    "deployGoHint": "Bawaan: buka build -o app . lalu ./app; lewati build jika biner ada.",
    "deployRustHint": "Default: pembuatan kargo --rilis lalu target/rilis/{crate}; lewati build opsional.",
    "deployNodeHint": "Mulai proses Node (entri server.js default); systemd direkomendasikan di prod.",
    "deployDefaultHint": "Mulai berdasarkan waktu proses; eksternal hanya setelah diterapkan.",
    "deployOsStep": "Pengguna Linux terisolasi + /home/ysk-server-{project id} (tab Sumber Daya dapat dibuat)",
    "deployPyReady": "Waktu proses Python sudah siap",
    "deployPipNet": "persyaratan.txt memerlukan pip keluar",
    "deployCheckPort": "Setelah penerapan, periksa port dan/kesehatan",
    "deployPublishProxy": "Publikasikan proksi terbalik Nginx",
    "deployToolchainReady": "{{runtime}} rantai alat siap",
    "deployFirstBuild": "Penerapan build pertama (mungkin memerlukan waktu cukup lama)",
    "deployNeedBinary": "Biner hanya setelah build berhasil",
    "deployPhpFpmOk": "Versi PHP-FPM Oke",
    "deployPhpPool": "Terapkan PHP/terapkan kumpulan",
    "deployNginxSsl": "Publikasikan Nginx + SSL opsional",
    "deployPublicContent": "Konfirmasikan publik/memiliki konten",
    "deployNetPublish": "Publikasikan Nginx di tab Jaringan",
    "deployConfirmToolchain": "Konfirmasikan rantai alat yang diinstal pada halaman runtime (atau host memilikinya)",
    "deployConfirmCode": "Konfirmasikan aplikasi/memiliki kode (templat atau Git)",
    "deployPressDeploy": "Tekan Terapkan; lalu publikasikan Nginx di Jaringan",
    "deployVersionSaved": "Disimpan {{runtime}} versi {{version}} (digunakan saat penerapan)",
    "deployVersionSaveFailed": "Gagal menyimpan versi runtime",
    "deployInstallingToolchain": "Memasang / mengonfirmasi rantai alat…",
    "deployToolchainIncomplete": "Pemasangan Toolchain tidak lengkap (izin atau jaringan); coba halaman Runtime",
    "deployToolchainDone": "Langkah rantai alat selesai, mulai penerapan…",
    "deployToolchainFailed": "Pemasangan rantai alat gagal",
    "deployChecklistTitle": "Dibuat — terapkan daftar periksa",
    "deployChecklistDesc": "{{runtime}} kerangka siap; selesaikan langkah untuk melayani lalu lintas",
    "deploySectionTitle": "{{runtime}} diterapkan",
    "deploySectionDesc": "Mulai proses {{runtime}} (port / systemd atau pidfile)",
    "deployPhpVersion": "versi PHP",
    "deployPhpVersionHint": "Versi PHP untuk situs ini (FPM yang cocok harus diinstal)",
    "deployRuntimeVersion": "Versi {{runtime}}",
    "deployRuntimeVersionHint": "Disimpan di proyek; digunakan saat dikerahkan. Instal di halaman Runtime",
    "deployRuntimeVersionCreateHint": "Ditulis saat membuat; direferensikan pada penerapan",
    "deployRuntimeVersionGeneric": "Versi waktu proses",
    "deployEntry": "Mulai masuk",
    "deployEntryHint": "Kosong = default ({{hint}}); disinkronkan ke server",
    "deploySkipBuild": "Lewati pembuatan",
    "deploySkipBuildHint": "Jika venv/biner ada; kecepatan restart (preferensi lokal)",
    "deployPort": "· pelabuhan {{port}}",
    "deployFpmApplied": "Kumpulan PHP-FPM diterapkan",
    "deployFpmIncomplete": "FPM tidak lengkap",
    "deployFpmNote": "Menulis konfigurasi situs/kumpulan; live reload memerlukan hak perubahan sistem.",
    "deployBuildNote": "Kegagalan build/start ditampilkan dalam hasil operasi. Entri menulis ke server; skip-build adalah preferensi lokal.",
    "deployPhpIniTitle": "Proyek php.ini diganti",
    "deployPhpIniDesc": "Hanya kunci yang perlu diubah;",
    "deployPhpIniExample": "misalnya 256 juta; kosong = global",
    "deployGlobal": "Global",
    "deployCustom": "Kebiasaan",
    "deployOff": "Mati",
    "deployOnCareful": "Aktif · hati-hati",
    "deployPhpIniSaved": "Proyek php.ini menimpa disimpan; menyebarkan atau menerapkan FPM lagi",
    "deployHistory": "Terapkan riwayat ({{count}})",
    "deployHistoryDesc": "Dari audit; terbaru terlebih dahulu",
    "deployGitUrlHint": "URL repo HTTPS atau SSH; sinkronisasi lalu terapkan ulang berdasarkan waktu proses",
    "deployEnvHint": "Satu KEY=nilai per baris; # komentar",
    "resume": "Lanjutkan proyek",
    "suspend": "Tangguhkan proyek",
    "goFtpsApply": "Pergi melamar layanan FTPS",
    "toolchainNote": "Menginstal proyek toolchain ≠ sudah aktif; terapkan kesuksesan ≠ Nginx publik (publikasikan di Jaringan).",
    "installToolchainDeploy": "Instal rantai alat dan terapkan",
    "deployOnly": "Terapkan saja",
    "openRuntime": "Buka waktu proses {{runtime}}",
    "later": "Nanti",
    "installToolchainDeployShort": "Rantai alat + penerapan",
    "runtimeEnv": "{{runtime}} lingkungan",
    "applyFpmPool": "Terapkan kumpulan FPM",
    "staticNginxHint": "Situs statis mengandalkan Publish Nginx — gunakan pintasan Jaringan atau Ikhtisar.",
    "fullIniLink": "Katalog lengkap dan opcache/sesi dll. di",
    "phpIniLink": "Waktu proses PHP → php.ini",
    "savePhpIniOverride": "Simpan penggantian php.ini",
    "scaffoldNote": "Jika app/ adalah scaffold YSK (.ysk-scaffold), maka akan dihapus sebelum dikloning; konten khusus menolak penimpaan.",
    "saveOnly": "Simpan saja",
    "savePublishNginx": "Simpan dan publikasikan Nginx",
    "needDomainToPublish": "Masukkan domain primer sebelum dipublikasikan.",
    "savePublish": "Simpan dan publikasikan",
    "saveAuth": "Simpan autentikasi",
    "cacheZoneNote": "Zona FastCGI/proxy_cache penuh memerlukan key_zone di host nginx.conf; panel menawarkan upaya pembersihan terbaik.",
    "purgeNginxCache": "Bersihkan cache Nginx",
    "nginxManageFile": "File manajemen Nginx:",
    "publishRuntimeNote": "Publikasikan penulisan proxy/PHP-FPM/konferensi statis saat runtime (auth, pengalihan, docroot)",
    "publishStored": "Publikasikan dengan pengaturan tersimpan",
    "publishStoredSsl": "Publikasikan tersimpan + SSL",
    "publishNote": "Publikasikan penulisan konferensi manajemen; sinkronisasi ke /etc/nginx dan memuat ulang memerlukan hak perubahan sistem.",
    "hitsFiles": "{{count}} file dengan hits — klik untuk membuka ekor (filter kata kunci)",
    "logFilesCount": "File log {{count}}",
    "defaultScanNote": "Selalu memindai log/ dan log/. Dir tambahan hanya mencakup *.log / *.out / *.err.",
    "opsOk": "{{label}} selesai{{url}}",
    "opsOkWithNote": "{{label}} selesai: {{note}}{{url}}",
    "opsFail": "{{label}} gagal: {{reason}}",
    "railPython": "Proses piton",
    "railGo": "Jalani proses",
    "railRust": "Proses karat",
    "railNode": "Proses simpul",
    "runtimeName": {
      "php": "PHP",
      "node": "Node.js",
      "static": "Statis",
      "python": "ular piton",
      "go": "Pergi",
      "rust": "Karat",
      "java": "Jawa",
      "kotlin": "Kotlin",
      "bun": "Sanggul"
    },
    "netCacheTitle": "Cache",
    "logsDeepAccess": "Pusat log · akses",
    "logsDeepError": "Pusat log · kesalahan",
    "logsDeepNginxUnit": "Log unit Nginx",
    "logsPresetAccess": "Filter akses.log",
    "logsPresetError": "Filter kesalahan.log",
    "railJava": "Proses Jawa",
    "railKotlin": "Proses Kotlin",
    "railBun": "Proses roti",
    "deployProcessManager": "Manajer proses",
    "deployProcessManagerSystemd": "sistemd (disarankan)",
    "deployProcessManagerPm2": "PM2",
    "proc_restart": "Mulai ulang",
    "proc_stop": "Berhenti",
    "proc_reload": "Muat ulang",
    "procControlsHint": "Kontrol proses ({{manager}})",
    "procActionOk": "{{action}} oke · {{notes}}",
    "procActionFail": "{{action}} gagal · {{notes}}",
    "procActionFailShort": "Tindakan proses gagal",
    "procMissingUser": "Proyek tidak memiliki pengguna Linux — tidak dapat menargetkan aplikasi PM2",
    "deploySystemdHint": "Default produksi: unit ysk-project-*",
    "deployPm2Hint": "Dimulai melalui pm2 (ekosistem",
    "deleteDialogTitle": "Hapus proyek secara permanen",
    "deletePermanent": "Hapus secara permanen",
    "deleteRemoveFiles": "Hapus disk rumah dan pengguna Linux",
    "deleteTypeName": "Ketikkan nama proyek untuk mengonfirmasi",
    "deletedOk": "Proyek dihapus",
    "sslRequiredFirst": "Belum ada sertifikat SSL untuk domain ini. Buat atau unggah satu di bawah Sertifikat SSL sebelum Publikasikan + SSL.",
    "sslGateHint": "Tindakan SSL terkunci — buka",
    "sslGateHint2": "untuk menerbitkan/mengunggah sertifikat untuk domain ini terlebih dahulu.",
    "netPublishPrimary": "Dasar",
    "netPublishSsl": "HTTPS/SSL",
    "netPublishMaint": "Pemeliharaan",
    "sslNeedDomain": "Tetapkan domain sebelum menerbitkan Nginx / SSL.",
    "createTemplateMissing": "{{v0}} ； 「— —」。",
    "deleteDialogDesc": "「{{name}}」。。",
    "deleteWillStop": "sistemd / PM2 /",
    "deleteWillWeb": "Nginx conf, kumpulan PHP-FPM, Apache vhost （）",
    "deleteWillOs": "Linux rumah （）",
    "deleteKeepOs": "rumah Linux （）",
    "deleteWillDb": "…",
    "deleteRemoveFilesDesc": "Membatalkan,",
    "deleteTypeNameHint": "「{{name}}」",
    "deleteDnsWarn": "Zona / domain DNS 。",
    "manageInNginx": "Kelola di Nginx",
    "advFtpHomeApp": "Direktori app situs",
    "advFtpHomeRoot": "Home proyek (penuh)",
    "advFtpManage": "Buka halaman FTP",
    "resShell": "cangkang masuk",
    "resSaveHint": "Simpan dan terapkan perubahan OS langsung. Bidang kontrol hanya menyimpan formulir. Mendaftar ulang menggunakan nilai yang terakhir disimpan.",
    "resBashConfirmTitle": "Izinkan pesta interaktif?",
    "resBashConfirmDesc": "Ini memberikan shell login interaktif kepada pengguna proyek. Konfirmasikan hanya jika Anda memerlukan SSH atau PTY sebagai pengguna tersebut.",
    "createGitHint": "Opsional. Disimpan di proyek; clone dari tab Deploy (tidak mengkloning saat dibuat).",
    "gitTokenLaterHint": "Token HTTPS dan kedalaman klon diatur pada tab Deploy proyek setelah dibuat.",
    "gitBranch": "Cabang",
    "gitBranchHint": "Branch or tag. Empty uses the remote default. First clone is shallow (depth 1).",
    "gitBranchAfterUrl": "Isi dulu URL Git. Kosong memakai cabang default remote.",
    "gitLastRef": "Sinkronisasi terakhir: {{branch}} @ {{commit}}",
    "gitConfirmTitle": "Kloning ke proyek ini?",
    "gitConfirmBody": "Jika app/ masih merupakan placeholder Hello World maka akan dihapus, lalu dikloning. File khusus yang bukan scaffold YSK ditolak.",
    "gitConfirmRemoteBody": "Ini mengarahkan asal ke URL baru dan menariknya. Sejarah yang tidak berhubungan gagal; file khusus tidak dihapus.",
    "runtimeActual": "Biner sebenarnya {{path}}",
    "runtimeFallback": "Terpilih {{version}} tidak ada pada host ini. Proses menggunakan {{path}}.",
    "gitSync": "Sinkronisasi",
    "gitFetch": "Mengambil",
    "gitCheckout": "Check-out",
    "gitReset": "Setel ulang ke jarak jauh",
    "gitResetNeedConfirm": "Perlu konfirmasi — membuang commit lokal",
    "gitDeepen": "Ambil riwayat lengkap",
    "gitLogTitle": "Komitmen terbaru",
    "gitDirtyTitle": "Perubahan lokal memblokir tarikan",
    "gitDirtyBody": "{{count}} file berbeda dari Git (Pengeditan file atau aplikasi). Buang atau batalkan.",
    "gitSyncBlockedDirty": "Sinkronisasi dinonaktifkan hingga perubahan lokal dibuang (Reset) atau file cocok dengan Git.",
    "gitViewDiff": "Lihat perbedaan",
    "gitDiscard": "Buang file lokal",
    "gitOpenFiles": "Buka di File",
    "gitNotCloned": "Tidak dikloning",
    "gitClean": "Membersihkan",
    "gitDirty": "Kotor",
    "gitBehind": "Di belakang {{count}}",
    "gitAhead": "Depan {{count}}",
    "gitDetached": "Disematkan",
    "gitShallow": "Dangkal",
    "gitMissing": "git hilang",
    "gitResetConfirmTitle": "Reset susah ke remote?",
    "gitResetConfirmBody": "Tindakan ini membuang riwayat Git lokal dan file yang tidak terlacak kecuali .env, lalu memulihkan .env dari bidang kontrol.",
    "gitHeads": "Cabang terpencil",
    "gitToken": "token HTTPS",
    "gitTokenHint": "Personal access token. Stored encrypted; never written into the remote URL.",
    "gitTokenPlaceholder": "ghp_… atau glpat-…",
    "gitTokenSet": "Kumpulan token",
    "gitSaveToken": "Simpan token",
    "gitClearToken": "Hapus tanda",
    "gitDeployKey": "Terapkan kunci publik",
    "gitDeployKeyHint": "Tambahkan ini sebagai kunci penerapan read-only pada host Git.",
    "gitDeployKeyOn": "Sebarkan kunci",
    "gitMakeKey": "Buat kunci penerapan",
    "gitCopyPub": "Salin kunci publik",
    "gitClearKey": "Hapus kunci penerapan",
    "gitKeyCopied": "Kunci publik disalin",
    "gitPinHost": "Sematkan kunci host",
    "gitPinHostBody": "{{host}} tidak disematkan. Konfirmasikan sidik jarinya, lalu sematkan sebelum klon SSH.",
    "gitHostUnpinned": "Kunci host tidak disematkan",
    "gitHookTitle": "Inbound hook",
    "gitHookHint": "Paste POST /api/v1/hooks/git/<id> into GitHub / Gitea / GitLab yourself (push events). Not Slack. Secret is HMAC or X-YSK-Git-Hook.",
    "gitHookOn": "Hook on",
    "gitHookOff": "Hook off",
    "gitHookEnable": "Enable hook",
    "gitHookRotate": "Putar rahasia",
    "gitHookDisable": "Disable hook",
    "gitHookSecretOnce": "Copy this secret now — it is not stored in the page after you leave.",
    "gitHookCopyUrl": "Copy URL",
    "gitHookCopySecret": "Salin rahasia",
    "gitHookCopied": "Disalin",
    "gitHookSetup": "Add the webhook yourself. Payload URL = the URL above. Content type application/json. Events: push only. Secret = the one-time value.",
    "gitHookGithub": "GitHub: Settings → Webhooks → Add webhook. Content type application/json. Events: Just the push event. GitHub.com requires HTTPS.",
    "gitHookGitea": "Gitea: Settings → Webhooks → Add Webhook → Gitea. HTTP Method POST. Push events.",
    "gitHookGitlab": "GitLab: Settings → Webhooks. Trigger: Push events. Secret token = the hook secret (sent as X-Gitlab-Token).",
    "gitHookHonesty": "The host unit must have YSK_EXECUTE=1. Without it the hook answers but does not clone or deploy.",
    "gitHookSkipOther": "Pushes to other branches are ignored. Only the project ref syncs.",
    "gitAuthHttps": "token HTTPS",
    "gitAuthSsh": "Kunci penerapan SSH",
    "gitLoadRefs": "Memuat cabang",
    "gitRefDefault": "Default jarak jauh",
    "gitRefBranches": "Cabang",
    "gitRefTags": "Tag",
    "gitRefOther": "Referensi lainnya…",
    "gitRefCustom": "Komit atau ref",
    "gitRefsNeedUrl": "Masukkan URL terlebih dahulu.",
    "gitRefsNeedAuth": "Simpan token atau terapkan kunci, lalu muat cabang.",
    "gitRefsHint": "Dimuat dari jarak jauh. Pilih salah satu — jangan mengetik.",
    "gitHookSetupToggle": "Bagaimana cara menempelkan ini",
    "gitHookOneLiner": "HMAC atau X-YSK-Git-Hook. Hanya referensi proyek ini.",
    "gitHookExecuteHint": "Membutuhkan YSK_EXECUTE=1 untuk mengkloning atau menyebarkan.",
    "gitShowKey": "Tampilkan kunci",
    "gitHideKey": "Bersembunyi",
    "gitBehindShort": "↓{{count}}",
    "gitAheadShort": "↑{{count}}",
    "gitDirtyShort": "Kotor · {{count}}",
    "gitFilesLink": "File",
    "nameInvalid": "Gunakan nama dengan huruf kecil: dimulai dengan huruf, lalu huruf, angka, atau tanda hubung (maks 31).",
    "deployVersionMissing": "Node {{version}} tidak diinstal pada host ini. Pilih versi terinstal, atau instal versi ini terlebih dahulu.",
    "deployUsedBinary": "Penerapan yang digunakan {{path}}"
  },
  "protection": {
    "levels": {
      "low": {
        "label": "OK",
        "verb": "Sistem stabil",
        "hint": "Jaga perlindungan harian"
      },
      "elevated": {
        "label": "Tinggi",
        "verb": "Keanehan terlihat",
        "hint": "Beralih ke hardened dan perhatikan IP yang mencurigakan"
      },
      "under_attack": {
        "label": "Sedang diserang",
        "verb": "Kemungkinan sedang diserang",
        "hint": "Terapkan preset yang sedang diserang + larangan massal"
      },
      "critical": {
        "label": "Kritis",
        "verb": "Ancaman parah",
        "hint": "Pertimbangkan keadaan darurat; pastikan Anda masuk daftar putih"
      }
    },
    "presetsWhen": {
      "daily": "Sehari-hari",
      "hardened": "Pindai / kasar",
      "under_attack": "L7 banjir",
      "emergency": "Pilihan terakhir"
    },
    "note": {
      "notApplied": "Tidak diterapkan pada host (memerlukan root + YSK_EXECUTE=1) — disimpan ke pengaturan panel",
      "nginxWritten": "Menulis file panel batas kecepatan Nginx",
      "f2bWritten": "Menulis pengaturan panel fail2ban",
      "hintDropped": "Petunjuk perlindungan internal dihilangkan",
      "nginxLimits": "Akan menulis cuplikan batas kecepatan Nginx"
    },
    "rel": {
      "justNow": "Baru saja",
      "minutesAgo": "{{n}} menit yang lalu",
      "hoursAgo": "{{n}} jam yang lalu"
    },
    "apiUnreachable": "Tidak dapat menjangkau API (proksi web/backend mungkin tidak aktif)",
    "geoipLoadFailed": "Gagal memuat GeoIP",
    "loadFailed": "Gagal memuat",
    "previewDone": "Pratinjau selesai (tidak tertulis)",
    "presetApplied": "Prasetel perlindungan diterapkan",
    "manualBan": "Larangan manual",
    "banSent": "Larangan dikirim untuk {{ip}}",
    "quickSelectBan": "Larangan pilih cepat",
    "bulkBan": "Larangan massal {{count}}",
    "autoBanStatus": "Larangan otomatis: {{onOff}} · {{mode}} · {{method}}",
    "autoBanUpdated": "Larangan otomatis diperbarui",
    "automationMaster": "Ahli otomasi: {{onOff}}",
    "autoPresetStatus": "Prasetel otomatis: {{onOff}}",
    "autoBanAutomation": "Larangan otomatis: {{onOff}} ({{mode}})",
    "automationSaved": "Pengaturan otomatisasi disimpan",
    "statFirewall": "tembok api",
    "statSuspects": "Tersangka IP",
    "statSuspectsSplit": "{{actionable}} dapat ditindaklanjuti / {{total}} terdaftar",
    "suspectActionableCount": "IP yang dapat ditindaklanjuti {{count}}",
    "scoreBasisHint": "Skor ancaman menggunakan firewall, volume larangan fail2ban, dan sinyal tingkat permintaan — tidak dihitung sama dengan daftar tersangka intel.",
    "statAutoBan": "Larangan otomatis",
    "statApply": "Sistem berlaku",
    "statActiveBans": "Larangan aktif",
    "statPreset": "Prasetel",
    "threatPill": "Ancaman {{label}} · skor {{score}}",
    "reprobed": "Diselidiki ulang",
    "loadingStatus": "Memuat status perlindungan…",
    "tabs": {
      "command": "Tanggapan",
      "automation": "Otomatisasi",
      "bans": "Larangan",
      "geo": "akses IP",
      "stack": "Tumpukan",
      "intel": "Intel",
      "about": "Tentang"
    },
    "reapply": "Melamar lagi",
    "nginxLimits": "Batas kecepatan Nginx",
    "notWritten": "Tidak tertulis",
    "modeValue": {
      "normal": "Normal",
      "degraded": "Terdegradasi",
      "ddos-protection": "Perlindungan DDoS",
      "offline": "Luring"
    },
    "mode": "Mode",
    "controlPlane": "Pesawat kendali",
    "canApply": "Bisa melamar",
    "needRoot": "Perlu akar",
    "writeOnly": "Tulis file saja",
    "autoRunning": "Berlari · setiap {{sec}}s · larangan pada jam ini {{n}}",
    "autoOffManual": "Mati — hanya manual",
    "lastTick": "· terakhir {{t}}",
    "nextTick": "· selanjutnya {{t}}",
    "on": "Pada",
    "off": "Mati",
    "open": "Membuka",
    "ranAutomationTick": "Jalankan satu centang otomatisasi",
    "escalateHardened": "Mengeras ≥ skor",
    "escalateAttack": "Sedang diserang ≥ skor",
    "deescalateDaily": "Kembali ke <skor harian",
    "zeroOff": "Diskon 0",
    "holdAfterEscalate": "Tunggu minimal setelah eskalasi",
    "min5": "5 menit",
    "min15": "15 menit",
    "min30": "30 menit",
    "hour1": "1 jam",
    "hour2": "2 jam",
    "hour6": "6 jam",
    "presetOrCustom": "Prasetel/kustom",
    "autoBanMode": "Mode larangan otomatis",
    "soft": "Lembut",
    "normal": "Normal",
    "aggressive": "Agresif",
    "custom": "Kebiasaan",
    "method": "Metode",
    "banMethod": "Metode larangan",
    "both": "Keduanya",
    "scoreGte": "Skor ≥",
    "hitsGte": "Permintaan hit ≥",
    "hits429Gte": "429 hit terkait ≥",
    "scanHitsGte": "Jalur pemindaian mencapai ≥",
    "cooldown": "Pendinginan",
    "maxPerHour": "Maks per jam",
    "scanInterval": "Interval pemindaian",
    "schedulerDefault": "penjadwal default 120 detik",
    "collapse": "Runtuh",
    "expand": "Memperluas",
    "step": "Melangkah",
    "mechanism": "Mekanisme",
    "youCanTune": "Anda bisa menyetel",
    "probe": "Menguji",
    "probeSignals": "WAN / tingkat kebutuhan / TCP / f2b / UFW",
    "escalateThreshold": "Tingkatkan ambang batas",
    "emergency": "Keadaan darurat",
    "neverAuto": "Tidak pernah otomatis",
    "manualEmergency": "DARURAT Manual",
    "signalNetworkDown": "WAN turun",
    "signalHighReq": "Tingkat permintaan yang tinggi",
    "signalDdos": "heuristik DDoS",
    "signalTcp": "koneksi TCP",
    "signalUfwOff": "UFW mati",
    "signalF2bBans": "jumlah larangan fail2ban",
    "weightHint": "{{label}} berat 0–3",
    "detected": "(terdeteksi)",
    "notSet": "(tidak disetel)",
    "zonesComma": "Zona (dipisahkan koma)",
    "underAttackRequested": "Di bawah Serangan diminta",
    "underAttackCleared": "Hapus UA yang diminta",
    "autoBanOpen": "Aktif · {{mode}} · jam ini {{n}}/{{max}}",
    "autoBanClosed": "Mati — hanya manual/daftar",
    "pausedNoExecute": "· dijeda (tidak ada EXECUTE)",
    "circuitOpen": "· sirkuit terbuka",
    "autoBanModeLabel": "Mode larangan otomatis",
    "scanned": "Dipindai",
    "bulkOps": "Tindakan massal",
    "fromAccessLog": "Dari log akses · larangan sekali klik atau massal",
    "noSuspectIps": "Tidak ada IP yang mencurigakan untuk saat ini",
    "noSuspectDesc": "Muncul ketika lalu lintas scan/429 terlihat. Perluas untuk larangan manual.",
    "whitelistPlus": "Daftar Putih + {{ip}}",
    "whitelistAdded": "Ditambahkan ke daftar putih",
    "activeBansTitle": "Larangan aktif ({{count}})",
    "activeBansDesc": "Agregat perlindungan · batalkan pemblokiran melalui API pertahanan (sama seperti klien fail2ban)",
    "source": "Sumber",
    "unbanned": "Tidak dilarang",
    "noBans": "Tidak ada larangan",
    "noBansDesc": "Larangan ditampilkan di sini",
    "collapseQuickAdd": "Ciutkan penambahan cepat",
    "quickAddOne": "Tambahkan satu dengan cepat",
    "removeItem": "Hapus {{w}}",
    "updated": "Diperbarui",
    "ipOrCidr": "IPv4/IPv6 atau CIDR",
    "autoBanWhitelistAdded": "Ditambahkan ke daftar putih larangan otomatis",
    "added": "Ditambahkan",
    "banIpPlaceholder": "IPv4 atau IPv6 untuk dilarang",
    "reason": "Alasan",
    "scanBrute": "Pindai / kasar",
    "noSignals": "Belum ada sinyal",
    "pressReprobe": "Tekan selidiki ulang",
    "points": "poin",
    "noTopIps": "Belum ada IP teratas",
    "topIpsAfterLog": "Ditampilkan setelah log ada",
    "noManagedVhost": "Tidak ada vhost yang dikelola",
    "afterPresetMarker": "Penerapan preset menyuntikkan penanda",
    "injected": "YSK_DEFENSE disuntikkan",
    "notInjected": "Tidak disuntik",
    "noEvents": "Belum ada acara",
    "eventsAfterOps": "Muncul setelah penerapan/larangan",
    "geoipUpdated": "GeoIP DB diperbarui",
    "dbReady": "DB siap",
    "stale": "Basi",
    "older7d": ">7 hari",
    "freshnessNa": "tidak ada",
    "freshnessMissing": "Tidak ada basis data",
    "freshnessStale": "Basi",
    "freshnessFresh": "Saat ini",
    "lastSuccess": "Kesuksesan terakhir",
    "downloaded": "Diunduh",
    "missing": "Hilang",
    "geoMode": "Mode akses geografis",
    "denyList": "Daftar tolak",
    "allowListHighRisk": "Izinkan daftar · risiko tinggi",
    "autoUpdateDb": "Perbarui DB secara otomatis",
    "countriesSelected": "Negara ({{n}} dipilih)",
    "searchCountry": "Cari nama Cina atau ISO",
    "countryPlaceholder": "Cina / CN",
    "regionsSelected": "Wilayah ({{n}} dipilih)",
    "regionsHint": "Dari negara terpilih; kustom CN-GD Oke",
    "pickCountryFirst": "Pilih negara pertama yang akan dipersempit daftarnya",
    "customRegion": "Kustom, mis. CN-GD",
    "regionPlaceholder": "Guangdong/CA/Tokyo",
    "continentsSelected": "Benua ({{n}} dipilih)",
    "continentsHint": "Benua opsional",
    "continentPlaceholder": "Asia / UE",
    "asnsSelected": "ASN Penyedia ({{n}} dipilih)",
    "asnsHint": "Awan/ISP; ASN kustom oke",
    "customAsn": "ASN khusus, mis. 13335",
    "asnPlaceholder": "Cloudflare / ISP",
    "cityExample": "misalnya CN|Shenzhen atau AS|Ashburn",
    "policySaved": "Kebijakan disimpan · negara {{c}} · wilayah {{r}} · ASN {{a}}",
    "ipPolicySaved": "Kebijakan akses IP disimpan",
    "nginxGeoWritten": "Menulis cuplikan geo nginx",
    "ipAddress": "alamat IP",
    "lookupPlaceholder": "IPv4 atau IPv6 untuk mencari",
    "wouldBlock": "Akan memblokir · {{reason}} · {{matched}}",
    "wouldAllow": "Izinkan · {{reason}}",
    "lookupDone": "Pencarian selesai",
    "item": "Bidang",
    "value": "Nilai",
    "country": "Negara",
    "region": "Wilayah",
    "city": "Kota",
    "continent": "Benua",
    "coords": "koordinat",
    "provider": "Penyedia",
    "policy": "Kebijakan",
    "block": "Memblokir",
    "allow": "Mengizinkan",
    "matched": "Cocok",
    "applyStricterTitle": "Terapkan preset yang lebih ketat?",
    "applyStricterDesc": "Dapat mengaktifkan larangan otomatis. Konfirmasikan IP Anda masuk daftar putih.",
    "confirmEmergencyTitle": "Konfirmasikan preset darurat",
    "confirmEmergencyDesc": "Darurat sangat membatasi tarif. Konfirmasikan daftar putih dan ketik DARURAT.",
    "confirmString": "Konfirmasikan string",
    "applyEmergency": "Terapkan darurat",
    "sectionPreset": "Preset",
    "sectionAutoPreset": "① Prasetel otomatis",
    "sectionAutoBan": "② Larangan otomatis",
    "unban": "Batalkan pelarangan",
    "ban": "Melarang",
    "banConfirmTitle": "Larangan {{ip}}?",
    "banConfirmMethod": "Metode: {{method}}",
    "banConfirmUntilUnban": "Tetap diblokir sampai Anda membatalkan pemblokirannya (atau masa berlaku fail2ban habis).",
    "banConfirmDesc": "IP ini akan diblokir di host. Konfirmasikan bahwa itu bukan panel atau alamat sesi saat ini.",
    "wlRemovedUndo": "Menghapus {{ip}} dari daftar yang diizinkan. Batalkan dalam waktu 5 detik.",
    "undo": "Membuka",
    "banSelectedConfirmTitle": "Larang {{count}} IP yang dipilih?",
    "banSelectedConfirmDesc": "Alamat berikut akan diblokir di host: {{ips}}",
    "save": "Menyimpan",
    "yes": "Ya",
    "no": "TIDAK",
    "oneClickSuggested": "Terapkan preset yang disarankan",
    "stackApply": "Terapkan tumpukan perlindungan (UFW, fail2ban, preset)",
    "stackApplyDone": "Tumpukan perlindungan diterapkan diminta",
    "stackApplyHint": "Ini mengaktifkan UFW dan menerapkan fail2ban ditambah preset yang disarankan. Konfirmasikan bahwa Anda tidak akan mengunci diri Anda di luar panel jarak jauh.",
    "viewPresets": "Lihat preset",
    "suspectIpsCount": "IP Tersangka {{count}}",
    "goBans": "Pergi ke larangan",
    "singleEntryPrefix": "Entri tunggal:",
    "singleEntryBody": " ",
    "emergencyNeverAuto": "darurat tidak pernah otomatis",
    "writeOnlyBanner": "Hanya tulis: penerapan sistem memerlukan EXECUTE=1 dan root.",
    "readiness": "Kesiapan",
    "goTo": "Membuka",
    "presetGuide": "",
    "active": "Aktif",
    "recommended": "Disarankan",
    "useCarefully": "Peringatan",
    "preview": "Pratinjau",
    "stackToolsSee": "Alat tumpukan di tab Tumpukan ·",
    "readinessCheck": "Pemeriksaan kesiapan",
    "automationMasterLabel": "Sakelar utama otomasi",
    "runOneTick": "Jalankan satu centang sekarang",
    "suggestEmergencyBanner": "Skor sangat tinggi — sistem menyarankan keadaan darurat tetapi tidak akan diterapkan secara otomatis. Konfirmasikan pada tab Respons.",
    "autoPresetDesc": "Beralih otomatis setiap hari/dikeraskan/diserang berdasarkan skor. Darurat tidak pernah otomatis.",
    "allowDeescalate": "Izinkan de-eskalasi otomatis",
    "autoBanThresholdHint": "ambang pengisian lembut/normal/agresif;",
    "sectionMechanism": "③ Cara kerjanya",
    "lastNotes": "Terakhir: {{notes}}",
    "sectionWeights": "④ Bobot sinyal (0–3)",
    "weightsDesc": "Bawaan 1;",
    "needCfToken": "Membutuhkan CF_API_TOKEN",
    "cfOnEscalate": ". Dapat memanggil API saat melakukan eskalasi ke serangan sedang atau penerapan manual.",
    "ufwOnlyCf": "Sedang diserang: UFW hanya mengizinkan rentang CF (+SSH)",
    "ufwOnlyCfHint": "Menyetel ulang UFW ke IP Cloudflare saja; membutuhkan hak perubahan sistem.",
    "saveZones": "Simpan zona",
    "uaNow": "Sedang Diserang sekarang",
    "uaClear": "Jelas (→ tinggi)",
    "stackRoleNote": "UFW dan fail2ban adalah halaman alat di bawah Perlindungan (bukan navigasi tingkat atas). Sidebar menyimpan halaman ini saja.",
    "fwUfwTitle": "Firewall UFW",
    "fwStats": "Kebijakan pelabuhan · DENY permanen · izinkan {{allow}} · tolak {{deny}}",
    "fwRulesProfiles": "Aturan & profil UFW",
    "f2bStats": "Catat larangan sementara · {{jails}} penjara · dilarang {{banned}}",
    "jailsWhitelistPolicy": "Penjara · daftar putih · kebijakan",
    "divisionTitle": "Pembagian kerja",
    "divisionUfw": "UFW = port mana yang terbuka, IP permanen ditolak",
    "divisionF2b": "fail2ban = larangan sementara setelah pemindaian log",
    "divisionDefense": "Halaman ini = orkestrasi serangan (preset rate + larangan otomatis + tersangka)",
    "autoBanLabel": "Larangan otomatis",
    "scanOnce": "Pindai sekali",
    "selectedIps": "{{count}} IP dipilih",
    "banSelected": "Larangan dipilih",
    "suspectIps": "Tersangka IP",
    "selectAll": "Pilih semua",
    "alreadyBanned": "Dilarang",
    "whitelist": "Daftar putih",
    "bansWorkflow": "Tanggapan: daftar tersangka → pelarangan/batalkan pelarangan. Kebijakan penjara, pengabaikan, siklus hidup layanan:",
    "f2bTool": "alat fail2ban",
    "noSecondJail": "(tidak ada editor penjara kedua di sini).",
    "autoBanWhitelistTitle": "Daftar putih larangan otomatis",
    "autoBanWhitelistDesc": "Pengecualian larangan otomatis perlindungan (sinkronisasi fail2ban abaikan",
    "ufwOff": "UFW (mati)",
    "ufwOffHint": "UFW tidak aktif — fail2ban adalah target yang dapat digunakan.",
    "whitelistSyncHint": "{{n}} entri panel · fail2ban abaikan sinkronisasi ip: {{sync}}",
    "whitelistSyncOn": "pada",
    "whitelistSyncOff": "mati (daftar mungkin berbeda)",
    "ignoreipWhitelist": "abaikan daftar putih",
    "notSetSuggestAdmin": "Belum disetel (tambahkan IP admin Anda)",
    "moreItems": "… {{n}} selengkapnya · lihat daftar putih fail2ban",
    "add": "Menambahkan",
    "manualBanTitle": "Larangan manual",
    "methodFollows": "Metode mengikuti pilihan di atas (fail2ban / UFW)",
    "preferSuspectList": "Biasanya daftar tersangka sudah cukup.",
    "threatSignals": "Sinyal ancaman",
    "scoreSource": "Sumber skor · bobot merdu",
    "accessAuthSample": "akses + sampel autentikasi",
    "fullLogsAt": "Log nginx/auth lengkap:",
    "logCenter": "Pusat pencatatan",
    "colScore": "Skor",
    "colHits": "Hit",
    "col429": "429",
    "topIpsTitle": "IP teratas",
    "hitsCount": "{{n}} hit",
    "sampleWindowHint": "Hitungan dari jendela sampel access + auth saat ini, bukan file log penuh.",
    "banShort": "Melarang",
    "vhostLimits": "Batas kecepatan Vhost",
    "eventStream": "Aliran acara",
    "eventKind": {
      "preset": "Prasetel",
      "auto_preset": "Prasetel otomatis",
      "cloudflare_ua": "awan suar",
      "ban": "Melarang",
      "unban": "Batalkan pelarangan"
    },
    "hours48": "48 jam",
    "geoipDb": "Basis data GeoIP",
    "refreshStatus": "Segarkan status",
    "updateDbNow": "Perbarui DB sekarang",
    "geoipSourceHint": "Menggunakan DB GeoIP lokal secara default; token info IP opsional.",
    "retry": "Mencoba kembali",
    "loadingGeoip": "Memuat status GeoIP…",
    "nextScheduledUpdate": "Pembaruan terjadwal berikutnya: {{at}}",
    "statusNotLoaded": "Status tidak dimuat",
    "load": "Memuat",
    "accessPolicy": "Kebijakan akses",
    "enable": "Memungkinkan",
    "freeGranularity": "Maksimum gratis: negara + wilayah + ASN; kota opsional (default nonaktif, akurasi lebih rendah). Penyedia = ASN. Daftar putih selalu dikecualikan. Klik chip untuk menghapus.",
    "allowListDanger": "Mode daftar yang diizinkan berisiko tinggi: IP publik yang tidak terdaftar (termasuk geografis yang tidak diketahui) diblokir. Pastikan IP admin ada dalam daftar putih larangan halaman.",
    "dailySchedule": "Jadwal harian",
    "cityPolicy": "Kebijakan kota (kepercayaan rendah · opsional)",
    "useCityAccess": "Gunakan kota untuk akses",
    "cityPolicyHint": "Akurasi kota DB gratis terbatas",
    "noCitiesYet": "Belum ada kota",
    "savePolicy": "Simpan kebijakan",
    "applyNginxSnippet": "Terapkan cuplikan Nginx",
    "nginxSnippetHint": "Pemblokiran HTTP memerlukan modul nginx geoip2.",
    "testIp": "Uji IP",
    "lookup": "Pencarian",
    "plusCountry": "+ negara {{v}}",
    "plusRegion": "+ wilayah {{v}}",
    "plusCity": "+ kota {{v}}",
    "lastTickPrefix": "· terakhir {{t}}",
    "nextTickPrefix": "· selanjutnya {{t}}",
    "cannotBanSelf": "Tidak bisa memblokir {{ip}} — ini host, IP login, atau ignoreip",
    "selfIp": "Tuan rumah ini",
    "selfHostIp": "IP tuan rumah",
    "selfLoginIp": "IP masuk Anda",
    "showZeroScore": "Tampilkan skor 0",
    "hideZeroScore": "Sembunyikan skor 0",
    "geoDraftOnly": "Kebijakan mati — Simpan hanya menulis draf. Nginx tidak menegakkan sampai Anda mengaktifkannya.",
    "geoNeedDb": "Basis data GeoIP tidak ada — perbarui file MMDB terlebih dahulu",
    "uaNeedZones": "Tetapkan zona Cloudflare terlebih dahulu",
    "selectAllCountriesWarn": "Pilih semua negara di daftar blokir? Ini bisa mengunci host ini dan negara login Anda.",
    "badgeRecommendPreset": "Preset lebih kuat disarankan untuk ancaman saat ini",
    "badgeAutomationOn": "Otomatisasi aktif",
    "badgeBanCount": "Blokir aktif",
    "badgeGeoOn": "Kebijakan akses Geo aktif",
    "badgeGeoNotReady": "Basis data GeoIP belum siap",
    "badgeIntelSignals": "Sinyal yang saat ini menambah skor",
    "signalActive": "Aktif",
    "signalInactive": "Tidak aktif",
    "signalJails": "{{n}} jail",
    "dbReadyHint": "Berkas MMDB ada",
    "dbNotReadyHint": "Unduh dulu basis data GeoIP",
    "staleHint": "Apakah pembaruan berhasil terakhir lebih dari 7 hari",
    "draftBadge": "Draf",
    "banIsSelf": "IP ini cocok dengan sumber panel saat ini atau host ini.",
    "banNotSelf": "IP ini bukan sumber panel saat ini.",
    "geoSourceLocal": "Perpustakaan GeoIP lokal (sapis + DB-IP)",
    "nginxPreviewHint": "Cuplikan Nginx yang akan ditulis oleh preset ini (hanya pratinjau):"
  },
  "publicFiles": {
    "notSet": "Tidak disetel",
    "quota": "Kuota",
    "reloadOnApply": "Saat melamar",
    "path": "Jalur",
    "fileManager": "Manajer file",
    "overview": "Ringkasan",
    "overviewDesc": "Pengaturan yang akan diterapkan (ringkasan hanya baca)",
    "serverName": "Nama server",
    "reloadNginx": "Muat ulang Nginx",
    "reloadTry": "Cobalah melamar",
    "siteSettings": "Pengaturan situs",
    "siteSettingsDesc": "Menulis conf terkelola; dapat memuat ulang Nginx saat mengajukan permohonan (hanya dapat dijangkau setelah mengajukan permohonan)",
    "serverNameHint": "Nama_server Nginx, mis. file.example.com",
    "notes": {
      "noManagedConf": "Belum ada konfigurasi Nginx yang dikelola — klik Terapkan",
      "notSynced": "Conf yang dikelola ada tetapi tidak ada di /etc/nginx/conf.d — terapkan lagi sebagai root dengan YSK_EXECUTE"
    },
    "quotaMiB": "Kuota (MiB)",
    "quotaHint": "Opsional; membatasi ukuran direktori publik",
    "unlimited": "Tak terbatas",
    "quotaInvalid": "Masukkan jumlah MiB utuh, atau pilih Tidak Terbatas.",
    "serverNameRequired": "Masukkan nama server.",
    "serverNameInvalid": "Gunakan nama host, wildcard, atau IP — tanpa spasi atau tanda baca.",
    "applyHint": "Terapkan hanya tulis konfigurasi;",
    "appliedOk": "Situs file publik diterapkan",
    "applyReload": "Terapkan dan muat ulang Nginx",
    "statusLive": "Langsung di nginx",
    "statusDraft": "Draf / tidak diterapkan",
    "statusManagedOnly": "Hanya dikelola",
    "statusNotApplied": "Tidak diterapkan",
    "nginxLive": "di conf.d",
    "nginxNotLive": "tidak di conf.d",
    "openSite": "Buka situs",
    "notLiveHint": "Domain 404 biasanya berarti conf hanya ada di bawah dataDir, tidak disalin ke /etc/nginx/conf.d, atau nginx tidak dimuat ulang. Terapkan ulang dengan root + YSK_EXECUTE. Gunakan http:// hingga SSL dikeluarkan untuk nama host ini.",
    "diskRoot": "Akar disk",
    "executeFlag": "Menjalankan",
    "asRoot": "Akar",
    "filesInRoot": "Entri",
    "managedConf": "Konferensi terkelola",
    "systemConf": "Konferensi sistem.d",
    "autoindex": "Daftar direktori (indeks otomatis)",
    "liveSystemConf": "Konfigurasi sistem aktif: {{path}}",
    "publicRootNote": "Akar publik: {{path}}",
    "applyConfirmTitle": "Terapkan situs file publik?",
    "applyConfirmDesc": "Tulis Nginx server_name {{name}} dan muat ulang Nginx.",
    "serverNameMismatch": "Konfigurasi aktif memakai {{live}}; formulir berisi {{draft}}. Terapkan untuk mengganti.",
    "liveName": "Nama hidup",
    "draftName": "Nama rancangan",
    "draftUnapplied": "Draf ini tidak diterapkan. Nginx masih menggunakan nama live.",
    "discardDraft": "Buang draf"
  },
  "rbac": {
    "permissions": "Izin",
    "permissionsDesc": "Tambahkan atau hapus kemampuan per peran. Default pabrik dengan pemulihan satu klik.",
    "rolePolicy": "Kebijakan peran",
    "dirty": "Disesuaikan",
    "factory": "Standar pabrik",
    "maxLevel": "tingkat maksimal",
    "save": "Simpan kebijakan",
    "saved": "Kebijakan {{role}} yang disimpan",
    "restoreRole": "Kembalikan peran ini",
    "restoreAll": "Pulihkan semua peran",
    "restoreRoleTitle": "Kembalikan {{role}} ke default pabrik?",
    "restoreRoleDesc": "Kemampuan khusus untuk peran ini akan dihapus.",
    "restoreAllTitle": "Kembalikan semua peran ke default pabrik?",
    "restoreAllDesc": "Semua kebijakan peran khusus akan dihapus.",
    "restoredRole": "Dipulihkan {{role}}",
    "restoredAll": "Memulihkan semua peran default",
    "bandAllOn": "Aktifkan semua",
    "bandAllOff": "Nonaktifkan semua",
    "diffFromFactory": "Berbeda dari default",
    "effectivePreview": "Kemampuan yang efektif",
    "userOverrides": "Penggantian pengguna",
    "extraGrants": "Hibah ekstra",
    "extraRevokes": "Pencabutan ekstra",
    "restoreUserOverrides": "Hapus penggantian pengguna",
    "restoreUserOverridesTitle": "Hapus penggantian untuk {{name}}?",
    "restoreUserOverridesDesc": "Hanya hibah/pencabutan tambahan yang disetujui; kebijakan peran tidak berubah.",
    "overridesBadge": "Penggantian",
    "promoteAdminTitle": "Promosikan ke Admin?",
    "promoteAdminDesc": "Admin dapat mengelola pengguna, mengubah RBAC, meniru identitas, memulihkan cadangan, dan banyak lagi.",
    "level": {
      "read": "Membaca",
      "write-low": "Tulis (rendah)",
      "write-high": "Menulis (tinggi)",
      "destructive": "Merusak",
      "privilege": "Hak istimewa"
    },
    "cap": {
      "dashboardRead": "Dasbor",
      "logsRead": "Log",
      "metricsRead": "Metrik",
      "projectsRead": "Proyek (baca)",
      "mailRead": "Surat (baca)",
      "dnsRead": "DNS (baca)",
      "sslRead": "SSL (baca)",
      "backupsRead": "Cadangan (baca)",
      "updatesRead": "Pembaruan (baca)",
      "servicesRead": "Layanan (baca)",
      "firewallRead": "Firewall (baca)",
      "approvalsView": "Persetujuan (lihat)",
      "usersSelf": "Profil diri / 2FA",
      "projectsWrite": "Proyek dibuat/diedit",
      "mailWrite": "Kotak surat / alias",
      "dbWrite": "Buat database",
      "sslUpload": "Unggah sertifikat",
      "filesProject": "File proyek",
      "approvalsRespond": "Menanggapi persetujuan",
      "cronManage": "Manajemen cron",
      "servicesControl": "Kontrol layanan",
      "updatesApply": "Terapkan pembaruan paket",
      "dnsApply": "Terapkan DNS",
      "sslIssue": "Keluarkan SSL",
      "publishApply": "Publikasikan / Nginx",
      "firewallEdit": "Sunting firewall",
      "mailApply": "Terapkan peta email",
      "runtimeTuning": "Penyetelan waktu proses",
      "mysqlConsoleWrite": "Konsol tulis MySQL",
      "projectsDelete": "Hapus proyek",
      "dbDrop": "Jatuhkan database",
      "backupsRun": "Jalankan pencadangan",
      "backupsRestore": "Pulihkan cadangan",
      "firewallFlush": "Siram firewall",
      "logsPurge": "Bersihkan log",
      "usersManage": "Kelola pengguna",
      "packagesManage": "Kelola paket",
      "usersImpersonate": "Menirukan",
      "securityPolicy": "Kebijakan keamanan",
      "rbacPolicy": "kebijakan RBAC",
      "settingsSystem": "Pengaturan sistem",
      "auditExport": "Ekspor audit",
      "securityApiKeysAdmin": "Admin kunci API",
      "networkBrowse": "Penjelajahan web yang dimediasi host",
      "networkVnc": "Desktop jarak jauh VNC",
      "validatorsRead": "Validator (baca)",
      "validatorsManage": "Validator kelola",
      "validatorsWipe": "Validator hapus data",
      "dockerRead": "Docker (baca)",
      "dockerManage": "Docker kelola",
      "dockerWipe": "Docker hapus / bersihkan"
    },
    "aboutRoles": "Peran (default pabrik)",
    "aboutRolesBody": "Peran menetapkan kemampuan default; pengguna dapat menggantinya satu per satu.",
    "aboutQuota": "Kuota",
    "aboutQuotaBody": "Kuota paket pada dasarnya adalah total host/panel, bukan isolasi multi-penyewa",
    "dangerPolicyTitle": "Memberikan kemampuan destruktif/istimewa?",
    "dangerPolicyDesc": "Anda menambahkan batas destruktif atau hak istimewa, atau menaikkan maxLevel untuk peran ini",
    "needRbacPolicy": "rbac.policy diperlukan untuk mengedit kebijakan peran.",
    "adminLockedFull": "Admin terbuka penuh (terkunci)",
    "adminLockedHint": "Peran sistem admin selalu terbuka penuh dan tidak dapat dikurangi",
    "maxLevelHint": "Kelompok kemampuan di atas level ini tetap terkunci.",
    "capabilities": "Kemampuan",
    "capabilitiesHint": "Alihkan fungsi peran ini",
    "enabledCount": "{{enabled}} dari {{total}} diaktifkan",
    "bandAboveMax": "Di atas level maksimal",
    "roleUnavailable": "Tidak tersedia untuk peran ini",
    "dirtyHint": "Disesuaikan (berbeda dari pabrik)",
    "unsaved": "Belum disimpan",
    "unsavedHint": "Pengeditan yang belum disimpan pada peran ini",
    "nothingToSave": "Tidak ada yang perlu disimpan",
    "saveRole": "Simpan kebijakan {{role}}",
    "discardTitle": "Hapus kebijakan yang belum disimpan?",
    "discardDesc": "Beralih peran akan menghilangkan pengeditan kemampuan yang belum disimpan."
  },
  "readiness": {
    "cat": {
      "core": "Pesawat kendali",
      "security": "Izin & keamanan",
      "binaries": "Perangkat lunak sistem",
      "hosting": "Waktu proses",
      "dns": "DNS",
      "email": "E-mail",
      "isolation": "Isolasi proyek",
      "ops": "Operasi"
    },
    "level": {
      "ready": "Siap",
      "degraded": "Terdegradasi",
      "missing": "Hilang",
      "unknown": "Tidak dikenal"
    },
    "severity": {
      "critical": "Kritis",
      "recommended": "Direkomendasikan",
      "optional": "Opsional"
    },
    "fix": "Memperbaiki",
    "passed": "Lulus",
    "checkFailed": "Pemeriksaan kesiapan gagal",
    "gatePass": "Gerbang dilewati · {{pct}}%",
    "gateFail": "Belum siap · {{pct}}%",
    "gateBlocked": "Tidak lulus · {{n}} hilang",
    "executeOn": "Pada",
    "executeOff": "Mati",
    "blockers": "Pemblokir",
    "blockersHint": "Penghalang adalah subset kritis dari Hilang — bukan pemeriksaan tambahan.",
    "requireAdminTotp": "memerlukan kebijakan admin 2FA",
    "listenBind": "mendengarkan alamat",
    "item": {
      "admin2fa": "Admin dua faktor"
    },
    "dataDirPerms": "izin direktori data panel",
    "mode750": "modus 750",
    "totalChecks": "Semua pemeriksaan",
    "totalChecksHint": "Siap + terdegradasi + hilang = total ini. Pemblokir adalah bagian penting yang hilang.",
    "probing": "Menyelidiki…",
    "reprobe": "Selidiki ulang",
    "exportReport": "Ekspor laporan",
    "exportStarted": "Mengunduh {{name}}",
    "firstBlocker": "Perbaiki pemblokir pertama",
    "viewRecommended": "Lihat direkomendasikan",
    "loadingProbe": "Menyelidiki kemampuan host…",
    "priorityTab": "Perbaikan prioritas",
    "checklistTab": "Daftar periksa lengkap",
    "summaryTab": "Ringkasan & pintasan",
    "priorityTitle": "Perbaikan prioritas",
    "prioritySub": "Tangani secara berurutan; selidiki ulang setelah membersihkan pemblokir",
    "nItems": "{{count}} item",
    "noHardBlockers": "Tidak ada pemblokir keras",
    "noHardBlockersTitle": "Tidak ada pemblokir keras",
    "prodGate": "Gerbang produksi",
    "gatePassed": "lulus",
    "gateMaybePerm": "mungkin masih gagal karena izin",
    "viewDegradedHint": "Tinjau rekomendasi yang terdegradasi (mail, DNS, runtime opsional).",
    "viewDegraded": "Tampilan terdegradasi",
    "fullChecklist": "Daftar periksa lengkap",
    "showing": "Menampilkan {{shown}} / {{total}}",
    "filterAria": "Penyaring status",
    "all": "Semua",
    "category": "Kategori",
    "allCategories": "Semua kategori",
    "searchPh": "Judul, detail, id, petunjuk perbaikan…",
    "quickCatAria": "Kategori cepat",
    "noMatchTitle": "Tidak ada item yang cocok",
    "noMatchDesc": "Hapus pencarian atau ubah filter.",
    "resetFilters": "Setel ulang filter",
    "summary": "Ringkasan",
    "shortcuts": "Jalan pintas",
    "opsShortcutsAria": "Pintasan operasi",
    "scHost": "Pengaturan tuan rumah",
    "scHostD": "nama host · kekuatan · NTP",
    "scUnit": "Unit bidang kendali",
    "scUnitD": "instal/aktifkan systemd",
    "scServices": "Matriks layanan",
    "scServicesD": "nginx · DB · siklus hidup",
    "scMetrics": "Metrik tuan rumah",
    "scMetricsD": "memuat · memori · peringatan",
    "scProtection": "Pusat pertahanan",
    "scProtectionD": "tanggapan · UFW · fail2ban",
    "policyNote": "Kebijakan: mail PTR / port 25 / registrar DNS tidak pernah diklaim secara otomatis selesai. HTTP 503 = belum siap tetapi laporan lengkap (bukan kesuksesan palsu).",
    "notProbedTitle": "Belum diselidiki",
    "notProbedDesc": "Klik “Selidiki Ulang” untuk memulai pemeriksaan kesiapan baca-saja.",
    "runCheck": "Jalankan pemeriksaan kesiapan",
    "reportFormatError": "Format laporan kesiapan tidak valid",
    "checkFailedHttp": "Pemeriksaan kesiapan gagal ({{status}})",
    "itemAdminPassword": "Kekuatan kata sandi admin",
    "itemAdminPasswordWeak": "{{count}} admin menandai must_change_password / bootstrap tidak aman — ubah sebelum produksi",
    "itemAdminPasswordOk": "Tidak ada tanda bootstrap/kata sandi lemah di akun admin",
    "itemAdminPasswordFix": "Ubah kata sandi admin (Keamanan / Pengguna)",
    "itemListenBind": "Pesawat kendali mendengarkan ikatan",
    "itemListenBindPublic": "Dengarkan mungkin bersifat publik (0.0.0.0/::). Lebih suka 127.0.0.1 + proxy terbalik/firewall.",
    "itemListenBindLoopback": "Lebih suka pengikatan loopback (default 127.0.0.1)",
    "itemDataDirPerms": "izin dataDir",
    "itemDataDirWorldW": "chmod 750 (atau 700) dataDir; chown ke pengguna panel",
    "itemDataDirOtherR": "Lebih suka chmod 750 dataDir sehingga pengguna lain tidak dapat membaca JSON bidang kontrol",
    "itemRustToolchain": "Rantai alat karat",
    "itemWebBuildFix": "Klik “Perbaiki sekarang” untuk membangun UI Web (memerlukan monorepo pada host ini), atau jalankan: pnpm --filter ysk-server-web build",
    "itemWebBuildManual": "Tidak ada monorepo atau SPA terpaket di host ini — perbaikan sekali klik tidak tersedia. Pada mesin dengan sumber: pnpm --filter ysk-server-web build, lalu salin apps/web/dist/* ke dataDir/web (mis. /var/lib/ysk-server/web), atau setel YSK_WEB_ROOT dan mulai ulang.",
    "itemStateStore": "Toko negara bidang kendali",
    "itemStateStoreSqliteHint": "Opsional: YSK_STORE=sqlite untuk penyimpanan dokumen WAL",
    "itemBackupFreshness": "Pencadangan penuh terakhir dijalankan",
    "itemBackupNone": "Tidak ada last_backup_run yang tercatat — jalankan pencadangan semua atau jadwalkan",
    "itemBackupFix": "ysk-server cadangan semua · jadwal pencadangan --install",
    "itemFleetSessions": "Sesi agen armada",
    "itemFleetNone": "Opsional untuk host tunggal; multi-edge membutuhkan agen yang dijalankan + detak jantung",
    "itemFleetNoHb": "Sesi terdaftar tetapi tidak berdetak — mulai agen edge",
    "itemPdnsutil": "pdnsutil (PowerDNS)",
    "apachePort80Title": "Apache vs publik :80",
    "apachePort80Detail": "Apache mendengarkan pada :80 dan Nginx tidak menggunakan HTTP publik — bertentangan dengan topologi Nginx-as-edge.",
    "apachePort80Both": "Baik Apache maupun Nginx muncul di :80 — rebind Apache ke 127.0.0.1:8080.",
    "apachePort80Ok": "Apache berjalan tetapi tidak hanya memiliki public :80 (topologi OK).",
    "apachePort80Fix": "Instal pembantu rebind ada; nonaktifkan Apache vhosts di 80 atau verifikasi dengan ss -lntp setelah memuat ulang.",
    "fixNow": "Perbaiki sekarang",
    "fixFailed": "Perbaikan gagal",
    "fixDone": "izin dataDir diperkeras (chmod 750)",
    "fixDoneWebUi": "UI web dibuat/diinstal",
    "rootLabel": "Pengguna Super",
    "techDetails": "Detail teknis",
    "missingOwner": "Tidak ada pemilik panel yang ditetapkan (atribusi kuota paket)",
    "notOsProvisioned": "Pengguna OS/rumah belum tersedia",
    "isolationPendingOs": "Sama seperti status proyek: pengguna OS tertunda. Buka Isolasi untuk menyediakan pengguna sistem dan rumah.",
    "ondrejNone": "Tidak ada sumber PHP Launchpad ondrej yang terdeteksi",
    "ondrejFound": "Ditemukan sumber ondrej/php lama yang bertentangan dengan paket.sury.org: {{paths}}",
    "ondrejTitle": "Sumber PHP apt (sisa ondrej)",
    "systemctlActive": "Layanan sedang berjalan",
    "systemctlStatus": "Status layanan: {{status}}",
    "binInPath": "{{bin}} di JALUR",
    "leftoverApache": "Situs default sisa Apache",
    "leftoverVsftpd": "unit vsftpd gagal",
    "leftoverCli": "CLI sisa yang basi",
    "leftoverNginx": "Nginx penampung semuanya hilang",
    "leftoverDovecot": "Dovecot TLS menunjuk pada sertifikat yang hilang",
    "leftoverOther": "Sisa tuan rumah",
    "leftoverApply": "Sisanya berlaku",
    "isolationOwnerDegrades": "Owner_user_id yang hilang mempengaruhi atribusi kuota paket — statusnya menurun, belum siap."
  },
  "redis": {
    "neverExpire": "Tidak pernah kadaluarsa",
    "ttlSeconds": "{{ttl}}s",
    "ttlMinutes": "{{n}} mnt",
    "ttlHours": "{{n}} jam",
    "ttlDays": "{{n}} d",
    "typeString": "Rangkaian",
    "typeHash": "hash",
    "typeList": "Daftar",
    "typeSet": "Mengatur",
    "typeZset": "Kumpulan yang diurutkan",
    "keysLoadFailed": "Gagal memuat kunci",
    "writeFailed": "Penulisan gagal",
    "saved": "Disimpan",
    "deleted": "Dihapus",
    "offline": "Luring",
    "connections": "Koneksi",
    "totalKeys": "Jumlah kunci",
    "writable": "Dapat ditulisi",
    "connected": "Terhubung",
    "notConnected": "Tidak terhubung",
    "keys": "Kunci",
    "selected": "Terpilih",
    "softwareMissing": "Perangkat lunak Redis tidak diinstal",
    "notConnectedTitle": "Tidak terhubung ke Redis",
    "installThenStart": "Instal Redis melalui banner, lalu mulai layanan.",
    "installedNotConnected": "Terpasang namun tidak tersambung — memulai layanan untuk menelusuri kunci.",
    "keysCountSuffix": "· {{n}} kunci",
    "searchPlaceholder": "Kunci pencarian, mis. pengguna:* atau *",
    "searchKeys": "Kunci pencarian",
    "scanHint": "Menggunakan SCAN, bukan KUNCI. Mengembalikan paling banyak kunci {{n}} — hindari * pada database besar.",
    "scanCapped": "Menampilkan {{n}} pertandingan pertama.",
    "rows": "{{n}} baris",
    "content": "Isi",
    "noMatchingKeys": "Tidak ada kunci yang cocok",
    "dbEmpty": "Basis data {{db}} kosong.",
    "noMatchPattern": "Tidak ada kunci yang cocok dengan “{{pattern}}”.",
    "opsResult": "Hasil operasi",
    "addStringKey": "Tambahkan kunci string",
    "writeToDb": "Tulis ke Redis DB {{db}} (langsung — hati-hati)",
    "keyName": "Kunci",
    "keyNameHint": "Gunakan ruang nama titik dua, mis. sesi:pengguna:1",
    "ttlLabel": "TTL (detik)",
    "ttlHint": "Kosong = tidak pernah kadaluwarsa",
    "m1": "1m",
    "m5": "5m",
    "h1": "1 jam",
    "d1": "1d",
    "d7": "7d",
    "customSeconds": "Detik khusus",
    "stringValue": "Nilai string melalui SET",
    "stringContent": "Konten string",
    "deleteKeyTitle": "Hapus kunci ini?",
    "deleteKeyDesc": "Hapus “{{key}}” dari DB {{db}}? Hal ini tidak dapat dibatalkan.",
    "installedOk": "Redis diinstal",
    "startedOk": "Redis dimulai",
    "memory": "Ingatan",
    "addKey": "Tambahkan kunci",
    "dbLabel": "DB {{i}}",
    "keysInDb": "· {{n}} kunci",
    "dbOptionKeys": "DB {{i}} · {{n}} kunci",
    "dbOptionEmpty": "DB {{i}} · kosong",
    "dbRange": "{{n}} basis data (0–{{max}}).",
    "serviceLink": "Ubah jumlah dalam pengaturan layanan",
    "dbsWithData": "DB dengan data (cepat)",
    "keysShort": "{{k}} kunci",
    "keyList": "Daftar kunci",
    "pickKey": "Pilih tombol di sebelah kiri untuk melihat konten.",
    "ttlPrefix": "TTL: {{ttl}}",
    "writeLiveHint": "Menulis Redis langsung; tidak dapat membatalkan dari panel dalam satu klik.",
    "refPath": "Referensi: {{path}}",
    "dbEmptyMark": " · kosong",
    "noRequirepass": "Mode terlindung aktif, tetapi requirepass kosong atau belum dibaca — tidak ada kata sandi.",
    "insecureShort": "Tidak ada kata sandi",
    "setRequirepass": "Setel kata sandi",
    "generateRequirepass": "Hasilkan dan terapkan kata sandi",
    "generateRequirepassTitle": "Buat kata sandi Redis?",
    "generateRequirepassDesc": "Menulis requirepass dan memulai ulang Redis. Kata sandi ditampilkan satu kali. Perubahan host perlu EXECUTE.",
    "generateRequirepassDone": "Kata sandi Redis diterapkan",
    "generatedOnce": "Kata sandi yang dihasilkan (ditampilkan sekali): {{password}}",
    "rdbOnlyLossHint": "AOF mati dan RDB nyala. Mulai ulang atau crash bisa kehilangan tulis terbaru.",
    "dirDataContainer": "/data (wadah)",
    "dirHostDefault": "/var/lib/redis",
    "dirDefaultInstance": "/var/lib/redis/default",
    "dirDataWarn": "/data biasanya merupakan jalur kontainer; panel ini tidak dapat memastikan keberadaannya.",
    "saveOff": "Nonaktifkan snapshot (tidak disarankan)",
    "saveOffWarn": "String penyimpanan kosong mematikan snapshot RDB. Crash dapat kehilangan semua data jika AOF juga nonaktif.",
    "dirMoveWarn": "Mengubah dir tidak memindahkan dump.rdb/AOF. Permulaan berikutnya menggunakan jalur baru apa adanya.",
    "passwordUnset": "Tidak disetel pada layanan",
    "passwordSetHidden": "Tetapkan (tidak ditampilkan)"
  },
  "resources": {
    "created": "Dibuat",
    "updated": "Diperbarui",
    "deleted": "Dihapus",
    "applyDone": "Lamaran selesai",
    "applyIncomplete": "Terapkan tidak lengkap"
  },
  "roles": {
    "admin": "Admin",
    "operator": "Operator",
    "viewer": "Penonton",
    "agent": "Agen"
  },
  "runtime": {
    "probed": "Diselidiki",
    "notProbed": "Tidak diselidiki",
    "probe": "Menguji",
    "read": "Membaca",
    "targetVersion": "Versi sasaran",
    "nodeMissing": "Node.js tidak diinstal",
    "probeResult": "Hasil penyelidikan",
    "readonly": "Hanya baca",
    "installNode": "Instal Node.js",
    "needExecuteAdmin": "Membutuhkan hak perubahan sistem dan admin",
    "nodeMajor": "Versi utama simpul",
    "nodeMajorHint": "LTS sering kali 20 atau 22; selaras dengan runtime proyek",
    "installedNode": "Node Terpasang {{version}}",
    "installPm2": "Instal PM2",
    "installPm2Desc": "Sekali klik npm install -g pm2 (manajer proses). Membutuhkan Node.js terlebih dahulu.",
    "installPm2Btn": "Instal PM2",
    "reinstallPm2": "Instal ulang PM2",
    "installedPm2": "PM2 terpasang",
    "pm2Status": "Status PM2",
    "pm2Ready": "Siap",
    "pm2MissingShort": "Tidak dipasang",
    "pm2NeedNodeFirst": "Instal Node.js terlebih dahulu, lalu PM2.",
    "pm2InstallHint": "Menjalankan npm -g sebagai root dengan hak perubahan sistem;",
    "pm2ReadyHint": "PM2 ada di PATH; proyek dapat menggunakan mode proses PM2.",
    "opsResult": "Hasil operasi",
    "unlimited": "Tak terbatas",
    "zeroUnlimited": "0 = tidak terbatas",
    "m24": "24m",
    "h1": "1 jam",
    "d1": "1d",
    "d7": "7d",
    "phpIniLoadFailed": "Gagal memuat php.ini",
    "loaded": "Sarat",
    "default": "Bawaan",
    "phpMissing": "PHP tidak diinstal",
    "overview": "Ringkasan",
    "fpmSites": "FPM / situs",
    "tools": "Peralatan",
    "about": "Tentang",
    "installPhp": "Instal PHP",
    "versionAlreadyInstalled": "Versi {{version}} sudah ada di host",
    "installedVersionBtn": "Dipasang {{version}}",
    "newerVersionAvailable": "Saat ini {{current}}; yang lebih baru didukung: {{newer}} (pilih untuk menginstal)",
    "switchToNewer": "Pilih {{version}}",
    "installedVersionsHint": "Terdeteksi: {{list}}",
    "phpInstallHint": "Membutuhkan hak perubahan sistem dan admin;",
    "phpVersion": "versi PHP",
    "phpExtHint": "Pilih ekstensi untuk dipasang",
    "phpExtSelect": "Ekstensi PHP",
    "phpExtSelectHint": "Paket diinstal sebagai php{{version}}-…;",
    "phpExtRequired": "Wajib (inti)",
    "phpExtRecommended": "Kumpulan yang direkomendasikan",
    "phpExtSelectAll": "Pilih semua ekstensi",
    "phpExtCoreOnly": "Hanya inti",
    "phpExtSearch": "Ekstensi pencarian (mysql, gd, redis…)",
    "phpExtEmpty": "Tidak ada ekstensi yang cocok",
    "pluginsSelect": "Alat/plugin umum",
    "pluginsSelectHint": "Pilih untuk menginstal dengan runtime (misalnya PM2 untuk Node, Puisi untuk Python)",
    "pluginsSearch": "Alat pencarian (pm2, puisi, pakar…)",
    "pluginsEmpty": "Tidak ada alat yang cocok",
    "pluginsRecommended": "Kumpulan yang direkomendasikan",
    "pluginsSelectAll": "Pilih semua yang tersedia",
    "pluginsNone": "Tidak ada alat pendamping",
    "pluginsInstallNote": "Pilih alat lalu Instal yang dipilih. Penginstalan runtime pertama kali dapat mencakup alat; jika runtime ada, gunakan saja tombol di atas.",
    "installPluginsOnly": "Instal alat yang dipilih ({{version}} sudah ada)",
    "installExtOnly": "Instal ekstensi yang dipilih (ada PHP {{version}})",
    "pluginAlreadyOnHost": "sudah menjadi tuan rumah",
    "installAddonsOnly": "Instal add-on yang dipilih ({{version}} ada)",
    "remoteNewerHint": "Terpasang {{current}} · upstream terbaru {{remote}}{{source}}",
    "installedPhp": "Menginstal PHP {{version}}",
    "nextSteps": "Berikutnya",
    "suggestedFlow": "Aliran yang disarankan",
    "globalPhpIni": "Global php.ini",
    "globalPhpIniDesc": "Satu pengaturan per baris",
    "managePath": "Jalur manajemen",
    "loading": "Memuat",
    "probing": "Menyelidiki…",
    "noBinaryPath": "Tidak ada jalur biner",
    "hostDefaultError": "Default host tidak tersedia",
    "pm2Tick": "{{at}} · proyek {{projects}} · PM2 {{pm2}} · berjalan {{run}}",
    "cannotLoadSettings": "Tidak dapat memuat tabel pengaturan",
    "reloadFailed": "Gagal memuat ulang",
    "sensitive": "Pengaturan sensitif — hati-hati",
    "on": "Pada",
    "off": "Mati",
    "customNumber": "Nomor khusus",
    "customExample": "Kustom, mis. 768M",
    "advancedExtra": "Lanjutan: kunci ekstra dan mentah",
    "advancedExtraDesc": "Petunjuk tidak ada dalam katalog; satu kunci=nilai per baris; mentah ditambahkan ke ekor ini",
    "extraDirectives": "Arahan ekstra",
    "extraDirectivesHint": "Satu kunci=nilai per baris (kunci belum ada di atas)",
    "rawAppend": "Tambahkan mentah ke akhir ini",
    "phpIniSaved": "php.ini disimpan",
    "appliedSystem": "Diterapkan ke sistem",
    "demoVhost": "Alat sistem: demo vhost / pool",
    "demoVhostDesc": "Tingkat lanjut/debug; situs harian menggunakan Proyek → Deploy",
    "domain": "Domain",
    "domainRequired": "Masukkan domain yang valid sebelum menerapkan vhost.",
    "vhostServerName": "Nama_server host virtual",
    "poolName": "Nama kolam",
    "poolNameHint": "ID yang diketik tangan (demo); jalur proyek menggunakan pengguna ysks_*",
    "enableReload": "Aktifkan dan muat ulang layanan",
    "enableReloadHint": "Memerlukan hak perubahan sistem; off = manajemen tulis saja",
    "applyFailed": "Penerapan gagal",
    "phpVhostApplied": "PHP vhost/kumpulan diterapkan",
    "composerTools": "Komposer / WP-CLI / modul",
    "composerToolsDesc": "Pemeriksaan langsung alat PATH dan php -m (hanya baca)",
    "toolsProbed": "Alat diperiksa",
    "notFound": "Tidak ditemukan",
    "available": "Tersedia",
    "moduleCount": "Modul",
    "installNodeV": "Instal Node {{v}}",
    "installPhpV": "Instal PHP {{v}}",
    "installPythonV": "Instal Python {{v}}",
    "installGoV": "Instal Buka {{v}}",
    "installRustV": "Instal Karat {{v}}",
    "pythonMissing": "Python tidak diinstal",
    "goMissing": "Go tidak diinstal",
    "rustMissing": "Karat/kargo tidak dipasang",
    "tuneLoadFailed": "Gagal memuat penyetelan",
    "availableCount": "{{n}} tersedia",
    "notDetected": "Tidak terdeteksi",
    "binaryPath": "Jalur biner",
    "targetMissing": "Versi target belum terpasang",
    "targetMissingHint": "Target {{version}} tidak ada di host ini. Ikat versi terpasang atau pasang pin ini.",
    "target": "Target",
    "tune": "Lagu",
    "loadedShort": "Sarat",
    "host": "Tuan rumah",
    "tabOverviewInstall": "Ringkasan",
    "tabTune": "Penyetelan",
    "probeReadonlyInstall": "Read-only · selidiki lagi setelah instalasi",
    "hostDefault": "Default tuan rumah",
    "panelSupport": "Dukungan panel",
    "ready": "Siap",
    "notDetectedYet": "Belum terdeteksi",
    "install": "Memasang",
    "installHint": "Membutuhkan hak perubahan sistem dan admin; menginstal proyek toolchain ≠ bersifat publik",
    "panelTune": "Penyetelan panel",
    "panelTuneDesc": "Manajemen penulisan; menyuntikkan env saat diterapkan",
    "bindVersion": "Versi pin",
    "onePerRow": "Satu pengaturan per baris",
    "zeroAll": "0 = semua",
    "custom": "Kebiasaan",
    "extraEnv": "Variabel lingkungan tambahan",
    "extraEnvHint": "Satu KEY=nilai per baris",
    "customEnv": "lingkungan khusus",
    "envPreview": "Pratinjau lingkungan",
    "envPreviewDesc": "Hasil penggabungan setelah penyimpanan/pemuatan terakhir",
    "unsupported": "Tidak didukung",
    "tuneSaved": "Penyetelan disimpan",
    "nodeDetectedHint": "Node terdeteksi pada host; instal ulang mengikuti hak istimewa dan dapat menimpa.",
    "nodeProbeAfter": "Setelah instalasi, selidiki ulang untuk mengonfirmasi PATH dan versi.",
    "installNodeVBtn": "Instal Node {{version}}",
    "installPhpVBtn": "Instal PHP {{version}}",
    "phpIniSteps1": "Rancang nilai global pada tab php.ini dan simpan",
    "phpIniSteps2": "Opsional: Terapkan ke sistem (tulis /etc/php/…/conf.d, perlu root)",
    "phpIniSteps3": "Penyebaran proyek menyuntikkan ini sebagai php_admin_* pada kumpulan FPM",
    "phpIniSteps4": "Proyek dapat mengganti kunci individual (Proyek → Deploy)",
    "phpIniNote": "Perubahan disimpan ke panel dataDir terlebih dahulu; Terapkan ke salinan sistem ke /etc/php dan muat ulang FPM. Kumpulan proyek menyuntikkan php_admin_value saat diterapkan.",
    "phpIniLoading": "Memuat formulir php.ini…",
    "phpIniEmpty": "Katalog kosong — muat ulang atau pastikan API aktif.",
    "reloadForm": "Muat ulang formulir",
    "savePhpIni": "Simpan php.ini",
    "prodUseProjects": "Produksi harus menggunakan Proyek",
    "prodPathDesc": ": membuat proyek PHP → menyebarkan/menerapkan FPM (kumpulan = proyek pengguna Linux + rumah terisolasi)",
    "systemDemo": "demo/alat tingkat sistem",
    "demoNotBind": "(nama kumpulan yang diketik tangan) dan tidak mengikat isolasi proyek secara otomatis. Global php.ini ada di tab php.ini.",
    "applyOkWritten": "Terapkan sukses = file ditulis. Lebih suka penerapan proyek jadi Pengguna = pengguna proyek Linux.",
    "applyPhpVhost": "Terapkan PHP vhost / pool",
    "applyPhpVhostTitle": "Perlu konfirmasi — menulis file pool/vhost",
    "applyPhpVhostDesc": "Akan menulis kumpulan {{pool}} dan {{domain}} vhost. Muat ulang layanan: {{reload}}.",
    "reprobeTools": "Alat pemeriksaan ulang",
    "pressReprobe": "Tekan Alat pemeriksaan ulang untuk memuat",
    "installNodeLabel": "Instal Node {{v}}",
    "installPhpLabel": "Instal PHP {{v}}",
    "installPythonLabel": "Instal Python {{v}}",
    "installGoLabel": "Instal Buka {{v}}",
    "installRustLabel": "Instal Karat {{v}}",
    "readShort": "Membaca",
    "pressReprobeHost": "Tekan Probe ulang untuk memuat matriks versi host",
    "installScriptNote": "Menulis skrip instalasi; hanya berjalan dengan hak istimewa. Penyetelan ada di tab Penyetelan; memindahkan proyek untuk perubahan proses.",
    "envNote": "Node: max-old-space-size digabungkan menjadi NODE_OPTIONS. Go/Python/Rust menggunakan env vars resmi.",
    "saveTune": "Simpan penyetelan",
    "pressReprobeLoad": "Tekan Alat pemeriksaan ulang untuk memuat",
    "installJavaLabel": "Instal/perbarui OpenJDK",
    "installKotlinLabel": "Instal/perbarui Kotlin",
    "installBunLabel": "Instal / perbarui Bun",
    "javaMissing": "Java (OpenJDK) tidak terdeteksi",
    "kotlinMissing": "Kompiler Kotlin tidak terdeteksi",
    "bunMissing": "Bun tidak terdeteksi",
    "phpIniCatalog": {
      "groups": {
        "resource": {
          "title": "Batasan sumber daya",
          "description": "Memori, waktu eksekusi, dan batas input"
        },
        "upload": {
          "title": "Unggah & POSTING",
          "description": "Unggah file dan ukuran isi POST"
        },
        "session": {
          "title": "Sidang",
          "description": "Penyimpanan sesi dan cookie"
        },
        "error": {
          "title": "Kesalahan & pencatatan",
          "description": "Menampilkan kesalahan, pencatatan log, dan tingkat pelaporan"
        },
        "opcache": {
          "title": "cache op",
          "description": "Cache kode byte"
        },
        "security": {
          "title": "Keamanan & jalur",
          "description": "File jarak jauh, eksposur, dan fungsi yang dinonaktifkan"
        },
        "locale": {
          "title": "Zona waktu & rangkaian karakter"
        },
        "misc": {
          "title": "Pengaturan umum lainnya"
        }
      },
      "fields": {
        "memory_limit": {
          "label": "Batas memori",
          "hint": "misalnya 128M, 256M, 512M, -1 (tidak terbatas)"
        },
        "max_execution_time": {
          "label": "Waktu eksekusi maksimal",
          "hint": "Detik; 0 = tidak terbatas (CLI)"
        },
        "max_input_time": {
          "label": "Waktu masukan maksimal",
          "hint": "Detik; waktu maksimal untuk mengurai permintaan"
        },
        "max_input_vars": {
          "label": "Variabel masukan maksimal",
          "hint": "Batas untuk variabel $_GET / $_POST / $_COOKIE"
        },
        "max_input_nesting_level": {
          "label": "Tingkat bersarang masukan maksimal"
        },
        "file_uploads": {
          "label": "Izinkan pengunggahan file"
        },
        "upload_max_filesize": {
          "label": "Ukuran file unggahan maksimal"
        },
        "post_max_size": {
          "label": "Ukuran POSTING maksimal",
          "hint": "Harus berukuran ≥ maks ukuran file unggahan"
        },
        "max_file_uploads": {
          "label": "File maksimal per permintaan"
        },
        "session_save_handler": {
          "label": "Pengendali penyimpanan sesi"
        },
        "session_gc_maxlifetime": {
          "label": "Seumur hidup sesi (detik)",
          "hint": "Detik"
        },
        "session_cookie_httponly": {
          "label": "Hanya Http Cookie"
        },
        "session_cookie_secure": {
          "label": "Cookie Aman (hanya HTTPS)",
          "hint": "Direkomendasikan untuk situs HTTPS"
        },
        "session_use_strict_mode": {
          "label": "Mode sesi ketat"
        },
        "display_errors": {
          "label": "Kesalahan tampilan (di halaman)",
          "hint": "Nonaktifkan dalam produksi"
        },
        "display_startup_errors": {
          "label": "Tampilkan kesalahan startup"
        },
        "log_errors": {
          "label": "Kesalahan pencatatan"
        },
        "error_reporting": {
          "label": "Tingkat pelaporan kesalahan",
          "hint": "Atau bilangan bulat seperti 32767"
        },
        "error_log": {
          "label": "Jalur log kesalahan",
          "hint": "Kosong = default sistem; jalur absolut diperbolehkan"
        },
        "opcache_enable": {
          "label": "Aktifkan OPcache"
        },
        "opcache_enable_cli": {
          "label": "Aktifkan OPcache untuk CLI"
        },
        "opcache_memory_consumption": {
          "label": "Memori OPcache (MB)",
          "hint": "Satuan: MB"
        },
        "opcache_interned_strings_buffer": {
          "label": "Buffer string yang diinternir (MB)"
        },
        "opcache_max_accelerated_files": {
          "label": "File yang dipercepat maksimal"
        },
        "opcache_validate_timestamps": {
          "label": "Validasi stempel waktu",
          "hint": "Dalam produksi Anda dapat menonaktifkan dan memuat ulang secara manual"
        },
        "opcache_revalidate_freq": {
          "label": "Validasi ulang frekuensi (detik)"
        },
        "allow_url_fopen": {
          "label": "Izinkan URL dibuka"
        },
        "allow_url_include": {
          "label": "Izinkan penyertaan URL"
        },
        "expose_php": {
          "label": "Buka header versi PHP"
        },
        "open_basedir": {
          "label": "pembatasan jalur open_basedir",
          "hint": "Kosong = tidak ada batas; jalur terpisah dengan:"
        },
        "disable_functions": {
          "label": "Fungsi yang dinonaktifkan",
          "hint": "Dipisahkan koma; terlalu ketat dapat merusak paket"
        },
        "date_timezone": {
          "label": "Zona waktu"
        },
        "default_charset": {
          "label": "Rangkaian karakter bawaan"
        },
        "short_open_tag": {
          "label": "Izinkan tag terbuka pendek (<?)"
        },
        "realpath_cache_size": {
          "label": "Ukuran cache jalur nyata"
        },
        "realpath_cache_ttl": {
          "label": "TTL cache jalur nyata (detik)"
        },
        "cgi_fix_redirect": {
          "label": "Pengalihan jalur perbaikan CGI"
        }
      },
      "options": {
        "sessionFiles": "File",
        "sessionRedis": "ulang",
        "sessionMemcached": "Memcache",
        "errorReportingProd": "Produksi (E_ALL dikurangi usang/ketat)",
        "errorReportingAll": "Semuanya (E_ALL)",
        "errorReportingQuiet": "Lebih tenang (tidak ada PEMBERITAHUAN/DIHAPUSKAN)",
        "errorReportingMinimal": "Kesalahan / peringatan / parsing saja",
        "errorReportingOff": "Mati (0)",
        "openBasedirNone": "Tidak ada batasan (kosong)",
        "openBasedirVarWww": "/var/www",
        "openBasedirHome": "/home",
        "openBasedirWwwTmp": "/var/www dan /tmp",
        "errorLogDefault": "Default sistem (kosong)",
        "errorLogPhp": "/var/log/php/error.log",
        "errorLogFpm": "Jalur log FPM",
        "errorLogSyslog": "syslog"
      },
      "disableFn": {
        "groups": {
          "process": "Eksekusi proses",
          "dynamic": "Pemuatan dinamis",
          "info": "Keterbukaan informasi",
          "filesystem": "Sistem file",
          "network": "Jaringan / lainnya"
        },
        "extraHint": "Tidak ada dalam katalog (ada host)",
        "customPlaceholder": "Nama fungsi lainnya…",
        "searchPlaceholder": "Fungsi pencarian…",
        "emptyText": "Tidak ada kecocokan"
      }
    },
    "pluginsAvailableTitle": "Tersedia untuk dipasang",
    "pluginsInstalledTitle": "Diinstal di host",
    "pluginsInstalledHint": "Terdeteksi di PATH; dikecualikan dari pilihan pemasangan. Menghapus instalasi adalah upaya terbaik.",
    "pluginsAllInstalled": "Semua alat katalog sudah ada di host ini.",
    "pluginStatusInstalled": "Dipasang",
    "pluginUninstall": "Copot pemasangan",
    "pluginUninstallConfirmTitle": "Copot pemasangan alat?",
    "pluginUninstallConfirm": "Hapus \"{{name}}\" dari host ini (melalui npm/apt/pip sebagaimana berlaku). Hentikan layanan yang bergantung padanya terlebih dahulu.",
    "pluginUninstalled": "Dicopot pemasangannya {{name}}",
    "pluginUninstallFailed": "Gagal mencopot pemasangan {{name}}",
    "pluginUninstallBlocked": "Panel tidak dapat di-uninstall (membutuhkan root + EXECUTE)",
    "phpExtAlreadyOnHost": "Ekstensi terpasang",
    "pluginsInstallSelected": "Instal yang dipilih ({{n}})",
    "pluginInstallOk": "Terpasang {{n}} alat",
    "pluginInstallFailed": "Pemasangan alat gagal",
    "phpExtUninstallHint": "Copot pemasangan ekstensi opsional (apt delete; jangan pernah FPM/CLI)",
    "phpExtUninstallConfirmTitle": "Copot pemasangan ekstensi PHP?",
    "phpExtUninstallConfirm": "Akan mungkin menghapus “{{pkg}}” ({{name}}). FPM/CLI Inti tidak pernah dihapus.",
    "phpExtOpsTitle": "Hasil operasi ekstensi",
    "pluginsOpsTitle": "Hasil operasi alat",
    "pluginBatchUninstall": "Copot pemasangan yang dipilih ({{n}})",
    "pluginBatchUninstallConfirm": "Copot pemasangan {{n}} alat yang dipilih?",
    "pluginBatchUninstalled": "Alat {{n}} yang telah dicopot pemasangannya",
    "pluginBatchLabel": "alat yang dipilih",
    "addonsInstallAbove": "Gunakan “Instal yang dipilih…” di atas untuk alat/ekstensi. Tombol ini hanya menginstal/mengonfirmasi versi runtime.",
    "phpExtInstallSelected": "Instal ekstensi yang dipilih ({{n}})",
    "phpExtInstallNote": "Pilih ekstensi lalu Instal yang dipilih. PHP pertama kali menggunakan Instal PHP di bawah ini (core+ext); ketika dipasang hanya tombol ekstensi yang ditampilkan.",
    "phpExtInstallNoteInstalled": "Pilih ekstensi lalu Instal yang dipilih. Versi ini sudah ada di host — tidak perlu menginstal ulang runtime.",
    "phpExtInstallNoteFirst": "PHP {{version}} tidak diinstal: pilih ekstensi lalu gunakan Instal PHP {{version}} di bawah (satu tombol instal, inti+ekstensi).",
    "installPhpWithExt": "Instal PHP {{version}} (dengan ekstensi yang dipilih)",
    "installLogTitle": "Instal log (langsung)",
    "installLogStreaming": "Mengalir…",
    "installLogDone": "Selesai",
    "installLogWaiting": "Menunggu keluaran server…",
    "activeDefault": "bawaan",
    "switchDefaultBtn": "Setel default host ke {{version}}",
    "switchDefaultHint": "Versi ini diinstal tetapi bukan versi default yang aktif",
    "installedNotActive": "{{version}} diinstal (bukan default)",
    "multiVersionHint": "Go/Rust simpan beberapa versi: Instal yang hilang, lalu Ganti default untuk PATH",
    "tabProcesses": "Proses",
    "pm2": {
      "title": "armada PM2",
      "desc": "Tampilan hanya baca dari pm2 jlist (pengguna panel PM2_HOME). SSE langsung diperbarui setiap 2 detik.",
      "glossary": "PM2 = manajer proses; SSE = streaming langsung.",
      "live": "Hidup",
      "installed": "PM2 terpasang",
      "version": "versi pm2",
      "path": "jalur pm2",
      "counts": "Proses",
      "countsValue": "{{n}} total · {{run}} online · {{stop}} terhenti · {{err}} error",
      "updatedAt": "Penyegaran terakhir",
      "notInstalled": "PM2 tidak ada di PATH.",
      "installHint": "Instal plugin pendamping di Ikhtisar",
      "tableTitle": "Daftar proses",
      "yskOnly": "Hanya aplikasi YSK (ysk-*)",
      "filterPh": "Filter nama / skrip / pid…",
      "emptyTitle": "PM2 tidak tersedia",
      "emptyDesc": "Instal plugin pm2 untuk Node, lalu refresh.",
      "noApps": "Tidak ada proses",
      "noAppsDesc": "Tidak ada aplikasi PM2 untuk pengguna panel",
      "streamLog": "Log centang langsung",
      "streamLogDesc": "Satu baris per centang SSE (bukan proses stdout).",
      "col": {
        "name": "Nama",
        "status": "Status",
        "mem": "Ingatan",
        "restarts": "Mulai ulang",
        "uptime": "Waktu aktif",
        "mode": "Mode",
        "script": "Naskah",
        "interpreter": "Penerjemah",
        "user": "Pengguna",
        "unit": "Satuan",
        "runtime": "Waktu proses",
        "pid": "PID"
      },
      "projectsTitle": "Proses proyek YSK",
      "projectsDesc": "unit systemd untuk proyek panel (jalur penerapan default — bukan PM2).",
      "projectsCount": "proyek YSK",
      "noProjects": "Tidak ada proyek",
      "noProjectsDesc": "Tidak ada proyek node/bun di panel, atau pengguna OS tidak tersedia.",
      "pm2OnlyDesc": "Hanya aplikasi yang dimulai dengan PM2 di bawah panel pengguna. penerapan systemd muncul di atas.",
      "startupTitle": "Mulai saat boot",
      "startupDesc": "Daftarkan PM2 sehingga proses kembali setelah reboot.",
      "systemdActionsHint": "tindakan systemd memerlukan root dan YSK_EXECUTE.",
      "startupOk": "Startup terdaftar. {{notes}}",
      "startupFail": "Tidak dapat mendaftarkan permulaan. {{notes}}",
      "actionOk": "{{action}} {{name}} — {{notes}}",
      "actionFail": "Tidak dapat {{action}} {{name}}. {{notes}}",
      "startupReady": "Siap",
      "startupReadyYes": "Ya",
      "startupReadyNo": "TIDAK",
      "startupUnit": "Satuan",
      "startupDump": "Membuang",
      "startupInstall": "Instal permulaan",
      "startupSave": "Simpan daftar proses",
      "actRestart": "Mulai ulang",
      "actStop": "Berhenti",
      "actReload": "Muat ulang",
      "pm2ActionsHint": "Tindakan PM2 hanya berlaku untuk daftar proses pengguna panel.",
      "noteUnparsed": "Daftar PM2 tidak dapat diuraikan (keluaran kosong atau tidak terduga).",
      "notePanelUserOnly": "Daftar PM2 hanya untuk pengguna proses panel.",
      "noteProjectUnits": "{{n}} Unit proyek YSK terdaftar"
    },
    "recordedInstalled": "Direkam {{v}}",
    "remoteSourceSuffix": "({{source}})",
    "nodePathYskMissingTitle": "Jalur Node Terkelola belum siap",
    "nodePathYskMissing": "Node yang dikelola YSK untuk versi {{version}} belum siap. Periksa ulang atau instal ulang.",
    "managedPathMissingTitle": "Jalur {{name}} yang dikelola belum siap",
    "managedPathMissing": "{{name}} yang dikelola YSK untuk versi {{version}} belum siap. Periksa ulang atau instal ulang.",
    "nodePathUnsafeTitle": "Jalur node tidak aman",
    "nodePathUnsafe": "Jalur {{path}} berada di luar pohon yang dikelola; penerapan proyek mungkin gagal.",
    "recordedButProbeEmpty": "Panel mencatat pemasangan {{v}}, tetapi pemeriksaan host tidak menemukan biner. Tidak diinstal — selidiki ulang atau instal ulang.",
    "installedLabel": "Dipasang",
    "installedHint": "Hasil pemeriksaan host — bukan rekaman bidang kendali",
    "targetHint": "Versi yang akan dipasang atau dipasangi halaman ini",
    "panelDefaultHint": "Proyek baru lebih memilih panel default {{version}} (host CLI mungkin berbeda).",
    "rebuildFromHost": "Bangun kembali catatan dari host",
    "rebuiltFromHost": "Catatan disegarkan dari pemeriksaan host",
    "tabTuning": "Penyetelan",
    "versionPlaceholder": "Terbaru,",
    "pluginsBundleWithRuntime": "Alat 「Waktu proses instalasi」 Instal （Instal）。",
    "tabSoftware": "Perangkat lunak",
    "overviewSoftwareHint": "Instal versi, setel default host, dan hapus instalasi dari",
    "versionReadyTitle": "{{name}} {{version}} siap",
    "versionReadyHint": "Anda dapat mengatur host default atau menghapus instalannya dari tab ini.",
    "softwareVersionTitle": "Versi {{version}}",
    "setHostDefault": "Tetapkan sebagai default host",
    "alreadyHostDefault": "{{version}} adalah default tuan rumah",
    "setHostDefaultConfirmTitle": "Setel default host ke {{version}}?",
    "setHostDefaultConfirm": "CLI sistem (node/go/…) akan menunjuk ke {{version}}. Proyek yang menyematkan versi tidak berubah.",
    "hostDefaultUnsupported": "Runtime ini tidak mendukung peralihan default host di panel. Gunakan pin pemasangan atau pin tingkat proyek.",
    "versionInventory": "Inventaris versi",
    "versionInventoryDesc": "Semua versi yang didukung panel. Pilih baris untuk diinstal atau ditetapkan sebagai default.",
    "selectToInstall": "Memilih",
    "advancedFeatureUninstall": "Lanjutan: hapus seluruh tumpukan {{name}}…",
    "advancedFeatureUninstallHint": "Menghapus semua versi {{name}} yang dikelola oleh panel (dan pendamping seperti PM2 untuk Node), dengan pratinjau dampak dan konfirmasi ganda. Lebih suka menghapus satu versi di atas jika memungkinkan.",
    "probeReadonly": "Pemeriksaan host hanya-baca",
    "uninstallVersion": "Copot pemasangan {{version}}",
    "uninstallVersionTitle": "Copot pemasangan {{version}}?",
    "uninstallVersionConfirm": "Hapus {{name}} {{version}} yang dikelola dari host ini (jalur instalasi YSK atau rantai alat Rustup). Jika ini adalah default host, symlink CLI untuk runtime tersebut akan dihapus. Proyek yang menyematkan versi lain tidak berubah.",
    "uninstallVersionDone": "Dicopot pemasangannya {{version}}",
    "uninstallVersionUnsupported": "Pencopotan pemasangan per versi belum tersedia untuk runtime ini.",
    "setPanelDefault": "Tetapkan sebagai panel default",
    "alreadyPanelDefault": "Default panel · {{version}}",
    "panelDefaultSaved": "Default panel disetel ke {{version}}",
    "panelDefaultExplain": "Panel default = versi pilihan untuk situs/proyek baru. Host default = sistem CLI (php/python/node…).",
    "stackReadyTitle": "{{name}} tumpukan siap",
    "softwareIntro": "Kelola versi yang terinstal, host CLI default, dan versi pilihan untuk proyek baru.",
    "panelDefaultLabel": "Standar panel",
    "panelDefaultNone": "Tidak disetel",
    "versionsTitle": "Versi",
    "versionsDesc": "Pilih versi. Instal, setel host CLI, atau setel default panel dari baris.",
    "roleHost": "Tuan rumah",
    "rolePanel": "Panel",
    "rowUninstall": "Hapus versi ini",
    "moreActions": "Lebih banyak tindakan",
    "selectedVersion": "Dipilih · {{version}}",
    "selectedInstalledDesc": "Alat pendamping di bawah. Hapus versi ini hanya jika Anda tidak lagi membutuhkannya.",
    "selectedMissingDesc": "Instal versi ini di host. Alat pendamping dapat ditambahkan setelah instalasi.",
    "path": "Jalur",
    "fullVersion": "Versi lengkap",
    "useListForDefaults": "Untuk mengubah default host atau panel, atau menghapus versi ini, gunakan daftar di atas.",
    "alreadyHostDefaultShort": "Default tuan rumah",
    "installRecordedCta": "Instal direkam {{v}}",
    "needsInstall": "perlu dipasang",
    "needsInstallHint": "Tidak ada di host ini. Pasang dulu, atau pilih versi yang sudah terpasang.",
    "unitBytes": "byte",
    "headerSizeKb": "{{n}} KB",
    "phpIniChipEmpty": "Belum dimuat — buka tab php.ini",
    "phpFpmService": "PHP-FPM",
    "phpFpmServiceDesc": "Mulai, hentikan, muat ulang, atau mulai ulang unit PHP-FPM",
    "rustupDefaultMissingTitle": "Tidak ada toolchain default rustup",
    "rustupDefaultMissing": "rustup tidak punya default. Setel stable di tab Perangkat lunak.",
    "rustupDefaultMissingShort": "Tidak ada rantai alat default",
    "rustupSetDefaultHint": "Tetapkan rantai alat default",
    "uninstalledCountHint": "{{n}} versi tidak ada di host ini"
  },
  "search": {
    "placeholder": "Telusuri halaman & sumber daya…",
    "aria": "Pencarian global",
    "results": "Hasil pencarian",
    "loading": "Mencari…",
    "noResults": "Tidak ada kecocokan",
    "kinds": {
      "page": "Halaman",
      "project": "Proyek",
      "email": "E-mail",
      "mailbox": "Kotak surat",
      "ssl": "SSL",
      "dns": "DNS",
      "nginx": "Nginx",
      "share": "Bagikan",
      "ftp": "FTP",
      "mysql": "MySQL",
      "postgres": "PostgreSQL",
      "redis": "ulang",
      "cron": "Kron",
      "user": "Pengguna",
      "other": "Lainnya"
    },
    "alias": {
      "ssl": "sertifikat sertifikat sertifikat",
      "projects": "lokasi proyek"
    }
  },
  "security": {
    "title": "Keamanan & Persetujuan",
    "allowlist": "Daftar Alat yang Diizinkan (default hanya baca; risiko tinggi memerlukan persetujuan manusia)",
    "llmUntrusted": "Output LLM selalu tidak dapat dipercaya dan tidak boleh dijalankan secara langsung",
    "pending": "Persetujuan yang tertunda",
    "runSysInfo": "Jalankan sys.info",
    "none": "Tidak ada persetujuan yang tertunda",
    "pillPending": "{{count}} tertunda",
    "pillReady": "Siap",
    "pill2faOff": "2FA mati",
    "stat2fa": "2FA",
    "statApi": "API",
    "statApiSessions": "sesi API",
    "revokeOtherTitle": "Keluar {{n}} sesi lainnya",
    "statSsh": "SSH",
    "statSshValue": "{{keys}} kunci · {{auth}} resmi",
    "statSshHint": "Identitas keluar/kunci login resmi",
    "statPending": "Tertunda",
    "on": "Pada",
    "off": "Mati",
    "output": "Keluaran",
    "tabAccount": "Keamanan saya",
    "tabApiKeys": "Kunci API",
    "tabSsh": "SSH",
    "tabApprovals": "Persetujuan",
    "tabAllowlist": "Alat agen",
    "apiTokenOnce": "Token API (ditampilkan satu kali):",
    "copiedToken": "Token disalin",
    "totpTitle": "Dua faktor (TOTP)",
    "totpStatus": "Status:",
    "totpEnabled": "Diaktifkan",
    "totpEnrolledUnconfirmed": "Sedang berlangsung — pindai & konfirmasi",
    "totpNotSet": "Tidak disetel",
    "totpLead": "Login memerlukan kode aplikasi 6 digit.",
    "totpWhy1": "Kata sandi yang dicuri saja tidak dapat masuk tanpa kode aplikasi",
    "totpWhy2": "Tindakan sensitif dapat memicu kembali TOTP (step-up)",
    "totpWhy3": "Bekerja dengan Google Authenticator, Authy, NordPass, 1Password, dan banyak lagi",
    "totpAppsHint": "Aplikasi yang disarankan: Google Authenticator, Authy, Microsoft Authenticator, NordPass, 1Password",
    "totpStepsLabel": "Langkah-langkah pengaturan",
    "totpStepReauth": "Verifikasi kata sandi",
    "totpStepScan": "Pindai QR / masukkan kunci",
    "totpStepConfirm": "Konfirmasikan kode 6 digit",
    "totpStepBackup": "Simpan kode pemulihan",
    "totpScanTitle": "Pindai kode QR",
    "totpScanHint": "Buka aplikasi autentikator Anda → Tambahkan akun → Pindai QR ini.",
    "totpManualTitle": "Atau masukkan kunci secara manual",
    "totpManualHint": "Jika Anda tidak dapat memindai, pilih entri manual di aplikasi dan tempelkan rahasia Base32 ini.",
    "totpShowOtpauth": "Tampilkan URL otpauth:// (lanjutan)",
    "totpQrAlt": "Kode QR pengaturan TOTP",
    "totpQrFailed": "Tidak dapat merender QR — gunakan kunci rahasia di bawah",
    "totpSecretCopied": "Rahasia disalin",
    "hideSecret": "Sembunyikan rahasia",
    "showSecret": "Tunjukkan rahasia",
    "totpEnabledDesc": "Diaktifkan.",
    "totpRecoveryRemaining": "{{n}} kode pemulihan tersisa",
    "totpResetSummary": "Setel ulang atau matikan 2FA…",
    "totpResetHint": "Reset mengeluarkan QR/rahasia baru (entri aplikasi lama berhenti berfungsi)",
    "totpDisableCodeHint": "Kode aplikasi 6 digit atau kode pemulihan",
    "disable2fa": "Matikan 2FA",
    "totpDisabledOk": "Otentikasi dua faktor dinonaktifkan",
    "reauthPassword": "Masukkan kembali kata sandi",
    "reauthPasswordHint": "Mulai/reset 2FA memerlukan kata sandi lagi (perlindungan sesi dicuri)",
    "reauthPasswordRequired": "Masukkan kata sandi login Anda terlebih dahulu",
    "needCurrentPassword": "Masukkan kata sandi saat ini terlebih dahulu",
    "passwordMin8": "Kata sandi baru minimal harus 8 karakter",
    "totpSecretGenerated": "Rahasia sudah siap — pindai QR atau salin kuncinya, lalu masukkan kode 6 digit aplikasi",
    "reset2fa": "Setel ulang 2FA",
    "start2fa": "Siapkan 2FA",
    "secretLabel": "Rahasia:",
    "confirmCode": "Kode 6 digit dari aplikasi",
    "confirmCodeHint": "Setelah memindai, masukkan 6 digit yang saat ini ditampilkan di pengautentikasi Anda.",
    "confirmCodeInvalid": "Masukkan kode verifikasi 6 digit",
    "totpEnabledSaveCodes": "2FA diaktifkan — simpan kode pemulihan di bawah ini sekarang (ditampilkan satu kali)",
    "confirmEnable": "Konfirmasikan & aktifkan",
    "recoveryCodesHint": "Kode pemulihan hanya ditampilkan satu kali",
    "copiedRecoveryCodes": "Kode pemulihan disalin",
    "downloadRecovery": "Unduh .txt",
    "recoveryDownloaded": "File kode pemulihan diunduh",
    "copyAll": "Salin semua",
    "savedClose": "Saya sudah menyimpannya — selesai",
    "sessionsTitle": "Sesi",
    "sessionsDesc": "",
    "revokeOtherSessions": "Keluar dari perangkat lain",
    "revokedOtherSessions": "Keluar {{count}} sesi lainnya",
    "noSessions": "Tidak ada sesi aktif",
    "currentSession": "Perangkat ini",
    "revoke": "Keluar",
    "passkeyTitle": "Kunci Sandi / WebAuthn",
    "passkeyDesc": "",
    "passkeyRegistered": "Kunci sandi terdaftar",
    "webauthnFailed": "WebAuthn gagal",
    "webauthnUnsupported": "Halaman ini tidak memiliki API WebAuthn. Di Brave/Chrome/Firefox hindari mode terbatas; gunakan pengelola kata sandi jika diperlukan, dan buka panel pada domain melalui HTTPS.",
    "webauthnInsecureContext": "Halaman ini bukan konteks aman ({{origin}}). Browser memerlukan HTTPS atau localhost untuk Kunci Sandi — tidak terkait dengan Brave/NordPass. Buka https://domain-Anda sebagai gantinya.",
    "webauthnIpHost": "Anda membuka panel melalui IP ({{origin}}). WebAuthn melarang IP sebagai ID RP, jadi Brave/NordPass akan gagal. Ikat domain + HTTPS (mis. https://panel.example.com) dan coba lagi.",
    "webauthnEnvOk": "Kunci sandi sudah siap ({{origin}})",
    "webauthnEnvCurrent": "Halaman saat ini: {{origin}}",
    "webauthnCancelled": "Dibatalkan atau batas waktunya habis. Coba lagi.",
    "webauthnUnavailableHint": "Kunci sandi memerlukan domain HTTPS +.",
    "registerPasskey": "Daftarkan kunci sandi",
    "noPasskey": "Tidak ada kunci sandi",
    "passkeyVerifyOk": "Kunci sandi terverifikasi (peningkatan selesai)",
    "verifyFailed": "Verifikasi gagal",
    "verifyWithPasskey": "Verifikasi dengan kunci sandi (peningkatan)",
    "passkeyHint": "Untuk peningkatan risiko tinggi; membutuhkan domain HTTPS +.",
    "devicesTitle": "Perangkat / cadangan",
    "devicesDesc": "",
    "viewTrustedDevices": "Lihat perangkat tepercaya",
    "trustedDevicesCount": "Perangkat tepercaya: {{count}}",
    "revokeAllDevices": "Cabut semua perangkat",
    "revokedAllDevices": "Semua perangkat tepercaya dicabut",
    "export2faBackup": "Ekspor cadangan terenkripsi 2FA",
    "fail2banSnippetMsg": "Cuplikan fail2ban: {{written}} — {{notes}}",
    "generatefail2ban": "Hasilkan cuplikan fail2ban",
    "generateFail2ban": "Buat cuplikan fail2ban",
    "adminPolicyTitle": "Kebijakan Admin 2FA",
    "adminPolicyDesc": "",
    "requireAdmin2fa": "Membutuhkan admin 2FA",
    "strictAdmin2fa": "Ketat: blokir login tanpa 2FA",
    "confirmTotpPolicy": "Konfirmasi TOTP (saat mengubah kebijakan)",
    "confirmTotpPolicyHint": "Kebijakan yang memungkinkan perlu ditingkatkan",
    "totp6digitPlaceholder": "kode 6 digit",
    "policyUpdated": "Kebijakan keamanan diperbarui",
    "savePolicy": "Simpan kebijakan",
    "recentProbe": "Penyelidikan terbaru",
    "apiKeysTitle": "Kunci akses API",
    "apiKeysDesc": "",
    "createKey": "+ Buat kunci",
    "colName": "Nama",
    "colPrefix": "Awalan",
    "colCreated": "Dibuat",
    "apiKeysEmpty": "Belum ada kunci API",
    "apiKeysEmptyHint": "Buat dari toolbar; lalu panggil API dengan token Pembawa",
    "approve": "Menyetujui",
    "allowlistTitle": "Alat agen ({{count}})",
    "allowlistEmpty": "Tidak ada alat di katalog",
    "totpStatusLoadFailed": "Tidak dapat memuat status 2FA",
    "createApiKeyTitle": "Buat kunci API",
    "createApiKeyDesc": "Token lengkap hanya ditampilkan sekali setelah dibuat",
    "createKeyBtn": "Buat kunci",
    "apiKeyNameHint": "Mudah dikenali, mis. CI / skrip cadangan",
    "apiKeyScope": "Cakupan",
    "apiKeyScopeHint": "read = read-only (tidak ada mutasi penuh)",
    "scopeFull": "penuh (API lengkap)",
    "scopeRead": "baca (hanya baca)",
    "apiKey2faHint": "Jika 2FA aktif, pembuatan kunci memerlukan kode verifikasi (peningkatan).",
    "apiKeyCreated": "Kunci API dibuat",
    "export2faBackupTitle": "Ekspor cadangan 2FA",
    "createApiKeyStepUp": "Buat kunci API · peningkatan",
    "enterTotpCode": "Masukkan kode TOTP saat ini",
    "export": "Ekspor",
    "backupCopied": "Cadangan terenkripsi disalin ke clipboard (simpan offline)",
    "digit6Placeholder": "kode 6 digit",
    "ssh": {
      "workspaceTitle": "Ruang kerja SSH",
      "workspaceDesc": "Pilih pekerjaan terlebih dahulu",
      "subOutbound": "ID keluar",
      "subOutboundHint": "Kunci pribadi untuk panel/proyek keluar",
      "subLogin": "autentikasi masuk",
      "subLoginHint": "Siapa yang dapat memasukkan SFTP/SSH",
      "sub2fa": "Masuk 2FA",
      "sub2faHint": "SSH TOTP (≠ panel 2FA)",
      "subSshd": "Sistem sshd",
      "subSshdHint": "Pengaturan SFTP pengguna proyek",
      "jobOutboundTitle": "Hubungkan keluar",
      "jobOutboundDesc": "Buat kunci identitas keluar · panel rekan/proyek git",
      "jobLoginTitle": "Izinkan login masuk",
      "jobLoginDesc": "Daftarkan kunci publik ke rumah proyek · Authorized_keys",
      "job2faTitle": "Login SSH membutuhkan 2FA",
      "job2faDesc": "TOTP pengguna Linux (terpisah dari panel 2FA)",
      "jobSshdTitle": "Aktifkan SFTP sistem",
      "jobSshdDesc": "Instal sshd Cuplikan pencocokan (pengguna proyek)",
      "purposePanel": "Panel ke host lain",
      "purposeUser": "Pengguna proyek keluar",
      "purposeUnbound": "Tujuan tidak ditetapkan",
      "purposePanelHint": "Rekan cluster, scp cadangan, probe jarak jauh",
      "purposeUserHint": "Pengguna proyek Linux git / scp / skrip",
      "purposeDefaultHint": "Ikat nanti",
      "statusStored": "Tersimpan",
      "statusInstalled": "Di disk",
      "statusVerified": "Terverifikasi",
      "statusMissing": "Hilang di disk",
      "statusRetired": "Pensiun",
      "statusError": "Kesalahan",
      "actionInstall": "Menulis ke disk",
      "actionTest": "Uji koneksi",
      "actionCopyPub": "Salin kunci publik",
      "pipelineStored": "Tersimpan",
      "pipelineInstalled": "Di disk",
      "pipelineVerified": "Terverifikasi",
      "progressAria": "Kemajuan",
      "loginTitle": "Otorisasi masuk (kunci publik)",
      "loginDesc": "Siapa yang bisa masuk",
      "loginAdd": "Tambahkan kunci publik login",
      "loginEmpty": "Belum ada kunci publik login",
      "loginEmptyHint": "Tempelkan kunci publik laptop atau CI, ikat ke pengguna proyek untuk SFTP/SSH (membutuhkan cuplikan sshd)",
      "loginAddFirst": "Tambahkan kunci publik login pertama",
      "boundProject": "Proyek",
      "unboundProject": "Tidak ada proyek",
      "loginRemoved": "Kunci publik dihapus",
      "remove": "Menghapus",
      "loginModalTitle": "Otorisasi kunci publik",
      "loginModalDesc": "Setelah memilih proyek, kuncinya ditulis ke pengguna Linux tersebut home/",
      "addAuth": "Tambahkan otorisasi",
      "selectOption": "— Pilih —",
      "publicKey": "Kunci publik",
      "publicKeyHint": "Tempel baris penuh, mis. ssh-ed25519 AAAA…komentar",
      "commentOptional": "Komentar (opsional)",
      "commentPlaceholder": "laptop / CI",
      "loginNeedProject": "Buat proyek terlebih dahulu. Pengikatan berfungsi paling baik ketika pengguna sistem siap.",
      "loginNeedPub": "Pilih proyek dan tempel kunci publik yang dimulai dengan ssh-",
      "loginNoProjects": "Tidak ada proyek. Otorisasi pengguna Linux yang ada (root/tester) di bawah. Menulis /root/.ssh membutuhkan YSK_EXECUTE=1.",
      "loginLinuxHint": "Digunakan ketika tidak ada proyek. Contoh: root atau tester.",
      "loginAdded": "Ditambahkan",
      "sshdTitle": "SFTP pengguna proyek (sshd)",
      "sshdDesc": "Biarkan ysks_* / ysk_* memproyeksikan SFTP pengguna dengan kunci publik",
      "sshdStep1": "Tambahkan kunci publik di bawah autentikasi Login untuk proyek",
      "sshdStep2": "Pratinjau dan instal cuplikan Pencocokan sistem di sini",
      "sshdStep3": "Instal memerlukan hak eksekusi sistem; akan mencoba memuat ulang sshd",
      "sshdPreview": "Pratinjau konfigurasi",
      "loadingSnippet": "(Memuat…)",
      "reloadedCopied": "Dimuat ulang; cuplikan disalin ke papan klip",
      "reloadAndCopy": "Muat ulang dan salin",
      "installedOk": "Dipasang",
      "installToSystem": "Instal ke sistem",
      "sshdManualHint": "Jika eksekusi diblokir, jalankan bidang kontrol dengan hak istimewa, atau letakkan cuplikan di bawah",
      "outboundTitle": "Kunci identitas keluar",
      "outboundDesc": "Kunci pribadi dienkripsi di bidang kendali",
      "outboundAdd": "Tambahkan identitas keluar",
      "filterActive": "Aktif",
      "filterPanel": "Panel",
      "filterUser": "Pengguna proyek",
      "filterRetired": "Pensiun",
      "filterAll": "Semua",
      "searchIdentity": "Cari nama atau sidik jari…",
      "searchIdentityAria": "Cari identitas",
      "identityCount": "{{count}} identitas",
      "identityList": "Identitas",
      "outboundEmpty": "Belum ada identitas keluar",
      "outboundEmptyFilter": "Tidak ada item yang cocok",
      "outboundEmptyHint": "Buat kunci dalam waktu ~30 detik: pilih tujuan → nama → selesai. Gunakan untuk rekan/cadangan/git.",
      "outboundEmptyFilterHint": "Coba ubah filter atau hapus penelusuran",
      "outboundAddFirst": "Tambahkan identitas keluar pertama",
      "userPrefix": "Pengguna {{user}}",
      "createFailed": "Pembuatan gagal",
      "identityCreatedOnce": "Identitas dibuat (kunci pribadi ditampilkan satu kali)",
      "writtenToDisk": "Ditulis ke disk",
      "cannotWriteNeedExecute": "Tidak dapat menulis ke sistem: aktifkan eksekusi (YSK_EXECUTE)",
      "notDone": "Tidak selesai",
      "installFailed": "Penginstalan gagal",
      "testPassed": "Koneksi oke",
      "testFailed": "Koneksi gagal",
      "testError": "Tes gagal",
      "copiedPubPaste": "Kunci publik disalin — tempelkan ke rekan resmi_keys atau kunci penerapan Git",
      "deletedNamed": "Menghapus \"{{name}}\"",
      "rotated": "Dirotasi: kunci lama dihentikan, kunci baru dibuat",
      "detailStatus": "Status",
      "detailPurpose": "Tujuan",
      "detailLinuxUser": "pengguna Linux",
      "detailDiskPath": "Jalur disk",
      "detailLastTest": "Tes terakhir",
      "suggestFlow": "Disarankan: simpan → tulis disk → letakkan kunci publik di rekan → uji koneksi",
      "suggestFlowPrefix": "Disarankan: simpan → tulis disk → masukkan",
      "suggestFlowSuffix": "pada rekan → uji koneksi",
      "publicKeyStrong": "kunci publik",
      "copiedPub": "Kunci publik disalin",
      "allowLocalLogin": "Izinkan login lokal dengan kunci ini",
      "localLoginOk": "Kunci publik ditambahkan ke otorisasi login lokal",
      "testingConnection": "Menguji koneksi…",
      "rotateKey": "Putar kunci",
      "wizStepPurpose": "Untuk apa kunci ini?",
      "wizStepProject": "Proyek yang mana?",
      "wizStepPanelConfirm": "Konfirmasikan panel keluar",
      "wizStepName": "Nama dan opsi",
      "wizStepPurposeDesc": "Pilih tujuan sehingga daftar dan instal jalur selaras",
      "wizStepProjectDesc": "Kunci terikat pada pengguna dan rumah Linux proyek tersebut",
      "wizStepPanelDesc": "Kunci pribadi tetap berada dalam rahasia bidang kontrol untuk scp/ssh ke host lain",
      "wizStepNameDesc": "Nama untuk pengakuan; opsi lanjutan bisa menunggu",
      "prevStep": "Kembali",
      "nextStep": "Berikutnya",
      "createIdentity": "Ciptakan identitas",
      "purposePanelTitle": "Panel ke host lain",
      "purposePanelSub": "Rekan cluster, cadangan jarak jauh, probe",
      "purposePanelRec": "Direkomendasikan untuk sebagian besar operasi admin",
      "purposeUserTitle": "Pengguna proyek keluar",
      "purposeUserSub": "git pull, skrip proyek scp",
      "purposeUserPath": "Menulis proyek home/.ssh",
      "selectProject": "— Pilih proyek —",
      "noProjectsHint": "Belum ada proyek — buat proyek dan pengguna sistem terlebih dahulu",
      "afterCreatePub": "Setelah membuat, letakkan",
      "afterCreatePubMid": "pada host target",
      "afterCreatePubEnd": ", lalu gunakan Uji koneksi.",
      "privKeyStayLocal": "Kunci pribadi tetap berada di bidang kontrol ini; tidak pernah ada dalam daftar atau log.",
      "displayName": "Nama tampilan",
      "displayNameHint": "misalnya peer-prod, aplikasi saya-git",
      "algorithm": "Algoritma",
      "algoSuggested": "Direkomendasikan",
      "algoLegacy": "Sistem warisan",
      "installImmediately": "Tulis ke disk segera setelah dibuat",
      "installImmediatelyHint": "(membutuhkan eksekusi sistem; jika tidak, Anda akan diberitahu bahwa sistem tidak dapat diterapkan)",
      "savePrivTitle": "Simpan kunci pribadi sekarang",
      "savePrivDesc": "Setelah ditutup, kunci pribadi lengkap tidak akan ditampilkan lagi",
      "copiedPriv": "Kunci pribadi disalin",
      "copyPriv": "Salin kunci pribadi",
      "nextInstallDisk": "Berikutnya: menulis ke disk",
      "savedCloseBtn": "Disimpan — tutup",
      "privKeyOnce": "Kunci pribadi (hanya kali ini)",
      "privSavedConfirm": "Saya menyimpan kunci pribadi dengan aman (pengelola kata sandi/cadangan offline)",
      "testConnTitle": "Uji koneksi",
      "testConnDesc": "Coba ssh…benar dengan identitas ini. Keberhasilan hanya berarti target ini dapat dicapai.",
      "startTest": "Mulai tes",
      "testTarget": "Target",
      "testTargetHint": "Format pengguna@host atau pengguna@host:port",
      "deleteIdentityTitle": "Hapus identitas?",
      "rotateKeyTitle": "Putar kunci?",
      "deleteIdentityDesc": "Hapus \"{{name}}\" dan coba hapus file kunci pribadi di disk",
      "rotateKeyDesc": "\"{{name}}\" akan dihentikan dan kunci baru akan dibuat. Perbarui rekan resmi_keys.",
      "rotate": "Memutar",
      "enrollStatusSecret": "Rahasia dihasilkan",
      "enrollStatusConfirmed": "Aplikasi dikonfirmasi",
      "enrollStatusWritten": "Ditulis ke rumah",
      "enrollStatusRetired": "Pensiun",
      "needProjectOrUser": "Pilih proyek atau masukkan nama pengguna Linux",
      "enrollFailed": "Pendaftaran gagal",
      "totpGenerated": "TOTP khusus SSH dihasilkan (terpisah dari panel 2FA kecuali Anda menyinkronkan)",
      "confirmed": "Dikonfirmasi",
      "codeWrong": "Kode salah",
      "gaWritten": "Menulis .google_authenticator",
      "needExecute": "Memerlukan eksekusi sistem yang diaktifkan",
      "ssh2faTitle": "Faktor kedua login SSH",
      "ssh2faDesc": "Melindungi login ssh untuk pengguna Linux",
      "ssh2faStep1": "Daftarkan TOTP untuk pengguna Linux (pindai QR)",
      "ssh2faStep2": "Konfirmasikan kode 6 digit Aplikasi",
      "ssh2faStep3": "Tulis file rumah",
      "ssh2faStep4": "Instal modul PAM dan gabungkan cuplikan (di bawah)",
      "pkgLabel": "Paket {{name}}",
      "pkgStatus": "Paket {{status}}",
      "pamStatus": "PAM {{status}}",
      "kbdStatus": "sshd keyboard-interaktif {{status}}",
      "light": {
        "green": "Oke",
        "yellow": "memeriksa",
        "red": "hilang"
      },
      "enrollForUser": "Daftarkan SSH 2FA untuk pengguna",
      "ssh2faEmpty": "Belum ada pengguna Linux yang memiliki SSH 2FA",
      "ssh2faEmptyHint": "Lebih suka login kunci terlebih dahulu;",
      "startEnroll": "Mulai pendaftaran",
      "fromPanelBadge": "Sama seperti panel",
      "enterCode": "Masukkan kode",
      "rewriteHome": "Tulis ulang file rumah",
      "writeHome": "Menulis ke rumah",
      "retiredOk": "Pensiun",
      "retire": "Pensiun",
      "pamTitle": "Sistem: PAM / sshd (manual atau berlaku bila diizinkan)",
      "pamDesc": "nullok menghindari mengunci pengguna tanpa file. File tertulis ≠ TOTP diperlukan.",
      "pamSnippet": "Cuplikan PAM (gabung menjadi /etc/pam.d/sshd)",
      "sshdHint": "petunjuk sshd",
      "rescueUsers": "Pengguna penyelamat (dipisahkan koma, tidak pernah dalam Pencocokan ketat)",
      "strictPreview": "Pratinjau Kecocokan Ketat (kunci publik+TOTP, kata sandi tidak aktif)",
      "copiedPam": "Cuplikan PAM disalin",
      "copyPam": "Salin PAM",
      "applyStrict": "Terapkan Ketat ke sistem",
      "pamPkgHint": "Kemasan:",
      "pamRescueHint": ". Simpan setidaknya satu admin penyelamat tanpa file 2FA (root default).",
      "enrollModalTitle": "Daftarkan SSH 2FA",
      "enrollModalDesc": "Default: rahasia independen (tidak dibagikan dengan panel)",
      "generateShowSecret": "Hasilkan dan tunjukkan rahasia",
      "projectSuggested": "Proyek (disarankan)",
      "orManualUser": "— atau masukkan pengguna secara manual —",
      "linuxUser": "pengguna Linux",
      "advancedSharePanel": "Lanjutan: gunakan rahasia TOTP operator panel saat ini (ketik SHARED untuk mengonfirmasi)",
      "setupAuthTitle": "Siapkan pengautentikasi",
      "setupAuthDesc": "Pindai atau masukkan rahasia, lalu konfirmasi dengan kode 6 digit Aplikasi",
      "later": "Nanti",
      "confirmCodeBtn": "Konfirmasikan kode",
      "secretBase32": "Rahasia (base32)",
      "copiedSecret": "Rahasia disalin",
      "copySecret": "Salin rahasia",
      "scanThenCode": "Jika sudah dipindai, masukkan kode 6 digit saat ini.",
      "verifyCode": "Kode verifikasi",
      "applyStrictStepUp": "Terapkan Ketat · peningkatan",
      "enterPanelTotp": "Masukkan kode TOTP panel saat ini",
      "applyBtn": "Menerapkan",
      "appliedOk": "Terapan",
      "sharePanelTitle": "Bagikan rahasia panel TOTP?",
      "sharePanelDesc": "Risiko tinggi. Ketik DIBAGIKAN untuk mengonfirmasi.",
      "confirmString": "Garis konfirmasi",
      "enableShare": "Aktifkan berbagi",
      "invalidPub": "Tempel satu baris kunci publik OpenSSH lengkap (ssh-ed25519 / ssh-rsa / ecdsa…).",
      "dryRunOk": "Pratinjau selesai. Tinjau isi di bawah.",
      "strictDryRun": "Pratinjau mode ketat",
      "errorNoDetail": "Uji gagal (tanpa rincian)",
      "strictBlocked": "Paket atau PAM belum siap; penerapan Strict dinonaktifkan.",
      "privCloseWithoutAck": "Tertutup. Kunci pribadi tidak akan ditampilkan lagi; buat yang baru jika Anda tidak menyimpannya."
    },
    "sessionsActive": "Sesi aktif",
    "sessionsOther": "Perangkat lain",
    "sessionsHint": "",
    "noSessionsHint": "Saat Anda masuk lagi, perangkat ini akan muncul di sini.",
    "sessionOtherBadge": "Lainnya",
    "sessionThisDevice": "Anda di sini",
    "sessionDeviceOn": "{{browser}} pada {{os}}",
    "sessionIpUnknown": "IP tidak diketahui",
    "sessionLastActive": "Terakhir aktif {{when}}",
    "sessionStarted": "Masuk {{when}}",
    "sessionIdShort": "ID {{id}}…",
    "sessionJustNow": "baru saja",
    "sessionMinAgo": "{{n}} menit yang lalu",
    "sessionHourAgo": "{{n}} jam yang lalu",
    "sessionDayAgo": "{{n}} hari yang lalu",
    "revokeSessionTitle": "Keluar dari perangkat ini?",
    "revokeSessionDesc": "Akhiri sesi untuk {{device}} ({{ip}}). Perangkat tersebut perlu masuk lagi.",
    "revokeOthersTitle": "Keluar dari semua perangkat lain?",
    "revokeOthersDesc": "Ini akan mengakhiri {{count}} sesi lainnya. Browser Anda saat ini tetap masuk.",
    "sessionRevoked": "Sesi keluar",
    "mySecurityHint": "",
    "policyTotpHint": "Kebijakan situs: setiap admin harus mengaktifkan 2FA (QR individual) mereka sendiri",
    "requireUser2fa": "Wajibkan 2FA untuk semua pengguna panel",
    "changePasswordTitle": "Ubah kata sandi masuk",
    "currentPassword": "Kata sandi saat ini",
    "newPassword": "Kata sandi baru",
    "confirmNewPassword": "Konfirmasi kata sandi baru",
    "passwordMismatch": "Kata sandi baru tidak cocok.",
    "changePassword": "Ubah kata sandi",
    "passwordChanged": "Kata sandi diperbarui.",
    "strictNeedsEnrolled": "Setidaknya satu admin harus punya 2FA sebelum Strict diaktifkan.",
    "policyTotpNeedSelf": "Aktifkan 2FA di akun ini dulu; jika tidak, kode konfirmasi tidak dapat diisi.",
    "policyNoTotpHint": "This account has no 2FA yet — saving policy does not need a TOTP. Set up 2FA above if you want to require it for others.",
    "policyNeedSelf2fa": "Aktifkan 2FA pada akun ini terlebih dahulu, lalu konfirmasi dengan kode TOTP",
    "revokeAllDevicesTitle": "Cabut setiap perangkat yang diingat — Anda dan admin lain harus memverifikasi 2FA lagi",
    "sessionCli": "CLI",
    "sessionApi": "API",
    "fail2banSnippetTitle": "Cuplikan fail2ban",
    "fail2banSnippetEmpty": "Tidak ada cuplikan yang ditulis.",
    "trustedDevicesTitle": "Perangkat tepercaya",
    "noTrustedDevices": "Tidak ada perangkat tepercaya.",
    "strictConfirmTitle": "Aktifkan 2FA Strict?",
    "strictConfirmDesc": "Pengguna tanpa 2FA akan ditolak. Pastikan Anda sudah punya TOTP atau Passkey yang berfungsi.",
    "revokeDevicesTitle": "Cabut perangkat tepercaya?",
    "revokeDevicesDesc": "Browser yang diingat akan diminta 2FA lagi.",
    "approvalsHint": "Persetujuan muncul saat alat berisiko tinggi membutuhkan operator kedua. Atur izin di Pengguna → Izin.",
    "allowlistReadonly": "Katalog alat agen (hanya baca). Pemberian kemampuan diatur di Pengguna → Izin.",
    "colTool": "Alat",
    "colAllowed": "Diizinkan",
    "colRisk": "Risiko",
    "colApproval": "Persetujuan",
    "risk": {
      "low": "Rendah",
      "medium": "Sedang",
      "high": "Tinggi",
      "critical": "Kritis"
    },
    "confirmDeleteApiKey": "Hapus kunci API ini?",
    "confirmDeleteApiKeyDesc": "“{{name}}” akan berhenti mengautentikasi. Hal ini tidak dapat dibatalkan."
  },
  "serviceExposure": {
    "title": "Akses jaringan",
    "manage": "Kelola akses",
    "manageTitle": "Akses jaringan layanan",
    "manageDesc": "Kontrol bagaimana {{service}} dapat dijangkau di firewall host.",
    "mode": "Modus akses",
    "modePrivate": "Hanya lokal",
    "modePublic": "Publik",
    "modeRestricted": "Terbatas",
    "modeUndecided": "Tidak disetel",
    "modePublicLive": "Publik (ikatan langsung)",
    "summaryPublicLive": "Mendengarkan di {{bind}} — dapat dijangkau di semua antarmuka. Konfirmasikan mode akses; ini bukan urusan pribadi.",
    "modeLoading": "Memuat",
    "summaryPrivate": "Tidak terbuka di firewall publik.",
    "summaryPublic": "Buka · {{ports}}",
    "summaryUndecided": "Mode akses tidak dikonfirmasi (default katalog: {{suggested}}).",
    "summaryNotEnforced": "Firewall mati — panel tidak membuka atau memblokir port ini.",
    "roleSmtp": "Pengiriman SMTP",
    "roleImap": "Kotak surat IMAP/POP3",
    "summaryRestricted": "Dibatasi · {{count}} sumber",
    "summaryFirewallOff": "Firewall host: {{detail}} — aturan tidak diterapkan hingga UFW aktif.",
    "summaryFirewallOffOnly": "Firewall host tidak diaktifkan, sehingga aturan port tidak diterapkan.",
    "outOfSync": "Tidak sinkron",
    "openButStopped": "Port terbuka — layanan tidak berjalan",
    "openNoTenants": "Pelabuhan umum tanpa penyewa",
    "firewallOff": "Firewall mati",
    "ufwMissing": "UFW tidak diinstal",
    "ufwInactive": "tidak aktif",
    "firewallLink": "tembok api",
    "portsLabel": "Pelabuhan",
    "allowFrom": "Sumber yang diizinkan (IP / CIDR)",
    "allowCountries": "Negara yang diizinkan (ISO)",
    "hintPrivate": "Layanan mungkin masih mendengarkan di localhost; tidak ada aturan yang diizinkan oleh UFW publik.",
    "hintPublic": "Peringatan: membuka port ini ke seluruh Internet. Lebih suka dibatasi untuk database.",
    "hintRestricted": "IP atau CIDR yang dipisahkan koma. Hanya sumber-sumber ini yang dapat terhubung.",
    "hintCountries": "Upaya terbaik L2 melalui ipset + CIDR zona negara. Membutuhkan root, EXECUTE, dan ipset. Grup keamanan cloud terpisah.",
    "restrictedNeedIp": "Tambahkan setidaknya satu IP atau CIDR untuk mode terbatas.",
    "restrictedNeedSource": "Tambahkan setidaknya satu IP/CIDR atau kode negara untuk mode terbatas.",
    "privateStartTitle": "Paparkan {{service}} di jaringan?",
    "confirmAndStart": "Konfirmasikan dan mulai",
    "cloudSgNote": "Hanya firewall host — grup keamanan cloud (AWS/GCP/Azure) tidak diubah.",
    "serviceNotInstalled": "Layanan ini tidak diinstal, sehingga aturan firewall tidak berlaku."
  },
  "services": {
    "enabledBoot": "Saat boot",
    "unitNotFound": "Unit not installed",
    "bootNa": "Tidak berlaku",
    "unitNa": "Tidak berlaku",
    "permLabel": "Izin",
    "permCanChange": "Dapat mengubah sistem (superuser)",
    "permBlocked": "Tidak dapat mengubah sistem",
    "permHint": "Perubahan sistem {{exec}} · Pengguna Super {{root}}",
    "clusterLegend": "Direncanakan = disimpan di panel, tidak diterapkan pada host.",
    "active": {
      "active": "Berlari",
      "inactive": "Berhenti",
      "not-found": "Tidak dipasang",
      "failed": "Gagal",
      "tool": "Alat",
      "activating": "Mulai"
    },
    "unitStatic": "statis",
    "unitIndirect": "tidak langsung",
    "action": {
      "start": "Awal",
      "stop": "Berhenti",
      "restart": "Mulai ulang",
      "reload": "Muat ulang",
      "enable": "Aktifkan saat boot",
      "disable": "Nonaktifkan saat boot"
    },
    "enabledOk": "{{label}} diaktifkan saat boot",
    "bootDisabledWarn": "{{label}} sedang berjalan tetapi tidak akan mulai saat boot. Aktifkan agar tetap ada.",
    "bootDisabledShort": "Tidak saat boot",
    "sshdBootOffWarn": "sshd tidak diaktifkan saat boot. Setelah reboot, host ini tidak akan memiliki jalur penyelamatan SSH.",
    "mariadbNotInstalled": "MariaDB belum terpasang",
    "mariadbNotInstalledMysqlOk": "Tidak diinstal: MariaDB (MySQL diinstal)",
    "lifecycleTitle": "Kontrol layanan {{label}}",
    "startedOk": "{{label}} dimulai",
    "stoppedOk": "{{label}} dihentikan",
    "needRunning": "{{label}} tidak berjalan",
    "restartedOk": "{{label}} dimulai ulang",
    "reloadedOk": "{{label}} dimuat ulang",
    "reloadTitle": "Muat ulang konfigurasi {{label}} tanpa memulai ulang sepenuhnya",
    "stopNeedConfirm": "Perlu konfirmasi",
    "stopNeedConfirmPhrase": "Perlu mengetik frasa konfirmasi",
    "stopNeedConfirmImpact": "Hentikan {{label}}? Koneksi aktif ke layanan ini akan terputus.",
    "stopConfirmTitle": "Hentikan {{label}}?",
    "stopConfirmDesc": "{{label}} akan berhenti mendengarkan. Mulai lagi dari halaman ini jika perlu.",
    "stopConfirmEdgeDesc": "Menghentikan {{label}} membuat situs dan reverse proxy offline sampai dimulai lagi.",
    "stopConfirmEdgeConsequence": "Selama {{label}} dihentikan, host ini tidak menyajikan HTTP/HTTPS.",
    "stopConfirmSshdTitle": "Hentikan sshd?",
    "stopConfirmSshdDesc": "Menghentikan sshd menutup SSH jarak jauh. Pastikan ada konsol atau jalur masuk lain.",
    "stopConfirmSshdToken": "berhenti sshd",
    "stopConfirmSshdConsequence": "Sesi SSH baru gagal sampai sshd dimulai dari konsol host.",
    "stopConfirmPanelTitle": "Hentikan YSK Server?",
    "stopConfirmPanelDesc": "Panel dan API offline sampai unit dimulai di host.",
    "stopConfirmPanelSshdOffDesc": "Panel dan API akan offline. sshd tidak diaktifkan saat boot, jadi SSH mungkin bukan jalur penyelamat setelah reboot.",
    "stopConfirmPanelSshdOffConsequence": "sshd tidak diaktifkan saat boot. Setelah reboot Anda mungkin tidak memiliki jalur penyelamatan SSH.",
    "ufwNoLifecycle": "UFW tidak dimulai atau dihentikan dari matriks ini.",
    "restartConfirmPanelTitle": "Mulai ulang Server YSK?",
    "restartConfirmPanelDesc": "Panel dan API akan turun sebentar saat unit dimulai ulang.",
    "restartConfirmTitle": "Mulai ulang {{label}}?",
    "restartConfirmDesc": "Mulai ulang {{label}} sekarang. Koneksi aktif mungkin terputus.",
    "restartConfirmConsequence": "{{label}} akan mengganggu koneksi sebentar, lalu tetap melayani HTTP/HTTPS.",
    "reloadConfirmTitle": "Muat ulang {{label}}?",
    "reloadConfirmDesc": "Muat ulang konfigurasi {{label}}. Sesi yang ada harus tetap berjalan.",
    "enableConfirmTitle": "Aktifkan {{label}} saat boot?",
    "enableConfirmDesc": "Aktifkan {{label}} agar dimulai saat boot.",
    "startVerifyFailed": "{{label}} awal tidak tetap sehat.",
    "stopConfirmPanelToken": "hentikan server ysk",
    "stopConfirmPanelConsequence": "Sesi peramban ini terputus. Mulai unit dari SSH atau konsol host.",
    "stopConfirmFail2banTitle": "Hentikan fail2ban?",
    "stopConfirmFail2banDesc": "Menghentikan fail2ban akan mematikan larangan IP otomatis. Situs web dan SSH tetap berjalan.",
    "stopConfirmFail2banConsequence": "Penyerang baru tidak dilarang sampai fail2ban dimulai lagi.",
    "actionDone": "{{action}} selesai",
    "runningOf": "{{running}}/{{total}} berjalan",
    "statusFilter": {
      "all": "Semua negara bagian",
      "running": "Berlari",
      "failed": "Gagal",
      "missing": "Tidak dipasang"
    },
    "canMutate": "Yg mungkin berubah",
    "locked": "Terkunci",
    "controlUnit": "Unit bidang kendali",
    "logs": "Log",
    "dbHa": "Basis Data HA",
    "clusterCount": "{{count}} cluster",
    "mariadbCluster": "klaster MariaDB",
    "probing": "Menyelidiki matriks layanan…",
    "lifecycleLocked": "Tindakan siklus hidup terkunci: memerlukan root + YSK_EXECUTE. Probe masih berfungsi. Melihat",
    "hostSettings": "Pengaturan tuan rumah",
    "matrixTab": "Matriks layanan ({{count}})",
    "stackTab": "Tumpukan perangkat lunak",
    "stackTitle": "Tumpukan perangkat lunak host",
    "stackHint": "Memasang atau menghapus komponen host sesuai rencana; Mesin server SQL bersifat eksklusif.",
    "protectionTab": "Pemeriksaan perlindungan",
    "knownServices": "Layanan yang diketahui",
    "showing": "Menampilkan {{shown}} / {{total}}",
    "all": "Semua",
    "searchPh": "Nama / unit / kategori",
    "noMatch": "Tidak ada layanan yang cocok",
    "bootPrefix": "Booting {{state}}",
    "controlPage": "Halaman kontrol",
    "manageRuntime": "Instal / perbarui",
    "installOrOpen": "Instal / buka",
    "protectionTitle": "Pemeriksaan perlindungan",
    "protectionSub": "Hanya baca; tidak mengubah firewall/fail2ban",
    "protectionDoneNote": "Pemeriksaan perlindungan selesai",
    "probeDone": "Penyelidikan selesai",
    "runProtection": "Jalankan pemeriksaan perlindungan",
    "notProbedYet": "Belum diselidiki",
    "cat": {
      "web": "jaring",
      "db": "Basis Data",
      "mail": "Surat",
      "dns": "DNS",
      "ftp": "FTP",
      "cache": "Cache",
      "panel": "Panel",
      "ssh": "SSH",
      "other": "Lainnya",
      "runtime": "Waktu proses"
    }
  },
  "software": {
    "title": "Perangkat lunak",
    "desc": "Semua perangkat lunak yang dikelola: status pemasangan, kesehatan layanan, versi yang lebih baru, dan tautan untuk digunakan dalam proyek.",
    "tabs": {
      "overview": "Ringkasan",
      "runtimes": "Waktu proses",
      "databases": "Basis Data",
      "edge": "Domain & tepi",
      "mailFiles": "Surat & file",
      "host": "Layanan tuan rumah"
    },
    "stat": {
      "catalog": "Item katalog",
      "runtimesInstalled": "Runtime diinstal",
      "updates": "Pembaruan / dapat diperluas",
      "attention": "Perlu perhatian"
    },
    "quickTitle": "Jalan pintas",
    "quickDesc": "Lompat ke bagian atau alat host",
    "updatesTitle": "Pembaruan & versi yang dapat diinstal",
    "updatesDesc": "Pin upstream atau panel yang lebih baru. Instal, lalu pilih runtime pada suatu proyek.",
    "allSoftware": "Semua perangkat lunak",
    "status": {
      "unknown": "—",
      "installed": "Dipasang",
      "notInstalled": "Tidak dipasang",
      "running": "Berlari",
      "missing": "Tidak terdeteksi",
      "failed": "Gagal",
      "stopped": "Berhenti"
    },
    "badge": {
      "update": "Pembaruan tersedia",
      "upToDate": "Terkini"
    },
    "meta": {
      "installed": "Terpasang: {{list}}",
      "default": "Bawaan {{v}}",
      "remote": "Hulu ~{{v}}",
      "openManage": "Buka halaman kelola untuk menginstal atau mengkonfigurasi",
      "aptCurrentLatest": "Terpasang {{v}} · repo terbaru",
      "aptVersion": "Dipasang {{v}}",
      "aptUpgrade": "{{from}} → {{to}} tersedia",
      "aptUpgradeMulti": "{{n}} paket yang dapat diupgrade: {{list}}",
      "aptNotInstalled": "Paket tidak diinstal (buka halaman kelola untuk menginstal)",
      "hostUpgradable": "~{{n}} paket yang dapat diupgrade di host",
      "checking": "Memeriksa versi… atau buka halaman kelola"
    },
    "action": {
      "manage": "Mengelola",
      "useInProject": "Gunakan dalam proyek",
      "useInProjectTitle": "Buka proyek untuk mengatur waktu proses ini",
      "update": "Memperbarui",
      "updateTitle": "Instal atau alihkan ke {{v}}",
      "updateTo": "Perbarui ke {{v}}",
      "installVersion": "Instal {{v}}",
      "applyAptTitle": "Konfirmasi pembaruan {{pkg}}",
      "updateN": "Perbarui {{n}} item",
      "installTitle": "Instal {{list}}",
      "install": "Memasang",
      "updateAptTitle": "Buka Pembaruan untuk {{pkg}}"
    },
    "apply": {
      "blockedShort": "Diblokir",
      "failedShort": "Gagal",
      "failed": "Pembaruan gagal",
      "blocked": "Diblokir",
      "confirm": "Konfirmasikan pembaruan",
      "confirmTitle": "Konfirmasikan pembaruan perangkat lunak?",
      "confirmBody": "Pembaruan {{pkg}}: {{from}} → {{to}}. Memerlukan hak perubahan sistem.",
      "ok": "Diterapkan {{pkg}}",
      "progress": "Memperbarui {{n}}/{{total}}: {{pkg}}",
      "okMulti": "Diperbarui: {{list}}",
      "okMultiTitle": "{{label}} diperbarui",
      "partial": "Keberhasilan parsial",
      "partialTitle": "Beberapa pembaruan gagal",
      "failedTitle": "{{label}} pembaruan gagal",
      "progressDetail": "{{from}} → {{to}}",
      "confirmBodyMulti": "Pembaruan {{label}}: {{list}}"
    },
    "version": {
      "loading": "Memuat versi…",
      "installed": "Dipasang",
      "latest": "Terbaru",
      "upToDate": "Up to date / repo terbaru",
      "refresh": "Periksa kembali yang terbaru",
      "refreshHasUpdate": "Versi yang lebih baru tersedia",
      "refreshLatest": "Sudah versi rekaman terbaru",
      "pick": "Pilih versi",
      "noTarget": "Tidak ada target pembaruan",
      "needRuntimePage": "Instal versi ini di halaman runtime",
      "noAptCandidate": "Tidak ada versi kandidat yang tepat",
      "sourceLabel": "Sumber"
    },
    "install": {
      "progress": "Memasang: {{list}}…",
      "progressHint": "Mungkin memerlukan waktu satu atau dua menit",
      "blockedTitle": "{{label}} tidak dapat menginstal",
      "ok": "Instal dalam antrian: {{list}}",
      "okTitle": "{{label}} dipasang / antri",
      "failedTitle": "{{label}} pemasangan gagal",
      "confirmTitle": "Konfirmasikan pemasangan perangkat lunak?",
      "confirmBody": "Instal {{label}}: {{list}}. Memerlukan hak perubahan sistem.",
      "confirm": "Konfirmasikan pemasangan"
    },
    "runtime": {
      "installing": "Memasang/memperbarui {{kind}} {{v}}…",
      "installingHint": "Mungkin memerlukan waktu satu atau dua menit",
      "blockedTitle": "{{kind}} {{v}} tidak dapat menginstal",
      "installed": "Dipasang/diperbarui {{kind}} {{v}}",
      "installedDetail": "Pilih versi ini pada sebuah proyek",
      "failedTitle": "{{kind}} {{v}} pemasangan gagal",
      "installingShort": "Memasang…"
    },
    "aptSummaryTitle": "Peningkatan repo tersedia",
    "aptSummaryDesc": "Jumlah katalog dan paket host terpisah; terapkan dari Pembaruan atau kartu.",
    "aptSummary": {
      "catalog": "Katalog {{n}}",
      "host": "Paket tuan rumah {{n}}",
      "openUpdates": "Buka pembaruan"
    },
    "navBadgeTitle": "Peningkatan katalog: {{n}}",
    "projectHint": "Runtime {{runtime}} telah diisi sebelumnya — membuat proyek",
    "projectHintWithVersion": "Runtime {{runtime}} {{version}} telah diisi sebelumnya — membuat proyek"
  },
  "softwareBanner": {
    "titleDefault": "Perangkat lunak yang diperlukan tidak diinstal",
    "missing": "Hilang: {{names}}",
    "nameSep": ", ",
    "installOneClick": "Instal sekarang",
    "installing": "Memasang…",
    "reprobe": "Periksa kembali",
    "close": "Menutup",
    "resultTitle": "Hasil instalasi",
    "probeFailed": "Penyelidikan gagal",
    "installIncomplete": "Penginstalan tidak lengkap",
    "installedOne": "Dipasang {{name}}",
    "allInstalled": "Perangkat lunak yang diperlukan diinstal"
  },
  "softwareLifecycle": {
    "kindInstall": "Memasang",
    "kindUninstall": "Copot pemasangan",
    "dockBusy": "{{kind}} · {{title}}",
    "dockFail": "Gagal · {{title}}",
    "dockDone": "Selesai · {{title}}",
    "minimize": "Memperkecil",
    "maximize": "Perbesar",
    "restore": "Pulihkan",
    "liveLog": "Catatan langsung",
    "uninstall": "Copot pemasangan…",
    "uninstallTitle": "Copot pemasangan {{name}}",
    "impactIntro": "Komponen dan layanan ini akan terpengaruh. Tinjau dengan cermat sebelum melanjutkan.",
    "nothingInstalled": "Tidak ada yang diinstal untuk fitur ini.",
    "packagesList": "Paket: {{list}}",
    "noPackages": "Tidak ada paket tepat yang terdaftar",
    "unitsList": "Layanan: {{list}}",
    "dataPolicy": "Kebijakan data",
    "policyKeep": "Simpan konfigurasi & data",
    "policyPurge": "Bersihkan konfigurasi & data (berbahaya)",
    "purgeWarning": "Purge secara permanen menghapus konfigurasi dan direktori data. Hal ini tidak dapat dibatalkan dengan mudah.",
    "keepHint": "Paket akan dihapus; konfigurasi dan direktori data disimpan di disk.",
    "summaryLine": "{{packages}} paket, {{units}} unit layanan akan diproses.",
    "doubleConfirmIntro": "Konfirmasi ganda diperlukan untuk uninstall.",
    "ackLabel": "Saya memahami layanan mungkin berhenti dan saya telah membaca daftar dampaknya.",
    "typePhrase": "Ketik {{phrase}} untuk mengonfirmasi",
    "confirmUninstall": "Konfirmasikan pencopotan pemasangan",
    "protected": "Terlindung",
    "readyHint": "Perangkat lunak yang diperlukan telah diinstal. Anda dapat menghapus instalannya dari sini jika diperlukan.",
    "readyTitle": "Perangkat lunak sudah siap",
    "jobInProgress": "Instal/uninstall lainnya sudah berjalan",
    "uninstallDone": "Pencopotan pemasangan selesai",
    "uninstallFailed": "Pencopotan pemasangan gagal",
    "impact": {
      "sitesDown": "Situs publik mungkin offline",
      "reverseProxy": "Proksi terbalik akan berhenti",
      "phpBackend": "Backend PHP mungkin berhenti",
      "mailOutbound": "Surat keluar akan berhenti",
      "mailInbound": "Email masuk akan berhenti",
      "mailQueue": "Alat antrean email tidak tersedia",
      "mailDkim": "Penandatanganan DKIM akan dihentikan",
      "database": "Layanan basis data akan berhenti",
      "dataLossPurge": "Pembersihan menghapus direktori data",
      "cache": "Layanan cache akan berhenti",
      "firewall": "Firewall host akan dihapus",
      "intrusion": "Pemblokiran intrusi akan berhenti",
      "ftp": "Layanan FTPS akan berhenti",
      "dns": "Server DNS akan berhenti",
      "vpn": "Layanan VPN akan berhenti",
      "vnc": "Layanan VNC akan berhenti",
      "controlPlane": "Waktu proses bidang kontrol (dilindungi)",
      "generic": "Layanan terkait mungkin berhenti",
      "containers": "Kontainer yang berjalan akan berhenti",
      "validators": "Tumpukan validator yang memakai Docker Compose akan berhenti",
      "purgeData": "Jalur data akan dihapus",
      "protectedSkipped": "Komponen yang dilindungi dilewati",
      "runtimeStack": "Semua versi runtime yang dikelola panel ini akan dihapus"
    },
    "requestCancel": "Permintaan pembatalan",
    "cancelling": "Membatalkan…",
    "dockCancelling": "Membatalkan · {{title}}",
    "dockCancelled": "Dibatalkan · {{title}}",
    "cancelHint": "Pembatalan diminta. Klien berhenti mendengarkan; tuan rumah dapat menyelesaikan apt/langkah saat ini. Selidiki ulang statusnya setelah beberapa saat.",
    "cancelledToast": "Operasi dibatalkan (klien berhenti streaming)",
    "kindApply": "Menerapkan",
    "kindScan": "Pindai",
    "kindDeploy": "Menyebarkan",
    "kindRuntime": "Waktu proses",
    "jobDone": "Selesai · {{title}}",
    "jobFailed": "Gagal · {{title}}",
    "uninstallUfwWarn": "Menghapus UFW membuat host ini tanpa firewall port yang dikelola panel.",
    "uninstallFail2banWarn": "Menghapus fail2ban menghentikan jail dan melepas blokir. Jika tetap dipakai, tambahkan IP login ke ignoreip dulu."
  },
  "sqlEngineHealth": {
    "finding": {
      "package_missing": "Paket server untuk {{flavor}} tidak diinstal.",
      "client_missing": "Alat klien SQL tidak diinstal.",
      "frozen_marker": "Penanda pembekuan Debian hadir (mode: {{mode}}). Daemon start diblokir hingga dirilis.",
      "datadir_uninitialized": "Direktori data tidak memiliki katalog sistem — memerlukan inisialisasi.",
      "config_flavor_mismatch": "my.cnf menunjuk ke mesin yang salah untuk {{flavor}} ({{path}}).",
      "residual_foreign_plugins": "Konfigurasi/plugin sisa dari mesin SQL lain dapat membuat daemon ini mogok.",
      "unit_failed": "Unit layanan {{unit}} gagal.",
      "unit_not_active": "Unit layanan {{unit}} adalah {{active}} (tidak aktif).",
      "port_conflict": "Port 3306 digunakan saat mesin ini mati (kemungkinan konflik)."
    },
    "action": {
      "stop_unit": "Hentikan unit layanan",
      "clear_frozen": "Hapus penanda pembekuan",
      "sanitize_config": "Sejajarkan my.cnf dan nonaktifkan plugin mesin asing",
      "init_datadir": "Inisialisasi direktori data kosong",
      "reset_failed": "Reset status unit yang gagal",
      "enable_unit": "Aktifkan layanan saat boot",
      "start_unit": "Mulai layanan",
      "verify_active": "Verifikasi layanan aktif"
    },
    "note": {
      "alreadyHealthy": "Mesin SQL sudah sehat — tidak perlu perbaikan.",
      "needsConfirm": "Perbaikan memerlukan konfirmasi ({{count}} langkah: {{findings}}).",
      "installPackageFirst": "Instal paket server {{flavor}} terlebih dahulu, lalu perbaiki.",
      "stepFailed": "Langkah perbaikan {{action}} gagal: {{detail}}",
      "repairOk": "Perbaikan selesai — {{unit}} aktif.",
      "repairIncomplete": "Perbaikan selesai tetapi unit masih {{active}}."
    }
  },
  "sqlEngineSwitch": {
    "title": "Beralih ke {{target}}",
    "subtitle": "Ganti {{from}} dengan {{to}}. Hanya satu server SQL yang diperbolehkan di host ini.",
    "confirm": "Konfirmasikan peralihan dan migrasi",
    "success": "Mesin SQL diaktifkan dan data dimigrasikan",
    "bannerHint": "Jika mesin lain sudah terpasang, Anda harus mengonfirmasi sakelar eksklusif (uninstall",
    "flowAria": "Arah peralihan mesin SQL",
    "from": "Saat ini",
    "to": "Target",
    "calloutTitle": "Sulit untuk dibatalkan tanpa cadangan",
    "calloutBody": "{{from}} paket dihapus hanya setelah ekspor berhasil",
    "sectionImpact": "apa yang akan terjadi",
    "sectionLimits": "Keterbatasan dan risiko",
    "dbListTitle": "Basis data yang akan dimigrasi ({{count}})",
    "dbMigrateBadge": "{{count}} basis data pengguna",
    "dbEmptyBadge": "Tidak ada database pengguna",
    "noUserDbs": "Tidak ada database pengguna yang terdeteksi (hanya skema sistem). Mesin server masih akan diganti.",
    "tableCount": "{{count}} tabel",
    "ackLabel": "Saya mengerti mesinnya eksklusif. Copot pemasangan {{from}} dan migrasikan data ke {{to}}.",
    "phraseLabel": "Ketik {{phrase}} untuk mengonfirmasi",
    "phraseMismatch": "Frasa tidak cocok. Ketik SWITCH dengan tepat.",
    "warn": {
      "replace_engine": "Copot pemasangan {{from}} dan pasang {{to}}.",
      "exclusive": "MySQL dan MariaDB tidak dapat berjalan bersama sebagai server pada satu host (eksklusif).",
      "uninstall_packages": "Paket server SQL saat ini akan dihapus dari sistem.",
      "logical_dump": "Basis data pengguna diekspor secara logis lalu diimpor. Skema sistem tidak disalin sebagai file.",
      "dialect_risk": "SQL khusus MariaDB atau MySQL mungkin gagal saat diimpor.",
      "no_replication": "Pengaturan replikasi, plugin, dan log biner tidak dimigrasi.",
      "root_auth": "Soket root atau otentikasi kata sandi mungkin memerlukan konfigurasi ulang setelah peralihan.",
      "no_user_dbs": "Tidak ada database pengguna yang terdeteksi — hanya paket mesin yang akan berubah.",
      "has_user_dbs": "{{count}} basis data pengguna akan diekspor dan diimpor."
    },
    "note": {
      "needsSwitch": "Host ini sudah menjalankan {{other}}. MySQL dan MariaDB bersifat eksklusif — konfirmasi saklar (ekspor → hapus instalan lainnya → instal → impor).",
      "invalidTarget": "Target tidak valid (khusus mysql atau mariadb).",
      "badConfirmPhrase": "Frasa konfirmasi harus benar-benar SWITCH.",
      "needAck": "Anda harus menyetujui peralihan eksklusif (MySQL atau MariaDB, bukan keduanya).",
      "switchNotNeeded": "Switch tidak diperlukan — gunakan instalasi normal.",
      "migrateDataRequired": "Migrasi data harus diaktifkan ketika database pengguna ada.",
      "dumpFailed": "Ekspor gagal — sumber {{source}} masih berjalan. {{detail}}",
      "datadirBackupFailed": "Pencadangan datadir gagal — dibatalkan sebelum pencopotan pemasangan. Coba mulai layanan sumber secara manual.",
      "waitFailed": "Layanan sasaran belum siap. Cadangan: {{dumpPath}}. Datadir lama: {{datadir}}. Diperlukan pemulihan manual.",
      "incomplete": "Peralihan tidak lengkap. Ekspor dipertahankan pada {{dumpPath}}. Datadir lama di {{datadir}}. Jangan membersihkan lagi secara membabi buta.",
      "switched": "Beralih {{from}} → {{to}}. Basis data {{imported}}/{{total}} yang diimpor.",
      "dumpPath": "Jalur ekspor logis: {{path}}",
      "datadirBackup": "Cadangan datadir lama: {{path}} (hapus jika sudah puas: rm -rf {{path}})",
      "grantsExported": "Hibah diekspor ({{detail}})",
      "frozenDetected": "MySQL/MariaDB FROZEN (bukan kegagalan yang tepat). Jalur {{path}} (mode: {{mode}}). Paket mungkin diinstal tetapi daemon menolak untuk memulai setelah pergantian mesin atau penurunan versi. Hapus pembekuan dan masukkan kembali datadir kosong jika aman. Cuplikan: {{snippet}}",
      "frozenCleared": "Menghapus penanda pembekuan {{path}}.",
      "frozenClearFailed": "Tidak dapat menghapus penanda pembekuan {{path}} — hapus secara manual sebagai root.",
      "datadirNotEmptySkipInit": "Direktori data sudah memiliki tabel sistem — dilewati inisialisasi ulang.",
      "datadirInitialized": "Menginisialisasi direktori data kosong untuk {{flavor}}.",
      "datadirInitFailed": "Gagal menginisialisasi direktori data: {{detail}}",
      "unitNotActive": "Unit {{unit}} adalah {{active}} (diharapkan aktif).",
      "nginxPortConflict": "Unit Nginx tidak aktif — Apache mungkin masih mengikat public :80; rebind Apache ke 127.0.0.1:8080, lalu restart Nginx.",
      "nginxConfigFailed": "nginx -t gagal: {{detail}}",
      "frozenShort": "FROZEN ({{mode}}) — daemon diblokir; pencairan dan perbaikan diperlukan.",
      "unfreezeNeedsConfirm": "Konfirmasi diperlukan untuk mencairkan (beku={{frozen}}, kosongDatadir={{empty}}). POST dengan konfirmasi: benar.",
      "unfreezeOk": "Layanan {{unit}} aktif setelah perbaikan pencairan.",
      "unfreezeStartFailed": "Masih tidak aktif setelah dicairkan: {{detail}}",
      "unfreezePrompt": "Klik “Unfreeze and Repair” untuk menghapus FROZEN dan memulai kembali datadir yang kosong.",
      "configSanitized": "Konfigurasi SQL disejajarkan untuk {{flavor}} (my.cnf → {{target}}). Sisa plugin MariaDB dinonaktifkan saat menargetkan MySQL.",
      "configSanitizeFailed": "Gagal membersihkan konfigurasi SQL: {{detail}}"
    },
    "step": {
      "dump": "Ekspor {{db}}",
      "exportGrants": "Ekspor hibah",
      "stop": "Hentikan {{unit}}",
      "backupDatadir": "Cadangan datadir",
      "purge": "Copot pemasangan {{pkg}}",
      "wait": "Tunggu {{unit}}",
      "importDb": "Impor {{db}}",
      "importGrants": "Hibah impor",
      "verify": "Memeriksa",
      "preflight": "Pra-penerbangan",
      "confirm": "Mengonfirmasi",
      "clearFrozen": "Hapus MySQL BEKU",
      "initDatadir": "Inisialisasi datadir kosong",
      "startUnit": "Mulai {{unit}}",
      "sanitizeConfig": "Sanitasi plugin my.cnf / sisa"
    }
  },
  "ssl": {
    "status": {
      "uploaded": "Diunggah",
      "issued": "Diterbitkan",
      "planned": "Sedang berlangsung",
      "failed": "Gagal",
      "missing": "File hilang",
      "ready": "Siap",
      "processing": "Sedang berlangsung"
    },
    "step": {
      "ok": "Selesai",
      "blocked": "Tidak bisa lari",
      "failed": "Gagal",
      "skipped": "Dilewati"
    },
    "pillCount": "{{count}} sertifikat",
    "statCerts": "Sertifikat",
    "panelCertHint": "Panel HTTPS menggunakan {{path}} (kedaluwarsa {{exp}}). Itu tidak terdaftar sebagai sertifikat situs.",
    "openPanelTls": "Buka panel HTTPS",
    "statWithFiles": "Dengan file",
    "statBindings": "Binding",
    "statFailed": "Gagal",
    "requestLe": "Permintaan Mari Enkripsi",
    "openLetsEncryptLog": "Buka letsencrypt.log di Pusat Log",
    "uploadCert": "+ Unggah sertifikat",
    "certbotNotInstalled": "Certbot tidak diinstal",
    "leFailNxdomain": "DNS tidak memiliki catatan untuk {{domain}} (NXDOMAIN) — Let's Encrypt tidak dapat memvalidasi tanpa A/AAAA publik.",
    "leFailNxdomainHint": "Tambahkan catatan A untuk {{domain}} ke IP publik server ini di DNS, tulis zona, konfirmasi",
    "leFailDns": "Penyelesaian kesalahan DNS {{domain}} (SERVFAIL atau serupa).",
    "leFailDnsHint": "Periksa server nama dan apakah zona tersebut dipublikasikan ke internet publik.",
    "leFailHttp01": "{{domain}} terselesaikan, tetapi HTTP-01 gagal (port 80 tidak dapat dijangkau atau respons salah).",
    "leFailHttp01Hint": "Buka port 80, pastikan nginx mendengarkan pada port 80, dan {{domain}} mengarah ke host ini",
    "leFailRateLimit": "Mari Enkripsi mencapai batas kecepatan.",
    "leFailRateLimitHint": "Tunggu dan coba lagi, atau hindari permintaan berulang untuk nama yang sama.",
    "leFailCaa": "Blok catatan CAA Mari Enkripsi untuk {{domain}}.",
    "leFailCaaHint": "Tambahkan CAA yang mengizinkan letsencrypt.org, atau hapus CAA yang memblokir.",
    "leFailChallenge": "Mari Enkripsi validasi domain gagal ({{domain}}).",
    "leFailChallengeHint": "Konfirmasikan catatan DNS A dan keterjangkauan port 80, lalu coba lagi; lihat letsencrypt.log.",
    "leFailUnknown": "Permintaan Enkripsi Mari gagal ({{domain}}).",
    "leFailUnknownHint": "Buka letsencrypt.log untuk detailnya.",
    "leFailRawTail": "Detail teknis (kutipan): {{snippet}}",
    "requestFailedWhy": "Mengapa gagal",
    "requestFailedNext": "Langkah selanjutnya",
    "retryRequest": "Permintaan coba lagi",
    "retryRequestFor": "Coba lagi permintaan untuk {{domain}}",
    "retryInTableHint": "Coba lagi dari baris domain yang gagal dalam daftar di bawah",
    "bindingsTitle": "Pengikatan & pembaruan",
    "autoRenewLabel": "Perpanjangan otomatis",
    "autoRenewYes": "Diaktifkan",
    "autoRenewNo": "Tidak diaktifkan / belum dikonfirmasi",
    "autoRenewYesDetail": "Mekanisme pembaruan terdeteksi: {{source}}. Mari Enkripsi sertifikat harus diperbarui sebelum habis masa berlakunya ketika certbot dalam keadaan sehat.",
    "autoRenewNoDetail": "Tidak ditemukan certbot.timer atau pembaruan cron yang diaktifkan. Aktifkan certbot.timer atau sertifikat akan kedaluwarsa kecuali Anda memperbaruinya secara manual.",
    "renewSourceCron": "panel/sistem cron",
    "renewTimerEnabled": "pengatur waktu sistemd diaktifkan: {{unit}}",
    "renewTimerDisabled": "Ditemukan {{unit}} tetapi tidak diaktifkan (systemctl aktifkan --sekarang {{unit}})",
    "renewTimerInstalledUnknown": "Host memiliki {{unit}} file unit; konfirmasi systemctl aktifkan --sekarang",
    "renewTimerActive": "{{unit}} aktif",
    "renewViaCron": "Ditemukan {{count}} pekerjaan cron yang menyebutkan certbot/renew",
    "renewNone": "Tidak ada certbot.timer atau LE renew cron yang terdaftar",
    "expiresUnknown": "Tidak dikenal",
    "expiresUnknownHint": "File sertifikat tidak dapat dibaca (izin/jalur);",
    "expiresInDays": "dalam {{n}} hari",
    "expiresAt": "· Kedaluwarsa {{date}}",
    "projectsAt": "· Proyek: {{names}}",
    "mailAt": "· Surat: {{domains}}",
    "noBindings": "Tidak ada pengikatan proyek/email yang terdeteksi",
    "certsTitle": "Sertifikat ({{count}})",
    "colDomain": "Domain",
    "colProvider": "Sumber",
    "providerUpload": "Mengunggah",
    "colLocalFiles": "File lokal",
    "filesYes": "Ya",
    "filesNo": "TIDAK",
    "colExpires": "Kedaluwarsa",
    "renew": "Memperbarui",
    "renewFor": "Perpanjang Mari Enkripsi untuk {{domain}}",
    "deleteDomain": "Hapus {{domain}}",
    "colStatus": "Status",
    "emptyTitle": "Belum ada sertifikat",
    "emptyDesc": "Gunakan “Unggah sertifikat” atau “Minta Mari Enkripsi” di atas",
    "uploadTitle": "Unggah sertifikat",
    "uploadDesc": "Tempel konten PEM; panel menulis file di server",
    "domainHint": "Domain primer untuk sertifikat ini, mis. contoh.com",
    "fullchainLabel": "Rantai sertifikat (rantai penuh)",
    "fullchainHint": "PEM dengan sertifikat server dan CA perantara",
    "privkeyLabel": "Kunci pribadi (kunci pribadi)",
    "privkeyHint": "Kunci pribadi PEM cocok dengan sertifikat — jaga kerahasiaannya",
    "uploadHint": "Unggah hanya menulis file;",
    "leTitle": "Permintaan Mari Enkripsi",
    "leDesc": "Panel meminta sertifikat di server — tidak ada certbot manual",
    "requestCert": "Minta sertifikat",
    "domainLeHint": "Karakter pengganti Apex/domain atau *.example.com",
    "domainLePlaceholder": "contoh.com atau *.contoh.com",
    "emailLabel": "Hubungi email",
    "emailHint": "Untuk pemberitahuan kedaluwarsa Let's Encrypt; biarkan kosong untuk menggunakan admin@domain",
    "leDns01Hint": "Wildcard menggunakan dns-01: panel memulai tantangan manual certbot — menyelesaikan catatan TXT",
    "leHttp01Hint": "Domain normal menggunakan http-01 (plugin nginx)",
    "deleteTitle": "Hapus sertifikat?",
    "deleteDesc": "Menghapus file sertifikat dan registrasi untuk {{domain}}.",
    "deleteNeedDomain": "Hapus sertifikat ini — ketikkan nama domain untuk mengonfirmasi",
    "savedCert": "Sertifikat tersimpan untuk {{domain}}",
    "uploadFailed": "Gagal mengunggah",
    "requestBlocked": "Tidak dapat menyelesaikan permintaan sertifikat di panel admin",
    "requestDone": "Permintaan sertifikat selesai",
    "requestFailed": "Permintaan sertifikat tidak berhasil",
    "applyFailed": "Permintaan gagal",
    "deletedCert": "Dihapus {{domain}}",
    "uninstallCertbotWarn": "Menghapus certbot akan menghentikan pembaruan otomatis sertifikat Let's Encrypt yang ada.",
    "uninstallCertbot": "Copot pemasangan certbot (kehilangan perpanjangan otomatis)",
    "domainRequired": "Masukkan domain.",
    "domainInvalid": "Format domain tidak valid.",
    "domainKnownHint": "Pilih domain proyek, DNS, atau surel yang dikenal, atau ketik sendiri."
  },
  "stackWizard": {
    "purgeConfirm": "Konfirmasikan pembersihan? Jalur data yang terdaftar (database/mail) akan dihapus secara permanen.",
    "installedCount": "Terpasang {{installed}} · Hilang {{missing}}",
    "countHint": "Jumlah ini adalah paket OS dalam paket perangkat lunak — bukan unit matriks layanan di tab lain.",
    "executeRoot": "Perubahan sistem {{execute}} · administrator {{root}}",
    "manifestPlan": "Rencana {{plan}} ({{bundles}})",
    "manifestHint": "Paket dan paket perangkat lunak yang terakhir dipilih",
    "needRootExecute": "Instal/hapus langsung memerlukan hak administrator dan izin perubahan sistem. Anda masih bisa melakukan uji coba.",
    "modeInstall": "Instal rencana",
    "modeUninstall": "Copot pemasangan",
    "plan": "Rencana",
    "customBundles": "Paket khusus",
    "sqlExclusive": "Server SQL (eksklusif)",
    "clamavOptional": "opsional, besar",
    "componentsTitle": "Komponen yang akan dipasang",
    "dryRun": "Pratinjau uji coba",
    "installNow": "Instal sekarang",
    "uninstallHint": "Pilih bundel yang akan dihapus. Tanpa pilihan, penghapusan tidak bisa. Data dipertahankan secara default.",
    "dataPolicy": "Kebijakan data",
    "keepData": "Simpan datanya",
    "purgeData": "Bersihkan data",
    "uninstallNow": "Copot pemasangannya sekarang",
    "uninstallNeedSelect": "Pilih setidaknya satu paket. Pilihan kosong bukan lagi berarti menghapus semua.",
    "uninstallConfirmTitle": "Hapus paket yang dipilih?",
    "uninstallConfirmDesc": "{{count}} bundel akan dihapus. Ketik HAPUS untuk mengonfirmasi.",
    "bundle": {
      "control-plane": "Pesawat kendali",
      "web": "hosting web",
      "database": "Basis Data",
      "email": "Tumpukan surat",
      "dns": "DNS",
      "ftp": "FTP / FTPS",
      "defense": "Pertahanan tuan rumah",
      "runtimes": "Waktu proses bahasa"
    },
    "planTitle": {
      "minimal": "Kontrol pesawat saja",
      "recommended": "Hosting yang direkomendasikan",
      "full": "Semua perangkat lunak"
    }
  },
  "support": {
    "title": "Dukungan",
    "sub": "Creator, donasi, dan YSK Limited — produk gratis, bantuan nyata",
    "creatorTitle": "Pencipta",
    "creatorBody": "YSK Server adalah bidang kontrol satu host yang gratis dan jujur bagi operator yang ingin memiliki stack-nya sendiri. Proyek ini dipelihara secara terbuka; umpan balik dan laporan bug menjaganya tetap tajam.",
    "donateTitle": "Dukung / Donasi",
    "donateBody": "Jika YSK Server menghemat waktu Anda, pertimbangkan untuk mensponsori pengembangan. Setiap kontribusi membantu menjaga produk tetap gratis untuk semua orang.",
    "donateGithub": "Sponsor GitHub",
    "donateOther": "Cara lain untuk memberi",
    "yskTitle": "YSK Limited",
    "yskIntro": "Butuh bantuan langsung di luar panel gratis? YSK Limited dapat membantu:",
    "yskSvc1": "Pemasangan server, penguatan, dan operasi berkelanjutan",
    "yskSvc2": "Desain stack hosting (web, email, DNS, basis data)",
    "yskSvc3": "Migrasi, otomatisasi, dan integrasi kustom",
    "yskSvc4": "Respons insiden dan tinjauan kesiapan produksi",
    "yskNoPrice": "Tidak ada harga di sini — hubungi kami untuk percakapan yang sesuai dengan lingkungan Anda.",
    "yskWebsite": "ysk.hk",
    "helpTitle": "Ada masalah?",
    "helpBody": "Kirim email berisi OS, jalur log pemasangan, dan apa yang Anda harapkan vs yang terjadi. Kami membaca setiap pesan.",
    "docsHint": "Dokumentasi lengkap ada di repositori pada",
    "donateLinktree": "Linktree",
    "cryptoTitle": "Kripto / handle Web3",
    "cryptoHint": "Kirim hanya di jaringan yang sesuai. Periksa ulang alamat sebelum mengirim.",
    "cryptoNetwork": "Jaringan",
    "cryptoAddress": "Alamat",
    "copy": "Salin",
    "copied": "Disalin",
    "copyTitle": "Salin {{address}}",
    "docsLink": "Dokumentasi",
    "diagTitle": "Ringkasan diagnostik",
    "diagBody": "Salin versi, jalankan, dan host fakta untuk ditempelkan ke email. Ini bukan bundel log lengkap.",
    "diagCopy": "Salin ringkasan diagnostik",
    "diagCopied": "Ringkasan diagnostik disalin",
    "diagCopyTitle": "Salin versi, EXECUTE, dan fakta host",
    "diagPreview": "Pratinjau yang akan disalin",
    "diagLoading": "Memuat diagnostik…",
    "diagLoadFailed": "Tidak dapat memuat diagnostik",
    "copiedAddr": "Disalin {{addr}}",
    "diagStatus": "Status",
    "diagMode": "Mode",
    "diagProtection": "Perlindungan",
    "diagHostname": "Nama host",
    "diagOs": "OS"
  },
  "system": {
    "exportLoadFailed": "Gagal memuat data ekspor",
    "dryRunDone": "Uji coba selesai (sistem tidak berubah)",
    "rebuildDone": "Permintaan pembangunan kembali selesai — lihat hasil operasi",
    "exportWritten": "Ekspor conf tertulis/terkelola terdaftar",
    "rebuildFailed": "Pembangunan kembali gagal",
    "hostFallback": "Tuan rumah",
    "mem": "Ingatan",
    "diskPeak": "Puncak disk",
    "exportRebuild": "Ekspor / Bangun Kembali",
    "dnsCerts": "DNS / sertifikat",
    "editIdentity": "Sunting identitas",
    "power": "Kekuatan",
    "metrics": "Metrik",
    "writeExports": "Tulis direktori ekspor",
    "dryRunSync": "Sinkronisasi uji coba",
    "hostConsole": "Konsol tuan rumah",
    "loadingHost": "Memuat ikhtisar host…",
    "identity": "Identitas",
    "identityReadonly": "Hanya-baca — memerlukan YSK_EXECUTE + root untuk menerapkan",
    "identityTools": "Tetapkan nama host dan zona waktu melalui alat sistem",
    "hostnameHint": "Nama host sistem",
    "writable": "Dapat ditulisi",
    "locked": "Terkunci",
    "hostname": "Nama host",
    "prettyName": "Nama cantik",
    "optional": "Opsional",
    "prettyPh": "Nama tampilan yang ramah",
    "timezone": "Zona waktu",
    "timezoneHint": "Pilih zona waktu IANA dari daftar (misalnya Asia/Hong_Kong)",
    "timezoneNow": "Waktu tuan rumah sekarang: {{time}} ({{tz}})",
    "timezoneBrowserDiff": "Tuan rumah ini menggunakan {{host}}; browser Anda menggunakan {{browser}}. Mengubah zona waktu di sini akan mengubah jam host, bukan browser.",
    "timezoneSelect": "Pilih zona waktu",
    "notExported": "Belum diekspor",
    "dns": "DNS",
    "updated": "Diperbarui",
    "applyIdentity": "Terapkan identitas",
    "identitySetHostname": "Nama host disetel ke {{name}}",
    "identitySetPretty": "Nama host cantik disetel ke {{name}}",
    "identityClearPretty": "Nama host yang cantik dibersihkan",
    "identitySetTimezone": "Zona waktu disetel ke {{tz}}",
    "panelSsl": "Panel SSL",
    "panelTls": {
      "title": "Panel HTTPS",
      "sub": "Bidang kontrol (ysk-server) melayani TLS di listeningPort; WebAuthn/Kunci Sandi memerlukan HTTPS",
      "domain": "domain panel",
      "domainHint": "Digunakan untuk penerbitan/pengikatan sertifikat, mis. demo.ysk.hk",
      "email": "Mari Enkripsi email",
      "status": "Status",
      "enabled": "TLS diaktifkan di konfigurasi",
      "disabled": "TLS mati (HTTP)",
      "serving": "Koneksi ini: HTTPS",
      "servingHttp": "Koneksi ini: HTTP",
      "expires": "Sertifikat kedaluwarsa",
      "certPath": "Jalur sertifikat",
      "issueEnable": "Terbitkan sertifikat & aktifkan HTTPS",
      "enableExisting": "Aktifkan dengan sertifikat yang ada",
      "disable": "Nonaktifkan panel HTTPS",
      "disableNeedConfirm": "Perlu konfirmasi — ketik DISABLE-HTTPS",
      "needDomain": "Masukkan nama host/domain terlebih dahulu",
      "needFqdn": "Perlu FQDN (example.com), bukan nama host kosong",
      "urlHint": "Setelah restart buka {{url}}",
      "certMissing": "TLS diaktifkan tetapi file sertifikat/kunci hilang",
      "restartToApply": "Mulai ulang server ysk untuk menerapkan HTTPS",
      "noConfig": "config.json tidak ditemukan (mulai dengan --config)",
      "usingExisting": "Menggunakan sertifikat lokal yang ada",
      "usingLe": "Menggunakan jalur langsung Let's Encrypt",
      "needCertFirst": "Tidak ada sertifikat untuk {{domain}}; terbitkan atau unggah terlebih dahulu",
      "configWritten": "Pengaturan TLS panel ditulis",
      "disabledNote": "Panel TLS dinonaktifkan",
      "certAlreadyPresent": "Sertifikat sudah ada; melewatkan penerbitan ulang",
      "restartManual": "Mulai ulang secara manual: systemctl restart ysk-server",
      "restarted": "server ysk dimulai ulang",
      "restartFailed": "Gagal memulai ulang: {{detail}}",
      "firewallHint": "Jika menjangkau dari internet, izinkan port panel (default 9287/tcp)",
      "restartNow": "Mulai ulang server ysk segera setelahnya",
      "restartNowHint": "Hentikan sesi ini;",
      "restartConfirm": "Mulai ulang layanan panel sekarang? Koneksi ini mungkin terputus — dibuka kembali melalui HTTPS.",
      "manualRestart": "Mulai ulang secara manual, lalu buka {{url}}",
      "reconnectHttps": "Layanan mungkin telah dimulai ulang. Hubungkan kembali di {{url}}.",
      "leStrategies": "Sertifikat panel: coba webroot → nginx certonly → mandiri (tanpa --redirect)",
      "leOk": "Mari Enkripsi sertifikat yang diperoleh untuk {{domain}}",
      "leFailed": "Permintaan sertifikat gagal: {{detail}}",
      "leHint": "Pastikan DNS A menunjuk di sini dan port 80 dapat dijangkau (atau nginx melayani domain)",
      "openFirewall": "Jika publik: izinkan port panel {{port}}/tcp (Firewall → port terbuka → Panel 9287)",
      "disableConfirmTitle": "Nonaktifkan panel HTTPS?",
      "disableConfirmDesc": "Panel akan menyajikan HTTP. WebAuthn/Passkey akan berhenti berfungsi hingga HTTPS aktif kembali.",
      "disablePasskeyWarn": "Kunci sandi yang terdaftar memerlukan HTTPS — kunci sandi tersebut akan gagal pada HTTP.",
      "listenPublic": "Panel mendengarkan pada alamat publik (0.0.0.0/::). Batasi dengan firewall atau ikat ke 127.0.0.1.",
      "bootstrapCert": "Ini adalah sertifikat bootstrap yang ditandatangani sendiri — browser akan memperingatkan. Terbitkan sertifikat tepercaya untuk domain panel.",
      "cliNoSocket": "CLI tidak memiliki soket HTTP langsung; serveHttps disimpulkan dari soket config dan mendengarkan (ss).",
      "listenHost": "Dengarkan alamatnya",
      "currentHost": "Sesi ini",
      "replaceCert": "Ganti dengan sertifikat tepercaya"
    },
    "timeNtp": "Waktu & NTP",
    "clockStatus": "Status jam sistem",
    "local": "Lokal",
    "utc": "UTC",
    "source": "Sumber",
    "ntpService": "layanan NTP",
    "ntpServiceActive": "Berlari",
    "ntpServiceInactive": "Berhenti",
    "ntpServiceNa": "T/A",
    "ntpSync": "Sinkronisasi jam",
    "ntpSyncedYes": "Disinkronkan",
    "ntpSyncedNo": "Tidak disinkronkan",
    "ntpSyncedUnknown": "Tidak dikenal",
    "ntpRequested": "Pengaktifan sinkronisasi NTP diminta",
    "ntpFailed": "Gagal mengaktifkan NTP",
    "enableNtp": "Aktifkan sinkronisasi NTP",
    "network": "Jaringan",
    "networkSub": "Hanya baca · netplan lengkap tidak ada di halaman ini",
    "noIp": "Tidak dapat membaca IP",
    "storage": "Penyimpanan",
    "metricsDetail": "Detail metrik",
    "noDisk": "Tidak dapat membaca disk",
    "avail": "Tersedia {{v}}",
    "shortcuts": "Pintasan operasi",
    "shortcutsAria": "Pintasan operasi",
    "scServices": "Matriks layanan",
    "scServicesD": "siklus hidup satuan",
    "scUnit": "Unit bidang kendali",
    "scUnitD": "Unit sistem panel",
    "scReadiness": "Kesiapan",
    "scReadinessD": "Gerbang produksi",
    "scUpdates": "Pembaruan sistem",
    "scUpdatesD": "Paket / CVE",
    "scMetrics": "Metrik tuan rumah",
    "scMetricsD": "Muat peringatan",
    "scLogs": "Pusat pencatatan",
    "scLogsD": "jurnal/file",
    "powerTitle": "Kekuatan (zona bahaya)",
    "powerWarn": "Reboot/poweroff mengganggu semua layanan dan panel. Panel tidak dapat menghidupkan host — memerlukan akses fisik atau hypervisor.",
    "unlocked": "Tidak terkunci",
    "powerUnlock": "Buka kunci zona bahaya",
    "powerLock": "Kunci zona bahaya",
    "noScheduledPower": "Tidak ada reboot atau mematikan yang dijadwalkan",
    "powerCaps": "Membutuhkan YSK_EXECUTE=1 dan root. Sekarang JALANKAN={{exec}}, root={{root}}.",
    "scheduledPower": "Pematian/reboot terjadwal terdeteksi",
    "cancelScheduleHint": ". Gunakan “Batalkan jadwal” untuk menarik.",
    "rebootHost": "Nyalakan ulang host…",
    "poweroffHost": "Matikan…",
    "cancelled": "Dibatalkan",
    "cancelFailed": "Pembatalan gagal",
    "cancelSchedule": "Batalkan jadwal",
    "confirmStrings": "Konfirmasikan dengan REBOOT / POWEROFF. Penundaan default ~1 menit untuk mematikan dan menyalakan ulang (mematikan +N). Ditulis untuk diaudit.",
    "confirmReboot": "Konfirmasikan reboot host?",
    "confirmPoweroff": "Konfirmasikan matikan?",
    "confirmRebootDesc": "Semua layanan dan sesi panel akan dihentikan. Ketik REBOOT untuk mengonfirmasi.",
    "confirmPoweroffDesc": "Host akan mati; panel tidak dapat dihidupkan dari jarak jauh. Ketik POWEROFF untuk mengonfirmasi.",
    "typeToUnlock": "Ketik {{need}} untuk membuka kunci",
    "confirmRebootBtn": "Konfirmasikan reboot",
    "confirmPoweroffBtn": "Konfirmasikan matikan",
    "sentDisconnect": "Terkirim — koneksi akan terputus",
    "powerFailed": "Aksi kekuasaan gagal",
    "exportExplain": "Ekspor = ringkasan panel DB JSON. Rebuild = conf terkelola → /etc/nginx/conf.d + muat ulang. Sinkronisasi membutuhkan root + EXECUTE.",
    "controlSummary": "Ringkasan bidang kontrol",
    "controlSummarySub": "Snapshot DB langsung · pratinjau / unduh / tulis ke server",
    "snapshotLoaded": "Ringkasan dimuat · {{at}}",
    "previewSummary": "Ringkasan pratinjau",
    "downloadedJson": "JSON diunduh ke browser",
    "downloadJson": "Unduh JSON",
    "snapshotMeta": "Dihasilkan {{at}} · pengguna {{users}} · paket {{packages}}",
    "previewHint": "Klik “Pratinjau ringkasan” untuk memuat snapshot bidang kendali.",
    "managedNotEtc": "dataDir/nginx/conf.d — tidak sama dengan yang diterapkan pada /etc",
    "nFiles": "{{count}} file",
    "noManaged": "Belum ada konferensi yang dikelola",
    "noManagedDesc": "Muncul setelah penerbitan proyek Nginx",
    "readFailed": "Gagal membaca",
    "preview": "Pratinjau",
    "previewModalDesc": "Konten konferensi terkelola (dataDir)",
    "prevPage": "Sebelumnya",
    "nextPage": "Berikutnya",
    "pageOf": "Halaman {{page}} / {{total}} · {{count}} file",
    "managedPager": "Halaman konferensi yang dikelola",
    "syncToSystem": "Sinkronkan ke sistem",
    "syncSub": "Salin ke /etc/nginx/conf.d dan muat ulang — memerlukan root + EXECUTE",
    "syncReload": "Sinkronisasi + muat ulang",
    "syncReloadNeedConfirm": "Perlu konfirmasi — menulis /etc/nginx/conf.d dan memuat ulang Nginx",
    "exportOnly": "Ekspor saja + daftar conf",
    "dryRun": "Lari kering",
    "dryRunNote": "Uji coba tidak mengubah sistem.",
    "exportHistory": "Riwayat ekspor server",
    "exportHistorySub": "dataDir/ekspor · unduhan yang diautentikasi",
    "noExports": "Belum ada server yang mengekspor file",
    "noExportsDesc": "Klik \"Tulis direktori ekspor\" untuk membuat",
    "downloaded": "Diunduh {{name}}",
    "download": "Unduh",
    "syncConfirmTitle": "Sinkronkan Nginx ke sistem?",
    "syncConfirmDesc": "Sinkronkan konfigurasi Nginx yang dikelola ke /etc/nginx/conf",
    "uptime": "Waktu aktif",
    "load1m": "Muat 1m",
    "executeLabel": "EXECUTE",
    "rootLabel": "Akar",
    "managedLabel": "Dikelola",
    "managedCount": "Dikelola",
    "exportsCount": "Ekspor",
    "managedNginxTitle": "Nginx yang Dikelola",
    "exportPath": "Jalur ekspor",
    "mode": "Mode",
    "managedConf": "Konferensi terkelola",
    "dryRunFlag": "Lari kering",
    "timezoneSearch": "Filter zona waktu…",
    "resyncNtp": "Sinkronisasi ulang NTP",
    "storageSub": "Penggunaan disk",
    "nginxLeftover": "Sisa",
    "nginxUnused": "Tidak dipakai",
    "nginxLeftoverHint": "Conf sisa (mis. public-files). Tetap ikut sinkron sampai Anda bertindak.",
    "nginxUnusedHint": "Conf bawaan / catch-all (000-default). Tetap ikut sinkron sampai Anda bertindak.",
    "nginxRemoveLeftover": "Hapus sisa",
    "nginxRemoveLeftoverTitle": "Hapus sisa nginx conf?",
    "nginxRemoveLeftoverDesc": "Menghapus {{name}} dari inventaris panel. Salinan langsung /etc/nginx dihapus hanya dengan YSK_EXECUTE + root. 000-default tidak tersisa dan tidak dapat dihapus di sini.",
    "needExecuteRoot": "Membutuhkan YSK_EXECUTE + akar"
  },
  "systemd": {
    "enabled": "Diaktifkan",
    "disabled": "Dengan disabilitas",
    "notInstalled": "Tidak dipasang",
    "running": "Berlari",
    "notRunning": "Tidak berjalan",
    "failed": "Gagal",
    "activating": "Mengaktifkan",
    "unitMissing": "Unitnya hilang",
    "loadFailed": "Gagal memuat",
    "opFailed": "Operasi gagal",
    "installedEnabled": "Diinstal dan mencoba mengaktifkan",
    "unitTemplateWritten": "Templat unit ditulis",
    "writeTemplate": "Tulis templat direktori manajemen",
    "writeTemplateDesc": "Membuat ysk-server.service di bawah dataDir/systemd (tidak mengubah /etc)",
    "templateExists": "Template manajemen sudah ada",
    "installEnable": "Instal ke /etc/systemd dan aktifkan",
    "installEnableDesc": "Salin unit → daemon-reload → aktifkan --sekarang",
    "needExecuteRoot": "Membutuhkan YSK_EXECUTE dan root",
    "serviceNotRunning": "Layanan tidak berjalan",
    "serviceNotRunningHint": "Unit mungkin diinstal tetapi tidak aktif — coba Instal & aktifkan atau matriks layanan",
    "controlRunning": "Layanan bidang kontrol berjalan",
    "unlockApply": "Membuka kunci sistem menerapkan kemampuan",
    "startAsRoot": "Mulai sebagai root dengan YSK_EXECUTE=1",
    "status": "Status",
    "bootEnabled": "Mulai saat boot",
    "on": "Pada",
    "off": "Mati",
    "yes": "Ya",
    "no": "TIDAK",
    "canInstall": "Dapat diinstal",
    "copyEnable": "Salin ke /etc/systemd dan aktifkan --now",
    "needExecuteRootShort": "Perlu EXECUTE + root",
    "probing": "Menyelidiki status sistem…",
    "suggestedSteps": "Langkah-langkah yang disarankan",
    "install": "Memasang",
    "policy": "Kebijakan",
    "about": "Tentang",
    "exists": "Ada",
    "missing": "Hilang",
    "notWritten": "Belum ditulis",
    "related": "Terkait",
    "opsResult": "Hasil operasi",
    "writeTemplateOnly": "Tulis templat saja",
    "installAndEnable": "Instal dan aktifkan",
    "stepReport": "Laporan langkah",
    "installEnableShort": "Instal aktifkan",
    "cannotInstall": "Belum dapat menginstal ke sistem: perlu",
    "andRoot": "dan akar. Templat tulis masih membuat file manajemen. Melihat",
    "probeDetail": "Selidiki detailnya",
    "probeDetailSub": "Status sistemd langsung dan file unit pada disk",
    "unit": "Satuan",
    "manageTemplate": "Templat manajemen",
    "installOps": "Instal tindakan",
    "twoModes": "Dua mode untuk kebutuhan berbeda — pilih berdasarkan lingkungan",
    "writeOnlyTitle": "Tulis templat saja",
    "writeOnlyBody": "Membuat file unit direktori manajemen. Baik untuk ditinjau atau disiapkan tanpa root.",
    "willNotEnable": "Tidak mengaktifkan layanan.",
    "writeTemplateBtn": "Tulis templat",
    "installEnableTitle": "Instal dan aktifkan",
    "installEnableBody": "Salin ke /etc/systemd/system, daemon-reload, aktifkan --now. Membutuhkan root + EXECUTE.",
    "policyWrite": "Tulis template saja — hanya dataDir, bukan /etc",
    "policyInstall": "Instal dan aktifkan — cp + daemon-reload + aktifkan",
    "policyBlocked": "Tidak ada EXECUTE atau non-root → jelas diblokir, tidak ada kesuksesan palsu",
    "policyNotEqual": "Tulis template ≠ layanan diaktifkan ≠ mendengarkan",
    "shortcutPower": "JALANKAN / kekuasaan",
    "shortcutOther": "Unit lainnya",
    "cannotInstallFull": "Belum dapat menginstal ke sistem: memerlukan YSK_EXECUTE=1 dan root. Templat tulis masih membuat file manajemen. Melihat",
    "policyWriteFull": "Tulis template saja — hanya dataDir, bukan /etc",
    "policyNotEqualFull": "Tulis template ≠ layanan diaktifkan ≠ mendengarkan",
    "controlPlaneUnit": "Unit bidang kendali",
    "kpiRuntime": "Waktu proses",
    "rawStateHint": "Status unit mentah di tooltip",
    "bootHint": "Apakah unit menyala saat boot",
    "kpiBoot": "Aktifkan booting",
    "kpiCaps": "Terapkan kemampuan",
    "capsReady": "Dapat menginstal ke sistem",
    "capsBlocked": "Tidak dapat melamar",
    "unitFiles": "File satuan",
    "unitFilesSub": "Jalur sistem vs templat yang dikelola panel (peran berbeda)",
    "systemUnitFile": "Unit sistem (/ dll)",
    "systemUnitHint": "Unit systemd memuat; muncul setelah menginstal & mengaktifkan.",
    "managedUnitFile": "Templat terkelola (dataDir)",
    "managedUnitHint": "Templat yang ditulis panel — tidak sama dengan yang dipasang di /etc.",
    "managedPathHint": "dataDir/systemd/ysk-server.service",
    "fragmentPath": "Jalur fragmen",
    "fromSystemd": "Dari sistemd",
    "pid": "PID {{pid}}",
    "nextAction": "Disarankan langkah selanjutnya",
    "controlRunningHint": "systemctl is-aktif = aktif",
    "aboutPolicyTitle": "Terapkan kebijakan",
    "aboutPolicySub": "Penulisan templat dan pemasangan sistem merupakan langkah terpisah. Menjalankan kembali setelah instalasi adalah operasi normal, bukan langkah yang hilang.",
    "policyInstallFull": "Instal & aktifkan: salin ke /etc/systemd/system, muat ulang daemon, aktifkan --sekarang. Membutuhkan root + EXECUTE.",
    "policyBlockedTitle": "Diblokir tanpa hak istimewa",
    "policyNotEqualTitle": "Negara-negara tidak setara"
  },
  "tabs": {
    "scrollLeft": "Gulir tab ke kiri",
    "scrollRight": "Gulir tab ke kanan",
    "about": "Tentang",
    "main": "Tindakan",
    "stack": "Perangkat lunak",
    "unknown": "Tidak ada tab seperti itu",
    "unknownHint": "Halaman ini tidak memiliki tab bernama {{tab}}."
  },
  "terminal": {
    "tabSession": "Sidang",
    "target": "Masuk sebagai",
    "connect": "Menghubungkan",
    "disconnect": "Memutuskan",
    "user": "Pengguna",
    "size": "Ukuran",
    "stateConnected": "Terhubung",
    "stateConnecting": "Menghubungkan",
    "stateIdle": "Menganggur",
    "connecting": "Sesi pembukaan…",
    "connectedAs": "Masuk sebagai {{user}}",
    "disconnected": "Terputus",
    "error": "Kesalahan terminal",
    "wsError": "WebSocket gagal",
    "exitCode": "Kode keluar {{code}}",
    "needRootExecute": "Membutuhkan root + YSK_EXECUTE=1 untuk shell sistem.",
    "groupSystem": "Sistem",
    "groupProject": "Proyek",
    "unavailable": "tidak tersedia",
    "copyAll": "Salin semua",
    "copyAllNeedConn": "Hubungkan dulu — buffer kosong saat terputus",
    "placeholder": "Pilih identitas, lalu Hubungkan",
    "aboutTitle": "Tentang terminal",
    "aboutSub": "Shell OS interaktif di browser (pengguna lokal). Bukan klien SSH jarak jauh yang sembarangan.",
    "aboutWhat": "Apa itu",
    "aboutWhatBody": "Shell login PTY asli (bash -l). Pengguna proyek melalui runuser; root melalui shell root.",
    "aboutReq": "Persyaratan",
    "aboutReqBody": "Bidang kontrol harus dijalankan sebagai root dengan YSK_EXECUTE diaktifkan.",
    "aboutUsers": "Identitas",
    "aboutUsersBody": "Root, atau pengguna proyek Linux yang disediakan OS.",
    "stepUpRequired": "Shell root memerlukan kode TOTP/pemulihan",
    "stepUpHint": "Login root memerlukan peningkatan 2FA ketika akun Anda mengaktifkan TOTP.",
    "stepUpTitle": "Konfirmasikan shell root",
    "stepUpDesc": "Masukkan kode autentikator Anda atau kode pemulihan.",
    "totpLabel": "TOTP / kode pemulihan",
    "sessionStillOpen": "Shell aktif masih terhubung saat Anda membaca halaman ini.",
    "rootConfirmTitle": "Buka shell root?",
    "rootConfirmDesc": "Sesi ini adalah PTY root yang tidak dibatasi pada host. Perintah diaudit.",
    "rootConfirmBody": "Lanjutkan hanya jika Anda ingin menjalankan perintah host yang memiliki hak istimewa."
  },
  "uiInline": {
    "s27d9daa5": "waktu proses {{v0}} {{v1}},",
    "sb8eaefa3": "waktu proses {{v0}},",
    "s7d540128": "· {{v0}}",
    "s814bcc7c": "· {{v0}}",
    "s3f7c3eae": "Memperbarui",
    "s92e48065": "Melewati",
    "sdff0f697": "Jam tangan",
    "s012f2d7e": "Memperbarui",
    "s20455064": "…",
    "s9b34f8c3": "…",
    "s8e3824cb": "Pembaruan 0/{{v0}}：…",
    "sc2570ff7": "Pembaruan {{v0}}/{{v1}}：{{v2}}",
    "s0bd0c471": "： {{v0}}，Gagal {{v1}}",
    "s2980553a": "…",
    "s303ee0f7": "Membatalkan…()",
    "s21858fe5": "Membatalkan",
    "sddc05404": "Menutup",
    "saf251c2a": "Memperbarui()",
    "s5929623c": "…",
    "s18b08919": "…",
    "se2b088fc": "Pembaruan ({{v0}})",
    "sb2848bc7": "Memperbarui?",
    "sc1910cf2": "{{v0}} 。 akar JALANKAN。",
    "sc13bb38c": "／；。",
    "sea4ba90a": "Sarat",
    "sdd78429a": "Tertulis",
    "s9b6c1b03": "Tentang",
    "s858f4eca": "…",
    "s090aa1a7": "Kelola。 Proyek Nginx → → 。",
    "sac96ec39": "Panel mencatat pemasangan {{v0}}, tetapi pemeriksaan host tidak menemukan biner. Tidak diinstal — selidiki ulang atau instal ulang.",
    "sf7f7807b": "Bawaan",
    "sc9530028": "Terbaru,",
    "s9602769e": "Terpasang {{v0}} · upstream terbaru {{v1}}",
    "sb8b5a353": "Buka ／ Rust ： 「Instal」, 「Default」 PATH 。",
    "sac155c20": "Ekstensi non-inti yang dapat dilepas (apt delete; pertahankan FPM/CLI)",
    "s23379974": "「Instal」。, waktu proses。",
    "s7b6d4414": "Tidak terinstal PHP {{v0}}： 「Instal PHP {{v0}}」+（Instal）。",
    "s2e9a1b03": "Instal PHP {{v0}}（）",
    "s62b73dd7": "…",
    "se23513e5": "PHP？",
    "sf8c8ff4b": "Akan mungkin menghapus \"{{v0}}\". FPM/CLI Inti tidak akan dihapus.",
    "s7aa09150": "Dipasang",
    "sbcbdbc49": "Tidak dipasang",
    "sae7738d0": "Berlari",
    "sf3af7c5e": "Tidak terdeteksi",
    "sa1d77833": "Gagal",
    "s75dddf52": "Berhenti",
    "s4e7f6152": "Pembaruan… {{v0}}/{{v1}}：{{v2}}",
    "s72cac69e": "{{v0}}: {{v1}}",
    "sd1c15b6d": "{{v0}}: {{v1}}",
    "s7a90f74c": "Pembaruan：{{v0}}",
    "s0aa24093": "{{v0}} Pembaruan",
    "s5d92ffc3": "：{{v0}}；Gagal：{{v1}}",
    "sa15a291f": "PembaruanGagal",
    "sbb823c06": "Gagal",
    "s68db1348": "{{v0}} Pembaruan Gagal",
    "s84a4e7c6": "Instal：{{v0}}…",
    "s2ca8a4f5": "root + JALANKAN；。",
    "sd9419dc9": "Instal（ root+JALANKAN）",
    "s3ec3d449": "{{v0}} Instal",
    "sbb8dfdeb": "Instal：{{v0}}",
    "s18bb4b62": "{{v0}} Instal／",
    "se9a47def": "Memasang",
    "sdc0528a2": "{{v0}} Pemasangan Gagal",
    "s69e60fb5": "Tidak ada target pembaruan",
    "s3f50fa6e": "Instal／Perbarui {{v0}} {{v1}}…（）",
    "s1f5eef17": "Tampilkan server ，Tutup。",
    "s2bf6b642": "Pembaruan（ akar YSK_EXECUTE=1）",
    "s9b4a58e8": "{{v0}} {{v1}} Instal",
    "s6dc82720": "Terpasang／Perbarui {{v0}} {{v1}}",
    "s94a1f025": ".Menunjukkan,.",
    "s73cae5a0": "{{v0}} {{v1}} Pemasangan Gagal",
    "se1050a28": "Ringkasan",
    "s8c29cb38": "…",
    "s583f0654": "…",
    "s4344c486": "…",
    "sed2550e1": "…",
    "scb435db5": "Melayani",
    "s97bbc1b7": "…",
    "s60a23151": "Kelola：Instal、Layanan、；Kelola。",
    "s5387b55b": "…",
    "s0b582c70": "…",
    "s4be2a3a4": "Dipasang",
    "s259e6f0e": "／",
    "s13b3f970": "Perlu perhatian",
    "sdd33adf9": "…",
    "sdfaaf946": ";Memperbarui.",
    "s78f03e20": "{{v0}}",
    "sbf368054": "{{v0}}",
    "s235a7426": "Memperbarui",
    "s14249f75": "Cepat",
    "saff76d0a": "Melayani",
    "s24f12f4f": "Perbarui／Instal",
    "s43a9fd7a": "：Hulu／；Layanan：。Pembaruan。",
    "sc45743bd": "…",
    "s00338fde": "Memperbarui?",
    "s0e05f4b7": "Memperbarui",
    "s4d0b4688": "Membatalkan",
    "s92b8bf67": "Memasang?",
    "s9af27043": "Instal {{v0}}：{{v1}}。 akar YSK_EXECUTE=1。",
    "s28263d85": "Memasang",
    "s2e37cbfa": "Terpasang：{{v0}}",
    "s7d52bb0c": "Bawaan {{v0}}",
    "s9f898b85": "Hulu {{v0}}",
    "s93dde991": "{{v0}} → {{v1}}",
    "s9071dcb7": "Terpasang {{v0}} · repo terbaru",
    "s0b09f444": "{{v0}}",
    "sf6cc774f": "Belum diinstal（KelolaInstal）",
    "s42f9c88b": "{{v0}}",
    "sb72e8ebc": "Memeriksa versi… atau buka halaman kelola",
    "sabac942e": "Buka halaman kelola untuk menginstal atau mengkonfigurasi",
    "sbd26894e": "Pembaruan tersedia",
    "s5985ee9a": "Terkini",
    "s090e6a43": "Pilih versi",
    "s8253535d": "Instal／Perbarui {{v0}}",
    "s1723f1d7": "Memasang……",
    "sd9db02d0": "Memperbarui",
    "sba60558e": "Perbarui {{v0}}",
    "s706de938": "Perbarui {{v0}}",
    "s0f9ddc70": "Instal {{v0}}",
    "sef864639": "Memasang",
    "s59f613d5": "Instal／ {{v0}}",
    "s78b1688f": "Perbarui {{v0}}",
    "s4989b5cf": "Mengelola",
    "s72203f17": "Melayani",
    "s75817a35": ", waktu proses",
    "s6d449473": "…",
    "s777e90e0": "Mengelola",
    "sd8bc8ab3": "Nama：{{name}}",
    "s09877be5": "Mengelola",
    "sd95910ce": "…",
    "sa72ef18d": "Peralatan",
    "s4b2bec80": "Nama",
    "sd00c0d39": "PHP ；Nama",
    "sd7c669ac": "phpMyAdmin（）",
    "s9e5d3a97": "： {{v0}}，Gagal {{v1}}",
    "s1f0a4bf9": "Membatalkan()",
    "s7193f51b": "： {{v0}},Gagal 0",
    "sd93b8620": "{{v0}} Alat",
    "sd0ef129c": "({{v0}})",
    "se6d47d0b": "Peralatan",
    "se6436711": "InstalAlat ({{v0}})",
    "s1a27a3c4": "Alat 「Waktu proses instalasi」 Instal （Instal）。",
    "s32add03e": "{{v0}} Alat。",
    "s3bca33b2": "Peralatan",
    "s8072fa0d": "{{v0}} Instal（Bawaan）",
    "s2bf2b4c4": "InstalDefault。 「Default」；Instal。",
    "s42f3d613": "Bawaan {{v0}}",
    "sdcdc5029": "Tayangan langsung tidak lengkap",
    "s55cc91e0": "Nginx Publikasikan,。",
    "s303f6113": "Coba terapkan lagi",
    "s3265f9ed": "Publikasikan Nginx",
    "s99cc48c1": "{{v0}} ； 「— —」。",
    "sa87ceeff": "Publikasikan Nginx",
    "s38a63bcb": "Pelabuhan tetap（）",
    "s5ac95c29": "Tidak dipublikasikan",
    "sc8f34a0d": "Tertulis（ muat ulang）",
    "s07fb5671": "Terapkan terlebih dahulu",
    "sa5f994e3": "Publikasi gagal",
    "s32dd17d9": "SSL 。 「SSL 」／, Publikasikan + SSL。",
    "s5516cb5b": "Status situs",
    "sed38f4ea": "Hulu",
    "sadb6ef47": "Pelabuhan proses",
    "se7a422dd": "Pelabuhan tetap",
    "s2eff57b7": "Pelabuhan proses",
    "s110671e6": "Pelabuhan saat ini",
    "s549ea65e": "Menerbitkan",
    "s9dc5c003": "Dasar",
    "s04a32a1e": "SSL :",
    "s564d50b7": "／Publikasikan + SSL。",
    "sbb6c72f1": "({{v0}})",
    "sd9b695a5": "，Publikasikan Nginx / SSL。",
    "scb85cfff": "SSL",
    "s18c1af46": "Publikasikan + SSL",
    "s6a284cb0": "Publikasikan Nginx + SSL",
    "s85483ffb": "Pemeliharaan",
    "s6993c6ba": "Bersembunyi",
    "s15671929": "Menunjukkan",
    "s56f99a6b": "Hapus proyek secara permanen",
    "sa0f2f5c6": "「{{v0}}」。。",
    "sa6710b42": "Hapus secara permanen",
    "s06569331": "sistemd / PM2 /",
    "sd20a5b0c": "Nginx conf, kumpulan PHP-FPM, Apache vhost （）",
    "s4ff53acc": "Linux rumah （）",
    "s50dda2df": "rumah Linux （）",
    "sa7f90a4a": "…",
    "se0d24557": "Nama",
    "s9a9e4e32": "rumah Linux",
    "s1cf2a97b": "Membatalkan,",
    "s51af87fd": "Nama",
    "s8b04d62f": "「{{v0}}」",
    "s49d55c8f": "Zona / domain DNS 。",
    "s239f6551": "：{{v0}}",
    "sa00380bd": "：{{v0}}",
    "sb4e3bb0b": "Memasang",
    "sae926193": "…",
    "s52573ef8": "Perbarui（ root+JALANKAN）",
    "s872d2fe0": "{{v0}} Pembaruan",
    "s6a93c0ec": "Memuat versi…",
    "s378e49b6": "Dipasang",
    "s7e805a12": "Terbaru",
    "s74b39712": "Up to date / repo terbaru",
    "s03a87d5d": "Periksa kembali yang terbaru",
    "s53c07a48": "Perbarui {{v0}}",
    "s425e8381": "Instal {{v0}}",
    "s5bd1242f": "{{v0}}：{{v1}} → {{v2}}。 akar JALANKAN。",
    "s296817b1": "Memasang()",
    "s3568a3da": "…",
    "s28256229": "Selesai",
    "s3971290f": "server…"
  },
  "updates": {
    "title": "Pembaruan cerdas",
    "body": "",
    "risk": {
      "critical": "Kritis",
      "high": "Tinggi",
      "medium": "Sedang",
      "low": "Rendah"
    },
    "justNow": "Baru saja",
    "secAgo": "{{n}}s yang lalu",
    "minAgo": "{{n}}m yang lalu",
    "hourAgo": "{{n}} jam yang lalu",
    "highRiskN": "{{count}} berisiko tinggi",
    "panelUpdate": "Pembaruan panel tersedia",
    "footerNewVersion": "Versi baru {{version}}",
    "riskOk": "Risiko dapat dikelola",
    "riskUnevaluated": "Tidak dievaluasi — jalankan Scan + OSV",
    "pendingScan": "Menunggu pemindaian",
    "packages": "Paket",
    "highRisk": "Risiko tinggi",
    "needApproval": "Perlu persetujuan",
    "hasCve": "Memiliki CVE",
    "panel": "Panel",
    "schedule": "Jadwal",
    "reload": "Muat ulang",
    "osvTitle": "Kueri OSV untuk 12 paket teratas yang disarankan (membutuhkan jaringan)",
    "scanOsv": "Pindai + OSV",
    "cveNotChecked": "Tidak diperiksa",
    "scanPkgs": "Pindai paket",
    "tabInventory": "Persediaan paket",
    "tabSelf": "Panel sendiri",
    "badgeUpdate": "Memperbarui",
    "tabSchedule": "Jadwal",
    "tabPolicy": "Kebijakan",
    "scanning": "Memindai…",
    "inventoryTitle": "Persediaan paket",
    "inventoryDesc": "Menampilkan {{shown}} / {{total}} · diinventarisasi {{when}}",
    "riskFilterAria": "Filter risiko",
    "all": "Semua",
    "upgradable": "Dapat diupgrade",
    "mediumFilter": "Sedang",
    "lowUnmarked": "Rendah / tidak bertanda",
    "searchPh": "Paket / saran / CVE…",
    "searchAria": "Paket pencarian",
    "colPackage": "Kemasan",
    "colVersion": "Versi (terinstal → Kandidat apt)",
    "installedTitle": "Dipasang",
    "noUpgrade": "(tidak ada peningkatan yang tersedia)",
    "colAdvice": "Nasihat",
    "upgradeTo": "Tingkatkan ke {{v}}",
    "sameVersion": "apt Kandidat cocok dengan versi yang diinstal",
    "noNeedUpgrade": "Tidak perlu peningkatan",
    "emptyInventory": "Belum ada paket data",
    "emptyInventoryDesc": "Gunakan \"Pindai paket\" di header halaman untuk menginventarisasi host ini",
    "emptyFilter": "Tidak ada paket yang cocok dengan filter",
    "emptyFilterDesc": "Ubah filter risiko atau hapus pencarian",
    "resetFilters": "Setel ulang filter",
    "selfLoading": "Memuat status pembaruan mandiri…",
    "selfTitle": "Pembaruan mandiri panel",
    "selfCheckFailed": "Pemeriksaan gagal",
    "selfUpToDate": "Terkini",
    "selfAvailable": "Pembaruan tersedia",
    "selfCurrent": "Versi saat ini",
    "selfLatest": "Versi terbaru",
    "selfChannel": "Saluran",
    "checkSelf": "Periksa pembaruan",
    "applySelf": "Terapkan pembaruan mandiri",
    "scheduleTitle": "Jadwal pemindaian otomatis",
    "scheduleDesc": "Inventarisasi berkala; tidak melakukan peningkatan otomatis",
    "enabled": "Diaktifkan",
    "disabled": "Dengan disabilitas",
    "cron": "Ekspresi Cron",
    "saveSchedule": "Simpan jadwal",
    "policyTitle": "Perbarui kebijakan",
    "policyBody": "Paket berisiko tinggi dan CVE memerlukan persetujuan sebelum mengajukan permohonan",
    "applyPkg": "Terapkan peningkatan paket",
    "rebootNeeded": "menyalakan ulang",
    "kernelRebootHint": "Paket kernel perlu di-boot ulang setelah diterapkan",
    "applyPkgConfirm": "Tingkatkan {{name}}?",
    "applyPkgDesc": "Menjalankan apt upgrade untuk paket ini di host. Membutuhkan root + YSK_EXECUTE.",
    "lastScan": "Pemindaian terakhir",
    "never": "Tidak pernah",
    "cve": "CVE",
    "riskCol": "Mempertaruhkan",
    "selfUpdatable": "Dapat diperbarui",
    "selfCurrentShort": "Saat ini",
    "selfLatestShort": "Terbaru",
    "applyPanelUpdate": "Terapkan pembaruan panel",
    "applySelfConfirmTitle": "Terapkan pembaruan panel?",
    "applySelfConfirmDesc": "Instal {{from}} → {{to}} dan mulai ulang layanan panel. Tidak ada uji coba.",
    "applyPanelAlreadyLatest": "Sudah versi panel terbaru",
    "recheck": "Periksa kembali",
    "aboutScope": "Cakupan",
    "aboutScopeV": "panel ysk-server + layanan katalog + runtime + sisa paket apt",
    "aboutChannel": "Saluran",
    "aboutChannelV": "paket npm ysk-server → Rilis GitHub → apps/server/package.json; terapkan: npm i -g ysk-server@version atau git (YSK_SOURCE_ROOT)",
    "aboutFail": "Kegagalan",
    "aboutFailV": "Saluran yang tidak tersedia tidak dilaporkan sebagai saluran terkini; terapkan kebutuhan EXECUTE; git apply perlu memulai ulang layanan",
    "jobsTitle": "Pekerjaan terjadwal",
    "jobsSub": "Penjadwal bidang kontrol (hanya baca) · {{count}}",
    "noJobs": "Tidak ada jadwal yang terlihat",
    "noJobsDesc": "Pekerjaan penjadwal dinonaktifkan atau belum ada",
    "lastRun": "· terakhir {{when}}",
    "scanPolicy": "Pindai",
    "scanPolicyV": "Pindai ≠ ditingkatkan; menerapkan perubahan sistem",
    "highRiskPolicy": "Risiko tinggi",
    "highRiskPolicyV": "Perlu persetujuan: konfirmasi kedua sebelum dikirim",
    "needApprovalHint": "Buka Tersedia dan filter ke paket yang memerlukan persetujuan",
    "applyNeedConfirm": "Membuka dialog konfirmasi sebelum menerapkan",
    "probeFailed": "Penyelidikan gagal",
    "notViaApt": "Tidak dikelola oleh apt — tidak ada kandidat",
    "noCandidate": "Tidak ada versi kandidat",
    "cveLabel": "CVE",
    "jobOpenGeo": "halaman GeoIP",
    "job": {
      "protection_probe": {
        "name": "Pemeriksaan perlindungan",
        "hint": "Sinyal pertahanan berkala"
      },
      "updates_scan": {
        "name": "Pemindaian pembaruan",
        "hint": "Segarkan inventaris paket"
      },
      "daily_backup": {
        "name": "Cadangan harian",
        "hint": "Semua pencadangan terjadwal"
      },
      "db_temp_expire": {
        "name": "Kedaluwarsa pengguna DB sementara",
        "hint": "Hapus pengguna database sementara yang sudah kadaluarsa"
      },
      "defense_auto_ban": {
        "name": "Larangan otomatis pertahanan",
        "hint": "Terapkan centang larangan otomatis"
      },
      "defense_geoip_update": {
        "name": "Pembaruan GeoIP",
        "hint": "Unduh database GeoIP"
      },
      "log_auto_vacuum": {
        "name": "Log vakum",
        "hint": "retensi jurnal"
      },
      "email_dnsbl": {
        "name": "Surel DNSBL",
        "hint": "Periksa DNSBL melalui email"
      },
      "validators_upgrade_scan": {
        "name": "Pemindaian peningkatan validator",
        "hint": "Periksa pembaruan gambar validator/biner"
      }
    },
    "permPolicy": "Izin",
    "permPolicyV": "Tanpa EXECUTE/root → diblokir (tidak ada kesuksesan palsu)",
    "osvPolicyV": "Membutuhkan jaringan; memperkaya 12 saran teratas saja",
    "relatedAria": "Terkait",
    "scHost": "Pengaturan tuan rumah",
    "scReadiness": "Kesiapan",
    "scReadinessD": "Gerbang produksi",
    "scSystemd": "satuan sistem",
    "scSystemdD": "Layanan pesawat kendali",
    "scSecurity": "Pusat keamanan",
    "scSecurityD": "Persetujuan / alat",
    "applyHighRisk": "Terapkan pembaruan berisiko tinggi {{name}}?",
    "highRiskUpdate": "Pembaruan berisiko tinggi",
    "remoteUnknown": "Jauh tidak diketahui",
    "hasUpdate": "Pembaruan tersedia",
    "scanned": "Paket {{count}} yang dipindai",
    "scannedWithOsv": "Paket {{count}} yang dipindai (dengan OSV)",
    "realUpgradeable": "{{count}} benar-benar dapat ditingkatkan",
    "panelCheckFailed": "Pemeriksaan versi panel gagal",
    "applyIncomplete": "Terapkan tidak lengkap",
    "appliedPackage": "Pembaruan paket diterapkan",
    "updateFailed": "Pembaruan gagal",
    "updateIncomplete": "Pembaruan tidak lengkap",
    "appliedUpdate": "Pembaruan diterapkan",
    "panelRestarting": "Panel sedang dimulai ulang untuk memuat versi baru…",
    "panelRestarted": "Panel kembali · {{version}}",
    "panelRestartWait": "Pembaruan diterapkan. Jika halaman ini tidak berubah, muat ulang beberapa detik lagi.",
    "reloadUi": "Muat ulang UI",
    "reloadUiTitle": "Muat ulang UI panel?",
    "reloadUiDesc": "Layanan panelnya adalah {{version}}. Tab ini masih memiliki frontend sebelumnya hingga Anda memuat ulang. Bidang yang belum disimpan di halaman ini akan hilang.",
    "aptCandidate": "Kandidat yang tepat",
    "advice": {
      "update": "Pembaruan direkomendasikan",
      "skip": "Melewati",
      "watch": "Jam tangan",
      "urgent": "Pembaruan mendesak"
    },
    "selectCol": "Memilih",
    "selectAllUpgradable": "Pilih semua yang dapat diupgrade",
    "clearSelection": "Hapus pilihan",
    "updateSelected": "Pembaruan dipilih ({{n}})",
    "batchConfirmTitle": "Konfirmasikan pembaruan paket massal?",
    "batchConfirmBody": "Akan meningkatkan {{n}} paket secara berurutan. Membutuhkan root dan EXECUTE.",
    "batchConfirmHighRisk": "Seleksi mencakup paket risiko tinggi/persetujuan; Saya telah meninjau dan menyetujui permohonan.",
    "batchProgress": "Pembaruan massal {{n}}/{{total}}: {{pkg}}",
    "batchDone": "Selesai secara massal: {{ok}} oke, {{fail}} gagal",
    "batchPartialFail": "Beberapa gagal: {{list}}",
    "batchEmpty": "Pilih paket yang dapat diupgrade terlebih dahulu",
    "batchNoneUpgradable": "Tidak ada paket yang dapat diupgrade di filter saat ini",
    "batchCancel": "Batalkan secara massal",
    "batchCancelling": "Membatalkan… (berhenti setelah paket saat ini)",
    "batchCancelled": "Dibatalkan (masih dilewati)",
    "batchRescanned": "Status paket host dipindai ulang",
    "applyLogTitle": "Memperbarui()",
    "navBadgeTitle": "Pembaruan tertunda: {{n}}",
    "aboutPolicySub": "Pindai, terapkan, hak istimewa, dan batasan OSV. Pemindaian tidak sama dengan peningkatan.",
    "tabOverview": "Ringkasan",
    "overviewHint": "Server memindai paket sesuai jadwal. Instal perangkat lunak pada setiap halaman fitur; halaman ini hanya memeriksa dan menerapkan peningkatan.",
    "overviewStale": "Data pemindaian sudah usang. Jalankan pemindaian atau tunggu pemeriksaan otomatis berikutnya.",
    "nextScan": "Pemindaian selanjutnya",
    "autoScan": "Pemindaian otomatis",
    "autoScanEnable": "Aktifkan pemindaian paket otomatis",
    "scanInterval": "Interval pemindaian",
    "interval6h": "Setiap 6 jam",
    "interval12h": "Setiap 12 jam",
    "interval24h": "Setiap 24 jam",
    "interval48h": "Setiap 48 jam",
    "scheduleSaved": "Jadwal pemindaian disimpan",
    "scanNow": "Pindai sekarang",
    "viewUpgradable": "Lihat dapat diupgrade",
    "installElsewhere": "Untuk menginstal paket (Nginx, PHP, database…), buka halaman fitur yang cocok — bukan hub ini.",
    "status": "Status",
    "groupService": "Layanan",
    "groupRuntime": "Waktu proses",
    "groupOs": "Paket sistem",
    "notInstalled": "Tidak dipasang",
    "goToPage": "Buka halaman",
    "hubHint": "Katalog perangkat lunak dan runtime pada host ini. Pindai untuk menyegarkan.",
    "intervalDay": "setiap hari",
    "intervalDays": "setiap {{n}} hari",
    "intervalHour": "setiap jam",
    "intervalHours": "setiap {{n}} jam",
    "intervalMinutes": "setiap {{n}} menit",
    "intervalSeconds": "setiap {{n}} detik",
    "availableHint": "Paket dengan kandidat baru dari pengelola paket.",
    "servicesHint": "Layanan katalog di host ini. Buka halaman layanan untuk menginstal.",
    "runtimeHint": "Runtime di host ini. Peningkatan versi dilakukan pada setiap halaman runtime.",
    "needsReboot": "Diperlukan reboot",
    "kernelRebootWarn": "Menginstal kernel baru biasanya memerlukan reboot sebelum digunakan.",
    "neverRun": "belum berjalan",
    "scanOsvN": "Pindai + OSV (pertama {{n}})"
  },
  "users": {
    "userCount": "{{count}} pengguna",
    "users": "Pengguna",
    "packages": "Paket",
    "suspended": "Tergantung",
    "securityCenter": "Pusat keamanan",
    "singleAdminNo2fa": "Host ini memiliki satu admin dan 2FA tidak aktif — aktifkan 2FA dan tambahkan admin cadangan.",
    "enableAdmin2fa": "Aktifkan admin 2FA",
    "addBackupAdmin": "Tambahkan admin cadangan",
    "loading": "Memuat pengguna & paket…",
    "userList": "Pengguna ({{count}})",
    "userListDesc": "Buka detail untuk mengedit peran, kata sandi, paket, penggantian",
    "createUser": "Buat pengguna",
    "operatorHighRiskHint": "Peran operator pabrik mencakup tulis berisiko tinggi. Menyempitkannya hanya memengaruhi akun baru; mengubah bawaan memengaruhi operator yang ada.",
    "createUserPlus": "+ Buat pengguna",
    "searchPh": "Nama pengguna / peran / paket",
    "searchPkgPh": "Nama paket",
    "searchUsersAria": "Cari pengguna",
    "user": "Pengguna",
    "roles": "Peran",
    "package": "Kemasan",
    "packageAria": "{{name}} paket",
    "noneOption": "- tidak ada -",
    "resume": "Melanjutkan",
    "suspend": "Menskors",
    "impersonate": "Menirukan",
    "impersonateHint": "Membuka sesi sebagai pengguna ini. Gunakan menu akun untuk meninggalkan peniruan identitas.",
    "cannotDeleteSelf": "Tidak dapat menghapus akun yang sedang masuk",
    "cannotImpersonateSelf": "Anda sudah masuk sebagai akun ini",
    "openDetail": "Detail",
    "edit": "Sunting",
    "resetPassword": "Setel ulang kata sandi",
    "newPassword": "Kata sandi baru",
    "saveUser": "Simpan pengguna",
    "userSaved": "Diperbarui {{name}}",
    "filterAll": "Semua",
    "filterAdmin": "Admin",
    "filterOperator": "Operator",
    "filterViewer": "Penonton",
    "filterSuspended": "Tergantung",
    "filterNoPkg": "Tidak ada paket",
    "filter2faOff": "2FA mati",
    "filterOverrides": "Telah menimpa",
    "subscribers": "Pelanggan",
    "subscribersN": "{{count}} pengguna",
    "ftp": "FTP",
    "ssh": "SSH",
    "databases": "Basis Data",
    "bandwidth": "Bandwidth MiB",
    "notes": "Catatan",
    "editPkg": "Sunting paket",
    "pkgUpdated": "Paket yang diperbarui {{name}}",
    "pkgList": "Paket ({{count}})",
    "pkgListDesc": "Edit kuota; hapus diblokir sementara pelanggan tetap",
    "createPkg": "Buat paket",
    "createPkgPlus": "+ Buat paket",
    "mailboxes": "Kotak surat",
    "diskMiB": "Disk MiB",
    "noPackages": "Belum ada paket",
    "noPackagesHint": "Buat rencana dari toolbar, lalu ikat ke pengguna.",
    "createUserDesc": "Kata sandi minimal 8 karakter; edit peran dan izin secara detail nanti",
    "username": "Nama belakang",
    "passwordHint": "Setidaknya 8 karakter",
    "role": "Peran",
    "roleAria": "Peran pengguna",
    "createPkgDesc": "Templat kuota; mengikat ke pengguna nanti",
    "maxProjects": "Proyek maksimal",
    "diskQuota": "Disk MiB",
    "custom": "Kebiasaan",
    "createdUser": "Pengguna yang dibuat {{name}}",
    "createdPkg": "Paket yang dibuat {{name}}",
    "impersonateTitle": "Meniru identitas {{name}}?",
    "deleteUserTitle": "Hapus {{name}}?",
    "deletePkgTitle": "Hapus paket {{name}}?",
    "impersonateDesc": "Sesi Anda saat ini akan diganti (~2 jam).",
    "deleteUserDesc": "Hal ini tidak dapat dibatalkan.",
    "deletePkgDesc": "Penghapusan ditolak selama pengguna masih menggunakan paket ini.",
    "lastSeen": "Terakhir terlihat",
    "neverSeen": "Tidak pernah",
    "hostUsage": "Penggunaan tuan rumah",
    "hostUsageHint": "Total seluruh mesin (host), bukan isolasi ketat per pengguna",
    "hostTotalsBadge": "total tuan rumah",
    "opsChecklist": "Daftar periksa operasi",
    "opsCheck1": "Berikan Admin hanya kepada orang yang membutuhkan hak istimewa; gunakan Operator sehari-hari.",
    "opsCheck2": "Simpan setelah mengedit Izin; pemulihan sekali klik mengembalikan default pabrik.",
    "opsCheck3": "Jangan hapus paket dengan pelanggan; batalkan penetapannya terlebih dahulu.",
    "opsCheck4": "Pemulihan cadangan bersifat merusak—Admin secara default; konfirmasi sebelum memberikan kepada Operator.",
    "detailDesc": "Akun, pratinjau akses, dan penggantian lanjutan",
    "tabAccount": "Akun",
    "tabAccess": "Mengakses",
    "tabAdvanced": "Canggih",
    "rolePickHint": "Pilih peran pekerjaan yang tepat; Admin tetap terbuka penuh",
    "accountSection": "Pengaturan akun",
    "packageHint": "Templat paket hosting (opsional)",
    "resetPasswordOptional": "Biarkan kosong untuk menyimpan kata sandi",
    "accountStatus": "Status akun",
    "suspendedHint": "Ditangguhkan: tidak dapat masuk",
    "activeHint": "Aktif: dapat masuk dan bekerja",
    "accessHint": "Kemampuan efektif dari kebijakan peran (label yang dapat dibaca)",
    "noCapsInBand": "Tidak ada kemampuan di level ini",
    "overridesHint": "Hanya mempengaruhi pengguna ini; default peran tetap tidak berubah",
    "adminNoOverrides": "Pengguna admin selalu terbuka penuh; pencabutan pribadi tidak diterapkan.",
    "grantsHint": "Kemampuan ekstra di luar paket peran",
    "revokesHint": "Matikan kemampuan yang diwariskan (bukan untuk Admin)",
    "searchCaps": "Kemampuan pencarian…",
    "noCapMatch": "Tidak ada kemampuan yang cocok",
    "no2fa": "2FA mati",
    "lastSeenValue": "Terakhir aktif {{time}}",
    "roleName": {
      "admin": "Admin",
      "operator": "Operator",
      "viewer": "Penonton",
      "agent": "Agen"
    },
    "roleDesc": {
      "admin": "Kontrol penuh: pengguna, izin, operasi destruktif. Selalu terbuka penuh.",
      "operator": "Operasi sehari-hari: layanan, pembaruan, DNS/SSL, situs.",
      "viewer": "Hanya baca: status, log, daftar — tidak ada perubahan.",
      "agent": "Agen otomatisasi: penulisan berisiko rendah dengan batasan cakupan."
    },
    "securityTitle": "Otentikasi dua faktor (pengguna ini)",
    "securityPerUserHint": "TOTP/Passkey adalah per pengguna",
    "securityStatusOn": "2FA diaktifkan",
    "securityStatusOff": "2FA tidak disetel",
    "securitySessions": "Sesi aktif",
    "securityClearTotp": "Hapus paksa 2FA pengguna ini",
    "securityClearTotpHint": "Membutuhkan peningkatan",
    "securityClearConfirm": "Ketikkan nama pengguna untuk mengonfirmasi penghapusan 2FA",
    "securityClearOk": "Menyelesaikan 2FA untuk {{name}}",
    "securitySelfNote": "Untuk mengatur 2FA Anda sendiri, buka Keamanan → Keamanan saya.",
    "cannotModifySelf": "Tidak dapat menangguhkan atau menurunkan akun yang sedang masuk",
    "cannotDeleteLastAdmin": "Tidak dapat menghapus admin terakhir",
    "cannotDemoteLastAdmin": "Tidak dapat menangguhkan atau menurunkan admin terakhir",
    "lockSelfHint": "Ini akun yang sedang masuk. Hapus, tangguhkan, dan ubah peran diblokir agar tidak terkunci.",
    "lockLastAdminHint": "Ini admin terakhir. Hapus, tangguhkan, dan penurunan diblokir.",
    "demoteAdminTitle": "Turunkan admin ini?",
    "demoteAdminDesc": "Pengguna ini akan kehilangan akses admin penuh. Pastikan masih ada admin lain.",
    "quotaNonNeg": "Jumlah dan kuota tidak boleh negatif.",
    "diskQuotaHint": "Presetnya adalah GiB; kotak khusus adalah MiB.",
    "bandwidthHint": "0 berarti tidak terbatas."
  },
  "validators": {
    "title": "Validator (Beta)",
    "subtitle": "Pasang dan kelola node L1 di host ini. Non-kustodian — kunci tetap Anda pegang.",
    "beta": "Beta",
    "tab": {
      "nodes": "Node",
      "disk": "Cakram",
      "stack": "Perangkat lunak",
      "about": "Tentang"
    },
    "empty": {
      "title": "Belum ada node validator",
      "desc": "Buat node testnet dalam beberapa klik."
    },
    "refresh": "Segarkan",
    "software": {
      "engine": "Mesin Docker",
      "engineDesc": "Node validator dijalankan sebagai proyek Compose. Instal Docker di sini jika tidak ada. Pemangkasan gambar tetap ada di halaman Docker.",
      "client": "Klien",
      "image": "Gambar",
      "present": "Lokal",
      "local": "Ditarik",
      "missing": "Tidak ditarik",
      "size": "Ukuran",
      "usedBy": "Digunakan oleh",
      "unused": "Tidak ada contoh",
      "pull": "Pull",
      "pulled": "Di tuan rumah ini",
      "pulling": "Tarik {{ref}}",
      "empty": "Tidak ada gambar klien yang disematkan",
      "emptyDesc": "Katalognya kosong. Ini seharusnya tidak terjadi.",
      "daemonDown": "Mesin Docker tidak berjalan",
      "source": "Sumber",
      "official": "Resmi terbaru",
      "officialNewer": "Resmi lebih baru",
      "stale": "Di belakang pin",
      "staleItem": "{{id}} ({{tag}})",
      "pin": "pin panel",
      "openRelease": "Catatan rilis",
      "chooseOnInstance": "Ubah versi pada halaman instans. Menarik gambar tidak memberi tag ulang pada node yang sedang berjalan."
    },
    "disk": {
      "title": "Disk validator",
      "root": "Direktori data",
      "free": "Kosong",
      "used": "Terpakai",
      "fsUsed": "Sistem file yang digunakan",
      "leftoverTitle": "Data sisa ({{count}})",
      "leftoverEmpty": "Tidak ada direktori instance yang tersisa",
      "leftoverDesc": "Direktori di bawah root validator yang bukan merupakan instance penyimpanan. Hapus hanya setelah Anda mengonfirmasi bahwa itu tidak digunakan.",
      "leftoverRemove": "Menghapus",
      "leftoverRemoveTitle": "Hapus data validator yang tersisa?",
      "leftoverRemoveDesc": "Hapus {{path}} dari disk secara permanen. Ini bukan node yang terdaftar.",
      "browseRoot": "Buka di peramban file",
      "none": "Belum ada data instans",
      "warn": "Pemakaian disk tinggi (70%+)",
      "danger": "Pemakaian disk kritis (85%+)",
      "autoClear": "Kosongkan otomatis instans berhenti terbesar saat disk kritis (default mati)",
      "autoClearRisk": "Merusak: instance terbesar yang dihentikan akan dihapus tanpa perintah lebih lanjut. Defaultnya tidak aktif. Periksa audit/log setelah diaktifkan.",
      "autoClearConfirmTitle": "Aktifkan hapus otomatis?",
      "autoClearC1": "Ketika disk sangat penting, instance terbesar yang dihentikan akan dihapus tanpa diminta lagi.",
      "autoClearThreshold": "Pemicu: penggunaan sistem file pada atau di atas 85%.",
      "autoClearCandidate": "Kandidat saat ini: {{id}}",
      "autoClearCandidates": "Kandidat yang dihentikan (yang terbesar dengan data terlebih dahulu): {{list}}",
      "autoClearNone": "Tidak ada contoh yang berhenti yang menjadi kandidat saat ini."
    },
    "chain": {
      "eth": "Ethereum",
      "avax": "Avalanche",
      "near": "NEAR",
      "ada": "Cardano",
      "btc": "Bitcoin",
      "cosmos": "Cosmos Hub",
      "sui": "Sui",
      "aptos": "Aptos",
      "dot": "Polkadot",
      "sol": "Solana"
    },
    "network": {
      "hoodi": "Hoodi",
      "sepolia": "Sepolia",
      "mainnet": "Jaringan utama",
      "fuji": "Fuji",
      "testnet": "Jaringan uji",
      "preview": "Pratinjau",
      "preprod": "Persiapan",
      "westend": "Westend"
    },
    "networkKind": {
      "testnet": "Jaringan uji",
      "mainnet": "Jaringan utama",
      "mixed": "Jaringan utama + jaringan uji"
    },
    "profile": {
      "minimal": "Paling kecil",
      "pruned": "Pruned",
      "validator-ready": "Siap validator",
      "rpc": "RPC"
    },
    "profileHelp": {
      "title": "Profiles",
      "desc": "The four choices on wizard step 3 are mainly disk budget and role. Each chain shows its recommended size in the wizard. The panel never holds staking keys.",
      "colName": "Profil",
      "colUse": "Gunakan untuk",
      "colDisk": "Disk",
      "colStake": "Validator taruhan",
      "useMinimal": "Testnet atau instalasi pertama. Bukan sejarah lengkap.",
      "usePruned": "Ikuti ujung rantai dalam jangka panjang. Hanya menyimpan data terkini (Dipangkas).",
      "useValidatorReady": "Diukur sehingga nanti Anda dapat membuktikan atau mengusulkan. Hasilkan sendiri kunci secara offline.",
      "useRpc": "Biarkan host ini atau layanan lain menanyakan rantai tersebut. Mendengarkan di 127.0.0.1 secara default.",
      "diskMinimal": "Terkecil",
      "diskPruned": "Sedang (lebih dari Minimal)",
      "diskValidatorReady": "Yang terbesar dari keempatnya",
      "diskRpc": "Tergantung rantainya",
      "stakeNo": "Tidak cocok",
      "stakeYes": "Ya — offline atau salah konfigurasi dapat kehilangan taruhan",
      "stakeRpc": "Bukan validator",
      "minimal": "Disk terkecil. Gunakan untuk testnets atau instalasi pertama. Bukan riwayat lengkap, dan bukan untuk validator staking langsung.",
      "pruned": "Mempertahankan status rantai terkini dan menghapus blok lama (Dipangkas). Lebih banyak disk daripada Minimal, kurang dari satu node penuh. Gunakan untuk mengikuti tip dalam jangka panjang.",
      "validatorReady": "Cadangan lebih banyak disk sehingga nanti Anda dapat membuktikan atau mengusulkan sebagai validator. Hasilkan sendiri kunci secara offline. Menjadi offline atau salah konfigurasi dapat kehilangan taruhan.",
      "rpc": "Untuk host ini atau layanan lain untuk menanyakan rantai. RPC mendengarkan pada 127.0.0.1 secara default dan tidak dipublikasikan ke internet."
    },
    "col": {
      "id": "ID",
      "chain": "Rantai",
      "network": "Jaringan",
      "profile": "Profil",
      "status": "Keadaan",
      "traffic": "Lalu lintas",
      "disk": "Cakram"
    },
    "cli": {
      "usage": "Pemakaian: ysk-server validators list|chains|disk|get|status|checklist|logs|create|start|stop|restart|clear|upgrade|set-version|versions|policy|mithril|prune|switch-network|snapshot|compose|compose-write|rewrite-compose|software|pull|leftover-remove|stats|settings|producer-keys|producer-detach|near-account [--chain C] [--network N] [--profile P] [--el EL] [--cl CL] [--el-tag T] [--cl-tag T] [--node-tag T] [--client ID] [--tag T] [--data-path P] [--rpc-port N] [--id ID] [--path PATH] [--file PATH] [--image REF] [--upgrade POLICY] [--confirm TOKEN] [--kes-file P] [--vrf-file P] [--opcert-file P] [--accept-low-disk] [--accept-low-mem] [--accept-mainnet] [--refresh] [--execute] [--json]"
    },
    "clients": {
      "el": "Klien eksekusi",
      "cl": "Klien konsensus",
      "version": "Versi",
      "pin": "pin panel",
      "officialNewer": "Resmi lebih baru",
      "olderThanPin": "Lebih tua dari pin panel",
      "prerelease": "Prarilis",
      "current": "Berjalan sekarang",
      "source": "Sumber gambar"
    },
    "mithril": {
      "label": "Pulihkan dulu dari snapshot Mithril (disarankan di testnet)",
      "hint": "Ini adalah pemulihan satu kali setelah instalasi. Itu tidak ditulis menjadi tulisan. Anda juga dapat menjalankannya nanti dari halaman instance.",
      "action": "Pulihkan dengan Mithril"
    },
    "errors": {
      "notFound": "Instans validator tidak ditemukan",
      "invalidId": "Id instans tidak valid",
      "diskLow": "Disk kosong tidak cukup untuk rantai, jaringan, dan profil ini",
      "memLow": "RAM kosong tidak cukup untuk batas memori rantai ini",
      "diskUnknownMainnet": "Tidak dapat mengukur disk kosong; pembuatan jaringan utama ditolak",
      "needDocker": "Docker Compose wajib dan tidak ditemukan",
      "composeFailed": "docker compose gagal",
      "containerNotUp": "Penulisan dimulai, namun penampung tidak terus berjalan",
      "probeFailed": "Node belum menjawab RPC. Periksa log di halaman ini.",
      "oom": "Kehabisan ingatan. Tetapkan batas memori atau tambahkan RAM, lalu mulai ulang.",
      "nofile": "Prosesnya mencapai batas file terbuka (nofile). Angkat ulimits.nofile dan mulai ulang.",
      "noContainer": "Tidak ada wadah penulisan untuk instance ini.",
      "restarting": "Penampung dimulai ulang. Periksa log di halaman ini.",
      "restartingCount": "Penampung dimulai ulang ({{n}}). Periksa log di halaman ini.",
      "needConfirm": "Mengosongkan memerlukan confirm=id instans atau CLEAR",
      "mithrilAdaOnly": "Pemulihan Mithril hanya untuk Cardano",
      "needMithrilConfirm": "Mithril memerlukan confirm=id instans atau MITHRIL",
      "mithrilBlocked": "docker run Mithril diblokir oleh daftar izin",
      "mithrilKey": "Tidak dapat memuat kunci verifikasi genesis Mithril",
      "mithrilFailed": "Unduhan snapshot Mithril gagal",
      "pruneFailed": "Pembersihan gagal",
      "switchNeedStop": "Hentikan node sebelum mengganti jaringan",
      "switchNeedClear": "Mengganti jaringan menghapus data rantai. Konfirmasi dengan id instans atau CLEAR",
      "composeMissing": "Berkas Compose tidak ditemukan",
      "composeNotManaged": "Menolak menulis berkas Compose yang tidak dikelola YSK",
      "badDataPath": "Jalur data harus direktori absolut di luar jalur sistem",
      "portInUse": "Port RPC itu sudah dipakai instans validator lain",
      "badTag": "Versi klien tersebut bukan tag resmi untuk gambar ini",
      "needVersionConfirm": "Mengubah versi memerlukan konfirmasi=id instance",
      "needMainnetVersionAck": "Perubahan versi Mainnet memerlukan AcceptMainnet",
      "snapshotUnsupported": "Tidak ada sumber snapshot yang diizinkan untuk rantai ini",
      "snapshotLookup": "Tidak dapat menyelesaikan penunjuk snapshot resmi",
      "needSnapshotConfirm": "Pemulihan snapshot memerlukan confirm=id instans atau SNAPSHOT",
      "snapshotBlocked": "docker run snapshot diblokir oleh daftar izin",
      "snapshotFailed": "Unduhan atau ekstraksi snapshot gagal",
      "producerAdaOnly": "Kunci produser hanya untuk Cardano",
      "needProducerConfirm": "Melampirkan kunci produser memerlukan konfirmasi=id instance atau PRODUCER",
      "needMainnetProducerAck": "Lampiran produser mainnet memerlukan terimaMainnet",
      "producerColdRejected": "Kunci penandatanganan dingin atau pemilik kolam renang ditolak. Simpan kunci dingin secara offline.",
      "producerTooLarge": "File kunci tersebut lebih besar dari 64 KiB",
      "producerBadType": "File tersebut bukan kunci KES, kunci VRF, atau sertifikat operasional",
      "producerEmpty": "Sediakan setidaknya satu kes, vrf, atau opcert",
      "switchNeedDetachProducer": "Lepaskan kunci produser sebelum berpindah jaringan",
      "nearAccountInvalid": "Nama kumpulan harus berupa slug pendek (atau akun lengkap {pool}{factory}).",
      "nearKeyMissing": "validator_key.json hilang atau tidak memiliki kunci_publik. Mulai node dan tunggu neard init."
    },
    "notes": {
      "beta": "Fitur ini Beta. Perubahan host membutuhkan root dan YSK_EXECUTE=1.",
      "noKeys": "YSK Server tidak pernah membuat atau menyimpan kunci staking.",
      "dockerSoon": "Instal dan mulai dari wizard halaman ini. Perubahan host memerlukan root dan YSK_EXECUTE=1.",
      "dryCreate": "Spesifikasi instans dan compose ditulis (dry-run). Tambahkan --execute dan YSK_EXECUTE=1 untuk memulai kontainer.",
      "dryStart": "Mulai adalah dry-run. Tambahkan --execute dan YSK_EXECUTE=1.",
      "dryStop": "Henti adalah dry-run. Tambahkan --execute dan YSK_EXECUTE=1.",
      "dryClear": "Kosongkan adalah dry-run. Tambahkan --execute dan YSK_EXECUTE=1.",
      "created": "Node dibuat dan compose dimulai",
      "started": "Node dimulai",
      "stopped": "Node dihentikan",
      "cleared": "Data rantai dikosongkan",
      "dryMithril": "Pemulihan Mithril adalah dry-run. Tambahkan --execute dan YSK_EXECUTE=1.",
      "mithril": "Snapshot Mithril dipulihkan; node dimulai ulang",
      "dryPrune": "Pembersihan adalah dry-run. Tambahkan --execute dan YSK_EXECUTE=1.",
      "pruned": "Citra proyek yang tidak terpakai dibersihkan",
      "pruneProfile": "Pangkas native klien adalah profil pruned／minimal. Buat ulang untuk mengubahnya.",
      "sameNetwork": "Sudah di jaringan itu",
      "drySwitch": "Pergantian jaringan adalah dry-run.",
      "switched": "Jaringan diganti dan data rantai dikosongkan",
      "dryCompose": "Akan menulis compose.yml",
      "composeWrote": "compose.yml ditulis",
      "statsEmpty": "Tidak ada kontainer berjalan untuk diukur",
      "autoClearNone": "Tidak ada instans berhenti untuk dikosongkan otomatis",
      "drySnapshot": "Pemulihan snapshot adalah dry-run. Tambahkan --execute dan YSK_EXECUTE=1.",
      "snapshotEthEl": "Arsip EL ethPandaOps dipulihkan dan CL diatur ulang untuk checkpoint sync",
      "snapshotEthCl": "Data CL diatur ulang untuk checkpoint sync resmi",
      "snapshotNear": "Data NEAR dihapus; compose akan inisialisasi ulang dengan genesis resmi dan epoch sync",
      "nativePrune": "Perintah pangkas native klien dijalankan",
      "dryProducer": "Kunci produser bersifat uji coba. Tambahkan --execute dan YSK_EXECUTE=1.",
      "dryProducerDetach": "Pelepasan produser dilakukan secara kering. Tambahkan --execute dan YSK_EXECUTE=1.",
      "producerPartial": "Menulis tombol pintas. Lampirkan KES, VRF, dan opcert sebelum node dimulai sebagai produsen blok.",
      "producerAttached": "Tombol pintas terpasang; komposisi ditulis ulang sebagai produser blok",
      "producerDetached": "Tombol pintas dihapus; menulis ditulis ulang sebagai relay",
      "dryDelete": "Penghapusan adalah proses kering. Lewati --execute dan YSK_EXECUTE=1.",
      "deleted": "Node dihapus",
      "leftoverRemoved": "Menghapus sisa {{path}}",
      "dryNearAccount": "Akan menyetel account_id ke {{account}} (lulus --eksekusi). Rahasia tidak pernah berubah.",
      "nearAccountWrote": "Setel account_id ke {{account}}. Rahasia tidak diubah. Mulai ulang node jika sedang berjalan."
    },
    "create": "Buat node",
    "wizard": {
      "title": "Buat node",
      "stepOf": "Langkah {{n}} / {{total}}",
      "stepChain": "Rantai",
      "stepNetwork": "Jaringan",
      "stepProfile": "Profil",
      "stepSummary": "Ringkasan",
      "needDocker": "Mesin Docker tidak diinstal. Instal terlebih dahulu — tombol ini tetap dinonaktifkan.",
      "diskNeed": "Profil ini membutuhkan sekitar {{need}} · gratis {{free}}",
      "diskNeedNetwork": "Default (Minimal) untuk kebutuhan jaringan ini sekitar {{need}} · gratis {{free}}",
      "profileHint": {
        "minimal": "Sinkronisasi terkecil — disk ringan, bukan untuk staking.",
        "pruned": "Hanya menyimpan riwayat terkini (Dipangkas). Lebih kecil dari arsip, masih dapat digunakan untuk RPC.",
        "validator-ready": "Diukur untuk validator staking. Membutuhkan lebih banyak disk daripada Minimal.",
        "rpc": "Node RPC publik — bukan validator staking."
      },
      "diskShort": "Disk kosong tidak cukup untuk rantai/jaringan/profil ini",
      "diskShortDetail": "Butuh {{need}} · gratis {{free}} · pendek {{short}}",
      "memShort": "RAM kosong tidak cukup untuk batas memori rantai ini",
      "memShortDetail": "Butuh {{need}} · gratis {{free}} · pendek {{short}}",
      "needCustomPath": "Masukkan jalur data absolut",
      "previewId": "ID simpul",
      "previewCompose": "Menulis proyek",
      "profileSeeAbout": "What each profile means is on the About tab.",
      "back": "Kembali",
      "next": "Berikutnya",
      "install": "Pasang",
      "mainnetWarn": "Jaringan utama membutuhkan banyak disk kosong (ETH sering 800 GiB+). Testnet disarankan.",
      "mainnetAck": "Saya memahami risiko disk dan slashing. Lanjutkan jaringan utama.",
      "lowDiskAcked": "Disk kosong berada di bawah ukuran yang disarankan. Anda tetap mengonfirmasi pembuatan; sinkronisasi mungkin berhenti jika disk terisi.",
      "lowMemAcked": "RAM gratis berada di bawah batas memori rantai ini ditambah ruang kepala 1 GiB. Anda tetap mengonfirmasi pembuatan; node mungkin OOM atau terhenti.",
      "heavyWarn": "Rantai ini berat (disk besar dan IOPS tinggi). Solana jaringan utama biasanya butuh 2 TiB+.",
      "memory": "Batas memori (mis. 4g)",
      "cpus": "Batas CPU (mis. 2.0)",
      "dataPath": "Jalur data (opsional)",
      "rpcPort": "Port RPC (opsional)",
      "limitNone": "Tidak ada batasan",
      "rpcDefault": "Bawaan",
      "customPath": "Gunakan jalur data khusus",
      "installConfirmTitle": "Instal simpul ini?",
      "installConfirmDesc": "{{chain}} · {{network}} · {{profile}}. Tentang {{disk}} disk. Penarikan gambar bisa memakan waktu lama.",
      "installC1": "Beberapa gigabyte gambar dapat diunduh.",
      "installC2": "Anda dapat membatalkan tugas panel; gambar yang sudah ditarik tidak terhapus secara otomatis.",
      "installC3": "Mainnet menggunakan banyak disk. Validator staking dapat kehilangan staking jika sedang offline atau salah dikonfigurasi. Ketikkan id simpul untuk mengonfirmasi.",
      "dockerAbout": "Docker Engine diperlukan untuk menginstal dan memulai node.",
      "dockerAboutOk": "Mesin Docker diinstal.",
      "dockerAboutMissing": "Mesin Docker tidak diinstal. Buka Docker untuk menginstalnya.",
      "rewriteCompose": "Menulis ulang penulisan",
      "rewriteComposeTitle": "Tulis ulang composer.yml dari adaptor saat ini?",
      "rewriteComposeDesc": "Menimpa penulisan yang dihasilkan untuk {{id}} menggunakan tanda yang dikirimkan untuk rantai ini.",
      "chainMeta": "{{disk}} menit · {{clients}} klien"
    },
    "actions": {
      "detail": "Rincian",
      "start": "Mulai",
      "stop": "Henti",
      "restart": "Mulai ulang",
      "clear": "Kosongkan",
      "upgrade": "Tingkatkan",
      "setVersion": "Ubah versi",
      "clearConfirm": "Ketik id instans atau CLEAR",
      "prune": "Bersihkan citra",
      "switchNetwork": "Ganti jaringan",
      "removeUnit": "Hapus juga compose / catatan instans",
      "restoreAfter": "Pulihkan snapshot setelah mengosongkan",
      "delete": "Menghapus",
      "deleteTitle": "Hapus {{id}}",
      "deleteDesc": "Ini akan menghapus node dari panel.",
      "deleteC1": "Docker Compose dihentikan dan dihapus",
      "deleteC2": "Data rantai pada disk dihapus",
      "deleteC3": "Catatan contoh dihapus",
      "pruneTitle": "Pangkas gambar yang tidak digunakan",
      "pruneDesc": "Ketikkan id instance untuk memangkas gambar Compose yang tidak digunakan untuk node ini.",
      "pruneC1": "Gambar yang tidak digunakan yang diberi label untuk proyek Compose ini akan dihapus.",
      "clearTitle": "Hapus {{id}}",
      "clearC1": "Data rantai pada disk dihapus.",
      "clearC2": "Instance tetap berada di panel, berhenti dan kosong.",
      "switchTitle": "Beralih jaringan",
      "switchC1": "Node dihentikan dan data rantai dihapus sebelum jaringan baru ditulis."
    },
    "policy": {
      "label": "Kebijakan peningkatan",
      "manual": "Manual (tangan)",
      "notify": "Beritahu",
      "auto-safe": "Otomatis (aman)",
      "auto-all": "Otomatis (semua)"
    },
    "logs": {
      "empty": "Belum ada log",
      "follow": "Ikuti log"
    },
    "compose": {
      "label": "Berkas Compose",
      "save": "Simpan compose"
    },
    "snapshot": {
      "action": "Pulihkan snapshot",
      "mithril": "Cardano memakai Mithril untuk pemulihan snapshot bersertifikat.",
      "eth": "Jaringan utama Ethereum boot lewat checkpoint sync resmi klien konsensus. EL lanjut snap sync.",
      "ethEl": "Hoodi/Sepolia dapat memulihkan arsip EL ethPandaOps, lalu checkpoint-sync CL.",
      "avax": "Avalanche memakai state-sync di profil compose.",
      "near": "Snapshot tar gratis resmi NEAR sudah dihentikan. Pulihkan menghapus data dan memakai genesis resmi plus epoch sync.",
      "none": "Tidak ada sumber snapshot untuk rantai ini."
    },
    "producer": {
      "title": "Blokir tombol pintas produser",
      "hint": "Ini bukan alamat IP. Unggah kunci KES, kunci VRF, dan sertifikat operasional dari mesin offline. Jauhkan kunci dingin dari host ini.",
      "warn": "Node yang sama dengan port P2P publik akan menandatangani blok. Topologi resmi menjauhkan produser dari internet publik. Ketiga file ini adalah hot key.",
      "kes": "KES",
      "vrf": "VRF",
      "opcert": "opcert",
      "missing": "Tidak terikat",
      "present": "Terlampir {{fp}}",
      "presentShort": "Di tuan rumah",
      "queuedShort": "Siap",
      "queued": "Dipilih · {{name}}",
      "fileHint": "Nama khas {{file}}",
      "dropOrBrowse": "Letakkan {{file}} di sini atau jelajahi",
      "dropping": "Jatuhkan untuk melampirkan {{label}}",
      "browse": "Jelajahi",
      "clearFile": "Menghapus",
      "choose": "Pilih berkas",
      "apply": "Terapkan dan mulai ulang sebagai produser blok",
      "detach": "Lepaskan dan jalankan sebagai relai",
      "applyTitle": "Lampirkan tombol pintas ke {{id}}?",
      "applyDesc": "KES, VRF, dan opcert ditulis di bawah direktori kunci instans. Tulis ditulis ulang. Kontainer dimulai ulang sebagai produsen blok.",
      "applyC1": "Kunci dingin harus tetap offline. Jangan unggah cold.skey.",
      "applyC2": "Node yang sedang berjalan dapat menandatangani blok jika file-file ini valid.",
      "applyC3": "Mainnet: produser offline atau salah konfigurasi melewatkan blok.",
      "detachTitle": "Lepaskan kunci produser dari {{id}}?",
      "detachDesc": "Tombol pintas dihapus dari host ini. Compose kembali ke relay.",
      "detachC1": "Node tidak akan lagi menghasilkan blok.",
      "mainnet": "Mainnet: Saya memahami host ini akan menyimpan hot key dan menandatangani blok."
    },
    "stake": {
      "title": "Siapkan staking (kunci tetap Anda pegang)",
      "offlineKeys": "Buat kunci secara offline. Panel tidak pernah menyimpannya.",
      "deposit": "Selesaikan deposit / pendaftaran di launchpad resmi.",
      "withdrawal": "Atur sendiri kredensial penarikan.",
      "monitor": "Pantau disk, peer, dan lencana peningkatan di halaman ini."
    },
    "playbook": {
      "overviewTitle": "Cara kerja staking pada setiap rantai",
      "overviewDesc": "Panel ini menjalankan node. Dompet dan kunci Anda tetap bersama Anda. Hanya tautan resmi — jangan pernah membagikan frase awal di sini.",
      "colChain": "Rantai",
      "colModel": "Bagaimana Anda mendaftar",
      "colMin": "Minimal tipikal",
      "colWallet": "Dompet Anda",
      "colPanel": "Apa yang dilakukan panel ini",
      "yskDoes": "Panel ini melakukannya",
      "youDo": "Anda melakukannya",
      "steps": "Tangga",
      "never": "Tidak",
      "official": "Tautan resmi",
      "seeAbout": "Langkah selengkapnya ada di tab Tentang.",
      "nodeIdReady": "NodeID (dari node ini)",
      "nodeIdPending": "NodeID muncul setelah node disinkronkan dan menjawab RPC.",
      "blsReady": "Kunci publik BLS",
      "blsProof": "Bukti kepemilikan BLS",
      "blsPending": "Kredensial BLS muncul setelah node menjawab RPC.",
      "copyAll": "Salin semua",
      "copyNamed": "Salin {{label}}",
      "nearStakeKey": "Mempertaruhkan kunci publik",
      "nearStakeKeyPending": "Muncul setelah start pertama (mendekati init). RPC belum siap bukan berarti kuncinya hilang.",
      "nearAccountId": "File kunci account_id",
      "nearAccountIdPending": "Seringkali kosong sampai Anda menyetelnya ke {{pool}}{{suffix}} setelah kumpulan ada. Panel hanya menulis kolom ini — tidak pernah secret_key.",
      "nearFactory": "Pabrik kolam taruhan",
      "nearPublicAddr": "P2P Publik (rekan)",
      "nearPublicAddrPending": "Muncul setelah permulaan pertama, tulis WAN:{{port}} ke config.json.",
      "nearCreateCommand": "perintah create_staking_pool",
      "nearPointing": "Kontrak kumpulan tidak mengambil IP server ini. Ini menyimpan kunci publik saham node ini. Rekan menggunakan baris P2P Publik di atas (port host {{port}}). RPC tetap di localhost.",
      "nearAccountIdHint": "Setelah kumpulan ada, setel account_id di sini (jangan edit file secara manual). Panel tidak pernah menulis secret_key.",
      "cosmosPubkey": "Kunci publik konsensus",
      "cosmosPubkeyPending": "Muncul setelah gaiad init menulis priv_validator_key.json. RPC belum siap bukan berarti kuncinya hilang.",
      "cosmosChainId": "rantai-id",
      "cosmosP2p": "P2P Publik (alamat_eksternal)",
      "cosmosP2pPending": "Muncul setelah permulaan pertama, tulis tcp://WAN:{{port}} ke config.toml.",
      "ethBeacon": "API Suar (host lokal)",
      "ethBeaconPending": "Beacon HTTP pada host ini. Arahkan klien validator yang Anda jalankan sendiri ke URL ini — penulisan ini tidak memiliki VC.",
      "cosmosCreateCommand": "perintah buat-validator",
      "cosmosCreateJson": "validator.json (gaiad v28)",
      "copyFailed": "Penyalinan gagal",
      "solIdentity": "Kunci publisitas identitas",
      "solIdentityPending": "Muncul setelah RPC menjawab getIdentity. Proses ini adalah --no-voting sampai Anda menambahkan akun suara sendiri.",
      "adaP2pPort": "Relai port P2P",
      "adaP2pPending": "Iklankan IPv4 (atau DNS) publik host ini dan port ini di sertifikat pendaftaran kumpulan. topology.json localRoots ditujukan untuk produser blok Anda sendiri. Panel ini tidak menyelidiki WAN.",
      "notPosTitle": "Bukan bukti kepemilikan",
      "notPosBody": "Bitcoin di sini adalah node yang penuh atau dipangkas. Tidak ada dompet staking di halaman ini.",
      "eth": {
        "model": "Penulisan ini hanya menjalankan eksekusi + suar — bukan klien validator. Setor 32 ETH di landasan peluncuran resmi.",
        "min": "32 ETH + bahan bakar",
        "wallets": "MetaMask, Ledger, Trezor — hanya di landasan peluncuran resmi",
        "panel": "Menjalankan EL + suar. RPC dan API suar di localhost. Tidak ada klien validator dalam penulisan.",
        "honesty": "Instance ini hanya untuk eksekusi + suar. Tidak ada klien validator dalam file penulisan. Menyalin keystore ke direktori data suar tidak akan memulai pengesahan. Kontrak deposit tidak mengambil IP server ini.",
        "yskDoes": [
          "Instal dan mulai eksekusi dan klien suar.",
          "Tampilkan disk, rekan, dan status peningkatan.",
          "Tidak menjalankan klien validator dan tidak memuat keystore penandatanganan."
        ],
        "youDo": [
          "Buat sendiri keystore dan alamat penarikan di landasan peluncuran resmi atau dengan staking-deposit-cli.",
          "Setor 32 ETH di landasan peluncuran untuk jaringan ini.",
          "Jalankan sendiri klien validator (bukan penulisan ini) terhadap API suar localhost instance ini."
        ],
        "steps": [
          "Tunggu hingga eksekusi dan suar disinkronkan.",
          "Buka landasan peluncuran resmi untuk jaringan ini (Hoodi atau Mainnet di halaman ini). Sepolia tidak memiliki tombol landasan peluncuran di sini.",
          "Offline, hasilkan keystore (staking-deposit-cli). Tetapkan alamat penarikan ke dompet ETH Anda sendiri.",
          "Setor 32 ETH pada launchpad (simpan ekstra untuk bahan bakar).",
          "Jalankan validator client sendiri pada URL suar di kartu ini (contoh: lighthouse vc --beacon-nodes). Penulisan ini tidak memiliki VC — menempatkan keystore di datadir suar tidak membuktikannya."
        ],
        "never": [
          "Jangan pernah memberikan frase awal atau kunci penarikan Anda kepada siapa pun, termasuk panel ini.",
          "Jangan pernah mengunggah keystore penandatanganan ke cloud yang dihosting.",
          "Jangan berharap halaman ini membuktikannya setelah Anda menyalin keystore ke datadir suar."
        ]
      },
      "avax": {
        "model": "Daftarkan bukti NodeID dan BLS yang sedang berjalan pada P-Chain dari Core atau Ledger.",
        "min": "2.000 AVAX + biaya (1 AVAX di Fuji); setidaknya 14 hari",
        "wallets": "Inti, Buku Besar",
        "panel": "Menjalankan avalanchego dan dapat menampilkan NodeID dan BLS setelah jawaban RPC",
        "yskDoes": [
          "Jalankan avalanchego dan pertahankan RPC di localhost.",
          "Tampilkan kredensial NodeID dan BLS setelah node menjawab RPC."
        ],
        "youDo": [
          "Pegang AVAX di Core atau Ledger.",
          "Tambahkan validator dari Core menggunakan bukti NodeID dan BLS node ini."
        ],
        "steps": [
          "Tunggu hingga node ini tersinkronisasi dan baris NodeID / BLS muncul (RPC).",
          "Salin NodeID, BLS kunci publik, dan BLS bukti kepemilikan.",
          "Di web Core (Staking → Validasi), atau dengan Ledger melalui Core, daftar di P-Chain. Transaksi tidak mengambil IP server.",
          "Mainnet membutuhkan setidaknya 2.000 AVAX, periode minimum 14 hari, dan cadangan biaya. Fuji adalah 1 AVAX."
        ],
        "never": [
          "Jangan kirim AVAX ke panel ini.",
          "Jangan bagikan frase pemulihan Inti atau Buku Besar Anda."
        ]
      },
      "ada": {
        "model": "Operasikan kumpulan taruhan dengan kunci cold / KES / VRF offline — bukan ketukan dompet browser.",
        "min": "Ikrar adalah pilihan Anda (lihat dokumen resmi)",
        "wallets": "Peralatan kumpulan pasak resmi (cold key tetap offline)",
        "panel": "Menjalankan cardano-node sebagai relay terlebih dahulu; hot key dapat dilampirkan di halaman ini.",
        "honesty": "Contoh ini dimulai sebagai relay. Pendaftaran kumpulan on-chain menggunakan kunci dingin yang Anda simpan secara offline. Rekan dan topologi menggunakan IPv4 publik host ini dan port P2P yang ditunjukkan di sini — panel tidak menyelidiki WAN.",
        "yskDoes": [
          "Jalankan cardano-node dan pemulihan snapshot Mithril jika ditawarkan.",
          "Lampirkan KES, VRF, dan opcert saat Anda menyediakannya. Kunci dingin ditolak."
        ],
        "youDo": [
          "Hasilkan kunci kumpulan secara offline.",
          "Daftarkan pool dengan Cardano CLI resmi. Masukkan port publik IPv4 atau DNS dan relai P2P host ini ke dalam sertifikat pendaftaran kumpulan.",
          "Lampirkan KES, VRF, dan opcert di halaman ini. Jangan unggah kunci dingin."
        ],
        "steps": [
          "Baca panduan resmi mengoperasikan kumpulan pasak.",
          "Hasilkan kunci dingin, KES, dan VRF pada mesin offline.",
          "Daftarkan kumpulan secara on-chain. Iklankan relai di sertifikat tersebut (--pool-relay-ipv4 atau DNS + port P2P pada kartu ini). Penemuan publik adalah sertifikatnya, bukan topology.json.",
          "Pada halaman instance ini, lampirkan KES, VRF, dan sertifikat operasional. Kunci dingin ditolak.",
          "topology.json localRoots ditujukan untuk produser blok Anda sendiri (beriklan: salah). Panel ini tidak mencari alamat WAN."
        ],
        "never": [
          "Jangan perlakukan ini sebagai taruhan sekali klik MetaMask.",
          "Jangan simpan kunci dingin di host validator.",
          "Jangan berharap mengedit topology.json sendirian untuk mendaftarkan relai on-chain."
        ]
      },
      "near": {
        "model": "Buat kontrak staking-pool di pabrik resmi. Kontrak menyimpan kunci publik node ini — bukan IP server.",
        "min": "Lihat dokumen validator resmi (30 DEKAT untuk membuat kumpulan, ditambah taruhan)",
        "wallets": "Dompet / penguncian DEKAT resmi",
        "panel": "Menjalankan neard; pengisian formulir create_staking_pool; setelah pool ada, tulis account_id saja.",
        "yskDoes": [
          "Jalankan dekat dengan RPC di localhost dan P2P di 24567.",
          "Setelah init, tampilkan kunci publik pasak, alamat publik P2P, dan pabrik.",
          "Isi create_staking_pool dari nama kumpulan + pemilik + kunci publik. Setelah pool ada, tulis account_id saja — jangan pernah secret_key, jangan pernah transaksinya."
        ],
        "youDo": [
          "Mulai node dan tunggu kunci publik di halaman ini.",
          "Masukkan nama kolam dan pemiliknya, lalu salin perintahnya.",
          "Masuk create_staking_pool dari dompet NEAR Anda sendiri atau di dekat cli.",
          "Kembali ke sini dan atur account_id. Taruhan dari dompet Anda ke dalam kumpulan itu."
        ],
        "steps": [
          "Mulai node dan tunggu mendekati init hingga kunci publik muncul (RPC belum siap tidak sama dengan kunci yang hilang).",
          "Masukkan nama pendek kumpulan dan akun pemilik. Salin perintah create_staking_pool yang telah diisi.",
          "Dari dompet Anda, hubungi pabrik (testnet pool.f863973.m0 / mainnet poolv1.near) dengan 30 NEAR untuk penyimpanan. Perintahnya menggunakan --accountId; jika CLI terdekat Anda mengharapkan --account_id, ikuti --help CLI tersebut.",
          "Setelah pool ada, gunakan Set account_id di halaman ini (konfirmasi = id instance). Jangan mengedit validator_key.json dengan tangan.",
          "Mulai ulang jika node sudah berjalan. Tunggu hingga RPC menjawab dan node disinkronkan sebelum melakukan staking dalam jumlah besar. Rekan menggunakan Publik P2P — kontrak tidak menggunakan IP."
        ],
        "never": [
          "Jangan menempelkan frase awal ke panel ini.",
          "Jangan masukkan IP server ini ke dalam kontrak.",
          "Jangan berharap panel mengirimkan transaksi create_staking_pool."
        ]
      },
      "cosmos": {
        "model": "buat-validator dari dompet operator Anda menggunakan kunci publik konsensus node ini — bukan IP server.",
        "min": "Lihat dokumen resmi Cosmos Hub (delegasi mandiri di uatom)",
        "wallets": "Keplr atau dompet Cosmos lain yang Anda kendalikan",
        "panel": "Menjalankan gaiad v28; menunjukkan pubkey konsensus; pengisian formulir validator.json + buat-validator. Jangan pernah menulis priv_validator_key.json atau menyiarkan.",
        "honesty": "Gaiad ini adalah v28 (file JSON). Dokumen hub masih menunjukkan tanda - tanda tersebut gagal di sini. Transaksi menyimpan kunci publik konsensus node ini, bukan IP server. Rekan menggunakan P2P Publik. RPC tetap di localhost. Panel ini tidak menyiarkan atau membaca priv_key.",
        "yskDoes": [
          "Jalankan gaiad dengan RPC di localhost dan P2P di 26656. harga bahan bakar minimum adalah 0.005uatom.",
          "Setelah init, tampilkan kunci publik konsensus, id rantai, dan P2P publik.",
          "Isikan validator.json dan perintah gaiad v28 dari amount, moniker, dan --from ditambah pubkey konsensus. Jangan pernah menulis priv_validator_key.json atau menyiarkan transaksi."
        ],
        "youDo": [
          "Mulai node dan tunggu kunci publik konsensus di halaman ini.",
          "Masukkan jumlah, moniker, dan --from. Copy validator.json, lalu perintah gaiad.",
          "Masuk dari Keplr atau kunci gaiad yang Anda kendalikan. Jangan gabungkan mnemonik itu dengan kunci konsensus pada host ini."
        ],
        "steps": [
          "Mulai node dan tunggu gaiad init sehingga kunci publik konsensus muncul (RPC belum siap tidak sama dengan kunci yang hilang).",
          "Masukkan delegasi mandiri (1atom = 1 ATOM, atau uatom), moniker, dan --from. Copy validator.json lalu perintah gaiad. Node ini adalah gaiad v28: file JSON, bukan formulir tanda dokumen Hub. chain-id adalah kosmoshub-4 di mainnet, penyedia di testnet.",
          "--gas-prices yang disalin adalah 0,005uatom agar cocok dengan node ini. Jangan tempelkan contoh 0,0025uatom dokumen Hub atau validator pembuatan berbasis tanda.",
          "Simpan validator.json dan siarkan dari dompet operator Anda. Transaksi tidak mengambil IP server. Rekan-rekan menggunakan tcp://WAN:{{port}}.",
          "Tunggu hingga RPC menjawab dan node disinkronkan sebelum melakukan bonding dalam jumlah besar."
        ],
        "never": [
          "Jangan mencampurkan mnemonik dompet operator dengan kunci konsensus.",
          "Jangan masukkan mnemonik dompet di sini.",
          "Jangan masukkan IP server ini ke dalam create-validator.",
          "Jangan tempel tanda --amount/--pubkey dokumen Hub — gaiad ini adalah v28 (validator.json).",
          "Jangan gunakan gas 0.0025uatom pada node ini — minimum penulisannya adalah 0.005uatom."
        ]
      },
      "sol": {
        "model": "Penulisan ini menjalankan Agave dengan --no-voting. Akun pemungutan suara dan penarikan dibuat dengan alat resmi Solana — bukan panel ini.",
        "min": "Lihat dokumen operasi resmi (perangkat keras dan disk berat)",
        "wallets": "Solana CLI / dompet resmi yang Anda kendalikan",
        "panel": "Menjalankan Agave sebagai simpul pengejar (--no-voting). Dapat menunjukkan kunci identitas pubkey setelah jawaban RPC.",
        "honesty": "Proses ini adalah --tidak ada pemungutan suara. Itu tidak akan memilih atau mendapatkan saham sampai Anda membuat akun suara dengan Agave CLI resmi dan mengubah cara prosesnya dimulai. Panel ini tidak menghapus --no-voting.",
        "yskDoes": [
          "Jalankan klien Agave dan peringatkan tentang disk.",
          "Tampilkan kunci pub identitas setelah RPC menjawab getIdentity.",
          "Tidak membuat akun suara dan tidak memulai pemungutan suara."
        ],
        "youDo": [
          "Buat kunci pemungutan suara dan penarikan resmi dengan alat resmi Solana di mesin yang Anda kendalikan.",
          "Buat akun pemungutan suara dengan CLI resmi, menggunakan kunci pub identitas ini.",
          "Baru kemudian jalankan validator pemungutan suara — penulisan ini tetap --no-voting."
        ],
        "steps": [
          "Konfirmasikan bahwa host ini memiliki disk dan IOPS yang cukup (mainnet biasanya 2 TiB+).",
          "Tunggu hingga RPC menjawab, lalu salin identitas pubkey yang ditunjukkan di sini.",
          "Buat kunci suara dan penarikan yang diotorisasi dengan alat resmi Solana di mesin yang Anda kendalikan, lalu solana buat akun suara.",
          "Tulisan ini mempertahankan --no-voting. Membuat vote account tidak menjadikan proses ini sebagai pilihan."
        ],
        "never": [
          "Jangan mengharapkan tombol dompet browser di panel ini.",
          "Jangan menempelkan identitas atau pasangan kunci suara ke dalam panel ini.",
          "Jangan berharap halaman ini mulai memberikan suara setelah Anda membuat vote account."
        ]
      },
      "dot": {
        "model": "Penulisan ini adalah node penuh (tanpa --validator). Kunci sesi dan setKeys adalah langkah resmi Polkadot.js — bukan panel ini.",
        "min": "Lihat wiki resmi",
        "wallets": "Polkadot.js",
        "panel": "Menjalankan polkadot sebagai simpul penuh. RPC di localhost. Tidak ada tanda --validator.",
        "honesty": "Proses ini tidak dimulai dengan --validator. Panel tidak memanggil author_rotateKeys (yang akan mengubah keystore). Menjadi validator memerlukan tanda node resmi dan panggilan rotasiKeys yang Anda lakukan terhadap RPC localhost.",
        "yskDoes": [
          "Jalankan polkadot dan ekspos RPC di localhost.",
          "Tidak meneruskan --validator dan tidak memutar kunci sesi."
        ],
        "youDo": [
          "Ikuti panduan resmi penyiapan validator.",
          "Jika Anda menambahkan --validator sendiri, panggilrotateKeys di RPC localhost dan ikat hasilnya di Polkadot.js dari simpanan Anda."
        ],
        "steps": [
          "Sinkronkan node penuh ini.",
          "Baca panduan validasi resmi. Penulisan ini bukan proses validator.",
          "Jangan tempelkan mnemonik simpanan di sini. Jika nanti Anda menjalankan dengan --validator, putar sendiri kuncinya di http://127.0.0.1 (port RPC pada contoh ini).",
          "Di Polkadot.js, atur kunci sesi tersebut di simpanan/pengontrol Anda, lalu ikuti langkah-langkah pengikatan resmi."
        ],
        "never": [
          "Jangan tempelkan mnemonik simpanan ke panel ini.",
          "Jangan berharap halaman ini menghasilkan kunci sesi atau memulai --validator."
        ]
      },
      "sui": {
        "model": "Penulisan ini adalah fullnode Sui (fullnode.yaml), bukan node validator.",
        "min": "Lihat dokumen resmi Sui",
        "wallets": "Dompet resmi operator Sui",
        "panel": "Menjalankan sui-node sebagai fullnode. RPC di localhost.",
        "honesty": "Proses ini tidak dapat masuk sebagai validator Sui. Penyiapan validator menggunakan konfigurasi dan kunci yang berbeda. Dokumen validator resmi tertaut; panel ini tidak mengalihkan node ke mode validator.",
        "yskDoes": [
          "Jalankan gambar sui-node yang dikirimkan sebagai fullnode."
        ],
        "youDo": [
          "Gunakan instance ini sebagai fullnode.",
          "Untuk menjadi validator, ikuti dokumen resmi validator Sui pada konfigurasi validator — bukan penulisan ini."
        ],
        "steps": [
          "Sinkronkan node penuh ini.",
          "Perlakukan itu sebagai fullnode: ia mengeksekusi kembali pos pemeriksaan tetapi tidak menandatangani konsensus.",
          "Buka panduan operator validator resmi hanya jika Anda membuat proses validator terpisah."
        ],
        "never": [
          "Jangan kirim SUI ke panel ini.",
          "Jangan berharap proses fullnode ini mendaftar sebagai validator."
        ]
      },
      "aptos": {
        "model": "Penulisan ini adalah fullnode publik Aptos (peran full_node), bukan validator.",
        "min": "Lihat dokumen resmi Aptos",
        "wallets": "Dompet resmi operator Aptos",
        "panel": "Menjalankan aptos-node sebagai fullnode publik. RPC di localhost.",
        "honesty": "Fullnode publik tidak berpartisipasi dalam konsensus. Validator memerlukan peran, kunci, dan biasanya fullnode validator yang berbeda. Panel ini tidak mengalihkan node ke mode validator.",
        "yskDoes": [
          "Jalankan image Aptos yang dikirimkan sebagai fullnode publik."
        ],
        "youDo": [
          "Gunakan instance ini sebagai fullnode publik.",
          "Untuk menjalankan validator, ikuti dokumen resmi node validator Aptos — bukan penulisan ini."
        ],
        "steps": [
          "Sinkronkan fullnode publik ini.",
          "Anggap saja sebagai PFN: ia menyajikan data buku besar, ia tidak melakukan pemungutan suara.",
          "Buka dokumen validator resmi hanya jika Anda membuat pasangan validator + VFN terpisah."
        ],
        "never": [
          "Jangan masukkan kunci operator di panel ini.",
          "Jangan berharap proses fullnode ini mendaftar sebagai validator."
        ]
      },
      "btc": {
        "model": "Bukan bukti kepemilikan. Ini adalah node Bitcoin yang penuh atau telah dipangkas.",
        "min": "—",
        "wallets": "Tidak berlaku",
        "panel": "Menjalankan bitcoind",
        "yskDoes": [
          "Jalankan node Bitcoin penuh atau dipangkas."
        ],
        "youDo": [
          "Gunakan dompet Bitcoin apa pun secara terpisah. Penambangan dan Lightning berada di luar jangkauan."
        ],
        "steps": [
          "Perlakukan instance ini sebagai node Bitcoin saja.",
          "Tidak ada deposit staking dan tidak ada keystore validator."
        ],
        "never": [
          "Jangan mencari dompet staking di halaman ini."
        ]
      },
      "nearPoolSlug": "Nama pool",
      "nearPoolSlugHint": "Hanya nama pendek. Pabrik menambahkan {{suffix}}.",
      "nearOwner": "Akun pemilik",
      "nearOwnerHint": "NEAR akun yang menandatangani create_staking_pool di dompet Anda. Bukan kunci simpul.",
      "nearPreview": "Pratinjau perintah",
      "nearWriteAccount": "Setel account_id",
      "nearWriteTitle": "Tetapkan validator_key.json account_id untuk {{id}}?",
      "nearWriteDesc": "Hanya menulis account_id pada file kunci yang ada. Tidak mengirim create_staking_pool. Tidak menyentuh secret_key.",
      "nearWriteC1": "account_id menjadi {{pool}}{{suffix}}",
      "nearWriteC2": "Panel tidak pernah menandatangani transaksi factory",
      "nearRestart": "Mulai ulang node setelah menulis",
      "nearNeedKey": "Tunggu hingga muncul kunci publik pasak (neard init), lalu isi formulir ini.",
      "nearNeedSlug": "Masukkan nama kumpulan untuk mengatur account_id.",
      "nearNeedOwner": "Masukkan akun pemilik untuk mengisi perintah. Setel account_id hanya memerlukan nama kumpulan.",
      "cosmosPointing": "Gaiad ini adalah v28: salin validator.json, lalu buat validator validator.json. Dokumen hub masih menunjukkan tanda - tanda tersebut gagal di sini. Transaksi menggunakan kunci publik konsensus node ini, bukan IP server. Rekan menggunakan P2P Publik (port host {{port}}). Gas adalah 0,005uatom — bukan contoh 0,0025uatom dari dokumen Hub.",
      "avaxPointing": "Pendaftaran P-Chain menggunakan bukti NodeID dan BLS ini, bukan IP server. RPC tetap di localhost. Daftar di Core (Staking → Validasi).",
      "ethVcCommand": "Contoh validator client (tidak ada di compose ini)",
      "ethVcHint": "Jalankan validator client sendiri pada URL suar ini. Mengimpor keystore ke direktori data suar tidak membuktikannya.",
      "cosmosAmount": "Delegasi sendiri",
      "cosmosAmountHint": "uatom, atau 1atom untuk 1 ATOM. Angka 1 kosong adalah 1 uatom — bukan 1 ATOM.",
      "cosmosAmountParsed": "{{amount}} = {{atom}}",
      "cosmosMoniker": "Moniker",
      "cosmosFromKey": "nama kunci --from",
      "cosmosFromHint": "Nama kunci gaiad lokal, atau tanda tangan dengan Keplr. Bukan kunci konsensus pada tuan rumah ini.",
      "cosmosNeedPubkey": "Tunggu hingga muncul kunci publik konsensus (gaiad init), lalu isi formulir ini.",
      "cosmosNeedFields": "Masukkan jumlah, moniker, dan --from untuk mengisi perintah."
    },
    "alerts": {
      "diskTitle": "Disk validator kritis",
      "diskBody": "Ruang kosong volume data validator sangat rendah.",
      "upgradeTitle": "Peningkatan validator tersedia",
      "upgradeBody": "Satu atau lebih klien node memiliki versi pin yang lebih baru.",
      "syncTitle": "Node validator perlu perhatian",
      "syncBody": "Sebuah node telah sinkron lebih dari 6 jam atau melaporkan kesalahan.",
      "rollbackTitle": "Peningkatan validator dibatalkan",
      "rollbackBody": "Peningkatan {{id}} gagal pemeriksaan kesehatan dan dibatalkan."
    },
    "upgrade": {
      "changelog": "Catatan perubahan"
    },
    "readiness": {
      "dockerTitle": "Docker untuk node validator",
      "dockerOk": "{{count}} instans validator; Docker terpasang",
      "dockerMissing": "Ada instans validator tetapi perintah docker tidak ditemukan"
    },
    "detail": {
      "status": "Status",
      "sync": "Sinkronisasi",
      "peers": "Teman sejawat",
      "traffic": "Lalu lintas",
      "version": "Versi",
      "access": "Mengakses",
      "upgrade": "Pembaruan",
      "upgradeHint": "Bagaimana node ini melacak versi klien.",
      "setVersion": "Ubah versi",
      "setVersionHint": "Pilih tag Docker resmi untuk klien di node ini. Tulisan ditulis ulang, lalu ditarik dan dimulai ulang.",
      "setVersionConfirmTitle": "Ubah {{id}} menjadi {{tag}}?",
      "setVersionConfirmDesc": "Menulis ulang penulisan, menarik {{ref}}, dan memulai ulang node.",
      "setVersionC1": "Penampung yang berjalan diganti dengan tag yang dipilih.",
      "setVersionC2": "Ketikkan id instans untuk mengonfirmasi.",
      "setVersionMainnet": "Mainnet: versi yang buruk dapat membuat node offline. Saya mengerti.",
      "releaseNotes": "Catatan rilis",
      "network": "Jaringan",
      "networkHint": "Peralihan jaringan menghentikan node dan menghapus data rantai. Konfirmasikan di bawah Hapus data terlebih dahulu.",
      "maintain": "Pemeliharaan",
      "danger": "Hapus data",
      "dangerHint": "Ketikkan id instans atau CLEAR. Ini menghapus data berantai pada disk.",
      "compose": "Compose",
      "logs": "Log"
    },
    "state": {
      "unknown": "Tidak dikenal",
      "stopped": "Berhenti",
      "created": "Dibuat (tidak pernah dimulai)",
      "missing": "Tidak ada wadah",
      "starting": "Mulai",
      "rpc_wait": "Berjalan — RPC belum siap",
      "running": "Berlari",
      "syncing": "Sinkronisasi",
      "error": "Kesalahan"
    }
  },
  "vnc": {
    "pageDesc": "Server & klien VNC",
    "result": "Hasil operasi VNC",
    "installed": "Dipasang",
    "notInstalled": "Tidak dipasang",
    "stackBins": "{{bins}}",
    "stackMissing": "Alat yang hilang",
    "executeOn": "YSK_EXECUTE aktif",
    "executeOff": "YSK_EXECUTE mati",
    "statAccounts": "Akun",
    "statRunning": "Berlari",
    "statClients": "Profil klien",
    "statEndpoint": "Tuan rumah",
    "goAccounts": "Akun",
    "goClient": "Klien",
    "goInstall": "Memasang",
    "accountsEmptyTitle": "Tidak ada akun",
    "accountsEmptyDesc": "Buat akun untuk memulai",
    "clientPathHint": "Kedua jalur membuka VNC di browser. Mereka berbeda berdasarkan semantik target dan salinannya (keduanya masih proxy TCP melalui panel).",
    "clientPathCompare": "“Dapat dijangkau pengguna”: nama host publik (misalnya hermes.example.com:5901). “Server proxy”: LAN / DC menargetkan hanya host ini yang dapat dijangkau. TCP diperiksa dari server ini sebelum terhubung.",
    "clientEmptyTitle": "Tidak ada klien",
    "clientEmptyDesc": "Tambahkan host jarak jauh: port",
    "openInBrowser": "Buka di peramban",
    "pathUserReachable": "Titik akhir yang dapat dijangkau pengguna",
    "pathServerProxy": "Melalui proksi server",
    "pathUserReachableShort": "Dapat dijangkau pengguna",
    "pathServerProxyShort": "Proksi server",
    "pathUserReachableHint": "Untuk nama host publik atau target yang dikonfigurasi (mis. example.com:5901). Browser melewati panel; host ini harus membuka TCP ke alamat itu.",
    "pathServerProxyHint": "Untuk LAN atau target yang hanya dapat dijangkau oleh server bidang kontrol. Lalu lintas diproksi melalui jaringan server ini. Host koneksi opsional mengambil alih alamat TCP (misalnya nama tampilan vs 10.x).",
    "connectHost": "Hubungkan host (opsional, server proxy)",
    "connectHostHint": "Alamat TCP yang dibuka bidang kendali (IP LAN). Biarkan kosong untuk menggunakan Host jarak jauh di atas.",
    "pathBrowser": "Titik akhir yang dapat dijangkau pengguna",
    "pathHostViewer": "Melalui proksi server",
    "hostViewer": "Melalui proksi server",
    "needViewerOptional": "TigerVNC Viewer (opsional, bukan untuk jalur browser)",
    "viewerStackOptional": "VNC dalam browser tidak memerlukan vncviewer desktop. Paket Viewer di bawah ini hanya merupakan pemeliharaan sistem opsional.",
    "viewer": {
      "minting": "Sesi persiapan…",
      "connecting": "Menghubungkan…",
      "connected": "Terhubung",
      "disconnected": "Terputus",
      "error": "Koneksi gagal",
      "idle": "Menganggur",
      "closed": "Tertutup",
      "minting_state": "Mempersiapkan",
      "reconnect": "Hubungkan kembali",
      "disconnect": "Memutuskan",
      "fullscreen": "Layar penuh",
      "fit": "Jendela pas",
      "oneToOne": "1:1",
      "cad": "Ctrl+Alt+Del",
      "password": "kata sandi VNC",
      "passwordPrompt": "Diperlukan kata sandi",
      "sendPassword": "Kirim kata sandi",
      "securityFailure": "Otentikasi gagal",
      "canvasLabel": "Desktop VNC: {{name}}",
      "clipboardPaste": "Tempel → jarak jauh",
      "clipboardPanel": "papan klip",
      "clipboardHint": "Sinkronkan teks antara browser ini dan desktop jarak jauh.",
      "clipboardLocal": "Kirim ke jarak jauh",
      "clipboardLocalPh": "Tempel atau ketik teks untuk dikirim ke sesi VNC",
      "clipboardRemote": "Dari jarak jauh",
      "clipboardRemotePh": "Teks yang disalin pada desktop jarak jauh muncul di sini",
      "clipboardSend": "Kirim ke jarak jauh",
      "clipboardCopy": "Salin secara lokal",
      "clipboardToRemote": "Papan klip dikirim ke jarak jauh",
      "clipboardToRemoteHint": "Tempel papan klip browser ke sesi jarak jauh",
      "clipboardFromRemote": "Papan klip jarak jauh disalin ke browser ini",
      "clipboardFromRemoteManual": "Papan klip jarak jauh diperbarui — buka panel Papan Klip untuk menyalin",
      "clipboardEmpty": "Tidak ada yang perlu ditempel — salin teks terlebih dahulu atau ketik di bawah",
      "clipboardReadDenied": "Pembacaan papan klip yang diblokir browser — tempel ke panel dan Kirim",
      "clipboardNoRemote": "Belum ada SMS yang diterima dari jarak jauh",
      "clipboardCopiedLocal": "Disalin ke browser ini",
      "quality": "Kualitas",
      "qualityHint": "Kualitas gambar vs bandwidth (JPEG / kompresi)",
      "qualityLow": "Rendah (hemat data)",
      "qualityBalanced": "Seimbang",
      "qualityHigh": "Tinggi",
      "qualityMax": "Kualitas maksimal",
      "passwordPromptHint": "Desktop ini memerlukan kata sandi VNC — masukkan di bawah.",
      "errNeedExecute": "Tidak dapat memulai desktop: server memerlukan root dan YSK_EXECUTE diaktifkan.",
      "errTicket": "Tiket sesi kedaluwarsa atau tidak valid — tekan Sambungkan Kembali.",
      "errBusy": "Terlalu banyak sesi VNC di panel ini — tutup sesi lainnya dan coba lagi.",
      "errRefused": "Tidak ada yang mendengarkan di {{host}}:{{port}} (koneksi ditolak). Apakah VNC berjalan dan dapat dijangkau dari server ini?",
      "errRefusedGeneric": "Koneksi ditolak — periksa apakah VNC sedang berjalan dan port sudah benar.",
      "errTimeout": "Waktu habis untuk menyambung ke {{host}}:{{port}}. Periksa firewall/jalur jaringan dari server ini.",
      "errTimeoutGeneric": "Waktu koneksi habis — periksa jaringan dan firewall.",
      "errDns": "Tidak dapat menyelesaikan nama host «{{host}}».",
      "errDnsGeneric": "Nama host tidak dapat diselesaikan.",
      "errNet": "Jaringan tidak dapat dijangkau untuk {{host}}:{{port}}.",
      "reconnecting": "Koneksi terputus — menyambung kembali ({{n}}/{{max}})…",
      "idleHint": "Sesi telah menganggur untuk sementara waktu. Desktop jarak jauh mungkin terkunci; gerakkan mouse atau sambungkan kembali jika diperlukan.",
      "idleDismiss": "Masih disini",
      "sessions": "Buka sesi VNC",
      "sessionCount": "{{n}} / {{max}} sesi",
      "sessionLimit": "Paling banyak {{max}} sesi VNC sekaligus — tutup dulu.",
      "closeSession": "Tutup sesi {{name}}",
      "shareLink": "Bagikan tautan",
      "shareCopied": "Tautan berbagi hanya lihat disalin (valid ~1 jam)",
      "shareFailed": "Tidak dapat membuat tautan berbagi",
      "shareTitle": "Tampilan VNC bersama",
      "shareGuest": "Desktop bersama",
      "shareMissing": "Token berbagi tidak ada",
      "shareExpired": "Tautan berbagi ini tidak valid atau telah kedaluwarsa",
      "viewOnlyBadge": "Lihat saja",
      "screenshot": "Tangkapan layar",
      "screenshotSaved": "Tangkapan layar diunduh",
      "screenshotFailed": "Tidak dapat mengambil tangkapan layar",
      "screenshotNoCanvas": "Tampilan belum siap untuk tangkapan layar",
      "record": "Catatan",
      "recordStop": "Hentikan rek",
      "recordHint": "Rekam desktop ke WebM (maks 60 detik)",
      "recordStarted": "Merekam… klik Hentikan perekaman atau tunggu 60 detik",
      "recordSaved": "Rekaman diunduh",
      "recordFailed": "Tidak dapat merekam",
      "recordUnsupported": "Browser ini tidak dapat merekam kanvas",
      "connectingHint": "Membuka terowongan aman ke desktop…",
      "reconnectHint": "Tekan Hubungkan kembali untuk mencoba lagi, atau periksa host dan port jarak jauh."
    },
    "installHint": "TigerVNC → noVNC; XFCE opsional",
    "needTigerVnc": "Diperlukan TigerVNC",
    "needXfceFirst": "Instal XFCE terlebih dahulu",
    "needSessionRunning": "Sesi tidak berjalan — mulai terlebih dahulu",
    "needNovnc": "tidak diperlukan VNC",
    "needXfce": "XFCE (opsional)",
    "needViewer": "Penampil (opsional)",
    "needViewerOrNovnc": "Penampil atau noVNC",
    "settingsHint": "Default untuk akun baru",
    "settingsNeedStack": "Default ini berlaku ketika TigerVNC (dan XFCE jika dipilih) diinstal. Instal terlebih dahulu di tab Instal.",
    "clientNeedNovnc": "Buka di browser membutuhkan noVNC. Instal di tab Instal sebelum menambahkan remote yang ingin Anda buka di sini.",
    "defaultDesktop": "Desktop bawaan",
    "defaultGeometry": "Resolusi bawaan",
    "defaultDepth": "Kedalaman warna",
    "defaultRfbBind": "RFB mendengarkan",
    "defaultAutostart": "Sesi mulai otomatis",
    "autostartLabel": "Mulai saat boot",
    "settingsSaved": "Default VNC disimpan",
    "tab": {
      "overview": "Ringkasan",
      "accounts": "Akun",
      "client": "Klien",
      "install": "Memasang",
      "settings": "Pengaturan",
      "about": "Tentang"
    },
    "desktop": {
      "xfce": "XFCE (desktop penuh)",
      "terminal": "Terminal"
    },
    "bind": {
      "localhost": "Hanya Localhost (noVNC / terowongan)",
      "all": "Semua antarmuka (RFB langsung — firewall terbuka)",
      "localhostShort": "host lokal",
      "allShort": "0.0.0.0"
    },
    "accountListTitle": "Akun VNC ({{count}})",
    "accountListDesc": "Satu pengguna Linux per akun",
    "createAccount": "+ Buat akun",
    "createAccountTitle": "Buat akun VNC",
    "createAccountDesc": "Pengguna yskvnc_* yang berdedikasi",
    "createAccountBtn": "Buat akun",
    "editAccountTitle": "Edit akun VNC",
    "editAccountDesc": "Pengguna Linux {{user}} · tampilan :{{display}}",
    "setPassword": "Kata sandi",
    "setPasswordTitle": "Tetapkan kata sandi VNC",
    "setPasswordDesc": "Perbarui kata sandi masuk VNC untuk {{address}}",
    "newPassword": "Kata sandi baru",
    "confirmPassword": "Konfirmasikan kata sandi",
    "passwordHint": "Minimal 6 karakter",
    "passwordMismatch": "Kata sandi tidak cocok",
    "passwordTooShort": "Kata sandi minimal harus 6 karakter",
    "needName": "Masukkan nama tampilan",
    "start": "Awal",
    "stop": "Berhenti",
    "startAfterCreate": "Mulai setelah dibuat",
    "hostnameBroken": "Host ini tidak dapat menentukan nama hostnya sendiri ({{hostname}}). Permulaan sesi akan gagal.",
    "hostnameBrokenIdle": "Hostname {{hostname}} does not resolve on this host. Fix /etc/hosts before you create a session.",
    "hostnameFix": "Tulis nama host ke /etc/hosts",
    "hostnameFixTitle": "Tambahkan baris ini ke /etc/hosts?",
    "hostnameFixDesc": "{{line}}",
    "hostnameFixDone": "Nama host /etc/hosts diperbarui",
    "startAfterCreateBlocked": "Dinonaktifkan hingga nama host terselesaikan",
    "startHostnameBlocked": "Tidak dapat memulai hingga host ini dapat menentukan nama hostnya. Gunakan \"Tulis nama host ke /etc/hosts\".",
    "colName": "Nama",
    "colLinuxUser": "pengguna Linux",
    "colDisplay": "Tampilan / port",
    "colStatus": "Status",
    "colDesktop": "Desktop",
    "colBind": "Ikatan RFB",
    "accountStatus": {
      "running": "Berlari",
      "stopped": "Berhenti",
      "failed": "Gagal",
      "written": "Tertulis",
      "unknown": "Tidak dikenal"
    },
    "clientStatus": {
      "up": "Terhubung",
      "down": "Terputus",
      "unknown": "Tidak dikenal",
      "error": "Kesalahan",
      "viewing": "Melihat di browser"
    },
    "accountPager": "Halaman akun",
    "prevPage": "Sebelumnya",
    "nextPage": "Berikutnya",
    "pageOf": "Halaman {{page}} / {{total}} · {{count}}",
    "deleteAccountTitle": "Hapus akun VNC?",
    "deleteAccountDesc": "Hapus akun bidang kendali {{name}} ({{user}}). Sesi akan dihentikan terlebih dahulu.",
    "deleteAccountC1": "Sesi VNC untuk tampilan ini",
    "deleteAccountC2": "Metadata panel di bawah dataDir/vnc",
    "deleteAccountC3User": "Beranda pengguna Linux akan dihapus (userdel -r)",
    "deleteAccountC3Keep": "Pengguna Linux akan tetap berada di sistem",
    "removeLinuxUser": "Hapus juga pengguna Linux dan direktori home",
    "deleteKeepUserWarn": "Pengguna Linux akan tetap berada di host sebagai anak yatim. Anda harus membersihkannya nanti.",
    "bindRfbLine": "RFB {{bind}} :{{port}}",
    "bindNovncLine": "noVNC 127.0.0.1:{{port}}",
    "bindNovncHint": "noVNC mendengarkan di localhost. Desktop dijangkau melalui panel ini, bukan internet publik, kecuali RFB mengikat semua antarmuka.",
    "connection": "Menghubungkan",
    "connectionTitle": "Bahan sambungan",
    "connectionDesc": "Bagaimana klien mencapai {{name}}",
    "connectionPathsHint": "Lebih suka buka di browser; opsi lanjutan untuk noVNC lama / RFB langsung",
    "connectionBrowserHint": "Direkomendasikan: buka desktop di dalam panel ini (tidak ada terowongan SSH, berfungsi dari browser apa pun yang dapat menjangkau panel).",
    "connectionBrowserDesc": "Memulai sesi VNC jika diperlukan dan membuka penampil dalam panel dengan keyboard, mouse, dan clipboard.",
    "connectionAdvanced": "Lanjutan: URL noVNC lama & RFB langsung",
    "pathViaServer": "Melalui server (noVNC)",
    "pathViaServerLegacy": "NoVNC lama di server (127.0.0.1)",
    "pathViaServerLegacyHint": "Hanya berfungsi pada host server atau melalui terowongan SSH — pilih “Buka di browser”.",
    "pathDirect": "RFB langsung",
    "recommended": "Direkomendasikan",
    "startNovnc": "Mulai noVNC",
    "stopNovnc": "Hentikan noVNC",
    "copyNovncUrl": "Salin URL noVNC",
    "copyAddress": "Salin host:port",
    "openFirewall": "Buka port UFW",
    "directAddress": "Alamat",
    "ticketPath": "Lihat API tiket",
    "directLocalhostWarn": "RFB hanya untuk localhost",
    "copied": "Disalin ke papan klip",
    "clientListTitle": "Profil klien ({{count}})",
    "clientListDesc": "VNC keluar",
    "addClient": "+ Tambahkan jarak jauh",
    "addClientTitle": "Tambahkan VNC jarak jauh",
    "addClientDesc": "Host jarak jauh: port",
    "clientTarget": "Target",
    "clientPath": "Hubungkan jalur",
    "clientHost": "Tuan rumah jarak jauh",
    "pathViaServerShort": "Peramban",
    "pathDirectShort": "Penampil tuan rumah",
    "disconnect": "Memutuskan",
    "connect": "Menghubungkan",
    "clientNeedFields": "Nama dan host diperlukan",
    "clientCreated": "Profil klien dibuat",
    "clientPasswordOptional": "Kata sandi VNC (opsional)",
    "clientPasswordHint": "Digunakan saat Anda membuka penampil browser. Biarkan kosong untuk mengetiknya setiap kali.",
    "clientRememberPassword": "Simpan kata sandi di server ini untuk pembukaan berikutnya",
    "clientRememberPasswordWarn": "Password disimpan di panel dataDir (dapat dibaca oleh root). Lebih suka mengetik setiap kali di host bersama.",
    "stackMissingShort": "Tidak dipasang",
    "editClientTitle": "Edit klien jarak jauh",
    "editClientDesc": "Perbarui jalur, host, dan kata sandi opsional yang disimpan.",
    "clientUpdated": "Profil klien diperbarui",
    "rememberNeedPassword": "Masukkan kata sandi terlebih dahulu."
  },
  "vpn": {
    "pageDesc": "Server & klien VPN",
    "eyebrow": "VPN",
    "tab": {
      "wireguard": "WireGuard",
      "openvpn": "OpenVPN",
      "outline": "Shadowsocks",
      "client": "Klien lokal",
      "software": "Perangkat lunak",
      "monitor": "Memantau",
      "about": "Tentang",
      "server": "pelayan",
      "install": "Memasang",
      "overview": "Ringkasan"
    },
    "softwareIntro": "Instal atau perbarui mesin VPN di sini. Tab server tetap fokus pada konfigurasi.",
    "monitor": {
      "needLive": "Metrik langsung memerlukan root + YSK_EXECUTE di server.",
      "autoRefresh": "Otomatis 3 detik",
      "filterEngine": "Saringan mesin",
      "filterPresence": "Filter kehadiran",
      "engineAll": "Semua mesin",
      "presenceAll": "Semua",
      "presenceOnline": "On line",
      "presenceOffline": "Luring",
      "onlineOf": "Daring {{online}} / {{total}}",
      "peersTitle": "Rekan ({{count}})",
      "localTitle": "Keluar lokal",
      "colEndpoint": "Terpencil",
      "colLastSeen": "Terakhir terlihat",
      "colRx": "↓ Jumlah",
      "colTx": "^ Jumlah",
      "colRxRate": "↓ Nilai",
      "colTxRate": "^ Nilai",
      "sampledAt": "Sampel {{when}}",
      "emptyPeers": "Tidak ada rekan untuk ditunjukkan",
      "emptyPeersHint": "Tambahkan rekan di tab mesin, atau hapus filter",
      "presence": {
        "online": "On line",
        "idle": "Menganggur",
        "offline": "Luring",
        "never": "Tidak pernah",
        "unknown": "Tidak dikenal"
      }
    },
    "installed": "Dipasang",
    "notInstalled": "Tidak dipasang",
    "serverUp": "Berlari",
    "serverDown": "Berhenti",
    "engineSummary": "port {{port}} · {{peers}} rekan",
    "engineSummaryClient": "{{count}} profil · {{up}} naik",
    "needWireGuard": "Diperlukan WireGuard",
    "needOpenVpn": "OpenVPN diperlukan",
    "needSs": "ss-server diperlukan",
    "ssHonestUi": "ss:// kunci akses (bukan Outline Manager lengkap)",
    "listenPort": "Dengarkan pelabuhan",
    "listenPortUdp": "Port dengar (UDP)",
    "listenPortTcp": "Dengarkan port (TCP)",
    "endpoint": "Titik akhir publik",
    "endpointHint": "Host publik: port yang digunakan klien untuk terhubung",
    "ddnsFill": "Gunakan nama host DDNS",
    "ddnsFilled": "Host titik akhir yang diisi dari DDNS. Teman sejawat tidak berubah.",
    "ddnsFillEmpty": "Belum ada nama host utama DDNS. Tambahkan satu di tab DNS DDNS.",
    "ensureServer": "Terapkan server",
    "openFirewall": "Buka {{port}}/{{proto}}",
    "presets": "Preset port",
    "portHint": {
      "51820": "Port mendengarkan WireGuard default",
      "51821": "Port mendengarkan WireGuard alternatif",
      "51822": "Port mendengarkan WireGuard alternatif kedua"
    },
    "proto": "Protokol",
    "protoUdp": "UDP",
    "protoTcp": "TCP",
    "statusLine": "{{state}} · {{port}}/{{proto}} · {{peers}} rekan-rekan",
    "peersTitle": "Rekan / kunci",
    "peersTitleWg": "Teman sejawat",
    "peersTitleOvpn": "Konfigurasi klien",
    "peersTitleSs": "Kunci akses",
    "peerName": "Nama",
    "peerNamePlaceholder": "telepon",
    "peerNameHint": "Huruf, angka, . _ - — tanpa spasi, / atau !",
    "peerNameInvalid": "Spasi, / dan ! tidak diperbolehkan. Gunakan {{preview}} atau ubah namanya.",
    "addPeer": "+ Tambahkan",
    "installEngineFirst": "Instal mesin VPN terlebih dahulu",
    "needServerRunning": "{{engine}} tidak berjalan — terapkan server terlebih dahulu",
    "engineSummarySoftware": "{{installed}} terpasang · {{running}} berjalan",
    "privateKeyOnce": "Kunci pribadi klien hanya ditampilkan di sini. Unduh atau salin sekarang — tidak dapat dipulihkan nanti.",
    "showPrivateKey": "Tampilkan kunci pribadi",
    "hidePrivateKey": "Sembunyikan kunci pribadi",
    "deletePeerTitle": "Hapus rekan {{name}}?",
    "deletePeerDesc": "Remove {{name}} ({{address}}). The client disconnects immediately and the config cannot be restored.",
    "deleteClientTitle": "Hapus klien OpenVPN {{name}}?",
    "deleteClientDesc": "Hapus {{name}} ({{address}}). Klien segera terputus dan profil tidak dapat dipulihkan. Server OpenVPN tetap aktif.",
    "deleteKeyTitle": "Hapus kunci Shadowsocks {{name}}?",
    "deleteKeyDesc": "Hapus kunci akses {{name}} ({{address}}). Klien yang menggunakan pemutusan kunci ini. Server Shadowsocks tetap aktif.",
    "deleteResult": "Dihapus {{name}}.",
    "portInvalid": "Port pendengaran harus berupa bilangan bulat dari 1 hingga 65535.",
    "portRequired": "Port mendengarkan diperlukan.",
    "importInvalid": "Tidak dapat mendeteksi konfigurasi klien WireGuard atau OpenVPN.",
    "qrFailed": "Tidak dapat membuat kode QR untuk konfigurasi ini. Unduh atau salin teksnya.",
    "cfgTitle": "Konfigurasi — {{name}}",
    "addPeerWg": "+ Tambahkan rekan",
    "addPeerOvpn": "+ Tambahkan klien",
    "addPeerSs": "+ Tambahkan kunci",
    "noPeers": "Belum ada",
    "noPeersHint": "Tambahkan satu untuk mengunduh konfigurasi",
    "colName": "Nama",
    "colAddress": "Alamat",
    "colCreated": "Dibuat",
    "colActions": "Tindakan",
    "colEngine": "Mesin",
    "colStatus": "Status",
    "colIface": "Antarmuka",
    "downloadKey": "Unduh",
    "showQr": "QR",
    "copyConf": "Menyalin",
    "copied": "Disalin",
    "downloaded": "Konfigurasi diunduh",
    "qrReady": "QR siap",
    "qrTitle": "QR — {{name}}",
    "qrHintWg": "Pindai di aplikasi WireGuard",
    "qrHintSs": "Pindai ss:// di klien Shadowsocks",
    "showConf": "Teks konfigurasi",
    "close": "Menutup",
    "clientIntro": "Impor file conf untuk menghubungkan host ini",
    "profileName": "Nama profil",
    "pasteConf": "Tempel konf",
    "importProfile": "Impor",
    "importOpen": "+ Impor konf",
    "noProfiles": "Tidak ada profil lokal",
    "noProfilesHint": "Impor konfigurasi klien WireGuard atau OpenVPN",
    "connect": "Menghubungkan",
    "disconnect": "Memutuskan",
    "clientStatus": {
      "up": "Terhubung",
      "down": "Terputus",
      "unknown": "Tidak dikenal",
      "error": "Kesalahan"
    },
    "result": "Hasil",
    "clientEngine": "Jenis",
    "engineAuto": "Deteksi otomatis",
    "refresh": "Menyegarkan",
    "dnsOptional": "DNS (opsional)",
    "serverSettings": "Pengaturan server",
    "access": {
      "label": "Lalu lintas klien",
      "full": "Internet penuh",
      "lan": "LAN saja",
      "custom": "Rute khusus",
      "fullHint": "Semua lalu lintas klien melewati server ini (mengaktifkan NAT). Hubungkan kembali klien setelah melamar.",
      "lanHint": "Hanya VPN + jaringan pribadi terpilih; klien menyimpan internetnya sendiri. Hubungkan kembali setelah melamar.",
      "customHint": "Hanya CIDR yang Anda daftarkan yang memasuki terowongan. Hubungkan kembali setelah melamar.",
      "lanCidrs": "jaringan LAN",
      "customCidr": "CIDR",
      "addCidr": "Menambahkan",
      "cidrRequired": "Masukkan CIDR (misalnya 192.168.1.0/24).",
      "cidrInvalid": "Masukkan CIDR yang valid, misalnya 192.168.1.0/24."
    },
    "engineNotInstalled": "Mesin VPN ini belum terpasang di host.",
    "serverNotListening": "Unit server tidak aktif. UDP/TCP {{port}} mungkin tertutup."
  }
}
