{
  "username": "Nama Pengguna",
  "password": "Kata Sandi",
  "login": "Masuk",
  "confirm": "Konfirmasi",
  "cancel": "Batal",
  "close": "Tutup",
  "save": "Simpan",
  "logout": "Keluar",
  "create": "Buat",
  "add": "Tambah",
  "remove": "Hapus",
  "update": "Perbarui",
  "copy": "Salin",
  "copied": "Tersalin",
  "more": "lainnya",
  "download": "Unduh",
  "remark": "Catatan",
  "enable": "Aktifkan",
  "protocol": "Protokol",
  "search": "Cari",
  "filter": "Filter",
  "all": "Semua",
  "from": "Dari",
  "to": "Ke",
  "done": "Selesai",
  "loading": "Memuat...",
  "refresh": "Segarkan",
  "clear": "Bersihkan",
  "second": "Detik",
  "minute": "Menit",
  "hour": "Jam",
  "day": "Hari",
  "check": "Centang",
  "indefinite": "Tak Terbatas",
  "unlimited": "Tanpa Batas",
  "none": "Tidak ada",
  "qrCode": "Kode QR",
  "info": "Informasi Lebih Lanjut",
  "edit": "Edit",
  "delete": "Hapus",
  "reset": "Reset",
  "noData": "Tidak ada data.",
  "copySuccess": "Berhasil Disalin",
  "sure": "Yakin",
  "encryption": "Enkripsi",
  "useIPv4ForHost": "Gunakan IPv4 untuk host",
  "transmission": "Transmisi",
  "host": "Host",
  "path": "Path",
  "camouflage": "Obfuskasi",
  "status": "Status",
  "enabled": "Aktif",
  "disabled": "Nonaktif",
  "depleted": "Habis",
  "depletingSoon": "Akan Habis",
  "offline": "Offline",
  "online": "Online",
  "domainName": "Nama Domain",
  "monitor": "IP Pemantauan",
  "certificate": "Sertifikat Digital",
  "fail": "Gagal",
  "comment": "Komentar",
  "success": "Berhasil",
  "lastOnline": "Terakhir online",
  "getVersion": "Dapatkan Versi",
  "install": "Instal",
  "clients": "Klien",
  "usage": "Penggunaan",
  "twoFactorCode": "Kode",
  "remained": "Tersisa",
  "security": "Keamanan",
  "secAlertTitle": "Peringatan keamanan",
  "secAlertSsl": "Koneksi ini tidak aman. Harap hindari memasukkan informasi sensitif sampai TLS diaktifkan untuk perlindungan data.",
  "secAlertConf": "Beberapa pengaturan rentan terhadap serangan. Disarankan untuk memperkuat protokol keamanan guna mencegah pelanggaran potensial.",
  "secAlertSSL": "Panel kekurangan koneksi yang aman. Harap instal sertifikat TLS untuk perlindungan data.",
  "secAlertPanelPort": "Port default panel rentan. Harap konfigurasi port acak atau tertentu.",
  "secAlertPanelURI": "Jalur URI default panel tidak aman. Harap konfigurasi jalur URI kompleks.",
  "secAlertSubURI": "Jalur URI default langganan tidak aman. Harap konfigurasi jalur URI kompleks.",
  "secAlertSubJsonURI": "Jalur URI default JSON langganan tidak aman. Harap konfigurasikan jalur URI kompleks.",
  "emptyDnsDesc": "Tidak ada server DNS yang ditambahkan.",
  "emptyFakeDnsDesc": "Tidak ada server Fake DNS yang ditambahkan.",
  "emptyBalancersDesc": "Tidak ada penyeimbang yang ditambahkan.",
  "emptyReverseDesc": "Tidak ada proxy terbalik yang ditambahkan.",
  "somethingWentWrong": "Terjadi kesalahan",
  "subscription": {
    "title": "Info langganan",
    "subId": "ID langganan",
    "status": "Status",
    "downloaded": "Diunduh",
    "uploaded": "Diunggah",
    "expiry": "Kedaluwarsa",
    "totalQuota": "Kuota total",
    "individualLinks": "Tautan individual",
    "active": "Aktif",
    "inactive": "Nonaktif",
    "unlimited": "Tanpa batas",
    "noExpiry": "Tanpa kedaluwarsa",
    "copyAllConfigs": "Salin Semua Konfigurasi",
    "copyAllConfigsCopied": "Semua konfigurasi tersalin"
  },
  "menu": {
    "theme": "Tema",
    "dark": "Gelap",
    "ultraDark": "Sangat Gelap",
    "dashboard": "Ikhtisar",
    "inbounds": "Inbound",
    "clients": "Klien",
    "groups": "Grup",
    "nodes": "Node",
    "settings": "Pengaturan Panel",
    "xray": "Konfigurasi Xray",
    "apiDocs": "Dokumentasi API",
    "logout": "Keluar",
    "link": "Kelola",
    "donate": "Donasi"
  },
  "pages": {
    "login": {
      "hello": "Halo",
      "title": "Selamat Datang",
      "loginAgain": "Sesi Anda telah berakhir, harap masuk kembali",
      "toasts": {
        "invalidFormData": "Format data input tidak valid.",
        "emptyUsername": "Nama Pengguna diperlukan",
        "emptyPassword": "Kata Sandi diperlukan",
        "wrongUsernameOrPassword": "Username, kata sandi, atau kode dua faktor tidak valid.",
        "successLogin": "Anda telah berhasil masuk ke akun Anda."
      }
    },
    "index": {
      "title": "Ikhtisar",
      "cpu": "CPU",
      "logicalProcessors": "Prosesor logis",
      "frequency": "Frekuensi",
      "swap": "Swap",
      "storage": "Penyimpanan",
      "memory": "Memori",
      "threads": "Thread",
      "xrayStatus": "Xray",
      "stopXray": "Hentikan",
      "restartXray": "Mulai ulang",
      "xraySwitch": "Versi",
      "xrayUpdates": "Pembaruan Xray",
      "xraySwitchClick": "Pilih versi yang ingin Anda pindah.",
      "xraySwitchClickDesk": "Pilih dengan hati-hati, karena versi yang lebih lama mungkin tidak kompatibel dengan konfigurasi saat ini.",
      "updatePanel": "Perbarui Panel",
      "panelUpdateDesc": "Ini akan memperbarui 3X-UI ke rilis terbaru dan me-restart layanan panel.",
      "currentPanelVersion": "Versi panel saat ini",
      "latestPanelVersion": "Versi panel terbaru",
      "panelUpToDate": "Panel sudah terbaru",
      "upToDate": "Terbaru",
      "xrayStatusUnknown": "Tidak diketahui",
      "xrayStatusRunning": "Berjalan",
      "xrayStatusStop": "Berhenti",
      "xrayStatusError": "Error",
      "xrayErrorPopoverTitle": "Terjadi kesalahan saat menjalankan Xray",
      "operationHours": "Waktu Aktif",
      "systemHistoryTitle": "Riwayat Sistem",
      "historyTitleCpu": "Penggunaan CPU",
      "historyTitleMem": "Penggunaan Memori",
      "historyTitleNetwork": "Bandwidth Jaringan",
      "historyTitlePackets": "Paket Jaringan",
      "historyTitleDisk": "I/O Disk",
      "historyTitleOnline": "Klien Online",
      "historyTitleLoad": "Rata-rata Beban Sistem (1 / 5 / 15 mnt)",
      "historyTitleConnections": "Koneksi Aktif (TCP / UDP)",
      "historyTitleDiskUsage": "Penggunaan Ruang Disk",
      "historyTabBandwidth": "Bandwidth",
      "historyTabPackets": "Paket",
      "historyTabDisk": "Disk I/O",
      "historyTabOnline": "Online",
      "historyTabLoad": "Beban",
      "historyTabConnections": "Koneksi",
      "historyTabDiskUsage": "Penggunaan Disk",
      "charts": "Grafik",
      "xrayMetricsTitle": "Metrik Xray",
      "xrayTitleHeap": "Memori Heap Teralokasi",
      "xrayTitleSys": "Memori Dicadangkan dari OS",
      "xrayTitleObjects": "Objek Heap Aktif",
      "xrayTitleGcCount": "Siklus GC Selesai",
      "xrayTitleGcPause": "Durasi Jeda GC",
      "xrayTitleObservatory": "Kesehatan Koneksi Keluar",
      "xrayTabHeap": "Heap",
      "xrayTabSys": "Sys",
      "xrayTabObjects": "Objek",
      "xrayTabGcCount": "Jumlah GC",
      "xrayTabGcPause": "Jeda GC",
      "xrayTabObservatory": "Observatorium",
      "xrayMetricsDisabled": "Endpoint metrik Xray belum dikonfigurasi",
      "xrayMetricsHint": "Tambahkan blok metrics tingkat atas ke konfigurasi xray dengan tag metrics_out dan listen 127.0.0.1:11111, lalu mulai ulang xray.",
      "xrayObservatoryEmpty": "Belum ada data Observatory",
      "xrayObservatoryHint": "Tambahkan blok observatory ke konfigurasi xray yang mencantumkan tag outbound untuk diuji, lalu mulai ulang xray.",
      "xrayObservatoryTagPlaceholder": "Pilih outbound",
      "xrayObservatoryAlive": "Aktif",
      "xrayObservatoryDead": "Mati",
      "xrayObservatoryLastSeen": "Terakhir terlihat",
      "xrayObservatoryLastTry": "Percobaan terakhir",
      "trendLast2Min": "2 menit terakhir",
      "systemLoad": "Beban Sistem",
      "systemLoadDesc": "Rata-rata beban sistem selama 1, 5, dan 15 menit terakhir",
      "connectionCount": "Statistik Koneksi",
      "ipAddresses": "Alamat IP",
      "toggleIpVisibility": "Alihkan visibilitas IP",
      "overallSpeed": "Kecepatan keseluruhan",
      "upload": "Unggah",
      "download": "Unduh",
      "totalData": "Total data",
      "sent": "Dikirim",
      "received": "Diterima",
      "documentation": "Dokumentasi",
      "xraySwitchVersionDialog": "Apakah Anda yakin ingin mengubah versi Xray?",
      "xraySwitchVersionDialogDesc": "Ini akan mengubah versi Xray ke #version#.",
      "xraySwitchVersionPopover": "Xray berhasil diperbarui",
      "panelUpdateDialog": "Apakah Anda benar-benar ingin memperbarui panel?",
      "panelUpdateDialogDesc": "Ini akan memperbarui 3X-UI ke #version# dan me-restart layanan panel.",
      "panelUpdateCheckPopover": "Pemeriksaan pembaruan panel gagal",
      "panelUpdateStartedPopover": "Pembaruan panel dimulai",
      "geofileUpdateDialog": "Apakah Anda yakin ingin memperbarui geofile?",
      "geofileUpdateDialogDesc": "Ini akan memperbarui file #filename#.",
      "geofilesUpdateDialogDesc": "Ini akan memperbarui semua berkas.",
      "geofilesUpdateAll": "Perbarui semua",
      "geofileUpdatePopover": "Geofile berhasil diperbarui",
      "geodataTitle": "Pembaruan Otomatis Geodata",
      "geodataHint": "Xray mengunduh berkas ini sesuai jadwal dan memuat ulang tanpa restart. URL harus HTTPS. Setiap berkas harus sudah ada di folder bin agar Xray dapat memperbaruinya.",
      "geodataCron": "Jadwal (cron)",
      "geodataOutbound": "Unduh melalui outbound (opsional)",
      "geodataFile": "Nama berkas",
      "geodataAddFile": "Tambah berkas",
      "geodataSaveRestart": "Simpan & Mulai Ulang Xray",
      "geodataConfirmTitle": "Simpan pengaturan geodata?",
      "geodataConfirmContent": "Templat konfigurasi Xray akan diperbarui dan Xray akan dimulai ulang.",
      "geodataInvalidUrl": "Setiap berkas memerlukan URL HTTPS.",
      "geodataInvalidFile": "Nama berkas harus berupa nama sederhana, mis. geosite_custom.dat (tanpa path).",
      "geodataInvalidCron": "Cron harus terdiri dari 5 bagian, mis. 0 4 * * *",
      "geodataEmpty": "Belum ada berkas yang dikonfigurasi. Pada aturan routing, rujuk berkas sebagai ext:geosite_custom.dat:category.",
      "dontRefresh": "Instalasi sedang berlangsung, harap jangan menyegarkan halaman ini",
      "logs": "Log",
      "config": "Konfigurasi",
      "backup": "Cadangan",
      "backupTitle": "Cadangan & Pulihkan",
      "exportDatabase": "Cadangkan",
      "exportDatabaseDesc": "Klik untuk mengunduh file .db yang berisi cadangan dari database Anda saat ini ke perangkat Anda.",
      "importDatabase": "Pulihkan",
      "importDatabaseDesc": "Klik untuk memilih dan mengunggah file .db dari perangkat Anda untuk memulihkan database dari cadangan.",
      "importDatabaseSuccess": "Database berhasil diimpor",
      "importDatabaseError": "Terjadi kesalahan saat mengimpor database",
      "readDatabaseError": "Terjadi kesalahan saat membaca database",
      "getDatabaseError": "Terjadi kesalahan saat mengambil database",
      "getConfigError": "Terjadi kesalahan saat mengambil file konfigurasi",
      "backupPostgresNote": "Panel ini berjalan di PostgreSQL. «Cadangkan» mengunduh arsip pg_dump (.dump) dan «Pulihkan» memuatnya kembali dengan pg_restore. Server memerlukan alat klien PostgreSQL (pg_dump dan pg_restore) terpasang.",
      "exportDatabasePgDesc": "Klik untuk mengunduh dump PostgreSQL (.dump) dari basis data Anda saat ini ke perangkat Anda.",
      "importDatabasePgDesc": "Klik untuk memilih dan mengunggah berkas .dump guna memulihkan basis data PostgreSQL Anda. Ini menggantikan semua data saat ini.",
      "migrationDownload": "Unduh migrasi",
      "migrationDownloadDesc": "Klik untuk mengunduh ekspor .dump (teks SQL) portabel dari basis data SQLite Anda.",
      "migrationDownloadPgDesc": "Klik untuk mengunduh basis data SQLite .db yang dibuat dari data PostgreSQL Anda, siap menjalankan panel ini di SQLite."
    },
    "inbounds": {
      "title": "Inbound",
      "totalDownUp": "Total Terkirim/Diterima",
      "totalUsage": "Penggunaan Total",
      "inboundCount": "Total Masuk",
      "operate": "Menu",
      "enable": "Aktifkan",
      "remark": "Catatan",
      "node": "Node",
      "deployTo": "Terapkan ke",
      "localPanel": "Panel lokal",
      "fallbacks": {
        "title": "Fallback",
        "help": "Saat koneksi pada inbound ini tidak cocok dengan client mana pun, arahkan ke tempat lain. Pilih inbound child di bawah untuk mengisi otomatis field routing (SNI / ALPN / Path / xver) dari transport-nya, atau biarkan pemilih kosong dan atur Dest langsung (mis. 8080 atau 127.0.0.1:8080) untuk mengarahkan ke server eksternal seperti Nginx. Setiap inbound child harus listen di 127.0.0.1 dengan security=none.",
        "empty": "Belum ada fallback",
        "add": "Tambah fallback",
        "pickInbound": "Pilih inbound",
        "matchAny": "apa pun",
        "destPlaceholder": "otomatis (listen:port child)",
        "rederive": "Isi ulang dari child",
        "rederived": "Diisi ulang dari child",
        "editAdvanced": "Edit field routing",
        "hideAdvanced": "Sembunyikan lanjutan",
        "quickAddAll": "Tambah cepat semua yang memenuhi syarat",
        "quickAdded": "Menambahkan {n} fallback",
        "quickAddedNone": "Tidak ada inbound baru yang memenuhi syarat",
        "routesWhen": "Diarahkan ketika",
        "defaultCatchAll": "Default — menangkap apa pun lainnya",
        "needsTls": "Fallback tersedia setelah memilih TLS atau Reality di tab Keamanan (hanya VLESS/Trojan melalui RAW)."
      },
      "protocol": "Protokol",
      "port": "Port",
      "portMap": "Pemetaan port",
      "traffic": "Trafik",
      "details": "Rincian",
      "transportConfig": "Transport",
      "expireDate": "Durasi",
      "createdAt": "Dibuat",
      "updatedAt": "Diperbarui",
      "resetTraffic": "Reset trafik",
      "addInbound": "Tambahkan Masuk",
      "generalActions": "Tindakan Umum",
      "modifyInbound": "Ubah Masuk",
      "deleteInbound": "Hapus Masuk",
      "deleteInboundContent": "Apakah Anda yakin ingin menghapus masuk?",
      "deleteConfirmTitle": "Hapus inbound \"{remark}\"?",
      "deleteConfirmContent": "Tindakan ini menghapus inbound beserta semua kliennya. Tidak dapat dibatalkan.",
      "resetConfirmTitle": "Reset trafik \"{remark}\"?",
      "resetConfirmContent": "Mengatur ulang counter unggah/unduh ke 0 untuk inbound ini.",
      "selectedCount": "{count} dipilih",
      "selectAll": "Pilih semua",
      "bulkDeleteConfirmTitle": "Hapus {count} inbound?",
      "bulkDeleteConfirmContent": "Tindakan ini menghapus inbound yang dipilih beserta semua kliennya. Tidak dapat dibatalkan.",
      "cloneConfirmTitle": "Klon inbound \"{remark}\"?",
      "cloneConfirmContent": "Membuat salinan dengan port baru dan daftar klien kosong.",
      "delAllClients": "Hapus Semua Klien",
      "delAllClientsConfirmTitle": "Hapus semua {count} klien dari \"{remark}\"?",
      "delAllClientsConfirmContent": "Menghapus setiap klien dari inbound ini dan menghapus catatan trafiknya. Inbound itu sendiri dipertahankan. Tindakan ini tidak dapat dibatalkan.",
      "attachClients": "Lampirkan klien ke…",
      "addClientsToGroup": "Tambah klien ke grup…",
      "attachClientsTitle": "Lampirkan klien dari «{remark}»",
      "attachClientsDesc": "Melampirkan {count} klien yang sama (UUID/kata sandi sama dan trafik bersama) ke inbound terpilih. Tetap ada di inbound ini juga.",
      "attachClientsTargets": "Inbound tujuan",
      "attachClientsNoTargets": "Tidak ada inbound kompatibel lain untuk dilampirkan.",
      "attachClientsResult": "Dilampirkan {attached}, dilewati {skipped}.",
      "attachClientsResultMixed": "Dilampirkan {attached}, dilewati {skipped}, error {errors}.",
      "attachClientsSelectLabel": "Klien untuk dilampirkan",
      "attachClientsSearchPlaceholder": "Cari email atau komentar",
      "attachClientsStatusDisabled": "Dinonaktifkan",
      "attachClientsSelectedCount": "{selected} dari {total} dipilih",
      "attachExistingClients": "Lampirkan klien yang ada…",
      "attachExistingTitle": "Lampirkan klien yang ada ke «{remark}»",
      "attachExistingDesc": "Melampirkan klien yang ada ({count} tersedia) ke inbound ini — UUID/kata sandi sama dan trafik bersama. Klien yang sudah ada di sini dilewati.",
      "attachExistingNoClients": "Belum ada klien. Buat klien dulu, lalu lampirkan di sini.",
      "attachExistingStatusAttached": "Sudah dilampirkan",
      "detachClients": "Lepas klien",
      "detachClientsTitle": "Lepas klien dari «{remark}»",
      "detachClientsDesc": "Menghapus klien terpilih hanya dari inbound ini. Catatan klien tetap dipertahankan (gunakan Delete untuk menghapus sepenuhnya). Sumber memiliki total {count} klien.",
      "detachClientsResult": "Dilepas {detached}, dilewati {skipped}.",
      "detachClientsResultMixed": "Dilepas {detached}, dilewati {skipped}, error {errors}.",
      "detachClientsSelectLabel": "Klien untuk dilepas",
      "exportLinksTitle": "Ekspor tautan inbound",
      "exportSubsTitle": "Ekspor tautan langganan",
      "exportAllLinksTitle": "Ekspor semua tautan inbound",
      "exportAllSubsTitle": "Ekspor semua tautan langganan",
      "exportAllLinksFileName": "Semua-Inbound",
      "exportAllSubsFileName": "Semua-Inbound-Subs",
      "inboundJsonTitle": "JSON inbound",
      "deleteClient": "Hapus Klien",
      "deleteClientContent": "Apakah Anda yakin ingin menghapus klien?",
      "resetTrafficContent": "Apakah Anda yakin ingin mereset traffic?",
      "copyLink": "Salin URL",
      "address": "Alamat",
      "network": "Jaringan",
      "destinationPort": "Port Tujuan",
      "targetAddress": "Alamat Target",
      "monitorDesc": "Biarkan kosong untuk mendengarkan semua IP",
      "meansNoLimit": "= Tanpa batas. (satuan: GB)",
      "totalFlow": "Total Aliran",
      "leaveBlankToNeverExpire": "Biarkan kosong untuk tidak pernah kedaluwarsa",
      "noRecommendKeepDefault": "Disarankan untuk tetap menggunakan pengaturan default",
      "certificatePath": "Path Berkas",
      "certificateContent": "Konten Berkas",
      "publicKey": "Kunci Publik",
      "privatekey": "Kunci Pribadi",
      "clickOnQRcode": "Klik pada Kode QR untuk Menyalin",
      "client": "Klien",
      "export": "Ekspor Semua URL",
      "clone": "Duplikat",
      "cloneInbound": "Duplikat",
      "cloneInboundContent": "Semua pengaturan masuk ini, kecuali Port, Listening IP, dan Klien, akan diterapkan pada duplikat.",
      "cloneInboundOk": "Duplikat",
      "resetAllTraffic": "Reset Semua Traffic Masuk",
      "resetAllTrafficTitle": "Reset Semua Traffic Masuk",
      "resetAllTrafficContent": "Apakah Anda yakin ingin mereset traffic semua masuk?",
      "resetInboundClientTraffics": "Reset Traffic Klien Masuk",
      "resetInboundClientTrafficTitle": "Reset Traffic Klien Masuk",
      "resetInboundClientTrafficContent": "Apakah Anda yakin ingin mereset traffic klien masuk ini?",
      "resetAllClientTraffics": "Reset Traffic Semua Klien",
      "resetAllClientTrafficTitle": "Reset Traffic Semua Klien",
      "resetAllClientTrafficContent": "Apakah Anda yakin ingin mereset traffic semua klien?",
      "delDepletedClients": "Hapus Klien Habis",
      "delDepletedClientsTitle": "Hapus Klien Habis",
      "delDepletedClientsContent": "Apakah Anda yakin ingin menghapus semua klien yang habis?",
      "email": "Email",
      "emailDesc": "Harap berikan alamat email yang unik.",
      "IPLimit": "Batas IP",
      "IPLimitDesc": "Menonaktifkan masuk jika jumlah melebihi nilai yang ditetapkan. (0 = nonaktif)",
      "IPLimitlog": "Log IP",
      "IPLimitlogDesc": "Log histori IP. (untuk mengaktifkan masuk setelah menonaktifkan, hapus log)",
      "IPLimitlogclear": "Hapus Log",
      "setDefaultCert": "Atur Sertifikat dari Panel",
      "setDefaultCertEmpty": "Tidak ada sertifikat yang dikonfigurasi untuk panel. Atur dulu di Pengaturan.",
      "streamTab": "Aliran",
      "securityTab": "Keamanan",
      "sniffingTab": "Sniffing",
      "sniffingMetadataOnly": "Hanya metadata",
      "sniffingRouteOnly": "Hanya routing",
      "sniffingIpsExcluded": "IP yang dikecualikan",
      "sniffingDomainsExcluded": "Domain yang dikecualikan",
      "decryption": "Dekripsi",
      "encryption": "Enkripsi",
      "vlessAuthX25519": "Auth X25519",
      "vlessAuthMlkem768": "Auth ML-KEM-768",
      "vlessAuthCustom": "Khusus",
      "vlessAuthSelected": "Dipilih: {auth}",
      "advanced": {
        "title": "Bagian JSON inbound",
        "subtitle": "JSON inbound lengkap dan editor fokus untuk settings, sniffing, dan streamSettings.",
        "all": "Semua",
        "allHelp": "Objek inbound lengkap dengan semua bidang dalam satu editor.",
        "settings": "Pengaturan",
        "settingsHelp": "Pembungkus blok settings Xray:",
        "sniffing": "Sniffing",
        "sniffingHelp": "Pembungkus blok sniffing Xray:",
        "stream": "Stream",
        "streamHelp": "Pembungkus blok stream Xray:",
        "jsonErrorPrefix": "JSON lanjutan"
      },
      "telegramDesc": "Harap berikan ID Obrolan Telegram. (gunakan perintah '/id' di bot) atau ({'@'}userinfobot)",
      "subscriptionDesc": "Untuk menemukan URL langganan Anda, buka 'Rincian'. Selain itu, Anda dapat menggunakan nama yang sama untuk beberapa klien.",
      "subSortIndex": "Urutan sub",
      "same": "Sama",
      "inboundInfo": "Informasi Inbound",
      "exportInbound": "Ekspor Masuk",
      "import": "Impor",
      "importInbound": "Impor Masuk",
      "periodicTrafficResetTitle": "Reset Trafik Berkala",
      "periodicTrafficResetDesc": "Reset otomatis penghitung trafik pada interval tertentu",
      "lastReset": "Reset Terakhir",
      "periodicTrafficReset": {
        "never": "Tidak Pernah",
        "daily": "Harian",
        "weekly": "Mingguan",
        "monthly": "Bulanan",
        "hourly": "Setiap jam"
      },
      "toasts": {
        "obtain": "Dapatkan",
        "updateSuccess": "Pembaruan berhasil",
        "logCleanSuccess": "Log telah dibersihkan",
        "inboundsUpdateSuccess": "Inbound berhasil diperbarui",
        "inboundUpdateSuccess": "Inbound berhasil diperbarui",
        "inboundCreateSuccess": "Inbound berhasil dibuat",
        "bulkDeleted": "{count} inbound dihapus",
        "bulkDeletedMixed": "{ok} dihapus, {failed} gagal",
        "inboundDeleteSuccess": "Inbound berhasil dihapus",
        "inboundClientAddSuccess": "Klien inbound telah ditambahkan",
        "inboundClientDeleteSuccess": "Klien inbound telah dihapus",
        "inboundClientUpdateSuccess": "Klien inbound telah diperbarui",
        "delDepletedClientsSuccess": "Semua klien yang habis telah dihapus",
        "resetAllClientTrafficSuccess": "Semua lalu lintas klien telah direset",
        "resetAllTrafficSuccess": "Semua lalu lintas telah direset",
        "resetInboundClientTrafficSuccess": "Lalu lintas telah direset",
        "resetInboundTrafficSuccess": "Lalu lintas masuk telah direset",
        "trafficGetError": "Gagal mendapatkan data lalu lintas",
        "getNewX25519CertError": "Terjadi kesalahan saat mendapatkan sertifikat X25519.",
        "getNewmldsa65Error": "Terjadi kesalahan saat mendapatkan sertifikat mldsa65.",
        "getNewVlessEncError": "Terjadi kesalahan saat mendapatkan sertifikat VlessEnc.",
        "invalidClientField": "Klien {client}: kolom {field} — {reason}",
        "invalidField": "{field} — {reason}",
        "moreIssues": "{message}  (+{count} lainnya)"
      },
      "form": {
        "moveUp": "Naik",
        "moveDown": "Turun",
        "addAll": "Tambah semua",
        "addAllFallbackTooltip": "Tambahkan baris fallback untuk setiap inbound yang memenuhi syarat dan belum terhubung",
        "peers": "Peers",
        "addPeer": "Tambah peer",
        "keepAlive": "Keep-alive",
        "autoSystemRoutesTooltip": "Hanya Windows. CIDR ditambahkan otomatis ke tabel routing sistem agar trafik yang cocok melewati TUN.",
        "autoOutboundsInterface": "Interface outbound otomatis",
        "autoOutboundsInterfaceTooltip": "Interface fisik untuk trafik outbound. Gunakan 'auto' untuk deteksi; otomatis aktif saat Auto system routes diatur.",
        "rewriteAddress": "Tulis ulang alamat",
        "rewritePort": "Tulis ulang port",
        "allowedNetwork": "Jaringan yang diizinkan",
        "followRedirect": "Ikuti redirect",
        "accounts": "Akun",
        "allowTransparent": "Izinkan transparan",
        "encryptionMethod": "Metode enkripsi",
        "fakeTlsDomain": "Domain FakeTLS (SNI)",
        "mtprotoSecret": "Secret",
        "mtgDomainFrontingIp": "IP domain fronting",
        "mtgDomainFrontingPort": "Port domain fronting",
        "mtgDomainFrontingProxyProtocol": "Protokol PROXY domain fronting",
        "mtgDomainFrontingHint": "Tujuan mtg mengirim lalu lintas non-Telegram — mis. situs palsu NGINX Anda. Kosongkan IP untuk memakai domain FakeTLS melalui DNS; port bawaan adalah 443.",
        "mtgProxyProtocolListener": "Terima protokol PROXY (listener)",
        "mtgPreferIp": "Preferensi IP",
        "mtgDebug": "Log debug",
        "mtgRouteThroughXray": "Rutekan melalui Xray",
        "mtgRouteThroughXrayHint": "Kirim lalu lintas Telegram proxy ini melalui Xray agar mengikuti aturan routing Anda. Sidecar mtg keluar lewat bridge SOCKS loopback yang diberi tag sama dengan inbound ini; rujuk tag tersebut di tab Routing untuk aturan lanjutan.",
        "mtgRouteOutbound": "Outbound",
        "mtgRouteOutboundHint": "Opsional. Paksa lalu lintas Telegram keluar melalui outbound (atau balancer) ini. Biarkan kosong agar aturan routing yang menentukan.",
        "mtgRouteOutboundPlaceholder": "Gunakan aturan routing",
        "visionTestseed": "Vision testseed",
        "version": "Versi",
        "udpIdleTimeout": "UDP idle timeout (d)",
        "masquerade": "Masquerade",
        "type": "Tipe",
        "upstreamUrl": "URL Upstream",
        "rewriteHost": "Tulis ulang Host",
        "skipTlsVerify": "Lewati verifikasi TLS",
        "directory": "Direktori",
        "statusCode": "Kode status",
        "body": "Body",
        "headers": "Header",
        "proxyProtocol": "Proxy Protocol",
        "requestVersion": "Versi permintaan",
        "requestMethod": "Metode permintaan",
        "requestPath": "Path permintaan",
        "requestHeaders": "Header permintaan",
        "responseVersion": "Versi respons",
        "responseStatus": "Status respons",
        "responseReason": "Alasan respons",
        "responseHeaders": "Header respons",
        "heartbeatPeriod": "Periode heartbeat",
        "serviceName": "Nama layanan",
        "authority": "Authority",
        "multiMode": "Multi Mode",
        "maxBufferedUpload": "Maks. upload ter-buffer",
        "maxUploadSize": "Ukuran upload maks. (Byte)",
        "streamUpServer": "Stream-Up Server",
        "serverMaxHeaderBytes": "Maks. byte header server",
        "paddingBytes": "Byte Padding",
        "uplinkHttpMethod": "Metode HTTP Uplink",
        "paddingObfsMode": "Mode obfs Padding",
        "paddingKey": "Padding Key",
        "paddingHeader": "Padding Header",
        "paddingPlacement": "Posisi Padding",
        "paddingMethod": "Metode Padding",
        "sessionPlacement": "Session Placement",
        "sessionKey": "Session Key",
        "sequencePlacement": "Sequence Placement",
        "sequenceKey": "Sequence Key",
        "uplinkDataPlacement": "Uplink Data Placement",
        "uplinkDataKey": "Uplink Data Key",
        "noSseHeader": "Tanpa header SSE",
        "ttiMs": "TTI (ms)",
        "uplinkMbps": "Uplink (MB/s)",
        "downlinkMbps": "Downlink (MB/s)",
        "cwndMultiplier": "Pengganda CWND",
        "maxSendingWindow": "Maks. jendela pengiriman",
        "externalProxy": "Proxy eksternal",
        "forceTls": "Paksa TLS",
        "fingerprint": "Fingerprint",
        "defaultOption": "Default",
        "routeMark": "Route Mark",
        "tcpKeepAliveInterval": "TCP Keep Alive Interval",
        "tcpKeepAliveIdle": "TCP Keep Alive Idle",
        "tcpMaxSeg": "TCP Max Seg",
        "tcpUserTimeout": "TCP User Timeout",
        "tcpWindowClamp": "TCP Window Clamp",
        "tcpWindowClampHint": "Biarkan 0 untuk memakai bawaan OS. Nilai bukan nol membatasi jendela penerimaan TCP yang diiklankan; nilai seperti 600 (dari contoh dokumentasi Xray) bisa menjatuhkan throughput pada tautan berlatensi tinggi.",
        "tcpFastOpen": "TCP Fast Open",
        "multipathTcp": "Multipath TCP",
        "penetrate": "Penetrate",
        "v6Only": "Hanya V6",
        "tcpCongestion": "TCP Congestion",
        "dialerProxy": "Dialer Proxy",
        "trustedXForwardedFor": "X-Forwarded-For tepercaya",
        "addressPortStrategy": "Strategi alamat+port",
        "tryDelayMs": "Penundaan percobaan (ms)",
        "prioritizeIPv6": "Prioritaskan IPv6",
        "interleave": "Interleave",
        "maxConcurrentTry": "Maks. percobaan bersamaan",
        "customSockopt": "Sockopt kustom",
        "addCustomOption": "Tambah opsi kustom",
        "serverNameIndication": "SNI",
        "cipherSuites": "Cipher Suites",
        "autoOption": "Otomatis",
        "minMaxVersion": "Versi Min/Maks",
        "rejectUnknownSni": "Tolak SNI tidak dikenal",
        "disableSystemRoot": "Nonaktifkan System Root",
        "sessionResumption": "Lanjutkan sesi",
        "oneTimeLoading": "Pemuatan sekali",
        "usageOption": "Opsi penggunaan",
        "buildChain": "Bangun rantai",
        "echKey": "ECH key",
        "echConfig": "Konfig ECH",
        "pinnedPeerCertSha256": "SHA-256 Sertifikat Peer Tersemat",
        "pinnedPeerCertSha256Tip": "Hash SHA-256 dari sertifikat peer sebagai string heksadesimal (mis. e8e2d3…), dipisah koma. Hanya panel — tidak ditulis ke konfig xray server, tetapi disertakan dalam link berbagi agar klien dapat menyematkan sertifikat.",
        "pinnedPeerCertSha256Placeholder": "hash heksadesimal, dipisah koma",
        "generateRandomPin": "Hasilkan hash acak",
        "getNewEchCert": "Dapatkan sertifikat ECH baru",
        "show": "Tampilkan",
        "xver": "Xver",
        "target": "Target",
        "maxTimeDiff": "Maks. selisih waktu (ms)",
        "minClientVer": "Min. versi klien",
        "maxClientVer": "Maks. versi klien",
        "shortIds": "Short IDs",
        "realityTargetHint": "Wajib. Harus menyertakan port (mis. example.com:443). Tanpa port, Xray-core menolak untuk mulai.",
        "realityTargetRequired": "Target REALITY wajib diisi",
        "realityTargetNeedsPort": "Target REALITY harus menyertakan port (mis. example.com:443)",
        "realityTargetInvalidPort": "Target REALITY memiliki port yang tidak valid",
        "spiderX": "SpiderX",
        "getNewCert": "Dapatkan sertifikat baru",
        "mldsa65Seed": "mldsa65 Seed",
        "mldsa65Verify": "mldsa65 Verify",
        "getNewSeed": "Dapatkan Seed baru",
        "listenHelp": "Anda juga dapat memasukkan path Unix socket (mis. /run/xray/in.sock), atau nama abstract socket dengan awalan @ (mis. @xray/in.sock), untuk listen pada socket alih-alih port TCP — dalam hal ini setel Port ke 0.",
        "shareAddrStrategy": "Strategi alamat berbagi",
        "shareAddrStrategyHelp": "Menentukan alamat yang ditulis ke tautan berbagi yang diekspor, kode QR, dan keluaran langganan.",
        "shareAddr": "Alamat berbagi kustom",
        "shareAddrHelp": "Hanya digunakan saat strategi alamat berbagi adalah Kustom. Masukkan host atau IP tanpa skema atau port.",
        "subSortIndex": "Urutan dalam langganan",
        "subSortIndexHelp": "Posisi tautan inbound ini dalam keluaran langganan (halaman langganan dan aplikasi klien). Nilai lebih kecil tampil lebih dulu; nilai sama mempertahankan urutan pembuatan. Tidak memengaruhi daftar inbound di panel.",
        "shareAddrStrategyOptions": {
          "node": "Alamat node",
          "listen": "Alamat listen inbound",
          "custom": "Kustom"
        }
      },
      "info": {
        "mode": "Mode",
        "grpcServiceName": "grpc serviceName",
        "grpcMultiMode": "grpc multiMode",
        "interfaceName": "Nama interface",
        "mtu": "MTU",
        "gateway": "Gateway",
        "dns": "DNS",
        "outboundsInterface": "Interface outbound",
        "autoSystemRoutes": "Rute sistem otomatis",
        "followRedirect": "FollowRedirect",
        "auth": "Auth",
        "noKernelTun": "TUN tanpa kernel",
        "keepAlive": "Keep alive",
        "peerNumber": "Peer {n}",
        "peerNumberConfig": "Konfig Peer {n}"
      },
      "stream": {
        "general": {
          "request": "Permintaan",
          "response": "Respons",
          "name": "Nama",
          "value": "Nilai"
        },
        "tcp": {
          "version": "Versi",
          "method": "Metode",
          "path": "Path",
          "status": "Status",
          "statusDescription": "Deskripsi Status",
          "requestHeader": "Header Permintaan",
          "responseHeader": "Header Respons"
        }
      }
    },
    "clients": {
      "tabBasics": "Dasar",
      "tabCredentials": "Kredensial",
      "add": "Tambah klien",
      "edit": "Ubah klien",
      "submitAdd": "Tambah klien",
      "submitEdit": "Simpan perubahan",
      "clientCount": "Jumlah klien",
      "bulk": "Tambah massal",
      "copyFromInbound": "Salin klien dari inbound",
      "copyToInbound": "Salin klien ke",
      "copySelected": "Salin terpilih",
      "copySource": "Sumber",
      "copyEmailPreview": "Pratinjau email hasil",
      "copySelectSourceFirst": "Pilih inbound sumber terlebih dahulu.",
      "copyResult": "Hasil salinan",
      "copyResultSuccess": "Berhasil disalin",
      "copyResultNone": "Tidak ada yang disalin: tidak ada klien terpilih atau sumber kosong",
      "copyResultErrors": "Kesalahan salin",
      "copyFlowLabel": "Flow untuk klien baru (VLESS)",
      "copyFlowHint": "Diterapkan ke semua klien yang disalin. Kosongkan untuk dilewati.",
      "selectAll": "Pilih semua",
      "clearAll": "Hapus semua",
      "method": "Metode",
      "first": "Pertama",
      "last": "Terakhir",
      "ipLog": "Log IP",
      "prefix": "Awalan",
      "postfix": "Akhiran",
      "delayedStart": "Mulai setelah penggunaan pertama",
      "expireDays": "Durasi (hari)",
      "days": "Hari",
      "renew": "Perpanjangan otomatis",
      "renewDesc": "Perpanjangan otomatis setelah kedaluwarsa. (0 = nonaktif) (satuan: hari)",
      "renewDays": "Perpanjangan otomatis (hari)",
      "searchPlaceholder": "Cari email, komentar, sub ID, UUID, kata sandi, auth…",
      "filterTitle": "Filter klien",
      "clearAllFilters": "Hapus semua",
      "filters": {
        "nodes": "Node",
        "localPanel": "Lokal (panel ini)"
      },
      "showingCount": "Menampilkan {shown} dari {total}",
      "sortOldest": "Terlama dulu",
      "sortNewest": "Terbaru dulu",
      "sortRecentlyUpdated": "Baru saja diperbarui",
      "sortRecentlyOnline": "Baru saja online",
      "sortEmailAZ": "Email A→Z",
      "sortEmailZA": "Email Z→A",
      "sortMostTraffic": "Trafik terbanyak",
      "sortHighestRemaining": "Tersisa terbanyak",
      "sortExpiringSoonest": "Segera kedaluwarsa",
      "has": "Memiliki",
      "hasNot": "Tidak memiliki",
      "title": "Klien",
      "actions": "Aksi",
      "totalGB": "Batas Trafik (GB)",
      "totalGBDesc": "Kuota data untuk klien ini. 0 = tidak terbatas.",
      "expiryTime": "Kedaluwarsa",
      "addClients": "Tambah klien",
      "limitIp": "Batas IP",
      "limitIpDesc": "Jumlah maksimum IP bersamaan. 0 = tidak terbatas.",
      "password": "Kata sandi",
      "subId": "ID Langganan",
      "online": "Online",
      "email": "Email",
      "emailInvalidChars": "Email tidak boleh mengandung spasi, '/', '\\', atau karakter kontrol",
      "subIdInvalidChars": "ID langganan tidak boleh mengandung spasi, '/', '\\', atau karakter kontrol",
      "group": "Grup",
      "groupDesc": "Label logis untuk mengelompokkan klien terkait (mis. tim, pelanggan, wilayah). Dapat difilter dari toolbar.",
      "groupPlaceholder": "mis. customer-a",
      "comment": "Komentar",
      "traffic": "Lalu lintas",
      "offline": "Offline",
      "addClient": "Tambah klien",
      "qrCode": "Kode QR",
      "clientInfo": "Informasi Klien",
      "delete": "Hapus",
      "reset": "Reset lalu lintas",
      "editClient": "Ubah klien",
      "client": "Klien",
      "enabled": "Aktif",
      "remaining": "Sisa",
      "duration": "Durasi",
      "attachedInbounds": "Inbound terlampir",
      "selectInbound": "Pilih satu atau lebih inbound",
      "selectAllInbounds": "Pilih semua",
      "clearAllInbounds": "Hapus semua",
      "noSubId": "Klien ini tidak punya subId, tidak ada tautan yang bisa dibagikan.",
      "noLinks": "Tidak ada tautan yang bisa dibagikan — lampirkan klien ini ke inbound yang mendukung protokol terlebih dahulu.",
      "link": "Tautan",
      "resetNotPossible": "Lampirkan klien ini ke inbound terlebih dahulu.",
      "general": "Umum",
      "resetAllTraffics": "Reset lalu lintas semua klien",
      "resetAllTrafficsTitle": "Reset lalu lintas semua klien?",
      "resetAllTrafficsContent": "Penghitung kirim/terima setiap klien turun ke nol. Kuota dan kedaluwarsa tidak terpengaruh. Tidak dapat dibatalkan.",
      "deleteConfirmTitle": "Hapus klien {email}?",
      "deleteConfirmContent": "Tindakan ini menghapus klien dari setiap inbound terlampir dan menghapus catatan lalu lintasnya. Tidak dapat dibatalkan.",
      "deleteSelected": "Hapus ({count})",
      "adjustSelected": "Sesuaikan ({count})",
      "subLinksSelected": "Tautan sub ({count})",
      "addToGroupTitle": "Tambahkan {count} klien ke grup",
      "addToGroupTooltip": "Pilih grup yang ada atau ketik nama baru. Gunakan Ungroup untuk menghapus klien dari grup saat ini.",
      "groupName": "Nama grup",
      "addToGroupSuccessToast": "{count} klien ditambahkan ke {group}",
      "ungroupSuccessToast": "Grup dihapus dari {count} klien",
      "ungroup": "Lepaskan grup",
      "ungroupConfirmTitle": "Hapus {count} klien dari grupnya?",
      "ungroupConfirmContent": "Menghapus label grup dari setiap klien terpilih. Klien tetap dipertahankan (gunakan Delete untuk menghapus sepenuhnya).",
      "addToGroup": "Tambahkan ke grup",
      "attach": "Lampirkan",
      "adjust": "Atur",
      "subLinks": "Tautan sub",
      "selectedCount": "{count} dipilih",
      "attachSelected": "Lampirkan ({count})",
      "attachToInboundsTitle": "Lampirkan {count} klien ke inbound",
      "attachToInboundsDesc": "Melampirkan {count} klien terpilih (UUID/kata sandi sama dan trafik bersama) ke inbound terpilih. Lampiran yang ada tetap dipertahankan.",
      "attachToInboundsTargets": "Inbound tujuan",
      "attachToInboundsNoTargets": "Tidak ada inbound multi-pengguna untuk dilampirkan.",
      "detachSelected": "Lepas ({count})",
      "detach": "Lepas",
      "detachFromInboundsTitle": "Lepas {count} klien dari inbound",
      "detachFromInboundsDesc": "Menghapus {count} klien terpilih dari inbound terpilih. Pasangan di mana klien tidak terlampir akan dilewati secara diam-diam. Catatan klien dipertahankan (gunakan Delete untuk menghapus sepenuhnya).",
      "detachFromInboundsTargets": "Inbound untuk dilepas",
      "detachFromInboundsNoTargets": "Tidak ada inbound multi-pengguna.",
      "detachFromInboundsResult": "Dilepas {detached}, dilewati {skipped}.",
      "detachFromInboundsResultMixed": "Dilepas {detached}, dilewati {skipped}, error {errors}.",
      "subLinksTitle": "Tautan sub ({count})",
      "subLinkColumn": "URL Langganan",
      "subJsonLinkColumn": "URL JSON Langganan",
      "subLinksCopyAll": "Salin semua",
      "subLinksCopiedAll": "{count} tautan disalin",
      "subLinksEmpty": "Tidak ada klien terpilih yang memiliki ID langganan.",
      "subLinksDisabled": "Layanan langganan dinonaktifkan.",
      "subLinksDisabledHint": "Aktifkan langganan di Pengaturan Panel → Langganan untuk membuat tautan.",
      "bulkDeleteConfirmTitle": "Hapus {count} klien?",
      "bulkDeleteConfirmContent": "Setiap klien yang dipilih dihapus dari semua inbound terlampir dan catatan lalu lintasnya dihapus. Tidak dapat dibatalkan.",
      "bulkAdjustTitle": "Sesuaikan {count} klien",
      "bulkAdjustHint": "Nilai positif menambah, negatif mengurangi. Klien dengan masa berlaku atau trafik tak terbatas dilewati untuk bidang tersebut.",
      "bulkAdjustNothing": "Setel hari atau trafik sebelum menerapkan.",
      "addDays": "Tambah hari",
      "addTrafficGB": "Tambah trafik (GB)",
      "delDepleted": "Hapus yang habis",
      "delDepletedConfirmTitle": "Hapus klien yang habis?",
      "delDepletedConfirmContent": "Hapus setiap klien yang kuota lalu lintasnya habis atau yang masa berlakunya telah berakhir. Tidak dapat dibatalkan.",
      "auth": "Auth",
      "hysteriaAuth": "Hysteria Auth",
      "uuid": "UUID",
      "flow": "Flow",
      "vmessSecurity": "Keamanan VMess",
      "reverseTag": "Reverse tag",
      "reverseTagPlaceholder": "Reverse tag opsional",
      "telegramId": "ID pengguna Telegram",
      "telegramIdPlaceholder": "ID numerik pengguna Telegram (0 = tidak ada)",
      "created": "Dibuat",
      "updated": "Diperbarui",
      "ipLimit": "Batas IP",
      "toasts": {
        "deleted": "Klien dihapus",
        "trafficReset": "Lalu lintas direset",
        "allTrafficsReset": "Lalu lintas semua klien direset",
        "bulkDeleted": "{count} klien dihapus",
        "bulkDeletedMixed": "{ok} dihapus, {failed} gagal",
        "bulkCreated": "{count} klien dibuat",
        "bulkCreatedMixed": "{ok} dibuat, {failed} gagal",
        "bulkAdjusted": "{count} klien disesuaikan",
        "bulkAdjustedMixed": "{ok} disesuaikan, {skipped} dilewati",
        "delDepleted": "{count} klien habis dihapus"
      }
    },
    "groups": {
      "title": "Grup",
      "name": "Nama",
      "clientCount": "Klien",
      "totalGroups": "Total grup",
      "totalGroupedClients": "Klien dengan grup",
      "trafficUsed": "Trafik terpakai",
      "upload": "Unggah",
      "download": "Unduh",
      "totalTraffic": "Total trafik",
      "totalUpDown": "Total unggah / unduh",
      "addGroup": "Tambah grup",
      "createSuccess": "Grup «{name}» dibuat.",
      "rename": "Ubah nama",
      "renameTitle": "Ubah nama {name}",
      "renameCollision": "Grup bernama «{name}» sudah ada.",
      "renameSuccess": "Grup diubah namanya pada {count} klien.",
      "deleteConfirmTitle": "Hapus grup {name}?",
      "deleteConfirmContent": "Ini menghapus grup dan label-nya dari {count} klien. Klien itu sendiri tidak dihapus.",
      "deleteSuccess": "Grup dihapus dari {count} klien.",
      "resetTraffic": "Reset trafik",
      "resetConfirmTitle": "Reset trafik grup {name}?",
      "resetConfirmContent": "Ini mengatur ulang up/down ke 0 untuk semua {count} klien di grup ini.",
      "resetSuccess": "Trafik direset untuk {count} klien.",
      "adjustSuccess": "{count} klien di {name} disesuaikan.",
      "emptyForAction": "Grup ini belum memiliki klien.",
      "deleteGroupOnly": "Hapus grup (pertahankan klien)",
      "deleteClients": "Hapus klien di grup",
      "deleteClientsConfirmTitle": "Hapus semua klien di {name}?",
      "deleteClientsConfirmContent": "Ini akan menghapus {count} klien secara permanen beserta catatan trafiknya. Label grup juga dihapus. Tidak dapat dibatalkan.",
      "deleteClientsSuccess": "{count} klien dihapus.",
      "deleteClientsMixed": "{ok} dihapus, {failed} dilewati",
      "addToGroup": "Tambah klien…",
      "addToGroupTitle": "Tambah klien ke grup «{name}»",
      "addToGroupDesc": "Pilih klien untuk ditambahkan ke grup ini. Lampiran inbound yang ada tetap dipertahankan; hanya label grup yang berubah. Klien yang sudah ada di grup ini tidak ditampilkan.",
      "addToGroupEmpty": "Tidak ada klien lain untuk ditambahkan.",
      "addToGroupResult": "{count} klien ditambahkan ke {name}.",
      "removeFromGroup": "Hapus klien…",
      "removeFromGroupTitle": "Hapus klien dari grup «{name}»",
      "removeFromGroupDesc": "Pilih anggota untuk dihapus dari grup ini. Klien tetap dipertahankan (gunakan «Hapus klien di grup» untuk menghapus sepenuhnya).",
      "removeFromGroupResult": "{count} klien dihapus dari {name}."
    },
    "nodes": {
      "title": "Node",
      "addNode": "Tambah Node",
      "editNode": "Edit node",
      "totalNodes": "Total Node",
      "onlineNodes": "Online",
      "offlineNodes": "Offline",
      "avgLatency": "Latensi Rata-rata",
      "name": "Nama",
      "namePlaceholder": "mis. de-frankfurt-1",
      "addressPlaceholder": "panel.example.com atau 1.2.3.4",
      "remark": "Catatan",
      "scheme": "Skema",
      "address": "Alamat",
      "port": "Port",
      "basePath": "Path dasar",
      "apiToken": "Token API",
      "apiTokenPlaceholder": "Token dari halaman Pengaturan panel jarak jauh",
      "apiTokenHint": "Panel jarak jauh menampilkan token API-nya di Otentikasi → Token API.",
      "regenerate": "Buat Ulang Token",
      "regenerateConfirm": "Membuat ulang akan membatalkan token saat ini. Setiap panel pusat yang menggunakannya akan kehilangan akses sampai diperbarui. Lanjutkan?",
      "allowPrivateAddress": "Izinkan alamat pribadi",
      "allowPrivateAddressHint": "Aktifkan hanya untuk node di jaringan pribadi atau VPN.",
      "inboundSyncMode": "Impor inbound",
      "inboundSyncModeHint": "Pilih inbound yang diimpor dari node ini. Node yang sudah ada mengimpor semua inbound secara default.",
      "allInbounds": "Semua inbound",
      "selectedInbounds": "Inbound terpilih",
      "inboundTags": "Inbound",
      "inboundTagsHint": "Pilihan dicocokkan berdasarkan tag inbound. Pilihan kosong tidak mengimpor apa pun.",
      "inboundTagsPlaceholder": "Muat dan pilih inbound",
      "loadInbounds": "Muat inbound dari node",
      "inboundsLoaded": "{{count}} inbound dimuat",
      "inboundsLoadFailed": "Gagal memuat inbound",
      "enable": "Aktif",
      "status": "Status",
      "cpu": "CPU",
      "mem": "Memori",
      "uptime": "Uptime",
      "latency": "Latensi",
      "lastHeartbeat": "Heartbeat Terakhir",
      "xrayVersion": "Versi Xray",
      "panelVersion": "Versi panel",
      "actions": "Aksi",
      "probe": "Probe Sekarang",
      "updatePanel": "Perbarui Panel",
      "updateSelected": "Perbarui Terpilih ({count})",
      "updateAvailable": "Pembaruan tersedia",
      "upToDate": "Terbaru",
      "updateConfirmTitle": "Perbarui {count} node ke versi terbaru?",
      "updateConfirmContent": "Setiap node terpilih mengunduh rilis terbaru dan memulai ulang. Hanya node aktif dan online yang diperbarui.",
      "testConnection": "Tes Koneksi",
      "connectionOk": "Koneksi OK ({ms} ms)",
      "connectionFailed": "Koneksi gagal",
      "never": "tidak pernah",
      "justNow": "baru saja",
      "subNode": "Sub-node",
      "subNodeTip": "Hanya-baca: node turunan yang dijangkau melalui {parent}. Kelola dari panel {parent} sendiri.",
      "deleteConfirmTitle": "Hapus node \"{name}\"?",
      "deleteConfirmContent": "Ini menghentikan pemantauan node. Panel jarak jauh itu sendiri tidak terpengaruh.",
      "statusValues": {
        "online": "Online",
        "offline": "Offline",
        "unknown": "Tidak diketahui",
        "xrayError": "Kesalahan Xray",
        "xrayStopped": "Berhenti"
      },
      "toasts": {
        "list": "Gagal memuat node",
        "obtain": "Gagal memuat node",
        "add": "Tambah node",
        "update": "Perbarui node",
        "delete": "Hapus node",
        "deleted": "Node dihapus",
        "test": "Tes koneksi",
        "fillRequired": "Nama, alamat, port, dan token API wajib diisi",
        "probeFailed": "Probe gagal",
        "updateStarted": "Pembaruan panel dimulai",
        "updateResult": "Pembaruan dipicu pada {ok} node, {failed} gagal",
        "updateNoneEligible": "Pilih minimal satu node online dan aktif"
      },
      "tlsVerifyMode": "Verifikasi TLS",
      "tlsVerifyModeHint": "Cara panel memvalidasi sertifikat HTTPS node. Pin atau Lewati untuk sertifikat self-signed (hanya node https).",
      "tlsVerify": "Verifikasi (CA bawaan)",
      "tlsPin": "Pin sertifikat (SHA-256)",
      "tlsSkip": "Lewati verifikasi",
      "tlsSkipWarning": "Melewati verifikasi menghilangkan perlindungan terhadap serangan man-in-the-middle — token API bisa disadap. Lebih baik pin sertifikat.",
      "pinnedCert": "SHA-256 sertifikat yang dipin",
      "pinnedCertHint": "SHA-256 sertifikat node dalam base64 atau hex. Gunakan Ambil untuk membacanya dari node sekarang.",
      "pinnedCertPlaceholder": "SHA-256 base64 atau hex",
      "fetchPin": "Ambil",
      "pinFetched": "Berhasil mengambil sertifikat node saat ini",
      "pinFetchFailed": "Tidak dapat mengambil sertifikat"
    },
    "settings": {
      "title": "Pengaturan Panel",
      "save": "Simpan",
      "infoDesc": "Setiap perubahan yang dibuat di sini perlu disimpan. Harap restart panel untuk menerapkan perubahan.",
      "restartPanel": "Mulai ulang panel",
      "restartPanelDesc": "Apakah Anda yakin ingin merestart panel? Jika Anda tidak dapat mengakses panel setelah merestart, lihat info log panel di server.",
      "restartPanelSuccess": "Panel berhasil dimulai ulang",
      "actions": "Tindakan",
      "resetDefaultConfig": "Reset ke Default",
      "panelSettings": "Umum",
      "securitySettings": "Otentikasi",
      "securityWarnings": "Peringatan keamanan",
      "panelExposed": "Panel Anda mungkin terekspos:",
      "warnHttp": "Panel disajikan melalui HTTP biasa — siapkan TLS untuk produksi.",
      "warnDefaultPort": "Port default 2053 sudah umum diketahui — ubah ke port acak.",
      "warnDefaultBasePath": "Base path default \"/\" sudah umum diketahui — ubah ke path acak.",
      "warnDefaultSubPath": "Path langganan default \"/sub/\" sudah umum diketahui — ubahlah.",
      "warnDefaultJsonPath": "Path langganan JSON default \"/json/\" sudah umum diketahui — ubahlah.",
      "TGBotSettings": "Bot Telegram",
      "panelListeningIP": "IP Pendengar",
      "panelListeningIPDesc": "Alamat IP untuk panel web. (biarkan kosong untuk mendengarkan semua IP)",
      "panelListeningDomain": "Domain Pendengar",
      "panelListeningDomainDesc": "Nama domain untuk panel web. (biarkan kosong untuk mendengarkan semua domain dan IP)",
      "panelPort": "Port Pendengar",
      "panelPortDesc": "Nomor port untuk panel web. (harus menjadi port yang tidak digunakan)",
      "publicKeyPath": "Path Kunci Publik",
      "publicKeyPathDesc": "Path berkas kunci publik untuk panel web. (dimulai dengan ‘/‘)",
      "privateKeyPath": "Path Kunci Privat",
      "privateKeyPathDesc": "Path berkas kunci privat untuk panel web. (dimulai dengan ‘/‘)",
      "panelUrlPath": "Path URI",
      "panelUrlPathDesc": "URI path untuk panel web. (dimulai dengan ‘/‘ dan diakhiri dengan ‘/‘)",
      "pageSize": "Ukuran Halaman",
      "pageSizeDesc": "Tentukan ukuran halaman untuk tabel masuk. (0 = nonaktif)",
      "panelOutbound": "Outbound lalu lintas panel",
      "panelOutboundDesc": "Mengarahkan permintaan panel sendiri — pemeriksaan versi dan unduhan panel/Xray, Telegram, dan pembaruan file geo biasa — melalui outbound Xray ini untuk melewati pemfilteran GitHub/Telegram di sisi server. Inbound jembatan lokal ditambahkan secara otomatis ke konfigurasi yang berjalan dan diterapkan langsung. Pembaruan Otomatis Geodata bawaan Xray tidak terpengaruh; ia memiliki outbound unduhan sendiri. Kosongkan untuk koneksi langsung.",
      "panelOutboundPh": "Koneksi langsung",
      "remarkModel": "Model Catatan & Karakter Pemisah",
      "datepicker": "Jenis Kalender",
      "datepickerPlaceholder": "Pilih tanggal",
      "datepickerDescription": "Tugas terjadwal akan berjalan berdasarkan kalender ini.",
      "sampleRemark": "Contoh Catatan",
      "oldUsername": "Username Saat Ini",
      "currentPassword": "Kata Sandi Saat Ini",
      "newUsername": "Username Baru",
      "newPassword": "Kata Sandi Baru",
      "telegramBotEnable": "Aktifkan Bot Telegram",
      "telegramBotEnableDesc": "Mengaktifkan bot Telegram.",
      "telegramToken": "Token Telegram",
      "telegramTokenDesc": "Token bot Telegram yang diperoleh dari '{'@'}BotFather'.",
      "telegramProxy": "Proxy SOCKS",
      "telegramProxyDesc": "Mengaktifkan proxy SOCKS5 untuk terhubung ke Telegram. (sesuaikan pengaturan sesuai panduan)",
      "telegramAPIServer": "Server API Telegram",
      "telegramAPIServerDesc": "Server API Telegram yang akan digunakan. Biarkan kosong untuk menggunakan server default.",
      "telegramChatId": "ID Obrolan Admin",
      "telegramChatIdDesc": "ID Obrolan Admin Telegram. (dipisahkan koma)(dapatkan di sini {'@'}userinfobot) atau (gunakan perintah '/id' di bot)",
      "telegramNotifyTime": "Waktu Notifikasi",
      "telegramNotifyTimeDesc": "Seberapa sering bot Telegram mengirim laporan berkala. Pilih interval siap pakai, atau pilih Kustom untuk memasukkan ekspresi crontab.",
      "notifyTime": {
        "every": "@every — ulangi dalam interval",
        "hourly": "@hourly — setiap jam",
        "daily": "@daily — setiap hari pukul 00:00",
        "weekly": "@weekly — setiap minggu",
        "monthly": "@monthly — setiap bulan",
        "custom": "Kustom (crontab)",
        "seconds": "Detik",
        "minutes": "Menit",
        "hours": "Jam"
      },
      "tgNotifyBackup": "Cadangan Database",
      "tgNotifyBackupDesc": "Kirim berkas cadangan database dengan laporan.",
      "tgNotifyLogin": "Notifikasi Login",
      "tgNotifyLoginDesc": "Dapatkan notifikasi tentang username, alamat IP, dan waktu setiap kali seseorang mencoba masuk ke panel web Anda.",
      "sessionMaxAge": "Durasi Sesi",
      "sessionMaxAgeDesc": "Durasi di mana Anda dapat tetap masuk. (unit: menit)",
      "expireTimeDiff": "Notifikasi Tanggal Kedaluwarsa",
      "expireTimeDiffDesc": "Dapatkan notifikasi tentang tanggal kedaluwarsa saat mencapai ambang batas ini. (unit: hari)",
      "trafficDiff": "Notifikasi Batas Traffic",
      "trafficDiffDesc": "Dapatkan notifikasi tentang batas traffic saat mencapai ambang batas ini. (unit: GB)",
      "tgNotifyCpu": "Notifikasi Beban CPU",
      "tgNotifyCpuDesc": "Dapatkan notifikasi jika beban CPU melebihi ambang batas ini. (unit: %)",
      "timeZone": "Zone Waktu",
      "timeZoneDesc": "Tugas terjadwal akan berjalan berdasarkan zona waktu ini.",
      "subSettings": "Langganan",
      "subEnable": "Aktifkan Layanan Langganan",
      "subEnableDesc": "Mengaktifkan layanan langganan.",
      "subJsonEnable": "Aktifkan/Nonaktifkan endpoint langganan JSON secara mandiri.",
      "subJsonEnableTitle": "Langganan JSON",
      "subClashEnableTitle": "Langganan Clash / Mihomo",
      "subTitle": "Judul Langganan",
      "subTitleDesc": "Judul yang ditampilkan di klien VPN",
      "subSupportUrl": "URL Dukungan",
      "subSupportUrlDesc": "Tautan dukungan teknis yang ditampilkan di klien VPN",
      "subProfileUrl": "URL Profil",
      "subProfileUrlDesc": "Tautan ke situs web Anda yang ditampilkan di klien VPN",
      "subAnnounce": "Pengumuman",
      "subAnnounceDesc": "Teks pengumuman yang ditampilkan di klien VPN",
      "subThemeDir": "Direktori Tema Langganan",
      "subThemeDirDesc": "Path absolut ke folder yang berisi template kustom (index.html/sub.html) untuk halaman langganan (mis. /etc/3x-ui/sub_templates/my-theme/). Biarkan kosong untuk menggunakan halaman default.",
      "subThemeDirDocs": "Panduan templat ↗",
      "subEnableRouting": "Aktifkan perutean",
      "subEnableRoutingDesc": "Pengaturan global untuk mengaktifkan perutean (routing) di klien VPN. (Hanya untuk Happ)",
      "subRoutingRules": "Aturan routing",
      "subRoutingRulesDesc": "Aturan routing global untuk klien VPN. (Hanya untuk Happ)",
      "subClashEnableRouting": "Aktifkan routing",
      "subClashEnableRoutingDesc": "Sertakan aturan routing global Clash/Mihomo dalam langganan YAML yang dibuat.",
      "subClashRoutingRules": "Aturan routing global",
      "subClashRoutingRulesDesc": "Aturan Clash/Mihomo yang ditambahkan di awal setiap langganan YAML sebelum MATCH,PROXY.",
      "subListen": "IP Pendengar",
      "subListenDesc": "Alamat IP untuk layanan langganan. (biarkan kosong untuk mendengarkan semua IP)",
      "subPort": "Port Pendengar",
      "subPortDesc": "Nomor port untuk layanan langganan. (harus menjadi port yang tidak digunakan)",
      "subCertPath": "Path Kunci Publik",
      "subCertPathDesc": "Path berkas kunci publik untuk layanan langganan. (dimulai dengan ‘/‘)",
      "subKeyPath": "Path Kunci Privat",
      "subKeyPathDesc": "Path berkas kunci privat untuk layanan langganan. (dimulai dengan ‘/‘)",
      "subPath": "Path URI",
      "subPathDesc": "URI path untuk layanan langganan. (dimulai dengan ‘/‘ dan diakhiri dengan ‘/‘)",
      "subDomain": "Domain Pendengar",
      "subDomainDesc": "Nama domain untuk layanan langganan. (biarkan kosong untuk mendengarkan semua domain dan IP)",
      "subUpdates": "Interval Pembaruan",
      "subUpdatesDesc": "Interval pembaruan URL langganan dalam aplikasi klien. (unit: jam)",
      "subEncrypt": "Encode",
      "subEncryptDesc": "Konten yang dikembalikan dari layanan langganan akan dienkripsi Base64.",
      "subShowInfo": "Tampilkan Info Penggunaan",
      "subShowInfoDesc": "Sisa traffic dan tanggal akan ditampilkan di aplikasi klien.",
      "subEmailInRemark": "Sertakan Email dalam Nama",
      "subEmailInRemarkDesc": "Sertakan email klien dalam nama profil langganan.",
      "subURI": "URI Proxy Terbalik",
      "subURIDesc": "Path URI dari URL langganan untuk digunakan di belakang proxy.",
      "externalTrafficInformEnable": "Informasikan API eksternal pada setiap pembaruan lalu lintas.",
      "externalTrafficInformEnableDesc": "Beritahu API eksternal setiap kali ada pembaruan trafik.",
      "externalTrafficInformURI": "Lalu Lintas Eksternal Menginformasikan URI",
      "externalTrafficInformURIDesc": "Pembaruan lalu lintas dikirim ke URI ini.",
      "restartXrayOnClientDisable": "Nyalakan Ulang Xray Setelah Nonaktif Otomatis",
      "restartXrayOnClientDisableDesc": "Saat klien otomatis dinonaktifkan karena kedaluwarsa atau batas trafik, mulai ulang Xray.",
      "fragment": "Fragmentasi",
      "fragmentDesc": "Aktifkan fragmentasi untuk paket hello TLS",
      "fragmentSett": "Pengaturan Fragmentasi",
      "noisesDesc": "Aktifkan Noises.",
      "noisesSett": "Pengaturan Noises",
      "trustedProxyCidrs": "CIDR proxy tepercaya",
      "trustedProxyCidrsDesc": "IP/CIDR (dipisahkan koma) yang diizinkan mengatur header forwarded host, proto, dan client IP.",
      "ldap": {
        "enable": "Aktifkan sinkronisasi LDAP",
        "host": "LDAP host",
        "port": "Port LDAP",
        "useTls": "Gunakan TLS (LDAPS)",
        "bindDn": "Bind DN",
        "passwordConfigured": "Terkonfigurasi; biarkan kosong untuk mempertahankan kata sandi saat ini.",
        "passwordUnconfigured": "Tidak terkonfigurasi.",
        "passwordPlaceholder": "Terkonfigurasi — masukkan nilai baru untuk menggantikan",
        "baseDn": "Base DN",
        "userFilter": "Filter pengguna",
        "userAttr": "Atribut pengguna (username/email)",
        "vlessField": "Atribut flag VLESS",
        "flagField": "Atribut flag umum (opsional)",
        "flagFieldDesc": "Jika diatur, menimpa flag VLESS — mis. shadowInactive.",
        "truthyValues": "Nilai truthy",
        "truthyValuesDesc": "Dipisahkan koma; default: true,1,yes,on",
        "invertFlag": "Balik flag",
        "invertFlagDesc": "Aktifkan saat atribut berarti «dinonaktifkan» (mis. shadowInactive).",
        "syncSchedule": "Jadwal sinkronisasi",
        "syncScheduleDesc": "String mirip cron, mis. @every 1m",
        "inboundTags": "Tag inbound",
        "inboundTagsDesc": "Inbound di mana sinkronisasi LDAP dapat membuat/menghapus klien secara otomatis.",
        "noInbounds": "Tidak ada inbound. Buat dulu di Inbound.",
        "autoCreate": "Buat klien otomatis",
        "autoDelete": "Hapus klien otomatis",
        "defaultTotalGb": "Total default (GB)",
        "defaultExpiryDays": "Kedaluwarsa default (hari)",
        "defaultIpLimit": "Batas IP default"
      },
      "subFormats": {
        "finalMask": "Final Mask",
        "finalMaskDesc": "Mask finalmask xray (TCP/UDP) dan penyetelan QUIC yang disuntikkan ke setiap stream langganan JSON. Membutuhkan klien xray terbaru.",
        "packets": "Paket",
        "length": "Panjang",
        "interval": "Interval",
        "maxSplit": "Maks. pembagian",
        "noises": "Noise",
        "noiseItem": "Noise №{n}",
        "type": "Tipe",
        "packet": "Paket",
        "delayMs": "Penundaan (ms)",
        "applyTo": "Terapkan ke",
        "addNoise": "+ Noise",
        "concurrency": "Konkurensi",
        "xudpConcurrency": "Konkurensi xudp",
        "xudpUdp443": "xudp UDP 443"
      },
      "mux": "Mux",
      "muxDesc": "Mengirimkan beberapa aliran data independen dalam aliran data yang sudah ada.",
      "muxSett": "Pengaturan Mux",
      "direct": "Koneksi langsung",
      "directDesc": "Secara langsung membuat koneksi dengan domain atau rentang IP negara tertentu.",
      "notifications": "Notifikasi",
      "certs": "Sertifikat",
      "externalTraffic": "Lalu Lintas Eksternal",
      "dateAndTime": "Tanggal dan Waktu",
      "proxyAndServer": "Proxy dan Server",
      "intervals": "Interval",
      "information": "Informasi",
      "profile": "Profil",
      "language": "Bahasa",
      "telegramBotLanguage": "Bahasa Bot Telegram",
      "security": {
        "admin": "Kredensial admin",
        "twoFactor": "Autentikasi dua faktor",
        "twoFactorEnable": "Aktifkan 2FA",
        "twoFactorEnableDesc": "Menambahkan lapisan autentikasi tambahan untuk keamanan lebih.",
        "twoFactorModalSetTitle": "Aktifkan autentikasi dua faktor",
        "twoFactorModalDeleteTitle": "Nonaktifkan autentikasi dua faktor",
        "twoFactorModalSteps": "Untuk menyiapkan autentikasi dua faktor, lakukan beberapa langkah:",
        "twoFactorModalFirstStep": "1. Pindai kode QR ini di aplikasi autentikasi atau salin token di dekat kode QR dan tempelkan ke aplikasi",
        "twoFactorModalSecondStep": "2. Masukkan kode dari aplikasi",
        "twoFactorModalRemoveStep": "Masukkan kode dari aplikasi untuk menghapus autentikasi dua faktor.",
        "twoFactorModalChangeCredentialsTitle": "Ubah kredensial",
        "twoFactorModalChangeCredentialsStep": "Masukkan kode dari aplikasi untuk mengubah kredensial administrator.",
        "twoFactorModalSetSuccess": "Autentikasi dua faktor telah berhasil dibuat",
        "twoFactorModalDeleteSuccess": "Autentikasi dua faktor telah berhasil dihapus",
        "twoFactorModalError": "Kode salah",
        "show": "Tampilkan",
        "hide": "Sembunyikan",
        "apiTokenNew": "Token baru",
        "apiTokenName": "Nama",
        "apiTokenNamePlaceholder": "misalnya central-panel-a",
        "apiTokenNameRequired": "Nama wajib diisi",
        "apiTokenEmpty": "Belum ada token — buat satu untuk mengautentikasi bot atau panel jarak jauh.",
        "apiTokenDeleteWarning": "Setiap pemanggil yang menggunakan token ini akan berhenti terautentikasi segera.",
        "apiTokenCreatedTitle": "Token dibuat",
        "apiTokenCreatedNotice": "Salin token ini sekarang. Demi keamanan, token tidak disimpan dalam bentuk yang dapat dibaca dan tidak akan ditampilkan lagi."
      },
      "toasts": {
        "modifySettings": "Parameter telah diubah.",
        "getSettings": "Terjadi kesalahan saat mengambil parameter.",
        "modifyUserError": "Terjadi kesalahan saat mengubah kredensial administrator.",
        "modifyUser": "Anda telah berhasil mengubah kredensial administrator.",
        "originalUserPassIncorrect": "Username atau password saat ini tidak valid",
        "userPassMustBeNotEmpty": "Username dan password baru tidak boleh kosong",
        "getOutboundTrafficError": "Gagal mendapatkan lalu lintas keluar",
        "resetOutboundTrafficError": "Gagal mereset lalu lintas keluar"
      }
    },
    "xray": {
      "title": "Konfigurasi Xray",
      "save": "Simpan",
      "restart": "Mulai ulang Xray",
      "restartSuccess": "Xray berhasil diluncurkan ulang",
      "restartOutputTitle": "Output mulai ulang Xray",
      "restartConfirmTitle": "Mulai ulang xray?",
      "restartConfirmContent": "Memuat ulang layanan xray dengan konfigurasi tersimpan.",
      "stopSuccess": "Xray telah berhasil dihentikan",
      "restartError": "Terjadi kesalahan saat memulai ulang Xray.",
      "stopError": "Terjadi kesalahan saat menghentikan Xray.",
      "basicTemplate": "Dasar",
      "advancedTemplate": "Lanjutan",
      "generalConfigs": "Strategi Umum",
      "generalConfigsDesc": "Opsi ini akan menentukan penyesuaian strategi umum.",
      "logConfigs": "Log",
      "logConfigsDesc": "Log dapat mempengaruhi efisiensi server Anda. Disarankan untuk mengaktifkannya dengan bijak hanya jika diperlukan",
      "blockConfigsDesc": "Opsi ini akan memblokir lalu lintas berdasarkan protokol dan situs web yang diminta.",
      "basicRouting": "Perutean Dasar",
      "blockConnectionsConfigsDesc": "Opsi ini akan memblokir lalu lintas berdasarkan negara yang diminta.",
      "directConnectionsConfigsDesc": "Koneksi langsung memastikan bahwa lalu lintas tertentu tidak dialihkan melalui server lain.",
      "blockips": "Blokir IP",
      "blockdomains": "Blokir Domain",
      "directips": "IP Langsung",
      "directdomains": "Domain Langsung",
      "ipv4Routing": "Perutean IPv4",
      "ipv4RoutingDesc": "Opsi ini akan mengalihkan lalu lintas berdasarkan tujuan tertentu melalui IPv4.",
      "warpRouting": "Perutean WARP",
      "warpRoutingDesc": "Opsi ini akan mengalihkan lalu lintas berdasarkan tujuan tertentu melalui WARP.",
      "nordRouting": "Routing NordVPN",
      "nordRoutingDesc": "Opsi ini akan mengalihkan lalu lintas berdasarkan tujuan tertentu melalui NordVPN.",
      "Template": "Template Konfigurasi Xray Lanjutan",
      "TemplateDesc": "File konfigurasi Xray akhir akan dibuat berdasarkan template ini.",
      "FreedomStrategy": "Strategi Protokol Freedom",
      "FreedomStrategyDesc": "Atur strategi output untuk jaringan dalam Protokol Freedom.",
      "FreedomHappyEyeballs": "Freedom Happy Eyeballs (IPv4/IPv6)",
      "FreedomHappyEyeballsDesc": "Panggilan dual-stack untuk outbound langsung (freedom) — berguna pada server keluar dengan IPv4 dan IPv6.",
      "FreedomHappyEyeballsTryDelayDesc": "Milidetik sebelum mencoba keluarga alamat lainnya. 150–250 ms adalah titik awal yang baik.",
      "RoutingStrategy": "Strategi Pengalihan Keseluruhan",
      "RoutingStrategyDesc": "Atur strategi pengalihan lalu lintas keseluruhan untuk menyelesaikan semua permintaan.",
      "outboundTestUrl": "URL tes outbound",
      "outboundTestUrlDesc": "URL yang digunakan saat menguji konektivitas outbound",
      "Torrent": "Blokir Protokol BitTorrent",
      "Inbounds": "Inbound",
      "InboundsDesc": "Menerima klien tertentu.",
      "Outbounds": "Outbound",
      "Balancers": "Penyeimbang",
      "balancerTagRequired": "Tag wajib diisi",
      "balancerSelectorRequired": "Pilih setidaknya satu outbound",
      "balancerLive": "Target Saat Ini",
      "balancerOverride": "Paksa Tujuan",
      "balancerOverridePh": "Otomatis (strategi)",
      "balancerLiveRefresh": "Perbarui status penyeimbang beban",
      "balancerNotRunning": "Penyeimbang ini tidak aktif di Xray yang berjalan — simpan perubahan atau mulai Xray terlebih dahulu",
      "routeTester": "Uji Rute",
      "routeTesterDesc": "Tanyakan kepada Xray yang berjalan outbound mana yang akan menangani koneksi. Tidak ada lalu lintas yang dikirim — keputusan langsung datang dari mesin routing langsung.",
      "routeTesterDest": "Domain atau IP",
      "routeTesterPort": "Port",
      "routeTesterInbound": "Inbound",
      "routeTesterProtocol": "Protokol yang terdeteksi",
      "routeTesterTest": "Uji Rute",
      "routeTesterMatchedOutbound": "Outbound yang cocok",
      "routeTesterViaBalancer": "melalui penyeimbang",
      "routeTesterDefaultOutbound": "Tidak ada aturan routing yang cocok — lalu lintas menuju outbound default (pertama).",
      "OutboundsDesc": "Atur jalur lalu lintas keluar.",
      "Routings": "Aturan Pengalihan",
      "RoutingsDesc": "Prioritas setiap aturan penting!",
      "completeTemplate": "Semua",
      "logLevel": "Tingkat Log",
      "logLevelDesc": "Tingkat log untuk log kesalahan, menunjukkan informasi yang perlu dicatat.",
      "accessLog": "Log Akses",
      "accessLogDesc": "Jalur file untuk log akses. Nilai khusus 'tidak ada' menonaktifkan log akses",
      "errorLog": "Catatan eror",
      "errorLogDesc": "Jalur file untuk log kesalahan. Nilai khusus 'tidak ada' menonaktifkan log kesalahan",
      "dnsLog": "Log DNS",
      "dnsLogDesc": "Apakah akan mengaktifkan log kueri DNS",
      "maskAddress": "Alamat Masker",
      "maskAddressDesc": "Masker alamat IP, ketika diaktifkan, akan secara otomatis mengganti alamat IP yang muncul di log.",
      "statistics": "Statistik",
      "statsInboundUplink": "Statistik Unggah Masuk",
      "statsInboundUplinkDesc": "Mengaktifkan pengumpulan statistik untuk lalu lintas unggah dari semua proxy masuk.",
      "statsInboundDownlink": "Statistik Unduh Masuk",
      "statsInboundDownlinkDesc": "Mengaktifkan pengumpulan statistik untuk lalu lintas unduh dari semua proxy masuk.",
      "statsOutboundUplink": "Statistik Unggah Keluar",
      "statsOutboundUplinkDesc": "Mengaktifkan pengumpulan statistik untuk lalu lintas unggah dari semua proxy keluar.",
      "statsOutboundDownlink": "Statistik Unduh Keluar",
      "statsOutboundDownlinkDesc": "Mengaktifkan pengumpulan statistik untuk lalu lintas unduh dari semua proxy keluar.",
      "connectionLimits": "Batas Koneksi",
      "connectionLimitsDesc": "Kebijakan tingkat koneksi untuk level pengguna 0. Biarkan kolom kosong untuk menggunakan nilai bawaan Xray.",
      "connIdle": "Batas Waktu Idle",
      "connIdleDesc": "Menutup koneksi setelah idle selama sekian detik. Menurunkannya membebaskan memori dan file descriptor lebih cepat pada server yang sibuk (bawaan Xray: 300).",
      "bufferSize": "Ukuran Buffer",
      "bufferSizeDesc": "Ukuran buffer internal per koneksi dalam KB. Setel ke 0 untuk meminimalkan penggunaan memori pada server ber-RAM rendah (nilai bawaan Xray bergantung pada platform).",
      "bufferSizePlaceholder": "otomatis",
      "seconds": "detik",
      "rules": {
        "first": "Pertama",
        "last": "Terakhir",
        "up": "Naik",
        "down": "Turun",
        "source": "Sumber",
        "dest": "Tujuan",
        "inbound": "Masuk",
        "outbound": "Keluar",
        "balancer": "Pengimbang",
        "info": "Info",
        "add": "Tambahkan Aturan",
        "edit": "Edit Aturan",
        "useComma": "Item yang dipisahkan koma"
      },
      "routing": {
        "dragToReorder": "Seret untuk mengurutkan ulang"
      },
      "ruleForm": {
        "sourceIps": "IP sumber",
        "sourcePort": "Port sumber",
        "vlessRoute": "Rute VLESS",
        "attributes": "Atribut",
        "value": "Nilai",
        "user": "Pengguna",
        "inboundTags": "Tag inbound",
        "outboundTag": "Tag outbound",
        "balancerTag": "Tag balancer",
        "balancerTagTooltip": "Mengarahkan trafik melalui salah satu balancer yang dikonfigurasi"
      },
      "outboundForm": {
        "tagDuplicate": "Tag sudah digunakan oleh outbound lain",
        "tagRequired": "Tag wajib diisi",
        "tagPlaceholder": "tag-unik",
        "localIpPlaceholder": "IP lokal",
        "dialerProxyPlaceholder": "Pilih outbound untuk dirantai",
        "dialerProxyHint": "Hubungkan outbound ini melalui outbound lain (berdasarkan tag) untuk membuat rantai proxy. Kosongkan untuk terhubung langsung.",
        "addressRequired": "Alamat wajib diisi",
        "portRequired": "Port wajib diisi",
        "optional": "opsional",
        "udpOverTcp": "UDP over TCP",
        "uotVersion": "Versi UoT",
        "inboundTag": "Tag inbound",
        "inboundTagPlaceholder": "tag inbound yang digunakan dalam aturan routing",
        "responseType": "Tipe respons",
        "rewriteNetwork": "Tulis ulang jaringan",
        "unchanged": "(tidak berubah)",
        "unchangedAddress": "(tidak berubah) mis. 1.1.1.1",
        "rules": "Aturan",
        "ruleN": "Aturan {n}",
        "action": "Aksi",
        "redirect": "Redirect",
        "fragment": "Fragment",
        "finalRules": "Aturan akhir",
        "overrideXrayPrivateIp": "Timpa blok IP privat default Xray",
        "blockDelay": "Penundaan blokir (ms)",
        "reverseSniffing": "Sniffing terbalik",
        "workers": "Workers",
        "reserved": "Dicadangkan",
        "minUploadInterval": "Min. interval upload (ms)",
        "maxUploadSizeBytes": "Ukuran upload maks. (byte)",
        "uplinkChunkSize": "Ukuran chunk Uplink",
        "noGrpcHeader": "Tanpa header gRPC",
        "maxConcurrency": "Maks. konkurensi",
        "maxConnections": "Maks. koneksi",
        "maxReuseTimes": "Maks. pemakaian ulang",
        "maxRequestTimes": "Maks. permintaan",
        "maxReusableSecs": "Maks. detik dapat dipakai ulang",
        "keepAlivePeriod": "Periode keep alive",
        "authPassword": "Kata sandi auth",
        "visionTestpre": "Vision testpre",
        "serverNamePlaceholder": "nama server",
        "verifyPeerName": "Verifikasi nama peer",
        "pinnedSha256": "SHA256 pinned",
        "shortId": "Short ID",
        "sockopts": "Sockopts",
        "keepAliveInterval": "Interval keep alive",
        "markFwmark": "Mark (fwmark)",
        "interface": "Interface",
        "ipv6Only": "Hanya IPv6",
        "acceptProxyProtocol": "Terima proxy protocol",
        "proxyProtocol": "Proxy protocol",
        "tcpUserTimeoutMs": "TCP user timeout (ms)",
        "tcpKeepAliveIdleS": "TCP keep-alive idle (d)"
      },
      "outbound": {
        "addOutbound": "Tambahkan Keluar",
        "addReverse": "Tambahkan Revers",
        "editOutbound": "Edit Keluar",
        "editReverse": "Edit Revers",
        "reverseTag": "Tag Revers",
        "reverseTagDesc": "Tag outbound proxy revers sederhana VLESS. Kosongkan untuk menonaktifkan.",
        "reverseTagPlaceholder": "tag outbound (kosong untuk menonaktifkan)",
        "tag": "Tag",
        "tagDesc": "Tag Unik",
        "address": "Alamat",
        "reverse": "Revers",
        "domain": "Domain",
        "type": "Tipe",
        "bridge": "Bridge",
        "portal": "Portal",
        "link": "Tautan",
        "intercon": "Interkoneksi",
        "settings": "Pengaturan",
        "accountInfo": "Informasi Akun",
        "outboundStatus": "Status Keluar",
        "sendThrough": "Kirim Melalui",
        "test": "Tes",
        "testResult": "Hasil Tes",
        "testing": "Menguji koneksi...",
        "testSuccess": "Tes berhasil",
        "testFailed": "Tes gagal",
        "testError": "Gagal menguji outbound",
        "testModeTooltip": "TCP: probe dial-only cepat. HTTP: permintaan penuh via xray.",
        "testAll": "Tes semua",
        "httpStatus": "Status HTTP",
        "breakdownConnect": "Koneksi proxy",
        "breakdownTls": "TLS melalui outbound",
        "breakdownTtfb": "Byte pertama",
        "nordvpn": "NordVPN",
        "accessToken": "Token Akses",
        "country": "Negara",
        "server": "Server",
        "city": "Kota",
        "allCities": "Semua Kota",
        "privateKey": "Kunci Privat",
        "load": "Beban"
      },
      "OutboundSubscriptions": "Langganan Outbound",
      "OutboundSubscriptionsDesc": "Impor outbound dari URL langganan jarak jauh (vmess/vless/trojan/ss/...). Tag dijaga tetap stabil untuk digunakan pada penyeimbang dan aturan routing. Pembaruan berjalan otomatis.",
      "outboundSub": {
        "manage": "Langganan",
        "title": "Langganan Outbound",
        "remark": "Catatan (opsional)",
        "remarkPlaceholder": "mis. node HK",
        "url": "URL langganan",
        "urlPlaceholder": "https://... (daftar tautan base64)",
        "tagPrefix": "Awalan tag",
        "tagPrefixPlaceholder": "hk-",
        "interval": "Interval pembaruan",
        "hours": "j",
        "minutes": "mnt",
        "intervalHint": "Default 10 menit. Tugas latar belakang memeriksa secara berkala; setiap langganan hanya diambil ulang ketika intervalnya sendiri telah terlewati.",
        "enabled": "Aktif",
        "allowPrivate": "Izinkan alamat privat",
        "allowPrivateHint": "Izinkan localhost / LAN / IP privat untuk URL langganan ini. Nonaktif secara default demi keamanan — aktifkan hanya untuk sumber lokal yang tepercaya.",
        "prepend": "Sebelum outbound manual",
        "prependHint": "Tempatkan outbound dari langganan ini sebelum outbound manual Anda, sehingga salah satunya dapat menjadi default.",
        "preview": "Pratinjau",
        "previewEmpty": "Tidak ada outbound yang ditemukan di URL ini.",
        "refreshAll": "Segarkan semua",
        "statusOk": "OK",
        "toastUpdated": "Langganan diperbarui",
        "addButton": "Tambah",
        "active": "Langganan aktif",
        "empty": "Belum ada langganan. Tambahkan satu di atas.",
        "colRemark": "Catatan",
        "colPrefix": "Awalan",
        "colInterval": "Interval",
        "colLastFetch": "Pengambilan terakhir",
        "colEnabled": "Aktif",
        "auto": "otomatis",
        "never": "tidak pernah",
        "yes": "Ya",
        "no": "Tidak",
        "refreshNow": "Segarkan sekarang",
        "lastError": "Kesalahan terakhir",
        "deleteConfirm": "Hapus langganan ini?",
        "restartHint": "Setelah menambahkan atau menyegarkan, mulai ulang Xray (atau tunggu muat ulang otomatis berikutnya) agar outbound menjadi aktif.",
        "fromSubsTitle": "Dari langganan outbound (hanya-baca)",
        "fromSubsDesc": "Diimpor dari langganan aktif Anda. Kelola di panel Langganan di atas.",
        "toastLoadFailed": "Gagal memuat langganan",
        "toastUrlRequired": "URL langganan wajib diisi",
        "toastAdded": "Langganan ditambahkan",
        "toastAddFailed": "Gagal menambahkan langganan",
        "toastRefreshed": "Disegarkan",
        "toastRefreshFailed": "Gagal menyegarkan",
        "toastDeleted": "Dihapus",
        "toastDeleteFailed": "Gagal menghapus"
      },
      "balancer": {
        "addBalancer": "Tambahkan Penyeimbang",
        "editBalancer": "Sunting Penyeimbang",
        "balancerStrategy": "Strategi",
        "balancerSelectors": "Penyeleksi",
        "tag": "Tag",
        "tagDesc": "Label Unik",
        "tagDuplicate": "Tag sudah digunakan oleh balancer lain",
        "tagPlaceholder": "tag balancer unik",
        "selector": "Selector",
        "fallback": "Fallback",
        "expected": "Diharapkan",
        "expectedPlaceholder": "jumlah node optimal",
        "maxRtt": "Maks. RTT",
        "tolerance": "Toleransi",
        "baselines": "Baselines",
        "costs": "Costs",
        "balancerDesc": "BalancerTag dan outboundTag tidak dapat digunakan secara bersamaan. Jika digunakan secara bersamaan, hanya outboundTag yang akan berfungsi."
      },
      "wireguard": {
        "secretKey": "Kunci Rahasia",
        "publicKey": "Kunci Publik",
        "allowedIPs": "IP yang Diizinkan",
        "endpoint": "Titik Akhir",
        "psk": "Kunci Pra-Bagi",
        "domainStrategy": "Strategi Domain"
      },
      "tun": {
        "nameDesc": "Nama antarmuka TUN. Standar adalah 'xray0'",
        "mtuDesc": "Unit Transmisi Maksimum. Ukuran maksimum paket data. Standar adalah 1500",
        "userLevel": "Level Pengguna",
        "userLevelDesc": "Semua koneksi yang dibuat melalui inbound ini akan menggunakan level pengguna ini. Standar adalah 0"
      },
      "nord": {
        "accessToken": "Access token",
        "privateKey": "Kunci privat",
        "noServers": "Tidak ada server ditemukan untuk negara yang dipilih",
        "noPublicKey": "Server yang dipilih tidak mengumumkan kunci publik NordLynx.",
        "outboundAdded": "Outbound NordVPN ditambahkan",
        "outboundUpdated": "Outbound NordVPN diperbarui"
      },
      "warp": {
        "changeIp": "Ganti IP",
        "changeIpSuccess": "IP WARP berhasil diganti!",
        "autoUpdateIp": "Perbarui Alamat IP Otomatis",
        "intervalDays": "Interval (Hari)",
        "intervalDesc": "0 untuk menonaktifkan. Mengganti alamat IP secara otomatis.",
        "licenseError": "Gagal mengatur lisensi WARP.",
        "fetchFirst": "Ambil konfig WARP terlebih dahulu.",
        "createAccount": "Buat akun WARP",
        "accessToken": "Access token",
        "deviceId": "ID perangkat",
        "licenseKey": "Kunci lisensi",
        "privateKey": "Kunci privat",
        "deleteAccount": "Hapus akun",
        "settings": "Pengaturan",
        "licenseKeyLabel": "Kunci lisensi WARP / WARP+",
        "key": "Kunci",
        "keyPlaceholder": "kunci WARP+ 26 karakter",
        "accountInfo": "Info akun",
        "deviceName": "Nama perangkat",
        "deviceModel": "Model perangkat",
        "deviceEnabled": "Perangkat aktif",
        "accountType": "Tipe akun",
        "role": "Peran",
        "warpPlusData": "Data WARP+",
        "quota": "Kuota",
        "usage": "Penggunaan",
        "addOutbound": "Tambah outbound"
      },
      "dns": {
        "enable": "Aktifkan DNS",
        "enableDesc": "Aktifkan server DNS bawaan",
        "tag": "Tanda DNS Masuk",
        "tagDesc": "Tanda ini akan tersedia sebagai tanda masuk dalam aturan penataan.",
        "clientIp": "IP Klien",
        "clientIpDesc": "Digunakan untuk memberi tahu server tentang lokasi IP yang ditentukan selama kueri DNS",
        "disableCache": "Nonaktifkan cache",
        "disableCacheDesc": "Menonaktifkan caching DNS",
        "disableFallback": "Nonaktifkan Fallback",
        "disableFallbackDesc": "Menonaktifkan kueri DNS fallback",
        "disableFallbackIfMatch": "Nonaktifkan Fallback Jika Cocok",
        "disableFallbackIfMatchDesc": "Menonaktifkan kueri DNS fallback ketika daftar domain yang cocok dari server DNS terpenuhi",
        "enableParallelQuery": "Aktifkan Kueri Paralel",
        "enableParallelQueryDesc": "Aktifkan kueri DNS paralel ke beberapa server untuk resolusi yang lebih cepat",
        "strategy": "Strategi Kueri",
        "strategyDesc": "Strategi keseluruhan untuk menyelesaikan nama domain",
        "add": "Tambahkan Server",
        "edit": "Sunting Server",
        "domains": "Domain",
        "expectIPs": "IP yang Diharapkan",
        "unexpectIPs": "IP tak terduga",
        "useSystemHosts": "Gunakan Hosts Sistem",
        "useSystemHostsDesc": "Gunakan file hosts dari sistem yang terinstal",
        "serveStale": "Sajikan Kedaluwarsa",
        "serveStaleDesc": "Mengembalikan hasil cache yang kedaluwarsa saat memperbarui di latar belakang",
        "serveExpiredTTL": "TTL Kedaluwarsa",
        "serveExpiredTTLDesc": "Masa berlaku (detik) entri cache kedaluwarsa; 0 = tidak pernah kedaluwarsa",
        "timeoutMs": "Batas waktu (ms)",
        "skipFallback": "Lewati Fallback",
        "finalQuery": "Kueri Akhir",
        "hosts": "Hosts",
        "hostsAdd": "Tambah Host",
        "hostsEmpty": "Tidak ada Host yang ditentukan",
        "hostsDomain": "Domain (mis. domain:example.com)",
        "hostsValues": "IP atau domain — ketik dan tekan Enter",
        "usePreset": "Gunakan templat",
        "dnsPresetTitle": "Templat DNS",
        "dnsPresetFamily": "Keluarga",
        "clearAll": "Hapus Semua",
        "clearAllTitle": "Hapus semua server DNS?",
        "clearAllConfirm": "Ini akan menghapus semua server DNS dari daftar. Tidak dapat dibatalkan."
      },
      "fakedns": {
        "add": "Tambahkan DNS Palsu",
        "edit": "Edit DNS Palsu",
        "ipPool": "Subnet Kumpulan IP",
        "poolSize": "Ukuran Kolam"
      }
    }
  },
  "tgbot": {
    "keyboardClosed": "❌ Keyboard ditutup!",
    "noResult": "❗ Tidak ada hasil!",
    "noQuery": "❌ Kueri tidak ditemukan! Silakan gunakan perintah lagi!",
    "wentWrong": "❌ Terjadi kesalahan!",
    "noIpRecord": "❗ Tidak ada Catatan IP!",
    "noInbounds": "❗ Tidak ada inbound yang ditemukan!",
    "unlimited": "♾ Tidak terbatas (Reset)",
    "add": "Tambah",
    "month": "Bulan",
    "months": "Bulan",
    "day": "Hari",
    "days": "Hari",
    "hours": "Jam",
    "minutes": "Menit",
    "unknown": "Tidak diketahui",
    "inbounds": "Inbound",
    "clients": "Klien",
    "offline": "🔴 Offline",
    "online": "🟢 Online",
    "commands": {
      "unknown": "❗ Perintah tidak dikenal.",
      "pleaseChoose": "👇 Harap pilih:\r\n",
      "help": "🤖 Selamat datang di bot ini! Ini dirancang untuk menyediakan data tertentu dari panel web dan memungkinkan Anda melakukan modifikasi sesuai kebutuhan.\r\n\r\n",
      "start": "👋 Halo <i>{{ .Firstname }}</i>.\r\n",
      "welcome": "🤖 Selamat datang di <b>{{.Hostname }}</b> bot managemen.\r\n",
      "status": "✅ Bot dalam keadaan baik!",
      "usage": "❗ Harap berikan teks untuk mencari!",
      "getID": "🆔 ID Anda: <code>{{ .ID }}</code>",
      "helpAdminCommands": "Untuk memulai ulang Xray Core:\r\n<code>/restart</code>\r\n\r\nUntuk mencari email klien:\r\n<code>/usage [Email]</code>\r\n\r\nUntuk mencari inbound (dengan statistik klien):\r\n<code>/inbound [Catatan]</code>\r\n\r\nID Obrolan Telegram:\r\n<code>/id</code>",
      "helpClientCommands": "Untuk mencari statistik, gunakan perintah berikut:\r\n<code>/usage [Email]</code>\r\n\r\nID Obrolan Telegram:\r\n<code>/id</code>",
      "restartUsage": "\r\n\r\n<code>/restart</code>",
      "restartSuccess": "✅ Operasi berhasil!",
      "restartFailed": "❗ Kesalahan dalam operasi.\r\n\r\n<code>Error: {{ .Error }}</code>.",
      "xrayNotRunning": "❗ Xray Core tidak berjalan.",
      "startDesc": "Tampilkan menu utama",
      "helpDesc": "Bantuan bot",
      "statusDesc": "Periksa status bot",
      "idDesc": "Tampilkan ID Telegram Anda"
    },
    "messages": {
      "cpuThreshold": "🔴 Beban CPU {{ .Percent }}% melebihi batas {{ .Threshold }}%",
      "selectUserFailed": "❌ Kesalahan dalam pemilihan pengguna!",
      "userSaved": "✅ Pengguna Telegram tersimpan.",
      "loginSuccess": "✅ Berhasil masuk ke panel.\r\n",
      "loginFailed": "❗️ Gagal masuk ke panel.\r\n",
      "2faFailed": "2FA Gagal",
      "report": "🕰 Laporan Terjadwal: {{ .RunTime }}\r\n",
      "datetime": "⏰ Tanggal & Waktu: {{ .DateTime }}\r\n",
      "hostname": "💻 Host: {{ .Hostname }}\r\n",
      "version": "🚀 Versi 3X-UI: {{ .Version }}\r\n",
      "xrayVersion": "📡 Versi Xray: {{ .XrayVersion }}\r\n",
      "ipv6": "🌐 IPv6: {{ .IPv6 }}\r\n",
      "ipv4": "🌐 IPv4: {{ .IPv4 }}\r\n",
      "ip": "🌐 IP: {{ .IP }}\r\n",
      "ips": "🔢 IP:\r\n{{ .IPs }}\r\n",
      "serverUpTime": "⏳ Waktu Aktif: {{ .UpTime }} {{ .Unit }}\r\n",
      "serverLoad": "📈 Beban Sistem: {{ .Load1 }}, {{ .Load2 }}, {{ .Load3 }}\r\n",
      "serverMemory": "📋 RAM: {{ .Current }}/{{ .Total }}\r\n",
      "tcpCount": "🔹 TCP: {{ .Count }}\r\n",
      "udpCount": "🔸 UDP: {{ .Count }}\r\n",
      "traffic": "🚦 Lalu Lintas: {{ .Total }} (↑{{ .Upload }},↓{{ .Download }})\r\n",
      "xrayStatus": "ℹ️ Status: {{ .State }}\r\n",
      "username": "👤 Nama Pengguna: {{ .Username }}\r\n",
      "reason": "❗️ Alasan: {{ .Reason }}\r\n",
      "time": "⏰ Waktu: {{ .Time }}\r\n",
      "inbound": "📍 Inbound: {{ .Remark }}\r\n",
      "port": "🔌 Port: {{ .Port }}\r\n",
      "expire": "📅 Tanggal Kadaluarsa: {{ .Time }}\r\n",
      "expireIn": "📅 Kadaluarsa Dalam: {{ .Time }}\r\n",
      "active": "💡 Aktif: {{ .Enable }}\r\n",
      "enabled": "🚨 Diaktifkan: {{ .Enable }}\r\n",
      "online": "🌐 Status Koneksi: {{ .Status }}\r\n",
      "lastOnline": "🔙 Terakhir online: {{ .Time }}\r\n",
      "email": "📧 Email: {{ .Email }}\r\n",
      "upload": "🔼 Unggah: ↑{{ .Upload }}\r\n",
      "download": "🔽 Unduh: ↓{{ .Download }}\r\n",
      "total": "📊 Total: ↑↓{{ .UpDown }} / {{ .Total }}\r\n",
      "TGUser": "👤 Pengguna Telegram: {{ .TelegramID }}\r\n",
      "exhaustedMsg": "🚨 Habis {{ .Type }}:\r\n",
      "exhaustedCount": "🚨 Jumlah Habis {{ .Type }}:\r\n",
      "onlinesCount": "🌐 Klien Online: {{ .Count }}\r\n",
      "disabled": "🛑 Dinonaktifkan: {{ .Disabled }}\r\n",
      "depleteSoon": "🔜 Habis Sebentar: {{ .Deplete }}\r\n\r\n",
      "backupTime": "🗄 Waktu Backup: {{ .Time }}\r\n",
      "refreshedOn": "\r\n📋🔄 Diperbarui Pada: {{ .Time }}\r\n\r\n",
      "yes": "✅ Ya",
      "no": "❌ Tidak",
      "received_id": "🔑📥 ID diperbarui.",
      "received_password": "🔑📥 Kata sandi diperbarui.",
      "received_email": "📧📥 Email diperbarui.",
      "received_comment": "💬📥 Komentar diperbarui.",
      "id_prompt": "🔑 ID Default: {{ .ClientId }}\n\nMasukkan ID Anda.",
      "pass_prompt": "🔑 Kata Sandi Default: {{ .ClientPassword }}\n\nMasukkan kata sandi Anda.",
      "email_prompt": "📧 Email Default: {{ .ClientEmail }}\n\nMasukkan email Anda.",
      "comment_prompt": "💬 Komentar Default: {{ .ClientComment }}\n\nMasukkan komentar Anda.",
      "inbound_client_data_id": "🔄 Masuk: {{ .InboundRemark }}\n\n🔑 ID: {{ .ClientId }}\n📧 Email: {{ .ClientEmail }}\n📊 Lalu lintas: {{ .ClientTraffic }}\n📅 Tanggal Kedaluwarsa: {{ .ClientExp }}\n🌐 Batas IP: {{ .IpLimit }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang kamu bisa menambahkan klien ke inbound!",
      "inbound_client_data_pass": "🔄 Masuk: {{ .InboundRemark }}\n\n🔑 Kata sandi: {{ .ClientPass }}\n📧 Email: {{ .ClientEmail }}\n📊 Lalu lintas: {{ .ClientTraffic }}\n📅 Tanggal Kedaluwarsa: {{ .ClientExp }}\n🌐 Batas IP: {{ .IpLimit }}\n💬 Komentar: {{ .ClientComment }}\n\nSekarang kamu bisa menambahkan klien ke inbound!",
      "cancel": "❌ Proses Dibatalkan! \n\nAnda dapat /start lagi kapan saja. 🔄",
      "error_add_client": "⚠️ Error:\n\n {{ .error }}",
      "using_default_value": "Oke, saya akan tetap menggunakan nilai default. 😊",
      "incorrect_input": "Masukan Anda tidak valid.\nFrasa harus berlanjut tanpa spasi.\nContoh benar: aaaaaa\nContoh salah: aaa aaa 🚫",
      "AreYouSure": "Apakah kamu yakin? 🤔",
      "SuccessResetTraffic": "📧 Email: {{ .ClientEmail }}\n🏁 Hasil: ✅ Berhasil",
      "FailedResetTraffic": "📧 Email: {{ .ClientEmail }}\n🏁 Hasil: ❌ Gagal \n\n🛠️ Kesalahan: [ {{ .ErrorMessage }} ]",
      "FinishProcess": "🔚 Proses reset traffic selesai untuk semua klien."
    },
    "buttons": {
      "closeKeyboard": "❌ Tutup Papan Ketik",
      "cancel": "❌ Batal",
      "cancelReset": "❌ Batal Reset",
      "cancelIpLimit": "❌ Batal Batas IP",
      "confirmResetTraffic": "✅ Konfirmasi Reset Lalu Lintas?",
      "confirmClearIps": "✅ Konfirmasi Hapus IPs?",
      "confirmRemoveTGUser": "✅ Konfirmasi Hapus Pengguna Telegram?",
      "confirmToggle": "✅ Konfirmasi Aktifkan/Nonaktifkan Pengguna?",
      "dbBackup": "Dapatkan Cadangan DB",
      "serverUsage": "Penggunaan Server",
      "getInbounds": "Dapatkan Inbounds",
      "depleteSoon": "Habis Sebentar",
      "clientUsage": "Dapatkan Penggunaan",
      "onlines": "Klien Online",
      "commands": "Perintah",
      "refresh": "🔄 Perbarui",
      "clearIPs": "❌ Hapus IPs",
      "removeTGUser": "❌ Hapus Pengguna Telegram",
      "selectTGUser": "👤 Pilih Pengguna Telegram",
      "selectOneTGUser": "👤 Pilih Pengguna Telegram:",
      "resetTraffic": "📈 Reset Lalu Lintas",
      "resetExpire": "📅 Ubah Tanggal Kadaluarsa",
      "ipLog": "🔢 Log IP",
      "ipLimit": "🔢 Batas IP",
      "setTGUser": "👤 Set Pengguna Telegram",
      "toggle": "🔘 Aktifkan / Nonaktifkan",
      "custom": "🔢 Kustom",
      "confirmNumber": "✅ Konfirmasi: {{ .Num }}",
      "confirmNumberAdd": "✅ Konfirmasi menambahkan: {{ .Num }}",
      "limitTraffic": "🚧 Batas Lalu Lintas",
      "getBanLogs": "Dapatkan Log Pemblokiran",
      "allClients": "Semua Klien",
      "addClient": "Tambah Klien",
      "submitDisable": "Kirim Sebagai Nonaktif ☑️",
      "submitEnable": "Kirim Sebagai Aktif ✅",
      "use_default": "🏷️ Gunakan Default",
      "change_id": "⚙️🔑 ID",
      "change_password": "⚙️🔑 Kata Sandi",
      "change_email": "⚙️📧 Email",
      "change_comment": "⚙️💬 Komentar",
      "change_flow": "⚙️🚦 Flow",
      "ResetAllTraffics": "Reset Semua Lalu Lintas",
      "SortedTrafficUsageReport": "Laporan Penggunaan Lalu Lintas yang Terurut"
    },
    "answers": {
      "successfulOperation": "✅ Operasi berhasil!",
      "errorOperation": "❗ Kesalahan dalam operasi.",
      "getInboundsFailed": "❌ Gagal mendapatkan inbounds.",
      "getClientsFailed": "❌ Gagal mendapatkan klien.",
      "canceled": "❌ {{ .Email }}: Operasi dibatalkan.",
      "clientRefreshSuccess": "✅ {{ .Email }}: Klien diperbarui dengan berhasil.",
      "IpRefreshSuccess": "✅ {{ .Email }}: IP diperbarui dengan berhasil.",
      "TGIdRefreshSuccess": "✅ {{ .Email }}: Pengguna Telegram Klien diperbarui dengan berhasil.",
      "resetTrafficSuccess": "✅ {{ .Email }}: Lalu lintas direset dengan berhasil.",
      "setTrafficLimitSuccess": "✅ {{ .Email }}: Batas lalu lintas disimpan dengan berhasil.",
      "expireResetSuccess": "✅ {{ .Email }}: Hari kadaluarsa direset dengan berhasil.",
      "resetIpSuccess": "✅ {{ .Email }}: Batas IP {{ .Count }} disimpan dengan berhasil.",
      "clearIpSuccess": "✅ {{ .Email }}: IP dihapus dengan berhasil.",
      "getIpLog": "✅ {{ .Email }}: Dapatkan Log IP.",
      "getUserInfo": "✅ {{ .Email }}: Dapatkan Info Pengguna Telegram.",
      "removedTGUserSuccess": "✅ {{ .Email }}: Pengguna Telegram dihapus dengan berhasil.",
      "enableSuccess": "✅ {{ .Email }}: Diaktifkan dengan berhasil.",
      "disableSuccess": "✅ {{ .Email }}: Dinonaktifkan dengan berhasil.",
      "askToAddUserId": "Konfigurasi Anda tidak ditemukan!\r\nSilakan minta admin Anda untuk menggunakan ChatID Telegram Anda dalam konfigurasi Anda.\r\n\r\nChatID Pengguna Anda: <code>{{ .TgUserID }}</code>",
      "chooseClient": "Pilih Klien untuk Inbound {{ .Inbound }}",
      "chooseInbound": "Pilih Inbound"
    }
  }
}