Initial Release v1.0.0: Full feature set with Docker automation, Nginx/Alpine stack

This commit is contained in:
dyzulk
2026-01-16 11:21:32 +07:00
commit 45623973a8
139 changed files with 24302 additions and 0 deletions

544
public/lang/en.json Normal file
View File

@@ -0,0 +1,544 @@
{
"_meta": {
"name": "English",
"flag": "gb"
},
"common": {
"dashboard": "Dashboard",
"save": "Save",
"cancel": "Cancel",
"delete": "Delete",
"edit": "Edit",
"add": "Add",
"back": "Back",
"actions": "Actions",
"status": "Status",
"name": "Name",
"description": "Description",
"search": "Search",
"previous": "Previous",
"next": "Next",
"confirm_delete": "Are you sure you want to delete this item?",
"page_of": "Page {current} of {total}",
"all_topics": "All Topics",
"open": "Open",
"session": "Session",
"table": {
"entries_per_page": "entries per page",
"search_placeholder": "Search...",
"all": "All",
"showing": "Showing {start} to {end} of {total} entries",
"no_match": "No matching records found"
},
"char_length": "{n} Characters",
"forms": {
"general": "General",
"required": "required",
"save_changes": "Save Changes",
"please_wait": "Please wait...",
"none": "none",
"enabled": "Enabled",
"disabled": "Disabled"
}
},
"home": {
"subtitle": "A modern, lightweight MikroTik Hotspot Manager built for performance and simplicity.",
"manage_routers": "Manage Routers",
"manage_routers_desc": "Configure RouterOS connections and view status.",
"source_code": "Source Code",
"source_code_desc": "View the project repository and contribute.",
"quick_access": "Quick Access",
"session_name": "Session Name",
"hotspot_name": "Hotspot Name",
"ip_address": "IP Address"
},
"dashboard": {
"system_info": "System Info",
"model": "Model",
"board_name": "Board Name",
"router_os": "RouterOS",
"architecture": "Architecture",
"uptime": "Uptime",
"resources": "Resources",
"cpu_load": "CPU Load",
"memory": "Memory",
"free": "Free",
"hdd": "HDD",
"income_today": "Income Today",
"traffic_monitor": "Traffic Monitor",
"rx_download": "Rx (Download)",
"tx_upload": "Tx (Upload)"
},
"settings": {
"title": "Settings",
"subtitle": "Manage your application preferences and configurations.",
"system": "General",
"system_desc": "System-wide configurations and security.",
"admin_username": "Admin Username",
"admin_username_desc": "For security reasons, the administrator username cannot be changed.",
"change_password": "Change Password",
"new_password_placeholder": "Enter new password",
"update_password": "Update Password",
"quick_print_mode": "Quick Print Mode",
"quick_print_mode_desc": "Enable direct printing for voucher generation.",
"save_global": "Save Global Settings",
"data_management": "Data Management",
"data_management_desc": "Backup or restore your application data.",
"backup_data": "Backup Data",
"backup_data_desc": "Download a configuration file (.mivo) containing your database and settings.",
"download_backup": "Download Backup",
"restore_data": "Restore Data",
"restore_data_desc": "Upload a previously backup file (.mivo). Overwrites or adds to existing data.",
"restore": "Restore",
"warning_restore": "WARNING: This will restore settings from the file and may overwrite existing data. Continue?",
"routers_title": "Routers",
"routers_subtitle": "Manage your MikroTik RouterOS connections.",
"add_router": "Add Router",
"no_routers": "No Routers Found",
"connect_first": "Connect your first MikroTik router to start managing hotspots and vouchers.",
"delete_router_title": "Delete Session?",
"delete_router_confirm": "Are you sure you want to delete <strong>{name}</strong>? This action cannot be undone.",
"connect": "Connect",
"logos_title": "Logos",
"logos_subtitle": "Upload and manage logos for your hotspots and vouchers.",
"upload_new_logo": "Upload New Logo",
"drag_drop": "Drag and drop or click to select file",
"supports_formats": "Supports PNG, JPG, SVG, GIF",
"no_logos": "No logos uploaded yet.",
"id_copied": "ID Copied",
"logo_id_copied_desc": "Logo ID <strong>{id}</strong> copied to clipboard.",
"delete_logo_title": "Delete Logo?",
"delete_logo_confirm": "Are you sure you want to delete logo <strong>{id}</strong>?",
"templates_title": "Voucher Templates",
"templates_subtitle": "Manage and customize your voucher print designs.",
"new_template": "New Template",
"edit_template": "Edit Template",
"default_template": "Default Template",
"system_label": "System",
"custom_label": "Custom",
"built_in": "Built-in",
"default_template_desc": "Standard thermal printer friendly template.",
"delete_template_title": "Delete Template?",
"delete_template_confirm": "Are you sure you want to delete <strong>{name}</strong>?",
"template_name": "Template Name",
"html_source": "HTML Source",
"docs": "Docs",
"live_preview": "Live Preview",
"template_variables": "Template Variables",
"variables_desc": "Use these variables in your HTML source. They will be replaced with actual user data during printing.",
"qr_code": "QR Code",
"qr_desc": "Generates a QR Code containing the Login URL with username and password.",
"custom_attributes": "Custom Attributes",
"examples": "Examples",
"api_cors_title": "API CORS",
"api_cors_subtitle": "Manage Cross-Origin Resource Sharing for API access.",
"add_rule": "Add CORS Rule",
"edit_rule": "Edit CORS Rule",
"origin": "Origin",
"methods": "Allowed Methods",
"headers": "Allowed Headers",
"max_age": "Max Age (seconds)"
},
"login": {
"welcome": "Welcome back, please sign in to continue.",
"username": "Username",
"password": "Password",
"sign_in": "Sign In"
},
"quick_print": {
"title": "Quick Print",
"subtitle": "Instant voucher generation and printing.",
"manage": "Manage Packages",
"manage_title": "Manage Packages",
"manage_subtitle": "Configure your Quick Print voucher packages for:",
"no_packages": "No Packages Found",
"no_packages_found": "No packages found.",
"create_first": "Create a Quick Print package to get started.",
"create_package": "Create Package",
"add_package": "Add Package",
"edit_package": "Edit Package",
"save_package": "Save Package",
"delete_package": "Delete Package",
"print_voucher": "Print Voucher",
"name": "Name",
"package_name": "Package Name",
"profile": "Profile",
"select_profile": "Select Profile",
"prefix": "Prefix",
"server": "Server",
"price": "Price",
"selling_price": "Selling Price",
"time_limit": "Time Limit",
"data_limit": "Data Limit",
"card_color": "Card Color",
"char_length": "Char Length",
"vouchers_to_generate": "Vouchers to Generate",
"comment": "Comment"
},
"sidebar": {
"dashboard": "Dashboard",
"quick_print": "Quick Print",
"hotspot": "Hotspot",
"status": "Status",
"security": "Security",
"reports": "Reports",
"network": "Network",
"system": "System",
"settings": "Settings",
"templates": "Templates",
"disconnect": "Disconnect",
"logout": "Logout from Mivo"
},
"hotspot_active": {
"title": "Active Users",
"subtitle": "Monitor currently active hotspot sessions",
"filter_server": "All Servers",
"server": "Server",
"user": "User",
"address": "Address / MAC",
"uptime": "Uptime / Left",
"bytes_in_out": "Bytes In/Out",
"time_left": "Left",
"remove": "Disconnect User?"
},
"hotspot_hosts": {
"title": "Hotspot Hosts",
"subtitle": "Devices connected to the hotspot network for:",
"mac": "MAC Address",
"address": "Address",
"to_address": "To Address",
"server": "Server",
"comment": "Comment"
},
"hotspot_menu": {
"users": "Users",
"profiles": "User Profiles",
"generate": "Generate",
"cookies": "Cookies",
"active": "Active",
"hosts": "Hosts",
"bindings": "IP Bindings",
"walled_garden": "Walled Garden"
},
"reports_menu": {
"resume": "Resume",
"selling": "Selling Report",
"user_log": "User Log"
},
"network_menu": {
"dhcp": "DHCP Leases"
},
"system_menu": {
"scheduler": "Scheduler",
"reboot": "Reboot",
"shutdown": "Shutdown"
},
"dhcp": {
"title": "DHCP Leases",
"subtitle": "Active DHCP leases for:",
"all_servers": "All Servers",
"address": "Address",
"mac": "MAC Address",
"server": "Server",
"status": "Status",
"host": "Host Name"
},
"cookies": {
"title": "Hotspot Cookies",
"subtitle": "Active authentication cookies for:",
"user": "User",
"mac": "MAC Address",
"ip": "IP Address",
"expires": "Expires In",
"remove_cookie": "Remove Cookie?",
"remove_confirm": "Are you sure you want to remove the cookie for {user}?"
},
"reports": {
"selling_title": "Selling Report",
"selling_subtitle": "Sales summary and details for:",
"user_log_title": "User Log",
"user_log_subtitle": "Login and logout history for:",
"resume_title": "Resume Report",
"resume_subtitle": "Overview of aggregated income.",
"total_income": "Total Income",
"total_vouchers": "Total Vouchers Sold",
"date_batch": "Date / Batch (Comment)",
"qty": "Qty",
"total": "Total",
"no_data": "No sales data found.",
"time": "Time",
"topics": "Topics",
"message": "Message",
"daily": "Daily",
"monthly": "Monthly",
"yearly": "Yearly",
"date": "Date",
"month": "Month",
"year": "Year",
"refresh": "Refresh",
"print_report": "Print Report"
},
"hotspot_profiles": {
"title": "User Profiles",
"subtitle": "Manage hotspot rate limits and pricing",
"add_profile": "Add Profile",
"edit_profile": "Edit Profile",
"all_modes": "All Expired Modes",
"name": "Name",
"shared_users": "Shared Users",
"rate_limit": "Rate Limit",
"parent_queue": "Parent Queue",
"expired_mode": "Expired Mode",
"validity": "Validity",
"price": "Price",
"selling_price": "Selling Price",
"lock_user": "Lock User",
"form": {
"add_title": "Add Profile",
"edit_title": "Edit Profile",
"add_subtitle": "Create a new hotspot user profile for: {name}",
"edit_subtitle": "Edit hotspot user profile: {name}",
"settings": "Profile Settings",
"general": "General Settings",
"limits_queues": "Limits & Queues",
"pricing_validity": "Pricing & Validity",
"address_pool": "Address Pool",
"rate_limit_help": "Rx/Tx (Upload/Download). Example: 512k/1M",
"expired_mode_help": "Action when validity expires.",
"validity_help": "Days / Hours / Minutes",
"lock_user_help": "Lock user to one specific MAC address.",
"save": "Save Profile",
"name_placeholder": "e.g. 1Hour-Package",
"quick_tips": "Quick Tips",
"tip_rate_limit": "<strong>Rate Limit</strong>: Rx/Tx (Upload/Download). Example: <code>512k/1M</code>",
"tip_expired_mode": "<strong>Expired Mode</strong>: Select 'Remove' or 'Notice' to enable Validity.",
"tip_parent_queue": "<strong>Parent Queue</strong>: Assigns users to a specific parent queue for bandwidth management."
}
},
"hotspot_users": {
"form": {
"add_title": "Add User",
"edit_title": "Edit User",
"subtitle": "Hotspot user account",
"edit_subtitle": "Update user details for: {name}",
"username": "Username",
"password": "Password",
"profile": "Profile",
"server": "Server",
"time_limit": "Time Limit",
"data_limit": "Data Limit",
"comment": "Comment",
"save": "Save User",
"username_help": "Unique username for login.",
"password_help": "Strong password for security.",
"profile_help": "Profile determines speed limit and shared user policy.",
"time_limit_help": "Total allowed uptime (Days, Hours, Minutes).",
"data_limit_help": "Limit data usage (0 for unlimited).",
"comment_help": "Additional notes or contact info.",
"username_placeholder": "e.g. voucher123",
"password_placeholder": "e.g. 123456",
"comment_placeholder": "Optional note for this user",
"quick_tips": "Quick Tips",
"tip_profiles": "<strong>Profiles</strong> define the default speed limits, session timeout, and shared users policy.",
"tip_time_limit": "<strong>Time Limit</strong> is the total accumulated uptime allowed for this user.",
"tip_data_limit": "<strong>Data Limit</strong> will override the profile's data limit settings if specified here. Set to 0 to use profile default."
}
},
"hotspot_generate": {
"title": "Generate Vouchers",
"form": {
"qty": "Quantity",
"server": "Server",
"user_mode": "User Mode",
"user_length": "User Length",
"prefix": "Prefix",
"characters": "Characters",
"profile": "Profile",
"time_limit": "Time Limit",
"data_limit": "Data Limit",
"comment": "Comment",
"generate": "Generate Vouchers",
"subtitle": "Create multiple hotspot vouchers in batch for: {name}",
"batch_settings": "Batch Generation Settings",
"core_config": "Core Config",
"qty_help": "Count of vouchers to generate.",
"server_help": "Target Hotspot Instance.",
"user_mode_help": "Login credential format.",
"comment_help": "Note for this batch.",
"user_format": "User Format",
"name_length_help": "Length of username/password.",
"prefix_placeholder": "e.g. VIP-",
"prefix_help": "Prefix for generated usernames.",
"characters_help": "Character types to include.",
"limits_profile": "Limits & Profile",
"profile_help": "Apply speed limits from profile.",
"time_limit_help": "Max uptime (e.g. 1h, 30m).",
"data_limit_help": "Max data transfer (MB).",
"quick_tips": "Quick Tips",
"tip_user_mode": "<strong>User Mode</strong>: UP (separate), VC (same).",
"tip_format_examples": "<strong>Format Examples</strong>: abcd (lower), 1234 (num), Mix (upper/lower/num).",
"tip_limits": "<strong>Limits</strong>: Time (e.g. 1h, 30m), Data (e.g. 100MB). Leave empty to use Profile default."
}
},
"security": {
"bindings": {
"title": "IP Bindings",
"subtitle": "Manage IP bindings (bypass/blocked) for: {name}",
"all_types": "All Types",
"regular": "Regular",
"bypassed": "Bypassed",
"blocked": "Blocked",
"table": {
"mac": "MAC Address",
"address": "Address",
"to_address": "To Address",
"type": "Type",
"comment": "Comment"
},
"form": {
"add_title": "Add Binding",
"mac_address": "MAC Address",
"address": "Address",
"to_address": "To Address",
"type": "Type",
"server": "Server",
"comment": "Comment",
"mac_help": "Target device MAC address.",
"address_help": "Target IP address (optional).",
"to_address_help": "Translate to this IP (optional).",
"server_help": "Apply to specific Hotspot server.",
"comment_help": "Note for this binding.",
"save": "Save & Bind",
"tip_bypassed": "<strong>Bypassed</strong>: Access without login.",
"tip_blocked": "<strong>Blocked</strong>: Deny access completely.",
"tip_regular": "<strong>Regular</strong>: Normal hotspot client."
}
},
"walled_garden": {
"title": "Walled Garden",
"subtitle": "Manage allowed destinations (bypass without login) for: {name}",
"all_actions": "All Actions",
"allow": "Allow",
"deny": "Deny",
"table": {
"host_ip": "Dst. Host / IP",
"proto_port": "Protocol / Port",
"action": "Action",
"comment": "Comment"
},
"form": {
"add_title": "Add Entry",
"action": "Action",
"dst_host": "Dst. Host (Domain)",
"dst_address": "Dst. Address (IP)",
"protocol": "Protocol",
"dst_port": "Dst. Port",
"server": "Server",
"comment": "Comment",
"host_help": "Domain to allow (wildcard supported).",
"addr_help": "Destination IP Address.",
"action_help": "Allow (bypass) or Deny access.",
"server_help": "Apply to specific Hotspot server.",
"comment_help": "Note for this rule.",
"save": "Save Entry",
"tip_host": "<strong>Dst. Host</strong>: Domain name (e.g. <code>*.google.com</code>).",
"tip_ip": "<strong>Dst. IP</strong>: Specific IP address.",
"tip_action": "<strong>Action</strong>: Allow to bypass auth."
}
}
},
"system_tools": {
"scheduler_subtitle": "Manage RouterOS automated tasks for:",
"add_task": "Add Task",
"add_title": "Add Scheduler Task",
"edit_title": "Edit Scheduler Task",
"save_task": "Save Task",
"update_task": "Update Task",
"delete_task": "Delete Task",
"table_name": "Name",
"name": "Name",
"interval": "Interval",
"next_run": "Next Run",
"status": "Status",
"enabled": "Enabled",
"disabled": "Disabled",
"start_date": "Start Date",
"start_time": "Start Time",
"on_event": "On Event (Script)",
"comment": "Comment"
},
"toasts": {
"profile_created": "Profile Created",
"profile_created_desc": "User profile \"{name}\" has been created successfully.",
"profile_updated": "Profile Updated",
"profile_updated_desc": "Changes to profile \"{name}\" have been saved.",
"profile_deleted": "Profile Deleted",
"profile_deleted_desc": "The user profile has been removed.",
"user_added": "User Added",
"user_added_desc": "Hotspot user \"{name}\" has been created.",
"user_deleted": "User(s) Deleted",
"user_deleted_desc": "The selected hotspot user(s) have been removed.",
"user_updated": "User Updated",
"user_updated_desc": "Changes to user \"{name}\" have been saved.",
"session_removed": "Session Removed",
"session_removed_desc": "The active hotspot session has been terminated.",
"binding_added": "Binding Added",
"binding_added_desc": "IP Binding has been created successfully.",
"binding_removed": "Binding Removed",
"binding_removed_desc": "IP Binding has been removed.",
"rule_added": "Rule Added",
"rule_added_desc": "Walled Garden rule has been added.",
"rule_removed": "Rule Removed",
"rule_removed_desc": "Walled Garden rule has been removed.",
"cookie_removed": "Cookie Removed",
"cookie_removed_desc": "Hotspot cookie has been cleared.",
"package_saved": "Package Saved",
"package_saved_desc": "Quick print package has been updated.",
"package_deleted": "Package Deleted",
"package_deleted_desc": "Quick print package has been removed.",
"vouchers_generated": "Vouchers Generated",
"vouchers_generated_desc": "{qty} users have been created successfully.",
"schedule_added": "Schedule Added",
"schedule_added_desc": "The task has been scheduled.",
"schedule_updated": "Schedule Updated",
"schedule_updated_desc": "Changes to the task have been saved.",
"schedule_deleted": "Schedule Deleted",
"schedule_deleted_desc": "The scheduled task has been removed.",
"router_added": "Router Added",
"router_added_desc": "Session {name} has been created.",
"router_updated": "Router Updated",
"router_updated_desc": "Settings for {name} have been saved.",
"router_deleted": "Router Deleted",
"router_deleted_desc": "The session has been removed.",
"password_updated": "Password Updated",
"password_updated_desc": "Administrator password has been changed.",
"settings_saved": "Settings Saved",
"settings_saved_desc": "Global preferences have been updated.",
"restore_success": "Restore Successful",
"restore_success_desc": "Sessions and settings have been restored from backup.",
"restore_failed": "Restore Failed",
"no_file_selected": "No backup file selected.",
"invalid_file_type": "Invalid file type. Please upload a .mivo or .json file.",
"invalid_file_type_mivo": "Invalid file type. Please upload a .mivo file.",
"file_empty": "The uploaded file is empty.",
"file_corrupted": "The file is corrupted or not a valid Mivo backup.",
"logo_uploaded": "Logo Uploaded",
"logo_uploaded_desc": "New logo has been added successfully.",
"logo_deleted": "Logo Deleted",
"logo_deleted_desc": "The logo has been removed.",
"template_created": "Template Created",
"template_created_desc": "Voucher template \"{name}\" has been added.",
"template_updated": "Template Updated",
"template_updated_desc": "Changes to \"{name}\" have been saved.",
"template_deleted": "Template Deleted",
"template_deleted_desc": "The template has been removed.",
"test_alert": "Mivo Alert Test",
"test_alert_desc": "If you see this, the new alert system is working perfectly! 🚀",
"cors_rule_added": "CORS Rule Added",
"cors_rule_added_desc": "The CORS rule for {origin} has been created.",
"cors_rule_updated": "CORS Rule Updated",
"cors_rule_updated_desc": "Changes to CORS rule for {origin} have been saved.",
"cors_rule_deleted": "CORS Rule Deleted",
"cors_rule_deleted_desc": "The CORS rule has been removed."
}
}

