{ "common": { "menu": "Menu", "home": "Home", "login": "Sign In", "search": "Search", "filter": "Filter", "reset": "Reset", "refresh": "Refresh", "loading": "Loading data...", "loading_short": "Loading...", "all_status": "All Status", "view_all": "View All", "close": "Close", "processing": "Processing...", "success": "Success", "failed": "Failed", "details": "Details", "active": "Active", "inactive": "Inactive", "cancel": "Cancel", "back_to": "Back to", "portal": "Portal", "edit": "Edit", "delete": "Delete", "save": "Save", "add": "Add", "actions": "Actions", "copy_link": "Copy Link", "logout": "Logout", "language": "Language", "estimated_done": "Estimated finish", "since": "since", "days": "days", "hours": "hours", "back": "Back", "status": "Status", "toggle_theme": "Toggle theme", "customer": "Customer", "note_optional2": "Notes / Remarks (Optional)", "type": "Type", "date": "Date", "amount_qty": "Amount", "category": "Category", "desc_note": "Description / Notes", "desc_note2": "Description / Remarks", "description": "Description", "error_colon": "Error:", "order": "Order", "note_optional": "Notes (Optional)", "optional": "Optional", "success_excl": "Success!", "failed_colon": "Failed:", "required": "(required)", "reload": "Reload" }, "admin": { "panel": "Admin Panel", "login": { "subtitle": "Administrator Portal", "username": "Username", "password": "Password", "sign_in": "Sign In", "back_customer": "Back to Customer Portal" }, "role": { "admin": "Admin", "cashier": "Cashier", "technician": "Technician", "collector": "Collector" }, "dashboard": { "live_update": "Live Update", "portal_link": "Customer Portal Link", "monitoring_onu": "ONU Monitoring", "onu_status_title": "ONU Status", "total_onu": "Total ONU", "onu_registered": "Registered devices", "online": "Online", "active_now": "Active now", "offline": "Offline", "no_response": "No response", "warning": "Warning", "needs_attention": "Needs attention", "billing_summary_month": "This Month Billing Summary", "revenue_month": "Revenue This Month", "collected": "Collected", "active_customers": "Active Customers", "from": "From", "total_customers_suffix": "total customers", "unpaid_invoices": "Unpaid Invoices", "awaiting_payment": "Awaiting payment", "total_receivable": "Total Receivable", "not_collected": "Not collected", "quick_actions": "Quick Actions", "qa_add_customer": "Add Customer", "qa_manage_packages": "Manage Packages", "qa_create_invoice": "Create Invoices", "qa_reports": "Reports", "qa_monitor_onu": "Monitor ONU", "qa_bulk": "Bulk Config", "latest_offline": "Latest Offline ONUs", "uptime": "Uptime", "search_placeholder": "Search tag, SN, or PPPoE username...", "realtime": "Realtime Monitoring", "onu_device_list": "ONU Device List", "loading_onu": "Loading ONU data...", "loading_devices": "Loading devices...", "table": { "tag_customer": "Tag / Customer", "device": "Device", "network": "Network", "status_info": "Status / Info", "actions": "Actions" }, "device_detail": "Device Details", "edit_ssid": "Edit SSID", "new_ssid": "New SSID", "new_ssid_placeholder": "New WiFi name", "edit_wifi_password": "Edit WiFi Password", "new_password": "New Password", "new_password_placeholder": "Minimum 8 characters", "devices_suffix": "devices", "update_prefix": "Update:", "all_onu_online": "All ONUs are online!", "never": "Never", "seconds_ago": "seconds ago", "minutes_ago": "minutes ago", "hours_ago": "hours ago", "days_ago": "days ago", "reboot_confirm_prefix": "Reboot ONU:", "reboot_sent": "Reboot sent", "load_failed": "Failed to load data", "no_devices_found": "No devices found", "onu_device_fallback": "ONU Device", "no_ip": "No IP", "connected_suffix": "devices connected", "edit_password": "Edit Password", "reboot": "Reboot", "ssid_required": "SSID is required", "ssid_sent": "SSID change request has been sent to the device.", "ssid_failed": "Failed to change SSID.", "password_min": "Password must be at least 8 characters", "password_sent": "Password change request has been sent to the device.", "password_failed": "Failed to change password.", "connection_error": "Connection error.", "portal_link_copied": "Portal link copied!", "connected_devices": "Connected Devices", "no_connected_devices": "No connected devices", "detail_load_failed": "Failed to load details", "detail": { "tag": "Tag", "status": "Status", "ssid": "SSID", "serial": "Serial", "model": "Model", "software": "SW Version", "pppoe_user": "PPPoE User", "ip": "IP", "rx_power": "RX Power", "uptime": "Uptime", "last_inform": "Last Inform", "user_conn": "Connected" } }, "mikrotik": { "default_router": "-- Default Router --", "backup_rsc": "Backup RSC", "search_placeholder": "Search...", "stats": { "pppoe_online": "PPPoE Online", "hotspot_online": "Hotspot Online", "total_secrets": "Total Secrets", "total_hotspot": "Total Hotspot" }, "nav": { "dashboard": "Dashboard", "mikrotik": "MikroTik", "radius_server": "RADIUS Server", "network_map": "Network Map", "acs_pro": "GenieACS Pro", "whatsapp": "WhatsApp", "finance_report": "Finance Report", "customers": "Customers", "internet_packages": "Internet Packages", "invoices": "Invoices", "customer_tickets": "Customer Tickets", "technicians": "Technicians", "cashiers": "Cashiers", "agents": "Agents", "agent_reports": "Agent Reports", "update": "Update GitHub", "settings": "Settings", "cashiers_reports": "Cashier Reports", "collector_payments": "Collector Approval", "inventory": "Inventory (Stock)", "attendance": "Employee Attendance", "payroll": "Employee Payroll", "cashier_attendance": "My Attendance", "collectors": "Collectors", "backup": "Backup & Recovery", "monitoring": "System Monitoring", "audit_logs": "Activity Logs" }, "section": { "main": "MAIN", "billing": "BILLING", "service": "SERVICE", "cashier": "CASHIER", "user_management": "USER MANAGEMENT", "system": "SYSTEM" }, "tabs": { "pppoe_secrets": "PPPoE Secrets", "hotspot_users": "Hotspot Users", "pppoe_profiles": "PPPoE Profiles", "hotspot_profiles": "Hotspot Profiles" }, "pppoe": { "title": "PPPoE Secrets" }, "hotspot": { "title": "Hotspot Users" }, "pppoe_profiles": { "title": "PPPoE Profiles" }, "hotspot_profiles": { "title": "Hotspot User Profiles", "price": "Price", "duration": "Validity" }, "actions": { "add_secret": "Add Secret", "edit_secret": "Edit Secret", "add_user": "Add User", "add_profile": "Add Profile", "add_hotspot_user": "Add Hotspot User", "edit_hotspot_user": "Edit Hotspot User", "add_pppoe_profile": "Add PPPoE Profile", "edit_pppoe_profile": "Edit PPPoE Profile", "add_hotspot_profile": "Add Hotspot Profile", "edit_hotspot_profile": "Edit Hotspot Profile" }, "confirm": { "delete_secret": "Delete this secret?", "delete_hotspot_user": "Delete this hotspot user?", "delete_profile": "Delete this profile?" }, "empty": { "secrets": "No secrets found", "hotspot_users": "No hotspot users found" }, "errors": { "save_failed": "Failed to save", "delete_failed": "Failed to delete", "load_failed": "Failed to load data" }, "status": { "online": "Online", "offline": "Offline", "disabled": "Disabled" } }, "vouchers": { "default_router": "-- Default Router --", "stats": { "batches": "Batches", "vouchers": "Vouchers", "used": "Used", "unused": "Unused" }, "create": { "title": "Create Voucher Batch", "profile": "Hotspot User Profile", "qty": "Quantity", "price": "Price (Rp)", "mode": "Mode", "mode_voucher": "Voucher (User=Pass)", "mode_member": "Member (User & Pass Different)", "charset": "Characters", "charset_numbers": "Numbers Only", "charset_letters": "Letters Only (Lowercase)", "charset_mixed": "Letters & Numbers", "length": "Length", "prefix": "Prefix", "create_btn": "Create", "hint_default": "Validity is taken from profile metadata. Price can be filled manually (if empty it will use the profile value)." }, "batches": { "title": "Voucher Batches" }, "table": { "router": "Router", "used": "Used", "created": "Created" }, "detail": { "title": "Batch Details", "code": "Code", "password": "Password", "used_at": "Used At", "last_seen": "Last Seen" }, "actions": { "sync": "Sync", "print": "Print", "csv": "CSV" }, "js": { "price_prefix": "Price:", "duration_prefix": "Validity:", "mode_voucher_hint": "Voucher mode: username and password are the same. Validity is taken from profile metadata. Price can be filled manually.", "mode_member_hint": "Member mode: username and password are generated separately. Validity is taken from profile metadata. Price can be filled manually.", "choose_profile_first": "Select a hotspot profile first.", "invalid_qty": "Invalid voucher quantity.", "processing": "Processing...", "create_failed": "Failed to create batch", "batch_created_prefix": "Batch", "batch_created_suffix": "created. The system is creating vouchers on MikroTik.", "no_batches": "No voucher batches yet.", "default_router": "Default", "detail_failed": "Failed to load details", "detail_title_prefix": "Batch Details", "no_vouchers": "No vouchers.", "sync_failed": "Failed to sync", "sync_done_prefix": "Sync completed. New used:", "sync_done_middle": "Missing:", "delete_creating_warn": "This batch is being processed. Wait until it finishes, then try deleting again.", "delete_confirm_prefix": "Delete Batch", "delete_confirm_line1": "- This batch voucher data will be removed from the system.", "delete_confirm_line2": "- This does NOT delete hotspot users already created on MikroTik.", "delete_confirm_continue": "Continue?", "delete_failed": "Failed to delete batch", "delete_success_prefix": "Batch", "delete_success_suffix": "deleted successfully.", "deleted_vouchers_prefix": "Vouchers deleted:", "used_prefix": "Used:" } }, "routers": { "list_title": "MikroTik Routers", "add": "Add Router", "empty": "No routers added yet", "table": { "name": "Router Name", "host": "Host / IP", "port": "Port", "username": "Username", "status": "Status" }, "form": { "name": "Router Name", "name_placeholder": "Example: Main Router", "host": "Host / IP", "api_port": "API Port", "username": "MikroTik Username", "password": "Password", "password_keep": "Password (leave blank to keep)", "status": "Status", "description": "Description / Location", "optional": "Optional..." }, "actions": { "test": "Test Connection", "save": "Save Router", "edit_title": "Edit Router", "update": "Update Router" }, "confirm": { "delete": "Delete this router?", "test": "Test connection to this router?" }, "js": { "system_error": "A system error occurred." } }, "tickets": { "list_title": "Customer Tickets", "empty": "No tickets", "no_technician": "None", "stats": { "total": "Total Tickets" }, "status": { "open": "Open", "in_progress": "In Progress", "working_short": "Working", "resolved": "Resolved" }, "table": { "time": "Time", "customer": "Customer", "issue": "Issue", "technician": "Technician", "status": "Status" }, "actions": { "update_status": "Update Status", "save_changes": "Save Changes" }, "confirm": { "delete": "Delete this ticket?" }, "modal": { "title": "Update Ticket Status", "message": "Message Details" } }, "whatsapp": { "status_title": "WhatsApp Status", "checking": "Checking status...", "please_wait": "Please wait.", "connected": "Connected", "need_scan": "Scan Required", "qr_instruction": "Please scan this QR Code with your WhatsApp app:", "qr_auto_refresh": "QR Code will refresh automatically.", "connected_title": "WhatsApp Connected", "connected_as": "Connected as:", "last_updated": "Last updated:", "refresh_status": "Refresh Status", "reset_session": "Reset Session", "test_notification": "Send Test", "confirm_test": "Send a WhatsApp test notification to admin now?", "confirm_reset": "Are you sure you want to reset the WhatsApp session? You will need to scan the QR again after this.", "desc_open": "WhatsApp bot is connected and ready to send notifications.", "desc_qr": "Session not found or expired.", "disconnected_prefix": "Disconnected", "desc_off": "WhatsApp bot is offline or reconnecting.", "device_fallback": "Device", "wait_qr_lib": "Waiting for QR Code library...", "qr_fail": "Failed to render QR Code. Please check the browser console." }, "broadcast": { "title": "WhatsApp Broadcast", "start": "Start Broadcast", "target": "Recipients", "delay": "Delay Between Messages (Seconds)", "message": "WhatsApp Message", "send_mass": "Send Bulk Message", "sending": "Sending:", "failed": "Failed", "confirm_send": "Send broadcast message now? Make sure the recipients and message are correct.", "info": "Messages will be sent automatically using your WhatsApp Bot number with a safe delay between messages to reduce spam detection risk.", "target_all": "All Customers (Active & Suspended)", "target_active": "Active Customers Only", "target_suspended": "Suspended Customers Only", "target_unpaid": "Customers with Unpaid Invoices", "warning_title": "IMPORTANT WARNING:", "warning_body": "Using bulk broadcast may risk your WhatsApp account being blocked (banned) by Meta if flagged as spam. Make sure the message is relevant to customers. The developer is not responsible for any account blocking risks.", "variables": "Variables:", "portal_link": "Portal Link", "formatting": "Use *Bold*, _Italic_, or ~Strikethrough~ according to WhatsApp formatting.", "confirm_change_target": "Change recipients target? Your current message will be replaced with a new template.", "sending_btn": "Sending...", "done_prefix": "Done:", "sent_suffix": "sent" }, "billing": { "title": "Invoices", "manage_title": "Invoice Management", "generate": "Generate Invoices", "search_placeholder": "Search name / phone...", "all_months": "All Months", "all_status": "All Status", "unpaid": "Unpaid", "paid": "Paid", "list": "Invoice List", "empty": "No invoices. Generate monthly invoices first.", "summary": { "total": "Total Invoices", "paid": "Paid", "unpaid": "Unpaid", "collected_pct": "% Collected" }, "table": { "customer": "Customer", "period": "Period", "package": "Package", "amount": "Amount", "status": "Status", "paid_by": "Paid By", "paid_time": "Paid Time", "actions": "Actions" }, "status": { "paid": "Paid", "unpaid": "Unpaid" }, "actions": { "mark_paid": "Mark Paid", "unisolate": "Unsuspend", "send_wa": "Send Invoice WA", "print_invoice": "Print Receipt/Invoice", "unpay": "Unmark Paid", "isolate_manual": "Manual Suspend" }, "confirm": { "unisolate_without_payment": "Unsuspend this customer without payment?", "unpay": "Cancel paid status?", "isolate_manual": "Suspend this customer manually?", "delete": "Delete this invoice?" }, "generate_monthly": "Generate Monthly Invoices", "generate_hint": "Invoices will be created for all active customers who don't have an invoice for the selected period.", "month": "Month", "year": "Year", "choose_invoice": "Select invoices to mark as paid:", "received_by": "Received By", "received_by_placeholder": "Staff / technician name", "notes_optional": "Notes (optional)", "notes_placeholder": "Bank transfer, cash, etc...", "confirm_paid": "Confirm Paid", "loading_other_invoices": "Loading other invoices...", "js": { "customer_prefix": "Customer:", "package_fallback": "Internet" } }, "reports": { "total_revenue_year": "Total Revenue", "this_month": "This Month", "pending_receivable": "Outstanding Receivable", "active_customers_total": "Active Customers", "revenue_via_agent_year": "Revenue via Agent", "agent_deposit_year": "Agent Deposits", "cash_in_year": "Cash In (No Double Count)", "this_month_prefix": "This month:", "monthly_revenue": "Monthly Revenue", "top_unpaid": "Top Outstanding", "all_paid": "All customers are paid", "invoices_suffix": "invoices", "monthly_breakdown": "Monthly Breakdown", "no_data_year_prefix": "No data for year", "recent_payments": "Recent Payments", "no_payments": "No payments yet", "table": { "month": "Month", "total_invoices": "Total Invoices", "paid": "Paid", "unpaid": "Unpaid", "revenue": "Revenue", "pct": "Percentage", "customer": "Customer", "period": "Period", "amount": "Amount", "recorded_by": "Recorded By", "time": "Time" }, "chart": { "revenue_label": "Revenue (Rp)" } }, "customers": { "title": "Customers", "manage_title": "Customer Management", "list": "Customer List", "add": "Add Customer", "export_excel": "Export Excel", "import_excel": "Import Excel", "search_placeholder": "Search name, phone, tag...", "empty": "No customers yet", "stats": { "total": "Total", "active": "Active", "suspended": "Suspended", "inactive": "Inactive" }, "filter": { "all_status": "All Status", "active": "Active", "suspended": "Suspended", "inactive": "Inactive" }, "table": { "name": "Name", "phone_tag": "Phone / ONU Tag", "package": "Package", "address": "Address", "status": "Status", "unpaid": "Unpaid Invoices", "actions": "Actions" }, "auto_isolate": { "label": "Auto Isolate", "off": "OFF", "date_prefix": "Day " }, "unpaid_suffix": "invoices", "paid_label": "Paid", "confirm_delete": "Delete this customer?", "actions": { "generate_invoice": "Generate Invoice", "pay_invoice": "Pay Invoice" }, "generate_invoice_title": "Generate Invoice (Customer)", "generate_invoice_hint": "The invoice is created only for the selected customer. If it already exists, it will not be created again.", "generate_invoice_customer": "Customer", "generate_invoice_btn": "Generate", "pay_invoice_title": "Pay Invoice (Customer)", "pay_invoice_hint": "For early payments: choose the period. If the invoice doesn't exist, the system will create it and immediately mark it as Paid.", "pay_invoice_customer": "Customer", "pay_invoice_notes_placeholder": "Example: Early payment", "pay_invoice_btn": "Pay", "paid_badge": "Paid", "paid_months_label": "Already paid:", "none_paid": "No paid months yet", "total_selected_label": "Selected total:", "months_suffix": "months" }, "agents": { "title": "Agents", "manage_title": "Agent Management", "list": "Agent List", "add": "Add Agent", "empty": "No agents yet.", "confirm_delete": "Delete this agent?", "table": { "name": "Name", "username": "Username", "phone": "Phone", "balance": "Balance", "billing_fee": "Billing Fee", "status": "Status", "actions": "Actions" }, "reports": { "title": "Reports", "open": "Open Agent Reports" }, "modal": { "add_title": "Add New Agent", "edit_title": "Edit Agent" }, "form": { "name": "Name", "username": "Username", "password": "Password", "phone": "Phone", "billing_fee": "Billing Fee (Rp)", "initial_balance": "Initial Balance (Rp)", "status": "Status" }, "topup": { "title": "Top Up Agent Balance", "agent": "Agent", "amount": "Amount (Rp)", "note": "Note", "note_placeholder": "Example: shift starting top-up", "process": "Process" }, "prices": { "title": "Agent Voucher Prices", "agent": "Agent", "add_update": "Add / Update Price", "router": "Router", "default_router": "(Default)", "profile": "Hotspot Profile", "choose_profile": "Choose profile", "validity": "Validity", "validity_placeholder": "Example: 1d", "buy": "Buy Price (deduct balance) (Rp)", "sell": "Sell Price (printed on receipt) (Rp)", "status": "Status", "save": "Save Price", "active_list": "Active Prices", "table": { "router": "Router", "profile": "Profile", "validity": "Validity", "buy": "Buy", "sell": "Sell", "status": "Status", "actions": "Actions" }, "empty_select_agent": "Select agent", "empty_no_prices": "No prices yet", "required_agent_profile": "Agent and profile are required", "save_failed": "Failed to save", "confirm_delete_price": "Delete this price?", "delete_failed": "Failed to delete" } }, "agent_reports": { "title": "Agent Reports", "history": "Transaction History", "empty": "No transactions yet.", "transactions_suffix": "transactions", "invoice_prefix": "INV #", "filter": { "all_agents": "All Agents" }, "type": { "topup": "TOPUP", "invoice": "INVOICE", "voucher": "VOUCHER", "adjust": "ADJUST" }, "table": { "time": "Time", "agent": "Agent", "type": "Type", "detail": "Detail", "deduct": "Deduct Balance", "sell": "Sell Price", "fee": "Fee/Profit", "balance_after": "Balance After" } }, "cashiers": { "add": "Add Cashier", "list": "Cashier Staff List", "empty": "No cashiers yet.", "confirm_delete": "Delete this cashier?", "save_changes": "Save Changes", "table": { "name": "Name", "username": "Username", "password": "Password", "phone": "Phone", "status": "Status", "actions": "Actions" }, "modal": { "add_title": "Add New Cashier", "edit_title": "Edit Cashier" }, "form": { "full_name": "Full Name", "login_username": "Login Username", "password": "Password", "phone": "Phone", "phone_placeholder": "Example: 08123456789", "account_status": "Account Status" } }, "technicians": { "add": "Add Technician", "list": "Field Technician List", "empty": "No technicians yet.", "confirm_delete": "Delete this technician?", "save_changes": "Save Changes", "table": { "name": "Name", "username": "Username", "password": "Password", "whatsapp": "WhatsApp", "area": "Work Area", "status": "Status", "actions": "Actions" }, "modal": { "add_title": "Add New Technician", "edit_title": "Edit Technician" }, "form": { "full_name": "Full Name", "login_username": "Login Username", "password": "Password", "whatsapp": "WhatsApp Number", "whatsapp_placeholder": "Example: 08123456789", "area": "Work Area", "area_placeholder": "Example: Subdistrict A, Block B", "account_status": "Account Status" } }, "olts": { "manage": "Manage OLT", "add": "Add OLT", "select_label": "Select OLT Device:", "no_data": "No OLT data", "refresh_data": "Refresh Data", "loading": "Fetching OLT data...", "onu_list_title": "Registered ONU Devices", "search_placeholder": "Search ID / SN...", "last_update": "Last Update", "empty_select": "Select an OLT device above to monitor ONU data.", "confirm_delete": "Delete this OLT?", "confirm_reboot": "Are you sure you want to reboot this ONU?", "reboot_sent": "Reboot command sent successfully.", "failed_prefix": "Failed", "error_prefix": "Error", "status": { "online": "Online", "offline": "Offline" }, "stats": { "total_onu": "Total ONU", "online": "Online", "offline": "Offline", "weak_signal": "Weak Signal" }, "system": { "temp": "Temp", "cpu": "CPU", "ram": "RAM", "uptime": "Uptime", "traffic_in": "Traffic In", "traffic_out": "Traffic Out" }, "table": { "no": "No", "id": "ID", "serial": "Serial Number", "status": "Status", "tx": "TxPower", "rx": "RxPower", "oid": "OID Index" }, "manage_modal": { "title": "OLT Device Management", "table": { "name": "OLT Name", "host": "Host / IP", "brand": "Brand", "status": "Status", "actions": "Actions" } }, "add_modal": { "title": "Add New OLT", "save": "Save Device" }, "edit_modal": { "title": "Edit OLT", "update": "Update Device" }, "form": { "name": "OLT Name", "name_placeholder": "Example: Main OLT", "host": "IP Address / Host", "snmp_port": "SNMP Port", "brand": "Brand / Type", "snmp_community": "SNMP Community", "web_user_optional": "Login User (Optional)", "web_password_optional": "Login Pass (Optional)", "web_user": "Login User", "web_password": "Login Pass", "description": "Description / Location", "monitoring_status": "Monitoring Status" }, "actions": { "try_again": "Try Again", "rename_prompt": "Enter a new name for ONU:", "rename": "Rename", "reboot": "Reboot ONU" }, "errors": { "server_connect_failed": "Failed to reach server" }, "empty_no_onu": "No ONU data found." }, "map": { "add_odp": "Add ODP", "stats": { "total_odp": "Total ODP", "active_customers": "Active Customers", "suspended_customers": "Suspended / Inactive" }, "legend": { "odp": "ODP (Box)", "active": "Active", "suspended": "Suspended" }, "add_modal": { "title": "Add New ODP", "save": "Save ODP" }, "edit_modal": { "title": "Edit ODP", "update": "Update ODP" }, "form": { "name": "ODP Name", "name_placeholder": "Example: ODP-A-01", "pick_location": "Pick Location on Map", "adjust_location": "Adjust Location on Map", "lat": "Latitude", "lng": "Longitude", "tips": "*Tip: Drag the marker or click the map to set a precise position", "description": "Description" }, "layers": { "osm": "OpenStreetMap", "hybrid": "Satellite (Hybrid)" }, "popup": { "description": "Description", "location": "Location", "status": "Status", "package": "Package", "address": "Address", "view_details": "View Details" }, "status": { "active": "Active", "suspended": "Suspended" }, "cable": { "online": "Online", "offline": "Offline" } }, "print_invoice": { "title": "Print Invoice Receipt", "address_fallback": "Internet Service Center", "contact_label": "Phone/WA", "receipt_no": "Receipt No.", "date": "Date", "cashier": "Cashier", "system": "System", "notes": "Notes", "dear": "To", "id_tag": "ID/Tag", "payment_title": "Internet Invoice Payment", "period": "Period", "package": "Package", "package_fallback": "Internet Service", "total_paid": "TOTAL PAID", "paid": "PAID", "manager": "Manager", "manager_fallback": "Main Admin", "footer": { "thanks": "Thank you for your payment.", "keep_receipt": "Keep this receipt as valid proof of payment.", "printed_from": "Printed from Billing System" } }, "print_vouchers": { "title": "Print Voucher Batch", "days": "days", "hint_user_pass": "Enter User (U) and Pass (P).", "contact_label": "Phone/WA" }, "packages": { "title": "Internet Packages", "list": "Package List", "add": "Add Package", "edit": "Edit Package", "update": "Update", "empty": "No packages yet. Add your first package!", "customers_suffix": "customers", "table": { "name": "Package Name", "price_month": "Price / Month", "speed": "Speed", "description": "Description", "customers": "Customers", "status": "Status" }, "form": { "name_profile": "Package Name (MikroTik Profile)", "pick_from_mikrotik": "-- Select from MikroTik --", "type_manual": "Or type manually...", "price_month": "Price / Month (Rp)", "speed_down": "Download Speed (Mbps)", "speed_up": "Upload Speed (Mbps)", "status": "Status", "description": "Description", "optional": "Optional..." }, "confirm": { "delete": "Delete this package? Customers using this package will lose the package reference." } }, "settings": { "title": "Settings", "system_title": "System Settings", "telegram": { "title": "Telegram Bot Settings (Admin Backup)", "status": "Telegram Bot Status", "admin_id": "Telegram Admin ID", "bot_token": "Telegram Bot Token", "sync_title": "Sync / Remove Old Webhook", "sync": "Sync" }, "whatsapp": { "title": "WhatsApp Settings" }, "app_info": "Application Info", "company_name": "App / Company Name", "footer_info": "Footer Info", "owner_name": "Manager / Owner Name", "primary_phone": "Primary Phone (CS)", "company_email": "Company Email", "office_address": "Office Address", "office_lat": "Office Latitude", "office_lng": "Office Longitude", "operational_hours": "Operational Hours", "server_port": "Server Port", "timezone": "Timezone (WIB/WITA/WIT)", "customer_otp_login": "Customer OTP Login", "otp_enabled": "Enabled (Send via WA)", "otp_disabled": "Disabled (Direct)", "external_api": "External APIs" }, "section": { "main": "MAIN", "billing": "BILLING", "service": "SERVICE", "user_management": "USER MANAGEMENT", "system": "SYSTEM" }, "nav": { "dashboard": "Dashboard", "mikrotik_monitoring": "MikroTik Monitoring", "voucher_hotspot": "Hotspot Voucher", "router_management": "Router Management", "olt_management": "OLT Management", "network_map": "Network Map", "whatsapp_status": "WhatsApp Status", "customers": "Customers", "internet_packages": "Internet Packages", "invoices": "Invoices", "finance_report": "Financial Reports", "customer_tickets": "Customer Tickets", "technicians": "Technicians", "cashiers": "Cashiers", "agents": "Agents", "agent_reports": "Agent Reports", "update": "GitHub Update", "settings": "Settings", "automation": "Automation", "network": "Network", "grp_packages": "Packages & Vouchers", "grp_finance": "Finance", "grp_service": "Service", "grp_users": "Users", "grp_system": "System", "customers_data": "Customers", "invoices_list": "Invoices" }, "update": { "title": "GitHub Update", "status_title": "Version Status", "server_version": "Server Version (version.txt)", "github_version_prefix": "GitHub Version (origin/", "github_version_suffix": ")", "has_update": "Update available", "latest": "Up to date", "check": "Check Version", "run": "Update Now", "keep_files": "Files not overwritten during update: settings.json and database folder. After update completes, restart the app to activate the new version.", "log_title": "Update Log", "confirm": "Run update from GitHub now? Make sure the internet connection is stable and the app will be restarted after completion." }, "acs": { "monitoring": "GenieACS Monitoring", "total_devices": "Total Devices", "all_servers": "All ACS Servers", "device_id": "Device ID / SN", "customer_name": "Customer Name", "name": "Name", "location": "Location", "devices": "Devices", "profile_mikrotik": "MikroTik Profile", "progress_add_wan": "Progress Add WAN", "waiting": "Waiting", "workflow_not_started": "Workflow not started.", "server_name": "Server Name", "location_note": "Location / Note", "location_note_ph": "e.g. Data Center", "action": "Action", "cancel": "Cancel", "search_ph": "Search SN, Customer, PPPoE...", "optional": "Optional", "online": "Online", "offline": "Offline" }, "vd": { "action": "Action", "active": "Active", "inactive": "Inactive", "cancel": "Cancel", "usage_limit": "Usage Limit", "empty": "No vouchers yet.", "install_fee": "Initial Install Fee (Rp)", "note": "Note", "used": "Used", "pppoe_domain": "PPPoE Domain", "code": "Code", "max_discount": "Max Discount (Rp)", "min_billing": "Min Bill (Rp)", "value": "Value", "value_rp_pct": "Value (Rp / %)", "nominal": "Amount (Rp)", "default_pppoe_pass": "Default PPPoE Password", "percent": "Percent (%)", "status": "Status", "type": "Type" }, "wa": { "tab_status": "WhatsApp Status", "tab_broadcast": "Broadcast & Reminder", "tab_templates": "Message Templates", "tab_livechat": "Live Chat", "tab_preview": "Message Preview" }, "automation": { "title": "Automation", "intro": "All automatic settings (billing reminder, arrears/suspend, auto-paid) and template selection are on this page.", "tab_reminder": "Billing Reminder", "tab_arrears": "Arrears & Isolate", "tab_lunas": "Auto-Paid", "tab_templates": "Templates & Preview", "reminder_title": "Automatic Billing Reminder", "allow_billing": "Send Bills via WhatsApp (Global)", "allow_billing_hint": "Allow sending bills to customers (all features)", "cron_enable": "Automatic Reminder (Schedule / CRON)", "cron_enable_hint": "Run automatic billing reminder", "cron_hint": "Sent on day H before the isolate date. Example: 3,1 = H-3 and H-1.", "days_before": "Reminder days (H before isolate)", "auto_template": "Automatic Reminder Template", "auto_template_hint": "Choose \"QRIS Bill\" to attach the QR image.", "delay": "Delay Between Messages (seconds)", "billing_message": "Reminder Message Body", "vars": "Variables", "arrears_title": "Automatic Arrears & Isolate", "auto_deactivate": "Auto-Deactivate Overdue Customers", "deactivate_months": "Arrears Limit (months)", "deactivate_months_hint": "Customer is deactivated (isolated) after this many unpaid months (3 = 3 unpaid new invoices).", "auto_delete": "Auto-Delete Customer (over limit)", "auto_delete_hint": "If Active: customers overdue beyond the limit (e.g. 4th month) are deleted automatically — must re-register.", "arrears_notice": "Auto Arrears Warning", "arrears_notice_hint": "Send a WhatsApp warning when arrears approach the limit. Template in the Templates & Preview tab.", "manual_action": "Manual Action", "run_now": "Run now", "lunas_title": "Auto-Paid (Rp 0 bill / auto_isolate=0)", "lunas_notify": "Notify Customer", "lunas_notify_hint": "Send \"Bill PAID\" WhatsApp to the customer when a Rp 0 / auto_isolate=0 invoice is auto-paid.", "lunas_recap": "Monthly Recap to Admin", "lunas_recap_hint": "Recap (count + list of Rp 0 partners) sent to admin on the 1st of each month.", "view_recap": "View Recap", "open_recap": "Open Log & Recap", "mapping_title": "Template Used by Each Automation", "edit_templates": "Edit Template", "preview": "Preview", "col_event": "Automation", "col_template": "Template", "map_reminder": "Billing reminder (CRON)", "map_arrears": "Arrears warning", "map_deactivated": "Auto-Deactivate customer", "map_deleted": "Auto-Delete customer", "map_lunas": "Auto-Paid", "map_qris": "QRIS Bill (QR attachment)", "mapping_hint": "Edit message content in the templates menu, then check the result in Message Preview.", "tab_manual": "Manual Send", "tab_history": "History", "manual_title": "Manual Bill Sending (by isolate date)", "manual_isolate": "Isolate Date", "all_dates": "All", "manual_template": "Template", "manual_interval": "Interval", "interval_static": "Static", "interval_random": "Random (anti-ban)", "delay_short": "Delay (sec)", "delay_random": "Random delay (min–max sec)", "manual_hint": "Send to unpaid customers on the selected isolate date. Works even when auto reminder is OFF. Use Random to avoid being flagged as spam.", "stop": "Stop", "manual_send": "Send Bills Now", "history_title": "Automation History", "col_type": "Type", "col_isolate": "Isolate", "col_interval": "Delay", "col_target": "Target", "col_sent": "Sent", "col_failed": "Failed", "col_status": "Status", "type_auto": "Automatic", "type_manual": "Manual", "no_history": "No automation history yet.", "history_hint": "Last 30 activities (manual & automatic): template, sent, failed, and status." }, "service_notice": { "title": "Service Status & Announcement", "view_landing": "View Landing", "mode_time": "Mode & Time", "mode": "Announcement Mode", "mode_normal": "NORMAL — no announcement", "mode_mass": "Mass Outage — warning + estimate", "mode_repair": "System Maintenance — light info", "start": "Outage/Maintenance Start Time", "interval": "Estimate Interval (hours)", "interval_hint": "The estimate advances automatically every interval until marked done.", "note": "Custom Note (optional)", "note_ph": "Leave empty for default text", "preview": "Message Box Preview", "preview_text": "There is a minor system maintenance.", "preview_hint": "Rough preview. Final look follows the landing & customer dashboard theme (below the ads).", "js_mass": "Mass Outage", "js_repair": "System Maintenance", "js_mass_text": "There is currently a network outage. Our technical team is working on it and will restore service shortly.", "js_repair_text": "There is a minor system maintenance. Please bear with us, the service will return to normal shortly.", "js_eta": "Estimated completion:", "js_since": "since" }, "audit": { "total": "Total Logs", "recent24": "Activity (24h)", "updates": "Data Updates", "deletes": "Deletions", "table_title": "System Activity Log", "all_actions": "-- All Actions --", "all_modules": "-- All Modules --", "th_time": "Time", "th_action": "Action", "th_module": "Module", "th_entity": "Entity ID", "th_actor": "Actor", "th_detail": "Detail", "th_ip": "IP / Device", "view_detail": "View Detail" }, "sb": { "title": "Sidebar Settings", "control": "Menu Control", "status_all": "All Sidebar Menu Status", "can_manage": "Admin can change all menus", "readonly": "Read-only mode for this account", "intro": "Each menu can be set to Visible, Hidden, or Locked. A locked menu will require a special password before opening.", "th_menu": "Menu", "th_section": "Section", "th_role": "Role", "th_status": "Status", "st_visible": "Visible", "st_hidden": "Hide", "st_locked": "Lock", "pass_label": "Activation Code (Free)", "pass_ph": "Enter the activation password before saving", "pass_hint": "Sidebar menu status changes are saved only if the activation password is correct.", "no_pass": "No activation code yet?", "get_donation": "Get a FREE activation code on the OPEN-ISP Support page", "or_contact": "or contact", "donation_page": "Free Activation Code (OPEN-ISP Support)", "save": "Save Sidebar Settings", "only_admin": "Only the main admin can change sidebar menu status.", "notes": "Notes", "note_lock": "If a Locked menu is clicked from the sidebar, the system shows how to get a FREE activation code or contact", "note1": "Hidden status removes the menu from the sidebar and denies direct URL access.", "note2": "Locked status keeps the menu visible but cannot be opened until changed on this page.", "note3": "Menu status changes can only be saved after entering the correct activation password." }, "acsdev": { "title": "Device Detail", "online": "Device Online", "offline": "Device Offline", "last_inform": "Last Inform", "never": "Never", "device_info": "Device Info", "tag": "Tag/ID", "model": "Model", "serial": "Serial Number", "swver": "SW Version", "net_info": "Network Info", "pppoe_user": "PPPoE User", "ip": "IP Address", "rxpower": "RX Power", "ssid": "SSID", "uptime": "Uptime", "pppoe_uptime": "PPPoE Uptime", "clients": "Connected Clients (Live)", "iface": "Interface", "no_clients": "No clients connected.", "genieacs": "GenieACS Pro" }, "payslip": { "title": "Payslip", "print": "Print Payslip", "close": "Close", "doc_title": "EMPLOYEE PAYSLIP", "period": "Period", "employee": "Employee Name", "position": "Position", "work_days": "Working Days", "absent_days": "Absent Days", "late": "Late", "status": "Status", "income": "EARNINGS", "base_salary": "Base Salary", "allow_transport": "Transport Allowance", "allow_meal": "Meal Allowance", "allow_phone": "Phone Allowance", "allow_other": "Other Allowance", "ticket_bonus": "Ticket Bonus", "tickets_done": "tickets resolved", "collection_commission": "Collection Commission", "overtime": "Overtime", "total_income": "Total Earnings", "deductions": "DEDUCTIONS", "ded_absent": "Absence Deduction", "ded_late": "Late Deduction", "ded_other": "Other Deduction", "total_deductions": "Total Deductions", "net": "NET SALARY", "note": "Note", "sign_employee": "Employee", "sign_admin": "Admin / Manager", "printed": "Printed", "slip_id": "Slip ID" }, "inventory": { "add_item": "Add Item", "tab_items": "Items", "tab_categories": "Categories", "tab_logs": "Stock History", "title": "All Inventory Items", "search": "Search item...", "th_name": "Item Name", "th_category": "Category", "th_brand": "Brand / Model", "th_stock": "Available Stock", "th_assigned": "Installed", "th_action": "Action", "detail_stock": "Stock Detail", "add_stock": "Add Stock", "cat_title": "Category List", "cat_name": "Category Name", "cat_desc": "Description", "confirm_del_cat": "Delete this category?", "cat_add": "Add Category", "cat_save": "Save Category", "logs_title": "Item Movement History", "th_time": "Time", "th_item": "Item", "th_sn": "SN", "th_type": "Type", "th_qty": "Qty", "th_actor": "Officer", "th_note": "Note", "type_in": "In", "type_out": "Out", "type_adjust": "Adjustment", "modal_add": "Add New Item", "modal_edit": "Edit Item", "f_category": "Category", "f_category_ph": "-- Select Category --", "f_name": "Item Name", "f_brand": "Brand", "f_model": "Model", "f_unit": "Unit", "f_min_stock": "Minimum Stock", "f_desc": "Description", "save_item": "Save Item", "stock_modal": "Stock In Entry", "f_serial": "Serial Number (Optional)", "f_serial_ph": "e.g. SN12345678", "f_qty": "Quantity", "f_condition": "Condition", "cond_new": "New", "cond_used": "Used / Salvage", "f_location": "Storage Location", "f_note": "Note", "f_note_ph": "e.g. Purchase from Supplier X" }, "onustickers": { "title": "Print Modem / ONU Sticker", "ctrl_title": "Print Modem / ONU Sticker (Name Tag Size)", "print": "Print Stickers (A4 / PDF)", "mode": "Print Mode", "mode_blank": "Blank Template (Field Technician Stock)", "mode_customers": "Customer Data (Personalized)", "count": "Number of Stickers", "count10": "10 Stickers (1 A4 Sheet)", "count20": "20 Stickers (2 A4 Sheets)", "count30": "30 Stickers (3 A4 Sheets)", "count1": "1 Sticker (Thermal / Single)", "filter_router": "Filter Router", "all_routers": "All Routers", "search": "Search Customer", "search_ph": "Type name / ID...", "cs_label": "CS / Support No. (Shown on Sticker)", "info": "Sticker size is set to the precise Name Tag / ID Card standard (~8.5cm x 5.4cm). An A4 format holds 10 stickers per sheet. Use HVS or Glossy sticker paper.", "badge": "MODEM ONU", "l_name": "Name", "l_id": "ID / Inet", "l_pkg": "Package", "tip1_t": "Lightning Safety:", "tip1_x": "Unplug the power adapter & cables during heavy rain!", "tip2_t": "How to Reboot:", "tip2_x": "Turn off power for 10 seconds, turn back on if slow.", "tip3_t": "Red LOS:", "tip3_x": "Fiber cable issue/broken, contact CS immediately.", "qr_label": "SCAN IN APP", "qr_sub": "Server auto-connect", "footer_cs": "CS / Support:", "footer_notice": "Stick on Customer Modem" }, "reportprint": { "title": "Financial Report", "company_sub": "Broadband Internet & RT/RW Net Service Center", "telp": "Tel/WA", "email": "Email", "title_box": "PROFIT / LOSS REPORT", "period": "Year Period", "printed": "Printed", "kpi_income": "Total Income (Gross)", "kpi_expense": "Total Expenses & Capital", "kpi_profit": "Net Profit", "sec1": "1. Monthly Income & Expense Breakdown", "sec2": "2. Largest Expense Categories Breakdown", "th_no": "No", "th_month": "Month", "th_income": "Income (Rp)", "th_expense": "Expense (Rp)", "th_net": "Net Profit (Rp)", "no_monthly": "Monthly recap data is not available yet.", "total_year": "YEAR TOTAL", "th_pos": "Expense Category / Item", "th_total": "Total Cost (Rp)", "th_share": "Share (%)", "no_expenses": "No expense records this year.", "total_expense": "TOTAL EXPENSES:", "sig1": "Prepared by,", "sig1_role": "Finance / Admin", "sig1_name": "Administrative Staff", "sig2": "Acknowledged & Approved,", "sig2_role": "Director / Manager", "sig2_name": "Managing Director", "print_btn": "Print Document" }, "lock": { "reason": "Activation is required to unlock this feature", "get_code": "Get Activation Code (Free)", "open_settings": "Open Sidebar Settings", "code_label": "Activation code for this menu", "lock": "Lock", "understood": "Got it", "title": "Locked Menu", "desc": "This menu is currently locked.", "wiki_note": "— no donation required to unlock it." }, "side": { "settings": "Sidebar Settings", "router_filter": "Router Filter", "all_routers": "All Routers", "theme": "Theme", "section_control": "CONTROL" }, "dash": { "enable_auto": "Enable automatic RX Power & Offline Devices monitoring", "del_device": "Delete Device", "del_selected": "Delete Selected", "interval_label": "Automatic monitoring interval (1-24 hours)", "interval_hours": "Monitoring Interval (hours)", "acs_settings": "GenieACS Settings", "summon_selected": "Summon Selected", "last_tr069": "Last TR-069:", "test_conn": "Test Connection", "threshold_hint": "Warning threshold for RX Power (-40 to -15 dBm)", "timeout_hint": "Timeout for requests to GenieACS (5000-120000 ms)" }, "cust": { "ph_note": "Optional internal note...", "ph_phone": "E.g.: 08123456789", "ph_ip": "E.g.: 192.168.10.10", "ph_nik": "E.g.: 3201xxxxxxxxxxxx", "ph_mac": "E.g.: AA:BB:CC:DD:EE:FF", "ph_name": "E.g.: John Doe", "ph_user": "E.g.: user01", "ph_addr": "E.g.: 123 Main Street...", "ph_new_pppoe": "Type the new PPPoE username...", "ph_same_user": "Empty = same as username", "ph_pppoe_pass": "Enter PPPoE password", "ph_pick_pppoe": "Select / search MikroTik PPPoE username", "ph_hotspot_profile": "Select hotspot profile", "ph_same_cust": "Same as Customer ID/User", "tt_print_data": "Print Customer Data", "tt_print_sticker": "Print Modem / ONU Stickers", "tt_f_new": "Click to filter New / Inactive registrants", "tt_f_active": "Click to filter Active customers", "tt_f_susp": "Click to filter Suspended customers", "tt_detail": "Click to view customer & MikroTik details", "tt_all": "Click to show all customers", "tt_prepaid": "Prepaid Package Validity", "tt_pick_map": "Pick on Map", "opt_default": "-- Default (Settings) --", "opt_area": "-- Select Area --", "opt_no_collector": "-- No Collector --", "opt_no_odp": "-- No ODP --", "opt_no_port": "-- No Port --", "st_active_auto": "Active (Auto-Isolate on Due)", "sec_addr_area": "Address & Area", "f_address_full": "Full Address", "f_auto_off": "Auto-Isolate OFF", "f_auto_on": "Auto-Isolate ON", "f_auto_all": "Auto-Isolate: All", "opt_free_isolir": "Never Isolated", "f_monthly_fee": "Monthly Subscription Fee (Rp)", "f_install_fee": "Installation Fee", "f_install_fee_rp": "Installation Fee (Rp)", "btn_print": "Print", "modal_title": "Customer Connection Details & Info", "printed_at": "Printed:", "f_voucher_disc": "Voucher Discount", "f_voucher_disc_rp": "Voucher Discount (Rp)", "st_suspended": "Suspended", "f_mikrotik_api": "Prefer MikroTik API", "btn_edit": "Edit Customer", "f_email": "Email (Billing Notifications)", "filter_active": "Active Filter", "map_hint": "Drag the marker or click on the map to set the exact location.", "btn_delete": "Delete Customer", "lbl_cust_id": "Customer ID:", "btn_import": "Import Customers", "sec_mikrotik": "MikroTik Connection Info", "sec_info": "Customer Information", "sec_personal": "Customer Personal Information", "sec_infra": "Infrastructure (OLT, ODP, & Map)", "f_manual_radius": "Manual Input (RADIUS)", "f_due": "Due Date (reference: 5th)", "f_days": "Number of Days", "btn_calc": "Calculator & Approve", "btn_calc_full": "Prorata Calculator — Approve Registrant", "f_collector": "Billing Collector", "f_mikrotik_conn": "MikroTik Connection", "bulk_delete": "Delete Selected", "bulk_selected": "selected", "bulk_pick_one": "Select at least 1 customer to delete.", "bulk_confirm": "Are you sure you want to delete", "bulk_confirm2": "selected customer records?", "bulk_confirm3": "NOTE: PPPoE user/secret data on MikroTik will NOT be deleted (stays safe)." }, "bill": { "ph_note": "e.g. service credit for downtime", "tt_print_recap": "Print Bill Recap", "tt_view_proof": "View Payment Proof", "btn_revert": "Revert Payment", "btn_mass_pay": "Mass Payment", "btn_discount": "Apply Discount", "btn_gen_unique": "Generate QRIS Unique Code", "btn_unisolate": "Remove Isolation", "note_optional": "Note (optional)", "btn_print_a4": "Print Invoice (A4)", "btn_print_recap": "Print Recap", "btn_print_thermal": "Print Thermal Receipt", "disc_prefix": "Discount -Rp", "st_void": "Void", "btn_del_unique": "Delete Unique Code", "btn_mass_delete": "Mass Delete", "btn_del_bill": "Delete Bill", "btn_invoice_pdf": "Invoice PDF", "period_label": "• Period:", "all_packages": "All Packages", "all_areas": "All Areas", "all_routers": "All Routers", "all_collectors": "All Collectors", "opt_percent": "Percent (%)", "opt_amount": "Amount (Rp)" }, "common": { "keep_empty": "Leave empty to keep unchanged", "uptime": "Uptime", "search_user": "Search username...", "del_profile": "Delete Profile", "del_user": "Delete User", "edit_profile": "Edit Profile", "edit_user": "Edit User", "type_manual": "Or type manually...", "approve": "Approve", "open_new_tab": "Open Link in New Tab", "non_active": "Non-Active", "view_photo": "View Photo" }, "fin": { "start_date": "Start Date", "end_date": "End Date", "gross": "Income (Gross)", "net": "Net Profit" }, "tk": { "all_techs": "All Technicians", "general_task": "-- General / Non-Customer Task (Maintenance) --", "unassigned": "-- Unassigned (Open) --", "st_open": "Not Handled (Open)", "st_progress": "In Progress" }, "onu": { "select_vendor": "Select Vendor", "hint_rescan": "Click \"Rescan\" to find unconfigured ONUs", "hint_reload": "Click \"Reload / Scan\" to monitor configured ONU status via SNMP" }, "rds": { "card_status": "RADIUS Server Status", "card_online": "RADIUS Users Online", "card_online_sub": "Currently Connected Active Sessions", "card_nas_sub": "Registered NAS Routers on Server", "card_traffic": "RADIUS Traffic Today", "card_log_today": "Accounting Logs Today", "tab_sessions": "Active RADIUS Sessions", "tab_settings": "RADIUS Settings", "tab_nas": "NAS Router List", "tab_log": "Accounting Log", "svc_title": "RADIUS Server Service", "svc_status": "RADIUS Service Status", "opt_active_bg": "Active (Running Background UDP Service)", "opt_inactive": "Inactive (Disabled)", "desc_listen": "Listens for authentication & accounting requests from MikroTik NAS routers.", "secret": "Global Shared Secret RADIUS", "secret_desc": "Default secret used when the NAS IP is not specifically registered.", "ports_title": "UDP Network Ports", "port_auth": "Port Auth (UDP)", "port_acct": "Port Acct (UDP)", "limit_title": "Speed & Active Session Limits", "simuse": "Limit Concurrent Active Sessions (Simultaneous-Use)", "opt_simuse_on": "Active - Limit 1 Account to 1 Online Session (Reject Multiple Logins)", "opt_simuse_off": "Inactive - Allow Multi-Login", "simuse_desc": "Prevents one account from being used on many devices at once.", "rate_default": "Default Rate Limit (Speed Fallback)", "ph_rate": "Example: 5M/10M", "rate_desc": "Used when the user/customer is not bound to a specific Internet Package. (Format: Upload/Download).", "isolir_title": "RADIUS Isolir & Suspended Policy", "isolir_action": "Isolated Customer Action", "opt_isolir_pool": "Access-Accept with Isolir Dynamic IP Pool (Recommended)", "opt_isolir_reject": "Access-Reject (Connection Fully Rejected)", "isolir_pool_alloc": "Isolir IP Pool Allocation by RADIUS Server", "opt_isolir_pool_on": "Active - RADIUS allocates a dedicated Isolir IP automatically", "opt_isolir_pool_off": "Inactive - Only send Mikrotik-Group / Framed-Pool", "isolir_pool_desc": "Isolated customers get a dedicated IP from the RADIUS isolir subnet without needing a user/pool on MikroTik.", "isolir_start": "Isolir IP Pool Range (Start)", "isolir_end": "Isolir IP Pool Range (End)", "isolir_rate": "Isolated Customer Speed Limit (Rate-Limit)", "ph_isolir_rate": "Example: 512k/512k or 1M/1M", "isolir_rate_desc": "Format: Upload/Download (e.g.: 512k/512k, 1M/1M, 256k/512k). Sent directly to MikroTik when a customer is isolated.", "isolir_pool_name": "RADIUS Isolir Pool / Group Name (Attribute)", "isolir_pool_name_desc": "Extra Mikrotik-Group / Framed-Pool attribute for isolated customers.", "ipool_title": "Automatic RADIUS IP Pool Allocation", "ipool_alloc": "Dynamic IP Allocation by RADIUS Server", "opt_ipool_on": "Active - RADIUS hands out IPs automatically from the IP Pool range (Recommended)", "opt_ipool_off": "Inactive - Use Dynamic Pool from MikroTik (Framed-Pool)", "ipool_desc": "If enabled, RADIUS automatically assigns dynamic IPs to customers without static IPs, independent of the local MikroTik pool.", "ipool_start": "Normal IP Pool Range (Start)", "ipool_end": "Normal IP Pool Range (End)", "framed_pool": "Default Framed Pool Name (Fallback)", "autogen_title": "Auto-Generate PPPoE Account (New Customer)", "autogen_hint": "Used when an admin approves a registrant or clicks Generate PPPoE Account. Applies to both MikroTik and RADIUS modes.", "autogen_label": "Automatically create PPPoE account", "opt_yes": "Yes (automatic)", "opt_no_manual": "No (manual)", "pattern": "Username Pattern", "opt_cust_code": "Customer ID (ISP-xxxxx)", "default_pass": "Default Password", "profile_title": "MikroTik Profile Mode (RADIUS)", "profile_hint": "If Yes: RADIUS only authenticates & sends Mikrotik-Group (package name) — rate-limit & IP are taken from the PPP profile on MikroTik (RADIUS sends no Rate-Limit or IP attributes). Make sure the MikroTik profile name = package name.", "profile_use": "Use Profile & IP from MikroTik", "opt_profile_off": "No (RADIUS sets rate-limit & IP)", "opt_profile_on": "Yes (take from MikroTik PPP profile)", "script_title": "Automatic MikroTik Setup Script (RADIUS & Isolir)", "billing_ip": "Billing Server IP:", "copy_script": "Copy MikroTik Script", "ufw_title": "1. Linux Server Firewall Command (UFW)", "ufw_desc": "Run this command in the Linux server terminal (VPS / Production) so the router can reach the server:", "mt_title": "2. RADIUS & Isolir Integration Script on MikroTik (RouterOS Terminal)", "mt_desc": "Copy and paste the entire script below into the MikroTik Terminal (server IP is auto-filled from the field above):", "save": "Save RADIUS Configuration", "username_hint": "Username = pattern + @ + domain. Example: budi_santoso@openisp.id", "nas_empty": "No dedicated NAS registered yet. The server will use the Global Shared Secret for all router requests.", "nas_title": "NAS Router List (Network Access Server)", "modal_add": "Add NAS Client RADIUS", "nas_add": "Add NAS Client", "modal_edit": "Edit NAS Client RADIUS", "edit_nas": "Edit NAS", "del_nas": "Delete NAS", "lbl_secret_router": "Router Shared Secret", "th_secret": "Shared Secret", "th_ipnas": "NAS IP Address", "th_shortname": "Shortname", "th_note": "Description", "online_title": "Active RADIUS Sessions (Active Connections)", "confirm_clear": "Clear all active sessions with no update for more than 2 hours?", "clear_stale": "Clear Stale Sessions", "th_framed": "Framed IP", "th_nasip": "NAS IP", "th_up_in": "Upload (In)", "th_down_out": "Download (Out)", "th_duration": "Session Duration", "th_updated": "Update Time", "disconnect_title": "Disconnect Active RADIUS Session", "confirm_disconnect": "Disconnect active RADIUS session for user", "disconnect": "Disconnect", "online_empty": "No online RADIUS sessions connected.", "acct_suffix": "RADIUS (Last 100)", "acct_empty": "No RADIUS accounting log data yet.", "lbl_ipnas": "NAS Router IP Address", "ph_nas_ip": "Example: 192.168.88.1 or 0.0.0.0", "ph_nas_ip2": "Example: 192.168.88.1", "lbl_shortname": "Router Shortname", "ph_shortname": "Example: Main-Router", "ph_secret": "Example: secret123", "ph_note": "Location / Note", "save_nas": "Save NAS Client", "lbl_status_nas": "NAS Client Status", "alert_copied": "MikroTik & RADIUS Isolir setup script copied! Paste it into your MikroTik Terminal.", "alert_copied2": "MikroTik script copied!", "deactivate": "Deactivate", "activate": "Activate" } }, "tech": { "login_title": "Technician Login", "portal_title": "Technician Portal", "new_customer": "Add Customer", "logout_confirm": "Are you sure you want to log out?", "dashboard": { "greeting": "Hello, have a great day!", "in_progress": "In Progress", "resolved_today": "Resolved Today", "active_tasks": "Your Active Tasks", "empty_active": "Great! No active tasks right now.", "empty_active_hint": "Please check the \"New Tickets\" tab to take a task." }, "ticket": { "open": "Not Assigned", "in_progress": "In Progress", "resolved": "Resolved", "no_address": "No address", "mark_resolved": "Mark as Resolved", "resolve_title": "Resolve Task", "resolve_confirm_prefix": "Are you sure the task for complaint", "resolve_confirm_suffix": "has been completed?", "cancel": "Cancel", "yes_resolved": "Yes, Resolve" }, "pool": { "title": "New Tickets", "subtitle": "Unassigned complaints list", "empty": "No new complaints at the moment.", "empty_hint": "All customers are running normally.", "take_confirm": "Take this ticket and work on it now?", "take_action": "Take This Task" }, "history_page": { "title": "Task History", "subtitle": "Last 50 resolved tasks", "empty": "No resolved task history yet." }, "nav": { "my_tasks": "My Tasks", "new_tickets": "New Tickets", "map": "Map", "monitor": "Monitor", "history": "History" }, "map": { "total_odp": "Total ODP", "active": "Active", "isolated": "Isolated", "mode": "Mode", "mode_sat": "Satellite (Navigation)", "gps_ready": "GPS Ready", "satellite": "Satellite", "standard": "Standard", "olt": "OLT", "port": "Port", "ket": "Note", "directions": "Directions", "address": "Address", "package": "Package", "status": "Status", "chat": "Chat", "route": "Route", "your_pos": "Your Position" }, "odp": "ODP", "note_ph": "Describe the work, issues, materials used…", "more_photos": "+ more photos", "job_note": "Job Notes *", "job_note_hint": "This note will be visible to the admin and customer.", "job_photos": "Job Photos (Optional, max 10)", "job_photos_hint": "Before/after photos, devices, or signal level. Max 5MB per photo.", "gps_note": "GPS location is saved automatically when completing the task.", "done_save": "Done & Save", "task_for": "Task for", "cust_photos": "Photos from customer", "more_photos_suffix": "more photos", "cc": { "ph_odp": "-- Select ODP --", "ph_pkg": "-- Select Package --", "ph_router": "-- Select Router --", "ph_olt": "-- No OLT --", "gps_btn": "Get Phone Location", "note": "Note", "subtitle": "Fill in customer data and installation location.", "auto_isolate": "Auto Isolate", "odp_capacity": "ODP Port Capacity", "cust_location": "Customer Location", "phone": "Phone No.", "identity": "ID Number (KTP/SIM/Passport)", "odp_pon": "ODP PON Port (Trunk)", "pppoe_user": "PPPoE Username", "cust_port": "Customer Port (ODP)", "isolir_profile": "Isolation Profile", "router": "Router (MikroTik) *", "same_location": "Set ODP Location = Customer Location", "save": "Save Customer", "title": "Add Customer", "isolir_date": "Isolation Date (1-31)", "install_date": "Installation Date", "no": "No", "yes": "Yes", "inactive2": "Inactive", "update_odp": "Update ODP", "required_pppoe": "Required for PPPoE/Hotspot customers", "odp_port": "ODP & Port", "ph_optional": "optional", "ph_address": "E.g.: Kelurahan A, Block B" }, "mon": { "dhcp": "Enable LAN DHCP Server (Disable if Bridge)", "reboot_confirm": "Are you sure you want to reboot this device?", "auto_create": "Auto-create in MikroTik", "run_prov": "Run Provisioning", "subtitle": "Manage customer devices in the field", "wifi_config": "Configure Wi-Fi at Once", "pppoe_cred": "PPPoE Credentials", "port_binding": "LAN / WLAN Port Binding", "port_binding_label": "LAN Port Binding:", "loading_devices": "Loading device data...", "loading_ssid": "Downloading current SSID...", "new_ssid": "New WiFi Name (SSID)", "pppoe_router": "PPPoE (Router Mode)", "pppoe_user": "PPPoE User", "pppoe_pass": "PPPoE Password", "new_pass": "New WiFi Password", "mikrotik_profile": "MikroTik Profile", "prov_title": "All-in-One WAN Provisioning", "rx": "Signal (RX)", "sn": "Device SN:", "ssid_label": "SSID (Wi-Fi Name)", "wifi_pass": "Wi-Fi Password (WPA2)", "all_acs": "All ACS Servers", "save": "Save Changes", "no_devices": "No devices found", "model": "Model Type:", "edit_settings": "Edit Settings", "pppoe_username": "PPPoE Username", "vendor": "Vendor:", "wan_mode": "WAN Connection Mode", "wlan_binding": "WLAN (SSID) Binding:" } }, "customer": { "login_title": "Customer Login", "portal_title": "Customer Portal", "id_tag": "Customer ID/Tag", "id_tag_placeholder": "Enter your customer ID/tag", "otp_sent_via_wa": "OTP code will be sent via WhatsApp", "sign_in": "Sign In", "not_subscribed": "Not subscribed yet?", "register_new": "New Installation Request", "otp_title": "OTP Verification", "dashboard_title": "Customer Dashboard", "dashboard": { "portal": "Customer Portal", "hello": "Hello", "service": "Service", "active": "ACTIVE", "suspended": "SUSPENDED", "device_status": "Device Status", "current_ssid": "Current SSID", "software_version": "Software Version", "last_inform": "Last Inform", "rx_power": "RX Power", "pppoe_ip": "PPPoE IP", "pppoe_username": "PPPoE Username", "connected_users": "Connected Users" }, "billing": { "title": "Billing Status & History", "period": "Period", "service_package": "Service / Package", "amount": "Amount", "status": "Status", "paid": "PAID", "paid_at": "Paid", "paid_through": "Paid through", "paid_year_prefix": "Paid in", "none_paid": "No paid invoices yet", "unpaid_summary_prefix": "There are", "unpaid_summary_suffix": "unpaid invoices", "pay_online": "PAY ONLINE", "unpaid": "UNPAID", "empty": "No billing data.", "internet_service": "Internet Service" }, "ticket": { "title": "Support Tickets", "report_1": "REPORT", "report_2": "ISSUE", "time": "Time", "issue": "Issue", "status": "Status", "waiting": "Waiting", "in_progress": "In Progress", "resolved": "Resolved", "empty": "No ticket history yet." }, "wifi": { "change_ssid": "Change WiFi Name (SSID)", "current_ssid": "Current SSID", "new_ssid_placeholder": "New WiFi name", "change_ssid_btn": "Change SSID", "change_password": "Change WiFi Password", "new_password_placeholder": "New password", "change_password_btn": "Change Password" }, "reboot": { "device": "Reboot Device", "confirm": "Are you sure you want to reboot your device?" }, "devices": { "title": "Connected Devices", "hostname": "Hostname", "ip": "IP", "mac": "MAC", "interface": "Interface", "status": "Status", "online": "Online", "offline": "Offline", "empty": "No devices are currently connected." }, "help": { "contact_admin": "If you have issues, please contact admin via WhatsApp." }, "footer": { "about": "About", "tos": "Terms of Service", "privacy": "Privacy Policy", "contact": "Contact", "refund": "Refund Policy" }, "payment": { "choose_title": "Choose Payment", "choose_desc": "Please choose a payment method for the bill amount" }, "nav": { "home": "Home", "billing": "Billing", "help": "Help", "wifi": "WiFi", "wifi_name": "WiFi Name", "wifi_pass": "WiFi Password", "edit_wifi_name": "Change WiFi Name", "edit_wifi_pass": "Change WiFi Password", "help_ticket": "Support / Complaint" }, "pages": { "about": { "meta_title": "About Us", "hero_title_prefix": "About", "hero_subtitle": "Fast and affordable internet for everyone.", "p1": "{company} is an internet service provider (ISP) focused on delivering high-quality broadband access for homes and small businesses.", "p2": "We believe that in today's digital era, stable and fast internet access is no longer a luxury, but a basic need to support education, the creative economy, and unlimited communication.", "stats": { "speed_title": "High Speed", "speed_desc": "Fiber-optic network for a smooth internet experience.", "stable_title": "Stable & Secure", "stable_desc": "Infrastructure designed for maximum reliability 24/7.", "support_title": "Local Support", "support_desc": "A technical team ready to help you anytime." }, "vision_title": "Our Vision", "vision_body": "To become a trusted digital connectivity partner that reaches remote areas and creates a positive impact on social and economic development.", "mission_title": "Our Mission", "mission_1": "Provide competitively priced internet service with premium quality.", "mission_2": "Continuously innovate network infrastructure to keep up with technology.", "mission_3": "Deliver responsive and solution-oriented customer service.", "footer_tagline": "Connecting You to the Future" }, "tos": { "meta_title": "Terms & Conditions", "title": "Terms & Conditions", "subtitle": "Please read carefully before using our service.", "p1": "Welcome to {company} internet service. By using our service and making payments through this system, you agree to be bound by the following terms and conditions:", "s1_title": "Service", "s1_body": "We provide internet access service (ISP) according to the selected package. Service quality may be affected by technical factors, geographic location, and extreme weather conditions.", "s2_title": "Payments & Billing", "s2_li1": "Internet bills are generated automatically by the system every month based on your subscription cycle.", "s2_li2": "Payments can be made through the Customer Portal using available methods such as QRIS, Virtual Account, or Retail Outlet.", "s2_li3": "Any payment that has been successfully verified by the system is final and cannot be cancelled or refunded (Non-Refundable).", "s3_title": "Service Suspension Policy", "s3_body": "Our system may automatically suspend service if the bill remains unpaid past the due date. Service will be restored automatically after payment is verified.", "s4_title": "Refund Policy", "s4_body": "Refunds may only be considered if a payment gateway system issue causes duplicate transactions for the same invoice.", "s5_title": "Limitation of Liability", "s5_body": "{company} is not responsible for losses caused by upstream technical issues, customer negligence resulting in device damage, or force majeure events.", "footer_tagline": "All Rights Reserved" }, "privacy": { "meta_title": "Privacy Policy", "title": "Privacy Policy", "subtitle": "How we protect and safeguard your personal data.", "p1": "At {company}, customer privacy is our top priority. This Privacy Policy describes what personal information we collect and how we use it.", "s1_title": "Information We Collect", "s1_body": "We collect limited information necessary to provide the service, including:", "s1_li1": "Full name and installation address.", "s1_li2": "Phone/WhatsApp number for billing and technical notifications.", "s1_li3": "Service usage data for network quality monitoring.", "s1_li4": "Payment transaction data via third-party payment gateways.", "s2_title": "How We Use Information", "s2_body": "The information we collect is used to:", "s2_li1": "Process registration and activation of your internet service.", "s2_li2": "Send billing information and automatic payment reminders.", "s2_li3": "Provide technical support and respond to your complaints.", "s2_li4": "Improve network quality and user experience.", "s3_title": "Data Security", "s3_body": "We apply technical security standards to protect your data from unauthorized access. Sensitive data such as WiFi passwords and login details are stored with encryption on our servers.", "s4_title": "Third Parties", "s4_body": "We do not sell or rent your personal data to third parties. We only share data with payment gateway partners (such as Tripay/Xendit/Midtrans) to process your transactions securely.", "s5_title": "Consent", "s5_body": "By using our service, you hereby consent to our Privacy Policy and agree to its terms.", "footer_tagline": "Your Data Security is Our Commitment" }, "contact": { "meta_title": "Support Contact", "title": "Contact Us", "subtitle": "We are ready to help with your internet issues.", "p1": "Our support team is available to assist with technical questions, payment help, or new installation information.", "whatsapp_title": "WhatsApp Support", "whatsapp_fallback": "Contact us on WhatsApp", "fast_response": "Fast Response", "email_title": "Email Support", "hours_title": "Operating Hours", "address_title": "Office Address", "footer_tagline": "Customer Satisfaction is Our Pride" } }, "register": { "title": "New Customer Registration", "aria_home": "Home", "aria_theme": "Toggle theme", "header_login": "Sign in", "subtitle": "Fill in the details below, our team will contact you.", "form_name": "Full Name", "form_name_ph": "e.g. Budi Santoso", "form_phone": "Active WhatsApp Number", "form_phone_ph": "e.g. 081234567890", "form_email": "Email (Optional)", "form_email_ph": "e.g. budi@gmail.com", "form_email_note": "Email is used for automatic invoice delivery.", "form_nik": "ID Number — KTP/SIM/Passport (Optional)", "form_nik_ph": "e.g. 3201xxxxxxxxxxxx", "form_nik_note": "Optional, like email. For identity completeness.", "form_address": "Installation Address", "form_address_ph": "Include RT/RW, Village, District", "form_location": "Location on Map (Optional)", "btn_pick_map": "Pick on Map", "btn_use_gps": "Use GPS", "coord_none": "No coordinates selected yet.", "form_voucher": "Voucher Code (Optional)", "form_voucher_ph": "e.g. HEMAT50", "voucher_note": "Have a promo code? Enter it for a discount on the initial cost.", "voucher_pick_pkg": "Select a package first to check voucher.", "btn_next": "Continue to Choose Package", "btn_back": "Back", "form_package": "Choose Service Package", "package_ph": "Choose a package…", "per_month": "month", "est_title": "Estimated Initial Cost", "est_install": "Installation Fee", "est_prorata": "Prorated Package", "est_days": "days", "est_discount": "Voucher Discount", "est_total": "Total Initial Payment", "est_note_pre": "Package is prorated until", "est_note_post": "(reference date the 5th). This is an estimate; the final amount is set by admin.", "btn_submit": "Submit Registration", "have_account": "Already have an account?", "login_here": "Sign in here", "link_about": "About Us", "link_tos": "Terms", "link_privacy": "Privacy", "link_contact": "Contact", "succ_id": "Customer ID", "succ_pkg": "Package", "succ_estimate": "Estimated Initial Cost", "succ_install": "Installation fee", "succ_prorata": "Prorated", "succ_discount": "Discount", "succ_note": "Save your Customer ID. The final amount is set by admin during installation.", "back_login": "Back to Login", "modal_title": "Select Installation Location", "modal_close": "Close", "modal_tip": "Drag the pin or click the map to set the location.", "btn_done": "Done", "js_fill_required": "Please complete Name, WhatsApp Number, and Address first.", "js_fill_required2": "Please complete Name, WhatsApp Number, and Address first.", "js_pick_package": "Please choose a service package first.", "js_gps_unsupported": "GPS is not supported on this device.", "js_gps_fail": "Failed to get location: ", "err_required": "All fields are required.", "err_phone": "Invalid WhatsApp number. Use the format 08xxxxxxxxxx.", "err_pkg": "Selected package not found.", "err_ratelimit": "Too many registrations from this network. Please try again in a few minutes.", "success": "Registration successful! Our team will contact you via WhatsApp shortly." }, "aria_home": "Home", "aria_theme": "Toggle theme", "header_login": "Login", "tos_agree": "I agree to the", "tos_terms": "Terms & Conditions (TOS)", "check_billing": { "title": "Check Bill", "subtitle": "no login required", "search_label": "Search customer", "search_ph": "Name / WA No. / PPPoE username / ID", "search_btn": "Check", "search_note": "You can use: customer Name, WhatsApp Number, PPPoE Username, GenieACS Tag, or customer ID.", "not_found": "Customer not found. Please make sure the input is correct.", "results": "Search Results", "results_hint": "Select a customer to view bill details", "col_customer": "Customer", "unpaid": "Unpaid", "col_total": "Total", "view": "View", "paid": "Paid", "all_paid": "All bills are paid.", "unpaid_bills": "Unpaid Bills", "col_period": "Period", "col_amount": "Amount", "col_select": "Select", "payment": "Payment", "pay_method": "QRIS / Bank Transfer / E-Wallet", "pay_note": "Method is chosen on the payment page", "pay": "Pay", "history": "History (Paid)", "showing": "Showing", "data_latest": "latest records", "col_date": "Date" }, "public_voucher": { "title": "Voucher Hotspot", "subtitle": "buy & send to WhatsApp", "order_status": "Order Status", "st_done": "Done", "st_process": "Processing", "st_wait": "Waiting", "pkg": "Package", "duration": "Duration", "price": "Price", "ready": "Voucher Ready", "sent_wa": "Voucher successfully sent to the buyer's WhatsApp.", "wa_fail": "WhatsApp failed to send", "backup": "Fallback: save the voucher code shown on this page.", "fallback": "If WhatsApp fails to send, the voucher code still appears on this page.", "paid_processing": "Payment successful — voucher is being created on MikroTik. This page updates automatically.", "open_qris": "Open Static QRIS", "qris_na": "QRIS link is not available.", "continue_pay": "Continue Payment", "pkg_label": "Voucher Package", "no_profile": "No voucher profile (Mikhmon metadata) found on MikroTik.", "pay_method": "Payment Method", "qris_static": "Static QRIS (Scan)", "unique_nominal": "Unique amount", "free": "Free", "buyer_wa": "Buyer WhatsApp Number", "buyer_ph": "e.g. 08xxxxxxxxxx", "buyer_note": "The voucher code will be sent to this number.", "pay_create": "Pay & Create Voucher" }, "app_connect": { "title": "Customer Portal", "badge": "Official Customer Modem Connection", "id_label": "Customer ID", "thanks": "Thank you for using our internet service. Please access your account and services:", "download": "Download Customer App (APK)", "login": "Sign in to Customer Web Portal", "contact": "Contact WhatsApp Support", "tip1_title": "Lightning Safety:", "tip1_text": "Unplug the power adapter & cables during heavy rain to protect your modem.", "tip2_title": "How to Reboot:", "tip2_text": "Turn off the modem power button for 10 seconds then turn it back on if the connection slows." } }, "agent": { "portal_title": "Agent Portal", "login_title": "Agent Login", "dashboard_title": "Agent Dashboard", "username": "Username", "password": "Password", "username_placeholder": "Enter username", "password_placeholder": "Enter password", "sign_in": "Sign In", "logout": "Logout", "nav": { "home": "Home", "billing": "Billing", "voucher": "Voucher", "history": "History" }, "receipt_last": "Last Receipt", "new": "New", "summary": "Summary", "balance": "Balance", "billing_fee": "Invoice Fee", "account_status": "Account Status", "active": "Active", "inactive": "Inactive", "last_tx": "Last Transaction", "time": "Time", "customer": "Customer", "invoice": "Invoice", "period": "Period", "amount": "Amount", "package": "Package", "validity": "Validity", "user": "User", "pass": "Pass", "price": "Price", "profit": "Profit", "cut_balance": "Balance Deduction", "fee": "Fee", "whatsapp": "WhatsApp", "wa_sent": "Sent", "wa_not_sent": "Not sent", "print_thermal": "Thermal Print", "copy_all": "Copy All", "pay_invoice": "Pay Invoice", "search": "Search", "search_placeholder": "Phone / PPPoE / Tag / ID", "no_unpaid_prefix": "No unpaid invoices found for:", "unpaid_badge": "UNPAID", "note_optional": "Note (optional)", "process_pay_prefix": "Process Payment", "sell_voucher": "Sell Hotspot Voucher", "instant": "Instant", "no_voucher_profiles": "No voucher profiles configured for this agent. Ask admin to set prices & profiles.", "buyer_phone_optional": "Buyer WhatsApp (optional)", "choose_voucher": "Select a voucher package", "create_voucher_prefix": "Create Voucher - ", "history_title": "Recent History", "no_transactions": "No transactions yet.", "tx_type": { "topup": "TOPUP", "invoice": "INVOICE", "voucher": "VOUCHER", "generic": "TRANSACTION" }, "receipt": { "voucher_title": "HOTSPOT VOUCHER RECEIPT", "payment_title": "PAYMENT RECEIPT", "transaction_no": "Transaction No.", "date": "Date", "router": "Router", "code": "VOUCHER CODE", "password": "PASSWORD", "total_paid": "TOTAL PAID", "thanks_voucher": "Thank you.\nKeep this receipt as proof of transaction.", "thanks_payment": "Thank you for your payment.\nKeep this receipt as valid proof of payment." } }, "collector": { "login_title": "Collector Portal", "role": "Collector", "fallback_name": "Collector", "absensi": "Attendance", "today": "Today", "btn_belum": "Unpaid", "btn_isolir": "Suspended", "btn_over1m": ">1 Month", "month_short": "Mo", "tag_belum_bayar": "Unpaid Bills", "tag_hari_ini": "Bills Due Today", "tag_hari_ini_tgl": "Bills Due Today (date", "tag_isolir": "Suspended Bills", "tag_menunggak": "Overdue > 1 Month", "count_prefix": "Showing up to 500 bills for the period", "bill_list": "Bill List", "read_only": "Read Only", "filter_all": "All", "filter_all_area": "All Areas", "filter_all_cust": "All Customers", "filter_belum": "Unpaid", "filter_search": "Search (optional): name / phone / PPPoE / TAG", "data_title_pre": "Customer & Bill Data for Area", "no_data": "No customer data for this filter.", "col_name": "Name", "col_address": "Address", "col_area": "Area / Region", "col_area_short": "Area:", "col_period": "Period", "col_due": "Due Date", "col_cust_id": "Customer ID", "col_pppoe": "PPPoE", "col_onu_tag": "ONU Tag", "col_amount": "Amount", "col_status_action": "Status / Action", "status_active": "Active", "status_pending": "PENDING", "status_belum_bayar": "UNPAID", "status_belum_tagihan": "NO BILL", "status_isolir": "SUSPENDED", "status_lunas": "PAID", "lunas": "Paid", "belum_bayar_title": "Unpaid", "approved": "APPROVED", "rejected": "REJECTED", "waiting_approval": "AWAITING APPROVAL", "print_receipt": "Print Receipt (Thermal)", "struk": "Receipt", "send_wa_pdf": "Send WA PDF", "request_history": "My Submission History", "total_requests": "Total submissions (this page)", "no_requests": "No submissions yet.", "col_time": "Time", "col_status": "Status", "map": "Map", "attendance_title": "Employee Attendance", "today_status": "Today's Status", "checked_in": "Checked In", "checked_out": "Checked Out", "not_checked_in": "Not Checked In", "not_checked_out": "Not checked out", "checkin_now": "Check In Now", "checkout_now": "Check Out Now", "checkin": "Check In", "checkout": "Check Out", "month_summary": "This Month's Summary", "total_days": "Total Days", "full_days": "Full Days", "avg_hours": "Average Hours", "recent_history": "Recent History", "no_history": "No attendance history yet", "work_duration": "Work Duration", "selfie_required": "Photo required", "selfie_checkin": "Check-in selfie (required)", "selfie_checkout": "Check-out selfie (required)", "tap_camera": "Tap the camera button to take a selfie", "photo_preview": "Preview of the final photo to be sent:", "delete_photo": "Delete Photo", "no_selfie_in": "No selfie selected yet. A photo is required for check-in.", "no_selfie_out": "No selfie selected yet. A photo is required for check-out.", "getting_gps": "Getting GPS location...", "start_day": "Please check in to start your work day.", "note_checkin": "Check-in Note:", "note_checkout": "Check-out Note:", "attendance_photo": "Attendance Photo:", "duration_label": "Duration:", "minutes": "minutes", "home": "Home", "data_title": "Customer & Bill Data for Area", "checkin_label": "Check-in:", "checkout_label": "Check-out:", "total_hours": "Total Hours", "hours_minutes": "hours minutes", "filter_unpaid": "Unpaid (Filter)", "customer": "Customer", "note_in_ph": "Check-in note (optional)", "note_out_ph": "Check-out note (optional)", "gps_fail": "Failed to get GPS location" }, "portal": { "staff_login": "Staff entry", "choose": "Choose a portal to sign in.", "admin": "Admin", "admin_desc": "Administrator panel", "agent": "Agent", "agent_desc": "Agent / reseller portal", "collector": "Collector", "collector_desc": "Field collection", "tech": "Technician", "tech_desc": "Technician portal", "back_customer": "Back to Customer Portal" }, "pwa": { "title": "Customer Portal", "nav": { "billing": "Bills", "network": "Network", "account": "Account", "back_home": "Back to Home" }, "greeting": "Welcome back", "speed": "Speed", "active_period": "Active Period", "coming_soon": "Coming soon", "promo": { "b1": "OCTOBER PROMO", "s1_title": "Upgrade to 100 Mbps — 30% off", "s1_text": "Valid until October 31, 2026", "b2": "CUSTOMER REWARD", "s2_title": "Pay on time, get Rp 20,000 cashback", "s2_text": "Loyalty program for active customers", "s3_title": "Network monitored 24/7 by our tech team", "s3_text": "Fault response in under 2 hours", "show": "Show Promo", "show_short": "Show", "hidden": "Hidden" }, "quick": { "title": "Quick Actions" }, "home": { "modem": "Modem", "help": "Help", "no_bill": "No outstanding bill", "paid": "Paid" }, "isolir": "Isolation:", "net": { "status_title": "Network Status", "realtime_note": "This card shows real-time speed based on current WiFi usage — low or 0 is normal when idle.", "subtitle": "ONU & connected devices monitoring", "onu_missing": "ONU Not Detected", "onu_missing_note": "Your ONU/modem has not been detected in the system. Make sure the modem is powered on and the fiber cable is properly connected. If it is still not detected, contact the admin.", "view_detail": "View issue details", "pppoe_off": "PPPoE connection not detected — button disabled.", "modem_status": "Modem Status", "maintenance": "Network Maintenance", "maintenance_short": "Maintenance", "ssid": "WiFi Name (SSID)", "poll_onu": "Poll ONU", "restart_modem": "Restart Modem", "devices_connected": "Connected Devices (", "no_devices": "No devices detected.", "f_serial": "ONU Serial", "f_serial_no": "Serial Number", "f_model": "ONU Model", "f_rx": "Signal (Rx)", "f_pppoe": "PPPoE Connection", "f_pppoe_short": "PPPoE", "f_ip_local": "Local IP", "f_ip_public": "Public IP", "f_uptime": "Uptime", "f_password": "Password", "status_prefix": "Network status: ", "ssid_short": "WiFi SSID", "onu_primary": "Primary ONU · GPON", "status_aria": "Network status" }, "billing": { "pay_now": "Pay Now", "total_unique": "(including unique code)", "nominal_note": "Package price + unique code", "methods": "Payment methods: QRIS · Bank Transfer · E-Wallet", "pkg_detail": "Package Details", "actions": "Billing Actions", "download_pdf": "Download Bill (PDF)", "history": "Payment History", "view_history": "View All History", "paid_note": "Bills that are fully paid.", "no_history": "No payment history yet.", "nominal_note_pre": "Package price", "nominal_note_mid": "+ unique code", "quick": "Pay" }, "status": { "unpaid": "UNPAID", "paid": "PAID" }, "total": "Total", "thanks": "Thank you", "field": { "period": "Period", "name": "Name", "customer_id": "Customer ID", "address": "Address", "area": "Area", "package": "Package", "phone": "Phone / WA", "company": "Company", "phone_plain": "Phone", "email": "Email" }, "speedtest": { "subtitle": "Measure your internet speed", "note": "For accurate results, close other apps using the internet and move closer to the router.", "not_set": "Speedtest is not set up yet", "not_set_hint": "The admin has not configured the Speed Test link yet. Please contact the admin.", "contact_admin": "Contact Admin", "tips": "Speed Test Tips", "no_history": "No test history yet.", "open_title": "Open Speed Test", "open_hint": "The speed test will open in a new window. Finish it, then return to the app.", "open_btn": "Start Speed Test", "provider": "Speed Test Provider", "clear_cache": "Clear Cache", "reloading": "Reloading Speed Test..." }, "js": { "speed_measuring": "Measuring speed...", "speed_down": "Measuring download speed...", "speed_up": "Measuring upload speed...", "speed_done": "Test complete", "speed_done_fail": "Test failed", "speed_failed": "Speed test failed:", "st_not_detected": "ONU / Modem not detected", "st_detected_no_conn": "ONU detected, connection lost", "st_na": "Not detected", "logout_title": "Log out of your account?", "logout_msg": "You will need to sign in again to access the portal.", "logout_yes": "Yes, Log Out", "logging_out": "Logging out...", "logged_out": "Logged out", "reconnect_title": "Reconnect PPPoE?", "reconnect_msg": "The internet connection will briefly drop during reconnection. Continue?", "reconnect_yes": "Yes, Reconnect", "reconnecting": "Reconnecting PPPoE...", "reconnected": "PPPoE reconnected", "restart_title": "Restart Modem?", "restart_yes": "Yes, Restart", "restart_msg_old": "The modem will be restarted. The internet connection will drop for about 1-2 minutes.", "restart_msg": " will be restarted. The connection will drop for about 1-2 minutes.", "restarting": "Sending restart command...", "restarted": "Modem is restarting", "restart_sent": "Restart command sent to modem", "restart_sent_short": "Restart command sent", "polling": "Refreshing ONU status...", "polled": "ONU status updated", "loading_devices": "Loading devices...", "devices_updated": "Device list updated", "saving_wifi": "Saving WiFi settings...", "wifi_saved": "WiFi settings saved", "save_failed": "Failed to save", "onu_missing_restart": "ONU not detected — modem restart unavailable.", "onu_missing_wifi": "ONU not detected — password change unavailable.", "onu_missing_wifi2": "ONU not detected — WiFi settings unavailable.", "ssid_empty": "SSID cannot be empty", "net_ok": "Network Normal", "net_issue": "There is an ongoing network issue.", "net_fine": "No network issues at the moment. Service is running normally.", "estimate": "Estimated finish:", "sending_wa": "Sending bill to WhatsApp...", "sent_wa": "Bill sent to WhatsApp", "send_failed": "Failed to send", "send_failed_wa": "Failed to send to WhatsApp", "conn_failed": "Connection failed", "pdf_ok": "PDF downloaded (", "pdf_fail": "Failed to download PDF. Please try again.", "bill_prefix": "Bill-", "speed_failed_trail": "Speed test failed: ", "st_connected": "ONU / Modem connected" }, "account": { "personal_info": "Personal Information", "service_data": "Service Data", "billing_reminder": "Billing Reminder", "always_on": "Always On", "help_info": "Help & Information", "logout": "Log Out", "data_note": "Your account data. To make changes, submit a request to the admin.", "tech_info_note": "Technical information for support/technician use.", "copy_all": "Copy All", "copy_id": "Copy ID", "apps": "App", "about": "About", "settings": "Settings", "preferences": "Preferences", "clear_cache": "Clear App Cache" }, "wa_edit_prefix": "Hello Admin, I would like to change my customer data. ID: ", "wifi": { "title": "WiFi Settings", "subtitle": "Change your WiFi SSID and password", "password_hint": "At least 8 characters. Use a mix of letters, numbers, and symbols.", "name_ph": "WiFi Name", "pwd_ph": "New password (min. 8 characters)", "apply": "Request Change" }, "help": { "center": "Help Center", "needed": "Need Help?", "subtitle": "Send a fault report to the admin (photo optional), or chat directly via WhatsApp.", "issue_type": "Issue Type", "pick_issue": "-- Select issue type --", "pick_hint": "Tap to choose the issue type", "message": "Message Details", "message_ph": "Describe your issue…", "photo": "Photo Attachment (optional)", "photo_note": "Optional — leave empty if there is no photo.", "submit": "Submit Report", "info": "Issue Info", "chat_wa": "Chat WhatsApp", "chat_wa_alt": "Chat via WhatsApp", "official_note": "Only trust the official contacts above. The admin never asks for your password.", "topic_billing": "Billing & Payment Questions", "i_disconnected": "Connection Lost / Cannot Connect", "i_slow": "Slow Connection", "i_pon": "Red PON Light / Loss of Signal", "i_pwd": "Forgot WiFi Password", "i_other": "Other" }, "notif": { "title": "Notifications", "subtitle": "Latest notifications for your account", "empty": "No notifications yet." }, "confirm": { "sure": "Are you sure?", "yes": "Yes, Continue", "title": "Confirmation" }, "estimate_prefix": "Estimate:", "r": { "fallback_name": "Customer", "bill_prefix": "Bill", "unpaid": "Unpaid", "due_short": "due", "due_full": "Due:", "waiting": "Awaiting payment", "pending": "Awaiting Payment", "days_left": "days left", "over": "Overdue by", "days": "days", "paid_on": "Paid on", "device": "Device", "net_info": "Network Info", "service_info": "Service Info", "payment_success": "Bill Payment Successful", "amount_of": "amounting to", "has_paid": "has been PAID.", "system_confirmed": "System Confirmed", "monthly_reminder": "Monthly Bill Reminder", "awaiting": "is awaiting payment.", "due": "Due Date" }, "update": { "available": "A new version is available" }, "cache": { "confirm_title": "Clear Cache?", "confirm_msg": "App cache will be removed and the page reloaded.", "confirm_yes": "Yes, Clear" } }, "landing": { "nav": { "features": "Features", "packages": "Packages", "how": "How to Join", "area": "Coverage", "faq": "FAQ", "login": "Sign In", "register": "Sign Up", "cust_login": "Customer Login", "status": "Status", "packages_full": "Packages & Pricing" }, "hero": { "eyebrow": "Fiber Optic · Unlimited", "subtitle": "Enjoy symmetric fiber optic connectivity, low latency, and responsive technical support. Easy installation, transparent pricing, no hidden fees.", "title_prefix": "Internet", "title_hl": "fast & stable", "title_rest": "for your home and business", "subscribe": "Subscribe Now", "wa": "Chat WhatsApp", "check": "Check Bill", "stat_packages": "Package Choices", "stat_customers": "Customers", "stat_areas": "Service Areas", "stat_support": "Support", "online": "Network Online", "monitoring": "24-hour Monitoring" }, "feat": { "title": "Why choose", "sub": "We build our own fiber optic network with quality standards and service you can rely on." }, "f1": { "title": "Modern Devices", "desc": "Quality ONU/ONT devices monitored directly from our system." }, "f2": { "title": "No Data Cap", "desc": "Enjoy unlimited data with no hidden FUP. Use it all month worry-free." }, "f3": { "title": "Symmetric Fiber", "desc": "Upload speed equals download — ideal for streaming, meetings, and working from home." }, "f4": { "title": "Stable Connection", "desc": "Low latency and minimal jitter for gaming, video calls, and all online activities." }, "f5": { "title": "Wide Coverage", "desc": "Continuously expanding the network to more points in our service area." }, "f6": { "title": "Responsive Support", "desc": "Our technical team is ready to help via WhatsApp and tickets. Issues are handled quickly." }, "pkg": { "eyebrow": "Packages", "title": "Choose the right package for your needs", "sub": "Honest monthly pricing. All packages include equipment and technical support.", "symmetric": "Symmetric speed", "popular": "Popular", "permonth": "month", "choose": "Choose Package", "install": "Installation", "device": "ONU/ONT device included", "empty": "The package list is not available yet. Please contact us for information.", "f_unlimited": "Unlimited quota" }, "how": { "eyebrow": "How to Join", "title": "Subscribe in just 3 steps", "s1t": "Register", "s1d": "Register online via the registration page. Just your name, WhatsApp number, and address.", "s2t": "Verification & Survey", "s2d": "Our team verifies network availability at your location and agrees on an installation schedule.", "s3t": "Installation", "s3d": "Technicians install the equipment and activate the service. Internet is ready to use.", "start": "Start Registering Now", "s1t2": "Fill the Form" }, "area": { "eyebrow": "Service Area", "title": "Our network coverage", "sub": "Our service covers several regions. Contact us to confirm availability at your location.", "empty": "Area information is not available yet.", "covered": "Covered area", "loading": "Loading map…" }, "testi": { "eyebrow": "Testimonials", "title": "What our customers say", "sub": "Real stories from customers using" }, "faq": { "eyebrow": "FAQ", "title": "Frequently asked questions", "q1": "Is there an installation fee?", "a1": "The installation fee and other terms will be explained by our team during verification. Monthly package prices are transparent with no hidden costs.", "q2": "How do I check my bill?", "a2": "You can check your bill without logging in via the Check Bill page, or sign in to the customer portal to view history and make payments.", "q3": "How long does installation take?", "a3": "After your registration is verified and your location is within network coverage, installation can usually be scheduled within 1–3 business days.", "q4": "What if there is a disruption?", "a4": "Contact the technical team via WhatsApp or create a ticket from the customer portal. We monitor the network 24 hours and handle disruptions as quickly as possible.", "q5": "Is the speed symmetric (upload = download)?", "a5": "Yes. Our fiber optic network provides symmetric speed so uploads and downloads are equally fast — great for meetings and content uploads." }, "ads": { "eyebrow": "Ads & Sponsors", "title": "Advertise Page Coming Soon", "desc": "Promo slots for partners and local businesses are being prepared. Want to place your ad here? Contact us for more information.", "ask": "Ask About Ad Slots", "wa": "Ask via WhatsApp" }, "cta": { "title": "Ready to switch to better fiber internet?", "sub": "Sign up now or ask about network availability at your location. Our team is ready to help.", "note": "Quick process — our team will contact you after registration." }, "footer": { "nav": "Navigation", "opensource": "Open Source", "repo": "Repository", "issues": "Report Issue / Form", "wiki": "Wiki & Documentation", "wiki2": "Wiki / Documentation", "license": "ISC License", "contact": "Contact", "tagline": "Micro Internet Provider and Server Platform.", "portal": "Customer Portal", "check": "Check Bill", "server_status": "Server Status", "status": "Status", "github": "GitHub", "repo_gh": "Repository (GitHub)", "area_nav": "Service Area", "testi_nav": "Testimonials" }, "map": { "no_office": "Office location is not set." }, "coming_soon": "Coming Soon" }, "login": { "f1t": "Symmetric Fiber", "f1d": "Dedicated fiber optic", "f2t": "Unlimited", "f2d": "Enjoy internet without hidden FUP all month long.", "f3t": "Stable", "f3d": "Low latency with a network monitored 24 hours a day.", "f4t": "Support", "f4d": "The technical team is ready to help via WhatsApp and tickets.", "support247": "24/7 technician support", "dashboard": "Customer Dashboard", "manage": "Manage your internet service", "manage_desc": "Sign in to view bills, make payments, monitor your connection, and manage your device WiFi.", "chk_desc": "Check & pay bills anytime", "mon_desc": "Monitor traffic and connection status", "wifi_desc": "Change WiFi SSID & password", "rbt_desc": "Reboot device & create fault reports", "pwa_desc": "Faster access from your home screen", "install_app": "Install app", "voucher": "Buy WiFi Voucher", "voucher_short": "Buy Voucher", "new_install": "New Installation", "install": "Install", "pkg_title": "Packages & service rates", "pkg_sub": "Choose the speed that fits your needs, from home to office.", "pkg_empty_title": "No packages published yet", "pkg_empty": "Please contact customer service for the latest package information.", "pkg_choose": "Choose This Package", "hint": "Only Customer ID (SKY-xxxxx) or registered WhatsApp number", "register_new": "New Registration", "info": "Information", "status_full": "Server Status & Uptime", "check_full": "Check & Pay Bill", "voucher_nav": "Voucher", "manage_hl": "in one place" }, "iso": { "redirected": "Access Redirected", "limited": "Limited Access", "auto_restore": "Access is restored automatically once payment is confirmed.", "unpaid": "UNPAID", "pay_qris": "Quick Pay via QRIS", "open_gateway": "Open Gateway Page", "open_portal": "Open Customer Portal", "search_title": "Find Your Bill", "contact_wa": "Contact Admin via WhatsApp", "contact_cs": "Contact Customer Service", "data_for": "Data for", "not_found": "was not found. Make sure the WhatsApp number or ID is correct.", "notice": "Your internet connection is temporarily redirected because your bill is past due. Pay instantly via QRIS to reactivate your service.", "suspended": "Service Suspended", "reactivating": "Your internet service is being reactivated automatically…", "login_portal": "Sign in to Customer Portal", "connecting": "Connecting to the payment gateway server", "waiting": "Waiting for Payment… (Auto-Check)", "preparing_qris": "Preparing QRIS…", "cust_name": "Customer Name", "phone": "Phone Number", "qris_payment": "QRIS PAYMENT", "pkg_net": "Internet Package", "pkg_sub": "Subscription Package", "paid_title": "Payment Successful!", "notice_title": "Suspension Notice", "notice_body_pre": "Your device is redirected to the billing payment portal", "notice_body_post": "Enter your WhatsApp number or Customer ID to display your bill.", "period": "Period", "restore": "Restore & Refresh Connection", "copy_amount": "Copy Amount", "all_paid": "All Bills Paid", "billing_sys": "Billing System", "unpaid_bill": "Unpaid Bill", "net_bill": "Internet Bill", "thanks": "Thank you! We have received your payment.", "isolated_status": "Suspended", "unique_note": "Includes Verification Unique Code", "no_bill": "No Bills", "no_bill_desc": "There are no outstanding bills under your account name. If your connection is still not normal, restore the connection below.", "total": "Total Payment", "transfer": "Bank Transfer / E-Wallet", "waiting_js": "Waiting for Payment…" }, "donate": { "admin_panel": "Admin Panel", "open_wiki": "Open Wiki", "how_pay": "How to Pay", "dl_qr": "Download QR", "title": "Support OPEN-ISP", "free": "FREE", "code_hint": "Use this code to unlock locked menus in the Admin Panel sidebar:", "code_label": "ACTIVATION CODE", "code_free": "FREE ACTIVATION CODE", "goto_settings": "Go to Admin Sidebar Settings", "send": "Send", "code": "Activation Code", "code_yours": "Your Sidebar Activation Code:", "code_sent": "The activation code is sent to your WhatsApp and displayed below.", "menu_code": "Menu activation code", "menu_code_free": "Menu activation code is available for FREE", "manual_confirm": "Manual Confirmation (if not detected yet)", "enter_code": "Enter the code in the field", "waiting_donation": "Waiting for Donation", "waiting_payment": "Waiting for Payment…", "min_donation": "Minimum donation", "donor_name": "Donor Name (Optional)", "custom_amount": "Custom Amount (Rp) *", "amount_exact": "The transfer amount must match exactly so the system can recognize your transaction.", "phone": "WhatsApp Number * (for the activation code)", "notif_wa": "Notifications & activation code are sent to your WhatsApp!", "paid": "DONATION PAYMENT RECEIVED!", "important": "IMPORTANT:", "sidebar_settings": "Sidebar Settings", "message": "Message / Prayer (Optional)", "quick_amount": "Quick Amount Options (Rp)", "pick_menu": "Select menu", "copy": "Copy", "copy_code": "Copy Code", "scan_qr": "Scan QRIS", "auto_detect": "The system automatically detects the transaction & sends the activation code to your WhatsApp.", "status": "Status:", "show": "Show", "show_qris": "Show Donation QRIS", "thanks": "Thank You Very Much!", "unique_incl": "Includes Unique Code", "total_transfer": "Total Transfer Amount (including unique code)", "verified": "Your donation transaction has been successfully verified by the system.", "thanks_note": "A thank-you message & the sidebar activation code are sent to this number.", "wiki": "OPEN-ISP Wiki", "scan_hint": "and point the camera at the QR above.", "free_hint": "for everyone — donation", "not_required": "not required", "sidebar_code_hint": "Enter the code in the field", "portal": "Customer Portal", "tagline": "Voluntary donation for the development of this open-source application (ISC)", "step1": "Open m-Banking (BCA, Mandiri, BRI, BNI) or e-Wallet (GoPay, OVO, DANA, ShopeePay, LinkAja).", "step2_pre": "Select the Scan QRIS menu", "unique_code": "Unique Code: +" }, "thermal": { "paid": "*** PAID ***", "print_receipt": "Print Receipt", "discount": "Discount:", "cust_id": "Cust ID:", "name": "Name:", "invoice_no": "Invoice No.:", "phone": "Phone No.:", "package": "Package:", "period": "Period:", "officer": "Officer:", "receipt_title": "OFFICIAL PAYMENT RECEIPT", "receipt_note": "Keep this receipt as valid proof of payment.", "invoice_prefix": "Thermal Receipt #INV-", "total_payment": "TOTAL PAYMENT", "contact": "Phone/WA:", "thanks": "Thank You for Your Payment!", "size58": "Thermal 58mm", "size80": "Thermal 80mm", "time": "Time:" }, "auth": { "username_ph": "Enter username", "password_ph": "Enter password", "password": "Password", "tech_username": "Technician Username" } }