# Copyright (C) 2026 Nicolas Diolez
# This file is distributed under the GPL-2.0-or-later.
msgid ""
msgstr ""
"Project-Id-Version: Muri Link Tracker 2.1.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/muri-link-"
"tracker\n"
"POT-Creation-Date: 2026-08-24T07:48:03+00:00\n"
"PO-Revision-Date: 2026-06-16T16:34:39+00:00\n"
"Last-Translator: Nicolas Diolez <nicolas.diolez.ia@gmail.com>\n"
"Language-Team: Spanish (Spain)\n"
"Language: es_ES\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: WP-CLI 2.12.0\n"
"X-Domain: muri-link-tracker\n"

#. Plugin Name of the plugin
#: muri-link-tracker.php src/Admin/AdminPage.php:39 src/Admin/AdminPage.php:40
#: admin/src/App.js:60
msgid "Muri Link Tracker"
msgstr ""

#. Plugin URI of the plugin
#: muri-link-tracker.php
msgid "https://github.com/nicolasdiolez/muri-link-tracker"
msgstr ""

#. Description of the plugin
#: muri-link-tracker.php
msgid ""
"A high-performance link checker for WordPress with affiliate detection, "
"redirect tracking, and background processing."
msgstr ""
"Un comprobador de enlaces de alto rendimiento para WordPress, con detección "
"de afiliación, seguimiento de redirecciones y procesamiento en segundo plano."

#. Author of the plugin
#: muri-link-tracker.php
msgid "Nicolas Diolez"
msgstr ""

#. Author URI of the plugin
#: muri-link-tracker.php
msgid "https://nicolasdiolez.com"
msgstr ""

#: muri-link-tracker.php:63
msgid ""
"Muri Link Tracker: Composer autoloader not found. Please run \"composer "
"install\" in the plugin directory."
msgstr ""
"Muri Link Tracker: no se encontró el autoloader de Composer. Ejecuta "
"«composer install» en el directorio del plugin."

#: src/Admin/ReviewNotice.php:99
msgid "How do you like Muri Link Tracker?"
msgstr "¿Qué te parece Muri Link Tracker?"

#: src/Admin/ReviewNotice.php:100
msgid ""
"We hope the plugin is helping you maintain a healthy site! If you have a "
"moment, could you please leave us a 5-star rating on WordPress.org? It helps "
"us a lot!"
msgstr ""
"¡Esperamos que el plugin te ayude a mantener un sitio saludable! Si tienes "
"un momento, ¿podrías dejarnos una valoración de 5 estrellas en WordPress."
"org? ¡Nos ayuda muchísimo!"

#: src/Admin/ReviewNotice.php:104 admin/src/components/Dashboard.js:377
msgid "Leave a Review"
msgstr "Dejar una reseña"

#: src/Admin/ReviewNotice.php:107
msgid "Maybe later"
msgstr "Quizás más tarde"

#: src/Admin/SchemaNotice.php:64
msgid ""
"Muri Link Tracker — Database schema repaired. Run a fresh scan to repopulate "
"the link inventory."
msgstr ""
"Muri Link Tracker — Esquema de base de datos reparado. Ejecuta un nuevo "
"análisis para repoblar el inventario de enlaces."

#: src/Admin/SchemaNotice.php:68
msgid ""
"Muri Link Tracker — Retry failed. Please contact support if the problem "
"persists."
msgstr ""
"Muri Link Tracker — El reintento ha fallado. Contacta con el soporte si el "
"problema persiste."

#: src/Admin/SchemaNotice.php:98
msgid "Muri Link Tracker — Database schema incomplete"
msgstr "Muri Link Tracker — Esquema de base de datos incompleto"

#: src/Admin/SchemaNotice.php:99
msgid ""
"A required database column is missing. The link scanner has been disabled to "
"prevent data loss. This usually happens when a v1.x → v2.0 upgrade was "
"interrupted."
msgstr ""
"Falta una columna obligatoria de la base de datos. El analizador de enlaces "
"se ha desactivado para evitar la pérdida de datos. Esto suele ocurrir cuando "
"se interrumpe una actualización de v1.x → v2.0."

#: src/Admin/SchemaNotice.php:101
msgid "Missing column(s):"
msgstr "Columna(s) que falta(n):"

#: src/Admin/SchemaNotice.php:105
msgid "Retry migration"
msgstr "Reintentar la migración"

#: src/Admin/SchemaNotice.php:117
msgid "You are not allowed to perform this action."
msgstr "No tienes permiso para realizar esta acción."

#: src/Models/Enums/DomainTrust.php:61
msgid "Not reviewed"
msgstr "Sin revisar"

#: src/Models/Enums/DomainTrust.php:62
msgid "Trusted"
msgstr "De confianza"

#: src/Models/Enums/DomainTrust.php:63
msgid "Needs fixing"
msgstr "Pendiente de corregir"

#: src/Models/Enums/LinkStatus.php:68 admin/src/components/FilterBar.js:29
#: admin/src/utils/constants.js:14
msgid "Pending"
msgstr "Pendiente"

#: src/Models/Enums/LinkStatus.php:69 admin/src/components/FilterBar.js:28
#: admin/src/utils/constants.js:15
msgid "OK"
msgstr ""

#: src/Models/Enums/LinkStatus.php:70 admin/src/utils/constants.js:16
msgid "Redirect"
msgstr "Redirección"

#: src/Models/Enums/LinkStatus.php:71
#: admin/src/components/AffiliatesPanel.js:207
#: admin/src/components/Dashboard.js:75 admin/src/components/FilterBar.js:13
#: admin/src/utils/constants.js:17
msgid "Broken"
msgstr "Roto"

#: src/Models/Enums/LinkStatus.php:72 admin/src/utils/constants.js:18
msgid "Error"
msgstr "Error"

#: src/Models/Enums/LinkStatus.php:73 admin/src/components/FilterBar.js:21
#: admin/src/utils/constants.js:19
msgid "Timeout"
msgstr "Tiempo de espera agotado"

#: src/Models/Enums/LinkStatus.php:74 admin/src/utils/constants.js:21
msgid "Skipped"
msgstr "Omitido"

