510 lines
29 KiB
JSON
510 lines
29 KiB
JSON
{
|
||
"meta.brand": "WireGuard UI",
|
||
"nav.section.main": "Principal",
|
||
"nav.section.monitor": "Monitoreo",
|
||
"nav.section.admin": "Administración",
|
||
"nav.section.other": "Otros",
|
||
"nav.dashboard": "Dashboard",
|
||
"nav.clients": "Clientes",
|
||
"nav.server": "Servidor",
|
||
"nav.traffic": "Tráfico",
|
||
"nav.logs": "Logs",
|
||
"nav.settings": "Configuración",
|
||
"nav.users": "Usuarios",
|
||
"nav.wol": "WoL",
|
||
"nav.about": "About",
|
||
"nav.badge_tooltip": "Cambios sin aplicar",
|
||
"nav.profile": "Perfil",
|
||
"nav.logout_sidebar": "Cerrar sesión",
|
||
"nav.mobile_user_aria": "Acciones de usuario",
|
||
"nav.sign_out_mobile": "Salir",
|
||
"role.admin": "Administrador",
|
||
"role.user": "Usuario",
|
||
"role.guest": "Invitado",
|
||
"top.reload": "Recargar vista",
|
||
"top.sync": "Sync",
|
||
"top.new_client": "Nuevo cliente",
|
||
"top.apply_config": "Aplicar config",
|
||
"new_client.tooltip_allowed": "Lista de rutas enviadas al servidor; se incluyen en AllowedIPs del cliente.",
|
||
"new_client.tooltip_extra": "Lista incluida en AllowedIPs del peer en wg.conf del servidor.",
|
||
"modal.apply.title": "Aplicar configuración",
|
||
"modal.apply.body1": "Esto volcará los clientes/peers actuales a <code>wg.conf</code> y actualizará el kernel. Si modificaste la tarjeta <strong>Configuración global WireGuard</strong>, puede reiniciarse la interfaz con <code>wg-quick</code> (si está permitido).",
|
||
"modal.apply.body2": "Los cambios en <strong>Sesión/Apariencia</strong> se aplican sin este paso cuando no hay otras modificaciones pendientes.",
|
||
"modal.apply.cancel": "Cancelar",
|
||
"modal.apply.confirm": "Aplicar",
|
||
"modal.kernel.title": "Config guardada, recarga pendiente",
|
||
"modal.kernel.p1": "Los cambios se escribieron en <code>wg.conf</code>, pero no se pudieron aplicar al kernel automáticamente.",
|
||
"modal.kernel.p2": "Puedes ir a <strong>Servidor</strong> para iniciar o reiniciar manualmente la interfaz WireGuard.",
|
||
"modal.kernel.details": "Ver detalle técnico",
|
||
"modal.kernel.none": "(sin detalle)",
|
||
"js.apply_ok": "Configuración aplicada correctamente.",
|
||
"js.apply_kernel_hint": "Configuración guardada en disco. Para aplicar al kernel, habilita WGUI_WG_SYNCCONF_AFTER_APPLY=true o reinicia o inicia manualmente desde Servidor.",
|
||
"js.global_post_fail": "No se pudo aplicar configuración global",
|
||
"clients.search_ph": "Buscar cliente…",
|
||
"clients.enabled": "Habilitados",
|
||
"clients.disabled": "Deshabilitados",
|
||
"clients.new_btn": "Nuevo cliente",
|
||
"meta.title_clients": "Clientes · WireGuard",
|
||
"page.clients": "Clientes",
|
||
"dash.wg_warn": "WireGuard UI no pudo consultar estadísticas locales:",
|
||
"dash.kpi.active": "Activos",
|
||
"dash.kpi.active_sub": "Peers habilitados en configuración",
|
||
"dash.kpi.down_lbl": "Descarga",
|
||
"dash.kpi.down_sub": "TX acumulado (kernel, perspectiva peer)",
|
||
"dash.kpi.up_lbl": "Subida",
|
||
"dash.kpi.up_sub": "RX acumulado (kernel, perspectiva peer)",
|
||
"dash.kpi.sessions": "Sesiones activas",
|
||
"dash.kpi.sessions_sub": "Peers habilitados con handshake reciente (≈3 min)",
|
||
"dash.peers_title": "Peers recientes",
|
||
"dash.peers_badge": "de",
|
||
"dash.peers_of": "clientes",
|
||
"dash.peer_filter_ph": "Buscar peer…",
|
||
"dash.no_peers": "No hay peers en la base de datos.",
|
||
"dash.peer_online": "Online",
|
||
"dash.peer_offline": "Offline",
|
||
"dash.peer_disabled": "Deshabilitado",
|
||
"dash.peer_usage": "(24h)",
|
||
"dash.toggle_peer": "Habilitar / deshabilitar peer",
|
||
"dash.srv_title": "Servidor WireGuard",
|
||
"dash.srv_active": "● Activo",
|
||
"dash.srv_inactive": "Inactivo",
|
||
"dash.srv_iface_port": "Interfaz / puerto",
|
||
"dash.srv_pubkey": "Clave pública (truncate)",
|
||
"meta.title_dashboard": "Dashboard · WireGuard",
|
||
"page.dashboard": "Dashboard",
|
||
"login.title_page": "WireGuard UI — Login",
|
||
"login.subtitle": "Panel de administración",
|
||
"login.user": "Usuario",
|
||
"login.pass": "Contraseña",
|
||
"login.remember": "Mantener sesión",
|
||
"login.forgot": "¿Olvidaste la contraseña?",
|
||
"login.submit": "Iniciar sesión",
|
||
"login.submit_checking": "Verificando…",
|
||
"login.secure": "Acceso seguro vía HTTPS",
|
||
"login.encrypted": "Sesión cifrada",
|
||
"login.show_pass": "Mostrar",
|
||
"login.passkey": "Entrar con Passkey",
|
||
"login.passkey_hint": "Opcional: deja el usuario vacío para elegir la cuenta en el dispositivo.",
|
||
"login.success_title": "Acceso concedido",
|
||
"login.success_sub": "Redirigiendo…",
|
||
"profile.title": "Perfil · WireGuard",
|
||
"profile.page": "Mi cuenta",
|
||
"users.title": "Usuarios · WireGuard",
|
||
"users.page": "Usuarios",
|
||
"settings.title": "Configuración global · WireGuard",
|
||
"settings.page": "Configuración global",
|
||
"server.title": "Servidor · WireGuard",
|
||
"server.page": "Servidor",
|
||
"traffic.title": "Tráfico · WireGuard",
|
||
"traffic.page": "Tráfico",
|
||
"logs.title": "Logs · WireGuard",
|
||
"logs.page": "Logs del sistema",
|
||
"status.title": "Estado (tabla) · WireGuard",
|
||
"status.page": "Estado (tabla)",
|
||
"wol.title": "Wake-on-LAN · WireGuard",
|
||
"wol.page": "Wake-on-LAN",
|
||
"about.title": "About · WireGuard",
|
||
"about.page": "About",
|
||
"helper.client_disabled": "Cliente deshabilitado",
|
||
"helper.dns_no_server": "No usa servidor",
|
||
"helper.dns_empty_list": "DNS servidor (lista vacía)",
|
||
"helper.dns_active": "DNS del servidor: activo",
|
||
"helper.dns_inactive": "DNS del servidor: desactivado",
|
||
"helper.updated": "Última actualización:",
|
||
"helper.peer_meta_aria": "Datos del peer",
|
||
"helper.created_lbl": "Creado",
|
||
"helper.updated_lbl": "Actualizado",
|
||
"helper.email_title": "Correo",
|
||
"helper.email_short_lbl": "Correo",
|
||
"helper.dns_section_lbl": "DNS",
|
||
"helper.notes_inline_lbl": "Notas",
|
||
"helper.created_chip_title": "Fecha de creación",
|
||
"helper.updated_chip_title": "Última modificación",
|
||
"helper.badge_online": "En línea",
|
||
"helper.badge_disconnected": "Desconectado",
|
||
"helper.badge_blocked": "Sin acceso",
|
||
"helper.switch_peer": "Habilitar / deshabilitar peer",
|
||
"helper.field_allocated": "IP asignada",
|
||
"helper.field_dns": "DNS",
|
||
"helper.field_allowed": "Allowed IPs",
|
||
"helper.field_down": "Descarga",
|
||
"helper.field_up": "Subida",
|
||
"helper.field_keepalive": "Keepalive",
|
||
"helper.field_extra_allowed": "Extra allowed IPs",
|
||
"helper.field_subnets": "Subnet ranges",
|
||
"helper.field_endpoint": "Endpoint",
|
||
"helper.peer_pubkey": "Clave pública del peer",
|
||
"helper.btn_qr": "Ver QR",
|
||
"helper.btn_dl": "Descargar .conf",
|
||
"helper.btn_edit": "Editar",
|
||
"helper.btn_del": "Eliminar",
|
||
"login.status.unavailable": "Estado del servidor no disponible · %s · %d/UDP",
|
||
"login.status.no_wg_read": "Sin lectura de WireGuard · %s · %d/UDP",
|
||
"login.status.active": "Servidor activo · %s · %d/UDP",
|
||
"login.status.inactive": "Interfaz inactiva · %s · %d/UDP (config)",
|
||
"login.generic_error": "Error",
|
||
"login.passkey_begin_fail": "No se pudo iniciar passkey",
|
||
"login.passkey_invalid": "Passkey inválida",
|
||
"login.passkey_unavailable": "Passkey no disponible",
|
||
"login.forgot_unavailable_tip": "No disponible en WireGuard UI",
|
||
"modal.kernel.close_btn": "Cerrar",
|
||
"modal.kernel.goto_server": "Ir a Servidor",
|
||
"modal.new_client.title": "Nuevo cliente WireGuard",
|
||
"aria.close": "Cerrar",
|
||
"dash.wg_warn_suffix": "Los KPI de tráfico pueden estar incompletos.",
|
||
"dash.server_no_config": "Sin configuración cargada.",
|
||
"dash.quick_actions": "Acciones rápidas",
|
||
"dash.export_configs": "Exportar configs",
|
||
"dash.restart_server": "Reiniciar servidor",
|
||
"dash.change_server_key": "Cambiar clave",
|
||
"dash.view_logs": "Ver logs",
|
||
"dash.logs_tail_hint": "Los logs opcionales requieren la variable de entorno <code>%s</code> apuntando a un archivo legible por el proceso.",
|
||
"dash.modal.restart_title": "Reiniciar servidor WireGuard",
|
||
"dash.modal.restart_body": "Esta acción reiniciará la interfaz WireGuard (<code>wg-quick down</code> y <code>wg-quick up</code>). Puede interrumpir conexiones activas por unos segundos.",
|
||
"dash.modal.cancel": "Cancelar",
|
||
"dash.modal.restart_confirm": "Aceptar y reiniciar",
|
||
"dash.modal.key_title": "Cambiar clave del servidor",
|
||
"dash.modal.key_body": "Se regenerará el par de claves del servidor WireGuard. Después deberás guardar/aplicar configuración para propagar cambios a clientes.",
|
||
"dash.modal.key_confirm": "Aceptar y cambiar",
|
||
"dash.toast_restart_ok": "Servidor WireGuard reiniciado",
|
||
"dash.toast_restart_err": "No se pudo reiniciar el servidor WireGuard",
|
||
"dash.toast_key_ok": "Claves del servidor regeneradas",
|
||
"dash.toast_key_err": "No se pudieron regenerar las claves",
|
||
"dash.meta_sep": " de ",
|
||
"top.search_placeholder": "Buscar…",
|
||
"top.status.all": "Todos",
|
||
"top.status.enabled": "Habilitados",
|
||
"top.status.disabled": "Deshabilitados",
|
||
"top.status.connected": "Conectados",
|
||
"top.status.disconnected": "Desconectados",
|
||
"js.pending_global_invalid": "Los cambios pendientes en Configuración son inválidos. Vuelve a guardar desde esa pestaña.",
|
||
"js.global_saved_ok": "Configuración global aplicada correctamente",
|
||
"js.session_prefs_ok": "Preferencias de sesión y apariencia aplicadas",
|
||
"js.could_not_apply_prefs": "No se pudieron aplicar los ajustes",
|
||
"js.client_created_success": "Cliente creado correctamente",
|
||
"js.apply_config_success": "Configuración aplicada correctamente",
|
||
"js.kernel_detail_fallback": "(sin detalle)",
|
||
"js.manual_kernel_synconf_off": "La recarga automática de kernel está desactivada (WGUI_WG_SYNCCONF_AFTER_APPLY=false/no definido).",
|
||
"js.validator_name_required": "Introduce un nombre",
|
||
"js.tags_placeholder": "Añadir",
|
||
"wol.meta_title_tpl": "{{.}} · WireGuard",
|
||
"clients.email_modal_title": "Enviar correo",
|
||
"clients.email_modal_send": "Enviar",
|
||
"clients.email_label": "Dirección de correo",
|
||
"about.page_title_fallback": "Acerca de",
|
||
"traffic.kpi_dl_total": "Descarga total (kernel)",
|
||
"traffic.kpi_ul_total": "Subida total (kernel)",
|
||
"traffic.kpi_all_peers_24h": "Todos los peers · últimas 24h",
|
||
"traffic.kpi_rate_window_title": "Máximo en ventana ~60s (muestreo 4s) · instantáneo",
|
||
"traffic.kpi_peak_dl_today": "Pico descarga · hoy",
|
||
"traffic.kpi_peak_perspective": "Perspectiva peer · máximo en ventanas 24h (muestreo 4s)",
|
||
"traffic.kpi_updated_ago": "actualizado hace {s}s",
|
||
"traffic.kpi_wg_ifaces": "Interfaces WG",
|
||
"traffic.bandwidth": "Ancho de banda",
|
||
"traffic.range_24h_live": "últimas 24h (estimado en vivo)",
|
||
"traffic.range_7d_live": "últimos 7 días (estimado en vivo)",
|
||
"traffic.range_30d_live": "últimos 30 días (estimado en vivo)",
|
||
"traffic.range_tabs_aria": "Rango histórico",
|
||
"traffic.chart_aria": "Historial ancho de banda",
|
||
"traffic.legend_dl_top": "Descarga (arriba)",
|
||
"traffic.legend_ul_bottom": "Subida (abajo)",
|
||
"traffic.peer_perspective_hint": "Perspectiva de peer/usuario final: descarga=TX del servidor, subida=RX del servidor.",
|
||
"traffic.table_intro": "Consumo por cliente según filtro seleccionado (24h · 7d · 30d).",
|
||
"traffic.th_client": "Cliente",
|
||
"traffic.th_ips": "IP asignadas",
|
||
"traffic.th_dl": "Descarga",
|
||
"traffic.th_ul": "Subida",
|
||
"traffic.th_handshake": "Último handshake",
|
||
"traffic.peer_fallback": "peer",
|
||
"traffic.bar_title": "Cliente: {name} · Descarga: {dl} · Subida: {ul}",
|
||
"logs.disabled_warn_before": "El monitoreo de logs está desactivado. Actívalo en",
|
||
"logs.disabled_warn_link": "Configuración global",
|
||
"logs.disabled_warn_after": "(opción Logs) para mostrar la pestaña Logs en el menú y la actualización periódica.",
|
||
"logs.filter_all": "Todos",
|
||
"logs.export": "Exportar",
|
||
"logs.clear": "Limpiar",
|
||
"logs.live_badge": "En vivo",
|
||
"logs.live_paused": "Sin actualización automática",
|
||
"logs.console_note": "Interfaz detectada: %s. Consola unificada de systemctl, journalctl y log opcional de app.",
|
||
"server.banner_query_err": "— Error al consultar WG",
|
||
"server.banner_active": "— Activo y escuchando",
|
||
"server.banner_no_iface": "— Sin interfaz en el kernel (no detectada por wgctrl)",
|
||
"server.banner_port": "Puerto",
|
||
"server.banner_peers": "peers",
|
||
"server.banner_hs_fmt": "%d handshakes recientes (<3 min)",
|
||
"server.banner_uptime": " · Uptime equipo:",
|
||
"server.tooltip_apply_dump": "Vuelca wg.conf desde la base de datos (no ejecuta wg-quick).",
|
||
"server.tooltip_admin_required": "Administrador requerido",
|
||
"server.quick_restart": "Reiniciar",
|
||
"server.quick_down": "Detener",
|
||
"server.quick_up": "Iniciar",
|
||
"server.quick_actions_note": "Detener, Iniciar y Reiniciar actúan al momento sobre la interfaz WireGuard en vivo. No sustituyen «Guardar cambios» ni «Aplicar config».",
|
||
"server.section_iface": "Interfaz de red",
|
||
"server.lbl_ifname": "Nombre de interfaz",
|
||
"server.lbl_ip_addr": "Dirección IP",
|
||
"server.lbl_listen_port": "Puerto de escucha",
|
||
"server.lbl_mtu": "MTU",
|
||
"server.lbl_dns": "DNS",
|
||
"server.dns_micro": "Se usa en cliente y en opción “Global DNS”. Guardar también actualiza configuración global (MTU/DNS).",
|
||
"server.section_crypt": "Claves criptográficas",
|
||
"server.lbl_privkey": "Clave privada",
|
||
"server.lbl_pubkey": "Clave pública",
|
||
"server.pk_show": "Mostrar clave",
|
||
"server.pk_hide": "Ocultar clave",
|
||
"server.regenerate": "Regenerar",
|
||
"server.section_post": "PostUp / PostDown",
|
||
"server.lbl_pre_down": "Pre-down (opcional)",
|
||
"server.section_firewall": "Opciones de red y firewall",
|
||
"server.opt_fwd_title": "Reenvío IP (ip_forward)",
|
||
"server.opt_fwd_desc_admin": "Preferencia guardada en la base; en Linux ejecuta sysctl solo si WGUI_ALLOW_SYSCTL_IP_FORWARD=true.",
|
||
"server.opt_fwd_readonly": "Solo lectura.",
|
||
"server.opt_gdns_title": "Global DNS override",
|
||
"server.opt_gdns_body": "Forzar línea DNS de los bloques cliente con los DNS globales (independiente del campo por peer).",
|
||
"server.opt_persist_title": "Persistir configuración",
|
||
"server.opt_persist_body_fmt": "Escribir %s.conf desde la base de datos.",
|
||
"server.opt_auto_title": "Auto-aplicar cambios",
|
||
"server.opt_auto_body": "Mismo paso que “Persistir”: vuelca el archivo WG y actualiza hashes (equivalente a “Aplicar config”).",
|
||
"server.micro_footer": "Si tienes persistencia y reaplicación desactivadas, sólo cambia la base; usa “Sync” arriba o “Aplicar config” después.",
|
||
"server.btn_save_changes": "Guardar cambios",
|
||
"server.modal_regen_title": "Regenerar claves del servidor",
|
||
"server.modal_regen_body": "¿Seguro? Habrá que actualizar manualmente todos los peers con la nueva clave pública del servidor.",
|
||
"server.modal_regen_btn": "Regenerar",
|
||
"server.js_btn_save_apply": "Guardar y aplicar",
|
||
"server.js_tooltip_no_dirty": "Sin cambios pendientes en la sección Servidor",
|
||
"server.js_tooltip_dirty_apply": "Hay cambios sin guardar: se solicitará guardar antes de aplicar",
|
||
"server.js_tooltip_apply_file": "Aplicar cambios guardados al archivo wg.conf",
|
||
"server.js_err_port_invalid": "Puerto inválido",
|
||
"server.js_err_port_range": "Puerto fuera de rango",
|
||
"server.js_ok_updated": "Servidor actualizado",
|
||
"server.js_ok_applied_conf": "Configuración aplicada a wg.conf",
|
||
"server.js_err_generic": "Error",
|
||
"server.js_mtu_invalid": "MTU: número entero válido o vacío para omitirla",
|
||
"server.js_mtu_range": "MTU: entre 1280 y 9000, o vacío para omitir en los .conf",
|
||
"server.js_confirm_dirty_then_apply": "Hay cambios sin guardar. ¿Quieres guardarlos y luego aplicar configuración a wg.conf?",
|
||
"server.js_confirm_saved_apply": "Cambios guardados. ¿Aplicar ahora configuración a wg.conf?",
|
||
"server.js_confirm_apply_saved": "¿Aplicar ahora configuración guardada a wg.conf?",
|
||
"server.js_tunnel_down_apply_note": "El túnel está parado: solo escribimos wg.conf en disco; no iniciará hasta que pulses «Iniciar».",
|
||
"server.js_confirm_quick_down": "¿Detener la interfaz WireGuard (wg-quick down) usando la ruta de Config File Path global?",
|
||
"server.js_confirm_quick_up": "¿Levantar la interfaz WireGuard (wg-quick up) con el archivo configurado en Config File Path global?",
|
||
"server.js_confirm_quick_restart": "¿Reiniciar interfaz WireGuard ahora? (wg-quick down + wg-quick up)",
|
||
"server.js_ok_iface_down": "Interfaz detenida",
|
||
"server.js_ok_iface_up": "Interfaz iniciada",
|
||
"server.js_ok_iface_restart": "Interfaz reiniciada",
|
||
"server.js_ok_keys_regen": "Claves regeneradas",
|
||
"clients.modal_qr": "Código QR",
|
||
"clients.modal_telegram_title": "Configuración de Telegram",
|
||
"clients.telegram_userid": "ID de usuario Telegram",
|
||
"clients.modal_edit_client": "Editar cliente",
|
||
"clients.modal_disable": "Desactivar",
|
||
"clients.modal_remove": "Eliminar",
|
||
"clients.modal_apply_btn": "Aplicar",
|
||
"clients.sent_email_ok": "Correo enviado correctamente",
|
||
"clients.sent_telegram_ok": "Config enviada por Telegram correctamente",
|
||
"clients.updated_ok": "Cliente actualizado correctamente",
|
||
"clients.removed_ok": "Cliente eliminado correctamente",
|
||
"clients.edit_title_fmt": "Editar cliente {name}",
|
||
"clients.scan_qr_fmt": "Escanee el QR para el perfil de {name}",
|
||
"clients.send_config_fmt": "Enviar config a cliente {name}",
|
||
"clients.about_disable_fmt": "Va a desactivar el cliente {name}",
|
||
"clients.about_remove_fmt": "Va a eliminar el cliente {name}",
|
||
"clients.validator_name": "Introduce un nombre",
|
||
"clients.validator_email": "Introduce un correo",
|
||
"clients.validator_tg_req": "Introduce un userid de Telegram",
|
||
"clients.validator_tg_num": "Introduce un userid de Telegram válido",
|
||
"settings.card_head_wireguard": "Configuración global WireGuard",
|
||
"clients.save_btn": "Guardar",
|
||
"server.lbl_post_up": "PostUp",
|
||
"server.lbl_post_down": "PostDown",
|
||
"settings.page_sub": "Ajustes globales de cliente y archivos",
|
||
"profile.page_sub": "Perfil del usuario actual",
|
||
"users.page_sub": "Gestión de accesos y passkeys",
|
||
"page.clients_sub": "Gestión de peers y configuraciones",
|
||
"page.dashboard_sub": "Resumen del sistema",
|
||
"page.traffic_sub": "Monitoreo de ancho de banda",
|
||
"page.logs_sub": "Registros en tiempo real de WireGuard / aplicación",
|
||
"page.server_sub_fmt": "Configuración de %s",
|
||
"page.status_sub": "Peers desde wgctrl (detalle tabla)",
|
||
"page.about_sub": "Información y versión",
|
||
"api.account_disabled": "Cuenta deshabilitada",
|
||
"api.password_updated_reauth": "Contraseña actualizada. Vuelve a iniciar sesión.",
|
||
"api.user_enabled": "Usuario habilitado",
|
||
"api.no_change": "Sin cambios",
|
||
"api.account_disabled_admin_reactive": "Tu cuenta fue deshabilitada. Vuelve a iniciar sesión cuando un administrador te reactive.",
|
||
"api.user_disabled": "Usuario deshabilitado",
|
||
"api.disabled_no_valid_sessions": "El usuario está deshabilitado; no tiene sesiones activas válidas",
|
||
"api.session_revoked_reauth": "Sesión revocada. Vuelve a iniciar sesión.",
|
||
"api.user_sessions_revoked": "Sesiones del usuario cerradas",
|
||
"api.logs_monitoring_disabled": "Monitoreo de logs desactivado en configuración",
|
||
"api.saved_passkeys_cleared_failed": "Ajustes guardados pero no se pudieron borrar las passkeys almacenadas",
|
||
"api.global_saved_passkeys_disabled_kernel": "Configuración guardada. Passkeys desactivadas y credenciales eliminadas. Puedes aplicar al kernel en el mismo paso.",
|
||
"api.passkey_removed_reauth": "Passkey eliminada. Vuelve a iniciar sesión.",
|
||
"api.passkey_removed_sessions_revoked": "Passkey eliminada; sesiones del usuario revocadas",
|
||
"api.need_another_active_admin": "Debe haber al menos otro administrador activo antes de deshabilitar a este usuario",
|
||
"settings.endpoint_hint": "IP pública o <strong>nombre Dinámico DNS / No-IP</strong> tal cual (no se sustituye por IP ni se consulta desde el servidor). Opcionalmente <code>host:51820</code> para puerto distinto al de escucha.",
|
||
"settings.dns_hint": "Se insertan en la configuración de cliente.",
|
||
"settings.mtu_hint": "Rango recomendado: 1280-9000. Vacío para omitir.",
|
||
"settings.keepalive_hint": "Mantiene conectividad en peers detrás de NAT.",
|
||
"settings.config_path_example": "Ejemplo: <code>/etc/wireguard/wg0.conf</code>",
|
||
"settings.card_session": "Sesión y seguridad",
|
||
"settings.session_timeout_label": "Tiempo de sesión (minutos)",
|
||
"settings.session_timeout_hint": "Usa solo <strong>números enteros en minutos</strong> (no segundos). Rango <strong>5–1440</strong>. Cierra sesión por <strong>inactividad</strong>: sin peticiones autenticadas durante ese tiempo. Tras aplicar estos ajustes, <strong>vuelve a iniciar sesión</strong> para que el nuevo límite afecte tu cookie actual.",
|
||
"settings.minutes_unit": "minutos",
|
||
"settings.session_example": "Ejemplo: 30 = caduca tras ~30 min sin usar la aplicación.",
|
||
"settings.passkeys_hint": "Iniciar sesión con llave segura del dispositivo. Desmarcar el interruptor no borra nada hasta que pulsas <strong>Guardar cambios</strong> abajo del todo; en ese momento se eliminan las passkeys guardadas. Al volver a activarlas, hay que registrarlas de nuevo desde <strong>Usuarios</strong>.",
|
||
"settings.card_appearance": "Apariencia",
|
||
"settings.lang_label": "Idioma",
|
||
"settings.theme_label": "Tema",
|
||
"settings.theme_dark": "Oscuro",
|
||
"settings.theme_light": "Claro",
|
||
"settings.theme_auto": "Automático (navegador)",
|
||
"settings.logs_toggle_label": "Logs",
|
||
"settings.logs_hint": "Activa el monitoreo en vivo: pestaña <strong>Logs</strong> en el menú, actualización periódica de registros y refresco de métricas en el <strong>Dashboard</strong>.",
|
||
"settings.save_footer": "Guardar cambios",
|
||
"settings.btn_suggest": "Suggest",
|
||
"settings.endpoint_modal_title": "Sugerencia de endpoint",
|
||
"settings.endpoint_modal_intro": "Lista de IPs públicas y locales para revisar.",
|
||
"settings.endpoint_modal_close": "Cerrar",
|
||
"settings.endpoint_modal_use": "Usar dirección seleccionada",
|
||
"profile.section_account_title": "Datos de tu cuenta",
|
||
"profile.section_account_sub": "Solo modifica tu propio usuario. Si cambias contraseña, se cerrará la sesión.",
|
||
"profile.lbl_display_name": "Nombre para mostrar",
|
||
"profile.lbl_username": "Nombre de usuario",
|
||
"profile.lbl_email": "Correo electrónico",
|
||
"profile.lbl_new_password": "Nueva contraseña",
|
||
"profile.ph_display_name": "Ej: Mario López",
|
||
"profile.ph_email": "usuario@ejemplo.com",
|
||
"profile.ph_password_keep": "Vacío para mantener la actual",
|
||
"profile.pass_show": "Mostrar",
|
||
"profile.pass_hide": "Ocultar",
|
||
"profile.pass_prefix": "Fortaleza:",
|
||
"profile.pass_none": "sin contraseña nueva",
|
||
"profile.pass_vweak": "muy débil",
|
||
"profile.pass_weak": "débil",
|
||
"profile.pass_medium": "media",
|
||
"profile.pass_strong": "fuerte",
|
||
"profile.pass_vstrong": "muy fuerte",
|
||
"profile.passkeys_sub": "Puedes registrar varias llaves y administrar sus nombres.",
|
||
"profile.pk_name_ph": "Nombre (ej: iPhone, MacBook, YubiKey)",
|
||
"profile.pk_add_btn": "Agregar passkey",
|
||
"users.stat_total_upper": "TOTAL USUARIOS",
|
||
"users.stat_total_badge": "Registrados",
|
||
"users.stat_admins_upper": "ADMINISTRADORES",
|
||
"users.stat_admins_badge": "Acceso total",
|
||
"users.stat_with_pk_upper": "CON PASSKEYS",
|
||
"users.stat_with_pk_badge": "Auth. fuerte",
|
||
"users.stat_no_pk_upper": "SIN PASSKEYS",
|
||
"users.stat_no_pk_badge": "Sin passkey reg.",
|
||
"users.search_ph": "Buscar usuario…",
|
||
"users.btn_new": "Nuevo usuario",
|
||
"users.th_user": "USUARIO",
|
||
"users.th_email": "CORREO",
|
||
"users.th_role": "ROL",
|
||
"users.th_state": "ESTADO",
|
||
"users.th_passkeys": "PASSKEYS",
|
||
"users.th_actions": "ACCIONES",
|
||
"users.modal_new_title": "Nuevo usuario",
|
||
"users.modal_edit_title": "Editar usuario",
|
||
"users.lbl_display_name": "Nombre para mostrar",
|
||
"users.ph_display_ex": "Ej: Mario López",
|
||
"users.ph_username_ex": "Ej: mario",
|
||
"users.lbl_username": "Nombre de usuario",
|
||
"users.lbl_email": "Correo electrónico",
|
||
"users.lbl_initial_pw": "Contraseña inicial",
|
||
"users.ph_min_pw": "Mínimo 8 caracteres",
|
||
"users.lbl_role": "Rol",
|
||
"users.role_standard": "Usuario",
|
||
"users.role_admin_option": "Administrador",
|
||
"users.btn_cancel": "Cancelar",
|
||
"users.btn_create": "Crear usuario",
|
||
"users.lbl_password": "Contraseña",
|
||
"users.ph_pw_unchanged": "Vacío para no cambiar",
|
||
"users.edit_admin_checkbox": "Administrador",
|
||
"users.edit_admin_note": "Solo aplica cuando editas a otro usuario",
|
||
"users.btn_save": "Guardar",
|
||
"users.del_title": "¿Eliminar usuario?",
|
||
"users.del_confirm_btn": "Eliminar",
|
||
"settings.val_mtu_digits": "MTU debe ser un entero",
|
||
"settings.val_mtu_range": "MTU entre 1280 y 9000 (o vacío para omitir)",
|
||
"settings.val_keepalive_digits": "Keepalive debe ser un entero",
|
||
"settings.val_conf_required": "Indica la ruta del archivo de configuración WireGuard",
|
||
"settings.val_session_digits": "El tiempo de sesión debe ser un entero",
|
||
"settings.val_session_range": "El tiempo de sesión debe estar entre 5 y 1440 minutos",
|
||
"settings.toast_no_changes": "Sin cambios pendientes por guardar",
|
||
"settings.toast_stage_local": "Cambios guardados localmente. Usa «Aplicar config» para aplicarlos.",
|
||
"settings.placeholder_select_ip": "Selecciona una dirección IP",
|
||
"profile.pk_empty_disabled": "Passkeys desactivadas en configuración global.",
|
||
"profile.pk_empty_none": "No tienes passkeys registradas aún.",
|
||
"profile.rename_tooltip": "Renombrar",
|
||
"profile.delete_pk_tooltip": "Eliminar passkey",
|
||
"profile.default_pk_name": "Passkey",
|
||
"profile.err_load_profile": "No se pudo cargar tu perfil",
|
||
"profile.err_load_pk": "No se pudieron cargar las passkeys",
|
||
"profile.err_username_required": "Nombre de usuario requerido",
|
||
"profile.ok_saved": "Perfil actualizado",
|
||
"profile.err_save": "Error al guardar",
|
||
"profile.err_pk_disabled_global": "Passkeys desactivadas en configuración global",
|
||
"profile.err_pk_browser": "Passkeys no soportadas en este navegador",
|
||
"profile.err_pk_need_name": "Indica un nombre para la passkey",
|
||
"profile.err_pk_begin": "No se pudo iniciar registro",
|
||
"profile.err_pk_finish": "Fallo el registro",
|
||
"profile.ok_pk_registered": "Passkey registrada",
|
||
"profile.confirm_remove_pk": "¿Eliminar esta passkey? Se cerrará tu sesión y tendrás que iniciar sesión de nuevo.",
|
||
"profile.warn_pk_removed": "Passkey eliminada",
|
||
"profile.err_pk_remove": "Error al eliminar",
|
||
"profile.prompt_pk_name": "Nombre de la passkey",
|
||
"profile.ok_name_updated": "Nombre actualizado",
|
||
"profile.err_rename": "Error al renombrar",
|
||
"users.pk_suspended": "Cuenta suspendida. Reactiva el usuario para administrar passkeys.",
|
||
"users.pk_disabled_global": "Passkeys desactivadas en Configuración global (TOTP/Passkeys).",
|
||
"users.pk_none_row": "Sin passkeys registradas",
|
||
"users.role_admin_badge": "Admin",
|
||
"users.role_user_badge": "Usuario",
|
||
"users.state_active": "Activo",
|
||
"users.state_suspended": "Suspendido",
|
||
"users.btn_demote_admin": "Quitar admin",
|
||
"users.btn_promote_admin": "Hacer admin",
|
||
"users.account_yours": "Tu cuenta",
|
||
"users.btn_revoke": "Revocar",
|
||
"users.btn_revoke_title": "Cierra todas las sesiones guardadas para este usuario",
|
||
"users.btn_suspend": "Suspender",
|
||
"users.btn_activate": "Activar",
|
||
"users.btn_suspend_title_block": "Impedir inicio hasta reactivación",
|
||
"users.btn_suspend_title_allow": "Permitir inicio de sesión",
|
||
"users.btn_edit": "Editar",
|
||
"users.btn_edit_title": "Editar usuario",
|
||
"users.passkeys_for": "Passkeys · ",
|
||
"users.pk_placeholder_short": "Nombre (ej: MacBook, YubiKey)",
|
||
"users.pk_add_inline": "Agregar passkey",
|
||
"users.empty_search": "No hay usuarios o no coincide la búsqueda.",
|
||
"users.err_load_users": "No se pudieron cargar usuarios",
|
||
"users.key_single": "key",
|
||
"users.key_plural": "keys",
|
||
"users.rename_tooltip": "Renombrar",
|
||
"users.delete_pk_tooltip": "Eliminar passkey",
|
||
"users.err_new_user_pass": "Nombre de usuario y contraseña son obligatorios",
|
||
"users.ok_user_created": "Usuario creado",
|
||
"users.err_generic_short": "Error",
|
||
"users.err_username_req": "Nombre de usuario requerido",
|
||
"users.ok_user_updated": "Usuario actualizado",
|
||
"users.del_body_fmt": "Se eliminará a «{display}» (@{username}) y todas sus passkeys.",
|
||
"users.ok_user_deleted": "Usuario eliminado",
|
||
"users.self_promote_hint": "Gestiona tu rol desde otro administrador.",
|
||
"users.ok_promoted_admin": "Usuario promovido a administrador",
|
||
"users.ok_demoted_admin": "Rol de administrador quitado",
|
||
"users.confirm_revoke_fmt": "¿Revocar todas las sesiones de «@{username}»? Deberá iniciar sesión de nuevo.",
|
||
"users.ok_sessions_revoked": "Sesiones revocadas",
|
||
"users.confirm_suspend_fmt": "¿Suspender cuenta «@{username}»? No podrá iniciar sesión hasta reactivación.",
|
||
"users.ok_state_updated": "Estado actualizado",
|
||
"users.err_pk_need_name_inline": "Indica un nombre para la passkey",
|
||
"users.err_pk_disabled": "Passkeys desactivadas en configuración global",
|
||
"users.err_pk_browser_inline": "Passkeys no soportadas en este navegador",
|
||
"users.ok_pk_registered": "Passkey registrada",
|
||
"users.confirm_del_pk_other": "¿Eliminar esta passkey? Las sesiones activas de ese usuario se cerrarán.",
|
||
"users.ok_rename_pk": "Nombre actualizado",
|
||
"settings.lang_opt_es": "Español",
|
||
"settings.lang_opt_en": "English",
|
||
"settings.lang_reload_hint": "Recarga la página después de pulsar «Aplicar config» en la barra superior para que se aplique el idioma seleccionado.",
|
||
"settings.dns_tags_add": "Añadir",
|
||
"settings.passkeys_label": "Passkeys",
|
||
"profile.pk_section_title": "Passkeys"
|
||
} |