{
  "_meta": {
    "locale": "es",
    "status": "machine-draft",
    "note": "Español completo. El núcleo (interfaz, inicio, formación, contacto, certificaciones, soporte, admin) es traducción revisada de forma idiomática; las secciones narrativas largas (Acerca de, Historia, Fabricantes, Cómo enseño, Colofón) se completaron con asistencia de IA. Recomendación: una revisión nativa completa antes de campañas de marketing. Tratamiento informal (tú). Sin guiones largos (em dash). Variables y nombres propios sin cambios."
  },
  "site": {
    "name": "ronutz",
    "tagline": "Herramientas de red y seguridad que se ejecutan en tu equipo, no en la nube de otra persona."
  },
  "nav": {
    "tools": "Herramientas",
    "about": "Acerca de",
    "certifications": "Certificaciones",
    "training": "Formación",
    "contact": "Contacto",
    "skipToContent": "Saltar al contenido",
    "openMenu": "Abrir menú",
    "closeMenu": "Cerrar menú",
    "learn": "Aprender",
    "endorsements": "Testimonios",
    "certs": "Certificaciones"
  },
  "languageSwitcher": {
    "label": "Idioma",
    "stubNotice": "Este idioma aún no está traducido. Mostrando en inglés."
  },
  "home": {
    "hero": {
      "eyebrow": "Creado por un profesional del sector, con la privacidad por delante",
      "title": "La caja de herramientas de red y seguridad que mantiene tus datos en tu equipo.",
      "subtitle": "Cálculo de subredes, diagnóstico de DNS y correo, inspección de certificados y mucho más, procesado de forma local en tu navegador. Sin subir datos, sin registros y sin necesidad de cuenta para las herramientas de uso diario.",
      "ctaPrimary": "Abrir la caja de herramientas",
      "ctaSecondary": "Quién lo desarrolla"
    },
    "credibility": {
      "title": "Creado por alguien que hace este trabajo desde 1996.",
      "body": "Treinta años en redes y seguridad empresarial, de la mano de un instructor en activo y no de una página de marketing. Certificado en cuatro plataformas, así que las comparaciones aquí se hacen con honestidad, no para vender.",
      "aboutCta": "Más sobre quién está detrás"
    },
    "pillars": {
      "title": "Cuatro plataformas, enseñadas y mantenidas al día.",
      "f5": "F5",
      "fortinet": "Fortinet",
      "extreme": "Extreme Networks",
      "netskope": "Netskope"
    },
    "privacy": {
      "title": "Por qué el procesamiento local importa en seguridad.",
      "body": "Cuando pegas una configuración, una captura de paquetes o un certificado en una herramienta, esos datos suelen contener secretos. Aquí, las herramientas de uso diario se ejecutan por completo en tu navegador. La información nunca sale de tu dispositivo, así que no hay nada que registrar, filtrar ni requerir judicialmente."
    },
    "toolPreview": {
      "title": "Prueba una herramienta ahora mismo.",
      "body": "La calculadora CIDR de abajo se ejecuta de forma local. Escribe una red y un prefijo para ver el rango de direcciones, la cantidad de hosts y la máscara. No se envía nada a ningún sitio.",
      "learnHeading": "Aprende los conceptos",
      "toolboxCta": "Abrir la caja de herramientas completa",
      "seeAllArticles": "Ver todos los artículos"
    },
    "provenance": {
      "title": "Créditos y fuentes",
      "show": "Mostrar",
      "hide": "Ocultar",
      "basisLabel": "Cómo funciona",
      "sourcesLabel": "Normas y fuentes"
    },
    "funding": {
      "title": "Apoya esta herramienta",
      "pitch": "Esta herramienta es gratuita y está hecha para seguir siéndolo. Si se gana un lugar en tu flujo de trabajo, puedes ayudar a financiar su mantenimiento y lo que viene.",
      "purposeLabel": "Financiando ahora"
    },
    "stats": {
      "tools": "Herramientas",
      "articles": "Artículos",
      "sectionLabel": "La caja de herramientas en breve"
    }
  },
  "tools": {
    "cidr": {
      "title": "Calculadora CIDR",
      "description": "Calcula las direcciones de red y de difusión, el rango de hosts utilizables, la cantidad de hosts y la máscara de un bloque CIDR IPv4. Se ejecuta de forma local en tu navegador.",
      "inputLabel": "Bloque CIDR",
      "inputPlaceholder": "192.168.1.0/24",
      "compute": "Calcular",
      "runsLocally": "Se ejecuta de forma local, no se envía nada a ningún servidor.",
      "prefixSlider": "Longitud del prefijo",
      "bitsHeading": "Bits de la dirección",
      "bitsNetwork": "Red",
      "bitsHost": "Host",
      "bitsNote": "Los bits resaltados identifican la red — el resto direcciona los hosts dentro de ella.",
      "results": {
        "network": "Dirección de red",
        "broadcast": "Dirección de difusión",
        "netmask": "Máscara de red",
        "wildcard": "Máscara comodín",
        "firstHost": "Primer host utilizable",
        "lastHost": "Último host utilizable",
        "totalAddresses": "Direcciones totales",
        "usableHosts": "Hosts utilizables"
      },
      "errors": {
        "empty": "Introduce un bloque CIDR para calcular.",
        "invalid": "Esto no parece un bloque CIDR válido. Prueba con un formato como 192.168.1.0/24."
      },
      "name": "Calculadora CIDR / de subredes",
      "blurb": "Descompón cualquier bloque CIDR de IPv4 en direcciones de red y de difusión, rango de hosts utilizables, número de hosts y máscara de red. Se ejecuta por completo en tu navegador.",
      "modes": {
        "subnet": "Subred",
        "vlsm": "VLSM",
        "supernet": "Superred",
        "overlap": "Solapamiento / hueco"
      },
      "modeDesc": {
        "subnet": "Analiza un único bloque CIDR de IPv4: red, difusión, máscara y rango de hosts.",
        "vlsm": "Divide un bloque padre en subredes de longitud variable según una lista de cantidades de hosts.",
        "supernet": "Resume una lista de prefijos en el menor conjunto de bloques que los cubren.",
        "overlap": "Detecta solapamientos y contención entre prefijos, además de huecos dentro de un ámbito opcional."
      },
      "vlsm": {
        "parentLabel": "Bloque padre",
        "reqsLabel": "Requisitos de subred",
        "namePlaceholder": "Nombre (opcional)",
        "hostsPlaceholder": "Hosts",
        "addRow": "Añadir subred",
        "remove": "Eliminar",
        "run": "Asignar",
        "th": {
          "name": "Nombre",
          "hosts": "Hosts",
          "network": "Red",
          "prefix": "Prefijo",
          "netmask": "Máscara de red",
          "range": "Rango utilizable",
          "broadcast": "Difusión",
          "usable": "Hosts utilizables"
        },
        "stat": {
          "parent": "Padre",
          "used": "Usadas",
          "free": "Libres",
          "utilization": "Utilización"
        },
        "unfit": "No cupieron",
        "parentPlaceholder": "10.0.0.0/24"
      },
      "supernet": {
        "label": "Prefijos a agregar",
        "run": "Agregar",
        "minimal": "Conjunto mínimo de cobertura",
        "single": "Superred única",
        "singleExtra": "Añade {extra} direcciones adicionales más allá de las entradas.",
        "stat": {
          "inputs": "Prefijos de entrada",
          "addresses": "Direcciones",
          "blocks": "Bloques agregados"
        },
        "placeholder": "192.168.0.0/24\n192.168.1.0/24"
      },
      "overlap": {
        "label": "Prefijos a comprobar",
        "scopeLabel": "Ámbito (opcional, habilita la detección de huecos)",
        "run": "Comprobar",
        "overlapsTitle": "Solapamientos",
        "noOverlaps": "No se encontraron solapamientos.",
        "gapsTitle": "Huecos en el ámbito",
        "noGaps": "No hay huecos en el ámbito indicado.",
        "kind": {
          "identical": "idéntico a",
          "contains": "contiene",
          "contained": "está dentro de",
          "partial": "se solapa parcialmente con"
        },
        "addresses": "direcciones",
        "stat": {
          "covered": "Cubiertas",
          "scope": "Ámbito"
        },
        "placeholder": "10.0.0.0/24\n10.0.0.128/25",
        "scopePlaceholder": "10.0.0.0/16"
      },
      "err": {
        "ipv4": "No es una dirección IPv4 válida. Usa cuatro octetos de 0 a 255, como 192.168.1.0.",
        "octet": "Un octeto está fuera de rango (cada uno debe estar entre 0 y 255).",
        "format": "Se esperaba el formato A.B.C.D/prefijo, como 192.168.1.0/24.",
        "prefix": "La longitud del prefijo debe estar entre 0 y 32.",
        "tooMany": "Demasiadas entradas. Reduce la lista e inténtalo de nuevo.",
        "noReqs": "Añade al menos un requisito de subred con un número de hosts.",
        "noPrefixes": "Introduce al menos un prefijo, uno por línea."
      },
      "rangeHeading": "Distribución de direcciones",
      "usableShort": "utilizables",
      "rfcNote": "/31 y /32 no reservan nada: cada dirección es utilizable (RFC 3021).",
      "reservedNote": "La primera dirección es la red y la última es el broadcast; ambas están reservadas, así que utilizables = total − 2."
    },
    "title": "Herramientas",
    "lede": "Pequeñas utilidades rápidas y respetuosas con la privacidad que se ejecutan por completo en tu navegador. Nada de lo que escribes se envía a ningún sitio. Vienen más en camino.",
    "open": "Abrir",
    "comingSoon": "Próximamente",
    "note": "Esta caja de herramientas crece. Se añaden nuevas herramientas aquí a medida que se publican, cada una de procesamiento local y de uso gratuito.",
    "learnHeading": "Aprende los conceptos",
    "backToTools": "Herramientas",
    "references": "Referencias",
    "jumpTo": "Ir a",
    "categories": {
      "identity": "Identidad y tokens",
      "encoding": "Codificación y datos",
      "hashing": "Hashing y cripto",
      "identifiers": "Identificadores",
      "pki": "Certificados y PKI",
      "networking": "Redes",
      "transport": "TLS y transporte"
    },
    "hash": {
      "name": "Generador de hash (SHA-1/256/384/512)",
      "blurb": "Calcula resúmenes SHA-1, SHA-256, SHA-384 y SHA-512 de cualquier texto, mostrados en hex y Base64, usando el Web Crypto nativo del navegador. Se ejecuta por completo en tu navegador.",
      "algorithmLabel": "Algoritmo de hash",
      "inputLabel": "Texto para aplicar hash",
      "inputPlaceholder": "The quick brown fox jumps over the lazy dog",
      "runsLocally": "El hashing se ejecuta localmente vía Web Crypto. Nada de lo que escribes sale de tu navegador.",
      "bits": "{bits} bits ({bytes} bytes)",
      "sha1Note": "SHA-1 está roto en cuanto a resistencia a colisiones y no es adecuado para seguridad (firmas, certificados). Solo sirve para sumas de verificación sin fines de seguridad y para interoperabilidad heredada.",
      "hex": "Hex",
      "base64": "Base64",
      "copy": "Copiar",
      "copied": "Copiado"
    },
    "hmac": {
      "name": "Generador de HMAC (SHA-256/384/512)",
      "blurb": "Calcula un HMAC con clave sobre un mensaje usando tu clave secreta, mostrado en hex y Base64, vía el Web Crypto nativo del navegador. La misma construcción que el verificador de JWT usa para HS256. Tu clave nunca sale de tu navegador.",
      "algorithmLabel": "Algoritmo HMAC",
      "messageLabel": "Mensaje",
      "messagePlaceholder": "El mensaje que se va a autenticar",
      "keyLabel": "Clave secreta",
      "keyPlaceholder": "Tu secreto compartido",
      "runsLocally": "El HMAC se ejecuta localmente vía Web Crypto. Tu mensaje y tu clave nunca salen de tu navegador.",
      "hex": "Hex",
      "base64": "Base64",
      "copy": "Copiar",
      "copied": "Copiado",
      "struct": {
        "heading": "Cómo se construye HMAC",
        "innerHash": "hash interno",
        "note": "HMAC aplica el hash al mensaje dos veces. La clave se combina mediante XOR con un pad interno fijo antes del primer hash y con un pad externo antes del segundo, y esta construcción de dos pads es lo que evita los ataques de extensión de longitud. La clave se reduce primero al tamaño de bloque del hash."
      }
    },
    "base64": {
      "name": "Códec Base64, Base32, Hex y porcentaje",
      "blurb": "Codifica texto a Base64, Base64 seguro para URL, Base32, hexadecimal o codificación porcentual, y decodifica cualquiera de ellos. Tolera el relleno y los espacios en blanco que falten, y señala los resultados binarios (no UTF-8). Se ejecuta por completo en tu navegador.",
      "directionLabel": "Dirección",
      "direction": {
        "encode": "Codificar",
        "decode": "Decodificar"
      },
      "inputLabelEncode": "Texto para codificar",
      "inputLabelDecode": "Texto codificado a decodificar",
      "placeholderEncode": "Hello, World!",
      "placeholderDecode": "SGVsbG8sIFdvcmxkIQ==",
      "runsLocally": "La codificación y la decodificación se ejecutan localmente. Nada de lo que pegas sale de tu navegador.",
      "decodeErrors": {
        "invalid-characters": "Esa entrada contiene caracteres fuera del alfabeto del códec seleccionado.",
        "invalid-length": "Esa entrada no tiene una longitud válida para el códec seleccionado.",
        "invalid-escape": "Esa entrada tiene un escape de porcentaje mal formado (un % no seguido de dos dígitos hexadecimales)."
      },
      "outputEncode": "Codificado",
      "outputDecode": "Texto decodificado",
      "copy": "Copiar",
      "copied": "Copiado",
      "emptyOutput": "(vacío)",
      "decodedBytes": "{bytes, plural, one {Se decodificó # byte} other {Se decodificaron # bytes}}.",
      "notUtf8": "{bytes, plural, one {Se decodificó # byte} other {Se decodificaron # bytes}}, pero el resultado no es texto UTF-8 válido (probablemente binario).",
      "codecLabel": "Códec",
      "codec": {
        "base64": "Base64",
        "base64url": "Base64URL",
        "base32": "Base32",
        "base16": "Hex",
        "percent": "Percent"
      }
    },
    "pkce": {
      "name": "Verificador y challenge de OAuth PKCE",
      "blurb": "Genera un code_verifier de OAuth 2.0 y deriva su code_challenge S256, o pega el tuyo y compruébalo con las reglas de longitud y de conjunto de caracteres de RFC 7636. La misma derivación SHA-256 en base64url que espera tu servidor de autorización. Se ejecuta por completo en tu navegador.",
      "verifierLabel": "Verificador de código",
      "verifierPlaceholder": "Pega un code_verifier, o genera uno",
      "generate": "Generar",
      "runsLocally": "La generación y la derivación se ejecutan localmente. Tu verificador nunca sale de tu navegador.",
      "lengthBadge": "Longitud {length} (43-128)",
      "charsetOk": "Conjunto de caracteres no reservados",
      "charsetBad": "Caracteres no válidos",
      "s256Title": "Code challenge · S256",
      "plainTitle": "Code challenge · plain",
      "plainNote": "El método plain está desaconsejado. Usa S256 siempre que el cliente pueda calcular SHA-256.",
      "encodingLabel": "base64url",
      "plainValueLabel": "= code_verifier",
      "copy": "Copiar",
      "copied": "Copiado",
      "flowHeading": "Cómo funciona PKCE",
      "laneClient": "App / Cliente",
      "laneServer": "Servidor de autorización",
      "s1": "Genera un code_verifier aleatorio",
      "s2": "Deriva el code_challenge",
      "s3": "La solicitud de autorización lleva el challenge",
      "s4": "El servidor almacena el challenge",
      "s5": "Código de autorización devuelto",
      "s6": "La solicitud de token lleva el verifier",
      "s7": "El servidor vuelve a derivar y compara",
      "s8": "Tokens de acceso y refresco emitidos"
    },
    "uuid": {
      "name": "Generador e inspector de UUID (v4 / v7)",
      "blurb": "Genera UUID v4 aleatorios o v7 ordenados por tiempo, o pega cualquier UUID para leer su versión, variante y (para v7) la marca de tiempo de creación incrustada. La generación usa la fuente aleatoria segura del navegador. Se ejecuta por completo en tu navegador.",
      "versionLabel": "Versión de UUID",
      "generate": "Generar",
      "clear": "Limpiar",
      "emptyHint": "Elige una versión y genera.",
      "runsLocally": "La generación y la inspección se ejecutan localmente. Nada se envía a ningún sitio.",
      "copy": "Copiar",
      "copied": "Copiado",
      "inspectLabel": "Inspeccionar un UUID",
      "inspectPlaceholder": "Pega cualquier UUID para decodificarlo",
      "valid": "UUID válido",
      "invalid": "No es un UUID válido",
      "versionField": "Versión",
      "variantField": "Variante",
      "timestampField": "Marca de tiempo (v7)",
      "versionValue": "Versión {version}"
    },
    "jwt": {
      "name": "Decodificador y verificador de JWT",
      "blurb": "Decodifica el encabezado y los claims de un JSON Web Token, lee su expiración y sus tiempos en lenguaje claro y verifica una firma HS256/384/512 con un secreto pegado. Se ejecuta por completo en tu navegador.",
      "inputLabel": "JSON Web Token",
      "inputPlaceholder": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
      "runsLocally": "La decodificación y las comprobaciones de firma se ejecutan localmente. El token y el secreto nunca salen de tu navegador.",
      "errors": {
        "empty": "Pega un JSON Web Token para decodificar.",
        "format": "Eso no parece un JWT. Un token tiene tres partes base64url separadas por puntos: header.payload.signature.",
        "header": "El encabezado no es válido. Debería ser JSON codificado en base64url.",
        "payload": "La carga útil no es válida. Debería ser JSON codificado en base64url."
      },
      "panels": {
        "header": "Encabezado",
        "payload": "Carga útil",
        "signature": "Firma",
        "noSignature": "Sin segmento de firma (token no protegido)."
      },
      "claims": {
        "iss": "Emisor (iss)",
        "sub": "Sujeto (sub)",
        "aud": "Audiencia (aud)",
        "jti": "ID de JWT (jti)",
        "iat": "Emitido en (iat)",
        "nbf": "No antes de (nbf)",
        "exp": "Expira (exp)"
      },
      "status": {
        "expired": "Expirado {rel}",
        "expiresIn": "Válido, expira {rel}",
        "notYetValid": "Aún no válido, comienza {rel}",
        "noExpiry": "Sin claim de expiración (exp)"
      },
      "verify": {
        "label": "Verificar firma HMAC (HS256/384/512)",
        "placeholder": "secreto compartido",
        "button": "Verificar",
        "valid": "Firma válida para este secreto.",
        "invalid": "La firma no coincide con este secreto.",
        "algNone": "Este token no está protegido (alg: none), así que no hay firma que verificar.",
        "unsupportedAlg": "La verificación en el navegador solo cubre HS256/384/512. {alg} es asimétrico y necesita una clave pública.",
        "hint": "El secreto solo se usa para calcular un HMAC en tu navegador. Nunca se envía a ningún sitio."
      },
      "struct": {
        "heading": "Anatomía de un JWT",
        "signingInput": "Entrada de la firma",
        "note": "La cabecera y el payload solo están codificados en base64url, no cifrados, así que cualquiera puede leerlos. La firma se calcula sobre la cabecera y el payload unidos por un punto, y es lo que comprueba un verificador."
      }
    },
    "x509": {
      "name": "Decodificador de certificados X.509",
      "blurb": "Pega un certificado en PEM, base64 o hex para leer su sujeto, emisor, ventana de validez, clave pública y extensiones v3, con huellas SHA-256 y SHA-1. Se ejecuta por completo en tu navegador.",
      "inputLabel": "Certificado X.509",
      "inputPlaceholder": "-----BEGIN CERTIFICATE-----\nMIIB...\n-----END CERTIFICATE-----",
      "runsLocally": "La decodificación y las huellas se ejecutan localmente. El certificado nunca sale de tu navegador.",
      "errors": {
        "empty": "Pega un certificado X.509 para decodificar.",
        "format": "Eso no parece un certificado. Pega PEM (-----BEGIN CERTIFICATE-----), base64 o hex.",
        "der": "Los bytes no son DER válido. Comprueba que se pegó todo el certificado, incluida la línea END.",
        "structure": "Esto se decodifica como ASN.1 pero no es un certificado X.509. Un certificado es una SEQUENCE de TBSCertificate, signatureAlgorithm y signatureValue."
      },
      "status": {
        "valid": "Válido, expira {rel}",
        "expired": "Expirado {rel}",
        "notYetValid": "Aún no válido, comienza {rel}"
      },
      "panels": {
        "subject": "Sujeto",
        "issuer": "Emisor",
        "details": "Detalles",
        "publicKey": "Clave pública",
        "extensions": "Extensiones",
        "fingerprints": "Huellas",
        "sct": "Certificate Transparency"
      },
      "fields": {
        "version": "Versión",
        "serial": "Número de serie",
        "notBefore": "No antes de",
        "notAfter": "No después de",
        "signatureAlgorithm": "Algoritmo de firma",
        "algorithm": "Algoritmo",
        "keySize": "Tamaño de clave",
        "exponent": "Exponente",
        "curve": "Curva",
        "bits": "{n} bits",
        "selfSigned": "Autoemitido"
      },
      "ext": {
        "san": "Nombres alternativos del sujeto",
        "keyUsage": "Uso de clave",
        "extKeyUsage": "Uso extendido de clave",
        "basicConstraints": "Restricciones básicas",
        "subjectKeyId": "Identificador de clave del sujeto",
        "authorityKeyId": "Identificador de clave de la autoridad",
        "caTrue": "Autoridad de certificación (CA: true)",
        "caFalse": "No es una CA (CA: false)",
        "pathLen": "longitud de ruta {n}",
        "critical": "crítico"
      },
      "fp": {
        "sha256": "SHA-256",
        "sha1": "SHA-1",
        "computing": "Calculando huellas..."
      },
      "chainHeading": "Cadena de confianza",
      "tierRoot": "CA raíz",
      "tierIntermediate": "CA intermedia",
      "tierLeaf": "Certificado de entidad final",
      "roleRoot": "Ancla de confianza autofirmada",
      "roleIntermediate": "Firmada por una raíz; firma certificados finales",
      "roleLeaf": "Identifica un servidor o cliente",
      "thisCert": "este certificado",
      "issuedBy": "Emitido por",
      "signs": "firma",
      "trustNote": "La confianza fluye hacia abajo: cada certificado está firmado por el de arriba, hasta una raíz en la que tu sistema ya confía.",
      "sct": {
        "intro": "SCT integrados: {n}. Cada uno es la prueba firmada por un registro CT de que registró este certificado; los navegadores exigen un número mínimo para que el certificado sea de confianza.",
        "entry": "SCT {i}",
        "logId": "ID de registro",
        "timestamp": "Registrado el",
        "signature": "Firma",
        "note": "Las firmas se muestran pero no se verifican aquí; verificar un SCT requiere la clave pública del registro y el precertificado."
      }
    },
    "ipv6": {
      "name": "Kit de herramientas IPv6",
      "blurb": "Analiza una dirección o un prefijo IPv6 para ver sus formas canónica (RFC 5952) y completamente expandida, su clasificación de uso especial, la aritmética de prefijo, una MAC EUI-64 si está presente y su nombre de DNS inverso ip6.arpa. Se ejecuta por completo en tu navegador.",
      "inputLabel": "Dirección o prefijo IPv6",
      "inputPlaceholder": "2001:db8::1/64",
      "runsLocally": "El análisis se ejecuta localmente. La dirección nunca sale de tu navegador.",
      "errors": {
        "empty": "Introduce una dirección o un prefijo IPv6 para decodificar.",
        "format": "Esa no es una dirección IPv6 válida. Usa ocho grupos hex, opcionalmente comprimidos con :: una vez (por ejemplo 2001:db8::1).",
        "prefix": "La longitud del prefijo no es válida. Para IPv6 debe estar entre 0 y 128."
      },
      "panels": {
        "forms": "Formas canónicas",
        "classification": "Clasificación",
        "prefix": "Prefijo",
        "identifiers": "Identificadores"
      },
      "fields": {
        "compressed": "Comprimida (RFC 5952)",
        "expanded": "Expandida",
        "type": "Tipo",
        "scope": "Ámbito",
        "embeddedIpv4": "IPv4 incrustada",
        "network": "Red",
        "firstAddress": "Primera dirección",
        "lastAddress": "Última dirección",
        "count": "Direcciones",
        "hostBits": "Bits de host",
        "eui64": "MAC EUI-64",
        "reverseDns": "DNS inverso (ip6.arpa)"
      },
      "badges": {
        "multicast": "multidifusión"
      },
      "segHeading": "Estructura de la dirección",
      "networkSeg": "Prefijo de red",
      "ifaceId": "ID de interfaz",
      "hostBits": "Bits de host",
      "prefixNote": "Los bits a la izquierda del límite los fija el prefijo; los bits a la derecha identifican el host dentro de él.",
      "conventionNote": "No se indicó prefijo, así que la línea discontinua marca la división convencional /64: prefijo de enrutamiento y subred a la izquierda, el identificador de interfaz de 64 bits a la derecha."
    },
    "cipher": {
      "name": "Decodificador de suites de cifrado",
      "blurb": "Introduce una suite de cifrado TLS, como nombre IANA, nombre OpenSSL o GnuTLS, o un punto de código hexadecimal, para desglosarla en su intercambio de claves, autenticación, cifrado, modo y MAC, con una lectura de seguridad en lenguaje claro y la recomendación oficial de IANA. Se ejecuta por completo en tu navegador contra una copia incorporada del registro de IANA.",
      "inputLabel": "Suite de cifrado",
      "inputPlaceholder": "TLS_AES_128_GCM_SHA256, ECDHE-RSA-AES128-GCM-SHA256, o 0x1301",
      "runsLocally": "La decodificación se ejecuta localmente contra una copia incorporada del registro de suites de cifrado TLS de IANA. No se envía nada a ningún sitio.",
      "notInRegistryNote": "Este nombre se analizó estructuralmente, pero no se encontró en la instantánea incorporada del registro de IANA, así que no se muestran su punto de código ni sus nombres equivalentes.",
      "errors": {
        "empty": "Introduce una suite de cifrado para decodificar.",
        "format": "Eso no es una suite de cifrado. Introduce un nombre IANA (TLS_...), un nombre OpenSSL o un punto de código hexadecimal como 0x1301.",
        "unknown": "Ese es un formato de punto de código válido, pero no es una suite de cifrado asignada en el registro de IANA."
      },
      "ratings": {
        "recommended": "Recomendada",
        "secure": "Segura",
        "weak": "Débil",
        "insecure": "Insegura",
        "unknown": "Desconocida"
      },
      "iana": {
        "Y": "IANA: recomendada",
        "N": "IANA: no recomendada",
        "D": "IANA: desaconsejada"
      },
      "badges": {
        "tls13": "TLS 1.3",
        "notInRegistry": "Fuera de la instantánea de IANA"
      },
      "panels": {
        "identity": "Identidad",
        "components": "Componentes",
        "security": "Seguridad"
      },
      "fields": {
        "codePoint": "Punto de código",
        "name": "Nombre IANA",
        "openssl": "Nombre OpenSSL",
        "gnutls": "Nombre GnuTLS",
        "protocol": "Protocolo",
        "dtls": "DTLS-OK",
        "references": "Referencias"
      },
      "protocol": {
        "tls13": "TLS 1.3",
        "legacy": "TLS 1.2 y anteriores"
      },
      "comp": {
        "keyExchange": "Intercambio de claves",
        "authentication": "Autenticación",
        "forwardSecrecy": "Confidencialidad futura",
        "cipher": "Cifrado",
        "mode": "Modo",
        "aead": "AEAD",
        "prf": "Hash PRF/KDF",
        "mac": "MAC",
        "yes": "Sí",
        "no": "No",
        "bits": "{n} bits",
        "negotiatedSeparately": "Se negocia por separado (TLS 1.3)"
      },
      "reasons": {
        "nullCipher": "Cifrado NULL: el tráfico no se cifra en absoluto.",
        "anon": "Intercambio de claves anónimo: el par no se autentica, por lo que no ofrece ninguna protección frente a un intermediario activo.",
        "export40": "Clave de grado de exportación de 40 bits: se fuerza por fuerza bruta de forma trivial, un vestigio de las reglas de exportación de los años noventa.",
        "rc4": "Cifrado de flujo RC4: su flujo de claves sesgado lo hace inseguro, y el RFC 7465 lo prohíbe para TLS.",
        "singleDes": "DES simple con clave de 56 bits: se fuerza por fuerza bruta en horas.",
        "rc2": "RC2: un cifrado obsoleto de 40/64 bits que no es seguro para uso moderno.",
        "tripleDes": "3DES tiene un bloque de 64 bits, lo que lo expone al ataque de cumpleaños Sweet32 (CVE-2016-2183). El RFC 8429 lo declara obsoleto.",
        "md5Mac": "MAC con MD5: MD5 está roto criptográficamente.",
        "cbcMac": "CBC con un MAC HMAC-SHA1 o MD5 usa MAC-then-encrypt, expuesto a ataques de oráculo de relleno como BEAST y Lucky13.",
        "ccm8": "CCM_8 trunca la etiqueta de autenticación a 8 bytes, debilitando la integridad. IANA no lo marca como recomendado.",
        "noFs": "Sin confidencialidad futura: con un intercambio de claves estático, una clave a largo plazo comprometida puede descifrar sesiones pasadas. La guía moderna exige ECDHE o DHE.",
        "legacyCipher": "{value} es un cifrado heredado, obsoleto para TLS.",
        "aead": "Cifrado AEAD (cifrado autenticado): confidencialidad e integridad en una sola primitiva, sin un MAC separado que se pueda usar mal.",
        "fs": "Confidencialidad futura: un intercambio de claves efímero mantiene a salvo el tráfico pasado aunque la clave a largo plazo se comprometa después.",
        "tls13": "Suite de TLS 1.3: solo cifrados AEAD modernos, con el intercambio de claves negociado por separado y siempre efímero.",
        "ianaD": "IANA marca esta suite como \"D\" (desaconsejada): NO DEBERÍA o NO DEBE usarse, según la situación.",
        "ianaN": "IANA no marca esta suite como \"Recomendada\": tiene aplicabilidad limitada o no ha pasado por el proceso de consenso del IETF.",
        "signalling": "Suite de señalización (SCSV): no es un cifrado real, transmite una señal de protocolo como la protección frente a degradación o la información de renegociación."
      },
      "groups": {
        "title": "Grupos de intercambio de claves",
        "intro": "TLS negocia el grupo de acuerdo de claves por separado de la suite de cifrado, en la extensión supported_groups. Como \"harvest now, decrypt later\" impulsa el paso al intercambio de claves poscuántico, los grupos híbridos siguientes combinan una curva clásica con ML-KEM.",
        "kind": {
          "ecdhe": "Curva ECDHE",
          "ffdhe": "DH de campo finito",
          "pq-hybrid": "Híbrido PQ"
        },
        "pq": {
          "classical": "Clásico",
          "hybrid-pq": "PQ híbrido"
        },
        "recommended": "Recomendado",
        "obsolete": "Obsoleto",
        "legacy": "Heredado",
        "combines": "Combina {classical} con {pq}",
        "foot": "X25519MLKEM768 es el grupo híbrido que la mayoría de los navegadores ya envían de forma predeterminada."
      }
    },
    "f5-ssl-profile-explainer": {
      "name": "Explicador de perfiles SSL de F5",
      "blurb": "Pega un perfil client-ssl o server-ssl de tmsh y obtén su rol, la matriz de protocolos TLS y un análisis de seguridad sobre cadena, renegociación, SNI, OCSP y TLS mutuo — todo en tu navegador.",
      "inputLabel": "Perfil SSL (tmsh)",
      "inputPlaceholder": "ltm profile client-ssl /Common/name ...",
      "runsLocally": "Procesado en tu navegador. No se envía nada a ningún sitio.",
      "scopeNote": "Decodifica un bloque de perfil pegado. Nunca contacta con un BIG-IP.",
      "errorTitle": "No se pudo leer el perfil",
      "err_empty": "Pega un perfil SSL para empezar.",
      "err_noHeader": "Se esperaba una línea como: ltm profile client-ssl /Common/name ...",
      "err_noBody": "No se encontró ninguna llave de apertura en el perfil.",
      "err_tooLong": "Esa entrada es demasiado grande para procesar.",
      "err_invalid": "Esto no parece un perfil client-ssl o server-ssl.",
      "protocolsHeading": "Versiones del protocolo TLS",
      "permitted": "permitido",
      "disabled": "deshabilitado",
      "findingsHeading": "Evaluación de seguridad",
      "settingsHeading": "Configuración explicada",
      "topoHeading": "En la ruta de datos",
      "nodeClient": "Cliente",
      "nodeBigip": "BIG-IP",
      "nodePool": "Miembro del pool",
      "clientLeg": "TLS del lado del cliente",
      "serverLeg": "Lado del servidor",
      "thisProfile": "este perfil",
      "clientNote": "Un perfil client-ssl termina el TLS del cliente en el BIG-IP. La conexión hacia el miembro del pool solo se vuelve a cifrar si se aplica un perfil server-ssl; sin él, ese tramo va en texto claro (SSL offload).",
      "serverNote": "Un perfil server-ssl permite que el BIG-IP abra una nueva conexión TLS hacia el miembro del pool (recifrado). El lado del cliente lo gestiona un perfil client-ssl aparte."
    },
    "epoch": {
      "name": "Conversor de tiempo Unix",
      "blurb": "Escribe una marca de tiempo Unix — segundos, milisegundos, microsegundos o nanosegundos, detectada automáticamente — o una fecha ISO-8601, y léela en todos los formatos comunes. Todo en tu navegador.",
      "inputLabel": "Marca de tiempo o fecha",
      "inputPlaceholder": "1700000000  o  2023-11-14T22:13:20Z",
      "runsLocally": "Convertido en tu navegador. No se envía nada a ningún sitio.",
      "scopeNote": "Matemática de fechas pura. La unidad se deduce del tamaño del número; corrígela si hace falta.",
      "nowButton": "Ahora",
      "errorTitle": "No se pudo leer eso",
      "err_empty": "Introduce una marca de tiempo o fecha para empezar.",
      "err_invalid": "Eso no es una marca de tiempo Unix ni una fecha ISO-8601.",
      "err_tooLong": "Esa entrada es demasiado larga.",
      "err_outOfRange": "Esa marca de tiempo está fuera del rango de fechas representable.",
      "utcHeading": "Fecha y hora UTC",
      "formatsHeading": "Todos los formatos",
      "dayOfYearLabel": "día del año",
      "relativeNote": "relativo al reloj de tu dispositivo"
    },
    "irules-event-order": {
      "name": "Orden de eventos de iRule",
      "blurb": "Elige el conjunto de perfiles de un virtual server de BIG-IP — Client-SSL, HTTP, Server-SSL, pool — y ve el orden en que se disparan los eventos de iRule comunes, de CLIENT_ACCEPTED a CLIENT_CLOSED, como línea de tiempo y lista. Todo en tu navegador.",
      "stackLabel": "Conjunto de perfiles del virtual server",
      "tog_clientssl": "Perfil Client-SSL",
      "tog_http": "Perfil HTTP",
      "tog_serverssl": "Perfil Server-SSL",
      "tog_pool": "Pool (balanceo de carga)",
      "tog_fastl4": "FastL4 (ruta rápida de paquetes)",
      "presetsLabel": "Preajustes:",
      "preset_https": "HTTPS con recifrado",
      "preset_offload": "Descarga SSL",
      "preset_http": "HTTP",
      "preset_tcp": "TCP puro",
      "runsLocally": "Calculado en tu navegador. No se envía nada a ningún sitio.",
      "scopeNote": "Un modelo del comportamiento documentado de F5 para un virtual server Standard. Nunca contacta con un BIG-IP.",
      "diagramHeading": "Secuencia de eventos",
      "listHeading": "Eventos en orden",
      "conditionalHeading": "Eventos condicionales",
      "conditionalNote": "Estos se disparan solo bajo condiciones específicas: un TCP::collect o HTTP::collect, un fallo de balanceo, o una respuesta 100 Continue.",
      "sideClient": "lado cliente",
      "sideServer": "lado servidor",
      "sideGlobal": "global"
    },
    "cert-renewal-planner": {
      "name": "Planificador de renovación de certificados",
      "blurb": "Calcula la validez de un certificado TLS, si cumple el calendario de 47 días del CA/Browser Forum, y la cadencia de renovación que implica; todo sin conexión.",
      "notBeforeLabel": "Emitido (notBefore)",
      "notAfterLabel": "Caduca (notAfter)",
      "runsLocally": "Todo se ejecuta en tu navegador; no se sube nada.",
      "exampleLabel": "Probar un ejemplo de 90 días",
      "summaryHeading": "Este certificado",
      "validity": "Validez de {days} días",
      "compliantBadge": "Dentro del límite",
      "overCapBadge": "Por encima del límite",
      "maxForPhase": "Máximo para su fecha de emisión: {max} días.",
      "overByText": "{days} días por encima del máximo de {max} días para su fecha de emisión; una CA pública no lo emitiría.",
      "renewalsValue": "Unas {n} renovaciones al año con esta validez.",
      "remainingHeading": "Según el reloj de tu dispositivo",
      "daysRemaining": "{days} días hasta que caduque.",
      "expiredText": "Caducó hace {days} días.",
      "renewByText": "Renovar antes del {date} (unos {lead} días antes de caducar)",
      "renewByDue": "dentro de {days} días",
      "reuseHeading": "Reutilización de la validación (era de emisión)",
      "dcvText": "Los datos de validación de dominio (DCV) se pueden reutilizar durante {days} días.",
      "siiText": "La identidad de la organización (SII de OV/EV) se puede reutilizar durante {days} días.",
      "scheduleHeading": "El calendario SC-081v3",
      "scheduleIntro": "Los máximos de TLS público dependen de la fecha de emisión del certificado:",
      "colPeriod": "Emitido desde",
      "colValidity": "Validez máx. (días)",
      "colDcv": "Reutilización DCV (días)",
      "colSii": "Reutilización SII (días)",
      "phaseP0": "Antes del 15 mar 2026",
      "phaseP1": "15 mar 2026",
      "phaseP2": "15 mar 2027",
      "phaseP3": "15 mar 2029",
      "yourPhase": "← este certificado",
      "projectionHeading": "Carga de renovación en cada límite",
      "projectionIntro": "Renovaciones por certificado y año, a medida que los límites se reducen:",
      "perYearShort": "año",
      "note_overCap": "Esta validez supera el máximo de {max} días para su fecha de emisión.",
      "note_future47": "Conforme hoy, pero más largo que el futuro límite de 47 días; espera renovaciones más frecuentes a medida que avance el calendario.",
      "note_publicOnly": "Estos límites se aplican solo a certificados TLS de confianza pública. La PKI privada o interna no se rige por la SC-081v3.",
      "note_automate": "Con estas cadencias, automatiza la emisión y la renovación con ACME (RFC 8555) y ARI (RFC 9773); la renovación manual no escala.",
      "err_empty": "Introduce ambas fechas, emisión y caducidad.",
      "err_invalidDate": "Usa una fecha válida (AAAA-MM-DD).",
      "err_order": "La fecha de caducidad debe ser posterior a la de emisión.",
      "err_tooLong": "Esta entrada es demasiado larga.",
      "err_invalid": "No se pudieron leer esas fechas."
    },
    "csr-decoder": {
      "name": "Decodificador de CSR",
      "blurb": "Decodifica una solicitud de firma de certificado PKCS#10 para leer su sujeto, clave pública, SAN y extensiones solicitados, y atributos; todo en tu navegador.",
      "inputLabel": "Solicitud de firma de certificado (PEM, base64 o hexadecimal)",
      "inputPlaceholder": "-----BEGIN CERTIFICATE REQUEST-----\n...",
      "exampleLabel": "Cargar una CSR de ejemplo",
      "runsLocally": "Todo se ejecuta en tu navegador; la CSR nunca se sube.",
      "notCertNote": "Una CSR es una solicitud, no un certificado. No tiene número de serie, ni emisor, ni fechas de validez; solo lo que el solicitante pide que una CA certifique.",
      "subjectHeading": "Sujeto",
      "colAttr": "Atributo",
      "colValue": "Valor",
      "noSubject": "Sin nombre de sujeto (esta CSR se basa en los SAN solicitados).",
      "keyHeading": "Clave pública",
      "keyAlgorithmLabel": "Algoritmo",
      "keySizeLabel": "Tamaño",
      "keySizeValue": "{bits} bits",
      "keyCurveLabel": "Curva",
      "keyExponentLabel": "Exponente",
      "keyExponentValue": "{exp}",
      "requestedHeading": "Extensiones solicitadas",
      "sanLabel": "Subject Alternative Names",
      "keyUsageLabel": "Uso de clave",
      "ekuLabel": "Uso extendido de clave",
      "basicConstraintsLabel": "Restricciones básicas",
      "caYes": "CA: sí",
      "caNo": "CA: no",
      "pathLenValue": "longitud de ruta {n}",
      "noRequested": "No se solicitaron extensiones.",
      "attributesHeading": "Atributos",
      "challengePasswordLabel": "Contraseña de desafío",
      "unstructuredNameLabel": "Nombre no estructurado",
      "signatureHeading": "Autofirma",
      "signatureAlgLabel": "Algoritmo",
      "signatureBitsLabel": "Longitud",
      "signatureBitsValue": "{bits} bits",
      "versionValue": "Versión: v1 ({v})",
      "derLengthValue": "DER: {bytes} bytes",
      "err_empty": "Pega una solicitud de firma de certificado para decodificar.",
      "err_format": "Esto no parece una CSR en PEM, base64 ni hexadecimal.",
      "err_der": "No se pudo analizar la estructura DER.",
      "err_structure": "Esto se analiza como DER pero no es una solicitud de certificación PKCS#10."
    },
    "oidc": {
      "name": "Decodificador OIDC",
      "blurb": "Pega un token de identidad de OpenID Connect o un documento .well-known/openid-configuration y decodifícalo: los claims principales, los claims de perfil, los endpoints y las capacidades, con comprobaciones de los claims requeridos, el algoritmo de firma, el nonce y PKCE.",
      "inputLabel": "Token de identidad (JWT) o JSON openid-configuration",
      "inputPlaceholder": "Pega un token de identidad, o un documento JSON de descubrimiento OIDC",
      "runsLocally": "La decodificación se ejecuta localmente en tu navegador. Nunca llama al jwks_uri ni a ningún endpoint, y no se envía nada a ningún lugar.",
      "notVerifiedNote": "Esta herramienta decodifica y explica. No verifica la firma del token, no obtiene las claves de firma ni comprueba la expiración contra el reloj.",
      "errors": {
        "empty": "Pega un token de identidad o un documento openid-configuration para decodificar.",
        "malformed-json": "Esto empieza como JSON pero no se pudo analizar. Comprueba si falta una llave, una coma o una comilla.",
        "json-not-oidc": "Esto es JSON, pero no un documento de descubrimiento de OpenID Connect. Pega un token de identidad, o un documento .well-known/openid-configuration.",
        "not-jwt": "Esto no parece un JWT ni un documento OIDC. Pega un token de identidad o un documento de descubrimiento.",
        "jwt-header": "No se pudo decodificar el encabezado del token. Un JWT tiene tres partes base64url separadas por puntos.",
        "jwt-payload": "No se pudo decodificar la carga del token como JSON."
      },
      "badges": {
        "idToken": "Token de identidad",
        "discovery": "Descubrimiento",
        "signed": "Firmado",
        "unsigned": "Sin firmar",
        "algNone": "alg: none",
        "algUnknown": "alg: ?"
      },
      "panels": {
        "header": "Encabezado",
        "coreClaims": "Claims principales del token de identidad",
        "metadata": "Proveedor",
        "endpoints": "Endpoints",
        "capabilities": "Capacidades"
      },
      "categories": {
        "binding": "Vinculación de token",
        "profile": "Claims de perfil",
        "email": "Correo electrónico",
        "address": "Dirección",
        "phone": "Teléfono",
        "oauth": "OAuth / sesión",
        "other": "Otros claims"
      },
      "fields": {
        "alg": "Algoritmo",
        "typ": "Tipo",
        "kid": "ID de clave",
        "iss": "Emisor (iss)",
        "sub": "Sujeto (sub)",
        "aud": "Audiencia (aud)",
        "azp": "Parte autorizada (azp)",
        "nonce": "Nonce",
        "acr": "Contexto de auth (acr)",
        "amr": "Métodos de auth (amr)",
        "authTime": "Hora de auth",
        "iat": "Emitido en (iat)",
        "nbf": "No antes de (nbf)",
        "exp": "Expira (exp)",
        "issuer": "Emisor"
      },
      "reasons": {
        "MISSING_REQUIRED_CLAIM": "Falta el claim requerido {value}. Un token de identidad debe contener iss, sub, aud, exp e iat.",
        "ALG_NONE": "El token usa alg none, lo que significa que no está firmado. Un token de identidad sin firmar no prueba nada y debe rechazarse.",
        "ALG_SYMMETRIC": "Firmado con {value}, un algoritmo simétrico (HMAC). Los tokens de identidad de un proveedor público normalmente usan un algoritmo asimétrico como RS256 o ES256, para que la parte confiante pueda verificar con la clave pública.",
        "ALG_UNKNOWN": "Firmado con {value}, un algoritmo que esta herramienta no reconoce. Confirma que es un algoritmo esperado y fuerte.",
        "SIGNED_ASYMMETRIC": "Firmado con {value}, un algoritmo asimétrico. La parte confiante lo verifica con la clave pública del proveedor del JWKS.",
        "NO_NONCE": "No hay claim nonce. El nonce vincula el token a la solicitud de autenticación y protege contra la repetición. Debería estar presente cuando la solicitud envió uno.",
        "MULTI_AUD_NO_AZP": "El token tiene varias audiencias pero ningún azp (parte autorizada). Con más de una audiencia, azp debería nombrar al cliente para el que es el token.",
        "DISCOVERY_MISSING_FIELD": "Falta el campo de descubrimiento requerido {value}.",
        "DISCOVERY_ALG_NONE": "El proveedor anuncia el algoritmo de firma none para tokens de identidad, lo que permitiría tokens sin firmar. Esto no debería ofrecerse.",
        "DISCOVERY_NO_PKCE": "No hay code_challenge_methods_supported. El proveedor no anuncia PKCE, que se recomienda para el flujo de código de autorización.",
        "DISCOVERY_NO_PKCE_S256": "PKCE se anuncia pero sin el método S256. S256 es el método de code challenge recomendado."
      },
      "flow": {
        "heading": "Flujo de código de autorización",
        "laneRp": "Parte confiante",
        "laneOp": "Proveedor OpenID",
        "s1": "Redirigir al usuario al proveedor con scope=openid",
        "s2": "El proveedor autentica al usuario y obtiene el consentimiento",
        "s3": "El proveedor redirige de vuelta con un código de autorización",
        "s4": "La parte confiante canjea el código en el endpoint de token",
        "s5": "El proveedor devuelve un token de identidad y un token de acceso",
        "s6": "La parte confiante valida la firma del token de identidad contra el JWKS",
        "s7": "La parte confiante puede llamar a UserInfo con el token de acceso",
        "s8": "El proveedor devuelve los claims del usuario"
      }
    }
  },
  "privacy_page": {
    "eyebrow": "Privacidad",
    "title": "Tus datos, y lo que este sitio hace con ellos",
    "lede": "Una explicación en lenguaje claro de exactamente lo que este sitio web hace y no hace con tu información. Está redactada para ser precisa y no solo tranquilizadora, porque bajo normativas como el GDPR y la LGPD de Brasil es la declaración precisa la que importa.",
    "shortTitle": "La versión corta",
    "short1": "Este sitio no usa cookies, no ejecuta analíticas (analytics), no usa publicidad y no contiene rastreadores de terceros ni fingerprinting. Nada te sigue por la web.",
    "short2": "No vende, comparte ni crea perfiles de sus visitantes, y no te pide nada para que lo leas.",
    "short3": "Las herramientas interactivas funcionan enteramente en tu navegador. Lo que pegas o escribes en ellas permanece en tu dispositivo y no se transmite a ningún lugar.",
    "short4": "Solo tres cosas involucran datos, y cada una se explica más abajo: una única preferencia de tema guardada en tu propio navegador, los registros (logs) de conexión estándar que toda visita a un sitio genera en la capa de alojamiento, y cualquier mensaje que elijas enviar por correo electrónico.",
    "controllerTitle": "Quién es el responsable",
    "controllerBody": "Este es el sitio web personal de Rodolfo Nützmann (ronutz.com). Para cualquier cuestión de privacidad, o para ejercer cualquiera de los derechos descritos a continuación, escribe a {email}. Las solicitudes son atendidas directamente por Rodolfo Nützmann, en calidad de responsable del tratamiento de los datos.",
    "noTrackTitle": "Sin cookies, sin rastreo, sin analíticas",
    "noTrackBody": "Este sitio no usa cookies de ningún tipo. No usa ningún servicio de analítica (como Google Analytics o Plausible), ninguna red de publicidad, ningún píxel de rastreo de redes sociales y ningún fingerprinting de dispositivo. Tu visita no se mide, no se perfila ni se comparte con nadie para esos fines.",
    "browserTitle": "Qué se almacena en tu navegador",
    "browserBody": "Una sola cosa pequeña: el tema visual que elijas, guardado en el almacenamiento local (local storage) de tu navegador para que el sitio pueda recordarlo la próxima vez que lo visites. Es un ajuste de conveniencia que permanece en tu propio dispositivo, nunca se envía a este sitio ni a nadie más, y puede borrarse en cualquier momento desde tu navegador. Ningún otro dato sobre ti se almacena en tu dispositivo.",
    "hostingTitle": "Alojamiento y registros del servidor",
    "hostingBody": "El sitio se entrega a través de Cloudflare, que proporciona su alojamiento y entrega de contenido. Como en cualquier sitio web, cargar una página significa que tu dispositivo se conecta a un servidor, y Cloudflare, actuando como proveedor de alojamiento, procesa datos básicos de conexión —incluida tu dirección IP y detalles estándar de la petición— para entregarte las páginas y proteger el sitio frente a abusos y ataques. Este tratamiento es necesario para operar y proteger el sitio (un interés legítimo conforme al Artículo 6(1)(f) del GDPR, y las bases correspondientes de los Artículos 7 y 10 de la LGPD). El proveedor lo conserva solo brevemente y aquí no se usa para identificarte ni rastrearte.",
    "toolsTitle": "Las herramientas funcionan en tu navegador",
    "toolsBody": "Los decodificadores y calculadoras de este sitio —para JWT, direcciones IP, certificados y el resto— computan enteramente dentro de tu navegador. Los valores que introduces se procesan en tu propio dispositivo y nunca se envían a un servidor. Se ofrece una interfaz programática aparte (una API) para automatización e integraciones; por diseño no mantiene estado y no registra ninguna de las consultas ni los cuerpos de las peticiones que se le envían.",
    "contactTitle": "Si me contactas",
    "contactBody": "El formulario de contacto no envía datos a ningún servidor. En su lugar, abre un mensaje pre-rellenado en tu propia aplicación de correo, que tú mismo envías desde tu propia cuenta, de modo que nada pasa por un tercero. Si escribes, ya sea por el formulario o directamente, recibo la información que incluyas, como tu nombre, dirección de correo y mensaje, y la uso solo para responderte. La conservo solo durante el tiempo necesario para atender tu consulta, no la uso para marketing y no la comparto.",
    "intlTitle": "Tratamiento fuera de tu país",
    "intlBody": "Como Cloudflare opera una red global, el tratamiento a nivel de conexión descrito arriba puede realizarse en servidores situados fuera de tu propio país, incluso fuera de Brasil y del Espacio Económico Europeo. Cuando se tratan datos personales internacionalmente de esta forma, se hace bajo las salvaguardas ofrecidas por el proveedor correspondiente.",
    "childrenTitle": "Menores",
    "childrenBody": "Este sitio está dirigido a un público profesional y general. No está dirigido a menores y no recopila a sabiendas datos personales de ellos.",
    "rightsTitle": "Tus derechos",
    "rightsBody": "Según dónde vivas, tienes derechos sobre tus datos personales, incluido acceder a ellos, hacer que se corrijan o se eliminen, oponerte a su tratamiento o restringirlo, solicitar una copia en formato portable y que se te informe de cómo se tratan. Para ejercer cualquiera de ellos, basta con escribir a {email}. Como aquí se tratan tan pocos datos personales, en la práctica suele haber muy poco sobre lo que actuar, pero el canal siempre está abierto.",
    "rightsGdpr": "Si estás en el Espacio Económico Europeo o el Reino Unido, también tienes derecho a presentar una reclamación ante tu autoridad local de protección de datos.",
    "rightsLgpd": "Si estás en Brasil, posees los derechos establecidos en el Artículo 18 de la LGPD, y también puedes contactar con la autoridad nacional de protección de datos (la ANPD).",
    "changesTitle": "Cambios en este aviso",
    "changesBody": "Si este aviso cambia, la versión revisada se publicará en esta página y se actualizará la fecha de abajo. Los cambios sustanciales no se aplicarán retroactivamente.",
    "updated": "Última actualización: 30 de junio de 2026",
    "backHome": "Volver al inicio"
  },
  "footer": {
    "redEducation": "Reserva formación oficial con <b>Red Education</b>",
    "privacy": "Privacidad",
    "builtWith": "Creado por Rodolfo Nützmann con CONCORD",
    "colophon": "Cómo se construyó esto",
    "contribute": "Ayuda a mejorar las traducciones",
    "feedback": "Enviar comentarios",
    "api": "Referencia de la API",
    "contributeTools": "Comparte una idea",
    "license": "Licencia",
    "coffee": "Invítame a un café"
  },
  "search": {
    "kindTool": "Herramienta",
    "kindArticle": "Artículo",
    "kindPage": "Página",
    "label": "Buscar",
    "placeholder": "Buscar en el sitio…",
    "close": "Cerrar",
    "searching": "Buscando…",
    "noResults": "Sin resultados para “{query}”.",
    "unavailable": "La búsqueda funciona en el sitio publicado. No está disponible en la vista previa local.",
    "hint": "Escribe para buscar artículos, herramientas y páginas."
  },
  "theme": {
    "label": "Tema",
    "dark": "Oscuro",
    "light": "Claro"
  },
  "about": {
    "eyebrow": "El instructor",
    "role": "Instructor técnico sénior",
    "lede": "Formación en redes y seguridad impartida por un profesional que ha pasado su carrera en el lado de la implementación, no solo en las diapositivas. Con base en São Paulo, enseñando a nivel mundial, en portugués e inglés.",
    "now": {
      "title": "Lo que hago ahora",
      "body": "Imparto formación oficial y certificada, dirigida por instructor, en cuatro plataformas de seguridad y redes. El trabajo es práctico y basado en laboratorios: el objetivo siempre es que las personas salgan capaces de hacer la tarea, no solo de describirla. Soy instructor autorizado desde 1996, y la formación y la habilitación técnica han sido parte de mi trabajo desde finales de los años noventa.",
      "basedLabel": "Con base en",
      "basedValue": "São Paulo, Brasil",
      "teachesLabel": "Enseña",
      "teachesValue": "Formación dirigida por instructor, virtual y presencial, a nivel mundial",
      "languagesLabel": "Idiomas",
      "languagesValue": "Portugués (nativo), inglés (fluido)"
    },
    "platforms": {
      "title": "Cuatro plataformas, enseñadas en profundidad",
      "body": "Estar certificado en cuatro fabricantes significa que puedo enseñar cada uno como corresponde y compararlos con honestidad. Estas son las plataformas para las que estoy autorizado actualmente a impartir formación oficial.",
      "f5": "BIG-IP en todo el plan de estudios dirigido por instructor: LTM, DNS, Advanced WAF (ASM), APM, AFM, SSL Orchestrator, automatización y resolución de problemas.",
      "fortinet": "Formación certificada de Fortinet, incluido el itinerario FCP.",
      "extreme": "Itinerarios de conmutación, SD-WAN, y API y automatización de Extreme Networks, a través de instalación, configuración, gestión y resolución de problemas.",
      "netskope": "Formación dirigida por instructor sobre Netskope Security Cloud."
    },
    "path": {
      "title": "El camino hasta aquí",
      "intro": "Mi carrera comenzó en el lado del fabricante y la implementación en 1996, y se mantuvo ahí durante dos décadas antes de centrarme por completo en la formación. Esa base de implementación es la razón por la que la formación cala: he construido, roto y reparado estos sistemas en producción.",
      "present": "actualidad",
      "cabletron": "Ingeniero de redes e instructor certificado. Redes no Ethernet y Ethernet, redes de campus, enrutamiento IP.",
      "riverstone": "Ingeniero de soporte de producto y coordinador de base de conocimiento en California. Gigabit Ethernet, redes de área metropolitana, enrutamiento IP, BGP. Escalación de tercer nivel, recreación de escenarios de cliente y pruebas de regresión.",
      "cisco": "Ingeniero consultor de redes, como punto de contacto único para clientes clave como SERPRO y Correios. Gestión de escalación y de satisfacción del cliente.",
      "enterasys": "Ingeniero de redes e instructor. Redes empresariales, enrutamiento IP, control de acceso de usuarios y NAC, IDS e IPS.",
      "juniper": "Ingeniero de soporte de canal e instructor para switches y firewalls empresariales. Habilitación técnica de ventas y formación operativa de Junos-SRX.",
      "f5channel": "Ingeniería de ventas y preventa orientada al canal para F5, con habilitación técnica, ejecución de pruebas de concepto y formación de partners a través de la distribución.",
      "rededucation": "Instructor de formación autorizado que imparte cursos oficiales y certificados sobre F5, Fortinet, Extreme Networks y Netskope a organizaciones de todo el mundo.",
      "fullHistory": "Leer la historia completa",
      "vendorsLink": "Fabricantes con los que he trabajado"
    },
    "origins": {
      "title": "Donde empezó",
      "body": "Antes de la carrera formal estuvo la curiosidad. A principios de los años noventa importaba y ensamblaba ordenadores, operaba y usaba sistemas de tablón de anuncios, y trabajaba con DOS, Unix, Linux, Netware, los primeros Ethernet, X.25 e internet por línea conmutada. Para 1995 ese trabajo práctico se había convertido en un primer puesto formal: la construcción de un sistema de intercambio electrónico de datos. El hilo conductor de entonces a hoy es el mismo: tomar algo realmente complejo y hacer que funcione, y luego hacerlo comprensible para otra persona."
    },
    "approach": {
      "title": "Cómo enseño",
      "body": "Elegí especializarme en la formación porque combina un conocimiento técnico profundo con la parte del trabajo que más disfruto: explicar conceptos complejos de forma sencilla. Las mejores sesiones conectan cada concepto con la tarea que la persona realmente tiene que hacer, para que el contenido tenga dónde aterrizar. Ejemplos del mundo real, laboratorios de verdad, y el foco en la comprensión por encima de la memorización."
    },
    "cta": {
      "title": "Empieza por los conceptos",
      "body": "La sección Aprender explica las ideas detrás de las herramientas, y las herramientas te permiten trabajar con ellas directamente, todo en tu navegador.",
      "learnButton": "Leer la sección Aprender",
      "toolsButton": "Abrir las herramientas"
    },
    "recognition": {
      "title": "Reconocimiento",
      "body": "Reconocido como F5 DevCentral MVP durante tres años consecutivos, en 2022, 2023 y 2024, por sus contribuciones a la comunidad técnica de F5."
    }
  },
  "endorsements": {
    "eyebrow": "Testimonios",
    "title": "Lo que dice la gente, en sus propias palabras.",
    "intro": "{count} recomendaciones y reseñas textuales, a lo largo de dos décadas de enseñanza y consultoría. Nada aquí está parafraseado ni editado.",
    "provenance": "Provenientes de recomendaciones de LinkedIn, reseñas de Google y reseñas verificadas de estudiantes de Red Education. La redacción y ortografía originales se conservan exactamente como fueron escritas."
  },
  "testimonials": {
    "filterLabel": "Filtrar testimonios",
    "sourceFilter": "Origen",
    "languageFilter": "Idioma",
    "all": "Todos",
    "showing": "Mostrando {count} de {total}",
    "reply": "Respuesta de Red Education",
    "translateLabel": "Traducción",
    "translateOff": "Traducir al inglés",
    "translateOn": "Mostrando en inglés",
    "machineDisclaimer": "Traducción generada por máquina. Puede no reflejar con exactitud el texto original.",
    "showOriginal": "Ver original",
    "hideOriginal": "Ocultar original"
  },
  "history": {
    "indexTitle": "La historia",
    "indexLede": "Tres épocas, un hilo conductor: tomar algo realmente complejo, hacer que funcione, y luego hacerlo comprensible para otra persona.",
    "eraLabel": "Época",
    "backToHistory": "Todas las épocas",
    "backToAbout": "Acerca de",
    "readNext": "Leer a continuación",
    "pre1996": {
      "years": "Antes de 1996",
      "title": "La curiosidad",
      "subtitle": "Importar piezas, ensamblar máquinas y conectarse al internet temprano, antes de que nada de eso fuera un empleo.",
      "intro": "Toda carrera técnica tiene un antes. Antes de las insignias de fabricante y las certificaciones, hubo un adolescente que desarmaba máquinas para entender cómo funcionaban, y un joven profesional autónomo que convertía esa comprensión en un medio de vida. Aquí se formó el instinto que impulsa todo lo demás.",
      "s1Title": "Manos a la obra con el hardware, 1991 a 1995",
      "s1Body": "Desde 1991, el trabajo fue autónomo y práctico: importar componentes de ordenador desde Estados Unidos, ensamblar y vender ordenadores personales a medida, e instalarlos, configurarlos y repararlos para quien necesitara ayuda. Era la época de construir una máquina a partir de componentes y hacerla funcionar, en lugar de comprar una ya hecha. Los sistemas de entonces pasaron directamente por estas manos: DOS y CP/M, BASIC, Turbo Pascal, las primeras versiones de Windows y aplicaciones de oficina, y las herramientas de base de datos con las que funcionaban las pequeñas empresas de aquel momento, Clipper y dBase.",
      "s2Title": "Las redes anteriores a internet",
      "s2Body": "Las redes no empezaron con la web. Mucho antes de la banda ancha, el tejido conectivo era distinto y más difícil de manejar: Novell NetWare para servidores locales, sistemas de tablón de anuncios para comunidad e intercambio de archivos, las primeras redes Ethernet, y las tecnologías de área extensa de la época, X.25 (conocida en Brasil como RENPAC) y Frame Relay. Cuando internet por fin llegó, llegó por módem, accesible mediante una cuenta shell, SLIP o PPP. Trabajar con todo ello significaba entender las redes desde el cable, una comprensión que más tarde hizo que las redes empresariales se sintieran como terreno conocido.",
      "s3Title": "BBS, phreaking e internet académica",
      "s3Body": "La verdadera curiosidad de aquella época iba más allá del trabajo remunerado. Las exploraciones de esos años incluyeron operar y usar sistemas de tablón de anuncios, el trasteo de la red telefónica de la escena del phreaking, UNIX práctico, y el acceso temprano a la internet académica. Era aprender haciendo, en una comunidad que compartía el conocimiento porque no había otro sitio donde obtenerlo. Esa costumbre, de cavar hasta entender algo de verdad y luego transmitirlo, nunca desapareció.",
      "s4Title": "1995: el primer puesto formal",
      "s4Body": "En 1995, el trabajo autónomo confluyó en un primer puesto formal. En INTELECTA, una empresa incubada por el SEBRAE-SP, el proyecto fue un sistema de intercambio electrónico de datos para la comercialización de suministros médicos y hospitalarios, construido sobre servidores Novell NetWare y el sistema de tablón de anuncios PCBoard. Era un sistema real, que resolvía un problema comercial real, y marcó el punto en que el pasatiempo y el oficio se convirtieron en una profesión.",
      "closer": "Para finales de 1995, los cimientos estaban puestos: una persona que entendía las máquinas y las redes desde sus primeros principios, que aprendía construyendo, y que ya tenía el instinto de explicar. Todo lo que vino después, los fabricantes, las certificaciones, las aulas de todo el mundo, se construyó sobre esto."
    },
    "era19962020": {
      "years": "1996 – 2020",
      "title": "El profesional del sector",
      "subtitle": "Dos décadas dentro de la industria de redes y seguridad, construyendo, rompiendo y reparando los sistemas que más tarde se convirtieron en el temario.",
      "intro": "Este es el largo centro de la historia, y la razón por la que la formación que vino después tiene peso. Durante unas dos décadas, el trabajo fue la implementación: diseñar redes, ponerlas en marcha, resolver sus problemas bajo presión, y ser la persona a la que se llama cuando algo crítico se rompía. El recorrido pasó por algunos de los nombres que definieron las redes, en dos continentes.",
      "s1Title": "Cabletron y Enterasys, 1996 a 2000",
      "s1Body": "La carrera formal comenzó en 1996 en Cabletron Systems, por entonces un fabricante líder de equipos de red con sede en Rochester, New Hampshire. A lo largo de cuatro años y medio, el puesto abarcó ingeniería de campo y soporte posventa, ingeniería de sistemas y preventa, y, desde 1997, instrucción certificada. La materia era la LAN y la WAN empresarial de la época: switches, routers, Wi-Fi y WLAN, gestión de red, NAC y UAC, y firewalls de inspección de estado. En 2000, Cabletron se reorganizó en cuatro empresas, y la parte que tocó esta carrera se convirtió en Enterasys Networks.",
      "s2Title": "Riverstone Networks, Santa Clara, 2000 a 2002",
      "s2Body": "El siguiente capítulo fue en California. Riverstone Networks, una escisión de Cabletron que fabricaba equipos de red de área metropolitana, trajo una mudanza a Santa Clara con un visado de trabajo H1-B1. El puesto fue ingeniero de soporte de producto de nivel III y coordinador de gestión del conocimiento: escalación técnica de tercer nivel, recreación de escenarios de cliente en laboratorio, pruebas de regresión y verificación de errores, y la construcción de la base de conocimiento en la que se apoyaba el resto del soporte. Las tecnologías eran la columna vertebral del mundo de operadores y metro de principios de los 2000: Gigabit Ethernet, MPLS, conmutación y enrutamiento de área metropolitana, y BGP. Este periodo también produjo un hito formal: como parte del trámite del visado, una evaluación en Estados Unidos en 2001 reconoció una formación equivalente a una licenciatura en informática y una licenciatura en administración de empresas.",
      "s3Title": "Cisco Systems, Brasília, 2003 a 2004",
      "s3Body": "De vuelta en Brasil, y contratado a través de Cisco Professional Services, el puesto se desplazó hacia la relación con el cliente en su forma más exigente. Como gestor de operaciones de alto contacto y punto de contacto único, el trabajo fue la gestión de la satisfacción del cliente posventa para dos de las mayores entidades federales de Brasil, SERPRO, la agencia de procesamiento de datos del gobierno, y ECT-Correios, el correo nacional. La superficie técnica eran switches y routers Catalyst, firewalls PIX, y balanceadores de carga CSS, CSM y ACE, pero el trabajo de verdad era la gestión de escalaciones y mantener en marcha sin contratiempos una infraestructura nacional crítica.",
      "s4Title": "Enterasys de nuevo, luego Juniper, 2005 a 2010",
      "s4Body": "La segunda mitad de la década volvió al lado del fabricante como experto en la LAN empresarial. En Enterasys desde 2005, el foco eran los switches y routers, Wi-Fi y WLAN, gestión de red, NAC y UAC, y detección y prevención de intrusiones, a través de diseño de soluciones, implementación, auditoría y formación. Desde 2009, en Juniper Networks a través de Professional Services para Latinoamérica, el puesto fue la promoción de nuevos productos para el socio estratégico Telefónica Empresas en Brasil, centrado en switches EX y firewalls SRX, con formación operativa sobre Junos-SRX impartida en Level 3 e Impsat, hoy Lumen.",
      "s5Title": "Los años de canal y consultoría, 2010 a 2020",
      "s5Body": "La última década de esta época se movió con fluidez entre puestos, todos construyendo hacia el instructor al que llega la historia. Hubo etapas como ingeniero de redes y seguridad a través de distribuidores y mayoristas, profundizando la experiencia en conmutación y enrutamiento empresarial, firewalls y firewalls de nueva generación, SSL-VPN, control de acceso de usuarios, aceleración WAN y balanceo de carga de internet en soluciones de Juniper y Cisco. De forma decisiva, este periodo incluyó el giro hacia F5, con el inicio del trabajo con F5 BIG-IP que definiría los años por venir. A través de todo ello, la formación técnica fue un hilo constante, nunca ausente de ningún puesto.",
      "closer": "Para 2020, el cuadro estaba completo: alguien que no solo había estudiado estos sistemas, sino que había vivido dentro de ellos durante veinte años, en el lado del fabricante y en el del cliente, en el diseño y en la crisis. Esa es la diferencia que un implementador lleva a un aula. Cuando esta persona explica por qué una configuración se comporta de cierta manera, es porque la ha visto comportarse así, a las tres de la madrugada, con un correo nacional esperando."
    },
    "era2020present": {
      "years": "2020 – actualidad",
      "title": "El instructor",
      "subtitle": "Formación técnica a tiempo completo, impartida a nivel mundial, ampliándose plataforma a plataforma.",
      "intro": "En 2020, un hilo presente durante toda la carrera se convirtió en la tela entera. Tras dos décadas en las que la enseñanza acompañó cada puesto, la formación se convirtió en el trabajo en sí: a tiempo completo, oficial, instrucción certificada impartida a profesionales y equipos de todo el mundo. Lo que distingue a esta época no es solo el enfoque, sino la ampliación deliberada y fechada a través de las plataformas, cada una añadida sobre una profunda experiencia de campo y no en su lugar.",
      "s1Title": "A tiempo completo, por vocación",
      "s1Body": "Desde 2020, el trabajo ha sido impartir formación oficial dirigida por instructor, en remoto y presencial, en portugués e inglés, a audiencias de todo el mundo. La entrega llega a Australia, Singapur, India, Europa Central, Estados Unidos y Brasil. La ciudadanía brasileña y alemana, junto con la autorización de viaje a Estados Unidos y el Reino Unido, hacen práctico ese alcance mundial: elegibilidad sin restricciones para trabajar en la Unión Europea y el Mercosur, y la libertad de ir a donde esté el aula.",
      "s2Title": "F5, desde el principio",
      "s2Body": "F5 ha sido el ancla desde el comienzo de esta época, sobre la base de un trabajo con BIG-IP que se remonta a más de una década. El plan de estudios autorizado cubre todo el catálogo de BIG-IP dirigido por instructor: Local Traffic Manager, DNS, Advanced WAF, Access Policy Manager, Advanced Firewall Manager, SSL Orchestrator, BIG-IQ, desarrollo de iRules, automatización y resolución de problemas, desde cursos de un día hasta de cuatro días. Junto a la enseñanza corre un complemento práctico: entornos de laboratorio F5 BIG-IP gestionados, para que la práctica siempre tenga un lugar real donde ocurrir.",
      "s3Title": "La ampliación, plataforma a plataforma",
      "s3Body": "Lo que distingue a los años recientes es una progresión clara y fechada. La formación de Extreme Networks se añadió desde 2021, cubriendo conmutación EXOS, SD-WAN y automatización. Fortinet siguió desde 2024, centrado en el itinerario FCP FortiGate Administrator. Netskope se sumó desde 2025, cubriendo la operación, administración, implementación e integración de Netskope Security Cloud. Cuatro plataformas, cada una añadida de forma deliberada, cada una apoyada en las mismas dos décadas de implementación de redes y seguridad por debajo.",
      "s4Title": "A través de Red Education, hacia el mundo",
      "s4Body": "El vehículo principal de esta entrega mundial es Red Education, un centro de formación autorizado a través del cual cursos oficiales y certificados llegan a organizaciones de distintas regiones. El puesto es global technical training instructor, impartiendo al tipo de audiencias internacionales que una base en São Paulo, dos pasaportes y un genuino amor por viajar hacen posibles. La relación permanente convierte la experiencia individual en algo que organizaciones de todo el mundo pueden contratar y en lo que pueden confiar.",
      "closer": "Aquí es donde el hilo conductor de toda la historia da sus frutos. La curiosidad de los primeros años se convirtió en la profundidad de implementación de los años de campo, y esa profundidad es ahora lo que recibe cada estudiante: no un presentador leyendo diapositivas, sino alguien que construyó estos sistemas explicando cómo funcionan de verdad, y por qué."
    }
  },
  "vendors": {
    "indexTitle": "Fabricantes",
    "indexLede": "Las empresas de redes y seguridad cuya tecnología dio forma a esta carrera, desde el cable. Son relaciones del pasado; las plataformas que se enseñan hoy aparecen en Formación.",
    "backToVendors": "Todos los fabricantes",
    "backToAbout": "Acerca de",
    "technologies": "Tecnologías",
    "role": "Puesto",
    "years": "Años",
    "readNext": "Siguiente fabricante",
    "cabletron": {
      "name": "Cabletron y Enterasys",
      "years": "1996 – 2007",
      "tagline": "Donde comenzó la carrera, y donde se aprendió la LAN empresarial desde cero.",
      "intro": "El hilo individual más largo de esta historia recorre una empresa y su sucesora. Cabletron Systems, un fabricante líder de equipos de red con sede en Rochester, New Hampshire, fue el primer empleador, a partir de 1996. Cuando Cabletron se reorganizó en cuatro empresas en 2000, la línea continuó como Enterasys Networks, y la relación se retomó allí desde 2005. Juntas abarcan la década formativa de la experiencia en redes empresariales.",
      "s1Title": "Cabletron, 1996 a 2000",
      "s1Body": "A lo largo de cuatro años y medio, el puesto recorrió todo el arco de la ingeniería de fabricante: ingeniería de campo y soporte posventa, ingeniería de sistemas y preventa, y, desde 1997, instrucción certificada. La materia era la LAN y la WAN empresarial de la época: switches y routers, Wi-Fi y WLAN, gestión de red, NAC y UAC, y firewalls de inspección de estado. Aquí se practicó por primera vez la disciplina del diseño de soluciones, la implementación, la auditoría, la resolución de problemas y la gestión de escalaciones, y aquí entró por primera vez la enseñanza en el trabajo.",
      "s2Title": "Enterasys, 2005 a 2007",
      "s2Body": "De vuelta en la línea como gestor de servicios y soporte, el foco era la línea de productos Secure Routing, con Enterasys como punto focal regional para Brasil. El trabajo combinaba soporte al cliente de alto nivel, resolución de problemas compleja y gestión de escalaciones con gestión de producto localizada. La superficie técnica había crecido para incluir gestión de red, NAC y UAC, detección y prevención de intrusiones, y SIEM, a través de conmutación y enrutamiento empresarial. Enterasys fue adquirida más tarde por Extreme Networks en 2013, cerrando un círculo que conecta este trabajo temprano con una plataforma que todavía se enseña hoy.",
      "certs": "Cabletron Systems Engineer (CSE), 1999. Enterasys Systems Engineer (ESE), 2000 y 2007. Enterasys Certified Internetworking Engineer (ECIE), 2007.",
      "lineageTitle": "El linaje corporativo",
      "lineageDesc": "Cabletron Systems, con sede en Rochester, New Hampshire, se dividió en cuatro empresas en 2000: Enterasys, Riverstone, Aprisma y GNTS. Enterasys fue adquirida por Extreme Networks en 2013. Riverstone fue adquirida por Alcatel-Lucent en 2006."
    },
    "juniper": {
      "name": "NetScreen y Juniper",
      "years": "2009 – 2014",
      "tagline": "La conmutación empresarial y las puertas de enlace de seguridad que crecieron desde NetScreen hasta la línea SRX de Juniper.",
      "intro": "Juniper Networks adquirió NetScreen, la empresa de firewalls, en 2004, y la tecnología de seguridad de NetScreen se convirtió en la base de la línea de puertas de enlace seguras de Juniper. Trabajar con ambas refleja un linaje continuo: los firewalls SSG de NetScreen y las puertas de enlace SRX que los sucedieron. La relación corrió directamente a través de Juniper desde 2009, y continuó después a través del canal de distribución.",
      "s1Title": "Juniper Networks, 2009 a 2010",
      "s1Body": "Contratado a través de Juniper Professional Services para Brasil, el puesto fue la promoción de nuevos productos para las líneas empresariales recién introducidas: las puertas de enlace seguras de la serie SRX y los switches de la serie EX. La colaboración principal fue con el socio estratégico Telefónica Empresas en Brasil. Más allá de la promoción de preventa, este periodo impartió instrucción real: formación sobre el sistema operativo de red JUNOS y la operación de las puertas de enlace seguras SRX para partners de canal y clientes, incluida formación operativa para el personal del centro de operaciones de red de Level 3 Communications en Brasil y Argentina.",
      "s2Title": "A través del canal, 2010 a 2014",
      "s2Body": "La relación con Juniper y NetScreen continuó a través de integradores de sistemas y distribuidores. En CYLK, el trabajo abarcó desarrollo de configuraciones, pruebas de concepto e interoperabilidad, e implementación y resolución de problemas en producción sobre Juniper, NetScreen y F5. En TDec, Juniper se sumó a una práctica de consultoría y formación multifabricante. La gama de productos práctica de aquellos años fue amplia: switches EX, firewalls SRX y NetScreen SSG, SSL-VPN SA, routers de la serie J y Wi-Fi gestionado AX.",
      "certs": "Juniper Networks Sales Specialist, Enterprise Networking (JNSS-EN), 2010. Juniper Networks Sales Associate, Enterprise Networking (JNSA-EN), 2010.",
      "lineageTitle": "El linaje de seguridad",
      "lineageDesc": "NetScreen, fabricante de los firewalls SSG, fue adquirida por Juniper Networks en 2004 y se convirtió en la base de la línea de puertas de enlace seguras SRX de Juniper."
    },
    "riverstone": {
      "name": "Riverstone Networks",
      "years": "2000 – 2002",
      "tagline": "Dos años en Santa Clara, en el borde de las redes de operador y metropolitanas.",
      "intro": "El único capítulo de esta carrera situado por completo fuera de Brasil. Riverstone Networks, un fabricante de equipos de red de área metropolitana con sede en Santa Clara, California, trajo una mudanza a Estados Unidos con un visado de trabajo H1-B1. Riverstone tenía un linaje propio inusual: originalmente una empresa llamada Yago, adquirida por Cabletron hacia 1998, y reaparecida como empresa independiente mediante una escisión en 2001. Más tarde fue adquirida por Alcatel-Lucent en 2006.",
      "s1Title": "Soporte de nivel III y gestión del conocimiento",
      "s1Body": "El puesto tuvo dos títulos a lo largo de dos años: ingeniero de soporte de producto y coordinador de gestión del conocimiento. Como especialista de soporte técnico de nivel III, el trabajo fue la escalación de tercer nivel, la recreación de escenarios de cliente en laboratorio, las pruebas de regresión y la verificación de errores. Como coordinador de gestión del conocimiento, consistió en construir y organizar la base de conocimiento en la que se apoyaba el resto del soporte, junto con apoyo al marketing de producto y formación interna. Este fue el trabajo de soporte técnico más profundo de la carrera, en el nivel donde escalan los problemas más difíciles.",
      "s2Title": "El mundo de las redes metropolitanas",
      "s2Body": "Las tecnologías eran la columna vertebral de la era de operadores y metro de principios de los 2000: Gigabit Ethernet, MPLS, conmutación y enrutamiento de área metropolitana, y enrutamiento IP de área extensa, incluido BGP. Trabajar en el soporte de tercer nivel del fabricante significaba ver cómo se comportaban estos sistemas en los límites, bajo condiciones que solo afloran en producción a gran escala. También impartió instrucción formal: formación sobre conceptos, funciones y configuración de Riverstone, y formación sobre identificación de problemas de soporte al cliente y procedimientos de escalación.",
      "certs": "Riverstone Certified Networking Professional (RCNP), 2001. Evaluación de equivalencia educativa en Estados Unidos que reconoce una formación equivalente a una licenciatura en informática y una licenciatura en administración de empresas, completada en 2001 como parte del trámite del visado H1-B1.",
      "lineageTitle": "El linaje corporativo",
      "lineageDesc": "Riverstone Networks comenzó como una empresa llamada Yago, fue adquirida por Cabletron Systems hacia 1998, reapareció como empresa independiente mediante una escisión en 2001, y fue adquirida por Alcatel-Lucent en 2006."
    },
    "cisco": {
      "name": "Cisco Systems",
      "years": "2003 – 2008",
      "tagline": "Mantener en marcha una infraestructura nacional crítica, como punto de contacto único para los clientes federales de Brasil.",
      "intro": "Contratado a través de Cisco Professional Services en Brasil, esta fue la carrera en su forma operativamente más exigente, donde el trabajo tenía menos que ver con una sola tecnología y más con mantener en marcha sistemas críticos para clientes que no podían permitirse tiempo de inactividad.",
      "s1Title": "Operaciones de alto contacto, 2003 a 2004",
      "s1Body": "Como gestor de operaciones de alto contacto y punto de contacto único, el puesto fue la gestión de la satisfacción del cliente posventa para dos de las mayores entidades federales de Brasil: SERPRO, la agencia de procesamiento de datos del gobierno, y ECT-Correios, el correo nacional, a través de Brasília y São Paulo. La superficie técnica incluía switches y routers Catalyst, firewalls PIX, y appliances de contenido y balanceo de carga CSS, CSM y ACE. La verdadera disciplina, sin embargo, era la gestión de escalaciones y el manejo de crisis, mantener una alta satisfacción para cuentas donde lo que estaba en juego era nacional.",
      "s2Title": "Instrucción de Cisco, 2007 a 2008",
      "s2Body": "La relación con Cisco también produjo entrega de formación formal: conceptos y operación de IOS y CatOS, y conceptos, operación y resolución de problemas de redes de capa 2 y capa 3, en cursos de varios días. Esto complementó la profunda experiencia operativa con la instrucción estructurada que más tarde se convertiría en el foco completo de la carrera.",
      "ironportTitle": "Una nota aparte: IronPort, 2004",
      "ironportBody": "Vale la pena registrarlo con exactitud, y diferenciado del trabajo en Cisco: una breve colaboración de tres meses a finales de 2004 con IronPort Systems, por entonces una startup independiente de appliances de seguridad de correo con sede en San Bruno, California. El trabajo fue desarrollo de canal y consultoría técnica de preventa para sus appliances de seguridad de correo de la serie C. Esto es anterior por completo a la adquisición de IronPort por parte de Cisco en 2007, así que fue una relación aparte con una empresa independiente, no tecnología de Cisco, y se menciona aquí solo porque la empresa más tarde pasó a formar parte de Cisco.",
      "certs": "Cisco Certified Network Associate (CCNA), 2000 y 2005. Cisco Internetwork Troubleshooting (CIT), 2003."
    },
    "paloalto": {
      "name": "Palo Alto Networks",
      "years": "2013 – 2015",
      "tagline": "Firewalls de nueva generación, a través del canal de distribución y el aula.",
      "intro": "Una relación enfocada en la tecnología de firewalls de nueva generación, llevada a través del canal de distribuidores e integradores. Es una colaboración del pasado; Palo Alto no está entre las plataformas que se enseñan hoy, pero el trabajo fue real y certificado.",
      "s1Title": "Consultoría y formación de canal, 2013 a 2015",
      "s1Body": "En TDec Network Group, Palo Alto se sumó a una práctica de consultoría y formación multifabricante que abarcaba ingeniería de sistemas, arquitectura de soluciones, habilitación de aplicaciones, implementación, auditorías y resolución de problemas. La relación continuó a través de Cipher Security en 2015 para trabajo de preventa y posventa. El foco técnico eran los firewalls de nueva generación y la plataforma de gestión Panorama, el núcleo de la oferta de seguridad empresarial de Palo Alto en aquel momento.",
      "s2Title": "Instrucción de PAN-OS",
      "s2Body": "Este periodo incluyó entrega de formación formal: un bootcamp de PAN-OS 6.0, que construía la misma instrucción práctica y basada en laboratorios que define la práctica de enseñanza de hoy. Combinado con las certificaciones obtenidas en 2014, esto estableció una profundidad genuina en la plataforma, aun cuando el foco de la carrera más tarde se concentró en otras tecnologías.",
      "certs": "Palo Alto Certified Network Security Engineer (CNSE 5.1), 2014. Palo Alto Networks Accredited Configuration Engineer (ACE), 2014. Palo Alto Networks Accredited Sales Expert (ASE), 2014. Nota: estas certificaciones son históricas y no se mantienen como vigentes."
    }
  },
  "training": {
    "eyebrow": "Formación que imparto",
    "title": "Cuatro plataformas, enseñadas por quien las ha operado.",
    "intro": "Formación oficial y certificada, impartida por instructor, en {courses} cursos sobre las cuatro plataformas en el centro de las redes y la seguridad modernas. Cada curso lo imparte un instructor autorizado, con décadas de implementación práctica detrás de la enseñanza.",
    "courseCount": "{count} cursos",
    "since": "desde",
    "representativeNote": "Este catálogo es representativo, no exhaustivo. Los nombres de los cursos, las duraciones y los contenidos reflejan información pública actual y se refinan a partir de fichas técnicas oficiales.",
    "allPlatforms": "Todas las plataformas",
    "authorizedSince": "Instructor autorizado desde {year}",
    "workingSince": "Trabaja con {platform} desde {year}",
    "tech": {
      "switchesRouters": "switches y routers empresariales",
      "firewalls": "firewalls",
      "webCloudSecurity": "seguridad web y en la nube"
    },
    "coursesHeading": "{count} cursos",
    "duration": "Duración",
    "delivery": "Entrega",
    "deliveryValue": "Virtual o presencial",
    "modules": "Módulos",
    "aboutCourse": "Sobre este curso",
    "tableOfContents": "Contenido",
    "agendaPending": "Se añadirá una agenda detallada, día a día, a partir de la ficha técnica oficial del curso.",
    "moreFrom": "Más cursos de {platform}",
    "requestTraining": "Solicitar esta formación",
    "requestVia": "Impartido a través de {destination}"
  },
  "teach": {
    "eyebrow": "Cómo enseño",
    "title": "Un instructor que construyó estos sistemas antes de enseñarlos.",
    "lede": "La mayoría de la formación técnica la imparten personas que aprendieron la materia para enseñarla. Esto es lo contrario: tres décadas construyendo, rompiendo y reparando redes y sistemas de seguridad reales, destiladas en una formación que conecta cada concepto con cómo se comporta de verdad en producción.",
    "s1Title": "Por qué esto importa en un aula",
    "s1Body": "Hay una diferencia entre explicar cómo se supone que funciona una función y explicar por qué se comporta como lo hace a las tres de la madrugada cuando algo crítico está caído. Lo primero viene de un manual. Lo segundo viene de haber estado ahí. Desde 1996, el trabajo fue la implementación: diseñar redes, ponerlas en marcha, y ser la persona a la que se llama cuando se rompían, para fabricantes y para algunas de las mayores organizaciones de Brasil. Esa profundidad es lo que recibe cada estudiante, no un presentador leyendo diapositivas, sino un ingeniero que ha vivido dentro de estos sistemas explicando cómo funcionan de verdad.",
    "s2Title": "Lo complejo hecho claro",
    "s2Body": "El conocimiento técnico profundo es necesario, pero no suficiente. La habilidad más rara es traducirlo: tomar algo realmente complejo, firewalls de aplicaciones web, federación de identidades, gestión del tráfico, SD-WAN, y hacer que encaje para alguien que se topa con ello por primera vez. Los estudiantes destacan de forma constante los ejemplos del mundo real y la didáctica clara y estructurada, la capacidad de poner cada concepto en el contexto del trabajo que realmente hacen. La enseñanza ha sido un hilo a lo largo de toda esta carrera, presente en casi cada puesto desde 1997, y el foco a tiempo completo desde 2020.",
    "s3Title": "Práctico, no vago",
    "s3Body": "La habilidad técnica se construye haciendo, no mirando. Cada curso está construido en torno a laboratorios prácticos sobre sistemas reales, reforzados con entornos de laboratorio gestionados para que la práctica siempre tenga un lugar real donde ocurrir. El formato se adapta a la audiencia: formación dirigida por instructor virtual a nivel mundial, presencial cuando eso sirve mejor, en inglés o portugués. El objetivo de cada sesión es el mismo, que los participantes salgan capaces de hacer la tarea, no solo de describirla.",
    "s4Title": "Reconocido, certificado y al día",
    "s4Body": "La enseñanza se apoya en una base de reconocimiento formal. F5 DevCentral MVP durante tres años consecutivos, en 2022, 2023 y 2024. Certificaciones F5 mantenidas desde 2015, y autorización de instructor en cuatro plataformas: F5, Extreme Networks, Fortinet y Netskope. La entrega llega a Australia, Singapur, India, Europa Central, Estados Unidos y Brasil, a través de Red Education, un centro de formación autorizado. Las credenciales importan, pero son una abreviatura de lo que hay debajo: un dominio genuino y actual de la tecnología.",
    "platformsTitle": "Lo que enseño",
    "platformsBody": "Formación oficial y certificada, dirigida por instructor, en cuatro plataformas en el centro de las redes y la seguridad modernas. Cada una enlaza con su catálogo de cursos completo.",
    "s5Title": "Más allá del aula",
    "s5Body": "La misma profundidad que produce buena enseñanza produce buena asesoría. Treinta años a través de la entrega de aplicaciones, la seguridad de red, la identidad y la infraestructura, tanto en el lado del fabricante como en el del cliente, son una perspectiva que viaja mucho más allá de una sala de formación, hasta las decisiones de arquitectura, la selección de tecnología y los problemas difíciles que no caben en un temario. La enseñanza es el foco; la experiencia que hay detrás está disponible para equipos que necesitan algo más que un curso.",
    "toolsTitle": "Herramientas que calculan, nunca adivinan",
    "toolsBody": "Junto a la formación hay un conjunto creciente de herramientas de red y seguridad gratuitas y respetuosas con la privacidad, utilidades deterministas que se ejecutan por completo en tu navegador y nunca envían tu información a ningún sitio. Cálculo de subredes y CIDR, IPv6, inspección de certificados y tokens, y más, el tipo de herramientas de uso diario a las que recurre un ingeniero en activo. Están hechas con el mismo espíritu que la enseñanza: precisas, prácticas y de verdad útiles. Pruébalas, sin registro, sin rastreo.",
    "toolsCta": "Explorar las herramientas",
    "historyTitle": "Tres décadas, un hilo conductor",
    "historyBody": "Desde construir ordenadores siendo adolescente en 1991, pasando por dos décadas dentro de la industria de redes y seguridad, hasta la instrucción mundial a tiempo completo desde 2020. Vale la pena leer la historia completa si quieres entender la experiencia que hay detrás de la enseñanza.",
    "historyCta": "Leer la historia completa",
    "ctaTitle": "Trabajemos juntos",
    "ctaBody": "Ya sea para contratar formación oficial, crear un programa a medida para tu equipo, o sumar asesoría con experiencia en un problema difícil, la puerta está abierta.",
    "ctaButton": "Ponte en contacto",
    "coursesButton": "Ver todos los cursos"
  },
  "contact": {
    "title": "Ponte en contacto",
    "lede": "Ya sea para contratar formación oficial, crear un programa a medida para tu equipo o sumar asesoría experimentada en un problema difícil, será un gusto conversar.",
    "formHeading": "Envía un mensaje",
    "directHeading": "O contacta directamente",
    "formName": "Tu nombre",
    "formEmail": "Tu correo",
    "formTopic": "¿De qué se trata?",
    "topicTraining": "Formación oficial",
    "topicCustom": "Programa a medida para equipo",
    "topicAdvisory": "Asesoría y consultoría",
    "topicOther": "Otro asunto",
    "formMessage": "Tu mensaje",
    "formSend": "Enviar mensaje",
    "formSending": "Enviando…",
    "formRequired": "Por favor, completa tu nombre, correo y un mensaje.",
    "successTitle": "Gracias.",
    "successBody": "Tu mensaje está en camino. Te responderé lo antes posible.",
    "errorBody": "Algo salió mal al enviar. Inténtalo de nuevo o escribe directamente por correo.",
    "emailLabel": "Correo",
    "channels": {
      "linkedin": {
        "description": "Conecta profesionalmente",
        "label": "LinkedIn"
      },
      "youtube": {
        "description": "Vídeos y tutoriales",
        "label": "YouTube"
      },
      "instagram": {
        "description": "Entre bastidores",
        "label": "Instagram"
      },
      "training": {
        "label": "Formación oficial",
        "description": "Reserva un curso a través de Red Education"
      }
    },
    "feedbackNote": "¿Encontraste un bug, un error o una inexactitud en el sitio?",
    "feedbackLink": "Compártelo en la página de ideas"
  },
  "certs": {
    "title": "Certificaciones y credenciales",
    "lede": "Tres décadas de credenciales formales en redes y seguridad. Las autorizaciones de instructor y las certificaciones a continuación están vigentes; un registro completo de las credenciales obtenidas, la mayoría ya históricas, sigue para quien busque profundidad.",
    "jumpToHistorical": "Ir al registro completo",
    "credlyVerify": "Verificar en Credly",
    "current": "Vigente",
    "historical": "Histórico",
    "instructorTitle": "Autorizaciones de instructor",
    "instructorIntro": "Autorizado para impartir formación oficial y certificada en cada una de estas plataformas actualmente.",
    "currentCertsTitle": "Certificaciones vigentes",
    "recognitionTitle": "Reconocimiento",
    "historicalTitle": "Registro completo",
    "historicalIntro": "Credenciales obtenidas a lo largo de una carrera que comenzó en 1996. La mayoría son históricas o caducadas, conservadas aquí por la profundidad que representan.",
    "verify": "Verificar",
    "credly": "Credly",
    "certificate": "Certificado",
    "verifyCode": "Código",
    "candidateId": "ID"
  },
  "colophon_page": {
    "eyebrow": "Colofón",
    "title": "Cómo se construyó esto",
    "lede": "La mayoría de los sitios web no se explican a sí mismos. Este sí, porque cómo se hizo es parte de lo que es: un experimento deliberado de construir bien, con colaboradores inusuales, y un registro que vale la pena conservar.",
    "concordTitle": "CONCORD",
    "concordBody1": "Este sitio se diseñó y construyó mediante un protocolo llamado CONCORD: una colaboración estructurada entre una persona y tres sistemas de IA distintos, cada uno en un papel diferenciado. No es un truco. Es un método de trabajo, con su propia gobernanza, su propio registro de decisiones, y una sola persona responsable de cada elección que se publicó.",
    "concordBody2": "La premisa es sencilla. Distintos modelos de IA tienen fortalezas distintas, y un problema difícil se beneficia de más de una perspectiva sostenidas en tensión. Por eso el trabajo se dividió por papeles, y una persona se situó en el centro, haciendo de enlace entre ellos, ratificando lo que era sólido y rechazando lo que no.",
    "concordBody3": "CONCORD no se tomó de ningún sitio. Lo diseñó Rodolfo Nützmann para este proyecto, a partir de una necesidad práctica: cómo recurrir a varios sistemas de IA a la vez, cada uno realmente bueno en algo distinto, sin renunciar al único hilo de responsabilidad humana que exige el trabajo real. La respuesta fue dar a cada sistema un puesto definido, impedir que negociaran entre sí y encauzar cada intercambio a través de una sola persona que mantenía la visión de conjunto. Ese arreglo tiene un nombre más antiguo. Los sistemas de IA son agentes: actúan según instrucciones y en nombre de otro. PRIME es el principal: quien realmente decide, quien ejerce el criterio y quien carga con las consecuencias y con el nombre.",
    "concordBody4": "Empezó de manera informal —como una forma de repartir el trabajo— y se consolidó a lo largo de la construcción en un método con nombre: puestos fijos, una única regla por encima de todo, que nada se publica sin que PRIME lo ratifique, y un registro escrito de por qué se tomó cada decisión. El nombre expresa el objetivo: concordia, un acuerdo alcanzado a propósito mediante un proceso, no lo que produzca una herramienta sin supervisión.",
    "concordPrincipal": "La ventaja es de los agentes. La responsabilidad es del principal, y no se transfiere.",
    "concordMechTitle": "La mecánica, en términos claros",
    "mech1Label": "Proponer",
    "mech1Gloss": "Cada puesto plantea opciones dentro de su propio ámbito.",
    "mech2Label": "Transmitir",
    "mech2Gloss": "PRIME traslada las propuestas entre puestos; estos nunca negocian directamente.",
    "mech3Label": "Ratificar",
    "mech3Gloss": "PRIME acepta lo que es sólido y rechaza lo que no. Sin eso, nada se publica.",
    "mech4Label": "Acotar",
    "mech4Gloss": "Un conjunto permanente de reglas internas limita cada resultado, en cada puesto.",
    "mech5Label": "Registrar",
    "mech5Gloss": "Un registro escrito de decisiones conserva el razonamiento de cada elección.",
    "mech6Label": "Recordar",
    "mech6Gloss": "El contexto, las reglas internas y ese registro persisten como archivos, que pasan de una sesión a la siguiente, de modo que el método sobrevive a cualquier conversación.",
    "rolesTitle": "Los asientos",
    "rolePrime": "PRIME",
    "rolePrimeWho": "Rodolfo Nützmann",
    "rolePrimeBody": "El único ratificador. Cada decisión, cada línea que se publicó, pasó por una persona que tenía el cuadro completo y asumía la responsabilidad final. Las IA proponían; PRIME disponía.",
    "rolePrimeModel": "Humano",
    "roleAnvil": "ANVIL",
    "roleAnvilWho": "Ingeniería",
    "roleAnvilBody": "El asiento del ingeniero jefe. Arquitectura, código, estructura de contenido, y la construcción en sí, convertidos de la intención en un sitio funcional, probado y desplegable.",
    "roleAnvilModel": "Anthropic · Claude Opus 4.8",
    "roleScout": "SCOUT",
    "roleScoutWho": "Estrategia y marca",
    "roleScoutBody": "El asiento de la estrategia y el posicionamiento. Las preguntas de qué es esto, para quién es, y cómo debe presentarse al mundo.",
    "roleScoutModel": "OpenAI · ChatGPT 5.5",
    "rolePrism": "PRISM",
    "rolePrismWho": "Diseño",
    "rolePrismBody": "El asiento del diseño. El lenguaje visual, la tipografía, el color y la sensación del conjunto, moldeados en un sistema coherente.",
    "rolePrismModel": "Google · Gemini 3.1 Pro",
    "seatsModelNote": "Versiones de los modelos de IA a junio de 2026.",
    "principlesTitle": "Cómo se hizo",
    "principlesBody": "Unos pocos principios se mantuvieron de principio a fin, y son visibles si sabes dónde mirar.",
    "p1Title": "Calcular, nunca adivinar",
    "p1Body": "Las herramientas de este sitio calculan respuestas de forma local y determinista. No llaman a un servidor con tu información, y no aproximan. Lo que se ejecuta en tu navegador, se queda en tu navegador.",
    "p2Title": "Abierto en el núcleo",
    "p3Title": "Documentado por construcción",
    "p3Body": "Cada parte del código está comentada y documentada, no como una ocurrencia tardía sino como una regla permanente. La construcción está pensada para ser legible, para quien la mantiene y para cualquiera que la herede.",
    "p4Title": "Construido para durar y para viajar",
    "p4Body": "El sitio es una exportación estática: rápida, cacheable y sin depender de nada en tiempo de ejecución. Está estructurado desde la base para muchos idiomas, de modo que puede dirigirse a una audiencia mundial sin reconstruirse.",
    "stackTitle": "El stack",
    "stackBody": "Para quienes les importan estas cosas, los cimientos técnicos, expuestos con claridad.",
    "stackFramework": "Framework",
    "stackFrameworkV": "Next.js 15 y React 19, exportados como sitio totalmente estático",
    "stackI18n": "Internacionalización",
    "stackI18nV": "next-intl, con {count} idiomas y soporte de derecha a izquierda",
    "stackDesign": "Sistema de diseño",
    "stackDesignV": "Un motor de temas personalizable, basado en tokens; el tema por defecto es Obsidian",
    "stackType": "Tipografía",
    "stackTypeV": "Inter para el texto, JetBrains Mono para datos y códigos",
    "stackEngine": "Motor de herramientas",
    "stackEngineV": "Una capa de cómputo determinista que se ejecuta por completo en el navegador",
    "stackSearch": "Búsqueda",
    "stackSearchV": "Búsqueda de texto completo estática, del lado del cliente; sin servidor de búsqueda",
    "vibeTitle": "¿Esto es vibe coding?",
    "vibeBody1": "Es una pregunta justa, y vale la pena responderla con claridad. Vibe coding es un término que el investigador de IA Andrej Karpathy acuñó a principios de 2025 para una forma de construir software en la que describes lo que quieres a un modelo de lenguaje, aceptas lo que escribe sin leerlo con atención y te guías por los resultados más que por el propio código. Lo planteó como dejarse llevar por la vibra y olvidar que el código siquiera existe, y dejó claro que servía más para proyectos rápidos y desechables que para sistemas de los que la gente depende.",
    "vibeBody2": "Según esa definición, parte de este sitio se construyó así, y conviene reconocerlo en lugar de ocultarlo. La superficie de la aplicación, el cableado del framework, los componentes, los estilos, la fontanería que mantiene unidas las páginas, se produjo rápidamente con un ingeniero de IA y se guió por el resultado y por un conjunto fijo de reglas internas, no se escribió a mano línea por línea. Para esa capa, donde un error es visible y se corrige con facilidad, la velocidad era el objetivo.",
    "vibeBody3": "Las partes que más importan se someten a un estándar distinto. Todo lo que computa tus datos se verifica, no se hace por vibra: el núcleo de cada herramienta se contrasta con el estándar publicado que implementa, los RFC y especificaciones pertinentes, y su salida se confirma frente a referencias independientes antes de publicarse. Como dice una frase muy citada del programador Simon Willison, el código que has revisado, probado y entendido no es vibe coding en absoluto. El propio Karpathy ahora llama a la versión disciplinada agentic engineering: conservar el apalancamiento de la IA sin ceder la calidad del resultado. Esa es la línea que traza este proyecto. Rápido donde la velocidad sale gratis, riguroso donde cuenta, y una persona responsable de todo ello.",
    "closingTitle": "Una nota sobre el método",
    "closingBody": "Construir software con colaboradores de IA es lo bastante nuevo como para que lo honesto sea ser transparente al respecto. Nada aquí se publicó sin que una persona decidiera que debía hacerlo. Las IA fueron instrumentos, instrumentos capaces, pero instrumentos. El criterio, la responsabilidad y el nombre en el trabajo son humanos.",
    "backHome": "Volver a las herramientas",
    "standardsTitle": "Estándares y marcos",
    "standardsLede": "Cada herramienta aquí implementa una especificación publicada, no una suposición. Los decodificadores y las calculadoras se construyen sobre los documentos que definen sus formatos y se fijan a los vectores de prueba que esos documentos publican, de modo que cada respuesta se verifica contra la fuente de verdad y no contra sí misma.",
    "specsLabel": "Las especificaciones",
    "specsBody": "Los JSON Web Tokens siguen la RFC 7519, con firmas y algoritmos en las RFC 7515 y 7518; PKCE es la RFC 7636; Base64 y sus variantes son la RFC 4648; los UUID son la RFC 9562 (que dejó obsoleta la RFC 4122 en 2024 e incluye sus propios vectores de prueba); HMAC es la RFC 2104, sobre la familia SHA estandarizada en FIPS 180-4 y FIPS 202; los certificados X.509 son la RFC 5280; IPv4 y la notación CIDR son la RFC 4632; el direccionamiento IPv6 y su forma textual canónica son las RFC 4291 y RFC 5952; y el decodificador de cipher suites se guía por el registro oficial IANA TLS Cipher Suites, contrastado con las especificaciones de TLS 1.3 y 1.2 (RFC 8446 y 5246), las reglas de actualización del registro que fijan la columna “Recommended” (RFC 8447) y la prohibición de RC4 (RFC 7465). Donde un registro es la autoridad, sus datos se incorporan directamente en lugar de volver a teclearse.",
    "vectorsLabel": "Vectores de referencia",
    "vectorsBody": "Cada herramienta incluye un conjunto de vectores de referencia: entradas conocidas emparejadas con salidas de corrección conocida, tomadas de las RFC y los organismos de estandarización pertinentes. Se ejecutan en cada build, de modo que una refactorización que cambie en silencio una respuesta rompe el build en lugar de publicarse.",
    "owaspLabel": "OWASP",
    "owaspBody": "Las herramientas de seguridad se definen a partir de los marcos de OWASP, no se ensamblan sobre la marcha. Las herramientas de criptografía y TLS se corresponden con las áreas Cryptographic Failures y Security Misconfiguration del OWASP Top 10 y con las comprobaciones equivalentes del Application Security Verification Standard; la herramienta de tokens sigue la guía de OWASP para inspeccionar y validar JWT. Las prevention cheat sheets de OWASP también fijan reglas estrictas para lo que se construye después: cualquier manejo de XML o SAML que se añada aquí debe endurecerse contra XXE antes de publicarse.",
    "redblueLabel": "Rojo y azul",
    "redblueBody": "La misma decodificación y explicación que permite a un red-teamer leer un token capturado permite a un blue-teamer entender lo que emite su propia pila. La plataforma se sitúa deliberadamente del lado del análisis de esa línea: identifica, decodifica, convierte y explica, y no llega a falsificar, inyectar ni derrotar controles. Ese límite es una decisión de diseño, no un descuido; estas herramientas existen para enseñar y diagnosticar, no para convertirse en arma.",
    "localLabel": "Local y determinista",
    "localBody": "Todo se ejecuta en el navegador. La herramienta llama a una función pura: con la misma entrada devuelve la misma salida, no guarda estado y no envía nada a un servidor. Sin cookies, sin analíticas, como detalla por completo la página de Privacidad.",
    "thanksTitle": "Agradecimientos especiales",
    "p2Body": "La lógica determinista que ejecuta cada herramienta es la herramienta entera: no hay un paso oculto en el servidor, ni cuenta, ni telemetría. Todo se ejecuta en tu navegador.",
    "changelogLink": "Registro de cambios"
  },
  "support": {
    "title": "Apoya el proyecto",
    "lede": "Estas herramientas son gratuitas y están hechas para seguir siéndolo. Si te ahorran tiempo, puedes contribuir a su mantenimiento. Totalmente opcional, siempre.",
    "tipHeading": "Deja una propina",
    "tipBlurb": "Cada contribución va directamente a apoyar las herramientas y el tiempo dedicado a ellas.",
    "zeroCommission": "0% de comisión. Los enlaces van directo al proveedor; este sitio nunca está en el flujo de pago.",
    "placeholder": "Las opciones de apoyo se están configurando y aparecerán aquí pronto."
  },
  "admin": {
    "eyebrow": "Admin",
    "title": "Control del sitio",
    "lede": "La superficie de control de las funciones y ajustes opcionales de este sitio.",
    "previewBanner": "Estructura de vista previa. En el sitio estático estos controles previsualizan la interfaz de administración; el control en vivo se activa con la capa de servicio. Los cambios aquí no se guardan.",
    "featuresTitle": "Funciones",
    "flagRequestTraining": "Solicitar esta formación",
    "flagRequestTrainingDesc": "El CTA de generación de leads en las páginas de cursos y plataformas.",
    "flagTipJar": "TipJar",
    "flagTipJarDesc": "Enlaces de apoyo al creador en la página de apoyo.",
    "flagToolFunding": "Financiación de herramienta",
    "flagToolFundingDesc": "Interfaz de apoyo por herramienta.",
    "flagToolProvenance": "Procedencia de herramienta",
    "flagToolProvenanceDesc": "Panel de créditos y fuentes por herramienta.",
    "routingTitle": "Enrutamiento de leads",
    "routingDefaultLabel": "Predeterminado global",
    "routingNoOverrides": "No hay anulaciones por plataforma o curso configuradas.",
    "contactTitle": "Contacto",
    "contactEmailLabel": "Correo",
    "contactFormLabel": "Envío del formulario",
    "formMailto": "Respaldo mailto (sin backend)",
    "formEndpoint": "Enviando al endpoint",
    "tipJarTitle": "Proveedores de TipJar",
    "tipConfigured": "Configurado",
    "tipNotConfigured": "Sin configurar",
    "on": "Activado",
    "off": "Desactivado",
    "accessTitle": "Control de acceso",
    "accessNote": "Solo estas identidades federadas pueden tener acceso de administrador. Aplicado en el servidor por la capa de servicio; el sitio estático no autentica.",
    "accessFederatedOnly": "Solo inicio de sesión federado. Sin respaldo de cuenta local.",
    "accessRoleLabel": "Rol",
    "accessPermsLabel": "Permisos de owner"
  },
  "machineTranslation": {
    "notice": "Esta página fue traducida automáticamente y puede contener errores.",
    "cta": "Ayuda a mejorarla"
  },
  "contribute": {
    "eyebrow": "Traducciones",
    "title": "Ayuda a mejorar las traducciones",
    "lede": "Todos los idiomas aquí salvo el inglés son un primer borrador hecho por máquina. Si hablas alguno de ellos y notas algo incorrecto o torpe, tus correcciones son muy bienvenidas. Así puedes enviarlas.",
    "howTitle": "Cómo contribuir",
    "howBody": "El inglés es la fuente de la verdad, y todos los demás idiomas se traducen a partir de él, así que puede haber errores. Cada paquete de idioma es un único archivo de texto con frases etiquetadas. Descarga el que quieras mejorar, cambia solo el texto después de cada etiqueta y deja las etiquetas y todo lo que esté entre llaves exactamente como está. Luego envía el archivo editado por correo y menciona el idioma. Cada envío se revisa a mano.",
    "downloadHeading": "Paquetes de idioma",
    "referenceTag": "referencia",
    "emailHeading": "Envía tu contribución",
    "backHome": "Volver a las herramientas"
  },
  "api": {
    "title": "API",
    "lede": "Las herramientas de este sitio se ejecutan en tu navegador y mantienen tus datos en tu dispositivo. Para la automatización —scripts, pipelines e integraciones—, los mismos cálculos deterministas están disponibles como una pequeña API HTTP. Es el equivalente programático de las herramientas del navegador, no un reemplazo de ellas.",
    "privacyTitle": "Qué significa esto para tus datos",
    "privacyBody": "La API recibe únicamente la entrada que le envías, calcula un resultado y lo devuelve. No tiene estado y no registra valores de consulta ni cuerpos de petición. Si necesitas cero salida de datos garantizada, usa las herramientas del navegador o ejecuta tú mismo el motor abierto.",
    "engineTitle": "El mismo motor que el navegador",
    "specTitle": "La especificación",
    "specBody": "El contrato completo se publica como OpenAPI 3.1. Descárgalo, apunta tus propias herramientas hacia él o lee la referencia más abajo.",
    "downloadSpec": "Descargar openapi.yaml",
    "baseUrlLabel": "URL base",
    "authLabel": "Autenticación",
    "authValue": "Ninguna. Esta es una API pública y de solo lectura.",
    "referenceTitle": "Referencia",
    "loading": "Cargando la especificación.",
    "loadError": "No se pudo cargar la especificación.",
    "tryItTitle": "Pruébalo",
    "tryItSend": "Enviar",
    "tryItRunning": "Ejecutando.",
    "tryItHint": "Se ejecuta contra la API en vivo de este origen. Tu entrada se envía al endpoint.",
    "paramsTitle": "Parámetros",
    "responsesTitle": "Respuestas",
    "schemasTitle": "Esquemas",
    "exampleLabel": "Ejemplo",
    "requiredLabel": "obligatorio",
    "fieldLabel": "Campo",
    "typeLabel": "Tipo",
    "descriptionLabel": "Descripción",
    "viewReference": "Referencia",
    "viewSwagger": "Swagger UI",
    "swaggerLoadError": "No se pudo cargar Swagger UI.",
    "engineBody": "Cada endpoint ejecuta la misma función pura que la herramienta en el navegador, de modo que la API y el navegador devuelven resultados idénticos byte a byte."
  },
  "license_page": {
    "eyebrow": "Términos",
    "title": "Licencia",
    "closedHeading": "Código cerrado — este sitio web",
    "closedBody": "El sitio web en sí es de código cerrado. Su diseño, su interfaz, su contenido escrito (incluido cada artículo de Learn), su marca y la forma particular en que estas herramientas se ensamblan y se presentan aquí son propiedad exclusiva, todos los derechos reservados. No se concede ningún permiso para copiar, reproducir, modificar, redistribuir ni crear obras derivadas del sitio o de su contenido sin consentimiento previo por escrito.",
    "contact": "¿Preguntas sobre la licencia? <a>Ponte en contacto.</a>",
    "backHome": "Volver a las herramientas",
    "thirdHeading": "Componentes de código abierto",
    "lede": "ronutz.com es una obra propietaria, todos los derechos reservados. Estos términos cubren el sitio web y su contenido. El sitio está construido sobre software de código abierto, que se usa y redistribuye bajo sus propios términos de licencia, acreditados a continuación.",
    "thirdBody": "Este sitio se apoya en trabajo de código abierto. El sitio en sí está construido con Next.js y React y se entrega como una exportación estática; la internacionalización usa next-intl; el contenido de Learn se renderiza con next-mdx-remote, gray-matter, remark-gfm y js-yaml; y la búsqueda funciona con Pagefind. Estos componentes se ofrecen bajo la MIT License, excepto next-mdx-remote (Mozilla Public License 2.0). La referencia de la API incorpora Swagger UI, bajo la Apache License 2.0. Cada componente permanece bajo su propia licencia, y los avisos completos se entregan junto con el código fuente."
  },
  "contributeIdeas": {
    "eyebrow": "Ideas bienvenidas",
    "title": "Comparte una idea",
    "lede": "Esta caja de herramientas está hecha para crecer, y la señal más clara de hacia dónde debe ir viene de quienes la usan. ¿Encontraste un bug, un error o una inexactitud? ¿Quieres una herramienta que todavía no está aquí? ¿Ves una mejor forma de resolver algo, o un resultado que redactarías de otra manera? Envíalo; todo tipo de aporte es bienvenido.",
    "sendTitle": "Qué puedes enviar",
    "sendBody": "Bugs, errores e inexactitudes de cualquier tipo: una herramienta que se comporta mal, un resultado equivocado, un fallo en un artículo de Learn, o cualquier cosa que simplemente parezca rara. Solicitudes de funciones para herramientas que ya existen. Ideas de nuevas herramientas que la caja debería tener. Correcciones y añadidos a los artículos de Learn, como una explicación más clara, una mejor fuente, o un tema que falta. O simplemente otro ángulo sobre un problema. Vale en borrador; una frase basta para empezar una conversación.",
    "toolTitle": "Si propones una nueva herramienta",
    "toolBody": "Las herramientas aquí son módulos pequeños y autodescriptivos: un manifiesto que dice qué es la herramienta y de dónde proviene su corrección, una función pura que hace el trabajo, y un conjunto de golden vectors, los pares fijos de entrada y salida que lo demuestran. Una buena candidata calcula de forma local y determinista (la misma entrada siempre produce la misma salida, sin reloj, red ni aleatoriedad en el resultado), mantiene en el dispositivo todo lo sensible, y ancla su corrección en una fuente citada, como una RFC, y no en una opinión. No necesitas construir nada de eso para proponer una: solo describe qué debería calcular, un ejemplo, y la fuente en la que se basa.",
    "fitRule": "Una prueba sencilla lo decide. Cada herramienta aquí funciona por completo en tu navegador y no envía nada a ningún sitio, así que una herramienta nueva tiene que ser algo que una computadora pueda resolver solo a partir de lo que escribes, siguiendo una regla fija y publicada. Si necesita conectarse a internet, consultar algo en vivo, iniciar sesión o recordarte, no tiene lugar aquí.",
    "fitYes": "Encaja:",
    "fitYesBody": "decodificar o explicar algo que pegas (un token, un certificado, una configuración, la salida de un comando), convertir entre formatos, calcular a partir de un estándar o fórmula, o generar a partir de una regla, como un UUID, un hash o una línea de comandos.",
    "fitNo": "No encaja:",
    "fitNoBody": "cualquier cosa que tenga que conectarse a internet o comprobar algo en vivo (probar un sitio web real, consultar un servidor DNS en vivo, escanear una dirección), cualquier cosa que necesite una cuenta, un inicio de sesión o datos guardados, o cualquier cosa cuya respuesta no esté fijada por un estándar publicado.",
    "fitUnsure": "¿No sabes de qué lado cae tu idea? Envíala de todos modos y di qué debería hacer. Te diré con sinceridad si encaja, y por qué.",
    "emailTitle": "Cómo contactarme",
    "emailBody": "El correo es el canal. Cuéntame qué encontraste o qué te gustaría, con detalle suficiente para actuar: un ejemplo, un enlace, la redacción exacta, lo que encaje. Si mejora la caja de herramientas, se construye.",
    "emailLabel": "Correo",
    "backToTools": "Volver a las herramientas"
  },
  "languageStatus": {
    "title": "Estado de la traducción",
    "reviewed": "Revisado por una persona",
    "complete": "Automática, completa",
    "partial": "Automática, en curso",
    "explainTitle": "Cómo se marcan las traducciones",
    "explainBody": "El inglés y el portugués de Brasil están escritos y revisados por una persona. La mayoría de los demás idiomas se traducen automáticamente y se marcan según su avance: ámbar cuando un idioma cubre todo el sitio, amarillo mientras el contenido más reciente sigue en inglés y se está poniendo al día. Los idiomas marcados en rojo aún no tienen traducción y se muestran en inglés por ahora. Las páginas traducidas automáticamente también llevan un breve aviso, y puedes ayudar a mejorar cualquiera de ellas.",
    "stub": "Aún no traducido"
  },
  "changelog": {
    "eyebrow": "Registro de cambios",
    "title": "Novedades",
    "lede": "Un registro continuo de nuevas herramientas, nuevos artículos de Learn y cambios importantes en este sitio. Hoy hay {count} herramientas disponibles.",
    "kindLaunch": "Lanzamiento",
    "kindTool": "Nueva herramienta",
    "kindFeature": "Función",
    "kindI18n": "Localización",
    "kindContent": "Contenido",
    "kindInfra": "Infraestructura"
  }
}