#: src/Models/Enums/LinkStatus.php:75 admin/src/utils/constants.js:20
msgid "Domain not found"
msgstr "Dominio no encontrado"

#: src/Models/Enums/RiskLevel.php:55 admin/src/components/Dashboard.js:176
#: admin/src/utils/constants.js:41 admin/src/utils/constants.js:58
msgid "Not assessed"
msgstr "Sin evaluar"

#: src/Models/Enums/RiskLevel.php:56 admin/src/components/Dashboard.js:170
#: admin/src/utils/constants.js:42 admin/src/utils/constants.js:57
msgid "No issue found"
msgstr "Sin incidencias"

#: src/Models/Enums/RiskLevel.php:57 admin/src/components/Dashboard.js:164
#: admin/src/utils/constants.js:43 admin/src/utils/constants.js:56
msgid "Worth a look"
msgstr "Merece un vistazo"

#: src/Models/Enums/RiskLevel.php:58 admin/src/components/Dashboard.js:158
#: admin/src/utils/constants.js:44 admin/src/utils/constants.js:55
msgid "Suspect"
msgstr "Sospechoso"

#: src/Queue/BatchOrchestrator.php:482
msgid ""
"Action Scheduler failed to enqueue scan batches. Check server error logs."
msgstr ""
"Action Scheduler no pudo poner en cola los lotes de análisis. Revisa los "
"registros de errores del servidor."

#: src/REST/CsvExporter.php:402
msgid "external"
msgstr "externo"

#: src/REST/CsvExporter.php:402
msgid "internal"
msgstr "interno"

#: src/REST/CsvExporter.php:403 src/REST/CsvExporter.php:405
msgid "yes"
msgstr "sí"

#: src/REST/CsvExporter.php:403 src/REST/CsvExporter.php:405
msgid "no"
msgstr "no"

#: src/REST/LinksController.php:395
msgid "Please wait a moment before exporting again."
msgstr "Espera un momento antes de volver a exportar."

#: src/REST/LinksController.php:477 src/REST/LinksController.php:507
#: src/REST/LinksController.php:622 src/REST/LinksController.php:713
#: src/REST/ReputationController.php:244
msgid "Link not found."
msgstr "Enlace no encontrado."

#: src/REST/LinksController.php:519
msgid "Provide at least url, rel or target to update."
msgstr "Proporciona al menos url, rel o target para actualizar."

#: src/REST/LinksController.php:736
msgid "Link queued for re-checking."
msgstr "Enlace puesto en cola para una nueva comprobación."

#: src/REST/ReputationController.php:193
msgid "Not a valid domain name."
msgstr "El nombre de dominio no es válido."

#: src/REST/ReputationController.php:205
msgid "Unknown decision for this domain."
msgstr "Decisión desconocida para este dominio."

#: src/REST/ReputationController.php:213
msgid "Could not save the decision for this domain."
msgstr "No se ha podido guardar la decisión para este dominio."

#: src/REST/ReputationController.php:253
msgid "Please wait a moment before re-checking another link."
msgstr "Espera un momento antes de volver a comprobar otro enlace."

#: src/REST/ScanController.php:169
msgid "Please wait a few seconds before trying again."
msgstr "Espera unos segundos antes de volver a intentarlo."

#: src/REST/ScanController.php:200
msgid "A scan is already in progress."
msgstr "Ya hay un análisis en curso."

#: src/REST/ScanController.php:266
msgid ""
"Scan cannot be resumed. It may have already finished or was never started."
msgstr ""
"No se puede reanudar el análisis. Puede que ya haya finalizado o que nunca "
"se iniciara."

#: src/REST/SettingsController.php:127
msgid "scan_post_types must be an array."
msgstr "scan_post_types debe ser un array."

#: src/REST/SettingsController.php:136
msgid "check_timeout must be between 5 and 60."
msgstr "check_timeout debe estar entre 5 y 60."

#: src/REST/SettingsController.php:145
msgid "batch_size must be between 10 and 200."
msgstr "batch_size debe estar entre 10 y 200."

#: src/REST/SettingsController.php:154
msgid "recheck_interval must be between 1 and 30."
msgstr "recheck_interval debe estar entre 1 y 30."

#: src/REST/SettingsController.php:162
msgid "excluded_urls must be an array."
msgstr "excluded_urls debe ser un array."

#: src/REST/SettingsController.php:175
msgid "http_request_delay must be between 0 and 5000."
msgstr "http_request_delay debe estar entre 0 y 5000."

#: src/REST/SettingsController.php:188
msgid "density must be comfortable, balanced, or compact."
msgstr "density debe ser comfortable, balanced o compact."

#: src/REST/SettingsController.php:196
msgid "disclosure_phrases must be an array of strings."
msgstr "disclosure_phrases debe ser un array de cadenas."

#: src/REST/SettingsController.php:208
msgid "disclosure_phrases entries must be 255 characters or fewer."
msgstr ""
"Las entradas de disclosure_phrases no deben superar los 255 caracteres."

#: src/REST/SettingsController.php:214
msgid "disclosure_phrases supports at most 10 entries."
msgstr "disclosure_phrases admite un máximo de 10 entradas."

#: src/REST/SettingsController.php:224
msgid "disclosure_min_affiliates must be between 1 and 50."
msgstr "disclosure_min_affiliates debe estar entre 1 y 50."

#: src/REST/SettingsController.php:237
msgid "reputation_max_probes_per_run must be between 10 and 500."
msgstr "reputation_max_probes_per_run debe estar entre 10 y 500."

#: admin/src/App.js:21
msgid "Dashboard"
msgstr "Escritorio"

#: admin/src/App.js:22
msgid "Affiliates"
msgstr "Afiliados"

#: admin/src/App.js:23
msgid "Links"
msgstr "Enlaces"

#: admin/src/App.js:24
msgid "Settings"
msgstr "Ajustes"

#: admin/src/App.js:111
msgid "Muri Link Tracker notifications"
msgstr "Notificaciones de Muri Link Tracker"

#. translators: %d: broken affiliate link count.
#: admin/src/components/AffiliatesPanel.js:117
msgid "%d broken affiliate link"
msgid_plural "%d broken affiliate links"
msgstr[0] "%d enlace de afiliado roto"
msgstr[1] "%d enlaces de afiliado rotos"