554
public/lang/id.json Normal file
View File

@@ -0,0 +1,554 @@
{
"_meta": {
"name": "Bahasa Indonesia",
"flag": "id"
},
"common": {
"dashboard": "Dashboard",
"save": "Simpan",
"cancel": "Batal",
"delete": "Hapus",
"edit": "Edit",
"add": "Tambah",
"back": "Kembali",
"actions": "Aksi",
"status": "Status",
"name": "Nama",
"description": "Deskripsi",
"search": "Cari",
"previous": "Sebelumnya",
"next": "Selanjutnya",
"confirm_delete": "Apakah Anda yakin ingin menghapus item ini?",
"page_of": "Halaman {current} dari {total}",
"all_topics": "Semua Topik",
"open": "Buka",
"session": "Sesi",
"table": {
"entries_per_page": "entri per halaman",
"search_placeholder": "Cari...",
"all": "Semua",
"showing": "Menampilkan {start} sampai {end} dari {total} entri",
"no_match": "Data tidak ditemukan"
},
"enabled": "Aktif",
"disabled": "Nonaktif",
"char_length": "{n} Karakter",
"forms": {
"general": "Umum",
"required": "wajib",
"save_changes": "Simpan Perubahan",
"please_wait": "Mohon tunggu...",
"none": "tidak ada"
}
},
"home": {
"subtitle": "Hotspot Manager MikroTik modern dan ringan yang dirancang untuk performa dan kemudahan.",
"manage_routers": "Kelola Router",
"manage_routers_desc": "Konfigurasi koneksi RouterOS dan lihat status.",
"source_code": "Kode Sumber",
"source_code_desc": "Lihat repositori proyek dan berkontribusi.",
"quick_access": "Akses Cepat",
"session_name": "Nama Sesi",
"hotspot_name": "Nama Hotspot",
"ip_address": "Alamat IP"
},
"dashboard": {
"system_info": "Info Sistem",
"model": "Model",
"board_name": "Nama Board",
"router_os": "RouterOS",
"architecture": "Arsitektur",
"uptime": "Uptime",
"resources": "Sumber Daya",
"cpu_load": "Beban CPU",
"memory": "Memori",
"free": "Bebas",
"hdd": "HDD",
"income_today": "Pendapatan Hari Ini",
"traffic_monitor": "Monitor Lalu Lintas",
"rx_download": "Rx (Download)",
"tx_upload": "Tx (Upload)"
},
"settings": {
"title": "Pengaturan",
"subtitle": "Kelola preferensi dan konfigurasi aplikasi Anda.",
"system": "Umum",
"system_desc": "Konfigurasi sistem dan keamanan.",
"admin_username": "Username Admin",
"admin_username_desc": "Untuk alasan keamanan, username administrator tidak dapat diubah.",
"change_password": "Ganti Password",
"new_password_placeholder": "Masukkan password baru",
"update_password": "Perbarui Password",
"quick_print_mode": "Mode Cetak Cepat",
"quick_print_mode_desc": "Aktifkan pencetakan langsung untuk pembuatan voucher.",
"save_global": "Simpan Pengaturan Global",
"data_management": "Manajemen Data",
"data_management_desc": "Cadangkan atau pulihkan data aplikasi Anda.",
"backup_data": "Cadangkan Data",
"backup_data_desc": "Unduh file konfigurasi (.mivo) yang berisi database dan pengaturan Anda.",
"download_backup": "Unduh Cadangan",
"restore_data": "Pulihkan Data",
"restore_data_desc": "Unggah file cadangan (.mivo). Menimpa atau menambahkan data yang sudah ada.",
"restore": "Pulihkan",
"warning_restore": "PERINGATAN: Ini akan memulihkan pengaturan dari file dan dapat menimpa data yang ada. Lanjutkan?",
"routers_title": "Router",
"routers_subtitle": "Kelola koneksi MikroTik RouterOS Anda.",
"add_router": "Tambah Router",
"no_routers": "Tidak Ada Router Ditemukan",
"connect_first": "Hubungkan router MikroTik pertama Anda untuk mulai mengelola hotspot dan voucher.",
"delete_router_title": "Hapus Sesi?",
"delete_router_confirm": "Apakah Anda yakin ingin menghapus <strong>{name}</strong>? Tindakan ini tidak dapat dibatalkan.",
"connect": "Hubungkan",
"logos_title": "Logo",
"logos_subtitle": "Unggah dan kelola logo untuk hotspot dan voucher Anda.",
"upload_new_logo": "Unggah Logo Baru",
"drag_drop": "Seret dan lepas atau klik untuk memilih file",
"supports_formats": "Mendukung PNG, JPG, SVG, GIF",
"no_logos": "Belum ada logo yang diunggah.",
"id_copied": "ID Disalin",
"logo_id_copied_desc": "ID Logo <strong>{id}</strong> disalin ke papan klip.",
"delete_logo_title": "Hapus Logo?",
"delete_logo_confirm": "Apakah Anda yakin ingin menghapus logo <strong>{id}</strong>?",
"templates_title": "Template Voucher",
"templates_subtitle": "Kelola dan sesuaikan desain cetak voucher Anda.",
"new_template": "Template Baru",
"edit_template": "Edit Template",
"default_template": "Template Default",
"system_label": "Sistem",
"custom_label": "Kustom",
"built_in": "Bawaan",
"default_template_desc": "Template ramah printer termal standar.",
"delete_template_title": "Hapus Template?",
"delete_template_confirm": "Apakah Anda yakin ingin menghapus <strong>{name}</strong>?",
"template_name": "Nama Template",
"html_source": "Sumber HTML",
"docs": "Dokumentasi",
"live_preview": "Pratinjau Langsung",
"template_variables": "Variabel Template",
"variables_desc": "Gunakan variabel ini dalam sumber HTML Anda. Variabel akan diganti dengan data user yang sebenarnya saat mencetak.",
"qr_code": "Kode QR",
"qr_desc": "Menghasilkan Kode QR yang berisi URL Login dengan username dan password.",
"custom_attributes": "Atribut Kustom",
"examples": "Contoh",
"api_cors_title": "API CORS",
"api_cors_subtitle": "Kelola Cross-Origin Resource Sharing untuk akses API.",
"add_rule": "Tambah Aturan CORS",
"edit_rule": "Edit Aturan CORS",
"origin": "Origin",
"methods": "Metode Diizinkan",
"headers": "Header Diizinkan",
"max_age": "Max Age (detik)"
},
"login": {
"welcome": "Selamat datang kembali, silakan masuk untuk melanjutkan.",
"username": "Username",
"password": "Password",
"sign_in": "Masuk"
},
"quick_print": {
"title": "Cetak Cepat",
"subtitle": "Pembuatan dan pencetakan voucher instan.",
"manage": "Kelola Paket",
"manage_title": "Kelola Paket",
"manage_subtitle": "Konfigurasi paket voucher Quick Print untuk:",
"no_packages": "Tidak Ada Paket Ditemukan",
"no_packages_found": "Paket tidak ditemukan.",
"create_first": "Buat paket Cetak Cepat untuk memulai.",
"create_package": "Buat Paket",
"add_package": "Tambah Paket",
"edit_package": "Edit Paket",
"save_package": "Simpan Paket",
"delete_package": "Hapus Paket",
"print_voucher": "Cetak Voucher",
"name": "Nama",
"package_name": "Nama Paket",
"profile": "Profil",
"select_profile": "Pilih Profil",
"prefix": "Awalan",
"server": "Server",
"price": "Harga",
"selling_price": "Harga Jual",
"time_limit": "Batas Waktu",
"data_limit": "Batas Data",
"card_color": "Warna Kartu",
"char_length": "Panjang Karakter",
"vouchers_to_generate": "Jumlah Voucher",
"comment": "Komentar"
},
"sidebar": {
"dashboard": "Dashboard",
"quick_print": "Cetak Cepat",
"hotspot": "Hotspot",
"status": "Status",
"security": "Keamanan",
"reports": "Laporan",
"network": "Jaringan",
"system": "Sistem",
"settings": "Pengaturan",
"templates": "Template",
"disconnect": "Putuskan Sesi",
"logout": "Keluar dari Mivo"
},
"hotspot_active": {
"title": "User Aktif",
"subtitle": "Pantau sesi hotspot yang sedang aktif",
"filter_server": "Semua Server",
"server": "Server",
"user": "User",
"address": "Alamat / MAC",
"uptime": "Waktu Aktif / Sisa",
"bytes_in_out": "Bytes Masuk/Keluar",
"time_left": "Sisa",
"remove": "Putuskan User?"
},
"hotspot_hosts": {
"title": "Host Hotspot",
"subtitle": "Perangkat yang terhubung ke jaringan hotspot untuk:",
"mac": "Alamat MAC",
"address": "Alamat IP",
"to_address": "Ke Alamat",
"server": "Server",
"comment": "Komentar"
},
"hotspot_menu": {
"users": "User",
"profiles": "Profil User",
"generate": "Generate",
"cookies": "Cookie",
"active": "Aktif",
"hosts": "Host",
"bindings": "IP Binding",
"walled_garden": "Walled Garden"
},
"reports_menu": {
"resume": "Resume",
"selling": "Laporan Penjualan",
"user_log": "Log User"
},
"network_menu": {
"dhcp": "DHCP Lease"
},
"system_menu": {
"scheduler": "Penjadwal",
"reboot": "Reboot",
"shutdown": "Shutdown"
},
"dhcp": {
"title": "DHCP Lease",
"subtitle": "DHCP lease aktif untuk:",
"all_servers": "Semua Server",
"address": "Alamat",
"mac": "Alamat MAC",
"server": "Server",
"status": "Status",
"host": "Nama Host"
},
"cookies": {
"title": "Cookie Hotspot",
"subtitle": "Cookie autentikasi aktif untuk:",
"user": "User",
"mac": "Alamat MAC",
"ip": "Alamat IP",
"expires": "Kedaluwarsa Dalam",
"remove_cookie": "Hapus Cookie?",
"remove_confirm": "Apakah Anda yakin ingin menghapus cookie untuk {user}?"
},
"reports": {
"selling_title": "Laporan Penjualan",
"selling_subtitle": "Ringkasan dan detail penjualan untuk:",
"user_log_title": "Log User",
"user_log_subtitle": "Riwayat login dan logout untuk:",
"resume_title": "Laporan Resume",
"resume_subtitle": "Ikhtisar pendapatan yang diagregasi.",
"total_income": "Total Pendapatan",
"total_vouchers": "Total Voucher Terjual",
"date_batch": "Tanggal / Batch (Komentar)",
"qty": "Jumlah",
"total": "Total",
"no_data": "Data penjualan tidak ditemukan.",
"time": "Waktu",
"topics": "Topik",
"message": "Pesan",
"daily": "Harian",
"monthly": "Bulanan",
"yearly": "Tahunan",
"date": "Tanggal",
"month": "Bulan",
"year": "Tahun",
"refresh": "Refresh",
"print_report": "Cetak Laporan"
},
"colors": {
"blue": "Biru",
"red": "Merah",
"green": "Hijau",
"yellow": "Kuning",
"purple": "Ungu",
"pink": "Merah Jambu",
"indigo": "Nila",
"dark": "Gelap"
},
"hotspot_profiles": {
"title": "Profil User",
"subtitle": "Kelola batas kecepatan dan harga hotspot",
"add_profile": "Tambah Profil",
"edit_profile": "Edit Profil",
"all_modes": "Semua Mode Kedaluwarsa",
"name": "Nama",
"shared_users": "User Bersama",
"rate_limit": "Batas Kecepatan",
"parent_queue": "Antrean Induk",
"expired_mode": "Mode Kedaluwarsa",
"validity": "Masa Aktif",
"price": "Harga",
"selling_price": "Harga Jual",
"lock_user": "Kunci User",
"form": {
"add_title": "Tambah Profil",
"edit_title": "Edit Profil",
"add_subtitle": "Buat profil user hotspot baru untuk: {name}",
"edit_subtitle": "Ubah profil user hotspot: {name}",
"settings": "Pengaturan Profil",
"general": "Pengaturan Umum",
"limits_queues": "Batas & Antrean",
"pricing_validity": "Harga & Masa Aktif",
"address_pool": "Address Pool",
"rate_limit_help": "Rx/Tx (Upload/Download). Contoh: 512k/1M",
"expired_mode_help": "Tindakan saat masa aktif habis.",
"validity_help": "Hari / Jam / Menit",
"lock_user_help": "Kunci user ke satu alamat MAC tertentu.",
"save": "Simpan Profil",
"name_placeholder": "misal: Paket-1Jam",
"quick_tips": "Tips Cepat",
"tip_rate_limit": "<strong>Batas Kecepatan</strong>: Rx/Tx (Upload/Download). Contoh: <code>512k/1M</code>",
"tip_expired_mode": "<strong>Mode Kedaluwarsa</strong>: Pilih 'Remove' atau 'Notice' untuk mengaktifkan Masa Aktif.",
"tip_parent_queue": "<strong>Antrean Induk</strong>: Menempatkan user pada antrean induk tertentu untuk manajemen bandwidth."
}
},
"hotspot_users": {
"form": {
"add_title": "Tambah User",
"edit_title": "Edit User",
"subtitle": "Akun user hotspot",
"edit_subtitle": "Perbarui detail user untuk: {name}",
"username": "Username",
"password": "Kata Sandi",
"profile": "Profil",
"server": "Server",
"time_limit": "Batas Waktu",
"data_limit": "Batas Data",
"comment": "Komentar",
"save": "Simpan User",
"username_help": "Username unik untuk login.",
"password_help": "Kata sandi yang kuat untuk keamanan.",
"profile_help": "Profil menentukan batas kecepatan dan kebijakan user bersama.",
"time_limit_help": "Total waktu aktif yang diperbolehkan (Hari, Jam, Menit).",
"data_limit_help": "Batasi penggunaan data (0 untuk tidak terbatas).",
"comment_help": "Catatan tambahan atau info kontak.",
"username_placeholder": "misal: voucher123",
"password_placeholder": "misal: 123456",
"comment_placeholder": "Catatan opsional untuk user ini",
"quick_tips": "Tips Cepat",
"tip_profiles": "<strong>Profil</strong> menentukan batas kecepatan default, timeout sesi, dan kebijakan user bersama.",
"tip_time_limit": "<strong>Batas Waktu</strong> adalah total akumulasi waktu aktif yang diperbolehkan untuk user ini.",
"tip_data_limit": "<strong>Batas Data</strong> akan menimpa pengaturan batas data profil jika ditentukan di sini. Set ke 0 untuk menggunakan default profil."
}
},
"hotspot_generate": {
"title": "Buat Voucher",
"form": {
"qty": "Jumlah",
"server": "Server",
"user_mode": "Mode User",
"user_length": "Panjang User",
"prefix": "Awalan",
"characters": "Karakter",
"profile": "Profil",
"time_limit": "Batas Waktu",
"data_limit": "Batas Data",
"comment": "Komentar",
"generate": "Buat Voucher",
"subtitle": "Buat voucher hotspot dalam jumlah banyak untuk: {name}",
"batch_settings": "Pengaturan Pembuatan Batch",
"core_config": "Konfigurasi Inti",
"qty_help": "Jumlah voucher yang akan dibuat.",
"server_help": "Instansi Hotspot tujuan.",
"user_mode_help": "Format kredensial login.",
"comment_help": "Catatan untuk batch ini.",
"user_format": "Format User",
"name_length_help": "Panjang username/password.",
"prefix_placeholder": "misal: VIP-",
"prefix_help": "Awalan untuk username yang dibuat.",
"characters_help": "Tipe karakter yang disertakan.",
"limits_profile": "Batas & Profil",
"profile_help": "Terapkan batas kecepatan dari profil.",
"time_limit_help": "Waktu aktif maksimal (misal: 1h, 30m).",
"data_limit_help": "Transfer data maksimal (MB).",
"quick_tips": "Tips Cepat",
"tip_user_mode": "<strong>Mode User</strong>: UP (terpisah), VC (sama).",
"tip_format_examples": "<strong>Contoh Format</strong>: abcd (kecil), 1234 (angka), Mix (besar/kecil/angka).",
"tip_limits": "<strong>Batas</strong>: Waktu (misal: 1h, 30m), Data (misal: 100MB). Kosongkan untuk menggunakan default profil."
}
},
"security": {
"bindings": {
"title": "IP Binding",
"subtitle": "Kelola IP binding (bypass/blokir) untuk: {name}",
"all_types": "Semua Tipe",
"regular": "Reguler",
"bypassed": "Bypass",
"blocked": "Blokir",
"table": {
"mac": "Alamat MAC",
"address": "Alamat IP",
"to_address": "Ke Alamat",
"type": "Tipe",
"comment": "Komentar"
},
"form": {
"add_title": "Tambah Binding",
"mac_address": "Alamat MAC",
"address": "Alamat IP",
"to_address": "Ke Alamat",
"type": "Tipe",
"server": "Server",
"comment": "Komentar",
"mac_help": "Alamat MAC perangkat target.",
"address_help": "Alamat IP target (opsional).",
"to_address_help": "Terjemahkan ke IP ini (opsional).",
"server_help": "Terapkan ke server Hotspot tertentu.",
"comment_help": "Catatan untuk binding ini.",
"save": "Simpan & Bind",
"tip_bypassed": "<strong>Bypass</strong>: Akses tanpa login.",
"tip_blocked": "<strong>Blokir</strong>: Tolak akses sepenuhnya.",
"tip_regular": "<strong>Reguler</strong>: Klien hotspot normal."
}
},
"walled_garden": {
"title": "Walled Garden",
"subtitle": "Kelola tujuan yang diperbolehkan (bypass tanpa login) untuk: {name}",
"all_actions": "Semua Aksi",
"allow": "Izinkan",
"deny": "Tolak",
"table": {
"host_ip": "Host / IP Tujuan",
"proto_port": "Protokol / Port",
"action": "Aksi",
"comment": "Komentar"
},
"form": {
"add_title": "Tambah Entri",
"action": "Aksi",
"dst_host": "Host Tujuan (Domain)",
"dst_address": "Alamat Tujuan (IP)",
"protocol": "Protokol",
"dst_port": "Port Tujuan",
"server": "Server",
"comment": "Komentar",
"host_help": "Domain yang diperbolehkan (mendukung wildcard).",
"addr_help": "Alamat IP Tujuan.",
"action_help": "Izinkan (bypass) atau Tolak akses.",
"server_help": "Terapkan ke server Hotspot tertentu.",
"comment_help": "Catatan untuk aturan ini.",
"save": "Simpan Entri",
"tip_host": "<strong>Host Tujuan</strong>: Nama domain (misal: <code>*.google.com</code>).",
"tip_ip": "<strong>IP Tujuan</strong>: Alamat IP tertentu.",
"tip_action": "<strong>Aksi</strong>: Izinkan untuk melewati autentikasi."
}
}
},
"system_tools": {
"scheduler_subtitle": "Kelola tugas otomatis RouterOS untuk:",
"add_task": "Tambah Tugas",
"add_title": "Tambah Tugas Penjadwal",
"edit_title": "Edit Tugas Penjadwal",
"save_task": "Simpan Tugas",
"update_task": "Update Tugas",
"delete_task": "Hapus Tugas",
"table_name": "Nama",
"name": "Nama",
"interval": "Interval",
"next_run": "Run Berikutnya",
"status": "Status",
"enabled": "Aktif",
"disabled": "Nonaktif",
"start_date": "Tgl Mulai",
"start_time": "Waktu Mulai",
"on_event": "Pada Event (Script)",
"comment": "Komentar"
},
"toasts": {
"profile_created": "Profil Dibuat",
"profile_created_desc": "Profil user \"{name}\" berhasil dibuat.",
"profile_updated": "Profil Diperbarui",
"profile_updated_desc": "Perubahan pada profil \"{name}\" berhasil disimpan.",
"profile_deleted": "Profil Dihapus",
"profile_deleted_desc": "Profil user berhasil dihapus.",
"user_added": "User Ditambahkan",
"user_added_desc": "User hotspot \"{name}\" berhasil dibuat.",
"user_deleted": "User Dihapus",
"user_deleted_desc": "User hotspot yang dipilih berhasil dihapus.",
"user_updated": "User Diperbarui",
"user_updated_desc": "Perubahan pada user \"{name}\" berhasil disimpan.",
"session_removed": "Sesi Dihapus",
"session_removed_desc": "Sesi hotspot aktif telah diputuskan.",
"binding_added": "Binding Ditambahkan",
"binding_added_desc": "IP Binding berhasil dibuat.",
"binding_removed": "Binding Dihapus",
"binding_removed_desc": "IP Binding berhasil dihapus.",
"rule_added": "Aturan Ditambahkan",
"rule_added_desc": "Aturan Walled Garden berhasil ditambahkan.",
"rule_removed": "Aturan Dihapus",
"rule_removed_desc": "Aturan Walled Garden berhasil dihapus.",
"cookie_removed": "Cookie Dihapus",
"cookie_removed_desc": "Cookie hotspot berhasil dihapus.",
"package_saved": "Paket Disimpan",
"package_saved_desc": "Paket quick print berhasil diperbarui.",
"package_deleted": "Paket Dihapus",
"package_deleted_desc": "Paket quick print berhasil dihapus.",
"vouchers_generated": "Voucher Dibuat",
"vouchers_generated_desc": "{qty} user berhasil dibuat.",
"schedule_added": "Jadwal Ditambahkan",
"schedule_added_desc": "Tugas berhasil dijadwalkan.",
"schedule_updated": "Jadwal Diperbarui",
"schedule_updated_desc": "Perubahan pada tugas berhasil disimpan.",
"schedule_deleted": "Jadwal Dihapus",
"schedule_deleted_desc": "Tugas yang dijadwalkan berhasil dihapus.",
"router_added": "Router Ditambahkan",
"router_added_desc": "Sesi {name} berhasil dibuat.",
"router_updated": "Router Diperbarui",
"router_updated_desc": "Pengaturan untuk {name} berhasil disimpan.",
"router_deleted": "Router Dihapus",
"router_deleted_desc": "Sesi berhasil dihapus.",
"password_updated": "Kata Sandi Diperbarui",
"password_updated_desc": "Kata sandi administrator berhasil diubah.",
"settings_saved": "Pengaturan Disimpan",
"settings_saved_desc": "Preferensi global berhasil diperbarui.",
"restore_success": "Restore Berhasil",
"restore_success_desc": "Sesi dan pengaturan berhasil dipulihkan dari cadangan.",
"restore_failed": "Gagal Memulihkan",
"no_file_selected": "Tidak ada file cadangan yang dipilih.",
"invalid_file_type": "Tipe file tidak valid. Silakan unggah file .mivo atau .json.",
"invalid_file_type_mivo": "Tipe file tidak valid. Silakan unggah file .mivo.",
"file_empty": "File yang diunggah kosong.",
"file_corrupted": "File rusak atau bukan cadangan Mivo yang valid.",
"logo_uploaded": "Logo Diunggah",
"logo_uploaded_desc": "Logo baru berhasil ditambahkan.",
"logo_deleted": "Logo Dihapus",
"logo_deleted_desc": "Logo berhasil dihapus.",
"template_created": "Templat Dibuat",
"template_created_desc": "Templat voucher \"{name}\" berhasil ditambahkan.",
"template_updated": "Templat Diperbarui",
"template_updated_desc": "Perubahan pada \"{name}\" berhasil disimpan.",
"template_deleted": "Templat Dihapus",
"template_deleted_desc": "Templat berhasil dihapus.",
"test_alert": "Tes Alert Mivo",
"test_alert_desc": "Jika Anda melihat ini, sistem alert baru berfungsi dengan sempurna! 🚀",
"cors_rule_added": "Aturan CORS Ditambahkan",
"cors_rule_added_desc": "Aturan CORS untuk {origin} berhasil dibuat.",
"cors_rule_updated": "Aturan CORS Diperbarui",
"cors_rule_updated_desc": "Perubahan pada aturan CORS untuk {origin} berhasil disimpan.",
"cors_rule_deleted": "Aturan CORS Dihapus",
"cors_rule_deleted_desc": "Aturan CORS berhasil dihapus."
}
}