510 lines
27 KiB
JSON
510 lines
27 KiB
JSON
{
|
||
"meta.brand": "WireGuard UI",
|
||
"nav.section.main": "Main",
|
||
"nav.section.monitor": "Monitoring",
|
||
"nav.section.admin": "Administration",
|
||
"nav.section.other": "Other",
|
||
"nav.dashboard": "Dashboard",
|
||
"nav.clients": "Clients",
|
||
"nav.server": "Server",
|
||
"nav.traffic": "Traffic",
|
||
"nav.logs": "Logs",
|
||
"nav.settings": "Settings",
|
||
"nav.users": "Users",
|
||
"nav.wol": "WoL",
|
||
"nav.about": "About",
|
||
"nav.badge_tooltip": "Unapplied changes",
|
||
"nav.profile": "Profile",
|
||
"nav.logout_sidebar": "Sign out",
|
||
"nav.mobile_user_aria": "User actions",
|
||
"nav.sign_out_mobile": "Out",
|
||
"role.admin": "Administrator",
|
||
"role.user": "User",
|
||
"role.guest": "Guest",
|
||
"top.reload": "Reload view",
|
||
"top.sync": "Sync",
|
||
"top.new_client": "New client",
|
||
"top.apply_config": "Apply config",
|
||
"new_client.tooltip_allowed": "Address list routed to the server; included in the client's AllowedIPs.",
|
||
"new_client.tooltip_extra": "List merged into AllowedIPs for this peer in the server's wg.conf.",
|
||
"modal.apply.title": "Apply configuration",
|
||
"modal.apply.body1": "This writes current clients/peers to <code>wg.conf</code> and updates the kernel. If you changed <strong>global WireGuard settings</strong>, the interface may restart via <code>wg-quick</code> when permitted.",
|
||
"modal.apply.body2": "<strong>Session / appearance</strong> changes apply without this step when there are no other pending changes.",
|
||
"modal.apply.cancel": "Cancel",
|
||
"modal.apply.confirm": "Apply",
|
||
"modal.kernel.title": "Config saved — kernel reload pending",
|
||
"modal.kernel.p1": "Changes were written to <code>wg.conf</code> but could not be applied to the kernel automatically.",
|
||
"modal.kernel.p2": "Open <strong>Server</strong> to manually start or restart the WireGuard interface.",
|
||
"modal.kernel.details": "Technical details",
|
||
"modal.kernel.none": "(no detail)",
|
||
"js.apply_ok": "Configuration applied successfully.",
|
||
"js.apply_kernel_hint": "Configuration saved on disk. To reload the kernel, set WGUI_WG_SYNCCONF_AFTER_APPLY=true or restart manually from Server.",
|
||
"js.global_post_fail": "Could not apply global settings",
|
||
"clients.search_ph": "Search clients…",
|
||
"clients.enabled": "Enabled",
|
||
"clients.disabled": "Disabled",
|
||
"clients.new_btn": "New client",
|
||
"meta.title_clients": "Clients · WireGuard",
|
||
"page.clients": "Clients",
|
||
"dash.wg_warn": "WireGuard UI could not query local statistics:",
|
||
"dash.kpi.active": "Active",
|
||
"dash.kpi.active_sub": "Enabled peers in configuration",
|
||
"dash.kpi.down_lbl": "Download",
|
||
"dash.kpi.down_sub": "Cumulative TX (kernel, peer perspective)",
|
||
"dash.kpi.up_lbl": "Upload",
|
||
"dash.kpi.up_sub": "Cumulative RX (kernel, peer perspective)",
|
||
"dash.kpi.sessions": "Active sessions",
|
||
"dash.kpi.sessions_sub": "Enabled peers with a recent handshake (~3 min)",
|
||
"dash.peers_title": "Recent peers",
|
||
"dash.peers_badge": "of",
|
||
"dash.peers_of": "clients",
|
||
"dash.peer_filter_ph": "Filter peers…",
|
||
"dash.no_peers": "No peers in the database.",
|
||
"dash.peer_online": "Online",
|
||
"dash.peer_offline": "Offline",
|
||
"dash.peer_disabled": "Disabled",
|
||
"dash.peer_usage": "(24h)",
|
||
"dash.toggle_peer": "Enable / disable peer",
|
||
"dash.srv_title": "WireGuard server",
|
||
"dash.srv_active": "● Active",
|
||
"dash.srv_inactive": "Inactive",
|
||
"dash.srv_iface_port": "Interface / port",
|
||
"dash.srv_pubkey": "Public key (truncated)",
|
||
"meta.title_dashboard": "Dashboard · WireGuard",
|
||
"page.dashboard": "Dashboard",
|
||
"login.title_page": "WireGuard UI — Login",
|
||
"login.subtitle": "Administration panel",
|
||
"login.user": "Username",
|
||
"login.pass": "Password",
|
||
"login.remember": "Keep me signed in",
|
||
"login.forgot": "Forgot password?",
|
||
"login.submit": "Sign in",
|
||
"login.submit_checking": "Signing in…",
|
||
"login.secure": "Secure access via HTTPS",
|
||
"login.encrypted": "Encrypted session",
|
||
"login.show_pass": "Show",
|
||
"login.passkey": "Sign in with passkey",
|
||
"login.passkey_hint": "Optional: leave username empty to pick the account on this device.",
|
||
"login.success_title": "Access granted",
|
||
"login.success_sub": "Redirecting…",
|
||
"profile.title": "Profile · WireGuard",
|
||
"profile.page": "My account",
|
||
"users.title": "Users · WireGuard",
|
||
"users.page": "Users",
|
||
"settings.title": "Global settings · WireGuard",
|
||
"settings.page": "Global settings",
|
||
"server.title": "Server · WireGuard",
|
||
"server.page": "Server",
|
||
"traffic.title": "Traffic · WireGuard",
|
||
"traffic.page": "Traffic",
|
||
"logs.title": "Logs · WireGuard",
|
||
"logs.page": "System logs",
|
||
"status.title": "Status (table) · WireGuard",
|
||
"status.page": "Status (table)",
|
||
"wol.title": "Wake-on-LAN · WireGuard",
|
||
"wol.page": "Wake-on-LAN",
|
||
"about.title": "About · WireGuard",
|
||
"about.page": "About",
|
||
"helper.client_disabled": "Client disabled",
|
||
"helper.dns_no_server": "Not using server DNS",
|
||
"helper.dns_empty_list": "Server DNS (empty list)",
|
||
"helper.dns_active": "Server DNS: on",
|
||
"helper.dns_inactive": "Server DNS: off",
|
||
"helper.updated": "Last updated:",
|
||
"helper.peer_meta_aria": "Peer details",
|
||
"helper.created_lbl": "Created",
|
||
"helper.updated_lbl": "Updated",
|
||
"helper.email_title": "Email",
|
||
"helper.email_short_lbl": "Email",
|
||
"helper.dns_section_lbl": "DNS",
|
||
"helper.notes_inline_lbl": "Notes",
|
||
"helper.created_chip_title": "Created",
|
||
"helper.updated_chip_title": "Last modified",
|
||
"helper.badge_online": "Online",
|
||
"helper.badge_disconnected": "Disconnected",
|
||
"helper.badge_blocked": "No access",
|
||
"helper.switch_peer": "Enable / disable peer",
|
||
"helper.field_allocated": "Allocated IP",
|
||
"helper.field_dns": "DNS",
|
||
"helper.field_allowed": "Allowed IPs",
|
||
"helper.field_down": "Download",
|
||
"helper.field_up": "Upload",
|
||
"helper.field_keepalive": "Keepalive",
|
||
"helper.field_extra_allowed": "Extra allowed IPs",
|
||
"helper.field_subnets": "Subnet ranges",
|
||
"helper.field_endpoint": "Endpoint",
|
||
"helper.peer_pubkey": "Peer public key",
|
||
"helper.btn_qr": "Show QR",
|
||
"helper.btn_dl": "Download .conf",
|
||
"helper.btn_edit": "Edit",
|
||
"helper.btn_del": "Delete",
|
||
"login.status.unavailable": "Server status unavailable · %s · %d/UDP",
|
||
"login.status.no_wg_read": "Cannot read WireGuard · %s · %d/UDP",
|
||
"login.status.active": "Server active · %s · %d/UDP",
|
||
"login.status.inactive": "Interface inactive · %s · %d/UDP (config)",
|
||
"login.generic_error": "Error",
|
||
"login.passkey_begin_fail": "Could not start passkey login",
|
||
"login.passkey_invalid": "Invalid passkey",
|
||
"login.passkey_unavailable": "Passkey not available",
|
||
"login.forgot_unavailable_tip": "Not available in WireGuard UI",
|
||
"modal.kernel.close_btn": "Close",
|
||
"modal.kernel.goto_server": "Open Server",
|
||
"modal.new_client.title": "New WireGuard client",
|
||
"aria.close": "Close",
|
||
"dash.wg_warn_suffix": "Traffic KPI values may be incomplete.",
|
||
"dash.server_no_config": "No configuration loaded.",
|
||
"dash.quick_actions": "Quick actions",
|
||
"dash.export_configs": "Export configs",
|
||
"dash.restart_server": "Restart server",
|
||
"dash.change_server_key": "Rotate server keys",
|
||
"dash.view_logs": "View logs",
|
||
"dash.logs_tail_hint": "Optional logs require the environment variable <code>%s</code> pointing to a file readable by the process.",
|
||
"dash.modal.restart_title": "Restart WireGuard server",
|
||
"dash.modal.restart_body": "This restarts the WireGuard interface (<code>wg-quick down</code> and <code>wg-quick up</code>). Active tunnels may drop for a few seconds.",
|
||
"dash.modal.cancel": "Cancel",
|
||
"dash.modal.restart_confirm": "Restart now",
|
||
"dash.modal.key_title": "Rotate server keys",
|
||
"dash.modal.key_body": "A new WireGuard server key pair will be generated. Save/apply configuration afterwards to propagate changes to clients.",
|
||
"dash.modal.key_confirm": "Rotate keys",
|
||
"dash.toast_restart_ok": "WireGuard server restarted",
|
||
"dash.toast_restart_err": "Could not restart the WireGuard server",
|
||
"dash.toast_key_ok": "Server keys regenerated",
|
||
"dash.toast_key_err": "Could not regenerate server keys",
|
||
"dash.meta_sep": " of ",
|
||
"top.search_placeholder": "Search…",
|
||
"top.status.all": "All",
|
||
"top.status.enabled": "Enabled",
|
||
"top.status.disabled": "Disabled",
|
||
"top.status.connected": "Connected",
|
||
"top.status.disconnected": "Disconnected",
|
||
"js.pending_global_invalid": "Pending settings are invalid. Save again from Settings.",
|
||
"js.global_saved_ok": "Global settings saved successfully.",
|
||
"js.session_prefs_ok": "Session and appearance preferences applied.",
|
||
"js.could_not_apply_prefs": "Could not apply preferences.",
|
||
"js.client_created_success": "Created new client successfully.",
|
||
"js.apply_config_success": "Configuration applied successfully.",
|
||
"js.kernel_detail_fallback": "(no detail)",
|
||
"js.manual_kernel_synconf_off": "Automatic kernel reload is disabled (WGUI_WG_SYNCCONF_AFTER_APPLY=false or unset).",
|
||
"js.validator_name_required": "Please enter a name.",
|
||
"js.tags_placeholder": "Add more",
|
||
"wol.meta_title_tpl": "{{.}} · WireGuard",
|
||
"clients.email_modal_title": "Send email",
|
||
"clients.email_modal_send": "Send",
|
||
"clients.email_label": "Email address",
|
||
"about.page_title_fallback": "About",
|
||
"traffic.kpi_dl_total": "Total download (kernel)",
|
||
"traffic.kpi_ul_total": "Total upload (kernel)",
|
||
"traffic.kpi_all_peers_24h": "All peers · last 24h",
|
||
"traffic.kpi_rate_window_title": "Peak in ~60s window (4s sampling) · instant",
|
||
"traffic.kpi_peak_dl_today": "Peak download · today",
|
||
"traffic.kpi_peak_perspective": "Peer view · peak in rolling 24h windows (4s sampling)",
|
||
"traffic.kpi_updated_ago": "updated {s}s ago",
|
||
"traffic.kpi_wg_ifaces": "WG interfaces",
|
||
"traffic.bandwidth": "Bandwidth",
|
||
"traffic.range_24h_live": "last 24h (live estimate)",
|
||
"traffic.range_7d_live": "last 7 days (live estimate)",
|
||
"traffic.range_30d_live": "last 30 days (live estimate)",
|
||
"traffic.range_tabs_aria": "History range",
|
||
"traffic.chart_aria": "Bandwidth history",
|
||
"traffic.legend_dl_top": "Download (top)",
|
||
"traffic.legend_ul_bottom": "Upload (bottom)",
|
||
"traffic.peer_perspective_hint": "End-user view: download = server TX, upload = server RX.",
|
||
"traffic.table_intro": "Per-client usage for the selected range (24h · 7d · 30d).",
|
||
"traffic.th_client": "Client",
|
||
"traffic.th_ips": "Allocated IPs",
|
||
"traffic.th_dl": "Download",
|
||
"traffic.th_ul": "Upload",
|
||
"traffic.th_handshake": "Last handshake",
|
||
"traffic.peer_fallback": "peer",
|
||
"traffic.bar_title": "Client: {name} · Download: {dl} · Upload: {ul}",
|
||
"logs.disabled_warn_before": "Log monitoring is disabled. Enable it in",
|
||
"logs.disabled_warn_link": "Global settings",
|
||
"logs.disabled_warn_after": "(Logs option) to show the Logs tab in the menu and periodic updates.",
|
||
"logs.filter_all": "All",
|
||
"logs.export": "Export",
|
||
"logs.clear": "Clear",
|
||
"logs.live_badge": "Live",
|
||
"logs.live_paused": "Automatic refresh paused",
|
||
"logs.console_note": "Detected interface: %s. Unified console for systemctl, journalctl, and optional app log.",
|
||
"server.banner_query_err": " — Error querying WG",
|
||
"server.banner_active": " — Active and listening",
|
||
"server.banner_no_iface": " — Not present in kernel (not seen by wgctrl)",
|
||
"server.banner_port": "Port",
|
||
"server.banner_peers": "peers",
|
||
"server.banner_hs_fmt": "%d recent handshakes (<3 min)",
|
||
"server.banner_uptime": " · Host uptime:",
|
||
"server.tooltip_apply_dump": "Write wg.conf from the database (does not run wg-quick).",
|
||
"server.tooltip_admin_required": "Administrator required",
|
||
"server.quick_restart": "Restart",
|
||
"server.quick_down": "Stop",
|
||
"server.quick_up": "Start",
|
||
"server.quick_actions_note": "Stop / Start / Restart control the live WireGuard interface immediately. They do not save this page or use Apply config.",
|
||
"server.section_iface": "Network interface",
|
||
"server.lbl_ifname": "Interface name",
|
||
"server.lbl_ip_addr": "IP address",
|
||
"server.lbl_listen_port": "Listen port",
|
||
"server.lbl_mtu": "MTU",
|
||
"server.lbl_dns": "DNS",
|
||
"server.dns_micro": "Used in client configs and the “Global DNS” option. Save also updates global settings (MTU/DNS).",
|
||
"server.section_crypt": "Cryptographic keys",
|
||
"server.lbl_privkey": "Private key",
|
||
"server.lbl_pubkey": "Public key",
|
||
"server.pk_show": "Show key",
|
||
"server.pk_hide": "Hide key",
|
||
"server.regenerate": "Regenerate",
|
||
"server.section_post": "PostUp / PostDown",
|
||
"server.lbl_pre_down": "Pre-down (optional)",
|
||
"server.section_firewall": "Network and firewall options",
|
||
"server.opt_fwd_title": "IP forwarding (ip_forward)",
|
||
"server.opt_fwd_desc_admin": "Preference stored in the database; on Linux sysctl runs only if WGUI_ALLOW_SYSCTL_IP_FORWARD=true.",
|
||
"server.opt_fwd_readonly": "Read only.",
|
||
"server.opt_gdns_title": "Global DNS override",
|
||
"server.opt_gdns_body": "Force client DNS lines to use global DNS (independent of per-peer fields).",
|
||
"server.opt_persist_title": "Persist configuration",
|
||
"server.opt_persist_body_fmt": "Write %s.conf from the database.",
|
||
"server.opt_auto_title": "Auto-apply changes",
|
||
"server.opt_auto_body": "Same as “Persist”: writes the WG file and updates hashes (same as “Apply config”).",
|
||
"server.micro_footer": "If persistence and re-apply are off, only the database changes; use “Sync” above or “Apply config” afterwards.",
|
||
"server.btn_save_changes": "Save changes",
|
||
"server.modal_regen_title": "Regenerate server keys",
|
||
"server.modal_regen_body": "Are you sure? You must update all peers manually with the new server public key.",
|
||
"server.modal_regen_btn": "Regenerate",
|
||
"server.js_btn_save_apply": "Save and apply",
|
||
"server.js_tooltip_no_dirty": "No pending changes in the Server section",
|
||
"server.js_tooltip_dirty_apply": "Unsaved changes: you will be prompted to save before applying",
|
||
"server.js_tooltip_apply_file": "Apply saved changes to wg.conf",
|
||
"server.js_err_port_invalid": "Invalid port",
|
||
"server.js_err_port_range": "Port out of range",
|
||
"server.js_ok_updated": "Server updated",
|
||
"server.js_ok_applied_conf": "Configuration applied to wg.conf",
|
||
"server.js_err_generic": "Error",
|
||
"server.js_mtu_invalid": "MTU: enter a valid integer or leave empty to omit",
|
||
"server.js_mtu_range": "MTU: between 1280 and 9000, or empty to omit from .conf files",
|
||
"server.js_confirm_dirty_then_apply": "You have unsaved changes. Save them and then apply configuration to wg.conf?",
|
||
"server.js_confirm_saved_apply": "Changes saved. Apply configuration to wg.conf now?",
|
||
"server.js_confirm_apply_saved": "Apply saved configuration to wg.conf now?",
|
||
"server.js_tunnel_down_apply_note": "The tunnel is stopped: we only write wg.conf to disk; use Start (Iniciar) to bring WireGuard up.",
|
||
"server.js_confirm_quick_down": "Stop the WireGuard interface (wg-quick down) using the global Config File Path?",
|
||
"server.js_confirm_quick_up": "Bring up WireGuard (wg-quick up) with the file from global Config File Path?",
|
||
"server.js_confirm_quick_restart": "Restart the WireGuard interface now? (wg-quick down + wg-quick up)",
|
||
"server.js_ok_iface_down": "Interface stopped",
|
||
"server.js_ok_iface_up": "Interface started",
|
||
"server.js_ok_iface_restart": "Interface restarted",
|
||
"server.js_ok_keys_regen": "Keys regenerated",
|
||
"clients.modal_qr": "QR code",
|
||
"clients.modal_telegram_title": "Telegram configuration",
|
||
"clients.telegram_userid": "Telegram user ID",
|
||
"clients.modal_edit_client": "Edit client",
|
||
"clients.modal_disable": "Disable",
|
||
"clients.modal_remove": "Remove",
|
||
"clients.modal_apply_btn": "Apply",
|
||
"clients.sent_email_ok": "Email sent successfully",
|
||
"clients.sent_telegram_ok": "Config sent via Telegram successfully",
|
||
"clients.updated_ok": "Client updated successfully",
|
||
"clients.removed_ok": "Client removed successfully",
|
||
"clients.edit_title_fmt": "Edit client {name}",
|
||
"clients.scan_qr_fmt": "Scan QR code for {name}’s profile",
|
||
"clients.send_config_fmt": "Send config to client {name}",
|
||
"clients.about_disable_fmt": "You are about to disable client {name}",
|
||
"clients.about_remove_fmt": "You are about to remove client {name}",
|
||
"clients.validator_name": "Please enter a name",
|
||
"clients.validator_email": "Please enter an email",
|
||
"clients.validator_tg_req": "Please enter a Telegram user ID",
|
||
"clients.validator_tg_num": "Please enter a valid Telegram user ID",
|
||
"settings.card_head_wireguard": "Global WireGuard settings",
|
||
"clients.save_btn": "Save",
|
||
"server.lbl_post_up": "PostUp",
|
||
"server.lbl_post_down": "PostDown",
|
||
"settings.page_sub": "Global client defaults and WireGuard paths",
|
||
"profile.page_sub": "Current account profile",
|
||
"users.page_sub": "Accounts and Passkeys administration",
|
||
"page.clients_sub": "Peer and configuration management",
|
||
"page.dashboard_sub": "System overview",
|
||
"page.traffic_sub": "Bandwidth monitoring",
|
||
"page.logs_sub": "Live WireGuard and application logs",
|
||
"page.server_sub_fmt": "Configuration for %s",
|
||
"page.status_sub": "Peers from wgctrl (table detail)",
|
||
"page.about_sub": "Information and version",
|
||
"api.account_disabled": "Account disabled",
|
||
"api.password_updated_reauth": "Password updated. Please sign in again.",
|
||
"api.user_enabled": "User enabled",
|
||
"api.no_change": "No change",
|
||
"api.account_disabled_admin_reactive": "Your account was disabled. Sign in again once an administrator re-enables you.",
|
||
"api.user_disabled": "User disabled",
|
||
"api.disabled_no_valid_sessions": "User is disabled; no valid active sessions",
|
||
"api.session_revoked_reauth": "Session revoked. Please sign in again.",
|
||
"api.user_sessions_revoked": "All sessions for the user were closed",
|
||
"api.logs_monitoring_disabled": "Log monitoring is disabled in settings",
|
||
"api.saved_passkeys_cleared_failed": "Settings saved but stored passkeys could not be cleared",
|
||
"api.global_saved_passkeys_disabled_kernel": "Settings saved. Passkeys disabled and stored credentials removed. You can apply to the kernel in the same step.",
|
||
"api.passkey_removed_reauth": "Passkey removed. Please sign in again.",
|
||
"api.passkey_removed_sessions_revoked": "Passkey removed; user sessions revoked",
|
||
"api.need_another_active_admin": "There must be at least one other active administrator before disabling this user",
|
||
"settings.endpoint_hint": "Public IP or <strong>Dynamic DNS hostname</strong> as-is (not resolved or replaced by this server). Use <code>host:51820</code> to override listen port.",
|
||
"settings.dns_hint": "Inserted into generated client configs.",
|
||
"settings.mtu_hint": "Recommended range 1280–9000. Leave empty to omit.",
|
||
"settings.keepalive_hint": "Helps NATed peers maintain connectivity.",
|
||
"settings.config_path_example": "Example: <code>/etc/wireguard/wg0.conf</code>",
|
||
"settings.card_session": "Session and security",
|
||
"settings.session_timeout_label": "Session timeout (minutes)",
|
||
"settings.session_timeout_hint": "Use plain <strong>integer minutes only</strong> (not seconds). Range <strong>5–1440</strong>. Logout happens after <strong>inactivity</strong>: no authenticated requests for that interval. After saving, <strong>sign in again</strong> so your current cookie picks up the new limit.",
|
||
"settings.minutes_unit": "minutes",
|
||
"settings.session_example": "Example: 30 = expires after ~30 minutes without using the app.",
|
||
"settings.passkeys_hint": "Sign in with a device-backed key. Turning the switch off does nothing until you press <strong>Save changes</strong> at the bottom; stored Passkeys are then removed. Turning it back on requires registering again from <strong>Users</strong>.",
|
||
"settings.card_appearance": "Appearance",
|
||
"settings.lang_label": "Language",
|
||
"settings.theme_label": "Theme",
|
||
"settings.theme_dark": "Dark",
|
||
"settings.theme_light": "Light",
|
||
"settings.theme_auto": "Automatic (browser)",
|
||
"settings.logs_toggle_label": "Logs",
|
||
"settings.logs_hint": "Enable live monitoring: <strong>Logs</strong> tab, periodic refresh, and richer <strong>Dashboard</strong> metrics.",
|
||
"settings.save_footer": "Save changes",
|
||
"settings.btn_suggest": "Suggest",
|
||
"settings.endpoint_modal_title": "Endpoint suggestion",
|
||
"settings.endpoint_modal_intro": "Below is the list of public and local IP addresses.",
|
||
"settings.endpoint_modal_close": "Cancel",
|
||
"settings.endpoint_modal_use": "Use selected address",
|
||
"profile.section_account_title": "Your account",
|
||
"profile.section_account_sub": "Changes apply only to you. Updating your password closes the current session.",
|
||
"profile.lbl_display_name": "Display name",
|
||
"profile.lbl_username": "Username",
|
||
"profile.lbl_email": "Email",
|
||
"profile.lbl_new_password": "New password",
|
||
"profile.ph_display_name": "e.g. Jamie Smith",
|
||
"profile.ph_email": "you@example.com",
|
||
"profile.ph_password_keep": "Leave blank to keep current",
|
||
"profile.pass_show": "Show",
|
||
"profile.pass_hide": "Hide",
|
||
"profile.pass_prefix": "Strength:",
|
||
"profile.pass_none": "no new password",
|
||
"profile.pass_vweak": "very weak",
|
||
"profile.pass_weak": "weak",
|
||
"profile.pass_medium": "fair",
|
||
"profile.pass_strong": "strong",
|
||
"profile.pass_vstrong": "very strong",
|
||
"profile.passkeys_sub": "Register multiple credentials and rename them anytime.",
|
||
"profile.pk_name_ph": "Label (e.g. iPhone, MacBook, YubiKey)",
|
||
"profile.pk_add_btn": "Add passkey",
|
||
"users.stat_total_upper": "TOTAL USERS",
|
||
"users.stat_total_badge": "Registered",
|
||
"users.stat_admins_upper": "ADMINISTRATORS",
|
||
"users.stat_admins_badge": "Full access",
|
||
"users.stat_with_pk_upper": "WITH PASSKEYS",
|
||
"users.stat_with_pk_badge": "Strong auth",
|
||
"users.stat_no_pk_upper": "WITHOUT PASSKEYS",
|
||
"users.stat_no_pk_badge": "No passkeys",
|
||
"users.search_ph": "Search users…",
|
||
"users.btn_new": "New user",
|
||
"users.th_user": "USER",
|
||
"users.th_email": "EMAIL",
|
||
"users.th_role": "ROLE",
|
||
"users.th_state": "STATE",
|
||
"users.th_passkeys": "PASSKEYS",
|
||
"users.th_actions": "ACTIONS",
|
||
"users.modal_new_title": "New user",
|
||
"users.modal_edit_title": "Edit user",
|
||
"users.lbl_display_name": "Display name",
|
||
"users.ph_display_ex": "e.g. Jamie Smith",
|
||
"users.ph_username_ex": "e.g. jamie",
|
||
"users.lbl_username": "Username",
|
||
"users.lbl_email": "Email",
|
||
"users.lbl_initial_pw": "Initial password",
|
||
"users.ph_min_pw": "Minimum 8 characters",
|
||
"users.lbl_role": "Role",
|
||
"users.role_standard": "User",
|
||
"users.role_admin_option": "Administrator",
|
||
"users.btn_cancel": "Cancel",
|
||
"users.btn_create": "Create user",
|
||
"users.lbl_password": "Password",
|
||
"users.ph_pw_unchanged": "Leave blank to keep unchanged",
|
||
"users.edit_admin_checkbox": "Administrator",
|
||
"users.edit_admin_note": "Only applies when editing someone else",
|
||
"users.btn_save": "Save",
|
||
"users.del_title": "Delete user?",
|
||
"users.del_confirm_btn": "Delete",
|
||
"settings.val_mtu_digits": "MTU must be an integer",
|
||
"settings.val_mtu_range": "MTU must be between 1280 and 9000 (leave blank to omit)",
|
||
"settings.val_keepalive_digits": "Persistent Keepalive must be an integer",
|
||
"settings.val_conf_required": "WireGuard config file path is required",
|
||
"settings.val_session_digits": "Session timeout must be an integer",
|
||
"settings.val_session_range": "Session timeout must be between 5 and 1440 minutes",
|
||
"settings.toast_no_changes": "No pending changes to save",
|
||
"settings.toast_stage_local": "Saved locally on this device. Use «Apply config» (toolbar) to apply.",
|
||
"settings.placeholder_select_ip": "Select an address",
|
||
"profile.pk_empty_disabled": "Passkeys are disabled in global settings.",
|
||
"profile.pk_empty_none": "You have no passkeys registered yet.",
|
||
"profile.rename_tooltip": "Rename",
|
||
"profile.delete_pk_tooltip": "Delete passkey",
|
||
"profile.default_pk_name": "Passkey",
|
||
"profile.err_load_profile": "Could not load your profile",
|
||
"profile.err_load_pk": "Could not load Passkeys",
|
||
"profile.err_username_required": "Username is required",
|
||
"profile.ok_saved": "Profile updated",
|
||
"profile.err_save": "Could not save",
|
||
"profile.err_pk_disabled_global": "Passkeys are disabled in global settings",
|
||
"profile.err_pk_browser": "Passkeys not supported in this browser",
|
||
"profile.err_pk_need_name": "Enter a name for this passkey",
|
||
"profile.err_pk_begin": "Could not start registration",
|
||
"profile.err_pk_finish": "Registration failed",
|
||
"profile.ok_pk_registered": "Passkey registered",
|
||
"profile.confirm_remove_pk": "Delete this Passkey? You will be logged out.",
|
||
"profile.warn_pk_removed": "Passkey removed",
|
||
"profile.err_pk_remove": "Could not remove",
|
||
"profile.prompt_pk_name": "Passkey name",
|
||
"profile.ok_name_updated": "Name updated",
|
||
"profile.err_rename": "Could not rename",
|
||
"users.pk_suspended": "Account suspended. Re-enable to manage Passkeys.",
|
||
"users.pk_disabled_global": "Passkeys disabled under Global Settings (Passkeys toggle).",
|
||
"users.pk_none_row": "No Passkeys registered",
|
||
"users.role_admin_badge": "Admin",
|
||
"users.role_user_badge": "User",
|
||
"users.state_active": "Active",
|
||
"users.state_suspended": "Suspended",
|
||
"users.btn_demote_admin": "Revoke admin",
|
||
"users.btn_promote_admin": "Make admin",
|
||
"users.account_yours": "Your account",
|
||
"users.btn_revoke": "Revoke",
|
||
"users.btn_revoke_title": "Clear all persisted sessions for this user",
|
||
"users.btn_suspend": "Suspend",
|
||
"users.btn_activate": "Activate",
|
||
"users.btn_suspend_title_block": "Block sign-in until reactivated",
|
||
"users.btn_suspend_title_allow": "Allow sign-in",
|
||
"users.btn_edit": "Edit",
|
||
"users.btn_edit_title": "Edit user",
|
||
"users.passkeys_for": "Passkeys · ",
|
||
"users.pk_placeholder_short": "Label (e.g. MacBook, YubiKey)",
|
||
"users.pk_add_inline": "Add passkey",
|
||
"users.empty_search": "No users or nothing matches filters.",
|
||
"users.err_load_users": "Could not load users",
|
||
"users.key_single": "key",
|
||
"users.key_plural": "keys",
|
||
"users.rename_tooltip": "Rename",
|
||
"users.delete_pk_tooltip": "Delete passkey",
|
||
"users.err_new_user_pass": "Username and password are required",
|
||
"users.ok_user_created": "User created",
|
||
"users.err_generic_short": "Error",
|
||
"users.err_username_req": "Username is required",
|
||
"users.ok_user_updated": "User updated",
|
||
"users.del_body_fmt": "«{display}» (@{username}) will be deleted along with all Passkeys.",
|
||
"users.ok_user_deleted": "User deleted",
|
||
"users.self_promote_hint": "Ask another administrator to change your admin role.",
|
||
"users.ok_promoted_admin": "User promoted to administrator",
|
||
"users.ok_demoted_admin": "Administrator role removed",
|
||
"users.confirm_revoke_fmt": "Revoke every stored session for «@{username}»? They must sign in again.",
|
||
"users.ok_sessions_revoked": "Sessions revoked",
|
||
"users.confirm_suspend_fmt": "Suspend «@{username}»? Sign-in stays blocked until reactivated.",
|
||
"users.ok_state_updated": "State updated",
|
||
"users.err_pk_need_name_inline": "Enter a name for this passkey",
|
||
"users.err_pk_disabled": "Passkeys disabled in global settings",
|
||
"users.err_pk_browser_inline": "Passkeys unsupported in this browser",
|
||
"users.ok_pk_registered": "Passkey registered",
|
||
"users.confirm_del_pk_other": "Remove this Passkey? That user's active sessions end.",
|
||
"users.ok_rename_pk": "Label updated",
|
||
"settings.lang_opt_es": "Spanish",
|
||
"settings.lang_opt_en": "English",
|
||
"settings.lang_reload_hint": "Reload the page after clicking «Apply config» in the top bar for the selected language to take effect.",
|
||
"settings.dns_tags_add": "Add",
|
||
"settings.passkeys_label": "Passkeys",
|
||
"profile.pk_section_title": "Passkeys"
|
||
} |