#: admin/src/components/AffiliatesPanel.js:125
msgid "Direct revenue impact — fix or replace these before they pile up."
msgstr ""
"Impacto directo en los ingresos: corrígelos o reemplázalos antes de que se "
"acumulen."

#: admin/src/components/AffiliatesPanel.js:129
msgid "View broken affiliates"
msgstr "Ver afiliados rotos"

#. translators: %d: affiliate links missing rel="sponsored".
#: admin/src/components/AffiliatesPanel.js:144
msgid "%d affiliate link missing rel=\"sponsored\""
msgid_plural "%d affiliate links missing rel=\"sponsored\""
msgstr[0] "%d enlace de afiliado sin rel=\"sponsored\""
msgstr[1] "%d enlaces de afiliado sin rel=\"sponsored\""

#: admin/src/components/AffiliatesPanel.js:152
msgid ""
"Google requires sponsored content to be marked. Patch them all in one click."
msgstr ""
"Google exige que el contenido patrocinado esté marcado. Corrígelos todos con "
"un clic."

#: admin/src/components/AffiliatesPanel.js:156
msgid "Fix all"
msgstr "Corregir todo"

#. translators: %d: posts missing FTC disclosure.
#: admin/src/components/AffiliatesPanel.js:168
msgid "%d post missing FTC disclosure"
msgid_plural "%d posts missing FTC disclosure"
msgstr[0] "%d entrada sin divulgación FTC"
msgstr[1] "%d entradas sin divulgación FTC"

#: admin/src/components/AffiliatesPanel.js:176
msgid ""
"Affiliate-heavy posts without a disclosure phrase risk FTC non-compliance. "
"Review the list below."
msgstr ""
"Las entradas con muchos enlaces de afiliado y sin una frase de divulgación "
"corren el riesgo de incumplir la normativa de la FTC. Revisa la lista de "
"abajo."

#: admin/src/components/AffiliatesPanel.js:180
msgid "Scroll to list"
msgstr "Ir a la lista"

#: admin/src/components/AffiliatesPanel.js:194
msgid "Total Affiliates"
msgstr "Total de afiliados"

#: admin/src/components/AffiliatesPanel.js:198
msgid "View all in the Links tab"
msgstr "Ver todo en la pestaña Enlaces"

#: admin/src/components/AffiliatesPanel.js:221 admin/src/utils/constants.js:203
msgid "Missing rel=\"sponsored\""
msgstr "Sin rel=\"sponsored\""

#: admin/src/components/AffiliatesPanel.js:229
msgid "Cloaked (internal)"
msgstr "Encubierto (interno)"

#: admin/src/components/AffiliatesPanel.js:232
msgid "Internal URLs that redirect to affiliate networks."
msgstr "URL internas que redirigen a redes de afiliación."

#: admin/src/components/AffiliatesPanel.js:245
msgid ""
"No affiliate links detected yet. Run a Full Scan from the Dashboard tab to "
"populate this view."
msgstr ""
"Aún no se han detectado enlaces de afiliado. Ejecuta un análisis completo "
"desde la pestaña Escritorio para rellenar esta vista."

#: admin/src/components/AffiliatesPanel.js:296
msgid "What needs your attention"
msgstr "Lo que requiere tu atención"

#: admin/src/components/AffiliatesPanel.js:303
msgid "Nothing to fix right now. Your affiliate inventory is clean."
msgstr ""
"Nada que corregir por ahora. Tu inventario de afiliados está impecable."

#: admin/src/components/AffiliatesPanel.js:343
msgid "Networks breakdown"
msgstr "Desglose por red"

#: admin/src/components/AffiliatesPanel.js:390
msgid "FTC disclosure"
msgstr "Divulgación FTC"

#: admin/src/components/AffiliatesPanel.js:394
msgid ""
"Configure disclosure phrases (e.g. \"As an Amazon Associate I earn from "
"qualifying purchases\") to detect posts that need a disclosure block."
msgstr ""
"Configura frases de divulgación (p. ej. «Como afiliado de Amazon, gano "
"dinero con las compras que cumplen los requisitos») para detectar entradas "
"que necesitan un bloque de divulgación."

#: admin/src/components/AffiliatesPanel.js:403
msgid "Open Settings"
msgstr "Abrir ajustes"

#: admin/src/components/AffiliatesPanel.js:412
msgid "All posts with affiliate links include a disclosure phrase."
msgstr ""
"Todas las entradas con enlaces de afiliado incluyen una frase de divulgación."

#. translators: %d: affiliate link count.
#: admin/src/components/AffiliatesPanel.js:436
msgid "%d affiliate"
msgid_plural "%d affiliates"
msgstr[0] "%d afiliado"
msgstr[1] "%d afiliados"

#: admin/src/components/AffiliatesPanel.js:452
msgid "Refresh list"
msgstr "Actualizar lista"

#: admin/src/components/BulkActions.js:32
msgid "Edit"
msgstr "Editar"

#: admin/src/components/BulkActions.js:43
msgid "Recheck"
msgstr "Volver a comprobar"

#: admin/src/components/BulkActions.js:51
msgid "Add rel=\"sponsored\""
msgstr "Añadir rel=\"sponsored\""

#: admin/src/components/BulkActions.js:62
msgid "Add rel=\"nofollow\""
msgstr "Añadir rel=\"nofollow\""

#: admin/src/components/BulkActions.js:71
#: admin/src/components/BulkActions.js:109
msgid "Delete"
msgstr "Eliminar"

#. translators: %d: number of links to delete
#: admin/src/components/BulkActions.js:80
msgid ""
"Remove %d link from your content? This will edit your posts and cannot be "
"undone."
msgid_plural ""
"Remove %d links from your content? This will edit your posts and cannot be "
"undone."
msgstr[0] ""
"¿Eliminar %d enlace de tu contenido? Esto editará tus entradas y no se puede "
"deshacer."
msgstr[1] ""
"¿Eliminar %d enlaces de tu contenido? Esto editará tus entradas y no se "
"puede deshacer."

#: admin/src/components/BulkActions.js:99
#: admin/src/components/ExportModal.js:231
#: admin/src/components/LinkEditModal.js:212
#: admin/src/components/RelAttributeConfirmModal.js:210
msgid "Cancel"
msgstr "Cancelar"

