diff --git a/locales/en.json b/locales/en.json index 813605b..951c73b 100644 --- a/locales/en.json +++ b/locales/en.json @@ -927,7 +927,12 @@ "th_pppoe": "PPPoE / ONU Tag", "th_pkg_odp": "Package & ODP", "th_gps": "GPS Coordinates", - "ph_odp": "Search ODP (name / description)..." + "ph_odp": "Search ODP (name / description)...", + "pon_port": "PON Port (optional)", + "empty_cust": "No customer data yet.", + "empty_odp": "No ODP data yet.", + "view_port": "Click to view port visual", + "port_err": "Failed to load port data." }, "print_invoice": { "title": "Print Invoice Receipt", @@ -1109,7 +1114,9 @@ "wifi_pass": "Wi-Fi Password (WPA2)", "loading": "Loading...", "run_prov": "Run Provisioning", - "add_server": "Add ACS Server" + "add_server": "Add ACS Server", + "bind_lan": "Select the LAN Ports to bind:", + "bind_ssid": "Select the WLAN (SSID) to bind:" }, "vd": { "action": "Action", @@ -1138,7 +1145,8 @@ "tab_broadcast": "Broadcast & Reminder", "tab_templates": "Message Templates", "tab_livechat": "Live Chat", - "tab_preview": "Message Preview" + "tab_preview": "Message Preview", + "ph_deviceid": "Device ID (optional)" }, "automation": { "title": "Automation", @@ -1630,7 +1638,9 @@ "disconnect_mt": "Disconnect MikroTik Session", "calc_reg": "Prorata Calculator — Approve Registrant", "start_use": "Start Using", - "approve_invoice": "Approve & Create Invoice" + "approve_invoice": "Approve & Create Invoice", + "modem_hint": "Customer modem login credentials for RADIUS & PPPoE.", + "reg_hint": "Automatically calculated on install/payment. Can be adjusted manually if needed." }, "bill": { "ph_note": "e.g. service credit for downtime", @@ -1684,12 +1694,17 @@ "general_task": "-- General / Non-Customer Task (Maintenance) --", "unassigned": "-- Unassigned (Open) --", "st_open": "Not Handled (Open)", - "st_progress": "In Progress" + "st_progress": "In Progress", + "no_photo": "No photo" }, "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" + "hint_reload": "Click \"Reload / Scan\" to monitor configured ONU status via SNMP", + "ssid_hint": "Set the ONU WiFi SSID and password", + "wan_mode_hint": "Bridge (MikroTik dials) or Router (ONU dials)", + "ph_url": "Format: http://host:port or https://host:port", + "empty": "No unconfigured ONU found" }, "rds": { "card_status": "RADIUS Server Status", @@ -1897,13 +1912,19 @@ "no_data": "No data yet.", "ew_not_tx": "Not a transaction", "ew_paid": "Paid", - "ew_unmatched": "Not matched" + "ew_unmatched": "Not matched", + "speedtest_hint": "The preset only auto-fills — adjust the URL if needed.", + "qris_dyn_hint": "If filled, the system creates a dynamic QRIS per transaction (amount auto-filled on scan). If empty, the system uses the image URL as usual.", + "qris_upload_hint": "If uploaded, the system saves the file and auto-fills the QRIS URL.", + "bank_hint": "The amount & unique code are the same as QRIS; verification is automatic (webhook forwarder) + manual (upload proof)." }, "mt": { "updating": "Updating...", "online_list": "Online PPPoE Users", "offline_list": "Offline PPPoE Users", - "limit_uptime": "Uptime Limit (e.g. 1h)" + "limit_uptime": "Uptime Limit (e.g. 1h)", + "empty_pppoe": "No PPPoE profile data.", + "empty_hs": "No Hotspot profile data." }, "disc": { "title": "Invoice Discount", @@ -1927,7 +1948,8 @@ "apply": "Apply Discount", "selected": "selected", "history": "Discount History (last 100)", - "th_note": "Note" + "th_note": "Note", + "empty_cust": "No customers." }, "cpay": { "title": "Collector Payment Approval", @@ -1942,7 +1964,8 @@ "th_invoice": "Invoice", "th_process": "Process", "approve": "Approve", - "reject": "Reject" + "reject": "Reject", + "wait_approval": "Waiting for admin or cashier" }, "att": { "late_checkin": "Late Check-in", @@ -1959,7 +1982,9 @@ "checkin_time": "Check-in Time", "duration": "Duration", "location": "Location", - "photo": "Photo" + "photo": "Photo", + "empty": "No attendance data", + "empty_sub": "No employee has checked in on this date." }, "olt": { "all_summary": "All OLTs (Total Summary)", @@ -2015,7 +2040,12 @@ "ph_isolir_profile": "— use global/customer default —", "night_profile": "Night Profile Name (MikroTik)", "ph_night_profile": "-- Select Profile --", - "night_down": "Night Download (Mbps)" + "night_down": "Night Download (Mbps)", + "promo_prorata": "Invoice promo & proration", + "prorata_first": "First invoice proration (install date = billing month)", + "night_hint": "The system switches customers to this PPP profile between 00:00 - 06:00.", + "kalong_hint": "Check to configure (fields open automatically if this package uses Jam Kalong).", + "fup_hint": "Check to configure (fields open automatically if this package uses FUP)." }, "col": { "title": "Collector Management", @@ -2032,7 +2062,8 @@ "del": "Delete Collector", "full_name": "Full Name", "area_region": "Area / Assignment Region", - "opt_all_area": "-- All Areas / Unrestricted --" + "opt_all_area": "-- All Areas / Unrestricted --", + "empty": "No collector data yet." }, "mon": { "title": "System Monitoring", @@ -2079,7 +2110,9 @@ "total_hours": "Total Hours", "work_hours": "Work hours", "avg": "Average", - "hours_per_day": "Hours/day" + "hours_per_day": "Hours/day", + "preview": "Preview of the final photo to be sent:", + "checkin_hint": "Please check in to start your workday." }, "gis": { "ph_search": "Search ODP, ODC, HTB, Customer...", @@ -2132,7 +2165,10 @@ "th_validity": "Validity", "th_prefix": "Prefix", "th_len": "Code Length", - "th_chars": "Characters" + "th_chars": "Characters", + "opt_active": "Active (Shown in customer portal)", + "empty": "No real-time hotspot voucher package registered yet. Click the Add button above to start!", + "no_meta": "The profile has no Mikhmon metadata. Fill in the price and validity manually." }, "cashin": { "heading": "Cash In (Others)", @@ -2157,7 +2193,8 @@ "ph_ref": "Can be left blank", "save": "Save Income", "title": "Cash In", - "th_method": "Method" + "th_method": "Method", + "empty": "No cash-in data yet." }, "exp": { "heading": "Expenses (Cash Out)", @@ -2182,7 +2219,8 @@ "pay_credit": "Credit / Paylater", "save": "Save Expense", "title": "Expenses", - "th_method": "Method" + "th_method": "Method", + "empty": "No expense data yet." }, "ar": { "heading": "Area / Region Management", @@ -2211,7 +2249,8 @@ "setup_fw": "Isolir Firewall Setup", "edit": "Edit Router", "del": "Delete Router", - "live_title": "Router Live Detail" + "live_title": "Router Live Detail", + "script_hint": "This script is auto-generated from the server IP & billing URL (app_url). You can copy and paste it into the MikroTik Winbox Terminal." }, "bc": { "send_title": "Send Invoices Now (Manual — if Auto is OFF)", @@ -2245,7 +2284,9 @@ "auto_clean": "Automatic Cleanup", "retention": "Retention (Days)", "history": "Backup History", - "empty": "No backup files available" + "empty": "No backup files available", + "file_hint": ".db (database) or .json (settings) file", + "retention_hint": "Backups older than this period will be deleted" }, "wt": { "title": "WhatsApp Notification Template Settings", @@ -2265,12 +2306,27 @@ "opt_qris": "QRIS Invoice Template", "opt_success": "Payment Success Template", "opt_isolir": "Isolir Notice Template", - "vars": "Parameter Order Variables (Components Payload):" + "vars": "Parameter Order Variables (Components Payload):", + "ph_user": "(PPPoE Username, optional)", + "warn_custid": "must include the Customer ID variable" }, "md": { "connecting": "Connecting to MikroTik...", "fullscreen": "Fullscreen", - "exit": "Exit" + "exit": "Exit", + "reconnect_hint": "Make sure the IP/port is correct and the API service is active. Retrying..." + }, + "payroll": { + "empty_staff": "No active employees", + "empty_slip": "No payslip for this period", + "gen_hint": "Click \"Generate All\" to create payslips automatically" + }, + "rep": { + "ppn_incl": "Yes — VAT already included", + "tax_hint": "Corporate income tax, VAT, USO & BHP are calculated automatically from this value." + }, + "wlc": { + "empty": "No messages with this customer yet. Type a message below and press Enter to start." } }, "tech": { diff --git a/locales/id.json b/locales/id.json index 8ea406c..35dff61 100644 --- a/locales/id.json +++ b/locales/id.json @@ -927,7 +927,12 @@ "th_pppoe": "PPPoE / Tag ONU", "th_pkg_odp": "Paket & ODP", "th_gps": "Koordinat GPS", - "ph_odp": "Cari ODP (nama / deskripsi)..." + "ph_odp": "Cari ODP (nama / deskripsi)...", + "pon_port": "PON Port (opsional)", + "empty_cust": "Belum ada data pelanggan.", + "empty_odp": "Belum ada data ODP.", + "view_port": "Klik untuk lihat visual port", + "port_err": "Gagal memuat data port." }, "print_invoice": { "title": "Cetak Struk Tagihan", @@ -1109,7 +1114,9 @@ "wifi_pass": "Sandi Wi-Fi (WPA2)", "loading": "Mengunduh...", "run_prov": "Jalankan Provisioning", - "add_server": "Tambah Server ACS" + "add_server": "Tambah Server ACS", + "bind_lan": "Pilih LAN Port yang akan di-bind:", + "bind_ssid": "Pilih WLAN (SSID) yang akan di-bind:" }, "vd": { "action": "Aksi", @@ -1138,7 +1145,8 @@ "tab_broadcast": "Broadcast & Pengingat", "tab_templates": "Template Pesan", "tab_livechat": "Live Chat", - "tab_preview": "Preview Pesan" + "tab_preview": "Preview Pesan", + "ph_deviceid": "Device ID (opsional)" }, "automation": { "title": "Otomatisasi", @@ -1631,7 +1639,9 @@ "disconnect_mt": "Putus Sesi MikroTik", "calc_reg": "Kalkulator Prorata — Setujui Pendaftar", "start_use": "Mulai Pakai", - "approve_invoice": "Setujui & Buat Tagihan" + "approve_invoice": "Setujui & Buat Tagihan", + "modem_hint": "Kredensial login modem pelanggan untuk RADIUS & PPPoE.", + "reg_hint": "Otomatis dihitung saat pasang/bayar. Bisa disesuaikan manual jika perlu." }, "bill": { "ph_note": "mis. kompensasi gangguan", @@ -1685,12 +1695,17 @@ "general_task": "-- Tugas Umum / Non-Pelanggan (Maintenance) --", "unassigned": "-- Belum Ditugaskan (Bebas) --", "st_open": "Belum Ditangani (Open)", - "st_progress": "Sedang Dikerjakan (In Progress)" + "st_progress": "Sedang Dikerjakan (In Progress)", + "no_photo": "Tidak ada foto" }, "onu": { "select_vendor": "Pilih Vendor", "hint_rescan": "Klik \"Scan Ulang\" untuk mencari ONU yang belum terkonfigurasi", - "hint_reload": "Klik \"Muat Ulang / Scan\" untuk memantau status ONU terkonfigurasi via SNMP" + "hint_reload": "Klik \"Muat Ulang / Scan\" untuk memantau status ONU terkonfigurasi via SNMP", + "ssid_hint": "Set SSID dan password WiFi ONU", + "wan_mode_hint": "Bridge (MikroTik dial) atau Router (ONU dial)", + "ph_url": "Format: http://host:port atau https://host:port", + "empty": "Tidak ada ONU yang belum terkonfigurasi" }, "rds": { "card_status": "Status RADIUS Server", @@ -1898,13 +1913,19 @@ "no_data": "Belum ada data.", "ew_not_tx": "Bukan transaksi", "ew_paid": "Lunas", - "ew_unmatched": "Belum cocok" + "ew_unmatched": "Belum cocok", + "speedtest_hint": "Preset hanya mengisi otomatis — sesuaikan URL bila perlu.", + "qris_dyn_hint": "Jika diisi, sistem akan membuat QRIS dinamis per transaksi (nominal langsung terisi saat scan). Jika kosong, sistem pakai URL gambar seperti biasa.", + "qris_upload_hint": "Jika di-upload, sistem akan menyimpan file dan otomatis mengisi URL QRIS.", + "bank_hint": "Nominal & kode unik sama seperti QRIS; verifikasi otomatis (webhook forwarder) + manual (upload bukti)." }, "mt": { "updating": "Memperbarui...", "online_list": "Daftar User PPPoE Online", "offline_list": "Daftar User PPPoE Offline", - "limit_uptime": "Limit Uptime (e.g. 1h)" + "limit_uptime": "Limit Uptime (e.g. 1h)", + "empty_pppoe": "Tidak ada data profile PPPoE.", + "empty_hs": "Tidak ada data profile Hotspot." }, "disc": { "title": "Diskon Tagihan", @@ -1928,7 +1949,8 @@ "apply": "Terapkan Diskon", "selected": "dipilih", "history": "Riwayat Diskon (100 terakhir)", - "th_note": "Catatan" + "th_note": "Catatan", + "empty_cust": "Tidak ada pelanggan." }, "cpay": { "title": "Approval Pembayaran Kolektor", @@ -1943,7 +1965,8 @@ "th_invoice": "Tagihan", "th_process": "Proses", "approve": "Setujui", - "reject": "Tolak" + "reject": "Tolak", + "wait_approval": "Menunggu admin atau kasir" }, "att": { "late_checkin": "Terlambat Check-in", @@ -1960,7 +1983,9 @@ "checkin_time": "Waktu Check-in", "duration": "Durasi", "location": "Lokasi", - "photo": "Foto" + "photo": "Foto", + "empty": "Tidak ada data absensi", + "empty_sub": "Belum ada karyawan yang melakukan absensi pada tanggal ini." }, "olt": { "all_summary": "Semua OLT (Ringkasan Total)", @@ -2016,7 +2041,12 @@ "ph_isolir_profile": "— pakai default global/customer —", "night_profile": "Nama Profile Malam (MikroTik)", "ph_night_profile": "-- Pilih Profile --", - "night_down": "Download Malam (Mbps)" + "night_down": "Download Malam (Mbps)", + "promo_prorata": "Promo & prorata tagihan", + "prorata_first": "Prorata tagihan pertama (tanggal pasang = bulan tagihan)", + "night_hint": "Sistem akan ganti profile ppp pelanggan ke profile ini pada jam 00:00 - 06:00.", + "kalong_hint": "Centang untuk mengatur (kolom terbuka otomatis bila paket ini memakai Jam Kalong).", + "fup_hint": "Centang untuk mengatur (kolom terbuka otomatis bila paket ini memakai FUP)." }, "col": { "title": "Manajemen Kolektor", @@ -2033,7 +2063,8 @@ "del": "Hapus Kolektor", "full_name": "Nama Lengkap", "area_region": "Area / Wilayah Tugas", - "opt_all_area": "-- Semua Area / Bebas --" + "opt_all_area": "-- Semua Area / Bebas --", + "empty": "Belum ada data kolektor." }, "mon": { "title": "Monitoring Sistem", @@ -2080,7 +2111,9 @@ "total_hours": "Total Jam", "work_hours": "Jam kerja", "avg": "Rata-rata", - "hours_per_day": "Jam/hari" + "hours_per_day": "Jam/hari", + "preview": "Preview foto final yang akan dikirim:", + "checkin_hint": "Silakan lakukan check-in untuk memulai hari kerja Anda." }, "gis": { "ph_search": "Cari ODP, ODC, HTB, Pelanggan...", @@ -2133,7 +2166,10 @@ "th_validity": "Masa Aktif", "th_prefix": "Prefix", "th_len": "Panjang Kode", - "th_chars": "Karakter" + "th_chars": "Karakter", + "opt_active": "Aktif (Tampil di portal pelanggan)", + "empty": "Belum ada paket voucher hotspot real-time terdaftar. Klik tombol Tambah diatas untuk memulai!", + "no_meta": "Profil tidak memiliki metadata Mikhmon. Isi harga dan masa aktif manual." }, "cashin": { "heading": "Kas Masuk (Lain-lain)", @@ -2158,7 +2194,8 @@ "ph_ref": "Bisa dikosongkan", "save": "Simpan Pemasukan", "title": "Kas Masuk", - "th_method": "Metode" + "th_method": "Metode", + "empty": "Belum ada data kas masuk." }, "exp": { "heading": "Pengeluaran (Cash Out)", @@ -2183,7 +2220,8 @@ "pay_credit": "Kredit / Paylater", "save": "Simpan Pengeluaran", "title": "Pengeluaran", - "th_method": "Metode" + "th_method": "Metode", + "empty": "Belum ada data pengeluaran." }, "ar": { "heading": "Manajemen Area / Wilayah", @@ -2212,7 +2250,8 @@ "setup_fw": "Setup Firewall Isolir", "edit": "Edit Router", "del": "Hapus Router", - "live_title": "Detail Live Router" + "live_title": "Detail Live Router", + "script_hint": "Script ini di-generate otomatis berdasarkan IP server & URL billing (app_url). Anda dapat menyalin dan menempelkannya di Winbox Terminal MikroTik." }, "bc": { "send_title": "Kirim Tagihan Sekarang (Manual — bila Auto OFF)", @@ -2246,7 +2285,9 @@ "auto_clean": "Pembersihan Otomatis", "retention": "Retensi (Hari)", "history": "Riwayat Backup", - "empty": "Belum ada file backup tersedia" + "empty": "Belum ada file backup tersedia", + "file_hint": "File .db (database) atau .json (settings)", + "retention_hint": "Backup lebih lama dari periode ini akan dihapus" }, "wt": { "title": "Pengaturan Template Notifikasi WhatsApp", @@ -2266,12 +2307,27 @@ "opt_qris": "Template Tagihan QRIS", "opt_success": "Template Pembayaran Sukses", "opt_isolir": "Template Pemberitahuan Isolir", - "vars": "Daftar Variabel Urutan Parameter (Components Payload):" + "vars": "Daftar Variabel Urutan Parameter (Components Payload):", + "ph_user": "(Username PPPoE, opsional)", + "warn_custid": "wajib menyertakan variabel ID Pelanggan" }, "md": { "connecting": "Menghubungkan ke MikroTik...", "fullscreen": "Layar Penuh", - "exit": "Keluar" + "exit": "Keluar", + "reconnect_hint": "Pastikan IP/port benar dan API service aktif. Mencoba kembali..." + }, + "payroll": { + "empty_staff": "Belum ada karyawan aktif", + "empty_slip": "Belum ada slip gaji untuk periode ini", + "gen_hint": "Klik \"Generate Semua\" untuk membuat slip gaji otomatis" + }, + "rep": { + "ppn_incl": "Ya — PPN sudah termasuk", + "tax_hint": "PPh Badan, PPN, USO & BHP dihitung otomatis dari nilai ini." + }, + "wlc": { + "empty": "Belum ada pesan dengan pelanggan ini. Ketik pesan di bawah dan tekan Enter untuk memulai." } }, "tech": { diff --git a/views/admin/acs.ejs b/views/admin/acs.ejs index 81d0bea..feb56ce 100644 --- a/views/admin/acs.ejs +++ b/views/admin/acs.ejs @@ -396,7 +396,7 @@
Silakan lakukan check-in untuk memulai hari kerja Anda.
+<%= t('admin.ca.checkin_hint','Silakan lakukan check-in untuk memulai hari kerja Anda.') %>
@@ -217,7 +217,7 @@Tidak ada ONU yang belum terkonfigurasi
<%= t('admin.onu.empty','Tidak ada ONU yang belum terkonfigurasi') %>