rea/website/locales/fr/messages.po

13541 lines
490 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#
msgid ""
msgstr ""
"Project-Id-Version: REA website\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Initial-Translation: Machine-assisted baseline; see website/locales/README.md for review workflow\n"
#: website/public/blog/index.html:99
msgctxt "page:blog/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/blog/index.html:181
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "{ph0}Home{ph1} / Blog"
msgstr "{ph0}Accueil{ph1} / Blogue"
#: website/public/blog/index.html:182
msgctxt "page:blog/index.html"
msgid "Blog."
msgstr "Blogue."
#: website/public/blog/index.html:183
msgctxt "page:blog/index.html"
msgid "Thoughts on reverse engineering."
msgstr "Réflexions sur l'ingénierie inverse."
#. {ph0}: <br />
#: website/public/blog/index.html:187
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Game reconstruction{ph0}Essay"
msgstr "Reconstruction du jeu{ph0}Essai"
#: website/public/blog/index.html:189
msgctxt "page:blog/index.html"
msgid "The industrial revolution in reverse engineering"
msgstr "La révolution industrielle dans l'ingénierie inverse"
#: website/public/blog/index.html:190
msgctxt "page:blog/index.html"
msgid ""
"What manual RE and reconstructing TH08, TH095 and TH04 taught me about "
"agents, verification and knowledge that compounds across projects."
msgstr ""
"Ce que la reconstitution manuelle et la reconstruction de TH08, TH095 et "
"TH04 m'ont appris sur les agents, la vérification et les connaissances qui "
"se combinent dans les projets."
#: website/public/blog/index.html:195
msgctxt "page:blog/index.html"
msgid "Read the article"
msgstr "Lire l'article"
#: website/public/blog/index.html:198
msgctxt "page:blog/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "Par N0zoM1z0 · 10 octobre 2026"
#. {ph0}: <span aria-hidden="true">
#. {ph1}: </span>
#: website/public/blog/index.html:217
#: website/public/blog/touhou-reconstruction/index.html:1067
#: website/public/examples/dino-lab/index.html:462
#: website/public/faq/index.html:560
#: website/public/first-investigation/index.html:510
#: website/public/get-started/index.html:869
#: website/public/guides/browser/index.html:485
#: website/public/guides/index.html:269
#: website/public/guides/javascript/index.html:490
#: website/public/guides/native/index.html:496 website/public/index.html:1173
#: website/public/showcase/aegis/index.html:795
#: website/public/showcase/ctf/index.html:764
#: website/public/showcase/dx-ball/index.html:772
#: website/public/showcase/index.html:304
#: website/public/showcase/notion/index.html:618
#: website/public/showcase/th04/index.html:787
#, python-brace-format
msgctxt "shared"
msgid "{ph0}↑{ph1} Top"
msgstr "{ph0}↑{ph1} Haut"
#: website/public/blog/index.html:6
msgctxt "page:blog/index.html"
msgid "REA Blog — Thoughts on Reverse Engineering"
msgstr "Blog REA-Réflexions sur l'ingénierie inverse"
#: website/public/blog/index.html:7
msgctxt "page:blog/index.html"
msgid ""
"Thoughts on reverse engineering, drawing on practical experience with REA "
"and AI agents."
msgstr ""
"Réflexions sur l'ingénierie inverse, en s'appuyant sur l'expérience pratique"
" avec REA et les agents d'IA."
#: website/public/blog/index.html:75 website/public/blog/index.html:88
#: website/public/blog/touhou-reconstruction/index.html:75
#: website/public/blog/touhou-reconstruction/index.html:88
#: website/public/examples/dino-lab/index.html:75
#: website/public/examples/dino-lab/index.html:88
#: website/public/faq/index.html:75 website/public/faq/index.html:88
#: website/public/first-investigation/index.html:75
#: website/public/first-investigation/index.html:88
#: website/public/get-started/index.html:75
#: website/public/get-started/index.html:88
#: website/public/guides/browser/index.html:75
#: website/public/guides/browser/index.html:88
#: website/public/guides/index.html:75 website/public/guides/index.html:88
#: website/public/guides/javascript/index.html:75
#: website/public/guides/javascript/index.html:88
#: website/public/guides/native/index.html:75
#: website/public/guides/native/index.html:88 website/public/index.html:75
#: website/public/index.html:88 website/public/showcase/aegis/index.html:75
#: website/public/showcase/aegis/index.html:88
#: website/public/showcase/ctf/index.html:75
#: website/public/showcase/ctf/index.html:88
#: website/public/showcase/dx-ball/index.html:75
#: website/public/showcase/dx-ball/index.html:88
#: website/public/showcase/index.html:75 website/public/showcase/index.html:88
#: website/public/showcase/notion/index.html:75
#: website/public/showcase/notion/index.html:88
#: website/public/showcase/th04/index.html:75
#: website/public/showcase/th04/index.html:88
msgctxt "shared"
msgid ""
"REA — Find out how software works. Reverse engineering with your coding "
"agent."
msgstr ""
"REA-Découvrez comment fonctionne le logiciel. Ingénierie inverse avec votre "
"agent de codage."
#: website/public/blog/index.html:104
#: website/public/blog/touhou-reconstruction/index.html:104
#: website/public/examples/dino-lab/index.html:105
#: website/public/faq/index.html:104
#: website/public/first-investigation/index.html:104
#: website/public/get-started/index.html:104
#: website/public/guides/browser/index.html:104
#: website/public/guides/index.html:104
#: website/public/guides/javascript/index.html:104
#: website/public/guides/native/index.html:104 website/public/index.html:106
#: website/public/showcase/aegis/index.html:105
#: website/public/showcase/ctf/index.html:104
#: website/public/showcase/dx-ball/index.html:104
#: website/public/showcase/index.html:104
#: website/public/showcase/notion/index.html:104
#: website/public/showcase/th04/index.html:104
msgctxt "shared"
msgid "REA home"
msgstr "Accueil REA"
#: website/public/blog/index.html:108
#: website/public/blog/touhou-reconstruction/index.html:108
#: website/public/examples/dino-lab/index.html:109
#: website/public/faq/index.html:108
#: website/public/first-investigation/index.html:108
#: website/public/get-started/index.html:108
#: website/public/guides/browser/index.html:108
#: website/public/guides/index.html:108
#: website/public/guides/javascript/index.html:108
#: website/public/guides/native/index.html:108 website/public/index.html:110
#: website/public/showcase/aegis/index.html:109
#: website/public/showcase/ctf/index.html:108
#: website/public/showcase/dx-ball/index.html:108
#: website/public/showcase/index.html:108
#: website/public/showcase/notion/index.html:108
#: website/public/showcase/th04/index.html:108
msgctxt "shared"
msgid "Main navigation"
msgstr "Navigation principale"
#: website/public/blog/index.html:117
#: website/public/blog/touhou-reconstruction/index.html:117
#: website/public/examples/dino-lab/index.html:118
#: website/public/faq/index.html:117
#: website/public/first-investigation/index.html:117
#: website/public/get-started/index.html:117
#: website/public/guides/browser/index.html:117
#: website/public/guides/index.html:117
#: website/public/guides/javascript/index.html:117
#: website/public/guides/native/index.html:117 website/public/index.html:119
#: website/public/showcase/aegis/index.html:118
#: website/public/showcase/ctf/index.html:117
#: website/public/showcase/dx-ball/index.html:117
#: website/public/showcase/index.html:117
#: website/public/showcase/notion/index.html:117
#: website/public/showcase/th04/index.html:117
msgctxt "shared"
msgid "REA on GitHub"
msgstr "REA sur GitHub"
#: website/public/blog/index.html:137
#: website/public/blog/touhou-reconstruction/index.html:137
#: website/public/examples/dino-lab/index.html:138
#: website/public/faq/index.html:137
#: website/public/first-investigation/index.html:137
#: website/public/get-started/index.html:137
#: website/public/guides/browser/index.html:137
#: website/public/guides/index.html:137
#: website/public/guides/javascript/index.html:137
#: website/public/guides/native/index.html:137 website/public/index.html:139
#: website/public/showcase/aegis/index.html:138
#: website/public/showcase/ctf/index.html:137
#: website/public/showcase/dx-ball/index.html:137
#: website/public/showcase/index.html:137
#: website/public/showcase/notion/index.html:137
#: website/public/showcase/th04/index.html:137
msgctxt "shared"
msgid "Join REA on Discord"
msgstr "Rejoindre REA sur Discord"
#: website/public/blog/index.html:156
#: website/public/blog/touhou-reconstruction/index.html:156
#: website/public/examples/dino-lab/index.html:157
#: website/public/faq/index.html:156
#: website/public/first-investigation/index.html:156
#: website/public/get-started/index.html:156
#: website/public/guides/browser/index.html:156
#: website/public/guides/index.html:156
#: website/public/guides/javascript/index.html:156
#: website/public/guides/native/index.html:156 website/public/index.html:158
#: website/public/showcase/aegis/index.html:157
#: website/public/showcase/ctf/index.html:156
#: website/public/showcase/dx-ball/index.html:156
#: website/public/showcase/index.html:156
#: website/public/showcase/notion/index.html:156
#: website/public/showcase/th04/index.html:156
msgctxt "shared"
msgid "Follow REA on X"
msgstr "Suivre REA sur X"
#: website/public/blog/index.html:217
msgctxt "page:blog/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/blog/touhou-reconstruction/index.html:99
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:181
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Touhou reconstruction"
msgstr "{ph0}Accueil{ph1} / {ph2}Blogue{ph3} / La reconstruction de Touhou"
#: website/public/blog/touhou-reconstruction/index.html:185
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Essay · Touhou reconstruction"
msgstr "Essai * La reconstruction de Touhou"
#: website/public/blog/touhou-reconstruction/index.html:186
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The industrial revolution in reverse engineering."
msgstr "La révolution industrielle dans l'ingénierie inverse."
#: website/public/blog/touhou-reconstruction/index.html:187
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "Par N0zoM1z0 · 10 octobre 2026"
#: website/public/blog/touhou-reconstruction/index.html:189
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Takeaway"
msgstr "À retenir"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:191
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Give agents autonomy over the investigation.{ph1} Set a clear goal and "
"acceptance criteria, then let the agent decide what to try next."
msgstr ""
"{ph0}Donner aux agents une autonomie sur l'enquête.{ph1} Définissez un "
"objectif et des critères d'acceptation clairs, puis laissez l'agent décider "
"quoi essayer ensuite."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:196
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Use the repository and Git as working memory.{ph1} Keep the reasoning "
"with the code. Git checkpoints let the next session continue after the "
"conversation ends."
msgstr ""
"{ph0}Utilisez le référentiel et Git comme mémoire de travail.{ph1} Gardez le"
" raisonnement avec le code. Les points de contrôle Git permettent à la "
"session suivante de continuer après la fin de la conversation."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:201
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Let evidence decide what you claim.{ph1} A confident explanation still "
"needs testing. “Unknown” is a valid answer when the evidence is incomplete."
msgstr ""
"{ph0}Laissez les preuves décider de ce que vous affirmez.{ph1} Une "
"explication confiante doit encore être testée. \"Inconnu\" est une réponse "
"valable lorsque la preuve est incomplète."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:206
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Test the oracle too.{ph1} Try cases it should reject. If it misses a "
"bug, revisit the earlier results that depended on it."
msgstr ""
"{ph0}Testez également la référence de vérification (oracle).{ph1} Essayez "
"les cas qu'il devrait rejeter. S'il manque un bogue, revoyez les résultats "
"antérieurs qui en dépendaient."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:211
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early days of RE's industrial revolution.{ph1} The "
"methods are still taking shape. There is plenty left to explore."
msgstr ""
"{ph0}Nous sommes aux premiers jours de la révolution industrielle de "
"RE.{ph1} Les méthodes sont encore en train de prendre forme. Il reste encore"
" beaucoup à explorer."
#: website/public/blog/touhou-reconstruction/index.html:223
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "How experience compounds"
msgstr "Comment l'expérience se compose"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:224
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Human direction{ph1} · Goal and acceptance criteria"
msgstr "{ph0}Direction humaine{ph1} * Objectif et critères d'acceptation"
#: website/public/blog/touhou-reconstruction/index.html:312
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Autonomy"
msgstr "Autonomie"
#: website/public/blog/touhou-reconstruction/index.html:313
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Agent"
msgstr "Agent"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:314
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Choose an experiment.{ph0}Propose a hypothesis."
msgstr "Choisissez une expérience.{ph0}Proposer une hypothèse."
#: website/public/blog/touhou-reconstruction/index.html:317
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Verification"
msgstr "Vérification"
#: website/public/blog/touhou-reconstruction/index.html:318
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Oracle"
msgstr "Référence de validation"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:319
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Test against a{ph0}concrete reference."
msgstr "Essai contre a{ph0}référence concrète."
#: website/public/blog/touhou-reconstruction/index.html:322
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Repository"
msgstr "Dépôt"
#: website/public/blog/touhou-reconstruction/index.html:323
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Working memory"
msgstr "Mémoire de travail"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:324
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Code, evidence,{ph0}checks and lessons."
msgstr "Code, preuves,{ph0}contrôles et leçons."
#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:326
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Mismatch{ph0}{ph1}Revise the hypothesis{ph2}"
msgstr "Inadéquation{ph0}{ph1}Réviser l'hypothèse{ph2}"
#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:329
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "A better{ph0}{ph1}starting point{ph2}"
msgstr "Un meilleur{ph0}{ph1}point de départ{ph2}"
#: website/public/blog/touhou-reconstruction/index.html:332
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reuse"
msgstr "Réutilisation"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:333
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Pass{ph1} · Keep the result and its evidence"
msgstr "{ph0}Passe{ph1} * Conservez le résultat et ses preuves"
#: website/public/blog/touhou-reconstruction/index.html:345
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Each project leaves the next with a better starting point. That includes "
"fixing the checks when we discover a gap."
msgstr ""
"Chaque projet laisse le suivant avec un meilleur point de départ. Cela "
"inclut la correction des chèques lorsque nous découvrons une lacune."
#: website/public/blog/touhou-reconstruction/index.html:352
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "In this article"
msgstr "Dans cet article"
#. {ph0}: <a href="#august">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:354
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}August 2026{ph1}"
msgstr "{ph0}Août 2026{ph1}"
#. {ph0}: <a href="#th08">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:355
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH08: the continuation{ph1}"
msgstr "{ph0} TH08: la suite{ph1}"
#. {ph0}: <a href="#different-approaches">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:356
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Two approaches{ph1}"
msgstr "{ph0}Deux approches{ph1}"
#. {ph0}: <a href="#th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:357
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH095: compounding{ph1}"
msgstr "{ph0} TH095: préparation combinée{ph1}"
#. {ph0}: <a href="#th04">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:358
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH04: across architectures{ph1}"
msgstr "{ph0} TH04: à travers les architectures{ph1}"
#. {ph0}: <a href="#semantic-reconstruction">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:359
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}From exact to readable{ph1}"
msgstr "{ph0}D'exact à lisible{ph1}"
#. {ph0}: <a href="#industrial-shift">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:362
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}The industrial shift{ph1}"
msgstr "{ph0}Le virage industriel{ph1}"
#. {ph0}: <a href="#possibilities">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:363
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}What becomes possible{ph1}"
msgstr "{ph0}Ce qui devient possible{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:368
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What changed in August 2026"
msgstr "Ce qui a changé en août 2026"
#: website/public/blog/touhou-reconstruction/index.html:369
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Before this work, I had done a lot of manual reverse engineering. I would "
"inspect a function until I had an explanation, then test that explanation "
"against the program. Getting further meant spending more of my own time on "
"the next function. It also meant keeping an increasingly large picture in my"
" head."
msgstr ""
"Avant ce travail, j'avais fait beaucoup de rétro-ingénierie manuelle. "
"J'inspectais une fonction jusqu'à ce que j'aie une explication, puis je "
"testais cette explication par rapport au programme. Aller plus loin "
"signifiait passer plus de temps sur la prochaine fonction. Cela signifiait "
"aussi garder une image de plus en plus grande dans ma tête."
#: website/public/blog/touhou-reconstruction/index.html:376
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Most of my RE work is on games. I reconstruct them so their behavior can be "
"understood and eventually carried into a port or a mod. That is the "
"experience behind this article. The method can be useful elsewhere, but each"
" field needs to establish what it can check against a reliable reference."
msgstr ""
"La majeure partie de mon travail concerne les jeux. Je les reconstruis pour "
"que leur comportement puisse être compris et éventuellement transposé dans "
"un port logiciel ou un mod. C'est l'expérience derrière cet article. La "
"méthode peut être utile ailleurs, mais chaque champ doit établir ce qu'il "
"peut vérifier par rapport à une référence fiable."
#: website/public/blog/touhou-reconstruction/index.html:383
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In August 2026, I started exploring agent-driven RE seriously. I wanted to "
"see how far an agent could get with access to the program and ordinary "
"development tools. Touhou reconstruction gave me a substantial project in "
"which to find out."
msgstr ""
"En août 2026, j'ai commencé à explorer sérieusement l'ER pilotée par les "
"agents. Je voulais voir jusqu'où un agent pouvait aller avec l'accès au "
"programme et aux outils de développement ordinaires. La reconstruction de "
"Touhou m'a donné un projet substantiel pour le découvrir."
#: website/public/blog/touhou-reconstruction/index.html:389
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The early progress was startling. An investigation could keep moving without"
" me choosing every individual step. A failed comparison might send the agent"
" to another caller. It could write a small diagnostic and use the result to "
"decide what to try next. Giving it that freedom made a difference: I could "
"spend more attention on the project's direction and on whether its checks "
"were trustworthy."
msgstr ""
"Les premiers progrès ont été surprenants. Une enquête pourrait continuer à "
"avancer sans que je choisisse chaque étape individuelle. Une comparaison "
"échouée peut envoyer l'agent à un autre appelant. Il pourrait écrire un "
"petit diagnostic et utiliser le résultat pour décider quoi essayer ensuite. "
"Lui donner cette liberté a fait la différence: je pouvais consacrer plus "
"d'attention à l'orientation du projet et à la fiabilité de ses "
"vérifications."
#: website/public/blog/touhou-reconstruction/index.html:398
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace got my attention first. Then I began wondering what would survive "
"beyond the current project. Would the next game benefit from everything we "
"had just learned?"
msgstr ""
"Le rythme a attiré mon attention en premier. Puis j'ai commencé à me "
"demander ce qui survivrait au-delà du projet actuel. Le prochain jeu "
"bénéficierait-il de tout ce que nous venions d'apprendre?"
#: website/public/blog/touhou-reconstruction/index.html:405
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH08: building on human work"
msgstr "TH08: s'appuyer sur le travail humain"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th08">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/GensokyoClub/th08" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:406
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08{ph1}, Imperishable Night, began as a continuation of "
"{ph2}GensokyoClub's reconstruction{ph3}. Their public source gave me a "
"substantial foundation. It came with knowledge of the build and a history of"
" contributions that I preserved in the continuation."
msgstr ""
"{ph0}TH08{ph1}, Nuit impérissable, a commencé comme une continuation de "
"{ph2}GensokyoClubreconstruction de{ph3}. Leur source publique m'a donné une "
"base substantielle. Il est venu avec la connaissance de la construction et "
"un historique des contributions que j'ai conservé dans la suite."
#: website/public/blog/touhou-reconstruction/index.html:415
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The imported history ends at the public 10 August checkpoint. My independent"
" continuation began on 13 August. By 19 August, the ledger recorded source "
"for all 1,107 identified game functions."
msgstr ""
"L'historique importé se termine au point de contrôle public du 10 août. Ma "
"continuation indépendante a commencé le 13 août. Le 19 août, le grand livre "
"enregistrait la source des 1 107 fonctions de jeu identifiées."
#: website/public/blog/touhou-reconstruction/index.html:420
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A playable Linux reconstruction port was committed on 24 August, roughly "
"eleven days after the continuation began. A Web edition followed. The native"
" Linux 64-bit release arrived on 30 August."
msgstr ""
"Un port de reconstruction jouable de Linux a été engagé le 24 août, environ "
"onze jours après le début de la continuation. Une édition Web a suivi. La "
"version native Linux 64 bits est arrivée le 30 août."
#: website/public/blog/touhou-reconstruction/index.html:425
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"What struck me was that the work had reached a program people could run. "
"Getting there required following problems beyond an individual function. "
"Even when two functions looked correct in isolation, they could accidentally"
" use separate copies of state that should have been shared."
msgstr ""
"Ce qui m'a frappé, c'est que le travail avait atteint un programme que les "
"gens pouvaient exécuter. Y arriver nécessitait de suivre des problèmes au-"
"delà d'une fonction individuelle. Même lorsque deux fonctions semblaient "
"correctes isolément, elles pouvaient accidentellement utiliser des copies "
"séparées de l'état qui auraient dû être partagées."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:432
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This made reference checks central to the work. I call them "
"{ph0}oracles{ph1}. A code comparison can tell us whether a reconstructed "
"function reproduces the original instructions. A runtime check can tell us "
"whether an exercised route reaches the expected state. The agent proposes an"
" explanation and tests it; a mismatch gives it something specific to "
"investigate."
msgstr ""
"Cela a fait des vérifications des références un élément central du travail. "
"Je les appelle {ph0}références de vérification (oracles){ph1}. Une "
"comparaison de code peut nous dire si une fonction reconstruite reproduit "
"les instructions d'origine. Une vérification d'exécution peut nous dire si "
"une route exercée atteint l'état attendu. L'agent propose une explication et"
" la teste; un décalage lui donne quelque chose de spécifique à étudier."
#: website/public/blog/touhou-reconstruction/index.html:440
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "An exact match with the wrong constant"
msgstr "Une correspondance exacte avec la mauvaise constante"
#: website/public/blog/touhou-reconstruction/index.html:441
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"An oracle is software someone wrote. TH08 gave me a clear reminder of how "
"much can depend on that software."
msgstr ""
"Une référence de vérification (oracle) est un logiciel que quelqu'un a "
"écrit. TH08 m'a rappelé clairement à quel point on peut dépendre de ce "
"logiciel."
#. {ph0}: <code>0.0</code>
#. {ph1}: <code>128.0</code>
#: website/public/blog/touhou-reconstruction/index.html:445
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In September, a bug reported by a downstream Switch port led back to item "
"auto-collection. The reconstructed source checked player power against "
"{ph0}. The original used {ph1}, the maximum-power threshold."
msgstr ""
"En septembre, un bogue signalé par un port de commutateur en aval a renvoyé "
"à la collecte automatique des éléments. La source reconstruite a vérifié la "
"puissance du joueur par rapport {ph0}. L'original utilisé {ph1}, le seuil de"
" puissance maximale."
#: website/public/blog/touhou-reconstruction/index.html:451
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Normal power is non-negative, so the reconstructed power check was "
"effectively always satisfied. Above the collection line, the game could "
"attract items without requiring maximum power. The other exceptions in the "
"condition were correct. This one constant changed the behavior."
msgstr ""
"La puissance normale n'est pas négative, de sorte que le contrôle de "
"puissance reconstruit était effectivement toujours satisfait. Au-dessus de "
"la ligne de collecte, le jeu pouvait attirer des objets sans nécessiter une "
"puissance maximale. Les autres exceptions à la condition étaient correctes. "
"Cette seule constante a changé le comportement."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:458
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Yet the function had already passed the exact comparison.{ph1}"
msgstr ""
"{ph0}Pourtant, la fonction avait déjà réussi la comparaison exacte.{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:464
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A rebuild can put a constant at a different address. The comparison tool "
"accounted for that by adjusting addresses in the compiled instructions "
"before comparing them with the original. But it never checked the floating-"
"point value stored at the referenced address."
msgstr ""
"Une reconstruction peut placer une constante à une adresse différente. "
"L'outil de comparaison a tenu compte de cela en ajustant les adresses dans "
"les instructions compilées avant de les comparer avec l'original. Mais il "
"n'a jamais vérifié la valeur à virgule flottante stockée à l'adresse "
"référencée."
#. {ph0}: <code>128.0</code>
#. {ph1}: <code>0.0</code>
#: website/public/blog/touhou-reconstruction/index.html:471
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That left a hole in the check. It could point the reconstructed instruction "
"at the original's {ph0} while the source still said {ph1}. The instruction "
"bytes matched. The source meant something different."
msgstr ""
"Cela a laissé un trou dans le chèque. Il pourrait pointer l'instruction "
"reconstruite vers l'original {ph0} alors que la source disait encore {ph1}. "
"Les octets d'instruction correspondent. La source signifiait quelque chose "
"de différent."
#. {ph0}: <a href="https://github.com/N0zoM1z0/th08/pull/11" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/th08/pull/13">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:477
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}2 September fix{ph1} corrected the source and made the comparison "
"check the referenced constant's actual bytes. A {ph2}wider audit{ph3} then "
"examined 1,548 floating-literal references. It found another twelve "
"incorrect references across five accepted functions."
msgstr ""
"Les {ph0}Correctif du 2 septembre{ph1} correction de la source et "
"vérification de la comparaison des octets réels de la constante référencée. "
"A {ph2}audit plus large{ph3} puis examiné 1 548 références constantes à "
"virgule flottante. Il a trouvé douze autres références incorrectes dans cinq"
" fonctions acceptées."
#: website/public/blog/touhou-reconstruction/index.html:488
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The comparison now checks every such floating literal. Its tests include "
"deliberately wrong values to make sure they are rejected. We also had to "
"revisit results that had passed the weaker check."
msgstr ""
"La comparaison vérifie maintenant chacune de ces constantes à virgule "
"flottante. Ses tests incluent des valeurs délibérément erronées pour "
"s'assurer qu'elles sont rejetées. Nous avons également dû revoir les "
"résultats qui avaient réussi le test le plus faible."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:493
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The oracle needed reconstructing too.{ph1} Repairing it was part of "
"repairing the game."
msgstr ""
"{ph0}La référence de vérification (oracle) devait également être "
"reconstruite.{ph1} La réparer faisait partie de la réparation du jeu."
#: website/public/blog/touhou-reconstruction/index.html:497
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That matters when the team is mostly one person working with agents. I "
"cannot personally inspect every line they produce, so much of my confidence "
"rests on their checks. A shared oracle's blind spot can affect many "
"investigations before I notice it. I have to understand what the checker "
"actually verifies and test it against cases that ought to fail."
msgstr ""
"C'est important lorsque l'équipe est principalement composée d'une seule "
"personne travaillant avec des agents. Je ne peux pas inspecter "
"personnellement chaque ligne qu'ils produisent, donc une grande partie de ma"
" confiance repose sur leurs contrôles. L'angle mort d'une référence de "
"vérification partagée (oracle) peut affecter de nombreuses enquêtes avant "
"que je ne m'en aperçoive. Je dois comprendre ce que le vérificateur vérifie "
"réellement et le tester par rapport aux cas qui devraient échouer."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:505
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"As the work continued, those checks became part of the repository. So did "
"the reasons for source changes and notes that let a later session pick up "
"where an earlier one stopped. {ph0}The repository was becoming the project's"
" working memory.{ph1}"
msgstr ""
"Au fur et à mesure que le travail se poursuivait, ces vérifications sont "
"devenues une partie du référentiel. Il en va de même pour les raisons des "
"changements de source et des notes qui permettent à une session ultérieure "
"de reprendre là où une session précédente s'est arrêtée. {ph0}Le référentiel"
" de code source devenait la mémoire de travail du projet.{ph1}"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:514
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}A successful batch gave us both recovered code and a better environment"
" for the next batch.{ph1}"
msgstr ""
"{ph0}Un lot réussi nous a donné à la fois du code récupéré et un meilleur "
"environnement pour le lot suivant.{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:522
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Two different ideas of reconstruction"
msgstr "Deux idées différentes de reconstruction"
#. {ph0}: <a
#. href="https://web.archive.org/web/20260909051514/https://github.com/GensokyoClub/th08#important-
#. notice" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:523
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"GensokyoClub's {ph0}public README{ph1} makes its disagreement with this kind"
" of work explicit. The notice announces that further development will happen"
" privately until completion. One passage reads:"
msgstr ""
"GensokyoClub's {ph0}LISEZ-MOI public{ph1} rend explicite son désaccord avec "
"ce genre de travail. L'avis annonce que d'autres développements auront lieu "
"en privé jusqu'à leur achèvement. Un passage se lit comme suit:"
#: website/public/blog/touhou-reconstruction/index.html:534
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The rise of grifters (AI decompilations and ports) in this space taking from"
" our work paints a bad image for future decompilation efforts…"
msgstr ""
"La montée en puissance des arnaqueurs (décompilations et ports d'IA) dans "
"cet espace, tirée de notre travail, donne une mauvaise image des futurs "
"efforts de décompilation…"
#: website/public/blog/touhou-reconstruction/index.html:540
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The notice also describes the psychological toll on the maintainers. Their "
"contribution policy excludes pull requests produced primarily with AI. They "
"have put their free time into difficult work, and that work helped make my "
"continuation possible. I respect the effort behind it. The disagreement I "
"want to discuss is about how reconstruction should proceed and how a "
"contribution should be judged."
msgstr ""
"L'avis décrit également les conséquences psychologiques pour les "
"responsables. Leur politique de contribution exclut les pull requests "
"produites principalement avec l'IA. Ils ont consacré leur temps libre à un "
"travail difficile, et ce travail a contribué à rendre ma continuation "
"possible. Je respecte l'effort derrière cela. Le désaccord dont je veux "
"discuter concerne la manière dont la reconstruction devrait se dérouler et "
"la manière dont une contribution devrait être jugée."
#: website/public/blog/touhou-reconstruction/index.html:549
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In the manual workflow I knew, developing an understanding of a function and"
" reconstructing it usually fell to the same person. A project relied heavily"
" on that person's expertise. Trust in the contributor mattered because so "
"much of the reasoning happened while they worked."
msgstr ""
"Dans le flux de travail manuel que je connaissais, développer une "
"compréhension d'une fonction et la reconstruire revenait généralement à la "
"même personne. Un projet reposait fortement sur l'expertise de cette "
"personne. La confiance dans le contributeur importait parce qu'une grande "
"partie du raisonnement se produisait pendant qu'ils travaillaient."
#: website/public/blog/touhou-reconstruction/index.html:556
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Existing projects already preserve knowledge in their source and build "
"tools. What changed for me was that an agent could use that knowledge to "
"pursue the next investigation on its own."
msgstr ""
"Les projets existants préservent déjà les connaissances dans leur source et "
"construisent des outils. Ce qui a changé pour moi, c'est qu'un agent pouvait"
" utiliser ces connaissances pour poursuivre seul la prochaine enquête."
#: website/public/blog/touhou-reconstruction/index.html:561
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In my continuation, I decide the objective and the standard for accepting a "
"result. The agent has broad freedom to investigate. Its proposed "
"reconstruction then has to survive the relevant checks. I want another "
"person to be able to examine why we chose an implementation, even if an "
"agent did most of the work."
msgstr ""
"Dans ma suite, je décide de l'objectif et de la norme pour accepter un "
"résultat. L'agent a une grande liberté pour enquêter. Sa reconstruction "
"proposée doit ensuite survivre aux vérifications pertinentes. Je veux qu'une"
" autre personne puisse examiner pourquoi nous avons choisi une "
"implémentation, même si un agent a fait la majeure partie du travail."
#: website/public/blog/touhou-reconstruction/index.html:568
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This can be a difficult transition. Years of careful work may become the "
"foundation for a continuation that moves much faster. That raises real "
"questions about credit. It also changes what maintainers need to know before"
" accepting a contribution."
msgstr ""
"Cela peut être une transition difficile. Des années de travail minutieux "
"peuvent devenir la base d'une continuation qui avance beaucoup plus vite. "
"Cela soulève de vraies questions sur le crédit. Cela change également ce que"
" les mainteneurs doivent savoir avant d'accepter une contribution."
#: website/public/blog/touhou-reconstruction/index.html:574
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy helps me think about this. In a craft, much of the "
"process depends on the skill of the person carrying it out. Machinery "
"changes where that skill is needed. Someone still has to design the process "
"and recognize when its output is wrong. Different communities can choose how"
" much of that change they want to take on."
msgstr ""
"L'analogie industrielle m'aide à y réfléchir. Dans un métier, une grande "
"partie du processus dépend de l'habileté de la personne qui l'exécute. Les "
"machines changent là où cette compétence est nécessaire. Quelqu'un doit "
"encore concevoir le processus et reconnaître quand sa sortie est erronée. "
"Différentes communautés peuvent choisir la part de ce changement qu'elles "
"souhaitent assumer."
#: website/public/blog/touhou-reconstruction/index.html:582
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"My choice is to continue openly, with the inherited work credited and its "
"history preserved. I want the new work to be reviewable. That gives us a way"
" to ask how far this approach can go and to learn from what goes wrong along"
" the way."
msgstr ""
"Mon choix est de continuer ouvertement, avec le travail hérité crédité et "
"son histoire préservée. Je veux que le nouveau travail soit révisable. Cela "
"nous donne un moyen de nous demander jusqu'où cette approche peut aller et "
"d'apprendre de ce qui ne va pas en cours de route."
#. {ph0}: <a
#. href="https://github.com/GensokyoClub/th08/blob/e874b98e210b3be1ed21c5e03d54b883eac5069c/README.md#important-
#. notice" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/GensokyoClub/th08/blob/f345c7dee07b849f2ff93a0029ab5ede126bf12c/CODE_OF_CONDUCT.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/README.md#credits-
#. and-provenance" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:588
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Source: GensokyoClub's {ph0}README notice{ph1}, checked on 10 October 2026, "
"and its {ph2}contribution policy{ph3}. The quotation is a shortened excerpt."
" TH08's {ph4}credits and provenance{ph5} record the continuation boundary."
msgstr ""
"Sources: GensokyoClub's {ph0}LISEZ-MOI l'avis{ph1}, vérifié le 10 octobre "
"2026, et son {ph2}politique de contribution{ph3}. La citation est un extrait"
" raccourci. TH08's {ph4}crédits et provenance{ph5} enregistrez la limite de "
"continuation."
#: website/public/blog/touhou-reconstruction/index.html:606
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH095: experience starts compounding"
msgstr "TH095: l'expérience commence à s'accumuler"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:607
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095{ph1}, Shoot the Bullet, made the value of that experience much "
"easier to see. Its repository began on 29 August with zero confirmed game "
"functions in the ledger. We still had to learn the game. But we already knew"
" much more about how to begin a reconstruction and how to keep it moving."
msgstr ""
"{ph0}TH095{ph1}, Tirez sur la balle, a rendu la valeur de cette expérience "
"beaucoup plus facile à voir. Son dépôt a débuté le 29 août avec zéro "
"fonction de jeu confirmée dans le grand livre. Nous devions encore apprendre"
" le jeu. Mais nous en savions déjà beaucoup plus sur la façon de commencer "
"une reconstruction et de la faire avancer."
#: website/public/blog/touhou-reconstruction/index.html:615
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"By 7 September, all 697 identified game functions had source. By 8 "
"September, 696 had been accepted as exact comparisons. The whole program "
"linked on 9 September. The Windows i386 reconstruction was marked playable "
"on 10 September, about twelve days after initialization."
msgstr ""
"Au 7 septembre, les 697 fonctions de jeu identifiées avaient une source. Au "
"8 septembre, 696 avaient été acceptées comme comparaisons exactes. "
"L'ensemble du programme s'est lié le 9 septembre. La reconstruction Windows "
"i386 a été marquée jouable le 10 septembre, environ douze jours après "
"l'initialisation."
#: website/public/blog/touhou-reconstruction/index.html:622
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I found this more exciting than the first project's speed. A fresh target "
"could benefit from work done on another game. The experience was already "
"present in the tools and in the way the project was organized."
msgstr ""
"J'ai trouvé cela plus excitant que la vitesse du premier projet. Une "
"nouvelle cible pourrait bénéficier du travail effectué sur un autre jeu. "
"L'expérience était déjà présente dans les outils et dans la manière dont le "
"projet était organisé."
#: website/public/blog/touhou-reconstruction/index.html:628
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For example, TH08 had taught us to pay attention to the assembled program "
"early. If several recovered functions depend on the same state, their "
"isolated comparisons leave an important question open. We need to see them "
"working together. That lesson helped shape how we approached TH095's whole-"
"program build."
msgstr ""
"Par exemple, TH08 nous avait appris à prêter attention au programme assemblé"
" très tôt. Si plusieurs fonctions récupérées dépendent du même état, leurs "
"comparaisons isolées laissent une question importante ouverte. Nous devons "
"les voir travailler ensemble. Cette leçon a aidé à façonner la façon dont "
"nous avons abordé la construction de l'ensemble du programme de TH095."
#: website/public/blog/touhou-reconstruction/index.html:635
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A lesson that stays in my head is useful while I am there. Once it becomes a"
" check that another session can run, it can keep helping after I have moved "
"on. The next agent can use the result without repeating the investigation "
"that led to it."
msgstr ""
"Une leçon qui reste dans ma tête est utile pendant que j'y suis. Une fois "
"que cela devient une vérification qu'une autre session peut s'exécuter, cela"
" peut continuer à m'aider après que je sois passé à autre chose. L'agent "
"suivant peut utiliser le résultat sans répéter l'enquête qui y a conduit."
#: website/public/blog/touhou-reconstruction/index.html:641
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The floating-literal bug belongs in that memory too. It explains why "
"checking a reference also requires checking the data behind it. Keeping that"
" correction with the code helps later projects avoid inheriting the old "
"check's blind spot."
msgstr ""
"Le bogue de la constante à virgule flottante appartient également à cette "
"mémoire. Cela explique pourquoi la vérification d'une référence nécessite "
"également de vérifier les données qui la sous-tendent. Conserver cette "
"correction avec le code aide les projets ultérieurs à éviter d'hériter de "
"l'angle mort de l'ancien chèque."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:647
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The method becomes part of the starting material for the next "
"game.{ph1} We can spend more of the next project's effort on what is "
"actually new about its target."
msgstr ""
"{ph0}La méthode devient une partie du matériel de départ pour le prochain "
"match.{ph1} Nous pouvons consacrer plus d'efforts au prochain projet sur ce "
"qui est réellement nouveau à propos de sa cible."
#: website/public/blog/touhou-reconstruction/index.html:655
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The same benefit is available to people joining later. They can inspect a "
"decision and rerun its check before continuing the work. They do not have to"
" reconstruct the entire project's history to find out why the source looks "
"the way it does."
msgstr ""
"Le même avantage est disponible pour les personnes rejoignant plus tard. Ils"
" peuvent inspecter une décision et réexécuter sa vérification avant de "
"poursuivre le travail. Ils n'ont pas à reconstituer l'historique complet du "
"projet pour savoir pourquoi la source ressemble à ce qu'elle est."
#: website/public/blog/touhou-reconstruction/index.html:663
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH04: the workflow survives a different architecture"
msgstr "TH04: le flux de travail survit à une architecture différente"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th04">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/nmlgc/ReC98">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:664
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04{ph1}, Lotus Land Story, took this work into the PC-98 DOS era. The"
" target was now a 16-bit environment with four cooperating programs. "
"Understanding its hardware behavior required different evidence from the "
"Windows games. Existing {ph2}ReC98 work{ph3} gave us valuable knowledge and "
"source material here too."
msgstr ""
"{ph0}TH04{ph1}, Histoire de Lotus Land, a pris ce travail dans le PC-98 Ère "
"DOS. La cible était maintenant un environnement 16 bits avec quatre "
"programmes coopérants. Comprendre son comportement matériel nécessitait des "
"preuves différentes de celles du Windows jeux. Existant {ph2}Travail "
"ReC98{ph3} nous a donné des connaissances précieuses et du matériel source "
"ici aussi."
#: website/public/blog/touhou-reconstruction/index.html:673
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The DOS reconstruction is now working. In my manual testing, I played "
"complete Normal routes through their endings and checked saves. The current "
"work is a native 64-bit port. Establishing a working DOS version first gives"
" that port a reference."
msgstr ""
"La reconstruction DOS fonctionne maintenant. Lors de mes tests manuels, j'ai"
" joué des itinéraires normaux complets jusqu'à leurs fins et vérifié les "
"sauvegardes. Le travail actuel est un port natif 64 bits. L'établissement "
"d'une version DOS fonctionnelle donne d'abord à ce port une référence."
#: website/public/blog/touhou-reconstruction/index.html:679
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The architecture changed what we needed to investigate. It also changed the "
"compiler and runtime against which we checked our work. But the agent could "
"still follow a question through to a result and let that result guide the "
"next experiment."
msgstr ""
"L'architecture a changé ce que nous devions étudier. Cela a également changé"
" le compilateur et le moteur d'exécution par rapport auxquels nous avons "
"vérifié notre travail. Mais l'agent pourrait toujours suivre une question "
"jusqu'à un résultat et laisser ce résultat guider l'expérience suivante."
#: website/public/blog/touhou-reconstruction/index.html:685
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Consider the transition from gameplay to an ending. We need to know what "
"state carries across that boundary and which program is responsible for it. "
"That is something we can investigate against the DOS product. Once the "
"evidence and checks are available, an agent can work through the question "
"much as it did on a Windows title."
msgstr ""
"Considérez la transition du gameplay à une fin. Nous devons savoir quel État"
" franchit cette frontière et quel programme en est responsable. C'est "
"quelque chose que nous pouvons étudier contre le produit DOS. Une fois que "
"les preuves et les vérifications sont disponibles, un agent peut résoudre la"
" question autant qu'il l'a fait sur un titre Windows."
#: website/public/blog/touhou-reconstruction/index.html:693
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This is why TH04 matters to the argument. A substantial platform change did "
"not force us to start over with a new way of working. The architecture "
"defined the problem; the workflow still gave us a way to solve it."
msgstr ""
"C'est pourquoi TH04 est important pour l'argument. Un changement substantiel"
" de plateforme ne nous a pas obligés à recommencer avec une nouvelle façon "
"de travailler. L'architecture définissait le problème; le flux de travail "
"nous donnait encore un moyen de le résoudre."
#: website/public/blog/touhou-reconstruction/index.html:699
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For the 64-bit port, we can now examine the new implementation against "
"behavior already recovered on DOS. The knowledge from reconstruction gives "
"the port something to build on."
msgstr ""
"Pour le port 64 bits, nous pouvons maintenant examiner la nouvelle "
"implémentation par rapport au comportement déjà récupéré sur DOS. Les "
"connaissances issues de la reconstruction donnent au port de quoi s'appuyer."
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/th04/tree/port/modern-64" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:704
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Project state as of 10 October 2026: {ph0}DOS reconstruction and manual "
"testing{ph1} · {ph2}64-bit port{ph3}. The port remains in development."
msgstr ""
"État du projet au 10 octobre 2026: {ph0}Reconstruction DOS et tests "
"manuels{ph1} · {ph2}port 64 bits{ph3}. Le port reste en développement."
#: website/public/blog/touhou-reconstruction/index.html:717
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "From exact code to readable code"
msgstr "Du code exact au code lisible"
#: website/public/blog/touhou-reconstruction/index.html:718
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Once a reconstruction works, I want someone else to be able to understand "
"it."
msgstr ""
"Une fois qu'une reconstruction fonctionne, je veux que quelqu'un d'autre "
"puisse la comprendre."
#: website/public/blog/touhou-reconstruction/index.html:722
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"To me, assembly and raw offsets can feel like old friends. I realise this is"
" a slightly unusual definition of “readable.” Most people would prefer to "
"follow the game's logic without keeping the executable's memory layout in "
"their head."
msgstr ""
"Pour moi, l'assemblage et les décalages bruts peuvent ressembler à de vieux "
"amis. Je me rends compte que c'est une définition un peu inhabituelle de "
"“lisible.\"La plupart des gens préféreraient suivre la logique du jeu sans "
"garder en tête la disposition de la mémoire de l'exécutable."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:728
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is where {ph0}semantic reconstruction{ph1} comes in. A recovered field "
"may still be known mainly by its offset. We follow how the game uses it "
"until we can explain its role. Then we can give it a meaningful name and a "
"type that fits the evidence. We keep the reasoning with the source so the "
"next person can see where that interpretation came from."
msgstr ""
"C'est là {ph0}reconstruction sémantique{ph1} entre. Un champ récupéré peut "
"encore être connu principalement par son décalage. Nous suivons comment le "
"jeu l'utilise jusqu'à ce que nous puissions expliquer son rôle. Ensuite, "
"nous pouvons lui donner un nom significatif et un type qui correspond aux "
"preuves. Nous gardons le raisonnement avec la source afin que la personne "
"suivante puisse voir d'où vient cette interprétation."
#: website/public/blog/touhou-reconstruction/index.html:736
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This becomes especially important for a port. An absolute address tells me "
"where something lived in the old executable. It gives a 64-bit "
"implementation little help in deciding which object should own that state. "
"To move the behavior safely, we need to recover the relationship behind the "
"old memory access."
msgstr ""
"Cela devient particulièrement important pour un port logiciel. Une adresse "
"absolue me dit où quelque chose vivait dans l'ancien exécutable. Cela donne "
"une implémentation 64 bits peu d'aide pour décider quel objet doit posséder "
"cet état. Pour déplacer le comportement en toute sécurité, nous devons "
"récupérer la relation derrière l'ancien accès mémoire."
#: website/public/blog/touhou-reconstruction/index.html:743
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The order I now use is:"
msgstr "L'ordre que j'utilise maintenant est:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:745
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Recover an exact baseline.{ph1} Compile the reconstructed pieces with "
"the historical compiler. Compare the relevant code and data with the "
"original executable. Record unresolved differences so the next phase has a "
"clear starting point."
msgstr ""
"{ph0}Récupérez une ligne de base exacte.{ph1} Compilez les pièces "
"reconstruites avec le compilateur historique. Comparez le code et les "
"données pertinents avec l'exécutable d'origine. Enregistrez les différences "
"non résolues afin que la phase suivante ait un point de départ clair."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:752
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Build and play it on the original platform.{ph1} Link those pieces into"
" the real program using the original architecture and compiler. Exercise "
"important gameplay paths. This is where we can find problems with shared "
"state or initialization that an isolated function comparison missed."
msgstr ""
"{ph0}Construisez-le et jouez-le sur la plate-forme d'origine.{ph1} Reliez "
"ces éléments au programme réel en utilisant l'architecture et le compilateur"
" d'origine. Exercez des chemins de jeu importants. C'est là que nous pouvons"
" trouver des problèmes d'état partagé ou d'initialisation qu'une comparaison"
" de fonction isolée a manqués."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:759
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Reconstruct the semantics against both references.{ph1} Take one "
"coherent part of the game at a time and establish what its recovered source "
"means. Improve its representation while preserving the exact comparisons and"
" the playable historical build."
msgstr ""
"{ph0}Reconstruisez la sémantique par rapport aux deux références.{ph1} "
"Prenez une partie cohérente du jeu à la fois et établissez ce que signifie "
"sa source récupérée. Améliorez sa représentation tout en préservant les "
"comparaisons exactes et la construction historique jouable."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:768
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Make the modern port.{ph1} Move the established behavior into the new "
"environment, such as a native 64-bit build. The reconstructed original-"
"platform game remains a reference for comparing how the port behaves."
msgstr ""
"{ph0}Faire le port moderne.{ph1} Déplacez le comportement établi dans le "
"nouvel environnement, tel qu'une version native 64 bits. Le jeu de "
"plateforme original reconstruit reste une référence pour comparer le "
"comportement du port."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:775
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The playable build from the second stage becomes a {ph0}second oracle{ph1} "
"during the third. The first oracle checks whether our changed source still "
"reproduces the relevant original code and data. The second checks that the "
"reconstructed program still builds and behaves correctly along the paths we "
"exercise."
msgstr ""
"La construction jouable de la deuxième étape devient un {ph0}deuxième "
"référence de vérification (oracle){ph1} pendant la troisième. La première "
"référence de vérification (oracle) vérifie si notre source modifiée "
"reproduit toujours le code et les données d'origine pertinents. La seconde "
"vérifie que le programme reconstruit se construit toujours et se comporte "
"correctement le long des chemins que nous exerçons."
#: website/public/blog/touhou-reconstruction/index.html:783
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"They catch different mistakes. A type change can alter the generated "
"instructions. An ownership change can leave two parts of the game using "
"different copies of state. Keeping both checks available gives the agent a "
"concrete failure to investigate before carrying a refactor further."
msgstr ""
"Ils attrapent différentes erreurs. Un changement de type peut modifier les "
"instructions générées. Un changement de propriétaire peut laisser deux "
"parties du jeu utilisant des copies d'état différentes. Garder les deux "
"vérifications disponibles donne à l'agent un échec concret à enquêter avant "
"de poursuivre un refactor."
#: website/public/blog/touhou-reconstruction/index.html:790
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A name needs evidence of its own. An exact comparison cannot tell us whether"
" a field really means “invulnerability time.” We have to establish that from"
" how the game writes and uses it. If the meaning remains uncertain, a "
"neutral name is more helpful to the next reader than a confident guess."
msgstr ""
"Un nom a besoin de preuves qui lui sont propres. Une comparaison exacte ne "
"peut pas nous dire si un champ signifie vraiment \"temps "
"d'invulnérabilité\".\"Nous devons établir cela à partir de la façon dont le "
"jeu l'écrit et l'utilise. Si la signification reste incertaine, un nom "
"neutre est plus utile au prochain lecteur qu'une supposition confiante."
#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:797
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"We learned this order through the projects. TH08 already had playable ports "
"before some of its later historical-platform audits. That made certain "
"defects harder to see. The {ph0}Factory's current workflow{ph1} puts the "
"original-platform build first, so semantic work can use it as a reference "
"before porting begins."
msgstr ""
"Nous avons appris cet ordre à travers les projets. TH08 avait déjà des "
"ports jouables avant certains de ses audits ultérieurs de plate-forme "
"historique. Cela rendait certains défauts plus difficiles à voir. Les "
"{ph0}Flux de travail actuel de l'usine{ph1} place la construction de la "
"plate-forme d'origine en premier, de sorte que le travail sémantique puisse "
"l'utiliser comme référence avant le début du portage."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:808
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Exact reconstruction gives us a reference. Semantic reconstruction "
"makes the recovered knowledge usable.{ph1} A port can then build on both."
msgstr ""
"{ph0}La reconstruction exacte nous donne une référence. La reconstruction "
"sémantique rend les connaissances récupérées utilisables.{ph1} Un port peut "
"alors s'appuyer sur les deux."
#: website/public/blog/touhou-reconstruction/index.html:817
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What makes this an industrial shift"
msgstr "Qu'est-ce qui en fait un changement industriel"
#: website/public/blog/touhou-reconstruction/index.html:818
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"These projects changed where I spent my attention. Once agents could carry "
"much of an investigation forward, improving their working environment became"
" one of the most useful things I could do. A better tool could help with "
"every later function that needed it."
msgstr ""
"Ces projets ont changé où j'ai passé mon attention. Une fois que les agents "
"ont pu mener une grande partie de l'enquête, l'amélioration de leur "
"environnement de travail est devenue l'une des choses les plus utiles que je"
" pouvais faire. Un meilleur outil pourrait aider avec chaque fonction "
"ultérieure qui en avait besoin."
#: website/public/blog/touhou-reconstruction/index.html:825
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Autonomy matters here. The useful next step often becomes clear only after a"
" failed experiment. An agent needs enough freedom to follow that result "
"somewhere unexpected. If it has to wait for me to prescribe each step, much "
"of the work remains tied to my attention."
msgstr ""
"L'autonomie compte ici. L'étape suivante utile ne devient souvent claire "
"qu'après une expérience ratée. Un agent a besoin de suffisamment de liberté "
"pour suivre ce résultat dans un endroit inattendu. S'il doit attendre que je"
" prescrive chaque étape, une grande partie du travail reste liée à mon "
"attention."
#: website/public/blog/touhou-reconstruction/index.html:832
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I expect the agent to make wrong hypotheses. What matters is whether we can "
"test them and learn from the result. A failed check should help it "
"understand the mistake well enough to try again. I still have to decide "
"whether the accumulated evidence supports a project milestone."
msgstr ""
"Je m'attends à ce que l'agent fasse de fausses hypothèses. Ce qui compte, "
"c'est de savoir si nous pouvons les tester et apprendre du résultat. Une "
"vérification échouée devrait l'aider à comprendre suffisamment bien l'erreur"
" pour réessayer. Je dois encore décider si les preuves accumulées "
"soutiennent une étape importante du projet."
#: website/public/blog/touhou-reconstruction/index.html:839
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"REA gives the agent access to analysis tools. A question about a function's "
"caller can lead straight into inspecting that caller. The reconstruction "
"project supplies the compiler and its own reference checks. The agent can "
"use those to test the source it proposes and see where its explanation holds"
" up."
msgstr ""
"REA donne à l'agent l'accès aux outils d'analyse. Une question sur "
"l'appelant d'une fonction peut conduire directement à l'inspection de cet "
"appelant. Le projet de reconstruction fournit le compilateur et ses propres "
"vérifications de références. L'agent peut les utiliser pour tester la source"
" qu'il propose et voir où son explication tient la route."
#: website/public/blog/touhou-reconstruction/index.html:846
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The TH08 bug shows why those checks deserve engineering attention of their "
"own. When the same comparison is used across hundreds of functions, a gap in"
" it can spread much further than a mistake in one implementation. Testing "
"the checker improves the feedback available to all that later work."
msgstr ""
"Le bogue TH08 montre pourquoi ces vérifications méritent leur propre "
"attention technique. Lorsque la même comparaison est utilisée sur des "
"centaines de fonctions, une lacune informatique peut se propager beaucoup "
"plus loin qu'une erreur dans une implémentation. Tester le vérificateur "
"améliore les commentaires disponibles pour tous ces travaux ultérieurs."
#. {ph0}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:853
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy has a useful historical example here. Boulton and "
"Watt introduced a {ph0}steam-engine indicator in 1796{ph1} to help adjust "
"engine valves. A recording version traced pressure through the piston "
"stroke. It made the engine's internal behavior available for inspection. Our"
" comparison tools serve a similar purpose: they let us examine what the "
"machinery is doing while we improve it."
msgstr ""
"L'analogie industrielle a ici un exemple historique utile. Boulton et Watt "
"ont introduit un {ph0}indicateur de machine à vapeur en 1796{ph1} pour aider"
" à régler les soupapes du moteur. Une version d'enregistrement a tracé la "
"pression à travers la course du piston. Il a rendu le comportement interne "
"du moteur disponible pour inspection. Nos outils de comparaison ont un "
"objectif similaire: ils nous permettent d'examiner ce que fait la machinerie"
" pendant que nous l'améliorons."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:866
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early stages of this industrial shift.{ph1} Much of the "
"infrastructure is still immature. Agents can move faster than our checks "
"were designed to support, so the process has to develop alongside them. When"
" we find a defect in a shared tool, we have to repair it and revisit the "
"results it affected. The next project can then inherit a stronger tool."
msgstr ""
"{ph0}Nous en sommes aux premiers stades de ce virage industriel.{ph1} Une "
"grande partie de l'infrastructure est encore immature. Les agents peuvent se"
" déplacer plus rapidement que ce que nos contrôles ont été conçus pour "
"prendre en charge, le processus doit donc se développer à leurs côtés. "
"Lorsque nous trouvons un défaut dans un outil partagé, nous devons le "
"réparer et revoir les résultats qu'il a affectés. Le projet suivant peut "
"alors hériter d'un outil plus puissant."
#: website/public/blog/touhou-reconstruction/index.html:876
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"There is also a practical limit to any one conversation. It will end before "
"a large reconstruction is finished. The repository has to make it possible "
"for another session to continue without losing the reason for the last "
"decision."
msgstr ""
"Il y a aussi une limite pratique à toute conversation. Il se terminera avant"
" qu'une grande reconstruction ne soit terminée. Le dépôt de code source doit"
" permettre à une autre session de continuer sans perdre la raison de la "
"dernière décision."
#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-factory"
#. >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:882
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}Touhou Reconstruction Factory{ph1} grew out of that need. It gives "
"projects a shared way to carry their checks and lessons forward. Work on one"
" game can improve the starting conditions for another."
msgstr ""
"Les {ph0}Usine de Reconstruction de Touhou{ph1} est né de ce besoin. Cela "
"donne aux projets un moyen partagé de faire avancer leurs vérifications et "
"leurs leçons. Travailler sur un jeu peut améliorer les conditions de départ "
"d'un autre."
#: website/public/blog/touhou-reconstruction/index.html:892
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is what makes the industrial analogy meaningful to me. Experience "
"starts becoming part of tools that others can use. Improving those tools "
"changes how much the next person—or the next agent—can get done."
msgstr ""
"C'est ce qui rend l'analogie industrielle significative pour moi. "
"L'expérience commence à faire partie des outils que d'autres peuvent "
"utiliser. L'amélioration de ces outils change ce que la personne suivante—ou"
" l'agent suivant—peut accomplir."
#: website/public/blog/touhou-reconstruction/index.html:900
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The projects we can now consider"
msgstr "Les projets que nous pouvons maintenant envisager"
#: website/public/blog/touhou-reconstruction/index.html:901
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace matters because it changes the decision to begin. A game could be "
"fascinating to reverse engineer and still demand more of my own attention "
"than I could realistically give it. Many projects would stay ideas."
msgstr ""
"Le rythme est important car il change la décision de commencer. Un jeu "
"pourrait être fascinant à désosser et exiger encore plus de ma propre "
"attention que je ne pourrais raisonnablement lui accorder. De nombreux "
"projets resteraient des idées."
#: website/public/blog/touhou-reconstruction/index.html:907
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Now I can see a way to keep such a project moving through repeated "
"investigations. Getting a working reconstruction makes a port more "
"practical. Recovering readable semantics makes it easier for someone else to"
" explore a mod. The effort put into understanding the game can keep paying "
"off after the first version runs."
msgstr ""
"Maintenant, je peux voir un moyen de faire avancer un tel projet à travers "
"des enquêtes répétées. Obtenir une reconstruction fonctionnelle rend un "
"portage logiciel plus pratique. La récupération d'une sémantique lisible "
"permet à quelqu'un d'autre d'explorer plus facilement un mod. Les efforts "
"déployés pour comprendre le jeu peuvent continuer à porter leurs fruits "
"après l'exécution de la première version."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:914
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I now look at an unfamiliar program and ask: {ph0}what access, feedback and "
"accumulated knowledge would let an agent work on this reliably?{ph1}"
msgstr ""
"Je regarde maintenant un programme inconnu et demande: {ph0}quels accès, "
"commentaires et connaissances accumulés permettraient à un agent de "
"travailler de manière fiable sur ce sujet?{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:921
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That question makes me consider projects I would previously have left alone."
" Each one can improve the way we approach the next. I want to keep exploring"
" how far that can take us."
msgstr ""
"Cette question me fait envisager des projets que j'aurais auparavant laissés"
" seuls. Chacun peut améliorer la façon dont nous abordons le suivant. Je "
"veux continuer à explorer jusqu'où cela peut nous mener."
#: website/public/blog/touhou-reconstruction/index.html:929
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Project milestones and sources"
msgstr "Jalons et sources du projet"
#: website/public/blog/touhou-reconstruction/index.html:930
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The dates describe recorded project checkpoints, checked against public "
"GitHub history on 10 October 2026. Elapsed time is calendar time between "
"commits. Source presence, exact comparisons, a build and a runtime result "
"each name a different milestone."
msgstr ""
"Les dates décrivent les points de contrôle du projet enregistrés, vérifiés "
"par rapport à l'historique public de GitHub le 10 octobre 2026. Le temps "
"écoulé est le temps calendaire entre les validations. La présence de la "
"source, les comparaisons exactes, une construction et un résultat "
"d'exécution nomment chacun un jalon différent."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/001bf3e9c91cc35b79c7a0e36b3565b86f494362"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/15caba73df6735fc44eac4783bc61b8d098ea830/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/da07b21c8cb63230142b0a66228d6aac66555f3f"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/529eb1a3afa05ae36467731eaccb12e3e50e132f"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th08/releases/tag/v0.2.0-linux-64bit" >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:938
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08:{ph1} {ph2}13 August continuation{ph3}, {ph4}19 August source "
"ledger{ph5}, {ph6}24 August Linux port{ph7}, {ph8}26 August Web "
"edition{ph9}, and {ph10}30 August 64-bit Linux release{ph11}."
msgstr ""
"{ph0}TH08:{ph1} {ph2}13 Août continuation{ph3}, {ph4}19 Août grand livre des"
" sources{ph5}, {ph6}24 Août Linux portuaire{ph7}, {ph8}Édition Web du 26 "
"août{ph9}, et {ph10}30 Août 64 bits Linux libération{ph11}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/8c31e6f892d945423b7f7b439747a2bd915f82d8/docs/PROGRESS.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/0fa857fb2b2ec6237732e4d6be8d0a28069c9330/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/74baddfccb712d1311a4d6e7487a63cd1100452e/docs/PROGRESS.md"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/33d46a0ee48f37060d973125a1a7632a40f8d998"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/3442dcf29d9e0b5bef384a49bd0c9ad32a711826/docs/WHOLE_BUILD_TODO.md"
#. >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:961
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095:{ph1} {ph2}29 August initial ledger{ph3}, {ph4}7 September source"
" ledger{ph5}, {ph6}8 September comparisons{ph7}, {ph8}9 September "
"linkage{ph9}, and {ph10}10 September playable-build record{ph11}."
msgstr ""
"{ph0}TH095:{ph1} {ph2}Grand livre initial du 29 août{ph3}, {ph4}7 Septembre "
"grand livre des sources{ph5}, {ph6}Comparaisons du 8 septembre{ph7}, "
"{ph8}Liaison du 9 septembre{ph9}, et {ph10}10 Septembre jouable-record de "
"construction{ph11}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:984
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04:{ph1} {ph2}10 October handoff{ph3} records the working DOS "
"reconstruction, the maintainer's complete Normal-route testing and the "
"current 64-bit phase."
msgstr ""
"{ph0}TH04:{ph1} {ph2}Transfert du 10 octobre{ph3} enregistre la "
"reconstruction DOS de travail, les tests complets de la route normale du "
"mainteneur et la phase 64 bits actuelle."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a href="https://github.com/N0zoM1z0/th08/issues/10" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/7148a76ba224742677895c7160807a68897957d5"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph7}: </a >
#: website/public/blog/touhou-reconstruction/index.html:993
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08 oracle correction:{ph1} {ph2}the reported auto-collection "
"bug{ph3}, {ph4}the source and comparison fix{ph5}, and {ph6}the full "
"floating-literal audit{ph7}."
msgstr ""
"{ph0}TH08 correction d'oracle:{ph1} {ph2}le bogue de collecte automatique "
"signalé{ph3}, {ph4}le correctif de source et de comparaison{ph5}, et "
"{ph6}l'audit littéral flottant complet{ph7}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/docs/SEMANTIC_PLAYBOOK.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1007
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Semantic reconstruction:{ph1} {ph2}TH08's readability playbook{ph3} and"
" {ph4}the Factory's phase order and two validation paths{ph5}."
msgstr ""
"{ph0}Reconstruction sémantique:{ph1} {ph2} Manuel de lisibilité du TH08{ph3}"
" et {ph4}l'ordre des phases de l'usine et deux chemins de validation{ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1019
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Industrial history:{ph1} {ph2}the Science Museum Group's steam-engine "
"indicator record{ph3} describes the 1796 introduction and the pressure-"
"recording mechanism."
msgstr ""
"{ph0}Histoire industrielle:{ph1} {ph2}record d'indicateur de machine à "
"vapeur du Groupe du Musée des sciences{ph3} décrit l'introduction de 1796 et"
" le mécanisme d'enregistrement de la pression."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/agent-
#. autonomy.md" >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/knowledge-
#. base.md" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1028
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Method:{ph1} the Factory's {ph2}agent autonomy{ph3} and {ph4}cross-game"
" knowledge{ph5} documents retain the working principles and lessons."
msgstr ""
"{ph0}Méthode:{ph1} l'usine {ph2}autonomie des agents{ph3} et "
"{ph4}connaissance du jeu croisé{ph5} les documents conservent les principes "
"de travail et les leçons."
#. {ph0}: <a class="text-link" href="../">
#. {ph1}: </a>
#. {ph2}: <a class="text-link" href="../../showcase/th04/" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1043
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}More articles{ph1} · {ph2}Explore a TH04 investigation{ph3}"
msgstr ""
"{ph0}Plus d'articles{ph1} · {ph2}Explorez une enquête sur le TH04{ph3}"
#: website/public/blog/touhou-reconstruction/index.html:6
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reverse Engineering’s Industrial Revolution — REA"
msgstr "La Révolution industrielle de la Rétro-Ingénierie-REA"
#: website/public/blog/touhou-reconstruction/index.html:7
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"N0zoM1z0 reflects on manual reverse engineering, Touhou reconstruction with "
"AI agents, and how knowledge compounds across TH08, TH095 and PC-98 TH04."
msgstr ""
"N0zoM1z0 réfléchit à la rétro-ingénierie manuelle, à la reconstruction de "
"Touhou avec des agents d'IA et à la manière dont les connaissances se "
"combinent entre TH08, TH095 et PC-98 TH04 ."
#: website/public/blog/touhou-reconstruction/index.html:337
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Experience carried between projects"
msgstr "Expérience portée entre les projets"
#: website/public/blog/touhou-reconstruction/index.html:351
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/blog/touhou-reconstruction/index.html:366
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Touhou reconstruction essay"
msgstr "Essai de reconstruction de Touhou"
#: website/public/blog/touhou-reconstruction/index.html:1067
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/examples/dino-lab/index.html:100
msgctxt "page:examples/dino-lab/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/examples/dino-lab/index.html:182
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Home{ph1}{ph2}/{ph3}Dinosaur speed lab"
msgstr "{ph0}Accueil{ph1}{ph2}/{ph3}Laboratoire de vitesse des dinosaures"
#: website/public/examples/dino-lab/index.html:185
msgctxt "page:examples/dino-lab/index.html"
msgid "Inspect → rebuild → change"
msgstr "Inspecter → reconstruire → modifier"
#: website/public/examples/dino-lab/index.html:186
msgctxt "page:examples/dino-lab/index.html"
msgid "Rebuild the dinosaur’s speed rule."
msgstr "Reconstruisez la règle de vitesse du dinosaure."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <mark class="prose-highlight">
#. {ph3}: </mark>
#: website/public/examples/dino-lab/index.html:187
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"To recreate the game’s acceleration, first find the rule that controls its "
"speed. {ph0}REA returned the running script;{ph1} we used its rule to build "
"this mini-game with {ph2}adjustable speed.{ph3}"
msgstr ""
"Pour recréer l'accélération du jeu, trouvez d'abord la règle qui contrôle sa"
" vitesse. {ph0} REA a renvoyé le script en cours d'exécution;{ph1} nous "
"avons utilisé sa règle pour construire ce mini-jeu avec {ph2}vitesse "
"réglable.{ph3}"
#: website/public/examples/dino-lab/index.html:196
#: website/public/examples/dino-lab/index.html:195
msgctxt "page:examples/dino-lab/index.html"
msgid "On this page"
msgstr "Sur cette page"
#. {ph0}: <a href="#play">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:198
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Play and change the speed{ph1}"
msgstr "{ph0}Jouez et changez la vitesse{ph1}"
#. {ph0}: <a href="#rule">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:199
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Read the recovered rule{ph1}"
msgstr "{ph0}Lire la règle récupérée{ph1}"
#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:200
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}Vérifiez la reconstruction{ph1}"
#. {ph0}: <a href="#inspect">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:201
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Try the analysis{ph1}"
msgstr "{ph0}Essayez l'analyse{ph1}"
#: website/public/examples/dino-lab/index.html:206
msgctxt "page:examples/dino-lab/index.html"
msgid "Play and change the speed"
msgstr "Jouez et changez la vitesse"
#: website/public/examples/dino-lab/index.html:207
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Press Play, then jump over the cactus. Move the speed slider to try a slower"
" or faster game; it switches to a fixed speed. Select the recovered rule to "
"start at 6 and gradually accelerate again."
msgstr ""
"Appuyez sur Lecture, puis sautez par-dessus le cactus. Déplacez le curseur "
"de vitesse pour essayer un jeu plus lent ou plus rapide; il passe à une "
"vitesse fixe. Sélectionnez la règle récupérée pour démarrer à 6 et accélérer"
" progressivement à nouveau."
#: website/public/examples/dino-lab/index.html:213
msgctxt "page:examples/dino-lab/index.html"
msgid "Play the reconstruction"
msgstr "Jouer à la reconstruction"
#: website/public/examples/dino-lab/index.html:245
msgctxt "page:examples/dino-lab/index.html"
msgid "Play"
msgstr "Jouer"
#: website/public/examples/dino-lab/index.html:248
msgctxt "page:examples/dino-lab/index.html"
msgid "Jump ↑"
msgstr "Sauter ↑"
#: website/public/examples/dino-lab/index.html:249
msgctxt "page:examples/dino-lab/index.html"
msgid "Restart"
msgstr "Recommencer"
#: website/public/examples/dino-lab/index.html:252
msgctxt "page:examples/dino-lab/index.html"
msgid "Speed"
msgstr "Vitesse"
#: website/public/examples/dino-lab/index.html:262
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the recovered acceleration rule"
msgstr "Utilisez la règle d'accélération récupérée"
#: website/public/examples/dino-lab/index.html:266
msgctxt "page:examples/dino-lab/index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "Règle d'origine: commencez à 6, puis augmentez vers 13."
#: website/public/examples/dino-lab/index.html:269
msgctxt "page:examples/dino-lab/index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr ""
"Déplacez le curseur pour définir votre propre vitesse. L'espace ou le saut "
"efface un cactus."
#: website/public/examples/dino-lab/index.html:274
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr ""
"Activez JavaScript pour lire la reconstruction. Le code et l'explication ci-"
"dessus restent lisibles."
#: website/public/examples/dino-lab/index.html:282
msgctxt "page:examples/dino-lab/index.html"
msgid "Read the script REA returned"
msgstr "Lire le script REA renvoyé"
#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#. {ph2}: <code>index.js</code>
#: website/public/examples/dino-lab/index.html:283
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We inspected {ph0}wayou’s Chromium-derived browser edition{ph1} with REA. It"
" returned the loaded {ph2}, including this branch in the game’s update "
"function:"
msgstr ""
"Nous avons inspecté {ph0}édition de navigateur dérivée du Chromium de "
"wayou{ph1} avec le modèle REA . Il a renvoyé le chargé {ph2}, incluant cette"
" branche dans la fonction de mise à jour du jeu:"
#. {ph0}: <code>SPEED: 6</code>
#. {ph1}: <code>ACCELERATION: 0.001</code>
#. {ph2}: <code>MAX_SPEED: 13</code>
#: website/public/examples/dino-lab/index.html:299
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The settings are {ph0}, {ph1} and {ph2}. The game runs this branch on an "
"update without a collision."
msgstr ""
"Les paramètres sont {ph0}, {ph1} et {ph2}. Le jeu exécute cette branche sur "
"une mise à jour sans collision."
#: website/public/examples/dino-lab/index.html:304
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the same rule in the new game"
msgstr "Utilisez la même règle dans le nouveau jeu"
#: website/public/examples/dino-lab/index.html:310
#: website/public/examples/dino-lab/index.html:409
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy"
msgstr "Copier"
#: website/public/examples/dino-lab/index.html:323
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The mini-game uses this function for automatic acceleration. Moving the "
"slider supplies a fixed speed instead. Drawing, jump physics and rectangle "
"collision checks are new code for this teaching game; its simulation "
"advances at 60 updates per second."
msgstr ""
"Le mini-jeu utilise cette fonction pour l'accélération automatique. Déplacer"
" le curseur fournit une vitesse fixe à la place. Le dessin, la physique des "
"sauts et les vérifications des collisions rectangulaires sont de nouveaux "
"codes pour ce jeu d'enseignement; sa simulation avance à 60 mises à jour par"
" seconde."
#. {ph0}: <a href="../../assets/dino-speed.js" download >
#. {ph1}: </a >
#. {ph2}: <a href="../../assets/dino-demo.js">
#. {ph3}: </a>
#: website/public/examples/dino-lab/index.html:329
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Download the speed rule{ph1} · {ph2}Read the game code{ph3}"
msgstr ""
"{ph0}Télécharger la règle de vitesse{ph1} · {ph2}Lire le code du jeu{ph3}"
#: website/public/examples/dino-lab/index.html:337
msgctxt "page:examples/dino-lab/index.html"
msgid "Check the reconstruction"
msgstr "Vérifiez la reconstruction"
#: website/public/examples/dino-lab/index.html:338
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We called the original game’s update function with obstacles and automatic "
"scheduling disabled. Compare those recorded speeds with a replay of the "
"recovered rule."
msgstr ""
"Nous avons appelé la fonction de mise à jour du jeu original avec les "
"obstacles et la planification automatique désactivés. Comparez ces vitesses "
"enregistrées avec une relecture de la règle récupérée."
#: website/public/examples/dino-lab/index.html:347
msgctxt "page:examples/dino-lab/index.html"
msgid "Updates"
msgstr "Mises à Jour"
#: website/public/examples/dino-lab/index.html:348
msgctxt "page:examples/dino-lab/index.html"
msgid "Original game"
msgstr "Jeu original"
#: website/public/examples/dino-lab/index.html:349
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstructed rule"
msgstr "Règle reconstruite"
#: website/public/examples/dino-lab/index.html:376
msgctxt "page:examples/dino-lab/index.html"
msgid "Run the speed check"
msgstr "Exécutez le contrôle de vitesse"
#: website/public/examples/dino-lab/index.html:379
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Values rounded to three decimals. The branch checks before adding, so the "
"final increment can take speed just above 13."
msgstr ""
"Valeurs arrondies à trois décimales. La branche vérifie avant d'ajouter, de "
"sorte que l'incrément final peut prendre une vitesse juste au-dessus de 13."
#: website/public/examples/dino-lab/index.html:385
msgctxt "page:examples/dino-lab/index.html"
msgid "Try the analysis yourself"
msgstr "Essayez l'analyse vous-même"
#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:387
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Set up REA{ph1} with your coding agent."
msgstr "{ph0}Mettre en place REA{ph1} avec votre agent de codage."
#. {ph0}: <a href="../../guides/browser/#prepare" >
#. {ph1}: </a >
#. {ph2}: <code>https://wayou.github.io/t-rex-runner/</code>
#: website/public/examples/dino-lab/index.html:391
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Follow the {ph0}browser connection steps{ph1}, using {ph2} as the page URL."
msgstr ""
"Suivez le {ph0}étapes de connexion du navigateur{ph1}, en utilisant {ph2} "
"comme l'URL de la page."
#: website/public/examples/dino-lab/index.html:398
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Give your agent the page URL and local debugging endpoint, then copy this "
"prompt."
msgstr ""
"Donnez à votre agent l'URL de la page et le point de terminaison de débogage"
" local, puis copiez cette invite."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/examples/dino-lab/index.html:405
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="lab-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/examples/dino-lab/index.html:418
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour inspecter ce jeu de dinosaures. Pourquoi "
"ça va plus vite? Affichez la règle de vitesse, puis créez une petite version"
" avec une vitesse réglable.{ph3}{ph4}{ph5}"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/examples/dino-lab/index.html:427
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Ask a follow-up: {ph0}“Where is jump height calculated? Add a jump-height "
"control to the new version.”{ph1}"
msgstr ""
"Demandez un suivi: {ph0}“Où est calculée la hauteur de saut? Ajoutez un "
"contrôle de hauteur de saut à la nouvelle version.”{ph1}"
#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="../../assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/examples/dino-lab/index.html:434
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Source: {ph0}inspected speed code{ph1}, Chromium Authors. {ph2}Copyright and"
" BSD license{ph3}. REA 4.1.0 inspected the running HTTP edition in Chrome "
"150."
msgstr ""
"Sources: {ph0}code de vitesse inspecté{ph1}, Les auteurs de Chromium. "
"{ph2}Droits d'auteur et licence BSD{ph3}. REA 4.1.0 a inspecté l'édition "
"HTTP en cours d'exécution dans Chrome 150."
#: website/public/examples/dino-lab/index.html:6
msgctxt "page:examples/dino-lab/index.html"
msgid "Chrome Dinosaur Game: Rebuild Its Speed Rule — REA"
msgstr "Jeu de Dinosaure Chrome: Reconstruisez Sa Règle de Vitesse-REA"
#: website/public/examples/dino-lab/index.html:7
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Read the dinosaur game’s speed rule with REA, rebuild it, then change the "
"speed and play."
msgstr ""
"Lisez la règle de vitesse du jeu de dinosaures avec REA , reconstruisez-la, "
"puis modifiez la vitesse et jouez."
#: website/public/examples/dino-lab/index.html:204
msgctxt "page:examples/dino-lab/index.html"
msgid "Dinosaur speed reconstruction"
msgstr "Reconstruction de la vitesse des dinosaures"
#: website/public/examples/dino-lab/index.html:235
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr ""
"Mini-jeu de dinosaure. Utilisez le bouton de saut ou appuyez sur Espace "
"pendant que le jeu est concentré."
#: website/public/examples/dino-lab/index.html:310
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy reconstructed speed rule"
msgstr "Copier la règle de vitesse reconstruite"
#: website/public/examples/dino-lab/index.html:409
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "Copie de l'invite d'analyse des dinosaures"
#: website/public/examples/dino-lab/index.html:462
msgctxt "page:examples/dino-lab/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/faq/index.html:99
msgctxt "page:faq/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/faq/index.html:181
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Home{ph1} / FAQ"
msgstr "{ph0}Accueil{ph1} / Foire aux QUESTIONS"
#: website/public/faq/index.html:182
msgctxt "page:faq/index.html"
msgid "REA FAQ."
msgstr "FOIRE aux questions sur REA."
#: website/public/faq/index.html:183
msgctxt "page:faq/index.html"
msgid "Setup, updates, analysis and troubleshooting."
msgstr "Configuration, mises à jour, analyse et dépannage."
#: website/public/faq/index.html:187
msgctxt "page:faq/index.html"
msgid "Topics"
msgstr "Thèmes"
#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/faq/index.html:189
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Setup and updates{ph1}"
msgstr "{ph0}Configuration et mises à jour{ph1}"
#. {ph0}: <a href="#analysis">
#. {ph1}: </a>
#: website/public/faq/index.html:190
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Analysis{ph1}"
msgstr "{ph0}Analyse{ph1}"
#. {ph0}: <a href="#troubleshooting">
#. {ph1}: </a>
#: website/public/faq/index.html:191
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Troubleshooting{ph1}"
msgstr "{ph0}Dépannage{ph1}"
#. {ph0}: <a href="#sharing">
#. {ph1}: </a>
#: website/public/faq/index.html:192
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Data and sharing{ph1}"
msgstr "{ph0}Données et partage{ph1}"
#: website/public/faq/index.html:201
msgctxt "page:faq/index.html"
msgid "Setup and updates"
msgstr "Configuration et mises à jour"
#: website/public/faq/index.html:204
msgctxt "page:faq/index.html"
msgid "How do I install REA?"
msgstr "Comment installer REA ?"
#: website/public/faq/index.html:212
msgctxt "page:faq/index.html"
msgid "Terminal · agent setup"
msgstr "Terminal * configuration de l'agent"
#: website/public/faq/index.html:213 website/public/faq/index.html:254
#: website/public/faq/index.html:272 website/public/faq/index.html:356
#: website/public/faq/index.html:403 website/public/faq/index.html:443
#: website/public/faq/index.html:463
msgctxt "page:faq/index.html"
msgid "Copy"
msgstr "Copier"
# Reviewed for readable setup and analysis terminology.
#. {ph0}: <a href="../get-started/">
#. {ph1}: </a>
#: website/public/faq/index.html:224
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Setup registers REA's MCP connection and installs the matching investigation"
" skill. Restart your agent when it finishes, then give it a target path and "
"a question. {ph0}Follow the setup guide{ph1} for prerequisites and your "
"first analysis."
msgstr ""
"La configuration enregistre la connexion MCP de REA et installe la skill "
"d’investigation associée. Ensuite, redémarrez votre agent et donnez-lui le "
"chemin du fichier à analyser et une question. Le {ph0}guide de "
"configuration{ph1} présente les prérequis et votre première analyse."
#: website/public/faq/index.html:233
msgctxt "page:faq/index.html"
msgid "Which coding agents can use REA?"
msgstr "Quels agents de codage peuvent utiliser REA ?"
#: website/public/faq/index.html:234
msgctxt "page:faq/index.html"
msgid ""
"Any agent that supports local MCP servers. Setup includes Claude Code, "
"Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, Devin, OpenCode, "
"Antigravity, GitHub Copilot CLI, Command Code, Grok Build, OMP, and VS Code."
" Grok Bot's connector is added from its chat."
msgstr ""
"Tout agent qui prend en charge local MCP serveurs. La configuration comprend"
" Claude Code, Claude Bureau, Codex, Cursor, Gemini CLI, Windsurf, Devin, "
"OpenCode, Antigravity, GitHub Copilot CLI, Command Code, Grok Build, OMP, et"
" VS Code. Le connecteur de Grok Bot est ajouté à partir de son chat."
#. {ph0}: <a href="../get-started/#agent">
#. {ph1}: </a>
#: website/public/faq/index.html:241
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Connect your coding agent{ph1}."
msgstr "{ph0}Connectez votre agent de codage{ph1}."
#: website/public/faq/index.html:246
msgctxt "page:faq/index.html"
msgid "How do I update REA?"
msgstr "Comment mettre REA à jour ?"
#: website/public/faq/index.html:247
msgctxt "page:faq/index.html"
msgid ""
"REA releases frequently, including bug fixes. If you installed the CLI with "
"npm:"
msgstr ""
"REA publie fréquemment, y compris des corrections de bogues. Si vous avez "
"installé le modèle CLI avec le modèle npm :"
#: website/public/faq/index.html:253
msgctxt "page:faq/index.html"
msgid "Terminal · installed CLI"
msgstr "Terminal * installé sur le CLI"
#. {ph0}: <code>npx</code>
#: website/public/faq/index.html:265
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Follow the setup refresh command printed by the update. If you set up your "
"agent through {ph0}, run:"
msgstr ""
"Suivez la commande d'actualisation de la configuration imprimée par la mise "
"à jour. Si vous configurez votre agent via {ph0}, cours:"
#: website/public/faq/index.html:271
msgctxt "page:faq/index.html"
msgid "Terminal · refresh agent setup"
msgstr "Terminal * configuration de l'agent d'actualisation"
# Reviewed for readable setup and analysis terminology.
#. {ph0}: <code>npx -y rea-agents@latest</code>
#: website/public/faq/index.html:283
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review the changes and restart your agent. Its REA connection pins a package"
" version, so refreshing setup makes it use the new release. For one-off CLI "
"commands, use {ph0} followed by the command."
msgstr ""
"Vérifiez les changements et redémarrez votre agent. La connexion à REA "
"utilise une version précise du paquet : relancez la configuration pour "
"passer à la nouvelle version. Pour une commande CLI ponctuelle, ajoutez la "
"commande après {ph0}."
#: website/public/faq/index.html:291
msgctxt "page:faq/index.html"
msgid "Is installing the skill from skills.sh enough?"
msgstr "Installe la compétence à partir de skills.sh assez?"
#. {ph0}: <a href="#install">
#. {ph1}: </a>
#: website/public/faq/index.html:294
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"The skill gives your agent investigation instructions. Run {ph0}REA "
"setup{ph1} to connect the MCP server and install the matching skill, then "
"restart your agent so it can call the tools."
msgstr ""
"La compétence donne des instructions d'enquête à votre agent. Courir {ph0} "
"Configuration du modèle REA{ph1} pour connecter le serveur MCP et installer "
"la compétence correspondante, redémarrez votre agent afin qu'il puisse "
"appeler les outils."
#: website/public/faq/index.html:305
msgctxt "page:faq/index.html"
msgid "Analysis"
msgstr "Analyse"
#: website/public/faq/index.html:308
msgctxt "page:faq/index.html"
msgid "What can I analyze with REA?"
msgstr "Que puis-je analyser avec REA ?"
#: website/public/faq/index.html:309
msgctxt "page:faq/index.html"
msgid "Start with the kind of software you have:"
msgstr "Commencez avec le type de logiciel que vous avez:"
#. {ph0}: <a href="../guides/native/" >
#. {ph1}: </a >
#: website/public/faq/index.html:311
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Native executables and libraries{ph1}: functions, assembly, pseudocode "
"and references."
msgstr ""
"{ph0}Exécutables et bibliothèques natifs{ph1}: fonctions, assembleur, "
"pseudocode et références."
#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/faq/index.html:316
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}JavaScript and Electron apps{ph1}: modules, imports, IPC and source "
"locations."
msgstr ""
"{ph0} Applications pour les modèles JavaScript et Electron{ph1}: modules, "
"importations, IPC et emplacements sources."
#. {ph0}: <a href="../guides/browser/">
#. {ph1}: </a>
#: website/public/faq/index.html:321
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Browser pages{ph1}: scripts, requests and runtime observations."
msgstr ""
"{ph0}Pages du navigateur{ph1}: scripts, requêtes et observations "
"d'exécution."
#. {ph0}: <a href="../showcase/">
#. {ph1}: </a>
#: website/public/faq/index.html:326
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA also has workflows for managed assemblies, Android APKs, firmware and "
"packaged resources. {ph0}See the case studies{ph1} for worked "
"investigations."
msgstr ""
"REA dispose également de flux de travail pour les assemblys gérés, les APK "
"Android, les micrologiciels et les ressources packagées. {ph0}Voir les "
"études de cas{ph1} pour des enquêtes travaillées."
#: website/public/faq/index.html:334
msgctxt "page:faq/index.html"
msgid "Do I need Hopper, Ghidra or IDA?"
msgstr "Ai-je besoin des modèles Hopper , Ghidra ou IDA ?"
#: website/public/faq/index.html:335
msgctxt "page:faq/index.html"
msgid ""
"Deep native analysis uses one of them. Static JavaScript and .NET inspection"
" work with the supplied files and do not need a native analysis engine."
msgstr ""
"L'analyse approfondie des programmes en code machine utilise l'un d'entre "
"eux. L'inspection statique JavaScript et. NET fonctionne avec les fichiers "
"fournis et ne nécessite pas d'analyse du moteur des programmes de code "
"machine."
#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a>
#: website/public/faq/index.html:340
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Connect your existing Ghidra or IDA installation, or let setup detect Hopper"
" and propose an installation. Your host and target determine which provider "
"can be used. {ph0}Set up native analysis{ph1}."
msgstr ""
"Connectez votre installation Ghidra ou IDA existante, ou laissez le "
"programme d'installation détecter Hopper et proposer une installation. Votre"
" hôte et votre cible déterminent quel fournisseur peut être utilisé. "
"{ph0}Mettre en place une analyse des programmes en code machine{ph1}."
#: website/public/faq/index.html:348
msgctxt "page:faq/index.html"
msgid "Can I use REA without a coding agent?"
msgstr "Puis-je utiliser REA sans agent de codage?"
#: website/public/faq/index.html:349
msgctxt "page:faq/index.html"
msgid ""
"Yes. The CLI uses the same analysis workflows. For a local JavaScript or "
"Electron app:"
msgstr ""
"Oui. Le CLI utilise les mêmes workflows d'analyse. Pour une application "
"locale JavaScript ou Electron :"
#: website/public/faq/index.html:355
msgctxt "page:faq/index.html"
msgid "Terminal · static application analysis"
msgstr "Terminal * analyse statique des applications"
#. {ph0}: <a href="../get-started/#terminal">
#. {ph1}: </a>
#: website/public/faq/index.html:368
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with an extracted application folder or ASAR file. {ph0}Use"
" the CLI{ph1} for installation options."
msgstr ""
"Remplacez le chemin d'accès par un dossier d'application extrait ou un "
"fichier ASAR. {ph0}Utilisez le modèle CLI {ph1} pour les options "
"d'installation."
# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:375
msgctxt "page:faq/index.html"
msgid "What code does REA return?"
msgstr "Quel code REA renvoie-t-il ?"
# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:376
msgctxt "page:faq/index.html"
msgid ""
"Native analysis returns assembly and pseudocode, with calls, references and "
"relevant constants. JavaScript analysis returns modules, their relationships"
" and source locations."
msgstr ""
"L’analyse native renvoie de l’assembleur et du pseudocode, avec les appels "
"de fonctions, les références et les constantes utiles. L’analyse JavaScript "
"renvoie les modules, leurs relations et les emplacements dans le code "
"source."
#. {ph0}: <a href="../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#. {ph2}: <a href="../showcase/ctf/">
#. {ph3}: </a>
#: website/public/faq/index.html:381
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Your agent uses these findings to explain the behavior or write and test an "
"implementation. The {ph0}DX-Ball calculation{ph1} and {ph2}CTF flag "
"checker{ph3} show how that process works."
msgstr ""
"Votre agent utilise ces résultats pour expliquer le comportement ou écrire "
"et tester une implémentation. Les {ph0} Calcul du DX-Ball{ph1} et "
"{ph2}Vérificateur de drapeau CTF{ph3} montrez comment ce processus "
"fonctionne."
#: website/public/faq/index.html:392
msgctxt "page:faq/index.html"
msgid "What should I ask my agent?"
msgstr "Que demander à mon agent ?"
#: website/public/faq/index.html:393
msgctxt "page:faq/index.html"
msgid ""
"Give it a local target and one behavior to investigate. For a JavaScript or "
"Electron app:"
msgstr ""
"Donnez-lui une cible locale et un comportement à étudier. Pour une "
"application JavaScript ou Electron :"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/faq/index.html:399
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#. {ph0}: <a href="../guides/">
#. {ph1}: </a>
#: website/public/faq/index.html:422
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with your target. The {ph0}guides{ph1} provide prompts for "
"native, Electron and browser examples."
msgstr ""
"Remplacez le chemin par votre cible. Les {ph0}guides touristiques{ph1} "
"fournissez des invites pour des exemples natifs, Electron et de navigateur."
#: website/public/faq/index.html:432
msgctxt "page:faq/index.html"
msgid "Troubleshooting"
msgstr "Dépannage"
#: website/public/faq/index.html:435
msgctxt "page:faq/index.html"
msgid "Why can't my agent see the REA tools?"
msgstr "Pourquoi mon agent ne peut-il pas voir les outils REA?"
#. {ph0}: <code>doctor</code>
#: website/public/faq/index.html:436
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Restart or reconnect your agent after setup. Check its REA registration with"
" {ph0}; for Codex:"
msgstr ""
"Redémarrez ou reconnectez votre agent après la configuration. Vérifiez son "
"enregistrement REA avec {ph0}; pour le modèle Codex :"
#: website/public/faq/index.html:442
msgctxt "page:faq/index.html"
msgid "Terminal · check one client"
msgstr "Terminal * vérifiez un client"
#. {ph0}: <code>codex</code>
#. {ph1}: <code>claude_code</code>
#. {ph2}: <code>cursor</code>
#: website/public/faq/index.html:454
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace {ph0} with your client ID, such as {ph1} or {ph2}. If the report "
"shows a missing or stale registration, run setup for that client:"
msgstr ""
"Remplacer {ph0} avec votre identifiant client, tel que {ph1} ou {ph2}. Si le"
" rapport indique un enregistrement manquant ou périmé, exécutez la "
"configuration pour ce client:"
#: website/public/faq/index.html:462
msgctxt "page:faq/index.html"
msgid "Terminal · repair one client's setup"
msgstr "Terminal * réparer la configuration d'un client"
#. {ph0}: <a href="../get-started/#help">
#. {ph1}: </a>
#: website/public/faq/index.html:474
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review its plan and restart the client. If registration is healthy but tools"
" remain absent, check the client's MCP connection error. {ph0}More setup "
"diagnostics{ph1}."
msgstr ""
"Passez en revue son plan et redémarrez le client. Si l'enregistrement est "
"correct mais que les outils restent absents, vérifiez l'erreur de connexion "
"MCP du client. {ph0}Plus de diagnostics de configuration{ph1}."
#: website/public/faq/index.html:482
msgctxt "page:faq/index.html"
msgid "Do I need to start Hopper first?"
msgstr "Dois-je d'abord démarrer Hopper?"
#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a >
#: website/public/faq/index.html:483
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA starts Hopper when an operation needs it. On macOS, complete the first-"
"run choice of demo mode or license activation before unattended analysis. "
"{ph0}See native provider setup{ph1}."
msgstr ""
"REA démarre Hopper lorsqu'une opération en a besoin. Sur macOS, effectuez le"
" choix de la première exécution du mode de démonstration ou de l'activation "
"de la licence avant l'analyse sans surveillance. {ph0}Voir configuration du "
"fournisseur natif{ph1}."
#: website/public/faq/index.html:492
msgctxt "page:faq/index.html"
msgid "What should I do if I hit a bug?"
msgstr "Que faire si je rencontre un bug ?"
#. {ph0}: <a href="#update">
#. {ph1}: </a>
#: website/public/faq/index.html:493
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Update REA{ph1}, restart your agent and retry the same task. A recent "
"release may already fix the problem."
msgstr ""
"{ph0}Mise à Jour REA{ph1}, redémarrez votre agent et réessayez la même "
"tâche. Une version récente peut déjà résoudre le problème."
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/faq/index.html:497
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"If it persists, {ph0}open an issue{ph1} with your REA version, operating "
"system, target type, steps to reproduce and error output. Include the "
"provider name when the problem involves native analysis."
msgstr ""
"S'il persiste, {ph0}ouvrir un problème{ph1} avec votre version REA, système "
"d'exploitation, type de cible, étapes à reproduire et sortie d'erreur. "
"Incluez le nom du fournisseur lorsque le problème implique l'analyse de "
"programmes en code machine."
#: website/public/faq/index.html:511
msgctxt "page:faq/index.html"
msgid "Data and sharing"
msgstr "Données et partage"
#: website/public/faq/index.html:514
msgctxt "page:faq/index.html"
msgid "Does REA upload my app?"
msgstr "Est-ce que REA télécharge mon application?"
#: website/public/faq/index.html:515
msgctxt "page:faq/index.html"
msgid ""
"REA analyzes targets on your machine. Your agent receives the results, and "
"its model provider's data policy applies to those results."
msgstr ""
"REA analyse les cibles sur votre machine. Votre agent reçoit les résultats "
"et la politique de données de son fournisseur modèle s'applique à ces "
"résultats."
#: website/public/faq/index.html:522
msgctxt "page:faq/index.html"
msgid "How can I share an example or contribute?"
msgstr "Comment puis-je partager un exemple ou contribuer?"
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/pulls">
#. {ph3}: </a >
#: website/public/faq/index.html:523
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Have a useful REA example? We'd love to see it. Share the target, your "
"question, the findings and how you checked them in an {ph0}issue{ph1} or "
"{ph2}pull request{ph3}. Short code excerpts and figures help others follow "
"the investigation."
msgstr ""
"Vous avez un exemple REA utile? On adorerait le voir. Partagez la cible, "
"votre question, les résultats et comment vous les avez vérifiés dans un "
"{ph0}problème{ph1} ou {ph2}demande d'extraction{ph3}. De courts extraits de "
"code et des chiffres aident les autres à suivre l'enquête."
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/faq/index.html:535
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Bug reports, feature requests, documentation and code improvements are "
"welcome too. You can also discuss an example in the {ph0}community{ph1}."
msgstr ""
"Les rapports de bogues, les demandes de fonctionnalités, la documentation et"
" les améliorations de code sont également les bienvenus. Vous pouvez "
"également discuter d'un exemple dans le {ph0}communauté{ph1}."
#: website/public/faq/index.html:6
msgctxt "page:faq/index.html"
msgid "REA FAQ: Setup, Updates and Troubleshooting"
msgstr "FAQ REA: Configuration, mises à jour et dépannage"
#: website/public/faq/index.html:7
msgctxt "page:faq/index.html"
msgid ""
"Answers to common REA questions: installation, updates, analysis tools, "
"coding agents, troubleshooting and sharing examples."
msgstr ""
"Réponses aux questions courantes sur REA: installation, mises à jour, outils"
" d'analyse, agents de codage, dépannage et exemples de partage."
#: website/public/faq/index.html:186
msgctxt "page:faq/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/faq/index.html:195
msgctxt "page:faq/index.html"
msgid "Frequently asked questions about REA"
msgstr "Questions fréquemment posées sur REA"
#: website/public/faq/index.html:213
msgctxt "page:faq/index.html"
msgid "Copy REA setup command"
msgstr "Copier la commande d'installation REA"
#: website/public/faq/index.html:254
msgctxt "page:faq/index.html"
msgid "Copy REA update command"
msgstr "Copier la commande de mise à jour REA"
#: website/public/faq/index.html:272
msgctxt "page:faq/index.html"
msgid "Copy agent setup refresh command"
msgstr "Commande d'actualisation de la configuration de l'agent de copie"
#: website/public/faq/index.html:356
msgctxt "page:faq/index.html"
msgid "Copy REA CLI analysis command"
msgstr "Copier la commande d'analyse REA CLI"
#: website/public/faq/index.html:403
msgctxt "page:faq/index.html"
msgid "Copy example analysis prompt"
msgstr "Copier l'exemple d'invite d'analyse"
#: website/public/faq/index.html:443
msgctxt "page:faq/index.html"
msgid "Copy client diagnosis command"
msgstr "Commande de diagnostic de client de copie"
#: website/public/faq/index.html:463
msgctxt "page:faq/index.html"
msgid "Copy scoped setup command"
msgstr "Copier la commande d'installation étendue"
#: website/public/faq/index.html:560
msgctxt "page:faq/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/first-investigation/index.html:99
msgctxt "page:first-investigation/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:181
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Home{ph1} / Your first investigation"
msgstr "{ph0}Accueil{ph1} / Votre première enquête"
#. {ph0}: <br />
#: website/public/first-investigation/index.html:184
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Find out where{ph0}exported notes go."
msgstr "Découvrez où{ph0}les notes exportées disparaissent."
#: website/public/first-investigation/index.html:185
msgctxt "page:first-investigation/index.html"
msgid ""
"Use REA to inspect a small app, follow its Export notes button and check one"
" detail yourself."
msgstr ""
"Utilisez REA pour inspecter une petite application, suivez son bouton "
"Exporter les notes et vérifiez vous-même un détail."
#: website/public/first-investigation/index.html:196
msgctxt "page:first-investigation/index.html"
msgid "In this exercise"
msgstr "Dans cet exercice"
#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:198
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}1. Set up{ph1}"
msgstr "{ph0}1. Mettre en place{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:199
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}2. Ask about export{ph1}"
msgstr "{ph0}2. Renseignez - vous sur l'exportation{ph1}"
#. {ph0}: <a href="#answer">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:200
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}3. Follow the answer{ph1}"
msgstr "{ph0}3. Suivez la réponse{ph1}"
#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:201
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}4. Check a prediction{ph1}"
msgstr "{ph0}4. Vérifier une prédiction{ph1}"
#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:202
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}5. Ask another question{ph1}"
msgstr "{ph0}5. Poser une autre question{ph1}"
#: website/public/first-investigation/index.html:207
msgctxt "page:first-investigation/index.html"
msgid "1. Connect your agent to REA"
msgstr "1. Connectez votre agent à REA"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/first-investigation/index.html:216
#: website/public/first-investigation/index.html:266
#: website/public/first-investigation/index.html:388
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/first-investigation/index.html:221
#: website/public/first-investigation/index.html:243
#: website/public/first-investigation/index.html:271
#: website/public/first-investigation/index.html:393
#: website/public/first-investigation/index.html:435
msgctxt "page:first-investigation/index.html"
msgid "Copy"
msgstr "Copier"
#: website/public/first-investigation/index.html:240
msgctxt "page:first-investigation/index.html"
msgid "Or run this command in your terminal:"
msgstr "Ou exécutez cette commande dans votre terminal:"
#: website/public/first-investigation/index.html:252
msgctxt "page:first-investigation/index.html"
msgid ""
"Review the plan, approve the setup, then restart your agent. Already "
"connected? Continue below."
msgstr ""
"Passez en revue le plan, approuvez la configuration, puis redémarrez votre "
"agent. Déjà connecté? Continuez ci-dessous."
#: website/public/first-investigation/index.html:258
msgctxt "page:first-investigation/index.html"
msgid "2. Ask where the CSV is written"
msgstr "2. Demandez où le CSV est écrit"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/first-investigation/index.html:259
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The example is a six-file Electron app with an {ph0}Export notes{ph1} "
"button. Your agent can inspect its code without installing or launching "
"Electron."
msgstr ""
"L'exemple est une application Electron à six fichiers avec un {ph0}Exporter "
"des notes{ph1} bouton. Votre agent peut inspecter son code sans installer ni"
" lancer Electron ."
#: website/public/first-investigation/index.html:294
msgctxt "page:first-investigation/index.html"
msgid ""
"Your agent downloads the files and gives the unpacked folder to REA for "
"inspection."
msgstr ""
"Votre agent télécharge les fichiers et remet le dossier décompressé à REA "
"pour inspection."
#. {ph0}: <a class="button" href="../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:298
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Télécharger un exemple de ZIP{ph1}"
#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:306
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"If your agent can’t download files, unzip this archive yourself. Give it the"
" path to the {ph0} folder and the same export question."
msgstr ""
"Si votre agent ne peut pas télécharger de fichiers, décompressez cette "
"archive vous-même. Donnez-lui le chemin vers le {ph0} dossier et la même "
"question d'exportation."
#: website/public/first-investigation/index.html:313
msgctxt "page:first-investigation/index.html"
msgid "3. Follow the answer back to the code"
msgstr "3. Suivez la réponse jusqu'au code"
#: website/public/first-investigation/index.html:314
msgctxt "page:first-investigation/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr ""
"Recherchez une brève explication avec des références de fichier et de ligne:"
#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/first-investigation/index.html:316
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The button sends a {ph0} message. The main process formats the notes as CSV "
"and writes {ph1} in the user’s Downloads folder. The columns are {ph2} and "
"{ph3}."
msgstr ""
"Le bouton envoie un {ph0} message. Le processus principal formate les notes "
"en CSV et écrit {ph1} dans le dossier Téléchargements de l'utilisateur. Les "
"colonnes sont {ph2} et {ph3}."
#: website/public/first-investigation/index.html:324
msgctxt "page:first-investigation/index.html"
msgid "From the button to the file writer"
msgstr "Du bouton au rédacteur de fichiers"
#: website/public/first-investigation/index.html:353
msgctxt "page:first-investigation/index.html"
msgid ""
"REA’s static analysis pairs the message with its handler. The destination is"
" read from code."
msgstr ""
"L'analyse statique de REA associe le message à son gestionnaire. La "
"destination est lue à partir du code."
#: website/public/first-investigation/index.html:369
msgctxt "page:first-investigation/index.html"
msgid ""
"The file path, formatter and write call are together in this handler. Ask "
"your agent to show these lines if its answer leaves them out."
msgstr ""
"Le chemin du fichier, le formateur et l'appel d'écriture sont ensemble dans "
"ce gestionnaire. Demandez à votre agent de montrer ces lignes si sa réponse "
"les laisse de côté."
#. {ph0}: <a href="../guides/javascript/#follow" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:374
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}See the full code trace and recorded REA result{ph1}."
msgstr ""
"{ph0}Voir la trace complète du code et le résultat REA enregistré{ph1}."
#: website/public/first-investigation/index.html:381
msgctxt "page:first-investigation/index.html"
msgid "4. Check a prediction"
msgstr "4. Vérifier une prédiction"
#: website/public/first-investigation/index.html:382
msgctxt "page:first-investigation/index.html"
msgid ""
"A comma separates CSV columns. What happens when a note title itself "
"contains a comma or quotation marks?"
msgstr ""
"Une virgule sépare les colonnes CSV. Que se passe-t-il lorsqu'un titre de "
"note contient lui-même une virgule ou des guillemets?"
#: website/public/first-investigation/index.html:426
msgctxt "page:first-investigation/index.html"
msgid "Run the check yourself"
msgstr "Exécutez le chèque vous-même"
#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:427
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Open a terminal in the unpacked {ph0} folder:"
msgstr "Ouvrez un terminal dans le déballé {ph0} dossier:"
#: website/public/first-investigation/index.html:449
msgctxt "page:first-investigation/index.html"
msgid ""
"This command uses a shell with here-document support, such as Bash or Zsh. "
"Your agent can run the same JavaScript in your platform’s shell."
msgstr ""
"Cette commande utilise un shell avec un support here-document, tel que Bash "
"ou Zsh. Votre agent peut exécuter le même JavaScript dans le shell de votre "
"plate-forme."
#: website/public/first-investigation/index.html:457
msgctxt "page:first-investigation/index.html"
msgid "5. Ask another question"
msgstr "5. Poser une autre question"
#: website/public/first-investigation/index.html:458
msgctxt "page:first-investigation/index.html"
msgid "Try a follow-up in the same conversation:"
msgstr "Essayez un suivi dans la même conversation:"
#: website/public/first-investigation/index.html:460
msgctxt "page:first-investigation/index.html"
msgid ""
"What happens if the file can’t be written? Follow the error back to the "
"page."
msgstr ""
"Que se passe-t-il si le fichier ne peut pas être écrit? Suivez l'erreur pour"
" revenir à la page."
#: website/public/first-investigation/index.html:465
msgctxt "page:first-investigation/index.html"
msgid ""
"Or give your agent an app of your own and ask about one button, file or "
"behavior."
msgstr ""
"Ou donnez à votre agent votre propre application et posez des questions sur "
"un bouton, un fichier ou un comportement."
#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:470
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How Notion copies text and HTML{ph1}{ph2}Follow a clipboard feature in "
"a packaged Electron app.{ph3}"
msgstr ""
"{ph0}Comment Notion copie du texte et du code HTML{ph1}{ph2}Suivez une "
"fonctionnalité de presse-papiers dans une application Electron "
"packagée.{ph3}"
#. {ph0}: <a href="../showcase/dx-ball/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:476
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How DX-Ball calculates sound panning{ph1}{ph2}Read the original "
"instructions and the reconstruction’s checks.{ph3}"
msgstr ""
"{ph0}Comment DX-Ball calcule le positionnement du son stéréo{ph1}{ph2}Lisez "
"les instructions originales et les chèques de reconstruction.{ph3}"
#. {ph0}: <a href="../faq/#troubleshooting" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:484
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Troubleshoot setup or analysis{ph1}{ph2}Update REA and check the "
"connection if you get stuck.{ph3}"
msgstr ""
"{ph0}Dépannage de la configuration ou de l'analyse{ph1}{ph2}Mettez à jour "
"REA et vérifiez la connexion si vous êtes bloqué.{ph3}"
#: website/public/first-investigation/index.html:6
msgctxt "page:first-investigation/index.html"
msgid "Your First Reverse Engineering Investigation — REA"
msgstr "Votre Première Enquête d'Ingénierie Inverse-REA"
#: website/public/first-investigation/index.html:7
msgctxt "page:first-investigation/index.html"
msgid ""
"Try REA on a small Notes app. Set up your agent, ask where exported notes "
"go, and check the CSV formatter with a sample title."
msgstr ""
"Essayez REA sur une application de petites notes. Configurez votre agent, "
"demandez où vont les notes exportées et vérifiez le formateur CSV avec un "
"exemple de titre."
#: website/public/first-investigation/index.html:195
msgctxt "page:first-investigation/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/first-investigation/index.html:205
msgctxt "page:first-investigation/index.html"
msgid "Your first REA investigation"
msgstr "Votre première enquête sur le REA"
#: website/public/first-investigation/index.html:221
msgctxt "page:first-investigation/index.html"
msgid "Copy REA installation prompt"
msgstr "Copier l'invite d'installation de REA"
#: website/public/first-investigation/index.html:243
msgctxt "page:first-investigation/index.html"
msgid "Copy setup command"
msgstr "Commande Copier le programme d'installation"
#: website/public/first-investigation/index.html:271
msgctxt "page:first-investigation/index.html"
msgid "Copy Notes investigation prompt"
msgstr "Invite d'enquête sur les notes de copie"
#: website/public/first-investigation/index.html:393
msgctxt "page:first-investigation/index.html"
msgid "Copy CSV check prompt"
msgstr "Copier l'invite de vérification CSV"
#: website/public/first-investigation/index.html:435
msgctxt "page:first-investigation/index.html"
msgid "Copy formatter check command"
msgstr "Commande de vérification du formateur de copie"
#: website/public/first-investigation/index.html:510
msgctxt "page:first-investigation/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/get-started/index.html:99
msgctxt "page:get-started/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/get-started/index.html:181
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Home{ph1} / Get started"
msgstr "{ph0}Accueil{ph1} / Commencer"
#: website/public/get-started/index.html:182
msgctxt "page:get-started/index.html"
msgid "Set up REA."
msgstr "Configurez le modèle REA ."
#: website/public/get-started/index.html:183
msgctxt "page:get-started/index.html"
msgid ""
"Connect REA to your coding agent, or inspect a local app from your terminal."
msgstr ""
"Connectez REA à votre agent de codage ou inspectez une application locale à "
"partir de votre terminal."
#: website/public/get-started/index.html:195
msgctxt "page:get-started/index.html"
msgid "Open a terminal and check:"
msgstr "Ouvrez un terminal et vérifiez:"
#: website/public/get-started/index.html:198
#: website/public/get-started/index.html:455
msgctxt "page:get-started/index.html"
msgid "Terminal"
msgstr "Borne"
#: website/public/get-started/index.html:199
#: website/public/get-started/index.html:220
#: website/public/get-started/index.html:243
#: website/public/get-started/index.html:259
#: website/public/get-started/index.html:274
#: website/public/get-started/index.html:289
#: website/public/get-started/index.html:305
#: website/public/get-started/index.html:324
#: website/public/get-started/index.html:410
#: website/public/get-started/index.html:456
#: website/public/get-started/index.html:532
#: website/public/get-started/index.html:591
#: website/public/get-started/index.html:632
#: website/public/get-started/index.html:664
#: website/public/get-started/index.html:721
#: website/public/get-started/index.html:762
#: website/public/get-started/index.html:802
#: website/public/get-started/index.html:818
msgctxt "page:get-started/index.html"
msgid "Copy"
msgstr "Copier"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:216
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows (PowerShell){ph1}"
msgstr "{ph0} Windows (PowerShell)est également compatible avec:{ph1}"
#: website/public/get-started/index.html:219
#: website/public/get-started/index.html:242
msgctxt "page:get-started/index.html"
msgid "Windows PowerShell"
msgstr "Windows PowerShell pour ordinateur portable"
#. {ph0}: <code>node -v</code>
#: website/public/get-started/index.html:231
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Type Y if asked to accept the terms. Close PowerShell, open it again, then "
"run {ph0}."
msgstr ""
"Tapez Y si on vous demande d'accepter les conditions. Fermez PowerShell, "
"ouvrez-le à nouveau, puis exécutez {ph0}."
#. {ph0}: <em>
#. {ph1}: </em>
#. {ph2}: <code>npx</code>
#: website/public/get-started/index.html:235
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If PowerShell later says {ph0}\"running scripts is disabled on this "
"system\"{ph1} when you run {ph2}, run this once and try again:"
msgstr ""
"Si PowerShell dit plus tard {ph0}\"L'exécution de scripts est désactivée sur"
" ce système\"{ph1} quand tu cours {ph2}, exécutez ceci une fois et "
"réessayez:"
#: website/public/get-started/index.html:255
msgctxt "page:get-started/index.html"
msgid "If you use Homebrew:"
msgstr "Si vous utilisez le modèle Homebrew :"
#: website/public/get-started/index.html:258
msgctxt "page:get-started/index.html"
msgid "macOS · Homebrew"
msgstr "macOS · Homebrew"
#: website/public/get-started/index.html:270
msgctxt "page:get-started/index.html"
msgid "Otherwise:"
msgstr "Autrement:"
#: website/public/get-started/index.html:285
msgctxt "page:get-started/index.html"
msgid "Close Terminal, open it again, then:"
msgstr "Fermez le Terminal, ouvrez-le à nouveau, puis:"
#. {ph0}: <code>curl</code>
#. {ph1}: <code>unzip</code>
#. {ph2}: <code>sudo apt install curl unzip</code>
#: website/public/get-started/index.html:316
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The installer needs {ph0} and {ph1} (on Debian/Ubuntu: {ph2}). Close the "
"terminal, open it again, then:"
msgstr ""
"L'installateur a besoin {ph0} et {ph1} (sur Debian / Ubuntu: {ph2}). Fermez "
"le terminal, ouvrez-le à nouveau, puis:"
#. {ph0}: <code>nodejs</code>
#. {ph1}: <code>node -v</code>
#: website/public/get-started/index.html:336
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Your distribution's own {ph0} package is often older than 22.19, so check "
"{ph1} if you use it instead."
msgstr ""
"Votre propre distribution {ph0} le paquet est souvent plus ancien que 22.19,"
" alors vérifiez {ph1} si vous l'utilisez à la place."
#. {ph0}: <a href="https://nodejs.org/en/download">
#. {ph1}: </a>
#: website/public/get-started/index.html:340
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Prefer a regular installer? Download the LTS version from "
"{ph0}nodejs.org{ph1}."
msgstr ""
"Vous préférez un installateur régulier? Téléchargez la version LTS à partir "
"de {ph0}nodejs.org{ph1}."
#: website/public/get-started/index.html:348
msgctxt "page:get-started/index.html"
msgid "Setup options"
msgstr "Options de configuration"
#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:350
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Connect your coding agent{ph1}"
msgstr "{ph0}Connectez votre agent de codage{ph1}"
#. {ph0}: <a href="#terminal">
#. {ph1}: </a>
#: website/public/get-started/index.html:351
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Use the CLI{ph1}"
msgstr "{ph0}Utilisez le modèle CLI {ph1}"
#. {ph0}: <a href="#native">
#. {ph1}: </a>
#: website/public/get-started/index.html:352
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Set up native analysis{ph1}"
msgstr "{ph0}Mettre en place une analyse des programmes en code machine{ph1}"
#. {ph0}: <a href="#help">
#. {ph1}: </a>
#: website/public/get-started/index.html:353
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Getting help{ph1}"
msgstr "{ph0}Obtenir de l'aide{ph1}"
#: website/public/get-started/index.html:358
msgctxt "page:get-started/index.html"
msgid "Connect your coding agent"
msgstr "Connectez votre agent de codage"
#: website/public/get-started/index.html:359
msgctxt "page:get-started/index.html"
msgid ""
"Run setup to connect REA to your coding agent. Client choices include Claude"
" Code, Codex, Cursor, Gemini CLI, Windsurf, Grok Build, and other supported "
"MCP clients. Grok Bot's connector is added from its chat."
msgstr ""
"Exécutez la configuration pour vous connecter REA à votre agent de codage. "
"Les choix des clients comprennent Claude Code, Codex, Cursor, Gemini CLI, "
"Windsurf, Grok Build, et d'autres pris en charge MCP clients. Le connecteur "
"de Grok Bot est ajouté à partir de son chat."
#: website/public/get-started/index.html:366
msgctxt "page:get-started/index.html"
msgid "New to coding agents?"
msgstr "Nouveau sur les agents de codage?"
#: website/public/get-started/index.html:367
msgctxt "page:get-started/index.html"
msgid ""
"A coding agent is an AI assistant that works on your computer instead of in "
"a browser tab. It can read files and run commands, and it asks before making"
" changes. REA gives it reverse-engineering tools."
msgstr ""
"Un agent de codage est un assistant IA qui fonctionne sur votre ordinateur "
"plutôt que dans un onglet de navigateur. Il peut lire des fichiers et "
"exécuter des commandes, et il demande avant d'apporter des modifications. "
"REA lui donne des outils de rétro-ingénierie."
#: website/public/get-started/index.html:373
msgctxt "page:get-started/index.html"
msgid ""
"If you don't have one yet, pick one, follow its install page and sign in:"
msgstr ""
"Si vous n'en avez pas encore, choisissez-en un, suivez sa page "
"d'installation et connectez-vous:"
#. {ph0}: <strong >
#. {ph1}: <a href="https://code.claude.com/docs/en/setup" >
#. {ph2}: </a >
#. {ph3}: </strong >
#: website/public/get-started/index.html:378
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}Claude Code{ph2}{ph3} by Anthropic. Needs a paid Claude plan."
msgstr ""
"{ph0}{ph1}Claude Code{ph2}{ph3} par Anthropic. A besoin d'un payé Claude "
"plan."
#. {ph0}: <strong >
#. {ph1}: <a href="https://github.com/openai/codex">
#. {ph2}: </a>
#. {ph3}: </strong >
#: website/public/get-started/index.html:386
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}Codex{ph2}{ph3} by OpenAI. Sign in with your ChatGPT account."
msgstr ""
"{ph0}{ph1}Codex{ph2}{ph3} par OpenAI. Connectez-vous avec votre compte "
"ChatGPT."
#. {ph0}: <strong >
#. {ph1}: <a href="https://opencode.ai/docs">
#. {ph2}: </a>
#. {ph3}: </strong >
#: website/public/get-started/index.html:392
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}OpenCode{ph2}{ph3}, open source. Connect the model provider of "
"your choice."
msgstr ""
"{ph0}{ph1}OpenCode{ph2}{ph3}, code source ouvert. Connectez le fournisseur "
"de modèle de votre choix."
#: website/public/get-started/index.html:398
msgctxt "page:get-started/index.html"
msgid ""
"Then open it and copy the prompt below into it. The agent runs REA's setup "
"and shows you the plan before changing anything."
msgstr ""
"Ensuite, ouvrez-le et copiez l'invite ci-dessous dedans. L'agent exécute la "
"configuration de REA et vous montre le plan avant de modifier quoi que ce "
"soit."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/get-started/index.html:405
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/get-started/index.html:430
msgctxt "page:get-started/index.html"
msgid "Or run setup yourself"
msgstr "Ou exécutez la configuration vous-même"
#: website/public/get-started/index.html:432
msgctxt "page:get-started/index.html"
msgid "How do I open a terminal?"
msgstr "Comment ouvrir un terminal?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:434
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} open the Start menu, type {ph2}PowerShell{ph3} and press "
"Enter."
msgstr ""
"{ph0}Windows:{ph1} ouvrez le menu Démarrer, tapez {ph2}PowerShell{ph3} et "
"appuyez sur Entrée."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Space</kbd>
#. {ph4}: <em>
#. {ph5}: </em>
#: website/public/get-started/index.html:438
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} press {ph2} {ph3}, type {ph4}Terminal{ph5} and press Enter."
msgstr ""
"{ph0}macOS:{ph1} presse {ph2} {ph3}, type {ph4}Borne{ph5} et appuyez sur "
"Entrée."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>Ctrl</kbd>
#. {ph3}: <kbd>Alt</kbd>
#. {ph4}: <kbd>T</kbd>
#: website/public/get-started/index.html:442
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} press {ph2} {ph3} {ph4} on most desktops."
msgstr ""
"{ph0}Linux:{ph1} presse {ph2} {ph3} {ph4} sur la plupart des ordinateurs de "
"bureau."
#. {ph0}: <kbd>Ctrl</kbd>
#. {ph1}: <kbd>V</kbd>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>V</kbd>
#. {ph4}: <kbd>Ctrl</kbd>
#. {ph5}: <kbd>Shift</kbd>
#. {ph6}: <kbd>V</kbd>
#: website/public/get-started/index.html:447
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Paste a command with {ph0} {ph1} (macOS: {ph2} {ph3}; Linux terminals: {ph4}"
" {ph5} {ph6}), then press Enter."
msgstr ""
"Collez une commande avec {ph0} {ph1} (macOS: {ph2} {ph3}; Linux terminaux: "
"{ph4} {ph5} {ph6}), puis appuyez sur Entrée."
#: website/public/get-started/index.html:468
msgctxt "page:get-started/index.html"
msgid ""
"Choose your client and review the setup plan. REA adds its MCP connection "
"and the matching investigation skill, keeping a backup of existing "
"configuration. It asks before applying the changes."
msgstr ""
"Choisissez votre client et consultez le plan d'installation. REA ajoute sa "
"connexion MCP et la compétence d'investigation correspondante, en conservant"
" une sauvegarde de la configuration existante. Il demande avant d'appliquer "
"les modifications."
#: website/public/get-started/index.html:473
msgctxt "page:get-started/index.html"
msgid "Restart your client when setup finishes."
msgstr "Redémarrez votre client une fois la configuration terminée."
#: website/public/get-started/index.html:475
msgctxt "page:get-started/index.html"
msgid "How do I restart my client?"
msgstr "Comment puis-je redémarrer mon client?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Q</kbd>
#: website/public/get-started/index.html:476
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Desktop apps{ph1} (Claude Desktop, Cursor, Windsurf, VS Code): quit the"
" app completely, then open it again. Closing the window isn't enough. On "
"macOS press {ph2} {ph3}; on Windows, also quit from the tray icon if there "
"is one."
msgstr ""
"{ph0}Applications de bureau{ph1} (Claude Bureau, Cursor, Windsurf, VS Code):"
" quittez complètement l'application, puis ouvrez-la à nouveau. Fermer la "
"fenêtre ne suffit pas. Sur macOS presse {ph2} {ph3}; sur Windows, quittez "
"également l'icône de la barre d'état s'il y en a une."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:483
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Terminal agents{ph1} (Claude Code, Codex, Gemini CLI): exit the session"
" and start it again."
msgstr ""
"{ph0}Agents terminaux{ph1} (Claude Code, Codex, Gemini CLI): quittez la "
"session et recommencez-la."
#: website/public/get-started/index.html:488
msgctxt "page:get-started/index.html"
msgid ""
"Give your agent a target path and a specific question. For a JavaScript or "
"Electron app, you might start with:"
msgstr ""
"Donnez à votre agent un chemin cible et une question spécifique. Pour une "
"application JavaScript ou Electron, vous pouvez commencer par:"
#. {ph0}: <code>/absolute/path/to/app</code>
#: website/public/get-started/index.html:493
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Look at {ph0} and find how it exports data. Show the entry points, calls and"
" dependencies involved, with the source locations for your findings."
msgstr ""
"Regarde {ph0} et découvrez comment il exporte les données. Affichez les "
"points d'entrée, les appels et les dépendances impliqués, avec les "
"emplacements sources de vos résultats."
#: website/public/get-started/index.html:499
msgctxt "page:get-started/index.html"
msgid "Replace the path with your local target."
msgstr "Remplacez le chemin par votre cible locale."
#: website/public/get-started/index.html:501
msgctxt "page:get-started/index.html"
msgid "How do I get a folder's full path?"
msgstr "Comment puis-je obtenir le chemin d'accès complet d'un dossier?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:503
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the folder and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0}Windows:{ph1} dans l'Explorateur de fichiers, cliquez avec le bouton "
"droit sur le dossier et choisissez {ph2}Copier comme chemin{ph3}. Sur "
"Windows 10, maintenez la touche Maj enfoncée tout en cliquant avec le bouton"
" droit."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:508
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the folder, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr ""
"{ph0}macOS:{ph1} dans le Finder, cliquez avec le bouton droit sur le "
"dossier, maintenez l'option enfoncée et choisissez {ph2}Copiez \" ... \" "
"comme chemin d'accès{ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:512
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the folder into a terminal window and its path "
"appears."
msgstr ""
"{ph0}Tout système:{ph1} faites glisser le dossier dans une fenêtre de "
"terminal et son chemin apparaît."
#: website/public/get-started/index.html:517
msgctxt "page:get-started/index.html"
msgid "In a terminal, put quotes around a path that contains spaces."
msgstr ""
"Dans un terminal, mettez des guillemets autour d'un chemin qui contient des "
"espaces."
#: website/public/get-started/index.html:524
msgctxt "page:get-started/index.html"
msgid "Use the CLI"
msgstr "Utilisez le modèle CLI"
#: website/public/get-started/index.html:525
msgctxt "page:get-started/index.html"
msgid ""
"Analyze a JavaScript or Electron application folder or ASAR archive without "
"running the app:"
msgstr ""
"Analysez un dossier d'application JavaScript ou Electron ou une archive ASAR"
" sans exécuter l'application:"
#: website/public/get-started/index.html:531
msgctxt "page:get-started/index.html"
msgid "Static application analysis"
msgstr "Analyse statique des applications"
#. {ph0}: <code>.asar</code>
#. {ph1}: <code>"D:/apps/example"</code>
#: website/public/get-started/index.html:544
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace the path with your extracted app directory or {ph0} file. On "
"Windows, a path such as {ph1} works here."
msgstr ""
"Remplacez le chemin par le répertoire de votre application extraite ou {ph0}"
" dossier. Sur Windows, un chemin tel que {ph1} travaille ici."
#: website/public/get-started/index.html:550
msgctxt "page:get-started/index.html"
msgid "Where do I find an app's .asar file?"
msgstr "Où puis-je trouver une application .fichier asar?"
#. {ph0}: <code>resources</code>
#: website/public/get-started/index.html:551
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Electron apps usually keep it in a {ph0} folder:"
msgstr ""
"Les applications Electron le conservent généralement dans un {ph0} dossier:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >C:\Users\&lt;you&gt;\AppData\Local\Programs\&lt;App&gt;\resources\app.asar</code
#. >
#: website/public/get-started/index.html:556
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows:{ph1} {ph2}"
msgstr "{ph0}Windows:{ph1} {ph2}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >/Applications/&lt;App&gt;.app/Contents/Resources/app.asar</code >
#. {ph3}: <em>
#. {ph4}: </em>
#: website/public/get-started/index.html:562
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} {ph2} (right-click the app and choose {ph3}Show Package "
"Contents{ph4})"
msgstr ""
"{ph0}macOS:{ph1} {ph2} (faites un clic droit sur l'application et choisissez"
" {ph3}Afficher Le Contenu de l'Emballage{ph4})"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>/opt/&lt;App&gt;/resources/app.asar</code>
#: website/public/get-started/index.html:570
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} often {ph2}"
msgstr "{ph0}Linux:{ph1} souvent {ph2}"
#. {ph0}: <code>app.asar</code>
#: website/public/get-started/index.html:575
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Some apps install elsewhere. Search the app's folder for {ph0}."
msgstr ""
"Certaines applications s'installent ailleurs. Recherchez le dossier de "
"l'application pour {ph0}."
#: website/public/get-started/index.html:580
msgctxt "page:get-started/index.html"
msgid ""
"The result identifies the app, shows connections between modules and gives "
"their source locations. Connections REA cannot resolve are marked in the "
"result."
msgstr ""
"Le résultat identifie l'application, montre les connexions entre les modules"
" et donne leurs emplacements sources. Les connexions que REA ne peut pas "
"résoudre sont marquées dans le résultat."
#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:585
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "If you'd like a permanent {ph0} command in your shell:"
msgstr "Si vous souhaitez un permanent {ph0} commande dans votre shell:"
#: website/public/get-started/index.html:590
msgctxt "page:get-started/index.html"
msgid "Install the CLI"
msgstr "Installez le CLI"
#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/get-started/index.html:602
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Continue with the JavaScript application guide{ph1}"
msgstr "{ph0}Continuez avec le guide d'application JavaScript{ph1}"
#: website/public/get-started/index.html:610
msgctxt "page:get-started/index.html"
msgid "Set up native analysis"
msgstr "Mettre en place une analyse des programmes en code machine"
#: website/public/get-started/index.html:611
msgctxt "page:get-started/index.html"
msgid ""
"Native binaries need a local analysis tool. Choose and configure one below, "
"then give REA your executable or library."
msgstr ""
"Les programmes en code machine ont besoin d'un outil d'analyse local. "
"Choisissez et configurez-en un ci-dessous, puis donnez à REA votre "
"exécutable ou bibliothèque."
#: website/public/get-started/index.html:616
msgctxt "page:get-started/index.html"
msgid "Choose a tool: Ghidra, Hopper or IDA"
msgstr "Choisissez un outil: Ghidra, Hopper ou IDA"
#: website/public/get-started/index.html:621
msgctxt "page:get-started/index.html"
msgid ""
"Use an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer on "
"Linux or macOS, on x64 or arm64. Your Ghidra installation needs a native "
"decompiler for your host architecture. Set the paths before running setup:"
msgstr ""
"Utilisez un Ghidra 12.1 existant.installation x et un JDK 64 bits 21 ou plus"
" récent sur Linux ou macOS, sur x64 ou arm64. Votre installation Ghidra "
"nécessite un décompilateur natif pour votre architecture hôte. Définissez "
"les chemins avant d'exécuter le programme d'installation:"
#: website/public/get-started/index.html:628
msgctxt "page:get-started/index.html"
msgid "Connect your Ghidra installation"
msgstr "Connectez votre installation de Ghidra"
#: website/public/get-started/index.html:631
msgctxt "page:get-started/index.html"
msgid "Ghidra connection · macOS / Linux"
msgstr "Ghidra de la connexion · macOS / Linux"
#: website/public/get-started/index.html:646
msgctxt "page:get-started/index.html"
msgid ""
"Replace both paths with your existing installations. Setup checks them and "
"records valid settings for your selected client. On Linux arm64, you may "
"need to build Ghidra's native decompiler separately."
msgstr ""
"Remplacez les deux chemins par vos installations existantes. Le programme "
"d'installation les vérifie et enregistre les paramètres valides pour le "
"client sélectionné. Sur Linux arm64, vous devrez peut-être créer séparément "
"le décompilateur natif de Ghidra."
#: website/public/get-started/index.html:654
msgctxt "page:get-started/index.html"
msgid "Connect Ghidra on Windows"
msgstr "Connectez le modèle Ghidra sur le modèle Windows"
#: website/public/get-started/index.html:655
msgctxt "page:get-started/index.html"
msgid ""
"Windows x64 has experimental, read-only support for native x86 and x64 PE "
"applications and DLLs on fixed local NTFS drives. Use an existing Ghidra "
"12.1.x installation and a 64-bit JDK 21 or newer:"
msgstr ""
"Windows x64 a un support expérimental en lecture seule pour les applications"
" et DLL natives x86 et x64 PE sur des lecteurs NTFS locaux fixes. Utilisez "
"un Ghidra 12.1 existant.installation x et un JDK 64 bits 21 ou plus récent:"
#: website/public/get-started/index.html:663
msgctxt "page:get-started/index.html"
msgid "Ghidra connection · Windows PowerShell"
msgstr "Ghidra connexion · Windows PowerShell"
#: website/public/get-started/index.html:678
msgctxt "page:get-started/index.html"
msgid ""
"Replace the two paths with your installations, then review setup's plan."
msgstr ""
"Remplacez les deux chemins par vos installations, puis passez en revue le "
"plan de configuration."
#: website/public/get-started/index.html:688
msgctxt "page:get-started/index.html"
msgid ""
"Connect Hopper on macOS or Linux. Run the setup command above; it detects an"
" existing installation or offers an installation plan for your approval."
msgstr ""
"Connectez Hopper sur macOS ou Linux. Exécutez la commande d'installation ci-"
"dessus; il détecte une installation existante ou propose un plan "
"d'installation pour votre approbation."
#: website/public/get-started/index.html:693
msgctxt "page:get-started/index.html"
msgid ""
"On macOS, complete Hopper's first-run choice of demo mode or license "
"activation before an unattended analysis."
msgstr ""
"Sur macOS, effectuez le choix de première exécution de Hopper entre le mode "
"de démonstration ou l'activation de la licence avant une analyse sans "
"surveillance."
#: website/public/get-started/index.html:702
msgctxt "page:get-started/index.html"
msgid ""
"The verified IDA setups use Windows, with an existing MCP registration for "
"an attached GUI or a headless database. Linux and macOS headless analysis "
"remains unverified."
msgstr ""
"Les configurations IDA vérifiées utilisent Windows, avec un enregistrement "
"MCP existant pour une interface graphique attachée ou une base de données "
"sans en-tête. Les analyses sans tête Linux et macOS restent non vérifiées."
#: website/public/get-started/index.html:708
msgctxt "page:get-started/index.html"
msgid "Connect an existing IDA MCP registration"
msgstr "Connecter un enregistrement IDA existant à un MCP"
#. {ph0}: <code>command</code>
#. {ph1}: <code>args</code>
#. {ph2}: <code>env</code>
#. {ph3}: <code>mcpServers</code>
#. {ph4}: <code>ida-pro-mcp</code>
#: website/public/get-started/index.html:711
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Keep the upstream server's working {ph0}, {ph1} and optional {ph2} in a JSON"
" file. An existing {ph3} object with an {ph4} entry is also accepted. Point "
"REA at that file before setup:"
msgstr ""
"Maintenir le fonctionnement du serveur en amont {ph0}, {ph1} et facultatif "
"{ph2} dans un fichier JSON. Un existant {ph3} objet avec un {ph4} l'entrée "
"est également acceptée. Pointez REA sur ce fichier avant l'installation:"
#: website/public/get-started/index.html:720
msgctxt "page:get-started/index.html"
msgid "IDA connection · Windows PowerShell"
msgstr "IDA connexion · Windows PowerShell"
#. {ph0}: <code>"mode": "headless"</code>
#: website/public/get-started/index.html:735
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The attached profile uses upstream legacy 1.4.0 tools with the original "
"binary already open in IDA. The headless profile uses the upstream database-"
"supervisor API and a registration with {ph0}; real verification covers an "
"IDA 9.3 Windows x64 supervisor. Doctor checks the registration without "
"starting IDA."
msgstr ""
"Le profil joint utilise des outils hérités 1.4.0 en amont avec le binaire "
"d'origine déjà ouvert dans IDA . Le profil sans tête utilise l'API de "
"superviseur de base de données en amont et un enregistrement auprès de "
"{ph0}; la vérification réelle couvre un superviseur IDA 9.3 Windows x64. Le "
"médecin vérifie l'enregistrement sans démarrer IDA ."
#. {ph0}: <code>--provider ida</code>
#. {ph1}: <code>REA_IDA_MCP_CONFIG</code>
#: website/public/get-started/index.html:744
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Give REA the original executable path, with {ph0} in a CLI query. For an "
"agent, include {ph1} in the REA registration's environment and select IDA "
"when opening the binary."
msgstr ""
"Donnez à REA le chemin de l'exécutable d'origine, avec {ph0} dans une "
"requête CLI. Pour un agent, inclure {ph1} dans l'environnement "
"d'enregistrement de REA et sélectionnez IDA lors de l'ouverture du binaire."
#: website/public/get-started/index.html:756
msgctxt "page:get-started/index.html"
msgid "For an existing Ghidra setup, inspect a function with:"
msgstr "Pour une configuration Ghidra existante, inspectez une fonction avec:"
#: website/public/get-started/index.html:761
msgctxt "page:get-started/index.html"
msgid "Function analysis"
msgstr "Analyse de fonction"
#. {ph0}: <code>main</code>
#: website/public/get-started/index.html:774
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Replace {ph0} with the function name or address you want to inspect."
msgstr ""
"Remplacer {ph0} avec le nom ou l'adresse de la fonction que vous souhaitez "
"inspecter."
#: website/public/get-started/index.html:779
msgctxt "page:get-started/index.html"
msgid "How native analysis sessions work"
msgstr ""
"Fonctionnement de l'analyse des sessions de programmes en code machine"
#: website/public/get-started/index.html:780
msgctxt "page:get-started/index.html"
msgid ""
"Each CLI command imports and analyzes the binary, then closes its session. "
"Your agent's MCP queries reuse the imported binary while that session is "
"open."
msgstr ""
"Chaque commande CLI importe et analyse le binaire, puis ferme sa session. "
"Les requêtes MCP de votre agent réutilisent le binaire importé pendant que "
"cette session est ouverte."
#. {ph0}: <a href="../guides/native/">
#. {ph1}: </a>
#: website/public/get-started/index.html:786
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Follow a native analysis example{ph1} to see how the function result "
"leads to a recovered calculation."
msgstr ""
"{ph0}Suivez un exemple d'analyse de programmes en code machine{ph1} pour "
"voir comment le résultat de la fonction conduit à un calcul récupéré."
#: website/public/get-started/index.html:793
msgctxt "page:get-started/index.html"
msgid "Getting help"
msgstr "Obtenir de l'aide"
#: website/public/get-started/index.html:794
msgctxt "page:get-started/index.html"
msgid "If your agent doesn't see REA"
msgstr "Si votre agent ne voit pas REA"
#. {ph0}: <code>doctor</code>
#: website/public/get-started/index.html:795
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Restart or reconnect the client after setup. Check its REA connection with "
"{ph0}; for Codex:"
msgstr ""
"Redémarrez ou reconnectez le client après l'installation. Vérifiez sa "
"connexion REA avec {ph0}; pour le modèle Codex :"
#: website/public/get-started/index.html:801
msgctxt "page:get-started/index.html"
msgid "Check one client"
msgstr "Vérifiez un client"
#: website/public/get-started/index.html:813
msgctxt "page:get-started/index.html"
msgid "If a provider needs attention"
msgstr "Si un fournisseur a besoin d'attention"
#: website/public/get-started/index.html:814
msgctxt "page:get-started/index.html"
msgid "Check the provider you're using. For Ghidra:"
msgstr "Vérifiez le fournisseur que vous utilisez. Pour Ghidra:"
#: website/public/get-started/index.html:817
msgctxt "page:get-started/index.html"
msgid "Check one provider"
msgstr "Vérifiez un fournisseur"
#: website/public/get-started/index.html:829
msgctxt "page:get-started/index.html"
msgid "The report gives the failed check and a suggested next step."
msgstr ""
"Le rapport indique l'échec de la vérification et une suggestion d'étape "
"suivante."
#. {ph0}: <a href="../faq/">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:831
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA FAQ{ph1}{ph2}Quick answers on updates, agents and analysis.{ph3}"
msgstr ""
"{ph0} FAQ SUR le modèle REA{ph1}{ph2}Réponses rapides sur les mises à jour, "
"les agents et les analyses.{ph3}"
#. {ph0}: <a href="../guides/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/get-started/index.html:835
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Choose an investigation guide{ph1}{ph2}Worked examples for a binary, an"
" Electron app and a browser.{ph3}"
msgstr ""
"{ph0}Choisissez un guide d'enquête{ph1}{ph2}Exemples travaillés pour un "
"binaire, une application Electron et un navigateur.{ph3}"
#. {ph0}: <a href="https://github.com/morluto/rea/issues">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:842
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}GitHub issues{ph1}{ph2}Report a problem with the command and "
"diagnostics.{ph3}"
msgstr ""
"{ph0} Problèmes liés à GitHub{ph1}{ph2}Signalez un problème avec la commande"
" et les diagnostics.{ph3}"
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:846
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA community{ph1}{ph2}Questions, investigations and work in "
"progress.{ph3}"
msgstr ""
"{ph0} Communauté de REA{ph1}{ph2}Questions, enquêtes et travaux en "
"cours.{ph3}"
#: website/public/get-started/index.html:6
msgctxt "page:get-started/index.html"
msgid "Install REA and Set Up Your Coding Agent"
msgstr "Installez REA et Configurez Votre Agent de codage"
#: website/public/get-started/index.html:7
msgctxt "page:get-started/index.html"
msgid ""
"Connect REA to your coding agent or inspect a local JavaScript or Electron "
"app from the terminal. Setup, first questions and native provider guides."
msgstr ""
"Connectez REA à votre agent de codage ou inspectez une application locale "
"JavaScript ou Electron à partir du terminal. Configuration, premières "
"questions et guides du fournisseur natif."
#: website/public/get-started/index.html:199
msgctxt "page:get-started/index.html"
msgid "Copy Node.js version check"
msgstr "Copier la vérification de la version Node.js"
#: website/public/get-started/index.html:220
msgctxt "page:get-started/index.html"
msgid "Copy Node.js installation command for Windows"
msgstr "Copier Node.js commande d'installation pour Windows"
#: website/public/get-started/index.html:243
msgctxt "page:get-started/index.html"
msgid "Copy PowerShell execution policy command"
msgstr "Copier la commande de stratégie d'exécution PowerShell"
#: website/public/get-started/index.html:259
msgctxt "page:get-started/index.html"
msgid "Copy Homebrew Node.js installation command"
msgstr "Copier Homebrew Node.js commande d'installation"
#: website/public/get-started/index.html:274
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for macOS"
msgstr "Copier la commande d'installation fnm pour macOS"
#: website/public/get-started/index.html:289
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for macOS"
msgstr "Copier Node.js 24 commandes pour macOS"
#: website/public/get-started/index.html:305
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for Linux"
msgstr "Copier la commande d'installation fnm pour Linux"
#: website/public/get-started/index.html:324
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for Linux"
msgstr "Copier Node.js 24 commandes pour Linux"
#: website/public/get-started/index.html:347
msgctxt "page:get-started/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/get-started/index.html:356
msgctxt "page:get-started/index.html"
msgid "REA getting started guide"
msgstr "Guide de démarrage du REA"
#: website/public/get-started/index.html:410
msgctxt "page:get-started/index.html"
msgid "Copy REA installation prompt"
msgstr "Copier l'invite d'installation de REA"
#: website/public/get-started/index.html:456
msgctxt "page:get-started/index.html"
msgid "Copy agent setup command"
msgstr "Commande de configuration de l'agent de copie"
#: website/public/get-started/index.html:532
msgctxt "page:get-started/index.html"
msgid "Copy JavaScript analysis command"
msgstr "Copier la commande d'analyse JavaScript"
#: website/public/get-started/index.html:591
msgctxt "page:get-started/index.html"
msgid "Copy CLI installation command"
msgstr "Copier la commande d'installation de CLI"
#: website/public/get-started/index.html:632
msgctxt "page:get-started/index.html"
msgid "Copy ghidra connection · macos / linux"
msgstr "Copier la connexion ghidra · macos / linux"
#: website/public/get-started/index.html:664
msgctxt "page:get-started/index.html"
msgid "Copy Ghidra connection for Windows PowerShell"
msgstr "Copiez la connexion Ghidra pour le PowerShell Windows"
#: website/public/get-started/index.html:721
msgctxt "page:get-started/index.html"
msgid "Copy IDA connection for Windows PowerShell"
msgstr "Copiez la connexion IDA pour le PowerShell Windows"
#: website/public/get-started/index.html:762
msgctxt "page:get-started/index.html"
msgid "Copy native function analysis command"
msgstr "Copier la commande d'analyse de fonction native"
#: website/public/get-started/index.html:802
msgctxt "page:get-started/index.html"
msgid "Copy client diagnosis command"
msgstr "Commande de diagnostic de client de copie"
#: website/public/get-started/index.html:818
msgctxt "page:get-started/index.html"
msgid "Copy provider diagnosis command"
msgstr "Commande de diagnostic du fournisseur de copie"
#: website/public/get-started/index.html:869
msgctxt "page:get-started/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/guides/browser/index.html:99
msgctxt "page:guides/browser/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/browser/index.html:181
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Browser observation"
msgstr ""
"{ph0}Accueil{ph1} / {ph2}Guides Touristiques{ph3} / Observation du "
"navigateur"
#. {ph0}: <br />
#: website/public/guides/browser/index.html:185
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "See what happens{ph0}when you click."
msgstr "Voyez ce qui se passe{ph0}lorsque vous cliquez."
#: website/public/guides/browser/index.html:186
msgctxt "page:guides/browser/index.html"
msgid ""
"Use a small browser app to connect an action, its network request and the "
"JavaScript that builds a download."
msgstr ""
"Utilisez une petite application de navigateur pour connecter une action, sa "
"demande réseau et le JavaScript qui génère un téléchargement."
#: website/public/guides/browser/index.html:193
msgctxt "page:guides/browser/index.html"
msgid "In this guide"
msgstr "Dans ce guide"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:195
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}L'exemple{ph1}"
#. {ph0}: <a href="#prepare">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:196
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Open the browser{ph1}"
msgstr "{ph0}Ouvrez le navigateur{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:197
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Demandez à votre agent{ph1}"
#. {ph0}: <a href="#capture">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:198
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Capture from CLI{ph1}"
msgstr "{ph0}Capture à partir de CLI{ph1}"
#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:199
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Read the request and script{ph1}"
msgstr "{ph0}Lire la requête et le script{ph1}"
#: website/public/guides/browser/index.html:204
msgctxt "page:guides/browser/index.html"
msgid "What happens when you click Export?"
msgstr "Que se passe-t-il lorsque vous cliquez sur Exporter?"
#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <strong>
#. {ph3}: </strong>
#. {ph4}: <code>notes.json</code>
#: website/public/guides/browser/index.html:205
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The {ph0}Notes browser example{ph1} has an {ph2}Export notes{ph3} button. "
"Clicking it loads {ph4}, formats the two notes as CSV, and starts a "
"download."
msgstr ""
"Les {ph0}Exemple de navigateur de notes{ph1} a une {ph2}Exporter des "
"notes{ph3} bouton. Cliquer dessus se charge {ph4}, formate les deux notes en"
" CSV et lance un téléchargement."
#: website/public/guides/browser/index.html:213
msgctxt "page:guides/browser/index.html"
msgid "From the click to the CSV download"
msgstr "Du clic au téléchargement CSV"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/browser/index.html:215
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}01 · You{ph1}{ph2}Click Export notes{ph3}{ph4}Perform the action in "
"your browser while the capture is running.{ph5}"
msgstr ""
"{ph0}01 * Vous{ph1}{ph2}Cliquez sur Exporter les notes{ph3}{ph4}Effectuez "
"l'action dans votre navigateur pendant que la capture est en cours "
"d'exécution.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/browser/index.html:223
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}02 · REA{ph1}{ph2}Record the request{ph3}{ph4}Capture the request URL, "
"response status and JSON structure from the selected page.{ph5}"
msgstr ""
"{ph0}02 · REA{ph1}{ph2}Enregistrer la demande{ph3}{ph4}Capturez l'URL de la "
"demande, l'état de la réponse et la structure JSON de la page "
"sélectionnée.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>fetch("./notes.json")</code>
#. {ph6}: <code>export.js</code>
#. {ph7}: </span >
#: website/public/guides/browser/index.html:231
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}03 · Your agent{ph1}{ph2}Read the export code{ph3}{ph4}Connect the "
"observed request to {ph5} in {ph6}.{ph7}"
msgstr ""
"{ph0}03 · Votre agent{ph1}{ph2}Lire le code d'exportation{ph3}{ph4}Connectez"
" la requête observée à {ph5} dans {ph6}.{ph7}"
#: website/public/guides/browser/index.html:244
msgctxt "page:guides/browser/index.html"
msgid "Start the capture before clicking Export notes."
msgstr "Démarrez la capture avant de cliquer sur Exporter les notes."
#: website/public/guides/browser/index.html:250
msgctxt "page:guides/browser/index.html"
msgid "Open Chrome with remote debugging"
msgstr "Ouvrez Chrome avec le débogage à distance"
#: website/public/guides/browser/index.html:251
msgctxt "page:guides/browser/index.html"
msgid ""
"Open the hosted Notes example with a separate browser profile and a local "
"debugging port. On Linux:"
msgstr ""
"Ouvrez l'exemple hosted Notes avec un profil de navigateur distinct et un "
"port de débogage local. Sur le modèle Linux :"
#: website/public/guides/browser/index.html:257
msgctxt "page:guides/browser/index.html"
msgid "Start the example browser"
msgstr "Démarrez l'exemple de navigateur"
#: website/public/guides/browser/index.html:258
#: website/public/guides/browser/index.html:290
#: website/public/guides/browser/index.html:324
#: website/public/guides/browser/index.html:343
#: website/public/guides/browser/index.html:408
msgctxt "page:guides/browser/index.html"
msgid "Copy"
msgstr "Copier"
#: website/public/guides/browser/index.html:272
msgctxt "page:guides/browser/index.html"
msgid ""
"Use your installed browser's executable path on macOS or Windows. You can "
"replace the page URL with another page you want to inspect."
msgstr ""
"Utilisez le chemin d'accès exécutable de votre navigateur installé sur macOS"
" ou Windows . Vous pouvez remplacer l'URL de la page par une autre page que "
"vous souhaitez inspecter."
#: website/public/guides/browser/index.html:277
msgctxt "page:guides/browser/index.html"
msgid ""
"REA connects to this existing browser. You keep control of the page, perform"
" the action, and close the browser when finished."
msgstr ""
"REA se connecte à ce navigateur existant. Vous gardez le contrôle de la "
"page, effectuez l'action et fermez le navigateur lorsque vous avez terminé."
#: website/public/guides/browser/index.html:283
msgctxt "page:guides/browser/index.html"
msgid "Ask your agent to watch one action"
msgstr "Demandez à votre agent de regarder une action"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/browser/index.html:286
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="browser-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/browser/index.html:299
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this page while I click Export notes. "
"What request does it make, and how is the CSV built?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour inspecter cette page pendant que je clique"
" sur Exporter les notes. Quelle demande fait-il et comment le CSV est-il "
"construit?{ph3}{ph4}{ph5}"
#. {ph0}: <code>http://127.0.0.1:9222</code>
#: website/public/guides/browser/index.html:307
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Example prompt. Give your agent the debugging endpoint, {ph0}, and the page "
"URL. Let it start the capture before you click."
msgstr ""
"Exemple d'invite. Donnez à votre agent le point de terminaison de débogage, "
"{ph0}, et l'URL de la page. Laissez-le démarrer la capture avant de cliquer."
#: website/public/guides/browser/index.html:312
msgctxt "page:guides/browser/index.html"
msgid ""
"Your agent discovers the page target, starts an observation window, and "
"reads the resulting evidence. It can then inspect the script behind the "
"export."
msgstr ""
"Votre agent découvre la cible de la page, démarre une fenêtre d'observation "
"et lit les preuves résultantes. Il peut ensuite inspecter le script derrière"
" l'exportation."
#: website/public/guides/browser/index.html:319
msgctxt "page:guides/browser/index.html"
msgid "Or capture from the terminal"
msgstr "Ou capture depuis le terminal"
#: website/public/guides/browser/index.html:320
msgctxt "page:guides/browser/index.html"
msgid "Find the page's target ID:"
msgstr "Trouver l'ID cible de la page:"
#: website/public/guides/browser/index.html:323
msgctxt "page:guides/browser/index.html"
msgid "Find the page"
msgstr "Trouver la page"
#. {ph0}: <code>TARGET_ID</code>
#: website/public/guides/browser/index.html:336
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Choose the target with the Notes example URL. Replace {ph0} below with its "
"ID, then run:"
msgstr ""
"Choisissez la cible avec l'URL de l'exemple de Notes. Remplacer {ph0} ci-"
"dessous avec son identifiant, puis exécutez:"
#: website/public/guides/browser/index.html:342
msgctxt "page:guides/browser/index.html"
msgid "Capture the next ten seconds"
msgstr "Capturez les dix prochaines secondes"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/browser/index.html:358
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Let the command connect for a few seconds, then click {ph0}Export notes{ph1}"
" in that browser. The result arrives after the observation window ends."
msgstr ""
"Laissez la commande se connecter pendant quelques secondes, puis cliquez sur"
" {ph0}Exporter des notes{ph1} dans ce navigateur. Le résultat arrive après "
"la fin de la fenêtre d'observation."
#: website/public/guides/browser/index.html:363
msgctxt "page:guides/browser/index.html"
msgid ""
"The captured result includes the selected page, network activity during that"
" window, and the shape of the JSON response. Earlier requests are outside "
"this capture."
msgstr ""
"Le résultat capturé inclut la page sélectionnée, l'activité réseau au cours "
"de cette fenêtre et la forme de la réponse JSON. Les demandes antérieures "
"sont en dehors de cette capture."
#: website/public/guides/browser/index.html:370
msgctxt "page:guides/browser/index.html"
msgid "Read the request and export script"
msgstr "Lire la requête et exporter le script"
#: website/public/guides/browser/index.html:373
msgctxt "page:guides/browser/index.html"
msgid "Recorded with REA 4.1.0 on the local Notes example"
msgstr "Enregistré avec REA 4.1.0 sur l'exemple des notes locales"
#: website/public/guides/browser/index.html:378
msgctxt "page:guides/browser/index.html"
msgid "Captured fact"
msgstr "Fait capturé"
#: website/public/guides/browser/index.html:379
msgctxt "page:guides/browser/index.html"
msgid "Value"
msgstr "Valeur"
#: website/public/guides/browser/index.html:384
msgctxt "page:guides/browser/index.html"
msgid "Request"
msgstr "Demande"
#: website/public/guides/browser/index.html:388
msgctxt "page:guides/browser/index.html"
msgid "Response"
msgstr "Réponse"
#: website/public/guides/browser/index.html:392
msgctxt "page:guides/browser/index.html"
msgid "Request initiator"
msgstr "Initiateur de la demande"
#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:393
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · script"
msgstr "{ph0} * scénario"
#: website/public/guides/browser/index.html:396
msgctxt "page:guides/browser/index.html"
msgid "Response structure"
msgstr "Structure de la réponse"
#. {ph0}: <code>notes[]</code>
#. {ph1}: <code>id</code>
#. {ph2}: <code>title</code>
#: website/public/guides/browser/index.html:397
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} with {ph1} and {ph2} fields"
msgstr "{ph0} avec {ph1} et {ph2} champs"
#: website/public/guides/browser/index.html:407
msgctxt "page:guides/browser/index.html"
msgid "Read the loaded scripts"
msgstr "Lire les scripts chargés"
#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:421
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The request identifies the data source, and REA records {ph0} as its "
"initiator. Read the captured script source to see how the data is used:"
msgstr ""
"La demande identifie la source de données et les enregistrements REA {ph0} "
"comme son initiateur. Lisez la source du script capturé pour voir comment "
"les données sont utilisées:"
#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:441
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The download is constructed in the page using the JSON response. The CSV "
"formatting step comes from the script; the network capture establishes that "
"this click requested {ph0}."
msgstr ""
"Le téléchargement est construit dans la page à l'aide de la réponse JSON. "
"L'étape de formatage CSV provient du script; la capture réseau établit que "
"ce clic demandé {ph0}."
#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:457
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Find the script that requests {ph0}. How does it escape titles containing "
"commas or quotation marks?"
msgstr ""
"Trouvez le script qui demande {ph0}. Comment échappe-t-il les titres "
"contenant des virgules ou des guillemets?"
#. {ph0}: <a href="../javascript/">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:462
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"For an installed JavaScript or Electron app, continue with the "
"{ph0}application workflow{ph1} to follow files and process boundaries."
msgstr ""
"Pour une application JavaScript ou Electron installée, continuez avec le "
"{ph0}flux de travail de l'application{ph1} pour suivre les limites des "
"fichiers et des processus."
#: website/public/guides/browser/index.html:6
msgctxt "page:guides/browser/index.html"
msgid "Browser and Network Analysis — REA"
msgstr "Analyse du navigateur et du réseau-REA"
#: website/public/guides/browser/index.html:7
msgctxt "page:guides/browser/index.html"
msgid ""
"Observe a Notes export with REA: select a browser page, capture a click, "
"inspect the request and follow the export script."
msgstr ""
"Observez une exportation de notes avec REA : sélectionnez une page de "
"navigateur, capturez un clic, inspectez la demande et suivez le script "
"d'exportation."
#: website/public/guides/browser/index.html:192
msgctxt "page:guides/browser/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/guides/browser/index.html:202
msgctxt "page:guides/browser/index.html"
msgid "Browser observation"
msgstr "Observation du navigateur"
#: website/public/guides/browser/index.html:258
msgctxt "page:guides/browser/index.html"
msgid "Copy start the example browser"
msgstr "Copier démarrez l'exemple de navigateur"
#: website/public/guides/browser/index.html:290
msgctxt "page:guides/browser/index.html"
msgid "Copy example prompt"
msgstr "Copier l'exemple d'invite"
#: website/public/guides/browser/index.html:324
msgctxt "page:guides/browser/index.html"
msgid "Copy find the page"
msgstr "Copier trouver la page"
#: website/public/guides/browser/index.html:343
msgctxt "page:guides/browser/index.html"
msgid "Copy capture the next ten seconds"
msgstr "Copie capture les dix prochaines secondes"
#: website/public/guides/browser/index.html:408
msgctxt "page:guides/browser/index.html"
msgid "Copy read the loaded scripts"
msgstr "Copier lire les scripts chargés"
#: website/public/guides/browser/index.html:485
msgctxt "page:guides/browser/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/guides/index.html:99
msgctxt "page:guides/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/guides/index.html:181
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "{ph0}Home{ph1} / Guides"
msgstr "{ph0}Accueil{ph1} / Guides"
#: website/public/guides/index.html:182
msgctxt "page:guides/index.html"
msgid "REA guides."
msgstr "Guides d'utilisation REA."
#: website/public/guides/index.html:183
msgctxt "page:guides/index.html"
msgid ""
"Analyze a native function, an Electron export or a browser request. Each "
"guide includes a prompt, code and results."
msgstr ""
"Analysez une fonction native, un export Electron ou une requête de "
"navigateur. Chaque guide comprend une invite, un code et des résultats."
#: website/public/guides/index.html:190
msgctxt "page:guides/index.html"
msgid "First investigation"
msgstr "Première enquête"
#: website/public/guides/index.html:192
msgctxt "page:guides/index.html"
msgid "Set up REA"
msgstr "Mettre en place REA"
#: website/public/guides/index.html:193
msgctxt "page:guides/index.html"
msgid "Connect your coding agent or use REA from the terminal."
msgstr "Connectez votre agent de codage ou utilisez REA à partir du terminal."
#: website/public/guides/index.html:194
msgctxt "page:guides/index.html"
msgid "Get started with REA"
msgstr "Premiers pas avec REA"
#: website/public/guides/index.html:198
msgctxt "page:guides/index.html"
msgid "Native binaries"
msgstr "Programmes en code machine"
#: website/public/guides/index.html:200
msgctxt "page:guides/index.html"
msgid "Recover a sound-pan calculation"
msgstr "Récupérer un calcul de la position du son gauche/droite"
#: website/public/guides/index.html:201
msgctxt "page:guides/index.html"
msgid ""
"Start with a Windows game executable. Inspect instructions, follow a caller,"
" read numeric constants and check the recovered C."
msgstr ""
"Commencez avec un exécutable de jeu Windows. Inspectez les instructions, "
"suivez un appelant, lisez les constantes numériques et vérifiez le C "
"récupéré."
#: website/public/guides/index.html:211
msgctxt "page:guides/index.html"
msgid "Native analysis guide"
msgstr "Guide d'analyse des programmes en code machine"
#: website/public/guides/index.html:215
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript & Electron"
#: website/public/guides/index.html:217
msgctxt "page:guides/index.html"
msgid "Follow a CSV export"
msgstr "Suivre une exportation CSV"
#: website/public/guides/index.html:218
msgctxt "page:guides/index.html"
msgid ""
"A small Notes app spreads one feature across the renderer, preload and main "
"process. Use REA to connect the API, IPC channel and file writer."
msgstr ""
"Une application de petites notes répartit une fonctionnalité sur le moteur "
"de rendu, le préchargement et le processus principal. Utilisez REA pour "
"connecter l'API, le canal IPC et le graveur de fichiers."
#: website/public/guides/index.html:228
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron guide"
msgstr "Guide des modèles JavaScript et Electron"
#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a>
#: website/public/guides/index.html:231
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "For a larger packaged app, follow {ph0}Notion's clipboard bridge{ph1}."
msgstr ""
"Pour une application packagée plus grande, suivez {ph0} Pont de presse-"
"papiers de Notion{ph1}."
#: website/public/guides/index.html:238
msgctxt "page:guides/index.html"
msgid "Browser behavior"
msgstr "Comportement du navigateur"
#: website/public/guides/index.html:240
msgctxt "page:guides/index.html"
msgid "Observe a click"
msgstr "Observez un clic"
#: website/public/guides/index.html:241
msgctxt "page:guides/index.html"
msgid ""
"Open a working Notes example, capture an export request and find the code "
"that turns its response into a download."
msgstr ""
"Ouvrez un exemple de notes de travail, capturez une demande d'exportation et"
" recherchez le code qui transforme sa réponse en téléchargement."
#: website/public/guides/index.html:250
msgctxt "page:guides/index.html"
msgid "Browser observation guide"
msgstr "Guide d'observation du navigateur"
#: website/public/guides/index.html:6
msgctxt "page:guides/index.html"
msgid "Reverse Engineering Guides — REA"
msgstr "Guides d'ingénierie inverse-REA"
#: website/public/guides/index.html:7
msgctxt "page:guides/index.html"
msgid ""
"Learn REA through short worked examples: a native calculation, an Electron "
"CSV export and a browser request."
msgstr ""
"Apprenez REA à travers de courts exemples travaillés: un calcul natif, un "
"export Electron CSV et une requête de navigateur."
#: website/public/guides/index.html:269
msgctxt "page:guides/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/guides/javascript/index.html:99
msgctxt "page:guides/javascript/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/javascript/index.html:181
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / JavaScript & Electron"
msgstr ""
"{ph0}Accueil{ph1} / {ph2}Guides Touristiques{ph3} / JavaScript & Electron"
#. {ph0}: <br />
#: website/public/guides/javascript/index.html:185
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "Trace an Electron{ph0}CSV export."
msgstr "Tracer un Electron{ph0}CSV exporter."
#: website/public/guides/javascript/index.html:186
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow a button click from the page API, through Electron IPC, to the CSV "
"file writer."
msgstr ""
"Suivez un clic de bouton depuis l'API de la page, via Electron IPC, vers le "
"graveur de fichiers CSV."
#: website/public/guides/javascript/index.html:193
msgctxt "page:guides/javascript/index.html"
msgid "In this guide"
msgstr "Dans ce guide"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:195
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}L'exemple{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:196
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Demandez à votre agent{ph1}"
#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:197
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Trace the export code{ph1}"
msgstr "{ph0}Tracer le code d'exportation{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:198
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Try the example{ph1}"
msgstr "{ph0}Essayez l'exemple{ph1}"
#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:199
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Inspect the CSV writer{ph1}"
msgstr "{ph0}Inspectez le graveur CSV{ph1}"
#: website/public/guides/javascript/index.html:204
msgctxt "page:guides/javascript/index.html"
msgid "Where does “Export notes” go?"
msgstr "Où va “Exporter les notes\"?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/javascript/index.html:205
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"This guide uses a small Electron app. Clicking {ph0}Export notes{ph1} calls "
"an API in the page, crosses into the main process, and writes a CSV. The "
"behavior is spread across several files."
msgstr ""
"Ce guide utilise une petite application Electron. En cliquant {ph0}Exporter "
"des notes{ph1} appelle une API dans la page, traverse le processus principal"
" et écrit un CSV . Le comportement est réparti sur plusieurs fichiers."
#: website/public/guides/javascript/index.html:212
msgctxt "page:guides/javascript/index.html"
msgid "The CSV export across Electron processes"
msgstr "L'exportation de CSV à travers les processus Electron"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes.exportCsv()</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>renderer.js</code>
#. {ph7}: <code>preload.js</code>
#. {ph8}: </span >
#: website/public/guides/javascript/index.html:216
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Renderer → preload{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} calls the API exposed "
"by {ph7}.{ph8}"
msgstr ""
"{ph0}Moteur de rendu → préchargement{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} appelle "
"l'API exposée par {ph7}.{ph8}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes:export</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:224
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Between processes{ph1}{ph2}{ph3}{ph4}{ph5}The preload invokes an IPC "
"channel: a named message to the main process.{ph6}"
msgstr ""
"{ph0}Entre les processus{ph1}{ph2}{ph3}{ph4}{ph5}La précharge appelle un "
"canal IPC: un message nommé au processus principal.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>main.js</code>
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:232
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Main process{ph1}{ph2}An export handler{ph3}{ph4}{ph5} handles that "
"channel and calls the CSV writer.{ph6}"
msgstr ""
"{ph0}Processus principal{ph1}{ph2}Un gestionnaire "
"d'exportation{ph3}{ph4}{ph5} gère ce canal et appelle l'écrivain CSV.{ph6}"
#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>main.js</code>
#. {ph2}: <code>downloads/notes.csv</code>
#: website/public/guides/javascript/index.html:241
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} formats the notes → {ph1} writes {ph2}."
msgstr "{ph0} formate les notes → {ph1} écrit {ph2}."
#: website/public/guides/javascript/index.html:245
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA matches the literal IPC call to its handler and identifies the exposed "
"API. The path is inferred from code; a runtime capture can check what "
"executes."
msgstr ""
"REA fait correspondre l'appel IPC littéral à son gestionnaire et identifie "
"l'API exposée. Le chemin est déduit du code; une capture d'exécution peut "
"vérifier ce qui s'exécute."
#: website/public/guides/javascript/index.html:253
msgctxt "page:guides/javascript/index.html"
msgid "Ask about the CSV export"
msgstr "Renseignez - vous sur l'exportation CSV"
#. {ph0}: <a href="../../get-started/#agent">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:254
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Connect your agent to REA{ph1} and give it the app directory or ASAR "
"file:"
msgstr ""
"{ph0}Connectez votre agent à REA {ph1} et donnez-lui le répertoire de "
"l'application ou le fichier ASAR:"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/javascript/index.html:260
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/guides/javascript/index.html:264
#: website/public/guides/javascript/index.html:413
msgctxt "page:guides/javascript/index.html"
msgid "Copy"
msgstr "Copier"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="javascript-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/javascript/index.html:273
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find what happens when I export notes in this "
"app. Where is the CSV created?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour savoir ce qui se passe lorsque j'exporte "
"des notes dans cette application. Où est créé le CSV?{ph3}{ph4}{ph5}"
#. {ph0}: <code>app.asar</code>
#: website/public/guides/javascript/index.html:281
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Example prompt. Include the absolute path to the application folder or "
"{ph0}."
msgstr ""
"Exemple d'invite. Inclure le chemin absolu vers le dossier de l'application "
"ou {ph0}."
#: website/public/guides/javascript/index.html:285
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA reads the application files and builds a map of entrypoints, modules and"
" process boundaries. Your agent uses that map to narrow the investigation to"
" the export feature."
msgstr ""
"REA lit les fichiers d'application et construit une carte des points "
"d'entrée, des modules et des limites de processus. Votre agent utilise cette"
" carte pour restreindre l'enquête à la fonction d'exportation."
#: website/public/guides/javascript/index.html:292
msgctxt "page:guides/javascript/index.html"
msgid "Trace the export code"
msgstr "Tracer le code d'exportation"
#: website/public/guides/javascript/index.html:293
msgctxt "page:guides/javascript/index.html"
msgid "The page calls a small API"
msgstr "La page appelle une petite API"
#: website/public/guides/javascript/index.html:306
msgctxt "page:guides/javascript/index.html"
msgid ""
"The page knows the method name. The implementation lives in the preload, "
"which exposes it to the renderer."
msgstr ""
"La page connaît le nom de la méthode. L'implémentation vit dans la "
"précharge, ce qui l'expose au moteur de rendu."
#. {ph0}: <code>notes.exportCsv</code>
#. {ph1}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:320
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA records {ph0} and the literal channel {ph1}. It pairs that invocation "
"with the single matching handler in the main process."
msgstr ""
"Enregistrements REA {ph0} et le canal littéral {ph1}. Il associe cette "
"invocation au seul gestionnaire correspondant dans le processus principal."
#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>notes.csv</code>
#: website/public/guides/javascript/index.html:337
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Reading the handler answers the original question: {ph0} formats the notes, "
"and the main process writes {ph1} into the user's Downloads folder."
msgstr ""
"La lecture du gestionnaire répond à la question initiale: {ph0} formate les "
"notes et le processus principal écrit {ph1} dans le dossier Téléchargements "
"de l'utilisateur."
#: website/public/guides/javascript/index.html:354
msgctxt "page:guides/javascript/index.html"
msgid ""
"Recorded by REA 4.1.0 on the downloadable example below. Source locations "
"accompany the API, channel and handler findings."
msgstr ""
"Enregistré par REA 4.1.0 sur l'exemple téléchargeable ci-dessous. Les "
"emplacements sources accompagnent les résultats de l'API, du canal et du "
"gestionnaire."
#: website/public/guides/javascript/index.html:360
msgctxt "page:guides/javascript/index.html"
msgid "Analyze the example yourself"
msgstr "Analysez l'exemple vous-même"
#. {ph0}: <a class="button" href="../../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/guides/javascript/index.html:367
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Télécharger un exemple de ZIP{ph1}"
#: website/public/guides/javascript/index.html:376
msgctxt "page:guides/javascript/index.html"
msgid "Browse the six source files"
msgstr "Parcourez les six fichiers sources"
#: website/public/guides/javascript/index.html:412
msgctxt "page:guides/javascript/index.html"
msgid "Static application analysis"
msgstr "Analyse statique des applications"
#. {ph0}: <code>normalized_result.summary.ipc</code>
#. {ph1}: <code>normalized_result.graph</code>
#: website/public/guides/javascript/index.html:425
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Replace the path with the folder you unzipped. You should find one IPC "
"channel and one matching handler in {ph0}. Source locations are in {ph1}."
msgstr ""
"Remplacez le chemin par le dossier que vous avez décompressé. Vous devriez "
"trouver un canal IPC et un gestionnaire correspondant dans {ph0}. Les "
"emplacements sources sont en {ph1}."
#: website/public/guides/javascript/index.html:431
msgctxt "page:guides/javascript/index.html"
msgid ""
"For your own app, use the same command with its directory or ASAR path. An "
"agent can follow a literal string, API name or IPC channel with REA's "
"feature tracing tools."
msgstr ""
"Pour votre propre application, utilisez la même commande avec son répertoire"
" ou son chemin ASAR. Un agent peut suivre une chaîne littérale, un nom d'API"
" ou un canal IPC avec les outils de traçage des fonctionnalités de REA."
#: website/public/guides/javascript/index.html:438
msgctxt "page:guides/javascript/index.html"
msgid "Inspect the CSV writer"
msgstr "Inspectez le graveur CSV"
#. {ph0}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:440
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow {ph0} to its handler. Which inputs reach the CSV writer, and what "
"happens if writing the file fails?"
msgstr ""
"Suivre {ph0} à son gestionnaire. Quelles entrées atteignent le graveur CSV "
"et que se passe-t-il si l'écriture du fichier échoue?"
#: website/public/guides/javascript/index.html:446
msgctxt "page:guides/javascript/index.html"
msgid ""
"Use the source locations to inspect those details. Computed channel names "
"and ambiguous handlers can remain unresolved; runtime observations give you "
"another way to investigate them."
msgstr ""
"Utilisez les emplacements sources pour inspecter ces détails. Les noms de "
"canaux calculés et les gestionnaires ambigus peuvent rester non résolus; les"
" observations d'exécution vous donnent un autre moyen de les étudier."
#. {ph0}: <a href="../../showcase/notion/" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/guides/javascript/index.html:452
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow Notion's clipboard bridge{ph1} {ph2}Apply the same approach to a"
" packaged Electron app.{ph3}"
msgstr ""
"{ph0}Suivez le pont du presse-papiers de Notion{ph1} {ph2}Appliquez la même "
"approche à une application Electron packagée.{ph3}"
#. {ph0}: <a href="../browser/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:458
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Observe a browser export{ph1}{ph2}Capture a real click and see which "
"request it makes.{ph3}"
msgstr ""
"{ph0}Observer une exportation de navigateur{ph1}{ph2}Capturez un vrai clic "
"et voyez quelle demande il fait.{ph3}"
#. {ph0}: <a href="../native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:464
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow a native function{ph1}{ph2}Continue into a binary when a feature"
" depends on native code.{ph3}"
msgstr ""
"{ph0}Suivre une fonction native{ph1}{ph2}Continuez dans un binaire "
"lorsqu'une fonctionnalité dépend du code natif.{ph3}"
#: website/public/guides/javascript/index.html:6
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript and Electron Analysis — REA"
msgstr "JavaScript et Electron Analyse — REA"
#: website/public/guides/javascript/index.html:7
msgctxt "page:guides/javascript/index.html"
msgid ""
"Trace a Notes CSV export through a renderer API, preload and IPC handler "
"with REA. Includes downloadable example files and a verified analysis "
"result."
msgstr ""
"Tracez une exportation de Notes CSV via une API de rendu, un préchargement "
"et un gestionnaire IPC avec REA . Inclut des fichiers d'exemple "
"téléchargeables et un résultat d'analyse vérifié."
#: website/public/guides/javascript/index.html:192
msgctxt "page:guides/javascript/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/guides/javascript/index.html:202
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript & Electron"
#: website/public/guides/javascript/index.html:264
msgctxt "page:guides/javascript/index.html"
msgid "Copy example prompt"
msgstr "Copier l'exemple d'invite"
#: website/public/guides/javascript/index.html:413
msgctxt "page:guides/javascript/index.html"
msgid "Copy static application analysis"
msgstr "Copie de l'analyse statique des applications"
#: website/public/guides/javascript/index.html:490
msgctxt "page:guides/javascript/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/guides/native/index.html:99
msgctxt "page:guides/native/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/native/index.html:181
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Native analysis"
msgstr ""
"{ph0}Accueil{ph1} / {ph2}Guides Touristiques{ph3} / Analyse de programmes en"
" code machine"
#. {ph0}: <br />
#: website/public/guides/native/index.html:184
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "Recover DX-Ball's{ph0}sound-pan calculation."
msgstr ""
"Récupérez les DX-Ball{ph0}calcul de la position sonore gauche / droite."
#: website/public/guides/native/index.html:185
msgctxt "page:guides/native/index.html"
msgid ""
"Inspect the original instructions, identify the input and constants, then "
"check the recovered C."
msgstr ""
"Inspectez les instructions d'origine, identifiez l'entrée et les constantes,"
" puis vérifiez le C récupéré."
#: website/public/guides/native/index.html:192
msgctxt "page:guides/native/index.html"
msgid "In this guide"
msgstr "Dans ce guide"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/native/index.html:194
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}L'exemple{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/native/index.html:195
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Demandez à votre agent{ph1}"
#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/native/index.html:196
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Read the REA results{ph1}"
msgstr "{ph0}Lire les résultats du REA{ph1}"
#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/native/index.html:197
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Recover and check{ph1}"
msgstr "{ph0}Récupérer et vérifier{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/native/index.html:198
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Use your own binary{ph1}"
msgstr "{ph0}Utilisez votre propre binaire{ph1}"
#: website/public/guides/native/index.html:203
msgctxt "page:guides/native/index.html"
msgid "Calculate left/right sound panning"
msgstr "Calculer le positionnement du son stéréo gauche/droite"
#: website/public/guides/native/index.html:204
msgctxt "page:guides/native/index.html"
msgid ""
"In DX-Ball, a brick hit supplies a horizontal screen position. The sound "
"code turns it into a left/right panning value."
msgstr ""
"Dans DX-Ball, un coup de brique fournit une position horizontale de l'écran."
" Le code sonore le transforme en une valeur panoramique gauche/droite."
#. {ph0}: <code>0x00406400</code>
#. {ph1}: <code>__ftol()</code>
#: website/public/guides/native/index.html:208
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"The starting function, {ph0}, has a short decompiler result: a call to "
"{ph1}. REA also returns its instructions and callers, which give the agent a"
" way to investigate the missing arithmetic."
msgstr ""
"La fonction de démarrage, {ph0}, a un court résultat de décompilateur: un "
"appel à {ph1}. REA renvoie également ses instructions et ses appelants, ce "
"qui donne à l'agent un moyen d'enquêter sur l'arithmétique manquante."
#: website/public/guides/native/index.html:215
msgctxt "page:guides/native/index.html"
msgid "New to these terms?"
msgstr "Nouveau dans ces conditions?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>MOV</code>
#. {ph3}: <code>ADD</code>
#: website/public/guides/native/index.html:217
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Instructions:{ph1} the steps the processor runs, shown in readable form"
" such as {ph2} or {ph3}."
msgstr ""
"{ph0}Instructions:{ph1} les étapes exécutées par le processeur, affichées "
"sous une forme lisible telle que {ph2} ou {ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:222
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Decompiler result / pseudocode:{ph1} an analysis tool's attempt to turn"
" instructions back into C-like code. It can miss parts, as in this example."
msgstr ""
"{ph0}Résultat du décompilateur / pseudocode:{ph1} la tentative d'un outil "
"d'analyse de transformer les instructions en code de type C. Il peut manquer"
" des parties, comme dans cet exemple."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:227
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Caller:{ph1} a function that calls this one. It shows which values are "
"passed in."
msgstr ""
"{ph0}Appelant:{ph1} une fonction qui appelle celui-ci. Il montre quelles "
"valeurs sont transmises."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x00406400</code>
#: website/public/guides/native/index.html:231
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Address:{ph1} a location in the program, written in hexadecimal, such "
"as {ph2}."
msgstr ""
"{ph0}Adresse:{ph1} un emplacement dans le programme, écrit en hexadécimal, "
"tel que {ph2}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:235
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Constants:{ph1} fixed numbers stored in the program, read as raw bytes "
"and decoded."
msgstr ""
"{ph0}Constantes:{ph1} nombres fixes stockés dans le programme, lus sous "
"forme d'octets bruts et décodés."
#: website/public/guides/native/index.html:242
msgctxt "page:guides/native/index.html"
msgid "Three pieces of evidence, one calculation"
msgstr "Trois éléments de preuve, un calcul"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/native/index.html:246
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}01 · Instructions{ph1}{ph2}An integer input{ph3}{ph4}A stack read "
"supplies the value used by the floating-point instructions.{ph5}"
msgstr ""
"{ph0}01 * Instructions d'utilisation{ph1}{ph2}Une entrée "
"entière{ph3}{ph4}Une lecture de pile fournit la valeur utilisée par les "
"instructions à virgule flottante.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>20 + 30 × tile_x</code>
#. {ph6}: </span >
#: website/public/guides/native/index.html:254
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}02 · Caller{ph1}{ph2}A screen coordinate{ph3}{ph4}The brick-hit caller "
"passes {ph5}.{ph6}"
msgstr ""
"{ph0}02 · Appelant{ph1}{ph2}Une coordonnée d'écran{ph3}{ph4}L'appelant "
"frappé par la brique passe {ph5}.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>1.5625</code>
#. {ph6}: <code>500.0</code>
#. {ph7}: </span >
#: website/public/guides/native/index.html:262
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}03 · Data bytes{ph1}{ph2}The numeric constants{ph3}{ph4}Referenced "
"bytes decode to {ph5}, {ph6} and a scale value.{ph7}"
msgstr ""
"{ph0}03 * Octets de données{ph1}{ph2}Les constantes numériques{ph3}{ph4}Les "
"octets référencés décodent en {ph5}, {ph6} et une valeur d'échelle.{ph7}"
#: website/public/guides/native/index.html:274
msgctxt "page:guides/native/index.html"
msgid ""
"REA supplies the instructions, call relationship and bytes. The agent "
"interprets them together."
msgstr ""
"REA fournit les instructions, la relation fonction-appel et les octets. "
"L'agent les interprète ensemble."
#: website/public/guides/native/index.html:281
msgctxt "page:guides/native/index.html"
msgid "Ask about the behavior"
msgstr "Renseignez-vous sur le comportement"
#. {ph0}: <a href="../../get-started/#agent" >
#. {ph1}: </a >
#. {ph2}: <a href="../../get-started/#native" >
#. {ph3}: </a >
#: website/public/guides/native/index.html:282
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"After {ph0}connecting REA to your agent{ph1} and {ph2}setting up a native "
"analysis tool{ph3}, provide the local executable and a question:"
msgstr ""
"Après {ph0}connexion de REA à votre agent{ph1} et {ph2}mise en place d'un "
"outil d'analyse des programmes en code machine{ph3}, fournir l'exécutable "
"local et une question:"
#: website/public/guides/native/index.html:293
msgctxt "page:guides/native/index.html"
msgid "Which analysis tool should I use?"
msgstr "Quel outil d'analyse dois-je utiliser?"
#: website/public/guides/native/index.html:294
msgctxt "page:guides/native/index.html"
msgid "REA needs one of these to read native programs:"
msgstr "REA a besoin de l'un d'entre eux pour lire des programmes natifs:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:296
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Hopper{ph1} (macOS or Linux): REA's setup detects it or offers to "
"install it. On macOS, open Hopper once and choose demo mode or activate a "
"license before your first analysis."
msgstr ""
"{ph0}Hopper{ph1} (macOS ou Linux): REAle programme d'installation le détecte"
" ou propose de l'installer. Sur macOS, ouvert Hopper une fois et choisissez "
"le mode démo ou activez une licence avant votre première analyse."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:302
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Ghidra{ph1} (macOS or Linux; experimental on Windows): free, but needs "
"an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer."
msgstr ""
"{ph0}Ghidra{ph1} (macOS ou Linux; expérimental sur Windows): gratuit, mais "
"nécessite un existant Ghidra 12.1.installation x et un JDK 64 bits 21 ou "
"plus récent."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:307
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}IDA{ph1} (Windows): for an existing IDA setup with an MCP registration."
msgstr ""
"{ph0}IDA{ph1} (Windows): pour un existant IDA configuration avec un MCP "
"inscription."
#. {ph0}: <a href="../../get-started/#native">
#. {ph1}: </a>
#: website/public/guides/native/index.html:312
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "See {ph0}Set up native analysis{ph1} for the steps."
msgstr ""
"Voir {ph0}Mettre en place une analyse des programmes en code machine{ph1} "
"pour les étapes."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/native/index.html:320
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/guides/native/index.html:324
#: website/public/guides/native/index.html:455
msgctxt "page:guides/native/index.html"
msgid "Copy"
msgstr "Copier"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="native-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/native/index.html:333
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour savoir comment DX-Ball calcule le "
"positionnement du son stéréo. Expliquez le calcul et montrez le "
"code.{ph3}{ph4}{ph5}"
#: website/public/guides/native/index.html:341
msgctxt "page:guides/native/index.html"
msgid ""
"Example prompt. Give your agent the path to your local DX-Ball 1.07 "
"executable. REA doesn't include DX-Ball, so use your own copy, or ask the "
"same kind of question about another small Windows program you have."
msgstr ""
"Exemple d'invite. Donnez à votre agent le chemin d'accès à votre exécutable "
"DX-Ball 1.07 local. REA n'inclut pas DX-Ball , alors utilisez votre propre "
"copie ou posez le même genre de question à propos d'un autre petit programme"
" Windows que vous avez."
#: website/public/guides/native/index.html:348
msgctxt "page:guides/native/index.html"
msgid "How do I get a file's full path?"
msgstr "Comment puis-je obtenir le chemin complet d'un fichier?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:350
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the file and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0}Windows:{ph1} dans l'Explorateur de fichiers, cliquez avec le bouton "
"droit sur le fichier et choisissez {ph2}Copier comme chemin{ph3}. Sur "
"Windows 10, maintenez la touche Maj enfoncée tout en cliquant avec le bouton"
" droit."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:355
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the file, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr ""
"{ph0}macOS:{ph1} dans le Finder, cliquez avec le bouton droit sur le "
"fichier, maintenez l'option enfoncée et choisissez {ph2}Copiez \" ... \" "
"comme chemin d'accès{ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:359
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the file into a terminal window and its path "
"appears."
msgstr ""
"{ph0}Tout système:{ph1} faites glisser le fichier dans une fenêtre de "
"terminal et son chemin apparaît."
#: website/public/guides/native/index.html:367
msgctxt "page:guides/native/index.html"
msgid "Read the REA results"
msgstr "Lire les résultats du REA"
#: website/public/guides/native/index.html:368
msgctxt "page:guides/native/index.html"
msgid "Read the input"
msgstr "Lire l'entrée"
#: website/public/guides/native/index.html:377
msgctxt "page:guides/native/index.html"
msgid ""
"The instructions load an integer argument and convert it for floating-point "
"arithmetic. This is the input absent from the first pseudocode view."
msgstr ""
"Les instructions chargent un argument entier et le convertissent en "
"arithmétique à virgule flottante. C'est l'entrée absente de la première vue "
"pseudocode."
#: website/public/guides/native/index.html:382
msgctxt "page:guides/native/index.html"
msgid "Follow the caller"
msgstr "Suivez l'appelant"
#. {ph0}: <code>0x14</code>
#: website/public/guides/native/index.html:391
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"REA identifies the brick-hit caller. Its earlier instructions multiply the "
"tile coordinate by 30; adding {ph0} (20) gives the brick's screen position."
msgstr ""
"REA identifie l'appelant touché par la brique. Ses instructions précédentes "
"multiplient la coordonnée de la tuile par 30; en ajoutant {ph0} (20) donne "
"la position de l'écran de la brique."
#: website/public/guides/native/index.html:396
msgctxt "page:guides/native/index.html"
msgid "Read the referenced constants"
msgstr "Lire les constantes référencées"
#: website/public/guides/native/index.html:407
msgctxt "page:guides/native/index.html"
msgid ""
"The arithmetic references these addresses. Reading the bytes supplies the "
"actual values; the instruction order tells the agent how they are used."
msgstr ""
"L'arithmétique fait référence à ces adresses. La lecture des octets fournit "
"les valeurs réelles; l'ordre des instructions indique à l'agent comment "
"elles sont utilisées."
#: website/public/guides/native/index.html:414
msgctxt "page:guides/native/index.html"
msgid "Write and check the recovered function"
msgstr "Écrivez et vérifiez la fonction récupérée"
#: website/public/guides/native/index.html:423
msgctxt "page:guides/native/index.html"
msgid ""
"With a scale of 1.0, screen positions 0, 320 and 640 map to −500, 0 and 500 "
"before integer conversion. The calculation puts the center of the screen at "
"the center of the stereo field."
msgstr ""
"Avec une échelle de 1,0, les positions d'écran 0, 320 et 640 correspondent à"
" -500, 0 et 500 avant la conversion d'entiers. Le calcul place le centre de "
"l'écran au centre du champ stéréo."
#: website/public/guides/native/index.html:428
msgctxt "page:guides/native/index.html"
msgid ""
"The agent used REA's findings to write the C. Separate checks compared 3,205"
" inputs against the original x86 function and reproduced all 63 compiled "
"bytes of the complete function."
msgstr ""
"L'agent a utilisé les résultats de REA pour écrire le C. Des vérifications "
"séparées ont comparé 3 205 entrées à la fonction x86 d'origine et reproduit "
"les 63 octets compilés de la fonction complète."
#. {ph0}: <a href="../../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:433
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}See the full investigation and assembly-to-C comparison{ph1}"
msgstr "{ph0}Voir l'enquête complète et la comparaison assemblage-C{ph1}"
#: website/public/guides/native/index.html:440
msgctxt "page:guides/native/index.html"
msgid "Try it with your own binary"
msgstr "Essayez-le avec votre propre binaire"
#. {ph0}: <a href="../../get-started/#native" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:441
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Connect a native analysis provider{ph1}, then give your agent a local "
"executable or library and a feature to investigate. Useful starting "
"questions include “How is this file parsed?” or “Which function handles this"
" menu action?”"
msgstr ""
"{ph0}Connecter un fournisseur d'analyse de programmes en code machine{ph1}, "
"puis donnez à votre agent un exécutable ou une bibliothèque locale et une "
"fonctionnalité à étudier. Les questions de départ utiles incluent “Comment "
"ce fichier est-il analysé?“ou \" Quelle fonction gère cette action de menu?”"
#: website/public/guides/native/index.html:448
msgctxt "page:guides/native/index.html"
msgid ""
"If you already know a function name or address, you can query it from the "
"terminal. For a configured Ghidra installation:"
msgstr ""
"Si vous connaissez déjà un nom ou une adresse de fonction, vous pouvez "
"l'interroger à partir du terminal. Pour une installation Ghidra configurée:"
#: website/public/guides/native/index.html:454
msgctxt "page:guides/native/index.html"
msgid "Function analysis"
msgstr "Analyse de fonction"
#. {ph0}: <code>main</code>
#: website/public/guides/native/index.html:467
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"Replace the target path and {ph0} with your own function name or address. "
"Each CLI invocation imports and analyzes the binary, then closes its "
"session. Your agent's MCP queries reuse the imported binary while that "
"session is open."
msgstr ""
"Remplacer le chemin cible et {ph0} avec votre propre nom de fonction ou "
"adresse. Chaque appel CLI importe et analyse le binaire, puis ferme sa "
"session. Les requêtes MCP de votre agent réutilisent le binaire importé "
"pendant que cette session est ouverte."
#: website/public/guides/native/index.html:473
msgctxt "page:guides/native/index.html"
msgid ""
"Read the pseudocode alongside instructions and references. When a result "
"leaves a call or value unresolved, use that location as the next question."
msgstr ""
"Lisez le pseudocode à côté des instructions et des références. Lorsqu'un "
"résultat laisse un appel ou une valeur non résolu, utilisez cet emplacement "
"comme question suivante."
#: website/public/guides/native/index.html:6
msgctxt "page:guides/native/index.html"
msgid "Native Binary Analysis — REA"
msgstr "Analyse Binaire Native — REA"
#: website/public/guides/native/index.html:7
msgctxt "page:guides/native/index.html"
msgid ""
"Recover a native calculation with REA: inspect instructions, follow a "
"caller, read constants and check reconstructed C."
msgstr ""
"Récupérez un calcul natif avec REA: inspectez les instructions, suivez un "
"appelant, lisez les constantes et vérifiez le C reconstruit."
#: website/public/guides/native/index.html:191
msgctxt "page:guides/native/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/guides/native/index.html:201
msgctxt "page:guides/native/index.html"
msgid "Native analysis"
msgstr "Analyse de programmes en code machine"
#: website/public/guides/native/index.html:324
msgctxt "page:guides/native/index.html"
msgid "Copy example prompt"
msgstr "Copier l'exemple d'invite"
#: website/public/guides/native/index.html:455
msgctxt "page:guides/native/index.html"
msgid "Copy function analysis"
msgstr "Analyse de la fonction de copie"
#: website/public/guides/native/index.html:496
msgctxt "page:guides/native/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/index.html:101
msgctxt "page:index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#: website/public/index.html:183 website/public/index.html:193
#: website/public/index.html:191
msgctxt "page:index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/index.html:184 website/public/index.html:233
msgctxt "page:index.html"
msgid "Set up REA"
msgstr "Mettre en place REA"
#. {ph0}: <a href="#setup" aria-current="location">
#. {ph1}: </a>
#: website/public/index.html:195
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Set up REA{ph1}"
msgstr "{ph0}Mettre en place REA{ph1}"
#. {ph0}: <a href="#what-is-re">
#. {ph1}: </a>
#: website/public/index.html:196
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}What is RE?{ph1}"
msgstr "{ph0}Qu'est-ce que RE?{ph1}"
#. {ph0}: <a href="#how-rea-helps">
#. {ph1}: </a>
#: website/public/index.html:197
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}How REA helps{ph1}"
msgstr "{ph0}Comment REA vous aide{ph1}"
#. {ph0}: <a href="#dinosaur">
#. {ph1}: </a>
#: website/public/index.html:198
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Dinosaur game{ph1}"
msgstr "{ph0}Jeu de dinosaure{ph1}"
#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:199
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Calculator{ph1}"
msgstr "{ph0}Calculatrice{ph1}"
#. {ph0}: <a href="#try-rea">
#. {ph1}: </a>
#: website/public/index.html:200
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Try REA{ph1}"
msgstr "{ph0}Essayez le modèle REA {ph1}"
#. {ph0}: <a href="#analyze">
#. {ph1}: </a>
#: website/public/index.html:201
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Go deeper{ph1}"
msgstr "{ph0}Aller plus loin{ph1}"
#. {ph0}: <a href="#questions">
#. {ph1}: </a>
#: website/public/index.html:202
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Help & feedback{ph1}"
msgstr "{ph0}Aide et commentaires{ph1}"
#. {ph0}: <a href="#community">
#. {ph1}: </a>
#: website/public/index.html:203
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Community{ph1}"
msgstr "{ph0}Communauté{ph1}"
#: website/public/index.html:212
msgctxt "page:index.html"
msgid "Reverse engineering, with your coding agent"
msgstr "Ingénierie inverse, avec votre agent de codage"
#. {ph0}: <br />
#: website/public/index.html:213
#, python-brace-format
msgctxt "page:index.html"
msgid "Find out how{ph0}software works."
msgstr "Découvrez comment{ph0}fonctionne un logiciel."
#: website/public/index.html:214
msgctxt "page:index.html"
msgid ""
"REA gives your agent the tools to inspect a program and explain what it "
"does."
msgstr ""
"REA donne à votre agent de programmation les outils pour examiner un "
"programme et expliquer son fonctionnement."
#. {ph0}: <a href="#analysis-guides">
#. {ph1}: </a>
#: website/public/index.html:223
#, python-brace-format
msgctxt "page:index.html"
msgid "Already know RE? {ph0}Skip to analysis guides →{ph1}"
msgstr "Vous connaissez déjà RE? {ph0}Passer aux guides d'analyse →{ph1}"
#. {ph0}: <a href="blog/">
#. {ph1}: </a>
#: website/public/index.html:227
#, python-brace-format
msgctxt "page:index.html"
msgid "Want to go deeper? {ph0}Read the Blog →{ph1}"
msgstr "Vous voulez aller plus loin? {ph0}Lire le Blog →{ph1}"
#: website/public/index.html:234
msgctxt "page:index.html"
msgid "Copy this into your coding agent:"
msgstr "Copiez ce prompt dans votre agent de programmation :"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:237
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/index.html:242 website/public/index.html:264
#: website/public/index.html:479 website/public/index.html:647
#: website/public/index.html:883 website/public/index.html:1045
#: website/public/index.html:1073
msgctxt "page:index.html"
msgid "Copy"
msgstr "Copier"
#: website/public/index.html:261
msgctxt "page:index.html"
msgid "Or run this in your terminal:"
msgstr "Ou exécutez cette commande dans le terminal :"
#: website/public/index.html:273
msgctxt "page:index.html"
msgid "Approve the setup plan, then restart your agent."
msgstr ""
"Vérifiez et approuvez les changements prévus, puis redémarrez votre agent."
#: website/public/index.html:288
msgctxt "page:index.html"
msgid "What is reverse engineering?"
msgstr "Qu’est-ce que la rétro-ingénierie ?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:289
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Finding out how software works by {ph0}examining the program itself.{ph1}"
msgstr ""
"Comprendre le fonctionnement d’un logiciel en {ph0}examinant le programme "
"lui-même.{ph1}"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#. {ph2}: <mark class="prose-highlight">
#. {ph3}: </mark>
#. {ph4}: <mark class="prose-highlight">
#. {ph5}: </mark>
#: website/public/index.html:294
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The goal: understand a feature well enough to {ph0}explain it{ph1}, "
"{ph2}change it{ph3} or {ph4}rebuild it.{ph5}"
msgstr ""
"L'objectif: comprendre suffisamment bien une fonctionnalité pour "
"{ph0}explique-le{ph1}, {ph2}changez-le{ph3} ou {ph4}reconstruisez-le.{ph5}"
#. {ph0}: <strong class="prose-highlight">
#. {ph1}: </strong>
#: website/public/index.html:312
#, python-brace-format
msgctxt "page:index.html"
msgid "Before REA · You investigate it {ph0}yourself{ph1}"
msgstr "Avant REA · Vous enquêtez {ph0}vous-même{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:321
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}01{ph1} Decode branches"
msgstr "{ph0}01{ph1} Décoder les branches"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:329
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}02{ph1} Trace calls"
msgstr "{ph0}02{ph1} Tracer les appels"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:337
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}03{ph1} Recover the rule"
msgstr "{ph0}03{ph1} Récupérer la règle"
#. {ph0}: <span>
#. {ph1}: </span>
#. {ph2}: <span class="assembly-disclosure" aria-hidden="true">
#. {ph3}: </span>
#: website/public/index.html:352
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Original x64 · selected instructions{ph1} {ph2}{ph3}"
msgstr "{ph0}Instructions d'origine x64 · sélectionnées{ph1} {ph2}{ph3}"
#: website/public/index.html:391
msgctxt "page:index.html"
msgid "01 · Which branch?"
msgstr "01 * Quelle branche?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:392
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“{ph0}0x5b? 0x5c?{ph1} Two jumps to the same place. Which operators are "
"these?”"
msgstr ""
"“{ph0}0x5b? 0x5c?{ph1} Deux sauts au même endroit. De quels opérateurs "
"s'agit-il?”"
#: website/public/index.html:396
msgctxt "page:index.html"
msgid "Look up the command IDs, then label the branch."
msgstr "Recherchez les identifiants de commande, puis étiquetez la branche."
#: website/public/index.html:402
msgctxt "page:index.html"
msgid "Divide ÷"
msgstr "Diviser ÷"
#: website/public/index.html:406
msgctxt "page:index.html"
msgid "Multiply ×"
msgstr "Multiplier ×"
#: website/public/index.html:411
msgctxt "page:index.html"
msgid "02 · What do the calls do?"
msgstr "02 · Que font les fonctions appelées ?"
#. {ph0}: <strong>
#. {ph1}: </strong >
#: website/public/index.html:412
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“100 is clear. The calls are just addresses. {ph0}Which one divides? Which "
"value goes in?{ph1}”"
msgstr ""
"\"100 est clair. Les appels ne sont que des adresses. {ph0}Lequel divise? "
"Quelle valeur entre?{ph1}”"
#: website/public/index.html:417
msgctxt "page:index.html"
msgid "Inspect the helpers and trace the stored values."
msgstr "Inspectez les fonctions d'assistance et tracez les valeurs stockées."
#: website/public/index.html:427
msgctxt "page:index.html"
msgid "Divide"
msgstr "Diviser"
#: website/public/index.html:432
msgctxt "page:index.html"
msgid "03 · What is the rule?"
msgstr "03 * Quelle est la règle?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:433
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“This path multiplies by the other input. So {ph0}10% means 10% of 200{ph1} "
"after +.”"
msgstr ""
"\"Ce chemin se multiplie par l'autre entrée. Donc {ph0}10% signifie 10% de "
"200{ph1} après +.”"
#: website/public/index.html:437
msgctxt "page:index.html"
msgid "Name the operands and check both operator paths."
msgstr "Nommez les opérandes et vérifiez les deux chemins d'opérateur."
#: website/public/index.html:453 website/public/index.html:381
msgctxt "page:index.html"
msgid "Illustrative expert reasoning"
msgstr "Raisonnement d'expert illustratif"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:456
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}You decode the instructions, follow the calls and reconstruct the "
"calculation.{ph1}"
msgstr ""
"{ph0}Vous décodez les instructions, suivez les appels de fonction et "
"reconstruisez le calcul.{ph1}"
#. {ph0}: <strong class="prose-highlight">
#. {ph1}: </strong>
#: website/public/index.html:464
#, python-brace-format
msgctxt "page:index.html"
msgid "With REA · You ask {ph0}your agent{ph1}"
msgstr "Avec REA · Vous demandez à {ph0}votre agent{ph1}"
#: website/public/index.html:468
msgctxt "page:index.html"
msgid "One prompt."
msgstr "Un seul prompt."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:469
#, python-brace-format
msgctxt "page:index.html"
msgid "Ask your agent {ph0}in plain English.{ph1}"
msgstr "Posez votre question à l’agent {ph0}avec des mots simples.{ph1}"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:474
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Calculator"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Exemple d'invite * Calculatrice"
#: website/public/index.html:496
msgctxt "page:index.html"
msgid "Example answer · based on the findings"
msgstr "Exemple de réponse · basé sur les résultats"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:499
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"After +, the % button takes {ph0}a percentage of the first number.{ph1}"
msgstr ""
"Après +, le bouton % prend {ph0}un pourcentage du premier nombre.{ph1}"
#: website/public/index.html:511
msgctxt "page:index.html"
msgid "REA supplies"
msgstr "REA fournit"
#: website/public/index.html:512
msgctxt "page:index.html"
msgid "The handler’s instructions, decompiled code and calls."
msgstr "Les instructions du gestionnaire, le code décompilé et les appels."
#: website/public/index.html:517
msgctxt "page:index.html"
msgid "Your agent explains"
msgstr "Votre agent explique"
#: website/public/index.html:518
msgctxt "page:index.html"
msgid "Which branch applies, what it calculates and how to rebuild it."
msgstr ""
"Quelle branche s'applique, ce qu'elle calcule et comment la reconstruire."
#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:525
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Selected assembly from the installed Calculator DLL. The thoughts and reply "
"illustrate the findings. {ph0}Continue with the Calculator example ↓{ph1}"
msgstr ""
"Assemblage sélectionné à partir de la DLL de calculatrice installée. Les "
"réflexions et la réponse illustrent les résultats. {ph0}Continuez avec "
"l'exemple de la calculatrice ↓{ph1}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:536
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Let's try two examples.{ph1} Change a game's speed, then return to "
"Calculator and rebuild its % button."
msgstr ""
"{ph0}Essayons deux exemples.{ph1} Modifiez la vitesse d'un jeu, puis revenez"
" à la calculatrice et reconstruisez son bouton%."
#: website/public/index.html:542
msgctxt "page:index.html"
msgid "Example 01 · Chrome’s dinosaur game"
msgstr "Exemple 01 * Jeu de dinosaures de Chrome"
#: website/public/index.html:543
msgctxt "page:index.html"
msgid "Why does the dinosaur get faster?"
msgstr "Pourquoi le dinosaure accélère-t-il ?"
#: website/public/index.html:547 website/public/index.html:785
msgctxt "page:index.html"
msgid "Goal"
msgstr "Objectif"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/index.html:548
#, python-brace-format
msgctxt "page:index.html"
msgid "Rebuild the game with {ph0}adjustable speed.{ph1}"
msgstr "Reconstruisez le jeu avec {ph0}vitesse réglable.{ph1}"
#: website/public/index.html:554 website/public/index.html:792
msgctxt "page:index.html"
msgid "Why reverse engineer it?"
msgstr "Pourquoi faire de l'ingénierie inverse?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:555
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"To reproduce its acceleration, we need {ph0}the rule in the running "
"game{ph1}: how fast it starts, how much it increases and when it stops."
msgstr ""
"Pour reproduire son accélération, il nous faut {ph0}la règle dans le jeu de "
"course{ph1}: à quelle vitesse il démarre, combien il augmente et quand il "
"s'arrête."
#: website/public/index.html:564
msgctxt "page:index.html"
msgid "Play the reconstruction"
msgstr "Jouer à la reconstruction"
#: website/public/index.html:596
msgctxt "page:index.html"
msgid "Play"
msgstr "Jouer"
#: website/public/index.html:599
msgctxt "page:index.html"
msgid "Jump ↑"
msgstr "Sauter ↑"
#: website/public/index.html:600
msgctxt "page:index.html"
msgid "Restart"
msgstr "Recommencer"
#: website/public/index.html:603
msgctxt "page:index.html"
msgid "Speed"
msgstr "Vitesse"
#: website/public/index.html:613
msgctxt "page:index.html"
msgid "Use the recovered acceleration rule"
msgstr "Utilisez la règle d'accélération récupérée"
#: website/public/index.html:617
msgctxt "page:index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "Règle d'origine: commencez à 6, puis augmentez vers 13."
#: website/public/index.html:620
msgctxt "page:index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr ""
"Déplacez le curseur pour définir votre propre vitesse. L'espace ou le saut "
"efface un cactus."
#: website/public/index.html:625
msgctxt "page:index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr ""
"Activez JavaScript pour lire la reconstruction. Le code et l'explication ci-"
"dessus restent lisibles."
#: website/public/index.html:633 website/public/index.html:863
msgctxt "page:index.html"
msgid "REA returned"
msgstr "REA a renvoyé"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:634
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}The script actually running in the page.{ph1} The agent reads its "
"update function and speed settings, then uses that rule in a new game."
msgstr ""
"{ph0}Le script en cours d'exécution dans la page.{ph1} L'agent lit sa "
"fonction de mise à jour et ses paramètres de vitesse, puis utilise cette "
"règle dans un nouveau jeu."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:642
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Dinosaur game"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Exemple d'invite · Jeu de dinosaure"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dino-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:656
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour inspecter ce jeu de dinosaures. Pourquoi "
"ça va plus vite? Affichez la règle de vitesse, puis créez une petite version"
" avec une vitesse réglable.{ph3}{ph4}{ph5}"
#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#: website/public/index.html:665
#, python-brace-format
msgctxt "page:index.html"
msgid "Inspected target: {ph0}wayou’s Chromium-derived browser edition{ph1}."
msgstr ""
"Cible inspectée: {ph0}édition de navigateur dérivée du Chromium de "
"wayou{ph1}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#. {ph4}: <strong>
#. {ph5}: </strong>
#: website/public/index.html:682
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Start at 6.{ph1} Add {ph2}0.001{ph3} each update without a collision, "
"while speed is below {ph4}13{ph5}."
msgstr ""
"{ph0}Commencez à 6 heures.{ph1} Ajouter {ph2}0.001{ph3} chaque mise à jour "
"sans collision, alors que la vitesse est inférieure {ph4}13{ph5}."
#: website/public/index.html:687
msgctxt "page:index.html"
msgid "Open the speed lab →"
msgstr "Ouvrir le laboratoire de vitesse →"
#: website/public/index.html:693
msgctxt "page:index.html"
msgid "What each part does"
msgstr "Ce que fait chaque partie"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:695
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA{ph1}{ph2}Read the running game’s script{ph3}{ph4}Return its "
"actual code and settings to the agent.{ph5}"
msgstr ""
"{ph0}01 · REA{ph1}{ph2}Lire le script du jeu en cours "
"d'exécution{ph3}{ph4}Renvoyez son code et ses paramètres réels à "
"l'agent.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:702
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · Your agent{ph1}{ph2}Rebuild the rule, add a control{ph3}{ph4}Use "
"the recovered acceleration in a small game with a speed slider.{ph5}"
msgstr ""
"{ph0}02 · Votre agent{ph1}{ph2}Reconstruire la règle, ajouter un "
"contrôle{ph3}{ph4}Utilisez l'accélération récupérée dans un petit jeu avec "
"un curseur de vitesse.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:710
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · You{ph1}{ph2}Change the speed and play{ph3}{ph4}Try the original "
"acceleration, then choose your own pace.{ph5}"
msgstr ""
"{ph0}03 * Vous{ph1}{ph2}Changez la vitesse et jouez{ph3}{ph4}Essayez "
"l'accélération d'origine, puis choisissez votre propre rythme.{ph5}"
#: website/public/index.html:721
msgctxt "page:index.html"
msgid "See the script, checks and how to try the analysis"
msgstr "Voir le script, les vérifications et comment essayer l'analyse"
#. {ph0}: <code>index.js</code>
#: website/public/index.html:724
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"REA inspected the HTTP browser edition through a local debugging connection "
"and returned the loaded {ph0}, including its source and digest."
msgstr ""
"REA a inspecté l'édition du navigateur HTTP via une connexion de débogage "
"locale et a renvoyé le fichier chargé {ph0}, y compris sa source et son "
"résumé."
#: website/public/index.html:737
msgctxt "page:index.html"
msgid ""
"We called the original game’s update function in a controlled browser check,"
" with obstacles and automatic scheduling disabled. After 4,000 updates, "
"speed was 10.0; after 10,000, it was 13.0, rounded to one decimal."
msgstr ""
"Nous avons appelé la fonction de mise à jour du jeu d'origine dans une "
"vérification contrôlée du navigateur, avec les obstacles et la planification"
" automatique désactivés. Après 4 000 mises à jour, la vitesse était de 10,0;"
" après 10 000, elle était de 13,0, arrondie à une décimale."
#. {ph0}: <a href="examples/dino-lab/">
#. {ph1}: </a>
#: website/public/index.html:743
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The new mini-game keeps that speed rule. Its drawing, jumping and collision "
"code are a small teaching implementation. {ph0}Open the lab{ph1} to see the "
"new code and run the same speed check."
msgstr ""
"Le nouveau mini-jeu conserve cette règle de vitesse. Son code de dessin, de "
"saut et de collision est une petite implémentation pédagogique. {ph0}Ouvrir "
"le laboratoire{ph1} pour voir le nouveau code et exécuter le même contrôle "
"de vitesse."
#. {ph0}: <a href="guides/browser/#prepare">
#. {ph1}: </a>
#. {ph2}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph3}: </a >
#: website/public/index.html:749
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"To inspect the target yourself, follow the {ph0}browser connection "
"steps{ph1} using {ph2}the dinosaur page{ph3}. Give your agent that page URL "
"and your local debugging endpoint, then copy the prompt above."
msgstr ""
"Pour inspecter la cible vous-même, suivez les instructions {ph0}étapes de "
"connexion du navigateur{ph1} en utilisant {ph2}la page des dinosaures{ph3}. "
"Donnez à votre agent cette URL de page et votre point de terminaison de "
"débogage local, puis copiez l'invite ci-dessus."
#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/index.html:758
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Inspected speed code{ph1} · {ph2}Chromium Authors · BSD license{ph3}"
msgstr ""
"{ph0}Code de vitesse inspecté{ph1} · {ph2} Auteurs de Chromium * Licence "
"BSD{ph3}"
#: website/public/index.html:775
msgctxt "page:index.html"
msgid "Example 02 · Windows Calculator"
msgstr "Exemple 02 · Windows Calculatrice"
#: website/public/index.html:776
msgctxt "page:index.html"
msgid "Rebuild Calculator’s % button."
msgstr "Recréez le bouton % de la calculatrice."
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/index.html:786
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Build a small calculator that handles {ph0}both + and × correctly.{ph1}"
msgstr ""
"Construisez une petite calculatrice qui gère {ph0}les deux + et × "
"correctement.{ph1}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:793
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The same button uses {ph0}different rules after + and ×.{ph1} We inspect the"
" installed app to find which number the percentage is applied to."
msgstr ""
"Le même bouton utilise {ph0}règles différentes après + et ×.{ph1} Nous "
"inspectons l'application installée pour trouver à quel numéro le pourcentage"
" est appliqué."
#: website/public/index.html:802
msgctxt "page:index.html"
msgid "Try the calculation"
msgstr "Essayez le calcul"
#: website/public/index.html:846
msgctxt "page:index.html"
msgid "Reset"
msgstr "Réinitialiser"
#: website/public/index.html:854
msgctxt "page:index.html"
msgid "10% of 200 = 20. Then 200 + 20 = 220."
msgstr "10% de 200 = 20. Alors 200 + 20 = 220."
#: website/public/index.html:857
msgctxt "page:index.html"
msgid "Interactive illustration of the inspected percentage rule."
msgstr "Illustration interactive de la règle du pourcentage inspecté."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:864
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}One branch divides by 100. The other also multiplies by the first "
"number.{ph1} The agent uses both to recreate the % button."
msgstr ""
"{ph0}Une branche se divise par 100. L'autre multiplie également par le "
"premier nombre.{ph1} L'agent utilise les deux pour recréer le bouton%."
#. {ph0}: <code>previous = 200</code>
#. {ph1}: <code>current = 10</code>
#: website/public/index.html:872
#, python-brace-format
msgctxt "page:index.html"
msgid "For this example, {ph0} and {ph1}."
msgstr "Pour cet exemple, {ph0} et {ph1}."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:878
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Rebuild the % "
"button"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Exemple d'invite * Reconstruire le "
"bouton %"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="calculator-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:892
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator’s % button. Recover "
"the rules after + and ×, then build a small calculator that uses "
"both.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour inspecter le bouton % de la calculatrice "
"Windows. Récupérez les règles après + et×, puis créez une petite "
"calculatrice qui utilise les deux.{ph3}{ph4}{ph5}"
#: website/public/index.html:913
msgctxt "page:index.html"
msgid "With +"
msgstr "Avec +"
#. {ph0}: <strong>
#. {ph1}: </strong >
#. {ph2}: <code>10% of 200 = 20 → 200 + 20 = 220</code>
#: website/public/index.html:914
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Take 10% of the first number.{ph1}{ph2}"
msgstr "{ph0}Prenez 10% du premier nombre.{ph1}{ph2}"
#: website/public/index.html:920
msgctxt "page:index.html"
msgid "With ×"
msgstr "Avec ×"
#. {ph0}: <strong>
#. {ph1}: </strong >
#. {ph2}: <code>200 × 0.1 = 20</code>
#: website/public/index.html:921
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Turn 10% into 0.1.{ph1}{ph2}"
msgstr "{ph0}Transformez 10% en 0,1.{ph1}{ph2}"
#: website/public/index.html:930
msgctxt "page:index.html"
msgid "From the installed app to a working % button"
msgstr "De l'application installée à un bouton % fonctionnel"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>100</code>
#. {ph6}: </span >
#: website/public/index.html:943
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · REA reads the library{ph1}{ph2}Return the % handler’s "
"code{ph3}{ph4}The function checks the operator and uses the constant "
"{ph5}.{ph6}"
msgstr ""
"{ph0}02 * REA lit la bibliothèque{ph1}{ph2}Renvoie le code du gestionnaire %"
" {ph3}{ph4}La fonction vérifie l'opérateur et utilise la constante "
"{ph5}.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:951
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · Your agent interprets it{ph1}{ph2}Explain and reproduce the "
"rules{ph3}{ph4}Crosscheck the branch with Microsoft’s source, then try + and"
" × above.{ph5}"
msgstr ""
"{ph0}03 * Votre agent l'interprète{ph1}{ph2}Expliquer et reproduire les "
"règles{ph3}{ph4}Vérifiez la branche avec la source de Microsoft, puis "
"essayez + et × ci-dessus.{ph5}"
#: website/public/index.html:962
msgctxt "page:index.html"
msgid "See the real code and how the answer was checked"
msgstr "Voir le vrai code et comment la réponse a été vérifiée"
#: website/public/index.html:988
msgctxt "page:index.html"
msgid ""
"Inspected with REA 4.1.0: Windows Calculator 11.2508.4.0, x64. The readable "
"summary uses names from Microsoft’s public source to explain the recovered "
"branch."
msgstr ""
"Inspecté avec la version 4.1.0 de REA: Calculatrice 11.2508.4.0, x64 de "
"Windows. Le résumé lisible utilise des noms de la source publique de "
"Microsoft pour expliquer la branche récupérée."
#. {ph0}: <a
#. href="https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalcManager/CEngine/scifunc.cpp#L98-L111"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalculatorUnitTests/CalculatorManagerTest.cpp#L350-L370"
#. >
#. {ph3}: </a >
#. {ph4}: <a href="guides/native/">
#. {ph5}: </a>
#: website/public/index.html:993
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Percentage implementation{ph1} · {ph2}Microsoft’s test cases{ph3} · "
"{ph4}Native setup guide{ph5}"
msgstr ""
"{ph0}Pourcentage de mise en œuvre{ph1} · {ph2}Scénarios de test de "
"Microsoft{ph3} · {ph4}Guide de configuration natif{ph5}"
#: website/public/index.html:1012
msgctxt "page:index.html"
msgid "Your first investigation"
msgstr "Votre première enquête"
#: website/public/index.html:1013
msgctxt "page:index.html"
msgid "Try REA on a small app."
msgstr "Essayez REA sur une petite application."
#: website/public/index.html:1014
msgctxt "page:index.html"
msgid ""
"Download our Notes example, trace its CSV export, and check one changed "
"input."
msgstr ""
"Téléchargez notre exemple de Notes, tracez son exportation CSV et vérifiez "
"une entrée modifiée."
#: website/public/index.html:1019
msgctxt "page:index.html"
msgid "Try the guided example"
msgstr "Essayez l'exemple guidé"
#: website/public/index.html:1028
msgctxt "page:index.html"
msgid "Want to go deeper?"
msgstr "Vous voulez aller plus loin ?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/index.html:1029
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Tell your agent what you want to understand or build. With REA, you can work"
" together on anything from {ph0}cloning this website{ph1} to "
"{ph2}reconstructing a game from its executable.{ph3}"
msgstr ""
"Dites à votre agent ce que vous voulez comprendre ou construire. Avec REA, "
"vous pouvez travailler ensemble sur n'importe quoi à partir de {ph0}clonage "
"de ce site Web{ph1} à {ph2}reconstruire un jeu à partir de son "
"exécutable.{ph3}"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:1040
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Website"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Exemple d'invite * Site Web"
#: website/public/index.html:1063
msgctxt "page:index.html"
msgid "Yes, this one."
msgstr "Oui, celui-ci."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:1068
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Game reconstruction"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Exemple d'invite * Reconstruction du"
" jeu"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="game-project-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:1082
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to reconstruct this game from its executable. "
"Recover the gameplay logic in C and test it against the "
"original.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour reconstruire ce jeu à partir de son "
"exécutable. Récupérez la logique de jeu en C et testez-la par rapport à "
"l'original.{ph3}{ph4}{ph5}"
#. {ph0}: <a href="showcase/dx-ball/">
#. {ph1}: </a>
#: website/public/index.html:1091
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}See the DX-Ball case study →{ph1}"
msgstr "{ph0}Voir l'étude de cas DX-Ball →{ph1}"
#: website/public/index.html:1096
msgctxt "page:index.html"
msgid "For setup and analysis steps, choose your target:"
msgstr ""
"Pour les étapes de configuration et d'analyse, choisissez votre cible:"
#: website/public/index.html:1101
msgctxt "page:index.html"
msgid "Native binaries"
msgstr "Programmes en code machine"
#: website/public/index.html:1102
msgctxt "page:index.html"
msgid ""
"Inspect functions, strings, references and call relationships in executables"
" and libraries."
msgstr ""
"Inspectez les fonctions, les chaînes, les références et les relations "
"d'appel de fonction dans les exécutables et les bibliothèques."
#: website/public/index.html:1106
msgctxt "page:index.html"
msgid "Native analysis guide"
msgstr "Guide d'analyse des programmes en code machine"
#: website/public/index.html:1109
msgctxt "page:index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript & Electron"
#: website/public/index.html:1110
msgctxt "page:index.html"
msgid ""
"Map modules, routes, IPC and native dependencies from an application folder "
"or ASAR archive."
msgstr ""
"Mappez les modules, les routes, l'IPC et les dépendances natives à partir "
"d'un dossier d'application ou d'une archive ASAR."
#: website/public/index.html:1114
msgctxt "page:index.html"
msgid "Application workflows"
msgstr "Flux de travail des applications"
#: website/public/index.html:1117
msgctxt "page:index.html"
msgid "Browser & runtime activity"
msgstr "Activité du navigateur et de l'exécution"
#: website/public/index.html:1118
msgctxt "page:index.html"
msgid ""
"Capture selected browser or process activity, then compare the results "
"across runs."
msgstr ""
"Capturez l'activité du navigateur ou du processus sélectionné, puis comparez"
" les résultats entre les exécutions."
#: website/public/index.html:1122
msgctxt "page:index.html"
msgid "Browser observation guide"
msgstr "Guide d'observation du navigateur"
#: website/public/index.html:1129
msgctxt "page:index.html"
msgid "Any questions?"
msgstr "Des questions ?"
#. {ph0}: <a href="faq/">
#. {ph1}: </a>
#. {ph2}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph3}: </a>
#. {ph4}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph5}: </a >
#: website/public/index.html:1130
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Read the FAQ{ph1}, {ph2}chat with us on Discord{ph3}, or {ph4}open a "
"GitHub issue{ph5} for bugs and feature requests."
msgstr ""
"{ph0}Lire la FAQ{ph1}, {ph2}discutez avec nous sur Discord {ph3}, ou "
"{ph4}ouvrir un problème GitHub{ph5} pour les bugs et les demandes de "
"fonctionnalités."
#: website/public/index.html:1143 website/public/index.html:1149
msgctxt "page:index.html"
msgid "Join the community"
msgstr "Rejoindre la communauté"
#: website/public/index.html:1144
msgctxt "page:index.html"
msgid ""
"Share investigations and get help from other REA users on Discord. Follow "
"REA on X for project updates."
msgstr ""
"Partagez des enquêtes et obtenez de l'aide d'autres utilisateurs de REA sur "
"Discord . Suivez REA sur X pour les mises à jour du projet."
#: website/public/index.html:6
msgctxt "page:index.html"
msgid "REA — Reverse Engineering for Your Coding Agent"
msgstr "REA-Ingénierie inverse pour Votre Agent de codage"
#: website/public/index.html:7
msgctxt "page:index.html"
msgid ""
"Reverse engineer apps, binaries and browser behavior with your coding agent."
" Follow clear guides and try interactive examples with REA."
msgstr ""
"Rétroconcevoir les applications, les binaires et le comportement du "
"navigateur avec votre agent de codage. Suivez des guides clairs et essayez "
"des exemples interactifs avec REA ."
#: website/public/index.html:242
msgctxt "page:index.html"
msgid "Copy REA installation prompt"
msgstr "Copier l'invite d'installation de REA"
#: website/public/index.html:264
msgctxt "page:index.html"
msgid "Copy setup command"
msgstr "Commande Copier le programme d'installation"
#: website/public/index.html:316
msgctxt "page:index.html"
msgid "Follow the manual Calculator analysis"
msgstr "Suivez l'analyse manuelle de la calculatrice"
#: website/public/index.html:479
msgctxt "page:index.html"
msgid "Copy Calculator percentage question"
msgstr "Question sur le pourcentage de la calculatrice de copie"
#: website/public/index.html:586
msgctxt "page:index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr ""
"Mini-jeu de dinosaure. Utilisez le bouton de saut ou appuyez sur Espace "
"pendant que le jeu est concentré."
#: website/public/index.html:647
msgctxt "page:index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "Copie de l'invite d'analyse des dinosaures"
#: website/public/index.html:803
msgctxt "page:index.html"
msgid "Choose the calculation"
msgstr "Choisissez le calcul"
#: website/public/index.html:883
msgctxt "page:index.html"
msgid "Copy Calculator analysis prompt"
msgstr "Invite d'analyse de la calculatrice de copie"
#: website/public/index.html:1045
msgctxt "page:index.html"
msgid "Copy website project prompt"
msgstr "Copier l'invite de projet de site Web"
#: website/public/index.html:1073
msgctxt "page:index.html"
msgid "Copy game reconstruction prompt"
msgstr "Copie de l'invite de reconstruction du jeu"
#: website/public/index.html:1173
msgctxt "page:index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/showcase/aegis/index.html:100
msgctxt "page:showcase/aegis/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:182
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Android"
msgstr "{ph0}Accueil{ph1} / {ph2}Vitrines{ph3} / Androïde"
#: website/public/showcase/aegis/index.html:185
msgctxt "page:showcase/aegis/index.html"
msgid "Case study · Aegis Authenticator"
msgstr "Étude de cas · Authentificateur Aegis"
#. {ph0}: <br />
#: website/public/showcase/aegis/index.html:186
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "How does an authenticator{ph0}generate a login code?"
msgstr ""
"Comment fonctionne un authentificateur{ph0}générer un code de connexion?"
#: website/public/showcase/aegis/index.html:187
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A six-digit code changes every 30 seconds. Use REA to find the calculation "
"in an Android APK, then rebuild it with a clock you can control."
msgstr ""
"Un code à six chiffres change toutes les 30 secondes. Utilisez REA pour "
"trouver le calcul dans un Android APK , puis reconstruisez-le avec une "
"horloge que vous pouvez contrôler."
#: website/public/showcase/aegis/index.html:192
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis 3.4.3 · Android · Official release APK · 6.9 MB"
msgstr "Aegis 3.4.3 · Android * Version officielle APK · 6,9 Mo"
#: website/public/showcase/aegis/index.html:195
msgctxt "page:showcase/aegis/index.html"
msgid "View Aegis on GitHub"
msgstr "Voir le modèle Aegis sur le modèle GitHub"
#: website/public/showcase/aegis/index.html:201
msgctxt "page:showcase/aegis/index.html"
msgid "From an APK to a code you can reproduce"
msgstr "D'un APK à un code que vous pouvez reproduire"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node" >
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:203
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}01 · Locate the feature{ph1}{ph2}3,077 classes → generating "
"methods{ph3}{ph4}REA searches the package and traces the code used by the "
"display and copy actions.{ph5}"
msgstr ""
"{ph0}01 * Localisez la fonctionnalité{ph1}{ph2}3 077 classes → méthodes de "
"génération{ph3}{ph4} REA recherche le package et trace le code utilisé par "
"les actions d'affichage et de copie.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:212
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}02 · Read the calculation{ph1}{ph2}Time + account key → six "
"digits{ph3}{ph4}REA returns the methods and defaults. The agent explains how"
" they fit together.{ph5}"
msgstr ""
"{ph0}02 * Lire le calcul{ph1}{ph2}Heure + clé de compte → six "
"chiffres{ph3}{ph4} REA renvoie les méthodes et les valeurs par défaut. "
"L'agent explique comment ils s'emboîtent.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:220
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}03 · Rebuild and check{ph1}{ph2}Change the clock. Watch the "
"code.{ph3}{ph4}A new browser demo reproduces the rule and checks it against "
"public reference cases.{ph5}"
msgstr ""
"{ph0}03 * Reconstruire et vérifier{ph1}{ph2}Change l'horloge. Regarde le "
"code.{ph3}{ph4}Une nouvelle démo de navigateur reproduit la règle et la "
"compare à des cas de référence publics.{ph5}"
#: website/public/showcase/aegis/index.html:233
msgctxt "page:showcase/aegis/index.html"
msgid "In this case study"
msgstr "Dans cette étude de cas"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:235
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Demandez à votre agent{ph1}"
#. {ph0}: <a href="#demo">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:236
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Try the code generator{ph1}"
msgstr "{ph0}Essayez le générateur de code{ph1}"
#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:237
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Find the code with REA{ph1}"
msgstr "{ph0}Trouver le code avec REA {ph1}"
#. {ph0}: <a href="#calculation">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:238
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Read the calculation{ph1}"
msgstr "{ph0}Lire le calcul{ph1}"
#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:239
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}Vérifiez la reconstruction{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:240
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Inspect the APK yourself{ph1}"
msgstr "{ph0}Inspectez vous-même le APK{ph1}"
#: website/public/showcase/aegis/index.html:245
msgctxt "page:showcase/aegis/index.html"
msgid "Ask your agent"
msgstr "Demandez à votre agent"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:246
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app shows a changing login code. We want to find {ph0}what makes it "
"change{ph1} and reproduce that behavior."
msgstr ""
"L'application affiche un code de connexion changeant. Nous voulons trouver "
"{ph0}ce qui le fait changer{ph1} et reproduisez ce comportement."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/aegis/index.html:252
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/showcase/aegis/index.html:256
#: website/public/showcase/aegis/index.html:719
msgctxt "page:showcase/aegis/index.html"
msgid "Copy"
msgstr "Copier"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:276
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"An example prompt for the downloaded APK, with REA's Android analysis "
"configured. {ph0}Get the APK and analysis setup ↓{ph1}"
msgstr ""
"Un exemple d'invite pour le APK téléchargé, avec l'analyse Android de REA "
"configurée. {ph0}Obtenez le APK et la configuration de l'analyse ↓{ph1}"
#: website/public/showcase/aegis/index.html:284
msgctxt "page:showcase/aegis/index.html"
msgid "Try the code generator"
msgstr "Essayez le générateur de code"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/showcase/aegis/index.html:285
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app groups time into {ph0}30-second blocks.{ph1} It combines the block "
"number with the account key to generate a code. The same key and block "
"produce the same code."
msgstr ""
"L'application regroupe le temps en {ph0}blocs de 30 secondes.{ph1} Il "
"combine le numéro de bloc avec la clé de compte pour générer un code. La "
"même clé et le même bloc produisent le même code."
#: website/public/showcase/aegis/index.html:292
msgctxt "page:showcase/aegis/index.html"
msgid "Move the clock across 60 seconds"
msgstr "Déplacez l'horloge sur 60 secondes"
#: website/public/showcase/aegis/index.html:295
msgctxt "page:showcase/aegis/index.html"
msgid "Time"
msgstr "Temps"
#: website/public/showcase/aegis/index.html:297
msgctxt "page:showcase/aegis/index.html"
msgid "seconds"
msgstr "secondes"
#: website/public/showcase/aegis/index.html:298
msgctxt "page:showcase/aegis/index.html"
msgid "Our adjustable example clock"
msgstr "Notre horloge d'exemple réglable"
#: website/public/showcase/aegis/index.html:301
msgctxt "page:showcase/aegis/index.html"
msgid "30-second block"
msgstr "bloc de 30 secondes"
#: website/public/showcase/aegis/index.html:303
#: website/public/showcase/aegis/index.html:630
msgctxt "page:showcase/aegis/index.html"
msgid "Block"
msgstr "Bloquer"
#. {ph0}: <code data-aegis-division>floor(59 / 30)</code>
#. {ph1}: <br />
#. {ph2}: <span data-aegis-window >
#. {ph3}: </span >
#: website/public/showcase/aegis/index.html:304
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}30–59 seconds{ph3}"
msgstr "{ph0}{ph1}{ph2}30-59 secondes{ph3}"
#: website/public/showcase/aegis/index.html:312
msgctxt "page:showcase/aegis/index.html"
msgid "Generated code"
msgstr "Code généré"
#: website/public/showcase/aegis/index.html:320
msgctxt "page:showcase/aegis/index.html"
msgid "Account key + block → six digits"
msgstr "Clé de compte + bloc → six chiffres"
#: website/public/showcase/aegis/index.html:326
msgctxt "page:showcase/aegis/index.html"
msgid "Example time, in seconds"
msgstr "Exemple de temps, en secondes"
#: website/public/showcase/aegis/index.html:341
#: website/public/showcase/aegis/index.html:641
msgctxt "page:showcase/aegis/index.html"
msgid "59 seconds"
msgstr "59 secondes"
#: website/public/showcase/aegis/index.html:348
#: website/public/showcase/aegis/index.html:646
msgctxt "page:showcase/aegis/index.html"
msgid "60 seconds"
msgstr "60 secondes"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/showcase/aegis/index.html:357
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"At 59 seconds: {ph0}287082.{ph1} At 60 seconds: {ph2}359152.{ph3} Moving "
"within one block leaves the code unchanged."
msgstr ""
"À 59 secondes: {ph0}287082.{ph1} À 60 secondes: {ph2}359152.{ph3} Le "
"déplacement à l'intérieur d'un bloc laisse le code inchangé."
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:364
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The key is fixed, public {ph0}RFC 6238 test data{ph1}. The demo implements "
"the calculation recovered from the APK."
msgstr ""
"La clé est fixe, publique {ph0}Données de test RFC 6238{ph1}. La démo "
"implémente le calcul récupéré à partir du APK ."
#: website/public/showcase/aegis/index.html:371
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The diagram shows the result at 59 seconds. Enable JavaScript to change the "
"clock."
msgstr ""
"Le diagramme montre le résultat à 59 secondes. Activez JavaScript pour "
"changer l'horloge."
#: website/public/showcase/aegis/index.html:380
msgctxt "page:showcase/aegis/index.html"
msgid "Find the code with REA"
msgstr "Trouver le code avec REA"
#: website/public/showcase/aegis/index.html:383
msgctxt "page:showcase/aegis/index.html"
msgid "Narrow the APK to three classes"
msgstr "Limitez le APK à trois classes"
#. {ph0}: <code>TotpInfo</code>
#: website/public/showcase/aegis/index.html:408
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0} is the calculation candidate; the other two concern the progress bar "
"and imported accounts. TOTP means a time-based one-time password."
msgstr ""
"{ph0} est le calcul candidat; les deux autres concernent la barre de "
"progression et les comptes importés. TOTP signifie un mot de passe à usage "
"unique basé sur le temps."
#: website/public/showcase/aegis/index.html:415
msgctxt "page:showcase/aegis/index.html"
msgid "Connect the generator to the app's display"
msgstr "Connectez le générateur à l'écran de l'application"
#. {ph0}: <code>EntryHolder.getOtp</code>
#. {ph1}: <code>TotpInfo.getOtp(timestamp)</code>
#: website/public/showcase/aegis/index.html:443
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA identifies the timestamp overload and finds the base method's callers. "
"Inspecting {ph0} then shows the display calling {ph1}."
msgstr ""
"REA identifie la surcharge d'horodatage et trouve les appelants de la "
"méthode de base. Inspection {ph0} puis affiche l'appel d'affichage {ph1}."
#. {ph0}: <code>com.beemdevelopment.aegis</code>
#: website/public/showcase/aegis/index.html:451
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Requests show a shortened input path. Result class names omit the common "
"{ph0} prefix."
msgstr ""
"Les requêtes affichent un chemin d'entrée raccourci. Les noms de classe de "
"résultat omettent le commun {ph0} préfixe."
#: website/public/showcase/aegis/index.html:458
msgctxt "page:showcase/aegis/index.html"
msgid "Read the calculation"
msgstr "Lire le calcul"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:459
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA returns {ph0}the clock conversion, default settings and generating "
"methods.{ph1} The constructors set a 30-second interval and six digits; the "
"timestamp method turns seconds into a block number."
msgstr ""
"Retours sur le REA {ph0}la conversion d'horloge, les paramètres par défaut "
"et les méthodes de génération.{ph1} Les constructeurs définissent un "
"intervalle de 30 secondes et six chiffres; la méthode d'horodatage "
"transforme les secondes en un numéro de bloc."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:474
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}01{ph1} Time block"
msgstr "{ph0}01{ph1} Bloc de temps"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:482
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}02{ph1} Key + block"
msgstr "{ph0}02{ph1} Clé + bloc"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:490
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}03{ph1} Six digits"
msgstr "{ph0}03{ph1} Six chiffres"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:549
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Time chooses the block.{ph1} Seconds 30 through 59 all give block 1. At"
" 60 seconds, the block becomes 2."
msgstr ""
"{ph0}Le temps choisit le bloc.{ph1} Les secondes 30 à 59 donnent toutes le "
"bloc 1. À 60 secondes, le bloc devient 2."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:555
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}The key matters too.{ph1} The generator combines the account key with "
"the block. An account with a different key can show a different code at the "
"same time."
msgstr ""
"{ph0}La clé compte aussi.{ph1} Le générateur combine la clé de compte avec "
"le bloc. Un compte avec une clé différente peut afficher un code différent "
"en même temps."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:562
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Keep six digits.{ph1} The remainder after division by 1,000,000 is "
"padded with zeroes when needed, so a code can begin with 0."
msgstr ""
"{ph0}Gardez six chiffres.{ph1} Le reste après division par 1 000 000 est "
"complété par des zéros si nécessaire, de sorte qu'un code peut commencer par"
" 0."
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:569
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Excerpts from several inspected methods, with line wrapping for display. The"
" right panel is an explanatory summary. {ph0}Aegis code is GPL-3.0.{ph1}"
msgstr ""
"Extraits de plusieurs méthodes inspectées, avec retour à la ligne pour "
"l'affichage. Le panneau de droite est un résumé explicatif. {ph0} Le code "
"Aegis est sous licence GPL-3.0.{ph1}"
#: website/public/showcase/aegis/index.html:578
msgctxt "page:showcase/aegis/index.html"
msgid "Inside the generator"
msgstr "À l'intérieur du générateur"
#. {ph0}: <code>generateOTP</code>
#. {ph1}: <code>kotlin.ExceptionsKt</code>
#. {ph2}: <code>TotpInfo</code>
#. {ph3}: <code>HOTP</code>
#: website/public/showcase/aegis/index.html:579
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The released APK puts {ph0} in {ph1}. REA follows the call from {ph2} and "
"returns this body; the original source calls the helper {ph3}."
msgstr ""
"Les mises APK publiées {ph0} dans {ph1}. REA suit l'appel de {ph2} et "
"renvoie ce corps; la source d'origine appelle l'assistant {ph3}."
#: website/public/showcase/aegis/index.html:601
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The last hash byte selects a position. Four bytes at that position provide a"
" positive 31-bit number; formatting reduces it to the requested number of "
"digits. The constructor's last argument selects the code-formatting branch "
"introduced by compilation."
msgstr ""
"Le dernier octet de hachage sélectionne une position. Quatre octets à cette "
"position fournissent un nombre positif de 31 bits; le formatage le réduit au"
" nombre de chiffres demandé. Le dernier argument du constructeur sélectionne"
" la branche de formatage de code introduite par la compilation."
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/app/src/main/java/com/beemdevelopment/aegis/crypto/otp/HOTP.java"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:608
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Compare with the matching release source{ph1}."
msgstr "{ph0}Comparer avec la source de publication correspondante{ph1}."
#: website/public/showcase/aegis/index.html:618
msgctxt "page:showcase/aegis/index.html"
msgid "Check the reconstruction"
msgstr "Vérifiez la reconstruction"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:619
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"We assembled the selected REA-returned Java methods in a small test program."
" Their output matched an independent reconstruction on {ph0}133 test "
"cases{ph1}, including time-block boundaries and codes beginning with zero."
msgstr ""
"Nous avons assemblé les méthodes Java REA sélectionnées dans un petit "
"programme de test. Leur sortie correspondait à une reconstruction "
"indépendante sur {ph0}133 cas de test{ph1}, y compris les limites des blocs "
"de temps et les codes commençant par zéro."
#: website/public/showcase/aegis/index.html:629
msgctxt "page:showcase/aegis/index.html"
msgid "Example time"
msgstr "Exemple de temps"
#: website/public/showcase/aegis/index.html:631
msgctxt "page:showcase/aegis/index.html"
msgid "Six-digit code"
msgstr "Code à six chiffres"
#: website/public/showcase/aegis/index.html:636
msgctxt "page:showcase/aegis/index.html"
msgid "30 seconds"
msgstr "30 secondes"
#: website/public/showcase/aegis/index.html:651
msgctxt "page:showcase/aegis/index.html"
msgid "1,111,111,109 seconds"
msgstr "1 111 111 109 secondes"
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:658
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The generator also matches the six published SHA-1 reference cases in "
"{ph0}RFC 6238{ph1}. Check the browser implementation against them:"
msgstr ""
"Le générateur correspond également aux six cas de référence SHA-1 publiés "
"dans {ph0}Référence RFC 6238{ph1}. Vérifiez l'implémentation du navigateur "
"par rapport à eux:"
#: website/public/showcase/aegis/index.html:666
msgctxt "page:showcase/aegis/index.html"
msgid "Run reference checks"
msgstr "Exécuter des vérifications des références"
#: website/public/showcase/aegis/index.html:673
msgctxt "page:showcase/aegis/index.html"
msgid "Read the demo's calculation"
msgstr "Lire le calcul de la démo"
#: website/public/showcase/aegis/index.html:677
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The reference cases use eight digits. The check also verifies their six-"
"digit results."
msgstr ""
"Les cas de référence utilisent huit chiffres. La vérification vérifie "
"également leurs résultats à six chiffres."
#: website/public/showcase/aegis/index.html:686
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Verification runs extracted Java methods and the new demo. The Android APK "
"was inspected statically."
msgstr ""
"La vérification exécute les méthodes Java extraites et la nouvelle démo. "
"L'Android APK a été inspecté statiquement."
#: website/public/showcase/aegis/index.html:693
msgctxt "page:showcase/aegis/index.html"
msgid "Inspect the APK yourself"
msgstr "Inspectez vous-même le APK"
#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:694
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Set up REA{ph1} on macOS or Linux, then download these two files into "
"the same folder. On Windows, use a Linux environment such as WSL."
msgstr ""
"{ph0}Mettre en place REA{ph1} sur macOS ou Linux, puis téléchargez ces deux "
"fichiers dans le même dossier. Sur Windows, utilisez un Linux environnement "
"tel que WSL."
#. {ph0}: <code>JAVA_HOME</code>
#. {ph1}: <code>PATH</code>
#: website/public/showcase/aegis/index.html:699
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Android analysis needs a full JDK 17 or later. Select it with {ph0} or "
"{ph1}. This case used JDK 21."
msgstr ""
"L'analyse Android nécessite un JDK 17 complet ou une version ultérieure. "
"Sélectionnez-le avec {ph0} ou {ph1}. Cette affaire utilisait JDK 21."
#: website/public/showcase/aegis/index.html:715
msgctxt "page:showcase/aegis/index.html"
msgid "Point REA at the provider file and inspect the APK:"
msgstr "Pointez REA sur le fichier fournisseur et inspectez le APK :"
#: website/public/showcase/aegis/index.html:718
msgctxt "page:showcase/aegis/index.html"
msgid "macOS / Linux"
msgstr "Modèle: macOS / Linux"
#. {ph0}: <code>REA_JADX_MCP_JAR</code>
#: website/public/showcase/aegis/index.html:732
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Your agent can continue through REA's CLI using the prompt above. For MCP, "
"add {ph0} to the REA server's environment and reconnect it."
msgstr ""
"Votre agent peut continuer via le REA de CLI en utilisant l'invite ci-"
"dessus. Pour le modèle MCP, ajoutez {ph0} à l'environnement du serveur REA "
"et reconnectez-le."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:737
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A next question: {ph0}what happens when an account uses eight digits or a "
"different time interval?{ph1}"
msgstr ""
"Une question suivante: {ph0}que se passe-t-il lorsqu'un compte utilise huit "
"chiffres ou un intervalle de temps différent?{ph1}"
#: website/public/showcase/aegis/index.html:747
msgctxt "page:showcase/aegis/index.html"
msgid "Sources"
msgstr "Sources"
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/releases/tag/v3.4.3" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/beemdevelopment/Aegis/tree/d6f4e5925a97e4e91593f1542085eae03432a759"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph5}: </a >
#: website/public/showcase/aegis/index.html:749
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Official Aegis 3.4.3 release{ph1} · {ph2}Matching source commit{ph3} · "
"{ph4}GPL-3.0 license{ph5}"
msgstr ""
"{ph0}Version officielle de Aegis 3.4.3{ph1} · {ph2}Validation de la source "
"correspondante{ph3} · {ph4}Licence GPL-3.0{ph5}"
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#. {ph2}: <a href="test-vectors.json">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:765
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}RFC 6238 reference cases{ph1} · {ph2}Demo test data{ph3}"
msgstr ""
"{ph0}Cas de référence RFC 6238{ph1} · {ph2}Données de test de "
"démonstration{ph3}"
#: website/public/showcase/aegis/index.html:772
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspected with REA 6.1.0 on 9 October 2026. Decompiled excerpts are credited"
" to Aegis; the diagram, readable summary and browser reconstruction are new "
"teaching material."
msgstr ""
"Inspecté avec REA 6.1.0 le 9 octobre 2026. Les extraits décompilés sont "
"crédités à Aegis ; le diagramme, le résumé lisible et la reconstruction du "
"navigateur sont de nouveaux supports pédagogiques."
#: website/public/showcase/aegis/index.html:6
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK Reverse Engineering: Login Codes — REA"
msgstr "Aegis APK Ingénierie inverse: Codes de connexion-REA"
#: website/public/showcase/aegis/index.html:7
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspect the Aegis Android APK with REA, recover its six-digit login-code "
"calculation and try a reconstruction with an adjustable clock."
msgstr ""
"Inspectez le Aegis Android APK avec REA, récupérez son calcul de code de "
"connexion à six chiffres et essayez une reconstruction avec une horloge "
"réglable."
#: website/public/showcase/aegis/index.html:232
msgctxt "page:showcase/aegis/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/showcase/aegis/index.html:243
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK case study"
msgstr "Aegis APK étude de cas"
#: website/public/showcase/aegis/index.html:256
msgctxt "page:showcase/aegis/index.html"
msgid "Copy Aegis example prompt"
msgstr "Copier l'invite d'exemple Aegis"
#: website/public/showcase/aegis/index.html:469
msgctxt "page:showcase/aegis/index.html"
msgid "Follow the login-code calculation"
msgstr "Suivez le calcul du code de connexion"
#: website/public/showcase/aegis/index.html:719
msgctxt "page:showcase/aegis/index.html"
msgid "Copy APK inspection command"
msgstr "Copie de la commande d'inspection APK"
#: website/public/showcase/aegis/index.html:795
msgctxt "page:showcase/aegis/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/showcase/ctf/index.html:99
msgctxt "page:showcase/ctf/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/ctf/index.html:181
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / CTF"
msgstr "{ph0}Accueil{ph1} / {ph2}Vitrines{ph3} / FCT"
#: website/public/showcase/ctf/index.html:184
msgctxt "page:showcase/ctf/index.html"
msgid "Case study · DownUnderCTF 2023"
msgstr "Étude de cas * DownUnderCTF 2023"
#. {ph0}: <br />
#: website/public/showcase/ctf/index.html:185
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "Find the flag in{ph0}a CTF binary."
msgstr "Trouvez le drapeau dans{ph0}un binaire CTF."
#. {ph0}: <code>Correct!</code>
#: website/public/showcase/ctf/index.html:186
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Use REA to inspect a small flag checker, turn its rules into equations and "
"find an input that makes the original program print {ph0}."
msgstr ""
"Utilisez REA pour inspecter un petit vérificateur d'indicateurs, transformer"
" ses règles en équations et trouver une entrée qui fait imprimer le "
"programme d'origine {ph0}."
#: website/public/showcase/ctf/index.html:191
msgctxt "page:showcase/ctf/index.html"
msgid "masked squares flag checker · Easy · Linux x86-64"
msgstr "vérificateur de drapeau carrés masqués * Facile * Linux x86-64"
#: website/public/showcase/ctf/index.html:194
msgctxt "page:showcase/ctf/index.html"
msgid "View the original challenge"
msgstr "Voir le défi original"
#: website/public/showcase/ctf/index.html:202
msgctxt "page:showcase/ctf/index.html"
msgid "From a binary to a checked answer"
msgstr "D'une réponse binaire à une réponse vérifiée"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:204
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}01 · Find the check{ph1}{ph2}Strings → checking functions{ph3}{ph4}REA "
"finds the prompt, its references and the code that accepts or rejects an "
"input.{ph5}"
msgstr ""
"{ph0}01 * Trouver le chèque{ph1}{ph2}Chaînes → fonctions de "
"vérification{ph3}{ph4} REA trouve l'invite, ses références et le code qui "
"accepte ou rejette une entrée.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:212
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Extract the rules{ph1}{ph2}36 characters · 26 sums{ph3}{ph4}REA "
"returns the instructions and data behind each check. The agent turns them "
"into equations.{ph5}"
msgstr ""
"{ph0}02 * Extraire les règles{ph1}{ph2}36 caractères · 26 sommes{ph3}{ph4} "
"REA renvoie les instructions et les données derrière chaque vérification. "
"L'agent les transforme en équations.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:220
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Solve and run{ph1}{ph2}Recovered flag → Correct!{ph3}{ph4}A Python"
" script solves the equations. REA captures the original program accepting "
"the result.{ph5}"
msgstr ""
"{ph0}03 * Résoudre et exécuter{ph1}{ph2}Drapeau récupéré → "
"Correct!{ph3}{ph4}Un script Python résout les équations. REA capture le "
"programme d'origine acceptant le résultat.{ph5}"
#: website/public/showcase/ctf/index.html:229
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The challenge is by joseph, published in DownUnderCTF's official repository."
msgstr ""
"Le défi est de joseph, publié dans le référentiel officiel de DownUnderCTF."
#: website/public/showcase/ctf/index.html:237
msgctxt "page:showcase/ctf/index.html"
msgid "In this case study"
msgstr "Dans cette étude de cas"
#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:239
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Find the checking code{ph1}"
msgstr "{ph0}Trouver le code de vérification{ph1}"
#. {ph0}: <a href="#mask">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:240
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Read one mask{ph1}"
msgstr "{ph0}Lire un masque{ph1}"
#. {ph0}: <a href="#code">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:241
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Assembly to readable code{ph1}"
msgstr "{ph0}Assemblage en code lisible{ph1}"
#. {ph0}: <a href="#solve">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:242
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Solve the equations{ph1}"
msgstr "{ph0}Résoudre les équations{ph1}"
#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:243
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Check the answer{ph1}"
msgstr "{ph0}Vérifiez la réponse{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:244
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Try it yourself{ph1}"
msgstr "{ph0}Essayez-le vous-même{ph1}"
#: website/public/showcase/ctf/index.html:249
msgctxt "page:showcase/ctf/index.html"
msgid "Find the checking code"
msgstr "Trouver le code de vérification"
#. {ph0}: <code>Correct!</code>
#. {ph1}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:250
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The handout is a 15 KB executable. It asks for a flag, then prints {ph0} or "
"{ph1}. Start with a simple request to your agent."
msgstr ""
"Le document est un exécutable de 15 Ko. Il demande un drapeau, puis imprime "
"{ph0} ou {ph1}. Commencez par une simple demande à votre agent."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/ctf/index.html:257
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/showcase/ctf/index.html:262
#: website/public/showcase/ctf/index.html:481
#: website/public/showcase/ctf/index.html:505
#: website/public/showcase/ctf/index.html:575
#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Copy"
msgstr "Copier"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="ctf-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/ctf/index.html:271
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze ms_flag_checker and find the flag. "
"Explain how the checks work, then verify the answer with the original "
"program.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour analyser ms_flag_checker et trouver "
"l'indicateur. Expliquez le fonctionnement des vérifications, puis vérifiez "
"la réponse avec le programme d'origine.{ph3}{ph4}{ph5}"
#: website/public/showcase/ctf/index.html:280
msgctxt "page:showcase/ctf/index.html"
msgid ""
"An example prompt, with the downloaded challenge available locally and a "
"native analysis provider connected."
msgstr ""
"Un exemple d'invite, avec le défi téléchargé disponible localement et une "
"analyse du fournisseur de programmes en code machine connecté."
#: website/public/showcase/ctf/index.html:286
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the input prompt to its function"
msgstr "Suivez l'invite de saisie jusqu'à sa fonction"
#: website/public/showcase/ctf/index.html:315
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The reference gives the agent a place to investigate, even though the "
"executable's original function names have been removed."
msgstr ""
"La référence donne à l'agent un endroit pour enquêter, même si les noms de "
"fonctions d'origine de l'exécutable ont été supprimés."
#: website/public/showcase/ctf/index.html:322
msgctxt "page:showcase/ctf/index.html"
msgid "Read the checker and its two helpers"
msgstr "Lire le vérificateur et ses deux aides"
#. {ph0}: <code>0x18</code>
#. {ph1}: <code>0x270</code>
#: website/public/showcase/ctf/index.html:350
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The first loop copies 36 character codes. The checking loop decodes a mask, "
"sums the selected codes and compares the result with a stored number. Its "
"{ph0}-byte steps across {ph1} bytes give 26 masks."
msgstr ""
"La première boucle copie 36 codes de caractères. La boucle de contrôle "
"décode un masque, additionne les codes sélectionnés et compare le résultat "
"avec un nombre stocké. Ses {ph0}- étapes d'octets à travers {ph1} les octets"
" donnent 26 masques."
#: website/public/showcase/ctf/index.html:358
msgctxt "page:showcase/ctf/index.html"
msgid ""
"These are selected results from a fresh REA analysis. The local target path "
"is shortened for display; addresses refer to REA's imported image."
msgstr ""
"Ce sont des résultats sélectionnés à partir d'une nouvelle analyse REA. Le "
"chemin cible local est raccourci pour l'affichage; les adresses se réfèrent "
"à l'image importée de REA."
#: website/public/showcase/ctf/index.html:366
msgctxt "page:showcase/ctf/index.html"
msgid "One check reveals one character"
msgstr "Un chèque révèle un caractère"
#: website/public/showcase/ctf/index.html:367
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The checker arranges the input in a 6×6 grid. A mask chooses which cells "
"contribute to a sum. Its compact encoding uses negative numbers to skip "
"cells and positive numbers to select them."
msgstr ""
"Le vérificateur organise l'entrée dans une grille 6×6. Un masque choisit "
"quelles cellules contribuent à une somme. Son codage compact utilise des "
"nombres négatifs pour sauter les cellules et des nombres positifs pour les "
"sélectionner."
#. {ph0}: <a href="../../assets/figures/ctf-mask-equation.svg" >
#. {ph1}: </a >
#: website/public/showcase/ctf/index.html:387
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "The seventh check selects just one position. {ph0}Open figure{ph1}."
msgstr ""
"La septième vérification sélectionne une seule position. {ph0}Figure "
"ouverte{ph1}."
#: website/public/showcase/ctf/index.html:394
msgctxt "page:showcase/ctf/index.html"
msgid "Read the mask and its target from the binary"
msgstr "Lire le masque et sa cible à partir du binaire"
#. {ph0}: <code>MOVSX</code>
#. {ph1}: <code>eb</code>
#. {ph2}: <code>code[21] = 55</code>
#. {ph3}: <code>7</code>
#: website/public/showcase/ctf/index.html:416
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instruction {ph0} reads mask bytes as signed values. This is why {ph1} "
"means −21. The target is a little-endian integer. Together, these bytes tell"
" the agent that {ph2}, so that character is {ph3}."
msgstr ""
"L'instruction {ph0} lit les octets du masque en tant que valeurs signées. "
"C'est pourquoi {ph1} signifie -21. La cible est un entier little-endian. "
"Ensemble, ces octets indiquent à l'agent que {ph2}, donc ce personnage est "
"{ph3}."
#: website/public/showcase/ctf/index.html:425
msgctxt "page:showcase/ctf/index.html"
msgid "From instructions to a readable check"
msgstr "Des instructions à un chèque lisible"
#: website/public/showcase/ctf/index.html:426
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Select a step to connect the summing helper and its caller to the same rule "
"in C."
msgstr ""
"Sélectionnez une étape pour connecter l'assistant de sommation et son "
"appelant à la même règle en C."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:436
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01{ph1} Start"
msgstr "{ph0}01{ph1} Démarrer"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:444
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}02{ph1} Select"
msgstr "{ph0}02{ph1} Sélectionner"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:452
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}03{ph1} Add"
msgstr "{ph0}03{ph1} Ajouter"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:460
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}04{ph1} Advance"
msgstr "{ph0}04{ph1} Avance"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:468
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}05{ph1} Compare"
msgstr "{ph0}05{ph1} Comparer"
#: website/public/showcase/ctf/index.html:480
msgctxt "page:showcase/ctf/index.html"
msgid "REA · selected original instructions"
msgstr "REA * instructions d'origine sélectionnées"
#: website/public/showcase/ctf/index.html:504
msgctxt "page:showcase/ctf/index.html"
msgid "Readable C · one-check summary"
msgstr "Résumé lisible de C * one-check"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ECX</code>
#: website/public/showcase/ctf/index.html:533
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01 · Start at zero.{ph1} {ph2} holds the running sum."
msgstr "{ph0}01 * Commencez à zéro.{ph1} {ph2} détient la somme courante."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:537
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Check the mask cell.{ph1} A zero value skips the character; a "
"nonzero value includes it."
msgstr ""
"{ph0}02 * Vérifiez la cellule du masque.{ph1} Une valeur nulle ignore le "
"caractère; une valeur différente de zéro l'inclut."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:541
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Add a character code.{ph1} The input's integer at the same offset "
"is added to the sum."
msgstr ""
"{ph0}03 * Ajouter un code de caractère.{ph1} L'entier de l'entrée au même "
"décalage est ajouté à la somme."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:545
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}04 · Move to the next cell.{ph1} The original loop advances four bytes "
"per integer and visits six rows of six cells."
msgstr ""
"{ph0}04 * Passez à la cellule suivante.{ph1} La boucle d'origine avance de "
"quatre octets par entier et visite six rangées de six cellules."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>EAX</code>
#. {ph3}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:550
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}05 · Compare with the stored target.{ph1} The caller receives the sum "
"in {ph2}. A mismatch jumps to {ph3}."
msgstr ""
"{ph0}05 * Comparer avec la cible stockée.{ph1} L'appelant reçoit la somme en"
" {ph2}. Un décalage saute à {ph3}."
#: website/public/showcase/ctf/index.html:557
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instructions come from the summing helper and its caller. The C is an "
"explanatory summary with descriptive names and a flattened 36-cell loop."
msgstr ""
"Les instructions proviennent de l'assistant de sommation et de son appelant."
" Le C est un résumé explicatif avec des noms descriptifs et une boucle "
"aplatie de 36 cellules."
#: website/public/showcase/ctf/index.html:565
msgctxt "page:showcase/ctf/index.html"
msgid "Solve the 26 equations"
msgstr "Résoudre les 26 équations"
#: website/public/showcase/ctf/index.html:566
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Most masks select several cells. For example, the first check adds 16 "
"character codes and requires a total of 1441. The overlapping selections "
"give equations that a small Python script can solve together."
msgstr ""
"La plupart des masques sélectionnent plusieurs cellules. Par exemple, la "
"première vérification ajoute 16 codes de caractères et nécessite un total de"
" 1441. Les sélections qui se chevauchent donnent des équations qu'un petit "
"script Python peut résoudre ensemble."
#: website/public/showcase/ctf/index.html:574
msgctxt "page:showcase/ctf/index.html"
msgid "Python · solver excerpt"
msgstr "Extrait du solveur Python ·"
#. {ph0}: <code>DUCTF{…}</code>
#: website/public/showcase/ctf/index.html:602
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Z3 is a solver that finds values satisfying these equations. This excerpt "
"uses the extracted checks and assumes a {ph0} flag with letters, digits, "
"underscores and braces. The complete download includes all 26 masks and "
"targets."
msgstr ""
"Z3 est un solveur qui trouve des valeurs satisfaisant ces équations. Cet "
"extrait utilise les vérifications extraites et suppose une {ph0} drapeau "
"avec des lettres, des chiffres, des traits de soulignement et des accolades."
" Le téléchargement complet comprend les 26 masques et cibles."
#: website/public/showcase/ctf/index.html:608
msgctxt "page:showcase/ctf/index.html"
msgid "Download the complete solver"
msgstr "Télécharger le solveur complet"
#: website/public/showcase/ctf/index.html:614
msgctxt "page:showcase/ctf/index.html"
msgid "Check the answer with the original program"
msgstr "Vérifiez la réponse avec le programme d'origine"
#. {ph0}: <code>z</code>
#. {ph1}: <code>y</code>
#: website/public/showcase/ctf/index.html:615
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"REA's process capture records the original executable accepting the solved "
"flag. Changing one selected character from {ph0} to {ph1} makes the first "
"sum 1440 instead of 1441, and the program rejects it."
msgstr ""
"La capture de processus de REA enregistre l'exécutable d'origine acceptant "
"l'indicateur résolu. Changer un caractère sélectionné à partir de {ph0} à "
"{ph1} fait la première somme 1440 au lieu de 1441, et le programme la "
"rejette."
#: website/public/showcase/ctf/index.html:625
msgctxt "page:showcase/ctf/index.html"
msgid "Input"
msgstr "Entrée"
#: website/public/showcase/ctf/index.html:626
msgctxt "page:showcase/ctf/index.html"
msgid "Observed output"
msgstr "Production observée"
#: website/public/showcase/ctf/index.html:627
msgctxt "page:showcase/ctf/index.html"
msgid "Exit code"
msgstr "Code de sortie"
#: website/public/showcase/ctf/index.html:632
msgctxt "page:showcase/ctf/index.html"
msgid "Solver's flag"
msgstr "Drapeau du solveur"
#: website/public/showcase/ctf/index.html:637
msgctxt "page:showcase/ctf/index.html"
msgid "One character changed"
msgstr "Un personnage a changé"
#: website/public/showcase/ctf/index.html:645
msgctxt "page:showcase/ctf/index.html"
msgid "Show the recovered flag and captured output"
msgstr "Afficher l'indicateur récupéré et la sortie capturée"
#: website/public/showcase/ctf/index.html:648
msgctxt "page:showcase/ctf/index.html"
msgid "REA · original program output"
msgstr "REA * sortie du programme d'origine"
#: website/public/showcase/ctf/index.html:649
msgctxt "page:showcase/ctf/index.html"
msgid "Copy flag"
msgstr "Copier l'indicateur"
#: website/public/showcase/ctf/index.html:661
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The recovered value also matches the flag in the organizers' published "
"challenge metadata, checked after solving the binary."
msgstr ""
"La valeur récupérée correspond également au drapeau dans les métadonnées de "
"défi publiées par les organisateurs, vérifiées après la résolution du "
"binaire."
#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Source, target identity and analysis details"
msgstr "Détails de la source, de l'identité de la cible et de l'analyse"
#: website/public/showcase/ctf/index.html:668
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Fresh analysis and two process captures on 8 October 2026, using REA 4.1.0 "
"with Ghidra 12.1.4 on Linux x64. The binary is a stripped x86-64 ELF, 15,248"
" bytes."
msgstr ""
"Nouvelle analyse et deux captures de processus le 8 octobre 2026, en "
"utilisant REA 4.1.0 avec Ghidra 12.1.4 sur Linux x64. Le binaire est un ELF "
"x86-64 dépouillé, 15 248 octets."
#: website/public/showcase/ctf/index.html:679
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The string references, functions and constants were inspected before reading"
" the organizers' source or solution. The Python solver and the diagram were "
"built from those REA results."
msgstr ""
"Les références de chaîne, les fonctions et les constantes ont été inspectées"
" avant de lire la source ou la solution des organisateurs. Le solveur Python"
" et le diagramme ont été construits à partir de ces résultats REA."
#. {ph0}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/src/ms_flag_checker.c" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/ctfcli.yaml" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/morluto/rea/blob/main/website/evidence/ctf-masked-
#. squares.md" >
#. {ph5}: </a >
#: website/public/showcase/ctf/index.html:684
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}Compare with the organizers' source{ph1} · {ph2}Challenge metadata and "
"flag{ph3} · {ph4}REA evidence notes{ph5}"
msgstr ""
"{ph0}Comparez avec la source des organisateurs{ph1} · {ph2}Contester les "
"métadonnées et l'indicateur{ph3} · {ph4}REA notes de preuve{ph5}"
#: website/public/showcase/ctf/index.html:704
msgctxt "page:showcase/ctf/index.html"
msgid "Try it yourself"
msgstr "Essayez-le vous-même"
#: website/public/showcase/ctf/index.html:705
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Download the original challenge and the solver into one folder. Use the "
"prompt above to investigate with your agent, or run the included script."
msgstr ""
"Téléchargez le défi d'origine et le solveur dans un seul dossier. Utilisez "
"l'invite ci-dessus pour enquêter avec votre agent ou exécutez le script "
"inclus."
#: website/public/showcase/ctf/index.html:721
msgctxt "page:showcase/ctf/index.html"
msgid "Terminal · solve and run"
msgstr "Terminal * résoudre et exécuter"
#. {ph0}: <code>z3-solver</code>
#: website/public/showcase/ctf/index.html:738
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The script prints a candidate flag; paste it at the program's prompt. "
"Solving needs Python and {ph0}. Running the original executable needs Linux "
"x86-64."
msgstr ""
"Le script imprime un drapeau candidat; collez-le à l'invite du programme. La"
" résolution des besoins Python et {ph0}. L'exécution de l'exécutable "
"d'origine nécessite Linux x86-64."
#: website/public/showcase/ctf/index.html:743
msgctxt "page:showcase/ctf/index.html"
msgid "Set up REA with your coding agent"
msgstr "Configurez REA avec votre agent de codage"
#: website/public/showcase/ctf/index.html:6
msgctxt "page:showcase/ctf/index.html"
msgid "CTF Reverse Engineering: DownUnderCTF Flag Checker — REA"
msgstr "Ingénierie inverse CTF: Vérificateur de drapeau DownUnderCTF-REA"
#: website/public/showcase/ctf/index.html:7
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Use REA to solve DownUnderCTF's masked squares flag checker. Find the "
"checking functions, extract the masks and compare a recovered flag with the "
"original program."
msgstr ""
"Utilisez REA pour résoudre le vérificateur d'indicateur de carrés masqués de"
" DownUnderCTF. Retrouvez les fonctions de vérification, extrayez les masques"
" et comparez un drapeau récupéré avec le programme d'origine."
#: website/public/showcase/ctf/index.html:236
msgctxt "page:showcase/ctf/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/showcase/ctf/index.html:247
msgctxt "page:showcase/ctf/index.html"
msgid "CTF flag-checker case study"
msgstr "Étude de cas sur le vérificateur de drapeau de la FCT"
#: website/public/showcase/ctf/index.html:262
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF example prompt"
msgstr "Copier l'invite d'exemple CTF"
#: website/public/showcase/ctf/index.html:373
msgctxt "page:showcase/ctf/index.html"
msgid "CTF mask equation; scroll horizontally on smaller screens"
msgstr ""
"Équation du masque CTF; faites défiler horizontalement sur des écrans plus "
"petits"
#: website/public/showcase/ctf/index.html:379
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The seventh mask skips 21 cells, selects position 21, then skips 14. Only "
"that cell contributes to the sum. Its required character code is 55, which "
"means the character is 7."
msgstr ""
"Le septième masque saute 21 cellules, sélectionne la position 21, puis saute"
" 14. Seule cette cellule contribue à la somme. Son code de caractère requis "
"est 55, ce qui signifie que le caractère est 7."
#: website/public/showcase/ctf/index.html:431
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the CTF check"
msgstr "Suivez la vérification du FCT"
#: website/public/showcase/ctf/index.html:481
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF assembly"
msgstr "Copier l'assemblage de la FCT"
#: website/public/showcase/ctf/index.html:505
msgctxt "page:showcase/ctf/index.html"
msgid "Copy readable CTF check"
msgstr "Copier le chèque CTF lisible"
#: website/public/showcase/ctf/index.html:575
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver excerpt"
msgstr "Copier l'extrait du solveur CTF"
#: website/public/showcase/ctf/index.html:649
msgctxt "page:showcase/ctf/index.html"
msgid "Copy recovered flag"
msgstr "Copier l'indicateur récupéré"
#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver commands"
msgstr "Copier les commandes du solveur CTF"
#: website/public/showcase/ctf/index.html:764
msgctxt "page:showcase/ctf/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/showcase/dx-ball/index.html:99
msgctxt "page:showcase/dx-ball/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/dx-ball/index.html:181
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / DX-Ball"
msgstr "{ph0}Accueil{ph1} / {ph2}Vitrines{ph3} / DX-Ball"
#: website/public/showcase/dx-ball/index.html:184
msgctxt "page:showcase/dx-ball/index.html"
msgid "Case study · DX-Ball 1.07"
msgstr "Étude de cas * DX-Ball 1.07"
#. {ph0}: <br />
#: website/public/showcase/dx-ball/index.html:185
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Rebuilding DX-Ball{ph0}from its executable."
msgstr "Reconstruction DX-Ball{ph0}de son exécutable."
#: website/public/showcase/dx-ball/index.html:186
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The goal is a maintainable C version of the 1996 Windows game. REA helps the"
" agent inspect the original, one function at a time."
msgstr ""
"L'objectif est une version C maintenable du jeu Windows de 1996. REA aide "
"l'agent à inspecter l'original, une fonction à la fois."
#: website/public/showcase/dx-ball/index.html:190
msgctxt "page:showcase/dx-ball/index.html"
msgid "Windows i386 · C · REA"
msgstr "Windows i386 · D · REA"
#. {ph0}: <a href="../../assets/figures/dx-ball-sound-pan-investigation.svg" >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:207
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"One function, from executable to checked C. REA supplies the instructions, "
"callers and data reads; the reconstruction project implements and tests the "
"result. {ph0}Open figure{ph1}"
msgstr ""
"Une fonction, de l'exécutable au vérifié C. REA fournit les instructions, "
"les appelants et les lectures de données; le projet de reconstruction "
"implémente et teste le résultat. {ph0}Figure ouverte{ph1}"
#: website/public/showcase/dx-ball/index.html:218
msgctxt "page:showcase/dx-ball/index.html"
msgid "In this case study"
msgstr "Dans cette étude de cas"
#. {ph0}: <a href="#progress">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:220
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}The project{ph1}"
msgstr "{ph0}Le projet{ph1}"
#. {ph0}: <a href="#sound-pan">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:221
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Sound pan{ph1}"
msgstr "{ph0}Panoramique sonore{ph1}"
#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:222
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Checking the result{ph1}"
msgstr "{ph0}Vérification du résultat{ph1}"
#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:223
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Continue the work{ph1}"
msgstr "{ph0}Continuer le travail{ph1}"
#: website/public/showcase/dx-ball/index.html:231
msgctxt "page:showcase/dx-ball/index.html"
msgid "maintained C functions"
msgstr "fonctions C maintenues"
#: website/public/showcase/dx-ball/index.html:235
msgctxt "page:showcase/dx-ball/index.html"
msgid "comparisons with original code"
msgstr "comparaisons avec le code d'origine"
#: website/public/showcase/dx-ball/index.html:239
msgctxt "page:showcase/dx-ball/index.html"
msgid "functions with matching compiled bytes"
msgstr "fonctions avec octets compilés correspondants"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/PROGRESS.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ORACLES.md" >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:242
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Project checkpoint: 7 October 2026. {ph0}Progress ledger{ph1} · {ph2}Test "
"coverage{ph3}"
msgstr ""
"Point de contrôle du projet: 7 octobre 2026. {ph0}Registre de "
"progression{ph1} · {ph2}Couverture des tests{ph3}"
#: website/public/showcase/dx-ball/index.html:254
msgctxt "page:showcase/dx-ball/index.html"
msgid "The project so far"
msgstr "Le projet à ce jour"
#: website/public/showcase/dx-ball/index.html:255
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered code covers board and resource handling, brick hits, "
"animations, particles and bonus production. Current builds provide "
"inspection utilities and an analysis library. Work on the playable game "
"continues with ball and paddle physics, power-up handling and Windows "
"integration."
msgstr ""
"Le code récupéré couvre la gestion des cartes et des ressources, les coups "
"de briques, les animations, les particules et la production de bonus. Les "
"versions actuelles fournissent des utilitaires d'inspection et une "
"bibliothèque d'analyse. Le travail sur le jeu jouable se poursuit avec la "
"physique de la balle et de la pagaie, la manipulation de la mise sous "
"tension et l'intégration de Windows."
#: website/public/showcase/dx-ball/index.html:265
msgctxt "page:showcase/dx-ball/index.html"
msgid "Finding the sound-pan calculation"
msgstr "Trouver le calcul de la position sonore gauche / droite"
#: website/public/showcase/dx-ball/index.html:266
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"When a brick is hit, its horizontal position is passed to the sound code. "
"The investigation needed to recover how that screen coordinate becomes a "
"left/right panning value."
msgstr ""
"Lorsqu'une brique est touchée, sa position horizontale est transmise au code"
" sonore. L'enquête nécessaire pour récupérer comment cette coordonnée "
"d'écran devient une valeur de panoramique gauche / droite."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/dx-ball/index.html:273
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/showcase/dx-ball/index.html:277
#: website/public/showcase/dx-ball/index.html:468
#: website/public/showcase/dx-ball/index.html:489
#: website/public/showcase/dx-ball/index.html:560
#: website/public/showcase/dx-ball/index.html:714
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy"
msgstr "Copier"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dxball-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/dx-ball/index.html:286
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour savoir comment DX-Ball calcule le "
"positionnement du son stéréo. Expliquez le calcul et montrez le "
"code.{ph3}{ph4}{ph5}"
#: website/public/showcase/dx-ball/index.html:294
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"An example prompt for your coding agent, with the local executable "
"available. The investigation below shows the REA queries and evidence behind"
" the answer."
msgstr ""
"Un exemple d'invite pour votre agent de codage, avec l'exécutable local "
"disponible. L'enquête ci-dessous montre les requêtes REA et les preuves "
"derrière la réponse."
#: website/public/showcase/dx-ball/index.html:299
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The agent used REA to inspect the function, follow its brick-hit caller and "
"read the constants from the executable. Those results supplied the input and"
" arithmetic needed to write the C function below."
msgstr ""
"L'agent a utilisé REA pour inspecter la fonction, suivre son appelant et "
"lire les constantes de l'exécutable. Ces résultats ont fourni l'entrée et "
"l'arithmétique nécessaires pour écrire la fonction C ci-dessous."
#. {ph0}: <code>0x406400</code>
#. {ph1}: <code>FUN_00406400(void)</code>
#. {ph2}: <code>__ftol()</code>
#: website/public/showcase/dx-ball/index.html:305
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The first function result for {ph0} included pseudocode declaring {ph1} and "
"calling {ph2}. Its instruction view showed a stack input and floating-point "
"operations. That discrepancy gave the agent a concrete reason to keep "
"investigating."
msgstr ""
"Le premier résultat de la fonction pour {ph0} déclaration de pseudocode "
"incluse {ph1} et appeler {ph2}. Sa vue d'instruction montrait une entrée de "
"pile et des opérations en virgule flottante. Cet écart a donné à l'agent une"
" raison concrète de continuer à enquêter."
#: website/public/showcase/dx-ball/index.html:313
msgctxt "page:showcase/dx-ball/index.html"
msgid "The first decompiler view"
msgstr "La première vue du décompilateur"
#: website/public/showcase/dx-ball/index.html:326
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The output shows a conversion call. Reading the instructions below reveals "
"the input and the calculation feeding that call."
msgstr ""
"La sortie affiche un appel de conversion. La lecture des instructions ci-"
"dessous révèle l'entrée et le calcul alimentant cet appel."
#: website/public/showcase/dx-ball/index.html:332
msgctxt "page:showcase/dx-ball/index.html"
msgid "Three questions answered through REA"
msgstr "Réponses à trois questions via REA"
#: website/public/showcase/dx-ball/index.html:335
msgctxt "page:showcase/dx-ball/index.html"
msgid "Recover the missing input"
msgstr "Récupérer l'entrée manquante"
#. {ph0}: <code>[EBP+8]</code>
#: website/public/showcase/dx-ball/index.html:352
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The function result includes instructions alongside pseudocode and callers. "
"Here, {ph0} exposes the integer input missing from the decompiler view."
msgstr ""
"Le résultat de la fonction inclut des instructions à côté du pseudocode et "
"des appelants. Ici, {ph0} expose l'entrée entière manquante dans la vue du "
"décompilateur."
#: website/public/showcase/dx-ball/index.html:359
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the caller to understand the input"
msgstr "Suivez l'appelant pour comprendre l'entrée"
#. {ph0}: <code>tile_x</code>
#. {ph1}: <code>20 + 30 × tile_x</code>
#: website/public/showcase/dx-ball/index.html:376
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"REA identified this caller in the first result. Its preceding instructions "
"scale {ph0} by 30; adding 20 gives the brick's screen coordinate, {ph1}."
msgstr ""
"REA a identifié cet appelant dans le premier résultat. Son échelle "
"d'instructions précédente {ph0} par 30; l'ajout de 20 donne les coordonnées "
"de l'écran de la brique, {ph1}."
#: website/public/showcase/dx-ball/index.html:383
msgctxt "page:showcase/dx-ball/index.html"
msgid "Read the values behind the memory addresses"
msgstr "Lire les valeurs derrière les adresses mémoire"
#: website/public/showcase/dx-ball/index.html:404
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The returned bytes establish the two arithmetic constants and initial pan "
"scale. The agent now has the values needed for the C expression."
msgstr ""
"Les octets renvoyés établissent les deux constantes arithmétiques et "
"l'échelle panoramique initiale. L'agent a maintenant les valeurs nécessaires"
" pour l'expression C."
#: website/public/showcase/dx-ball/index.html:412
msgctxt "page:showcase/dx-ball/index.html"
msgid "From REA's findings to C"
msgstr "Des découvertes de REA à C"
#: website/public/showcase/dx-ball/index.html:413
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow the five steps below. Each selection highlights the original "
"instructions and the C lines they informed."
msgstr ""
"Suivez les cinq étapes ci-dessous. Chaque sélection met en évidence les "
"instructions d'origine et les lignes C qu'elles ont renseignées."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:423
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}01{ph1} Input"
msgstr "{ph0}01{ph1} Entrée"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:431
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}02{ph1} Multiply"
msgstr "{ph0}02{ph1} Multiplier"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:439
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}03{ph1} Subtract"
msgstr "{ph0}03{ph1} Soustraire"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:447
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}04{ph1} Scale"
msgstr "{ph0}04{ph1} Échelle"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:455
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}05{ph1} Return"
msgstr "{ph0}05{ph1} Retour"
#: website/public/showcase/dx-ball/index.html:467
msgctxt "page:showcase/dx-ball/index.html"
msgid "Original x86 · excerpt"
msgstr "Extrait original x86 ·"
#: website/public/showcase/dx-ball/index.html:488
msgctxt "page:showcase/dx-ball/index.html"
msgid "Reconstructed C"
msgstr "C Reconstruit"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>[EBP+8]</code>
#. {ph3}: <code>FILD</code>
#. {ph4}: <code>x</code>
#: website/public/showcase/dx-ball/index.html:515
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}01 · Read the input.{ph1} The instruction view in REA's function result"
" reads {ph2} and uses {ph3} to load the integer. Following its caller "
"through REA establishes the screen-coordinate meaning of the C parameter "
"{ph4}."
msgstr ""
"{ph0}01 * Lire l'entrée.{ph1} La vue d'instruction dans le résultat de la "
"fonction de REA lit {ph2} et utilisations {ph3} pour charger l'entier. "
"Suivre son appelant via REA établit la signification des coordonnées d'écran"
" du paramètre C {ph4}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x420068</code>
#. {ph4}: <code>read_bytes</code>
#. {ph5}: <code>1.5625</code>
#: website/public/showcase/dx-ball/index.html:522
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}02 · Multiply by 1.5625.{ph1} {ph2} reads the double at {ph3}. The "
"bytes returned by REA's {ph4} decode to {ph5}; the C uses the same constant."
msgstr ""
"{ph0}02 * Multiplier par 1,5625.{ph1} {ph2} lit le double à {ph3}. Les "
"octets renvoyés par REA {ph4} décoder à {ph5}; le C utilise la même "
"constante."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FSUB</code>
#. {ph3}: <code>0x420070</code>
#. {ph4}: <code>500.0</code>
#. {ph5}: <code>320</code>
#: website/public/showcase/dx-ball/index.html:528
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}03 · Subtract 500.0.{ph1} {ph2} reads the double at {ph3}. REA's byte "
"result decodes to {ph4}, shifting the calculation's center to screen "
"coordinate {ph5}."
msgstr ""
"{ph0}03 * Soustraire 500,0.{ph1} {ph2} lit le double à {ph3}. Le résultat "
"de l'octet de REA décode en {ph4}, déplacement du centre du calcul vers les "
"coordonnées de l'écran {ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x4210a0</code>
#. {ph4}: <code>dxball_pan_scale</code>
#. {ph5}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:534
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}04 · Apply the stored scale.{ph1} The second {ph2} reads {ph3}. That "
"global is named {ph4} in the maintained source. REA's second byte read "
"establishes its initial value of {ph5}."
msgstr ""
"{ph0}04 * Appliquez l'échelle mémorisée.{ph1} Le deuxième {ph2} lit {ph3}. "
"Ce global est nommé {ph4} dans la source maintenue. La lecture du deuxième "
"octet de REA établit sa valeur initiale de {ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x406430</code>
#. {ph3}: <code>__ftol</code>
#. {ph4}: <code>DxBallInt</code>
#: website/public/showcase/dx-ball/index.html:541
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}05 · Return an integer.{ph1} The call at {ph2} reaches {ph3}, "
"identified in REA's callee results. The C casts the result to {ph4}; "
"original-x86 comparisons check the returned value."
msgstr ""
"{ph0}05 * Renvoie un entier.{ph1} L'appel à {ph2} atteint {ph3}, identifié "
"dans les résultats de l'appelé de REA. Le C convertit le résultat en {ph4}; "
"les comparaisons originales-x86 vérifient la valeur renvoyée."
#: website/public/showcase/dx-ball/index.html:550
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The assembly excerpt selects the input, arithmetic and return instructions. "
"The full listing below also includes the intervening stores and function "
"setup and cleanup."
msgstr ""
"L'extrait d'assemblage sélectionne les instructions d'entrée, d'arithmétique"
" et de retour. La liste complète ci-dessous comprend également les magasins "
"intermédiaires et la configuration et le nettoyage des fonctions."
#: website/public/showcase/dx-ball/index.html:556
msgctxt "page:showcase/dx-ball/index.html"
msgid "Full assembly and supporting evidence"
msgstr "Assemblage complet et preuves à l'appui"
#: website/public/showcase/dx-ball/index.html:559
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · 0x406400–0x40643e"
msgstr "REA résultat · 0x406400–0x40643f"
#: website/public/showcase/dx-ball/index.html:593
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the caller supplies"
msgstr "Ce que l'appelant fournit"
#. {ph0}: <code>0x411f40</code>
#: website/public/showcase/dx-ball/index.html:594
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The brick-hit function at {ph0} scales its tile coordinate by 30, adds 20, "
"then pushes it before the call:"
msgstr ""
"La fonction de frappe de brique à {ph0} met à l'échelle sa coordonnée de "
"tuile de 30, ajoute 20, puis la pousse avant l'appel:"
#: website/public/showcase/dx-ball/index.html:608
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the data reads establish"
msgstr "Ce que les données lisent établissent"
#: website/public/showcase/dx-ball/index.html:611
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte reads, decoded as little-endian doubles"
msgstr "REA lectures d'octets, décodées en doubles little-endian"
#: website/public/showcase/dx-ball/index.html:616
msgctxt "page:showcase/dx-ball/index.html"
msgid "Address"
msgstr "Adresse"
#: website/public/showcase/dx-ball/index.html:617
msgctxt "page:showcase/dx-ball/index.html"
msgid "Value"
msgstr "Valeur"
#: website/public/showcase/dx-ball/index.html:618
msgctxt "page:showcase/dx-ball/index.html"
msgid "Used for"
msgstr "Utilisé pour"
#: website/public/showcase/dx-ball/index.html:625
msgctxt "page:showcase/dx-ball/index.html"
msgid "First multiplication"
msgstr "Première multiplication"
#: website/public/showcase/dx-ball/index.html:630
msgctxt "page:showcase/dx-ball/index.html"
msgid "Subtraction"
msgstr "Soustraction"
#. {ph0}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:634
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0} initially"
msgstr "{ph0} initialement"
#: website/public/showcase/dx-ball/index.html:635
msgctxt "page:showcase/dx-ball/index.html"
msgid "Stored pan scale"
msgstr "Échelle de casserole stockée"
#: website/public/showcase/dx-ball/index.html:640
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Recorded with REA 4.1.0 for the hash-pinned DX-Ball 1.07 target. The linked "
"investigation notes retain the Evidence IDs."
msgstr ""
"Enregistré avec REA 4.1.0 pour la cible DX-Ball 1.07 épinglée au hachage. "
"Les notes d'enquête liées conservent les identifiants de preuve."
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/src/gameplay.c#L41" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/GAMEPLAY_OWNER.md"
#. >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:645
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Maintained source{ph1} · {ph2}Investigation notes and evidence "
"references{ph3}"
msgstr ""
"{ph0}Source maintenue{ph1} · {ph2}Notes d'enquête et références des éléments"
" de preuve{ph3}"
#: website/public/showcase/dx-ball/index.html:659
msgctxt "page:showcase/dx-ball/index.html"
msgid "Checking the recovered function"
msgstr "Vérification de la fonction récupérée"
#: website/public/showcase/dx-ball/index.html:660
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered function passes two checks: its return values match the "
"original, and its compiled bytes match the executable."
msgstr ""
"La fonction récupérée passe deux vérifications: ses valeurs de retour "
"correspondent à l'original et ses octets compilés correspondent à "
"l'exécutable."
#: website/public/showcase/dx-ball/index.html:666
msgctxt "page:showcase/dx-ball/index.html"
msgid "3,205 behavior cases"
msgstr "3 205 cas de comportement"
#: website/public/showcase/dx-ball/index.html:667
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The tests execute the original x86 function and compare its return value "
"with the maintained C. They cover every integer position from 0 to 640 at "
"five pan scales: 0, 0.5, 1, 20 and −1."
msgstr ""
"Les tests exécutent la fonction x86 d'origine et comparent sa valeur de "
"retour avec le C maintenu. Ils couvrent chaque position entière de 0 à 640 à"
" cinq échelles panoramiques: 0, 0,5, 1, 20 et -1."
#: website/public/showcase/dx-ball/index.html:675
msgctxt "page:showcase/dx-ball/index.html"
msgid "63 matching bytes"
msgstr "63 octets correspondants"
#: website/public/showcase/dx-ball/index.html:676
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The C function is compiled with the pinned VC4.0 toolchain. Compiler replay "
"matches the complete function after applying the reviewed relocations and "
"checking the referenced constants."
msgstr ""
"La fonction C est compilée avec la chaîne d'outils VC4.0 épinglée. La "
"relecture du compilateur correspond à la fonction complète après avoir "
"appliqué les relocalisations examinées et vérifié les constantes "
"référencées."
#: website/public/showcase/dx-ball/index.html:684
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"At a scale of 1, the recovered calculation returns −500 at the left edge, 0 "
"at the center and 500 at the right edge. The next part of the audio work is "
"integrating that value with the game's sound backend."
msgstr ""
"Sur une échelle de 1, le calcul récupéré renvoie -500 sur le bord gauche, 0 "
"au centre et 500 sur le bord droit. La prochaine partie du travail audio "
"consiste à intégrer cette valeur au backend sonore du jeu."
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/BUILD_MATCHING.md"
#. >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:690
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Read the compiler replay details{ph1}"
msgstr "{ph0}Lire les détails de la relecture du compilateur{ph1}"
#: website/public/showcase/dx-ball/index.html:699
msgctxt "page:showcase/dx-ball/index.html"
msgid "Continue the investigation"
msgstr "Poursuivre l'enquête"
#: website/public/showcase/dx-ball/index.html:700
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The same approach is being used for particle updates, explosion queues and "
"bonus generation: inspect the relevant functions, recover their state and "
"dependencies, then compare the implementation with the original."
msgstr ""
"La même approche est utilisée pour les mises à jour de particules, les files"
" d'attente d'explosion et la génération de bonus: inspectez les fonctions "
"pertinentes, récupérez leur état et leurs dépendances, puis comparez "
"l'implémentation avec l'original."
#: website/public/showcase/dx-ball/index.html:706
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"To inspect the sound-pan function yourself, follow the DX-Ball project's "
"setup instructions and supply its matching original target. Then run:"
msgstr ""
"Pour inspecter vous-même la fonction sound-pan, suivez les instructions de "
"configuration du projet DX-Ball et fournissez sa cible d'origine "
"correspondante. Puis cours:"
#: website/public/showcase/dx-ball/index.html:713
msgctxt "page:showcase/dx-ball/index.html"
msgid "In the DX-Ball checkout"
msgstr "Dans la caisse de DX-Ball"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-ball" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/dx-ball/index.html:727
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}DX-Ball repository{ph1}{ph2}Current source, progress and local "
"setup.{ph3}"
msgstr ""
"{ph0} Référentiel DX-Ball{ph1}{ph2}Source actuelle, progression et "
"configuration locale.{ph3}"
#. {ph0}: <a href="../../guides/native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:732
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}REA analysis workflow{ph1}{ph2}Follow the calculation, then use the "
"same approach with your own binary.{ph3}"
msgstr ""
"{ph0} Flux de travail d'analyse REA{ph1}{ph2}Suivez le calcul, puis utilisez"
" la même approche avec votre propre binaire.{ph3}"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ENTITIES_OWNER.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:739
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Particles and bonus production{ph1}{ph2}A larger investigation into "
"state, queues and pixel writes.{ph3}"
msgstr ""
"{ph0}Production de particules et de bonus{ph1}{ph2}Une enquête plus large "
"sur l'état, les files d'attente et les écritures de pixels.{ph3}"
#: website/public/showcase/dx-ball/index.html:6
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball Reverse Engineering: Sound Panning — REA"
msgstr "Ingénierie inverse DX-Ball: Panoramique du son — REA"
#: website/public/showcase/dx-ball/index.html:7
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow a DX-Ball reconstruction from binary analysis through REA to "
"maintained C, original-x86 tests and matching compiled function bytes."
msgstr ""
"Suivez une reconstruction DX-Ball de l'analyse binaire à REA en passant par "
"le C maintenu, les tests x86 d'origine et les octets de fonction compilés "
"correspondants."
#: website/public/showcase/dx-ball/index.html:193
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DX-Ball sound-pan investigation; scroll horizontally on smaller screens"
msgstr ""
"DX-Ball étude panoramique du son; défilement horizontal sur des écrans plus "
"petits"
#: website/public/showcase/dx-ball/index.html:199
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DXBALL.EXE function 0x00406400 is inspected with REA. A brick-hit caller "
"supplies 20 plus 30 times tile_x. Instructions load x, multiply by 1.5625, "
"subtract 500.0, apply pan_scale and return an integer. The maintained C is "
"checked independently against the original x86 in 3,205 cases and by VC4.0 "
"compiler replay matching 63 bytes."
msgstr ""
"DXBALL.La fonction EXE 0x00406400 est inspectée avec REA . Un appelant "
"frappé par une brique fournit 20 plus 30 fois tile_x. Instructions chargez "
"x, multipliez par 1,5625, soustrayez 500,0, appliquez pan_scale et renvoyez "
"un entier. Le C maintenu est vérifié indépendamment par rapport au x86 "
"d'origine dans 3 205 cas et par relecture du compilateur VC4.0 correspondant"
" à 63 octets."
#: website/public/showcase/dx-ball/index.html:217
msgctxt "page:showcase/dx-ball/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/showcase/dx-ball/index.html:226
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball reconstruction case study"
msgstr "Étude de cas sur la reconstruction du DX-Ball"
#: website/public/showcase/dx-ball/index.html:277
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy example prompt"
msgstr "Copier l'exemple d'invite"
#: website/public/showcase/dx-ball/index.html:418
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the sound-pan calculation"
msgstr "Suivez le calcul de la position sonore gauche / droite"
#: website/public/showcase/dx-ball/index.html:468
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy original assembly excerpt"
msgstr "Copier l'extrait original de l'assemblage"
#: website/public/showcase/dx-ball/index.html:489
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy sound-pan function"
msgstr "Fonction Copier le son-panoramique"
#: website/public/showcase/dx-ball/index.html:560
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy complete sound-pan assembly"
msgstr "Copier l'assemblage complet du panoramique sonore"
#: website/public/showcase/dx-ball/index.html:714
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy DX-Ball analysis command"
msgstr "Copier la commande d'analyse DX-Ball"
#: website/public/showcase/dx-ball/index.html:772
msgctxt "page:showcase/dx-ball/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/showcase/index.html:99
msgctxt "page:showcase/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/showcase/index.html:181
#, python-brace-format
msgctxt "page:showcase/index.html"
msgid "{ph0}Home{ph1} / Showcases"
msgstr "{ph0}Accueil{ph1} / Vitrines"
#: website/public/showcase/index.html:182
msgctxt "page:showcase/index.html"
msgid "REA case studies."
msgstr "Études de cas REA."
#: website/public/showcase/index.html:183
msgctxt "page:showcase/index.html"
msgid ""
"Android, games, Electron and a CTF challenge, with code, figures and checked"
" results."
msgstr ""
"Android, jeux, Electron et un défi CTF, avec code, chiffres et résultats "
"vérifiés."
#: website/public/showcase/index.html:190
msgctxt "page:showcase/index.html"
msgid "Android · APK analysis"
msgstr "Pour Android · APK analyse"
#: website/public/showcase/index.html:192
msgctxt "page:showcase/index.html"
msgid "How an authenticator generates a login code"
msgstr "Comment un authentificateur génère un code de connexion"
#: website/public/showcase/index.html:193
msgctxt "page:showcase/index.html"
msgid ""
"Find Aegis's six-digit code calculation in its released APK. Trace the "
"generating methods with REA, then move a demo clock to see why the code "
"changes every 30 seconds."
msgstr ""
"Retrouvez le calcul du code à six chiffres de Aegis dans son APK publié. "
"Tracez les méthodes de génération avec REA, puis déplacez une horloge de "
"démonstration pour voir pourquoi le code change toutes les 30 secondes."
#: website/public/showcase/index.html:204
msgctxt "page:showcase/index.html"
msgid "Read the Android case study"
msgstr "Lire l'étude de cas Android"
#: website/public/showcase/index.html:208
msgctxt "page:showcase/index.html"
msgid "CTF · Native analysis"
msgstr "CTF * Analyse des programmes en code machine"
#: website/public/showcase/index.html:210
msgctxt "page:showcase/index.html"
msgid "Solve a CTF flag checker"
msgstr "Résoudre un vérificateur de drapeau CTF"
#: website/public/showcase/index.html:211
msgctxt "page:showcase/index.html"
msgid ""
"Inspect an easy DownUnderCTF challenge with REA. Find its checking "
"functions, turn masks and sums into equations, then verify the solved flag "
"with the original program."
msgstr ""
"Inspectez un défi de DownUnderCTF facile avec REA . Trouvez ses fonctions de"
" vérification, transformez les masques et les sommes en équations, puis "
"vérifiez le drapeau résolu avec le programme d'origine."
#: website/public/showcase/index.html:222
msgctxt "page:showcase/index.html"
msgid "Read the CTF case study"
msgstr "Lire l'étude de cas de la FCT"
#: website/public/showcase/index.html:226
msgctxt "page:showcase/index.html"
msgid "Native · Reconstruction"
msgstr "Reconstruction indigène ·"
#: website/public/showcase/index.html:228
msgctxt "page:showcase/index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "Calcul de la position sonore gauche/droite de DX-Ball"
#: website/public/showcase/index.html:229
msgctxt "page:showcase/index.html"
msgid ""
"Recover a sound-pan calculation from a 1996 Windows game. REA's "
"instructions, caller references and numeric constants lead to a small C "
"function, checked against the original behavior and all 63 compiled bytes."
msgstr ""
"Récupérez un calcul de la position sonore gauche / droite d'un jeu Windows "
"de 1996. Les instructions, les références de l'appelant et les constantes "
"numériques de REA conduisent à une petite fonction C, vérifiée par rapport "
"au comportement d'origine et aux 63 octets compilés."
#: website/public/showcase/index.html:241
msgctxt "page:showcase/index.html"
msgid "Read the DX-Ball case study"
msgstr "Lire l'étude de cas DX-Ball"
#: website/public/showcase/index.html:245
msgctxt "page:showcase/index.html"
msgid "Electron · Feature tracing"
msgstr "Electron * Traçage des fonctionnalités"
#: website/public/showcase/index.html:247
msgctxt "page:showcase/index.html"
msgid "How Notion copies text and HTML"
msgstr "Comment Notion copie du texte et du code HTML"
#: website/public/showcase/index.html:248
msgctxt "page:showcase/index.html"
msgid ""
"Trace a page-facing API through Notion's packaged JavaScript. Follow its IPC"
" wrappers to the system clipboard, then see how a small HTML marker keeps "
"rich block data connected to a copy."
msgstr ""
"Tracez une API orientée page via le JavaScript emballé de Notion . Suivez "
"ses enveloppes IPC dans le presse-papiers du système, puis voyez comment un "
"petit marqueur HTML maintient les données de bloc riches connectées à une "
"copie."
#: website/public/showcase/index.html:259
msgctxt "page:showcase/index.html"
msgid "Read the Notion case study"
msgstr "Lire l'étude de cas Notion"
#: website/public/showcase/index.html:263
msgctxt "page:showcase/index.html"
msgid "PC-98 DOS · Reconstruction"
msgstr "PC-98 pour la reconstruction"
#: website/public/showcase/index.html:265
msgctxt "page:showcase/index.html"
msgid "How TH04 aims a ring of bullets"
msgstr "Comment TH04 vise un anneau de balles"
#: website/public/showcase/index.html:266
msgctxt "page:showcase/index.html"
msgid ""
"Inspect the original 16-bit angle helper with REA. Match its multiply, "
"divide and coordinate operations to readable C++, then see how they produce "
"a ring aimed at the player."
msgstr ""
"Inspectez l'assistant d'angle 16 bits d'origine avec REA . Associez ses "
"opérations de multiplication, de division et de coordination à du C ++ "
"lisible, puis voyez comment elles produisent un anneau destiné au joueur."
#: website/public/showcase/index.html:277
msgctxt "page:showcase/index.html"
msgid "Read the TH04 case study"
msgstr "Lire l'étude de cas TH04"
#: website/public/showcase/index.html:282
msgctxt "page:showcase/index.html"
msgid "Step-by-step guides"
msgstr "Guides étape par étape"
#: website/public/showcase/index.html:283
msgctxt "page:showcase/index.html"
msgid ""
"The guides walk through a native calculation, an Electron export and a "
"browser request. Each starts with a prompt and a concrete target."
msgstr ""
"Les guides parcourent un calcul natif, une exportation Electron et une "
"requête de navigateur. Chacun commence par une invite et une cible concrète."
#: website/public/showcase/index.html:287
msgctxt "page:showcase/index.html"
msgid "Read the guides"
msgstr "Lire les guides"
#: website/public/showcase/index.html:6
msgctxt "page:showcase/index.html"
msgid "Reverse Engineering Case Studies — REA"
msgstr "Études de cas d'Ingénierie Inverse-REA"
#: website/public/showcase/index.html:7
msgctxt "page:showcase/index.html"
msgid ""
"Follow REA investigations through code, figures and demos: an Android "
"authenticator, DX-Ball, Notion, TH04 and a DownUnderCTF flag checker."
msgstr ""
"Suivez les enquêtes de REA à travers du code, des chiffres et des démos: un "
"authentificateur Android, DX-Ball, Notion, TH04 et un vérificateur de "
"drapeau DownUnderCTF."
#: website/public/showcase/index.html:304
msgctxt "page:showcase/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/showcase/notion/index.html:99
msgctxt "page:showcase/notion/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/notion/index.html:181
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Notion"
msgstr "{ph0}Accueil{ph1} / {ph2}Vitrines{ph3} / Notion"
#: website/public/showcase/notion/index.html:184
msgctxt "page:showcase/notion/index.html"
msgid "Case study · Electron"
msgstr "Étude de cas · Electron"
#. {ph0}: <br />
#: website/public/showcase/notion/index.html:185
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "How Notion copies{ph0}text and HTML."
msgstr "Comment se copie Notion{ph0}texte et HTML."
#: website/public/showcase/notion/index.html:186
msgctxt "page:showcase/notion/index.html"
msgid ""
"Trace a clipboard call from Notion's page API, through the preload and main "
"process, to Electron's clipboard writer."
msgstr ""
"Tracez un appel de presse-papiers depuis l'API de page de Notion, via le "
"préchargement et le processus principal, vers le rédacteur de presse-papiers"
" de Electron."
#: website/public/showcase/notion/index.html:190
msgctxt "page:showcase/notion/index.html"
msgid "Notion Desktop 7.6.1 · JavaScript · REA"
msgstr "Notion Bureau 7.6.1 · JavaScript · REA"
#: website/public/showcase/notion/index.html:194
msgctxt "page:showcase/notion/index.html"
msgid "The bridge inside Notion's desktop package"
msgstr "Le pont à l'intérieur du package de bureau de Notion"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>clipboard.write(data)</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:196
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}01 · Page-facing API{ph1} {ph2}{ph3}{ph4} {ph5}The preload exposes a "
"callable method.{ph6}"
msgstr ""
"{ph0}01 * API orientée page{ph1} {ph2}{ph3}{ph4} {ph5}Le préchargement "
"expose une méthode appelable.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>ipcRenderer.invoke</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:203
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}02 · Preload wrapper{ph1} {ph2}{ph3}{ph4} {ph5}The wrapper sends the "
"channel and arguments.{ph6}"
msgstr ""
"{ph0}02 * Emballage de précharge{ph1} {ph2}{ph3}{ph4} {ph5}Le wrapper envoie"
" le canal et les arguments.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>ipcMain.handle</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:210
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}03 · Main-process handler{ph1} {ph2}{ph3}{ph4} {ph5}The receiver checks"
" which page sent it.{ph6}"
msgstr ""
"{ph0}03 * Gestionnaire de processus principal{ph1} {ph2}{ph3}{ph4} {ph5}Le "
"destinataire vérifie quelle page l'a envoyé.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>clipboard.write(data)</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:217
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}04 · System clipboard{ph1} {ph2}{ph3}{ph4} {ph5}Electron writes the "
"supplied text and HTML.{ph6}"
msgstr ""
"{ph0}04 * Presse-papiers du système{ph1} {ph2}{ph3}{ph4} {ph5} Electron "
"écrit le texte et le code HTML fournis.{ph6}"
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:225
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "One channel joins the two sides: {ph0}"
msgstr "Un canal relie les deux côtés: {ph0}"
#: website/public/showcase/notion/index.html:229
msgctxt "page:showcase/notion/index.html"
msgid ""
"The packaged code uses the same channel in the preload and main process. "
"Resolving the wrappers reveals the Electron calls behind those names."
msgstr ""
"Le code empaqueté utilise le même canal dans le préchargement et le "
"processus principal. La résolution des wrappers révèle les appels Electron "
"derrière ces noms."
#: website/public/showcase/notion/index.html:238
msgctxt "page:showcase/notion/index.html"
msgid "In this case study"
msgstr "Dans cette étude de cas"
#. {ph0}: <a href="#clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:240
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Follow the clipboard bridge{ph1}"
msgstr "{ph0}Suivez le pont du presse-papiers{ph1}"
#. {ph0}: <a href="#rich-clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:241
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Keeping a block's structure{ph1}"
msgstr "{ph0}Conserver la structure d'un bloc{ph1}"
#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:242
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}More examples and sources{ph1}"
msgstr "{ph0}Plus d'exemples et de sources{ph1}"
#: website/public/showcase/notion/index.html:247
msgctxt "page:showcase/notion/index.html"
msgid "Where does the copy operation go?"
msgstr "Où va l'opération de copie?"
#. {ph0}: <code>clipboard.write</code>
#: website/public/showcase/notion/index.html:248
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The page sees a method called {ph0}. Its implementation in the preload is a "
"wrapper. The useful question is what that wrapper sends, and which code "
"receives it."
msgstr ""
"La page voit une méthode appelée {ph0}. Son implémentation dans la précharge"
" est un wrapper. La question utile est de savoir ce que ce wrapper envoie et"
" quel code le reçoit."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/notion/index.html:255
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/showcase/notion/index.html:259
#: website/public/showcase/notion/index.html:332
#: website/public/showcase/notion/index.html:361
#: website/public/showcase/notion/index.html:392
#: website/public/showcase/notion/index.html:420
msgctxt "page:showcase/notion/index.html"
msgid "Copy"
msgstr "Copier"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="notion-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/notion/index.html:268
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to trace how Notion copies text and HTML to the "
"system clipboard. Show the code at each step.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour déterminer comment Notion copie du texte "
"et du code HTML dans le presse-papiers du système. Affichez le code à chaque"
" étape.{ph3}{ph4}{ph5}"
#: website/public/showcase/notion/index.html:276
msgctxt "page:showcase/notion/index.html"
msgid ""
"An example prompt with Notion's local application package available to your "
"coding agent."
msgstr ""
"Un exemple d'invite avec le package d'application local de Notion disponible"
" pour votre agent de codage."
#: website/public/showcase/notion/index.html:281
msgctxt "page:showcase/notion/index.html"
msgid "REA finds where to start reading"
msgstr "REA trouve par où commencer la lecture"
#: website/public/showcase/notion/index.html:282
msgctxt "page:showcase/notion/index.html"
msgid ""
"Analyzing the tab preload with REA locates the API exposed to the page and "
"the call that sends an IPC request. Both findings come with source ranges in"
" the minified bundle:"
msgstr ""
"L'analyse du préchargement de l'onglet avec REA localise l'API exposée à la "
"page et l'appel qui envoie une requête IPC. Les deux résultats sont fournis "
"avec des plages de sources dans le bundle minifié:"
#: website/public/showcase/notion/index.html:288
msgctxt "page:showcase/notion/index.html"
msgid "REA findings → two places to open"
msgstr "Résultats REA → deux endroits pour ouvrir"
#. {ph0}: <code>analyze_javascript_application</code>
#: website/public/showcase/notion/index.html:303
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Selected fields from a fresh {ph0} result on Notion's tab preload, recorded "
"with REA 4.1.0. Positions use the original bundle's line and zero-based "
"column."
msgstr ""
"Champs sélectionnés à partir d'un nouveau {ph0} résultat sur la précharge de"
" l'onglet de Notion, enregistré avec REA 4.1.0. Les positions utilisent la "
"ligne et la colonne de base zéro du bundle d'origine."
#. {ph0}: <code>invokerInMain</code>
#. {ph1}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:310
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The agent opens those locations, finds the clipboard member in the assembled"
" API, and reads {ph0}. Its call site supplies {ph1}. That name gives the "
"agent something precise to look for in the main bundle. The four excerpts "
"below show the route it connects."
msgstr ""
"L'agent ouvre ces emplacements, trouve le membre du presse-papiers dans "
"l'API assemblée et lit {ph0}. Son site d'appel approvisionne {ph1}. Ce nom "
"donne à l'agent quelque chose de précis à rechercher dans le paquet "
"principal. Les quatre extraits ci-dessous montrent l'itinéraire qu'il relie."
#: website/public/showcase/notion/index.html:319
msgctxt "page:showcase/notion/index.html"
msgid "Four short pieces of code"
msgstr "Quatre courts morceaux de code"
#: website/public/showcase/notion/index.html:320
msgctxt "page:showcase/notion/index.html"
msgid ""
"Simplified from the packaged JavaScript, with readable variable names. "
"Unrelated members are omitted."
msgstr ""
"Simplifié à partir du JavaScript emballé, avec des noms de variables "
"lisibles. Les membres non apparentés sont omis."
#: website/public/showcase/notion/index.html:326
msgctxt "page:showcase/notion/index.html"
msgid "Start at the API exposed to the page"
msgstr "Commencez par l'API exposée à la page"
#. {ph0}: <code>invokerInMain</code>
#: website/public/showcase/notion/index.html:348
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"This member supplies the channel name. The implementation of {ph0} tells us "
"how the request leaves the page's process."
msgstr ""
"Ce membre fournit le nom du canal. La mise en œuvre de {ph0} nous indique "
"comment la demande quitte le processus de la page."
#: website/public/showcase/notion/index.html:355
msgctxt "page:showcase/notion/index.html"
msgid "Resolve the preload's wrapper"
msgstr "Résoudre le wrapper de la précharge"
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:378
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The returned function forwards the arguments through Electron's request-and-"
"response IPC. We can now look for {ph0} on the main-process side."
msgstr ""
"La fonction renvoyée transmet les arguments via l'IPC de requête et de "
"réponse de Electron. Nous pouvons maintenant chercher {ph0} du côté du "
"processus principal."
#: website/public/showcase/notion/index.html:386
msgctxt "page:showcase/notion/index.html"
msgid "Check how the receiver is registered"
msgstr "Vérifiez comment le destinataire est enregistré"
#. {ph0}: <code>addListener</code>
#. {ph1}: <code>ipcMain.handle</code>
#: website/public/showcase/notion/index.html:407
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The main process uses another wrapper. Its {ph0} method registers an {ph1} "
"receiver for that channel."
msgstr ""
"Le processus principal utilise un autre wrapper. Ses {ph0} la méthode "
"enregistre un {ph1} récepteur pour ce canal."
#: website/public/showcase/notion/index.html:414
msgctxt "page:showcase/notion/index.html"
msgid "Find the write and its sender check"
msgstr "Trouver l'écriture et sa vérification de l'expéditeur"
#: website/public/showcase/notion/index.html:437
msgctxt "page:showcase/notion/index.html"
msgid ""
"This is the destination. After checking the sender, the handler passes the "
"supplied data to Electron's clipboard API. The channel and the two resolved "
"wrappers connect the exposed method to this call."
msgstr ""
"C'est la destination. Après avoir vérifié l'expéditeur, le gestionnaire "
"transmet les données fournies à l'API du presse-papiers de Electron. Le "
"canal et les deux wrappers résolus connectent la méthode exposée à cet "
"appel."
#: website/public/showcase/notion/index.html:448
msgctxt "page:showcase/notion/index.html"
msgid "How does a copied block keep its structure?"
msgstr "Comment un bloc copié conserve-t-il sa structure?"
#. {ph0}: <code>electronApi.clipboard.write</code>
#: website/public/showcase/notion/index.html:449
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's web editor sends text and HTML through {ph0}. It keeps the block "
"data locally and puts an ID in the copied HTML to connect them."
msgstr ""
"L'éditeur Web de Notion envoie du texte et du HTML via {ph0}. Il conserve "
"les données de bloc localement et place un identifiant dans le code HTML "
"copié pour les connecter."
#: website/public/showcase/notion/index.html:455
msgctxt "page:showcase/notion/index.html"
msgid "HTML links to saved block data"
msgstr "Liens HTML vers les données de bloc enregistrées"
#: website/public/showcase/notion/index.html:479
msgctxt "page:showcase/notion/index.html"
msgid "Read the HTML ID"
msgstr "Lire l'identifiant HTML"
#: website/public/showcase/notion/index.html:480
msgctxt "page:showcase/notion/index.html"
msgid "Find the same local ID"
msgstr "Trouver le même identifiant local"
#: website/public/showcase/notion/index.html:481
msgctxt "page:showcase/notion/index.html"
msgid "Restore Notion block data"
msgstr "Restaurer les données de bloc Notion"
#: website/public/showcase/notion/index.html:483
msgctxt "page:showcase/notion/index.html"
msgid ""
"Illustrative text and ID. The recorded module test restores the block data "
"when IDs match; a stale entry returns only text and HTML."
msgstr ""
"Texte illustratif et identifiant. Le test de module enregistré restaure les "
"données de bloc lorsque les identifiants correspondent; une entrée périmée "
"ne renvoie que du texte et du HTML."
#: website/public/showcase/notion/index.html:489
msgctxt "page:showcase/notion/index.html"
msgid ""
"On paste, Notion looks for the HTML ID and checks it against the saved copy."
" Matching IDs restore the block data."
msgstr ""
"Lors du collage, Notion recherche l'ID HTML et le compare à la copie "
"enregistrée. Les identifiants correspondants restaurent les données de bloc."
#: website/public/showcase/notion/index.html:493
msgctxt "page:showcase/notion/index.html"
msgid "Clipboard format recorded from web assets cached on July 13, 2026."
msgstr ""
"Format du presse-papiers enregistré à partir des ressources Web mises en "
"cache le 13 juillet 2026."
#: website/public/showcase/notion/index.html:499
msgctxt "page:showcase/notion/index.html"
msgid "More examples and sources"
msgstr "Plus d'exemples et de sources"
#: website/public/showcase/notion/index.html:501
msgctxt "page:showcase/notion/index.html"
msgid "Another example: Markdown tables"
msgstr "Un autre exemple: les tables de démarques"
#: website/public/showcase/notion/index.html:502
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion parses Markdown into block data. This example shows how a table "
"becomes header and data rows."
msgstr ""
"Notion analyse la démarque en données de bloc. Cet exemple montre comment "
"une table devient des lignes d'en-tête et de données."
#: website/public/showcase/notion/index.html:507
msgctxt "page:showcase/notion/index.html"
msgid "A table through Notion's Markdown parser"
msgstr "Un tableau via l'analyseur de démarque de Notion"
#: website/public/showcase/notion/index.html:528
msgctxt "page:showcase/notion/index.html"
msgid ""
"Recorded output from an extracted Markdown parser. The table becomes rows "
"and cells."
msgstr ""
"Sortie enregistrée à partir d'un analyseur Markdown extrait. Le tableau "
"devient des lignes et des cellules."
#: website/public/showcase/notion/index.html:535
msgctxt "page:showcase/notion/index.html"
msgid "Another path: the offline SQLite connection"
msgstr "Un autre chemin: la connexion SQLite hors ligne"
#. {ph0}: <code>getSqliteMeta</code>
#: website/public/showcase/notion/index.html:536
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's renderer requests {ph0} through IPC. The main process creates a "
"message channel and gives one port to the renderer and the other to a SQLite"
" utility process. Subsequent statement batches and results travel over that "
"port."
msgstr ""
"Requêtes de rendu de Notion {ph0} par l'intermédiaire de l'IPC. Le processus"
" principal crée un canal de message et donne un port au moteur de rendu et "
"l'autre à un processus utilitaire SQLite. Les lots de relevés suivants et "
"les résultats transitent par ce port."
#: website/public/showcase/notion/index.html:542
msgctxt "page:showcase/notion/index.html"
msgid ""
"Following this handoff explains where the database work runs, and why "
"tracing only the initial IPC request misses the later conversation."
msgstr ""
"Suite à ce transfert, explique où le travail de base de données s'exécute et"
" pourquoi le suivi uniquement de la demande IPC initiale manque la "
"conversation ultérieure."
#: website/public/showcase/notion/index.html:549
msgctxt "page:showcase/notion/index.html"
msgid "Sources and how to read the excerpts"
msgstr "Sources et comment lire les extraits"
#. {ph0}: <code>app.asar</code>
#. {ph1}: <code>main/index.js</code>
#. {ph2}: <code>isNotionWebContents</code>
#: website/public/showcase/notion/index.html:550
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The clipboard bridge comes from Notion Desktop 7.6.1's {ph0}: the tab "
"preload and {ph1}. The excerpts expand minified variable names and omit "
"unrelated code; the sender-check helper is shown with its underlying {ph2} "
"call."
msgstr ""
"Le pont du presse-papiers provient de Notion Desktop 7.6.1 {ph0}: le "
"préchargement de l'onglet et {ph1}. Les extraits développent les noms de "
"variables minifiés et omettent le code non lié; l'assistant de vérification "
"de l'expéditeur est affiché avec son sous-jacent {ph2} appelle."
#. {ph0}: <code>747001</code>
#. {ph1}: <code>58169</code>
#. {ph2}: <code>736810</code>
#. {ph3}: <code>422457</code>
#: website/public/showcase/notion/index.html:558
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The virtual clipboard and Markdown examples come from web assets cached on "
"July 13, 2026, including modules {ph0}, {ph1}, {ph2} and {ph3}. Those assets"
" have their own version. Saved probes executed extracted modules and small "
"harnesses; their outputs describe those probes rather than a captured "
"desktop UI session."
msgstr ""
"Les exemples de presse-papiers virtuels et de démarque proviennent d'actifs "
"Web mis en cache le 13 juillet 2026, y compris des modules {ph0}, {ph1}, "
"{ph2} et {ph3}. Ces actifs ont leur propre version. Les sondes enregistrées "
"exécutaient des modules extraits et de petits harnais; leurs sorties "
"décrivent ces sondes plutôt qu'une session d'interface utilisateur de bureau"
" capturée."
#: website/public/showcase/notion/index.html:566
msgctxt "page:showcase/notion/index.html"
msgid ""
"The REA result shown here is a focused analysis of the saved tab preload, "
"recorded with the published REA 4.1.0 package. It locates the API and invoke"
" operation. The clipboard member and matching receiver are connected by "
"reading their wrapper implementations in the package."
msgstr ""
"Le résultat REA présenté ici est une analyse ciblée du préchargement de "
"l'onglet enregistré, enregistré avec le package REA 4.1.0 publié. Il "
"localise l'API et appelle l'opération. L'élément de presse-papiers et le "
"récepteur correspondant sont connectés en lisant leurs implémentations "
"wrapper dans le package."
#. {ph0}: <code>422457</code>
#: website/public/showcase/notion/index.html:573
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The Markdown example uses parser module {ph0}. Saved module tests show that "
"both page and chat filters preserve this table. The paste/import, structured"
" Markdown and AI/chat parsers have separate entry points and intermediate "
"formats."
msgstr ""
"L'exemple Markdown utilise le module analyseur {ph0}. Les tests des modules "
"enregistrés montrent que les filtres de page et de discussion conservent "
"cette table. Les analyseurs paste/import, Markdown structuré et AI/chat ont "
"des points d'entrée et des formats intermédiaires distincts."
#. {ph0}: <a href="../../guides/javascript/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:581
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}JavaScript application guide{ph1}{ph2}Follow a small Electron "
"application's export feature.{ph3}"
msgstr ""
"{ph0} Guide d'application pour le modèle JavaScript{ph1}{ph2}Suivez la "
"fonction d'exportation d'une petite application Electron.{ph3}"
#. {ph0}: <a href="../dx-ball/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:588
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}DX-Ball reconstruction{ph1}{ph2}Follow native instructions to a checked"
" C function.{ph3}"
msgstr ""
"{ph0}DX-Ball reconstruction{ph1}{ph2}Suivez les instructions natives d'une "
"fonction C vérifiée.{ph3}"
#: website/public/showcase/notion/index.html:6
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron Reverse Engineering: Clipboard — REA"
msgstr "Notion Electron Ingénierie inverse: Presse-papiers — REA"
#: website/public/showcase/notion/index.html:7
msgctxt "page:showcase/notion/index.html"
msgid ""
"Follow Notion's clipboard API through Electron's preload, IPC wrappers and "
"main process, with short code excerpts and a look at its rich clipboard "
"format."
msgstr ""
"Suivez l'API du presse-papiers de Notion à travers le préchargement, les "
"wrappers IPC et le processus principal de Electron, avec de courts extraits "
"de code et un aperçu de son riche format de presse-papiers."
#: website/public/showcase/notion/index.html:237
msgctxt "page:showcase/notion/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/showcase/notion/index.html:245
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron case study"
msgstr "Notion Electron étude de cas"
#: website/public/showcase/notion/index.html:259
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion analysis prompt"
msgstr "Copier l'invite d'analyse Notion"
#: website/public/showcase/notion/index.html:332
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion preload excerpt"
msgstr "Copier l'extrait de préchargement Notion"
#: website/public/showcase/notion/index.html:361
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion invoke wrapper excerpt"
msgstr "Copier l'extrait d'enveloppe d'invocation Notion"
#: website/public/showcase/notion/index.html:392
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion handler wrapper excerpt"
msgstr "Copier l'extrait de wrapper du gestionnaire Notion"
#: website/public/showcase/notion/index.html:420
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion clipboard receiver excerpt"
msgstr "Copier l'extrait du récepteur du presse-papiers Notion"
#: website/public/showcase/notion/index.html:475
msgctxt "page:showcase/notion/index.html"
msgid "Restoring rich clipboard data on paste"
msgstr "Restauration des données riches du presse-papiers sur coller"
#: website/public/showcase/notion/index.html:618
msgctxt "page:showcase/notion/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/showcase/th04/index.html:99
msgctxt "page:showcase/th04/index.html"
msgid "Skip to content"
msgstr "Aller au contenu"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/th04/index.html:181
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / TH04"
msgstr "{ph0}Accueil{ph1} / {ph2}Vitrines{ph3} / TH04"
#: website/public/showcase/th04/index.html:184
msgctxt "page:showcase/th04/index.html"
msgid "Case study · Touhou 4: Lotus Land Story"
msgstr "Étude de cas · Touhou 4: L'histoire de Lotus Land"
#. {ph0}: <br />
#: website/public/showcase/th04/index.html:185
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Reconstructing TH04's{ph0}bullet patterns."
msgstr "Reconstruction TH04's{ph0}motifs de balles."
#: website/public/showcase/th04/index.html:186
msgctxt "page:showcase/th04/index.html"
msgid ""
"A ring of bullets starts with a short angle calculation. Use REA to inspect "
"the original DOS function, then follow its instructions into readable C++."
msgstr ""
"Un anneau de balles commence par un court calcul d'angle. Utilisez REA pour "
"inspecter la fonction DOS d'origine, puis suivez ses instructions en C ++ "
"lisible."
#: website/public/showcase/th04/index.html:191
msgctxt "page:showcase/th04/index.html"
msgid "PC-98 · 16-bit DOS · C++ and assembly"
msgstr "PC-98 * DOS 16 bits * C++ et assemblage"
#: website/public/showcase/th04/index.html:192
msgctxt "page:showcase/th04/index.html"
msgid "View the TH04 reconstruction"
msgstr "Voir le TH04 reconstruction"
#: website/public/showcase/th04/index.html:198
msgctxt "page:showcase/th04/index.html"
msgid "From original instructions to checked source"
msgstr "Des instructions originales à la source vérifiée"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:200
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Original game{ph1}{ph2}MAIN.EXE{ph3}{ph4}The PC-98 executable and "
"its bullet-angle helper.{ph5}"
msgstr ""
"{ph0}01 * Jeu original{ph1}{ph2}PRINCIPALE.EXE{ph3}{ph4}L'exécutable PC-98 "
"et son assistant d'angle de balle.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:207
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Inspect with REA{ph1}{ph2}Instructions + "
"references{ph3}{ph4}Verify the loaded DOS code and read the angle "
"calculation from the executable.{ph5}"
msgstr ""
"{ph0}02 * Inspecter avec le modèle REA {ph1}{ph2}Instructions + "
"références{ph3}{ph4}Vérifiez le code DOS chargé et lisez le calcul de "
"l'angle à partir de l'exécutable.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:215
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Read the C++{ph1}{ph2}Space → aim → rotate{ph3}{ph4}Connect each "
"operation to the maintained reconstruction.{ph5}"
msgstr ""
"{ph0}03 * Lire le C++{ph1}{ph2}Espace → viser → tourner{ph3}{ph4}Reliez "
"chaque opération à la reconstruction maintenue.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:222
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Check the source{ph1}{ph2}2,139 matching bytes{ph3}{ph4}Recorded "
"compiler checks cover the bullet-generation code that contains this "
"helper.{ph5}"
msgstr ""
"{ph0}04 * Vérifiez la source{ph1}{ph2}2 139 octets "
"correspondants{ph3}{ph4}Les vérifications du compilateur enregistrées "
"couvrent le code de génération de puces qui contient cette aide.{ph5}"
#: website/public/showcase/th04/index.html:231
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA returns the original code and its analysis evidence. The TH04 project "
"supplies the maintained source and compiler checks."
msgstr ""
"REA renvoie le code d'origine et ses preuves d'analyse. Le projet TH04 "
"fournit les vérifications de source et de compilateur maintenues."
#: website/public/showcase/th04/index.html:239
msgctxt "page:showcase/th04/index.html"
msgid "In this case study"
msgstr "Dans cette étude de cas"
#. {ph0}: <a href="#ring">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:241
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The bullet ring{ph1}"
msgstr "{ph0}L'anneau de balle{ph1}"
#. {ph0}: <a href="#rea">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:242
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}What REA returns{ph1}"
msgstr "{ph0}Quels sont les retours de REA{ph1}"
#. {ph0}: <a href="#source">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:243
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Assembly to C++{ph1}"
msgstr "{ph0}Assemblage en C++{ph1}"
#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:244
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Checking the source{ph1}"
msgstr "{ph0}Vérification de la source{ph1}"
#. {ph0}: <a href="#project">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:245
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The full project{ph1}"
msgstr "{ph0}Le projet complet{ph1}"
#: website/public/showcase/th04/index.html:250
msgctxt "page:showcase/th04/index.html"
msgid "How a ring aims at the player"
msgstr "Comment un anneau vise le joueur"
#: website/public/showcase/th04/index.html:251
msgctxt "page:showcase/th04/index.html"
msgid ""
"Elly's attack requests an aimed ring with an initial count of 16. One helper"
" calculates the direction of each bullet. The same ring can face a fixed "
"direction or turn toward the player."
msgstr ""
"L'attaque d'Elly demande un anneau visé avec un compte initial de 16. Un "
"assistant calcule la direction de chaque balle. Le même anneau peut faire "
"face à une direction fixe ou se tourner vers le joueur."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/th04/index.html:258
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Votre agent de codage"
#: website/public/showcase/th04/index.html:263
#: website/public/showcase/th04/index.html:319
#: website/public/showcase/th04/index.html:496
#: website/public/showcase/th04/index.html:530
msgctxt "page:showcase/th04/index.html"
msgid "Copy"
msgstr "Copier"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="th04-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/th04/index.html:272
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how TH04 creates a ring of bullets and aims "
"it at the player. Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour découvrir comment TH04 crée un anneau de "
"balles et le dirige vers le joueur. Expliquez le calcul et montrez le "
"code.{ph3}{ph4}{ph5}"
#: website/public/showcase/th04/index.html:281
msgctxt "page:showcase/th04/index.html"
msgid ""
"An example prompt, with the original executable and reconstruction checkout "
"available locally."
msgstr ""
"Un exemple d'invite, avec l'exécutable d'origine et la récupération de "
"reconstruction disponibles localement."
#. {ph0}: <code>0, 16, 32, …, 240</code>
#: website/public/showcase/th04/index.html:285
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 stores a full clockwise turn in 256 angle units. For 16 bullets, each "
"index adds 16 units: {ph0}. Adding the player's direction rotates those "
"positions together."
msgstr ""
"TH04 stocke un tour complet dans le sens des aiguilles d'une montre en 256 "
"unités d'angle. Pour 16 puces, chaque index ajoute 16 unités: {ph0}. L'ajout"
" de la direction du joueur fait pivoter ces positions ensemble."
#. {ph0}: <a href="../../assets/figures/th04-bullet-ring.svg" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:305
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"An illustration of the recovered angle math for count 16, player direction "
"40 and template rotation 0. {ph0}Open figure{ph1}"
msgstr ""
"Une illustration des calculs d'angle récupérés pour le compte 16, la "
"direction du joueur 40 et la rotation du gabarit 0. {ph0}Figure ouverte{ph1}"
#: website/public/showcase/th04/index.html:313
msgctxt "page:showcase/th04/index.html"
msgid "The firing template in the recovered source"
msgstr "Le modèle de tir dans la source récupérée"
#: website/public/showcase/th04/index.html:318
msgctxt "page:showcase/th04/index.html"
msgid "Elly's ring attack · source excerpt"
msgstr "L'attaque de l'anneau d'Elly * extrait de la source"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/boss/elly_phase_ring16.cpp#L26"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:333
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"These lines select the pattern before difficulty and performance tuning. "
"{ph0}Read the attack's source{ph1}."
msgstr ""
"Ces lignes sélectionnent le motif avant le réglage de la difficulté et des "
"performances. {ph0}Lire la source de l'attaque{ph1}."
#: website/public/showcase/th04/index.html:344
msgctxt "page:showcase/th04/index.html"
msgid "What REA returns"
msgstr "Quels sont les retours de REA"
#. {ph0}: <code>bullet_velocity_and_angle_set()</code>
#: website/public/showcase/th04/index.html:345
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"We inspect {ph0}, the function that sets each bullet's velocity and angle. "
"REA returns its instructions, pseudocode and references. Three parts of that"
" result explain the pattern."
msgstr ""
"Nous inspectons {ph0}, la fonction qui définit la vitesse et l'angle de "
"chaque balle. REA renvoie ses instructions, son pseudocode et ses "
"références. Trois parties de ce résultat expliquent le schéma."
#: website/public/showcase/th04/index.html:353
msgctxt "page:showcase/th04/index.html"
msgid "Check the DOS image before reading its code"
msgstr "Vérifiez l'image DOS avant de lire son code"
#: website/public/showcase/th04/index.html:374
msgctxt "page:showcase/th04/index.html"
msgid ""
"The check ties the loaded code and relocation records to the supplied "
"executable. The path above is shortened for display."
msgstr ""
"La vérification lie le code chargé et les enregistrements de relocalisation "
"à l'exécutable fourni. Le chemin ci-dessus est raccourci pour l'affichage."
#: website/public/showcase/th04/index.html:380
msgctxt "page:showcase/th04/index.html"
msgid "Read the ring's multiply and divide"
msgstr "Lire la multiplication et la division de l'anneau"
#. {ph0}: <code>SI</code>
#. {ph1}: <code>DS:53AF</code>
#. {ph2}: <code>bullet_template.count</code>
#: website/public/showcase/th04/index.html:398
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0} holds the bullet index. The shift multiplies it by 256, then the "
"division uses the count read from {ph1}. The maintained source names that "
"field {ph2}. The complete sequence appears below."
msgstr ""
"{ph0} tient l'index de la balle. Le décalage le multiplie par 256, puis la "
"division utilise le décompte lu à partir de {ph1}. Les noms de source "
"conservés dans ce champ {ph2}. La séquence complète apparaît ci-dessous."
#: website/public/showcase/th04/index.html:407
msgctxt "page:showcase/th04/index.html"
msgid "Find where the pattern turns toward the player"
msgstr "Trouvez où le motif se tourne vers le joueur"
#: website/public/showcase/th04/index.html:428
msgctxt "page:showcase/th04/index.html"
msgid ""
"The instruction operands expose two coordinate differences and a direction "
"helper. Its return value is added to the relative ring angle. Source names "
"make those addresses readable; REA lets the agent check the original "
"operations behind them."
msgstr ""
"Les opérandes d'instruction exposent deux différences de coordonnées et un "
"assistant de direction. Sa valeur de retour est ajoutée à l'angle relatif de"
" l'anneau. Les noms de source rendent ces adresses lisibles; REA permet à "
"l'agent de vérifier les opérations d'origine derrière elles."
#: website/public/showcase/th04/index.html:439
msgctxt "page:showcase/th04/index.html"
msgid "From assembly to readable C++"
msgstr "De l'assemblage au C++lisible"
#: website/public/showcase/th04/index.html:440
msgctxt "page:showcase/th04/index.html"
msgid ""
"Select a step to match the original instructions with the angle calculation."
" This summary follows the aimed-ring path; the full source also handles "
"spreads, stacks and random patterns."
msgstr ""
"Sélectionnez une étape pour faire correspondre les instructions d'origine "
"avec le calcul de l'angle. Ce résumé suit le chemin de l'anneau visé; la "
"source complète gère également les spreads, les piles et les motifs "
"aléatoires."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:451
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}01{ph1} Index"
msgstr "{ph0}01{ph1} Indice"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:459
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}02{ph1} Space"
msgstr "{ph0}02{ph1} Espace"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:467
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}03{ph1} Aim"
msgstr "{ph0}03{ph1} Objectif"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:475
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}04{ph1} Rotate"
msgstr "{ph0}04{ph1} Tourner"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:483
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}05{ph1} Store"
msgstr "{ph0}05{ph1} Magasin"
#: website/public/showcase/th04/index.html:495
msgctxt "page:showcase/th04/index.html"
msgid "REA · original 16-bit instructions"
msgstr "REA * instructions 16 bits d'origine"
#: website/public/showcase/th04/index.html:529
msgctxt "page:showcase/th04/index.html"
msgid "Readable C++ · aimed-ring summary"
msgstr "Résumé lisible de l'anneau visé C++ ·"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SI</code>
#: website/public/showcase/th04/index.html:558
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Read the bullet index.{ph1} The stack argument is loaded into "
"{ph2}. In a 16-bullet ring, this member index runs from 0 through 15."
msgstr ""
"{ph0}01 * Lire l'index des puces.{ph1} L'argument de pile est chargé dans "
"{ph2}. Dans un anneau à 16 puces, cet indice de membre va de 0 à 15."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SHL AX,8</code>
#. {ph3}: <code>IDIV</code>
#: website/public/showcase/th04/index.html:563
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Space the directions around a full turn.{ph1} {ph2} multiplies by "
"256. The count is zero-extended into a word, then {ph3} divides the product "
"by that count. For count 16, each index advances 16 angle units."
msgstr ""
"{ph0}02 * Espacez les directions autour d'un tour complet.{ph1} {ph2} "
"multiplie par 256. Le nombre est égal à zéro-étendu en un mot, puis {ph3} "
"divise le produit par ce nombre. Pour le compte 16, chaque index avance de "
"16 unités d'angle."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AX</code>
#: website/public/showcase/th04/index.html:570
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Add the player direction.{ph1} The two subtractions form player-"
"minus-origin coordinates. The direction helper returns an angle in {ph2}; "
"adding it turns the whole ring toward the player."
msgstr ""
"{ph0}03 * Ajoutez la direction du joueur.{ph1} Les deux soustractions "
"forment les coordonnées d'origine du joueur-moins. L'assistant de direction "
"renvoie un angle dans {ph2}; en l'ajoutant, il tourne tout l'anneau vers le "
"joueur."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ADD AL,[0x53ad]</code>
#: website/public/showcase/th04/index.html:576
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Add the pattern's rotation.{ph1} {ph2} adds the template angle. "
"Elly's initial template sets it to zero; other patterns can use the same "
"helper with a rotation."
msgstr ""
"{ph0}04 * Ajouter la rotation du motif.{ph1} {ph2} ajoute l'angle du modèle."
" Le modèle initial d'Elly le met à zéro; d'autres modèles peuvent utiliser "
"le même assistant avec une rotation."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AL</code>
#: website/public/showcase/th04/index.html:582
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}05 · Keep the final angle in one byte.{ph1} The store writes {ph2} to "
"the spawn-angle field. Values wrap after 255, just as the unsigned-byte cast"
" does. The surrounding source also converts this angle and speed into "
"velocity."
msgstr ""
"{ph0}05 * Gardez l'angle final dans un octet.{ph1} Le magasin écrit {ph2} au"
" champ d'angle d'apparition. Les valeurs s'enroulent après 255, tout comme "
"le cast d'octets non signés. La source environnante convertit également cet "
"angle et cette vitesse en vitesse."
#: website/public/showcase/th04/index.html:591
msgctxt "page:showcase/th04/index.html"
msgid ""
"The assembly selects the aimed-ring branch, aim calculation and final store."
" The C++ above is a readable summary. Compiler checks below apply to the "
"maintained source in the linked project."
msgstr ""
"L'ensemble sélectionne la branche de la bague visée, le calcul de la visée "
"et la mémorisation finale. Le C++ ci-dessus est un résumé lisible. Les "
"vérifications du compilateur ci-dessous s'appliquent à la source maintenue "
"dans le projet lié."
#: website/public/showcase/th04/index.html:597
msgctxt "page:showcase/th04/index.html"
msgid "Read the maintained ring and aim source"
msgstr "Lire l'anneau maintenu et la source de visée"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add_impl.hpp#L4"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L422"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/types.hpp#L6"
#. >
#. {ph5}: </a >
#: website/public/showcase/th04/index.html:626
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Ring macro{ph1} · {ph2}Aim and velocity source{ph3} · {ph4}Angle "
"representation{ph5}"
msgstr ""
"{ph0}Macro d'anneau{ph1} · {ph2}Source de visée et de vélocité{ph3} · "
"{ph4}Représentation angulaire{ph5}"
#: website/public/showcase/th04/index.html:646
msgctxt "page:showcase/th04/index.html"
msgid "Checking the maintained source"
msgstr "Vérification de la source maintenue"
#: website/public/showcase/th04/index.html:647
msgctxt "page:showcase/th04/index.html"
msgid ""
"The TH04 project's recorded checks compile the bullet-generation code, "
"including this helper, with its pinned Turbo C++ 4.0J toolchain."
msgstr ""
"Les vérifications enregistrées du projet TH04 compilent le code de "
"génération de puces, y compris cet assistant, avec sa chaîne d'outils Turbo "
"C++ 4.0 J épinglée."
#: website/public/showcase/th04/index.html:654
msgctxt "page:showcase/th04/index.html"
msgid "2,139 matching bytes"
msgstr "2 139 octets correspondants"
#: website/public/showcase/th04/index.html:655
msgctxt "page:showcase/th04/index.html"
msgid ""
"The compiled bullet-generation code matches a 2,139-byte section of the "
"original executable."
msgstr ""
"Le code de génération de puces compilé correspond à une section de 2 139 "
"octets de l'exécutable d'origine."
#: website/public/showcase/th04/index.html:661
msgctxt "page:showcase/th04/index.html"
msgid "Two clean builds"
msgstr "Deux constructions propres"
#: website/public/showcase/th04/index.html:662
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two separate builds produce the same matching bytes. The recorded input "
"hashes match the maintained source shown here."
msgstr ""
"Deux builds distincts produisent les mêmes octets correspondants. Les "
"hachages d'entrée enregistrés correspondent à la source maintenue illustrée "
"ici."
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/reconstruction/product/TH04_SEMANTIC_BULLET_GENERATION_V1236.md#validation"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:668
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Recorded on 3 October 2026. {ph0}Read the compiler checks{ph1}."
msgstr ""
"Enregistré le 3 octobre 2026. {ph0}Lire les vérifications du "
"compilateur{ph1}."
#: website/public/showcase/th04/index.html:676
msgctxt "page:showcase/th04/index.html"
msgid "Target identity and analysis scope"
msgstr "Identité cible et portée de l'analyse"
#: website/public/showcase/th04/index.html:681
msgctxt "page:showcase/th04/index.html"
msgid "Original target"
msgstr "Cible d'origine"
#. {ph0}: <code>MAIN.EXE</code>
#: website/public/showcase/th04/index.html:682
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, 156,258 bytes, DOS MZ"
msgstr "{ph0}, 156 258 octets, sous-titres MZ"
#: website/public/showcase/th04/index.html:685
msgctxt "page:showcase/th04/index.html"
msgid "Helper entry"
msgstr "Entrée d'aide"
#. {ph0}: <code>0x2cfc8</code>
#: website/public/showcase/th04/index.html:686
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0} in REA's loaded image"
msgstr "{ph0} dans l'image chargée de REA"
#: website/public/showcase/th04/index.html:689
msgctxt "page:showcase/th04/index.html"
msgid "Original file offset"
msgstr "Décalage du fichier d'origine"
#. {ph0}: <code>0x1e7c8</code>
#. {ph1}: <code>address_to_file_offset</code>
#: website/public/showcase/th04/index.html:690
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, returned by {ph1}"
msgstr "{ph0}, retourné par {ph1}"
#: website/public/showcase/th04/index.html:696
msgctxt "page:showcase/th04/index.html"
msgid "Recorded code inspection"
msgstr "Inspection du code enregistré"
#: website/public/showcase/th04/index.html:697
msgctxt "page:showcase/th04/index.html"
msgid "REA 4.1.0 · 7 October 2026"
msgstr "REA 4.1.0 · 7 octobre 2026"
#: website/public/showcase/th04/index.html:702
msgctxt "page:showcase/th04/index.html"
msgid ""
"Compiler checks cover the complete bullet-add code section, including this "
"helper. They also compare its MAP contribution and overlapping relocation."
msgstr ""
"Les vérifications du compilateur couvrent la section complète d'ajout de "
"puces de code, y compris cette aide. Ils comparent également sa contribution"
" à la CARTE et sa relocalisation qui se chevauchent."
#. {ph0}: <code>0x1000</code>
#: website/public/showcase/th04/index.html:707
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA verified the static DOS load image at load segment {ph0}. Its addresses "
"describe that analysis image. The function result reports 503 body bytes in "
"two ranges across a 517-byte span; the selected instructions above lie in "
"those reported ranges."
msgstr ""
"REA a vérifié l'image de charge DOS statique au segment de charge {ph0}. Ses"
" adresses décrivent cette image d'analyse. Le résultat de la fonction "
"rapporte 503 octets de corps dans deux plages sur une étendue de 517 octets;"
" les instructions sélectionnées ci-dessus se trouvent dans ces plages "
"rapportées."
#. {ph0}: <code>0d72e980</code>
#: website/public/showcase/th04/index.html:714
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"The source names and compiler checks come from TH04 checkpoint {ph0}. "
"Earlier reconstruction observations used the project's own analysis scripts;"
" this page adds a fresh REA inspection of the same original target. The "
"supplied game's identity is pinned by its repository manifest, with "
"independent pristine-dump provenance still open."
msgstr ""
"Les noms des sources et les vérifications du compilateur proviennent du "
"point de contrôle TH04 {ph0}. Les observations de reconstruction antérieures"
" utilisaient les propres scripts d'analyse du projet; cette page ajoute une "
"nouvelle inspection REA de la même cible d'origine. L'identité du jeu fourni"
" est épinglée par son manifeste de référentiel, avec une provenance de "
"vidage vierge indépendante toujours ouverte."
#: website/public/showcase/th04/index.html:722
msgctxt "page:showcase/th04/index.html"
msgid ""
"The figure illustrates the angle calculation. Full-game controls, timing and"
" PC-98 hardware behavior have separate runtime checks in the reconstruction "
"project."
msgstr ""
"La figure illustre le calcul de l'angle. Les contrôles complets du jeu, le "
"timing et le comportement du matériel PC-98 ont des vérifications "
"d'exécution distinctes dans le projet de reconstruction."
#: website/public/showcase/th04/index.html:731
msgctxt "page:showcase/th04/index.html"
msgid "The full TH04 reconstruction"
msgstr "La reconstruction complète du TH04"
#: website/public/showcase/th04/index.html:732
msgctxt "page:showcase/th04/index.html"
msgid ""
"The project builds the game's four DOS products from maintained C++ and "
"assembly. Beyond bullet generation, the source covers stages, bosses, "
"rendering, input, menus, endings and score handling."
msgstr ""
"Le projet construit les quatre produits DOS du jeu à partir de C++ et "
"d'assembly maintenus. Au-delà de la génération de puces, la source couvre "
"les étapes, les boss, le rendu, la saisie, les menus, les fins et la gestion"
" des partitions."
#. {ph0}: <a class="text-link" href="https://github.com/N0zoM1z0/th04" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:738
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Explore the TH04 repository{ph1}"
msgstr "{ph0}Explorez le référentiel TH04{ph1}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L292"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:744
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Bullet-generation source{ph1}{ph2}The complete helper, other pattern "
"types and template tuning.{ph3}"
msgstr ""
"{ph0}Source de génération de balles{ph1}{ph2}L'assistant complet, d'autres "
"types de motifs et le réglage des modèles.{ph3}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/DOS_BUILD.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:753
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}DOS build and run guide{ph1}{ph2}Build the source and test it in the "
"project's PC-98 emulator workflow.{ph3}"
msgstr ""
"{ph0}Guide de construction et d'exécution DOS{ph1}{ph2}Créez la source et "
"testez-la dans le flux de travail de l'émulateur PC-98 du projet.{ph3}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/RE_HANDOFF.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/th04/index.html:762
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Current project state{ph1}{ph2}DOS verification and the separate native"
" x64 port.{ph3}"
msgstr ""
"{ph0}État actuel du projet{ph1}{ph2}Vérification DOS et port x64 natif "
"séparé.{ph3}"
#: website/public/showcase/th04/index.html:6
msgctxt "page:showcase/th04/index.html"
msgid "TH04 Reverse Engineering: DOS Bullet Patterns — REA"
msgstr "Ingénierie inverse TH04: Modèles de puces DOS-REA"
#: website/public/showcase/th04/index.html:7
msgctxt "page:showcase/th04/index.html"
msgid ""
"Inspect TH04's original 16-bit DOS code with REA. Follow the assembly and "
"recovered C++ to see how a ring of bullets is spaced and aimed at the "
"player."
msgstr ""
"Inspectez le code DOS 16 bits d'origine de TH04 avec REA . Suivez "
"l'assemblage et le C ++ récupéré pour voir comment un anneau de balles est "
"espacé et dirigé vers le joueur."
#: website/public/showcase/th04/index.html:238
msgctxt "page:showcase/th04/index.html"
msgid "On this page"
msgstr "Sur cette page"
#: website/public/showcase/th04/index.html:248
msgctxt "page:showcase/th04/index.html"
msgid "TH04 bullet-pattern case study"
msgstr "TH04 étude de cas de modèle de balle"
#: website/public/showcase/th04/index.html:263
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 example prompt"
msgstr "Copier l'invite d'exemple TH04"
#: website/public/showcase/th04/index.html:291
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 fixed and aimed bullet rings; scroll horizontally on smaller screens"
msgstr ""
"TH04 anneaux de balle fixes et ciblés; faites défiler horizontalement sur "
"des écrans plus petits"
#: website/public/showcase/th04/index.html:297
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two diagrams of a 16-bullet ring. The fixed ring starts at angle zero. "
"Adding a player direction of 40 rotates every direction by the same amount; "
"the highlighted first bullet points toward the player. Both keep a spacing "
"of 16 angle units, or 22.5 degrees."
msgstr ""
"Deux diagrammes d'un anneau de 16 balles. L'anneau fixe commence à l'angle "
"zéro. L'ajout d'une direction de joueur de 40 fait pivoter toutes les "
"directions de la même quantité; la première puce en surbrillance pointe vers"
" le joueur. Les deux conservent un espacement de 16 unités d'angle, soit "
"22,5 degrés."
#: website/public/showcase/th04/index.html:319
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 firing template"
msgstr "Copier le modèle de cuisson TH04"
#: website/public/showcase/th04/index.html:446
msgctxt "page:showcase/th04/index.html"
msgid "Follow the TH04 aimed-ring calculation"
msgstr "Suivez le calcul de la bague de visée TH04"
#: website/public/showcase/th04/index.html:496
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 assembly excerpt"
msgstr "Copier l'extrait d'assemblage TH04"
#: website/public/showcase/th04/index.html:530
msgctxt "page:showcase/th04/index.html"
msgid "Copy readable aimed-ring calculation"
msgstr "Copier le calcul de l'anneau visé lisible"
#: website/public/showcase/th04/index.html:787
msgctxt "page:showcase/th04/index.html"
msgid "Back to top"
msgstr "Haut de page"
#: website/public/assets/main.js:39
msgctxt "runtime"
msgid "Copy"
msgstr "Copier"
#: website/public/assets/main.js:20
msgctxt "runtime"
msgid "Copied"
msgstr "Copié"
#: website/public/assets/main.js:31
msgctxt "runtime"
msgid "Selected"
msgstr "Sélectionné"
#: website/public/assets/main.js:22
msgctxt "runtime"
msgid "Code copied to clipboard."
msgstr "Code copié dans le presse-papiers."
#: website/public/assets/main.js:33
msgctxt "runtime"
msgid "Code selected. Use your keyboard to copy it."
msgstr "Code sélectionné. Utilisez votre clavier pour le copier."
#: website/public/assets/main.js:147
#, python-brace-format
msgctxt "runtime"
msgid "REA on GitHub ({count})"
msgstr "Pour REA sur GitHub ({count})"
#: website/public/assets/dino-demo.js:71
#, python-brace-format
msgctxt "runtime"
msgid "Distance {distance}"
msgstr "Distance {distance}"
#: website/public/assets/dino-demo.js:81
msgctxt "runtime"
msgid "Hit a cactus. Try another speed."
msgstr "Frappez un cactus. Essayez une autre vitesse."
#: website/public/assets/dino-demo.js:81
msgctxt "runtime"
msgid "Space or Jump ↑"
msgstr "Espace ou saut ↑"
#: website/public/assets/dino-demo.js:91
msgctxt "runtime"
msgid "Play again"
msgstr "Rejouer"
#: website/public/assets/dino-demo.js:91
#: website/public/assets/dino-demo.js:105
msgctxt "runtime"
msgid "Play"
msgstr "Jouer"
#: website/public/assets/dino-demo.js:165
msgctxt "runtime"
msgid "Pause"
msgstr "Pause"
#: website/public/assets/dino-demo.js:106
msgctxt "runtime"
msgid "Press Play, then jump over the cactus."
msgstr "Appuyez sur Lecture, puis sautez par-dessus le cactus."
#: website/public/assets/dino-demo.js:141
msgctxt "runtime"
msgid "Hit a cactus. Press Play again, or change the speed and restart."
msgstr ""
"Frappez un cactus. Appuyez à nouveau sur Lecture ou modifiez la vitesse et "
"redémarrez."
#: website/public/assets/dino-demo.js:166
msgctxt "runtime"
msgid "Running. Space or Jump clears a cactus."
msgstr "Courir. L'espace ou le saut efface un cactus."
#: website/public/assets/dino-demo.js:177
#: website/public/assets/dino-demo.js:213
#: website/public/assets/dino-demo.js:218
msgctxt "runtime"
msgid "Paused. Press Play to continue."
msgstr "Pause. Appuyez sur Lecture pour continuer."
#: website/public/assets/dino-demo.js:197
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Space or Jump clears a cactus."
msgstr "Vitesse fixe: {speed}. L'espace ou le saut efface un cactus."
#: website/public/assets/dino-demo.js:200
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Press Play to try it."
msgstr "Vitesse fixe: {speed}. Appuyez sur Lecture pour l'essayer."
#: website/public/assets/dino-demo.js:209
msgctxt "runtime"
msgid "Recovered rule: start at 6, then increase toward 13."
msgstr "Règle récupérée: commencez à 6, puis augmentez vers 13."
#: website/public/assets/dino-demo.js:210
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}."
msgstr "Vitesse fixe: {speed}."
#: website/public/assets/dino-demo.js:242
msgctxt "runtime"
msgid ""
"Replayed the recovered rule. All four values match the controlled original-"
"game check when rounded to three decimals."
msgstr ""
"Rejoué la règle récupérée. Les quatre valeurs correspondent à la "
"vérification contrôlée du jeu d'origine lorsqu'elles sont arrondies à trois "
"décimales."
#: website/public/assets/dino-demo.js:245
msgctxt "runtime"
msgid ""
"The replay differs from the recorded original-game values. Compare the speed"
" rule and settings above."
msgstr ""
"La rediffusion diffère des valeurs enregistrées du jeu original. Comparez la"
" règle de vitesse et les paramètres ci-dessus."
#: website/public/assets/aegis-demo.js:22
#, python-brace-format
msgctxt "runtime"
msgid "{start}–{end} seconds"
msgstr "{start}–{end} secondes"
#: website/public/assets/aegis-demo.js:29
#, python-brace-format
msgctxt "runtime"
msgid "{seconds} seconds, time block {block}"
msgstr "{seconds} secondes, bloc de temps {block}"
#: website/public/assets/aegis-demo.js:35
msgctxt "runtime"
msgid ""
"Interactive calculation is unavailable in this browser. The example shows "
"the code at 59 seconds."
msgstr ""
"Le calcul interactif n'est pas disponible dans ce navigateur. L'exemple "
"montre le code à 59 secondes."
#: website/public/assets/aegis-demo.js:62
msgctxt "runtime"
msgid "Checking…"
msgstr "Vérification…"
#: website/public/assets/aegis-demo.js:76
#, python-brace-format
msgctxt "runtime"
msgid ""
"{passed} / {total} checks passed (six reference cases, at six and eight "
"digits)."
msgstr ""
"{passed} / {total} vérifications réussies (six cas de référence, à six et "
"huit chiffres)."
#: website/public/assets/aegis-demo.js:81
msgctxt "runtime"
msgid "Could not run the reference checks. Try again."
msgstr ""
"Impossible d'exécuter les vérifications des références. Essaie encore."
#: website/public/assets/figures/analyst-thinking.svg:2
msgctxt "figure:analyst-thinking.svg"
msgid "An analyst thinking at a computer"
msgstr "Un analyste pense à un ordinateur"
#: website/public/assets/figures/ctf-mask-equation.svg:2
#: website/public/assets/figures/ctf-mask-equation.svg:7
msgctxt "figure:ctf-mask-equation.svg"
msgid "One check reveals one character"
msgstr "Un chèque révèle un caractère"
#: website/public/assets/figures/ctf-mask-equation.svg:3
msgctxt "figure:ctf-mask-equation.svg"
msgid ""
"The seventh mask selects only position 21 in the six by six input grid. Its "
"character code must equal 55, so the character is 7. The other masks select "
"different positions and give further equations."
msgstr ""
"Le septième masque sélectionne uniquement la position 21 dans la grille "
"d'entrée six par six. Son code de caractère doit être égal à 55, donc le "
"caractère est 7. Les autres masques sélectionnent différentes positions et "
"donnent d'autres équations."
#: website/public/assets/figures/ctf-mask-equation.svg:8
msgctxt "figure:ctf-mask-equation.svg"
msgid "The seventh check. Cell labels are input positions, starting at 0."
msgstr ""
"Le septième chèque. Les étiquettes de cellule sont des positions d'entrée, "
"commençant à 0."
#: website/public/assets/figures/ctf-mask-equation.svg:10
msgctxt "figure:ctf-mask-equation.svg"
msgid "Encoded mask: −21, +1, −14, 0"
msgstr "Masque codé: -21, +1, -14, 0"
#: website/public/assets/figures/ctf-mask-equation.svg:11
msgctxt "figure:ctf-mask-equation.svg"
msgid "Skip 21 cells. Select 1. Skip 14. Stop at 0."
msgstr "Sauter 21 cellules. Sélectionnez 1. Sauter 14. Arrêtez à 0."
#: website/public/assets/figures/ctf-mask-equation.svg:15
msgctxt "figure:ctf-mask-equation.svg"
msgid "Only one cell contributes to this sum"
msgstr "Une seule cellule contribue à cette somme"
#: website/public/assets/figures/ctf-mask-equation.svg:18
msgctxt "figure:ctf-mask-equation.svg"
msgid "Position 21 in the flag must contain 7."
msgstr "La position 21 dans le drapeau doit contenir 7."
#: website/public/assets/figures/ctf-mask-equation.svg:20
msgctxt "figure:ctf-mask-equation.svg"
msgid "Selected: one cell"
msgstr "Sélectionné: une cellule"
#: website/public/assets/figures/ctf-mask-equation.svg:21
msgctxt "figure:ctf-mask-equation.svg"
msgid "26 masks give 26 equations."
msgstr "26 masques donnent 26 équations."
#: website/public/assets/figures/ctf-mask-equation.svg:22
msgctxt "figure:ctf-mask-equation.svg"
msgid "Solve them together to find the flag."
msgstr "Résolvez-les ensemble pour trouver le drapeau."
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:2
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:9
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "DX-Ball sound-pan investigation"
msgstr "Enquête sur le panoramique du son DX-Ball"
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:3
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid ""
"REA provides the instruction, caller and byte-read evidence for one DX-Ball "
"function. A stack input is multiplied by 1.5625, offset by 500, scaled, and "
"converted to an integer. Maintained C is checked in 3,205 original-x86 cases"
" and a separate 63-byte compiler replay."
msgstr ""
"REA fournit l'instruction, l'appelant et la preuve de lecture d'octets pour "
"une fonction DX-Ball. Une entrée de pile est multipliée par 1,5625, décalée "
"de 500, mise à l'échelle et convertie en entier. Le C maintenu est vérifié "
"dans 3 205 cas d'origine-x86 et une relecture séparée du compilateur de 63 "
"octets."
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:28
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Stack"
msgstr "Pile"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:29
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "input x"
msgstr "entrée x"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:33
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Integer"
msgstr "Entier"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:34
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "return"
msgstr "retour"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:35
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Reconstructed function"
msgstr "Fonction reconstruite"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:36
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Maintained C"
msgstr "C reconstruit"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:37
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Brick-hit caller"
msgstr "Appel de collision"
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:38
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "20 + 30 × tile_x"
msgstr "20 + 30 × tile_x"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:39
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Original code"
msgstr "Code original"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:40
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:43
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "comparison"
msgstr "comparaison"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:41
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "3,205 cases"
msgstr "3 205 tests"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:42
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "VC4.0 build"
msgstr "Build VC4.0"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:44
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "63 matching bytes"
msgstr "63 octets égaux"
#: website/public/assets/figures/rea-investigation-flow.svg:2
#: website/public/assets/figures/rea-investigation-flow.svg:10
msgctxt "figure:rea-investigation-flow.svg"
msgid "REA investigation flow"
msgstr "Écoulement d'enquête de REA"
#: website/public/assets/figures/rea-investigation-flow.svg:3
msgctxt "figure:rea-investigation-flow.svg"
msgid ""
"Ask a question about a local target. REA inspects and traces through local "
"analysis adapters, returns evidence, and supports follow-up questions as "
"your agent explains, implements and tests."
msgstr ""
"Posez une question sur une cible locale. REA inspecte et trace via des "
"adaptateurs d'analyse locaux, renvoie des preuves et prend en charge les "
"questions de suivi pendant que votre agent explique, implémente et teste."
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:19
msgctxt "figure:rea-investigation-flow.svg"
msgid "1. Ask"
msgstr "1. Demander"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:20
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent + local target"
msgstr "Agent + cible locale"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:21
msgctxt "figure:rea-investigation-flow.svg"
msgid "App / binary / browser"
msgstr "App / fichier / navigateur"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:22
msgctxt "figure:rea-investigation-flow.svg"
msgid "2. Inspect & trace"
msgstr "2. Inspecter et tracer"
#: website/public/assets/figures/rea-investigation-flow.svg:24
msgctxt "figure:rea-investigation-flow.svg"
msgid "CLI / MCP"
msgstr "CLI / MCP"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:25
msgctxt "figure:rea-investigation-flow.svg"
msgid "3. Read the evidence"
msgstr "3. Lire les preuves"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:26
msgctxt "figure:rea-investigation-flow.svg"
msgid "Code / references /"
msgstr "Code / références /"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:27
msgctxt "figure:rea-investigation-flow.svg"
msgid "unknowns"
msgstr "inconnues"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:28
msgctxt "figure:rea-investigation-flow.svg"
msgid "4. Use what you learn"
msgstr "4. Appliquer"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:29
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent"
msgstr "Votre agent"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:30
msgctxt "figure:rea-investigation-flow.svg"
msgid "Explain / implement / test"
msgstr "Expliquer / créer / tester"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:31
msgctxt "figure:rea-investigation-flow.svg"
msgid "Analysis tools"
msgstr "Outils d’analyse"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:32
msgctxt "figure:rea-investigation-flow.svg"
msgid "Local analysis adapters"
msgstr "Adaptateurs locaux"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:33
msgctxt "figure:rea-investigation-flow.svg"
msgid "Follow-up question"
msgstr "Question suivante"
#: website/public/assets/figures/th04-bullet-ring.svg:2
msgctxt "figure:th04-bullet-ring.svg"
msgid "TH04: spacing and aiming a ring of bullets"
msgstr "TH04: espacement et visée d'un anneau de balles"
#: website/public/assets/figures/th04-bullet-ring.svg:3
msgctxt "figure:th04-bullet-ring.svg"
msgid ""
"A full clockwise turn has 256 angle units. Sixteen bullets start at angles "
"zero, sixteen, thirty-two, through 240. Adding an example player direction "
"of forty turns all sixteen directions together; the first bullet points at "
"the player. Template rotation is zero."
msgstr ""
"Un tour complet dans le sens des aiguilles d'une montre comporte 256 unités "
"d'angle. Seize balles commencent aux angles zéro, seize, trente-deux, "
"jusqu'à 240. L'ajout d'un exemple de direction de joueur de quarante tourne "
"les seize directions ensemble; la première puce pointe vers le joueur. La "
"rotation du modèle est nulle."
#: website/public/assets/figures/th04-bullet-ring.svg:8
msgctxt "figure:th04-bullet-ring.svg"
msgid "Fixed ring"
msgstr "Anneau fixe"
#: website/public/assets/figures/th04-bullet-ring.svg:9
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: angle 0"
msgstr "Première balle: angle 0"
#: website/public/assets/figures/th04-bullet-ring.svg:10
msgctxt "figure:th04-bullet-ring.svg"
msgid "Aimed ring"
msgstr "Bague visée"
#: website/public/assets/figures/th04-bullet-ring.svg:11
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: player direction"
msgstr "Première balle: direction du joueur"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/th04-bullet-ring.svg:48
#: website/public/assets/figures/th04-bullet-ring.svg:86
msgctxt "figure:th04-bullet-ring.svg"
msgid "Origin"
msgstr "Centre"
#: website/public/assets/figures/th04-bullet-ring.svg:89
msgctxt "figure:th04-bullet-ring.svg"
msgid "Player"
msgstr "Joueur"
#: website/public/assets/figures/th04-bullet-ring.svg:94
msgctxt "figure:th04-bullet-ring.svg"
msgid "Same spacing: 256 ÷ 16 = 16 angle units = 22.5°"
msgstr "Même espacement: 256 ÷ 16 = 16 unités d'angle = 22,5°"
#: website/public/blog/index.html:109
#: website/public/blog/touhou-reconstruction/index.html:109
#: website/public/examples/dino-lab/index.html:110
#: website/public/faq/index.html:109
#: website/public/first-investigation/index.html:109
#: website/public/get-started/index.html:109
#: website/public/guides/browser/index.html:109
#: website/public/guides/index.html:109
#: website/public/guides/javascript/index.html:109
#: website/public/guides/native/index.html:109 website/public/index.html:111
#: website/public/showcase/aegis/index.html:110
#: website/public/showcase/ctf/index.html:109
#: website/public/showcase/dx-ball/index.html:109
#: website/public/showcase/index.html:109
#: website/public/showcase/notion/index.html:109
#: website/public/showcase/th04/index.html:109
msgctxt "shared"
msgid "Showcases"
msgstr "Études de cas"
#: website/public/blog/index.html:110
#: website/public/blog/touhou-reconstruction/index.html:110
#: website/public/examples/dino-lab/index.html:111
#: website/public/faq/index.html:110
#: website/public/first-investigation/index.html:110
#: website/public/get-started/index.html:110
#: website/public/guides/browser/index.html:110
#: website/public/guides/index.html:110
#: website/public/guides/javascript/index.html:110
#: website/public/guides/native/index.html:110 website/public/index.html:112
#: website/public/showcase/aegis/index.html:111
#: website/public/showcase/ctf/index.html:110
#: website/public/showcase/dx-ball/index.html:110
#: website/public/showcase/index.html:110
#: website/public/showcase/notion/index.html:110
#: website/public/showcase/th04/index.html:110
msgctxt "shared"
msgid "Blog"
msgstr "Blog"
#: website/public/blog/index.html:111
#: website/public/blog/touhou-reconstruction/index.html:111
#: website/public/examples/dino-lab/index.html:112
#: website/public/faq/index.html:111
#: website/public/first-investigation/index.html:111
#: website/public/get-started/index.html:111
#: website/public/guides/browser/index.html:111
#: website/public/guides/index.html:111
#: website/public/guides/javascript/index.html:111
#: website/public/guides/native/index.html:111 website/public/index.html:113
#: website/public/showcase/aegis/index.html:112
#: website/public/showcase/ctf/index.html:111
#: website/public/showcase/dx-ball/index.html:111
#: website/public/showcase/index.html:111
#: website/public/showcase/notion/index.html:111
#: website/public/showcase/th04/index.html:111
msgctxt "shared"
msgid "Get started"
msgstr "Démarrer"
#: website/public/blog/index.html:112
#: website/public/blog/touhou-reconstruction/index.html:112
#: website/public/examples/dino-lab/index.html:113
#: website/public/faq/index.html:112
#: website/public/first-investigation/index.html:112
#: website/public/get-started/index.html:112
#: website/public/guides/browser/index.html:112
#: website/public/guides/index.html:112
#: website/public/guides/javascript/index.html:112
#: website/public/guides/native/index.html:112 website/public/index.html:114
#: website/public/showcase/aegis/index.html:113
#: website/public/showcase/ctf/index.html:112
#: website/public/showcase/dx-ball/index.html:112
#: website/public/showcase/index.html:112
#: website/public/showcase/notion/index.html:112
#: website/public/showcase/th04/index.html:112
msgctxt "shared"
msgid "Guides"
msgstr "Guides"
#: website/public/blog/index.html:209
#: website/public/blog/touhou-reconstruction/index.html:1059
#: website/public/examples/dino-lab/index.html:454
#: website/public/faq/index.html:552
#: website/public/first-investigation/index.html:502
#: website/public/get-started/index.html:861
#: website/public/guides/browser/index.html:477
#: website/public/guides/index.html:261
#: website/public/guides/javascript/index.html:482
#: website/public/guides/native/index.html:488 website/public/index.html:1165
#: website/public/showcase/aegis/index.html:787
#: website/public/showcase/ctf/index.html:756
#: website/public/showcase/dx-ball/index.html:764
#: website/public/showcase/index.html:296
#: website/public/showcase/notion/index.html:610
#: website/public/showcase/th04/index.html:779
msgctxt "shared"
msgid "Source"
msgstr "Code source"
#: website/public/blog/index.html:210
#: website/public/blog/touhou-reconstruction/index.html:1060
#: website/public/examples/dino-lab/index.html:455
#: website/public/faq/index.html:553
#: website/public/first-investigation/index.html:503
#: website/public/get-started/index.html:862
#: website/public/guides/browser/index.html:478
#: website/public/guides/index.html:262
#: website/public/guides/javascript/index.html:483
#: website/public/guides/native/index.html:489 website/public/index.html:1166
#: website/public/showcase/aegis/index.html:788
#: website/public/showcase/ctf/index.html:757
#: website/public/showcase/dx-ball/index.html:765
#: website/public/showcase/index.html:297
#: website/public/showcase/notion/index.html:611
#: website/public/showcase/th04/index.html:780
msgctxt "shared"
msgid "MIT license"
msgstr "Licence MIT"
#: website/public/blog/index.html:211
#: website/public/blog/touhou-reconstruction/index.html:1061
#: website/public/examples/dino-lab/index.html:456
#: website/public/faq/index.html:554
#: website/public/first-investigation/index.html:504
#: website/public/get-started/index.html:863
#: website/public/guides/browser/index.html:479
#: website/public/guides/index.html:263
#: website/public/guides/javascript/index.html:484
#: website/public/guides/native/index.html:490 website/public/index.html:1167
#: website/public/showcase/aegis/index.html:789
#: website/public/showcase/ctf/index.html:758
#: website/public/showcase/dx-ball/index.html:766
#: website/public/showcase/index.html:298
#: website/public/showcase/notion/index.html:612
#: website/public/showcase/th04/index.html:781
msgctxt "shared"
msgid "Join the community"
msgstr "Rejoindre la communauté"
#: website/public/blog/index.html:212
#: website/public/blog/touhou-reconstruction/index.html:1062
#: website/public/examples/dino-lab/index.html:457
#: website/public/faq/index.html:555
#: website/public/first-investigation/index.html:505
#: website/public/get-started/index.html:864
#: website/public/guides/browser/index.html:480
#: website/public/guides/index.html:264
#: website/public/guides/javascript/index.html:485
#: website/public/guides/native/index.html:491 website/public/index.html:1168
#: website/public/showcase/aegis/index.html:790
#: website/public/showcase/ctf/index.html:759
#: website/public/showcase/dx-ball/index.html:767
#: website/public/showcase/index.html:299
#: website/public/showcase/notion/index.html:613
#: website/public/showcase/th04/index.html:782
msgctxt "shared"
msgid "Follow us on X"
msgstr "Nous suivre sur X"
#: website/public/examples/dino-lab/index.html:293
msgctxt "page:examples/dino-lab/index.html"
msgid "REA · selected script source"
msgstr "REA * source de script sélectionnée"
#: website/public/first-investigation/index.html:361
msgctxt "page:first-investigation/index.html"
msgid "Source"
msgstr "Code source"
#: website/public/first-investigation/index.html:415
msgctxt "page:first-investigation/index.html"
msgid "Expected formatter output"
msgstr "Sortie attendue du formateur"
#: website/public/guides/index.html:206
msgctxt "page:guides/index.html"
msgid "Instructions"
msgstr "Instructions"
#: website/public/guides/index.html:207
msgctxt "page:guides/index.html"
msgid "Caller"
msgstr "Appelant"
#: website/public/guides/index.html:208
msgctxt "page:guides/index.html"
msgid "Constants"
msgstr "Constantes"
#: website/public/guides/index.html:209
msgctxt "page:guides/index.html"
msgid "C function"
msgstr "Fonction C"
#: website/public/guides/index.html:224
msgctxt "page:guides/index.html"
msgid "Button"
msgstr "Bouton"
#: website/public/guides/index.html:225
msgctxt "page:guides/index.html"
msgid "Preload API"
msgstr "API de préchargement"
#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "IPC"
msgstr "CIB"
#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "CSV file"
msgstr "CSV fichier"
#: website/public/guides/index.html:246
msgctxt "page:guides/index.html"
msgid "Your click"
msgstr "Votre clic"
#: website/public/guides/index.html:247
msgctxt "page:guides/index.html"
msgid "Captured request"
msgstr "Demande capturée"
#: website/public/guides/index.html:248
msgctxt "page:guides/index.html"
msgid "Export script"
msgstr "Exporter le script"
#: website/public/guides/javascript/index.html:344
msgctxt "page:guides/javascript/index.html"
msgid "REA result · summary.ipc excerpt"
msgstr "Résultat de REA * résumé.extrait de la CIB"
#: website/public/guides/native/index.html:371
msgctxt "page:guides/native/index.html"
msgid "REA instruction excerpt · 0x406409"
msgstr "Extrait d'instruction REA · 0x406409"
#: website/public/guides/native/index.html:385
msgctxt "page:guides/native/index.html"
msgid "REA caller excerpt · 0x411f5b"
msgstr "Extrait de l'appelant REA · 0x411f5b"
#: website/public/guides/native/index.html:399
msgctxt "page:guides/native/index.html"
msgid "REA byte results · interpreted as little-endian doubles"
msgstr "Résultats d'octets REA * interprétés comme des doubles little-endian"
#: website/public/guides/native/index.html:416
msgctxt "page:guides/native/index.html"
msgid "Recovered C · excerpt"
msgstr "Extrait C · récupéré"
#: website/public/index.html:219
msgctxt "page:index.html"
msgid "See how REA works ↓"
msgstr "Voir comment fonctionne REA ↓"
#: website/public/index.html:220
msgctxt "page:index.html"
msgid "Setup guide"
msgstr "Guide d’installation"
#: website/public/index.html:221
msgctxt "page:index.html"
msgid "Showcases →"
msgstr "Vitrines →"
#: website/public/index.html:731
msgctxt "page:index.html"
msgid "Selected settings from the inspected script"
msgstr "Paramètres sélectionnés à partir du script inspecté"
#: website/public/index.html:903
msgctxt "page:index.html"
msgid "Readable summary of the % handler"
msgstr "Résumé lisible du gestionnaire %"
#: website/public/index.html:967
msgctxt "page:index.html"
msgid "REA · selected original instructions"
msgstr "REA * instructions d'origine sélectionnées"
#: website/public/index.html:978
msgctxt "page:index.html"
msgid "Operator IDs · Microsoft’s source"
msgstr "Identifiants de l'opérateur * Source de Microsoft"
#: website/public/index.html:1152
msgctxt "page:index.html"
msgid "Follow @reatools on X"
msgstr "Suivez @ reatools sur X"
#: website/public/showcase/aegis/index.html:386
#: website/public/showcase/aegis/index.html:418
msgctxt "page:showcase/aegis/index.html"
msgid "Agent → REA"
msgstr "Agent → REA"
#: website/public/showcase/aegis/index.html:396
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · selected results"
msgstr "REA → agent · résultats sélectionnés"
#: website/public/showcase/aegis/index.html:432
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · methods and callers"
msgstr "REA → méthodes et appelants de l'agent ·"
#: website/public/showcase/aegis/index.html:502
msgctxt "page:showcase/aegis/index.html"
msgid "REA · selected decompiled Java"
msgstr "REA * Java décompilé sélectionné"
#: website/public/showcase/aegis/index.html:532
msgctxt "page:showcase/aegis/index.html"
msgid "Readable summary · agent's interpretation"
msgstr "Résumé lisible * interprétation de l'agent"
#: website/public/showcase/aegis/index.html:587
msgctxt "page:showcase/aegis/index.html"
msgid "REA · generateOTP, complete body"
msgstr "REA * Générez OTP, corps complet"
#: website/public/showcase/aegis/index.html:705
msgctxt "page:showcase/aegis/index.html"
msgid "Download Aegis APK"
msgstr "Télécharger Aegis APK"
#: website/public/showcase/aegis/index.html:709
msgctxt "page:showcase/aegis/index.html"
msgid "Download Android analysis provider"
msgstr "Télécharger le fournisseur d'analyse Android"
#: website/public/showcase/ctf/index.html:289
#: website/public/showcase/ctf/index.html:325
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA"
msgstr "Agent → REA"
#: website/public/showcase/ctf/index.html:305
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected results"
msgstr "REA → agent · résultats sélectionnés"
#: website/public/showcase/ctf/index.html:337
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected instructions"
msgstr "REA → agent * instructions sélectionnées"
#: website/public/showcase/ctf/index.html:400
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA · read_bytes"
msgstr "Agent → REA * lire_octets"
#: website/public/showcase/ctf/index.html:407
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · seventh entries"
msgstr "REA → agent * septième entrées"
#: website/public/showcase/ctf/index.html:675
msgctxt "page:showcase/ctf/index.html"
msgid "Original executable · SHA-256"
msgstr "Fichier exécutable d'origine * SHA-256"
#: website/public/showcase/ctf/index.html:711
msgctxt "page:showcase/ctf/index.html"
msgid "Download the original challenge"
msgstr "Télécharger le défi original"
#: website/public/showcase/ctf/index.html:715
msgctxt "page:showcase/ctf/index.html"
msgid "Download solver"
msgstr "Télécharger le solveur"
#: website/public/showcase/dx-ball/index.html:316
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · pseudocode excerpt"
msgstr "REA résultat * extrait de pseudocode"
#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/dx-ball/index.html:339
#: website/public/showcase/dx-ball/index.html:363
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · {ph0}"
msgstr "Agent → REA · {ph0}"
#: website/public/showcase/dx-ball/index.html:345
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → extrait d'instructions de l'agent ·"
#: website/public/showcase/dx-ball/index.html:369
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · caller excerpt"
msgstr "REA → extrait de l'agent * appelant"
#. {ph0}: <code>read_bytes</code>
#: website/public/showcase/dx-ball/index.html:387
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · two {ph0} requests"
msgstr "Agent → REA * deux {ph0} demandes"
#: website/public/showcase/dx-ball/index.html:397
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte results · decoded as doubles"
msgstr "Résultats des octets REA * décodés en doubles"
#: website/public/showcase/dx-ball/index.html:750
msgctxt "page:showcase/dx-ball/index.html"
msgid "Start with your own target"
msgstr "Commencez par votre propre cible"
#: website/public/showcase/index.html:199
msgctxt "page:showcase/index.html"
msgid "APK"
msgstr "APK"
#: website/public/showcase/index.html:200
msgctxt "page:showcase/index.html"
msgid "Generating code"
msgstr "Génération de code"
#: website/public/showcase/index.html:201
msgctxt "page:showcase/index.html"
msgid "Recovered rule"
msgstr "Règle récupérée"
#: website/public/showcase/index.html:202
msgctxt "page:showcase/index.html"
msgid "Adjustable clock"
msgstr "Horloge réglable"
#: website/public/showcase/index.html:217
msgctxt "page:showcase/index.html"
msgid "Binary"
msgstr "Binaire"
#: website/public/showcase/index.html:218
msgctxt "page:showcase/index.html"
msgid "Checking code"
msgstr "Vérification du code"
#: website/public/showcase/index.html:219
msgctxt "page:showcase/index.html"
msgid "Equations"
msgstr "Équations"
#: website/public/showcase/index.html:220
msgctxt "page:showcase/index.html"
msgid "Correct!"
msgstr "C'est vrai!"
#: website/public/showcase/index.html:236
msgctxt "page:showcase/index.html"
msgid "Executable"
msgstr "Exécutable"
#: website/public/showcase/index.html:237
msgctxt "page:showcase/index.html"
msgid "REA findings"
msgstr "Résultats de la REA"
#: website/public/showcase/index.html:238
msgctxt "page:showcase/index.html"
msgid "Recovered C"
msgstr "C Récupéré"
#: website/public/showcase/index.html:239
msgctxt "page:showcase/index.html"
msgid "Validation"
msgstr "Validation"
#: website/public/showcase/index.html:254
msgctxt "page:showcase/index.html"
msgid "Packaged app"
msgstr "Application packagée"
#: website/public/showcase/index.html:255
msgctxt "page:showcase/index.html"
msgid "Exposed API"
msgstr "API exposée"
#: website/public/showcase/index.html:256
msgctxt "page:showcase/index.html"
msgid "IPC wrappers"
msgstr "Enveloppes IPC"
#: website/public/showcase/index.html:257
msgctxt "page:showcase/index.html"
msgid "Clipboard"
msgstr "Presse-papiers"
#: website/public/showcase/index.html:272
msgctxt "page:showcase/index.html"
msgid "Original DOS code"
msgstr "Code de DOS d'origine"
#: website/public/showcase/index.html:273
msgctxt "page:showcase/index.html"
msgid "REA instructions"
msgstr "Instructions pour le modèle REA"
#: website/public/showcase/index.html:274
msgctxt "page:showcase/index.html"
msgid "Angle calculation"
msgstr "Calcul de l'angle"
#: website/public/showcase/index.html:275
msgctxt "page:showcase/index.html"
msgid "Bullet ring"
msgstr "Anneau de balle"
#: website/public/showcase/notion/index.html:291
msgctxt "page:showcase/notion/index.html"
msgid "Exposed page API"
msgstr "API de page exposée"
#: website/public/showcase/notion/index.html:297
msgctxt "page:showcase/notion/index.html"
msgid "Renderer IPC call"
msgstr "Appel IPC du moteur de rendu"
#: website/public/showcase/notion/index.html:459
msgctxt "page:showcase/notion/index.html"
msgid "Sent to the system clipboard"
msgstr "Envoyé au presse-papiers du système"
#: website/public/showcase/notion/index.html:467
msgctxt "page:showcase/notion/index.html"
msgid "Saved locally by Notion"
msgstr "Enregistré localement par Notion"
#: website/public/showcase/notion/index.html:512
msgctxt "page:showcase/notion/index.html"
msgid "Markdown input"
msgstr "Entrée de démarque"
#: website/public/showcase/notion/index.html:519
msgctxt "page:showcase/notion/index.html"
msgid "Structured parser output · excerpt"
msgstr "Sortie de l'analyseur structuré * extrait"
#: website/public/showcase/notion/index.html:596
msgctxt "page:showcase/notion/index.html"
msgid "Analyze your own app"
msgstr "Analysez votre propre application"
#: website/public/showcase/th04/index.html:356
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA"
msgstr "Agent → REA"
#: website/public/showcase/th04/index.html:365
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · selected fields"
msgstr "REA → agent * champs sélectionnés"
#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/th04/index.html:384
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA · {ph0}"
msgstr "Agent → REA · {ph0}"
#: website/public/showcase/th04/index.html:390
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → extrait d'instructions de l'agent ·"
#: website/public/showcase/th04/index.html:411
msgctxt "page:showcase/th04/index.html"
msgid "Same function result · aim excerpt"
msgstr "Même fonction résultat · extrait de but"
#: website/public/showcase/th04/index.html:420
msgctxt "page:showcase/th04/index.html"
msgid "Corresponding maintained C++"
msgstr "C++maintenu correspondant"
#: website/public/showcase/th04/index.html:600
msgctxt "page:showcase/th04/index.html"
msgid "Ring macro · TH04 branch, excerpt"
msgstr "Macro annulaire * Branche TH04, extrait"
#: website/public/showcase/th04/index.html:610
msgctxt "page:showcase/th04/index.html"
msgid "Angle and velocity · source excerpt"
msgstr "Angle et vélocité · extrait de la source"
#: website/public/assets/home.js:29
msgctxt "runtime"
msgid "Press % to see what happens to 10."
msgstr "Appuyez sur % pour voir ce qui arrive à 10."
#: website/public/assets/home.js:32
msgctxt "runtime"
msgid "10% of 200 is 20. Press = to add it."
msgstr "10% de 200 est égal à 20. Appuyez sur = pour l'ajouter."
#: website/public/assets/home.js:33
msgctxt "runtime"
msgid "For multiplication, 10 becomes 0.1. Press = to multiply."
msgstr ""
"Pour la multiplication, 10 devient 0,1. Appuyez sur = pour multiplier."
#: scripts/website_i18n.py
msgctxt "runtime"
msgid "Translation is being updated. Read this page in English for now."
msgstr ""
"La traduction est en cours de mise à jour. Lisez cette page en anglais pour "
"l'instant."
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="faq-analysis-prompt" >
#. {ph3}: <span translate="no">/absolute/path/to/app</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/faq/index.html:412
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze {ph3} and explain how it exports data. "
"Show the relevant code and source locations.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour analyser {ph3} et expliquez comment il "
"exporte les données. Affichez les emplacements de code et de source "
"pertinents.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/first-investigation/index.html:230
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Installe REA et connecte-le à cet agent de programmation "
"avec {ph3}. Présente-moi d’abord les changements prévus et attends mon "
"accord. Vérifie ensuite l’installation.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-analysis-prompt" >
#. {ph3}: <span translate="no" >https://rea.tools/examples/notes-
#. example.zip</span >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="terminal-cursor" aria-hidden="true">
#. {ph7}: </span>
#: website/public/first-investigation/index.html:280
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Download {ph3} into a new example folder and unpack it. Use "
"REA to find what happens when I click Export notes. Show where {ph4} is "
"written, which fields it contains, and the relevant files and "
"lines.{ph5}{ph6}{ph7}"
msgstr ""
"{ph0}›{ph1}{ph2}Télécharger {ph3} dans un nouveau dossier d'exemple et "
"décompressez-le. Utilisez REA pour savoir ce qui se passe lorsque je clique "
"sur Exporter des notes. Montrer où {ph4} est écrit, les champs qu'il "
"contient, ainsi que les fichiers et lignes pertinents.{ph5}{ph6}{ph7}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="agent-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/get-started/index.html:419
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Installe REA et connecte-le à cet agent de programmation "
"avec {ph3}. Présente-moi d’abord les changements prévus et attends mon "
"accord. Vérifie ensuite l’installation.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:251
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Installe REA et connecte-le à cet agent de programmation "
"avec {ph3}. Présente-moi d’abord les changements prévus et attends mon "
"accord. Vérifie ensuite l’installation.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="website-project-prompt" >
#. {ph3}: <span translate="no">https://rea.tools/</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:1054
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect {ph3}. Clone this website for "
"me.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisez REA pour inspecter {ph3}. Clonez ce site pour "
"moi.{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">dino-speed.js</span>
#: website/public/examples/dino-lab/index.html:307
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstruction · {ph0}"
msgstr "Reconstruction · {ph0}"
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/faq/index.html:205
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"With {ph0} and npm available, run setup, choose your coding agent and review"
" the proposed changes."
msgstr ""
"Avec {ph0} et npm disponibles, exécutez la configuration, choisissez votre "
"agent de codage et examinez les modifications proposées."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:189
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "A supplied example · {ph0} and npm · Your coding agent"
msgstr "Un exemple fourni · {ph0} et npm · Votre agent de codage"
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="../get-started/">
#. {ph2}: </a >
#: website/public/first-investigation/index.html:208
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"Use a coding agent such as Claude Code, Codex or Cursor. You’ll need {ph0} "
"and npm; the {ph1}setup guide lists supported versions{ph2}."
msgstr ""
"Utilisez un agent de codage tel que Claude Code, Codex ou Cursor. Vous aurez"
" besoin de {ph0} et npm; le {ph1}le guide d'installation répertorie les "
"versions prises en charge{ph2}."
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">renderer.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>notes.exportCsv()</code>
#. {ph7}: </span >
#: website/public/first-investigation/index.html:326
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Page · {ph1}{ph2}{ph3}Export notes{ph4}{ph5}Calls {ph6}.{ph7}"
msgstr ""
"{ph0}Page Suivante · {ph1}{ph2}{ph3}Exporter des notes{ph4}{ph5}Appels "
"{ph6}.{ph7}"
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">preload.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: <code>notes:export</code>
#. {ph5}: </span >
#. {ph6}: <span class="flow-note" >
#. {ph7}: </span >
#: website/public/first-investigation/index.html:334
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Bridge · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}Sends a named message to the "
"main process.{ph7}"
msgstr ""
"{ph0}Pont · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}Envoie un message nommé au "
"processus principal.{ph7}"
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">main.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node" >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="flow-note" >
#. {ph7}: <code>csv.js</code>
#. {ph8}: </span >
#: website/public/first-investigation/index.html:342
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Handler · {ph1}{ph2}{ph3}Write {ph4}{ph5}{ph6}Calls the formatter in "
"{ph7} and writes the file.{ph8}"
msgstr ""
"{ph0}Gestionnaire · {ph1}{ph2}{ph3}Écrire {ph4}{ph5}{ph6}Appelle le "
"formateur dans {ph7} et écrit le fichier.{ph8}"
#. {ph0}: <span translate="no">main.js</span>
#: website/public/first-investigation/index.html:360
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · lines 8–12"
msgstr "{ph0} * lignes 8-12"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-check-prompt" >
#. {ph3}: <span translate="no">Hello, "REA"</span>
#. {ph4}: <span translate="no">toCsv</span>
#. {ph5}: <span translate="no">Node.js</span>
#. {ph6}: </span >
#. {ph7}: <span class="terminal-cursor" aria-hidden="true">
#. {ph8}: </span>
#: website/public/first-investigation/index.html:402
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title {ph3}. Then "
"run the example’s {ph4} formatter with {ph5} to check it. Show the "
"prediction and actual output.{ph6}{ph7}{ph8}"
msgstr ""
"{ph0}›{ph1}{ph2}Prédire le CSV pour une note avec l'id 1 et le titre {ph3}. "
"Ensuite, exécutez l'exemple {ph4} formateur avec {ph5} pour le vérifier. "
"Afficher la prédiction et la sortie réelle.{ph6}{ph7}{ph8}"
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:420
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The title stays in one quoted field; each quotation mark is doubled. This "
"checks the formatter directly with {ph0}."
msgstr ""
"Le titre reste dans un champ entre guillemets; chaque guillemet est doublé. "
"Cela vérifie le formateur directement avec {ph0}."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:433
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · CSV formatter"
msgstr "{ph0} · CSV formateur"
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:187
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
msgstr ""
"Vous aurez besoin de {ph0} 22 (22.19+), 24 (24.11+) ou 26+. Le modèle npm "
"est livré avec {ph1}."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:192
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Don't have {ph0}, or not sure?"
msgstr "Vous n'avez pas {ph0}, ou vous n'êtes pas sûr?"
#. {ph0}: <code>node -v</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:211
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
"Si {ph0} imprime v22. 19+, v24. 11 + ou v26+, vous êtes prêt. S'il imprime "
"une ancienne version ou \"non reconnu\" / \"commande introuvable\", "
"installez {ph1} 24 LITRES:"
#. {ph0}: <span translate="no">export.js</span>
#: website/public/guides/browser/index.html:428
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · example source excerpt"
msgstr "{ph0} * exemple d'extrait de source"
#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <a href="../../examples/notes-web/export.js" download >
#. {ph3}: <span translate="no">export.js</span>
#. {ph4}: </a >
#. {ph5}: <a href="../../examples/notes-web/notes.json" download >
#. {ph6}: <span translate="no">notes.json</span>
#. {ph7}: </a >
#: website/public/guides/browser/index.html:446
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}Open the example{ph1} · {ph2}Download {ph3}{ph4} · {ph5}Download "
"{ph6}{ph7}"
msgstr ""
"{ph0}Ouvrez l'exemple{ph1} · {ph2}Télécharger {ph3}{ph4} · {ph5}Télécharger "
"{ph6}{ph7}"
#. {ph0}: <span translate="no">renderer.js</span>
#: website/public/guides/javascript/index.html:296
#: website/public/guides/javascript/index.html:312
#: website/public/guides/javascript/index.html:327
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} · example source"
msgstr "{ph0} * exemple de source"
#. {ph0}: <code>notes-example</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/guides/javascript/index.html:361
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Download the example and unzip it. The archive contains the complete {ph0} "
"folder. Analyze it with {ph1} and npm; Electron is not needed for this "
"example."
msgstr ""
"Téléchargez l'exemple et décompressez-le. L'archive contient l'intégralité "
"{ph0} dossier. Analysez-le avec {ph1} et npm; Electron n'est pas nécessaire "
"pour cet exemple."
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="get-started/">
#. {ph2}: </a>
#: website/public/index.html:276
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"First time, or missing {ph0} or a coding agent? {ph1}Follow the step-by-step"
" setup guide →{ph2}"
msgstr ""
"Première fois, ou manquant {ph0} ou un agent de codage? {ph1}Suivez le guide"
" de configuration étape par étape →{ph2}"
#. {ph0}: <strong >
#. {ph1}: <span translate="no">200 + 10%</span>
#. {ph2}: </strong >
#: website/public/index.html:300
#, python-brace-format
msgctxt "page:index.html"
msgid "One question: {ph0}why does Calculator give 220 for {ph1}?{ph2}"
msgstr ""
"Par exemple : {ph0}pourquoi la calculatrice donne-t-elle 220 pour {ph1} "
"?{ph2}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-analysis-prompt" >
#. {ph3}: <span translate="no">200 + 10%</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:488
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator. Why does {ph3} give "
"220?{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisation REA pour inspecter Windows Calculatrice. "
"Pourquoi {ph3} donne-t-il 220?{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/index.html:673
#, python-brace-format
msgctxt "page:index.html"
msgid "REA · loaded {ph0} · selected lines"
msgstr "REA * chargé {ph0} * lignes sélectionnées"
#. {ph0}: <strong>
#. {ph1}: <span translate="no">200 + 10%</span>
#. {ph2}: </strong>
#: website/public/index.html:777
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"We saw why {ph0}{ph1} gives 220.{ph2} Now let’s recover the rules for both +"
" and ×, and try them."
msgstr ""
"Nous avons vu pourquoi {ph0}{ph1} donne 220.{ph2} Récupérons maintenant les "
"règles pour + et×, et essayons-les."
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">calc.exe</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>ms-calculator:</code>
#. {ph7}: </span >
#: website/public/index.html:934
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA reads {ph1}{ph2}{ph3}It launches the Calculator "
"app{ph4}{ph5}The code opens {ph6}. The agent then selects the installed "
"app’s library.{ph7}"
msgstr ""
"{ph0}01 · REA lit {ph1}{ph2}{ph3}Il lance l'application "
"Calculatrice{ph4}{ph5}Le code s'ouvre {ph6}. L'agent sélectionne ensuite la "
"bibliothèque de l'application installée.{ph7}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="aegis-prompt" >
#. {ph3}: <span translate="no" >3.apk</span >
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/showcase/aegis/index.html:265
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect aegis-v3.4.{ph3}. Find how it generates "
"the six-digit login code, explain why it changes every 30 seconds, and "
"rebuild a small demo where I can change the time.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Utilisation REA pour inspecter aegis-v3.4.{ph3}. Découvrez "
"comment il génère le code de connexion à six chiffres, expliquez pourquoi il"
" change toutes les 30 secondes et reconstruisez une petite démo où je peux "
"changer l'heure.{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:329
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · API member"
msgstr "affichage des onglets/{ph0} * Membre de l'API"
#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:358
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · IPC helper"
msgstr "affichage des onglets/{ph0} * Assistant IPC"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:389
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · handler helper"
msgstr "principale/{ph0} * aide-manutentionnaire"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:417
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · clipboard receiver"
msgstr "principale/{ph0} * récepteur de presse-papiers"
#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "DXBALL.EXE"
#~ msgstr "DXBALL.EXE"
#~ msgctxt "page:examples/dino-lab/index.html"
#~ msgid "Reconstruction · dino-speed.js"
#~ msgstr "Reconstruction * dino-vitesse · j"
#~ msgctxt "page:faq/index.html"
#~ msgid ""
#~ "With Node.js and npm available, run setup, choose your coding agent and "
#~ "review the proposed changes."
#~ msgstr ""
#~ "Avec Node.js et npm disponibles, exécutez la configuration, choisissez votre"
#~ " agent de codage et examinez les modifications proposées."
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "A supplied example · Node.js and npm · Your coding agent"
#~ msgstr "Un exemple fourni · Node.js et npm · Votre agent de codage"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "Use a coding agent such as Claude Code, Codex or Cursor. You’ll need Node.js"
#~ " and npm; the {ph0}setup guide lists supported versions{ph1}."
#~ msgstr ""
#~ "Utilisez un agent de codage tel que Claude Code, Codex ou Cursor. Vous aurez"
#~ " besoin de Node.js et npm; le {ph0}le guide d'installation répertorie les "
#~ "versions prises en charge{ph1}."
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Page · renderer.js{ph1}{ph2}Export notes{ph3}{ph4}Calls {ph5}.{ph6}"
#~ msgstr ""
#~ "{ph0}Moteur de rendu de page·.j{ph1}{ph2}Exporter des notes{ph3}{ph4}Appels "
#~ "{ph5}.{ph6}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Bridge · preload.js{ph1}{ph2}{ph3}{ph4}{ph5}Sends a named message to "
#~ "the main process.{ph6}"
#~ msgstr ""
#~ "{ph0}Pont * précharge.j{ph1}{ph2}{ph3}{ph4}{ph5}Envoie un message nommé au "
#~ "processus principal.{ph6}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}Handler · main.js{ph1}{ph2}Write notes.csv{ph3}{ph4}Calls the formatter"
#~ " in {ph5} and writes the file.{ph6}"
#~ msgstr ""
#~ "{ph0}Gestionnaire * principal.j{ph1}{ph2}Écrivez des notes.fichier "
#~ "csv{ph3}{ph4}Appelle le formateur dans {ph5} et écrit le fichier.{ph6}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title Hello, "
#~ "\"REA\". Then run the example’s toCsv formatter with Node.js to check it. "
#~ "Show the prediction and actual output.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Prédire le CSV pour une note avec l'id 1 et le titre "
#~ "Bonjour,\"REA\". Ensuite, exécutez le formateur toCsv de l'exemple avec "
#~ "Node.js pour le vérifier. Afficher la prédiction et la sortie "
#~ "réelle.{ph3}{ph4}{ph5}"
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "The title stays in one quoted field; each quotation mark is doubled. This "
#~ "checks the formatter directly with Node.js."
#~ msgstr ""
#~ "Le titre reste dans un champ entre guillemets; chaque guillemet est doublé. "
#~ "Cela vérifie le formateur directement avec Node.js."
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "Node.js · CSV formatter"
#~ msgstr "Node.js · CSV formateur"
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "You'll need Node.js 22 (22.19+), 24 (24.11+) or 26+. npm comes with Node.js."
#~ msgstr ""
#~ "Vous aurez besoin de Node.js 22 (22.19+), 24 (24.11+) ou 26+. npm est livré "
#~ "avec Node.js."
#~ msgctxt "page:get-started/index.html"
#~ msgid "Don't have Node.js, or not sure?"
#~ msgstr "Vous n'avez pas Node.js, ou vous n'êtes pas sûr?"
#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
#~ "older version or \"not recognized\" / \"command not found\", install Node.js"
#~ " 24 LTS:"
#~ msgstr ""
#~ "Si {ph0} imprime v22. 19+, v24. 11 + ou v26+, vous êtes prêt. S'il imprime "
#~ "une ancienne version ou \"non reconnu\" / \"commande introuvable\", "
#~ "installez Node.js 24 LITRES:"
#, python-brace-format
#~ msgctxt "page:guides/browser/index.html"
#~ msgid ""
#~ "{ph0}Open the example{ph1} · {ph2}Download export.js{ph3} · {ph4}Download "
#~ "notes.json{ph5}"
#~ msgstr ""
#~ "{ph0}Ouvrez l'exemple{ph1} · {ph2}Télécharger l'exportation.j{ph3} · "
#~ "{ph4}Télécharger les notes.au format json{ph5}"
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid ""
#~ "Download the example and unzip it. The archive contains the complete {ph0} "
#~ "folder. Analyze it with Node.js and npm; Electron is not needed for this "
#~ "example."
#~ msgstr ""
#~ "Téléchargez l'exemple et décompressez-le. L'archive contient l'intégralité "
#~ "{ph0} dossier. Analysez-le avec Node.js et npm; Electron n'est pas "
#~ "nécessaire pour cet exemple."
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "First time, or missing Node.js or a coding agent? {ph0}Follow the step-by-"
#~ "step setup guide →{ph1}"
#~ msgstr ""
#~ "Première fois, ou manquant Node.js ou un agent de codage? {ph0}Suivez le "
#~ "guide de configuration étape par étape →{ph1}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for 200 + 10%?{ph1}"
#~ msgstr ""
#~ "Par exemple : {ph0}pourquoi la calculatrice donne-t-elle 220 pour 200 + 10% "
#~ "?{ph1}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator. Why does 200 + 10% "
#~ "give 220?{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Utilisation REA pour inspecter Windows Calculatrice. "
#~ "Pourquoi 200 + 10% donne-t-il 220?{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We saw why {ph0}200 + 10% gives 220.{ph1} Now let’s recover the rules for "
#~ "both + and ×, and try them."
#~ msgstr ""
#~ "Nous avons vu pourquoi {ph0}200 + 10% donne 220.{ph1} Récupérons maintenant "
#~ "les règles pour + et×, et essayons-les."
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}01 · REA reads calc.exe{ph1}{ph2}It launches the Calculator "
#~ "app{ph3}{ph4}The code opens {ph5}. The agent then selects the installed "
#~ "app’s library.{ph6}"
#~ msgstr ""
#~ "{ph0}01 · REA lit calc.exe{ph1}{ph2}Il lance l'application "
#~ "Calculatrice{ph3}{ph4}Le code s'ouvre {ph5}. L'agent sélectionne ensuite la "
#~ "bibliothèque de l'application installée.{ph6}"
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect aegis-v3.4.3.apk. Find how it generates "
#~ "the six-digit login code, explain why it changes every 30 seconds, and "
#~ "rebuild a small demo where I can change the time.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Utilisation REA pour inspecter aegis-v3.4.3.apk. Découvrez "
#~ "comment il génère le code de connexion à six chiffres, expliquez pourquoi il"
#~ " change toutes les 30 secondes et reconstruisez une petite démo où je peux "
#~ "changer l'heure.{ph3}{ph4}{ph5}"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · API member"
#~ msgstr "onglet afficher/précharger.membre de l'API js · "
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · IPC helper"
#~ msgstr "onglet afficher/précharger.aide js * CIB"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · handler helper"
#~ msgstr "page d'accueil / index.assistant de gestion js · "
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · clipboard receiver"
#~ msgstr "page d'accueil / index.récepteur de presse-papiers js · "
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "main.js · lines 8–12"
#~ msgstr "principale.js * lignes 8 à 12"
#~ msgctxt "page:guides/browser/index.html"
#~ msgid "export.js · example source excerpt"
#~ msgstr "exporter.js * exemple d'extrait de source"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "renderer.js · example source"
#~ msgstr "moteur de rendu.js · exemple de source"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "preload.js · example source"
#~ msgstr "précharge.js · exemple de source"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "main.js · example source"
#~ msgstr "principale.js · exemple de source"
#~ msgctxt "page:index.html"
#~ msgid "REA · loaded index.js · selected lines"
#~ msgstr "REA * index chargé.js * lignes sélectionnées"
#, python-brace-format
#~ msgctxt "page:faq/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to analyze /absolute/path/to/app and explain how it "
#~ "exports data. Show the relevant code and source locations.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Utilisation REA pour analyser /absolute / path / to / app et"
#~ " expliquer comment il exporte les données. Affichez les emplacements de code"
#~ " et de source pertinents.{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Installer REA et connectez-le à cet agent de codage en "
#~ "utilisant npx rea-agents@dernière configuration. Montrez - moi le plan "
#~ "d'installation pour approbation, puis vérifiez "
#~ "l'installation.{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Download https://rea.tools/examples/notes-example.zip into a"
#~ " new example folder and unpack it. Use REA to find what happens when I click"
#~ " Export notes. Show where notes.csv is written, which fields it contains, "
#~ "and the relevant files and lines.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Télécharger https://rea.tools/examples/notes-example.zip "
#~ "dans un nouveau dossier d'exemple et décompressez-le. Utilisation REA pour "
#~ "savoir ce qui se passe lorsque je clique sur Exporter des notes. Afficher où"
#~ " les notes.csv est écrit, quels champs il contient, ainsi que les fichiers "
#~ "et lignes pertinents.{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Installer REA et connectez-le à cet agent de codage en "
#~ "utilisant npx rea-agents@dernière configuration. Montrez - moi le plan "
#~ "d'installation pour approbation, puis vérifiez "
#~ "l'installation.{ph3}{ph4}{ph5}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using npx "
#~ "rea-agents@latest setup. Show me the setup plan for approval, then verify "
#~ "the installation.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Installer REA et connectez-le à cet agent de codage en "
#~ "utilisant npx rea-agents@dernière configuration. Montrez - moi le plan "
#~ "d'installation pour approbation, puis vérifiez "
#~ "l'installation.{ph3}{ph4}{ph5}"
#~ msgctxt "page:index.html"
#~ msgid "0x5b"
#~ msgstr "0x5b"
#~ msgctxt "page:index.html"
#~ msgid "0x5c"
#~ msgstr "0x5c"
#~ msgctxt "page:index.html"
#~ msgid "0x64"
#~ msgstr "0x64"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Use REA to inspect https://rea.tools/. Clone this website "
#~ "for me.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}Utilisation REA pour inspecter https://rea.tools/. Clonez ce"
#~ " site pour moi.{ph3}{ph4}{ph5}"
#~ msgctxt "figure:ctf-mask-equation.svg"
#~ msgid "code[21] = 55"
#~ msgstr "référence[21] = 55"
#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "0x00406400"
#~ msgstr "numéro 00406400"
#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "× pan_scale"
#~ msgstr "× échelle panoramique"
#, python-brace-format
#~ msgctxt "shared"
#~ msgid "{ph0}REA{ph1}{ph2}Reverse Engineer Anything{ph3}"
#~ msgstr "{ph0} REA {ph1} {ph2}Désosser n'importe quoi{ph3}"
#, python-brace-format
#~ msgctxt "shared"
#~ msgid ""
#~ "{ph0}Showcases{ph1} {ph2}Blog{ph3} {ph4}Get started{ph5} {ph6}Guides{ph7} "
#~ "{ph8}FAQ{ph9}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "shared"
#~ msgid ""
#~ "{ph0}Source{ph1}{ph2}MIT license{ph3}{ph4}Join the community{ph5}{ph6}Follow"
#~ " us on X{ph7}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:blog/touhou-reconstruction/index.html"
#~ msgid "{ph0}TH08{ph1}{ph2}→{ph3}{ph4}TH095{ph5}{ph6}→{ph7}{ph8}TH04{ph9}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:examples/dino-lab/index.html"
#~ msgid "{ph0}REA · selected script source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0}main.js · lines 8–12{ph1}{ph2}Source{ph3}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0}Expected formatter output{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/browser/index.html"
#~ msgid "{ph0}export.js · example source excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Instructions{ph1} {ph2}→{ph3} {ph4}Caller{ph5} {ph6}→{ph7} "
#~ "{ph8}Constants{ph9} {ph10}→{ph11} {ph12}C function{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Button{ph1} {ph2}→{ph3} {ph4}Preload API{ph5} {ph6}→{ph7} {ph8}IPC{ph9}"
#~ " {ph10}→{ph11} {ph12}CSV file{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Your click{ph1} {ph2}→{ph3} {ph4}Captured request{ph5} {ph6}→{ph7} "
#~ "{ph8}Export script{ph9}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}renderer.js · example source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}preload.js · example source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}main.js · example source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}REA result · summary.ipc excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA instruction excerpt · 0x406409{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA caller excerpt · 0x411f5b{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA byte results · interpreted as little-endian doubles{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}Recovered C · excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}See how REA works ↓{ph1} {ph2}Setup guide{ph3} {ph4}Showcases →{ph5}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA · loaded index.js · selected lines{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Selected settings from the inspected script{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Readable summary of the % handler{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA · selected original instructions{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Operator IDs · Microsoft’s source{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Join the community{ph1} {ph2}Follow @reatools on X{ph3}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA → agent · selected results{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA → agent · methods and callers{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA · selected decompiled Java{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}Readable summary · agent's interpretation{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA · generateOTP, complete body{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid ""
#~ "{ph0}Download Aegis APK{ph1}{ph2}Download Android analysis provider{ph3}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · selected results{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · selected instructions{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Agent → REA · read_bytes{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · seventh entries{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Original executable · SHA-256{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Download the original challenge{ph1}{ph2}Download solver{ph3}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA result · pseudocode excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Agent → REA · {ph1}{ph2}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA → agent · instruction excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA → agent · caller excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Agent → REA · two {ph1} requests{ph2}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA byte results · decoded as doubles{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Start with your own target{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}APK{ph1} {ph2}→{ph3} {ph4}Generating code{ph5} {ph6}→{ph7} "
#~ "{ph8}Recovered rule{ph9} {ph10}→{ph11} {ph12}Adjustable clock{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Binary{ph1} {ph2}→{ph3} {ph4}Checking code{ph5} {ph6}→{ph7} "
#~ "{ph8}Equations{ph9} {ph10}→{ph11} {ph12}Correct!{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Executable{ph1} {ph2}→{ph3} {ph4}REA findings{ph5} {ph6}→{ph7} "
#~ "{ph8}Recovered C{ph9} {ph10}→{ph11} {ph12}Validation{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Packaged app{ph1} {ph2}→{ph3} {ph4}Exposed API{ph5} {ph6}→{ph7} "
#~ "{ph8}IPC wrappers{ph9} {ph10}→{ph11} {ph12}Clipboard{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Original DOS code{ph1} {ph2}→{ph3} {ph4}REA instructions{ph5} "
#~ "{ph6}→{ph7} {ph8}Angle calculation{ph9} {ph10}→{ph11} {ph12}Bullet "
#~ "ring{ph13}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Exposed page API{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Renderer IPC call{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Sent to the system clipboard{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Saved locally by Notion{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Markdown input{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Structured parser output · excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Analyze your own app{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}REA → agent · selected fields{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Agent → REA · {ph1}{ph2}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}REA → agent · instruction excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Same function result · aim excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Corresponding maintained C++{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Ring macro · TH04 branch, excerpt{ph1}"
#~ msgstr ""
#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Angle and velocity · source excerpt{ph1}"
#~ msgstr ""