#. translators: 1: count, 2: localized label
#: admin/src/components/Dashboard.js:32
msgid "%1$d %2$s"
msgid_plural "%1$d %2$s"
msgstr[0] "%1$d %2$s"
msgstr[1] "%1$d %2$s"

#: admin/src/components/Dashboard.js:56
msgid "Total Links"
msgstr "Total de enlaces"

#: admin/src/components/Dashboard.js:62
msgid "OK Links"
msgstr "Enlaces OK"

#: admin/src/components/Dashboard.js:68 admin/src/components/FilterBar.js:14
msgid "Redirects"
msgstr "Redirecciones"

#: admin/src/components/Dashboard.js:81 admin/src/components/FilterBar.js:19
msgid "Errors"
msgstr "Errores"

#: admin/src/components/Dashboard.js:96
msgid "Checked"
msgstr "Comprobados"

#: admin/src/components/Dashboard.js:110 admin/src/components/LinkTable.js:479
#: admin/src/components/LinkTable.js:487 admin/src/utils/constants.js:95
msgid "Internal"
msgstr "Internos"

#: admin/src/components/Dashboard.js:116 admin/src/components/LinkTable.js:475
#: admin/src/components/LinkTable.js:486 admin/src/utils/constants.js:94
msgid "External"
msgstr "Externos"

#: admin/src/components/Dashboard.js:122 admin/src/utils/constants.js:255
msgid "Affiliate"
msgstr "Afiliados"

#: admin/src/components/Dashboard.js:128 admin/src/utils/constants.js:257
msgid "Cloaked"
msgstr "Encubiertos"

#: admin/src/components/Dashboard.js:187
msgid "Single (1 hop)"
msgstr "Único (1 salto)"

#: admin/src/components/Dashboard.js:193
msgid "Chains (2+)"
msgstr "Cadenas (2+)"

#: admin/src/components/Dashboard.js:199
msgid "Loops"
msgstr "Bucles"

#: admin/src/components/Dashboard.js:213
msgid ""
"No scan data yet. Run your first scan above to see broken links, redirects, "
"and affiliate breakdowns appear here."
msgstr ""
"Aún no hay datos de análisis. Ejecuta tu primer análisis arriba para ver "
"aquí los enlaces rotos, las redirecciones y el desglose de afiliados."

#: admin/src/components/Dashboard.js:245
msgid "Link Types"
msgstr "Tipos de enlace"

#: admin/src/components/Dashboard.js:270
msgid "Affiliate Networks"
msgstr "Redes de afiliación"

#: admin/src/components/Dashboard.js:295
#: admin/src/components/SettingsPanel.js:208
msgid "Destination health"
msgstr "Salud de los destinos"

#: admin/src/components/Dashboard.js:297
msgid ""
"Links whose destination changed hands, went dead, or now serves something "
"else. Open a link to see what was observed before deciding."
msgstr ""
"Enlaces cuyo destino ha cambiado de manos, ha desaparecido o ahora muestra "
"otra cosa. Abre un enlace para ver qué se observó antes de decidir."

#: admin/src/components/Dashboard.js:326
msgid "Redirections"
msgstr "Redirecciones"

#: admin/src/components/Dashboard.js:353
msgid "Support & Feedback"
msgstr "Soporte y comentarios"

#: admin/src/components/Dashboard.js:356
msgid "Are we missing a feature? Found a bug? Or just want to say thanks?"
msgstr ""
"¿Te falta alguna función? ¿Has encontrado un error? ¿O simplemente quieres "
"dar las gracias?"

#: admin/src/components/Dashboard.js:369
msgid "Get Support"
msgstr "Obtener soporte"

#: admin/src/components/ErrorBoundary.js:50
msgid "Something went wrong."
msgstr "Algo ha salido mal."

#: admin/src/components/ErrorBoundary.js:57
msgid ""
"An unexpected error occurred in the plugin interface. Please try reloading."
msgstr ""
"Se ha producido un error inesperado en la interfaz del plugin. Intenta "
"recargar la página."

#: admin/src/components/ErrorBoundary.js:65
msgid "Error details"
msgstr "Detalles del error"

#: admin/src/components/ErrorBoundary.js:84
msgid "Try Again"
msgstr "Intentar de nuevo"

#: admin/src/components/ExportModal.js:72
msgid ""
"Export failed: missing security token. Please reload the page and try again."
msgstr ""
"Error al exportar: falta el token de seguridad. Recarga la página e "
"inténtalo de nuevo."

#: admin/src/components/ExportModal.js:108
msgid "Export Links"
msgstr "Exportar enlaces"

#: admin/src/components/ExportModal.js:113
msgid "Format"
msgstr "Formato"

#: admin/src/components/ExportModal.js:118
msgid "CSV (spreadsheet)"
msgstr "CSV (hoja de cálculo)"

#: admin/src/components/ExportModal.js:122
msgid "JSON (for AI / scripts)"
msgstr "JSON (para IA / scripts)"

#: admin/src/components/ExportModal.js:133
msgid "Preset"
msgstr "Preajuste"

#: admin/src/components/ExportModal.js:140
msgid "Full"
msgstr "Completo"

#: admin/src/components/ExportModal.js:146
msgid "AI Analysis"
msgstr "Análisis con IA"

#: admin/src/components/ExportModal.js:154
msgid "Minimal"
msgstr "Mínimo"

#: admin/src/components/ExportModal.js:162
msgid "Custom"
msgstr "Personalizado"

#: admin/src/components/ExportModal.js:169
msgid "Columns to export"
msgstr "Columnas para exportar"

#: admin/src/components/ExportModal.js:171
msgid "Columns"
msgstr "Columnas"

#: admin/src/components/ExportModal.js:183
msgid "Date filter field"
msgstr "Campo de filtro por fecha"

#: admin/src/components/ExportModal.js:188
msgid "Last checked"
msgstr "Última comprobación"

#: admin/src/components/ExportModal.js:192
msgid "Created at"
msgstr "Fecha de creación"

#: admin/src/components/ExportModal.js:200
msgid "From"
msgstr "Desde"

