13541 lines
490 KiB
Plaintext
13541 lines
490 KiB
Plaintext
#
|
||
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\<you>\AppData\Local\Programs\<App>\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/<App>.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/<App>/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 ""
|