- i18n dead-keys: delete 64 keys unreferenced in frontend/Go sources (menu donate/docs, old index config actions, the whole removed traditional-node/mTLS node form incl. its mtls subtree, xray Outbounds/Balancers) from all 13 locales; 1536 -> 1472 keys each. Verified repo-wide: only stale prebuilt binaries still embed them. - probe TestMetricHistoryMinuteFold: replace wall-clock base with a fixed 120 s-aligned instant; an odd-minute base split the 120 s fold into two buckets (want 1, got 2) on ~half of all runs.
1578 lines
86 KiB
JSON
1578 lines
86 KiB
JSON
{
|
||
"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",
|
||
"regenerate": "Buat Ulang",
|
||
"jsonEditor": "Editor JSON",
|
||
"downloadImage": "Unduh Gambar",
|
||
"sort": "Urutkan",
|
||
"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",
|
||
"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",
|
||
"lastSubFetch": "Pengambilan langganan terakhir",
|
||
"install": "Instal",
|
||
"clients": "Klien",
|
||
"usage": "Penggunaan",
|
||
"remained": "Tersisa",
|
||
"security": "Keamanan",
|
||
"somethingWentWrong": "Terjadi kesalahan",
|
||
"subscription": {
|
||
"title": "Info langganan",
|
||
"subId": "ID langganan",
|
||
"status": "Status",
|
||
"downloaded": "Diunduh",
|
||
"uploaded": "Diunggah",
|
||
"expiry": "Kedaluwarsa",
|
||
"totalQuota": "Kuota total",
|
||
"active": "Aktif",
|
||
"inactive": "Nonaktif",
|
||
"unlimited": "Tanpa batas",
|
||
"noExpiry": "Tanpa kedaluwarsa",
|
||
"copyAllConfigs": "Salin Semua Konfigurasi",
|
||
"copyAllConfigsCopied": "Semua konfigurasi tersalin",
|
||
"email": "Email",
|
||
"individualLinks": "Tautan individual"
|
||
},
|
||
"menu": {
|
||
"theme": "Tema",
|
||
"dashboard": "Ikhtisar",
|
||
"inbounds": "Inbound",
|
||
"clients": "Klien",
|
||
"nodes": "Node",
|
||
"settings": "Pengaturan Panel",
|
||
"hosts": "Host",
|
||
"openMenu": "Buka menu",
|
||
"pinSidebar": "Sematkan bilah sisi",
|
||
"unpinSidebar": "Lepas sematan bilah sisi"
|
||
},
|
||
"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": {
|
||
"cpu": "CPU",
|
||
"swap": "Swap",
|
||
"storage": "Penyimpanan",
|
||
"memory": "Memori",
|
||
"updatePanel": "Perbarui Panel",
|
||
"panelUpdateDesc": "Ini akan memperbarui L-UI ke rilis terbaru dan me-restart layanan panel.",
|
||
"currentPanelVersion": "Versi panel saat ini",
|
||
"latestPanelVersion": "Versi panel terbaru",
|
||
"panelUpToDate": "Panel sudah terbaru",
|
||
"devChannel": "Kanal dev",
|
||
"devChannelWarning": "Build dev mengikuti setiap commit di main dan bukan rilis stabil — tidak ada penurunan versi otomatis.",
|
||
"currentCommit": "Commit saat ini",
|
||
"latestCommit": "Commit terbaru",
|
||
"updateChannelChanged": "Kanal pembaruan diubah",
|
||
"connectionCount": "Statistik Koneksi",
|
||
"ipAddresses": "Alamat IP",
|
||
"toggleIpVisibility": "Alihkan visibilitas IP",
|
||
"overallSpeed": "Kecepatan keseluruhan",
|
||
"upload": "Unggah",
|
||
"download": "Unduh",
|
||
"sent": "Dikirim",
|
||
"received": "Diterima",
|
||
"panelUpdateDialog": "Apakah Anda benar-benar ingin memperbarui panel?",
|
||
"panelUpdateDialogDesc": "Ini akan memperbarui L-UI ke #version# dan me-restart layanan panel.",
|
||
"panelUpdateStartedPopover": "Pembaruan panel dimulai",
|
||
"panelUpdateFailedTitle": "Pembaruan panel gagal",
|
||
"panelUpdateFailedDesc": "Pembaruan tidak selesai dengan sukses. Periksa log server, atau jalankan 'x-ui update' dari baris perintah.",
|
||
"panelUpdateUnknownTitle": "Tidak dapat memastikan pembaruan selesai",
|
||
"panelUpdateUnknownDesc": "Panel tidak melaporkan hasil tepat waktu. Muat ulang untuk memeriksa versi saat ini, atau periksa log server.",
|
||
"dontRefresh": "Instalasi sedang berlangsung, harap jangan menyegarkan halaman ini",
|
||
"backupTitle": "Cadangan & Pulihkan",
|
||
"exportDatabase": "Cadangkan",
|
||
"exportDatabaseDesc": "Klik untuk mengunduh file .db yang berisi cadangan dari database Anda saat ini ke perangkat Anda. Berkas yang sama juga dapat dipulihkan ke panel yang berjalan di PostgreSQL.",
|
||
"importDatabase": "Pulihkan",
|
||
"importDatabaseDesc": "Klik untuk memilih dan mengunggah cadangan .db atau dump migrasi (.dump) dari perangkat Anda untuk memulihkan database.",
|
||
"importDatabaseSuccess": "Database berhasil diimpor",
|
||
"importDatabaseError": "Terjadi kesalahan saat mengimpor database",
|
||
"readDatabaseError": "Terjadi kesalahan saat membaca database",
|
||
"getDatabaseError": "Terjadi kesalahan saat mengambil database",
|
||
"backupPostgresNote": "Panel ini berjalan di PostgreSQL. «Cadangkan» mengunduh arsip pg_dump (.dump) dan «Pulihkan» memuatnya kembali dengan pg_restore. «Pulihkan» juga menerima basis data SQLite (.db) atau dump migrasi SQLite dan mengimpor datanya ke PostgreSQL. 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 cadangan PostgreSQL (.dump), basis data SQLite (.db), atau dump migrasi SQLite guna memulihkan basis data Anda. Ini menggantikan semua data saat ini.",
|
||
"migrationDownload": "Unduh migrasi",
|
||
"migrationDownloadPgDesc": "Klik untuk mengunduh basis data SQLite .db yang dibuat dari data PostgreSQL Anda, siap menjalankan panel ini di SQLite.",
|
||
"free": "tersisa",
|
||
"openSockets": "soket terbuka",
|
||
"throughputSub": "Total antarmuka",
|
||
"healthWarm": "{list} — mulai tinggi",
|
||
"healthCritical": "{list} — kritis",
|
||
"panel": "Panel",
|
||
"threads": "Thread",
|
||
"uptime": "Waktu aktif",
|
||
"importKeepHostSettings": "Pertahankan pengaturan mesin ini",
|
||
"importKeepHostSettingsDesc": "Mempertahankan alamat dengar, port, path dasar, sertifikat, dan identitas node panel ini alih-alih mengambilnya dari berkas yang diunggah."
|
||
},
|
||
"inbounds": {
|
||
"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",
|
||
"empty": "Belum ada fallback",
|
||
"add": "Tambah fallback",
|
||
"pickInbound": "Pilih inbound",
|
||
"matchAny": "apa pun",
|
||
"destPlaceholder": "otomatis (listen:port child)",
|
||
"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",
|
||
"speed": "Kecepatan",
|
||
"expireDate": "Durasi",
|
||
"createdAt": "Dibuat",
|
||
"updatedAt": "Diperbarui",
|
||
"resetTraffic": "Reset trafik",
|
||
"addInbound": "Tambahkan Masuk",
|
||
"generalActions": "Tindakan Umum",
|
||
"modifyInbound": "Ubah 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…",
|
||
"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",
|
||
"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",
|
||
"certificatePath": "Path Berkas",
|
||
"certificateContent": "Konten Berkas",
|
||
"publicKey": "Kunci Publik",
|
||
"privatekey": "Kunci Pribadi",
|
||
"client": "Klien",
|
||
"export": "Ekspor Semua URL",
|
||
"clone": "Duplikat",
|
||
"resetAllTraffic": "Reset Semua Traffic Masuk",
|
||
"resetAllTrafficTitle": "Reset Semua Traffic Masuk",
|
||
"email": "Email",
|
||
"IPLimit": "Batas IP",
|
||
"IPLimitlog": "Log IP",
|
||
"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",
|
||
"forwardingTab": "Forwarding",
|
||
"forwarding": {
|
||
"mode": "Forwarding",
|
||
"direct": "Direct",
|
||
"forward": "Forward (entry → exit)",
|
||
"landing": "Landing",
|
||
"managed": "Managed landing",
|
||
"manual": "Manual endpoint",
|
||
"target": "Landing inbound",
|
||
"targetPlaceholder": "Pick a SOCKS (mixed) inbound",
|
||
"targetDisabled": "disabled",
|
||
"address": "Landing address",
|
||
"port": "Exit port",
|
||
"protocol": "Entry → exit protocol",
|
||
"username": "SOCKS5 username",
|
||
"password": "Landing password",
|
||
"importLink": "Import from link",
|
||
"importPlaceholder": "socks5://user:pass@host:port",
|
||
"importApply": "Import",
|
||
"importFailed": "Could not parse that link",
|
||
"help": "Applies when this inbound is deployed to an agent node: on every config pull the panel compiles this forwarding into a dedicated outbound plus a routing rule for that agent. A managed landing's address and credentials are resolved from the chosen inbound at build time."
|
||
},
|
||
"sniffingMetadataOnly": "Hanya metadata",
|
||
"sniffingRouteOnly": "Hanya routing",
|
||
"sniffingIpsExcluded": "IP yang dikecualikan",
|
||
"sniffingDomainsExcluded": "Domain yang dikecualikan",
|
||
"decryption": "Dekripsi",
|
||
"encryption": "Enkripsi",
|
||
"vlessAuthX25519": "X25519 (native)",
|
||
"vlessAuthMlkem768": "ML-KEM-768 (native)",
|
||
"vlessAuthX25519Xorpub": "X25519 (xorpub)",
|
||
"vlessAuthX25519Random": "X25519 (random)",
|
||
"vlessAuthMlkem768Xorpub": "ML-KEM-768 (xorpub)",
|
||
"vlessAuthMlkem768Random": "ML-KEM-768 (random)",
|
||
"vlessAuthCustom": "Khusus",
|
||
"vlessAuthSelected": "Dipilih: {auth}",
|
||
"vlessAuthGenerate": "Buat kunci",
|
||
"vlessAuthGenerateButton": "Buat",
|
||
"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:"
|
||
},
|
||
"subSortIndex": "Urutan sub",
|
||
"inboundInfo": "Informasi Inbound",
|
||
"exportInbound": "Ekspor Masuk",
|
||
"import": "Impor",
|
||
"importInbound": "Impor Masuk",
|
||
"periodicTrafficResetTitle": "Reset Trafik Berkala",
|
||
"periodicTrafficResetDay": "Hari reset bulanan",
|
||
"periodicTrafficReset": {
|
||
"never": "Tidak Pernah",
|
||
"daily": "Harian",
|
||
"weekly": "Mingguan",
|
||
"monthly": "Bulanan",
|
||
"hourly": "Setiap jam"
|
||
},
|
||
"toasts": {
|
||
"obtain": "Dapatkan",
|
||
"updateSuccess": "Pembaruan berhasil",
|
||
"logCleanSuccess": "Log telah dibersihkan",
|
||
"inboundUpdateSuccess": "Inbound berhasil diperbarui",
|
||
"inboundCreateSuccess": "Inbound berhasil dibuat",
|
||
"bulkDeleted": "{count} inbound dihapus",
|
||
"bulkDeletedMixed": "{ok} dihapus, {failed} gagal",
|
||
"clonedMany": "{count} inbound digandakan",
|
||
"clonedMixed": "{ok} digandakan, {failed} gagal",
|
||
"inboundDeleteSuccess": "Inbound berhasil dihapus",
|
||
"inboundClientAddSuccess": "Klien inbound telah ditambahkan",
|
||
"inboundClientDeleteSuccess": "Klien inbound telah dihapus",
|
||
"inboundClientUpdateSuccess": "Klien inbound telah diperbarui",
|
||
"savedNodeOfflineWillSync": "Disimpan secara lokal. Node pendukung sedang offline atau dinonaktifkan — perubahan akan disinkronkan setelah terhubung kembali.",
|
||
"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.",
|
||
"scanRealityTargetError": "Gagal memindai target REALITY.",
|
||
"scanRealityTargetFeasible": "Target layak — target dan SNI terisi.",
|
||
"scanRealityTargetNotFeasible": "Target dapat dijangkau tetapi tidak layak untuk REALITY.",
|
||
"scanRealityTargetPrivate": "Target dapat dijangkau, tetapi berada di jaringan privat/lokal.",
|
||
"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",
|
||
"mtprotoFakeTlsDomainHint": "Domain FakeTLS default untuk membuat secret klien baru. Setiap klien bisa memakai domainnya sendiri.",
|
||
"mtgThrottleMaxConnections": "Koneksi maksimum",
|
||
"mtgThrottleMaxConnectionsHint": "Batasi koneksi bersamaan semua pengguna dengan pembagian adil. 0 menonaktifkan.",
|
||
"mtgAdTagInvalid": "Ad-tag harus tepat 32 karakter heksadesimal.",
|
||
"mtgPublicIpv4": "IPv4 Publik",
|
||
"mtgPublicIpv6": "IPv6 Publik",
|
||
"mtgPublicIpHint": "Alamat publik server ini yang dapat dijangkau, digunakan oleh proxy perantara ad-tag. Biarkan kosong agar mtg mendeteksinya secara otomatis.",
|
||
"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",
|
||
"sessionIDTable": "Tabel Session ID",
|
||
"sessionIDTableHint": "Kumpulan karakter untuk membuat session ID: nama yang telah ditentukan (ALPHABET, Base62, hex, number, …) atau string ASCII literal. Kosongkan untuk default xray-core.",
|
||
"sessionIDLength": "Panjang Session ID",
|
||
"sessionIDLengthHint": "Panjang atau rentang (mis. 8-16) session ID yang dibuat. Hanya digunakan saat Tabel Session ID disetel; nilai minimum harus lebih besar dari 0.",
|
||
"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",
|
||
"trustedXForwardedForHint": "Percayai header permintaan ini untuk IP klien asli (mis. CF-Connecting-IP di belakang CDN Cloudflare). Hanya berlaku pada transport WebSocket, HTTPUpgrade, XHTTP, dan gRPC. Kosongkan untuk mengabaikan header yang diteruskan.",
|
||
"proxyProtocolHint": "Terima header PROXY protocol untuk mengetahui IP klien asli dari tunnel/relay L4 di hulu (HAProxy, gost, nginx-stream, Xray dokodemo-door) atau Cloudflare Spectrum. Hulu HARUS mengirim PROXY protocol. Berfungsi pada TCP, WebSocket, HTTPUpgrade, dan gRPC; tidak pada mKCP.",
|
||
"realClientIp": "IP klien asli",
|
||
"realClientIpHint": "Tangkap IP asli pengunjung saat lalu lintas mencapai inbound ini melalui CDN atau relay, alih-alih mencatat alamat perantara. Pilih preset untuk mengisi kolom sockopt terkait di bawah. Kolom ini tidak pernah dikirim ke klien dalam langganan.",
|
||
"realClientIpPresetOff": "Mati / langsung",
|
||
"realClientIpPresetCloudflare": "Cloudflare CDN",
|
||
"realClientIpPresetProxyProtocol": "Relay L4 / Spectrum (PROXY)",
|
||
"realClientIpTrustedHeaderTransportWarn": "Trusted X-Forwarded-For hanya berlaku pada WebSocket, HTTPUpgrade, dan XHTTP. Pada transport saat ini header ini diabaikan.",
|
||
"realClientIpProxyProtocolTransportWarn": "PROXY protocol tidak didukung pada transport ini (mKCP). Gunakan TCP/RAW, WebSocket, HTTPUpgrade, gRPC, atau XHTTP.",
|
||
"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",
|
||
"getNewEchCert": "Dapatkan sertifikat ECH baru",
|
||
"show": "Tampilkan",
|
||
"xver": "Xver",
|
||
"target": "Target",
|
||
"maxTimeDiff": "Maks. selisih waktu (ms)",
|
||
"minClientVer": "Min. versi klien",
|
||
"maxClientVer": "Maks. versi klien",
|
||
"minClientVerHint": "Kosong bukan berarti tanpa batas: Xray-core akan memakai minimum bawaan dari build core yang dijalankan (26.3.27 pada rilis saat ini) dan menolak klien yang melaporkan versi lebih lama — termasuk core pihak ketiga seperti Mihomo dan sing-box. Isi 1.0.0 untuk menerimanya, dengan risiko mengizinkan sidik jari TLS yang usang.",
|
||
"maxClientVerHint": "Kosong berarti tanpa batas atas. Jika diisi, tidak boleh lebih rendah dari minimum efektif — versi klien minimum, atau minimum bawaan Xray-core saat kolom itu kosong — atau semua klien akan ditolak.",
|
||
"clientVerInvalid": "Versi klien harus berupa maksimal tiga angka dipisah titik, masing-masing 0-255 (mis. 26.3.27)",
|
||
"maxClientVerBelowMin": "Versi klien maksimum tidak boleh lebih rendah dari versi klien minimum",
|
||
"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",
|
||
"scan": "Pindai",
|
||
"findTargets": "Cari Target",
|
||
"scanModalTitle": "Pemindai Target REALITY",
|
||
"scanModalDesc": "Validasi domain, atau pindai rentang IP / CIDR untuk menemukan target REALITY baru dari sertifikatnya. Biarkan kosong untuk memeriksa kandidat umum.",
|
||
"scanDiscoverPlaceholder": "IP, CIDR, atau domain — kosongkan untuk kandidat umum",
|
||
"scanStatus": "Status",
|
||
"scanFeasible": "Layak",
|
||
"scanNotFeasible": "Tidak layak",
|
||
"scanCurve": "Pertukaran Kunci",
|
||
"scanCert": "Sertifikat",
|
||
"scanCertInvalid": "Tidak tepercaya",
|
||
"scanCertExpiry": "Sertifikat kedaluwarsa",
|
||
"scanSniUsed": "SNI yang dipakai",
|
||
"scanPrivateNote": "Diperiksa melalui jaringan privat/lokal — alamat ini tidak dapat dijangkau dari internet.",
|
||
"scanPrivateConfirmTitle": "Target di jaringan lokal",
|
||
"scanPrivateConfirmContent": "\"{target}\" mengarah ke alamat privat atau loopback. Pemeriksaan akan melewati pelindung SSRF panel hanya untuk uji ini. Lanjutkan?",
|
||
"scanLatency": "Latensi",
|
||
"scanUse": "Gunakan",
|
||
"scanRescan": "Pindai ulang",
|
||
"spiderX": "SpiderX",
|
||
"spiderXHint": "Seed per-klien — panel menurunkan jalur spx unik untuk tiap klien darinya; regenerasi untuk merotasi jalur semua klien",
|
||
"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.",
|
||
"disableFlow": "Nonaktifkan flow XTLS",
|
||
"disableFlowHelp": "Kecualikan inbound ini dari injeksi otomatis xtls-rprx-vision, meskipun transport-nya mendukung flow (mis. inbound XHTTP yang dituneling dengan enkripsi VLESS). Klien tetap memakai Vision pada inbound lain yang mendukung dalam langganan yang sama. Hanya VLESS.",
|
||
"shareAddrStrategyOptions": {
|
||
"node": "Alamat node",
|
||
"listen": "Alamat listen inbound",
|
||
"custom": "Kustom"
|
||
},
|
||
"echSockopt": "ECH Sockopt",
|
||
"echSockoptTip": "Opsi socket untuk koneksi yang dipakai Xray guna mengambil daftar konfig ECH (mis. mengarahkan pencarian melalui outbound dialerProxy). Biarkan nonaktif untuk memakai bawaan.",
|
||
"curvePreferences": "Preferensi kurva",
|
||
"curvePreferencesTip": "Batasi kurva pertukaran kunci TLS yang ditawarkan server, sesuai urutan preferensi (mis. X25519MLKEM768, X25519). Biarkan kosong untuk memakai bawaan Xray-core.",
|
||
"masterKeyLog": "Log master key",
|
||
"masterKeyLogTip": "Path untuk menulis master key TLS (format SSLKEYLOGFILE) untuk debug dengan Wireshark. Biarkan kosong di produksi — ini memungkinkan siapa pun yang memiliki file tersebut mendekripsi lalu lintas.",
|
||
"verifyPeerCertByName": "Verifikasi sertifikat peer berdasarkan nama",
|
||
"verifyPeerCertByNameTip": "Minta klien memverifikasi sertifikat server terhadap nama ini, bukan SNI. Nama dipisahkan koma. Hanya panel — disertakan dalam tautan berbagi (vcn). Pengganti modern untuk allowInsecure, yang dihapus Xray setelah 2026-06-01.",
|
||
"pinFromCert": "Isi dari sertifikat inbound ini",
|
||
"pinFromRemote": "Ambil hash dengan melakukan ping ke SNI (xray tls ping)",
|
||
"pinFromRemoteNoSni": "Atur SNI (serverName) terlebih dahulu untuk melakukan ping ke sertifikat jarak jauh.",
|
||
"pinFromRemoteFailed": "Tidak dapat mengambil hash sertifikat jarak jauh.",
|
||
"limitFallback": "Batasi fallback",
|
||
"limitFallbackUpload": "Batasi unggah fallback",
|
||
"limitFallbackDownload": "Batasi unduh fallback",
|
||
"afterBytes": "Setelah byte",
|
||
"afterBytesTip": "Biarkan fallback berjalan pada kecepatan penuh untuk sejumlah byte ini, lalu mulai membatasi. 0 = batasi sejak byte pertama.",
|
||
"bytesPerSec": "Byte per detik",
|
||
"bytesPerSecTip": "Batas kecepatan (byte/detik) yang diterapkan pada lalu lintas fallback setelah ambang batas, agar probe tidak dapat memakai server Anda sebagai bandwidth gratis menuju target. 0 = tanpa batas (menonaktifkan arah ini).",
|
||
"burstBytesPerSec": "Byte per detik burst",
|
||
"burstBytesPerSecTip": "Kelonggaran untuk burst singkat di atas laju tetap (ukuran token-bucket). Jika lebih kecil dari Byte per detik, nilainya dinaikkan agar sama."
|
||
},
|
||
"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}"
|
||
},
|
||
"sniffingDestOverride": "Penggantian tujuan"
|
||
},
|
||
"clients": {
|
||
"tabBasics": "Dasar",
|
||
"tabCredentials": "Kredensial",
|
||
"tabLinks": "Tautan",
|
||
"wireguardConfig": "Konfigurasi WireGuard",
|
||
"config": "Konfigurasi",
|
||
"linksHint": "Tambahkan tautan berbagi pihak ketiga dan URL langganan jarak jauh untuk disertakan dalam langganan klien ini.",
|
||
"addExternalLink": "Tambah Tautan Eksternal",
|
||
"addExternalSubscription": "Tambah Langganan Eksternal",
|
||
"noExternalLinks": "Belum ada tautan eksternal.",
|
||
"noExternalSubscriptions": "Belum ada langganan eksternal.",
|
||
"namePrefix": "Awalan nama",
|
||
"lastFetchAt": "Pengambilan terakhir",
|
||
"lastFetchError": "Galat pengambilan",
|
||
"neverFetched": "Belum diambil",
|
||
"submitEdit": "Simpan perubahan",
|
||
"clientCount": "Jumlah klien",
|
||
"bulk": "Tambah massal",
|
||
"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)",
|
||
"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, Telegram ID…",
|
||
"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",
|
||
"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.",
|
||
"limitHwid": "Batas HWID",
|
||
"limitHwidDesc": "Jumlah maksimum perangkat terdaftar untuk permintaan langganan. 0 = tidak terbatas.",
|
||
"hwidLog": "Perangkat HWID",
|
||
"hwidDevice": "Perangkat terdaftar",
|
||
"noHwids": "Belum ada perangkat HWID",
|
||
"firstSeen": "Pertama terlihat",
|
||
"lastSeen": "Terakhir terlihat",
|
||
"deleteHwid": "Hapus perangkat",
|
||
"deleteHwidConfirm": "Hapus perangkat ini? Perangkat perlu mendaftar ulang pada pengambilan langganan berikutnya.",
|
||
"hwidDeleted": "Perangkat dihapus.",
|
||
"clearHwidsConfirm": "Hapus semua perangkat terdaftar? Setiap perangkat perlu mendaftar ulang pada pengambilan langganan berikutnya.",
|
||
"limitIpFail2banMissing": "Fail2ban tidak terpasang, sehingga batas IP tidak dapat diterapkan. Pasang Fail2ban dari menu bash x-ui untuk mengaktifkan opsi ini.",
|
||
"limitIpFail2banWindows": "Fail2ban tidak tersedia di Windows, sehingga batas IP tidak dapat diterapkan.",
|
||
"limitIpDisabled": "Fitur batas IP dinonaktifkan di server ini.",
|
||
"password": "Kata sandi",
|
||
"passwordDesc": "Hanya digunakan oleh klien Trojan dan Shadowsocks; diabaikan untuk VLESS, VMess, Hysteria, dan WireGuard.",
|
||
"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",
|
||
"speed": "Kecepatan",
|
||
"offline": "Offline",
|
||
"addClient": "Tambah klien",
|
||
"qrCode": "Kode QR",
|
||
"clientInfo": "Informasi Klien",
|
||
"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.",
|
||
"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.",
|
||
"attach": "Lampirkan",
|
||
"adjust": "Atur",
|
||
"subLinks": "Tautan sub",
|
||
"enable": "Aktifkan",
|
||
"disable": "Nonaktifkan",
|
||
"bulkEnableConfirmTitle": "Aktifkan {count} klien?",
|
||
"bulkEnableConfirmContent": "Mengaktifkan setiap klien yang dipilih di semua inbound yang terlampir. Klien yang kuotanya habis atau masa berlakunya telah lewat akan dinonaktifkan kembali secara otomatis.",
|
||
"bulkDisableConfirmTitle": "Nonaktifkan {count} klien?",
|
||
"bulkDisableConfirmContent": "Menonaktifkan setiap klien yang dipilih di semua inbound yang terlampir. Mereka langsung kehilangan akses, tetapi catatan dan trafiknya tetap disimpan.",
|
||
"selectedCount": "{count} dipilih",
|
||
"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.",
|
||
"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",
|
||
"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)",
|
||
"bulkFlow": "Atur flow",
|
||
"bulkFlowNoChange": "Tanpa perubahan",
|
||
"bulkFlowDisable": "Nonaktifkan (hapus flow)",
|
||
"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.",
|
||
"exportClients": "Ekspor klien",
|
||
"importClients": "Impor klien",
|
||
"import": "Impor",
|
||
"delOrphans": "Hapus klien tanpa inbound",
|
||
"delOrphansConfirmTitle": "Hapus klien tanpa inbound?",
|
||
"delOrphansConfirmContent": "Menghapus setiap klien yang tidak terhubung ke inbound mana pun, beserta catatan lalu lintasnya. Tidak dapat dibatalkan.",
|
||
"auth": "Auth",
|
||
"hysteriaAuth": "Hysteria Auth",
|
||
"hysteriaAuthDesc": "Kredensial yang hanya digunakan oleh klien Hysteria. Trojan dan Shadowsocks menggunakan kolom \"Kata sandi\" sebagai gantinya.",
|
||
"uuid": "UUID",
|
||
"flow": "Flow",
|
||
"vmessSecurity": "Keamanan VMess",
|
||
"wireguardPrivateKey": "Kunci Privat WireGuard",
|
||
"wireguardPublicKey": "Kunci Publik WireGuard",
|
||
"wireguardPreSharedKey": "Kunci Pra-Berbagi WireGuard",
|
||
"wireguardAllowedIPs": "IP yang Diizinkan WireGuard",
|
||
"wireguardAllowedIPsHint": "Biarkan kosong untuk penetapan otomatis; pisahkan entri dengan koma",
|
||
"amneziaWgPrivateKey": "Kunci Privat AmneziaWG",
|
||
"amneziaWgPublicKey": "Kunci Publik AmneziaWG",
|
||
"amneziaWgPreSharedKey": "Kunci Pra-Berbagi AmneziaWG",
|
||
"amneziaWgAllowedIPs": "IP yang Diizinkan AmneziaWG",
|
||
"amneziaWgAllowedIPsHint": "Biarkan kosong untuk penetapan otomatis; pisahkan entri dengan koma",
|
||
"amneziaWgForwardedPorts": "Port yang Diteruskan",
|
||
"amneziaWgForwardedPortsHint": "Port/rentang yang di-DNAT ke klien ini, mis. 80, 443, 8000-8100. Biarkan kosong jika tidak ada.",
|
||
"amneziaWgConfig": "Konfigurasi AmneziaWG",
|
||
"mtprotoSecret": "Secret MTProto",
|
||
"mtprotoSecretHint": "Secret FakeTLS klien. Buat ulang untuk menggantinya.",
|
||
"mtprotoAdTag": "Ad-tag (kanal bersponsor)",
|
||
"mtprotoAdTagHint": "Tag heksadesimal 32 karakter opsional dari pendaftaran proxy Telegram. Jika diatur, klien ini dirutekan melalui proxy perantara Telegram dan kanal bersponsor muncul di bagian atas daftar obrolannya.",
|
||
"reverseTag": "Reverse tag",
|
||
"reverseTagPlaceholder": "Reverse tag opsional",
|
||
"telegramId": "ID pengguna Telegram",
|
||
"telegramIdPlaceholder": "ID numerik pengguna Telegram (0 = tidak ada)",
|
||
"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",
|
||
"bulkEnabled": "{count} klien diaktifkan",
|
||
"bulkEnabledMixed": "{ok} diaktifkan, {failed} gagal",
|
||
"bulkDisabled": "{count} klien dinonaktifkan",
|
||
"bulkDisabledMixed": "{ok} dinonaktifkan, {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",
|
||
"delOrphans": "{count} klien tanpa inbound dihapus",
|
||
"imported": "{count} klien diimpor",
|
||
"importedMixed": "{ok} diimpor, {failed} dilewati"
|
||
},
|
||
"renewMax": "Maksimum perpanjangan",
|
||
"renewMaxDesc": "Berapa kali perpanjangan otomatis boleh berjalan sebelum klien dibiarkan kedaluwarsa. 0 berarti tanpa batas. Mengejar beberapa periode yang terlewat menghabiskan satu perpanjangan per periode.",
|
||
"renewOnDay": "Perpanjang pada tanggal",
|
||
"renewOnDayDesc": "Perpanjang pada tanggal ini setiap bulan kalender, pada tengah malam menurut zona waktu panel, alih-alih setiap N hari. Bulan yang terlalu pendek untuk tanggal yang dipilih diperpanjang pada hari terakhirnya. 0 mempertahankan mode interval hari.",
|
||
"renewsUsed": "Perpanjangan terpakai"
|
||
},
|
||
"nodes": {
|
||
"addNode": "Tambah Node",
|
||
"editNode": "Edit node",
|
||
"totalNodes": "Total Node",
|
||
"onlineNodes": "Online",
|
||
"offlineNodes": "Offline",
|
||
"avgLatency": "Latensi Rata-rata",
|
||
"name": "Nama",
|
||
"namePlaceholder": "mis. de-frankfurt-1",
|
||
"remark": "Catatan",
|
||
"address": "Alamat",
|
||
"apiToken": "Token API",
|
||
"apiTokenHint": "Panel jarak jauh menampilkan token API-nya di Otentikasi → Token API.",
|
||
"enable": "Aktif",
|
||
"status": "Status",
|
||
"cpu": "CPU",
|
||
"mem": "Memori",
|
||
"netUp": "Upload Jaringan (KB/s)",
|
||
"netDown": "Download Jaringan (KB/s)",
|
||
"uptime": "Uptime",
|
||
"latency": "Latensi",
|
||
"lastHeartbeat": "Heartbeat Terakhir",
|
||
"coreVersion": "Core version",
|
||
"panelVersion": "Versi panel",
|
||
"actions": "Aksi",
|
||
"probe": "Probe Sekarang",
|
||
"updateSelected": "Perbarui Terpilih ({count})",
|
||
"updateConfirmTitle": "Perbarui {count} node ke versi terbaru?",
|
||
"updateAgent": "Update Agent",
|
||
"updateAgentConfirmContent": "The agent on this node will download the latest release, verify it, and restart onto it. If the update fails, the node keeps running the current version.",
|
||
"agentInstallCommand": "Install Command",
|
||
"agentTokenNotStored": "This node's token is not stored on the master yet, so the command below has no token. The token is saved on the node itself in /etc/x-ui/agent.json; it will be filled in here automatically after the agent's next authenticated request.",
|
||
"testConnection": "Tes Koneksi",
|
||
"connectionOk": "Koneksi OK ({ms} ms)",
|
||
"never": "tidak pernah",
|
||
"justNow": "baru saja",
|
||
"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"
|
||
},
|
||
"agentHint": "Agent nodes connect out to the master; no address, port or API token needed. An install command is generated on creation.",
|
||
"probeOnly": "Probe only",
|
||
"probeOnlyHint": "Probe-only mode: no proxy core runs on this node; only monitoring (heartbeat, metrics and latency probes) is active.",
|
||
"agentTokenTitle": "Agent Node Setup",
|
||
"agentTokenCreated": "Node {{name}} created successfully",
|
||
"agentTokenHint": "Copy the command below and run it on the node machine. This token is shown only once!",
|
||
"agentTokenInstructions": "The command downloads the installer, configures the master URL and token. The node comes online in ~30s.",
|
||
"agentTokenCopied": "Install command copied",
|
||
"agentTokenCopyFailed": "Copy failed, please copy manually",
|
||
"copyToken": "Copy Install Command",
|
||
"agentMasterUrlHint": "Master URL (used by agent to reach the master; change to public address if behind proxy):",
|
||
"agentMasterUrlRequired": "Master URL is empty — enter the master address first; the install command is generated only then.",
|
||
"probe": {
|
||
"title": "Public status page",
|
||
"hint": "Display and plan data for the public status page. Saving takes effect immediately.",
|
||
"public": "Show on public page",
|
||
"publicRemark": "Public remark",
|
||
"group": "Group",
|
||
"sort": "Sort order",
|
||
"price": "Price",
|
||
"currency": "Currency",
|
||
"billingCycle": "Billing cycle",
|
||
"cycleOnce": "One-time",
|
||
"cycleMonthly": "Monthly",
|
||
"cycleQuarterly": "Quarterly",
|
||
"cycleSemiannual": "Semiannual",
|
||
"cycleYearly": "Yearly",
|
||
"cycleBiennial": "Biennial",
|
||
"cycleTriennial": "Triennial",
|
||
"expiresAt": "Expires on (YYYY-MM-DD)",
|
||
"trafficLimit": "Traffic limit (GB, 0 = unlimited)",
|
||
"trafficMode": "Traffic counting",
|
||
"modeSum": "Up + down",
|
||
"modeUp": "Up only",
|
||
"modeDown": "Down only",
|
||
"modeMax": "Larger of up/down",
|
||
"trafficResetDay": "Traffic reset day",
|
||
"notify": "Expiry / traffic alerts",
|
||
"countryPin": "Country pin (e.g. JP)",
|
||
"ipv4Pin": "IPv4 pin",
|
||
"ipv6Pin": "IPv6 pin",
|
||
"calUp": "Uplink correction (GB)",
|
||
"calDown": "Downlink correction (GB)",
|
||
"calHint": "Corrections are added to the counted traffic (negative values subtract) and apply to panel statistics, the public page and traffic alerts.",
|
||
"statIface": "Counted interface",
|
||
"movedHint": "Probe metadata (pricing, traffic limits, calibration…) is edited on the probe settings page.",
|
||
"goSettings": "Open probe settings",
|
||
"save": "Save status page info",
|
||
"saved": "Status page info saved",
|
||
"saveFailed": "Saving status page info failed"
|
||
},
|
||
"probeTasks": {
|
||
"title": "Probe tasks",
|
||
"intro": "TCP latency probes run by agent nodes. Changes apply on each agent's next config poll (about 30 s); nothing restarts.",
|
||
"loading": "Loading…",
|
||
"empty": "No probe tasks yet. Add one to start measuring latency.",
|
||
"add": "Add probe",
|
||
"name": "Name",
|
||
"target": "Target",
|
||
"targetPlaceholder": "host:port, e.g. 1.1.1.1:443",
|
||
"interval": "Interval (s)",
|
||
"region": "Region",
|
||
"ungrouped": "Ungrouped",
|
||
"autoJoin": "Auto-join",
|
||
"autoJoinOn": "Auto",
|
||
"nodes": "Nodes",
|
||
"nodesPlaceholder": "Assign nodes",
|
||
"actions": "Actions",
|
||
"edit": "Edit",
|
||
"delete": "Delete",
|
||
"deleteConfirm": "Delete this probe and its history?",
|
||
"save": "Save",
|
||
"cancel": "Cancel",
|
||
"saved": "Probe task saved",
|
||
"deleted": "Probe task deleted",
|
||
"loadFailed": "Failed to load probe tasks",
|
||
"saveFailed": "Operation failed",
|
||
"batchTitle": "Batch add",
|
||
"batchPlaceholder": "One target per line, or comma-separated — host:port, e.g. 1.1.1.1:443",
|
||
"batchSubmit": "Add all",
|
||
"batchHint": "The shared fields apply to every target; leave the name empty to name each task after its target.",
|
||
"batchEmpty": "Enter at least one target",
|
||
"batchDone": "Added {{count}} probe tasks"
|
||
}
|
||
},
|
||
"settings": {
|
||
"probeThemes": {
|
||
"title": "Theme store",
|
||
"settingsTitle": "Public status page",
|
||
"publicPage": "Public page",
|
||
"publicPageHint": "When off, the status page and its API answer only to the logged-in panel.",
|
||
"siteName": "Site name",
|
||
"site": "Site URL",
|
||
"githubProxy": "GitHub proxy",
|
||
"githubProxyHint": "Prefix used when downloading theme packages from GitHub; leave empty to connect directly.",
|
||
"favicon": "Site icon (favicon)",
|
||
"touchIcon": "Touch icon (apple-touch-icon)",
|
||
"chooseImage": "Choose image",
|
||
"iconHint": "PNG, ICO, SVG, WebP, JPEG or GIF, at most 20 KiB; larger photos are scaled down. The icon follows the site across theme switches.",
|
||
"iconTooLarge": "The image cannot be fitted into 20 KiB",
|
||
"saved": "Saved",
|
||
"saveFailed": "Operation failed",
|
||
"uploadInstall": "Upload theme.tar.gz",
|
||
"installed": "Theme \"{{name}}\" installed",
|
||
"uploadFailed": "Upload failed",
|
||
"installByUrl": "Install by address",
|
||
"installByUrlPlaceholder": "Theme GitHub repository, e.g. https://github.com/author/repo",
|
||
"installFailed": "Install failed",
|
||
"inUse": "In use",
|
||
"use": "Use",
|
||
"builtin": "Built-in",
|
||
"deleteConfirm": "Delete this theme?",
|
||
"updatedTo": "Updated to {{version}}",
|
||
"alreadyLatest": "Already the latest version",
|
||
"config": "Theme settings"
|
||
},
|
||
"probe": {
|
||
"title": "Probe settings",
|
||
"retentionDays": "History retention (days)",
|
||
"retentionHint": "How long probe history (metrics and latency) is kept.",
|
||
"fastInterval": "Fast report interval",
|
||
"fastIntervalHint": "How often agents report runtime metrics; everything else still rides the 60 s heartbeat.",
|
||
"metaTitle": "Per-node probe metadata",
|
||
"metaNodePlaceholder": "Select a node"
|
||
},
|
||
"probeNotify": {
|
||
"notifyTitle": "Notifications",
|
||
"notifyHint": "Offline, traffic and expiry alerts, delivered to the channels below (Telegram reuses the panel bot settings).",
|
||
"grace": "Offline grace (minutes)",
|
||
"graceHint": "An alert fires only after reporting has stopped for this long; a recovery inside the grace stays silent.",
|
||
"trafficPct": "Traffic alert threshold (%)",
|
||
"trafficHint": "Alerts once at this percentage and once more at 100%, once per billing period each; 0 disables traffic alerts.",
|
||
"expiryDays": "Expiry alert (days)",
|
||
"expiryHint": "A daily digest of nodes expiring within this many days; online nodes roll over automatically by billing cycle; 0 disables.",
|
||
"loginAlert": "Panel sign-in alerts",
|
||
"telegramChannel": "Telegram channel",
|
||
"telegramHint": "The token and chat IDs are configured in the Telegram bot settings.",
|
||
"webhookChannel": "Webhook channel",
|
||
"configured": "Configured",
|
||
"notConfigured": "Not configured",
|
||
"telegramText": "Telegram text template",
|
||
"webhookUrl": "Webhook URL",
|
||
"webhookHeaders": "Headers (one Name: value per line)",
|
||
"webhookBody": "Body template (JSON)",
|
||
"secretSet": "Set (leave empty to keep)",
|
||
"clearSecret": "Clear",
|
||
"templateHint": "Placeholders: {{title}} {{message}} {{node}} {{event}} {{time}} {{count}} {{site}}",
|
||
"testSend": "Send a test alert",
|
||
"testSent": "Test alert sent: {{channels}}"
|
||
},
|
||
"defaultTag": "Bawaan",
|
||
"title": "Pengaturan Panel",
|
||
"save": "Simpan",
|
||
"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.",
|
||
"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)",
|
||
"datepickerPlaceholder": "Pilih tanggal",
|
||
"oldUsername": "Username Saat Ini",
|
||
"currentPassword": "Kata Sandi Saat Ini",
|
||
"newUsername": "Username Baru",
|
||
"newPassword": "Kata Sandi Baru",
|
||
"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)",
|
||
"timeZone": "Zone Waktu",
|
||
"timeZoneDesc": "Tugas terjadwal akan berjalan berdasarkan zona waktu ini.",
|
||
"subSettings": "Langganan",
|
||
"subEnable": "Aktifkan Layanan Langganan",
|
||
"subEnableDesc": "Mengaktifkan layanan langganan.",
|
||
"subTitle": "Judul Langganan",
|
||
"subTitleDesc": "Judul yang ditampilkan di klien VPN. Mendukung token identitas klien: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
|
||
"subSupportUrl": "URL Dukungan",
|
||
"subSupportUrlDesc": "Tautan dukungan teknis yang ditampilkan di klien VPN. Mendukung token identitas klien: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
|
||
"subProfileUrl": "URL Profil",
|
||
"subProfileUrlDesc": "Tautan ke situs web Anda yang ditampilkan di klien VPN. Mendukung token identitas klien: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
|
||
"subAnnounce": "Pengumuman",
|
||
"subAnnounceDesc": "Teks pengumuman yang ditampilkan di klien VPN. Mendukung token identitas klien: {{EMAIL}}, {{ID}}, {{SHORT_ID}}, {{SUB_ID}}, {{TELEGRAM_ID}}.",
|
||
"subHideSettings": "Sembunyikan pengaturan server",
|
||
"subHideSettingsDesc": "Menyembunyikan kemampuan untuk melihat dan mengedit konfigurasi server di klien VPN. (Hanya untuk Happ)",
|
||
"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). Juga digunakan untuk membangun tautan/QR langganan yang ditampilkan di panel ketika \"URI Proxy Terbalik\" di bawah kosong — jika langganan diakses melalui reverse proxy pada port yang berbeda, atur \"URI Proxy Terbalik\" sebagai gantinya.",
|
||
"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). Juga digunakan sebagai domain cadangan untuk tautan langganan yang ditampilkan ketika \"URI Proxy Terbalik\" kosong — atur \"URI Proxy Terbalik\" jika panel dan langganan diakses melalui domain yang berbeda (misalnya di belakang reverse proxy).",
|
||
"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.",
|
||
"subURI": "URI Proxy Terbalik",
|
||
"subURIDesc": "URL dasar lengkap (scheme://domain[:port]/path/) untuk tautan langganan dan kode QR, digunakan sebagai pengganti Domain/Port Pendengar. Atur ini kapan pun langganan diakses melalui reverse proxy atau domain/port yang berbeda dari yang di atas.",
|
||
"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.",
|
||
"subFormats": {
|
||
"packets": "Paket",
|
||
"length": "Panjang",
|
||
"interval": "Interval",
|
||
"maxSplit": "Maks. pembagian",
|
||
"noises": "Noise",
|
||
"noiseItem": "Noise №{n}",
|
||
"type": "Tipe",
|
||
"packet": "Paket",
|
||
"delayMs": "Penundaan (ms)",
|
||
"applyTo": "Terapkan ke",
|
||
"concurrency": "Konkurensi",
|
||
"xudpConcurrency": "Konkurensi xudp",
|
||
"xudpUdp443": "xudp UDP 443"
|
||
},
|
||
"mux": "Mux",
|
||
"muxSett": "Pengaturan Mux",
|
||
"certs": "Sertifikat",
|
||
"dateAndTime": "Tanggal dan Waktu",
|
||
"proxyAndServer": "Proxy dan Server",
|
||
"intervals": "Interval",
|
||
"information": "Informasi",
|
||
"profile": "Profil",
|
||
"language": "Bahasa",
|
||
"security": {
|
||
"admin": "Kredensial admin",
|
||
"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"
|
||
},
|
||
"eventNodeDown": "Mati",
|
||
"eventNodeUp": "Aktif",
|
||
"eventCPUHigh": "CPU tinggi (%)",
|
||
"requestFailed": "Permintaan gagal",
|
||
"eventLoginAttempt": "Percobaan masuk",
|
||
"eventMemoryHigh": "Penggunaan memori tinggi (%)",
|
||
"remarkTemplate": "Templat Catatan",
|
||
"remarkTemplateDesc": "Jika diatur, ini menggantikan model catatan untuk setiap tautan langganan — tulis format Anda sendiri dengan token variabel (gunakan tombol untuk menyisipkannya). Biarkan kosong untuk memakai model di atas.",
|
||
"subShowIdentityOnAllLinks": "Tampilkan identitas di setiap tautan",
|
||
"subShowIdentityOnAllLinksDesc": "Jika diaktifkan, {{EMAIL}} dan {{USERNAME}} tetap ada di catatan setiap tautan isi langganan. Token penggunaan tetap hanya di tautan pertama.",
|
||
"validation": {
|
||
"pathLeadingSlash": "Path harus diawali dengan /"
|
||
},
|
||
"secretClear": "Hapus",
|
||
"secretClearUndo": "Batalkan hapus",
|
||
"TGBotSettings": "Bot Telegram",
|
||
"notifications": "Notifikasi",
|
||
"notifyTime": {
|
||
"custom": "Kustom (crontab)",
|
||
"daily": "@daily — setiap hari pukul 00:00",
|
||
"every": "@every — ulangi dalam interval",
|
||
"hourly": "@hourly — setiap jam",
|
||
"hours": "Jam",
|
||
"interval": "Interval",
|
||
"minutes": "Menit",
|
||
"monthly": "@monthly — setiap bulan",
|
||
"seconds": "Detik",
|
||
"unit": "Satuan",
|
||
"weekly": "@weekly — setiap minggu"
|
||
},
|
||
"telegramAPIServer": "Server API Telegram",
|
||
"telegramAPIServerDesc": "Server API Telegram yang akan digunakan. Biarkan kosong untuk menggunakan server default.",
|
||
"telegramBotEnable": "Aktifkan Bot Telegram",
|
||
"telegramBotEnableDesc": "Mengaktifkan bot Telegram.",
|
||
"telegramBotLanguage": "Bahasa Bot Telegram",
|
||
"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.",
|
||
"telegramToken": "Token Telegram",
|
||
"telegramTokenConfigured": "Terkonfigurasi; kosongkan untuk mempertahankan token saat ini.",
|
||
"telegramTokenDesc": "Token bot Telegram yang diperoleh dari '{'@'}BotFather'.",
|
||
"telegramTokenPlaceholder": "Terkonfigurasi - masukkan token baru untuk mengganti",
|
||
"testTgBot": "Kirim Pesan Uji",
|
||
"tgBotNotEnabled": "Bot Telegram tidak aktif",
|
||
"tgBotNotRunning": "Bot Telegram tidak berjalan",
|
||
"tgEventBusNotify": "Notifikasi Peristiwa Telegram",
|
||
"tgEventBusNotifyDesc": "Pilih peristiwa yang memicu notifikasi Telegram",
|
||
"tgNotifyBackup": "Cadangan Database",
|
||
"tgNotifyBackupDesc": "Kirim berkas cadangan database dengan laporan.",
|
||
"tgTestFailed": "Uji Telegram gagal",
|
||
"tgTestSuccess": "Pesan uji terkirim ke Telegram",
|
||
"trafficStatsInboundUplink": "Inbound Upload Accounting",
|
||
"trafficStatsInboundDownlink": "Inbound Download Accounting",
|
||
"trafficStatsOutboundUplink": "Outbound Upload Accounting",
|
||
"trafficStatsOutboundDownlink": "Outbound Download Accounting",
|
||
"trafficStatsDesc": "Applies to the whole network. A direction pair (inbound or outbound) is counted only while both of its switches are on. While counting is off, that traffic is never recorded and the gap is permanent — it is not backfilled later — and expiry / over-quota auto-disable loses the data it relies on."
|
||
},
|
||
"xray": {
|
||
"basicTemplate": "Dasar",
|
||
"advancedTemplate": "Lanjutan",
|
||
"rules": {
|
||
"inbound": "Masuk"
|
||
},
|
||
"outboundForm": {
|
||
"minUploadInterval": "Min. interval upload (ms)",
|
||
"maxConcurrency": "Maks. konkurensi",
|
||
"maxConnections": "Maks. koneksi",
|
||
"maxReuseTimes": "Maks. pemakaian ulang",
|
||
"maxRequestTimes": "Maks. permintaan",
|
||
"maxReusableSecs": "Maks. detik dapat dipakai ulang",
|
||
"keepAlivePeriod": "Periode keep alive"
|
||
},
|
||
"wireguard": {
|
||
"secretKey": "Kunci Rahasia",
|
||
"publicKey": "Kunci Publik",
|
||
"subnetIp": "Subnet",
|
||
"subnetCidr": "CIDR Subnet",
|
||
"allowedIPs": "IP yang Diizinkan",
|
||
"domainStrategy": "Strategi Domain"
|
||
},
|
||
"amneziawg": {
|
||
"privateKey": "Kunci Privat",
|
||
"publicKey": "Kunci Publik",
|
||
"subnetIp": "Subnet",
|
||
"subnetCidr": "CIDR Subnet",
|
||
"mtu": "MTU",
|
||
"primaryDns": "DNS Utama",
|
||
"secondaryDns": "DNS Cadangan",
|
||
"externalInterface": "Antarmuka Eksternal",
|
||
"externalInterfaceHint": "NIC host untuk NAT (PostUp/PostDown). Biarkan kosong untuk deteksi otomatis.",
|
||
"ipv6Enabled": "Aktifkan IPv6",
|
||
"ipv6Subnet": "Subnet IPv6",
|
||
"ipv6SubnetHint": "mis. fd86:ea04:1115::/64. Wajib diisi saat IPv6 diaktifkan.",
|
||
"ipv6ExternalInterface": "NIC Eksternal IPv6",
|
||
"ipv6ExternalInterfaceHint": "NIC host untuk entri proxy NDP. Biarkan kosong untuk menggunakan NIC Eksternal.",
|
||
"obfuscation": "Parameter obfuskasi",
|
||
"regenerateObfuscation": "Buat ulang",
|
||
"jc": "Jc (jumlah paket sampah)",
|
||
"jmin": "Jmin (ukuran min paket sampah)",
|
||
"jmax": "Jmax (ukuran maks paket sampah)",
|
||
"s1": "S1 (padding paket init)",
|
||
"s2": "S2 (padding paket response)",
|
||
"s3": "S3 (padding cookie reply)",
|
||
"s4": "S4 (padding paket transport)",
|
||
"h1": "H1 (header ajaib)",
|
||
"h2": "H2 (header ajaib)",
|
||
"h3": "H3 (header ajaib)",
|
||
"h4": "H4 (header ajaib)",
|
||
"hHint": "Satu bilangan bulat atau rentang. Biarkan kosong untuk nilai klasik 1/2/3/4.",
|
||
"i1": "I1 (paket tanda tangan)",
|
||
"i1Hint": "Paket tanda tangan opsional. Biarkan kosong untuk melewatkannya.",
|
||
"i2": "I2 (paket tanda tangan)",
|
||
"i3": "I3 (paket tanda tangan)",
|
||
"i4": "I4 (paket tanda tangan)",
|
||
"i5": "I5 (paket tanda tangan)",
|
||
"headerProtectionKey": "HeaderProtectionKey (perlindungan header)",
|
||
"headerProtectionKeyHint": "Kunci Base64 32 byte; harus sama di konfigurasi setiap klien. Biarkan kosong untuk menonaktifkan perlindungan header.",
|
||
"contentPaddingAddition": "ContentPaddingAddition (padding konten)",
|
||
"contentPaddingAdditionHint": "Satu bilangan bulat atau rentang byte yang ditambahkan ke paket konten. Biarkan kosong untuk menonaktifkan.",
|
||
"rekeyAfterTime": "RekeyAfterTime (detik)",
|
||
"rekeyTimeout": "RekeyTimeout (detik)",
|
||
"rejectAfterTime": "RejectAfterTime (detik)",
|
||
"keepaliveTimeout": "KeepaliveTimeout (detik)",
|
||
"maxHandshakeAttempts": "MaxHandshakeAttempts",
|
||
"timingRangeHint": "Satu bilangan bulat atau rentang. Biarkan kosong untuk memakai bawaan WireGuard.",
|
||
"maxHandshakeAttemptsHint": "Jumlah percobaan ulang handshake sebelum menyerah. Biarkan kosong untuk nilai bawaan.",
|
||
"randomTrailers": "RandomTrailers",
|
||
"randomTrailersHint": "Menambahkan byte acak ke setiap paket. Kedua sisi butuh AmneziaWG 3.1+.",
|
||
"disableCookies": "DisableCookies",
|
||
"disableCookiesHint": "Tidak pernah mengirim cookie reply — menghapus sidik jari DPI, tetapi melemahkan mitigasi banjir."
|
||
},
|
||
"tun": {
|
||
"userLevel": "Level Pengguna"
|
||
}
|
||
},
|
||
"hosts": {
|
||
"addHost": "Tambah Host",
|
||
"editHost": "Ubah Host",
|
||
"selectInbound": "Pilih sebuah inbound",
|
||
"selectedCount": "{count} dipilih",
|
||
"summary": {
|
||
"total": "Total",
|
||
"enabled": "Aktif",
|
||
"disabled": "Nonaktif"
|
||
},
|
||
"moveUp": "Naik",
|
||
"moveDown": "Turun",
|
||
"bulkEnable": "Aktifkan",
|
||
"bulkDisable": "Nonaktifkan",
|
||
"bulkDelete": "Hapus",
|
||
"bulkDeleteConfirm": "Hapus {count} host yang dipilih?",
|
||
"deleteConfirmTitle": "Hapus host \"{name}\"?",
|
||
"sections": {
|
||
"basic": "Dasar",
|
||
"security": "Keamanan",
|
||
"advanced": "Lanjutan",
|
||
"general": "Umum",
|
||
"clash": "Clash (mihomo)"
|
||
},
|
||
"fields": {
|
||
"remark": "Catatan",
|
||
"serverDescription": "Deskripsi",
|
||
"inbound": "Inbound",
|
||
"address": "Alamat",
|
||
"port": "Port",
|
||
"endpoint": "Endpoint",
|
||
"enable": "Aktifkan",
|
||
"actions": "Aksi",
|
||
"security": "Keamanan",
|
||
"sni": "SNI",
|
||
"overrideSniFromAddress": "Gunakan alamat sebagai SNI",
|
||
"keepSniBlank": "Biarkan SNI kosong",
|
||
"hostHeader": "Header Host",
|
||
"path": "Path",
|
||
"alpn": "ALPN",
|
||
"fingerprint": "Fingerprint",
|
||
"pins": "SHA-256 sertifikat tersemat",
|
||
"allowInsecure": "Izinkan tidak aman",
|
||
"echConfigList": "Daftar konfig ECH",
|
||
"muxParams": "Mux",
|
||
"sockoptParams": "Sockopt",
|
||
"finalMask": "Final Mask",
|
||
"vlessRoute": "Rute VLESS",
|
||
"mihomoIpVersion": "Versi IP",
|
||
"mihomoX25519": "Mihomo X25519",
|
||
"shuffleHost": "Acak host",
|
||
"tags": "Tag",
|
||
"nodeGuids": "Node",
|
||
"excludeFromSubTypes": "Kecualikan dari format",
|
||
"verifyPeerCertByName": "Verifikasi sertifikat peer berdasarkan nama",
|
||
"inheritAddress": "Warisi alamat"
|
||
},
|
||
"hints": {
|
||
"address": "Biarkan kosong untuk mewarisi alamat inbound itu sendiri.",
|
||
"port": "0 mewarisi port inbound.",
|
||
"tags": "Tidak terlihat oleh pengguna akhir; hanya dikirim dengan langganan RAW. Hanya huruf kapital, angka, _ dan :.",
|
||
"nodeGuids": "Pilih node yang teresolusi dari host ini. Hanya penetapan visual.",
|
||
"serverDescription": "Catatan opsional yang ditampilkan di bawah catatan.",
|
||
"allowInsecure": "Lewati verifikasi sertifikat TLS (allowInsecure / skip-cert-verify).",
|
||
"vlessRoute": "Satu nilai rute VLESS (0-65535) yang disisipkan ke UUID, mis. 443. Biarkan kosong jika tidak ada.",
|
||
"remark": "Label sederhana untuk host ini. Ditampilkan sebagai nama konfigurasi hanya ketika inbound tidak memiliki catatan tersendiri."
|
||
},
|
||
"remarkVars": {
|
||
"title": "Variabel Templat",
|
||
"intro": "Klik sebuah variabel untuk menambahkannya. Variabel diganti per klien saat langganan dibuat.",
|
||
"preview": "Pratinjau",
|
||
"groups": {
|
||
"client": "Klien",
|
||
"traffic": "Trafik",
|
||
"time": "Waktu & status",
|
||
"connection": "Koneksi"
|
||
},
|
||
"descEMAIL": "Email klien",
|
||
"descINBOUND": "Catatan inbound itu sendiri (nama konfigurasi)",
|
||
"descHOST": "Catatan host",
|
||
"descID": "UUID klien",
|
||
"descSHORT_ID": "8 karakter pertama dari UUID",
|
||
"descTELEGRAM_ID": "ID Telegram klien (kosong jika tidak diatur)",
|
||
"descSUB_ID": "ID langganan",
|
||
"descCOMMENT": "Komentar klien",
|
||
"descTRAFFIC_USED": "Trafik terpakai (mudah dibaca)",
|
||
"descTRAFFIC_LEFT": "Trafik tersisa (disembunyikan jika tanpa batas)",
|
||
"descTRAFFIC_TOTAL": "Total trafik (disembunyikan jika tanpa batas)",
|
||
"descTRAFFIC_USED_BYTES": "Trafik terpakai dalam byte",
|
||
"descTRAFFIC_LEFT_BYTES": "Trafik tersisa dalam byte",
|
||
"descTRAFFIC_TOTAL_BYTES": "Total trafik dalam byte",
|
||
"descUP": "Trafik unggah",
|
||
"descDOWN": "Trafik unduh",
|
||
"descSTATUS": "aktif / kedaluwarsa / nonaktif / habis",
|
||
"descSTATUS_EMOJI": "Status sebagai emoji (✅ ⏳ 🚫)",
|
||
"descDAYS_LEFT": "Hari hingga kedaluwarsa (disembunyikan jika tanpa batas)",
|
||
"descTIME_LEFT": "Waktu tersisa (mis. 12d 4h 30m)",
|
||
"descUSAGE_PERCENTAGE": "Trafik terpakai dalam persentase (disembunyikan jika tanpa batas)",
|
||
"descEXPIRE_DATE": "Tanggal kedaluwarsa (YYYY-MM-DD)",
|
||
"descJALALI_EXPIRE_DATE": "Tanggal kedaluwarsa dalam kalender Jalali (YYYY/MM/DD)",
|
||
"descEXPIRE_UNIX": "Kedaluwarsa sebagai timestamp Unix (detik)",
|
||
"descCREATED_UNIX": "Waktu pembuatan sebagai timestamp Unix (detik)",
|
||
"descRESET_DAYS": "Periode reset trafik dalam hari",
|
||
"descRESET_DAY": "Tanggal perpanjangan setiap bulan",
|
||
"descPROTOCOL": "Protokol inbound (VLESS, VMess, Trojan, …)",
|
||
"descTRANSPORT": "Jaringan transport (tcp, ws, grpc, …)",
|
||
"descSECURITY": "Keamanan transport (TLS, REALITY, NONE)"
|
||
},
|
||
"toasts": {
|
||
"list": "Gagal memuat host",
|
||
"obtain": "Gagal memuat host",
|
||
"add": "Tambah host",
|
||
"update": "Perbarui host",
|
||
"delete": "Hapus host",
|
||
"badTag": "Tag tidak valid",
|
||
"badVlessRoute": "Masukkan satu angka antara 0 dan 65535"
|
||
}
|
||
}
|
||
},
|
||
"tgbot": {
|
||
"noIpRecord": "❗ Tidak ada Catatan IP!",
|
||
"keyboardClosed": "❌ Keyboard ditutup!",
|
||
"noResult": "❗ Tidak ada hasil!",
|
||
"noQuery": "❌ Kueri tidak ditemukan! Silakan gunakan perintah lagi!",
|
||
"wentWrong": "❌ Terjadi kesalahan!",
|
||
"noInbounds": "❗ Tidak ada inbound yang ditemukan!",
|
||
"unlimited": "♾ Tidak terbatas (Reset)",
|
||
"add": "Tambah",
|
||
"month": "Bulan",
|
||
"months": "Bulan",
|
||
"days": "Hari",
|
||
"hours": "Jam",
|
||
"minutes": "Menit",
|
||
"unknown": "Tidak diketahui",
|
||
"inbounds": "Inbound",
|
||
"clients": "Klien",
|
||
"offline": "🔴 Offline",
|
||
"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>",
|
||
"xrayNotRunning": "❗ Xray Core tidak berjalan.",
|
||
"startDesc": "Tampilkan menu utama",
|
||
"helpDesc": "Bantuan bot",
|
||
"statusDesc": "Periksa status bot",
|
||
"idDesc": "Tampilkan ID Telegram Anda",
|
||
"usageDesc": "Lihat pemakaian klien: /usage email",
|
||
"inboundDesc": "Cari inbound: /inbound nama (admin)",
|
||
"restartDesc": "Mulai ulang inti Xray (admin)",
|
||
"clearallDesc": "Reset trafik semua klien (admin)"
|
||
},
|
||
"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",
|
||
"report": "🕰 Laporan Terjadwal: {{ .RunTime }}\r\n",
|
||
"datetime": "⏰ Tanggal & Waktu: {{ .DateTime }}\r\n",
|
||
"hostname": "💻 Host: {{ .Hostname }}\r\n",
|
||
"version": "🚀 Versi L-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",
|
||
"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_email": "📧📥 Email diperbarui.",
|
||
"received_comment": "💬📥 Komentar diperbarui.",
|
||
"email_prompt": "📧 Email Default: {{ .ClientEmail }}\n\nMasukkan email Anda.",
|
||
"comment_prompt": "💬 Komentar Default: {{ .ClientComment }}\n\nMasukkan komentar Anda.",
|
||
"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.",
|
||
"eventErrorDetail": "Kesalahan: {{ .Error }}",
|
||
"eventDelayDetail": "Penundaan: {{ .Delay }}ms",
|
||
"eventNodeDown": "Node {{ .Name }} MATI",
|
||
"eventNodeUp": "Node {{ .Name }} AKTIF",
|
||
"eventLoginFallback": "Gagal masuk dari {{ .Source }}",
|
||
"memoryThreshold": "Penggunaan memori {{ .Percent }}% melebihi ambang batas {{ .Threshold }}%"
|
||
},
|
||
"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_email": "⚙️📧 Email",
|
||
"change_comment": "⚙️💬 Komentar",
|
||
"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"
|
||
}
|
||
}
|
||
}
|