#: admin/src/components/ExportModal.js:210
msgid "To"
msgstr "Hasta"

#: admin/src/components/ExportModal.js:222
msgid "Select at least one column to export."
msgstr "Selecciona al menos una columna para exportar."

#. translators: %d: column count
#: admin/src/components/ExportModal.js:240
msgid "Export %d columns"
msgstr "Exportar %d columnas"

#: admin/src/components/FilterBar.js:12
msgid "All"
msgstr "Todos"

#: admin/src/components/FilterBar.js:26
msgid "Dead domains"
msgstr "Dominios muertos"

#: admin/src/components/FilterBar.js:37
msgid "Quick status filters"
msgstr "Filtros rápidos por estado"

#: admin/src/components/LinkEditModal.js:115
msgid "Edit Link"
msgstr "Editar enlace"

#: admin/src/components/LinkEditModal.js:123
#: admin/src/components/LinkTable.js:424 admin/src/utils/constants.js:250
msgid "URL"
msgstr ""

#: admin/src/components/LinkEditModal.js:129
msgid "Rel attribute"
msgstr "Atributo rel"

#: admin/src/components/LinkEditModal.js:132
msgid "e.g. nofollow sponsored"
msgstr "p. ej. nofollow sponsored"

#: admin/src/components/LinkEditModal.js:139
msgid "Open in new tab"
msgstr "Abrir en una pestaña nueva"

#: admin/src/components/LinkEditModal.js:143
msgid "Keep current target"
msgstr "Mantener el destino actual"

#: admin/src/components/LinkEditModal.js:150
msgid "Open in new tab (_blank, adds noopener/noreferrer)"
msgstr "Abrir en una pestaña nueva (_blank, añade noopener/noreferrer)"

#: admin/src/components/LinkEditModal.js:157
msgid "Open in same tab (remove target)"
msgstr "Abrir en la misma pestaña (elimina target)"

#: admin/src/components/LinkEditModal.js:175
msgid "Found in:"
msgstr "Encontrado en:"

#: admin/src/components/LinkEditModal.js:206
msgid "Save"
msgstr "Guardar"

#: admin/src/components/LinkTable.js:441
msgid "HTTP"
msgstr ""

#: admin/src/components/LinkTable.js:453 admin/src/utils/constants.js:253
msgid "Status"
msgstr "Estado"

#: admin/src/components/LinkTable.js:471 admin/src/utils/constants.js:254
msgid "Type"
msgstr "Tipo"

#: admin/src/components/LinkTable.js:493
msgid "Rel"
msgstr ""

#: admin/src/components/LinkTable.js:501 admin/src/utils/constants.js:276
msgid "Risk"
msgstr "Riesgo"

#: admin/src/components/LinkTable.js:511 admin/src/utils/constants.js:272
msgid "Last Checked"
msgstr "Última comprobación"

#: admin/src/components/LinkTable.js:522
msgid "Language"
msgstr "Idioma"

#: admin/src/components/LinkTable.js:542 admin/src/utils/constants.js:256
msgid "Network"
msgstr "Red"

#: admin/src/components/LinkTable.js:581
msgid "Affiliate links only"
msgstr "Solo enlaces de afiliado"

#. translators: %s: affiliate network label.
#: admin/src/components/LinkTable.js:590
msgid "Network: %s"
msgstr "Red: %s"

#: admin/src/components/LinkTable.js:609
msgid "Filtered view:"
msgstr "Vista filtrada:"

#: admin/src/components/LinkTable.js:624
msgid "Show all links"
msgstr "Mostrar todos los enlaces"

#: admin/src/components/LinkTable.js:638
msgid "Export…"
msgstr "Exportar…"

#: admin/src/components/LinkTable.js:659
msgid ""
"No links indexed yet. Open the Dashboard tab and click \"Full Scan\" to "
"populate this table."
msgstr ""
"Aún no hay enlaces indexados. Abre la pestaña Escritorio y haz clic en "
"«Análisis completo» para rellenar esta tabla."

#: admin/src/components/RelAttributeConfirmModal.js:90
msgid "Calculating impact…"
msgstr "Calculando el impacto…"

#: admin/src/components/RelAttributeConfirmModal.js:98
msgid ""
"WordPress posts will be updated silently (no new revision, no post_modified "
"change)."
msgstr ""
"Las entradas de WordPress se actualizarán de forma silenciosa (sin nueva "
"revisión ni cambio en post_modified)."

#. translators: %d posts that will be modified.
#: admin/src/components/RelAttributeConfirmModal.js:108
msgid "%d post will be modified"
msgid_plural "%d posts will be modified"
msgstr[0] "Se modificará %d entrada"
msgstr[1] "Se modificarán %d entradas"

#: admin/src/components/RelAttributeConfirmModal.js:135
msgid "Links that will be patched"
msgstr "Enlaces que se corregirán"

#. translators: 1: instance count, 2: post count.
#: admin/src/components/RelAttributeConfirmModal.js:167
msgid "%1$d instance(s) in %2$d post(s)"
msgstr "%1$d instancia(s) en %2$d entrada(s)"

#. translators: %d: count of additional links not shown in the preview.
#: admin/src/components/RelAttributeConfirmModal.js:183
msgid "…and %d more link will be patched."
msgid_plural "…and %d more links will be patched."
msgstr[0] "…y se corregirá %d enlace más."
msgstr[1] "…y se corregirán %d enlaces más."

#: admin/src/components/RelBadges.js:19 admin/src/utils/constants.js:190
msgid "Has rel=\"nofollow\""
msgstr "Tiene rel=\"nofollow\""

#: admin/src/components/RelBadges.js:25 admin/src/utils/constants.js:194
msgid "Has rel=\"sponsored\""
msgstr "Tiene rel=\"sponsored\""

#: admin/src/components/RelBadges.js:31 admin/src/utils/constants.js:196
msgid "Has rel=\"ugc\""
msgstr "Tiene rel=\"ugc\""

#: admin/src/components/RelBadges.js:49
msgid "All instances are dofollow"
msgstr "Todas las instancias son dofollow"

#: admin/src/components/RelBadges.js:54
msgid "DF"
msgstr ""

#: admin/src/components/RiskBadge.js:20
msgid "Not assessed yet"
msgstr "Todavía sin evaluar"

