diff --git a/locales/en.json b/locales/en.json index c763e29..b72cbe7 100644 --- a/locales/en.json +++ b/locales/en.json @@ -932,7 +932,8 @@ "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." + "port_err": "Failed to load port data.", + "route_hint": "Drag the orange points to change the route. Click the button below to add a bend point." }, "print_invoice": { "title": "Print Invoice Receipt", @@ -1116,7 +1117,8 @@ "run_prov": "Run Provisioning", "add_server": "Add ACS Server", "bind_lan": "Select the LAN Ports to bind:", - "bind_ssid": "Select the WLAN (SSID) to bind:" + "bind_ssid": "Select the WLAN (SSID) to bind:", + "load_log": " to load logs." }, "vd": { "action": "Action", @@ -1146,7 +1148,11 @@ "tab_templates": "Message Templates", "tab_livechat": "Live Chat", "tab_preview": "Message Preview", - "ph_deviceid": "Device ID (optional)" + "ph_deviceid": "Device ID (optional)", + "selfhost": " or Self-Hosted Server URL)", + "fonnte_hint": " for Fonnte Cloud, or switch to your own server domain/IP when using ", + "qr_hint": "Click the button, then open WhatsApp → Linked Devices → Link a device, scan the QR. The QR is valid for ~30 seconds & refreshes automatically.", + "notif_only": " replies to commands anymore — WhatsApp is only for " }, "automation": { "title": "Automation", @@ -1641,7 +1647,8 @@ "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.", - "modem_hint_mt": "Customer modem login credentials for PPPoE MikroTik API." + "modem_hint_mt": "Customer modem login credentials for PPPoE MikroTik API.", + "reg_auto": " automatically: arrears " }, "bill": { "ph_note": "e.g. service credit for downtime", @@ -1668,7 +1675,8 @@ "all_routers": "All Routers", "all_collectors": "All Collectors", "opt_percent": "Percent (%)", - "opt_amount": "Amount (Rp)" + "opt_amount": "Amount (Rp)", + "pct_hint": " The percentage is calculated from the base price (before VAT/USO). The QRIS unique code will be regenerated." }, "common": { "keep_empty": "Leave empty to keep unchanged", @@ -1820,7 +1828,8 @@ "alert_copied": "MikroTik & RADIUS Isolir setup script copied! Paste it into your MikroTik Terminal.", "alert_copied2": "MikroTik script copied!", "deactivate": "Deactivate", - "activate": "Activate" + "activate": "Activate", + "rate_from_mt": "rate-limit & IP are taken from the PPP profile on MikroTik" }, "set": { "ew_log_realtime": "Realtime Log", @@ -1921,7 +1930,21 @@ "office_coord_hint": "Office coordinates are used for employee attendance location validation (geofencing).", "set_auto_moved": "Automation moved:", "set_auto_list": "Auto-Deactivate, Auto-Delete, Auto-Warning & Auto-", - "set_auto_now": "are now organized in the" + "set_auto_now": "are now organized in the", + "link_hint": "Used to build the customer login link sent via WhatsApp. Example: ", + "wa_numbers_hint": "Admin numbers receive system monitoring notifications. Technician numbers are taken automatically from ", + "logo_hint": "PNG/JPG/WebP, max 2MB. PNG/JPEG is auto-optimized. Used on the login page & customer portal.", + "pwa_icon_hint": "After upload, PWA icons (192/512/maskable/apple-touch) & favicon are regenerated from this image. A square image (1:1) is recommended.", + "hero_hint": "PNG/JPEG is automatically converted to ", + "speedtest_hint2": " (LibreSpeed / OpenSpeedTest self-hosted) or ", + "speedtest_hint3": ". If left empty, the customer dashboard shows ", + "speedtest_notset": "\"Speedtest not set up yet\"", + "speedtest_btn_hint": "On the customer page there are buttons ", + "repo_hint": "Used for the link ", + "uptime_hint": "Used for the button/redirect ", + "qris_unique_hint": " in the Billing menu to create a unique amount per invoice.", + "wh_hint": " = the URL above (secret already included), ", + "wh_amount_hint": "equal to the invoice unique amount" }, "mt": { "updating": "Updating...", @@ -1954,7 +1977,8 @@ "selected": "selected", "history": "Discount History (last 100)", "th_note": "Note", - "empty_cust": "No customers." + "empty_cust": "No customers.", + "unpaid": "unpaid" }, "cpay": { "title": "Collector Payment Approval", @@ -2050,10 +2074,17 @@ "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).", + "fup_hint": "). The same value is used for the MikroTik profile ", "active_days_hint": "The customer stays active for X days since activation / payment.", "ratelimit_hint": "Actual rate-limit (MikroTik & RADIUS):", - "profile_hint2": "PPP profile + IP pool are created/updated automatically on MikroTik (MikroTik / RADIUS-profile mode). In RADIUS-attribute mode, IP & rate-limit come from RADIUS." + "profile_hint2": "PPP profile + IP pool are created/updated automatically on MikroTik (MikroTik / RADIUS-profile mode). In RADIUS-attribute mode, IP & rate-limit come from RADIUS.", + "radius_hint3": " — the values above are read from RADIUS settings. To change, open ", + "mt_hint3": " — the values above are read from the PPP profile on the router. To change, edit in ", + "profile_a": " The MikroTik PPP profile will be ", + "profile_b": "created/updated automatically", + "profile_c": " (RADIUS mode uses MikroTik profile)", + "prorata_a": "Invoice proration ", + "prorata_b": " if installed mid-month (proportion of remaining days; requires install date in customer data)" }, "col": { "title": "Collector Management", @@ -2071,7 +2102,8 @@ "full_name": "Full Name", "area_region": "Area / Assignment Region", "opt_all_area": "-- All Areas / Unrestricted --", - "empty": "No collector data yet." + "empty": "No collector data yet.", + "mode_hint": "` means the collector payment directly settles the invoice, while `" }, "mon": { "title": "System Monitoring", @@ -2202,7 +2234,8 @@ "save": "Save Income", "title": "Cash In", "th_method": "Method", - "empty": "No cash-in data yet." + "empty": "No cash-in data yet.", + "info": " This page is used to record cash-in / income " }, "exp": { "heading": "Expenses (Cash Out)", @@ -2244,7 +2277,8 @@ "save": "Save Area", "edit": "Edit Area Data", "title": "Area Management", - "th_name": "Area / Region Name" + "th_name": "Area / Region Name", + "create_area": " to create an area." }, "rt": { "list": "MikroTik Router List", @@ -2275,7 +2309,10 @@ "delay_sec": "Delay (seconds)", "stop": "Stop", "moved": "Auto reminder moved:", - "moved_desc": "schedule, template selection & reminder message settings are now in the" + "moved_desc": "schedule, template selection & reminder message settings are now in the", + "send_to": " Send to customers ", + "unpaid": "unpaid", + "on_date": " on the selected isolir date. Use " }, "bk": { "title": "Backup & Recovery", @@ -2333,10 +2370,19 @@ }, "rep": { "ppn_incl": "Yes — VAT already included", - "tax_hint": "Corporate income tax, VAT, USO & BHP are calculated automatically from this value." + "tax_hint": "Corporate income tax, VAT, USO & BHP are calculated automatically from this value.", + "export_hint": "— export & print monthly", + "sum_hint": " = sum of each month; match with ", + "audit_hint": " (year) above for auditing.", + "calc_hint": "— calculated automatically" }, "wlc": { - "empty": "No messages with this customer yet. Type a message below and press Enter to start." + "empty": "No messages with this customer yet. Type a message below and press Enter to start.", + "loading": " Loading messages..." + }, + "wp": { + "auto": "automatic message", + "sample": " with sample data — " } }, "tech": { diff --git a/locales/id.json b/locales/id.json index c2401a8..09d7e75 100644 --- a/locales/id.json +++ b/locales/id.json @@ -932,7 +932,8 @@ "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." + "port_err": "Gagal memuat data port.", + "route_hint": "Tarik titik oranye untuk mengubah jalur. Klik tombol di bawah untuk menambah titik lekukan." }, "print_invoice": { "title": "Cetak Struk Tagihan", @@ -1116,7 +1117,8 @@ "run_prov": "Jalankan Provisioning", "add_server": "Tambah Server ACS", "bind_lan": "Pilih LAN Port yang akan di-bind:", - "bind_ssid": "Pilih WLAN (SSID) yang akan di-bind:" + "bind_ssid": "Pilih WLAN (SSID) yang akan di-bind:", + "load_log": " untuk memuat log." }, "vd": { "action": "Aksi", @@ -1146,7 +1148,11 @@ "tab_templates": "Template Pesan", "tab_livechat": "Live Chat", "tab_preview": "Preview Pesan", - "ph_deviceid": "Device ID (opsional)" + "ph_deviceid": "Device ID (opsional)", + "selfhost": " atau URL Server Self-Hosted)", + "fonnte_hint": " untuk Fonnte Cloud, atau ubah ke domain/IP server mandiri jika menggunakan ", + "qr_hint": "Klik tombol, lalu buka WhatsApp → Perangkat Tertaut → Tautkan perangkat, scan QR. QR berlaku ~30 detik & diperbarui otomatis.", + "notif_only": " membalas perintah lagi — WhatsApp hanya untuk " }, "automation": { "title": "Otomatisasi", @@ -1642,7 +1648,8 @@ "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.", - "modem_hint_mt": "Kredensial login modem pelanggan untuk PPPoE MikroTik API." + "modem_hint_mt": "Kredensial login modem pelanggan untuk PPPoE MikroTik API.", + "reg_auto": " otomatis: menunggak " }, "bill": { "ph_note": "mis. kompensasi gangguan", @@ -1669,7 +1676,8 @@ "all_routers": "Semua Router", "all_collectors": "Semua Kolektor", "opt_percent": "Persen (%)", - "opt_amount": "Nominal (Rp)" + "opt_amount": "Nominal (Rp)", + "pct_hint": " Persen dihitung dari harga dasar (sebelum PPN/USO). Kode unik QRIS akan digenerate ulang." }, "common": { "keep_empty": "Biarkan kosong jika tidak diganti", @@ -1821,7 +1829,8 @@ "alert_copied": "Script setup MikroTik & Isolir RADIUS berhasil disalin! Silakan tempelkan (paste) di Terminal MikroTik Anda.", "alert_copied2": "Script MikroTik berhasil disalin!", "deactivate": "Non-aktifkan", - "activate": "Aktifkan" + "activate": "Aktifkan", + "rate_from_mt": "rate-limit & IP diambil dari profil PPP di MikroTik" }, "set": { "ew_log_realtime": "Log Realtime", @@ -1922,7 +1931,21 @@ "office_coord_hint": "Koordinat kantor digunakan untuk validasi lokasi absensi karyawan (geofencing)", "set_auto_moved": "Otomatisasi dipindah:", "set_auto_list": "Auto-Nonaktif, Auto-Hapus, Auto-Peringatan & Auto-", - "set_auto_now": "kini tertata di menu" + "set_auto_now": "kini tertata di menu", + "link_hint": "Digunakan untuk menyusun tautan login pelanggan yang dikirim via WhatsApp. Contoh: ", + "wa_numbers_hint": "Nomor admin akan menerima notifikasi monitoring sistem. Nomor teknisi diambil otomatis dari ", + "logo_hint": "PNG/JPG/WebP, maks 2MB. PNG/JPEG otomatis dioptimalkan. Dipakai di halaman login & portal pelanggan.", + "pwa_icon_hint": "Setelah upload, ikon PWA (192/512/maskable/apple-touch) & favicon otomatis dibuat ulang dari gambar ini. Sebaiknya gambar persegi (1:1).", + "hero_hint": "PNG/JPEG otomatis dikonversi ke ", + "speedtest_hint2": " (LibreSpeed / OpenSpeedTest self-hosted) atau ", + "speedtest_hint3": ". Jika dikosongkan, dashboard pelanggan menampilkan ", + "speedtest_notset": "\"Speedtest belum di setup\"", + "speedtest_btn_hint": "Di halaman pelanggan tersedia tombol ", + "repo_hint": "Dipakai untuk tautan ", + "uptime_hint": "Dipakai untuk tombol/redirect ", + "qris_unique_hint": " di menu Billing untuk membuat nominal unik per invoice.", + "wh_hint": " = URL di atas (secret sudah termasuk), ", + "wh_amount_hint": "sama dengan nominal unik tagihan" }, "mt": { "updating": "Memperbarui...", @@ -1955,7 +1978,8 @@ "selected": "dipilih", "history": "Riwayat Diskon (100 terakhir)", "th_note": "Catatan", - "empty_cust": "Tidak ada pelanggan." + "empty_cust": "Tidak ada pelanggan.", + "unpaid": "belum bayar" }, "cpay": { "title": "Approval Pembayaran Kolektor", @@ -2051,10 +2075,17 @@ "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).", + "fup_hint": "). Nilai sama dipakai untuk profil MikroTik ", "active_days_hint": "Pelanggan aktif selama X hari sejak aktivasi / pembayaran.", "ratelimit_hint": "Rate-limit asli (MikroTik & RADIUS):", - "profile_hint2": "Profil PPP + IP pool dibuat/diperbarui otomatis ke MikroTik (mode MikroTik / RADIUS profil). Pada mode RADIUS-atribut, IP & rate-limit dari RADIUS." + "profile_hint2": "Profil PPP + IP pool dibuat/diperbarui otomatis ke MikroTik (mode MikroTik / RADIUS profil). Pada mode RADIUS-atribut, IP & rate-limit dari RADIUS.", + "radius_hint3": " — nilai di atas dibaca dari pengaturan RADIUS. Untuk mengubah, buka ", + "mt_hint3": " — nilai di atas dibaca dari profil PPP di router. Untuk mengubah, edit di ", + "profile_a": " Profil PPP MikroTik akan ", + "profile_b": "dibuat/diperbarui otomatis", + "profile_c": " (mode RADIUS pakai profil MikroTik)", + "prorata_a": "Prorata tagihan ", + "prorata_b": " jika pasang di tengah bulan (proporsi sisa hari, perlu tanggal pasang di data pelanggan)" }, "col": { "title": "Manajemen Kolektor", @@ -2072,7 +2103,8 @@ "full_name": "Nama Lengkap", "area_region": "Area / Wilayah Tugas", "opt_all_area": "-- Semua Area / Bebas --", - "empty": "Belum ada data kolektor." + "empty": "Belum ada data kolektor.", + "mode_hint": "` berarti pembayaran dari kolektor langsung melunasi invoice, sedangkan `" }, "mon": { "title": "Monitoring Sistem", @@ -2203,7 +2235,8 @@ "save": "Simpan Pemasukan", "title": "Kas Masuk", "th_method": "Metode", - "empty": "Belum ada data kas masuk." + "empty": "Belum ada data kas masuk.", + "info": " Halaman ini digunakan untuk mencatat kas masuk / pemasukan " }, "exp": { "heading": "Pengeluaran (Cash Out)", @@ -2245,7 +2278,8 @@ "save": "Simpan Area", "edit": "Edit Data Area", "title": "Manajemen Area", - "th_name": "Nama Area / Wilayah" + "th_name": "Nama Area / Wilayah", + "create_area": " untuk membuat area." }, "rt": { "list": "Daftar Router MikroTik", @@ -2276,7 +2310,10 @@ "delay_sec": "Jeda (detik)", "stop": "Hentikan", "moved": "Pengingat otomatis dipindah:", - "moved_desc": "pengaturan jadwal, pemilihan template & isi pesan pengingat tagihan kini di menu" + "moved_desc": "pengaturan jadwal, pemilihan template & isi pesan pengingat tagihan kini di menu", + "send_to": " Kirim ke pelanggan ", + "unpaid": "belum bayar", + "on_date": " pada tanggal isolir terpilih. Gunakan " }, "bk": { "title": "Backup & Recovery", @@ -2334,10 +2371,19 @@ }, "rep": { "ppn_incl": "Ya — PPN sudah termasuk", - "tax_hint": "PPh Badan, PPN, USO & BHP dihitung otomatis dari nilai ini." + "tax_hint": "PPh Badan, PPN, USO & BHP dihitung otomatis dari nilai ini.", + "export_hint": "— export & cetak tiap bulan", + "sum_hint": " = penjumlahan tiap bulan; cocokkan dengan ", + "audit_hint": " (tahun) di atas untuk audit.", + "calc_hint": "— dihitung otomatis" }, "wlc": { - "empty": "Belum ada pesan dengan pelanggan ini. Ketik pesan di bawah dan tekan Enter untuk memulai." + "empty": "Belum ada pesan dengan pelanggan ini. Ketik pesan di bawah dan tekan Enter untuk memulai.", + "loading": " Memuat pesan..." + }, + "wp": { + "auto": "pesan otomatis", + "sample": " dengan data contoh — " } }, "tech": { diff --git a/views/admin/acs.ejs b/views/admin/acs.ejs index feb56ce..8fc8f31 100644 --- a/views/admin/acs.ejs +++ b/views/admin/acs.ejs @@ -266,7 +266,7 @@ Log diambil dari tiap ACS (Built-in: riwayat task; GenieACS: /faults). -
Pilih filter lalu klik "<%= t('admin.acs.reload','Muat Ulang') %>" untuk memuat log.
+
Pilih filter lalu klik "<%= t('admin.acs.reload','Muat Ulang') %>"<%= t('admin.acs.load_log',' untuk memuat log.') %>