{
  "@@locale": "es",
  "nav.home": "Estado",
  "status.title": "Estado",
  "status.sip.connected": "Registrado",
  "status.sip.connecting": "Conectando…",
  "status.sip.not_configured": "Sin configurar",
  "status.sip.since": "desde hace {duration}",
  "duration.seconds": "{n} s",
  "duration.minutes": "{n} min",
  "duration.hours": "{n} h",
  "duration.days": "{n} d",
  "status.sip.at": "en {host} como {user}",
  "status.sip.ext": "Número interno {n}",
  "status.sip.public_ip": "IP pública {ip}",
  "status.sip.nat_symmetric": "⚠️ NAT simétrico — el audio necesita una redirección de puerto RTP idéntica",
  "status.sip.stun": "STUN {server} · NAT: {nat}",
  "status.sip.setup_cta": "Configurar la telefonía",
  "status.sip.redo_cta": "Reconfigurar la telefonía",
  "status.token.set": "Token PhoneBlock configurado",
  "status.token.missing": "Sin token PhoneBlock",
  "status.token.rejected": "Token rechazado",
  "status.token.rejected.msg": "PhoneBlock ha rechazado el token. Por favor, genera un nuevo token mediante la opción «Solicitar uno nuevo».",
  "status.token.cta": "Crear token",
  "status.token.test": "Probar",
  "status.token.renew": "Renovar",
  "status.token.testing": "Comprobando el token…",
  "status.token.test.ok": "Token válido — PhoneBlock accesible.",
  "status.token.test.fail": "Token rechazado. Solicita uno nuevo.",
  "status.token.test.none": "No hay token configurado.",
  "status.counters.total": "Total",
  "status.counters.spam": "Spam bloqueado",
  "status.counters.legit": "Legítimas",
  "status.counters.errors": "Errores",
  "status.counters.reset": "Poner a cero todos los contadores",
  "status.info": "Firmware {fw} · IP {ip} · Uptime {uptime} · Latencia API {api}",
  "status.api.failed": "La última llamada al servidor PhoneBlock ({when}) ha fallado: {reason}.",
  "status.api.fail.dns": "No se puede resolver el nombre del servidor (DNS)",
  "status.api.fail.connect": "No hay conexión con el servidor",
  "status.api.fail.tls": "Error en la conexión segura (TLS)",
  "status.api.fail.timeout": "No se ha recibido respuesta dentro del plazo de espera",
  "status.api.fail.http": "El servidor responde con el estado HTTP {status}",
  "status.api.fail.other": "Errores de transmisión",
  "status.calls.title": "Últimas llamadas",
  "status.calls.empty": "aún sin llamadas",
  "status.calls.col.when": "Cuándo",
  "status.calls.col.number": "Número",
  "status.calls.col.name": "Nombre",
  "status.calls.col.verdict": "Veredicto",
  "status.calls.show_all": "Mostrar todo ({count})",
  "status.calls.show_less": "Mostrar menos",
  "status.calls.time_unknown": "desconocido",
  "status.calls.clear": "Vaciar lista",
  "status.calls.log_known": "Registrar llamadas conocidas",
  "status.calls.log_known.help": "Si está desactivado, las llamadas de números de la agenda y los códigos internos (**, *…) no aparecen en la lista — los contadores de arriba se siguen actualizando.",
  "status.calls.verdict.spam": "SPAM ({direct} directo, {range} rango)",
  "status.calls.verdict.spam_plain": "SPAM",
  "status.calls.verdict.spam_list": "SPAM (lista de bloqueo, {scope})",
  "status.calls.verdict.suspect": "SOSPECHA DE SPAM ({direct} directo, {range} rango)",
  "status.calls.verdict.blacklist": "SPAM (lista negra, {scope})",
  "status.calls.verdict.name_pattern": "SPAM (patrón de nombres)",
  "status.calls.verdict.legitimate": "legítimo",
  "status.calls.verdict.unknown": "desconocido",
  "status.calls.verdict.test": "Prueba",
  "status.calls.verdict.error": "Error",
  "status.calls.verdict.scope.number": "Número",
  "status.calls.verdict.scope.range": "Ámbito",
  "region.title": "Idioma y país",
  "region.lang": "Idioma",
  "region.country": "País",
  "region.country.hint": "A los números de teléfono sin prefijo de país se les añadirá este país. Si el país indicado aquí es incorrecto, PhoneBlock no encontrará ninguna entrada para ninguna llamada. El idioma también se aplica al mensaje de voz del contestador automático y al correo electrónico de estado.",
  "status.thresholds.title": "Traviesas de bloque",
  "status.thresholds.direct": "Votos directos",
  "status.thresholds.direct.help": "Bloquea directamente las llamadas procedentes del número que llama. Valor por defecto: 4 — el mismo valor que la lista de bloqueo pública de PhoneBlock.",
  "status.thresholds.range": "Voces de Range",
  "status.thresholds.range.help": "Votos contra vecinos del mismo bloque de 10 o de 100. Valor predeterminado: 10. «Desactivado» desactiva el bloque de rango; en ese caso, solo cuentan los aciertos directos.",
  "status.thresholds.range.off": "De",
  "status.thresholds.saved": "Guardado.",
  "status.thresholds.invalid": "Valor no válido.",
  "status.system.title": "Sistema",
  "status.system.heap": "Memoria libre: {free} (mínimo: {min}, bloque mayor: {largest})",
  "status.system.fs": "Partición de datos: {free} libres de {total} ({used} usados)",
  "status.system.temp": "Temperatura del chip: {temp} °C",
  "status.system.wifi": "Señal Wi-Fi: {rssi} dBm ({quality})",
  "status.system.wifi.good": "bien",
  "status.system.wifi.ok": "suficiente",
  "status.system.wifi.weak": "débil",
  "status.system.wifi_tx": "Potencia de transmisión: {tx} dBm",
  "status.system.wifi_link": "Wifi «{ssid}» a través del punto de acceso {bssid}, canal {channel}, conectado desde {since}",
  "status.system.wifi_drops": "{drops} de conexión desde el inicio",
  "status.system.col.task": "Tarea",
  "status.system.col.cpu": "CPU",
  "status.system.col.stack": "Pila libre",
  "status.system.led_quiet": "Encender el LED solo cuando haya un problema",
  "status.system.led_quiet.hint": "Normalmente el LED permanece encendido cuando todo está bien. Con esta opción se queda apagado en funcionamiento normal y solo se enciende o parpadea cuando hay un problema (configuración necesaria, sin registrar, token rechazado, sin conexión). Útil en el salón.",
  "status.system.lcd_flip": "Pantalla al revés (girar 180°)",
  "status.system.lcd_flip.hint": "Dependiendo de la orientación del puerto USB de tu Fritz!Box, el dispositivo estará colocado al revés. Gira la imagen 180°.",
  "status.system.hostname": "Nombre de host en la red doméstica",
  "status.system.hostname.save": "Guardar",
  "status.system.hostname.unchanged": "El nombre no ha cambiado.",
  "status.system.hostname.err": "Nombre no válido: solo a–z, 0–9 y -, de 1 a 32 caracteres, sin «-» al principio ni al final. No se ha guardado nada.",
  "status.system.hostname.failed": "Error al guardar.",
  "status.clock.now": "Hora: {time}",
  "status.clock.pending": "Hora: se está sincronizando…",
  "status.time.today": "hoy {time}",
  "status.time.yesterday": "ayer {time}",
  "status.tz.current": "Zona horaria: {tz}",
  "status.tz.apply": "Cambiar a {zone}",
  "status.tz.saved": "Zona horaria guardada.",
  "status.errors.title": "Registro",
  "status.errors.note": "El registro sirve para diagnosticar problemas — no toda entrada es un fallo real; muchos errores son transitorios y desaparecen solos.",
  "status.errors.empty": "sin entradas",
  "status.errors.clear": "Vaciar registro",
  "status.errors.capture_info": "Registrar también los mensajes info",
  "status.errors.capture_info.hint": "Para diagnóstico: muestra también mensajes info (p. ej. el servidor:puerto intentado). Llena el registro rápido; desactívalo después.",
  "status.auth.title": "Protección de acceso",
  "status.auth.intro": "Protege la interfaz de configuración durante el uso diario. Si la activas, la página pedirá un «Inicio de sesión con PhoneBlock» antes de mostrar llamadas o aceptar cambios.",
  "status.auth.disabled": "Protección de acceso desactivada — cualquiera en la LAN puede llegar al panel sin iniciar sesión.",
  "status.auth.enabled": "Protección de acceso activa — sesión iniciada como usuario de PhoneBlock.",
  "status.auth.enabled.user": "Protección de acceso activa — sesión iniciada como {user}.",
  "status.auth.enable": "Activar protección de acceso",
  "status.auth.disable": "Desactivar protección de acceso",
  "status.auth.logout": "Cerrar sesión",
  "status.auth.activate.intro": "Antes de activarla se te redirige a phoneblock.net para iniciar sesión — la protección solo se activa tras un inicio de sesión correcto. Así no puedes bloquearte fuera.",
  "login.title": "Inicio de sesión necesario",
  "login.button": "Iniciar sesión con PhoneBlock",
  "login.remember": "Mantener la sesión iniciada",
  "login.error.rejected": "Inicio de sesión fallido — el servidor de PhoneBlock no confirmó la identidad.",
  "login.error.expired": "El inicio de sesión ha caducado o no es válido. Inténtalo de nuevo.",
  "login.error.persist": "No se pudo guardar la activación. Inténtalo de nuevo.",
  "login.error.missing": "La respuesta de phoneblock.net estaba incompleta. Inténtalo de nuevo.",
  "login.error.generic": "Inicio de sesión fallido. Inténtalo de nuevo.",
  "status.reset.title": "Restablecimiento",
  "status.reset.button": "Restablecer configuración",
  "status.reset.error": "El restablecimiento falló: {msg}",
  "status.fw.title": "Actualizar firmware",
  "status.fw.current": "Partición activa: {partition} · Versión {version}",
  "status.fw.pick": "Elegir firmware (.bin)",
  "status.fw.submit": "Subir y reiniciar",
  "status.fw.uploading": "Subiendo… {pct} %",
  "status.fw.error": "Error: {msg}",
  "status.fw.check": "Buscar actualizaciones",
  "status.fw.checking": "Buscando actualizaciones…",
  "status.fw.check.none": "No hay versión más reciente (actualmente {version}).",
  "status.fw.check.found": "Instalando la nueva versión {version}…",
  "status.fw.downgrade": "Instalar {version} de todos modos",
  "status.fw.downgrade.confirm": "¿De verdad quieres volver a la versión anterior {version}? Al hacerlo, se perderán las funciones de la versión más reciente.",
  "status.fw.check.error": "La comprobación falló: {msg}",
  "status.fw.failed": "La última actualización a la versión {version} no superó el arranque — se revirtió automáticamente. La actualización automática omitirá esta versión. Pulsa «Buscar actualizaciones» para volver a intentarlo.",
  "status.fw.auto_update": "Actualización automática diaria",
  "status.fw.channel": "Canal de actualización",
  "status.fw.channel.help": "Elige «Beta» para recibir versiones de prueba con antelación — por ejemplo para verificar un error que has reportado. «Estable» solo entrega versiones publicadas. En cuanto una versión probada se publica definitivamente, vuelves a ella automáticamente.",
  "status.fw.channel.stable": "Estable",
  "status.fw.channel.beta": "Beta (versiones de prueba)",
  "status.fw.crash_report": "Enviar informes de error a phoneblock.net",
  "status.mail.title": "Correos de estado",
  "status.mail.host": "Servidor SMTP",
  "status.mail.port": "Puerto (vacío = automático)",
  "status.mail.security": "Cifrado",
  "status.mail.security.tls": "TLS (puerto 465)",
  "status.mail.security.starttls": "STARTTLS (puerto 587)",
  "status.mail.user": "Nombre de usuario (acceso SMTP)",
  "status.mail.pass": "Contraseña",
  "status.mail.pass.keep": "guardada — déjala en blanco para conservarla",
  "status.mail.from": "Remitente (correo, vacío = nombre de usuario)",
  "status.mail.to": "Destinatarios (correo electrónico; separar varios con «;»)",
  "status.mail.help": "Consejo: en Gmail u Outlook normalmente necesitas una «contraseña de aplicación» (si tienes activada la verificación en dos pasos), no tu contraseña habitual. Proveedores clásicos como GMX, web.de o mailbox.org funcionan con nombre de usuario y contraseña.",
  "status.mail.on_error": "Correo en caso de errores y fallos",
  "status.mail.on_error.help": "Envía un correo al día si ha aparecido un error en el registro desde la última notificación — esto incluye un reinicio tras un fallo.",
  "status.mail.on_spam": "Notificar llamadas por correo electrónico",
  "status.mail.on_spam.help": "Envía una vez al día un correo electrónico con las llamadas recibidas desde el último informe, tanto las bloqueadas como las permitidas.",
  "status.mail.spam_only": "Notificar únicamente las llamadas de spam rechazadas",
  "status.mail.on_update": "Correo electrónico al actualizar el firmware",
  "status.mail.save": "Guardar",
  "status.mail.saved": "Guardado.",
  "status.mail.test": "Enviar correo de prueba",
  "status.mail.testing": "Enviando correo de prueba…",
  "status.mail.test.sent": "Enviando correo de prueba — el resultado aparecerá en el registro.",
  "status.mail.test.fail": "Envío fallido — comprueba los ajustes y el registro.",
  "status.mail.err.host": "Falta el servidor SMTP",
  "status.mail.err.user": "Falta el usuario",
  "status.mail.err.pass": "Falta la contraseña",
  "status.mail.err.to": "Destinatario no válido",
  "status.mail.err.to_many": "Se admiten como máximo {max} destinatarios",
  "status.mail.err.from": "Remitente no válido",
  "status.mail.err.from_user": "Se requiere remitente — el usuario no es una dirección de correo",
  "status.sync.title": "Sincronización de lista de bloqueo",
  "status.sync.intro": "Los números bloqueados desde el terminal («Bloquear número») se envían a la base de PhoneBlock una vez al día y luego se eliminan de la Fritz!Box. El bot luego intercepta esas llamadas para todos los usuarios de PhoneBlock.",
  "status.sync.unavailable": "No disponible — requiere configuración Fritz!Box.",
  "status.sync.never": "Aún no ejecutado.",
  "status.sync.last_ok": "Última ejecución hace {ago}: {n} enviados.",
  "status.sync.last_partial": "Última ejecución hace {ago}: {n} enviados, {f} con error.",
  "status.sync.last_fail": "Última ejecución hace {ago} falló: {err}",
  "status.sync.running": "Sincronización en curso…",
  "status.sync.run_now": "Sincronizar ahora",
  "status.sync.triggered": "Sincronización iniciada.",
  "status.sync.busy": "Sincronización ya en curso.",
  "status.sync.enable": "Activar sincronización",
  "status.sync.disabled": "Sincronización auto desactivada — ejecución manual aún posible.",
  "status.localcache.title": "Caché de lista de bloqueo",
  "status.localcache.enable": "Usar caché de lista de bloqueo",
  "status.localcache.disabled": "Desactivado — las llamadas se comprueban directamente con el servidor.",
  "status.localcache.never": "Aún no descargado.",
  "status.localcache.have": "{community} entradas comunes, {personal} personales. Actualizado hace {ago}.",
  "status.localcache.last_fail": "Última descarga hace {ago} falló: {err}",
  "status.localcache.running": "Descarga en curso…",
  "status.localcache.wildcards": "Aplicar comodines",
  "status.localcache.wildcards.help": "Bloquea también rangos de números (p. ej. \"030 12 34 56*\") que la comunidad haya marcado como spam, además de coincidencias exactas. Desactiva para bloquear solo coincidencias exactas.",
  "status.localcache.run_now": "Descargar ahora",
  "status.localcache.triggered": "Descarga iniciada.",
  "status.localcache.busy": "Descarga ya en curso.",
  "status.names.title": "Filtro de nombres",
  "status.names.intro": "Si tu FRITZ!Box encuentra al llamante en una agenda telefónica, te indica también su nombre. Si utilizas una lista de spam de terceros (por ejemplo, de Tellows), todas las entradas tendrán un nombre revelador, que podrás marcar aquí como spam. Lo mismo ocurre con una agenda propia en la que denomines de la misma forma a todas las llamadas no deseadas.",
  "status.names.patterns": "Nombres que indican spam (separados por |)",
  "status.names.help": "Una llamada se considera spam en cuanto el nombre notificado contenga alguno de estos textos; no importa si se escribe en mayúsculas o minúsculas. Ejemplo: «tellows|Score|SPAM». El nombre de la persona que llama aparece en la lista de llamadas recientes. Si lo dejas en blanco, se desactiva el filtro de nombres.",
  "status.names.save": "Guardar filtro de nombres",
  "status.names.saved": "Filtro de nombres guardado.",
  "status.names.failed": "Error al guardar.",
  "status.names.err.many": "Se admiten como máximo {max} nombres.",
  "status.names.err.long": "Un nombre puede tener una longitud máxima de {max} caracteres.",
  "status.webhook.title": "Webhook para llamadas",
  "status.webhook.url": "Dirección del webhook",
  "status.webhook.help": "Solo http:// y solo a direcciones de tu red doméstica, por ejemplo, http://homeassistant.local:8123/api/webhook/phoneblock. Si lo dejas en blanco, se desactivará el webhook.",
  "status.webhook.save": "Guardar webhook",
  "status.webhook.saved": "Webhook guardado.",
  "status.webhook.failed": "Error al guardar.",
  "status.webhook.err.url": "Introduce una dirección http válida, por ejemplo, http://homeassistant.local:8123/api/webhook/phoneblock.",
  "status.webhook.err.long": "La dirección no puede tener más de {max} caracteres.",
  "status.ann.title": "Mensaje anti-spam",
  "status.ann.default": "Mensaje predeterminado integrado ({kb} KB).",
  "status.ann.custom": "Mensaje personalizado ({kb} KB).",
  "status.ann.play": "Escuchar mensaje actual",
  "status.ann.stop": "Detener",
  "status.ann.upload.label": "Subir uno propio (WAV/MP3/OGG, máx. {s} s)",
  "status.ann.upload.pick": "Elegir archivo",
  "status.ann.upload.submit": "Subir",
  "status.ann.upload.converting": "Convirtiendo…",
  "status.ann.upload.uploading": "Enviando…",
  "status.ann.upload.done": "Guardado ({kb} KB).",
  "status.ann.upload.error": "Error: {msg}",
  "status.ann.upload.toolong": "Demasiado largo — máximo {s} segundos.",
  "status.ann.upload.decode_fail": "No se pudo decodificar el archivo.",
  "status.ann.reset.button": "Restablecer al predeterminado",
  "status.ann.reset.confirm": "¿Descartar realmente el mensaje personalizado?",
  "status.ann.accept_test": "Aceptar llamadas de prueba locales",
  "status.dialog.mode": "En caso de llamadas no deseadas",
  "status.dialog.mode.announcement": "Reproducir el mensaje y colgar",
  "status.dialog.mode.dialog": "Hablar con la persona que llama (diálogo)",
  "status.dialog.clips.present": "Se han cargado las frases de diálogo ({lang}).",
  "status.dialog.clips.pending": "Las frases de diálogo se cargarán en breve…",
  "status.dialog.clips.downloading": "Se están cargando las frases de diálogo ({kb} KB) …",
  "status.dialog.confirm_delete_own": "Tu propio mensaje de bienvenida se borrará al cambiar al modo de diálogo. Puedes volver a subirlo en el modo de mensaje de bienvenida. ¿Quieres continuar?",
  "status.dialog.vad_silence_db": "Umbral de silencio (dBFS)",
  "status.dialog.vad_silence_db.help": "Si el volumen es inferior a este nivel, se considera que la persona que llama habla en voz baja. Se ajusta a un valor más alto (p. ej., -30) si hay ruido en la línea, y a uno más bajo (p. ej., -45) si la persona que llama habla en voz baja. Valor predeterminado: -35.",
  "status.dialog.vad_min_silence_ms": "Tiempo de respuesta (ms)",
  "status.dialog.comfort_noise": "Ruido de línea (dBFS)",
  "status.dialog.comfort_noise.help": "Un ligero ruido de fondo entre frases y al final de cada una, para que la línea no suene muerta. -90 equivale prácticamente a apagado. Valor predeterminado: -60.",
  "status.dialog.saved": "Guardado.",
  "status.dialog.tuning": "Ajustes avanzados: detección de pausas y ruido de fondo",
  "status.dialog.failed": "Error al guardar.",
  "status.dialog.err.range": "Introduce un número entero comprendido entre {min} y {max}.",
  "status.ann.upload.silent": "La grabación no tiene sonido: nada de lo que contiene supera los -45 dBFS.",
  "status.dialog.clips.own": "Se ha activado el cuadro de diálogo propio.",
  "status.dialog.speaker": "Voz",
  "status.dialog.speaker.use": "Utilizar",
  "status.dialog.speaker.active": "activo",
  "status.dialog.own": "Diálogo propio",
  "status.dialog.own.leave_confirm": "Al pasar al modo de locución, se borrará tu propio diálogo. ¿Quieres continuar?",
  "status.dialog.own.leave_download": "¿Quieres descargar antes tu diálogo como archivo?",
  "status.dialog.edit.title": "Crear un diálogo propio",
  "status.dialog.edit.yes_hint": "Nunca grabes un «sí»: un «sí» grabado puede utilizarse indebidamente como consentimiento.",
  "status.dialog.phase.hello": "Bienvenida",
  "status.dialog.phase.who-is-there": "La persona que llama guarda silencio tras el saludo («¿Quién es?»).",
  "status.dialog.phase.am-aparat": "La persona que llama se presenta",
  "status.dialog.phase.question": "Consultas",
  "status.dialog.phase.cant-hear-you": "La persona que llama permanece en silencio durante la conversación («No oigo nada»)",
  "status.dialog.edit.add": "+ Añadir grabación",
  "status.dialog.edit.delete": "Eliminar",
  "status.dialog.edit.gauge": "{kb} de {max} KB",
  "status.dialog.edit.download": "Descargar el archivo de diálogo",
  "status.dialog.edit.load_file": "Cargar archivo de diálogo",
  "status.dialog.edit.reason.empty": "La fase «{phase}» aún no tiene ninguna grabación.",
  "status.dialog.edit.reason.many": "La fase «{phase}» tiene más de {max} grabaciones.",
  "status.dialog.edit.bad_file": "Este no es un archivo de diálogo válido.",
  "status.dialog.edit.reload": "Deshacer y volver a cargar",
  "status.dialog.edit.done": "Se ha guardado un diálogo propio ({kb} KB).",
  "hero.title": "Configuración",
  "hero.step1.done": "Telefonía configurada",
  "hero.step2.done": "Conectado con PhoneBlock",
  "hero.cta.sip": "Configurar la telefonía",
  "hero.cta.token": "Conectar PhoneBlock",
  "sip.entry.title": "Configurar la telefonía",
  "sip.entry.fritzbox": "Fritz!Box (recomendado)",
  "sip.entry.provider": "Otro proveedor",
  "sip.entry.provider.desc": "Registrarse directamente con Telekom, Vodafone, 1&1, sipgate o easybell.",
  "sip.entry.manual": "Manual (experto)",
  "sip.entry.manual.desc": "Rellena tú mismo todos los campos SIP.",
  "sip.fb.title": "Configuración Fritz!Box",
  "sip.fb.intro": "Introduce una vez la contraseña de administración de la Fritz!Box. No se guarda.",
  "sip.fb.host": "Fritz!Box (host o IP)",
  "sip.fb.user": "Usuario",
  "sip.fb.user.hint": "(dejar vacío → usuario por defecto de la Fritz!Box)",
  "sip.fb.pass": "Contraseña",
  "sip.fb.submit": "Crear extensión",
  "sip.fb.working": "Creando la extensión (~2–5 s)…",
  "sip.fb.done": "Extensión creada — iniciando el registro.",
  "sip.fb.done.withnum": "Extensión creada (número interno {n}) — iniciando el registro.",
  "sip.fb.error": "Error: {msg}",
  "sip.fb.2fa.title": "Confirmación de dos factores",
  "sip.fb.2fa.button": "pulsar cualquier botón de la Fritz!Box",
  "sip.fb.2fa.dtmf": "marcar {seq} en un teléfono conectado",
  "sip.fb.2fa.instructions": "Ahora {hints}, por favor.",
  "sip.fb.2fa.cancelled": "2FA cancelada.",
  "sip.fb.2fa.timeout": "Tiempo agotado. Inténtalo de nuevo.",
  "sip.fb.conflict.add": "Añadir otro dispositivo → «{name}»",
  "sip.fb.conflict.submit": "Continuar",
  "sip.fb.conflict.choose": "Selecciona una de las opciones.",
  "sip.prov.title": "Elegir proveedor",
  "sip.prov.intro": "Elige tu proveedor; las credenciales están en su portal de cliente. Si tu proveedor no aparece, usa la configuración manual.",
  "sip.prov.provider": "Proveedor",
  "sip.prov.user": "Usuario SIP / número",
  "sip.prov.pass": "Contraseña",
  "sip.prov.submit": "Guardar credenciales",
  "sip.prov.done": "Guardado. Iniciando el registro.",
  "sip.prov.error": "Error: {msg}",
  "sip.manual.title": "Configuración manual",
  "sip.manual.intro": "Todos los campos SIP. Dejar la contraseña vacía significa «sin cambios».",
  "sip.manual.host": "Registrar SIP",
  "sip.manual.port": "Puerto SIP",
  "sip.manual.port.hint": "Déjelo en blanco para usar DNS-SRV o el valor predeterminado del transporte (5060 UDP/TCP, 5061 TLS).",
  "sip.manual.user": "Usuario SIP",
  "sip.manual.pass": "Contraseña SIP",
  "sip.manual.pass.hint": "Dejar en blanco = conservar la contraseña guardada.",
  "sip.manual.anon": "Registrarse sin contraseña (anónimo)",
  "sip.manual.anon.hint": "Elimina cualquier contraseña guardada y se registra sin ella, p. ej. anonymous@t-online.de en Telekom.",
  "sip.manual.submit": "Guardar",
  "sip.manual.done": "Guardado.",
  "sip.manual.error": "Error: {msg}",
  "sip.manual.advanced": "Parámetros avanzados",
  "sip.manual.transport": "Transporte",
  "sip.manual.transport.hint": "Puede elegir UDP, TCP o TLS. TLS cifra la conexión y se recomienda si el proveedor lo admite. El audio de voz todavía no está cifrado.",
  "sip.manual.auth_user": "Usuario de auth",
  "sip.manual.auth_user.hint": "Vacío = usar el usuario SIP para auth. Telekom: correo electrónico.",
  "sip.manual.outbound": "Proxy saliente",
  "sip.manual.outbound.hint": "Opcional, formato host[:puerto]. Vacío = registrar directamente.",
  "sip.manual.realm": "Realm",
  "sip.manual.realm.hint": "Vacío = tomarlo del challenge del servidor.",
  "sip.manual.stun": "Servidor STUN",
  "sip.manual.stun.hint": "Opcional, formato host[:puerto]. Detecta el puerto RTP público al registrarse directamente con el proveedor. Vacío = desactivado. Lo define el preajuste del proveedor (Telekom: stun.t-online.de:3478).",
  "sip.manual.srtp": "SRTP",
  "sip.manual.srtp.hint": "El SRTP se negocia automáticamente: el audio se cifra cuando el proveedor lo ofrece (p. ej. Telekom); de lo contrario, RTP sin cifrar (p. ej. la Fritz!Box en la LAN).",
  "sip.manual.local_port": "Puerto SIP local",
  "sip.manual.rtp_port": "Puerto RTP (audio)",
  "sip.manual.rtp_port.hint": "Puerto del canal de voz (predeterminado 16000). Vacío = predeterminado.",
  "sip.manual.fwd.title": "Reenvío de puertos para registro directo con el proveedor",
  "sip.manual.srtp.off": "desactivado",
  "sip.manual.srtp.optional": "opcional",
  "sip.manual.srtp.mandatory": "obligatorio",
  "token.title": "Conectar PhoneBlock",
  "token.how": "Al pulsar el botón de abajo irás a phoneblock.net para iniciar sesión una sola vez (Google, Facebook o cuenta). Después vuelves aquí con el token configurado.",
  "token.current.set": "Ya hay un token configurado. Iniciar sesión de nuevo generará uno nuevo.",
  "token.current.missing": "Aún no hay token configurado.",
  "token.submit": "Entrar en PhoneBlock",
  "link.submit": "Vincular la cuenta de PhoneBlock",
  "link.how": "Al hacer clic en el botón, aparecerá un código. A continuación, abre phoneblock.net, inicia sesión e introduce el código allí. El servicio se encargará de recuperar el token automáticamente.",
  "link.starting": "Se está preparando el enlace…",
  "link.compare": "Introduce este código en phoneblock.net para vincular el servicio a tu cuenta.",
  "link.copy": "Copiar código",
  "link.copied": "Código copiado",
  "link.copy_failed": "No se puede copiar: el código está resaltado; cópialo con Ctrl+C.",
  "link.open": "Abrir phoneblock.net",
  "link.manual": "La página es {url}; también puedes introducir el código allí desde otro dispositivo, por ejemplo, desde el móvil.",
  "link.waiting": "A la espera de que se introduzca el código en phoneblock.net…",
  "link.approved": "Cuenta de PhoneBlock vinculada: el token está configurado.",
  "link.denied": "El enlace ha sido rechazado en phoneblock.net.",
  "link.expired": "El código ha caducado. Solicita un nuevo código.",
  "link.error": "El enlace ha fallado: {msg}",
  "link.retry": "Intentarlo de nuevo",
  "back.status": "← volver al estado",
  "back.sip": "← volver a la elección",
  "i18n.loading": "Cargando la traducción…",
  "i18n.unavailable": "Traducción no disponible: se muestra el idioma predeterminado.",
  "status.calls.add_contact": "Añadir a la agenda de la Fritz!Box",
  "status.phonebook.title": "Agenda telefónica para nuevos contactos",
  "status.phonebook.current": "Los nuevos contactos se guardan en «{name}».",
  "status.phonebook.unset": "Aún no se ha establecido; se solicitará al crearlo por primera vez.",
  "status.phonebook.change": "Modificar",
  "status.phonebook.unavailable": "No disponible — solo se puede utilizar con la configuración de Fritz!Box.",
  "status.phonebook.saved": "Guardado.",
  "pb.dialog.title": "Crear un contacto en el Fritz!Box",
  "pb.dialog.intro": "La próxima vez que llames, el teléfono mostrará el nombre en lugar del número. El contacto permanecerá en tu Fritz!Box; no se transferirá a PhoneBlock.",
  "pb.dialog.name": "Nombre",
  "pb.dialog.type": "Tipo de número",
  "pb.dialog.type.home": "Particular",
  "pb.dialog.type.mobile": "Móvil",
  "pb.dialog.type.work": "Por motivos de trabajo",
  "pb.dialog.type.fax_home": "Fax particular",
  "pb.dialog.type.fax_work": "Fax de la empresa",
  "pb.dialog.vip": "Persona importante (VIP)",
  "pb.dialog.book": "Agenda telefónica",
  "pb.dialog.book.readonly": "{name} (sincronizado — no se puede escribir)",
  "pb.dialog.pick": "¿En qué agenda se debe guardar el contacto?",
  "pb.dialog.none_writable": "No se ha encontrado ninguna agenda en la que se pueda escribir.",
  "pb.dialog.save": "Crear",
  "pb.dialog.cancel": "Cancelar",
  "pb.dialog.working": "Se está creando…",
  "pb.dialog.done": "Se ha creado un contacto.",
  "pb.dialog.error.name": "Introduce un nombre, por favor.",
  "pb.dialog.error.number": "Este número no se puede guardar como contacto.",
  "pb.dialog.error.not_writable": "Esta agenda está sincronizada y no se puede escribir en ella. Por favor, elige otra.",
  "pb.dialog.error.no_fritzbox": "Solo es posible con la configuración de Fritz!Box.",
  "pb.dialog.error.unreachable": "El Fritz!Box no responde.",
  "pb.dialog.error.generic": "Error: {msg}",
  "status.calls.add_contact.help": "Añadir la persona que llama como contacto en la agenda de la Fritz!Box",
  "status.calls.report_spam": "Correo basura",
  "status.calls.report_spam.help": "Denunciar este número como spam en PhoneBlock",
  "status.calls.whitelist": "Lista blanca",
  "status.calls.whitelist.help": "Dejar de bloquear este número",
  "whitelist.dialog.title": "Añadir un número a la lista blanca",
  "whitelist.dialog.intro": "Las llamadas procedentes de este número ya no se bloquearán. Al hacerlo, consideras que el número es legítimo en PhoneBlock; esta valoración se asociará a tu cuenta.",
  "whitelist.dialog.submit": "Dejar de bloquear",
  "whitelist.dialog.working": "Se está transmitiendo…",
  "whitelist.dialog.done": "Ya está hecho: el número está en tu lista blanca.",
  "spam.dialog.title": "Denunciar este número como spam",
  "spam.dialog.rating": "Tipo de llamada",
  "spam.dialog.rating.B_MISSED": "Desconocido",
  "spam.dialog.rating.C_PING": "Llamada Ping",
  "spam.dialog.rating.D_POLL": "Encuesta",
  "spam.dialog.rating.E_ADVERTISING": "Publicidad",
  "spam.dialog.rating.F_GAMBLE": "Sorteo",
  "spam.dialog.rating.G_FRAUD": "Estafa",
  "spam.dialog.submit": "Notificar",
  "spam.dialog.working": "Se va a notificar…",
  "spam.dialog.done": "Gracias — Se ha enviado la valoración.",
  "spam.dialog.error.no_token": "Para valorar es necesario tener una cuenta de PhoneBlock.",
  "pb.dialog.error.moved": "La agenda seleccionada ya no existe. Selecciona otra.",
  "spam.dialog.comment": "Motivo",
  "spam.dialog.comment.hint": "(opcional, será visible públicamente)",
  "status.rec.enable": "Grabar conversaciones en modo de diálogo",
  "status.rec.legal": "La grabación de las conversaciones telefónicas es responsabilidad tuya (art. 201 del Código Penal alemán, RGPD).",
  "status.rec.usage": "{count} archivos, {used} de {cap} MB ocupados.",
  "status.rec.play": "Reproducir grabación",
  "status.rec.stop": "Pausar la reproducción",
  "status.rec.download": "Descargar la grabación (WAV)",
  "status.rec.delete": "Borrar grabación",
  "status.rec.delete.confirm": "¿Quieres borrar esta grabación? La llamada seguirá apareciendo en la lista.",
  "status.rec.failed": "No se ha podido cargar la grabación.",
  "status.api.fail.hint": "Comprueba la conexión a Internet del router y la configuración de red (puerta de enlace, DNS) del dongle.",
  "status.thresholds.intro": "A partir de cuántos votos de PhoneBlock el dongle descarta una llamada. Los votos directos tienen más peso que los votos de rango, por eso se indican valores separados.",
  "status.system.wifi.weak_hint": "Señal Wi-Fi débil: acerca el dongle al Fritz!Box o a un repetidor. En la red Mesh, la vista general de la red Mesh del Fritz!Box muestra en qué dispositivo está conectado.",
  "status.system.hostname.help": "El dongle es accesible en la red doméstica con este nombre. Si hay varios dongles, cada uno debe tener su propio nombre. Se permiten las letras a–z, los números 0–9 y el signo «-», con un máximo de 32 caracteres. Déjalo en blanco para que se utilice «answerbot».",
  "status.system.hostname.saved": "Guardado. {name}.local ya está disponible. En el Fritz!Box (lista de dispositivos y http://{name}/) aparecerá el nuevo nombre tras reiniciar el dongle.",
  "status.auth.no_token": "La protección de acceso requiere un token de PhoneBlock configurado (véase el paso 2 anterior). Solo entonces el dongle podrá verificar tu identidad frente al servidor.",
  "login.intro": "La protección de acceso para este dongle está activa. Haz clic a continuación para iniciar sesión con tu cuenta de PhoneBlock; se te redirigirá brevemente a phoneblock.net y volverás automáticamente a esta página.",
  "login.remember.help": "Establece una cookie en este dispositivo para que el dongle te reconozca la próxima vez sin tener que pasar por phoneblock.net. Solo se «recuerda» un navegador a la vez.",
  "login.error.mismatch": "Error al iniciar sesión: esta cuenta de PhoneBlock no es la titular de este dongle.",
  "login.error.mismatch_named": "Error al iniciar sesión: este dongle pertenece a la cuenta {expected}, pero has iniciado sesión como otro usuario.",
  "status.reset.intro": "Borra toda la configuración del dongle (datos de acceso SIP, token de PhoneBlock, historial de errores) y lo reinicia.",
  "status.reset.confirm": "¿Desea borrar realmente todos los ajustes del dongle y reiniciarlo?",
  "status.reset.running": "Se está reiniciando; el dongle se reiniciará en breve.",
  "status.fw.intro": "Sube un nuevo archivo de firmware o comprueba directamente con el CDN de PhoneBlock. En ambos casos, la nueva versión se almacena en la ranura Flash inactiva; tras el reinicio, el dongle arranca con la nueva versión y, en caso de errores, vuelve automáticamente a la anterior.",
  "status.fw.confirm": "¿Instalar el nuevo firmware y reiniciar el dongle?",
  "status.fw.done": "Se está transfiriendo el firmware. El dongle se reiniciará. Espera un momento y, a continuación, actualiza la página.",
  "status.fw.check.older": "En este canal solo está disponible la versión anterior {version} (la versión instalada es {current}). El dongle seguirá con la versión {current} hasta que aparezca una versión más reciente.",
  "status.fw.check.installed": "Versión {version} instalada — El dongle se reiniciará. Espera un momento y, a continuación, actualiza la página.",
  "status.fw.auto_update.help": "Si está activada, el dongle comprueba una vez al día si hay una versión más reciente en el CDN de PhoneBlock y la instala automáticamente. Al subir manualmente un firmware, esta opción se desactiva automáticamente para que la comprobación diaria no sobrescriba la versión que has seleccionado manualmente; vuelve a activarla aquí si quieres seguir el flujo de lanzamientos.",
  "status.fw.crash_report.help": "Si el dongle se reinicia debido a un error del programa, se guarda un extracto de memoria en una partición Flash reservada para ello. Si esta opción está activada, el dongle subirá el extracto a phoneblock.net en el siguiente arranque, lo que nos ayuda a detectar y corregir fallos de campo. Desactiva la opción si no quieres que el dongle envíe dichos informes; en ese caso, los registros guardados se borrarán localmente en lugar de enviarse.",
  "status.mail.intro": "El dongle puede enviarte notificaciones de estado directamente por correo electrónico, a través de tu propia cuenta de correo. Introduce los datos de acceso de tu proveedor de correo electrónico; el dongle enviará como máximo un mensaje al día a través de esta cuenta.",
  "status.mail.spam_only.help": "El correo electrónico de llamadas solo incluye las llamadas que el dongle ha bloqueado por considerarse spam. No se incluyen las llamadas legítimas ni las de números desconocidos, y si solo se reciben este tipo de llamadas, no se envía ningún correo electrónico.",
  "status.mail.on_update.help": "Envía un correo electrónico después de que el dongle se haya actualizado a una nueva versión de firmware, con un enlace al registro de cambios.",
  "status.localcache.intro": "Una vez al día, el dongle descarga la lista de bloqueo actual y tus listas personalizadas de números bloqueados y permitidos, y las almacena en la memoria flash interna. De este modo, las llamadas entrantes se gestionan en su mayoría sin necesidad de consultar el servidor, lo que resulta más rápido y fiable incluso en caso de problemas de red.",
  "status.localcache.enable.help": "Carga la lista de bloqueados en el dongle y gestiona las llamadas de forma local. Desactivado: cada llamada se comprueba directamente en el servidor, lo que resulta más lento y solo es posible si hay conexión a Internet.",
  "status.webhook.intro": "Cada vez que aparece una llamada en el historial de llamadas, el dongle envía los datos de la llamada mediante un método HTTP POST a esta dirección, por ejemplo, a Home Assistant, ioBroker o Node-RED. El contenido es una entrada del historial de llamadas en formato JSON, con los mismos campos que /api/calls.",
  "status.webhook.err.https": "No se admite https: el dongle solo envía datos a través de http y únicamente en la red doméstica.",
  "status.ann.accept_test.help": "Si está activada, el dongle responde a las llamadas a códigos internos de Fritz!Box (**622, *21#, …) como si fueran spam, es decir, con un mensaje de voz y colgando. De este modo, se puede comprobar el proceso de llamada desde un teléfono interno sin tener que registrar un número real en PhoneBlock.",
  "status.dialog.help": "En el modo «Diálogo», el dongle acepta la llamada de spam y mantiene al interlocutor en espera con frases breves que responden a sus respuestas hasta que cuelga, sin límite de tiempo. En el modo «Diálogo» no hay mensaje de bienvenida: la grabación propia se borra al cambiar de modo y solo se puede volver a cargar en el modo «Mensaje de bienvenida».",
  "status.dialog.clips.missing": "Los conjuntos de diálogos aún no se han cargado; hasta entonces, el dongle cuelga las llamadas de spam sin reproducir ningún mensaje.",
  "status.dialog.clips.failed": "Error al descargar los conjuntos de diálogos ({error}): el dongle lo volverá a intentar en la próxima sincronización. Hasta entonces, colgará las llamadas no deseadas sin mensaje de bienvenida.",
  "status.dialog.clips.unavailable": "No se han publicado frases de diálogo para este idioma y este dispositivo; el dongle realiza llamadas spam sin mensaje de bienvenida.",
  "status.dialog.vad_min_silence_ms.help": "Es el tiempo que debe permanecer en silencio la persona que llama antes de que el dongle responda. Valor predeterminado: 500.",
  "status.dialog.speaker.none": "Aún no se han cargado las voces; el dongle las cargará en la próxima sincronización.",
  "status.dialog.own.replace_confirm": "Tu diálogo personalizado se sustituirá por las frases de {name}; en el dongle solo cabe un diálogo. Descárgalo antes en «Crear un diálogo propio» si quieres conservarlo. ¿Continuar?",
  "status.dialog.edit.intro": "Empiezas con las frases que hay en el dongle. Borra grabaciones o añade otras nuevas (WAV/MP3/OGG); todas se ajustan al mismo volumen y se elimina el silencio al principio y al final. Cada fase necesita al menos una frase; el dongle las selecciona al azar.",
  "status.dialog.edit.upload": "Cargar en el dongle",
  "status.dialog.edit.reason.size": "El tamaño total de las grabaciones supera la capacidad del dongle: elimina o recorta algunas grabaciones.",
  "status.dialog.edit.no_set": "Todavía no hay ningún diálogo en el dongle: añade grabaciones para cada fase.",
  "status.dialog.edit.changed": "Ahora hay otras grabaciones en el dongle (se ha cambiado el idioma o la voz). Tus modificaciones en el editor aún no se han subido.",
  "hero.intro": "Dos pasos y tu dongle bloqueará automáticamente las llamadas no deseadas. Marca las dos casillas; solo entonces el dispositivo estará listo para su uso.",
  "hero.step1.todo": "Registra el dongle en tu centralita telefónica",
  "hero.step2.todo": "Conectarse a PhoneBlock — para que el dongle sepa qué es el spam",
  "sip.entry.intro": "Elige cómo se conectará el dongle a tu centralita.",
  "sip.entry.fritzbox.desc": "Configuración automática. El dongle se configura automáticamente como teléfono IP.",
  "sip.fb.conflict.one": "En el Fritz!Box ya hay un dongle PhoneBlock registrado:",
  "sip.fb.conflict.many": "En el Fritz!Box ya hay varios dongles PhoneBlock registrados:",
  "sip.fb.conflict.replace": "Sustituir «{entry}», p. ej., tras restablecer este dongle",
  "sip.manual.local_port.hint": "Puerto en el que el dongle recibe SIP (por defecto, 15060). Si se deja en blanco, se utiliza el valor por defecto.",
  "sip.manual.fwd.body": "Si el dongle se conecta directamente al proveedor (en lugar de hacerlo a través de un router VoIP) y el proveedor solo admite UDP, configura en el router un reenvío UDP hacia el dongle —con el mismo puerto (puerto externo = puerto interno)—: {sip} (SIP) y {rtp} (RTP). El dongle detecta automáticamente la IP pública (visible en la parte superior del estado); no es necesario introducirla. Esto solo funciona con una dirección IPv4 pública real (propia), no con DS-Lite/CGNAT (IPv4 compartida), donde no es posible el reenvío; en ese caso, la única solución es TCP/TLS, si el proveedor lo admite.",
  "token.intro": "El dongle consulta la base de datos de PhoneBlock cada vez que recibe una llamada. Para ello, necesitas un token.",
  "status.phonebook.intro": "Las llamadas de personas que la Fritz!Box no reconoce aparecen en el historial de llamadas sin nombre. Con el botón «+» situado junto a ellas, puedes añadirlas como contacto en la Fritz!Box; a partir de ese momento, el teléfono mostrará el nombre y el dongle dejará de consultar a PhoneBlock sobre ese número.",
  "spam.dialog.intro": "Tu valoración es válida para todos los usuarios de PhoneBlock y se asignará a tu cuenta. No se puede anular a través del dongle; solo se puede hacer en phoneblock.net.",
  "spam.dialog.error.is_contact": "Este número figura en tu agenda. En el dongle, una entrada de la agenda siempre tiene prioridad, por lo que en este caso no es posible marcarlo como spam.",
  "status.rec.help": "El dongle graba las conversaciones que mantiene en modo de diálogo con las llamadas de spam, en ambos sentidos, con una duración máxima de {min} minutos por llamada. Puedes reproducirlas, descargarlas y eliminarlas desde el historial de llamadas; cuando una llamada desaparece del historial, su grabación se elimina."
}