#: admin/src/components/RiskEvidence.js:42
msgid "Request failed."
msgstr "La solicitud ha fallado."

#. translators: %s: risk level label.
#: admin/src/components/RiskEvidence.js:54
msgid "Reputation: %s"
msgstr "Reputación: %s"

#: admin/src/components/RiskEvidence.js:79
msgid "Destination domain"
msgstr "Dominio de destino"

#: admin/src/components/RiskEvidence.js:86
msgid "Lands on"
msgstr "Aterriza en"

#: admin/src/components/RiskEvidence.js:94
msgid "Assessed"
msgstr "Evaluado"

#: admin/src/components/RiskEvidence.js:107
msgid "Re-check now"
msgstr "Volver a comprobar ahora"

#. translators: %s: registrable domain name.
#: admin/src/components/RiskEvidence.js:123
msgid "Trust %s"
msgstr "Confiar en %s"

#: admin/src/components/RiskEvidence.js:140
msgid "Undo trust"
msgstr "Deshacer la confianza"

#: admin/src/components/ScanPanel.js:127
msgid "Full Scan"
msgstr "Análisis completo"

#: admin/src/components/ScanPanel.js:136
msgid "Delta Scan"
msgstr "Análisis delta"

#: admin/src/components/ScanPanel.js:145
msgid "Resume Scan"
msgstr "Reanudar análisis"

#: admin/src/components/ScanPanel.js:155
msgid "Reset Data"
msgstr "Restablecer datos"

#: admin/src/components/ScanPanel.js:164
msgid "Cancel Scan"
msgstr "Cancelar análisis"

#: admin/src/components/ScanPanel.js:172
msgid "Scan progress details"
msgstr "Detalles del progreso del análisis"

#: admin/src/components/ScanPanel.js:183
msgid "Scan progress"
msgstr "Progreso del análisis"

#. translators: 1: checked links, 2: total links, 3: progress percentage.
#: admin/src/components/ScanPanel.js:197
msgid "Checking links: %1$d / %2$d (%3$d%%)"
msgstr "Comprobando enlaces: %1$d / %2$d (%3$d%%)"

#. translators: 1: scanned posts, 2: total posts, 3: progress percentage.
#: admin/src/components/ScanPanel.js:207
msgid "Scanning posts: %1$d / %2$d (%3$d%%)"
msgstr "Analizando entradas: %1$d / %2$d (%3$d%%)"

#. translators: 1: total links (with singular/plural form), 2: ok count, 3: redirects, 4: broken count, 5: errors.
#: admin/src/components/ScanPanel.js:223
msgid ""
"Scan complete — %1$d link checked: %2$d OK, %3$d redirects, %4$d broken, "
"%5$d errors."
msgid_plural ""
"Scan complete — %1$d links checked: %2$d OK, %3$d redirects, %4$d broken, "
"%5$d errors."
msgstr[0] ""
"Análisis completado — %1$d enlace comprobado: %2$d OK, %3$d redirecciones, "
"%4$d rotos, %5$d errores."
msgstr[1] ""
"Análisis completado — %1$d enlaces comprobados: %2$d OK, %3$d redirecciones, "
"%4$d rotos, %5$d errores."

#: admin/src/components/ScanPanel.js:243
msgid "Enjoying the plugin? Please leave a 5-star review!"
msgstr "¿Te gusta el plugin? ¡Déjanos una reseña de 5 estrellas!"

#: admin/src/components/ScanPanel.js:253
msgid "Delta Scan only checks posts modified since the last successful scan."
msgstr ""
"El análisis delta solo comprueba las entradas modificadas desde el último "
"análisis correcto."

#: admin/src/components/ScanPanel.js:264
msgid ""
"Are you sure you want to reset all scan data? This will clear all links "
"found so far."
msgstr ""
"¿Seguro que quieres restablecer todos los datos de análisis? Esto borrará "
"todos los enlaces encontrados hasta ahora."

#: admin/src/components/SettingsPanel.js:93
msgid "Scanning"
msgstr "Análisis"

#: admin/src/components/SettingsPanel.js:98
msgid "Post types to scan"
msgstr "Tipos de contenido para analizar"

#: admin/src/components/SettingsPanel.js:106
msgid "Comma-separated list: post, page, product…"
msgstr "Lista separada por comas: post, page, product…"

#: admin/src/components/SettingsPanel.js:115
msgid "Batch size"
msgstr "Tamaño del lote"

#: admin/src/components/SettingsPanel.js:131
msgid "Scan custom fields"
msgstr "Analizar campos personalizados"

#: admin/src/components/SettingsPanel.js:145
msgid "HTTP Checks"
msgstr "Comprobaciones HTTP"

#: admin/src/components/SettingsPanel.js:150
msgid "Timeout (seconds)"
msgstr "Tiempo de espera (segundos)"

#: admin/src/components/SettingsPanel.js:169
msgid "Delay between requests (ms)"
msgstr "Retardo entre solicitudes (ms)"

#: admin/src/components/SettingsPanel.js:188
msgid "Recheck interval (days)"
msgstr "Intervalo de recomprobación (días)"

#: admin/src/components/SettingsPanel.js:213
msgid "Assess where links actually land"
msgstr "Evaluar dónde acaban realmente los enlaces"

#: admin/src/components/SettingsPanel.js:217
msgid ""
"Flags links whose destination went dead, changed hands, or now serves "
"something unrelated. Runs after a scan, never during it. Everything is "
"computed on your own server — no third-party service is contacted."
msgstr ""
"Señala los enlaces cuyo destino ha desaparecido, ha cambiado de manos o "
"ahora muestra contenido sin relación. Se ejecuta después de un escaneo, "
"nunca durante. Todo se calcula en tu propio servidor: no se contacta con "
"ningún servicio de terceros."

#: admin/src/components/SettingsPanel.js:230
msgid "Max destination fetches per run"
msgstr "Máximo de destinos consultados por pasada"

#: admin/src/components/SettingsPanel.js:244
msgid ""
"Counted per domain, not per link. Lower it on constrained shared hosting; "
"the remaining links are picked up on the next run."
msgstr ""
"Se cuenta por dominio, no por enlace. Redúcelo en alojamientos compartidos "
"limitados; los enlaces restantes se procesan en la siguiente pasada."

