{
  "common": {
    "search": "Cari...",
    "save": "Simpan",
    "saveChanges": "Simpan Perubahan",
    "cancel": "Batal",
    "delete": "Hapus",
    "edit": "Edit",
    "add": "Tambah",
    "create": "Buat",
    "update": "Perbarui",
    "close": "Tutup",
    "confirm": "Konfirmasi",
    "back": "Kembali",
    "next": "Selanjutnya",
    "previous": "Sebelumnya",
    "first": "Pertama",
    "prev": "Sblm",
    "last": "Terakhir",
    "loading": "Memuat...",
    "noData": "Tidak ada data",
    "actions": "Aksi",
    "status": "Status",
    "active": "Aktif",
    "inactive": "Nonaktif",
    "enabled": "Aktif",
    "disabled": "Nonaktif",
    "yes": "Ya",
    "no": "Tidak",
    "none": "Tidak ada",
    "on": "AKTIF",
    "off": "MATI",
    "unknown": "Tidak diketahui",
    "open": "Terbuka",
    "auto": "Otomatis",
    "docs": "Dokumentasi",
    "lan": "LAN",
    "wifi": "WiFi",
    "characters": "karakter",
    "all": "Semua",
    "filter": "Filter",
    "export": "Ekspor",
    "import": "Impor",
    "refresh": "Segarkan",
    "reboot": "Restart",
    "reset": "Reset",
    "submit": "Kirim",
    "view": "Lihat",
    "details": "Detail",
    "download": "Unduh",
    "upload": "Unggah",
    "print": "Cetak",
    "copy": "Salin",
    "copied": "Disalin!",
    "select": "Pilih",
    "selected": "Dipilih",
    "selectAll": "Pilih Semua",
    "deselectAll": "Batal Pilih Semua",
    "clearSelection": "Bersihkan Pilihan",
    "required": "Wajib",
    "optional": "Opsional",
    "name": "Nama",
    "username": "Username",
    "profile": "Profil",
    "email": "Email",
    "phone": "Telepon",
    "address": "Alamat",
    "description": "Deskripsi",
    "date": "Tanggal",
    "time": "Waktu",
    "amount": "Jumlah",
    "total": "Total",
    "price": "Harga",
    "quantity": "Kuantitas",
    "type": "Tipe",
    "category": "Kategori",
    "note": "Catatan",
    "notes": "Catatan",
    "toggleTheme": "Ubah Tema",
    "default": "Default",
    "success": "Berhasil",
    "failed": "Gagal",
    "action": "Aksi",
    "saveFailed": "Gagal menyimpan",
    "yesDelete": "Ya, Hapus",
    "yesUpdate": "Ya, Update",
    "yesReboot": "Ya, Reboot",
    "yesRefresh": "Ya, Refresh",
    "yesContinue": "Ya, Lanjutkan",
    "sending": "Mengirim...",
    "refreshing": "Memuat ulang...",
    "deleting": "Menghapus...",
    "processing": "Memproses...",
    "connecting": "Menghubungkan...",
    "disconnecting": "Memutuskan...",
    "allStatus": "Semua Status",
    "allTypes": "Semua Tipe",
    "allRouters": "Semua Router",
    "allProfiles": "Semua Profil",
    "allItems": "Semua Item",
    "selectItem": "Pilih Item",
    "selectRouter": "Pilih Router",
    "selectProfile": "Pilih Profil",
    "latitude": "Latitude",
    "longitude": "Longitude",
    "connectExecute": "Hubungkan & Jalankan",
    "rebootDevice": "Reboot Perangkat?",
    "rebootConfirm": "Perangkat akan di-restart. Koneksi akan terputus sementara.",
    "rebootSent": "Perintah reboot terkirim",
    "deleteDevice": "Hapus Perangkat?",
    "deleteDeviceConfirm": "Perangkat akan dihapus dari sistem.",
    "deviceDeleted": "Perangkat dihapus",
    "refreshParameters": "Refresh Parameters?",
    "refreshParametersConfirm": "Ini akan memperbarui semua parameter dari perangkat.",
    "refreshSent": "Perintah refresh terkirim",
    "taskDeleted": "Task dihapus",
    "deleteTask": "Hapus Task?",
    "deleteTaskConfirm": "Task akan dihapus dari queue",
    "retryTask": "Retry Task",
    "taskRetried": "Task akan di-retry",
    "copyFailed": "Gagal menyalin ke clipboard",
    "viewTasks": "Lihat Tasks",
    "failedLoadData": "Gagal memuat data",
    "failedToUpdate": "Gagal memperbarui",
    "failedToSave": "Gagal menyimpan",
    "deletePaymentConfirm": "Yakin ingin menghapus data pembayaran ini?",
    "savingSettings": "Menyimpan pengaturan...",
    "settingsSaved": "Pengaturan tersimpan!",
    "addSchedule": "Tambah Jadwal",
    "clear": "Hapus",
    "error": "Terjadi kesalahan",
    "to": "ke",
    "page": "Halaman",
    "of": "dari",
    "templateUpdated": "Template berhasil diupdate!",
    "failedUpdateTemplate": "Gagal update template",
    "failedDelete": "Gagal menghapus",
    "failedSave": "Gagal menyimpan",
    "failedActivate": "Gagal mengaktifkan",
    "failedSendBroadcast": "Gagal mengirim broadcast",
    "reactivateConfirm": "Aktifkan kembali pelanggan ini?",
    "customerReactivated": "Pelanggan diaktifkan kembali",
    "selectCustomersToDelete": "Pilih pelanggan yang akan dihapus",
    "deleteCustomersConfirm": "Hapus {count} pelanggan yang dipilih? Data tidak bisa dikembalikan.",
    "deleteConfirmPermanent": "Hapus pelanggan ini secara permanen? Data invoice akan ikut terhapus.",
    "customerDeleted": "Pelanggan dihapus",
    "areaUpdated": "Area berhasil diperbarui!",
    "areaCreated": "Area berhasil dibuat!",
    "areaDeleted": "Area berhasil dihapus!",
    "failedSaveArea": "Gagal menyimpan area",
    "failedDeleteArea": "Gagal menghapus area",
    "deleteAreaConfirm": "Hapus area ini? Pastikan tidak ada pelanggan di area ini.",
    "registrationDeleted": "Pendaftaran berhasil dihapus",
    "failedDeleteRegistration": "Gagal menghapus pendaftaran",
    "failedLoadPayments": "Gagal memuat data pembayaran",
    "gpsSuccess": "Lokasi GPS berhasil didapatkan!",
    "gpsPermissionDenied": "Izin GPS ditolak. Mohon aktifkan izin lokasi di browser.",
    "gpsNotAvailable": "Lokasi tidak tersedia. Pastikan GPS aktif.",
    "gpsTimeout": "Waktu habis mendapatkan lokasi. Coba lagi.",
    "gpsFailedGet": "Gagal mendapatkan lokasi GPS",
    "gpsNotAvailableInBrowser": "GPS tidak tersedia di browser ini",
    "failedSaveOdp": "Gagal menyimpan ODP",
    "odpDeleted": "ODP dihapus!",
    "failedDeleteOdp": "Gagal menghapus ODP",
    "failedSaveOlt": "Gagal menyimpan OLT",
    "oltDeleted": "OLT dihapus!",
    "failedDeleteOlt": "Gagal menghapus OLT",
    "fillAllRequiredFields": "Mohon isi semua field yang wajib",
    "failedSaveAssignment": "Gagal menyimpan penugasan",
    "assignmentRemoved": "Penugasan dihapus!",
    "failedRemoveAssignment": "Gagal menghapus penugasan",
    "failedSaveOdc": "Gagal menyimpan ODC",
    "odcDeleted": "ODC dihapus!",
    "failedDeleteOdc": "Gagal menghapus ODC",
    "noTransactionsToExport": "Tidak ada transaksi untuk diekspor",
    "csvDownloaded": "File CSV berhasil diunduh",
    "restartRadius": "Restart RADIUS?",
    "restartRadiusWarning": "Ini akan memutuskan sementara semua sesi aktif.",
    "billingSystem": "Sistem Billing",
    "redirectingToLogin": "Mengalihkan ke halaman login...",
    "sessionTimeout": "Sesi Waktu Habis",
    "securityProtocolActive": "Protokol Keamanan Aktif",
    "autoLogoutInactivity": "Logout otomatis karena tidak ada aktivitas.",
    "stayActive": "Tetap Aktif",
    "history": "Riwayat",
    "seconds": "detik",
    "creating": "Membuat...",
    "testing": "Menguji...",
    "settingUp": "Menyiapkan...",
    "copyScript": "Salin Script",
    "copySuccess": "Berhasil disalin",
    "notConfigured": "Belum Dikonfigurasi",
    "configured": "Terkonfigurasi",
    "totalClients": "Total Klien",
    "activeClients": "Klien Aktif",
    "totalServers": "Total Server",
    "totalRouters": "Total Router",
    "onlineRouters": "Router Online",
    "viaVpn": "Via VPN",
    "addFirst": "Tambahkan Pertama",
    "test": "Tes",
    "saving": "Menyimpan...",
    "area": "Area",
    "failedToCopy": "Gagal menyalin",
    "model": "Model",
    "uptime": "Uptime",
    "online": "Online",
    "offline": "Offline",
    "manageCpe": "Kelola perangkat CPE via TR-069",
    "uploadSuccess": "Upload Berhasil",
    "uploadFailed": "Upload Gagal",
    "uploading": "Uploading...",
    "uploadProofSuccess": "Bukti transfer berhasil diupload",
    "uploadProofFailed": "Gagal upload bukti transfer",
    "submitSuccess": "Berhasil diajukan",
    "submitFailed": "Gagal Submit",
    "paymentSuccess": "Pembayaran Berhasil!",
    "paymentFailed": "Pembayaran Gagal",
    "paymentSubmitted": "Pembayaran berhasil diajukan",
    "paymentPending": "Pembayaran Tertunda",
    "proofUploaded": "Bukti berhasil diupload",
    "noPaymentMethods": "Tidak ada metode pembayaran tersedia",
    "noBankAccounts": "Tidak ada rekening tujuan tersedia",
    "additionalNotes": "Catatan tambahan (jika ada)",
    "notesOptional": "Tambahkan catatan jika diperlukan",
    "pleaseWait": "Mohon tunggu",
    "loadingData": "Memuat data...",
    "noTasksAvailable": "Tidak ada tugas yang perlu dikerjakan saat ini",
    "noPackagesAvailable": "Belum ada paket tersedia",
    "registrationSuccess": "Pendaftaran Berhasil!",
    "registrationSubmitted": "Pendaftaran berhasil dikirim!\n\nTim kami akan menghubungi Anda segera",
    "registrationFailed": "Gagal mengirim pendaftaran",
    "gpsLocationSaved": "Lokasi GPS Tersimpan",
    "autoRedirectAfterPayment": "Halaman akan otomatis redirect setelah pembayaran berhasil",
    "serviceActivatedAutoAfterPayment": "Setelah pembayaran berhasil, layanan akan aktif otomatis dalam 5-10 menit",
    "pageAutoUpdateAfterPayment": "Halaman ini akan diperbarui otomatis setelah pembayaran berhasil",
    "failedToLoad": "Gagal memuat",
    "failedToLoadInvoice": "Gagal memuat invoice",
    "failedToLoadData": "Gagal memuat data",
    "failedToSend": "Gagal mengirim",
    "failedToSendOtp": "Gagal mengirim OTP",
    "failedToProcess": "Gagal memproses",
    "failedToCreateOrder": "Gagal membuat pesanan",
    "failedToCreateInvoice": "Gagal membuat invoice",
    "loginFailed": "Login gagal",
    "checkingStatus": "Mengecek status...",
    "checkStatusFailed": "Gagal mengecek status",
    "otpServiceUnavailable": "Layanan WhatsApp mungkin sedang tidak tersedia",
    "created": "Berhasil dibuat",
    "updated": "Berhasil diperbarui",
    "allOdc": "Semua ODC",
    "allOlt": "Semua OLT",
    "attention": "Perhatian",
    "autoGPS": "GPS Otomatis",
    "confirmReset": "Konfirmasi Reset",
    "customer": "Pelanggan",
    "customerCable": "Kabel Pelanggan",
    "deleteConfirm": "Apakah Anda yakin ingin menghapus data ini?",
    "deleteError": "Gagal menghapus data",
    "deleted": "Berhasil dihapus",
    "gpsFailed": "Gagal mendapatkan lokasi GPS",
    "importError": "Gagal mengimpor data",
    "invalidAmount": "Jumlah tidak valid",
    "invoice": "Invoice",
    "loadError": "Gagal memuat data",
    "loadingMap": "Memuat peta...",
    "location": "Lokasi",
    "mainCable": "Kabel Utama",
    "maintenance": "Pemeliharaan",
    "month": "Bulan",
    "myLocation": "Lokasi Saya",
    "networkVisualization": "Visualisasi Jaringan",
    "noResults": "Tidak ada hasil ditemukan",
    "openMap": "Buka Peta",
    "pickOnMap": "Pilih di Peta",
    "saveError": "Gagal menyimpan data",
    "yourLocation": "Lokasi Anda",
    "damaged": "Rusak"
  },
  "auth": {
    "login": "Masuk",
    "logout": "Keluar",
    "signIn": "Masuk",
    "signOut": "Keluar",
    "signUp": "Daftar",
    "register": "Daftar",
    "username": "Username",
    "password": "Kata Sandi",
    "confirmPassword": "Konfirmasi Kata Sandi",
    "forgotPassword": "Lupa Kata Sandi?",
    "resetPassword": "Reset Kata Sandi",
    "rememberMe": "Ingat Saya",
    "signedInAs": "Masuk sebagai",
    "welcomeBack": "Selamat Datang Kembali",
    "loginToAccount": "Masuk ke akun Anda",
    "adminControlPanel": "Admin Control Panel",
    "sessionExpired": "Sesi berakhir",
    "sessionExpiredDesc": "Anda telah logout otomatis karena tidak ada aktivitas selama 30 menit.",
    "enterUsername": "Masukkan username Anda",
    "enterPassword": "Masukkan password Anda",
    "signingIn": "Masuk...",
    "loginFailed": "Login gagal"
  },
  "nav": {
    "catOverview": "Overview",
    "catNotifikasi": "Notifikasi",
    "catCustomer": "Pelanggan",
    "catCustomerAgent": "Pelanggan & Layanan",
    "catCustomerOther": "Pelanggan Lainnya",
    "catBillingTransactions": "Keuangan",
    "catNetwork": "Jaringan",
    "catInfrastruktur": "Infrastruktur",
    "catManagement": "Manajemen",
    "dashboard": "Dashboard",
    "communication": "Komunikasi",
    "notifications": "Notifikasi",
    "pushNotifications": "Push Notifikasi",
    "pppoe": "PPPoE",
    "users": "Data Pelanggan",
    "pppoeCustomers": "Data Pelanggan",
    "profiles": "Paket Layanan",
    "profile": "Paket Hotspot",
    "areas": "Area",
    "manageAreas": "Kelola Area",
    "stopSubscription": "Berhenti Langganan",
    "registrations": "Pendaftaran Online",
    "hotspot": "Hotspot",
    "voucher": "Voucher",
    "rekapVoucher": "Rekap Voucher",
    "template": "Template Voucher",
    "agent": "Agen",
    "evoucher": "E-Voucher",
    "invoices": "Tagihan",
    "agentDeposits": "Deposit Agen",
    "payment": "Pembayaran",
    "paymentGateway": "Payment Gateway",
    "manualPayments": "Pembayaran Manual",
    "bankAccounts": "Rekening Bank",
    "keuangan": "Keuangan",
    "transaksi": "Riwayat Transaksi",
    "finance": "Keuangan",
    "sessions": "Monitoring",
    "allSessions": "Semua Sesi",
    "pppoeSessions": "PPPoE Online",
    "hotspotSessions": "Hotspot Aktif",
    "whatsapp": "WhatsApp",
    "providers": "Penyedia",
    "templates": "Template",
    "settings": "Pengaturan",
    "settingsMenu": "Pengaturan",
    "history": "Riwayat",
    "send": "Kirim",
    "network": "Jaringan",
    "networkMap": "Peta Jaringan",
    "router": "Router",
    "routers": "Router / NAS",
    "routerNas": "Router / NAS",
    "vpnServer": "VPN Server",
    "vpnClient": "VPN Client",
    "olt": "OLT",
    "odc": "ODC",
    "odp": "ODP",
    "odpCustomer": "Pelanggan ODP",
    "otb": "OTB",
    "fiberManagement": "Manajemen Fiber",
    "fiberCables": "Kabel Fiber",
    "fiberCores": "Core Fiber",
    "splicePoints": "Titik Splice",
    "opticalPower": "Daya Optik",
    "networkTrace": "Network Trace",
    "splitterDiagrams": "Diagram Splitter",
    "unifiedMap": "Peta Terpadu",
    "infrastructure": "Infrastruktur",
    "topology": "Topologi",
    "jointClosures": "Joint Closure",
    "nodeSummary": "Ringkasan Node",
    "networkNodes": "Node Jaringan",
    "fiberPaths": "Jalur Fiber",
    "genieacs": "GenieACS",
    "systemUpdate": "Update Sistem",
    "cloudflare_tunnel": "Cloudflare Tunnel",
    "downloadApk": "Download Aplikasi Android",
    "devices": "Perangkat",
    "tasks": "Tugas",
    "virtualParameters": "Parameter Virtual",
    "parameterConfig": "Konfigurasi Parameter",
    "oltManagement": "OLT Management",
    "oltAndOnu": "OLT & ONU",
    "onuList": "Daftar ONU",
    "oltTerminal": "OLT Terminal",
    "management": "Admin & Role",
    "company": "Perusahaan",
    "footerSettings": "Footer Login",
    "inventory": "Inventori",
    "inventoryItems": "Barang",
    "inventoryMovements": "Mutasi Stok",
    "inventoryCategories": "Kategori",
    "inventorySuppliers": "Supplier",
    "technician": "Akses Teknisi",
    "technicianLogin": "Login Teknisi",
    "manageTechnicians": "Kelola Teknisi",
    "tickets": "Tiket Bantuan",
    "allTickets": "Daftar Tiket",
    "ticketCategories": "Kategori Tiket",
    "isolation": "Isolasi",
    "isolatedUsers": "Pelanggan Isolir",
    "isolationSettings": "Pengaturan Isolasi",
    "isolationTemplates": "Template Notif Isolasi",
    "referral": "Referral",
    "referralList": "Daftar Referral",
    "referralSettings": "Pengaturan Referral",
    "mikrotikSetup": "Setup MikroTik",
    "email": "Email",
    "emailHistory": "Riwayat Email",
    "telegram": "Telegram Auto-Backup",
    "database": "Database",
    "cronJobs": "Cron Jobs",
    "freeradius": "FreeRADIUS",
    "radiusStatus": "Status & Uptime",
    "radiusConfig": "Konfigurasi",
    "radTest": "RadTest",
    "radCheck": "RadCheck",
    "radiusLogs": "Log Langsung",
    "radiusBackup": "Backup & Restore FreeRADIUS",
    "catReports": "Laporan",
    "laporan": "Laporan & Analitik",
    "laporanData": "Export Data",
    "laporanAnalitik": "Statistik & Grafik",
    "backToDashboard": "Kembali ke Dashboard"
  },
  "dashboard": {
    "title": "Dashboard",
    "subtitle": "Ringkasan sistem",
    "totalUsers": "Total Pengguna",
    "activeSessions": "Sesi Aktif",
    "pendingInvoices": "Tagihan Tertunda",
    "revenue": "Pendapatan",
    "recentActivities": "Aktivitas Terbaru",
    "noRecentActivities": "Tidak ada aktivitas terbaru",
    "networkOverview": "Ringkasan Jaringan",
    "systemStatus": "Status Sistem",
    "pppoeUsers": "Pengguna PPPoE",
    "hotspotVouchers": "Voucher Hotspot",
    "active": "aktif",
    "hotspotSessions": "Sesi Hotspot",
    "bandwidth": "Bandwidth",
    "allTimeUsage": "Penggunaan Total",
    "activeConnections": "Koneksi Aktif",
    "activeVouchers": "Voucher Aktif",
    "refreshAnalytics": "Segarkan Analitik",
    "monthlyRevenue": "Pendapatan Bulanan",
    "last12Months": "12 bulan terakhir",
    "last24Hours": "24 jam terakhir (per jam)",
    "revenueByCategory": "Pendapatan per Kategori",
    "thisMonth": "Bulan ini",
    "userByStatus": "User berdasarkan Status",
    "userGrowth": "Pertumbuhan Pengguna",
    "voucherSales": "Penjualan Voucher",
    "perProfile": "Per profile",
    "perProfileThisMonth": "Per profile (bulan ini)",
    "voucherStatus": "Status Voucher",
    "allVouchers": "Semua voucher",
    "sessionsLast24h": "24 jam terakhir",
    "bandwidthUsage": "Penggunaan Bandwidth",
    "last7Days": "7 hari terakhir",
    "last6Months": "6 bulan terakhir",
    "incomeVsExpense": "Pemasukan vs Pengeluaran",
    "topRevenueSources": "Sumber Pendapatan Teratas",
    "totalPppoeUsers": "Total Pelanggan PPPoE",
    "activePppoeSessions": "Sesi PPPoE Aktif",
    "activeHotspotSessions": "Sesi Hotspot Aktif",
    "unusedVouchers": "Voucher Belum Dipakai",
    "isolatedCustomers": "Pelanggan Diisolir",
    "suspendedCustomers": "Pelanggan Disuspend",
    "voucherRevenue": "Pendapatan Voucher",
    "invoiceRevenue": "Pendapatan Invoice",
    "customerStatus": "Status Pelanggan",
    "agentVoucherSales": "Penjualan Voucher Agen",
    "agentVoucherSalesSubtitle": "Agen Terbaik Bulan Ini",
    "agentName": "Nama Agen",
    "agentVouchersSold": "Voucher Terjual",
    "agentRevenue": "Pendapatan",
    "agentTotalSales": "Total Penjualan Agen",
    "agentTotalRevenue": "Total Pendapatan Agen",
    "noAgentSales": "Tidak ada penjualan agen bulan ini",
    "radiusAuthLog": "Log Autentikasi RADIUS",
    "radiusAuthLogSubtitle": "Login terbaru dari MikroTik",
    "loginSuccess": "Login Berhasil",
    "loginFailed": "Login Gagal",
    "todayAccepted": "Diterima Hari Ini",
    "todayRejected": "Ditolak Hari Ini",
    "noAuthLogs": "Belum ada log autentikasi",
    "activityLog": "Log Aktivitas",
    "activityCount": "{count} aktivitas",
    "activitySubtitle": "Log aktivitas",
    "noActivities": "Belum ada aktivitas",
    "loadMore": "Muat lebih banyak",
    "prevMonth": "Bulan sebelumnya",
    "nextMonth": "Bulan berikutnya",
    "systemHealthy": "Sistem Sehat",
    "allServicesRunning": "Semua layanan berjalan normal"
  },
  "pppoe": {
    "title": "Pengguna PPPoE",
    "subtitle": "Auto-sync ke FreeRADIUS",
    "addUser": "Tambah Pengguna",
    "editUser": "Edit Pengguna",
    "deleteUser": "Hapus Pengguna",
    "username": "Username",
    "password": "Password",
    "profile": "Profil",
    "router": "Router",
    "status": "Status",
    "expiredAt": "Tanggal Isolir",
    "ipAddress": "Alamat IP",
    "macAddress": "MAC Address",
    "fullName": "Nama Lengkap",
    "contact": "Kontak",
    "createdAt": "Dibuat",
    "lastLogin": "Login Terakhir",
    "active": "Aktif",
    "expired": "Kedaluwarsa",
    "suspended": "Ditangguhkan",
    "disabled": "Nonaktif",
    "online": "Online",
    "offline": "Offline",
    "disconnect": "Putuskan",
    "reconnect": "Hubungkan Ulang",
    "extendExpiry": "Perpanjang Masa Aktif",
    "changeProfile": "Ubah Profil",
    "viewActivity": "Lihat Aktivitas",
    "sessionHistory": "Riwayat Sesi",
    "accessDenied": "Akses Ditolak",
    "noPermission": "Anda tidak memiliki izin untuk melihat pengguna PPPoE",
    "usersList": "Daftar Pengguna",
    "selected": "terpilih",
    "isolir": "Isolir",
    "block": "Blokir",
    "stop": "Stop Langganan",
    "synced": "Tersinkron",
    "allProfiles": "Semua Profil",
    "allNas": "Semua NAS",
    "global": "Global",
    "noUsers": "Tidak ada pengguna ditemukan",
    "noMatch": "Tidak ada yang cocok",
    "gpsLocation": "Lokasi GPS",
    "openMap": "Peta",
    "autoGps": "Otomatis",
    "latitude": "Latitude",
    "longitude": "Longitude",
    "staticIp": "IP Statis",
    "expiryDate": "Tanggal Isolir",
    "importCsv": "Impor CSV",
    "selectFile": "Pilih file CSV",
    "template": "Template",
    "createUser": "Buat Pengguna",
    "createPppoe": "Buat pengguna PPPoE dengan auth RADIUS",
    "deleteConfirm": "Ini akan menghapus dari RADIUS dan tidak bisa dibatalkan.",
    "profilesTitle": "Paket PPPoE",
    "profilesSubtitle": "Manajemen paket internet untuk pelanggan PPPoE",
    "addProfile": "Tambah Paket PPPoE",
    "editProfile": "Edit Paket PPPoE",
    "deleteProfile": "Hapus Paket",
    "profilesList": "Daftar Paket PPPoE",
    "noProfiles": "Tidak ada paket ditemukan",
    "radiusGroup": "Group RADIUS",
    "matchMikrotik": "Harus sama dengan PPP profile MikroTik",
    "priceIdr": "Harga (IDR)",
    "validity": "Masa Berlaku",
    "downloadMbps": "Download (Mbps)",
    "uploadMbps": "Upload (Mbps)",
    "rateLimitRequired": "Rate Limit MikroTik wajib diisi",
    "profileUpdated": "Profil berhasil diperbarui!",
    "profileCreated": "Profil berhasil dibuat!",
    "profileDeleted": "Profil berhasil dihapus!",
    "deleteProfileConfirmMsg": "Hapus? Ini akan menghapus dari RADIUS.",
    "days": "Hari",
    "months": "Bulan",
    "createProfile": "Buat paket internet baru untuk pelanggan PPPoE",
    "updateConfig": "Perbarui data paket PPPoE",
    "pending": "Tertunda",
    "deleteProfileConfirm": "Ini akan menghapus dari RADIUS dan tidak bisa dibatalkan.",
    "registrations": "Pendaftaran",
    "registrationsTitle": "Permintaan Pendaftaran",
    "registrationsSubtitle": "Kelola pendaftaran pelanggan",
    "approved": "Disetujui",
    "installed": "Terinstal",
    "rejected": "Ditolak",
    "allStatus": "Semua Status",
    "searchNamePhone": "Cari nama, telepon...",
    "filters": "Filter",
    "pppoeUser": "Pengguna PPPoE",
    "invoice": "Invoice",
    "actions": "Aksi",
    "noRegistrations": "Tidak ada pendaftaran ditemukan",
    "awaiting": "Menunggu",
    "waitPayment": "Tunggu pembayaran",
    "approve": "Setujui",
    "reject": "Tolak",
    "markInstalled": "Tandai Terinstal",
    "approveRegistration": "Setujui Pendaftaran",
    "setInstallFee": "Tentukan biaya instalasi dan buat pengguna PPPoE",
    "installationFee": "Biaya Instalasi (Rp)",
    "approving": "Menyetujui...",
    "failedApprove": "Gagal menyetujui",
    "failedReject": "Gagal menolak",
    "installedWithInvoice": "Terinstal! Invoice: {invoice}",
    "failedMarkInstalled": "Gagal menandai sebagai terinstal",
    "updateConfirmUsers": "Update {count} user ke {status}?",
    "usersUpdated": "{count} user diperbarui",
    "deleteConfirmUsers": "Hapus {count} user?",
    "usersDeleted": "{count} user dihapus!",
    "selectUserFirst": "Silakan pilih user terlebih dahulu",
    "fillOutageInfo": "Mohon isi informasi perbaikan selesai",
    "fillAllOutageFields": "Mohon lengkapi semua field untuk gangguan",
    "sendOutageConfirm": "Kirim notifikasi gangguan ke {count} user melalui {method}?",
    "sendInvoiceConfirm": "Kirim invoice ke {count} user melalui {method}?",
    "sendPaymentProofConfirm": "Kirim bukti pembayaran ke {count} user melalui {method}?",
    "exportFailed": "Gagal export",
    "downloadTemplateFailed": "Gagal download template",
    "pdfExportFailed": "Gagal export PDF",
    "selectRouterFirst": "Pilih router terlebih dahulu",
    "selectRouterProfileUser": "Pilih router, profile, dan minimal 1 user",
    "selectFileAndProfile": "Pilih file dan profile",
    "importFailed": "Gagal import",
    "gpsFailed": "GPS gagal",
    "rejectRegistration": "Tolak Pendaftaran",
    "provideReason": "Berikan alasan penolakan",
    "rejectionReason": "Alasan Penolakan",
    "rejecting": "Menolak...",
    "areasTitle": "Area Langganan",
    "areasSubtitle": "Kelola area/wilayah pelanggan untuk memudahkan filter dan pengelompokan",
    "addArea": "Tambah Area",
    "editArea": "Edit Area",
    "deleteArea": "Hapus Area",
    "areaName": "Nama Area",
    "totalArea": "Total Area",
    "activeArea": "Area Aktif",
    "totalCustomers": "Total Pelanggan",
    "searchArea": "Cari area...",
    "areaList": "Daftar Area",
    "noArea": "Belum ada area",
    "noMatchArea": "Tidak ada area yang cocok",
    "showing": "Menampilkan",
    "of": "dari",
    "area": "area",
    "areaActive": "Area aktif",
    "createArea": "Buat area baru untuk pelanggan",
    "updateArea": "Perbarui informasi area",
    "areaExample": "Contoh: RT 01, Perumahan A, dll",
    "descriptionOptional": "Deskripsi area (opsional)",
    "deleteAreaConfirm": "Apakah Anda yakin ingin menghapus area ini? Area hanya dapat dihapus jika tidak ada pelanggan di dalamnya.",
    "stoppedSubscriptions": "Pelanggan Stop Berlangganan",
    "stoppedSubscriptionsDesc": "Kelola data pelanggan yang berhenti berlangganan",
    "totalData": "TOTAL DATA",
    "export": "EXPORT",
    "delete": "HAPUS",
    "stoppedInfo1": "Data yang sudah masuk ke tabel berhenti berlangganan bisa di aktifkan kembali",
    "stoppedInfo2": "Fitur ini berfungsi untuk menonaktifkan layanan tetapi invoice tetap utuh, karena apabila data berlangganan dihapus maka invoice akan terhapus",
    "show": "Show",
    "entries": "entries",
    "serviceNo": "No Layanan",
    "phoneNumber": "Telepon",
    "registrationDate": "Tgl Daftar",
    "stopDate": "Tgl Stop",
    "note": "Note",
    "loadingData": "Memuat data...",
    "noStoppedCustomers": "Tidak ada data pelanggan yang berhenti",
    "noMatchingData": "Tidak ada data yang cocok",
    "reactivate": "Aktifkan Kembali",
    "permanentDelete": "Hapus Permanen",
    "confirmPayment": "Konfirmasi Pembayaran",
    "markAllInvoicesPaid": "Tandai semua tagihan belum lunas milik {name} sebagai lunas?",
    "invoicesMarkedPaid": "{count} tagihan senilai Rp {amount} telah ditandai lunas",
    "failedMarkPaid": "Gagal menandai tagihan sebagai lunas",
    "extendValidity": "Perpanjang Masa Aktif",
    "validityExtended": "Masa aktif diperpanjang {period}",
    "profileChanged": " (paket diubah)",
    "paymentRecorded": "Pembayaran Rp {amount} tercatat di keuangan",
    "failedExtendValidity": "Gagal memperpanjang masa aktif",
    "failedSend": "Gagal mengirim",
    "failedFetchMikrotik": "Gagal mengambil data dari MikroTik",
    "failedConnectMikrotik": "Gagal terhubung ke MikroTik",
    "failedImportUsers": "Gagal import users",
    "topUpAmount": "Jumlah top-up harus lebih dari 0",
    "confirmTopUp": "Konfirmasi Top-Up",
    "topUpConfirmMsg": "Top-up saldo sebesar Rp {amount} untuk {name}?",
    "yesTopUp": "Ya, Top-Up",
    "topUpSuccess": "Top-Up Berhasil",
    "topUpSuccessMsg": "Saldo berhasil ditambah Rp {amount}. Saldo baru: Rp {newBalance}",
    "failedTopUp": "Gagal top-up saldo",
    "confirmAutoRenewal": "Konfirmasi Auto-Renewal",
    "autoRenewalConfirmMsg": "Apakah Anda yakin ingin {action} auto-renewal untuk {name}?",
    "enableAction": "mengaktifkan",
    "disableAction": "menonaktifkan",
    "yesEnable": "Ya, Aktifkan",
    "yesDisable": "Ya, Nonaktifkan",
    "failedChangeAutoRenewal": "Gagal mengubah status auto-renewal",
    "autoRenewalEnabled": "Auto-renewal berhasil diaktifkan",
    "autoRenewalDisabled": "Auto-renewal berhasil dinonaktifkan",
    "failedLoadBalance": "Gagal memuat data saldo",
    "registrationsThisMonth": "Pendaftaran Bulan Ini",
    "renewalsThisMonth": "Perpanjangan Bulan Ini",
    "isolatedExpired": "Isolir/Expired",
    "blockedUsers": "Pengguna Diblokir",
    "syncMikrotik": "Sync MikroTik",
    "templateExcel": "Template Excel",
    "balanceManagement": "Kelola Saldo",
    "backToUserList": "Kembali ke Daftar User",
    "currentBalance": "Saldo Saat Ini",
    "packagePrice": "Harga paket",
    "balanceNotEnough": "Saldo tidak cukup untuk renewal berikutnya",
    "totalTopUp": "Total Top-Up",
    "allDeposits": "Semua deposit masuk",
    "totalUsed": "Total Terpakai",
    "autoRenewalPayments": "Pembayaran auto-renewal",
    "autoRenewalActiveDesc": "Perpanjangan otomatis AKTIF. Saldo akan digunakan untuk perpanjangan 3 hari sebelum expired.",
    "autoRenewalInactiveDesc": "Perpanjangan otomatis NONAKTIF. Invoice harus dibayar manual.",
    "topUpBalance": "Top-Up Saldo",
    "transactionHistory": "Riwayat Transaksi",
    "totalTransactions": "Total {count} transaksi",
    "exportCsv": "Export CSV",
    "date": "Tanggal",
    "type": "Tipe",
    "description": "Deskripsi",
    "method": "Metode",
    "amount": "Jumlah",
    "noTransactions": "Belum ada transaksi",
    "addBalanceFor": "Tambah saldo untuk {name}",
    "addBalance": "Tambah saldo",
    "topUpAmountLabel": "Jumlah Top-Up (Rp)",
    "minAmount": "Minimal Rp 1.000",
    "paymentMethod": "Metode Pembayaran",
    "cash": "Cash / Tunai",
    "bankTransfer": "Transfer Bank",
    "noteOptional": "Catatan (Opsional)",
    "additionalNote": "Catatan tambahan...",
    "balanceInfo": "Saldo akan langsung ditambahkan dan dapat digunakan untuk auto-renewal.",
    "processing": "Memproses...",
    "userNotFound": "User tidak ditemukan",
    "customerId": "ID Pelanggan",
    "balance": "Saldo",
    "registeredDate": "Tgl. Daftar",
    "renewedDate": "Tgl. Perpanjang",
    "manageBalance": "Kelola Saldo",
    "markPaid": "Lunas",
    "subscriptionType": "Tipe Berlangganan",
    "monthlyBillingDesc": "Tagihan tetap setiap bulan pada tanggal yang ditentukan",
    "prepaidValidityDesc": "Masa aktif sesuai validity paket, bayar di awal",
    "postpaid": "Postpaid",
    "prepaid": "Prepaid",
    "fixedDueDate": "Jatuh tempo tetap",
    "followsPayment": "Ikuti pembayaran",
    "billingDate": "Tanggal Tagihan",
    "dayOf": "Tanggal",
    "sendNotification": "Kirim Notifikasi",
    "outageNotification": "Notifikasi Gangguan",
    "sendInvoice": "Kirim Tagihan",
    "paymentReceipt": "Bukti Pembayaran",
    "extendManual": "Perpanjang Manual",
    "targetProfile": "Profile Tujuan",
    "selectProfile": "-- Pilih Profile --",
    "previewSecrets": "Preview PPPoE Secrets",
    "fetchingFromMikrotik": "Mengambil data dari MikroTik...",
    "selectAllNew": "Pilih Semua Baru",
    "deselectAll": "Batal Pilih",
    "new": "Baru",
    "existing": "Sudah Ada",
    "usersSelectedToImport": "user dipilih untuk diimport",
    "importing": "Importing...",
    "importUsers": "Import User",
    "infoTitle": "Informasi:",
    "syncInfo1": "User yang sudah ada di database akan di-skip (tidak akan duplikat)",
    "syncInfo2": "User yang disabled di MikroTik tidak akan diimport",
    "syncInfo3": "Semua user yang diimport akan menggunakan Profile tujuan yang dipilih",
    "syncInfo4": "Password akan disalin dari MikroTik dan disync ke RADIUS",
    "syncInfo5": "Nama customer akan diambil dari comment jika ada, atau username jika tidak ada",
    "extendSubscription": "Perpanjang Langganan",
    "currentPackage": "Paket Saat Ini",
    "activeUntil": "Masa Aktif",
    "selectPackage": "Pilih Paket",
    "currentPackageLabel": "(Paket saat ini)",
    "packageWillChange": "Paket berlangganan akan diubah",
    "extendSamePackage": "Perpanjang dengan paket yang sama",
    "extendPaymentInfo": "Pembayaran akan dicatat di halaman Keuangan sebagai pemasukan dengan kategori \"Pembayaran PPPoE\"",
    "extendNow": "Perpanjang",
    "broadcastNotification": "Kirim Notifikasi ke",
    "broadcastDesc": "Kirim notifikasi broadcast melalui WhatsApp atau Email",
    "outageInProgress": "Sedang dalam perbaikan",
    "outageResolved": "Perbaikan selesai",
    "issueType": "Jenis Gangguan",
    "issueTypePlaceholder": "Contoh: Gangguan Jaringan, Maintenance Terjadwal",
    "issueDescription": "Deskripsi Gangguan",
    "issueDescPlaceholder": "Jelaskan detail gangguan yang terjadi...",
    "estimatedTime": "Estimasi Waktu Pemulihan",
    "estimatedTimePlaceholder": "Contoh: 2 jam, 16 Desember 2025 pukul 15:00 WIB",
    "affectedArea": "Area Terdampak",
    "affectedAreaPlaceholder": "Contoh: Seluruh Jaringan, Area Jakarta Selatan, Cluster A",
    "repairCompletedAt": "Waktu Perbaikan Selesai",
    "sendVia": "Kirim Notifikasi Melalui",
    "sending": "Mengirim...",
    "sendNotificationBtn": "Kirim Notifikasi",
    "sendInvoiceBtn": "Kirim Invoice",
    "sendPaymentReceipt": "Kirim Bukti Pembayaran",
    "whatsappOnly": "WhatsApp saja",
    "emailOnly": "Email saja",
    "whatsappAndEmail": "WhatsApp & Email",
    "repairCompletedInfo": "Notifikasi perbaikan selesai akan dikirim ke {count} user. Beri tahu pelanggan bahwa layanan sudah kembali normal.",
    "information": "Informasi",
    "repairInfoPlaceholder": "Contoh: Perbaikan telah selesai dilakukan. Jaringan sudah kembali normal dan stabil. Terima kasih atas kesabarannya.",
    "invoiceInfo": "Invoice akan dikirim ke {count} user yang dipilih. Sistem akan otomatis generate invoice untuk user yang belum memiliki invoice bulan ini.",
    "additionalMessage": "Pesan Tambahan (Opsional)",
    "additionalInvoicePlaceholder": "Tambahkan pesan khusus untuk invoice ini...",
    "paymentReceiptInfo": "Bukti pembayaran akan dikirim ke {count} user yang dipilih. Pastikan user sudah melakukan pembayaran invoice bulan ini.",
    "additionalThankYouPlaceholder": "Tambahkan ucapan terima kasih atau informasi lainnya...",
    "balanceLabel": "Saldo",
    "csvExcelFormat": "Format CSV/Excel",
    "customer": "Pelanggan PPPoE",
    "deleteRegistrationConfirm": "Hapus pendaftaran ini?",
    "disabledLabel": "Nonaktif",
    "groupLabel": "Grup",
    "leaveEmptyForAuto": "Kosongkan untuk otomatis",
    "monthlyDueDateLabel": "Tanggal Jatuh Tempo Bulanan",
    "nasLabel": "NAS",
    "packageFee": "Biaya Paket",
    "selectRouter": "Pilih Router",
    "statusLabel": "Status",
    "syncPppoeDesc": "Sinkronisasi data PPPoE dari MikroTik ke sistem",
    "syncPppoeTitle": "Sinkronisasi PPPoE",
    "totalBilling": "Total Tagihan",
    "uploadCsvOrExcel": "Upload CSV atau Excel"
  },
  "hotspot": {
    "title": "Voucher Hotspot",
    "generateVoucher": "Generate Voucher",
    "bulkGenerate": "Generate Massal",
    "printVoucher": "Cetak Voucher",
    "code": "Kode",
    "password": "Password",
    "profile": "Profil",
    "status": "Status",
    "usedBy": "Digunakan Oleh",
    "validUntil": "Berlaku Sampai",
    "createdBy": "Dibuat Oleh",
    "waiting": "Menunggu",
    "active": "Aktif",
    "expired": "Kedaluwarsa",
    "used": "Terpakai",
    "unused": "Belum Terpakai",
    "quota": "Kuota",
    "duration": "Durasi",
    "speed": "Kecepatan",
    "price": "Harga",
    "uploadSpeed": "Kecepatan Upload",
    "downloadSpeed": "Kecepatan Download",
    "sessionTimeout": "Batas Waktu Sesi",
    "idleTimeout": "Batas Waktu Idle",
    "profiles": "Profil Hotspot",
    "profilesSubtitle": "Kelola profil voucher & harga",
    "addProfile": "Tambah Profil",
    "editProfile": "Edit Profil",
    "deleteProfile": "Hapus Profil",
    "avgPrice": "Harga Rata-rata",
    "validity": "Masa Berlaku",
    "costPrice": "Harga Modal",
    "resellerFee": "Fee Reseller",
    "sellingPrice": "Harga Jual",
    "sharedUsers": "Shared Users",
    "groupProfile": "Group Profile",
    "accessSettings": "Pengaturan Akses",
    "agentAccess": "Akses Agen",
    "evoucherAccess": "Akses E-Voucher",
    "noProfiles": "Belum ada profil. Tambah yang pertama!",
    "confirmDeleteProfile": "Yakin? Aksi ini tidak bisa dibatalkan.",
    "vouchersGenerated": "{count} voucher berhasil dibuat",
    "batchPrefix": "Batch: {batch}",
    "deleteUnusedFromBatch": "Hapus voucher belum terpakai dari {batch}?",
    "countDeleted": "{count} dihapus",
    "deleteCode": "Hapus {code}?",
    "selectVouchersFirst": "Pilih voucher terlebih dahulu",
    "selectVouchers": "Pilih voucher",
    "deleteVouchersConfirm": "Hapus {count} voucher?",
    "enterPhone": "Masukkan nomor telepon",
    "sent": "Terkirim!",
    "filterByBatchFirst": "Filter berdasarkan batch terlebih dahulu",
    "selectTemplate": "Pilih template",
    "noVouchersToExport": "Tidak ada voucher untuk di-export",
    "exportFailed": "Gagal export",
    "pdfExportFailed": "Gagal export PDF",
    "templateTitle": "Template Voucher",
    "templateSubtitle": "Kelola template cetak voucher",
    "addTemplate": "Tambah Template",
    "editTemplate": "Edit Template",
    "templateName": "Nama Template",
    "htmlTemplate": "Template HTML",
    "setDefault": "Jadikan Default",
    "previewTemplate": "Preview",
    "noTemplates": "Belum ada template. Buat yang pertama!",
    "configureTemplate": "Konfigurasi template cetak voucher",
    "failedSaveTemplate": "Gagal menyimpan template",
    "templateDeleted": "Template dihapus",
    "failedDeleteTemplate": "Gagal menghapus template",
    "minutes": "Menit",
    "hours": "Jam",
    "days": "Hari",
    "months": "Bulan",
    "rekapVoucherTitle": "Rekap Voucher",
    "rekapVoucherSubtitle": "Rekap voucher per batch dengan informasi agen, qty, stok, dan terjual",
    "allAgents": "Semua Agen",
    "allProfiles": "Semua Profile",
    "searchBatchAgentProfile": "Cari (Kode Batch, Agen, Profile)",
    "typeToSearch": "Ketik untuk mencari...",
    "totalQty": "Total Qty",
    "stock": "Stok",
    "sold": "Terjual",
    "batchCode": "Kode Batch",
    "creationDate": "Tgl Pembuatan",
    "partnerAgent": "Mitra/Agen",
    "qty": "Qty",
    "noRekapData": "Tidak ada data rekap voucher",
    "admin": "Admin",
    "notes": "Keterangan",
    "qtyDesc": "Total voucher yang dibuat dalam batch tersebut",
    "stockDesc": "Voucher yang masih tersedia (status WAITING)",
    "soldDesc": "Voucher yang sudah terpakai (status ACTIVE atau EXPIRED)",
    "activePeriod": "Periode Aktif",
    "agentBalanceConfirm": "Konfirmasi sesuaikan saldo agent ini?",
    "allRoutersGlobal": "Semua Router (Global)",
    "alphaNum": "Alfanumerik",
    "assignmentOptions": "Opsi Penugasan",
    "batch": "Batch",
    "cancelOrderConfirm": "Yakin ingin membatalkan pesanan ini?",
    "changeAgentStatus": "Ubah Status Agent",
    "codeConfiguration": "Konfigurasi Kode",
    "csvFile": "File CSV",
    "dataQuotaLabel": "Kuota Data",
    "deleteAgentConfirm": "Hapus agent ini? Semua data terkait akan ikut terhapus.",
    "deleteAgentsBtn": "Hapus Agent Terpilih",
    "deleteAgentsConfirm": "Hapus semua agent yang dipilih? Tindakan ini tidak dapat dibatalkan.",
    "deleteMultipleAgents": "Hapus Beberapa Agent",
    "failedDeleteProfile": "Gagal menghapus profil",
    "failedPrefix": "Gagal",
    "failedSaveProfile": "Gagal menyimpan profil",
    "first": "Pertama",
    "firstLogin": "Login Pertama",
    "generated": "Dibuat",
    "items": "item",
    "last": "Terakhir",
    "lastLoginLabel": "Login Terakhir",
    "lengthLabel": "Panjang Kode",
    "lockMacAddress": "Kunci MAC Address",
    "lockMacDesc": "Voucher hanya bisa digunakan dari satu perangkat (MAC address pertama yang login)",
    "lowercase": "Huruf Kecil",
    "maxPerBatch": "Maks per Batch",
    "next": "Selanjutnya",
    "noAgent": "Tidak ada agent",
    "notLoggedIn": "Belum Login",
    "numeric": "Numerik",
    "perPage": "per halaman",
    "prefixOptional": "Prefix (opsional)",
    "previous": "Sebelumnya",
    "profileDeletedSuccess": "Profil berhasil dihapus",
    "profileSavedSuccess": "Profil berhasil disimpan",
    "rateLimitMikrotik": "Rate Limit MikroTik",
    "resendVouchersConfirm": "Kirim ulang voucher yang dipilih ke WhatsApp?",
    "setStatusForAgents": "Atur status untuk agent terpilih",
    "showing": "Menampilkan",
    "stockLabel": "Stok Voucher",
    "totalValue": "Total Nilai",
    "updateStatus": "Perbarui Status",
    "uppercase": "Huruf Besar",
    "usageDurationLabel": "Durasi Penggunaan",
    "userPassDiff": "Username & Password Berbeda",
    "userPassSame": "Username = Password",
    "voucherLabel": "Voucher"
  },
  "agent": {
    "title": "Manajemen Agen",
    "subtitle": "Kelola agen & lacak penjualan",
    "addAgent": "Tambah Agen",
    "editAgent": "Edit Agen",
    "deleteAgent": "Hapus Agen",
    "deleteConfirm": "Ini akan menghapus agen dan semua riwayat penjualan.",
    "agentName": "Nama Agen",
    "balance": "Saldo",
    "minBalance": "Saldo Minimum",
    "adjustBalance": "Sesuaikan Saldo",
    "currentBalance": "Saldo Saat Ini",
    "newBalance": "Saldo Baru",
    "addBalance": "Tambah",
    "subtractBalance": "Kurangi",
    "router": "Router",
    "noRouter": "-- Tidak Ada Router --",
    "notAssigned": "Belum ditugaskan",
    "salesHistory": "Riwayat Penjualan",
    "totalSales": "Total Penjualan",
    "vouchers": "voucher",
    "allTime": "Sepanjang Waktu",
    "noAgentsFound": "Tidak ada agen ditemukan",
    "noHistory": "Belum ada riwayat",
    "failedSaveAgent": "Gagal menyimpan agen",
    "agentDeleted": "Agen dihapus!",
    "failedDeleteAgent": "Gagal menghapus agen",
    "agentsDeleted": "Agen dihapus!",
    "someDeletionsFailed": "Beberapa penghapusan gagal",
    "statusUpdated": "Status diperbarui!",
    "someUpdatesFailed": "Beberapa update gagal",
    "failedUpdateStatus": "Gagal mengupdate status",
    "enterAmount": "Masukkan jumlah",
    "balanceUpdated": "Saldo diperbarui!",
    "portal": {
      "title": "Portal Agen",
      "subtitle": "Login dengan nomor HP terdaftar",
      "welcome": "Selamat Datang",
      "dashboard": "Dashboard",
      "vouchers": "Stok Voucher",
      "sessions": "Sesi Aktif",
      "support": "Bantuan",
      "logout": "Keluar",
      "yourBalance": "Saldo Anda",
      "minBalance": "Min. saldo",
      "deposit": "Deposit",
      "refresh": "Refresh",
      "commissionThisMonth": "Komisi Bulan Ini",
      "totalCommission": "Total Komisi",
      "availableVouchers": "Voucher Tersedia",
      "usedVouchers": "Voucher Terpakai",
      "todaySales": "Penjualan Hari Ini",
      "generateVoucher": "Generate Voucher",
      "selectPackage": "Pilih Paket",
      "quantity": "Jumlah",
      "purchasePrice": "Harga Beli",
      "profitPerPcs": "Keuntungan/pcs",
      "profitPerPiece": "Keuntungan/pcs",
      "costPrice": "Harga Modal",
      "speed": "Kecepatan",
      "validity": "Masa Berlaku",
      "totalPayment": "Total Bayar",
      "generating": "Generating...",
      "voucherList": "Daftar Voucher",
      "total": "Total",
      "sendWA": "Kirim WA",
      "sendWhatsApp": "Kirim WA",
      "searchVoucher": "Cari kode voucher",
      "allStatus": "Semua Status",
      "allPackages": "Semua Paket",
      "filter": "Filter",
      "reset": "Reset",
      "voucherCode": "Kode Voucher",
      "batch": "Batch",
      "package": "Paket",
      "router": "Router",
      "status": "Status",
      "created": "Dibuat",
      "firstUsed": "Digunakan",
      "expired": "Kadaluarsa",
      "noVouchers": "Belum ada voucher",
      "noVouchersDesc": "Generate voucher di halaman Dashboard",
      "voucherCreated": "Voucher Berhasil Dibuat!",
      "copyVoucherCode": "Salin kode voucher di bawah ini untuk pelanggan Anda",
      "voucher": "Voucher",
      "copy": "Copy",
      "codeCopied": "Kode disalin!",
      "sendViaWhatsApp": "Kirim Voucher via WhatsApp",
      "sendVouchersTo": "Kirim {count} voucher ke customer",
      "whatsappNumber": "Nomor WhatsApp",
      "whatsappPlaceholder": "628123456789",
      "enterNumberWithCode": "Masukkan nomor dengan kode negara",
      "cancel": "Batal",
      "send": "Kirim WhatsApp",
      "sending": "Mengirim...",
      "topUpBalance": "Top Up Saldo",
      "depositAmount": "Jumlah Deposit",
      "minimumDeposit": "Minimum Rp 10.000",
      "paymentMethod": "Metode Pembayaran",
      "noPaymentGateway": "Belum ada payment gateway yang dikonfigurasi. Hubungi admin.",
      "totalAmount": "Total",
      "payNow": "Bayar Sekarang",
      "processing": "Memproses...",
      "insufficientBalance": "Saldo Tidak Cukup",
      "insufficientBalanceMsg": "Saldo tidak cukup!\\n\\nSaldo Anda: {current}\\nDibutuhkan: {required}\\nKurang: {deficit}\\n\\nTop up sekarang?",
      "generateConfirm": "Generate {count} voucher(s) {profile}?\\n\\nTotal Harga: {cost}\\nSaldo Sekarang: {balance}\\nSaldo Setelah: {after}",
      "vouchersGenerated": "{count} voucher berhasil digenerate!\\n\\nSaldo baru: {balance}",
      "selectVouchersFirst": "Pilih voucher terlebih dahulu",
      "whatsappSent": "WhatsApp berhasil dikirim ke {phone}!",
      "whatsappOpened": "WhatsApp dibuka! Silakan kirim pesan.",
      "enterWhatsappNumber": "Masukkan nomor WhatsApp",
      "onlineSessions": "Session Online",
      "sessionsOnline": "Session Online",
      "activeVouchers": "Voucher yang sedang aktif",
      "totalSessions": "Total Sessions",
      "totalUpload": "Total Upload",
      "totalDownload": "Total Download",
      "searchSession": "Cari username, IP, atau MAC address...",
      "activeSessions": "Active Sessions",
      "username": "Username",
      "profile": "Profil",
      "ipAddress": "IP Address",
      "macAddress": "MAC Address",
      "upload": "Upload",
      "download": "Download",
      "duration": "Duration",
      "startTime": "Start Time",
      "noSessions": "Tidak ada session online",
      "noMatchingSessions": "Tidak ada session yang sesuai dengan pencarian",
      "noActiveSessions": "Tidak ada session online",
      "noSearchResults": "Tidak ada session yang sesuai dengan pencarian",
      "loadingSessions": "Loading sessions...",
      "phoneNumber": "Nomor HP",
      "enterPhone": "08123456789",
      "loginFailed": "Login gagal",
      "loginFailedMsg": "Gagal login. Coba lagi.",
      "whatsappSentSuccess": "WhatsApp berhasil dikirim ke {phone}!",
      "whatsappSentError": "Gagal mengirim WhatsApp",
      "insufficientBalanceTitle": "Saldo Tidak Cukup",
      "insufficientBalanceMessage": "Saldo tidak cukup!\n\nSaldo Anda: {current}\nDibutuhkan: {required}\nKurang: {deficit}\n\nTop up sekarang?",
      "generateVoucherTitle": "Generate Voucher",
      "generateVoucherConfirm": "Generate {quantity} voucher(s) {profile}?\n\nTotal Harga: {cost}\nSaldo Sekarang: {balance}\nSaldo Setelah: {after}",
      "vouchersGeneratedSuccess": "{count} voucher berhasil digenerate!\n\nSaldo baru: {balance}",
      "voucherGenerateError": "Gagal generate voucher",
      "codeOptions": "Opsi Kode",
      "codeType": "Tipe Karakter",
      "codeLength": "Panjang Kode",
      "voucherPrefix": "Prefix (opsional)",
      "uppercase": "Huruf Kapital (A-Z)",
      "lowercase": "Huruf Kecil (a-z)",
      "numeric": "Angka (0-9)",
      "alphaNum": "Alfanumerik (A-Z, 0-9)",
      "paymentGatewayNotConfigured": "Payment gateway belum dikonfigurasi. Hubungi admin.",
      "selectPaymentMethod": "Pilih metode pembayaran",
      "paymentLinkOpened": "Link pembayaran dibuka di tab baru. Silakan selesaikan pembayaran.",
      "depositCreateError": "Gagal membuat deposit",
      "loading": "Memuat...",
      "waiting": "Menunggu",
      "active": "Aktif",
      "loginSubtitle": "Masuk dengan nomor HP terdaftar",
      "login": "Masuk",
      "loggingIn": "Memproses",
      "or": "ATAU",
      "notRegistered": "Belum terdaftar sebagai agen?",
      "contactAdmin": "Hubungi Admin",
      "errors": {
        "loginFailed": "Login gagal",
        "tryAgain": "Terjadi kesalahan. Coba lagi."
      }
    }
  },
  "evoucher": {
    "title": "Manajemen E-Voucher",
    "subtitle": "Kelola pesanan & lacak penjualan",
    "orders": "Pesanan",
    "order": "Pesanan",
    "orderNumber": "Nomor Pesanan",
    "customer": "Pelanggan",
    "profile": "Profil",
    "quantity": "Jumlah",
    "amount": "Total",
    "pending": "Tertunda",
    "paid": "Lunas",
    "cancelled": "Dibatalkan",
    "expired": "Kedaluwarsa",
    "revenue": "Pendapatan",
    "cancelOrder": "Batalkan pesanan",
    "resendVoucher": "Kirim ulang voucher",
    "noOrdersFound": "Tidak ada pesanan ditemukan",
    "filters": "Filter",
    "searchPlaceholder": "Cari pesanan, nama, telepon...",
    "allStatus": "Semua Status",
    "failedLoadOrders": "Gagal memuat pesanan",
    "orderCancelled": "Pesanan dibatalkan",
    "orderResent": "Voucher dikirim ulang",
    "selectOrdersToDelete": "Pilih pesanan yang akan dihapus",
    "ordersDeleted": "{count} pesanan berhasil dihapus",
    "failedDeleteOrders": "Gagal menghapus pesanan"
  },
  "invoices": {
    "title": "Tagihan",
    "createInvoice": "Buat Tagihan",
    "invoiceNumber": "Nomor Tagihan",
    "customer": "Pelanggan",
    "amount": "Jumlah",
    "status": "Status",
    "dueDate": "Jatuh Tempo",
    "paidAt": "Tanggal Bayar",
    "createdAt": "Dibuat",
    "pending": "Tertunda",
    "paid": "Lunas",
    "overdue": "Jatuh Tempo",
    "cancelled": "Dibatalkan",
    "unpaid": "Belum Bayar",
    "payNow": "Bayar Sekarang",
    "paidOn": "Dibayar",
    "sendReminder": "Kirim Pengingat",
    "markAsPaid": "Tandai Lunas",
    "generateInvoice": "Generate Tagihan",
    "monthlyBilling": "Tagihan Bulanan",
    "paymentMethod": "Metode Pembayaran",
    "paymentDetails": "Detail Pembayaran",
    "paymentLink": "Link Pembayaran",
    "expiryExtendedNote": "Masa aktif akan diperpanjang otomatis",
    "markedAsPaid": "Invoice berhasil ditandai lunas!",
    "failedToMarkPaid": "Gagal menandai invoice sebagai lunas",
    "generateConfirm": "Generate tagihan bulanan untuk semua pelanggan aktif?",
    "invoicesGenerated": "Tagihan Berhasil Dibuat",
    "failedToGenerate": "Gagal generate tagihan",
    "paymentLinkCopied": "Link pembayaran berhasil disalin!",
    "customerPhoneNotFound": "Nomor telepon pelanggan tidak ditemukan",
    "sendReminderTo": "Kirim pengingat ke {name}?",
    "sendWhatsApp": "Kirim WhatsApp",
    "whatsappReminderSent": "Pengingat WhatsApp berhasil dikirim!",
    "failedToSend": "Gagal mengirim",
    "failedToSendWhatsApp": "Gagal mengirim WhatsApp",
    "selectMinOneInvoice": "Pilih minimal 1 invoice untuk broadcast",
    "broadcastConfirm": "Kirim tagihan via WhatsApp ke {count} pelanggan?",
    "broadcast": "Broadcast",
    "customerId": "ID Pelanggan",
    "invoiceDeleted": "Invoice berhasil dihapus",
    "failedDeleteInvoice": "Gagal menghapus invoice",
    "exportFailed": "Export gagal",
    "pdfExportFailed": "PDF export gagal",
    "failedGetInvoiceData": "Gagal mendapatkan data invoice",
    "failedPrintInvoice": "Gagal mencetak invoice",
    "broadcastBilling": "Broadcast Tagihan",
    "deleteConfirm": "Hapus invoice ini? Tindakan ini tidak dapat dibatalkan.",
    "deleteInvoice": "Hapus Invoice",
    "deleted": "Invoice berhasil dihapus",
    "pdfDate": "Tanggal",
    "pdfDue": "Jatuh Tempo",
    "pdfHeaderDesc": "Tagihan untuk layanan internet",
    "pdfInvoice": "INVOICE",
    "pdfNo": "No.",
    "pdfPaid": "LUNAS",
    "pdfPaidOn": "Dibayar Pada",
    "pdfStatus": "Status"
  },
  "keuangan": {
    "title": "Transaksi",
    "transactions": "Daftar Transaksi",
    "addTransaction": "Tambah Transaksi",
    "addCategory": "Tambah Kategori",
    "categoryDescription": "Buat kategori pemasukan atau pengeluaran",
    "categoryPlaceholder": "Nama kategori",
    "income": "Pemasukan",
    "expense": "Pengeluaran",
    "balance": "Saldo",
    "totalIncome": "Total Pemasukan",
    "totalExpense": "Total Pengeluaran",
    "netProfit": "Laba Bersih",
    "category": "Kategori",
    "date": "Tanggal",
    "amount": "Jumlah",
    "description": "Deskripsi",
    "reference": "Referensi",
    "monthlyReport": "Laporan Bulanan",
    "yearlyReport": "Laporan Tahunan",
    "exportPDF": "Ekspor PDF",
    "exportExcel": "Ekspor Excel",
    "failedLoadData": "Gagal memuat data",
    "failedSaveTransaction": "Gagal menyimpan transaksi",
    "failedDeleteTransaction": "Gagal menghapus transaksi",
    "categoryNameRequired": "Nama kategori wajib diisi",
    "failedSaveCategory": "Gagal menyimpan kategori",
    "selectDateRange": "Pilih rentang tanggal terlebih dahulu",
    "exportFailed": "Gagal ekspor",
    "hotspotLabel": "Hotspot",
    "installLabel": "Pemasangan",
    "pdfBalance": "Saldo",
    "pdfDate": "Tanggal",
    "pdfExpense": "Pengeluaran",
    "pdfFilenamePrefix": "laporan-keuangan",
    "pdfIncome": "Pendapatan",
    "pdfTitle": "Laporan Keuangan",
    "pppoeLabel": "PPPoE",
    "searchPlaceholder": "Cari transaksi..."
  },
  "sessions": {
    "title": "Sesi Aktif",
    "subtitle": "Monitor koneksi aktif",
    "username": "Username",
    "ipAddress": "Alamat IP",
    "macAddress": "MAC Address",
    "startTime": "Waktu Mulai",
    "duration": "Durasi",
    "upload": "Upload",
    "download": "Download",
    "total": "Total",
    "disconnect": "Putuskan",
    "disconnectAll": "Putuskan Semua",
    "disconnectSelected": "Putuskan Terpilih",
    "active": "Aktif",
    "history": "Riwayat",
    "exportActive": "Ekspor Aktif",
    "exportHistory": "Ekspor Riwayat",
    "kickUser": "Kick User?",
    "disconnectPppoeConfirm": "Disconnect {count} sesi PPPoE?",
    "disconnectHotspotConfirm": "Disconnect {count} sesi Hotspot?",
    "yesKick": "Ya, Kick!",
    "sessionsDisconnected": "{count} sesi disconnected",
    "failedDisconnect": "Gagal disconnect",
    "failedDisconnectSession": "Gagal disconnect sesi",
    "exportFailed": "Export gagal",
    "pdfExportFailed": "PDF export gagal",
    "pppoeSessions": "Sesi PPPoE",
    "hotspotSessions": "Sesi Hotspot",
    "monitorPppoe": "Monitor koneksi PPPoE aktif",
    "monitorHotspot": "Monitor koneksi Hotspot/Voucher aktif",
    "kickUserButton": "KICK USER",
    "deleteButton": "HAPUS",
    "resyncButton": "SINKRON ULANG",
    "syncComplete": "Sinkronisasi selesai, data sesi diperbarui",
    "syncFailed": "Sinkronisasi gagal",
    "activeSessions": "Sesi Aktif",
    "totalUpload": "Total Upload",
    "totalDownload": "Total Download",
    "show": "Show",
    "entries": "entries",
    "search": "Search",
    "searchPlaceholder": "Cari...",
    "noData": "Tidak ada data",
    "noPppoeSessions": "Tidak ada sesi PPPoE aktif",
    "noHotspotSessions": "Tidak ada sesi Hotspot aktif",
    "showing": "Showing",
    "to": "to",
    "of": "of",
    "serviceNumber": "No Layanan",
    "customer": "Pelanggan",
    "lastUpdate": "Last Update",
    "uptime": "Uptime",
    "router": "Router",
    "server": "Server",
    "profile": "Profile",
    "voucher": "Voucher",
    "batch": "Batch",
    "agent": "Agen",
    "uploadDownload": "Upload/Download",
    "allTimeStatistics": "Statistik Keseluruhan",
    "totalSessionsLabel": "Total Sesi",
    "bandwidthUsed": "Bandwidth Terpakai",
    "totalDuration": "Total Durasi"
  },
  "whatsapp": {
    "title": "WhatsApp",
    "providers": "Penyedia",
    "providersTitle": "WhatsApp Providers",
    "providersSubtitle": "Kelola device WhatsApp dengan failover support",
    "templates": "Template",
    "templatesTitle": "WhatsApp Templates",
    "templatesSubtitle": "Edit template notifikasi WhatsApp untuk customer",
    "settings": "Pengaturan",
    "settingsDesc": "Kelola provider, template, dan notifikasi WhatsApp",
    "reminderSettings": "Pengaturan Reminder",
    "batchSendingSettings": "Pengaturan Pengiriman Batch",
    "batchSendingDesc": "Atur jumlah pesan per batch dan jeda untuk menghindari rate limit",
    "randomOrder": "Acak Urutan Pengiriman",
    "randomOrderDesc": "Kirim pesan dengan urutan acak agar lebih natural",
    "sendMessage": "Kirim Pesan",
    "history": "Riwayat",
    "historyTitle": "WhatsApp History",
    "historySubtitle": "Riwayat pengiriman pesan WhatsApp dengan detail status",
    "send": "Kirim Pesan",
    "sendTitle": "Kirim Pesan WhatsApp",
    "sendSubtitle": "Kirim pesan tunggal atau broadcast ke multiple users",
    "notificationsTitle": "Notifikasi WhatsApp",
    "notificationsSubtitle": "Atur pengiriman notifikasi reminder invoice & OTP login customer",
    "providerName": "Nama Provider",
    "phoneNumber": "Nomor Telepon",
    "status": "Status",
    "connected": "Terhubung",
    "disconnected": "Terputus",
    "connecting": "Menghubungkan",
    "scanQR": "Scan QR Code",
    "restart": "Restart",
    "restartSession": "Restart Session",
    "restarting": "Restarting...",
    "test": "Test",
    "templateName": "Nama Template",
    "templateContent": "Isi Template",
    "sendTo": "Kirim Ke",
    "message": "Pesan",
    "sent": "Terkirim",
    "failed": "Gagal",
    "pending": "Tertunda",
    "addProvider": "Tambah Provider",
    "editProvider": "Edit Provider",
    "deleteProvider": "Hapus Provider?",
    "deleteProviderConfirm": "Device ini akan dihapus permanen!",
    "providerType": "Tipe",
    "baseUrl": "Base URL",
    "apiKey": "API Key",
    "senderNumber": "Nomor Pengirim",
    "priority": "Prioritas",
    "description": "Deskripsi",
    "activate": "Aktifkan",
    "deactivate": "Nonaktifkan",
    "qrCode": "QR Code",
    "refreshQr": "Refresh QR",
    "scanWhatsapp": "Scan dengan WhatsApp untuk menghubungkan",
    "noProviders": "Belum ada provider. Tambah yang pertama!",
    "addFirstProvider": "Tambah Provider Pertama",
    "providerActivated": "Provider diaktifkan",
    "providerDeactivated": "Provider dinonaktifkan",
    "providerDeleted": "Provider berhasil dihapus",
    "providerSaved": "Provider berhasil disimpan",
    "sessionRestarted": "Session restarted! Silakan scan QR code.",
    "restartSessionTitle": "Restart session {name}?",
    "restartImportant": "PENTING:",
    "restartInstructions": "Hapus device dari WhatsApp > Linked Devices!",
    "restartDesc": "Ini akan clear session dan siap untuk scan QR baru.",
    "yesRestart": "Ya, Restart!",
    "failedLoadQr": "Gagal memuat QR code",
    "additionalNotes": "Catatan tambahan...",
    "apiKeyPlaceholder": "API Key atau Token",
    "totalMessages": "Total Pesan",
    "sentToday": "Terkirim (24j)",
    "failedToday": "Gagal (24j)",
    "activityToday": "Aktivitas (24j)",
    "all": "Semua",
    "searchPhoneMessage": "Cari nomor atau pesan...",
    "noHistory": "Belum ada riwayat pesan",
    "messageDetail": "Detail Pesan",
    "number": "Nomor",
    "numberLabel": "Nomor",
    "statusLabel": "Status",
    "sentStatus": "Terkirim",
    "failedStatus": "Gagal",
    "provider": "Provider",
    "providerLabel": "Provider",
    "timeLabel": "Waktu",
    "messageLabel": "Pesan",
    "responseLabel": "Response",
    "page": "Halaman",
    "prev": "Prev",
    "next": "Next",
    "templateMessage": "Template Pesan",
    "availableVariables": "Variabel Tersedia",
    "clickToInsert": "Klik variabel untuk menambahkan ke posisi kursor",
    "waFormat": "Format WhatsApp",
    "saveChanges": "Simpan Perubahan",
    "saved": "Tersimpan",
    "saving": "Menyimpan...",
    "copy": "Copy",
    "templateNotCreated": "Template belum dibuat",
    "createDefaultOrManual": "Buat template default atau tambah manual",
    "characters": "karakter",
    "howToUse": "Cara Penggunaan Template",
    "invoiceReminder": "Invoice Reminder Settings",
    "invoiceReminderDesc": "Konfigurasi kapan sistem mengirim reminder invoice",
    "enableAutoReminder": "Aktifkan Reminder Otomatis",
    "enableAutoReminderDesc": "Kirim notifikasi WhatsApp untuk invoice jatuh tempo",
    "sendTime": "Jam Pengiriman (WIB)",
    "sendTimeNote": "Notifikasi dikirim pada jam ini setiap harinya",
    "reminderSchedule": "Jadwal Reminder",
    "reminderScheduleDesc": "Tentukan kapan reminder dikirim (relatif terhadap tanggal expired)",
    "noSchedule": "Belum ada jadwal reminder",
    "addSchedule": "Tambah",
    "exampleSchedule": "Contoh: -7 untuk H-7 (7 hari sebelum expired), 0 untuk hari H (hari expired)",
    "otpLogin": "Customer OTP Login",
    "otpLoginDesc": "Pengaturan OTP untuk login customer self-service portal",
    "enableOtp": "Aktifkan OTP Login",
    "enableOtpDesc": "Customer bisa login menggunakan OTP via WhatsApp",
    "otpExpiry": "Masa Berlaku OTP (Menit)",
    "otpExpiryNote": "Kode OTP akan expired setelah",
    "otpDisabledWarning": "Customer tidak akan bisa login ke portal self-service jika OTP dinonaktifkan",
    "saveSettings": "Simpan Pengaturan",
    "settingsSaved": "Pengaturan berhasil disimpan",
    "singleMessage": "Pesan Tunggal",
    "broadcast": "Broadcast",
    "messageViaSent": "Pesan dikirim menggunakan provider tersedia",
    "typeMessage": "Ketik pesan Anda...",
    "sending": "Mengirim...",
    "result": "Hasil",
    "sendStatus": "Status pengiriman pesan",
    "sendToSeeResult": "Kirim pesan untuk melihat hasil",
    "messageSent": "Pesan Terkirim!",
    "via": "Via",
    "filterUsers": "Filter Users",
    "selectForBroadcast": "Pilih user untuk broadcast",
    "selected": "dipilih",
    "filterByNetwork": "Filter by Network Location",
    "odpLocation": "Lokasi ODP",
    "allOdcs": "Semua ODC",
    "selectOdcFirst": "Pilih ODC dulu",
    "noOdps": "Tidak ada ODP",
    "clear": "Clear",
    "allStatus": "Semua Status",
    "profileFilter": "Filter Profil",
    "routerFilter": "Filter Router",
    "addressFilter": "Filter Alamat",
    "allProfiles": "Semua Profil",
    "allRouters": "Semua Router",
    "searchAddress": "Cari alamat...",
    "noUsersFound": "Tidak ada user ditemukan",
    "broadcastMessage": "Broadcast Message",
    "loadFromTemplate": "Load dari Template",
    "selectTemplate": "Pilih template...",
    "typeBroadcast": "Ketik pesan broadcast di sini...",
    "sendBroadcast": "Kirim Broadcast ke",
    "sendBroadcastTo": "Kirim Broadcast ke {count} Pengguna",
    "users": "Users",
    "sendingTo": "Mengirim ke {count} pengguna...",
    "confirmBroadcast": "Konfirmasi Broadcast",
    "sendMessageTo": "Kirim pesan ke",
    "yesSend": "Ya, Kirim!",
    "broadcastComplete": "Broadcast Selesai!",
    "broadcastSummary": "Broadcast Summary",
    "success": "Sukses",
    "hExpired": "H (Hari Expired)",
    "hMinusDays": "hari sebelum expired",
    "minutes": "menit",
    "phoneAndMessageRequired": "Nomor telepon dan pesan wajib diisi",
    "messageSentVia": "Pesan terkirim via {provider}!",
    "failedSendMessage": "Gagal mengirim pesan",
    "selectAtLeastOneUser": "Pilih minimal satu pengguna",
    "messageRequired": "Pesan wajib diisi",
    "broadcastFailed": "Broadcast gagal",
    "failedSendBroadcast": "Gagal mengirim broadcast",
    "templateLoaded": "Template Dimuat!",
    "failedLoadHistory": "Gagal memuat history",
    "failedLoadTemplate": "Gagal memuat template",
    "templateUpdated": "Template berhasil diupdate!",
    "failedUpdateTemplate": "Gagal update template",
    "templateCopied": "Template berhasil dicopy!",
    "settingsSavedSuccess": "Pengaturan berhasil disimpan",
    "failedSaveSettings": "Gagal menyimpan pengaturan",
    "hDayLabel": "H (Hari Expired)",
    "hMinusDaysLabel": "{days} hari sebelum expired",
    "failedFetchProviders": "Gagal memuat provider",
    "nameTypeUrlRequired": "Nama, Tipe, dan Base URL wajib diisi",
    "apiKeyRequiredFor": "API Key wajib diisi untuk {type}",
    "senderNumberRequiredMpwa": "Sender Number wajib diisi untuk MPWA",
    "failedSaveProvider": "Gagal menyimpan provider",
    "failedToggleProvider": "Gagal mengubah status provider",
    "failedDeleteProvider": "Gagal menghapus provider",
    "enterValidNumber": "Masukkan angka yang valid",
    "valueMustBeZeroOrNegative": "Nilai harus 0 atau negatif (contoh: -7 untuk H-7)",
    "dayAlreadyInList": "Hari ini sudah ada dalam daftar",
    "minOneReminderDay": "Minimal harus ada 1 hari reminder",
    "otpExpiryRange": "OTP expiry harus antara 1-60 menit",
    "failedRestartSession": "Gagal restart sesi",
    "deviceStatusPrefix": "Status device",
    "deviceAlreadyConnected": "Device sudah terhubung",
    "failedFetchQr": "Gagal memuat QR code",
    "errorFetchingQr": "Error mengambil QR code",
    "copyBtn": "Salin",
    "templateWhatsapp": "Template WhatsApp"
  },
  "network": {
    "title": "Jaringan",
    "routers": "Router / NAS",
    "addRouter": "Tambah Router",
    "editRouter": "Edit Router",
    "deleteRouter": "Hapus Router?",
    "routerName": "Nama Router",
    "routerType": "Tipe Router",
    "ipAddress": "Alamat IP",
    "apiPort": "Port API",
    "apiSslPort": "Port API-SSL",
    "username": "Username",
    "password": "Password",
    "status": "Status",
    "online": "Online",
    "offline": "Offline",
    "checking": "Memeriksa",
    "ready": "Siap",
    "incomplete": "Belum Lengkap",
    "notConfigured": "Belum dikonfigurasi",
    "testConnection": "Test Koneksi",
    "syncUsers": "Sinkronkan Pengguna",
    "lastSync": "Sinkronisasi Terakhir",
    "configureMikrotik": "Konfigurasi koneksi MikroTik router",
    "mainRouter": "Router Utama",
    "apiIpDescription": "IP untuk koneksi API (VPN/local)",
    "nasIpPlaceholder": "Kosong = auto-detect",
    "radiusSetupScript": "Script Setup RADIUS",
    "radiusScriptNote": "Paste script ini di terminal MikroTik. Verifikasi dengan: /radius print",
    "routerManagement": "Manajemen Router",
    "routerManagementDesc": "Kelola router MikroTik dan konfigurasi RADIUS NAS",
    "loadingRouters": "Memuat Router...",
    "noRoutersYet": "Belum Ada Router",
    "noRoutersDesc": "Tambahkan router pertama Anda untuk mulai mengelola perangkat MikroTik dan konfigurasi RADIUS.",
    "addFirstRouter": "Tambahkan Router Pertama",
    "mikrotikRouter": "Router MikroTik",
    "gatewayVps": "Gateway/VPS (Tanpa Kredensial)",
    "other": "Lainnya",
    "connectViaVpn": "Hubungkan via VPN Client",
    "useVpnClientIp": "Gunakan alamat IP VPN client yang ada",
    "selectVpnClient": "Pilih VPN Client",
    "radiusSecret": "RADIUS Secret",
    "radiusPort": "Port RADIUS",
    "setupIsolirProfile": "Setup Profil Isolir",
    "setupRadiusClient": "Setup RADIUS Client",
    "routerIdentity": "Identitas Router",
    "uptime": "Uptime",
    "nasName": "NAS Name (IP)",
    "shortName": "Short Name",
    "connectionSuccess": "Koneksi Berhasil!",
    "connectedTo": "Terhubung ke",
    "gatewayReachable": "Gateway dapat dijangkau!",
    "isolirSetupComplete": "Setup Isolir Selesai!",
    "radiusScriptGenerated": "Script RADIUS Berhasil Dibuat!",
    "copyScriptBelow": "Copy script di bawah dan paste ke <b>MikroTik Terminal</b>:",
    "configuration": "Konfigurasi",
    "server": "Server",
    "authAcct": "Auth/Acct",
    "coa": "CoA",
    "secret": "Secret",
    "copyScript": "📋 Copy Script",
    "close": "Tutup",
    "scriptCopied": "Script Disalin!",
    "pasteToTerminal": "Paste ke MikroTik Terminal untuk setup RADIUS",
    "copyScriptToMikrotik": "Salin script dan paste ke Terminal MikroTik",
    "fillIpUsernamePassword": "Silakan isi IP Address, Username, dan Password terlebih dahulu",
    "fillIpAddress": "Silakan isi IP Address",
    "gatewayReachableMsg": "Gateway dapat dijangkau! {message}",
    "connectionSuccessfulTo": "Koneksi Berhasil! Terhubung ke: {identity}",
    "testConnectionFirst": "Silakan test koneksi terlebih dahulu sebelum menyimpan",
    "routerDeleted": "Router dihapus!",
    "failedDeleteRouter": "Gagal menghapus router",
    "isolirSetupCompleteMsg": "Setup Isolir Selesai! {message}",
    "isolirConfig": "Profile: {profile}, Rate Limit: {rateLimit}, IP Pool: {poolRange}",
    "failedSetupIsolir": "Gagal setup profil isolir",
    "failedGenerateRadiusScript": "Gagal membuat script RADIUS",
    "copiedToClipboard": "{label} disalin ke clipboard",
    "mainRouterPlaceholder": "Router Utama",
    "apiSslPortLabel": "API-SSL Port",
    "routerIdentityLabel": "Identitas Router",
    "uptimeLabel": "Uptime",
    "routerPrefix": "Router",
    "vpnServer": "Server VPN",
    "vpnServerManagement": "Manajemen Server VPN",
    "vpnServerManagementDesc": "Konfigurasi dan kelola server VPN MikroTik dengan protokol L2TP, SSTP & PPTP",
    "loadingVpnServers": "Memuat Server VPN...",
    "noVpnServersYet": "Belum Ada Server VPN",
    "noVpnServersDesc": "Mulai dengan menambahkan server VPN pertama untuk mengelola router MikroTik dengan protokol L2TP, SSTP, dan PPTP.",
    "addVpnServer": "Tambah Server VPN",
    "editVpnServer": "Edit Server VPN",
    "addNewVpnServer": "Tambah Server VPN Baru",
    "addFirstVpnServer": "Tambahkan Server VPN Pertama",
    "deleteVpnServer": "Hapus Server VPN?",
    "deleteConfirm": "Apakah Anda yakin ingin menghapus \"{name}\"?",
    "serverName": "Nama Server",
    "hostIp": "Host/IP",
    "vpnSubnet": "Subnet VPN",
    "hostAddress": "Alamat Host",
    "l2tpEnabled": "L2TP Aktif",
    "sstpEnabled": "SSTP Aktif",
    "pptpEnabled": "PPTP Aktif",
    "configured": "Terkonfigurasi",
    "autoSetup": "Setup Otomatis",
    "autoSetupVpn": "Setup VPN Server Otomatis?",
    "autoSetupDesc": "Ini akan mengkonfigurasi:",
    "l2tpIpsecServer": "L2TP/IPSec Server",
    "sstpServer": "SSTP Server",
    "pptpServer": "PPTP Server",
    "ipPool": "IP Pool",
    "pppProfile": "Profil PPP dengan DNS",
    "natMasquerade": "NAT Masquerade",
    "mikrotikPassword": "Password MikroTik",
    "yesSetupNow": "Ya, Setup Sekarang",
    "settingUp": "Menyiapkan...",
    "testing": "Menguji...",
    "l2tpControl": "Kontrol L2TP",
    "l2tpClientControl": "Kontrol L2TP Client - VPS RADIUS Server",
    "sshConnection": "Koneksi SSH (VPS RADIUS Server)",
    "vpsIpHostname": "IP/Hostname VPS",
    "sshPort": "Port SSH",
    "sshUsername": "Username SSH",
    "sshPassword": "Password SSH",
    "l2tpConnectionDetails": "Detail Koneksi L2TP",
    "vpnServerIp": "IP Server VPN",
    "l2tpUsername": "Username L2TP",
    "l2tpPassword": "Password L2TP",
    "ipsecPsk": "IPSec Pre-Shared Key (PSK)",
    "connectExecute": "Hubungkan & Jalankan",
    "sshCredentialsRequired": "Kredensial SSH diperlukan",
    "l2tpDetailsRequired": "Semua detail koneksi L2TP diperlukan",
    "addOdp": "Tambah ODP",
    "editOdp": "Edit ODP",
    "totalOdps": "Total ODP",
    "active": "Aktif",
    "totalPorts": "Total Port",
    "withChildren": "Dengan Anak",
    "allOlts": "Semua OLT",
    "allOdcs": "Semua ODC",
    "odpList": "Daftar ODP",
    "connection": "Koneksi",
    "pon": "PON",
    "location": "Lokasi",
    "ports": "Port",
    "configureOdp": "Konfigurasi Optical Distribution Point",
    "odpNamePlaceholder": "ODP-01-001",
    "selectOlt": "Pilih OLT",
    "ponPort": "Port PON",
    "ponPortPlaceholder": "1",
    "connectTo": "Hubungkan Ke",
    "odcCabinet": "ODC (Kabinet)",
    "parentOdp": "ODP Induk",
    "selectOdc": "Pilih ODC",
    "selectParentOdp": "Pilih ODP Induk",
    "portCount": "Jumlah Port",
    "portCountPlaceholder": "8",
    "inactive": "Tidak Aktif",
    "maintenance": "Maintenance",
    "gpsLocation": "Lokasi GPS",
    "openMap": "Buka Peta",
    "autoGps": "GPS Otomatis",
    "latitude": "Latitude",
    "longitude": "Longitude",
    "followRoadPath": "Ikuti jalur jalan di peta",
    "update": "Update",
    "create": "Buat",
    "mainVpnServerPlaceholder": "Server VPN Utama",
    "ipAddressPlaceholder": "192.168.88.1",
    "apiPortPlaceholder": "8728",
    "adminPlaceholder": "admin",
    "passwordPlaceholder": "••••••••",
    "vpnSubnetPlaceholder": "10.20.30.0/24",
    "sshPortLabel": "Port SSH",
    "sshUsernameLabel": "Username SSH",
    "sshPasswordLabel": "Password SSH",
    "vpnServerIpLabel": "IP Server VPN",
    "l2tpUsernameLabel": "Username L2TP",
    "l2tpPasswordLabel": "Password L2TP",
    "ipsecPskLabel": "IPSec Pre-Shared Key (PSK)",
    "xl2tpdService": "Layanan xl2tpd",
    "ipsecService": "Layanan IPSec",
    "recentLogs": "Log Terbaru",
    "newAssignment": "Penugasan Baru",
    "editAssignment": "Edit Penugasan",
    "totalAssignments": "Total Penugasan",
    "uniqueOdps": "ODP Unik",
    "uniqueCustomers": "Pelanggan Unik",
    "searchCustomerOdp": "Cari berdasarkan nama pelanggan, username, atau ODP...",
    "assignmentList": "Daftar Penugasan",
    "customer": "Pelanggan",
    "port": "Port",
    "distance": "Jarak",
    "noAssignmentsFound": "Tidak ada penugasan. Klik \"Penugasan Baru\" untuk membuat.",
    "assignCustomerToOdp": "Tetapkan pelanggan ke port ODP",
    "change": "Ubah",
    "noGpsCoordinates": "Tidak ada koordinat GPS - jarak tidak dapat dihitung",
    "searchCustomerPlaceholder": "Cari pelanggan berdasarkan nama atau username...",
    "noPhone": "Tidak ada telepon",
    "selectOdp": "Pilih ODP",
    "noOdpsFoundOrAvailable": "Tidak ada ODP ditemukan atau tidak ada ODP tersedia",
    "customerNoGpsShowingAll": "Pelanggan tidak memiliki koordinat GPS - menampilkan semua ODP",
    "portsFree": "port tersedia",
    "selectPort": "Pilih port",
    "portNumber": "Nomor Port",
    "optionalNotes": "Catatan opsional tentang penugasan ini...",
    "assign": "Tetapkan",
    "removeAssignment": "Hapus Penugasan",
    "l2tpConfigApplied": "Konfigurasi L2TP berhasil diterapkan!",
    "configurationFailed": "Konfigurasi gagal",
    "vpnClient": "VPN Client",
    "vpnClientManagement": "Manajemen VPN Client",
    "vpnClientManagementDesc": "Kelola VPN client untuk akses remote router MikroTik via L2TP, SSTP atau PPTP",
    "loadingVpnClients": "Memuat VPN Clients...",
    "vpnServerNotConfigured": "Server VPN Belum Dikonfigurasi",
    "setupVpnServerFirst": "Silakan setup Server VPN terlebih dahulu sebelum membuat VPN client.",
    "goToVpnServerSetup": "Ke Setup VPN Server",
    "noVpnClientsYet": "Belum Ada VPN Client",
    "noVpnClientsDesc": "Buat VPN client pertama Anda untuk mengaktifkan akses remote ke router MikroTik.",
    "addVpnClient": "Tambah VPN Client",
    "addFirstVpnClient": "Tambahkan VPN Client Pertama",
    "deleteVpnClient": "Hapus VPN Client?",
    "deleteVpnClientConfirm": "Ini akan menghapus \"{name}\" dari CHR dan database",
    "clientName": "Nama Client",
    "descriptionOptional": "Deskripsi (opsional)",
    "additionalNotes": "Catatan tambahan...",
    "createClient": "Buat Client",
    "clientCredentialsDisplayed": "Kredensial client ditampilkan. Harap simpan.",
    "vpnClientCreated": "VPN Client Berhasil Dibuat!",
    "radiusServer": "RADIUS Server",
    "defaultRadiusServer": "RADIUS Server Default",
    "setAsRadiusServer": "Jadikan sebagai RADIUS Server",
    "setAsRadius": "Dijadikan RADIUS Server",
    "unsetRadius": "Batal RADIUS Server",
    "vpnIp": "IP VPN",
    "winboxRemote": "Winbox Remote",
    "apiUsername": "Username API",
    "apiPassword": "Password API",
    "vpnCredentials": "Kredensial VPN",
    "vpnClientCredentials": "Kredensial & Script Setup VPN Client",
    "selectVpnType": "Pilih Tipe VPN untuk Script MikroTik",
    "mikrotikConfigScript": "Script Konfigurasi MikroTik",
    "importantNotes": "Catatan Penting",
    "apiUserGroup": "Group User API",
    "limitedPermissions": "Izin terbatas (read, api, test saja)",
    "vpnConnection": "Koneksi VPN",
    "noDefaultRoute": "Tidak ada default route (mempertahankan route internet)",
    "remoteAccess": "Akses Remote",
    "useWinboxVia": "Gunakan Winbox via",
    "apiCredentials": "Kredensial API",
    "forRemoteManagement": "Untuk manajemen remote dan otomatisasi",
    "ipsecSecret": "IPSec Secret (L2TP)",
    "addNewRouter": "Tambah Router Baru",
    "updateRouter": "Update Router",
    "fillHostUsernamePassword": "Silakan isi Host, Username, dan Password terlebih dahulu",
    "testConnectionRequired": "Silakan test koneksi terlebih dahulu sebelum menyimpan",
    "vpnServerConfigured": "VPN Server berhasil dikonfigurasi",
    "protocolsEnabled": "Protokol aktif: {protocols}",
    "vpnServerUpdated": "VPN Server berhasil diupdate",
    "failedUpdateVpnServer": "Gagal mengupdate VPN server",
    "vpnServerDeleted": "VPN Server berhasil dihapus",
    "failedDeleteVpnServer": "Gagal menghapus VPN server",
    "failedTestConnection": "Gagal test koneksi",
    "failedSetupVpnServer": "Gagal setup VPN server",
    "connectionFailed": "Koneksi Gagal",
    "setupComplete": "Setup Selesai!",
    "passwordRequired": "Password wajib diisi!",
    "enterPassword": "Masukkan Password",
    "operationFailed": "Operasi gagal",
    "failedConfigureL2tp": "Gagal mengkonfigurasi L2TP",
    "failedExecuteL2tpCommand": "Gagal menjalankan perintah L2TP",
    "failedCreateClient": "Gagal membuat client",
    "anErrorOccurred": "Terjadi kesalahan",
    "deleted": "Dihapus!",
    "failedDeleteClient": "Gagal menghapus client",
    "setAsRadiusServerSuccess": "Diset sebagai RADIUS Server",
    "unsetRadiusServerSuccess": "Tidak lagi sebagai RADIUS Server",
    "failedUpdateClient": "Gagal mengupdate client",
    "copied": "Disalin!",
    "failedCopy": "Gagal menyalin ke clipboard",
    "copyFailed": "Gagal Menyalin",
    "map": {
      "customerUpdated": "Data pelanggan berhasil diupdate",
      "geolocationNotSupported": "Geolocation tidak didukung oleh browser Anda",
      "failedLoadNetwork": "Gagal memuat data network",
      "legend": "Legenda",
      "search": "Cari",
      "showAll": "Tampilkan Semua"
    },
    "diagram": {
      "title": "Diagram Splitter Jaringan",
      "description": "Visualisasi interaktif Joint Closure, ODC, dan ODP splitter",
      "noData": "Belum ada data jaringan",
      "noDataDescription": "Silakan tambahkan Joint Closure, ODC, atau ODP terlebih dahulu untuk melihat diagram",
      "addJointClosure": "Tambah Joint Closure",
      "addODC": "Tambah ODC",
      "addODP": "Tambah ODP",
      "selectJointClosure": "Pilih Joint Closure",
      "selectODC": "Pilih ODC",
      "selectODP": "Pilih ODP",
      "noJointClosures": "Belum ada Joint Closure",
      "noODCs": "Belum ada ODC",
      "noODPs": "Belum ada ODP",
      "assignedTo": "Ditugaskan ke",
      "configureFiberCountFirst": "Konfigurasi jumlah fiber terlebih dahulu",
      "configurePortsFirst": "Konfigurasi port terlebih dahulu",
      "installedAt": "Dipasang di",
      "legend": "Legenda",
      "noPortData": "Tidak ada data port"
    },
    "tracing": {
      "title": "Pelacakan Jalur Fiber",
      "description": "Tool untuk melacak dan menganalisis jalur fiber optik",
      "sourceNode": "Node Awal",
      "destinationNode": "Node Tujuan",
      "selectSource": "Pilih node awal",
      "selectDestination": "Pilih node tujuan",
      "traceButton": "Lacak Jalur",
      "tracing": "Melacak...",
      "clearButton": "Bersihkan",
      "pathFound": "Jalur Ditemukan",
      "noPathFound": "Jalur Tidak Ditemukan",
      "pathDetails": "Detail Jalur",
      "totalNodes": "Total Node",
      "totalDistance": "Total Jarak",
      "estimatedLoss": "Estimasi Loss Signal",
      "pathStatus": "Status Jalur",
      "redundancy": "Redundansi",
      "hops": "Hop",
      "meters": "meter",
      "impactAnalysis": "Analisis Dampak",
      "affectedNodes": "Node Terdampak",
      "affectedCustomers": "Pelanggan Terdampak",
      "estimatedDowntime": "Estimasi Downtime",
      "revenueImpact": "Dampak Revenue",
      "alternativeRoutes": "Jalur Alternatif",
      "noAlternatives": "Tidak ada jalur alternatif",
      "activateRoute": "Aktifkan Jalur",
      "routeQuality": "Kualitas Jalur",
      "excellent": "Sangat Baik",
      "good": "Baik",
      "fair": "Cukup",
      "poor": "Buruk",
      "nodeOrder": "Urutan",
      "nodeType": "Tipe",
      "nodeName": "Nama",
      "nodeDistance": "Jarak",
      "active": "Aktif",
      "inactive": "Tidak Aktif",
      "damaged": "Rusak",
      "maintenance": "Maintenance",
      "none": "Tidak Ada",
      "available": "Tersedia",
      "minutes": "menit",
      "hours": "jam",
      "selectNodeToStart": "Pilih Node untuk Memulai",
      "selectNodeDescription": "Pilih node awal dan tujuan, kemudian klik tombol \"Lacak Jalur\"",
      "pathTracingTitle": "Path Tracing",
      "pathTracingDesc": "Lacak jalur fiber dari OLT ke ODP untuk troubleshooting dan maintenance planning.",
      "impactAnalysisTitle": "Impact Analysis",
      "impactAnalysisDesc": "Analisis otomatis jumlah pelanggan dan node yang terdampak jika jalur terputus.",
      "alternativeRoutesTitle": "Alternative Routes",
      "alternativeRoutesDesc": "Temukan jalur alternatif untuk backup dan redundancy network planning."
    },
    "jointClosure": {
      "title": "Joint Closure Management",
      "subtitle": "Kelola Joint Closure (JC)",
      "add": "Tambah Joint Closure",
      "edit": "Edit Joint Closure",
      "name": "Nama JC",
      "code": "Kode JC",
      "type": "Tipe JC",
      "cableType": "Tipe Kabel",
      "fiberCount": "Jumlah Fiber",
      "totalFibers": "Total Fiber",
      "inputPorts": "Port Input",
      "outputPorts": "Port Output",
      "upstreamNode": "Node Upstream",
      "selectUpstream": "Pilih Node Upstream",
      "downstreamNodes": "Node Downstream",
      "capacity": "Kapasitas",
      "splitterRatio": "Rasio Splitter",
      "fiberType": "Tipe Fiber",
      "singleMode": "Single Mode",
      "multiMode": "Multi Mode",
      "installDate": "Tanggal Instalasi",
      "description": "Deskripsi",
      "technicalInfo": "Informasi Teknis",
      "location": "Lokasi",
      "latitude": "Latitude",
      "longitude": "Longitude",
      "followRoad": "Ikuti Jalan",
      "deleteConfirm": "Apakah Anda yakin ingin menghapus \"{name}\"?",
      "connectedNodes": "Node Terhubung",
      "fiberPaths": "Jalur Fiber",
      "core": "Core",
      "distribution": "Distribution",
      "feeder": "Feeder"
    },
    "unifiedMap": {
      "title": "Peta Jaringan Terpadu",
      "subtitle": "Visualisasi semua infrastruktur jaringan dan pelanggan dalam satu peta",
      "statisticsTitle": "Statistik",
      "legend": "Legenda",
      "searchPlaceholder": "Cari node...",
      "filterByType": "Filter Tipe",
      "filterByStatus": "Filter Status",
      "clearFilters": "Hapus Filter"
    },
    "configureOdc": "Konfigurasi ODC",
    "copyVpsScript": "Salin Script VPS",
    "deleteRouterConfirm": "Hapus router ini? Semua pelanggan terkait akan kehilangan koneksi.",
    "failedSaveRouter": "Gagal menyimpan router",
    "odc": {
      "title": "ODC",
      "portUtilization": "Utilisasi Port"
    },
    "odp": {
      "title": "ODP",
      "activeCustomers": "Pelanggan Aktif",
      "customer": "Pelanggan",
      "customerPortStatus": "Status Port Pelanggan",
      "customersActive": "Pelanggan Aktif",
      "portsUsed": "Port Digunakan",
      "splitterRatio": "Rasio Splitter",
      "utilization": "Utilisasi"
    },
    "oltSelectLabel": "Pilih OLT",
    "routerUpdated": "Router berhasil diperbarui",
    "vpsRoutingNote": "Catatan Routing VPS",
    "vpsRoutingSetup": "Setup Routing VPS",
    "vpsRoutingSetupDesc": "Konfigurasi routing VPS untuk jaringan PPPoE",
    "common": {
      "assignedTo": "Ditugaskan ke",
      "connectedTo": "Terhubung ke",
      "fiberConnections": "Koneksi Fiber",
      "from": "Dari",
      "moreConnections": "koneksi lainnya",
      "port": "Port",
      "ratio": "Rasio",
      "signal": "Sinyal",
      "status": "Status",
      "to": "Ke"
    },
    "messages": {
      "noData": "Tidak ada data"
    },
    "otb": {
      "cableType": "Tipe Kabel",
      "capacity": "Kapasitas",
      "code": "Kode",
      "connectedTo": "Terhubung ke",
      "diagram": "Diagram",
      "feederCable": "Kabel Feeder",
      "input": "Input",
      "name": "Nama",
      "outputs": "Output",
      "port": "Port",
      "splitter": "Splitter",
      "splitterRatio": "Rasio Splitter",
      "utilization": "Utilisasi"
    },
    "olt": {
      "code": "Kode",
      "connectedTo": "Terhubung ke",
      "diagram": "Diagram",
      "model": "Model",
      "name": "Nama",
      "ponPort": "Port PON",
      "ponPorts": "Port-Port PON",
      "signalStrength": "Kekuatan Sinyal",
      "utilization": "Utilisasi",
      "vendor": "Vendor"
    }
  },
  "settings": {
    "title": "Pengaturan",
    "company": "Perusahaan",
    "database": "Database",
    "cronJobs": "Cron Jobs",
    "companyName": "Nama Perusahaan",
    "companyEmail": "Email Perusahaan",
    "companyPhone": "Telepon Perusahaan",
    "companyAddress": "Alamat Perusahaan",
    "baseUrl": "URL Dasar",
    "timezone": "Zona Waktu",
    "currency": "Mata Uang",
    "language": "Bahasa",
    "backupDatabase": "Backup Database",
    "restoreDatabase": "Restore Database",
    "downloadBackup": "Unduh Backup",
    "companySettings": "Pengaturan Perusahaan",
    "manageCompanyInfo": "Kelola informasi perusahaan",
    "phone": "No. Telepon",
    "address": "Alamat",
    "baseUrlHint": "URL untuk payment link & customer portal",
    "saving": "Menyimpan...",
    "saveSettings": "Simpan Pengaturan",
    "settingsSaved": "Pengaturan perusahaan berhasil disimpan",
    "failedToSave": "Gagal menyimpan pengaturan",
    "cronTitle": "Cron Jobs",
    "manageScheduledTasks": "Kelola tugas terjadwal",
    "runNow": "Jalankan",
    "jobEnabled": "Job Diaktifkan",
    "jobDisabled": "Job Dinonaktifkan",
    "jobRunning": "Job Dijalankan",
    "jobSuccess": "berhasil dijalankan",
    "failedToRun": "Gagal menjalankan job",
    "failedTriggerJob": "Gagal menjalankan job",
    "failedToToggle": "Gagal mengubah status job",
    "success": "Sukses",
    "failed": "Gagal",
    "running": "Berjalan",
    "neverRun": "Belum pernah",
    "executionHistory": "Riwayat Eksekusi",
    "job": "Job",
    "time": "Waktu",
    "duration": "Durasi",
    "allRouters": "Semua Router",
    "allOlt": "Semua OLT",
    "allOdc": "Semua ODC",
    "allStatus": "Semua Status",
    "active": "Aktif",
    "delinquent": "Nunggak",
    "mainCable": "Kabel Utama",
    "customerCable": "Kabel Pelanggan",
    "customer": "Pelanggan",
    "myLocation": "Lokasi Saya",
    "yourLocation": "Lokasi Anda",
    "networkVisualization": "Visualisasi jaringan FTTH: OLT, ODC, ODP, dan pelanggan",
    "loadingMap": "Memuat peta...",
    "manageCpe": "Kelola perangkat CPE via TR-069",
    "first": "Awal",
    "prev": "Sebelum",
    "next": "Berikutnya",
    "last": "Akhir",
    "pageOf": "Halaman {page} dari {total}",
    "message": "Pesan",
    "noHistory": "Belum ada riwayat",
    "failedUpdateTemplate": "Gagal memperbarui template",
    "templateNotCreated": "Template belum dibuat",
    "refreshForDefault": "Segarkan halaman untuk memuat template default",
    "invoiceReminderSettings": "Pengaturan Pengingat Invoice",
    "daysBeforeDue": "Hari sebelum jatuh tempo",
    "allStatusFilter": "Semua status",
    "sentFilter": "Terkirim",
    "failedFilter": "Gagal",
    "noEmailHistory": "Belum ada riwayat email",
    "databaseBackup": "Database & Backup",
    "manageBackupAndAuto": "Kelola backup database dan auto-backup",
    "status": "Status",
    "size": "Ukuran",
    "tables": "Tabel",
    "connections": "Koneksi",
    "backupRestore": "Backup & Restore",
    "autoBackupTelegram": "Auto Backup Telegram",
    "createBackup": "Buat Backup",
    "creating": "Membuat...",
    "uploadBackup": "Upload Backup",
    "file": "File",
    "date": "Tanggal",
    "noBackups": "Belum ada backup",
    "restoreConfirm": "Restore Database?",
    "restoreWarning": "Data saat ini akan diganti dengan data backup",
    "yesRestore": "Ya, Restore",
    "deleteBackup": "Hapus Backup?",
    "deleteBackupWarning": "File backup akan dihapus permanen",
    "yesDelete": "Ya, Hapus",
    "backupCreated": "Backup berhasil dibuat",
    "backupFailed": "Backup gagal",
    "restoreSuccess": "Database berhasil di-restore",
    "restoreFailed": "Restore gagal",
    "backupDeleted": "Backup berhasil dihapus",
    "deleteFailed": "Hapus gagal",
    "autoBackupToTelegram": "Auto Backup ke Telegram",
    "autoBackupDesc": "Kirim backup database otomatis ke Telegram",
    "botToken": "Bot Token",
    "chatId": "Chat ID",
    "backupSchedule": "Jadwal Backup",
    "daily": "Setiap Hari (00:00)",
    "weekly": "Setiap Minggu (Senin 00:00)",
    "monthly": "Setiap Bulan (Tanggal 1)",
    "testSend": "Test Kirim",
    "testSent": "Pesan test terkirim ke Telegram",
    "testFailed": "Gagal mengirim test message",
    "baseUrlHelp": "URL untuk payment link & customer portal",
    "companySaved": "Pengaturan perusahaan berhasil disimpan",
    "bankAccountsSaved": "Rekening bank berhasil disimpan",
    "saveSettingsFailed": "Gagal menyimpan pengaturan",
    "jobExecuted": "Job Dijalankan",
    "jobRunSuccess": "berhasil dijalankan",
    "runJobFailed": "Gagal menjalankan job",
    "changeStatusFailed": "Gagal mengubah status job",
    "manageBackupAuto": "Kelola backup database dan auto-backup",
    "noBackup": "Belum ada backup",
    "createBackupFailed": "Gagal membuat backup",
    "selectBackupFileFirst": "Silakan pilih file backup terlebih dahulu",
    "restorePageReload": "Database berhasil direstore! Silakan reload halaman.",
    "failedRestore": "Gagal restore",
    "enterTokenChatIdFirst": "Silakan masukkan Bot Token dan Chat ID terlebih dahulu",
    "failedTest": "Gagal melakukan test",
    "failedFetchEmailHistory": "Gagal memuat riwayat email",
    "createBackupConfirm": "Buat backup database sekarang? Proses ini mungkin memakan waktu beberapa menit.",
    "restoreDoubleConfirm": "PERINGATAN: Ini akan merestore database dan menimpa semua data yang ada. Apakah Anda yakin?",
    "deleteBackupConfirm": "Hapus Backup?",
    "deleteBackupFailed": "Gagal menghapus backup",
    "telegramTestSuccess": "Pesan test terkirim ke Telegram",
    "telegramTestFailed": "Gagal mengirim test message",
    "enableAutoBackupTelegram": "Auto Backup ke Telegram",
    "autoBackupTelegramDesc": "Kirim backup database otomatis ke Telegram",
    "cronSubtitle": "Tugas latar belakang dan pekerjaan terjadwal",
    "schedule": "Jadwal",
    "lastRun": "Terakhir Dijalankan",
    "nextRun": "Jadwal Berikutnya",
    "never": "Belum Pernah",
    "triggerNow": "Jalankan Sekarang",
    "last50Executions": "50 eksekusi terakhir",
    "startedAt": "Mulai",
    "completedAt": "Selesai",
    "result": "Hasil",
    "noExecutionHistory": "Belum ada riwayat eksekusi",
    "inProgress": "Sedang berjalan...",
    "disabled": "Nonaktif",
    "degraded": "Menurun",
    "unknown": "Tidak Diketahui",
    "type": "Tipe",
    "voucherSynced": "Sinkronisasi {count} voucher",
    "salesRecorded": "Tercatat {count} penjualan",
    "invoicesGenerated": "Dibuat {count} invoice",
    "remindersSent": "Terkirim {count} pengingat",
    "usersIsolated": "Diisolir {count} user expired",
    "sessionsDisconnected": "Terputus {count} sesi expired",
    "activityLogsCleaned": "Dibersihkan {count} activity log lama",
    "webhookLogsCleaned": "Dibersihkan {count} webhook log lama",
    "autoRenewalsProcessed": "Diproses {processed} auto-renewal, terbayar {paid}",
    "jobCompleted": "Job berhasil dijalankan!",
    "failedToTrigger": "Gagal menjalankan job",
    "invoiceGenerateDays": "Generate Invoice (hari sebelum jatuh tempo)",
    "invoiceGenerateDaysHelp": "Invoice akan otomatis dibuat X hari sebelum tanggal jatuh tempo pelanggan (1-30 hari)",
    "bankAccountsTitle": "Rekening Bank (untuk pembayaran manual)",
    "numberOfAccounts": "Jumlah Rekening:",
    "noAccounts": "Tidak ada",
    "accountsCount": "{count} rekening",
    "accountNumber": "Rekening #",
    "bankName": "Nama Bank",
    "bankNamePlaceholder": "BCA, Mandiri, BNI, dll",
    "accountNo": "Nomor Rekening",
    "ownerName": "Nama Pemilik",
    "ownerNamePlaceholder": "Nama sesuai rekening",
    "bankAccountsHelp": "Rekening ini akan ditampilkan pada halaman pembayaran manual pelanggan",
    "poweredBy": "Powered By",
    "poweredByHelp": "Teks yang ditampilkan di footer halaman login dan halaman publik",
    "timezoneWarningTitle": "PENTING:",
    "timezoneWarning1": "Environment variable (.env)",
    "timezoneWarning2": "Timezone utility (src/lib/timezone.ts)",
    "timezoneWarning3": "PM2 configuration (ecosystem.config.js)",
    "timezoneWarning4": "Aplikasi akan restart otomatis",
    "timezoneWarning5": "Semua timestamp akan disesuaikan ke zona waktu baru",
    "timezoneChangedNote": "Timezone berubah! Klik \"Simpan & Restart Services\" untuk menerapkan perubahan timezone ke server (PM2 & FreeRADIUS).",
    "saveAndRestart": "Simpan & Restart Services",
    "restarting": "Restarting...",
    "processing": "Memproses...",
    "savingAndApplying": "Menyimpan dan menerapkan perubahan timezone...",
    "companyNamePlaceholder": "Nama perusahaan Anda",
    "autoRestartFailed": "Gagal auto-restart layanan",
    "connectionsLabel": "Koneksi",
    "dailyOption": "Setiap Hari",
    "databaseSize": "Ukuran Database",
    "enableAutoBackup": "Aktifkan Auto Backup",
    "every12Hours": "Setiap 12 Jam",
    "every6Hours": "Setiap 6 Jam",
    "lastBackup": "Backup Terakhir",
    "restartManually": "Restart Manual",
    "servicesRestarting": "Layanan sedang direstart...",
    "tablesLabel": "Tabel",
    "timezoneApplied": "Timezone berhasil diterapkan",
    "uptimeLabel": "Uptime",
    "weeklySunday": "Setiap Minggu (Ahad)"
  },
  "genieacs": {
    "title": "Pengaturan GenieACS",
    "subtitle": "Konfigurasi koneksi ke server GenieACS TR-069",
    "active": "Aktif",
    "inactive": "Nonaktif",
    "device": "Device",
    "timestamp": "Waktu",
    "connected": "terhubung",
    "formatText": "Teks",
    "formatDbm": "dBm (Sinyal)",
    "formatCelsius": "Celsius (°C)",
    "formatVoltage": "Tegangan (V)",
    "formatBytes": "Bytes",
    "formatDatetime": "Tanggal & Waktu",
    "formatUptime": "Uptime",
    "formatStatus": "Status",
    "formatBoolean": "Boolean (Ya/Tidak)",
    "connectedToGenieacs": "Terhubung ke GenieACS",
    "viewDevices": "Lihat Devices",
    "serverConfiguration": "Konfigurasi Server",
    "enterCredentials": "Masukkan kredensial untuk terhubung ke GenieACS NBI API",
    "credentialsSaved": "Kredensial tersimpan. Kosongkan password jika tidak ingin mengubah.",
    "nbiApiInfo": "GenieACS NBI API",
    "nbiApiHelp": "Masukkan URL server GenieACS beserta port NBI (default: 7557). Contoh:",
    "serverUrl": "URL Server",
    "username": "Username",
    "password": "Password",
    "passwordUnchanged": "(tidak berubah)",
    "testConnection": "Test Koneksi",
    "saveSettings": "Simpan Pengaturan",
    "help": "Bantuan",
    "ensureAccessible": "Pastikan GenieACS NBI API dapat diakses dari server ini",
    "defaultPort": "Default port NBI API adalah 7557",
    "useTestConnection": "Gunakan Test Koneksi untuk memverifikasi kredensial sebelum menyimpan",
    "afterConfig": "Setelah konfigurasi berhasil, kelola devices di menu",
    "attention": "Perhatian",
    "requiredFields": "Host, username, dan password harus diisi",
    "enterUrlFirst": "Masukkan URL server terlebih dahulu",
    "connectionSuccess": "Koneksi Berhasil",
    "serverReachable": "Server GenieACS dapat dijangkau. {count} device terdaftar.",
    "connectionFailed": "Koneksi Gagal",
    "failedToConnect": "Gagal terhubung ke server",
    "settingsSaved": "Pengaturan GenieACS tersimpan",
    "saveFailed": "Gagal menyimpan pengaturan",
    "devicesTitle": "GenieACS Devices",
    "devicesSubtitle": "Kelola perangkat CPE via TR-069",
    "notConfigured": "GenieACS Belum Dikonfigurasi",
    "configureFirst": "Silakan konfigurasi koneksi GenieACS terlebih dahulu di halaman Settings.",
    "openSettings": "Buka Pengaturan",
    "settings": "Pengaturan",
    "ipTr069": "IP TR069",
    "rxPower": "RX Power",
    "searchDevices": "Cari serial, model, IP, PPPoE...",
    "serialNumber": "Serial Number",
    "ponMode": "PON Mode",
    "noDevices": "Tidak ada device",
    "devicesWillAppear": "Device akan muncul setelah terhubung ke GenieACS",
    "rebootDevice": "Reboot Device?",
    "rebootWarning": "Perangkat akan di-restart. Koneksi akan terputus sementara.",
    "yesReboot": "Ya, Reboot",
    "sendingReboot": "Mengirim perintah reboot",
    "rebootSent": "Perintah reboot terkirim",
    "failedSendCommand": "Gagal mengirim perintah",
    "syncDevice": "Sync Device...",
    "sendingConnectionRequest": "Mengirim connection request ke device",
    "connectionRequestSent": "Connection request dikirim ke device.",
    "deviceWillProcess": "Device akan memproses task pending dalam beberapa detik.",
    "failedSyncDevice": "Gagal sync device",
    "deleteDevice": "Hapus Device?",
    "deleteDeviceWarning": "Device akan dihapus dari GenieACS. Data tidak dapat dikembalikan.",
    "deviceDeleted": "Device dihapus",
    "failedDeleteDevice": "Gagal menghapus device",
    "refreshParameters": "Refresh Parameters?",
    "refreshParametersConfirm": "Refresh semua parameter dari device {serial}?",
    "sendingRefreshTask": "Mengirim task refresh ke device",
    "refreshTaskSent": "Refresh parameters task terkirim",
    "failedSendTask": "Gagal mengirim task",
    "failedSendRefresh": "Gagal mengirim perintah refresh",
    "failedGetDetail": "Gagal mengambil detail device",
    "deviceDetail": "Device Detail",
    "dualBand": "Dual Band",
    "forceSync": "Force Sync",
    "editWifi": "Edit WiFi",
    "deviceInformation": "Informasi Device",
    "productClass": "Kelas Produk",
    "oui": "OUI",
    "manufacturer": "Pabrikan",
    "hardwareVersion": "Versi Hardware",
    "softwareVersion": "Versi Software",
    "macAddress": "Alamat MAC",
    "connectionInfo": "Info Koneksi",
    "pppoeUsername": "Username PPPoE",
    "lastInform": "Inform Terakhir",
    "opticalInfo": "Info Optik",
    "txPower": "TX Power",
    "temperature": "Suhu",
    "voltage": "Tegangan",
    "lanInfo": "Info LAN",
    "lanIp": "IP LAN",
    "subnetMask": "Subnet Mask",
    "dhcpEnabled": "DHCP Aktif",
    "dhcpRange": "Rentang DHCP",
    "wifiNetworks": "Jaringan WiFi",
    "devicesConnected": "perangkat terhubung",
    "connectedDevices": "Perangkat Terhubung",
    "ipAddress": "Alamat IP",
    "interface": "Interface",
    "signal": "Sinyal",
    "unknown": "Tidak diketahui",
    "deviceNotFound": "Device tidak ditemukan",
    "editWifiConfiguration": "Edit WiFi Configuration",
    "configureWlan": "Configure WLAN settings for this device",
    "wlanIndex": "WLAN Index",
    "noSsid": "No SSID",
    "ssidName": "SSID (Nama WiFi)",
    "wifiName": "Nama WiFi",
    "currentSecurity": "Security saat ini:",
    "openNetworkWarning": "WiFi tanpa password - ubah security mode di GenieACS jika ingin menambah password",
    "wifiPassword": "Password WiFi",
    "passwordPlaceholder": "Password WiFi (8-63 karakter, kosongkan jika tidak ubah)",
    "leaveEmptyNoChange": "Kosongkan jika tidak ingin mengubah password",
    "wifiStatus": "WiFi Status",
    "enableDisableWifi": "Aktifkan atau nonaktifkan WiFi",
    "updateWifiConfig": "Update WiFi Config?",
    "securityModeNote": "Security mode tidak bisa diubah via UI",
    "wifiConfigSent": "Konfigurasi WiFi dikirim ke device",
    "taskSent": "Task Dikirim",
    "taskFailed": "Task gagal dieksekusi, cek halaman Tasks",
    "viewTasks": "Lihat Tasks",
    "failedUpdateWifi": "Gagal update WiFi config",
    "validationTitle": "Validasi",
    "ssidLength": "SSID harus 1-32 karakter",
    "passwordValidation": "Validasi Password",
    "passwordLength": "Password harus 8-63 karakter.",
    "currentPasswordLength": "Panjang password saat ini: {length} karakter",
    "leaveEmptyTip": "Kosongkan password jika tidak ingin mengubahnya",
    "tasksTitle": "GenieACS Tasks",
    "tasksSubtitle": "Monitor dan kelola task TR-069",
    "pending": "Pending",
    "fault": "Fault",
    "done": "Done",
    "searchTask": "Cari device ID atau task...",
    "clearFilter": "Clear Filter",
    "auto": "Auto",
    "autoRefreshActive": "Auto-refresh aktif (10s)",
    "autoRefreshInactive": "Auto-refresh nonaktif",
    "autoRefreshInfo": "Auto-refresh aktif - update setiap 10 detik",
    "taskId": "Task ID",
    "taskName": "Task Name",
    "retries": "Retries",
    "noTasks": "Tidak ada task",
    "retryTask": "Retry Task",
    "deleteTask": "Delete Task",
    "setParameterValues": "Set Parameter Values",
    "getParameterValues": "Get Parameter Values",
    "refreshObject": "Refresh Object",
    "factoryReset": "Factory Reset",
    "tasksPending": "Task Pending ({count}) - Menunggu Periodic Inform",
    "taskWillExecute": "Task akan dieksekusi saat device melakukan periodic inform ke GenieACS",
    "informInterval": "Interval inform biasanya: 30-300 detik (tergantung konfigurasi device)",
    "alternative1": "Alternatif 1: Klik Force Sync di Devices untuk trigger connection request",
    "alternative2": "Alternatif 2: Tunggu inform berikutnya (otomatis), lalu refresh halaman ini",
    "connectionRequestNote": "Connection request hanya bekerja jika device bisa di-reach dari server GenieACS",
    "aboutTasks": "Tentang Tasks",
    "taskDescription": "Task adalah perintah yang dikirim ke device via TR-069",
    "pendingTaskExec": "Task pending akan dieksekusi saat device melakukan connection request",
    "useForceSyncTip": "Gunakan Force Sync di Devices untuk trigger connection request",
    "faultTaskRetry": "Task dengan status fault dapat di-retry atau dihapus",
    "deleteTaskConfirm": "Hapus Task?",
    "taskWillBeDeleted": "Task akan dihapus dari queue",
    "taskDeleted": "Task dihapus",
    "failedDeleteTask": "Gagal menghapus task",
    "taskWillRetry": "Task akan di-retry",
    "taskWillBeRetried": "Task akan di-retry",
    "failedRetryTask": "Gagal retry task",
    "paramConfigTitle": "Konfigurasi Tampilan Parameter",
    "paramConfigSubtitle": "Sesuaikan parameter GenieACS mana yang ditampilkan dan bagaimana tampilannya",
    "saveOrder": "Simpan Urutan",
    "resetDefaults": "Reset Default",
    "caseSensitiveWarning": "Penting: Case Sensitivity Virtual Parameter",
    "caseSensitiveDesc": "Nama Virtual Parameter bersifat case-sensitive! Pastikan path parameter sama persis dengan definisi Virtual Parameter GenieACS Anda.",
    "manageVirtualParams": "Kelola Virtual Parameters",
    "deviceListParams": "Parameter Daftar Device",
    "deviceDetailParams": "Parameter Detail Device",
    "parameters": "parameter",
    "addParameter": "Tambah Parameter",
    "paths": "Paths",
    "format": "Format",
    "width": "Lebar",
    "displayOrder": "Urutan Tampilan",
    "createNewParam": "Buat Parameter Baru",
    "editParamConfig": "Edit Konfigurasi Parameter",
    "section": "Section",
    "parameterName": "Nama Parameter",
    "displayLabel": "Label Tampilan",
    "parameterPaths": "Path Parameter",
    "addPath": "Tambah Path",
    "quickAddVirtual": "Tambah Cepat dari Virtual Parameters",
    "selectToAdd": "-- Pilih untuk menambah Virtual Parameter --",
    "activeVirtualParams": "Virtual Parameters Aktif",
    "columnWidth": "Lebar Kolom (CSS)",
    "iconName": "Icon (Nama Lucide Icon)",
    "colorCoding": "Color Coding (JSON)",
    "saving": "Menyimpan...",
    "orderSaved": "Urutan berhasil disimpan!",
    "failedSaveOrder": "Gagal menyimpan urutan",
    "configDeleted": "Konfigurasi berhasil dihapus!",
    "failedDeleteConfig": "Gagal menghapus konfigurasi",
    "confirmDeleteParam": "Anda yakin ingin menghapus konfigurasi parameter ini?",
    "paramCreated": "Parameter berhasil dibuat!",
    "configSaved": "Konfigurasi berhasil disimpan!",
    "failedSaveConfig": "Gagal menyimpan",
    "resetConfirm": "Ini akan menghapus semua konfigurasi dan memuat ulang default. Lanjutkan?",
    "resetSuccess": "Konfigurasi berhasil direset ke default!",
    "failedReset": "Gagal mereset konfigurasi",
    "virtualParamsTitle": "Virtual Parameters",
    "virtualParamsSubtitle": "Kelola parameter virtual untuk GenieACS (name, path, dan expression)",
    "addVirtualParam": "Tambah Parameter",
    "whatIsVirtualParams": "Apa itu Virtual Parameters?",
    "virtualParamsDesc": "Virtual Parameters adalah parameter custom yang Anda definisikan untuk menghitung nilai dinamis dari device menggunakan JavaScript. Contoh: menghitung uptime, mengambil signal strength, atau menampilkan informasi custom.",
    "viewExamples": "Lihat contoh parameter →",
    "calcUptimeDesc": "Menghitung uptime device dalam detik",
    "getSignalDesc": "Mengambil signal strength (RX Power)",
    "getPppoeDesc": "Mengambil username PPPoE dari device",
    "parameterList": "Daftar Parameter",
    "activeCount": "aktif",
    "inactiveCount": "nonaktif",
    "noVirtualParams": "Belum ada parameter virtual",
    "createFirstParam": "Buat parameter pertama untuk mulai monitoring device dengan data custom",
    "addFirstParam": "Tambah Parameter Pertama",
    "deactivate": "Nonaktifkan",
    "activate": "Aktifkan",
    "editVirtualParam": "Edit Virtual Parameter",
    "addVirtualParamTitle": "Tambah Virtual Parameter",
    "fillPathExpression": "Isi path dan expression sesuai konfigurasi GenieACS",
    "basicSettings": "Basic Settings",
    "displaySettings": "Display Settings",
    "paramNameLabel": "Nama",
    "paramNamePlaceholder": "Contoh: Signal Strength",
    "paramNameHint": "Nama deskriptif yang mudah dipahami",
    "parameterPath": "Parameter Path",
    "parameterPathHint": "Format: VirtualParameters.namaParameter (gunakan camelCase)",
    "expression": "Expression",
    "expressionHint": "Isi dengan expression virtual parameter GenieACS (JavaScript).",
    "viewExpressionExamples": "Lihat contoh expression",
    "descriptionOptional": "Deskripsi (opsional)",
    "descriptionPlaceholder": "Contoh: Menghitung uptime device dalam detik sejak boot terakhir",
    "activateThisParam": "Aktifkan parameter ini",
    "tips": "Tips:",
    "tipDeclare": "Gunakan declare() untuk mengambil nilai dari device",
    "tipDefault": "Selalu sediakan default value dengan || \"default\"",
    "tipTest": "Test parameter dengan status nonaktif terlebih dahulu",
    "tipDescription": "Simpan dengan deskripsi yang jelas untuk dokumentasi",
    "displayType": "Display Type",
    "displayOrderLabel": "Display Order",
    "displayOrderHint": "Urutan tampilan (kecil ke besar)",
    "color": "Color",
    "unitOptional": "Unit (optional)",
    "categoryOptional": "Category (optional)",
    "categoryHint": "Group parameter untuk organisasi lebih baik",
    "iconOptional": "Icon (optional)",
    "iconHint": "Nama icon dari lucide-react",
    "showInSummary": "Show in device summary",
    "displayOptions": "Display Options:",
    "cardDesc": "Card dengan border berwarna",
    "badgeDesc": "Badge inline kecil",
    "meterDesc": "Progress bar untuk nilai numerik",
    "listDesc": "Item list sederhana",
    "saveChanges": "Simpan Perubahan",
    "paramSaved": "Virtual parameter berhasil disimpan!",
    "failedSaveParam": "Gagal menyimpan virtual parameter",
    "deleteParamConfirm": "Hapus parameter?",
    "deleteParamWarning": "Anda akan menghapus {name}. Tindakan ini tidak dapat dibatalkan",
    "yesDeleteIt": "Ya, hapus",
    "failedDeleteParam": "Gagal menghapus parameter",
    "failedChangeStatus": "Gagal mengubah status",
    "failedLoadConfig": "Gagal memuat konfigurasi",
    "failedToggle": "Gagal mengubah status parameter",
    "labelRequired": "Label wajib diisi",
    "paramNameRequired": "Nama parameter wajib diisi",
    "pathRequired": "Minimal satu parameter path diperlukan",
    "deviceName": "Nama Perangkat",
    "dns": "DNS",
    "pppoeIp": "IP PPPoE",
    "tr069Ip": "IP TR-069"
  },
  "isolation": {
    "title": "Pengaturan Isolasi",
    "subtitle": "Konfigurasi sistem isolasi untuk user yang masa berlanggananya habis",
    "settingsSaved": "Pengaturan isolasi berhasil disimpan",
    "failedLoad": "Gagal memuat pengaturan",
    "failedSave": "Gagal menyimpan pengaturan",
    "aboutSystem": "Tentang Sistem Isolasi",
    "aboutSystemDesc": "Sistem isolasi memblokir akses internet user yang expired. User akan dialihkan ke halaman landing untuk melakukan pembayaran.",
    "generalSettings": "Pengaturan Umum",
    "enableAutoIsolation": "Aktifkan Auto Isolasi",
    "autoIsolateDesc": "Isolir otomatis user yang expired setiap jam",
    "gracePeriod": "Grace Period (Masa Tenggang)",
    "days": "hari",
    "gracePeriodHint": "User akan diisolir setelah grace period berakhir (0 = langsung setelah expired)",
    "networkSettings": "Pengaturan Network",
    "ipPoolLabel": "IP Pool untuk User Isolir",
    "ipPoolHint": "Format CIDR (contoh: 192.168.200.0/24). Pool ini harus dikonfigurasi di MikroTik.",
    "serverIpLabel": "IP Server (untuk MikroTik NAT)",
    "serverIpHint": "IP address VPS/billing server. Digunakan di script MikroTik NAT redirect. MikroTik tidak bisa menggunakan hostname, harus IP address.",
    "rateLimit": "Rate Limit (Bandwidth)",
    "rateLimitHint": "Format: upload/download (contoh: 64k/64k, 128k/128k, 1M/1M)",
    "accessControl": "Kontrol Akses",
    "allowDns": "Izinkan DNS",
    "allowDnsDesc": "User dapat resolve domain name (diperlukan untuk redirect)",
    "allowPayment": "Izinkan Akses Payment",
    "allowPaymentDesc": "User dapat akses halaman pembayaran",
    "landingPage": "Halaman Isolir",
    "redirectUrl": "URL Redirect (Opsional)",
    "redirectUrlHint": "URL custom untuk redirect user yang diisolir. Kosongkan untuk default.",
    "customMessage": "Pesan Custom",
    "customMessagePlaceholder": "Pesan yang ditampilkan di halaman isolir",
    "customMessageHint": "Pesan ini akan ditampilkan kepada user yang diisolir",
    "notifications": "Notifikasi",
    "whatsappNotification": "Notifikasi WhatsApp",
    "whatsappNotificationDesc": "Kirim notifikasi WhatsApp saat user diisolir",
    "emailNotification": "Notifikasi Email",
    "emailNotificationDesc": "Kirim notifikasi Email saat user diisolir",
    "saving": "Menyimpan...",
    "saveSettings": "Simpan Pengaturan",
    "resetToDefault": "Reset ke Default",
    "mikrotikConfigRequired": "Konfigurasi MikroTik Diperlukan",
    "mikrotikConfigDesc": "Setelah mengubah pengaturan, konfigurasikan MikroTik Anda:",
    "mikrotikStep1": "Buat PPP Profile dengan nama",
    "mikrotikStep2": "Buat IP Pool:",
    "mikrotikStep3": "Set rate limit:",
    "mikrotikStep4": "Konfigurasi firewall untuk redirect (opsional)",
    "viewFullDocs": "Lihat dokumentasi lengkap →",
    "templatesTitle": "Template Isolasi",
    "templatesSubtitle": "Kelola template pesan dan halaman isolasi untuk user yang expired",
    "templateUpdated": "Template berhasil diperbarui",
    "failedLoadTemplates": "Gagal memuat template",
    "failedSaveTemplate": "Gagal menyimpan template",
    "dynamicVariables": "Template dengan Variabel Dinamis",
    "dynamicVariablesDesc": "Setiap template mendukung variabel dinamis seperti nama customer, username, tanggal expired, dll. Klik edit untuk menyesuaikan template sesuai kebutuhan Anda.",
    "editTemplate": "Edit Template:",
    "whatsappTemplateDesc": "Template notifikasi WhatsApp",
    "emailTemplateDesc": "Template email HTML",
    "htmlPageTemplateDesc": "Template halaman landing isolasi",
    "preview": "Preview",
    "editor": "Editor",
    "desktopView": "Tampilan desktop",
    "tabletView": "Tampilan tablet",
    "mobileView": "Tampilan mobile",
    "fullWidth": "Lebar Penuh",
    "availableVariables": "Variabel yang Tersedia",
    "insertVariable": "Sisipkan Variabel",
    "companyName": "Nama perusahaan",
    "customerName": "Nama customer",
    "username": "Username PPPoE",
    "phoneNumber": "Nomor HP customer",
    "expiredDate": "Tanggal expired",
    "gracePeriodEnd": "Akhir grace period",
    "totalUnpaid": "Total tagihan belum dibayar",
    "paymentLink": "Link pembayaran",
    "companyPhone": "Telepon perusahaan",
    "companyWhatsapp": "WhatsApp perusahaan",
    "companyEmail": "Email perusahaan",
    "companyWebsite": "Website perusahaan",
    "qrCodeImage": "URL QR Code image",
    "saveTemplate": "Simpan Template",
    "tipsWhatsapp": "Gunakan teks singkat dan jelas",
    "tipsEmail": "Gunakan inline CSS untuk email",
    "tipsTest": "Test di berbagai device (responsive)",
    "tipsQr": "Tambahkan QR code dengan variabel qrCodeImage",
    "active": "Aktif",
    "inactive": "Nonaktif",
    "subject": "Subject",
    "previewLabel": "Preview:",
    "mikrotikTitle": "MikroTik Setup & Tutorial",
    "mikrotikSubtitle": "Script otomatis untuk konfigurasi sistem isolasi di MikroTik Router",
    "autoScriptBanner": "Script Otomatis Berdasarkan Pengaturan Anda",
    "autoScriptDesc": "Script di bawah ini dibuat otomatis berdasarkan pengaturan isolasi Anda. Copy dan paste ke MikroTik Terminal atau download sebagai file .rsc",
    "currentSettings": "Pengaturan Saat Ini",
    "quickActions": "Quick Actions",
    "downloadCompleteScript": "Download Complete Script",
    "copyAllScripts": "Copy All Scripts",
    "createIpPool": "1. Buat IP Pool",
    "createIpPoolDesc": "Buat IP pool untuk user yang diisolir",
    "createPppProfile": "2. PPP Profile",
    "createPppProfileDesc": "Buat PPP profile untuk user yang diisolir",
    "firewallFilter": "3. Firewall Filter",
    "firewallFilterDesc": "Izinkan DNS & Payment, blokir akses lainnya",
    "firewallNat": "4. NAT Redirect",
    "firewallNatDesc": "Redirect HTTP/HTTPS ke halaman landing",
    "completeScript": "5. Script Lengkap",
    "completeScriptDesc": "Semua script digabung dalam satu file",
    "tutorialTitle": "Tutorial Langkah demi Langkah",
    "tutorialStep1": "Hubungkan ke MikroTik",
    "tutorialStep1Desc": "Akses MikroTik via WinBox atau SSH/Terminal",
    "tutorialStep2": "Copy & Paste Script",
    "tutorialStep2Desc": "Copy script di atas dan paste ke terminal MikroTik (atau upload file .rsc)",
    "tutorialStep3": "Verifikasi Konfigurasi",
    "tutorialStep3Desc": "Pastikan semua konfigurasi sudah berjalan",
    "tutorialStep4": "Test dengan User",
    "tutorialStep4Desc": "Set user ke expired dan trigger auto isolir untuk test",
    "tutorialStep5": "Monitor & Troubleshoot",
    "tutorialStep5Desc": "Monitor active connections dan log",
    "tipsTitle": "Tips & Best Practices",
    "tipBackup": "Backup konfigurasi MikroTik sebelum apply script",
    "tipTestFirst": "Test dengan 1-2 user dulu sebelum mass implementation",
    "tipMonitorLog": "Monitor log untuk troubleshooting",
    "tipAdjustFirewall": "Adjust firewall rules sesuai kebutuhan network Anda",
    "tipCheckBaseUrl": "Pastikan base URL server sudah benar di pengaturan"
  },
  "paymentGateway": {
    "title": "Payment Gateway",
    "subtitle": "Kelola integrasi payment gateway",
    "webhookUrl": "Webhook URL",
    "webhookNote": "URL ini berlaku untuk Midtrans, Xendit & Duitku",
    "webhookLogs": "Webhook Logs",
    "allGateways": "Semua Gateway",
    "allStatus": "Semua Status",
    "noLogs": "Tidak ada log",
    "logDetail": "Webhook Log Detail",
    "timestamp": "Timestamp",
    "gateway": "Gateway",
    "orderId": "Order ID",
    "transactionId": "Transaction ID",
    "amount": "Amount",
    "result": "Result",
    "payload": "Payload",
    "response": "Response",
    "enableMidtrans": "Aktifkan Midtrans",
    "snapPayment": "Snap payment gateway",
    "enableXendit": "Aktifkan Xendit",
    "xenditDesc": "Payment gateway Indonesia",
    "enableDuitku": "Aktifkan Duitku",
    "duitkuDesc": "Payment gateway Indonesia",
    "environment": "Environment",
    "clientKey": "Client Key",
    "serverKey": "Server Key",
    "apiKey": "API Key",
    "secretKey": "Secret Key",
    "webhookToken": "Webhook Token",
    "merchantCode": "Merchant Code",
    "saveMidtrans": "Simpan Midtrans",
    "saveXendit": "Simpan Xendit",
    "saveDuitku": "Simpan Duitku",
    "configSaved": "konfigurasi disimpan",
    "failedToSave": "Gagal menyimpan config",
    "failedToLoad": "Gagal memuat konfigurasi payment gateway",
    "failedCopyWebhook": "Gagal menyalin webhook URL",
    "webhookCopied": "Webhook URL disalin!",
    "amountLabel": "Jumlah",
    "apiKeyLabel": "API Key",
    "apiKeySimple": "API Key",
    "clientKeyLabel": "Client Key",
    "detailLabel": "Detail",
    "enableTripay": "Aktifkan Tripay",
    "environmentLabel": "Environment",
    "errorLabel": "Error",
    "gatewayLabel": "Payment Gateway",
    "merchantCodeLabel": "Merchant Code",
    "orderIdLabel": "Order ID",
    "payloadLabel": "Payload",
    "paymentGatewayId": "ID Gateway",
    "privateKeyLabel": "Private Key",
    "responseLabel": "Response",
    "serverKeyLabel": "Server Key",
    "snapDesc": "Snap Popup – tampilkan semua metode pembayaran Midtrans dalam satu popup",
    "successLabel": "Sukses",
    "timestampLabel": "Waktu",
    "transactionIdLabel": "ID Transaksi",
    "webhookTokenLabel": "Webhook Token"
  },
  "management": {
    "title": "Manajemen Pengguna",
    "subtitle": "Kelola admin, operator, dan akses sistem",
    "addUser": "Tambah User",
    "editUser": "Edit User",
    "deleteUser": "Hapus User",
    "addNewUser": "Tambah User Baru",
    "username": "Username",
    "name": "Nama",
    "email": "Email",
    "password": "Password",
    "passwordHint": "kosongkan jika tidak ingin diubah",
    "role": "Peran",
    "permissions": "Izin",
    "lastLogin": "Login Terakhir",
    "createdAt": "Dibuat",
    "superAdmin": "Super Admin",
    "finance": "Keuangan",
    "customerService": "Customer Service",
    "technician": "Teknisi",
    "marketing": "Marketing",
    "viewer": "Viewer",
    "totalUsers": "Total Users",
    "noUsersFound": "Belum ada user terdaftar",
    "noPermissions": "Tidak ada permission tersedia",
    "deleteConfirm": "Hapus User?",
    "deleteMessage": "User akan dihapus permanen",
    "deleteTooltip": "Hapus",
    "userCreated": "User berhasil dibuat!",
    "userUpdated": "User berhasil diperbarui!",
    "userDeleted": "User berhasil dihapus!",
    "deleteUserConfirmMsg": "Hapus? Ini akan menghapus user dari RADIUS.",
    "editTooltip": "Edit",
    "failedSaveUser": "Gagal menyimpan user",
    "phoneNumber": "Nomor HP",
    "phoneWhatsapp": "Nomor HP / WhatsApp",
    "phoneWhatsappHint": "untuk login OTP",
    "phoneWhatsappPlaceholder": "08xxxxxxxxxx",
    "saveChanges": "Simpan Perubahan",
    "roleAutoLoad": "Permission akan otomatis dimuat sesuai role yang dipilih"
  },
  "notifications": {
    "title": "Notifikasi",
    "manageAll": "Kelola semua notifikasi Anda",
    "unread": "Belum Dibaca",
    "markAllRead": "Tandai Semua Dibaca",
    "markRead": "Tandai Dibaca",
    "markedAsRead": "Ditandai Dibaca",
    "allMarkedAsRead": "Semua Ditandai Dibaca",
    "notificationMarked": "notifikasi ditandai dibaca",
    "notificationsMarked": "notifikasi ditandai dibaca",
    "allNotificationsMarked": "Semua notifikasi sudah ditandai dibaca",
    "notificationDeleted": "Notifikasi berhasil dihapus",
    "notificationsDeleted": "notifikasi berhasil dihapus",
    "markReadFailed": "Gagal menandai notifikasi",
    "markAllFailed": "Gagal menandai semua notifikasi",
    "deleteFailed": "Gagal menghapus notifikasi",
    "noNotifications": "Tidak ada notifikasi",
    "allRead": "Semua sudah dibaca!",
    "noNotificationsYet": "Belum ada notifikasi",
    "categories": {
      "all": "Semua",
      "unread": "Belum Dibaca",
      "invoice_overdue": "Invoice Jatuh Tempo",
      "invoice_generated": "Invoice Dibuat",
      "new_registration": "Pendaftaran Baru",
      "payment_received": "Pembayaran Diterima",
      "manual_payment_submitted": "Bukti Bayar Masuk",
      "manual_payment_approved": "Bukti Bayar Disetujui",
      "manual_payment_rejected": "Bukti Bayar Ditolak",
      "user_expired": "User Kadaluarsa",
      "package_change_request": "Permintaan Ganti Paket",
      "agent_deposit": "Deposit Agen",
      "agent_voucher_generated": "Voucher Agen Dibuat",
      "agent_balance_adjustment": "Penyesuaian Saldo Agen",
      "system_alert": "Peringatan Sistem",
      "leave_request": "Pengajuan Cuti",
      "overtime_request": "Pengajuan Lembur",
      "loan_request": "Pengajuan Kasbon",
      "technician_help": "Teknisi Butuh Bantuan"
    },
    "success": "Berhasil",
    "error": "Kesalahan",
    "warning": "Peringatan",
    "info": "Informasi",
    "saved": "Berhasil disimpan",
    "deleted": "Berhasil dihapus",
    "updated": "Berhasil diperbarui",
    "created": "Berhasil dibuat",
    "copied": "Berhasil disalin",
    "sent": "Berhasil dikirim",
    "failed": "Gagal",
    "connectionError": "Kesalahan koneksi",
    "serverError": "Kesalahan server",
    "validationError": "Kesalahan validasi",
    "unauthorized": "Tidak diizinkan",
    "notFound": "Tidak ditemukan",
    "confirmDelete": "Apakah Anda yakin ingin menghapus?",
    "confirmAction": "Apakah Anda yakin ingin melakukan aksi ini?",
    "noChanges": "Tidak ada perubahan",
    "loading": "Memuat...",
    "processing": "Memproses...",
    "pleaseWait": "Mohon tunggu...",
    "radiusRestarted": "RADIUS berhasil di-restart",
    "topup": "Top-Up"
  },
  "errors": {
    "required": "{field} wajib diisi",
    "invalid": "{field} tidak valid",
    "minLength": "{field} minimal {min} karakter",
    "maxLength": "{field} maksimal {max} karakter",
    "email": "Format email tidak valid",
    "phone": "Format telepon tidak valid",
    "password": "Password minimal 6 karakter",
    "passwordMatch": "Password tidak cocok",
    "unique": "{field} sudah digunakan",
    "notFound": "{item} tidak ditemukan",
    "unauthorized": "Anda tidak memiliki akses",
    "serverError": "Terjadi kesalahan server",
    "networkError": "Kesalahan jaringan",
    "timeout": "Waktu habis",
    "unknown": "Terjadi kesalahan",
    "restartFailed": "Gagal me-restart RADIUS server"
  },
  "table": {
    "showing": "Menampilkan",
    "of": "dari",
    "entries": "entri",
    "page": "Halaman",
    "rowsPerPage": "Baris per halaman",
    "noResults": "Tidak ada hasil",
    "searchPlaceholder": "Cari...",
    "sortBy": "Urutkan berdasarkan",
    "ascending": "Naik",
    "descending": "Turun"
  },
  "time": {
    "today": "Hari Ini",
    "yesterday": "Kemarin",
    "thisWeek": "Minggu Ini",
    "thisMonth": "Bulan Ini",
    "thisYear": "Tahun Ini",
    "lastWeek": "Minggu Lalu",
    "lastMonth": "Bulan Lalu",
    "lastYear": "Tahun Lalu",
    "custom": "Kustom",
    "from": "Dari",
    "to": "Sampai",
    "hours": "jam",
    "minutes": "menit",
    "seconds": "detik",
    "days": "hari",
    "weeks": "minggu",
    "months": "bulan",
    "years": "tahun"
  },
  "system": {
    "radius": "RADIUS",
    "database": "Database",
    "api": "API",
    "online": "Online",
    "offline": "Offline",
    "connected": "Terhubung",
    "disconnected": "Terputus",
    "running": "Berjalan",
    "stopped": "Berhenti",
    "restart": "Restart",
    "uptime": "Uptime",
    "error": "Terjadi kesalahan",
    "title": "Informasi Sistem",
    "subtitle": "Versi, commit, dan panduan update manual via SSH",
    "version": "Versi",
    "commit": "Commit",
    "remoteCommit": "Commit Remote",
    "checkUpdate": "Cek Pembaruan",
    "applyUpdate": "Terapkan Update",
    "forceUpdate": "Paksa Build Ulang",
    "showLastLog": "Log Terakhir",
    "refresh": "Refresh",
    "checking": "Mengecek...",
    "updating": "Memperbarui...",
    "upToDate": "Sudah versi terbaru!",
    "updateAvailable": "Ada pembaruan tersedia",
    "updateSuccess": "Update berhasil diselesaikan!",
    "restarting": "Server sedang restart, harap tunggu...",
    "updateLog": "Log Update",
    "waitingLog": "Menunggu output update...",
    "restartRadius": "Restart RADIUS?",
    "restartRadiusWarning": "Ini akan memutuskan sementara semua sesi aktif."
  },
  "inventory": {
    "items": "Barang",
    "itemsDesc": "Kelola daftar barang inventori",
    "movements": "Mutasi Stok",
    "movementsDesc": "Catat semua pergerakan stok masuk dan keluar",
    "categories": "Kategori",
    "categoriesDesc": "Kelola kategori barang",
    "suppliers": "Supplier",
    "suppliersDesc": "Kelola data supplier",
    "addItem": "Tambah Barang",
    "editItem": "Edit Barang",
    "deleteItem": "Hapus Barang",
    "deleteItemConfirm": "Yakin ingin menghapus barang \"{{name}}\"?",
    "itemCreated": "Barang berhasil dibuat!",
    "itemUpdated": "Barang berhasil diperbarui!",
    "itemDeleted": "Barang berhasil dihapus!",
    "addCategory": "Tambah Kategori",
    "editCategory": "Edit Kategori",
    "deleteCategory": "Hapus Kategori",
    "deleteCategoryConfirm": "Yakin ingin menghapus kategori \"{{name}}\"?",
    "categoryCreated": "Kategori berhasil dibuat!",
    "categoryUpdated": "Kategori berhasil diperbarui!",
    "categoryDeleted": "Kategori berhasil dihapus!",
    "categoryNameRequired": "Nama kategori wajib diisi",
    "addSupplier": "Tambah Supplier",
    "editSupplier": "Edit Supplier",
    "deleteSupplier": "Hapus Supplier",
    "deleteSupplierConfirm": "Yakin ingin menghapus supplier \"{{name}}\"?",
    "supplierCreated": "Supplier berhasil dibuat!",
    "supplierUpdated": "Supplier berhasil diperbarui!",
    "supplierDeleted": "Supplier berhasil dihapus!",
    "supplierNameRequired": "Nama supplier wajib diisi",
    "recordMovement": "Catat Pergerakan",
    "movementCreated": "Pergerakan stok berhasil dicatat!",
    "failedLoadData": "Gagal memuat data",
    "itemQtyRequired": "Barang dan Jumlah wajib diisi",
    "failedRecordMovement": "Gagal mencatat pergerakan",
    "sku": "SKU",
    "itemName": "Nama Barang",
    "category": "Kategori",
    "supplier": "Supplier",
    "supplierName": "Nama Supplier",
    "unit": "Satuan",
    "stock": "Stok",
    "currentStock": "Stok Saat Ini",
    "minimumStock": "Stok Minimum",
    "purchasePrice": "Harga Beli",
    "sellingPrice": "Harga Jual",
    "location": "Lokasi",
    "notes": "Catatan",
    "contactName": "Nama Kontak",
    "contact": "Kontak",
    "itemCount": "Jumlah Barang",
    "totalItems": "Total Barang",
    "lowStock": "Stok Rendah",
    "outOfStock": "Stok Habis",
    "inStock": "Stok Tersedia",
    "totalValue": "Total Nilai",
    "allCategories": "Semua Kategori",
    "allSuppliers": "Semua Supplier",
    "allItems": "Semua Barang",
    "allTypes": "Semua Tipe",
    "stockIn": "Stok Masuk",
    "stockOut": "Stok Keluar",
    "adjustment": "Penyesuaian",
    "movementType": "Tipe Pergerakan",
    "quantity": "Jumlah",
    "previousStock": "Stok Sebelum",
    "newStock": "Stok Baru",
    "referenceNo": "No Referensi",
    "totalMovements": "Total Pergerakan",
    "noItems": "Belum ada barang. Buat barang pertama Anda!",
    "noCategories": "Belum ada kategori. Buat kategori pertama Anda!",
    "noSuppliers": "Belum ada supplier. Tambahkan supplier pertama Anda!",
    "noMovements": "Belum ada pergerakan stok",
    "searchItems": "Cari berdasarkan nama atau SKU...",
    "selectItem": "Pilih Barang",
    "selectCategory": "Pilih Kategori",
    "selectSupplier": "Pilih Supplier",
    "skuRequired": "SKU wajib diisi",
    "itemNameRequired": "Nama barang wajib diisi",
    "stockInDesc": "Stok Masuk (Pembelian/Retur)",
    "stockOutDesc": "Stok Keluar (Penjualan/Pemakaian)",
    "adjustmentDesc": "Penyesuaian (Koreksi)",
    "enterNewStock": "Masukkan total stok baru",
    "total": "Total",
    "user": "User",
    "descriptionLabel": "Deskripsi",
    "itemLabel": "Item",
    "notesLabel": "Catatan",
    "quantityLabel": "Jumlah",
    "recordStockMovement": "Catat Pergerakan Stok"
  },
  "technician": {
    "login": "Login Teknisi",
    "loginDesc": "Masukkan nomor WhatsApp Anda untuk login",
    "phoneNumber": "Nomor WhatsApp",
    "phoneHelp": "Contoh: 08123456789 atau 628123456789",
    "sendOtp": "Kirim Kode OTP",
    "otpCode": "Kode OTP",
    "otpSent": "Kode OTP telah dikirim ke WhatsApp Anda",
    "otpHelp": "Masukkan 6 digit kode OTP yang dikirim ke WhatsApp Anda",
    "verify": "Verifikasi",
    "resendOtp": "Kirim Ulang Kode OTP",
    "otpFailed": "Gagal mengirim OTP",
    "invalidOtp": "Kode OTP tidak valid atau sudah kadaluarsa",
    "loginFooter": "Sistem Akses Teknisi - SurgaNet",
    "dashboard": "Dashboard Teknisi",
    "totalTasks": "Total Tugas",
    "openTasks": "Tugas Terbuka",
    "activeTasks": "Tugas Aktif",
    "completedTasks": "Selesai",
    "allStatus": "Semua Status",
    "statusOpen": "Terbuka",
    "statusAssigned": "Ditugaskan",
    "statusInProgress": "Sedang Dikerjakan",
    "statusCompleted": "Selesai",
    "statusCancelled": "Dibatalkan",
    "allPriority": "Semua Prioritas",
    "priorityUrgent": "Mendesak",
    "priorityHigh": "Tinggi",
    "priorityMedium": "Sedang",
    "priorityLow": "Rendah",
    "myTasksOnly": "Tugas Saya Saja",
    "noTasks": "Tidak ada tugas ditemukan",
    "issueType": "Jenis Masalah",
    "assignedTo": "Ditugaskan ke",
    "takeTask": "Ambil Tugas",
    "startTask": "Mulai Kerjakan",
    "completeTask": "Selesaikan Tugas",
    "cancelTask": "Batalkan Tugas",
    "management": "Kelola Teknisi",
    "managementDesc": "Kelola daftar teknisi dan akses mereka",
    "totalTechnicians": "Total Teknisi",
    "activeTechnicians": "Teknisi Aktif",
    "inactiveTechnicians": "Teknisi Nonaktif",
    "searchTechnicians": "Cari berdasarkan nama, telepon, atau email...",
    "addTechnician": "Tambah Teknisi",
    "editTechnician": "Edit Teknisi",
    "deleteTechnician": "Hapus Teknisi",
    "deleteTechnicianConfirm": "Apakah Anda yakin ingin menghapus teknisi {name}? Teknisi dengan tugas aktif tidak dapat dihapus.",
    "technicianCreated": "Teknisi berhasil ditambahkan",
    "technicianUpdated": "Teknisi berhasil diperbarui",
    "technicianDeleted": "Teknisi berhasil dihapus",
    "namePhoneRequired": "Nama dan nomor telepon wajib diisi",
    "contact": "Kontak",
    "workOrders": "Tugas Kerja",
    "lastLogin": "Login Terakhir",
    "noTechnicians": "Belum ada teknisi terdaftar",
    "tasks": "Tugas",
    "requireOtp": "Wajib OTP untuk Login",
    "requireOtpHelp": "Jika diaktifkan, teknisi harus verifikasi dengan kode OTP setiap login. Jika dinonaktifkan, teknisi bisa login langsung tanpa OTP."
  },
  "task": {
    "manageTasks": "Kelola Tugas",
    "manageTasksDesc": "Buat dan kelola tugas untuk teknisi",
    "createTask": "Buat Tugas",
    "editTask": "Edit Tugas",
    "deleteTask": "Hapus Tugas",
    "deleteTaskConfirm": "Apakah Anda yakin ingin menghapus tugas untuk {customer}?",
    "taskCreated": "Tugas berhasil dibuat",
    "taskUpdated": "Tugas berhasil diperbarui",
    "taskDeleted": "Tugas berhasil dihapus",
    "fillRequired": "Mohon lengkapi semua field yang wajib diisi",
    "searchTasks": "Cari tugas...",
    "noTasks": "Belum ada tugas",
    "allStatuses": "Semua Status",
    "allPriorities": "Semua Prioritas",
    "customerName": "Nama Pelanggan",
    "customerPhone": "No. Telepon Pelanggan",
    "customerAddress": "Alamat Pelanggan",
    "issueType": "Jenis Masalah",
    "description": "Deskripsi",
    "priority": "Prioritas",
    "status": "Status",
    "assignTechnician": "Assign Teknisi",
    "assignToTech": "Assign ke Teknisi",
    "assignToTechDesc": "Kelola assignment tugas ke teknisi",
    "unassigned": "Belum Di-assign",
    "scheduledDate": "Jadwal",
    "estimatedHours": "Estimasi Jam",
    "notes": "Catatan",
    "technicianNotes": "Catatan Teknisi",
    "activeTasks": "tugas aktif",
    "openTasks": "Tugas Terbuka",
    "inProgress": "Dalam Proses",
    "completed": "Selesai",
    "urgent": "Mendesak",
    "urgentTasks": "Tugas Mendesak",
    "status_OPEN": "Terbuka",
    "status_ASSIGNED": "Di-assign",
    "status_IN_PROGRESS": "Dalam Proses",
    "status_COMPLETED": "Selesai",
    "status_CANCELLED": "Dibatalkan",
    "priority_LOW": "Rendah",
    "priority_MEDIUM": "Sedang",
    "priority_HIGH": "Tinggi",
    "priority_URGENT": "Mendesak",
    "issueType_CONNECTION": "Koneksi",
    "issueType_SLOW_SPEED": "Kecepatan Lambat",
    "issueType_NO_INTERNET": "Tidak Ada Internet",
    "issueType_DEVICE_ISSUE": "Masalah Perangkat",
    "issueType_INSTALLATION": "Instalasi",
    "issueType_MAINTENANCE": "Perawatan",
    "issueType_OTHER": "Lainnya",
    "myTasks": "Tugas Saya",
    "updateStatus": "Update Status",
    "startTask": "Mulai Tugas",
    "completeTask": "Selesaikan Tugas",
    "cancelTask": "Batalkan Tugas"
  },
  "ticket": {
    "tickets": "Ticket",
    "myTickets": "Ticket Saya",
    "createTicket": "Buat Ticket",
    "ticketDetails": "Detail Ticket",
    "ticketNumber": "Nomor Ticket",
    "subject": "Subjek",
    "description": "Deskripsi",
    "category": "Kategori",
    "priority": "Prioritas",
    "status": "Status",
    "customer": "Pelanggan",
    "customerName": "Nama Pelanggan",
    "customerPhone": "No. HP Pelanggan",
    "customerEmail": "Email Pelanggan",
    "assignedTo": "Di-assign ke",
    "assigned": "Ditugaskan",
    "unassigned": "Belum Ditugaskan",
    "createdAt": "Dibuat",
    "created": "Dibuat",
    "lastResponse": "Respon Terakhir",
    "messages": "Pesan",
    "message": "Pesan",
    "reply": "Balas",
    "addReply": "Tambah Balasan",
    "sendReply": "Kirim Balasan",
    "internalNote": "Catatan Internal",
    "internal": "Internal",
    "publicReply": "Balasan Publik",
    "close": "Tutup Ticket",
    "closed": "Ditutup",
    "reopen": "Buka Kembali",
    "assign": "Tugaskan",
    "assignTo": "Tugaskan ke",
    "noTickets": "Belum ada ticket",
    "noTicketsDescription": "Anda belum memiliki ticket support",
    "noTicketsFound": "Tidak ada ticket ditemukan",
    "createFirstTicket": "Buat Ticket Pertama",
    "ticketCreated": "Ticket Berhasil Dibuat",
    "ticketUpdated": "Ticket Berhasil Diperbarui",
    "replyAdded": "Balasan Berhasil Ditambahkan",
    "replyFailed": "Gagal mengirim balasan",
    "updateFailed": "Gagal memperbarui ticket",
    "createFailed": "Gagal membuat ticket",
    "saveFailed": "Gagal menyimpan",
    "deleteFailed": "Gagal menghapus",
    "status_OPEN": "Terbuka",
    "status_IN_PROGRESS": "Dalam Proses",
    "status_WAITING_CUSTOMER": "Menunggu Pelanggan",
    "status_RESOLVED": "Terselesaikan",
    "status_CLOSED": "Ditutup",
    "priority_LOW": "Rendah",
    "priority_MEDIUM": "Sedang",
    "priority_HIGH": "Tinggi",
    "priority_URGENT": "Mendesak",
    "senderType_CUSTOMER": "Pelanggan",
    "senderType_ADMIN": "Admin",
    "senderType_TECHNICIAN": "Teknisi",
    "senderType_SYSTEM": "Sistem",
    "categories": "Kategori",
    "ticketCategories": "Kategori Ticket",
    "manageCategories": "Kelola Kategori",
    "manageCategoriesDescription": "Kelola kategori untuk mengorganisir ticket support",
    "addCategory": "Tambah Kategori",
    "editCategory": "Edit Kategori",
    "deleteCategory": "Hapus Kategori",
    "categoryName": "Nama Kategori",
    "color": "Warna",
    "active": "Aktif",
    "inactive": "Tidak Aktif",
    "confirmDeleteCategory": "Yakin ingin menghapus kategori ini?",
    "cannotDeleteCategoryWithTickets": "Tidak dapat menghapus kategori dengan {count} ticket. Pindahkan ticket terlebih dahulu.",
    "stats": "Statistik",
    "totalTickets": "Total Ticket",
    "openTickets": "Ticket Terbuka",
    "inProgress": "Dalam Proses",
    "inProgressTickets": "Dalam Proses",
    "resolvedTickets": "Terselesaikan",
    "resolved": "Terselesaikan",
    "urgentTickets": "Mendesak",
    "avgResponseTime": "Rata-rata Waktu Respon",
    "hours": "jam",
    "allStatus": "Semua Status",
    "allPriority": "Semua Prioritas",
    "allTickets": "Semua Ticket",
    "manageAllTickets": "Kelola semua ticket support",
    "manageYourTickets": "Kelola ticket support Anda",
    "searchPlaceholder": "Cari ticket...",
    "subjectPlaceholder": "Masalah koneksi internet",
    "descriptionPlaceholder": "Jelaskan masalah Anda secara detail...",
    "replyPlaceholder": "Tulis balasan Anda...",
    "internalNotePlaceholder": "Tulis catatan internal (tidak terlihat oleh pelanggan)...",
    "selectCategory": "Pilih Kategori",
    "enterYourName": "Masukkan nama Anda",
    "subjectRequired": "Subjek harus diisi",
    "descriptionRequired": "Deskripsi harus diisi",
    "descriptionTooShort": "Deskripsi minimal 10 karakter",
    "nameRequired": "Nama harus diisi",
    "phoneRequired": "No. HP harus diisi",
    "minCharacters": "Minimal karakter",
    "cancel": "Batal",
    "save": "Simpan",
    "submitTicket": "Kirim Ticket",
    "creating": "Membuat",
    "sending": "Mengirim",
    "loading": "Memuat",
    "ticketNumberIs": "Nomor ticket Anda",
    "whatsappNotificationSent": "Notifikasi telah dikirim ke WhatsApp Anda",
    "redirectingToTicket": "Mengarahkan ke ticket",
    "createTicketDescription": "Buat ticket support baru",
    "ticketNotFound": "Ticket tidak ditemukan",
    "backToTickets": "Kembali ke Ticket",
    "ticketClosed": "Ticket ini telah ditutup",
    "notVisibleToCustomer": "tidak terlihat oleh pelanggan",
    "addInternalNote": "Tambah Catatan Internal",
    "conversation": "Percakapan",
    "quickActions": "Aksi Cepat",
    "changeStatus": "Ubah Status",
    "changePriority": "Ubah Prioritas",
    "categoriesPage": {
      "title": "Kategori Ticket",
      "subtitle": "Kategori ticket standar untuk ISP",
      "systemInfo": "Kategori Ticket Sistem",
      "systemDescription": "Kategori ticket dikelola melalui file konfigurasi sistem dan tidak dapat diubah melalui interface. Total {count} kategori telah dikonfigurasi sesuai standar ISP Indonesia.",
      "totalCategories": "Total Kategori",
      "networkConnection": "Jaringan & Koneksi",
      "installationTechnical": "Instalasi & Teknis",
      "billingSupport": "Billing & Support",
      "slaTarget": "SLA Target",
      "urgent": "Mendesak",
      "high": "Tinggi",
      "medium": "Sedang",
      "low": "Rendah",
      "hours": "jam",
      "items": {
        "network-down": {
          "name": "Gangguan Jaringan",
          "description": "Internet mati total, tidak ada koneksi sama sekali"
        },
        "slow-connection": {
          "name": "Internet Lambat",
          "description": "Kecepatan internet di bawah standar atau mengalami lag"
        },
        "unstable": {
          "name": "Koneksi Putus-Putus",
          "description": "Internet sering terputus dan nyambung lagi (unstable)"
        },
        "high-latency": {
          "name": "Ping Tinggi/Loss",
          "description": "Latency tinggi atau packet loss saat gaming/browsing"
        },
        "new-installation": {
          "name": "Instalasi Baru",
          "description": "Permintaan pemasangan internet untuk pelanggan baru"
        },
        "reinstallation": {
          "name": "Pemasangan Ulang",
          "description": "Re-instalasi karena pindah rumah atau masalah teknis"
        },
        "relocation": {
          "name": "Pindah Lokasi",
          "description": "Request pemindahan instalasi ke alamat baru"
        },
        "equipment-issue": {
          "name": "Masalah Perangkat",
          "description": "Router/ONT/Modem bermasalah atau rusak"
        },
        "billing-issue": {
          "name": "Masalah Tagihan",
          "description": "Pertanyaan atau komplain terkait invoice/tagihan"
        },
        "payment-confirmation": {
          "name": "Konfirmasi Pembayaran",
          "description": "Konfirmasi transfer yang belum tercatat sistem"
        },
        "upgrade-package": {
          "name": "Upgrade Paket",
          "description": "Permintaan naik kecepatan/upgrade paket langganan"
        },
        "downgrade-package": {
          "name": "Downgrade Paket",
          "description": "Permintaan turun kecepatan/downgrade paket"
        },
        "unsubscribe": {
          "name": "Putus Langganan",
          "description": "Request berhenti berlangganan/unsubscribe"
        },
        "information": {
          "name": "Permintaan Informasi",
          "description": "Tanya informasi paket, coverage area, promo"
        },
        "complaint": {
          "name": "Keluhan Layanan",
          "description": "Komplain tentang pelayanan atau customer service"
        },
        "technician-visit": {
          "name": "Request Teknisi",
          "description": "Permintaan kunjungan teknisi untuk cek lapangan"
        },
        "password-reset": {
          "name": "Lupa Password",
          "description": "Reset password WiFi atau akun pelanggan"
        },
        "feedback": {
          "name": "Saran & Masukan",
          "description": "Feedback atau saran untuk peningkatan layanan"
        },
        "other": {
          "name": "Lain-lain",
          "description": "Kategori umum untuk masalah yang tidak termasuk di atas"
        }
      }
    },
    "categoryCreated": "Kategori berhasil dibuat!",
    "categoryUpdated": "Kategori berhasil diperbarui!",
    "categoryDeleted": "Kategori berhasil dihapus!"
  },
  "profile": {
    "loadError": "Gagal memuat profil",
    "contactInfo": "Informasi Kontak",
    "email": "Email",
    "phone": "Telepon",
    "address": "Alamat",
    "packageInfo": "Informasi Paket",
    "package": "Paket",
    "price": "Harga",
    "expiryDate": "Tanggal Kadaluarsa",
    "accountInfo": "Informasi Akun",
    "username": "Username",
    "memberSince": "Anggota Sejak",
    "logout": "Keluar"
  },
  "userModal": {
    "userInfo": "Info Pengguna",
    "sessions": "Sesi",
    "authLogs": "Log Autentikasi",
    "invoices": "Invoice",
    "username": "Username",
    "password": "Password",
    "passwordPlaceholder": "Biarkan kosong jika tidak diubah",
    "name": "Nama Lengkap",
    "phone": "Telepon",
    "email": "Email",
    "profile": "Profil",
    "selectProfile": "Pilih Profil",
    "router": "Router/NAS",
    "autoAssign": "Otomatis",
    "ipAddress": "Alamat IP",
    "ipPlaceholder": "Otomatis jika kosong",
    "address": "Alamat",
    "gpsLocation": "Lokasi GPS",
    "gpsNote": "Latitude, Longitude (contoh: -6.582292, 107.751789)",
    "subscriptionType": "Tipe Langganan",
    "postpaid": "Pascabayar",
    "postpaidDesc": "Bayar di akhir bulan",
    "prepaid": "Prabayar",
    "prepaidDesc": "Bayar di awal dengan masa aktif",
    "expiredAt": "Tanggal Isolir",
    "noSessions": "Belum ada sesi",
    "online": "Online",
    "offline": "Offline",
    "noAuthLogs": "Belum ada log autentikasi",
    "success": "Berhasil",
    "rejected": "Ditolak",
    "noInvoices": "Belum ada invoice"
  },
  "customer": {
    "paymentHistory": "Riwayat Pembayaran",
    "viewInvoiceStatus": "Lihat status tagihan Anda",
    "noPaymentHistory": "Belum ada riwayat pembayaran",
    "noInvoices": "Tidak Ada Tagihan",
    "noInvoiceHistory": "Anda belum memiliki riwayat tagihan",
    "failedLoadPackages": "Gagal memuat data paket",
    "selectPackageAndPayment": "Pilih paket dan metode pembayaran terlebih dahulu",
    "invoiceCreated": "Invoice Dibuat!",
    "upgradeInvoiceCreated": "Invoice upgrade paket telah dibuat.",
    "invoiceNo": "No Invoice",
    "total": "Total",
    "redirectingPayment": "Anda akan diarahkan ke halaman pembayaran...",
    "contactAdminPayment": "Silakan hubungi admin untuk melakukan pembayaran",
    "upgradePackage": "Ganti Paket",
    "selectPackagePaymentMethod": "Pilih paket dan metode pembayaran",
    "currentPackage": "Paket Saat Ini",
    "paymentMethod": "Metode Pembayaran",
    "payNow": "Bayar Sekarang",
    "paymentRedirectInfo": "Anda akan diarahkan ke halaman pembayaran setelah invoice dibuat",
    "selectNewPackage": "Pilih Paket Baru",
    "currentPackageBadge": "Paket Saat Ini",
    "invalidAmount": "Jumlah Tidak Valid",
    "minimumTopup": "Minimum top-up adalah Rp 10.000",
    "proofRequired": "Bukti Pembayaran Diperlukan",
    "uploadProofRequired": "Silakan upload bukti transfer/e-wallet",
    "requestFailed": "Gagal mengirim permintaan",
    "requestSent": "Permintaan Terkirim!",
    "topupRequestSentMsg": "Permintaan top-up sebesar",
    "sentToAdmin": "telah dikirim ke admin",
    "waitAdminConfirmation": "Silakan tunggu konfirmasi dari admin (biasanya 1-24 jam)",
    "requestError": "Terjadi kesalahan saat mengirim permintaan",
    "fileTooLarge": "File Terlalu Besar",
    "maxFileSize": "Ukuran file maksimal 5MB",
    "invalidFileType": "Tipe File Tidak Valid",
    "onlyImageAllowed": "Hanya file gambar yang diperbolehkan",
    "topupRequest": "Permintaan Top-Up Saldo",
    "topupRequestDesc": "Kirim permintaan top-up saldo dan admin akan memproses dalam 1-24 jam",
    "topupAmount": "Jumlah Top-Up",
    "minimumTopupLabel": "Minimum top-up: Rp 10.000",
    "enterAmountAbove": "Masukkan jumlah top-up di atas terlebih dahulu",
    "bankTransfer": "Transfer Bank",
    "ewallet": "E-Wallet",
    "cash": "Tunai",
    "paymentProof": "Bukti Pembayaran",
    "uploadProof": "Klik untuk upload bukti transfer",
    "fileFormat": "Format: JPG, PNG (Max 5MB)",
    "note": "Catatan",
    "notePlaceholder": "Tambahkan catatan jika diperlukan...",
    "sendRequest": "Kirim Permintaan",
    "importantInfo": "Informasi Penting",
    "infoProcessTime": "Permintaan akan diproses oleh admin dalam 1-24 jam",
    "infoProofClear": "Pastikan bukti pembayaran jelas dan terbaca",
    "infoBalanceAuto": "Setelah disetujui, saldo akan otomatis masuk ke akun Anda",
    "infoContactAdmin": "Hubungi admin jika lebih dari 24 jam belum diproses",
    "selectPaymentFirst": "Pilih metode pembayaran terlebih dahulu",
    "invoiceCreationError": "Terjadi kesalahan saat membuat invoice",
    "paymentCreationFailed": "Gagal Membuat Pembayaran",
    "topupInvoiceCreated": "Invoice top-up berhasil dibuat",
    "redirectingToPayment": "Mengarahkan ke halaman pembayaran...",
    "invoiceCreatedNoLink": "Invoice dibuat tapi link pembayaran tidak tersedia",
    "contactAdmin": "Silakan hubungi admin",
    "connectionError": "Kesalahan Koneksi",
    "failedContactServer": "Gagal menghubungi server. Silakan coba lagi.",
    "serverConnectionFailed": "Gagal menghubungi server",
    "noGatewayAvailable": "Tidak ada payment gateway yang tersedia. Silakan hubungi admin.",
    "failedGeneratePaymentLink": "Gagal membuat link pembayaran",
    "ssidRequired": "SSID harus diisi",
    "passwordLength": "Password harus 8-63 karakter",
    "deviceNotFound": "Device tidak ditemukan. Silakan refresh halaman.",
    "wifiUpdateSuccess": "WiFi berhasil diubah!",
    "failedUpdateWifi": "Gagal update WiFi",
    "accountInfo": "Informasi Akun",
    "package": "Paket",
    "speed": "Speed",
    "expired": "Expired",
    "active": "Aktif",
    "expiredDate": "Expired",
    "daysLeft": "hari lagi",
    "changePackage": "Ganti Paket",
    "depositBalance": "Saldo Deposit",
    "currentBalance": "Saldo Saat Ini",
    "packagePrice": "Harga paket",
    "lowBalanceWarning": "Saldo tidak cukup! Segera top-up untuk auto-renewal.",
    "autoRenewal": "Auto-Renewal",
    "autoRenewalActive": "Aktif - Perpanjangan otomatis",
    "autoRenewalInactive": "Nonaktif",
    "autoRenewalInfo": "Otomatis perpanjang 3 hari sebelum expired",
    "topupDirect": "Top-Up Langsung (Otomatis)",
    "requestManual": "Request Manual",
    "whatsappAdmin": "WA Admin",
    "ontWifi": "ONT / WiFi",
    "ontNotFound": "ONT tidak ditemukan",
    "model": "Model",
    "serialNumber": "Serial Number",
    "ontStatus": "Status ONT",
    "connected": "Connected",
    "disconnected": "Disconnected",
    "ipPppoe": "IP PPPoE",
    "softwareVer": "Software Ver",
    "rxPower": "RX Power",
    "temperature": "Temperature",
    "uptime": "Uptime",
    "deviceId": "Device ID",
    "connectedDevices": "Connected",
    "wifiSettings": "WiFi Settings",
    "deviceConnected": "device terhubung",
    "wifiName": "Nama WiFi (SSID)",
    "wifiNamePlaceholder": "Nama WiFi",
    "wifiPassword": "Password WiFi",
    "wifiPasswordPlaceholder": "Password (8-63 karakter, kosongkan jika tidak ubah)",
    "securityModeNote": "💡 Security mode tidak bisa diubah. Hubungi admin jika perlu.",
    "ssid": "SSID",
    "connectedDevicesTitle": "Perangkat Terhubung",
    "unknownDevice": "Unknown Device",
    "online": "Online",
    "offline": "Offline",
    "invoices": "Tagihan",
    "paid": "Lunas",
    "cancelled": "Batal",
    "overdue": "Terlambat",
    "unpaid": "Belum Bayar",
    "dueDate": "Due",
    "processing": "Proses...",
    "generateLink": "Buat Link",
    "directTopup": "Top-Up Langsung",
    "payment": {
      "tokenNotFound": "Token tidak ditemukan",
      "paymentNotFound": "Pembayaran tidak ditemukan",
      "checkStatusFailed": "Gagal mengecek status",
      "depositNotFound": "Deposit tidak ditemukan",
      "invoiceNotFound": "Invoice tidak ditemukan",
      "checkingStatus": "Mengecek status...",
      "dataNotFound": "Data tidak ditemukan",
      "depositSuccess": "Deposit Berhasil! 🎉",
      "balanceAdded": "Saldo telah ditambahkan",
      "processing": "Sedang diproses",
      "agentDepositBalance": "Deposit Saldo Agent",
      "depositSuccessStatus": "BERHASIL",
      "depositAmount": "Jumlah Deposit",
      "agent": "Agent",
      "paymentDate": "Tanggal Pembayaran",
      "currentBalanceNow": "Saldo Sekarang",
      "balanceAddedToAccount": "Saldo telah ditambahkan ke akun Anda",
      "toDashboard": "Ke Dashboard",
      "thankYouDeposit": "Terima kasih atas deposit Anda! �",
      "paymentSuccess": "Pembayaran Berhasil! 🎉",
      "invoicePaid": "Invoice telah terbayar",
      "totalPayment": "Total Pembayaran",
      "customer": "Pelanggan",
      "activeUntil": "Masa Aktif Sampai",
      "serviceActivated": "Layanan telah diaktifkan kembali",
      "viewInvoice": "Lihat Invoice",
      "thankYouPayment": "Terima kasih atas pembayaran Anda! �",
      "loadingInfo": "Memuat informasi...",
      "paymentFailed": "Pembayaran Gagal",
      "transactionNotCompleted": "Transaksi tidak dapat diselesaikan",
      "possibleCauses": "Kemungkinan Penyebab:",
      "cause1": "Saldo atau limit kartu tidak mencukupi",
      "cause2": "Pembayaran dibatalkan oleh pengguna",
      "cause3": "Transaksi ditolak oleh bank",
      "cause4": "Waktu pembayaran telah habis",
      "cause5": "Koneksi internet terputus",
      "noCharge": "Tidak ada biaya yang dikenakan.",
      "tryAgainOrContact": "Silakan coba lagi atau hubungi kami.",
      "tryAgain": "Coba Lagi",
      "needHelp": "Butuh bantuan?",
      "contactCS": "Hubungi CS via WhatsApp"
    },
    "directTopupDesc": "Isi saldo otomatis via payment gateway",
    "selectTopupAmount": "Pilih Nominal Top-Up",
    "orEnterOtherAmount": "Atau Masukkan Nominal Lain",
    "minimumAmount": "Minimal 10.000",
    "noActiveGateway": "Tidak ada payment gateway yang aktif saat ini.",
    "contactAdminOrManualRequest": "Silakan hubungi admin atau gunakan metode Request Manual untuk top-up saldo.",
    "manualRequest": "Request Manual (Upload Bukti)",
    "contactAdminWhatsApp": "Hubungi Admin via WhatsApp",
    "processingPayment": "Memproses Pembayaran...",
    "pay": "Bayar",
    "failedLoadRequests": "Gagal memuat permintaan top-up",
    "approveConfirmTitle": "Setujui permintaan top-up ini?",
    "approveConfirmDesc": "Saldo akan ditambahkan ke akun user",
    "approveConfirmButton": "Ya, Setujui",
    "approveSuccess": "Permintaan top-up berhasil disetujui",
    "failedApprove": "Gagal menyetujui permintaan",
    "rejectConfirmTitle": "Tolak permintaan top-up ini?",
    "rejectConfirmDesc": "Pastikan Anda sudah memeriksa bukti pembayaran",
    "rejectConfirmButton": "Ya, Tolak",
    "rejectSuccess": "Permintaan top-up ditolak",
    "failedReject": "Gagal menolak permintaan",
    "failedProcess": "Gagal memproses permintaan",
    "requestsTitle": "Permintaan Top-Up Saldo",
    "requestsDesc": "Kelola permintaan top-up dari customer",
    "pending": "Pending",
    "approved": "Disetujui",
    "rejected": "Ditolak",
    "noRequests": "Tidak ada permintaan",
    "amount": "Jumlah",
    "method": "Metode",
    "time": "Waktu",
    "viewProof": "Lihat Bukti",
    "approve": "Setujui",
    "reject": "Tolak",
    "createInvoice": "Buat Invoice",
    "selectPackage": "Pilih Paket"
  },
  "manualPayment": {
    "title": "Pembayaran Manual",
    "description": "Kelola pembayaran manual dari pelanggan",
    "approveSuccess": "Pembayaran berhasil disetujui",
    "failedApprove": "Gagal menyetujui pembayaran",
    "rejectionReasonRequired": "Alasan penolakan harus diisi",
    "rejectSuccess": "Pembayaran berhasil ditolak",
    "failedReject": "Gagal menolak pembayaran",
    "deleteSuccess": "Data pembayaran berhasil dihapus",
    "failedDelete": "Gagal menghapus data pembayaran",
    "pending": "Menunggu",
    "approved": "Disetujui",
    "rejected": "Ditolak",
    "pendingVerification": "Menunggu Verifikasi",
    "searchPlaceholder": "Cari nama, username, nomor invoice...",
    "filterStatus": "Filter Status",
    "allStatus": "Semua Status",
    "paymentList": "Daftar Pembayaran Manual",
    "paymentsFound": "pembayaran ditemukan",
    "noData": "Tidak ada data pembayaran",
    "customer": "Pelanggan",
    "bank": "Bank",
    "sender": "Pengirim",
    "paymentDetail": "Detail Pembayaran Manual",
    "paymentDetailDesc": "Informasi lengkap pembayaran manual",
    "paymentDate": "Tanggal Pembayaran",
    "customerInfo": "Informasi Pelanggan",
    "invoiceInfo": "Informasi Invoice",
    "invoiceNumber": "Nomor Invoice",
    "invoiceAmount": "Jumlah Invoice",
    "dueDate": "Jatuh Tempo",
    "invoiceStatus": "Status Invoice",
    "transferDetail": "Detail Transfer",
    "senderName": "Nama Pengirim",
    "transferAmount": "Jumlah Transfer",
    "transferReceipt": "Bukti Transfer",
    "approvalInfo": "Informasi Persetujuan",
    "approvedBy": "Disetujui oleh",
    "rejectionInfo": "Informasi Penolakan",
    "rejectedBy": "Ditolak oleh",
    "reason": "Alasan",
    "approvePaymentTitle": "Setujui Pembayaran?",
    "approvePaymentDesc": "Konfirmasi untuk menyetujui pembayaran manual ini. Sistem akan:",
    "approveAction1": "Mengubah status invoice menjadi PAID",
    "approveAction2": "Memperpanjang masa aktif user",
    "approveAction3": "Mengirim notifikasi ke pelanggan",
    "approveAction4": "Membuat record pembayaran",
    "processing": "Memproses...",
    "rejectPaymentTitle": "Tolak Pembayaran?",
    "rejectPaymentDesc": "Berikan alasan penolakan untuk pembayaran ini",
    "rejectionReasonLabel": "Alasan Penolakan *",
    "rejectionReasonPlaceholder": "Contoh: Jumlah transfer tidak sesuai, bukti transfer tidak valid, dll.",
    "rejectPaymentButton": "Tolak Pembayaran"
  },
  "customerNav": {
    "home": "Beranda",
    "history": "Riwayat",
    "support": "Tiket",
    "profile": "Akun"
  },
  "emailSettings": {
    "title": "Notifikasi Email",
    "subtitle": "Konfigurasi SMTP dan template notifikasi email",
    "tabs": {
      "settings": "Pengaturan SMTP",
      "templates": "Template Email",
      "reminders": "Pengingat Invoice",
      "history": "Riwayat"
    },
    "smtp": {
      "title": "Konfigurasi SMTP",
      "enableEmail": "Aktifkan Notifikasi Email",
      "enableEmailDesc": "Aktifkan untuk mengirim notifikasi via email",
      "host": "SMTP Host",
      "port": "Port",
      "useSsl": "Gunakan SSL/TLS (Port 465)",
      "username": "SMTP Username (Alamat Gmail)",
      "password": "SMTP Password (App Password)",
      "passwordHint": "💡 Gunakan App Password dari Google, bukan password Gmail biasa",
      "fromEmail": "Email Pengirim",
      "fromEmailHint": "Email pengirim (biasanya sama dengan SMTP Username)",
      "fromName": "Nama Pengirim"
    },
    "sender": {
      "title": "Informasi Pengirim"
    },
    "notifications": {
      "title": "Jenis Notifikasi",
      "newUser": "User Baru Terdaftar",
      "expired": "Reminder Masa Aktif Habis",
      "invoice": "Invoice Jatuh Tempo",
      "payment": "Konfirmasi Pembayaran"
    },
    "test": {
      "title": "Test Email",
      "placeholder": "email@contoh.com",
      "button": "Test Email",
      "sending": "Mengirim...",
      "hint": "Kirim test email untuk memastikan konfigurasi SMTP bekerja dengan baik",
      "success": "Test Email Terkirim!",
      "successDesc": "Email test berhasil dikirim ke <strong>{email}</strong><br><br>Silakan cek inbox atau spam folder Anda.",
      "failed": "Gagal Mengirim!",
      "emailRequired": "Masukkan alamat email untuk test"
    },
    "buttons": {
      "save": "Simpan Pengaturan",
      "saving": "Menyimpan..."
    },
    "messages": {
      "saved": "Tersimpan!",
      "savedDesc": "Pengaturan email berhasil disimpan",
      "saveFailed": "Gagal menyimpan pengaturan",
      "sessionExpired": "Sesi Berakhir",
      "sessionExpiredDesc": "Sesi Anda telah berakhir. Silakan login kembali."
    },
    "tutorial": {
      "title": "📘 Tutorial Setup Gmail SMTP",
      "subtitle": "Langkah-langkah Setup Gmail SMTP:",
      "step1Title": "Aktifkan 2-Step Verification",
      "step1Desc": "Buka Google Account Security → Pilih \"2-Step Verification\" → Aktifkan",
      "step2Title": "Generate App Password",
      "step2Desc": "Di halaman Security, pilih \"App passwords\"",
      "step2AppName": "App name:",
      "step2Device": "Device:",
      "step3Title": "Copy App Password",
      "step3Desc": "Copy password yang dihasilkan (16 karakter) dan paste di field SMTP Password di bawah",
      "step4Title": "Isi Form & Test",
      "step4Desc": "Lengkapi form di bawah, aktifkan \"Enable Email Notifications\", lalu klik \"Test Email\" untuk verifikasi",
      "noteTitle": "⚠� Catatan Penting:",
      "note1": "Gunakan App Password, bukan password Gmail biasa",
      "note2": "Port 587 untuk TLS, Port 465 untuk SSL",
      "note3": "\"Less secure app access\" TIDAK perlu diaktifkan (menggunakan App Password)"
    },
    "templates": {
      "registrationConfirmation": "✅ Konfirmasi Pendaftaran",
      "registrationConfirmationDesc": "Dikirim otomatis saat customer submit form pendaftaran",
      "registrationApproval": "🎉 Persetujuan Pendaftaran",
      "registrationApprovalDesc": "Dikirim saat admin menyetujui pendaftaran customer baru",
      "adminCreateUser": "👤 Admin Create User",
      "adminCreateUserDesc": "Dikirim saat admin membuat user manual (tanpa flow registrasi)",
      "installationInvoice": "🔧 Invoice Instalasi",
      "installationInvoiceDesc": "Dikirim saat instalasi selesai dan invoice dibuat",
      "invoiceReminder": "📅 Invoice Bulanan / Jatuh Tempo",
      "invoiceReminderDesc": "Dikirim via cron untuk invoice bulanan yang mendekati jatuh tempo",
      "paymentSuccess": "✅ Pembayaran Berhasil",
      "paymentSuccessDesc": "Dikirim otomatis saat pembayaran invoice berhasil",
      "maintenanceOutage": "⚠� Informasi Gangguan",
      "maintenanceOutageDesc": "Template untuk broadcast informasi maintenance atau gangguan jaringan",
      "maintenanceResolved": "✅ Perbaikan Selesai",
      "maintenanceResolvedDesc": "Template untuk broadcast informasi perbaikan selesai dan layanan kembali normal",
      "voucherPurchase": "🎫 Pembelian Voucher",
      "voucherPurchaseDesc": "Dikirim otomatis saat customer berhasil membeli voucher internet",
      "voucherPaymentLink": "💳 Link Pembayaran Voucher",
      "voucherPaymentLinkDesc": "Dikirim saat customer melakukan order voucher dan perlu melakukan pembayaran",
      "manualExtension": "🎉 Perpanjangan Manual",
      "manualExtensionDesc": "Dikirim saat admin melakukan perpanjangan langganan customer secara manual",
      "manualPaymentApproval": "✅ Pembayaran Manual Disetujui",
      "manualPaymentApprovalDesc": "Dikirim otomatis saat admin menyetujui konfirmasi pembayaran manual",
      "manualPaymentRejection": "� Pembayaran Manual Ditolak",
      "manualPaymentRejectionDesc": "Dikirim otomatis saat admin menolak konfirmasi pembayaran manual"
    }
  },
  "genieacsDevice": {
    "deviceDetail": "Detail Perangkat",
    "deviceNotFound": "Perangkat tidak ditemukan",
    "back": "Kembali",
    "refreshParameters": "Refresh Parameters",
    "reboot": "Reboot",
    "tabs": {
      "summary": "Ringkasan",
      "wan": "WAN",
      "lan": "LAN",
      "wlan": "WLAN",
      "user": "USER",
      "tr069": "TR069"
    },
    "sections": {
      "deviceInfo": "Informasi Perangkat",
      "connectionInfo": "Info Koneksi",
      "opticalInfo": "Info Optik",
      "wifiInfo": "Info WiFi"
    },
    "labels": {
      "serialNumber": "Serial Number",
      "productClass": "Product Class",
      "oui": "OUI",
      "manufacturer": "Manufacturer",
      "hardwareVersion": "Hardware Version",
      "softwareVersion": "Software Version",
      "macAddress": "MAC Address",
      "lastInform": "Last Inform",
      "pppoeUsername": "PPPoE Username",
      "pppoeIP": "PPPoE IP",
      "tr069IP": "TR-069 IP",
      "uptime": "Uptime",
      "status": "Status",
      "ponMode": "PON Mode",
      "rxPower": "RX Power",
      "temperature": "Suhu",
      "ssid": "SSID",
      "connectedDevices": "Perangkat Terhubung",
      "tags": "Tag"
    },
    "dialogs": {
      "refreshTitle": "Refresh Parameters?",
      "refreshConfirm": "Eksekusi Refresh Parameters pada device {serialNumber}?",
      "rebootTitle": "Reboot Perangkat?",
      "rebootConfirm": "Perangkat akan di-restart",
      "yesRefresh": "Ya, Refresh!",
      "yesReboot": "Ya, Reboot",
      "cancel": "Batal",
      "success": "Berhasil",
      "refreshSent": "Refresh task terkirim",
      "rebootSent": "Perintah reboot terkirim",
      "error": "Error",
      "refreshFailed": "Gagal mengirim refresh",
      "rebootFailed": "Gagal mengirim perintah"
    },
    "comingSoon": {
      "wan": "Konfigurasi WAN",
      "lan": "Konfigurasi LAN",
      "wlan": "Konfigurasi WLAN",
      "user": "Manajemen User",
      "tr069": "Pengaturan TR-069",
      "message": "Segera hadir..."
    }
  },
  "radius": {
    "statusTitle": "Status FreeRADIUS",
    "statusSubtitle": "Monitor dan kontrol layanan FreeRADIUS",
    "serviceStatus": "Status Layanan",
    "running": "Berjalan",
    "stopped": "Berhenti",
    "pid": "PID",
    "uptime": "Waktu Aktif",
    "cpuUsage": "Penggunaan CPU",
    "memoryUsage": "Penggunaan Memori",
    "activeConnections": "Koneksi Aktif",
    "requestStats": "Statistik Permintaan",
    "authRequests": "Permintaan Auth",
    "acctRequests": "Permintaan Accounting",
    "started": "Dimulai",
    "lastRestart": "Terakhir Restart",
    "debugMode": "Mode Debug",
    "debugDesc": "Jalankan FreeRADIUS dalam mode debug untuk troubleshooting masalah autentikasi.",
    "runDebug": "Jalankan Mode Debug",
    "startService": "Mulai Layanan",
    "stopService": "Hentikan Layanan",
    "restartService": "Restart Layanan",
    "confirmAction": "Apakah Anda yakin?",
    "warningStop": "Ini akan memutuskan koneksi semua sesi aktif!",
    "warningRestart": "Tindakan ini mungkin mengganggu layanan sebentar.",
    "configTitle": "Editor Konfigurasi",
    "configSubtitle": "Edit file konfigurasi FreeRADIUS secara langsung",
    "configExplorer": "Explorer Konfigurasi",
    "unsavedChanges": "Perubahan Belum Disimpan",
    "synced": "Tersinkron",
    "selectFile": "Pilih file",
    "selectFileDesc": "Pilih file konfigurasi di sebelah kiri untuk mengedit",
    "saveChanges": "Simpan Perubahan",
    "saveConfirm": "Apakah Anda yakin ingin menyimpan perubahan pada {file}? Ini akan memicu pemeriksaan sintaks.",
    "saveSuccess": "Konfigurasi berhasil disimpan.",
    "restartPrompt": "Restart Layanan?",
    "restartDesc": "Perubahan mungkin memerlukan restart agar berlaku.",
    "radTestTitle": "RadTest",
    "radTestSubtitle": "Tes autentikasi RADIUS untuk pengguna apa pun",
    "authTest": "Tes Autentikasi",
    "username": "Username",
    "password": "Password",
    "nasIp": "IP NAS",
    "port": "Port",
    "sharedSecret": "Shared Secret",
    "secretHint": "Shared secret yang dikonfigurasi di clients.conf",
    "runTest": "Jalankan RadTest",
    "testing": "Menguji...",
    "testResult": "Hasil Tes",
    "replyAttributes": "Atribut Balasan",
    "manualCommand": "Perintah Manual",
    "copy": "Salin",
    "rawOutput": "Output Mentah",
    "logsTitle": "Log Langsung",
    "logsSubtitle": "Log server FreeRADIUS waktu nyata",
    "searchLogs": "Cari log...",
    "live": "Live",
    "paused": "Jeda",
    "clearView": "Bersihkan Tampilan",
    "downloadLogs": "Unduh Log",
    "radCheckTitle": "Manajer RadCheck",
    "radCheckSubtitle": "Kelola atribut autentikasi RADIUS",
    "mockMode": "Berjalan dalam Mode Mock/Demo (Database tidak terhubung)",
    "addAttribute": "Tambah Atribut",
    "searchUser": "Cari berdasarkan username...",
    "op": "Op",
    "value": "Nilai",
    "noRecords": "Tidak ada data ditemukan",
    "deleteConfirm": "Hapus Item?",
    "deleteWarning": "Anda tidak akan dapat mengembalikan ini!",
    "createSuccess": "Item berhasil dibuat",
    "requiredFields": "Username dan Nilai wajib diisi",
    "success": "RADIUS berhasil"
  },
  "pushNotif": {
    "title": "Web Push Notifications",
    "subtitle": "Kirim notifikasi browser langsung ke PWA pelanggan",
    "refresh": "Refresh",
    "totalCustomers": "Total Pelanggan",
    "registeredPush": "Pelanggan Subscribe",
    "totalBroadcast": "Total Broadcast",
    "coverage": "Cakupan",
    "sendNotification": "Kirim Notifikasi",
    "broadcastHistory": "Riwayat Broadcast",
    "notificationType": "Jenis Notifikasi",
    "quickTemplate": "Template Cepat",
    "clickToAutoFill": "Klik untuk isi otomatis",
    "notificationContent": "Isi Notifikasi",
    "titleLabel": "Judul",
    "titlePlaceholder": "Contoh: Pengumuman Penting",
    "messageLabel": "Pesan",
    "messagePlaceholder": "Tulis pesan notifikasi di sini...",
    "deepLinkOptional": "Deep Link (opsional)",
    "deepLinkPlaceholder": "Contoh: invoices, profile, notifications",
    "deepLinkHelp": "Halaman customer portal yang akan dibuka saat notifikasi diklik",
    "targetRecipient": "Target Penerima",
    "sendTo": "Kirim ke",
    "allCustomers": "Semua Pelanggan",
    "activeCustomers": "Pelanggan Aktif",
    "expiredCustomers": "Pelanggan Expired",
    "perArea": "Per Area",
    "selected": "Dipilih",
    "selectArea": "Pilih Area",
    "selectAreaPlaceholder": "Pilih area...",
    "registeredPushLabel": "Pelanggan subscribe:",
    "totalCustomersLabel": "Total pelanggan:",
    "users": "pengguna",
    "previewNotification": "Preview Notifikasi",
    "now": "sekarang",
    "titlePreview": "(Judul notifikasi)",
    "messagePreview": "(Isi pesan)",
    "sending": "Mengirim...",
    "sendNotifButton": "KIRIM NOTIFIKASI",
    "noTokenWarning": "Belum ada subscription aktif",
    "noTokenDesc": "Pastikan pelanggan membuka portal dari browser yang didukung lalu mengaktifkan notifikasi.",
    "allBroadcastsSent": "Semua riwayat web push yang pernah dikirim",
    "noBroadcastYet": "Belum ada broadcast yang dikirim",
    "headerTitle": "Judul",
    "headerType": "Tipe",
    "headerTarget": "Target",
    "headerSent": "Terkirim",
    "headerFailed": "Gagal",
    "headerSentBy": "Dikirim Oleh",
    "headerTime": "Waktu",
    "types": {
      "broadcast": "Broadcast Umum",
      "tagihan": "Tagihan / Billing",
      "info": "Informasi",
      "custom": "Pesan Custom"
    },
    "templates": {
      "announcement": "Pengumuman",
      "billing": "Tagihan",
      "maintenance": "Maintenance",
      "disruption": "Gangguan",
      "promo": "Promo",
      "info": "Info"
    },
    "tpl": {
      "broadcastTitle": "📢 Pengumuman Penting",
      "broadcastBody": "Yth. Pelanggan Salfanet,\n\nKami memiliki informasi penting yang ingin kami sampaikan kepada Anda.\n\nTerima kasih atas perhatiannya dan mohon maaf atas ketidaknyamanan yang terjadi.\n\nHormat kami,\nSalfanet",
      "tagihanTitle": "💳 Pengingat Tagihan Bulanan",
      "tagihanBody": "Yth. Pelanggan Salfanet,\n\nKami ingin mengingatkan bahwa tagihan internet Anda bulan ini akan segera jatuh tempo.\n\nSilakan lakukan pembayaran tepat waktu agar layanan internet Anda tetap aktif tanpa gangguan.\n\nUntuk melihat detail tagihan dan melakukan pembayaran, buka portal pelanggan Salfanet.\n\nTerima kasih,\nSalfanet",
      "infoTitle": "ℹ️ Informasi Layanan",
      "infoBody": "Yth. Pelanggan Salfanet,\n\nBerikut adalah update terbaru terkait layanan internet kami.\n\nUntuk informasi lebih lanjut, silakan hubungi tim kami atau buka portal pelanggan Salfanet.\n\nTerima kasih atas kepercayaannya,\nSalfanet",
      "maintenanceTitle": "🔧 Pemberitahuan Maintenance Jaringan",
      "maintenanceBody": "Yth. Pelanggan Salfanet,\n\nKami akan melakukan maintenance rutin pada jaringan kami dalam waktu dekat.\n\nSelama proses maintenance, layanan internet mungkin mengalami gangguan sementara. Kami akan berusaha menyelesaikannya secepat mungkin.\n\nMohon maaf atas ketidaknyamanannya. Maintenance ini dilakukan untuk meningkatkan kualitas layanan kami.\n\nTerima kasih atas pengertiannya,\nSalfanet",
      "promoTitle": "🎁 Promo Spesial Salfanet!",
      "promoBody": "Yth. Pelanggan Salfanet,\n\nAda penawaran spesial yang sayang untuk dilewatkan!\n\nNikmati penawaran terbaik untuk layanan internet berkualitas dengan harga terjangkau, khusus untuk Anda.\n\nUntuk informasi lengkap dan pendaftaran, segera hubungi tim kami atau kunjungi kantor kami.\n\nTerima kasih,\nSalfanet",
      "gangguanTitle": "⚠️ Pemberitahuan Gangguan Jaringan",
      "gangguanBody": "Yth. Pelanggan Salfanet,\n\nKami informasikan bahwa saat ini sedang terjadi gangguan jaringan di sebagian area layanan kami.\n\nTim teknis kami sedang bekerja untuk menangani masalah ini dan memulihkan layanan secepat mungkin.\n\nMohon maaf atas ketidaknyamanannya dan terima kasih atas kesabaran serta pengertiannya.\n\nHormat kami,\nSalfanet"
    },
    "titleAndMessageRequired": "Judul dan pesan tidak boleh kosong",
    "confirmSendTitle": "Kirim Web Push?",
    "confirmSendDesc": "Notifikasi \"{title}\" akan dikirim ke {target}. Lanjutkan?",
    "targetAll": "SEMUA pelanggan",
    "targetActive": "pelanggan AKTIF",
    "targetExpired": "pelanggan EXPIRED",
    "targetArea": "area {name}",
    "targetSelected": "target yang dipilih",
    "sentSuccess": "Notifikasi Terkirim!",
    "sentStats": "{sent} berhasil, {failed} gagal dari total {total} subscription.",
    "sendFailed": "Gagal mengirim notifikasi",
    "sendError": "Terjadi kesalahan saat mengirim notifikasi",
    "allUsers": "Semua Pengguna",
    "activeUsers": "Pengguna Aktif",
    "expiredUsers": "Pengguna Expired"
  },
  "customerPush": {
    "label": "Web Push",
    "enabled": "Notifikasi browser aktif",
    "disabled": "Notifikasi browser nonaktif",
    "description": "Terima update pembayaran, pengingat tagihan, dan alert layanan walau portal sedang tidak dibuka.",
    "unsupported": "Browser ini belum mendukung web push notification.",
    "permissionGranted": "Izin notifikasi sudah diberikan untuk browser ini.",
    "permissionDenied": "Izin notifikasi diblokir. Aktifkan dulu dari pengaturan browser Anda.",
    "permissionDefault": "Izin notifikasi belum diberikan.",
    "processing": "Memproses...",
    "enableAction": "Aktifkan Notifikasi",
    "toggleAria": "Aktifkan atau matikan web push browser",
    "offlineLabel": "Mode Offline",
    "offlineTitle": "Portal pelanggan sedang offline sementara",
    "offlineDescription": "Koneksi internet Anda terlihat tidak stabil. Sambungkan kembali lalu refresh portal untuk sinkronisasi tagihan, notifikasi, dan data akun terbaru.",
    "retry": "Coba Lagi",
    "backToDashboard": "Kembali ke Dashboard"
  },
  "referrals": {
    "title": "Daftar Referral",
    "subtitle": "Kelola reward referral pelanggan",
    "statHasCode": "Punya Kode",
    "statReferred": "Direferral",
    "statTotalRewards": "Total Reward",
    "statPending": "Pending",
    "statCredited": "Dikreditkan",
    "statTotalCredited": "Total Dikreditkan",
    "searchPlaceholder": "Cari nama/username...",
    "allStatus": "Semua Status",
    "statusPending": "Pending",
    "statusCredited": "Dikreditkan",
    "statusExpired": "Expired",
    "noData": "Belum ada data referral",
    "colReferrer": "Referrer",
    "colCode": "Kode",
    "colReferred": "Referred",
    "colReward": "Reward",
    "colStatus": "Status",
    "colDate": "Tanggal",
    "colAction": "Aksi",
    "page": "Halaman",
    "of": "dari",
    "credit": "Kreditkan",
    "errorProcess": "Gagal memproses reward",
    "settingsTitle": "Pengaturan Referral",
    "settingsSubtitle": "Konfigurasi program referral pelanggan",
    "enableSystem": "Aktifkan Sistem Referral",
    "enableDesc": "Pelanggan dapat membagikan kode referral dan mendapatkan bonus saldo",
    "rewardConfig": "Konfigurasi Reward",
    "whenReward": "Kapan Reward Diberikan",
    "afterFirstPayment": "Setelah Pembayaran Pertama",
    "atRegistration": "Saat Registrasi",
    "afterFirstPaymentDesc": "Reward dikreditkan setelah pelanggan referred melakukan pembayaran pertama",
    "atRegistrationDesc": "Reward langsung dikreditkan saat pelanggan referred terdaftar",
    "referrerBonus": "Bonus Referrer (yang mengajak)",
    "referrerBonusDesc": "Jumlah saldo yang dikreditkan ke akun referrer per referral berhasil",
    "bonusForReferred": "Bonus untuk Referred",
    "bonusForReferredDesc": "Berikan juga bonus saldo ke pelanggan yang direferensikan",
    "referredAmountLabel": "Bonus Referred (yang diajak)",
    "referredAmountDesc": "Jumlah saldo bonus untuk pelanggan baru yang mendaftar via referral",
    "summary": "Ringkasan",
    "statusActive": "Aktif",
    "statusInactive": "Nonaktif",
    "referrerGets": "Referrer mendapat",
    "perReferral": "per referral",
    "referredGets": "Referred mendapat",
    "bonus": "bonus",
    "rewardGiven": "Reward diberikan",
    "afterFirstPaymentShort": "Setelah pembayaran pertama",
    "atRegistrationShort": "Saat registrasi",
    "saveSettings": "Simpan Pengaturan",
    "saving": "Menyimpan...",
    "saveSuccess": "Pengaturan referral berhasil disimpan",
    "saveError": "Gagal menyimpan pengaturan"
  },
  "techPortal": {
    "title": "Portal Teknisi",
    "subtitle": "Manajemen Teknis",
    "welcome": "Selamat Datang",
    "dashboard": "Beranda",
    "tickets": "Tiket Layanan",
    "onlineUsers": "PPPoE Online",
    "offlineUsers": "PPPoE Offline",
    "isolatedUsers": "Pelanggan Isolir",
    "customers": "Data Pelanggan",
    "register": "Tambah Pelanggan",
    "genieacs": "GenieACS",
    "profile": "Profil Saya",
    "logout": "Keluar",
    "loading": "Memuat portal teknisi...",
    "loginDesc": "Masuk dengan username dan password Anda",
    "phoneNumber": "Nomor Telepon",
    "search": "Cari...",
    "refresh": "Refresh",
    "filter": "Filter",
    "all": "Semua",
    "online": "Online",
    "offline": "Offline",
    "isolated": "Isolir",
    "active": "Aktif",
    "stopped": "Berhenti",
    "expired": "Kedaluwarsa",
    "noData": "Tidak ada data",
    "totalUsers": "Total Pengguna",
    "totalOnline": "Total Online",
    "totalOffline": "Total Offline",
    "totalIsolated": "Total Isolir",
    "username": "Username",
    "name": "Nama",
    "phone": "Telepon",
    "ipAddress": "Alamat IP",
    "uptime": "Durasi",
    "downloadUpload": "Download / Upload",
    "area": "Area",
    "routerName": "Router",
    "profileName": "Paket",
    "status": "Status",
    "expiredAt": "Kedaluwarsa",
    "stoppedAt": "Berhenti Sejak",
    "unpaidAmount": "Tagihan Belum Dibayar",
    "actions": "Aksi",
    "details": "Detail",
    "devices": "Perangkat",
    "serialNumber": "Nomor Serial",
    "signal": "Sinyal",
    "manufacturer": "Produsen",
    "model": "Model",
    "lastInform": "Terakhir Terhubung",
    "noDevices": "Tidak ada perangkat ditemukan",
    "editProfile": "Edit Profil",
    "changePassword": "Ubah Password",
    "currentPassword": "Password Saat Ini",
    "newPassword": "Password Baru",
    "confirmPassword": "Konfirmasi Password",
    "save": "Simpan",
    "cancel": "Batal",
    "passwordChanged": "Password berhasil diubah",
    "passwordError": "Gagal mengubah password",
    "profileUpdated": "Profil berhasil diperbarui",
    "profileError": "Gagal memperbarui profil",
    "activeUsers": "pengguna aktif",
    "stoppedUsers": "pengguna berhenti",
    "allRouters": "Semua Router",
    "page": "Halaman",
    "prev": "Sebelumnya",
    "next": "Selanjutnya",
    "unpaid": "Belum Bayar",
    "unpaidInvoices": "Invoice Belum Bayar",
    "searchDevice": "Cari perangkat...",
    "genieacsNotConfigured": "GenieACS belum dikonfigurasi",
    "connectedDevices": "Perangkat Terhubung",
    "ticketsSubtitle": "Kelola dan tangani laporan gangguan pelanggan",
    "customersSubtitle": "pelanggan terdaftar",
    "searchCustomer": "Cari nama, username, nomor HP...",
    "searchTicket": "Cari tiket, pelanggan...",
    "allStatus": "Semua Status",
    "allPriority": "Semua Prioritas",
    "blocked": "Diblokir",
    "passwordMismatch": "Password tidak cocok",
    "passwordMinLength": "Password minimal 6 karakter",
    "actionCompleted": "Aksi berhasil",
    "actionFailed": "Aksi gagal",
    "failedLoadDevices": "Gagal memuat daftar perangkat",
    "failedLoadDetail": "Gagal memuat detail perangkat",
    "failedLoadProfile": "Gagal memuat profil",
    "failedLoadTickets": "Tidak dapat memuat data tiket",
    "failedLoadCustomers": "Gagal memuat daftar pelanggan",
    "ticketUpdated": "Tiket diperbarui",
    "replySent": "Balasan terkirim",
    "replyFailed": "Gagal kirim",
    "claimTicket": "Klaim Tiket",
    "waitingCustomer": "Tunggu Pelanggan",
    "markDone": "Tandai Selesai",
    "continueTicket": "Lanjutkan",
    "replyTicket": "Balas",
    "replyTitle": "Balas Tiket",
    "replyPlaceholder": "Tulis balasan / catatan penanganan...",
    "sendReply": "Kirim Balasan",
    "noTickets": "Tidak ada tiket ditemukan",
    "myTickets": "Tiket saya",
    "messages": "pesan",
    "statusOpen": "Terbuka",
    "statusInProgress": "Dikerjakan",
    "statusWaitingCustomer": "Tunggu Pelanggan",
    "statusResolved": "Selesai",
    "statusClosed": "Ditutup",
    "priorityUrgent": "Mendesak",
    "priorityHigh": "Tinggi",
    "priorityMedium": "Sedang",
    "priorityLow": "Rendah",
    "reboot": "Reboot Modem",
    "rebootConfirm": "Yakin ingin reboot modem ini?",
    "rebootSuccess": "Perintah reboot berhasil dikirim",
    "rebootFailed": "Gagal mengirim perintah reboot",
    "rebooting": "Mengirim reboot...",
    "editWifi": "Edit WiFi",
    "wifiSsid": "Nama WiFi (SSID)",
    "wifiPassword": "Password WiFi",
    "wifiSaved": "Pengaturan WiFi berhasil disimpan",
    "wifiFailed": "Gagal menyimpan pengaturan WiFi",
    "savingWifi": "Menyimpan...",
    "deviceActions": "Aksi Perangkat",
    "deviceInfo": "Informasi Perangkat",
    "pppoeInfo": "Informasi PPPoE",
    "pppoeIp": "IP PPPoE",
    "pppoeGateway": "Gateway",
    "pppoeDns": "DNS Server",
    "pppoeConnected": "Terhubung",
    "pppoeDisconnected": "Terputus"
  },
  "isolatedUsers": {
    "loading": "Memuat data...",
    "title": "Isolated Users Monitor",
    "subtitle": "Real-time monitoring user yang diisolir",
    "refreshing": "Memperbarui...",
    "totalIsolated": "Total Diisolir",
    "online": "Online",
    "offline": "Offline",
    "unpaidInvoices": "Invoice Belum Bayar",
    "totalArrears": "Total Tunggakan",
    "searchPlaceholder": "Cari username, nama, atau telepon...",
    "filterAll": "Semua ({count})",
    "filterOnline": "Online ({count})",
    "filterOffline": "Offline ({count})",
    "exportCsv": "Export CSV",
    "noIsolated": "Tidak ada user yang diisolir.",
    "profile": "Profil",
    "dueDate": "Jatuh Tempo",
    "connection": "Koneksi",
    "connectedSince": "Sejak {date}",
    "notConnected": "Tidak terhubung",
    "arrears": "Tunggakan",
    "invoiceCount": "{count} invoice",
    "paid": "Lunas",
    "copied": "Disalin!",
    "copyPayLink": "Salin Link Bayar",
    "openPayLink": "Buka Link Bayar",
    "sendWa": "Kirim WA",
    "viewInvoices": "Lihat {count} Invoice",
    "unpaidInvoicesSection": "Invoice Belum Dibayar",
    "dueOn": "Jatuh tempo: {date}",
    "totalArrearsAmount": "Total tunggakan",
    "lastUpdated": "Terakhir diperbarui: {time} · Auto-refresh setiap 30 detik"
  },
  "suspendRequests": {
    "title": "Suspend Requests",
    "subtitle": "Kelola permintaan suspend sementara dari pelanggan",
    "noRequests": "Tidak ada permintaan suspend",
    "total": "Total: {count} permintaan",
    "colCustomer": "Pelanggan",
    "colUsername": "Username",
    "colPeriod": "Periode Suspend",
    "colReason": "Alasan",
    "colStatus": "Status",
    "colSubmitted": "Diajukan",
    "colAction": "Aksi",
    "days": "hari",
    "approve": "Setujui",
    "reject": "Tolak",
    "approveTitle": "Setujui Suspend",
    "rejectTitle": "Tolak Suspend",
    "approveWarning": "Menyetujui akan mengubah status pelanggan menjadi stopped pada tanggal mulai. Layanan otomatis aktif kembali pada tanggal selesai.",
    "adminNotes": "Catatan Admin",
    "adminNotesOptional": "Catatan Admin (opsional)",
    "adminNotesRequired": "Catatan Admin (wajib jelaskan alasan)",
    "statusPending": "Pending",
    "statusApproved": "Approved",
    "statusRejected": "Rejected",
    "statusCancelled": "Cancelled",
    "statusCompleted": "Completed"
  },
  "laporan": {
    "title": "Laporan & Export",
    "subtitle": "Generate dan export laporan dalam format PDF atau Excel",
    "advancedAnalytics": "Analitik Advanced",
    "filterTitle": "Filter Laporan",
    "reportType": "Jenis Laporan",
    "dateFrom": "Dari Tanggal",
    "dateTo": "Sampai Tanggal",
    "typeInvoice": "Invoice",
    "typePayment": "Pembayaran",
    "typeCustomer": "Pelanggan",
    "loading": "Memuat...",
    "showData": "Tampilkan Data",
    "exporting": "Exporting...",
    "exportExcel": "Export Excel",
    "exportPdf": "Export PDF",
    "previewData": "Preview Data — menampilkan {count} dari {total} baris",
    "exportHint": "Export untuk data lengkap",
    "noData": "Tidak ada data untuk filter yang dipilih",
    "initialState": "Pilih filter dan klik Tampilkan Data",
    "totalInvoice": "Total Invoice",
    "paid": "Lunas",
    "unpaid": "Belum Bayar",
    "totalBill": "Total Tagihan",
    "totalTransaction": "Total Transaksi",
    "totalReceived": "Total Diterima",
    "totalCustomer": "Total Pelanggan",
    "active": "Aktif",
    "isolated": "Isolir",
    "stoppedExpired": "Berhenti/Expired",
    "statusAll": "Semua Status",
    "statusPaid": "Lunas",
    "statusPending": "Belum Bayar",
    "statusOverdue": "Jatuh Tempo",
    "statusCancelled": "Dibatalkan",
    "statusActive": "Aktif",
    "statusIsolated": "Isolir",
    "statusStopped": "Berhenti",
    "statusExpired": "Expired"
  },
  "laporanAnalitik": {
    "loading": "Memuat data analitik…",
    "backToReports": "Kembali ke Laporan",
    "title": "Laporan Analitik Advanced",
    "subtitle": "Churn rate, retention, ARPU, dan tren pelanggan",
    "months3": "3 Bulan",
    "months6": "6 Bulan",
    "months12": "12 Bulan",
    "months24": "24 Bulan",
    "totalRevenue": "Total Pendapatan",
    "avgArpu": "Avg ARPU",
    "avgChurnRate": "Avg Churn Rate",
    "activeCustomers": "Pelanggan Aktif",
    "lastMonths": "{n} bulan terakhir",
    "perActiveCustomer": "per pelanggan aktif",
    "retention": "Retention {n}%",
    "newIn": "+{n} baru dalam {n2}bln",
    "revenueTrend": "Tren Pendapatan",
    "revenueTrendSub": "Total invoice lunas per bulan",
    "newVsChurn": "Pelanggan Baru vs Churn",
    "newVsChurnSub": "Penambahan dan kehilangan pelanggan per bulan",
    "arpuTrend": "Tren ARPU",
    "arpuTrendSub": "Average Revenue Per User (aktif) per bulan",
    "churnTrend": "Tren Churn Rate",
    "churnTrendSub": "Persentase pelanggan yang berhenti per bulan",
    "cumulativeCustomers": "Jumlah Pelanggan Aktif (Estimasi)",
    "cumulativeCustomersSub": "Perkiraan pelanggan aktif per akhir bulan",
    "profileDistribution": "Distribusi Paket",
    "profileDistributionSub": "Pelanggan aktif per paket/profile",
    "areaDistribution": "Distribusi Area",
    "areaDistributionSub": "Pelanggan aktif per area",
    "newCustomers": "Pelanggan Baru",
    "churn": "Churn",
    "monthlyTable": "Detail Data Bulanan",
    "monthlyTableSub": "Ringkasan lengkap per bulan",
    "colMonth": "Bulan",
    "colRevenue": "Pendapatan",
    "colInvPaid": "Inv. Lunas",
    "colNewCustomers": "+Pelanggan",
    "colChurn": "Churn",
    "colChurnPct": "Churn %",
    "colArpu": "ARPU",
    "colActiveEst": "Aktif (est.)",
    "methodologyNote": "Catatan metodologi: Churn rate dihitung berdasarkan pelanggan yang statusnya berubah ke \"stop\" pada bulan tersebut. ARPU = total pendapatan ÷ estimasi pelanggan aktif. Data bersifat estimasi — untuk akurasi maksimal gunakan laporan manual + audit berkala."
  },
  "invoicesImport": {
    "title": "Import Invoice dari CSV",
    "subtitle": "Upload file CSV untuk membuat banyak invoice sekaligus",
    "requiredFormat": "Format CSV yang diperlukan:",
    "requiredCols": "Kolom wajib:",
    "optionalCols": "Kolom opsional:",
    "dueDateHint": "Jika dueDate kosong, otomatis 7 hari dari sekarang.",
    "usernameHint": "Username harus cocok dengan username pelanggan di sistem.",
    "downloadTemplate": "Download Template CSV",
    "changeFile": "Ganti File",
    "dropZoneText": "Drag & drop file CSV di sini, atau klik untuk pilih file",
    "csvOnly": "Hanya file .csv yang diterima",
    "importing": "Mengimport...",
    "importNow": "Import Sekarang",
    "rowsPreview": "baris (preview)",
    "showing50": "Menampilkan 50 baris pertama. Semua baris akan diproses saat import.",
    "totalRows": "Total Baris",
    "successImported": "Berhasil Diimport",
    "failed": "Gagal",
    "viewList": "Lihat Daftar Invoice",
    "importAnother": "Import File Lain",
    "empty": "kosong",
    "plus7days": "+7 hari"
  },
  "fiberCable": {
    "title": "Kabel Fiber",
    "subtitle": "Manajemen kabel fiber optik dengan tube-core hierarchy",
    "add": "Tambah Kabel",
    "totalCables": "Total Kabel",
    "totalCores": "Total Core",
    "cableTypes": "Jenis Kabel",
    "searchPlaceholder": "Cari kabel...",
    "allTypes": "Semua Tipe",
    "showing": "Menampilkan {count} dari {total} kabel",
    "noData": "Belum ada kabel fiber",
    "noDataHint": "Klik \"Tambah Kabel\" untuk membuat baru",
    "inactive": "Tidak Aktif",
    "specification": "Spesifikasi",
    "diameter": "Diameter",
    "editTitle": "Edit Kabel",
    "addTitle": "Tambah Kabel Baru",
    "deleteTitle": "Hapus Kabel",
    "deleteConfirm": "Yakin hapus kabel \"{code}\"? Semua tube dan core akan ikut terhapus.",
    "basicInfo": "Informasi Dasar",
    "cableCode": "Kode Kabel",
    "cableType": "Tipe Kabel",
    "cableName": "Nama Kabel",
    "presets": "Preset Kabel",
    "manualConfig": "Konfigurasi Manual",
    "tubeCount": "Jumlah Tube",
    "coresPerTube": "Core/Tube",
    "outerDiameter": "Diameter Luar (mm)",
    "detailTitle": "Detail Kabel: {code}",
    "tubeList": "Daftar Tube & Core",
    "tubeN": "Tube {n}",
    "cores": "cores",
    "updatedSuccess": "Kabel berhasil diupdate",
    "createdSuccess": "Kabel berhasil dibuat",
    "deletedSuccess": "Kabel berhasil dihapus",
    "saveFailed": "Gagal menyimpan",
    "deleteFailed": "Gagal menghapus",
    "loadFailed": "Gagal memuat detail",
    "viewDetail": "Lihat Detail"
  },
  "fiberCore": {
    "title": "Core Fiber",
    "subtitle": "Manajemen dan alokasi core fiber optik",
    "totalCores": "Total Core",
    "available": "Tersedia",
    "used": "Terpakai",
    "damaged": "Rusak",
    "allCables": "Semua Kabel",
    "allStatus": "Semua Status",
    "noData": "Tidak ada data core",
    "noDataHint": "Pilih filter atau buat kabel fiber terlebih dahulu",
    "markDamaged": "Tandai Rusak",
    "statusLegend": "LEGENDA STATUS",
    "readyToUse": "Core siap pakai",
    "alreadyAssigned": "Sudah dialokasikan",
    "reservedCore": "Dipesan/cadangan",
    "damagedCore": "Core rusak",
    "targetType": "Tipe Tujuan",
    "targetId": "ID Tujuan",
    "selectAtLeastOne": "Pilih minimal satu core",
    "deselectGroup": "Hapus pilihan",
    "selectGroup": "Pilih semua"
  },
  "splicePoint": {
    "title": "Titik Splice",
    "subtitle": "Manajemen sambungan fiber optik dan pencatatan atenuasi",
    "createNew": "Buat Splice",
    "totalSplice": "Total Splice",
    "avgLoss": "Avg Loss",
    "allTypes": "Semua Tipe",
    "noData": "Belum ada splice point",
    "noDataHint": "Klik \"Buat Splice\" untuk membuat baru",
    "connection": "Koneksi",
    "qualityGuide": "PANDUAN KUALITAS SPLICE",
    "createTitle": "Buat Splice Baru",
    "createSubtitle": "Sambungkan dua core fiber optik",
    "detailTitle": "Detail Splice",
    "spliceType": "Tipe Splice",
    "selectCable": "Pilih Kabel",
    "selectCore": "Pilih Core",
    "cableLabel": "Kabel",
    "coreLabel": "Core",
    "createBtn": "Buat Splice",
    "searchPlaceholder": "Cari lokasi/kabel...",
    "showing": "Menampilkan {count} splice",
    "bothCoresRequired": "Pilih kedua core yang akan di-splice",
    "sameCoreError": "Tidak bisa splice core yang sama",
    "createdSuccess": "Splice berhasil dibuat",
    "deletedSuccess": "Splice berhasil dihapus",
    "deleteTitle": "Hapus Splice",
    "deleteConfirm": "Yakin hapus splice ini? Core akan dikembalikan ke status available.",
    "loadFailed": "Gagal memuat data splice",
    "createFailed": "Gagal membuat splice",
    "deleteFailed": "Gagal menghapus splice"
  },
  "infrastruktur": {
    "title": "Infrastruktur Jaringan",
    "subtitle": "OTB · Joint Closure · ODC · ODP",
    "addToMap": "Tambah {type} di Peta",
    "searchPlaceholder": "Cari {type}...",
    "colNameCode": "Nama / Kode",
    "colPort": "Port",
    "colClosureType": "Tipe Closure",
    "colFiberCount": "Core",
    "colConnectedOdps": "ODP Terhubung",
    "colPonPort": "PON Port",
    "colSplitter": "Splitter",
    "totalItems": "Total: {count} item",
    "deleteConfirmOTB": "Hapus OTB \"{name}\"? Tindakan ini tidak bisa dibatalkan.",
    "deleteConfirmJC": "Hapus Joint Closure \"{name}\"? Tindakan ini tidak bisa dibatalkan.",
    "deleteConfirmODC": "Hapus ODC \"{name}\"? Tindakan ini tidak bisa dibatalkan.",
    "deleteConfirmODP": "Hapus ODP \"{name}\"? Tindakan ini tidak bisa dibatalkan.",
    "deleteFailed": "Gagal menghapus: {error}",
    "deleteFailedOTB": "Gagal menghapus OTB.",
    "deleteFailedJC": "Gagal menghapus Joint Closure.",
    "deleteFailedODC": "Gagal menghapus ODC.",
    "deleteFailedODP": "Gagal menghapus ODP.",
    "viewOnMap": "Lihat di peta",
    "delete": "Hapus"
  },
  "error": {
    "loadFailed": "Gagal memuat halaman"
  },
  "manualPayments": {
    "accountNumber": "Nomor Rekening",
    "deleteConfirm": "Hapus data pembayaran manual ini?",
    "statusLabel": "Status",
    "totalLabel": "Total"
  },
  "olt": {
    "add": "Tambah OLT",
    "edit": "Edit OLT",
    "followRoad": "Ikuti Jalan",
    "import": "Import OLT",
    "latitude": "Latitude",
    "longitude": "Longitude",
    "model": "Model",
    "monitoring": {
      "title": "Monitoring OLT"
    },
    "name": "Nama OLT",
    "snmpCommunity": "SNMP Community",
    "sshEnabled": "SSH Aktif",
    "subtitle": "Kelola perangkat Optical Line Terminal",
    "telnetEnabled": "Telnet Aktif",
    "title": "OLT",
    "uploadRouters": "Upload Routers",
    "vendor": "Vendor"
  },
  "topup": {
    "amount": "Jumlah",
    "approve": "Setujui",
    "approveConfirmButton": "Ya, Setujui",
    "approveConfirmDesc": "Saldo agent akan bertambah sesuai nominal yang diminta.",
    "approveConfirmTitle": "Setujui Deposit?",
    "approveSuccess": "Deposit berhasil disetujui",
    "approved": "Disetujui",
    "failedApprove": "Gagal menyetujui deposit",
    "failedLoadRequests": "Gagal memuat permintaan top-up",
    "failedProcess": "Gagal memproses permintaan",
    "failedReject": "Gagal menolak deposit",
    "method": "Metode",
    "noRequests": "Tidak ada permintaan top-up",
    "note": "Catatan",
    "paymentProof": "Bukti Transfer",
    "pending": "Menunggu",
    "reject": "Tolak",
    "rejectConfirmButton": "Ya, Tolak",
    "rejectConfirmDesc": "Permintaan deposit ini akan ditolak dan agent tidak akan mendapatkan saldo.",
    "rejectConfirmTitle": "Tolak Deposit?",
    "rejectSuccess": "Deposit berhasil ditolak",
    "rejected": "Ditolak",
    "requestsDesc": "Kelola permintaan top-up saldo dari agent",
    "requestsTitle": "Permintaan Top-Up",
    "time": "Waktu",
    "viewProof": "Lihat Bukti"
  }
}