{
  "_meta": {
    "locale": "fr",
    "status": "machine-draft",
    "note": "Traduction française complète (ébauche IA, vouvoiement professionnel). À faire relire par une personne de langue maternelle avant toute campagne marketing, conformément à la règle de qualité des traductions. Sans tirets cadratins (em dash), conformément aux directives CONCORD. Les variables et les noms propres restent inchangés."
  },
  "site": {
    "name": "ronutz",
    "tagline": "Des outils réseau et sécurité qui s'exécutent sur votre machine, pas dans le cloud de quelqu'un d'autre."
  },
  "nav": {
    "tools": "Outils",
    "about": "À propos",
    "certifications": "Certifications",
    "training": "Formations",
    "contact": "Contact",
    "skipToContent": "Aller au contenu",
    "openMenu": "Ouvrir le menu",
    "closeMenu": "Fermer le menu",
    "learn": "Apprendre",
    "endorsements": "Recommandations",
    "certs": "Certifications"
  },
  "languageSwitcher": {
    "label": "Langue",
    "stubNotice": "Cette langue n'est pas encore traduite. Affichage en anglais."
  },
  "home": {
    "hero": {
      "eyebrow": "Conçu par un praticien, la confidentialité d'abord",
      "title": "La boîte à outils réseau et sécurité qui garde vos données sur votre machine.",
      "subtitle": "Calculs de sous-réseaux, diagnostics DNS et e-mail, inspection de certificats et plus encore, calculés localement dans votre navigateur. Aucun envoi, aucune journalisation, aucun compte requis pour les outils du quotidien.",
      "ctaPrimary": "Ouvrir la boîte à outils",
      "ctaSecondary": "Qui conçoit cela"
    },
    "credibility": {
      "title": "Conçu par quelqu'un qui fait le travail depuis 1996.",
      "body": "Trente ans dans les réseaux et la sécurité d'entreprise, livrés par un formateur en exercice plutôt que par une page marketing. Certifié sur quatre plateformes, de sorte que les comparaisons ici sont faites honnêtement, pas vendues.",
      "aboutCta": "En savoir plus sur la personne derrière"
    },
    "pillars": {
      "title": "Quatre plateformes, enseignées et tenues à jour.",
      "f5": "F5",
      "fortinet": "Fortinet",
      "extreme": "Extreme Networks",
      "netskope": "Netskope"
    },
    "privacy": {
      "title": "Pourquoi le local-first compte pour le travail de sécurité.",
      "body": "Lorsque vous collez une configuration, une capture de paquets ou un certificat dans un outil, ces données contiennent souvent des secrets. Ici, les outils du quotidien s'exécutent entièrement dans votre navigateur. La saisie ne quitte jamais votre appareil, il n'y a donc rien à journaliser, à divulguer ou à réquisitionner."
    },
    "toolPreview": {
      "title": "Essayez un outil dès maintenant.",
      "body": "Le calculateur CIDR ci-dessous s'exécute localement. Saisissez un réseau et un préfixe pour voir la plage d'adresses, le nombre d'hôtes et le masque. Rien n'est envoyé où que ce soit.",
      "learnHeading": "Apprendre les concepts",
      "toolboxCta": "Ouvrir la boîte à outils complète",
      "seeAllArticles": "Voir tous les articles"
    },
    "provenance": {
      "title": "Crédits et sources",
      "show": "Afficher",
      "hide": "Masquer",
      "basisLabel": "Comment ça fonctionne",
      "sourcesLabel": "Normes et sources"
    },
    "funding": {
      "title": "Soutenir cet outil",
      "pitch": "Cet outil est gratuit et conçu pour le rester. S'il trouve une place dans votre flux de travail, vous pouvez aider à financer son entretien et la suite.",
      "purposeLabel": "Financement en cours"
    },
    "stats": {
      "tools": "Outils",
      "articles": "Articles",
      "sectionLabel": "La boîte à outils en bref"
    }
  },
  "tools": {
    "cidr": {
      "title": "Calculateur CIDR",
      "description": "Calculez les adresses de réseau et de diffusion, la plage d'hôtes utilisables, le nombre d'hôtes et le masque de réseau pour un bloc CIDR IPv4. S'exécute localement dans votre navigateur.",
      "inputLabel": "Bloc CIDR",
      "inputPlaceholder": "192.168.1.0/24",
      "compute": "Calculer",
      "runsLocally": "S'exécute localement. Rien n'est envoyé à un serveur.",
      "prefixSlider": "Longueur du préfixe",
      "bitsHeading": "Bits de l'adresse",
      "bitsNetwork": "Réseau",
      "bitsHost": "Hôte",
      "bitsNote": "Les bits surlignés identifient le réseau — les autres adressent les hôtes en son sein.",
      "results": {
        "network": "Adresse de réseau",
        "broadcast": "Adresse de diffusion",
        "netmask": "Masque de réseau",
        "wildcard": "Masque générique",
        "firstHost": "Premier hôte utilisable",
        "lastHost": "Dernier hôte utilisable",
        "totalAddresses": "Adresses totales",
        "usableHosts": "Hôtes utilisables"
      },
      "errors": {
        "empty": "Saisissez un bloc CIDR pour calculer.",
        "invalid": "Cela ne ressemble pas à un bloc CIDR valide. Essayez un format comme 192.168.1.0/24."
      },
      "name": "Calculateur CIDR / de sous-réseaux",
      "blurb": "Décomposez n'importe quel bloc CIDR IPv4 en adresses de réseau et de diffusion, plage d'hôtes utilisables, nombre d'hôtes et masque de réseau. S'exécute entièrement dans votre navigateur.",
      "modes": {
        "subnet": "Sous-réseau",
        "vlsm": "VLSM",
        "supernet": "Super-réseau",
        "overlap": "Chevauchement / vide"
      },
      "modeDesc": {
        "subnet": "Analyse un seul bloc CIDR IPv4 : réseau, diffusion, masque et plage d'hôtes.",
        "vlsm": "Découpe un bloc parent en sous-réseaux de taille variable selon une liste de nombres d'hôtes.",
        "supernet": "Résume une liste de préfixes en le plus petit ensemble de blocs qui les couvrent.",
        "overlap": "Détecte les chevauchements et l'inclusion entre préfixes, ainsi que les vides dans une portée facultative."
      },
      "vlsm": {
        "parentLabel": "Bloc parent",
        "reqsLabel": "Besoins en sous-réseaux",
        "namePlaceholder": "Nom (facultatif)",
        "hostsPlaceholder": "Hôtes",
        "addRow": "Ajouter un sous-réseau",
        "remove": "Supprimer",
        "run": "Allouer",
        "th": {
          "name": "Nom",
          "hosts": "Hôtes",
          "network": "Réseau",
          "prefix": "Préfixe",
          "netmask": "Masque de réseau",
          "range": "Plage utilisable",
          "broadcast": "Diffusion",
          "usable": "Hôtes utilisables"
        },
        "stat": {
          "parent": "Parent",
          "used": "Utilisées",
          "free": "Libres",
          "utilization": "Utilisation"
        },
        "unfit": "N'ont pas tenu",
        "parentPlaceholder": "10.0.0.0/24"
      },
      "supernet": {
        "label": "Préfixes à agréger",
        "run": "Agréger",
        "minimal": "Ensemble couvrant minimal",
        "single": "Super-réseau unique",
        "singleExtra": "Ajoute {extra} adresses supplémentaires au-delà des entrées.",
        "stat": {
          "inputs": "Préfixes d'entrée",
          "addresses": "Adresses",
          "blocks": "Blocs agrégés"
        },
        "placeholder": "192.168.0.0/24\n192.168.1.0/24"
      },
      "overlap": {
        "label": "Préfixes à vérifier",
        "scopeLabel": "Portée (facultatif, active la détection des vides)",
        "run": "Vérifier",
        "overlapsTitle": "Chevauchements",
        "noOverlaps": "Aucun chevauchement trouvé.",
        "gapsTitle": "Vides dans la portée",
        "noGaps": "Aucun vide dans la portée indiquée.",
        "kind": {
          "identical": "identique à",
          "contains": "contient",
          "contained": "est inclus dans",
          "partial": "chevauche partiellement"
        },
        "addresses": "adresses",
        "stat": {
          "covered": "Couvertes",
          "scope": "Portée"
        },
        "placeholder": "10.0.0.0/24\n10.0.0.128/25",
        "scopePlaceholder": "10.0.0.0/16"
      },
      "err": {
        "ipv4": "Adresse IPv4 non valide. Utilisez quatre octets de 0 à 255, comme 192.168.1.0.",
        "octet": "Un octet est hors plage (chacun doit être compris entre 0 et 255).",
        "format": "Le format attendu est A.B.C.D/préfixe, comme 192.168.1.0/24.",
        "prefix": "La longueur du préfixe doit être comprise entre 0 et 32.",
        "tooMany": "Trop d'entrées. Réduisez la liste et réessayez.",
        "noReqs": "Ajoutez au moins un besoin de sous-réseau avec un nombre d'hôtes.",
        "noPrefixes": "Saisissez au moins un préfixe, un par ligne."
      },
      "rangeHeading": "Répartition des adresses",
      "usableShort": "utilisables",
      "rfcNote": "/31 et /32 ne réservent rien : chaque adresse est utilisable (RFC 3021).",
      "reservedNote": "La première adresse est le réseau et la dernière le broadcast ; les deux sont réservées, donc utilisables = total − 2."
    },
    "title": "Outils",
    "lede": "De petits utilitaires rapides et respectueux de la vie privée qui s'exécutent entièrement dans votre navigateur. Rien de ce que vous saisissez n'est envoyé où que ce soit. D'autres arrivent.",
    "open": "Ouvrir",
    "comingSoon": "Bientôt disponible",
    "note": "Cette boîte à outils s'enrichit. De nouveaux outils sont ajoutés ici au fur et à mesure de leur publication, chacun local-first et gratuit.",
    "learnHeading": "Apprendre les concepts",
    "backToTools": "Outils",
    "references": "Références",
    "jumpTo": "Aller à",
    "categories": {
      "identity": "Identité et jetons",
      "encoding": "Encodage et données",
      "hashing": "Hachage et crypto",
      "identifiers": "Identifiants",
      "pki": "Certificats et PKI",
      "networking": "Réseau",
      "transport": "TLS et transport"
    },
    "hash": {
      "name": "Générateur de hachage (SHA-1/256/384/512)",
      "blurb": "Calculez des empreintes SHA-1, SHA-256, SHA-384 et SHA-512 de n'importe quel texte, affichées en hex et en Base64, à l'aide du Web Crypto natif du navigateur. S'exécute entièrement dans votre navigateur.",
      "algorithmLabel": "Algorithme de hachage",
      "inputLabel": "Texte à hacher",
      "inputPlaceholder": "The quick brown fox jumps over the lazy dog",
      "runsLocally": "Le hachage s'exécute localement via Web Crypto. Rien de ce que vous saisissez ne quitte votre navigateur.",
      "bits": "{bits} bits ({bytes} octets)",
      "sha1Note": "SHA-1 est cassé en matière de résistance aux collisions et inadapté à la sécurité (signatures, certificats). Il ne convient qu'aux sommes de contrôle sans enjeu de sécurité et à l'interopérabilité héritée.",
      "hex": "Hex",
      "base64": "Base64",
      "copy": "Copier",
      "copied": "Copié"
    },
    "hmac": {
      "name": "Générateur de HMAC (SHA-256/384/512)",
      "blurb": "Calculez un HMAC à clé sur un message avec votre clé secrète, affiché en hex et en Base64, via le Web Crypto natif du navigateur. La même construction que le vérificateur de JWT utilise pour HS256. Votre clé ne quitte jamais votre navigateur.",
      "algorithmLabel": "Algorithme HMAC",
      "messageLabel": "Message",
      "messagePlaceholder": "Le message à authentifier",
      "keyLabel": "Clé secrète",
      "keyPlaceholder": "Votre secret partagé",
      "runsLocally": "Le HMAC s'exécute localement via Web Crypto. Votre message et votre clé ne quittent jamais votre navigateur.",
      "hex": "Hex",
      "base64": "Base64",
      "copy": "Copier",
      "copied": "Copié",
      "struct": {
        "heading": "Comment HMAC est construit",
        "innerHash": "hachage interne",
        "note": "HMAC hache le message deux fois. La clé est combinée par XOR avec un pad interne fixe avant le premier hachage et avec un pad externe avant le second, et cette construction à deux pads empêche les attaques par extension de longueur. La clé est d'abord ramenée à la taille de bloc du hachage."
      }
    },
    "base64": {
      "name": "Codec Base64, Base32, Hex et pourcent",
      "blurb": "Encodez du texte en Base64, Base64 sûr pour les URL, Base32, hexadécimal ou encodage pourcent, et décodez n'importe lequel d'entre eux. Tolère le remplissage et les espaces manquants, et signale les résultats binaires (non UTF-8). Fonctionne entièrement dans votre navigateur.",
      "directionLabel": "Sens",
      "direction": {
        "encode": "Encoder",
        "decode": "Décoder"
      },
      "inputLabelEncode": "Texte à encoder",
      "inputLabelDecode": "Texte encodé à décoder",
      "placeholderEncode": "Hello, World!",
      "placeholderDecode": "SGVsbG8sIFdvcmxkIQ==",
      "runsLocally": "L'encodage et le décodage s'exécutent localement. Rien de ce que vous collez ne quitte votre navigateur.",
      "decodeErrors": {
        "invalid-characters": "Cette entrée contient des caractères hors de l'alphabet du codec sélectionné.",
        "invalid-length": "Cette entrée n'a pas une longueur valide pour le codec sélectionné.",
        "invalid-escape": "Cette entrée comporte une séquence d'échappement pourcent mal formée (un % non suivi de deux chiffres hexadécimaux)."
      },
      "outputEncode": "Encodé",
      "outputDecode": "Texte décodé",
      "copy": "Copier",
      "copied": "Copié",
      "emptyOutput": "(vide)",
      "decodedBytes": "{bytes, plural, one {# octet décodé} other {# octets décodés}}.",
      "notUtf8": "{bytes, plural, one {# octet décodé} other {# octets décodés}}, mais le résultat n'est pas du texte UTF-8 valide (probablement binaire).",
      "codecLabel": "Codec",
      "codec": {
        "base64": "Base64",
        "base64url": "Base64URL",
        "base32": "Base32",
        "base16": "Hex",
        "percent": "Percent"
      }
    },
    "pkce": {
      "name": "Vérificateur et challenge OAuth PKCE",
      "blurb": "Générez un code_verifier OAuth 2.0 et dérivez son code_challenge S256, ou collez le vôtre et vérifiez-le par rapport aux règles de longueur et de jeu de caractères de RFC 7636. La même dérivation SHA-256 en base64url qu'attend votre serveur d'autorisation. S'exécute entièrement dans votre navigateur.",
      "verifierLabel": "Vérificateur de code",
      "verifierPlaceholder": "Collez un code_verifier, ou générez-en un",
      "generate": "Générer",
      "runsLocally": "La génération et la dérivation s'exécutent localement. Votre vérificateur ne quitte jamais votre navigateur.",
      "lengthBadge": "Longueur {length} (43-128)",
      "charsetOk": "Jeu de caractères non réservés",
      "charsetBad": "Caractères invalides",
      "s256Title": "Code challenge · S256",
      "plainTitle": "Code challenge · plain",
      "plainNote": "La méthode plain est déconseillée. Utilisez S256 partout où le client peut calculer SHA-256.",
      "encodingLabel": "base64url",
      "plainValueLabel": "= code_verifier",
      "copy": "Copier",
      "copied": "Copié",
      "flowHeading": "Comment fonctionne PKCE",
      "laneClient": "App / Client",
      "laneServer": "Serveur d'autorisation",
      "s1": "Générer un code_verifier aléatoire",
      "s2": "Dériver le code_challenge",
      "s3": "La requête d'autorisation porte le challenge",
      "s4": "Le serveur stocke le challenge",
      "s5": "Code d'autorisation renvoyé",
      "s6": "La requête de jeton porte le verifier",
      "s7": "Le serveur redérive et compare",
      "s8": "Jetons d'accès et de rafraîchissement émis"
    },
    "uuid": {
      "name": "Générateur et inspecteur d'UUID (v4 / v7)",
      "blurb": "Générez des UUID v4 aléatoires ou v7 ordonnés dans le temps, ou collez n'importe quel UUID pour lire sa version, sa variante et (pour v7) l'horodatage de création intégré. La génération utilise la source aléatoire sécurisée du navigateur. S'exécute entièrement dans votre navigateur.",
      "versionLabel": "Version d'UUID",
      "generate": "Générer",
      "clear": "Effacer",
      "emptyHint": "Choisissez une version et générez.",
      "runsLocally": "La génération et l'inspection s'exécutent localement. Rien n'est envoyé où que ce soit.",
      "copy": "Copier",
      "copied": "Copié",
      "inspectLabel": "Inspecter un UUID",
      "inspectPlaceholder": "Collez n'importe quel UUID pour le décoder",
      "valid": "UUID valide",
      "invalid": "UUID non valide",
      "versionField": "Version",
      "variantField": "Variante",
      "timestampField": "Horodatage (v7)",
      "versionValue": "Version {version}"
    },
    "jwt": {
      "name": "Décodeur et vérificateur de JWT",
      "blurb": "Décodez l'en-tête et les claims d'un JSON Web Token, lisez son expiration et ses échéances en langage clair et vérifiez une signature HS256/384/512 avec un secret collé. S'exécute entièrement dans votre navigateur.",
      "inputLabel": "JSON Web Token",
      "inputPlaceholder": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c",
      "runsLocally": "Le décodage et les vérifications de signature s'exécutent localement. Le jeton et le secret ne quittent jamais votre navigateur.",
      "errors": {
        "empty": "Collez un JSON Web Token à décoder.",
        "format": "Cela ne ressemble pas à un JWT. Un jeton comporte trois parties base64url séparées par des points : header.payload.signature.",
        "header": "L'en-tête n'est pas valide. Il devrait s'agir de JSON encodé en base64url.",
        "payload": "La charge utile n'est pas valide. Il devrait s'agir de JSON encodé en base64url."
      },
      "panels": {
        "header": "En-tête",
        "payload": "Charge utile",
        "signature": "Signature",
        "noSignature": "Aucun segment de signature (jeton non sécurisé)."
      },
      "claims": {
        "iss": "Émetteur (iss)",
        "sub": "Sujet (sub)",
        "aud": "Audience (aud)",
        "jti": "ID du JWT (jti)",
        "iat": "Émis le (iat)",
        "nbf": "Pas avant (nbf)",
        "exp": "Expire (exp)"
      },
      "status": {
        "expired": "Expiré {rel}",
        "expiresIn": "Valide, expire {rel}",
        "notYetValid": "Pas encore valide, commence {rel}",
        "noExpiry": "Aucun claim d'expiration (exp)"
      },
      "verify": {
        "label": "Vérifier la signature HMAC (HS256/384/512)",
        "placeholder": "secret partagé",
        "button": "Vérifier",
        "valid": "Signature valide pour ce secret.",
        "invalid": "La signature ne correspond pas à ce secret.",
        "algNone": "Ce jeton n'est pas sécurisé (alg: none), il n'y a donc aucune signature à vérifier.",
        "unsupportedAlg": "La vérification dans le navigateur ne couvre que HS256/384/512. {alg} est asymétrique et nécessite une clé publique.",
        "hint": "Le secret sert uniquement à calculer un HMAC dans votre navigateur. Il n'est jamais envoyé où que ce soit."
      },
      "struct": {
        "heading": "Anatomie d'un JWT",
        "signingInput": "Entrée de signature",
        "note": "L'en-tête et la charge utile sont seulement encodés en base64url, pas chiffrés, donc n'importe qui peut les lire. La signature est calculée sur l'en-tête et la charge utile joints par un point, et c'est ce qu'un vérificateur contrôle."
      }
    },
    "x509": {
      "name": "Décodeur de certificats X.509",
      "blurb": "Collez un certificat en PEM, base64 ou hex pour lire son sujet, son émetteur, sa fenêtre de validité, sa clé publique et ses extensions v3, avec des empreintes SHA-256 et SHA-1. S'exécute entièrement dans votre navigateur.",
      "inputLabel": "Certificat X.509",
      "inputPlaceholder": "-----BEGIN CERTIFICATE-----\nMIIB...\n-----END CERTIFICATE-----",
      "runsLocally": "Le décodage et les empreintes s'exécutent localement. Le certificat ne quitte jamais votre navigateur.",
      "errors": {
        "empty": "Collez un certificat X.509 à décoder.",
        "format": "Cela ne ressemble pas à un certificat. Collez du PEM (-----BEGIN CERTIFICATE-----), du base64 ou du hex.",
        "der": "Les octets ne sont pas du DER valide. Vérifiez que tout le certificat a été collé, y compris la ligne END.",
        "structure": "Ceci se décode en ASN.1 mais n'est pas un certificat X.509. Un certificat est une SEQUENCE composée de TBSCertificate, signatureAlgorithm et signatureValue."
      },
      "status": {
        "valid": "Valide, expire {rel}",
        "expired": "Expiré {rel}",
        "notYetValid": "Pas encore valide, commence {rel}"
      },
      "panels": {
        "subject": "Sujet",
        "issuer": "Émetteur",
        "details": "Détails",
        "publicKey": "Clé publique",
        "extensions": "Extensions",
        "fingerprints": "Empreintes",
        "sct": "Certificate Transparency"
      },
      "fields": {
        "version": "Version",
        "serial": "Numéro de série",
        "notBefore": "Pas avant",
        "notAfter": "Pas après",
        "signatureAlgorithm": "Algorithme de signature",
        "algorithm": "Algorithme",
        "keySize": "Taille de clé",
        "exponent": "Exposant",
        "curve": "Courbe",
        "bits": "{n} bits",
        "selfSigned": "Auto-émis"
      },
      "ext": {
        "san": "Autres noms du sujet",
        "keyUsage": "Utilisation de la clé",
        "extKeyUsage": "Utilisation étendue de la clé",
        "basicConstraints": "Contraintes de base",
        "subjectKeyId": "Identifiant de clé du sujet",
        "authorityKeyId": "Identifiant de clé de l'autorité",
        "caTrue": "Autorité de certification (CA: true)",
        "caFalse": "Pas une CA (CA: false)",
        "pathLen": "longueur de chemin {n}",
        "critical": "critique"
      },
      "fp": {
        "sha256": "SHA-256",
        "sha1": "SHA-1",
        "computing": "Calcul des empreintes..."
      },
      "chainHeading": "Chaîne de confiance",
      "tierRoot": "AC racine",
      "tierIntermediate": "AC intermédiaire",
      "tierLeaf": "Certificat d'entité finale",
      "roleRoot": "Ancre de confiance auto-signée",
      "roleIntermediate": "Signée par une racine ; signe les certificats finaux",
      "roleLeaf": "Identifie un serveur ou un client",
      "thisCert": "ce certificat",
      "issuedBy": "Émis par",
      "signs": "signe",
      "trustNote": "La confiance descend : chaque certificat est signé par celui du dessus, jusqu'à une racine à laquelle votre système fait déjà confiance.",
      "sct": {
        "intro": "SCT intégrés : {n}. Chacun est la preuve signée par un journal CT qu'il a enregistré ce certificat ; les navigateurs en exigent un nombre minimal pour que le certificat soit approuvé.",
        "entry": "SCT {i}",
        "logId": "ID du journal",
        "timestamp": "Enregistré le",
        "signature": "Signature",
        "note": "Les signatures sont affichées mais non vérifiées ici ; vérifier un SCT nécessite la clé publique du journal et le précertificat."
      }
    },
    "ipv6": {
      "name": "Boîte à outils IPv6",
      "blurb": "Analysez une adresse ou un préfixe IPv6 pour voir ses formes canonique (RFC 5952) et entièrement développée, sa classification d'usage spécial, le calcul de préfixe, une MAC EUI-64 si elle est présente et son nom DNS inverse ip6.arpa. S'exécute entièrement dans votre navigateur.",
      "inputLabel": "Adresse ou préfixe IPv6",
      "inputPlaceholder": "2001:db8::1/64",
      "runsLocally": "L'analyse s'exécute localement. L'adresse ne quitte jamais votre navigateur.",
      "errors": {
        "empty": "Saisissez une adresse ou un préfixe IPv6 à décoder.",
        "format": "Ce n'est pas une adresse IPv6 valide. Utilisez huit groupes hex, éventuellement compressés une fois avec :: (par exemple 2001:db8::1).",
        "prefix": "La longueur du préfixe n'est pas valide. Pour IPv6, elle doit être comprise entre 0 et 128."
      },
      "panels": {
        "forms": "Formes canoniques",
        "classification": "Classification",
        "prefix": "Préfixe",
        "identifiers": "Identifiants"
      },
      "fields": {
        "compressed": "Compressée (RFC 5952)",
        "expanded": "Développée",
        "type": "Type",
        "scope": "Portée",
        "embeddedIpv4": "IPv4 intégrée",
        "network": "Réseau",
        "firstAddress": "Première adresse",
        "lastAddress": "Dernière adresse",
        "count": "Adresses",
        "hostBits": "Bits d'hôte",
        "eui64": "MAC EUI-64",
        "reverseDns": "DNS inverse (ip6.arpa)"
      },
      "badges": {
        "multicast": "multidiffusion"
      },
      "segHeading": "Structure de l'adresse",
      "networkSeg": "Préfixe réseau",
      "ifaceId": "ID d'interface",
      "hostBits": "Bits d'hôte",
      "prefixNote": "Les bits à gauche de la limite sont fixés par le préfixe ; ceux à droite identifient l'hôte à l'intérieur.",
      "conventionNote": "Aucun préfixe fourni : la ligne pointillée marque la division /64 habituelle : préfixe de routage et sous-réseau à gauche, l'identifiant d'interface de 64 bits à droite."
    },
    "cipher": {
      "name": "Décodeur de suites de chiffrement",
      "blurb": "Saisissez une suite de chiffrement TLS, sous forme de nom IANA, de nom OpenSSL ou GnuTLS, ou de point de code hexadécimal, pour la décomposer en échange de clés, authentification, chiffrement, mode et MAC, avec une lecture de sécurité en langage clair et la recommandation officielle de l'IANA. Tout s'exécute dans votre navigateur, sur une copie intégrée du registre de l'IANA.",
      "inputLabel": "Suite de chiffrement",
      "inputPlaceholder": "TLS_AES_128_GCM_SHA256, ECDHE-RSA-AES128-GCM-SHA256 ou 0x1301",
      "runsLocally": "Le décodage s'exécute localement, sur une copie intégrée du registre des suites de chiffrement TLS de l'IANA. Rien n'est envoyé nulle part.",
      "notInRegistryNote": "Ce nom a été analysé structurellement mais n'a pas été trouvé dans l'instantané intégré du registre de l'IANA — son point de code et ses noms équivalents ne sont donc pas affichés.",
      "errors": {
        "empty": "Saisissez une suite de chiffrement à décoder.",
        "format": "Ce n'est pas une suite de chiffrement. Saisissez un nom IANA (TLS_...), un nom OpenSSL ou un point de code hexadécimal tel que 0x1301.",
        "unknown": "C'est un format de point de code valide, mais ce n'est pas une suite de chiffrement attribuée dans le registre de l'IANA."
      },
      "ratings": {
        "recommended": "Recommandée",
        "secure": "Sûre",
        "weak": "Faible",
        "insecure": "Non sûre",
        "unknown": "Inconnue"
      },
      "iana": {
        "Y": "IANA : recommandée",
        "N": "IANA : non recommandée",
        "D": "IANA : déconseillée"
      },
      "badges": {
        "tls13": "TLS 1.3",
        "notInRegistry": "Hors de l'instantané IANA"
      },
      "panels": {
        "identity": "Identité",
        "components": "Composants",
        "security": "Sécurité"
      },
      "fields": {
        "codePoint": "Point de code",
        "name": "Nom IANA",
        "openssl": "Nom OpenSSL",
        "gnutls": "Nom GnuTLS",
        "protocol": "Protocole",
        "dtls": "DTLS-OK",
        "references": "Références"
      },
      "protocol": {
        "tls13": "TLS 1.3",
        "legacy": "TLS 1.2 et antérieurs"
      },
      "comp": {
        "keyExchange": "Échange de clés",
        "authentication": "Authentification",
        "forwardSecrecy": "Confidentialité persistante",
        "cipher": "Chiffrement",
        "mode": "Mode",
        "aead": "AEAD",
        "prf": "Hachage PRF/KDF",
        "mac": "MAC",
        "yes": "Oui",
        "no": "Non",
        "bits": "{n} bits",
        "negotiatedSeparately": "Négocié séparément (TLS 1.3)"
      },
      "reasons": {
        "nullCipher": "Chiffrement NULL : le trafic n'est pas chiffré du tout.",
        "anon": "Échange de clés anonyme : le pair n'est pas authentifié, ce qui n'offre aucune protection contre un intercepteur actif.",
        "export40": "Clé de niveau export (40 bits) : cassée par force brute de façon triviale, un vestige des règles d'exportation des années 1990.",
        "rc4": "Chiffrement de flux RC4 : son flux de clés biaisé le rend cassé, et le RFC 7465 l'interdit pour TLS.",
        "singleDes": "DES simple avec clé de 56 bits : cassable par force brute en quelques heures.",
        "rc2": "RC2 : un chiffrement obsolète de 40/64 bits, non sûr pour un usage moderne.",
        "tripleDes": "Le 3DES a un bloc de 64 bits, ce qui l'expose à l'attaque des anniversaires Sweet32 (CVE-2016-2183). Le RFC 8429 le rend obsolète.",
        "md5Mac": "MAC en MD5 : MD5 est cassé sur le plan cryptographique.",
        "cbcMac": "CBC avec un MAC HMAC-SHA1 ou MD5 utilise le MAC-then-encrypt, exposé aux attaques par oracle de remplissage comme BEAST et Lucky13.",
        "ccm8": "CCM_8 tronque le tag d'authentification à 8 octets, ce qui affaiblit l'intégrité. L'IANA ne le marque pas comme recommandé.",
        "noFs": "Pas de confidentialité persistante : avec un échange de clés statique, une clé à long terme compromise peut déchiffrer les sessions passées. Les recommandations modernes exigent ECDHE ou DHE.",
        "legacyCipher": "{value} est un chiffrement hérité, obsolète pour TLS.",
        "aead": "Chiffrement AEAD (chiffrement authentifié) : confidentialité et intégrité dans une seule primitive, sans MAC distinct susceptible d'être mal utilisé.",
        "fs": "Confidentialité persistante : un échange de clés éphémère garde le trafic passé en sécurité même si la clé à long terme est compromise plus tard.",
        "tls13": "Suite TLS 1.3 : uniquement des chiffrements AEAD modernes, avec l'échange de clés négocié séparément et toujours éphémère.",
        "ianaD": "L'IANA marque cette suite « D » (déconseillée) : elle NE DEVRAIT PAS ou NE DOIT PAS être utilisée, selon la situation.",
        "ianaN": "L'IANA ne marque pas cette suite « Recommandée » : applicabilité limitée ou non passée par le processus de consensus de l'IETF.",
        "signalling": "Suite de signalisation (SCSV) : pas un vrai chiffrement, elle porte un signal de protocole comme la protection anti-rétrogradation ou l'info de renégociation."
      },
      "groups": {
        "title": "Groupes d'échange de clés",
        "intro": "TLS négocie le groupe d'accord de clés séparément de la suite de chiffrement, dans l'extension supported_groups. Comme \"harvest now, decrypt later\" pousse vers l'échange de clés post-quantique, les groupes hybrides ci-dessous associent une courbe classique à ML-KEM.",
        "kind": {
          "ecdhe": "Courbe ECDHE",
          "ffdhe": "DH en corps fini",
          "pq-hybrid": "Hybride PQ"
        },
        "pq": {
          "classical": "Classique",
          "hybrid-pq": "PQ hybride"
        },
        "recommended": "Recommandé",
        "obsolete": "Obsolète",
        "legacy": "Hérité",
        "combines": "Associe {classical} à {pq}",
        "foot": "X25519MLKEM768 est le groupe hybride que la plupart des navigateurs envoient désormais par défaut."
      }
    },
    "f5-ssl-profile-explainer": {
      "name": "Explicateur de profil SSL F5",
      "blurb": "Collez un profil client-ssl ou server-ssl tmsh et obtenez son rôle, la matrice des protocoles TLS et une analyse de sécurité couvrant chaîne, renégociation, SNI, OCSP et TLS mutuel — le tout dans votre navigateur.",
      "inputLabel": "Profil SSL (tmsh)",
      "inputPlaceholder": "ltm profile client-ssl /Common/name ...",
      "runsLocally": "Traité dans votre navigateur. Rien n'est envoyé.",
      "scopeNote": "Décode un bloc de profil collé. Ne contacte jamais un BIG-IP.",
      "errorTitle": "Impossible de lire le profil",
      "err_empty": "Collez un profil SSL pour commencer.",
      "err_noHeader": "Une ligne comme ceci était attendue : ltm profile client-ssl /Common/name ...",
      "err_noBody": "Aucune accolade ouvrante trouvée dans le profil.",
      "err_tooLong": "Cette entrée est trop volumineuse à analyser.",
      "err_invalid": "Cela ne ressemble pas à un profil client-ssl ou server-ssl.",
      "protocolsHeading": "Versions du protocole TLS",
      "permitted": "autorisé",
      "disabled": "désactivé",
      "findingsHeading": "Évaluation de sécurité",
      "settingsHeading": "Paramètres expliqués",
      "topoHeading": "Dans le chemin des données",
      "nodeClient": "Client",
      "nodeBigip": "BIG-IP",
      "nodePool": "Membre du pool",
      "clientLeg": "TLS côté client",
      "serverLeg": "Côté serveur",
      "thisProfile": "ce profil",
      "clientNote": "Un profil client-ssl termine le TLS du client sur le BIG-IP. La connexion vers le membre du pool n'est rechiffrée que si un profil server-ssl est appliqué ; sans lui, ce segment est en clair (SSL offload).",
      "serverNote": "Un profil server-ssl permet au BIG-IP d'ouvrir une nouvelle connexion TLS vers le membre du pool (rechiffrement). Le côté client est géré par un profil client-ssl distinct."
    },
    "epoch": {
      "name": "Convertisseur de temps Unix",
      "blurb": "Saisissez un horodatage Unix — secondes, millisecondes, microsecondes ou nanosecondes, détecté automatiquement — ou une date ISO-8601, et relisez-le dans tous les formats courants. Le tout dans votre navigateur.",
      "inputLabel": "Horodatage ou date",
      "inputPlaceholder": "1700000000  ou  2023-11-14T22:13:20Z",
      "runsLocally": "Converti dans votre navigateur. Rien n'est envoyé.",
      "scopeNote": "Calcul de dates pur. L'unité est déduite de la taille du nombre ; corrigez-la si besoin.",
      "nowButton": "Maintenant",
      "errorTitle": "Impossible de lire cela",
      "err_empty": "Saisissez un horodatage ou une date pour commencer.",
      "err_invalid": "Ce n'est pas un horodatage Unix ni une date ISO-8601.",
      "err_tooLong": "Cette entrée est trop longue.",
      "err_outOfRange": "Cet horodatage est hors de la plage de dates représentable.",
      "utcHeading": "Date et heure UTC",
      "formatsHeading": "Tous les formats",
      "dayOfYearLabel": "jour de l'année",
      "relativeNote": "par rapport à l'horloge de votre appareil"
    },
    "irules-event-order": {
      "name": "Ordre des événements iRule",
      "blurb": "Choisissez la pile de profils d'un virtual server BIG-IP — Client-SSL, HTTP, Server-SSL, pool — et voyez l'ordre dans lequel les événements iRule courants se déclenchent, de CLIENT_ACCEPTED à CLIENT_CLOSED, sous forme de chronologie et de liste. Le tout dans votre navigateur.",
      "stackLabel": "Pile de profils du virtual server",
      "tog_clientssl": "Profil Client-SSL",
      "tog_http": "Profil HTTP",
      "tog_serverssl": "Profil Server-SSL",
      "tog_pool": "Pool (répartition de charge)",
      "tog_fastl4": "FastL4 (chemin rapide par paquets)",
      "presetsLabel": "Préréglages :",
      "preset_https": "HTTPS avec rechiffrement",
      "preset_offload": "Déchargement SSL",
      "preset_http": "HTTP",
      "preset_tcp": "TCP brut",
      "runsLocally": "Calculé dans votre navigateur. Rien n'est envoyé.",
      "scopeNote": "Un modèle du comportement F5 documenté pour un virtual server Standard. Il ne contacte jamais de BIG-IP.",
      "diagramHeading": "Séquence d'événements",
      "listHeading": "Événements dans l'ordre",
      "conditionalHeading": "Événements conditionnels",
      "conditionalNote": "Ceux-ci ne se déclenchent que dans des conditions précises : un TCP::collect ou HTTP::collect, un échec de répartition, ou une réponse 100 Continue.",
      "sideClient": "côté client",
      "sideServer": "côté serveur",
      "sideGlobal": "global"
    },
    "cert-renewal-planner": {
      "name": "Planificateur de renouvellement de certificat",
      "blurb": "Déterminez la validité d'un certificat TLS, s'il respecte le calendrier des 47 jours du CA/Browser Forum, et la cadence de renouvellement qui en découle ; le tout hors ligne.",
      "notBeforeLabel": "Émis (notBefore)",
      "notAfterLabel": "Expire (notAfter)",
      "runsLocally": "Tout s'exécute dans votre navigateur ; rien n'est envoyé.",
      "exampleLabel": "Essayer un exemple de 90 jours",
      "summaryHeading": "Ce certificat",
      "validity": "Validité de {days} jours",
      "compliantBadge": "Dans la limite",
      "overCapBadge": "Au-delà de la limite",
      "maxForPhase": "Maximum pour sa date d'émission : {max} jours.",
      "overByText": "{days} jours de plus que le maximum de {max} jours pour sa date d'émission ; une AC publique ne l'émettrait pas.",
      "renewalsValue": "Environ {n} renouvellements par an pour cette validité.",
      "remainingHeading": "D'après l'horloge de votre appareil",
      "daysRemaining": "{days} jours avant l'expiration.",
      "expiredText": "Expiré il y a {days} jours.",
      "renewByText": "Renouveler avant le {date} (environ {lead} jours avant l'expiration)",
      "renewByDue": "dans {days} jours",
      "reuseHeading": "Réutilisation de la validation (ère d'émission)",
      "dcvText": "Les données de validation de domaine (DCV) sont réutilisables pendant {days} jours.",
      "siiText": "L'identité de l'organisation (SII OV/EV) est réutilisable pendant {days} jours.",
      "scheduleHeading": "Le calendrier SC-081v3",
      "scheduleIntro": "Les maximums TLS publics dépendent de la date d'émission du certificat :",
      "colPeriod": "Émis à partir du",
      "colValidity": "Validité max (jours)",
      "colDcv": "Réutilisation DCV (jours)",
      "colSii": "Réutilisation SII (jours)",
      "phaseP0": "Avant le 15 mars 2026",
      "phaseP1": "15 mars 2026",
      "phaseP2": "15 mars 2027",
      "phaseP3": "15 mars 2029",
      "yourPhase": "← ce certificat",
      "projectionHeading": "Charge de renouvellement à chaque limite",
      "projectionIntro": "Renouvellements par certificat et par an, à mesure que les limites se resserrent :",
      "perYearShort": "an",
      "note_overCap": "Cette validité dépasse le maximum de {max} jours pour sa date d'émission.",
      "note_future47": "Conforme aujourd'hui, mais plus long que la future limite de 47 jours ; attendez-vous à des renouvellements plus fréquents à mesure que le calendrier avance.",
      "note_publicOnly": "Ces limites s'appliquent uniquement aux certificats TLS publiquement approuvés. Une PKI privée ou interne n'est pas régie par la SC-081v3.",
      "note_automate": "À ces cadences, automatisez l'émission et le renouvellement avec ACME (RFC 8555) et ARI (RFC 9773) ; le renouvellement manuel ne passe pas à l'échelle.",
      "err_empty": "Saisissez les deux dates, émission et expiration.",
      "err_invalidDate": "Utilisez une date valide (AAAA-MM-JJ).",
      "err_order": "La date d'expiration doit être postérieure à la date d'émission.",
      "err_tooLong": "Cette entrée est trop longue.",
      "err_invalid": "Impossible de lire ces dates."
    },
    "csr-decoder": {
      "name": "Décodeur de CSR",
      "blurb": "Décodez une demande de signature de certificat PKCS#10 pour lire son sujet, sa clé publique, les SAN et extensions demandés, et ses attributs ; entièrement dans votre navigateur.",
      "inputLabel": "Demande de signature de certificat (PEM, base64 ou hexadécimal)",
      "inputPlaceholder": "-----BEGIN CERTIFICATE REQUEST-----\n...",
      "exampleLabel": "Charger un exemple de CSR",
      "runsLocally": "Tout s'exécute dans votre navigateur ; la CSR n'est jamais envoyée.",
      "notCertNote": "Une CSR est une demande, pas un certificat. Elle n'a ni numéro de série, ni émetteur, ni dates de validité ; seulement ce que le demandeur souhaite faire certifier par une AC.",
      "subjectHeading": "Sujet",
      "colAttr": "Attribut",
      "colValue": "Valeur",
      "noSubject": "Aucun nom de sujet (cette CSR repose sur les SAN demandés).",
      "keyHeading": "Clé publique",
      "keyAlgorithmLabel": "Algorithme",
      "keySizeLabel": "Taille",
      "keySizeValue": "{bits} bits",
      "keyCurveLabel": "Courbe",
      "keyExponentLabel": "Exposant",
      "keyExponentValue": "{exp}",
      "requestedHeading": "Extensions demandées",
      "sanLabel": "Subject Alternative Names",
      "keyUsageLabel": "Utilisation de la clé",
      "ekuLabel": "Utilisation étendue de la clé",
      "basicConstraintsLabel": "Contraintes de base",
      "caYes": "AC : oui",
      "caNo": "AC : non",
      "pathLenValue": "longueur de chemin {n}",
      "noRequested": "Aucune extension demandée.",
      "attributesHeading": "Attributs",
      "challengePasswordLabel": "Mot de passe de challenge",
      "unstructuredNameLabel": "Nom non structuré",
      "signatureHeading": "Auto-signature",
      "signatureAlgLabel": "Algorithme",
      "signatureBitsLabel": "Longueur",
      "signatureBitsValue": "{bits} bits",
      "versionValue": "Version : v1 ({v})",
      "derLengthValue": "DER : {bytes} octets",
      "err_empty": "Collez une demande de signature de certificat à décoder.",
      "err_format": "Cela ne ressemble pas à une CSR en PEM, base64 ou hexadécimal.",
      "err_der": "La structure DER n'a pas pu être analysée.",
      "err_structure": "Ceci s'analyse comme du DER mais n'est pas une demande de certification PKCS#10."
    },
    "oidc": {
      "name": "Décodeur OIDC",
      "blurb": "Collez un jeton d'identité OpenID Connect ou un document .well-known/openid-configuration et décodez-le : les claims principaux, les claims de profil, les endpoints et les capacités, avec des vérifications des claims requis, de l'algorithme de signature, du nonce et de PKCE.",
      "inputLabel": "Jeton d'identité (JWT) ou JSON openid-configuration",
      "inputPlaceholder": "Collez un jeton d'identité, ou un document JSON de découverte OIDC",
      "runsLocally": "Le décodage s'exécute localement dans votre navigateur. Il n'appelle jamais le jwks_uri ni aucun endpoint, et rien n'est envoyé où que ce soit.",
      "notVerifiedNote": "Cet outil décode et explique. Il ne vérifie pas la signature du jeton, ne récupère pas les clés de signature et ne contrôle pas l'expiration par rapport à l'horloge.",
      "errors": {
        "empty": "Collez un jeton d'identité ou un document openid-configuration à décoder.",
        "malformed-json": "Cela commence comme du JSON mais n'a pas pu être analysé. Vérifiez s'il manque une accolade, une virgule ou un guillemet.",
        "json-not-oidc": "Ceci est du JSON, mais pas un document de découverte OpenID Connect. Collez un jeton d'identité, ou un document .well-known/openid-configuration.",
        "not-jwt": "Cela ne ressemble pas à un JWT ni à un document OIDC. Collez un jeton d'identité ou un document de découverte.",
        "jwt-header": "L'en-tête du jeton n'a pas pu être décodé. Un JWT comporte trois parties base64url séparées par des points.",
        "jwt-payload": "La charge utile du jeton n'a pas pu être décodée en JSON."
      },
      "badges": {
        "idToken": "Jeton d'identité",
        "discovery": "Découverte",
        "signed": "Signé",
        "unsigned": "Non signé",
        "algNone": "alg: none",
        "algUnknown": "alg: ?"
      },
      "panels": {
        "header": "En-tête",
        "coreClaims": "Claims principaux du jeton d'identité",
        "metadata": "Fournisseur",
        "endpoints": "Endpoints",
        "capabilities": "Capacités"
      },
      "categories": {
        "binding": "Liaison du jeton",
        "profile": "Claims de profil",
        "email": "E-mail",
        "address": "Adresse",
        "phone": "Téléphone",
        "oauth": "OAuth / session",
        "other": "Autres claims"
      },
      "fields": {
        "alg": "Algorithme",
        "typ": "Type",
        "kid": "ID de clé",
        "iss": "Émetteur (iss)",
        "sub": "Sujet (sub)",
        "aud": "Audience (aud)",
        "azp": "Partie autorisée (azp)",
        "nonce": "Nonce",
        "acr": "Contexte d'auth (acr)",
        "amr": "Méthodes d'auth (amr)",
        "authTime": "Heure d'auth",
        "iat": "Émis le (iat)",
        "nbf": "Pas avant (nbf)",
        "exp": "Expire (exp)",
        "issuer": "Émetteur"
      },
      "reasons": {
        "MISSING_REQUIRED_CLAIM": "Claim requis manquant {value}. Un jeton d'identité doit contenir iss, sub, aud, exp et iat.",
        "ALG_NONE": "Le jeton utilise alg none, ce qui signifie qu'il n'est pas signé. Un jeton d'identité non signé ne prouve rien et doit être rejeté.",
        "ALG_SYMMETRIC": "Signé avec {value}, un algorithme symétrique (HMAC). Les jetons d'identité d'un fournisseur public utilisent normalement un algorithme asymétrique comme RS256 ou ES256, afin que la partie de confiance puisse vérifier avec la clé publique.",
        "ALG_UNKNOWN": "Signé avec {value}, un algorithme que cet outil ne reconnaît pas. Confirmez qu'il s'agit d'un algorithme attendu et robuste.",
        "SIGNED_ASYMMETRIC": "Signé avec {value}, un algorithme asymétrique. La partie de confiance le vérifie avec la clé publique du fournisseur issue du JWKS.",
        "NO_NONCE": "Aucun claim nonce. Le nonce lie le jeton à la requête d'authentification et protège contre le rejeu. Il devrait être présent lorsque la requête en a envoyé un.",
        "MULTI_AUD_NO_AZP": "Le jeton a plusieurs audiences mais aucun azp (partie autorisée). Avec plus d'une audience, azp devrait nommer le client auquel le jeton est destiné.",
        "DISCOVERY_MISSING_FIELD": "Champ de découverte requis manquant {value}.",
        "DISCOVERY_ALG_NONE": "Le fournisseur annonce l'algorithme de signature none pour les jetons d'identité, ce qui autoriserait des jetons non signés. Cela ne devrait pas être proposé.",
        "DISCOVERY_NO_PKCE": "Aucun code_challenge_methods_supported. Le fournisseur n'annonce pas PKCE, qui est recommandé pour le flux de code d'autorisation.",
        "DISCOVERY_NO_PKCE_S256": "PKCE est annoncé mais sans la méthode S256. S256 est la méthode de code challenge recommandée."
      },
      "flow": {
        "heading": "Flux de code d'autorisation",
        "laneRp": "Partie de confiance",
        "laneOp": "Fournisseur OpenID",
        "s1": "Rediriger l'utilisateur vers le fournisseur avec scope=openid",
        "s2": "Le fournisseur authentifie l'utilisateur et obtient le consentement",
        "s3": "Le fournisseur redirige avec un code d'autorisation",
        "s4": "La partie de confiance échange le code au endpoint de jeton",
        "s5": "Le fournisseur renvoie un jeton d'identité et un jeton d'accès",
        "s6": "La partie de confiance valide la signature du jeton d'identité avec le JWKS",
        "s7": "La partie de confiance peut appeler UserInfo avec le jeton d'accès",
        "s8": "Le fournisseur renvoie les claims de l'utilisateur"
      }
    }
  },
  "privacy_page": {
    "eyebrow": "Confidentialité",
    "title": "Vos données, et ce que ce site en fait",
    "lede": "Une explication en langage clair de ce que ce site web fait et ne fait pas, exactement, avec vos informations. Elle est rédigée pour être exacte plutôt que simplement rassurante, car sous des réglementations comme le GDPR et la LGPD brésilienne, c'est la divulgation exacte qui compte.",
    "shortTitle": "La version courte",
    "short1": "Ce site ne dépose aucun cookie, n'exécute aucune analytique, n'utilise aucune publicité et ne contient aucun traceur tiers ni empreinte numérique (fingerprinting). Rien ne vous suit à travers le web.",
    "short2": "Il ne vend, ne partage ni ne construit de profils de ses visiteurs, et ne vous demande rien pour que vous le lisiez.",
    "short3": "Les outils interactifs fonctionnent entièrement dans votre navigateur. Ce que vous y collez ou tapez reste sur votre appareil et n'est transmis nulle part.",
    "short4": "Seules trois choses impliquent des données, et chacune est expliquée ci-dessous : un unique réglage de thème enregistré dans votre propre navigateur, les journaux (logs) de connexion standard que toute visite d'un site génère au niveau de l'hébergement, et tout message que vous choisissez d'envoyer par courriel.",
    "controllerTitle": "Qui est responsable",
    "controllerBody": "Ceci est le site web personnel de Rodolfo Nützmann (ronutz.com). Pour toute question de confidentialité, ou pour exercer l'un des droits décrits ci-dessous, écrivez à {email}. Les demandes sont traitées directement par Rodolfo Nützmann, en qualité de responsable du traitement des données.",
    "noTrackTitle": "Pas de cookies, pas de pistage, pas d'analytique",
    "noTrackBody": "Ce site ne dépose aucun cookie d'aucune sorte. Il n'utilise aucun service d'analytique (tel que Google Analytics ou Plausible), aucun réseau publicitaire, aucun pixel de pistage de réseaux sociaux et aucune empreinte d'appareil. Votre visite n'est ni mesurée, ni profilée, ni partagée avec quiconque à ces fins.",
    "browserTitle": "Ce qui est stocké dans votre navigateur",
    "browserBody": "Une seule petite chose : le thème visuel que vous choisissez, enregistré dans le stockage local (local storage) de votre navigateur afin que le site puisse s'en souvenir lors de votre prochaine visite. C'est un réglage de confort qui reste sur votre propre appareil, n'est jamais envoyé à ce site ni à quiconque, et peut être effacé à tout moment via votre navigateur. Aucune autre donnée vous concernant n'est stockée sur votre appareil.",
    "hostingTitle": "Hébergement et journaux serveur",
    "hostingBody": "Le site est délivré par l'intermédiaire de Cloudflare, qui assure son hébergement et la diffusion du contenu. Comme pour tout site web, charger une page signifie que votre appareil se connecte à un serveur, et Cloudflare, agissant en tant qu'hébergeur, traite des données de connexion de base — dont votre adresse IP et les détails standard de la requête — afin de vous livrer les pages et de protéger le site contre les abus et les attaques. Ce traitement est nécessaire pour exploiter et sécuriser le site (un intérêt légitime au titre de l'Article 6(1)(f) du GDPR, et les bases correspondantes des Articles 7 et 10 de la LGPD). Il n'est conservé que brièvement par le prestataire et n'est pas utilisé ici pour vous identifier ou vous pister.",
    "toolsTitle": "Les outils fonctionnent dans votre navigateur",
    "toolsBody": "Les décodeurs et calculateurs de ce site — pour les JWT, les adresses IP, les certificats et le reste — calculent entièrement au sein de votre navigateur. Les valeurs que vous saisissez sont traitées sur votre propre appareil et ne sont jamais envoyées à un serveur. Une interface programmatique distincte (une API) est proposée pour l'automatisation et les intégrations ; par conception, elle est sans état et ne journalise aucune des requêtes ni aucun des corps de requête qui lui sont envoyés.",
    "contactTitle": "Si vous me contactez",
    "contactBody": "Le formulaire de contact ne transmet rien à un serveur. À la place, il ouvre un message pré-rempli dans votre propre application de messagerie, que vous envoyez ensuite vous-même depuis votre propre compte, de sorte que rien ne transite par un tiers. Si vous écrivez, que ce soit via le formulaire ou directement, je reçois les informations que vous incluez, telles que votre nom, votre adresse e-mail et votre message, et je les utilise uniquement pour vous répondre. Je ne les conserve que le temps nécessaire au traitement de votre demande, ne les utilise pas à des fins de marketing et ne les partage pas.",
    "intlTitle": "Traitement hors de votre pays",
    "intlBody": "Parce que Cloudflare exploite un réseau mondial, le traitement au niveau de la connexion décrit ci-dessus peut avoir lieu sur des serveurs situés hors de votre propre pays, y compris hors du Brésil et de l'Espace économique européen. Lorsque des données personnelles sont ainsi traitées à l'international, elles le sont sous les garanties offertes par le prestataire concerné.",
    "childrenTitle": "Enfants",
    "childrenBody": "Ce site s'adresse à un public professionnel et général. Il n'est pas destiné aux enfants et ne collecte pas sciemment de données personnelles les concernant.",
    "rightsTitle": "Vos droits",
    "rightsBody": "Selon votre lieu de résidence, vous disposez de droits sur vos données personnelles, dont celui d'y accéder, de les faire corriger ou supprimer, de vous opposer à leur traitement ou de le restreindre, de demander une copie sous une forme portable et d'être informé de la façon dont elles sont traitées. Pour exercer l'un de ces droits, il suffit d'écrire à {email}. Comme si peu de données personnelles sont traitées ici, il y a en pratique généralement très peu à faire, mais le canal reste toujours ouvert.",
    "rightsGdpr": "Si vous vous trouvez dans l'Espace économique européen ou au Royaume-Uni, vous avez également le droit d'introduire une réclamation auprès de votre autorité locale de protection des données.",
    "rightsLgpd": "Si vous vous trouvez au Brésil, vous disposez des droits énoncés à l'Article 18 de la LGPD, et vous pouvez aussi contacter l'autorité nationale de protection des données (l'ANPD).",
    "changesTitle": "Modifications de cet avis",
    "changesBody": "Si cet avis change, la version révisée sera publiée sur cette page et la date ci-dessous sera mise à jour. Les modifications substantielles ne seront pas appliquées rétroactivement.",
    "updated": "Dernière mise à jour : 30 juin 2026",
    "backHome": "Retour à l'accueil"
  },
  "footer": {
    "redEducation": "Réservez une formation officielle avec <b>Red Education</b>",
    "privacy": "Confidentialité",
    "builtWith": "Conçu par Rodolfo Nützmann avec CONCORD",
    "colophon": "Comment cela a été conçu",
    "contribute": "Améliorer les traductions",
    "feedback": "Envoyer un retour",
    "api": "Référence de l'API",
    "contributeTools": "Proposez une idée",
    "license": "Licence",
    "coffee": "Offre-moi un café"
  },
  "search": {
    "kindTool": "Outil",
    "kindArticle": "Article",
    "kindPage": "Page",
    "label": "Recherche",
    "placeholder": "Rechercher sur le site…",
    "close": "Fermer",
    "searching": "Recherche en cours…",
    "noResults": "Aucun résultat pour « {query} ».",
    "unavailable": "La recherche fonctionne sur le site publié. Elle n'est pas disponible en aperçu local.",
    "hint": "Saisissez pour rechercher articles, outils et pages."
  },
  "theme": {
    "label": "Thème",
    "dark": "Sombre",
    "light": "Clair"
  },
  "about": {
    "eyebrow": "Le formateur",
    "role": "Formateur technique principal",
    "lede": "Formations réseau et sécurité dispensées par un praticien qui a passé sa carrière du côté de la mise en œuvre, pas seulement des diapositives. Basé à São Paulo, enseignant dans le monde entier, en portugais et en anglais.",
    "now": {
      "title": "Ce que je fais aujourd'hui",
      "body": "Je dispense des formations officielles et certifiées animées par un formateur sur quatre plateformes de sécurité et de réseau. Le travail est pratique et axé sur les laboratoires : l'objectif est toujours que les participants repartent capables de faire la chose, pas seulement de la décrire. Je suis formateur agréé depuis 1996, et la formation et l'habilitation technique font partie de mon travail depuis la fin des années 1990.",
      "basedLabel": "Basé à",
      "basedValue": "São Paulo, Brésil",
      "teachesLabel": "Enseigne",
      "teachesValue": "Formations animées par un formateur, à distance et sur site, dans le monde entier",
      "languagesLabel": "Langues",
      "languagesValue": "Portugais (langue maternelle), anglais (courant)"
    },
    "platforms": {
      "title": "Quatre plateformes, enseignées en profondeur",
      "body": "Être certifié sur quatre fournisseurs signifie que je peux enseigner chacun correctement et les comparer honnêtement. Voici les plateformes pour lesquelles je suis actuellement habilité à dispenser des formations officielles.",
      "f5": "BIG-IP sur l'ensemble du curriculum animé par un formateur : LTM, DNS, Advanced WAF (ASM), APM, AFM, SSL Orchestrator, automatisation et dépannage.",
      "fortinet": "Formations Fortinet certifiées, y compris le parcours FCP.",
      "extreme": "Parcours Extreme Networks de commutation, SD-WAN, API et automatisation, couvrant l'installation, la configuration, la gestion et le dépannage.",
      "netskope": "Formations animées par un formateur sur le Netskope Security Cloud."
    },
    "path": {
      "title": "Le chemin parcouru",
      "intro": "Ma carrière a commencé du côté fournisseur et mise en œuvre en 1996, et y est restée deux décennies avant que je me consacre pleinement à la formation. C'est cette expérience de mise en œuvre qui fait que la formation porte : j'ai construit, cassé et réparé ces systèmes en production.",
      "present": "aujourd'hui",
      "cabletron": "Ingénieur réseau et formateur agréé. Réseaux non-Ethernet et Ethernet, réseaux de campus, routage IP.",
      "riverstone": "Ingénieur support produit et coordinateur de base de connaissances en Californie. Gigabit Ethernet, réseaux métropolitains, routage IP, BGP. Escalade de troisième niveau, reproduction de scénarios clients et tests de régression.",
      "cisco": "Ingénieur-conseil réseau, point de contact unique pour des clients clés dont SERPRO et Correios. Gestion de l'escalade et de la satisfaction client.",
      "enterasys": "Ingénieur réseau et formateur. Réseaux d'entreprise, routage IP, contrôle d'accès utilisateur et NAC, IDS et IPS.",
      "juniper": "Ingénieur support channel et formateur pour commutateurs et pare-feu d'entreprise. Habilitation technico-commerciale et formations à l'exploitation Junos-SRX.",
      "f5channel": "Ingénierie commerciale et avant-vente orientée channel pour F5, avec habilitation technique, réalisation de preuves de concept et formations partenaires à travers la distribution.",
      "rededucation": "Formateur agréé dispensant des cours officiels et certifiés sur F5, Fortinet, Extreme Networks et Netskope à des organisations du monde entier.",
      "fullHistory": "Lire l'histoire complète",
      "vendorsLink": "Fournisseurs avec lesquels j'ai travaillé"
    },
    "origins": {
      "title": "Là où tout a commencé",
      "body": "Avant la carrière formelle, il y a eu la curiosité. Au début des années 1990, j'importais et assemblais des ordinateurs, j'exploitais et utilisais des systèmes de babillard électronique, et je travaillais avec DOS, Unix, Linux, Netware, les premiers réseaux Ethernet, X.25 et l'internet par ligne commutée. En 1995, ce travail pratique était devenu un premier poste formel : la construction d'un système d'échange de données informatisé. Le fil conducteur, de cette époque à aujourd'hui, est le même : prendre quelque chose de réellement complexe et le faire fonctionner, puis le rendre compréhensible pour quelqu'un d'autre."
    },
    "approach": {
      "title": "Comment j'enseigne",
      "body": "J'ai choisi de me spécialiser dans la formation parce qu'elle combine une connaissance technique approfondie avec la partie du travail que je préfère : expliquer simplement des concepts complexes. Les meilleures sessions relient chaque concept à la tâche que l'apprenant doit réellement accomplir, pour que le contenu ait où se poser. Des exemples concrets, de vrais laboratoires, et l'accent mis sur la compréhension plutôt que la mémorisation."
    },
    "cta": {
      "title": "Commencer par les concepts",
      "body": "La section Apprendre explique les idées derrière les outils, et les outils vous permettent de les manipuler directement, le tout dans votre navigateur.",
      "learnButton": "Lire la section Apprendre",
      "toolsButton": "Ouvrir les outils"
    },
    "recognition": {
      "title": "Reconnaissance",
      "body": "Reconnu comme F5 DevCentral MVP trois années consécutives, en 2022, 2023 et 2024, pour ses contributions à la communauté technique F5."
    }
  },
  "endorsements": {
    "eyebrow": "Recommandations",
    "title": "Ce que les gens disent, dans leurs propres mots.",
    "intro": "{count} recommandations et avis textuels, couvrant deux décennies d'enseignement et de conseil. Rien ici n'est paraphrasé ni modifié.",
    "provenance": "Issus de recommandations LinkedIn, d'avis Google et d'avis vérifiés d'apprenants Red Education. La formulation et l'orthographe d'origine sont conservées exactement telles qu'écrites."
  },
  "testimonials": {
    "filterLabel": "Filtrer les témoignages",
    "sourceFilter": "Source",
    "languageFilter": "Langue",
    "all": "Tous",
    "showing": "Affichage de {count} sur {total}",
    "reply": "Réponse de Red Education",
    "translateLabel": "Traduction",
    "translateOff": "Traduire en anglais",
    "translateOn": "Affichage en anglais",
    "machineDisclaimer": "Traduction générée automatiquement. Elle peut ne pas refléter fidèlement la formulation d'origine.",
    "showOriginal": "Afficher l'original",
    "hideOriginal": "Masquer l'original"
  },
  "history": {
    "indexTitle": "L'histoire",
    "indexLede": "Trois ères, un fil conducteur : prendre quelque chose de réellement complexe, le faire fonctionner, puis le rendre compréhensible pour quelqu'un d'autre.",
    "eraLabel": "Ère",
    "backToHistory": "Toutes les ères",
    "backToAbout": "À propos",
    "readNext": "Lire la suite",
    "pre1996": {
      "years": "Avant 1996",
      "title": "La curiosité",
      "subtitle": "Importer des pièces, assembler des machines et se connecter aux débuts d'internet, avant que rien de tout cela ne soit un métier.",
      "intro": "Toute carrière technique a un avant. Avant les badges fournisseurs et les certifications, il y avait un adolescent qui démontait des machines pour comprendre leur fonctionnement, et un jeune professionnel indépendant qui transformait cette compréhension en gagne-pain. C'est ici que s'est formé l'instinct qui anime tout le reste.",
      "s1Title": "Au contact du matériel, 1991 à 1995",
      "s1Body": "À partir de 1991, le travail était indépendant et pratique : importer des composants informatiques des États-Unis, assembler et vendre des ordinateurs personnels sur mesure, et les installer, configurer et dépanner pour quiconque avait besoin d'aide. C'était l'époque où l'on construisait une machine à partir de composants et où on la faisait fonctionner, plutôt que d'en acheter une toute faite. Les systèmes de l'époque sont passés directement entre ces mains : DOS et CP/M, BASIC, Turbo Pascal, les premières versions de Windows et les applications bureautiques, ainsi que les outils de bases de données qui faisaient tourner les petites entreprises d'alors, Clipper et dBase.",
      "s2Title": "Les réseaux d'avant internet",
      "s2Body": "Les réseaux n'ont pas commencé avec le web. Bien avant le haut débit, le tissu connectif était différent et plus difficile à manier : Novell NetWare pour les serveurs locaux, les systèmes de babillard électronique pour la communauté et l'échange de fichiers, les premiers réseaux Ethernet, et les technologies étendues de l'époque, X.25 (connu au Brésil sous le nom de RENPAC) et Frame Relay. Quand internet est enfin arrivé, c'était par modem, accessible via un compte shell, SLIP ou PPP. Travailler avec tout cela signifiait comprendre les réseaux depuis le câble, une compréhension qui a plus tard fait paraître les réseaux d'entreprise comme un terrain familier.",
      "s3Title": "BBS, phreaking et l'internet académique",
      "s3Body": "La véritable curiosité de cette époque allait au-delà du travail rémunéré. Les explorations de ces années comprenaient l'exploitation et l'utilisation de systèmes de babillard électronique, le bricolage du réseau téléphonique de la scène phreaking, l'UNIX pratique, et un accès précoce à l'internet académique. C'était l'apprentissage par la pratique, dans une communauté qui partageait le savoir parce qu'il n'y avait nulle part ailleurs où l'obtenir. Cette habitude, creuser jusqu'à ce que quelque chose soit réellement compris puis le transmettre, n'a jamais disparu.",
      "s4Title": "1995 : le premier poste formel",
      "s4Body": "En 1995, le travail indépendant a convergé vers un premier poste formel. Chez INTELECTA, une entreprise incubée par le SEBRAE-SP, le projet était un système d'échange de données informatisé pour la commercialisation de fournitures médicales et hospitalières, bâti sur des serveurs Novell NetWare et le système de babillard PCBoard. C'était un vrai système, résolvant un vrai problème commercial, et il a marqué le point où le passe-temps et le métier sont devenus une profession.",
      "closer": "À la fin de 1995, les fondations étaient posées : une personne qui comprenait les machines et les réseaux à partir des principes premiers, qui apprenait en construisant, et qui avait déjà l'instinct d'expliquer. Tout ce qui a suivi, les fournisseurs, les certifications, les salles de classe du monde entier, s'est bâti là-dessus."
    },
    "era19962020": {
      "years": "1996 – 2020",
      "title": "Le praticien",
      "subtitle": "Deux décennies au sein de l'industrie des réseaux et de la sécurité, à construire, casser et réparer les systèmes qui deviendraient plus tard le programme.",
      "intro": "C'est le long milieu de l'histoire, et la raison pour laquelle la formation venue plus tard a du poids. Pendant environ deux décennies, le travail était la mise en œuvre : concevoir des réseaux, les déployer, les dépanner sous pression, et être la personne que l'on appelle quand quelque chose de critique tombait en panne. Le parcours a traversé certains des noms emblématiques des réseaux, sur deux continents.",
      "s1Title": "Cabletron et Enterasys, 1996 à 2000",
      "s1Body": "La carrière formelle a commencé en 1996 chez Cabletron Systems, alors un fournisseur de premier plan d'équipements réseau basé à Rochester, dans le New Hampshire. Pendant quatre ans et demi, le rôle a couvert l'ingénierie terrain et le support après-vente, l'ingénierie systèmes et l'avant-vente, et, à partir de 1997, la formation certifiée. Le sujet était le LAN et le WAN d'entreprise de l'époque : commutateurs, routeurs, Wi-Fi et WLAN, gestion de réseau, NAC et UAC, et pare-feu à inspection avec état. En 2000, Cabletron s'est réorganisée en quatre entreprises, et la partie que cette carrière a touchée est devenue Enterasys Networks.",
      "s2Title": "Riverstone Networks, Santa Clara, 2000 à 2002",
      "s2Body": "Le chapitre suivant s'est déroulé en Californie. Riverstone Networks, une émanation de Cabletron construisant des équipements de réseau métropolitain, a entraîné un déménagement à Santa Clara avec un visa de travail H1-B1. Le rôle était ingénieur support produit de niveau III et coordinateur de gestion des connaissances : escalade technique de troisième niveau, reproduction de scénarios clients en laboratoire, tests de régression et vérification de bogues, et construction de la base de connaissances sur laquelle s'appuyait le reste du support. Les technologies étaient l'épine dorsale du monde opérateur et métro du début des années 2000 : Gigabit Ethernet, MPLS, commutation et routage métropolitains, et BGP. Cette période a aussi produit un jalon formel : dans le cadre de la procédure de visa, une évaluation aux États-Unis en 2001 a reconnu un parcours éducatif équivalent à une licence en informatique et une licence en administration des affaires.",
      "s3Title": "Cisco Systems, Brasília, 2003 à 2004",
      "s3Body": "De retour au Brésil et sous contrat via Cisco Professional Services, le rôle s'est déplacé vers la relation client dans sa forme la plus exigeante. En tant que responsable des opérations à fort contact et point de contact unique, le travail était la gestion de la satisfaction client après-vente pour deux des plus grandes entités fédérales du Brésil, SERPRO, l'agence de traitement des données du gouvernement, et ECT-Correios, la poste nationale. La surface technique était constituée de commutateurs et routeurs Catalyst, de pare-feu PIX, et d'équilibreurs de charge CSS, CSM et ACE, mais le véritable travail était la gestion de l'escalade et le maintien du bon fonctionnement d'une infrastructure nationale critique.",
      "s4Title": "Enterasys à nouveau, puis Juniper, 2005 à 2010",
      "s4Body": "La seconde moitié de la décennie est revenue du côté fournisseur en tant qu'expert du LAN d'entreprise. Chez Enterasys à partir de 2005, l'accent était mis sur les commutateurs et routeurs, le Wi-Fi et le WLAN, la gestion de réseau, le NAC et l'UAC, et la détection et prévention d'intrusion, couvrant la conception de solutions, l'implémentation, l'audit et la formation. À partir de 2009, chez Juniper Networks via Professional Services pour l'Amérique latine, le rôle était la promotion de nouveaux produits auprès du partenaire stratégique Telefónica Empresas au Brésil, centré sur les commutateurs EX et les pare-feu SRX, avec des formations à l'exploitation de Junos-SRX dispensées chez Level 3 et Impsat, aujourd'hui Lumen.",
      "s5Title": "Les années channel et conseil, 2010 à 2020",
      "s5Body": "La dernière décennie de cette ère a navigué avec fluidité entre les rôles, tous menant vers le formateur auquel l'histoire aboutit. Il y a eu des passages comme ingénieur réseau et sécurité via des revendeurs et distributeurs, approfondissant l'expertise en commutation et routage d'entreprise, pare-feu et pare-feu de nouvelle génération, SSL-VPN, contrôle d'accès utilisateur, accélération WAN et équilibrage de charge internet sur des solutions Juniper et Cisco. De façon décisive, cette période a inclus le virage vers F5, avec le début du travail sur F5 BIG-IP qui définirait les années à venir. À travers tout cela, la formation technique était un fil conducteur constant, jamais absente d'aucun rôle.",
      "closer": "En 2020, le tableau était complet : quelqu'un qui n'avait pas seulement étudié ces systèmes mais avait vécu en leur sein pendant vingt ans, côté fournisseur et côté client, en conception et en crise. C'est la différence qu'un metteur en œuvre apporte dans une salle de classe. Quand cette personne explique pourquoi une configuration se comporte d'une certaine manière, c'est parce qu'elle l'a vue se comporter ainsi, à trois heures du matin, avec une poste nationale en attente."
    },
    "era2020present": {
      "years": "2020 – aujourd'hui",
      "title": "Le formateur",
      "subtitle": "Formation technique à temps plein, dispensée dans le monde entier, s'étendant plateforme par plateforme.",
      "intro": "En 2020, un fil présent toute la carrière est devenu l'étoffe entière. Après deux décennies où l'enseignement accompagnait chaque rôle, la formation est devenue le travail lui-même : à temps plein, officielle, certifiée, dispensée à des professionnels et des équipes à travers le monde. Ce qui rend cette ère distincte, ce n'est pas seulement l'orientation, mais l'expansion délibérée et datée à travers les plateformes, chacune ajoutée par-dessus une profonde expérience de praticien plutôt qu'à sa place.",
      "s1Title": "À temps plein, par vocation",
      "s1Body": "Depuis 2020, le travail consiste à dispenser des formations officielles animées par un formateur, à distance et en présentiel, en portugais et en anglais, à des publics du monde entier. La prestation atteint l'Australie, Singapour, l'Inde, l'Europe centrale, les États-Unis et le Brésil. Les nationalités brésilienne et allemande, ainsi qu'une autorisation de voyage vers les États-Unis et le Royaume-Uni, rendent cette portée mondiale concrète : une éligibilité sans restriction à travailler dans l'Union européenne et le Mercosur, et la liberté d'aller là où se trouve la salle de classe.",
      "s2Title": "F5, depuis le début",
      "s2Body": "F5 est l'ancre depuis le début de cette ère, s'appuyant sur un travail avec BIG-IP qui remonte à plus d'une décennie. Le curriculum agréé couvre l'intégralité du catalogue BIG-IP animé par un formateur : Local Traffic Manager, DNS, Advanced WAF, Access Policy Manager, Advanced Firewall Manager, SSL Orchestrator, BIG-IQ, développement d'iRules, automatisation et dépannage, allant de cours d'une journée à quatre jours. Parallèlement à l'enseignement s'ajoute un complément pratique : des environnements de laboratoire F5 BIG-IP gérés, pour que la pratique ait toujours un lieu réel où se dérouler.",
      "s3Title": "L'expansion, plateforme par plateforme",
      "s3Body": "Ce qui distingue les années récentes, c'est une progression claire et datée. Les formations Extreme Networks ont été ajoutées à partir de 2021, couvrant la commutation EXOS, le SD-WAN et l'automatisation. Fortinet a suivi à partir de 2024, centré sur le parcours FCP FortiGate Administrator. Netskope s'est ajouté à partir de 2025, couvrant l'exploitation, l'administration, l'implémentation et l'intégration du Netskope Security Cloud. Quatre plateformes, chacune ajoutée délibérément, chacune reposant sur les deux mêmes décennies de mise en œuvre réseau et sécurité en dessous.",
      "s4Title": "Via Red Education, vers le monde",
      "s4Body": "Le principal véhicule de cette prestation mondiale est Red Education, un centre de formation agréé par lequel des cours officiels et certifiés atteignent des organisations à travers les régions. Le rôle est global technical training instructor, dispensant à ce type de publics internationaux qu'une base à São Paulo, deux passeports et un véritable amour du voyage rendent possibles. Cette relation durable transforme l'expertise individuelle en quelque chose que des organisations du monde entier peuvent réserver et sur quoi elles peuvent compter.",
      "closer": "C'est ici que le fil conducteur de toute l'histoire porte ses fruits. La curiosité des premières années est devenue la profondeur de mise en œuvre des années de praticien, et cette profondeur est désormais ce que chaque participant reçoit : non pas un présentateur lisant des diapositives, mais quelqu'un qui a construit ces systèmes expliquant comment ils fonctionnent réellement, et pourquoi."
    }
  },
  "vendors": {
    "indexTitle": "Fournisseurs",
    "indexLede": "Les entreprises de réseau et de sécurité dont la technologie a façonné cette carrière, depuis le câble. Ce sont des relations passées ; les plateformes enseignées aujourd'hui sont listées sous Formations.",
    "backToVendors": "Tous les fournisseurs",
    "backToAbout": "À propos",
    "technologies": "Technologies",
    "role": "Rôle",
    "years": "Années",
    "readNext": "Fournisseur suivant",
    "cabletron": {
      "name": "Cabletron et Enterasys",
      "years": "1996 – 2007",
      "tagline": "Là où la carrière a commencé, et où le LAN d'entreprise a été appris depuis la base.",
      "intro": "Le plus long fil unique de cette histoire passe par une entreprise et son successeur. Cabletron Systems, un fournisseur de premier plan d'équipements réseau basé à Rochester, dans le New Hampshire, fut le premier employeur, à partir de 1996. Lorsque Cabletron s'est réorganisée en quatre entreprises en 2000, la lignée s'est poursuivie sous le nom d'Enterasys Networks, et la relation y a repris à partir de 2005. Ensemble, elles couvrent la décennie formatrice de l'expertise en réseaux d'entreprise.",
      "s1Title": "Cabletron, 1996 à 2000",
      "s1Body": "Pendant quatre ans et demi, le rôle a parcouru tout l'arc de l'ingénierie fournisseur : ingénierie terrain et support après-vente, ingénierie systèmes et avant-vente, et, à partir de 1997, formation certifiée. Le sujet était le LAN et le WAN d'entreprise de l'époque : commutateurs et routeurs, Wi-Fi et WLAN, gestion de réseau, NAC et UAC, et pare-feu à inspection avec état. C'est là que la discipline de la conception de solutions, de l'implémentation, de l'audit, du dépannage et de la gestion de l'escalade a été pratiquée pour la première fois, et là que l'enseignement est entré pour la première fois dans le travail.",
      "s2Title": "Enterasys, 2005 à 2007",
      "s2Body": "De retour dans la lignée en tant que responsable services et support, l'accent était mis sur la gamme de produits Secure Routing, avec Enterasys comme point focal régional pour le Brésil. Le travail combinait un support client de haut niveau, un dépannage complexe et la gestion de l'escalade avec une gestion de produit localisée. La surface technique s'était élargie pour inclure la gestion de réseau, le NAC et l'UAC, la détection et prévention d'intrusion, et le SIEM, couvrant la commutation et le routage d'entreprise. Enterasys a ensuite été rachetée par Extreme Networks en 2013, bouclant un cercle qui relie ce travail initial à une plateforme encore enseignée aujourd'hui.",
      "certs": "Cabletron Systems Engineer (CSE), 1999. Enterasys Systems Engineer (ESE), 2000 et 2007. Enterasys Certified Internetworking Engineer (ECIE), 2007.",
      "lineageTitle": "La lignée d'entreprise",
      "lineageDesc": "Cabletron Systems, basée à Rochester, New Hampshire, s'est scindée en quatre entreprises en 2000 : Enterasys, Riverstone, Aprisma et GNTS. Enterasys a été rachetée par Extreme Networks en 2013. Riverstone a été rachetée par Alcatel-Lucent en 2006."
    },
    "juniper": {
      "name": "NetScreen et Juniper",
      "years": "2009 – 2014",
      "tagline": "La commutation d'entreprise et les passerelles de sécurité issues de NetScreen jusqu'à la gamme SRX de Juniper.",
      "intro": "Juniper Networks a racheté NetScreen, l'entreprise de pare-feu, en 2004, et la technologie de sécurité de NetScreen est devenue le fondement de la gamme de passerelles sécurisées de Juniper. Travailler avec les deux reflète une lignée continue : les pare-feu SSG de NetScreen et les passerelles SRX qui leur ont succédé. La relation s'est déroulée directement via Juniper à partir de 2009, et s'est poursuivie ensuite via le channel des revendeurs.",
      "s1Title": "Juniper Networks, 2009 à 2010",
      "s1Body": "Sous contrat via Juniper Professional Services pour le Brésil, le rôle était la promotion des gammes d'entreprise nouvellement introduites : les passerelles sécurisées de la série SRX et les commutateurs de la série EX. L'engagement principal était avec le partenaire stratégique Telefónica Empresas au Brésil. Au-delà de la promotion avant-vente, cette période a délivré une véritable formation : formations au système d'exploitation réseau JUNOS et à l'exploitation des passerelles sécurisées SRX pour les partenaires channel et les clients, y compris des formations à l'exploitation pour le personnel du centre d'opérations réseau de Level 3 Communications au Brésil et en Argentine.",
      "s2Title": "Via le channel, 2010 à 2014",
      "s2Body": "La relation Juniper et NetScreen s'est poursuivie via des intégrateurs de systèmes et des revendeurs. Chez CYLK, le travail couvrait le développement de configurations, les tests de preuve de concept et d'interopérabilité, et l'implémentation et le dépannage en production sur Juniper, NetScreen et F5. Chez TDec, Juniper a rejoint une pratique de conseil et de formation multi-fournisseurs. La gamme de produits manipulés au cours de ces années était vaste : commutateurs EX, pare-feu SRX et NetScreen SSG, SSL-VPN SA, routeurs série J et Wi-Fi géré AX.",
      "certs": "Juniper Networks Sales Specialist, Enterprise Networking (JNSS-EN), 2010. Juniper Networks Sales Associate, Enterprise Networking (JNSA-EN), 2010.",
      "lineageTitle": "La lignée de sécurité",
      "lineageDesc": "NetScreen, fabricant des pare-feu SSG, a été racheté par Juniper Networks en 2004 et est devenu le fondement de la gamme de passerelles sécurisées SRX de Juniper."
    },
    "riverstone": {
      "name": "Riverstone Networks",
      "years": "2000 – 2002",
      "tagline": "Deux ans à Santa Clara, à la lisière des réseaux opérateurs et métropolitains.",
      "intro": "Le seul chapitre de cette carrière entièrement situé hors du Brésil. Riverstone Networks, un fournisseur d'équipements de réseau métropolitain basé à Santa Clara, en Californie, a entraîné un déménagement aux États-Unis avec un visa de travail H1-B1. Riverstone avait sa propre lignée inhabituelle : à l'origine une entreprise nommée Yago, rachetée par Cabletron vers 1998, puis réapparue comme entreprise indépendante par une scission en 2001. Elle a ensuite été rachetée par Alcatel-Lucent en 2006.",
      "s1Title": "Support de niveau III et gestion des connaissances",
      "s1Body": "Le rôle portait deux titres sur deux ans : ingénieur support produit et coordinateur de gestion des connaissances. En tant que spécialiste du support technique de niveau III, le travail était l'escalade de troisième niveau, la reproduction de scénarios clients en laboratoire, les tests de régression et la vérification de bogues. En tant que coordinateur de gestion des connaissances, il s'agissait de construire et d'organiser la base de connaissances sur laquelle s'appuyait le reste du support, parallèlement au soutien au marketing produit et à la formation interne. C'était le travail de support technique le plus approfondi de la carrière, au niveau où les problèmes les plus difficiles remontent.",
      "s2Title": "Le monde des réseaux métropolitains",
      "s2Body": "Les technologies étaient l'épine dorsale de l'ère opérateur et métro du début des années 2000 : Gigabit Ethernet, MPLS, commutation et routage métropolitains, et routage IP étendu, y compris BGP. Travailler au support de troisième niveau du fournisseur signifiait voir comment ces systèmes se comportaient aux limites, dans des conditions qui ne surgissent qu'en production à grande échelle. Cela a aussi délivré une formation formelle : formation aux concepts, fonctionnalités et configuration de Riverstone, et formation à l'identification des problèmes de support client et aux procédures d'escalade.",
      "certs": "Riverstone Certified Networking Professional (RCNP), 2001. Évaluation d'équivalence éducative aux États-Unis reconnaissant un parcours équivalent à une licence en informatique et une licence en administration des affaires, achevée en 2001 dans le cadre de la procédure de visa H1-B1.",
      "lineageTitle": "La lignée d'entreprise",
      "lineageDesc": "Riverstone Networks a débuté comme une entreprise nommée Yago, a été rachetée par Cabletron Systems vers 1998, a réapparu comme entreprise indépendante par une scission en 2001, et a été rachetée par Alcatel-Lucent en 2006."
    },
    "cisco": {
      "name": "Cisco Systems",
      "years": "2003 – 2008",
      "tagline": "Maintenir en marche une infrastructure nationale critique, comme point de contact unique pour les clients fédéraux du Brésil.",
      "intro": "Sous contrat via Cisco Professional Services au Brésil, ce fut la carrière dans sa forme la plus exigeante sur le plan opérationnel, où le travail concernait moins une technologie unique que le maintien en marche de systèmes critiques pour des clients qui ne pouvaient pas se permettre d'interruption.",
      "s1Title": "Opérations à fort contact, 2003 à 2004",
      "s1Body": "En tant que responsable des opérations à fort contact et point de contact unique, le rôle était la gestion de la satisfaction client après-vente pour deux des plus grandes entités fédérales du Brésil : SERPRO, l'agence de traitement des données du gouvernement, et ECT-Correios, la poste nationale, couvrant Brasília et São Paulo. La surface technique comprenait des commutateurs et routeurs Catalyst, des pare-feu PIX, et des équipements de contenu et d'équilibrage de charge CSS, CSM et ACE. La véritable discipline, cependant, était la gestion de l'escalade et la gestion de crise, le maintien d'une satisfaction élevée pour des comptes où les enjeux étaient nationaux.",
      "s2Title": "Formation Cisco, 2007 à 2008",
      "s2Body": "La relation Cisco a aussi produit une prestation de formation formelle : concepts et exploitation IOS et CatOS, et concepts, exploitation et dépannage des réseaux de couche 2 et de couche 3, dans des cours de plusieurs jours. Cela a complété l'expérience opérationnelle approfondie par la formation structurée qui deviendrait plus tard l'unique objet de la carrière.",
      "ironportTitle": "Une note distincte : IronPort, 2004",
      "ironportBody": "Méritant d'être consigné avec exactitude, et distinct du travail chez Cisco : un bref engagement de trois mois fin 2004 avec IronPort Systems, alors une jeune entreprise indépendante d'équipements de sécurité de la messagerie basée à San Bruno, en Californie. Le travail était le développement du channel et le conseil technique avant-vente pour ses équipements de sécurité de la messagerie de la série C. Cela précède entièrement le rachat d'IronPort par Cisco en 2007 ; c'était donc une relation distincte avec une entreprise indépendante, pas une technologie Cisco, et cela n'est mentionné ici que parce que l'entreprise est devenue plus tard une partie de Cisco.",
      "certs": "Cisco Certified Network Associate (CCNA), 2000 et 2005. Cisco Internetwork Troubleshooting (CIT), 2003."
    },
    "paloalto": {
      "name": "Palo Alto Networks",
      "years": "2013 – 2015",
      "tagline": "Pare-feu de nouvelle génération, via le channel des revendeurs et la salle de classe.",
      "intro": "Une relation ciblée centrée sur la technologie des pare-feu de nouvelle génération, portée via le channel des revendeurs et intégrateurs. C'est un engagement passé ; Palo Alto ne fait pas partie des plateformes enseignées aujourd'hui, mais le travail était réel et certifié.",
      "s1Title": "Conseil et formation channel, 2013 à 2015",
      "s1Body": "Chez TDec Network Group, Palo Alto a rejoint une pratique de conseil et de formation multi-fournisseurs couvrant l'ingénierie systèmes, l'architecture de solutions, l'habilitation applicative, l'implémentation, les audits et le dépannage. La relation s'est poursuivie via Cipher Security en 2015 pour des travaux d'avant-vente et d'après-vente. L'accent technique était mis sur les pare-feu de nouvelle génération et la plateforme de gestion Panorama, le cœur de l'offre de sécurité d'entreprise de Palo Alto à l'époque.",
      "s2Title": "Formation PAN-OS",
      "s2Body": "Cette période a inclus une prestation de formation formelle : un bootcamp PAN-OS 6.0, bâtissant la même formation pratique et axée sur les laboratoires qui définit la pratique d'enseignement d'aujourd'hui. Combinée aux certifications obtenues en 2014, elle a établi une véritable profondeur dans la plateforme, même si l'orientation de la carrière s'est ensuite concentrée sur d'autres technologies.",
      "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. Remarque : ces certifications sont historiques et ne sont pas maintenues à jour."
    }
  },
  "training": {
    "eyebrow": "Les formations que je dispense",
    "title": "Quatre plateformes, enseignées par quelqu'un qui les a exploitées.",
    "intro": "Formations officielles et certifiées animées par un formateur, couvrant {courses} cours sur les quatre plateformes au cœur des réseaux et de la sécurité modernes. Chaque cours est dispensé par un formateur agréé, avec des décennies de mise en œuvre pratique derrière l'enseignement.",
    "courseCount": "{count} cours",
    "since": "depuis",
    "representativeNote": "Ce catalogue est représentatif, non exhaustif. Les noms des cours, les durées et les contenus reflètent les informations publiques actuelles et sont affinés à partir des fiches techniques officielles.",
    "allPlatforms": "Toutes les plateformes",
    "authorizedSince": "Formateur agréé depuis {year}",
    "workingSince": "Travaille avec {platform} depuis {year}",
    "tech": {
      "switchesRouters": "commutateurs et routeurs d'entreprise",
      "firewalls": "pare-feu",
      "webCloudSecurity": "sécurité web et cloud"
    },
    "coursesHeading": "{count} cours",
    "duration": "Durée",
    "delivery": "Format",
    "deliveryValue": "À distance ou en présentiel",
    "modules": "Modules",
    "aboutCourse": "À propos de ce cours",
    "tableOfContents": "Table des matières",
    "agendaPending": "Un programme détaillé jour par jour sera ajouté à partir de la fiche technique officielle du cours.",
    "moreFrom": "Plus de cours {platform}",
    "requestTraining": "Demander cette formation",
    "requestVia": "Dispensé via {destination}"
  },
  "teach": {
    "eyebrow": "Comment j'enseigne",
    "title": "Un formateur qui a construit ces systèmes avant de les enseigner.",
    "lede": "La plupart des formations techniques sont dispensées par des personnes qui ont appris la matière pour l'enseigner. Ceci est l'inverse : trois décennies à construire, casser et réparer de vrais réseaux et systèmes de sécurité, distillées en une formation qui relie chaque concept à la façon dont il se comporte réellement en production.",
    "s1Title": "Pourquoi cela compte dans une salle de classe",
    "s1Body": "Il y a une différence entre expliquer comment une fonctionnalité est censée fonctionner et expliquer pourquoi elle se comporte comme elle le fait à trois heures du matin quand quelque chose de critique est en panne. Le premier vient d'un manuel. Le second vient d'y avoir été. Depuis 1996, le travail était la mise en œuvre : concevoir des réseaux, les déployer, et être la personne appelée quand ils tombaient en panne, pour des fournisseurs et pour certaines des plus grandes organisations du Brésil. C'est cette profondeur que reçoit chaque participant, non pas un présentateur lisant des diapositives, mais un ingénieur qui a vécu au sein de ces systèmes expliquant comment ils fonctionnent vraiment.",
    "s2Title": "Le complexe rendu clair",
    "s2Body": "Une connaissance technique approfondie est nécessaire mais pas suffisante. La compétence plus rare est de la traduire : prendre quelque chose de réellement complexe, pare-feu applicatifs, fédération d'identité, gestion du trafic, SD-WAN, et le rendre limpide pour quelqu'un qui le rencontre pour la première fois. Les participants soulignent systématiquement les exemples concrets et la didactique claire et structurée, la capacité à placer chaque concept dans le contexte du travail qu'ils accomplissent réellement. L'enseignement a été un fil conducteur tout au long de cette carrière, présent dans presque chaque rôle depuis 1997, et l'objet à temps plein depuis 2020.",
    "s3Title": "Pratique, pas approximatif",
    "s3Body": "La compétence technique se construit en faisant, pas en regardant. Chaque cours est bâti autour de laboratoires pratiques sur de vrais systèmes, renforcés par des environnements de laboratoire gérés pour que la pratique ait toujours un lieu réel où se dérouler. Le format s'adapte au public : formation animée par un formateur à distance dans le monde entier, en présentiel quand cela convient mieux, en anglais ou en portugais. L'objectif de chaque session est le même, que les participants repartent capables de faire la chose, pas seulement de la décrire.",
    "s4Title": "Reconnu, certifié et à jour",
    "s4Body": "L'enseignement repose sur un socle de reconnaissance formelle. F5 DevCentral MVP trois années consécutives, en 2022, 2023 et 2024. Certifications F5 détenues depuis 2015, et habilitation de formateur sur quatre plateformes : F5, Extreme Networks, Fortinet et Netskope. La prestation atteint l'Australie, Singapour, l'Inde, l'Europe centrale, les États-Unis et le Brésil, via Red Education, un centre de formation agréé. Les qualifications comptent, mais elles sont un raccourci pour ce qui se trouve en dessous : une maîtrise authentique et actuelle de la technologie.",
    "platformsTitle": "Ce que j'enseigne",
    "platformsBody": "Formations officielles et certifiées animées par un formateur, couvrant quatre plateformes au cœur des réseaux et de la sécurité modernes. Chacune renvoie à son catalogue de cours complet.",
    "s5Title": "Au-delà de la salle de classe",
    "s5Body": "La même profondeur qui fait un bon enseignement fait un bon conseil. Trente ans couvrant la distribution d'applications, la sécurité réseau, l'identité et l'infrastructure, côté fournisseur et côté client, constituent une perspective qui voyage bien au-delà d'une salle de formation, jusque dans les décisions d'architecture, la sélection de technologies et les problèmes difficiles qui n'entrent pas dans un programme. L'enseignement est l'objet ; l'expérience qui le sous-tend est à la disposition des équipes qui ont besoin de plus qu'un cours.",
    "toolsTitle": "Des outils qui calculent, jamais ne devinent",
    "toolsBody": "À côté de la formation se trouve un ensemble croissant d'outils réseau et sécurité gratuits et respectueux de la vie privée, des utilitaires déterministes qui s'exécutent entièrement dans votre navigateur et n'envoient jamais votre saisie où que ce soit. Calculs de sous-réseaux et de CIDR, IPv6, inspection de certificats et de jetons, et plus encore, le genre d'outils du quotidien auxquels recourt un ingénieur en exercice. Ils sont conçus dans le même esprit que l'enseignement : précis, pratiques et réellement utiles. Essayez-les, sans inscription, sans suivi.",
    "toolsCta": "Explorer les outils",
    "historyTitle": "Trois décennies, un fil conducteur",
    "historyBody": "De la construction d'ordinateurs à l'adolescence en 1991, à travers deux décennies au sein de l'industrie des réseaux et de la sécurité, jusqu'à la formation mondiale à temps plein depuis 2020. L'histoire entière vaut la lecture si vous voulez comprendre l'expérience derrière l'enseignement.",
    "historyCta": "Lire l'histoire complète",
    "ctaTitle": "Travaillons ensemble",
    "ctaBody": "Que vous cherchiez à réserver une formation officielle, à concevoir un programme sur mesure pour votre équipe, ou à faire appel à un conseil expérimenté sur un problème difficile, la porte est ouverte.",
    "ctaButton": "Prendre contact",
    "coursesButton": "Parcourir tous les cours"
  },
  "contact": {
    "title": "Prendre contact",
    "lede": "Que vous cherchiez à réserver une formation officielle, à concevoir un programme sur mesure pour votre équipe, ou à faire appel à un conseil expérimenté sur un problème difficile, je serais heureux d'avoir de vos nouvelles.",
    "formHeading": "Envoyer un message",
    "directHeading": "Ou contactez-moi directement",
    "formName": "Votre nom",
    "formEmail": "Votre e-mail",
    "formTopic": "De quoi s'agit-il ?",
    "topicTraining": "Formation officielle",
    "topicCustom": "Programme sur mesure pour une équipe",
    "topicAdvisory": "Conseil et accompagnement",
    "topicOther": "Autre chose",
    "formMessage": "Votre message",
    "formSend": "Envoyer le message",
    "formSending": "Envoi en cours…",
    "formRequired": "Veuillez renseigner votre nom, votre e-mail et un message.",
    "successTitle": "Merci.",
    "successBody": "Votre message est en route. Je vous répondrai dès que possible.",
    "errorBody": "Une erreur s'est produite lors de l'envoi. Veuillez réessayer, ou envoyez un e-mail directement.",
    "emailLabel": "E-mail",
    "channels": {
      "linkedin": {
        "description": "Se connecter professionnellement",
        "label": "LinkedIn"
      },
      "youtube": {
        "description": "Vidéos et tutoriels",
        "label": "YouTube"
      },
      "instagram": {
        "description": "Dans les coulisses",
        "label": "Instagram"
      },
      "training": {
        "label": "Formation officielle",
        "description": "Réserver un cours via Red Education"
      }
    },
    "feedbackNote": "Vous avez trouvé un bug, une erreur ou une inexactitude sur le site ?",
    "feedbackLink": "Partagez-le sur la page des idées"
  },
  "certs": {
    "title": "Certifications et qualifications",
    "lede": "Trois décennies de qualifications formelles dans les réseaux et la sécurité. Les habilitations de formateur et les certifications ci-dessous sont à jour ; un relevé complet des qualifications obtenues, la plupart désormais historiques, suit pour la profondeur.",
    "jumpToHistorical": "Aller au relevé complet",
    "credlyVerify": "Vérifier sur Credly",
    "current": "À jour",
    "historical": "Historique",
    "instructorTitle": "Habilitations de formateur",
    "instructorIntro": "Habilité à dispenser aujourd'hui des formations officielles et certifiées sur chacune de ces plateformes.",
    "currentCertsTitle": "Certifications à jour",
    "recognitionTitle": "Reconnaissance",
    "historicalTitle": "Le relevé complet",
    "historicalIntro": "Qualifications obtenues au cours d'une carrière débutée en 1996. La plupart sont historiques ou expirées, conservées ici pour la profondeur qu'elles représentent.",
    "verify": "Vérifier",
    "credly": "Credly",
    "certificate": "Certificat",
    "verifyCode": "Code",
    "candidateId": "ID"
  },
  "colophon_page": {
    "eyebrow": "Colophon",
    "title": "Comment cela a été conçu",
    "lede": "La plupart des sites web ne s'expliquent pas. Celui-ci le fait, car la façon dont il a été réalisé fait partie de ce qu'il est : une expérience délibérée de bien construire, avec des collaborateurs inhabituels, et un relevé qui vaut d'être conservé.",
    "concordTitle": "CONCORD",
    "concordBody1": "Ce site a été conçu et construit au moyen d'un protocole nommé CONCORD : une collaboration structurée entre une personne et trois systèmes d'IA différents, chacun dans un rôle distinct. Ce n'est pas un gadget. C'est une méthode de travail, avec sa propre gouvernance, son propre relevé de décisions, et un seul humain responsable de chaque choix livré.",
    "concordBody2": "Le principe est simple. Différents modèles d'IA ont des forces différentes, et un problème difficile bénéficie de plus d'une perspective tenues en tension. Le travail a donc été divisé par rôle, et une personne siégeait au centre, faisant le relais entre eux, ratifiant ce qui était solide et rejetant ce qui ne l'était pas.",
    "concordBody3": "CONCORD n'a été repris de nulle part. Il a été conçu par Rodolfo Nützmann pour ce projet, à partir d'un besoin concret : comment faire appel à plusieurs systèmes d'IA à la fois, chacun véritablement performant sur un point différent, sans renoncer au fil unique de responsabilité humaine qu'exige un vrai travail. La réponse a été de donner à chaque système un siège défini, de les empêcher de négocier entre eux et d'acheminer chaque échange par une seule personne qui gardait la vue d'ensemble. Cet arrangement porte un nom plus ancien. Les systèmes d'IA sont des agents : ils agissent sur instruction et pour le compte d'autrui. PRIME est le principal : celui qui décide réellement, qui exerce le jugement et qui porte les conséquences comme le nom.",
    "concordBody4": "Cela a commencé de manière informelle — comme une façon de répartir le travail — et s'est durci au fil de la construction en une méthode nommée : des sièges fixes, une règle unique au-dessus de tout, selon laquelle rien n'est publié sans que PRIME le ratifie, et une trace écrite des raisons de chaque décision. Le nom énonce le but : la concorde, un accord atteint à dessein par un processus, et non ce que produirait un outil sans supervision.",
    "concordPrincipal": "La force est celle des agents. La responsabilité est celle du principal, et elle ne se transfère pas.",
    "concordMechTitle": "Le fonctionnement, en clair",
    "mech1Label": "Proposer",
    "mech1Gloss": "Chaque siège avance des options dans son propre domaine.",
    "mech2Label": "Relayer",
    "mech2Gloss": "PRIME fait circuler les propositions entre les sièges ; ceux-ci ne négocient jamais directement.",
    "mech3Label": "Ratifier",
    "mech3Gloss": "PRIME accepte ce qui est solide et rejette ce qui ne l'est pas. Sans cela, rien n'est publié.",
    "mech4Label": "Encadrer",
    "mech4Gloss": "Un ensemble permanent de règles internes borne chaque résultat, à chaque siège.",
    "mech5Label": "Consigner",
    "mech5Gloss": "Un journal écrit des décisions conserve le raisonnement de chaque choix.",
    "mech6Label": "Mémoriser",
    "mech6Gloss": "Le contexte, les règles internes et ce journal persistent sous forme de fichiers, transmis d'une session à la suivante, de sorte que la méthode survit à toute conversation.",
    "rolesTitle": "Les sièges",
    "rolePrime": "PRIME",
    "rolePrimeWho": "Rodolfo Nützmann",
    "rolePrimeBody": "Le seul ratificateur. Chaque décision, chaque ligne livrée est passée par un humain qui détenait la vue d'ensemble et portait la responsabilité finale. Les IA proposaient ; PRIME disposait.",
    "rolePrimeModel": "Humain",
    "roleAnvil": "ANVIL",
    "roleAnvilWho": "Ingénierie",
    "roleAnvilBody": "Le siège d'ingénieur en chef. Architecture, code, structure du contenu, et la construction elle-même, transformés de l'intention en un site fonctionnel, testé et déployable.",
    "roleAnvilModel": "Anthropic · Claude Opus 4.8",
    "roleScout": "SCOUT",
    "roleScoutWho": "Stratégie et marque",
    "roleScoutBody": "Le siège de la stratégie et du positionnement. Les questions de ce que c'est, à qui cela s'adresse et comment cela doit se présenter au monde.",
    "roleScoutModel": "OpenAI · ChatGPT 5.5",
    "rolePrism": "PRISM",
    "rolePrismWho": "Design",
    "rolePrismBody": "Le siège du design. Le langage visuel, la typographie, la couleur et le ressenti de la chose, façonnés en un système cohérent.",
    "rolePrismModel": "Google · Gemini 3.1 Pro",
    "seatsModelNote": "Versions des modèles d'IA en juin 2026.",
    "principlesTitle": "Comment cela a été réalisé",
    "principlesBody": "Quelques principes ont tenu d'un bout à l'autre, et ils sont visibles si l'on sait où regarder.",
    "p1Title": "Calculer, jamais deviner",
    "p1Body": "Les outils de ce site calculent les réponses localement et de façon déterministe. Ils n'appellent pas un serveur avec votre saisie, et ils n'approximent rien. Ce qui s'exécute dans votre navigateur reste dans votre navigateur.",
    "p2Title": "Ouvert au cœur",
    "p3Title": "Documenté par construction",
    "p3Body": "Chaque partie de la base de code est commentée et documentée, non pas après coup mais comme une règle permanente. La construction se veut lisible, pour son mainteneur et pour quiconque en hérite.",
    "p4Title": "Conçu pour durer et pour voyager",
    "p4Body": "Le site est un export statique : rapide, mis en cache, et ne dépendant de rien à l'exécution. Il est structuré dès la base pour de nombreuses langues, afin de pouvoir s'adresser à un public mondial sans être reconstruit.",
    "stackTitle": "La pile technique",
    "stackBody": "Pour ceux à qui ces choses importent, le socle technique, énoncé clairement.",
    "stackFramework": "Framework",
    "stackFrameworkV": "Next.js 15 et React 19, exportés en site entièrement statique",
    "stackI18n": "Internationalisation",
    "stackI18nV": "next-intl, avec {count} langues et prise en charge de l'écriture de droite à gauche",
    "stackDesign": "Système de design",
    "stackDesignV": "Un moteur de thème personnalisable, basé sur des jetons ; le thème par défaut est Obsidian",
    "stackType": "Typographie",
    "stackTypeV": "Inter pour le texte, JetBrains Mono pour les données et les codes",
    "stackEngine": "Moteur des outils",
    "stackEngineV": "Une couche de calcul déterministe qui s'exécute entièrement dans le navigateur",
    "stackSearch": "Recherche",
    "stackSearchV": "Recherche plein texte statique, côté client ; pas de serveur de recherche",
    "vibeTitle": "Est-ce du vibe coding ?",
    "vibeBody1": "La question est légitime et mérite une réponse claire. Le vibe coding est un terme que le chercheur en IA Andrej Karpathy a forgé début 2025 pour une façon de construire des logiciels où l'on décrit ce que l'on veut à un modèle de langage, où l'on accepte ce qu'il écrit sans le lire de près, et où l'on se guide sur les résultats plutôt que sur le code lui-même. Il l'a présenté comme se laisser porter par l'ambiance et oublier que le code existe, en précisant que cela convenait davantage à des projets rapides et jetables qu'à des systèmes dont les gens dépendent.",
    "vibeBody2": "Selon cette définition, une partie de ce site a été construite ainsi, et il vaut mieux l'assumer que le cacher. La surface de l'application, le câblage du framework, les composants, le style, la tuyauterie qui tient les pages ensemble, a été produite rapidement avec un ingénieur IA et guidée par le résultat et par un ensemble fixe de règles internes, et non tapée à la main ligne par ligne. Pour cette couche, où une erreur est visible et facile à corriger, la vitesse était le but.",
    "vibeBody3": "Les parties qui comptent le plus sont tenues à une autre exigence. Tout ce qui calcule vos données est vérifié, non improvisé : le cœur de chaque outil est confronté à la norme publiée qu'il met en œuvre, aux RFC et spécifications pertinents, et sa sortie est confirmée par des références indépendantes avant publication. Comme le dit une formule souvent citée du programmeur Simon Willison, un code que vous avez relu, testé et compris n'est pas du vibe coding du tout. Karpathy lui-même appelle désormais la version disciplinée agentic engineering : garder l'effet de levier de l'IA sans concéder la qualité du résultat. C'est la ligne que trace ce projet. Rapide là où la vitesse est gratuite, rigoureux là où cela compte, et une seule personne responsable de l'ensemble.",
    "closingTitle": "Une note sur la méthode",
    "closingBody": "Construire des logiciels avec des collaborateurs IA est assez nouveau pour que l'honnêteté soit d'en être transparent. Rien ici n'a été publié sans qu'un humain décide qu'il devait l'être. Les IA étaient des instruments, des instruments compétents, mais des instruments. Le jugement, la responsabilité et le nom sur le travail sont humains.",
    "backHome": "Retour aux outils",
    "standardsTitle": "Normes et cadres",
    "standardsLede": "Chaque outil ici met en œuvre une spécification publiée, pas une supposition. Les décodeurs et les calculateurs sont bâtis sur les documents qui définissent leurs formats et arrimés aux vecteurs de test que ces documents publient, de sorte que chaque réponse est vérifiée par rapport à la source de vérité et non par rapport à elle-même.",
    "specsLabel": "Les spécifications",
    "specsBody": "Les JSON Web Tokens suivent la RFC 7519, avec les signatures et algorithmes dans les RFC 7515 et 7518 ; PKCE est la RFC 7636 ; Base64 et ses variantes sont la RFC 4648 ; les UUID sont la RFC 9562 (qui a rendu obsolète la RFC 4122 en 2024 et fournit ses propres vecteurs de test) ; HMAC est la RFC 2104, sur la famille SHA normalisée dans FIPS 180-4 et FIPS 202 ; les certificats X.509 sont la RFC 5280 ; IPv4 et la notation CIDR sont la RFC 4632 ; l'adressage IPv6 et sa forme textuelle canonique sont les RFC 4291 et RFC 5952 ; et le décodeur de cipher suites s'appuie sur le registre officiel IANA TLS Cipher Suites, recoupé avec les spécifications de TLS 1.3 et 1.2 (RFC 8446 et 5246), les règles de mise à jour du registre qui fixent la colonne “Recommended” (RFC 8447) et l'interdiction de RC4 (RFC 7465). Là où un registre fait autorité, ses données sont intégrées directement plutôt que ressaisies.",
    "vectorsLabel": "Vecteurs de référence",
    "vectorsBody": "Chaque outil est livré avec un jeu de vecteurs de référence : des entrées connues associées à des sorties dont l'exactitude est connue, tirées des RFC et des organismes de normalisation pertinents. Ils s'exécutent à chaque build, de sorte qu'un remaniement qui modifie discrètement une réponse fait échouer le build au lieu d'être publié.",
    "owaspLabel": "OWASP",
    "owaspBody": "Les outils de sécurité sont définis à partir des cadres de l'OWASP, et non assemblés au coup par coup. Les outils de cryptographie et de TLS correspondent aux domaines Cryptographic Failures et Security Misconfiguration de l'OWASP Top 10 et aux vérifications équivalentes de l'Application Security Verification Standard ; l'outil de tokens suit les recommandations de l'OWASP pour inspecter et valider les JWT. Les prevention cheat sheets de l'OWASP fixent aussi des règles strictes pour la suite : tout traitement XML ou SAML ajouté ici doit être durci contre XXE avant d'être publié.",
    "redblueLabel": "Rouge et bleu",
    "redblueBody": "Le même décodage-et-explication qui permet à un red-teamer de lire un token capturé permet à un blue-teamer de comprendre ce qu'émet sa propre pile. La plateforme se place délibérément du côté de l'analyse de cette ligne : elle identifie, décode, convertit et explique, et elle ne va pas jusqu'à forger, injecter ou contourner des contrôles. Cette limite est un choix de conception, pas un oubli ; ces outils existent pour enseigner et diagnostiquer, pas pour servir d'arme.",
    "localLabel": "Local et déterministe",
    "localBody": "Tout s'exécute dans le navigateur. L'outil appelle une fonction pure : pour une même entrée, elle renvoie la même sortie, ne conserve aucun état et n'envoie rien à un serveur. Pas de cookies, pas d'analytique, comme la page Confidentialité l'expose en détail.",
    "thanksTitle": "Remerciements particuliers",
    "p2Body": "La logique déterministe qu'exécute chaque outil constitue l'outil tout entier : il n'y a pas d'étape serveur cachée, pas de compte et pas de télémétrie. Tout s'exécute dans votre navigateur.",
    "changelogLink": "Journal des modifications"
  },
  "support": {
    "title": "Soutenir le projet",
    "lede": "Ces outils sont gratuits et conçus pour le rester. S'ils vous font gagner du temps, vous êtes le bienvenu pour contribuer à leur entretien. Entièrement facultatif, toujours.",
    "tipHeading": "Laisser un pourboire",
    "tipBlurb": "Chaque contribution va directement au soutien des outils et du temps qui leur est consacré.",
    "zeroCommission": "0 % de commission. Les liens mènent directement au prestataire ; ce site n'est jamais dans le circuit de paiement.",
    "placeholder": "Les options de soutien sont en cours de configuration et apparaîtront bientôt ici."
  },
  "admin": {
    "eyebrow": "Admin",
    "title": "Contrôle du site",
    "lede": "La surface de contrôle des fonctionnalités et paramètres facultatifs de ce site.",
    "previewBanner": "Échafaudage d'aperçu. Sur le site statique, ces commandes prévisualisent la surface d'administration ; le contrôle en direct s'active avec la couche de service. Les modifications ici ne sont pas enregistrées.",
    "featuresTitle": "Fonctionnalités",
    "flagRequestTraining": "Demander cette formation",
    "flagRequestTrainingDesc": "L'appel à l'action de génération de prospects sur les pages de cours et de plateforme.",
    "flagTipJar": "TipJar",
    "flagTipJarDesc": "Liens de soutien au créateur sur la page de soutien.",
    "flagToolFunding": "Financement des outils",
    "flagToolFundingDesc": "Interface de soutien par outil.",
    "flagToolProvenance": "Provenance des outils",
    "flagToolProvenanceDesc": "Panneau de crédits et sources par outil.",
    "routingTitle": "Routage des prospects",
    "routingDefaultLabel": "Valeur par défaut globale",
    "routingNoOverrides": "Aucune dérogation par plateforme ou par cours configurée.",
    "contactTitle": "Contact",
    "contactEmailLabel": "E-mail",
    "contactFormLabel": "Soumission du formulaire",
    "formMailto": "Repli mailto (pas de backend)",
    "formEndpoint": "Envoi vers un point de terminaison",
    "tipJarTitle": "Fournisseurs TipJar",
    "tipConfigured": "Configuré",
    "tipNotConfigured": "Non configuré",
    "on": "Activé",
    "off": "Désactivé",
    "accessTitle": "Contrôle d'accès",
    "accessNote": "Seules ces identités fédérées peuvent détenir un accès administrateur. Appliqué côté serveur par la couche de service ; le site statique n'authentifie pas.",
    "accessFederatedOnly": "Connexion fédérée uniquement. Pas de repli sur un compte local.",
    "accessRoleLabel": "Rôle",
    "accessPermsLabel": "Permissions du propriétaire"
  },
  "machineTranslation": {
    "notice": "Cette page a été traduite automatiquement et peut contenir des erreurs.",
    "cta": "Aidez à l'améliorer"
  },
  "contribute": {
    "eyebrow": "Traductions",
    "title": "Aidez à améliorer les traductions",
    "lede": "Toutes les langues ici autres que l'anglais sont une première ébauche réalisée par machine. Si vous parlez l'une d'elles et remarquez quelque chose d'incorrect ou de maladroit, vos corrections sont les bienvenues. Voici comment les envoyer.",
    "howTitle": "Comment contribuer",
    "howBody": "L'anglais est la source de référence, et toutes les autres langues en sont traduites, des erreurs sont donc possibles. Chaque pack de langue est un seul fichier texte de phrases étiquetées. Téléchargez celui que vous voulez améliorer, ne changez que le texte après chaque étiquette et laissez les étiquettes et tout ce qui se trouve entre accolades exactement tel quel. Envoyez ensuite le fichier modifié par e-mail en précisant la langue. Chaque envoi est relu à la main.",
    "downloadHeading": "Packs de langue",
    "referenceTag": "référence",
    "emailHeading": "Envoyez votre contribution",
    "backHome": "Retour aux outils"
  },
  "api": {
    "title": "API",
    "lede": "Les outils de ce site s'exécutent dans votre navigateur et gardent vos données sur votre appareil. Pour l'automatisation — scripts, pipelines et intégrations —, les mêmes calculs déterministes sont disponibles sous la forme d'une petite API HTTP. C'est la contrepartie programmatique des outils du navigateur, non un remplacement.",
    "privacyTitle": "Ce que cela signifie pour vos données",
    "privacyBody": "L'API ne reçoit que l'entrée que vous lui envoyez, calcule un résultat et le renvoie. Elle est sans état et ne journalise aucune valeur de requête ni aucun corps de requête. S'il vous faut une absence garantie de sortie de données, utilisez les outils du navigateur ou exécutez vous-même le moteur ouvert.",
    "engineTitle": "Le même moteur que le navigateur",
    "specTitle": "La spécification",
    "specBody": "Le contrat complet est publié au format OpenAPI 3.1. Téléchargez-le, pointez-y votre propre outillage ou lisez la référence ci-dessous.",
    "downloadSpec": "Télécharger openapi.yaml",
    "baseUrlLabel": "URL de base",
    "authLabel": "Authentification",
    "authValue": "Aucune. Il s'agit d'une API publique en lecture seule.",
    "referenceTitle": "Référence",
    "loading": "Chargement de la spécification.",
    "loadError": "La spécification n'a pas pu être chargée.",
    "tryItTitle": "Essayer",
    "tryItSend": "Envoyer",
    "tryItRunning": "Exécution.",
    "tryItHint": "S'exécute sur l'API en direct de cette origine. Votre entrée est envoyée au point de terminaison.",
    "paramsTitle": "Paramètres",
    "responsesTitle": "Réponses",
    "schemasTitle": "Schémas",
    "exampleLabel": "Exemple",
    "requiredLabel": "requis",
    "fieldLabel": "Champ",
    "typeLabel": "Type",
    "descriptionLabel": "Description",
    "viewReference": "Référence",
    "viewSwagger": "Swagger UI",
    "swaggerLoadError": "Swagger UI n'a pas pu être chargé.",
    "engineBody": "Chaque point de terminaison exécute la même fonction pure que l'outil dans le navigateur, de sorte que l'API et le navigateur renvoient des résultats identiques octet pour octet."
  },
  "license_page": {
    "eyebrow": "Conditions",
    "title": "Licence",
    "closedHeading": "Code fermé — ce site web",
    "closedBody": "Le site web lui-même est à code fermé. Son design, son interface, son contenu rédigé (y compris chaque article Learn), son identité de marque et la manière particulière dont ces outils sont assemblés et présentés ici sont la propriété exclusive de leur auteur, tous droits réservés. Aucune autorisation n'est accordée pour copier, reproduire, modifier, redistribuer ou créer des œuvres dérivées du site ou de son contenu sans accord écrit préalable.",
    "contact": "Des questions sur la licence ? <a>Contactez-nous.</a>",
    "backHome": "Retour aux outils",
    "thirdHeading": "Composants open source",
    "lede": "ronutz.com est une œuvre propriétaire, tous droits réservés. Ces conditions couvrent le site web et son contenu. Le site est bâti sur des logiciels open source, utilisés et redistribués selon leurs propres conditions de licence, crédités ci-dessous.",
    "thirdBody": "Ce site repose sur du travail open source. Le site lui-même est bâti avec Next.js et React et livré sous forme d'export statique ; l'internationalisation utilise next-intl ; le contenu Learn est rendu avec next-mdx-remote, gray-matter, remark-gfm et js-yaml ; et la recherche est assurée par Pagefind. Ces composants sont fournis sous la MIT License, à l'exception de next-mdx-remote (Mozilla Public License 2.0). La référence de l'API intègre Swagger UI, sous l'Apache License 2.0. Chaque composant reste sous sa propre licence, et les avis complets sont livrés avec le code source."
  },
  "contributeIdeas": {
    "eyebrow": "Vos idées sont les bienvenues",
    "title": "Partager une idée",
    "lede": "Cette boîte à outils est conçue pour grandir, et le signal le plus clair sur la direction à prendre vient de ceux qui l'utilisent. Vous avez trouvé un bug, une erreur ou une inexactitude ? Il manque un outil qui n'est pas encore là ? Vous voyez une meilleure façon de traiter quelque chose, ou un résultat que vous formuleriez autrement ? Envoyez-le ; toute forme de retour est la bienvenue.",
    "sendTitle": "Ce que vous pouvez envoyer",
    "sendBody": "Des bugs, des erreurs et des inexactitudes de toute sorte : un outil qui se comporte mal, un résultat erroné, une erreur dans un article Learn, ou simplement quelque chose qui paraît anormal. Des demandes de fonctionnalités pour des outils déjà existants. Des idées de nouveaux outils que la boîte devrait avoir. Des corrections et des ajouts aux articles Learn, comme une explication plus claire, une meilleure source, ou un sujet manquant. Ou simplement un autre angle sur un problème. Une ébauche suffit ; une phrase suffit pour entamer la conversation.",
    "toolTitle": "Si vous proposez un nouvel outil",
    "toolBody": "Les outils ici sont de petits modules auto-descriptifs : un manifeste qui dit ce qu'est l'outil et d'où vient sa justesse, une fonction pure qui fait le travail, et un ensemble de golden vectors, les paires fixes d'entrée et de sortie qui le prouvent. Un bon candidat calcule localement et de façon déterministe (la même entrée donne toujours la même sortie, sans horloge, réseau ni hasard dans le résultat), garde tout ce qui est sensible sur l'appareil, et ancre sa justesse dans une source citée comme une RFC plutôt que dans une opinion. Vous n'avez rien à construire de tout cela pour en proposer un : décrivez simplement ce qu'il doit calculer, un exemple, et la source sur laquelle il repose.",
    "fitRule": "Un test simple suffit. Chaque outil ici fonctionne entièrement dans votre navigateur et n'envoie rien nulle part ; un nouvel outil doit donc être quelque chose qu'un ordinateur peut déterminer uniquement à partir de ce que vous saisissez, en suivant une règle fixe et publiée. S'il doit aller en ligne, consulter quelque chose en direct, vous connecter ou se souvenir de vous, il n'a pas sa place ici.",
    "fitYes": "Convient :",
    "fitYesBody": "décoder ou expliquer quelque chose que vous collez (un jeton, un certificat, une configuration, la sortie d'une commande), convertir entre formats, calculer à partir d'une norme ou d'une formule, ou générer à partir d'une règle, comme un UUID, une empreinte ou une ligne de commande.",
    "fitNo": "Ne convient pas :",
    "fitNoBody": "tout ce qui doit aller en ligne ou vérifier quelque chose en direct (tester un vrai site web, interroger un serveur DNS en direct, scanner une adresse), tout ce qui nécessite un compte, une connexion ou des données enregistrées, ou tout ce dont la réponse n'est pas fixée par une norme publiée.",
    "fitUnsure": "Vous ne savez pas de quel côté se range votre idée ? Envoyez-la quand même et dites ce qu'elle devrait faire. Je vous dirai honnêtement si elle convient, et pourquoi.",
    "emailTitle": "Comment me joindre",
    "emailBody": "L'e-mail est le canal. Dites-moi ce que vous avez trouvé ou ce que vous souhaitez, avec assez de détails pour agir : un exemple, un lien, la formulation exacte, ce qui convient. Si cela améliore la boîte à outils, ce sera construit.",
    "emailLabel": "E-mail",
    "backToTools": "Retour à la boîte à outils"
  },
  "languageStatus": {
    "title": "Statut de la traduction",
    "reviewed": "Relu par une personne",
    "complete": "Automatique, complète",
    "partial": "Automatique, en cours",
    "explainTitle": "Comment les traductions sont marquées",
    "explainBody": "L'anglais et le portugais brésilien sont rédigés et relus par une personne. La plupart des autres langues sont traduites automatiquement et signalées selon leur avancement : ambre une fois qu'une langue couvre tout le site, jaune tant que le contenu plus récent est encore en anglais et en cours de rattrapage. Les langues marquées en rouge n'ont pas encore de traduction et sont affichées en anglais pour le moment. Les pages traduites automatiquement portent aussi un court avis, et vous êtes invité à les améliorer.",
    "stub": "Pas encore traduit"
  },
  "changelog": {
    "eyebrow": "Journal des modifications",
    "title": "Nouveautés",
    "lede": "Un journal continu des nouveaux outils, des nouveaux articles Learn et des changements importants sur ce site. Il y a {count} outils disponibles aujourd'hui.",
    "kindLaunch": "Lancement",
    "kindTool": "Nouvel outil",
    "kindFeature": "Fonctionnalité",
    "kindI18n": "Localisation",
    "kindContent": "Contenu",
    "kindInfra": "Infrastructure"
  }
}