#: admin/src/components/SettingsPanel.js:254
msgid "FTC Disclosure"
msgstr "Divulgación FTC"

#: admin/src/components/SettingsPanel.js:259
msgid "Disclosure phrases"
msgstr "Frases de divulgación"

#: admin/src/components/SettingsPanel.js:267
msgid ""
"One phrase per line. Matching is case-insensitive. Example: \"As an Amazon "
"Associate I earn from qualifying purchases\"."
msgstr ""
"Una frase por línea. La coincidencia no distingue mayúsculas de minúsculas. "
"Ejemplo: «Como afiliado de Amazon, gano dinero con las compras que cumplen "
"los requisitos»."

#: admin/src/components/SettingsPanel.js:277
msgid "Minimum affiliate links to trigger alert"
msgstr "Mínimo de enlaces de afiliado para activar la alerta"

#: admin/src/components/SettingsPanel.js:291
msgid ""
"A post is flagged only if it carries at least this many affiliate links AND "
"none of the configured disclosure phrases."
msgstr ""
"Una entrada solo se marca si contiene al menos esta cantidad de enlaces de "
"afiliado Y ninguna de las frases de divulgación configuradas."

#: admin/src/components/SettingsPanel.js:301
msgid "Exclusions"
msgstr "Exclusiones"

#: admin/src/components/SettingsPanel.js:306
msgid "Exclude media files"
msgstr "Excluir archivos multimedia"

#: admin/src/components/SettingsPanel.js:314
msgid "Skip images, videos, and document files (PDF, etc.) during scanning."
msgstr "Omitir imágenes, vídeos y documentos (PDF, etc.) durante el análisis."

#: admin/src/components/SettingsPanel.js:323
msgid "Excluded URLs"
msgstr "URL excluidas"

#: admin/src/components/SettingsPanel.js:328
msgid "One URL pattern per line."
msgstr "Un patrón de URL por línea."

#: admin/src/components/SettingsPanel.js:346
msgid "Save Settings"
msgstr "Guardar ajustes"

#: admin/src/store/actions.js:167
msgid "Could not load links. Please try again."
msgstr "No se pudieron cargar los enlaces. Inténtalo de nuevo."

#: admin/src/store/actions.js:214
msgid "Scan started."
msgstr "Análisis iniciado."

#: admin/src/store/actions.js:222
msgid "Failed to start scan."
msgstr "No se pudo iniciar el análisis."

#: admin/src/store/actions.js:239
msgid "Scan cancelled."
msgstr "Análisis cancelado."

#: admin/src/store/actions.js:258
msgid "Scan resumed."
msgstr "Análisis reanudado."

#: admin/src/store/actions.js:266
msgid "Failed to resume scan."
msgstr "No se pudo reanudar el análisis."

#: admin/src/store/actions.js:286
msgid "Scan data reset."
msgstr "Datos de análisis restablecidos."

#: admin/src/store/actions.js:294
msgid "Failed to reset scan."
msgstr "No se pudieron restablecer los datos de análisis."

#: admin/src/store/actions.js:335
msgid "Settings saved."
msgstr "Ajustes guardados."

#: admin/src/store/actions.js:343
msgid "Failed to save settings."
msgstr "No se pudieron guardar los ajustes."

#: admin/src/store/actions.js:364
msgid "Link updated."
msgstr "Enlace actualizado."

#: admin/src/store/actions.js:373
msgid "Failed to update link."
msgstr "No se pudo actualizar el enlace."

#: admin/src/store/actions.js:388
msgid "Link deleted."
msgstr "Enlace eliminado."

#: admin/src/store/actions.js:397
msgid "Failed to delete link."
msgstr "No se pudo eliminar el enlace."

#: admin/src/store/actions.js:412
msgid "Recheck scheduled."
msgstr "Recomprobación programada."

#: admin/src/store/actions.js:421
msgid "Failed to schedule recheck."
msgstr "No se pudo programar la recomprobación."

#. translators: %d: number of links processed.
#: admin/src/store/actions.js:446
msgid "%d link(s) processed."
msgstr "%d enlace(s) procesado(s)."

#: admin/src/store/actions.js:459
msgid "Bulk action failed."
msgstr "La acción en lote ha fallado."

#. translators: 1: posts modified count, 2: instances updated count
#: admin/src/store/actions.js:479 admin/src/store/actions.js:518
msgid "Updated %1$d post(s), %2$d link instance(s)."
msgstr "Se han actualizado %1$d entrada(s), %2$d instancia(s) de enlace."

#: admin/src/store/actions.js:495
msgid "Failed to add rel=\"sponsored\"."
msgstr "No se pudo añadir rel=\"sponsored\"."

#: admin/src/store/actions.js:534
msgid "Failed to add rel=\"nofollow\"."
msgstr "No se pudo añadir rel=\"nofollow\"."

#: admin/src/utils/constants.js:70
msgid "The domain no longer resolves"
msgstr "El dominio ya no resuelve"

#: admin/src/utils/constants.js:71
msgid "Now redirects to a different domain"
msgstr "Ahora redirige a un dominio distinto"

#: admin/src/utils/constants.js:75
msgid "Destination is a parking / for-sale page"
msgstr "El destino es una página de aparcamiento o de venta de dominio"

#: admin/src/utils/constants.js:79
msgid "The page changed identity since first seen"
msgstr "La página ha cambiado de identidad desde el primer registro"

#: admin/src/utils/constants.js:83
msgid "Destination reads like gambling / pharma / payday content"
msgstr "El destino parece contenido de apuestas, farmacia o créditos rápidos"

#: admin/src/utils/constants.js:87
msgid "Anchor text and destination title have nothing in common"
msgstr "El texto ancla y el título del destino no tienen nada en común"

#: admin/src/utils/constants.js:99
msgid "Nofollow"
msgstr ""

#: admin/src/utils/constants.js:100
msgid "Sponsored"
msgstr ""

#: admin/src/utils/constants.js:101
msgid "UGC"
msgstr ""

#: admin/src/utils/constants.js:102
msgid "Dofollow"
msgstr ""

#: admin/src/utils/constants.js:113
msgid "Add rel=\"sponsored\" to affiliate links"
msgstr "Añadir rel=\"sponsored\" a los enlaces de afiliado"

#: admin/src/utils/constants.js:117
msgid "Apply rel=\"sponsored\""
msgstr "Aplicar rel=\"sponsored\""

#: admin/src/utils/constants.js:118
msgid ""
"Nothing to do — all selected affiliate links already carry rel=\"sponsored\"."
msgstr ""
"Nada que hacer: todos los enlaces de afiliado seleccionados ya tienen rel="
"\"sponsored\"."

#. translators: %d link instance count.
#: admin/src/utils/constants.js:128
msgid "%d link instance will receive rel=\"sponsored\""
msgid_plural "%d link instances will receive rel=\"sponsored\""
msgstr[0] "%d instancia de enlace recibirá rel=\"sponsored\""
msgstr[1] "%d instancias de enlace recibirán rel=\"sponsored\""

#. translators: 1: eligible link count, 2: skipped count.
#: admin/src/utils/constants.js:139
msgid "%1$d eligible affiliate link(s) / %2$d skipped (non-affiliate)"
msgstr "%1$d enlace(s) de afiliado válido(s) / %2$d omitido(s) (no afiliados)"

#: admin/src/utils/constants.js:148
msgid "Add rel=\"nofollow\" to external links"
msgstr "Añadir rel=\"nofollow\" a los enlaces externos"

#: admin/src/utils/constants.js:152
msgid "Apply rel=\"nofollow\""
msgstr "Aplicar rel=\"nofollow\""

#: admin/src/utils/constants.js:153
msgid ""
"Nothing to do — all selected external links already carry rel=\"nofollow\"."
msgstr ""
"Nada que hacer: todos los enlaces externos seleccionados ya tienen rel="
"\"nofollow\"."

#. translators: %d link instance count.
#: admin/src/utils/constants.js:160
msgid "%d link instance will receive rel=\"nofollow\""
msgid_plural "%d link instances will receive rel=\"nofollow\""
msgstr[0] "%d instancia de enlace recibirá rel=\"nofollow\""
msgstr[1] "%d instancias de enlace recibirán rel=\"nofollow\""

#. translators: 1: eligible link count, 2: skipped count.
#: admin/src/utils/constants.js:171
msgid "%1$d eligible external link(s) / %2$d skipped (internal)"
msgstr "%1$d enlace(s) externo(s) válido(s) / %2$d omitido(s) (internos)"

#: admin/src/utils/constants.js:199
msgid "Missing rel=\"nofollow\""
msgstr "Sin rel=\"nofollow\""

#: admin/src/utils/constants.js:208
msgid "All Affiliates"
msgstr "Todos los afiliados"

#: admin/src/utils/constants.js:211
msgid "Cloaked (Internal)"
msgstr "Encubiertos (internos)"

#: admin/src/utils/constants.js:215
msgid "Direct (External)"
msgstr "Directos (externos)"

#: admin/src/utils/constants.js:227
msgid "Amazon"
msgstr ""

#: admin/src/utils/constants.js:228
msgid "Awin"
msgstr ""

#: admin/src/utils/constants.js:229
msgid "Commission Junction"
msgstr ""

#: admin/src/utils/constants.js:230
msgid "ClickBank"
msgstr ""

#: admin/src/utils/constants.js:231
msgid "Commission Factory"
msgstr ""

#: admin/src/utils/constants.js:232
msgid "FlexOffers"
msgstr ""

#: admin/src/utils/constants.js:233
msgid "Impact"
msgstr ""

#: admin/src/utils/constants.js:234
msgid "PartnerStack"
msgstr ""

#: admin/src/utils/constants.js:235
msgid "Rakuten"
msgstr ""

#: admin/src/utils/constants.js:236
msgid "ShareASale"
msgstr ""

#: admin/src/utils/constants.js:237
msgid "Skimlinks"
msgstr ""

#: admin/src/utils/constants.js:238
msgid "Sovrn / VigLink"
msgstr ""

#: admin/src/utils/constants.js:239
msgid "Tradedoubler"
msgstr ""

#: admin/src/utils/constants.js:240
msgid "Webgains"
msgstr ""

#: admin/src/utils/constants.js:249
msgid "ID"
msgstr ""

#: admin/src/utils/constants.js:251
msgid "Final URL"
msgstr "URL final"

#: admin/src/utils/constants.js:252
msgid "HTTP Status"
msgstr "Estado HTTP"

#: admin/src/utils/constants.js:260
msgid "Redirect Count"
msgstr "Número de redirecciones"

#: admin/src/utils/constants.js:264
msgid "Redirect Chain"
msgstr "Cadena de redirección"

#: admin/src/utils/constants.js:268
msgid "Response Time (ms)"
msgstr "Tiempo de respuesta (ms)"

#: admin/src/utils/constants.js:270
msgid "Instances"
msgstr "Instancias"

#: admin/src/utils/constants.js:271
msgid "Languages"
msgstr "Idiomas"

#: admin/src/utils/constants.js:273
msgid "Created At"
msgstr "Fecha de creación"

#: admin/src/utils/constants.js:274
msgid "Last Error"
msgstr "Último error"

#: admin/src/utils/constants.js:275
msgid "Final Domain"
msgstr "Dominio final"

#: admin/src/utils/constants.js:277
msgid "Risk Signals"
msgstr "Señales de riesgo"

#: admin/src/components/LinkEditModal.js:142
msgid "Multiple rel values. Leave unchanged to preserve them; editing replaces all occurrences."
msgstr "Varios valores rel. Déjelos sin cambios para conservarlos; al editarlos se reemplazan todas las apariciones."

#: admin/src/components/LinkEditModal.js:146
msgid "Leave unchanged to preserve each occurrence. Editing replaces rel on all occurrences."
msgstr "Deje el campo sin cambios para conservar cada aparición. Al editarlo se reemplaza rel en todas las apariciones."

#: admin/src/components/RiskEvidence.js:83
msgid "Observed page title"
msgstr "Título de página observado"

#: admin/src/components/SettingsPanel.js:143
msgid "Custom field keys (one per line)"
msgstr "Claves de campos personalizados (una por línea)"
