#
msgid ""
msgstr ""
"Project-Id-Version: REA website\n"
"Language: es\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:107
msgctxt "page:blog/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/blog/index.html:199
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "{ph0}Home{ph1} / Blog"
msgstr "{ph0}Inicio{ph1} / Blog"

#: website/public/blog/index.html:200
msgctxt "page:blog/index.html"
msgid "Blog."
msgstr "Blog."

#: website/public/blog/index.html:201
msgctxt "page:blog/index.html"
msgid "Thoughts on reverse engineering."
msgstr "Reflexiones sobre ingeniería inversa."

#. {ph0}: <br />
#: website/public/blog/index.html:219
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Game reconstruction{ph0}Essay"
msgstr "Reconstrucción del juego{ph0}Ensayo"

#: website/public/blog/index.html:221
msgctxt "page:blog/index.html"
msgid "The industrial revolution in reverse engineering"
msgstr "La revolución industrial en ingeniería inversa"

#: website/public/blog/index.html:222
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 ""
"Lo que la reconstrucción y reconstrucción manual de TH08, TH095 y TH04 me "
"enseñó sobre los agentes, la verificación y el conocimiento que componen los"
" proyectos."

#: website/public/blog/index.html:212 website/public/blog/index.html:227
msgctxt "page:blog/index.html"
msgid "Read the article"
msgstr "Leer el artículo"

#: website/public/blog/index.html:230
msgctxt "page:blog/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "Por N0zoM1z0 * 10 octubre 2026"

#. {ph0}: <span aria-hidden="true">
#. {ph1}: </span>
#: website/public/blog/index.html:250
#: website/public/blog/reverse-engineering-models/index.html:889
#: website/public/blog/touhou-reconstruction/index.html:1086
#: website/public/contributors/index.html:1137
#: website/public/examples/dino-lab/index.html:481
#: website/public/faq/index.html:579
#: website/public/first-investigation/index.html:540
#: website/public/get-started/index.html:1823
#: website/public/guides/browser/index.html:513
#: website/public/guides/index.html:288
#: website/public/guides/javascript/index.html:509
#: website/public/guides/native/index.html:515 website/public/index.html:1228
#: website/public/showcase/aegis/index.html:814
#: website/public/showcase/ctf/index.html:783
#: website/public/showcase/dx-ball/index.html:791
#: website/public/showcase/index.html:323
#: website/public/showcase/notion/index.html:637
#: website/public/showcase/th04/index.html:806
#, python-brace-format
msgctxt "shared"
msgid "{ph0}↑{ph1} Top"
msgstr "{ph0}↑{ph1} Arriba"

#: website/public/blog/index.html:6
msgctxt "page:blog/index.html"
msgid "REA Blog — Thoughts on Reverse Engineering"
msgstr "Blog REA-Reflexiones sobre Ingeniería inversa"

#: 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 ""
"Reflexiones sobre ingeniería inversa, aprovechando la experiencia práctica "
"con REA y agentes de IA."

#: website/public/blog/index.html:79 website/public/blog/index.html:92
#: website/public/blog/reverse-engineering-models/index.html:79
#: website/public/blog/reverse-engineering-models/index.html:92
#: website/public/blog/touhou-reconstruction/index.html:79
#: website/public/blog/touhou-reconstruction/index.html:92
#: website/public/contributors/index.html:79
#: website/public/contributors/index.html:92
#: website/public/examples/dino-lab/index.html:79
#: website/public/examples/dino-lab/index.html:92
#: website/public/faq/index.html:79 website/public/faq/index.html:92
#: website/public/first-investigation/index.html:79
#: website/public/first-investigation/index.html:92
#: website/public/get-started/index.html:79
#: website/public/get-started/index.html:92
#: website/public/guides/browser/index.html:79
#: website/public/guides/browser/index.html:92
#: website/public/guides/index.html:79 website/public/guides/index.html:92
#: website/public/guides/javascript/index.html:79
#: website/public/guides/javascript/index.html:92
#: website/public/guides/native/index.html:79
#: website/public/guides/native/index.html:92 website/public/index.html:79
#: website/public/index.html:92 website/public/showcase/aegis/index.html:79
#: website/public/showcase/aegis/index.html:92
#: website/public/showcase/ctf/index.html:79
#: website/public/showcase/ctf/index.html:92
#: website/public/showcase/dx-ball/index.html:79
#: website/public/showcase/dx-ball/index.html:92
#: website/public/showcase/index.html:79 website/public/showcase/index.html:92
#: website/public/showcase/notion/index.html:79
#: website/public/showcase/notion/index.html:92
#: website/public/showcase/th04/index.html:79
#: website/public/showcase/th04/index.html:92
msgctxt "shared"
msgid ""
"REA — Find out how software works. Reverse engineering with your coding "
"agent."
msgstr ""
"REA — Descubra cómo funciona el software. Ingeniería inversa con su agente "
"de codificación."

#: website/public/blog/index.html:112
#: website/public/blog/reverse-engineering-models/index.html:112
#: website/public/blog/touhou-reconstruction/index.html:112
#: website/public/contributors/index.html:113
#: 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 "REA home"
msgstr "Inicio de REA"

#: website/public/blog/index.html:116
#: website/public/blog/reverse-engineering-models/index.html:116
#: website/public/blog/touhou-reconstruction/index.html:116
#: website/public/contributors/index.html:117
#: website/public/examples/dino-lab/index.html:117
#: website/public/faq/index.html:116
#: website/public/first-investigation/index.html:116
#: website/public/get-started/index.html:116
#: website/public/guides/browser/index.html:116
#: website/public/guides/index.html:116
#: website/public/guides/javascript/index.html:116
#: website/public/guides/native/index.html:116 website/public/index.html:118
#: website/public/showcase/aegis/index.html:117
#: website/public/showcase/ctf/index.html:116
#: website/public/showcase/dx-ball/index.html:116
#: website/public/showcase/index.html:116
#: website/public/showcase/notion/index.html:116
#: website/public/showcase/th04/index.html:116
msgctxt "shared"
msgid "Main navigation"
msgstr "Navegación principal"

#: website/public/blog/index.html:135
#: website/public/blog/reverse-engineering-models/index.html:135
#: website/public/blog/touhou-reconstruction/index.html:135
#: website/public/contributors/index.html:136
#: website/public/examples/dino-lab/index.html:136
#: website/public/faq/index.html:135
#: website/public/first-investigation/index.html:135
#: website/public/get-started/index.html:135
#: website/public/guides/browser/index.html:135
#: website/public/guides/index.html:135
#: website/public/guides/javascript/index.html:135
#: website/public/guides/native/index.html:135 website/public/index.html:137
#: website/public/showcase/aegis/index.html:136
#: website/public/showcase/ctf/index.html:135
#: website/public/showcase/dx-ball/index.html:135
#: website/public/showcase/index.html:135
#: website/public/showcase/notion/index.html:135
#: website/public/showcase/th04/index.html:135
msgctxt "shared"
msgid "REA on GitHub"
msgstr "REA en GitHub"

#: website/public/blog/index.html:155
#: website/public/blog/reverse-engineering-models/index.html:155
#: website/public/blog/touhou-reconstruction/index.html:155
#: website/public/contributors/index.html:156
#: website/public/examples/dino-lab/index.html:156
#: website/public/faq/index.html:155
#: website/public/first-investigation/index.html:155
#: website/public/get-started/index.html:155
#: website/public/guides/browser/index.html:155
#: website/public/guides/index.html:155
#: website/public/guides/javascript/index.html:155
#: website/public/guides/native/index.html:155 website/public/index.html:157
#: website/public/showcase/aegis/index.html:156
#: website/public/showcase/ctf/index.html:155
#: website/public/showcase/dx-ball/index.html:155
#: website/public/showcase/index.html:155
#: website/public/showcase/notion/index.html:155
#: website/public/showcase/th04/index.html:155
msgctxt "shared"
msgid "Join REA on Discord"
msgstr "Únete a REA en Discord"

#: website/public/blog/index.html:174
#: website/public/blog/reverse-engineering-models/index.html:174
#: website/public/blog/touhou-reconstruction/index.html:174
#: website/public/contributors/index.html:175
#: website/public/examples/dino-lab/index.html:175
#: website/public/faq/index.html:174
#: website/public/first-investigation/index.html:174
#: website/public/get-started/index.html:174
#: website/public/guides/browser/index.html:174
#: website/public/guides/index.html:174
#: website/public/guides/javascript/index.html:174
#: website/public/guides/native/index.html:174 website/public/index.html:176
#: website/public/showcase/aegis/index.html:175
#: website/public/showcase/ctf/index.html:174
#: website/public/showcase/dx-ball/index.html:174
#: website/public/showcase/index.html:174
#: website/public/showcase/notion/index.html:174
#: website/public/showcase/th04/index.html:174
msgctxt "shared"
msgid "Follow REA on X"
msgstr "Sigue a REA en X"

#: website/public/blog/index.html:250
msgctxt "page:blog/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/blog/touhou-reconstruction/index.html:107
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:199
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Touhou reconstruction"
msgstr "{ph0}Inicio{ph1} / {ph2}Blog{ph3} / Reconstrucción Touhou"

#: website/public/blog/touhou-reconstruction/index.html:203
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Essay · Touhou reconstruction"
msgstr "Ensayo * Reconstrucción de Touhou"

#: website/public/blog/touhou-reconstruction/index.html:204
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The industrial revolution in reverse engineering."
msgstr "La revolución industrial en ingeniería inversa."

#: website/public/blog/touhou-reconstruction/index.html:205
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "Por N0zoM1z0 * 10 octubre 2026"

#: website/public/blog/touhou-reconstruction/index.html:207
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Takeaway"
msgstr "Ideas clave"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:209
#, 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}Dar autonomía a los agentes sobre la investigación.{ph1} Establezca un "
"objetivo claro y criterios de aceptación, luego deje que el agente decida "
"qué probar a continuación."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:214
#, 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}Usa el repositorio y Git como memoria de trabajo.{ph1} Mantén el "
"razonamiento con el código. Los puntos de control de Git permiten que la "
"próxima sesión continúe después de que finalice la conversación."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:219
#, 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}Deje que la evidencia decida lo que reclama.{ph1} Una explicación "
"confiable aún necesita ser probada. \"Desconocido\" es una respuesta válida "
"cuando la evidencia está incompleta."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:224
#, 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}Pruebe también la referencia de verificación (oracle).{ph1} Pruebe los "
"casos que debería rechazar. Si pasa por alto un error, revise los resultados"
" anteriores que dependían de él."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:229
#, 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}Estamos en los primeros días de la revolución industrial de ER.{ph1} "
"Los métodos aún están tomando forma. Queda mucho por explorar."

#: website/public/blog/touhou-reconstruction/index.html:241
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "How experience compounds"
msgstr "Cómo se compone la experiencia"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:242
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Human direction{ph1} · Goal and acceptance criteria"
msgstr "{ph0}Dirección humana{ph1} * Objetivo y criterios de aceptación"

#: website/public/blog/touhou-reconstruction/index.html:330
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Autonomy"
msgstr "Autonomía"

#: website/public/blog/touhou-reconstruction/index.html:331
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Agent"
msgstr "Agente"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:332
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Choose an experiment.{ph0}Propose a hypothesis."
msgstr "Elige un experimento.{ph0}Propón una hipótesis."

#: website/public/blog/touhou-reconstruction/index.html:335
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Verification"
msgstr "Verificación"

#: website/public/blog/touhou-reconstruction/index.html:336
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Oracle"
msgstr "Referencia de validación"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:337
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Test against a{ph0}concrete reference."
msgstr "Prueba contra a{ph0}referencia concreta."

#: website/public/blog/touhou-reconstruction/index.html:340
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Repository"
msgstr "Repositorio"

#: website/public/blog/touhou-reconstruction/index.html:341
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Working memory"
msgstr "Memoria de trabajo"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:342
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Code, evidence,{ph0}checks and lessons."
msgstr "Código, evidencia,{ph0}cheques y lecciones."

#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:344
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Mismatch{ph0}{ph1}Revise the hypothesis{ph2}"
msgstr "Desajuste{ph0}{ph1}Revisar la hipótesis{ph2}"

#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:347
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "A better{ph0}{ph1}starting point{ph2}"
msgstr "Una mejor{ph0}{ph1}punto de partida{ph2}"

#: website/public/blog/touhou-reconstruction/index.html:350
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reuse"
msgstr "Reutilización"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:351
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Pass{ph1} · Keep the result and its evidence"
msgstr "{ph0}Pase{ph1} * Conservar el resultado y su evidencia"

#: website/public/blog/touhou-reconstruction/index.html:363
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 ""
"Cada proyecto deja al siguiente con un mejor punto de partida. Eso incluye "
"arreglar los cheques cuando descubrimos una brecha."

#: website/public/blog/touhou-reconstruction/index.html:370
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "In this article"
msgstr "En este artículo"

#. {ph0}: <a href="#august">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:372
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}August 2026{ph1}"
msgstr "{ph0}Agosto de 2026{ph1}"

#. {ph0}: <a href="#th08">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:373
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH08: the continuation{ph1}"
msgstr "{ph0} TH08: la continuación{ph1}"

#. {ph0}: <a href="#different-approaches">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:374
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Two approaches{ph1}"
msgstr "{ph0}Dos enfoques{ph1}"

#. {ph0}: <a href="#th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:375
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH095: compounding{ph1}"
msgstr "{ph0} TH095: composición{ph1}"

#. {ph0}: <a href="#th04">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:376
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH04: across architectures{ph1}"
msgstr "{ph0} TH04: entre arquitecturas{ph1}"

#. {ph0}: <a href="#semantic-reconstruction">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:377
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}From exact to readable{ph1}"
msgstr "{ph0}De exacto a legible{ph1}"

#. {ph0}: <a href="#industrial-shift">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:380
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}The industrial shift{ph1}"
msgstr "{ph0}El cambio industrial{ph1}"

#. {ph0}: <a href="#possibilities">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:381
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}What becomes possible{ph1}"
msgstr "{ph0}Lo que se hace posible{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:386
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What changed in August 2026"
msgstr "Qué cambió en agosto de 2026"

#: website/public/blog/touhou-reconstruction/index.html:387
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 ""
"Antes de este trabajo, había hecho mucha ingeniería inversa manual. "
"Inspeccionaba una función hasta que tenía una explicación, luego probaba esa"
" explicación con el programa. Llegar más lejos significaba dedicar más "
"tiempo a la siguiente función. También significaba mantener una imagen cada "
"vez más grande en mi cabeza."

#: website/public/blog/touhou-reconstruction/index.html:394
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 mayor parte de mi trabajo de RE es en juegos. Los reconstruyo para que su"
" comportamiento pueda entenderse y eventualmente llevarse a un puerto de "
"software o un mod. Esa es la experiencia detrás de este artículo. El método "
"puede ser útil en otros lugares, pero cada campo necesita establecer qué "
"puede verificar con una referencia confiable."

#: website/public/blog/touhou-reconstruction/index.html:401
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 agosto de 2026, comencé a explorar seriamente la realidad aumentada "
"impulsada por agentes. Quería ver hasta dónde podía llegar un agente con "
"acceso al programa y las herramientas de desarrollo ordinarias. La "
"reconstrucción de Touhou me dio un proyecto sustancial en el que "
"averiguarlo."

#: website/public/blog/touhou-reconstruction/index.html:407
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 ""
"El progreso inicial fue sorprendente. Una investigación podría seguir "
"avanzando sin que yo eligiera cada paso individual. Una comparación fallida "
"podría enviar al agente a otra persona que llama. Podría escribir un pequeño"
" diagnóstico y usar el resultado para decidir qué probar a continuación. "
"Darle esa libertad marcó la diferencia: pude dedicar más atención a la "
"dirección del proyecto y a si sus controles eran confiables."

#: website/public/blog/touhou-reconstruction/index.html:416
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 ""
"El ritmo llamó mi atención primero. Entonces comencé a preguntarme qué "
"sobreviviría más allá del proyecto actual. ¿Se beneficiaría el próximo juego"
" de todo lo que acabábamos de aprender?"

#: website/public/blog/touhou-reconstruction/index.html:423
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH08: building on human work"
msgstr "TH08: construyendo sobre el trabajo humano"

#. {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:424
#, 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}, Noche Imperecedera, comenzó como una continuación de {ph2}"
" Reconstrucción de GensokyoClub{ph3}. Su fuente pública me dio una base "
"sustancial. Vino con el conocimiento de la construcción y una historia de "
"contribuciones que conservé en la continuación."

#: website/public/blog/touhou-reconstruction/index.html:433
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 ""
"El historial importado finaliza en el punto de control público del 10 de "
"agosto. Mi continuación independiente comenzó el 13 de agosto. Para el 19 de"
" agosto, el libro mayor registró la fuente de las 1.107 funciones de juego "
"identificadas."

#: website/public/blog/touhou-reconstruction/index.html:438
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 puerto de reconstrucción Linux jugable se comprometió el 24 de agosto, "
"aproximadamente once días después de que comenzara la continuación. Siguió "
"una edición web. La versión nativa Linux de 64 bits llegó el 30 de agosto."

#: website/public/blog/touhou-reconstruction/index.html:443
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 ""
"Lo que me llamó la atención fue que el trabajo había llegado a un programa "
"que la gente podía ejecutar. Llegar allí requería seguir problemas más allá "
"de una función individual. Incluso cuando dos funciones parecían correctas "
"de forma aislada, accidentalmente podían usar copias separadas de estado que"
" deberían haberse compartido."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:450
#, 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 ""
"Esto hizo que las verificaciones de referencias fueran fundamentales para el"
" trabajo. Yo los llamo {ph0}referencias de verificación (oráculos){ph1}. Una"
" comparación de código puede decirnos si una función reconstruida reproduce "
"las instrucciones originales. Una verificación en tiempo de ejecución puede "
"indicarnos si una ruta ejercitada alcanza el estado esperado. El agente "
"propone una explicación y la prueba; un desajuste le da algo específico para"
" investigar."

#: website/public/blog/touhou-reconstruction/index.html:458
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "An exact match with the wrong constant"
msgstr "Una coincidencia exacta con la constante incorrecta"

#: website/public/blog/touhou-reconstruction/index.html:459
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 ""
"Una referencia de verificación (oracle)es un software que alguien escribió."
"  TH08 me dio un claro recordatorio de cuánto puede depender de ese "
"software."

#. {ph0}: <code>0.0</code>
#. {ph1}: <code>128.0</code>
#: website/public/blog/touhou-reconstruction/index.html:463
#, 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 septiembre, un error reportado por un puerto de conmutador descendente "
"condujo de nuevo a la recopilación automática de elementos. La fuente "
"reconstruida verificó la potencia del jugador contra {ph0}. El original "
"usado {ph1}, el umbral de potencia máxima."

#: website/public/blog/touhou-reconstruction/index.html:469
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 potencia normal no es negativa, por lo que la comprobación de potencia "
"reconstruida siempre se cumplió de manera efectiva. Por encima de la línea "
"de recolección, el juego podría atraer elementos sin requerir la máxima "
"potencia. Las otras excepciones en la condición eran correctas. Esta "
"constante cambió el comportamiento."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:476
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Yet the function had already passed the exact comparison.{ph1}"
msgstr ""
"{ph0}Sin embargo, la función ya había pasado la comparación exacta.{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:482
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 ""
"Una reconstrucción puede colocar una constante en una dirección diferente. "
"La herramienta de comparación explicó eso ajustando las direcciones en las "
"instrucciones compiladas antes de compararlas con las originales. Pero nunca"
" verificó el valor de coma flotante almacenado en la dirección a la que se "
"hace referencia."

#. {ph0}: <code>128.0</code>
#. {ph1}: <code>0.0</code>
#: website/public/blog/touhou-reconstruction/index.html:489
#, 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 ""
"Eso dejó un agujero en el cheque. Podría apuntar la instrucción reconstruida"
" a la del original {ph0} mientras que la fuente todavía dijo {ph1}. Los "
"bytes de instrucción coincidieron. La fuente significaba algo diferente."

#. {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:495
#, 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 ""
"El {ph0}Corrección del 2 de septiembre{ph1} corrigió la fuente e hizo que la"
" comparación verificara los bytes reales de la constante referenciada. A "
"{ph2}auditoría más amplia{ph3} luego examinó 1.548 referencias constantes de"
" coma flotante. Encontró otras doce referencias incorrectas en cinco "
"funciones aceptadas."

#: website/public/blog/touhou-reconstruction/index.html:506
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 comparación ahora verifica cada una de esas constantes de coma flotante. "
"Sus pruebas incluyen valores deliberadamente incorrectos para asegurarse de "
"que sean rechazados. También tuvimos que revisar los resultados que habían "
"pasado la verificación más débil."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:511
#, 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 referencia de verificación (oracle) también necesitaba "
"reconstrucción.{ph1} Repararlo era parte de reparar el juego."

#: website/public/blog/touhou-reconstruction/index.html:515
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 ""
"Eso importa cuando el equipo es principalmente una persona que trabaja con "
"agentes. No puedo inspeccionar personalmente cada línea que producen, por lo"
" que gran parte de mi confianza se basa en sus controles. El punto ciego de "
"una referencia de verificación compartida (oracle) puede afectar muchas "
"investigaciones antes de que me dé cuenta. Tengo que entender qué verifica "
"realmente el verificador y probarlo con los casos que deberían fallar."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:523
#, 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 ""
"A medida que continuaba el trabajo, esas comprobaciones pasaron a formar "
"parte del repositorio. También lo hicieron los motivos de los cambios de "
"origen y las notas que permitían que una sesión posterior retomara donde se "
"detuvo una anterior. {ph0}El repositorio de código fuente se estaba "
"convirtiendo en la memoria de trabajo del proyecto.{ph1}"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:532
#, 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 lote exitoso nos dio tanto el código recuperado como un mejor "
"entorno para el siguiente lote.{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:540
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Two different ideas of reconstruction"
msgstr "Dos ideas diferentes de reconstrucción"

#. {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:541
#, 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}LÉAME público{ph1} explicita su desacuerdo con este "
"tipo de trabajo. El aviso anuncia que se realizarán desarrollos adicionales "
"de forma privada hasta su finalización. Un pasaje dice:"

#: website/public/blog/touhou-reconstruction/index.html:552
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 ""
"El aumento de estafadores (descompilaciones y puertos de IA) en este espacio"
" que se aleja de nuestro trabajo pinta una mala imagen para futuros "
"esfuerzos de descompilación…"

#: website/public/blog/touhou-reconstruction/index.html:558
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 ""
"El aviso también describe el costo psicológico para los mantenedores. Su "
"política de contribución excluye las solicitudes de extracción producidas "
"principalmente con IA. Han dedicado su tiempo libre a un trabajo difícil, y "
"ese trabajo ayudó a que mi continuación fuera posible. Respeto el esfuerzo "
"que hay detrás. El desacuerdo que quiero discutir es sobre cómo debe "
"proceder la reconstrucción y cómo debe juzgarse una contribución."

#: website/public/blog/touhou-reconstruction/index.html:567
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 ""
"En el flujo de trabajo manual que conocía, desarrollar una comprensión de "
"una función y reconstruirla generalmente recaía en la misma persona. Un "
"proyecto dependía en gran medida de la experiencia de esa persona. La "
"confianza en el colaborador importaba porque gran parte del razonamiento "
"ocurría mientras trabajaban."

#: website/public/blog/touhou-reconstruction/index.html:574
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 ""
"Los proyectos existentes ya preservan el conocimiento en su fuente y crean "
"herramientas. Lo que cambió para mí fue que un agente podía usar ese "
"conocimiento para llevar a cabo la próxima investigación por su cuenta."

#: website/public/blog/touhou-reconstruction/index.html:579
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 ""
"En mi continuación, decido el objetivo y el estándar para aceptar un "
"resultado. El agente tiene amplia libertad para investigar. Su "
"reconstrucción propuesta tiene que sobrevivir a los controles pertinentes. "
"Quiero que otra persona pueda examinar por qué elegimos una implementación, "
"incluso si un agente hizo la mayor parte del trabajo."

#: website/public/blog/touhou-reconstruction/index.html:586
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 ""
"Esta puede ser una transición difícil. Años de trabajo cuidadoso pueden "
"convertirse en la base para una continuación que avanza mucho más rápido. "
"Eso plantea preguntas reales sobre el crédito. También cambia lo que los "
"mantenedores necesitan saber antes de aceptar una contribución."

#: website/public/blog/touhou-reconstruction/index.html:592
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 ""
"La analogía industrial me ayuda a pensar en esto. En un oficio, gran parte "
"del proceso depende de la habilidad de la persona que lo lleva a cabo. La "
"maquinaria cambia donde se necesita esa habilidad. Alguien todavía tiene que"
" diseñar el proceso y reconocer cuándo su resultado es incorrecto. "
"Diferentes comunidades pueden elegir cuánto de ese cambio quieren asumir."

#: website/public/blog/touhou-reconstruction/index.html:600
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 ""
"Mi elección es continuar abiertamente, con el trabajo heredado acreditado y "
"su historia preservada. Quiero que el nuevo trabajo sea revisable. Eso nos "
"da una forma de preguntarnos hasta dónde puede llegar este enfoque y de "
"aprender de lo que sale mal en el camino."

#. {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:606
#, 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 ""
"Fuente: GensokyoClub ' s {ph0}Aviso léame{ph1}, revisado el 10 de octubre de"
" 2026, y su {ph2}política de contribuciones{ph3}. La cita es un extracto "
"abreviado.  TH08 ' s {ph4}créditos y procedencia{ph5} registre el límite de "
"continuación."

#: website/public/blog/touhou-reconstruction/index.html:624
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH095: experience starts compounding"
msgstr "TH095: la experiencia comienza a agravarse"

#. {ph0}: <a href="https://github.com/N0zoM1z0/th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:625
#, 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}, Dispara la bala, hizo que el valor de esa experiencia "
"fuera mucho más fácil de ver. Su repositorio comenzó el 29 de agosto con "
"cero funciones de juego confirmadas en el libro mayor. Todavía teníamos que "
"aprender el juego. Pero ya sabíamos mucho más sobre cómo comenzar una "
"reconstrucción y cómo mantenerla en marcha."

#: website/public/blog/touhou-reconstruction/index.html:633
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 ""
"Para el 7 de septiembre, las 697 funciones de juego identificadas tenían "
"fuente. Para el 8 de septiembre, 696 habían sido aceptadas como "
"comparaciones exactas. Todo el programa enlazado el 9 de septiembre. La "
"reconstrucción del Windows i386 se marcó como jugable el 10 de septiembre, "
"aproximadamente doce días después de la inicialización."

#: website/public/blog/touhou-reconstruction/index.html:640
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 ""
"Encontré esto más emocionante que la velocidad del primer proyecto. Un "
"objetivo nuevo podría beneficiarse del trabajo realizado en otro juego. La "
"experiencia ya estaba presente en las herramientas y en la forma en que se "
"organizó el proyecto."

#: website/public/blog/touhou-reconstruction/index.html:646
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 ""
"Por ejemplo, TH08 nos había enseñado a prestar atención al programa "
"ensamblado temprano. Si varias funciones recuperadas dependen del mismo "
"estado, sus comparaciones aisladas dejan abierta una pregunta importante. "
"Necesitamos verlos trabajar juntos. Esa lección ayudó a dar forma a la forma"
" en que abordamos la compilación de todo el programa de TH095."

#: website/public/blog/touhou-reconstruction/index.html:653
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 ""
"Una lección que se queda en mi cabeza es útil mientras estoy allí. Una vez "
"que se convierte en una verificación de que se puede ejecutar otra sesión, "
"puede seguir ayudándome después de que haya seguido adelante. El siguiente "
"agente puede usar el resultado sin repetir la investigación que lo condujo."

#: website/public/blog/touhou-reconstruction/index.html:659
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 ""
"El error constante de coma flotante también pertenece a esa memoria. Explica"
" por qué verificar una referencia también requiere verificar los datos "
"detrás de ella. Mantener esa corrección con el código ayuda a que los "
"proyectos posteriores eviten heredar el punto ciego del cheque anterior."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:665
#, 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}El método se convierte en parte del material de partida para el próximo"
" juego.{ph1} Podemos dedicar más esfuerzo del próximo proyecto a lo que "
"realmente es nuevo sobre su objetivo."

#: website/public/blog/touhou-reconstruction/index.html:673
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 ""
"El mismo beneficio está disponible para las personas que se unan más tarde. "
"Pueden inspeccionar una decisión y volver a ejecutar su verificación antes "
"de continuar con el trabajo. No tienen que reconstruir todo el historial del"
" proyecto para descubrir por qué la fuente se ve de la manera en que lo "
"hace."

#: website/public/blog/touhou-reconstruction/index.html:681
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH04: the workflow survives a different architecture"
msgstr "TH04: el flujo de trabajo sobrevive a una arquitectura diferente"

#. {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:682
#, 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}, Lotus Land Story, llevó este trabajo a la era PC-98 DOS. "
"El objetivo ahora era un entorno de 16 bits con cuatro programas "
"cooperantes. Comprender su comportamiento de hardware requirió evidencia "
"diferente de los juegos Windows. Existentes {ph2}Trabajo ReC98{ph3} también "
"nos dio valiosos conocimientos y material de origen aquí."

#: website/public/blog/touhou-reconstruction/index.html:691
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 reconstrucción de DOS ahora está funcionando. En mis pruebas manuales, "
"jugué rutas normales completas a través de sus finales y verifiqué las "
"salvaciones. El trabajo actual es un puerto nativo de 64 bits. Establecer "
"una versión de DOS que funcione primero le da a ese puerto una referencia."

#: website/public/blog/touhou-reconstruction/index.html:697
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 ""
"La arquitectura cambió lo que necesitábamos investigar. También cambió el "
"compilador y el tiempo de ejecución con los que verificamos nuestro trabajo."
" Pero el agente aún podría seguir una pregunta hasta un resultado y dejar "
"que ese resultado guíe el próximo experimento."

#: website/public/blog/touhou-reconstruction/index.html:703
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 ""
"Considere la transición del juego a un final. Necesitamos saber qué estado "
"cruza esa frontera y qué programa es responsable de ello. Eso es algo que "
"podemos investigar contra el producto DOS. Una vez que las pruebas y los "
"controles estén disponibles, un agente puede resolver la pregunta de la "
"misma manera que lo hizo con un título Windows."

#: website/public/blog/touhou-reconstruction/index.html:711
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 ""
"Es por eso que TH04 es importante para el argumento. Un cambio sustancial en"
" la plataforma no nos obligó a empezar de nuevo con una nueva forma de "
"trabajar. La arquitectura definió el problema; el flujo de trabajo aún nos "
"dio una forma de resolverlo."

#: website/public/blog/touhou-reconstruction/index.html:717
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 ""
"Para el puerto de 64 bits, ahora podemos examinar la nueva implementación "
"con el comportamiento ya recuperado en DOS. El conocimiento de la "
"reconstrucción le da al puerto algo sobre lo que construir."

#. {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:722
#, 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 ""
"Estado del proyecto al 10 de octubre de 2026: {ph0}Reconstrucción de DOS y "
"pruebas manuales{ph1} · {ph2}puerto de 64 bits{ph3}. El puerto permanece en "
"desarrollo."

#: website/public/blog/touhou-reconstruction/index.html:735
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "From exact code to readable code"
msgstr "Del código exacto al código legible"

#: website/public/blog/touhou-reconstruction/index.html:736
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Once a reconstruction works, I want someone else to be able to understand "
"it."
msgstr ""
"Una vez que una reconstrucción funciona, quiero que alguien más pueda "
"entenderla."

#: website/public/blog/touhou-reconstruction/index.html:740
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 ""
"Para mí, el ensamblaje y las compensaciones brutas pueden parecer viejos "
"amigos. Me doy cuenta de que esta es una definición un poco inusual de "
"\"legible.\"La mayoría de la gente preferiría seguir la lógica del juego sin"
" tener en mente el diseño de la memoria del ejecutable."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:746
#, 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 ""
"Ahí es donde {ph0}reconstrucción semántica{ph1} entra. Un campo recuperado "
"aún puede conocerse principalmente por su desplazamiento. Seguimos cómo lo "
"usa el juego hasta que podamos explicar su función. Entonces podemos darle "
"un nombre significativo y un tipo que se ajuste a la evidencia. Mantenemos "
"el razonamiento con la fuente para que la siguiente persona pueda ver de "
"dónde vino esa interpretación."

#: website/public/blog/touhou-reconstruction/index.html:754
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 ""
"Esto se vuelve especialmente importante para un puerto de software. Una "
"dirección absoluta me dice dónde vivía algo en el antiguo ejecutable. Le da "
"a una implementación de 64 bits poca ayuda para decidir qué objeto debería "
"poseer ese estado. Para mover el comportamiento de manera segura, "
"necesitamos recuperar la relación detrás del antiguo acceso a la memoria."

#: website/public/blog/touhou-reconstruction/index.html:761
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The order I now use is:"
msgstr "El orden que uso ahora es:"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:763
#, 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}Recupere una línea de base exacta.{ph1} Compila las piezas "
"reconstruidas con el compilador histórico. Compare el código y los datos "
"relevantes con el ejecutable original. Registre las diferencias no resueltas"
" para que la siguiente fase tenga un punto de partida claro."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:770
#, 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}Compílalo y reprodúcelo en la plataforma original.{ph1} Vincule esas "
"piezas al programa real utilizando la arquitectura y el compilador "
"originales. Ejercita rutas de juego importantes. Aquí es donde podemos "
"encontrar problemas con el estado compartido o la inicialización que una "
"comparación de funciones aisladas pasó por alto."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:777
#, 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}Reconstruye la semántica contra ambas referencias.{ph1} Tome una parte "
"coherente del juego a la vez y establezca qué significa su fuente "
"recuperada. Mejore su representación al tiempo que conserva las "
"comparaciones exactas y la construcción histórica jugable."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:786
#, 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}Haz el puerto moderno.{ph1} Mueva el comportamiento establecido al "
"nuevo entorno, como una compilación nativa de 64 bits. El juego de "
"plataformas original reconstruido sigue siendo una referencia para comparar "
"cómo se comporta el puerto."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:793
#, 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 construcción jugable de la segunda etapa se convierte en un {ph0}segunda "
"referencia de verificación (oracle){ph1} durante la tercera. La primera "
"referencia de verificación (oracle) verifica si nuestra fuente modificada "
"aún reproduce el código y los datos originales relevantes. El segundo "
"verifica que el programa reconstruido aún se construya y se comporte "
"correctamente a lo largo de las rutas que ejercitamos."

#: website/public/blog/touhou-reconstruction/index.html:801
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 ""
"Detectan diferentes errores. Un cambio de tipo puede alterar las "
"instrucciones generadas. Un cambio de propietario puede dejar dos partes del"
" juego usando diferentes copias de estado. Mantener ambos controles "
"disponibles le da al agente una falla concreta para investigar antes de "
"llevar a cabo una refactorización adicional."

#: website/public/blog/touhou-reconstruction/index.html:808
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 nombre necesita evidencia propia. Una comparación exacta no puede "
"decirnos si un campo realmente significa \"tiempo de "
"invulnerabilidad\".\"Tenemos que establecer eso a partir de cómo el juego lo"
" escribe y lo usa. Si el significado sigue siendo incierto, un nombre "
"neutral es más útil para el próximo lector que una suposición segura."

#. {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:815
#, 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 ""
"Aprendimos este orden a través de los proyectos.  TH08 ya tenía puertos "
"reproducibles antes de algunas de sus auditorías históricas posteriores de "
"la plataforma. Eso hizo que ciertos defectos fueran más difíciles de ver. El"
" {ph0}Flujo de trabajo actual de la fábrica{ph1} coloca la compilación de la"
" plataforma original en primer lugar, de modo que el trabajo semántico pueda"
" usarla como referencia antes de que comience la migración."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:826
#, 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 reconstrucción exacta nos da una referencia. La reconstrucción "
"semántica hace utilizable el conocimiento recuperado.{ph1} Entonces, un "
"puerto puede basarse en ambos."

#: website/public/blog/touhou-reconstruction/index.html:835
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What makes this an industrial shift"
msgstr "Qué hace que esto sea un cambio industrial"

#: website/public/blog/touhou-reconstruction/index.html:836
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 ""
"Estos proyectos cambiaron donde dediqué mi atención. Una vez que los agentes"
" pudieron llevar adelante gran parte de una investigación, mejorar su "
"entorno de trabajo se convirtió en una de las cosas más útiles que pude "
"hacer. Una herramienta mejor podría ayudar con cada función posterior que la"
" necesitara."

#: website/public/blog/touhou-reconstruction/index.html:843
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 ""
"La autonomía importa aquí. El siguiente paso útil a menudo se aclara solo "
"después de un experimento fallido. Un agente necesita suficiente libertad "
"para seguir ese resultado en algún lugar inesperado. Si tiene que esperar a "
"que prescriba cada paso, gran parte del trabajo permanece atado a mi "
"atención."

#: website/public/blog/touhou-reconstruction/index.html:850
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 ""
"Espero que el agente haga hipótesis equivocadas. Lo que importa es si "
"podemos probarlos y aprender del resultado. Una verificación fallida debería"
" ayudarlo a comprender el error lo suficientemente bien como para intentarlo"
" de nuevo. Todavía tengo que decidir si la evidencia acumulada respalda un "
"hito del proyecto."

#: website/public/blog/touhou-reconstruction/index.html:857
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 le da al agente acceso a herramientas de análisis. Una pregunta sobre la"
" persona que llama a una función puede llevar directamente a inspeccionar a "
"esa persona que llama. El proyecto de reconstrucción proporciona el "
"compilador y sus propias comprobaciones de referencia. El agente puede "
"usarlos para probar la fuente que propone y ver dónde se sostiene su "
"explicación."

#: website/public/blog/touhou-reconstruction/index.html:864
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 ""
"El error TH08 muestra por qué esas comprobaciones merecen su propia atención"
" de ingeniería. Cuando se usa la misma comparación en cientos de funciones, "
"una brecha en ella puede extenderse mucho más allá de un error en una "
"implementación. Probar el verificador mejora la retroalimentación disponible"
" para todo ese trabajo posterior."

#. {ph0}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:871
#, 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 ""
"La analogía industrial tiene un ejemplo histórico útil aquí. Boulton y Watt "
"introdujeron un {ph0}indicador de máquina de vapor en 1796{ph1} para ayudar "
"a ajustar las válvulas del motor. Una versión de registro trazó la presión a"
" través de la carrera del pistón. Hizo que el comportamiento interno del "
"motor estuviera disponible para su inspección. Nuestras herramientas de "
"comparación tienen un propósito similar: nos permiten examinar qué está "
"haciendo la maquinaria mientras la mejoramos."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:884
#, 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}Estamos en las primeras etapas de este cambio industrial.{ph1} Gran "
"parte de la infraestructura aún es inmadura. Los agentes pueden moverse más "
"rápido de lo que nuestras verificaciones fueron diseñadas para soportar, por"
" lo que el proceso debe desarrollarse junto con ellos. Cuando encontramos un"
" defecto en una herramienta compartida, tenemos que repararlo y revisar los "
"resultados afectados. El próximo proyecto puede heredar una herramienta más "
"sólida."

#: website/public/blog/touhou-reconstruction/index.html:894
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 ""
"También hay un límite práctico para cualquier conversación. Terminará antes "
"de que se termine una gran reconstrucción. El repositorio de código fuente "
"tiene que hacer posible que continúe otra sesión sin perder el motivo de la "
"última decisión."

#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-factory"
#. >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:900
#, 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 ""
"El {ph0}Fábrica de Reconstrucción de Touhou{ph1} surgió de esa necesidad. "
"Brinda a los proyectos una forma compartida de llevar adelante sus controles"
" y lecciones. Trabajar en un juego puede mejorar las condiciones iniciales "
"de otro."

#: website/public/blog/touhou-reconstruction/index.html:910
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 ""
"Eso es lo que hace que la analogía industrial tenga sentido para mí. La "
"experiencia comienza a formar parte de herramientas que otros pueden usar. "
"Mejorar esas herramientas cambia cuánto puede hacer la próxima persona, o el"
" próximo agente."

#: website/public/blog/touhou-reconstruction/index.html:918
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The projects we can now consider"
msgstr "Los proyectos que ahora podemos considerar"

#: website/public/blog/touhou-reconstruction/index.html:919
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 ""
"El ritmo importa porque cambia la decisión de comenzar. Un juego podría ser "
"fascinante para la ingeniería inversa y aún así exigir más de mi propia "
"atención de la que podría prestarle de manera realista. Muchos proyectos se "
"quedarían en ideas."

#: website/public/blog/touhou-reconstruction/index.html:925
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 ""
"Ahora puedo ver una manera de mantener ese proyecto en marcha a través de "
"repetidas investigaciones. Obtener una reconstrucción funcional hace que un "
"puerto de software sea más práctico. Recuperar semántica legible hace que "
"sea más fácil para otra persona explorar un mod. El esfuerzo realizado para "
"comprender el juego puede seguir dando sus frutos después de que se ejecute "
"la primera versión."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:932
#, 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 ""
"Ahora miro un programa desconocido y pregunto: {ph0}¿qué acceso, "
"retroalimentación y conocimiento acumulado le permitirían a un agente "
"trabajar en esto de manera confiable?{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:939
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 ""
"Esa pregunta me hace considerar proyectos que antes habría dejado solos. "
"Cada uno puede mejorar la forma en que nos acercamos al siguiente. Quiero "
"seguir explorando hasta dónde nos puede llevar eso."

#: website/public/blog/touhou-reconstruction/index.html:947
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Project milestones and sources"
msgstr "Hitos y fuentes del proyecto"

#: website/public/blog/touhou-reconstruction/index.html:948
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 ""
"Las fechas describen los puntos de control registrados del proyecto, "
"cotejados con el historial público de GitHub el 10 de octubre de 2026. El "
"tiempo transcurrido es el tiempo del calendario entre confirmaciones. La "
"presencia de la fuente, las comparaciones exactas, una compilación y un "
"resultado en tiempo de ejecución nombran cada uno un hito diferente."

#. {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:956
#, 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}Continuación del 13 de agosto{ph3}, {ph4}Libro mayor "
"de fuentes del 19 de agosto{ph5}, {ph6}24 de agosto Puerto Linux{ph7}, "
"{ph8}Edición web del 26 de agosto{ph9}, y {ph10}Lanzamiento de Linux de 64 "
"bits el 30 de agosto{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:979
#, 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}Libro mayor inicial del 29 de agosto{ph3}, "
"{ph4}Libro mayor de fuentes del 7 de septiembre{ph5}, {ph6}Comparaciones del"
" 8 de septiembre{ph7}, {ph8}Vinculación del 9 de septiembre{ph9}, y {ph10}10"
" de septiembre jugable-registro de compilación{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:1002
#, 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}Traspaso del 10 de octubre{ph3} registra la "
"reconstrucción de DOS en funcionamiento, la prueba completa de ruta normal "
"del mantenedor y la fase actual de 64 bits."

#. {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:1011
#, 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} Corrección de referencia de verificación TH08 (oracle) :{ph1} {ph2}el "
"error de recopilación automática reportado{ph3}, {ph4}la corrección de "
"origen y comparación{ph5}, y {ph6}la auditoría constante completa de coma "
"flotante{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:1025
#, 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}Reconstrucción semántica:{ph1} {ph2} Libro de jugadas de legibilidad de"
" TH08{ph3} y {ph4}orden de fase de la fábrica y dos rutas de "
"validación{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:1037
#, 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}Historia industrial:{ph1} {ph2}registro de indicadores de motores de "
"vapor del Grupo de Museos de Ciencias{ph3} describe la introducción de 1796 "
"y el mecanismo de registro de presión."

#. {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:1046
#, 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étodo:{ph1} la Fábrica {ph2}autonomía del agente{ph3} y "
"{ph4}conocimiento entre juegos{ph5} los documentos conservan los principios "
"de trabajo y las lecciones."

#. {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:1061
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}More articles{ph1} · {ph2}Explore a TH04 investigation{ph3}"
msgstr ""
"{ph0}Más artículos{ph1} · {ph2}Explore una investigación sobre 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 "Revolución Industrial de la Ingeniería Inversa-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 reflexiona sobre la ingeniería inversa manual, la reconstrucción de"
" Touhou con agentes de IA y cómo el conocimiento se compone en TH08 , TH095 "
"y PC-98 TH04 ."

#: website/public/blog/touhou-reconstruction/index.html:355
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Experience carried between projects"
msgstr "Experiencia transmitida entre proyectos"

#: website/public/blog/touhou-reconstruction/index.html:369
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/blog/touhou-reconstruction/index.html:384
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Touhou reconstruction essay"
msgstr "Ensayo de reconstrucción de Touhou"

#: website/public/blog/touhou-reconstruction/index.html:1086
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/examples/dino-lab/index.html:108
msgctxt "page:examples/dino-lab/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/examples/dino-lab/index.html:200
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Home{ph1}{ph2}/{ph3}Dinosaur speed lab"
msgstr "{ph0}Inicio{ph1}{ph2}/{ph3}Laboratorio de velocidad de dinosaurios"

#: website/public/examples/dino-lab/index.html:203
msgctxt "page:examples/dino-lab/index.html"
msgid "Inspect → rebuild → change"
msgstr "Inspeccionar → reconstruir → cambiar"

#: website/public/examples/dino-lab/index.html:204
msgctxt "page:examples/dino-lab/index.html"
msgid "Rebuild the dinosaur’s speed rule."
msgstr "Reconstruye la regla de velocidad del dinosaurio."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <mark class="prose-highlight">
#. {ph3}: </mark>
#: website/public/examples/dino-lab/index.html:205
#, 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 ""
"Para recrear la aceleración del juego, primero encuentra la regla que "
"controla su velocidad. {ph0} REA devolvió el script en ejecución;{ph1} "
"usamos su regla para construir este minijuego con {ph2}velocidad "
"ajustable.{ph3}"

#: website/public/examples/dino-lab/index.html:214
#: website/public/examples/dino-lab/index.html:213
msgctxt "page:examples/dino-lab/index.html"
msgid "On this page"
msgstr "En esta página"

#. {ph0}: <a href="#play">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:216
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Play and change the speed{ph1}"
msgstr "{ph0}Juega y cambia la velocidad{ph1}"

#. {ph0}: <a href="#rule">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:217
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Read the recovered rule{ph1}"
msgstr "{ph0}Lea la regla recuperada{ph1}"

#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:218
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}Compruebe la reconstrucción{ph1}"

#. {ph0}: <a href="#inspect">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:219
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Try the analysis{ph1}"
msgstr "{ph0}Pruebe el análisis{ph1}"

#: website/public/examples/dino-lab/index.html:224
msgctxt "page:examples/dino-lab/index.html"
msgid "Play and change the speed"
msgstr "Juega y cambia la velocidad"

#: website/public/examples/dino-lab/index.html:225
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 ""
"Presiona Play, luego salta sobre el cactus. Mueva el control deslizante de "
"velocidad para probar un juego más lento o más rápido; cambia a una "
"velocidad fija. Seleccione la regla recuperada para comenzar en 6 y acelerar"
" gradualmente nuevamente."

#: website/public/examples/dino-lab/index.html:231
msgctxt "page:examples/dino-lab/index.html"
msgid "Play the reconstruction"
msgstr "Juega a la reconstrucción"

#: website/public/examples/dino-lab/index.html:263
msgctxt "page:examples/dino-lab/index.html"
msgid "Play"
msgstr "Jugar"

#: website/public/examples/dino-lab/index.html:266
msgctxt "page:examples/dino-lab/index.html"
msgid "Jump ↑"
msgstr "Saltar ↑"

#: website/public/examples/dino-lab/index.html:267
msgctxt "page:examples/dino-lab/index.html"
msgid "Restart"
msgstr "Reiniciar"

#: website/public/examples/dino-lab/index.html:270
msgctxt "page:examples/dino-lab/index.html"
msgid "Speed"
msgstr "Velocidad"

#: website/public/examples/dino-lab/index.html:280
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the recovered acceleration rule"
msgstr "Utilice la regla de aceleración recuperada"

#: website/public/examples/dino-lab/index.html:284
msgctxt "page:examples/dino-lab/index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "Regla original: comience en 6, luego aumente hacia 13."

#: website/public/examples/dino-lab/index.html:287
msgctxt "page:examples/dino-lab/index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr ""
"Mueva el control deslizante para establecer su propia velocidad. Espaciar o "
"saltar despeja un cactus."

#: website/public/examples/dino-lab/index.html:292
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr ""
"Habilite JavaScript para reproducir la reconstrucción. El código y la "
"explicación anteriores siguen siendo legibles."

#: website/public/examples/dino-lab/index.html:300
msgctxt "page:examples/dino-lab/index.html"
msgid "Read the script REA returned"
msgstr "Lea el script REA devuelto"

#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#. {ph2}: <code>index.js</code>
#: website/public/examples/dino-lab/index.html:301
#, 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 ""
"Inspeccionamos {ph0}edición de navegador derivada de Chromium de wayou{ph1} "
"con REA . Devolvió lo cargado {ph2}, incluyendo esta rama en la función de "
"actualización del juego:"

#. {ph0}: <code>SPEED: 6</code>
#. {ph1}: <code>ACCELERATION: 0.001</code>
#. {ph2}: <code>MAX_SPEED: 13</code>
#: website/public/examples/dino-lab/index.html:317
#, 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 ""
"Los ajustes son {ph0}, {ph1} y {ph2}. El juego ejecuta esta rama en una "
"actualización sin colisión."

#: website/public/examples/dino-lab/index.html:322
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the same rule in the new game"
msgstr "Usa la misma regla en el nuevo juego"

#: website/public/examples/dino-lab/index.html:328
#: website/public/examples/dino-lab/index.html:427
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy"
msgstr "Copiar"

#: website/public/examples/dino-lab/index.html:341
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 ""
"El minijuego utiliza esta función para la aceleración automática. Mover el "
"control deslizante proporciona una velocidad fija en su lugar. El dibujo, la"
" física de salto y las comprobaciones de colisión de rectángulos son un "
"nuevo código para este juego de enseñanza; su simulación avanza a 60 "
"actualizaciones por segundo."

#. {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:347
#, 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}Descargar la regla de velocidad{ph1} · {ph2}Leer el código del "
"juego{ph3}"

#: website/public/examples/dino-lab/index.html:355
msgctxt "page:examples/dino-lab/index.html"
msgid "Check the reconstruction"
msgstr "Compruebe la reconstrucción"

#: website/public/examples/dino-lab/index.html:356
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 ""
"Llamamos desactivada la función de actualización del juego original con "
"obstáculos y programación automática. Compare esas velocidades registradas "
"con una repetición de la regla recuperada."

#: website/public/examples/dino-lab/index.html:365
msgctxt "page:examples/dino-lab/index.html"
msgid "Updates"
msgstr "Actualizaciones"

#: website/public/examples/dino-lab/index.html:366
msgctxt "page:examples/dino-lab/index.html"
msgid "Original game"
msgstr "Juego original"

#: website/public/examples/dino-lab/index.html:367
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstructed rule"
msgstr "Regla reconstruida"

#: website/public/examples/dino-lab/index.html:394
msgctxt "page:examples/dino-lab/index.html"
msgid "Run the speed check"
msgstr "Ejecute la verificación de velocidad"

#: website/public/examples/dino-lab/index.html:397
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 ""
"Valores redondeados a tres decimales. La rama verifica antes de agregar, por"
" lo que el incremento final puede tomar una velocidad justo por encima de "
"13."

#: website/public/examples/dino-lab/index.html:403
msgctxt "page:examples/dino-lab/index.html"
msgid "Try the analysis yourself"
msgstr "Pruebe el análisis usted mismo"

#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:405
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Set up REA{ph1} with your coding agent."
msgstr "{ph0}Configurar REA {ph1} con su agente de codificación."

#. {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:409
#, 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 ""
"Siga el {ph0}pasos de conexión del navegador{ph1}, usando {ph2} como la URL "
"de la página."

#: website/public/examples/dino-lab/index.html:416
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Give your agent the page URL and local debugging endpoint, then copy this "
"prompt."
msgstr ""
"Proporcione a su agente la URL de la página y el punto final de depuración "
"local, luego copie este mensaje."

#. {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:423
#, 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}Su agente de codificación"

#. {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:436
#, 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}Utilice REA para inspeccionar este juego de dinosaurios. "
"¿Por qué se vuelve más rápido? Muestre la regla de velocidad, luego cree una"
" versión pequeña con una velocidad ajustable.{ph3}{ph4}{ph5}"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/examples/dino-lab/index.html:445
#, 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 ""
"Solicite un seguimiento: {ph0}\"¿Dónde se calcula la altura del salto? "
"Agregue un control de altura de salto a la nueva versión.”{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:452
#, 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 ""
"Fuente: {ph0}código de velocidad inspeccionado{ph1}, Autores Chromium. "
"{ph2}Derechos de autor y licencia BSD{ph3}.  REA 4.1.0 inspeccionó la "
"edición HTTP en ejecución en 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 "Juego de Dinosaurios Chrome: Reconstruye su Regla de Velocidad-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 ""
"Lee la regla de velocidad del juego de dinosaurios con REA, reconstrúyela, "
"luego cambia la velocidad y juega."

#: website/public/examples/dino-lab/index.html:222
msgctxt "page:examples/dino-lab/index.html"
msgid "Dinosaur speed reconstruction"
msgstr "Reconstrucción de la velocidad de los dinosaurios"

#: website/public/examples/dino-lab/index.html:253
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr ""
"Minijuego de dinosaurios. Usa el botón de salto o presiona la barra "
"espaciadora mientras el juego está enfocado."

#: website/public/examples/dino-lab/index.html:328
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy reconstructed speed rule"
msgstr "Copiar regla de velocidad reconstruida"

#: website/public/examples/dino-lab/index.html:427
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "Copie el mensaje de análisis de dinosaurios"

#: website/public/examples/dino-lab/index.html:481
msgctxt "page:examples/dino-lab/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/faq/index.html:107
msgctxt "page:faq/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/faq/index.html:199
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Home{ph1} / FAQ"
msgstr "{ph0}Inicio{ph1} / Preguntas frecuentes"

#: website/public/faq/index.html:200
msgctxt "page:faq/index.html"
msgid "REA FAQ."
msgstr "REA PREGUNTAS frecuentes."

#: website/public/faq/index.html:201
msgctxt "page:faq/index.html"
msgid "Setup, updates, analysis and troubleshooting."
msgstr "Configuración, actualizaciones, análisis y solución de problemas."

#: website/public/faq/index.html:205
msgctxt "page:faq/index.html"
msgid "Topics"
msgstr "Temas"

#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/faq/index.html:207
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Setup and updates{ph1}"
msgstr "{ph0}Configuración y actualizaciones{ph1}"

#. {ph0}: <a href="#analysis">
#. {ph1}: </a>
#: website/public/faq/index.html:208
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Analysis{ph1}"
msgstr "{ph0}Análisis{ph1}"

#. {ph0}: <a href="#troubleshooting">
#. {ph1}: </a>
#: website/public/faq/index.html:209
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Troubleshooting{ph1}"
msgstr "{ph0}Solución de Problemas{ph1}"

#. {ph0}: <a href="#sharing">
#. {ph1}: </a>
#: website/public/faq/index.html:210
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Data and sharing{ph1}"
msgstr "{ph0}Datos e intercambio{ph1}"

#: website/public/faq/index.html:219
msgctxt "page:faq/index.html"
msgid "Setup and updates"
msgstr "Configuración y actualizaciones"

#: website/public/faq/index.html:222
msgctxt "page:faq/index.html"
msgid "How do I install REA?"
msgstr "¿Cómo instalo REA ?"

#: website/public/faq/index.html:230
msgctxt "page:faq/index.html"
msgid "Terminal · agent setup"
msgstr "Terminal * configuración del agente"

#: website/public/faq/index.html:231 website/public/faq/index.html:272
#: website/public/faq/index.html:290 website/public/faq/index.html:374
#: website/public/faq/index.html:421 website/public/faq/index.html:461
#: website/public/faq/index.html:481
msgctxt "page:faq/index.html"
msgid "Copy"
msgstr "Copiar"

# Reviewed for readable setup and analysis terminology.
#. {ph0}: <a href="../get-started/">
#. {ph1}: </a>
#: website/public/faq/index.html:242
#, 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 configuración registra la conexión MCP de REA e instala la skill de "
"investigación correspondiente. Al terminar, reinicia tu agente y dale la "
"ruta del archivo y una pregunta. La {ph0}guía de configuración{ph1} explica "
"los requisitos y los pasos de tu primer análisis."

#: website/public/faq/index.html:251
msgctxt "page:faq/index.html"
msgid "Which coding agents can use REA?"
msgstr "¿Qué agentes de codificación pueden usar REA ?"

#: website/public/faq/index.html:252
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 ""
"Cualquier agente que admita servidores MCP locales. La configuración incluye"
" escritorio Claude Code , Claude, Codex , Cursor , Gemini CLI , Windsurf , "
"Devin , OpenCode , Antigravity , GitHub Copilot CLI , Command Code , Grok "
"Build , OMP y VS Code . El conector de Grok Bot se agrega desde su chat."

#. {ph0}: <a href="../get-started/#agent">
#. {ph1}: </a>
#: website/public/faq/index.html:259
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Connect your coding agent{ph1}."
msgstr "{ph0}Conecte a su agente de codificación{ph1}."

#: website/public/faq/index.html:264
msgctxt "page:faq/index.html"
msgid "How do I update REA?"
msgstr "¿Cómo actualizo REA ?"

#: website/public/faq/index.html:265
msgctxt "page:faq/index.html"
msgid ""
"REA releases frequently, including bug fixes. If you installed the CLI with "
"npm:"
msgstr ""
"REA se publica con frecuencia, incluidas correcciones de errores. Si instaló"
" el CLI con npm :"

#: website/public/faq/index.html:271
msgctxt "page:faq/index.html"
msgid "Terminal · installed CLI"
msgstr "Terminal * instalado CLI"

#. {ph0}: <code>npx</code>
#: website/public/faq/index.html:283
#, 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 ""
"Siga el comando de actualización de configuración que imprime la "
"actualización. Si configura su agente a través de {ph0}, corre:"

#: website/public/faq/index.html:289
msgctxt "page:faq/index.html"
msgid "Terminal · refresh agent setup"
msgstr "Terminal * actualizar la configuración del agente"

# Reviewed for readable setup and analysis terminology.
#. {ph0}: <code>npx -y rea-agents@latest</code>
#: website/public/faq/index.html:301
#, 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 ""
"Revisa los cambios y reinicia tu agente. Su conexión a REA usa una versión "
"fija del paquete, así que debes volver a ejecutar la configuración para usar"
" la nueva versión. Para un comando puntual de CLI, añade el comando después "
"de {ph0}."

#: website/public/faq/index.html:309
msgctxt "page:faq/index.html"
msgid "Is installing the skill from skills.sh enough?"
msgstr "Está instalando la habilidad desde skills.sh ¿suficiente?"

#. {ph0}: <a href="#install">
#. {ph1}: </a>
#: website/public/faq/index.html:312
#, 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 habilidad le da instrucciones de investigación a su agente. Corre {ph0} "
"Configuración de REA{ph1} para conectar el servidor MCP e instalar la "
"habilidad correspondiente, reinicie su agente para que pueda llamar a las "
"herramientas."

#: website/public/faq/index.html:323
msgctxt "page:faq/index.html"
msgid "Analysis"
msgstr "Análisis"

#: website/public/faq/index.html:326
msgctxt "page:faq/index.html"
msgid "What can I analyze with REA?"
msgstr "¿Qué puedo analizar con REA ?"

#: website/public/faq/index.html:327
msgctxt "page:faq/index.html"
msgid "Start with the kind of software you have:"
msgstr "Comience con el tipo de software que tiene:"

#. {ph0}: <a href="../guides/native/" >
#. {ph1}: </a >
#: website/public/faq/index.html:329
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Native executables and libraries{ph1}: functions, assembly, pseudocode "
"and references."
msgstr ""
"{ph0}Bibliotecas y ejecutables nativos{ph1}: funciones, ensamblado, "
"pseudocódigo y referencias."

#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/faq/index.html:334
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}JavaScript and Electron apps{ph1}: modules, imports, IPC and source "
"locations."
msgstr ""
"{ph0} Aplicaciones JavaScript y Electron{ph1}: módulos, importaciones, IPC y"
" ubicaciones de origen."

#. {ph0}: <a href="../guides/browser/">
#. {ph1}: </a>
#: website/public/faq/index.html:339
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Browser pages{ph1}: scripts, requests and runtime observations."
msgstr ""
"{ph0}Páginas del navegador{ph1}: scripts, solicitudes y observaciones en "
"tiempo de ejecución."

#. {ph0}: <a href="../showcase/">
#. {ph1}: </a>
#: website/public/faq/index.html:344
#, 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 también tiene flujos de trabajo para ensamblados administrados, APK de "
"Android, firmware y recursos empaquetados. {ph0}Ver los estudios de "
"caso{ph1} para investigaciones trabajadas."

#: website/public/faq/index.html:352
msgctxt "page:faq/index.html"
msgid "Do I need Hopper, Ghidra or IDA?"
msgstr "¿Necesito Hopper, Ghidra o IDA ?"

#: website/public/faq/index.html:353
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 ""
"El análisis profundo de programas de código máquina utiliza uno de ellos. La"
" inspección estática JavaScript y. NET funciona con los archivos "
"suministrados y no necesita un motor de análisis de programas de código "
"máquina."

#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a>
#: website/public/faq/index.html:358
#, 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 ""
"Conecte su instalación existente de Ghidra o IDA, o deje que el programa de "
"instalación detecte Hopper y proponga una instalación. Su anfitrión y "
"destino determinan qué proveedor se puede utilizar. {ph0}Configurar el "
"análisis de programas de código máquina{ph1}."

#: website/public/faq/index.html:366
msgctxt "page:faq/index.html"
msgid "Can I use REA without a coding agent?"
msgstr "¿Puedo usar REA sin un agente de codificación?"

#: website/public/faq/index.html:367
msgctxt "page:faq/index.html"
msgid ""
"Yes. The CLI uses the same analysis workflows. For a local JavaScript or "
"Electron app:"
msgstr ""
"Sí. El CLI utiliza los mismos flujos de trabajo de análisis. Para una "
"aplicación JavaScript o Electron local:"

#: website/public/faq/index.html:373
msgctxt "page:faq/index.html"
msgid "Terminal · static application analysis"
msgstr "Terminal * análisis estático de aplicaciones"

#. {ph0}: <a href="../get-started/#terminal">
#. {ph1}: </a>
#: website/public/faq/index.html:386
#, 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 ""
"Reemplace la ruta con una carpeta de aplicación extraída o un archivo ASAR. "
"{ph0}Utilice el CLI {ph1} para opciones de instalación."

# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:393
msgctxt "page:faq/index.html"
msgid "What code does REA return?"
msgstr "¿Qué código devuelve REA?"

# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:394
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 ""
"El análisis nativo devuelve ensamblador y pseudocódigo, junto con llamadas a"
" funciones, referencias y constantes relevantes. El análisis de JavaScript "
"devuelve módulos, sus relaciones y las ubicaciones en el código fuente."

#. {ph0}: <a href="../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#. {ph2}: <a href="../showcase/ctf/">
#. {ph3}: </a>
#: website/public/faq/index.html:399
#, 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 ""
"Su agente usa estos hallazgos para explicar el comportamiento o escribir y "
"probar una implementación. El {ph0} Cálculo de DX-Ball{ph1} y "
"{ph2}Comprobador de banderas CTF{ph3} muestre cómo funciona ese proceso."

#: website/public/faq/index.html:410
msgctxt "page:faq/index.html"
msgid "What should I ask my agent?"
msgstr "¿Qué le pregunto a mi agente?"

#: website/public/faq/index.html:411
msgctxt "page:faq/index.html"
msgid ""
"Give it a local target and one behavior to investigate. For a JavaScript or "
"Electron app:"
msgstr ""
"Asígnele un objetivo local y un comportamiento para investigar. Para una "
"aplicación JavaScript o 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:417
#, 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}Su agente de codificación"

#. {ph0}: <a href="../guides/">
#. {ph1}: </a>
#: website/public/faq/index.html:440
#, 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 ""
"Reemplaza el camino con tu objetivo. El {ph0}guías{ph1} proporcione "
"indicaciones para ejemplos nativos, Electron y del navegador."

#: website/public/faq/index.html:450
msgctxt "page:faq/index.html"
msgid "Troubleshooting"
msgstr "Solución de Problemas"

#: website/public/faq/index.html:453
msgctxt "page:faq/index.html"
msgid "Why can't my agent see the REA tools?"
msgstr "¿Por qué mi agente no puede ver las herramientas REA?"

#. {ph0}: <code>doctor</code>
#: website/public/faq/index.html:454
#, 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 ""
"Reinicie o vuelva a conectar su agente después de la configuración. "
"Verifique su registro REA con {ph0}; para Codex :"

#: website/public/faq/index.html:460
msgctxt "page:faq/index.html"
msgid "Terminal · check one client"
msgstr "Terminal * compruebe un cliente"

#. {ph0}: <code>codex</code>
#. {ph1}: <code>claude_code</code>
#. {ph2}: <code>cursor</code>
#: website/public/faq/index.html:472
#, 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 ""
"Reemplazar {ph0} con su ID de cliente, como {ph1} o {ph2}. Si el informe "
"muestra un registro faltante o obsoleto, ejecute el programa de instalación "
"para ese cliente:"

#: website/public/faq/index.html:480
msgctxt "page:faq/index.html"
msgid "Terminal · repair one client's setup"
msgstr "Terminal * reparar la configuración de un cliente"

#. {ph0}: <a href="../get-started/#help">
#. {ph1}: </a>
#: website/public/faq/index.html:492
#, 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 ""
"Revise su plan y reinicie el cliente. Si el registro es correcto pero faltan"
" herramientas, verifique el error de conexión MCP del cliente. {ph0}Más "
"diagnósticos de configuración{ph1}."

#: website/public/faq/index.html:500
msgctxt "page:faq/index.html"
msgid "Do I need to start Hopper first?"
msgstr "¿Necesito iniciar Hopper primero?"

#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a >
#: website/public/faq/index.html:501
#, 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 inicia Hopper cuando una operación lo necesita. En macOS , complete la "
"opción de primera ejecución de modo de demostración o activación de licencia"
" antes del análisis desatendido. {ph0}Consulte configuración de proveedor "
"nativo{ph1}."

#: website/public/faq/index.html:510
msgctxt "page:faq/index.html"
msgid "What should I do if I hit a bug?"
msgstr "¿Qué hago si encuentro un error?"

#. {ph0}: <a href="#update">
#. {ph1}: </a>
#: website/public/faq/index.html:511
#, 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}Actualización REA {ph1}, reinicie su agente y vuelva a intentar la "
"misma tarea. Es posible que una versión reciente ya solucione el problema."

#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/faq/index.html:515
#, 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 ""
"Si persiste, {ph0}abrir una incidencia{ph1} con su versión REA, sistema "
"operativo, tipo de destino, pasos para reproducir y salida de error. Incluya"
" el nombre del proveedor cuando el problema implique el análisis de "
"programas de código máquina."

#: website/public/faq/index.html:529
msgctxt "page:faq/index.html"
msgid "Data and sharing"
msgstr "Datos e intercambio"

#: website/public/faq/index.html:532
msgctxt "page:faq/index.html"
msgid "Does REA upload my app?"
msgstr "¿REA carga mi aplicación?"

#: website/public/faq/index.html:533
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 analiza los objetivos en su máquina. Su agente recibe los resultados y "
"la política de datos de su proveedor de modelos se aplica a esos resultados."

#: website/public/faq/index.html:540
msgctxt "page:faq/index.html"
msgid "How can I share an example or contribute?"
msgstr "¿Cómo puedo compartir un ejemplo o contribuir?"

#. {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:541
#, 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 ""
"¿Tiene un ejemplo útil de REA? Nos encantaría verlo. Comparta el objetivo, "
"su pregunta, los hallazgos y cómo los verificó en un {ph0}cuestión{ph1} o "
"{ph2}solicitud de extracción{ph3}. Extractos de códigos cortos y figuras "
"ayudan a otros a seguir la investigación."

#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/faq/index.html:553
#, 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 ""
"Los informes de errores, solicitudes de funciones, documentación y mejoras "
"de código también son bienvenidos. También puede analizar un ejemplo en el "
"{ph0}comunidad{ph1}."

#: website/public/faq/index.html:6
msgctxt "page:faq/index.html"
msgid "REA FAQ: Setup, Updates and Troubleshooting"
msgstr ""
"Preguntas frecuentes sobre REA: Configuración, Actualizaciones y Solución de"
" problemas"

#: 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 ""
"Respuestas a preguntas comunes sobre REA: instalación, actualizaciones, "
"herramientas de análisis, agentes de codificación, solución de problemas y "
"ejemplos para compartir."

#: website/public/faq/index.html:204
msgctxt "page:faq/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/faq/index.html:213
msgctxt "page:faq/index.html"
msgid "Frequently asked questions about REA"
msgstr "Preguntas frecuentes sobre REA"

#: website/public/faq/index.html:231
msgctxt "page:faq/index.html"
msgid "Copy REA setup command"
msgstr "Copie el comando de configuración REA"

#: website/public/faq/index.html:272
msgctxt "page:faq/index.html"
msgid "Copy REA update command"
msgstr "Copie el comando de actualización REA"

#: website/public/faq/index.html:290
msgctxt "page:faq/index.html"
msgid "Copy agent setup refresh command"
msgstr "Comando de actualización de la configuración del agente de copia"

#: website/public/faq/index.html:374
msgctxt "page:faq/index.html"
msgid "Copy REA CLI analysis command"
msgstr "Copie el comando de análisis REA CLI"

#: website/public/faq/index.html:421
msgctxt "page:faq/index.html"
msgid "Copy example analysis prompt"
msgstr "Copie el mensaje de análisis de ejemplo"

#: website/public/faq/index.html:461
msgctxt "page:faq/index.html"
msgid "Copy client diagnosis command"
msgstr "Copie el comando de diagnóstico del cliente"

#: website/public/faq/index.html:481
msgctxt "page:faq/index.html"
msgid "Copy scoped setup command"
msgstr "Copiar comando de configuración de ámbito"

#: website/public/faq/index.html:579
msgctxt "page:faq/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/first-investigation/index.html:107
msgctxt "page:first-investigation/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:199
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Home{ph1} / Your first investigation"
msgstr "{ph0}Inicio{ph1} / Tu primera investigación"

#. {ph0}: <br />
#: website/public/first-investigation/index.html:202
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Find out where{ph0}exported notes go."
msgstr "Averigüe dónde{ph0}las notas exportadas van."

#: website/public/first-investigation/index.html:203
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 ""
"Use REA para inspeccionar una aplicación pequeña, siga su botón Exportar "
"notas y verifique un detalle usted mismo."

#: website/public/first-investigation/index.html:214
msgctxt "page:first-investigation/index.html"
msgid "In this exercise"
msgstr "En este ejercicio"

#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:216
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}1. Set up{ph1}"
msgstr "{ph0}1. Configurar{ph1}"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:217
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}2. Ask about export{ph1}"
msgstr "{ph0}2. Pregunte sobre exportación{ph1}"

#. {ph0}: <a href="#answer">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:218
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}3. Follow the answer{ph1}"
msgstr "{ph0}3. Sigue la respuesta{ph1}"

#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:219
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}4. Check a prediction{ph1}"
msgstr "{ph0}4. Comprobar una predicción{ph1}"

#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:220
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}5. Ask another question{ph1}"
msgstr "{ph0}5. Haz otra pregunta{ph1}"

#: website/public/first-investigation/index.html:225
msgctxt "page:first-investigation/index.html"
msgid "1. Connect your agent to REA"
msgstr "1. Conecte a su agente a 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:234
#: website/public/first-investigation/index.html:284
#: website/public/first-investigation/index.html:406
#, 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}Su agente de codificación"

#: website/public/first-investigation/index.html:239
#: website/public/first-investigation/index.html:261
#: website/public/first-investigation/index.html:289
#: website/public/first-investigation/index.html:411
#: website/public/first-investigation/index.html:452
#: website/public/first-investigation/index.html:469
msgctxt "page:first-investigation/index.html"
msgid "Copy"
msgstr "Copiar"

#: website/public/first-investigation/index.html:258
msgctxt "page:first-investigation/index.html"
msgid "Or run this command in your terminal:"
msgstr "O ejecute este comando en su terminal:"

#: website/public/first-investigation/index.html:270
msgctxt "page:first-investigation/index.html"
msgid ""
"Review the plan, approve the setup, then restart your agent. Already "
"connected? Continue below."
msgstr ""
"Revise el plan, apruebe la configuración y luego reinicie su agente. ¿Ya "
"estás conectado? Continúe abajo."

#: website/public/first-investigation/index.html:276
msgctxt "page:first-investigation/index.html"
msgid "2. Ask where the CSV is written"
msgstr "2. Pregunte dónde está escrito el CSV"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/first-investigation/index.html:277
#, 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 ""
"El ejemplo es una aplicación Electron de seis archivos con un {ph0}Notas de "
"exportación{ph1} botón. Su agente puede inspeccionar su código sin instalar "
"ni iniciar Electron ."

#: website/public/first-investigation/index.html:312
msgctxt "page:first-investigation/index.html"
msgid ""
"Your agent downloads the files and gives the unpacked folder to REA for "
"inspection."
msgstr ""
"Su agente descarga los archivos y entrega la carpeta desempaquetada a REA "
"para su inspección."

#. {ph0}: <a class="button" href="../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:316
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Descargar ZIP de ejemplo{ph1}"

#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:324
#, 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 su agente no puede descargar archivos, descomprímalo usted mismo. Dale el"
" camino al {ph0} carpeta y la misma pregunta de exportación."

#: website/public/first-investigation/index.html:331
msgctxt "page:first-investigation/index.html"
msgid "3. Follow the answer back to the code"
msgstr "3. Siga la respuesta de regreso al código"

#: website/public/first-investigation/index.html:332
msgctxt "page:first-investigation/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr "Busque una breve explicación con referencias de archivos y líneas:"

#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/first-investigation/index.html:334
#, 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 ""
"El botón envía un {ph0} mensaje. El proceso principal formatea las notas "
"como CSV y escribe {ph1} en la carpeta de descargas del usuario. Las "
"columnas son {ph2} y {ph3}."

#: website/public/first-investigation/index.html:342
msgctxt "page:first-investigation/index.html"
msgid "From the button to the file writer"
msgstr "Del botón al escritor de archivos"

#: website/public/first-investigation/index.html:371
msgctxt "page:first-investigation/index.html"
msgid ""
"REA’s static analysis pairs the message with its handler. The destination is"
" read from code."
msgstr ""
"El análisis estático de REA empareja el mensaje con su controlador. El "
"destino se lee del código."

#: website/public/first-investigation/index.html:387
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 ""
"La ruta del archivo, el formateador y la llamada de escritura están juntos "
"en este controlador. Pídale a su agente que muestre estas líneas si su "
"respuesta las omite."

#. {ph0}: <a href="../guides/javascript/#follow" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:392
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}See the full code trace and recorded REA result{ph1}."
msgstr ""
"{ph0}Vea el rastreo completo del código y el resultado registrado de "
"REA{ph1}."

#: website/public/first-investigation/index.html:399
msgctxt "page:first-investigation/index.html"
msgid "4. Check a prediction"
msgstr "4. Comprobar una predicción"

#: website/public/first-investigation/index.html:400
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 ""
"Una coma separa las columnas CSV. ¿Qué sucede cuando el título de una nota "
"contiene una coma o comillas?"

#: website/public/first-investigation/index.html:444
msgctxt "page:first-investigation/index.html"
msgid "Run the check yourself"
msgstr "Ejecute el cheque usted mismo"

#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:445
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Open a terminal in the unpacked {ph0} folder:"
msgstr "Abra una terminal en el desempaquetado {ph0} carpeta:"

#: website/public/first-investigation/index.html:486
msgctxt "page:first-investigation/index.html"
msgid "5. Ask another question"
msgstr "5. Haz otra pregunta"

#: website/public/first-investigation/index.html:487
msgctxt "page:first-investigation/index.html"
msgid "Try a follow-up in the same conversation:"
msgstr "Prueba un seguimiento en la misma conversación:"

#: website/public/first-investigation/index.html:489
msgctxt "page:first-investigation/index.html"
msgid ""
"What happens if the file can’t be written? Follow the error back to the "
"page."
msgstr ""
"¿Qué sucede si el archivo no se puede escribir? Siga el error de regreso a "
"la página."

#: website/public/first-investigation/index.html:494
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 ""
"O dale a tu agente una aplicación propia y pregúntale sobre un botón, "
"archivo o comportamiento."

#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:499
#, 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}Cómo Notion copia texto y HTML{ph1}{ph2}Siga una función del "
"portapapeles en una aplicación Electron empaquetada.{ph3}"

#. {ph0}: <a href="../showcase/dx-ball/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:505
#, 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}Cómo calcula el DX-Ball el posicionamiento del sonido "
"estéreo{ph1}{ph2}Lea las instrucciones originales y las revisiones de la "
"reconstrucción.{ph3}"

#. {ph0}: <a href="../faq/#troubleshooting" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:513
#, 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}Solucionar problemas de configuración o análisis{ph1}{ph2}Actualice REA"
" y verifique la conexión si se atasca.{ph3}"

#: website/public/first-investigation/index.html:6
msgctxt "page:first-investigation/index.html"
msgid "Your First Reverse Engineering Investigation — REA"
msgstr "Su Primera Investigación de Ingeniería Inversa-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 ""
"Pruebe REA en una pequeña aplicación de notas. Configure su agente, pregunte"
" a dónde van las notas exportadas y verifique el formateador CSV con un "
"título de muestra."

#: website/public/first-investigation/index.html:213
msgctxt "page:first-investigation/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/first-investigation/index.html:223
msgctxt "page:first-investigation/index.html"
msgid "Your first REA investigation"
msgstr "Su primera investigación sobre REA"

#: website/public/first-investigation/index.html:239
msgctxt "page:first-investigation/index.html"
msgid "Copy REA installation prompt"
msgstr "Copie el mensaje de instalación de REA"

#: website/public/first-investigation/index.html:261
msgctxt "page:first-investigation/index.html"
msgid "Copy setup command"
msgstr "Comando Copiar configuración"

#: website/public/first-investigation/index.html:289
msgctxt "page:first-investigation/index.html"
msgid "Copy Notes investigation prompt"
msgstr "Aviso de investigación de Copy Notes"

#: website/public/first-investigation/index.html:411
msgctxt "page:first-investigation/index.html"
msgid "Copy CSV check prompt"
msgstr "Copie el mensaje de verificación CSV"

#: website/public/first-investigation/index.html:452
#: website/public/first-investigation/index.html:469
msgctxt "page:first-investigation/index.html"
msgid "Copy formatter check command"
msgstr "Comando Copiar comprobación del formateador"

#: website/public/first-investigation/index.html:540
msgctxt "page:first-investigation/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/get-started/index.html:107
msgctxt "page:get-started/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/get-started/index.html:199
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Home{ph1} / Get started"
msgstr "{ph0}Inicio{ph1} / Empezar"

#: website/public/get-started/index.html:200
msgctxt "page:get-started/index.html"
msgid "Set up REA."
msgstr "Configure REA ."

#: website/public/get-started/index.html:265
msgctxt "page:get-started/index.html"
msgid "Open a terminal and check:"
msgstr "Abra una terminal y verifique:"

#: website/public/get-started/index.html:268
msgctxt "page:get-started/index.html"
msgid "Terminal"
msgstr "Terminal"

#: website/public/get-started/index.html:269
#: website/public/get-started/index.html:292
#: website/public/get-started/index.html:322
#: website/public/get-started/index.html:347
#: website/public/get-started/index.html:370
#: website/public/get-started/index.html:385
#: website/public/get-started/index.html:419
#: website/public/get-started/index.html:450
#: website/public/get-started/index.html:464
#: website/public/get-started/index.html:482
#: website/public/get-started/index.html:534
#: website/public/get-started/index.html:548
#: website/public/get-started/index.html:580
#: website/public/get-started/index.html:609
#: website/public/get-started/index.html:744
#: website/public/get-started/index.html:774
#: website/public/get-started/index.html:799
#: website/public/get-started/index.html:814
#: website/public/get-started/index.html:862
#: website/public/get-started/index.html:895
#: website/public/get-started/index.html:1047
#: website/public/get-started/index.html:1109
#: website/public/get-started/index.html:1132
#: website/public/get-started/index.html:1156
#: website/public/get-started/index.html:1204
#: website/public/get-started/index.html:1279
#: website/public/get-started/index.html:1305
#: website/public/get-started/index.html:1322
#: website/public/get-started/index.html:1565
#: website/public/get-started/index.html:1624
#: website/public/get-started/index.html:1643
#: website/public/get-started/index.html:1665
#: website/public/get-started/index.html:1708
#: website/public/get-started/index.html:1738
#: website/public/get-started/index.html:1759
msgctxt "page:get-started/index.html"
msgid "Copy"
msgstr "Copiar"

#. {ph0}: <code>node -v</code>
#: website/public/get-started/index.html:303
#, 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 ""
"Escriba Y si se le pide que acepte los términos. Cierre PowerShell, ábralo "
"nuevamente y luego ejecute {ph0}."

#. {ph0}: <code>nodejs</code>
#. {ph1}: <code>node -v</code>
#: website/public/get-started/index.html:398
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr ""
"Tu propia distribución {ph0} el paquete suele ser anterior a 22.23.4, así que "
"verifique {ph1} si lo usas en su lugar."

#. {ph0}: <a href="https://nodejs.org/en/download">
#. {ph1}: </a>
#: website/public/get-started/index.html:404
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Prefer a regular installer? Download the LTS version from "
"{ph0}nodejs.org{ph1}."
msgstr ""
"¿Prefiere un instalador regular? Descargue la versión LTS desde "
"{ph0}nodejs.org{ph1}."

#. {ph0}: <a href="#terminal">
#. {ph1}: </a>
#: website/public/get-started/index.html:219
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Use the CLI{ph1}"
msgstr "{ph0}Utilice el CLI {ph1}"

#. {ph0}: <a href="#help">
#. {ph1}: </a>
#: website/public/get-started/index.html:220
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Getting help{ph1}"
msgstr "{ph0}Cómo obtener ayuda{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/get-started/index.html:769
#, 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}Tu agente de programación"

#: website/public/get-started/index.html:795
msgctxt "page:get-started/index.html"
msgid "Or run setup yourself"
msgstr "O ejecute la configuración usted mismo"

#: website/public/get-started/index.html:231
msgctxt "page:get-started/index.html"
msgid "How do I open a terminal?"
msgstr "¿Cómo abro una terminal?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:233
#, 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} abra el menú Inicio, escriba {ph2}PowerShell{ph3} y "
"presione Entrar."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Space</kbd>
#. {ph4}: <em>
#. {ph5}: </em>
#: website/public/get-started/index.html:237
#, 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} pulsa {ph2} {ph3}, escribe {ph4}Terminal{ph5} y pulsa "
"Enter."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>Ctrl</kbd>
#. {ph3}: <kbd>Alt</kbd>
#. {ph4}: <kbd>T</kbd>
#: website/public/get-started/index.html:241
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} press {ph2} {ph3} {ph4} on most desktops."
msgstr ""
"{ph0}Linux:{ph1} pulsa {ph2} {ph3} {ph4} en la mayoría de los escritorios."

#. {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:246
#, 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 ""
"Pegue un comando con {ph0} {ph1} ( macOS : {ph2} {ph3}; Terminales Linux: "
"{ph4} {ph5} {ph6}), luego presione Entrar."

#: website/public/get-started/index.html:831
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 ""
"Elija su cliente y revise el plan de configuración.  REA agrega su conexión "
"MCP y la habilidad de investigación correspondiente, manteniendo una copia "
"de seguridad de la configuración existente. Pregunta antes de aplicar los "
"cambios."

#: website/public/get-started/index.html:845
msgctxt "page:get-started/index.html"
msgid "How do I restart my client?"
msgstr "¿Cómo reinicio mi cliente?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Q</kbd>
#: website/public/get-started/index.html:846
#, 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}Aplicaciones de escritorio{ph1} (Escritorio Claude, Cursor , Windsurf ,"
" VS Code): salga de la aplicación por completo y luego ábrala nuevamente. "
"Cerrar la ventana no es suficiente. En prensa macOS {ph2} {ph3}; en Windows,"
" también salga del icono de la bandeja, si lo hay."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:853
#, 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}Agentes terminales{ph1} ( Claude Code, Codex, Gemini CLI ): salga de la"
" sesión y vuelva a iniciarla."

#: website/public/get-started/index.html:957
msgctxt "page:get-started/index.html"
msgid "How do I get a folder's full path?"
msgstr "¿Cómo obtengo la ruta completa de una carpeta?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:959
#, 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} en el Explorador de archivos, haga clic con el botón "
"derecho en la carpeta y elija {ph2}Copiar como ruta{ph3}. En Windows 10, "
"mantenga presionada la tecla Mayús mientras hace clic con el botón derecho."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:964
#, 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} en Finder, haz clic derecho en la carpeta, mantén pulsada "
"la tecla Opción y elige {ph2}Copiar «…» como nombre de ruta{ph3}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:968
#, 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}Cualquier sistema:{ph1} arrastre la carpeta a una ventana de terminal y"
" aparecerá su ruta."

#: website/public/get-started/index.html:973
#: website/public/get-started/index.html:1731
msgctxt "page:get-started/index.html"
msgid "In a terminal, put quotes around a path that contains spaces."
msgstr ""
"En una terminal, coloque comillas alrededor de una ruta que contenga "
"espacios."

#: website/public/get-started/index.html:1558
msgctxt "page:get-started/index.html"
msgid ""
"Analyze a JavaScript or Electron application folder or ASAR archive without "
"running the app:"
msgstr ""
"Analice una carpeta de aplicación JavaScript o Electron o un archivo ASAR "
"sin ejecutar la aplicación:"

#: website/public/get-started/index.html:1564
msgctxt "page:get-started/index.html"
msgid "Static application analysis"
msgstr "Análisis estático de aplicaciones"

#. {ph0}: <code>.asar</code>
#. {ph1}: <code>"D:/apps/example"</code>
#: website/public/get-started/index.html:1576
#, 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 ""
"Reemplace la ruta con el directorio de la aplicación extraída o {ph0} "
"archivo. En Windows, una ruta como {ph1} trabaja aquí."

#: website/public/get-started/index.html:1582
msgctxt "page:get-started/index.html"
msgid "Where do I find an app's .asar file?"
msgstr "¿Dónde encuentro el archivo .asar de una aplicación?"

#. {ph0}: <code>resources</code>
#: website/public/get-started/index.html:1583
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Electron apps usually keep it in a {ph0} folder:"
msgstr ""
"Las aplicaciones Electron generalmente lo mantienen en un {ph0} carpeta:"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >C:\Users\&lt;you&gt;\AppData\Local\Programs\&lt;App&gt;\resources\app.asar</code
#. >
#: website/public/get-started/index.html:1588
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows:{ph1} {ph2}"
msgstr "{ph0} Windows :{ph1} {ph2}"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >/Applications/&lt;App&gt;.app/Contents/Resources/app.asar</code >
#. {ph3}: <em>
#. {ph4}: </em>
#: website/public/get-started/index.html:1594
#, 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} (haga clic con el botón derecho en la aplicación y "
"elija {ph3}Mostrar Contenido del Paquete{ph4})"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>/opt/&lt;App&gt;/resources/app.asar</code>
#: website/public/get-started/index.html:1602
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} often {ph2}"
msgstr "{ph0} Linux :{ph1} a menudo {ph2}"

#. {ph0}: <code>app.asar</code>
#: website/public/get-started/index.html:1607
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Some apps install elsewhere. Search the app's folder for {ph0}."
msgstr ""
"Algunas aplicaciones se instalan en otro lugar. Busque en la carpeta de la "
"aplicación {ph0}."

#: website/public/get-started/index.html:1612
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 ""
"El resultado identifica la aplicación, muestra las conexiones entre los "
"módulos y proporciona sus ubicaciones de origen. Las conexiones REA que no "
"se pueden resolver están marcadas en el resultado."

#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:1617
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "If you'd like a permanent {ph0} command in your shell:"
msgstr "Si desea un permanente {ph0} comando en tu shell:"

#: website/public/get-started/index.html:1623
msgctxt "page:get-started/index.html"
msgid "Install the CLI"
msgstr "Instale el CLI"

#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1635
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Continue with the JavaScript application guide{ph1}"
msgstr "{ph0}Continúe con la guía de aplicación del JavaScript{ph1}"

#: website/public/get-started/index.html:1152
msgctxt "page:get-started/index.html"
msgid "Connect your Ghidra installation"
msgstr "Conecte su instalación de Ghidra"

#: website/public/get-started/index.html:1122
msgctxt "page:get-started/index.html"
msgid "Connect Ghidra on Windows"
msgstr "Conecte Ghidra en Windows"

#: website/public/get-started/index.html:1123
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 tiene soporte experimental de solo lectura para aplicaciones y "
"DLL nativas x86 y x64 PE en unidades NTFS locales fijas. Usa una instalación"
" existente de Ghidra 12.1.x y un JDK de 64 bits, versión 21 o posterior:"

#: website/public/get-started/index.html:1146
msgctxt "page:get-started/index.html"
msgid ""
"Replace the two paths with your installations, then review setup's plan."
msgstr ""
"Reemplace las dos rutas con sus instalaciones, luego revise el plan de "
"configuración."

#: website/public/get-started/index.html:1028
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 ""
"Conecte Hopper en macOS o Linux . Ejecute el comando de instalación "
"anterior; detecta una instalación existente u ofrece un plan de instalación "
"para su aprobación."

#: website/public/get-started/index.html:1689
msgctxt "page:get-started/index.html"
msgid "Getting help"
msgstr "Cómo obtener ayuda"

#: website/public/get-started/index.html:1691
msgctxt "page:get-started/index.html"
msgid "If your agent doesn't see REA"
msgstr "Si su agente no ve REA"

#. {ph0}: <code>doctor</code>
#: website/public/get-started/index.html:1692
#, 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 ""
"Reinicie o vuelva a conectar el cliente después de la configuración. "
"Compruebe su conexión REA con {ph0}; para Codex :"

#: website/public/get-started/index.html:1703
msgctxt "page:get-started/index.html"
msgid "If a provider needs attention"
msgstr "Si un proveedor necesita atención"

#: website/public/get-started/index.html:1704
msgctxt "page:get-started/index.html"
msgid "Check the provider you're using. For Ghidra:"
msgstr "Verifique el proveedor que está usando. Para Ghidra :"

#: website/public/get-started/index.html:1707
msgctxt "page:get-started/index.html"
msgid "Check one provider"
msgstr "Consulte a un proveedor"

#: website/public/get-started/index.html:1719
msgctxt "page:get-started/index.html"
msgid "The report gives the failed check and a suggested next step."
msgstr ""
"El informe proporciona la verificación fallida y un siguiente paso sugerido."

#. {ph0}: <a href="../faq/">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:1784
#, 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} Preguntas FRECUENTES SOBRE REA{ph1}{ph2}Respuestas rápidas sobre "
"actualizaciones, agentes y análisis.{ph3}"

#. {ph0}: <a href="../guides/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/get-started/index.html:1788
#, 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}Elija una guía de investigación{ph1}{ph2}Ejemplos trabajados para un "
"binario, una aplicación Electron y un navegador.{ph3}"

#. {ph0}: <a href="https://github.com/morluto/rea/issues">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:1795
#, 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} Problemas de GitHub{ph1}{ph2}Informe de un problema con el comando y "
"los diagnósticos.{ph3}"

#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:1799
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA community{ph1}{ph2}Questions, investigations and work in "
"progress.{ph3}"
msgstr ""
"{ph0} Comunidad REA{ph1}{ph2}Preguntas, investigaciones y trabajo en "
"progreso.{ph3}"

#: website/public/get-started/index.html:6
msgctxt "page:get-started/index.html"
msgid "Install REA and Set Up Your Coding Agent"
msgstr "Instale REA y Configure Su Agente de Codificación"

#: 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 ""
"Conecte REA a su agente de codificación o inspeccione una aplicación "
"JavaScript o Electron local desde la terminal. Configuración, primeras "
"preguntas y guías nativas para proveedores."

#: website/public/get-started/index.html:269
msgctxt "page:get-started/index.html"
msgid "Copy Node.js version check"
msgstr "Copiar comprobación de la versión Node.js"

#: website/public/get-started/index.html:292
msgctxt "page:get-started/index.html"
msgid "Copy Node.js installation command for Windows"
msgstr "Copie el comando de instalación de Node.js para Windows"

#: website/public/get-started/index.html:347
msgctxt "page:get-started/index.html"
msgid "Copy Homebrew Node.js installation command"
msgstr "Copie el comando de instalación Homebrew Node.js"

#: website/public/get-started/index.html:370
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for Linux"
msgstr "Copie el comando de instalación fnm para Linux"

#: website/public/get-started/index.html:385
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for Linux"
msgstr "Copie los 24 comandos Node.js para Linux"

#: website/public/get-started/index.html:212
#: website/public/get-started/index.html:211
msgctxt "page:get-started/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/get-started/index.html:223
msgctxt "page:get-started/index.html"
msgid "REA getting started guide"
msgstr "Guía de introducción al REA"

#: website/public/get-started/index.html:774
msgctxt "page:get-started/index.html"
msgid "Copy REA installation prompt"
msgstr "Copie el mensaje de instalación de REA"

#: website/public/get-started/index.html:1565
msgctxt "page:get-started/index.html"
msgid "Copy JavaScript analysis command"
msgstr "Copie el comando de análisis JavaScript"

#: website/public/get-started/index.html:1624
msgctxt "page:get-started/index.html"
msgid "Copy CLI installation command"
msgstr "Copie el comando de instalación de CLI"

#: website/public/get-started/index.html:1708
msgctxt "page:get-started/index.html"
msgid "Copy provider diagnosis command"
msgstr "Copie el comando de diagnóstico del proveedor"

#: website/public/get-started/index.html:1823
msgctxt "page:get-started/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/guides/browser/index.html:107
msgctxt "page:guides/browser/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/browser/index.html:199
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Browser observation"
msgstr "{ph0}Inicio{ph1} / {ph2}Guías{ph3} / Observación del navegador"

#. {ph0}: <br />
#: website/public/guides/browser/index.html:203
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "See what happens{ph0}when you click."
msgstr "Vea lo que sucede{ph0}cuando haces clic."

#: website/public/guides/browser/index.html:204
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 ""
"Use una pequeña aplicación de navegador para conectar una acción, su "
"solicitud de red y el JavaScript que genera una descarga."

#: website/public/guides/browser/index.html:211
msgctxt "page:guides/browser/index.html"
msgid "In this guide"
msgstr "En esta guía"

#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:213
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}El ejemplo{ph1}"

#. {ph0}: <a href="#prepare">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:214
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Open the browser{ph1}"
msgstr "{ph0}Abra el navegador{ph1}"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:215
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Pregúntele a su agente{ph1}"

#. {ph0}: <a href="#capture">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:216
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Capture from CLI{ph1}"
msgstr "{ph0}Captura desde CLI {ph1}"

#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:217
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Read the request and script{ph1}"
msgstr "{ph0}Lea la solicitud y el script{ph1}"

#: website/public/guides/browser/index.html:222
msgctxt "page:guides/browser/index.html"
msgid "What happens when you click Export?"
msgstr "¿Qué sucede cuando haces clic en Exportar?"

#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <strong>
#. {ph3}: </strong>
#. {ph4}: <code>notes.json</code>
#: website/public/guides/browser/index.html:223
#, 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 ""
"El {ph0}Ejemplo de navegador de notas{ph1} tiene un {ph2}Notas de "
"exportación{ph3} botón. Al hacer clic en él, se carga {ph4}, formatea las "
"dos notas como CSV e inicia una descarga ."

#: website/public/guides/browser/index.html:231
msgctxt "page:guides/browser/index.html"
msgid "From the click to the CSV download"
msgstr "Del clic a la descarga de 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:233
#, 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 * Tú{ph1}{ph2}Haga clic en Exportar notas{ph3}{ph4}Realice la acción"
" en su navegador mientras se ejecuta la captura.{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:241
#, 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}Registre la solicitud{ph3}{ph4}Capture la URL de la "
"solicitud, el estado de la respuesta y la estructura JSON de la página "
"seleccionada.{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:249
#, 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 * Su agente{ph1}{ph2}Lea el código de exportación{ph3}{ph4}Conecte "
"la solicitud observada a {ph5} en {ph6}.{ph7}"

#: website/public/guides/browser/index.html:262
msgctxt "page:guides/browser/index.html"
msgid "Start the capture before clicking Export notes."
msgstr "Inicie la captura antes de hacer clic en Exportar notas."

#: website/public/guides/browser/index.html:268
msgctxt "page:guides/browser/index.html"
msgid "Open Chrome with remote debugging"
msgstr "Abra Chrome con depuración remota"

#: website/public/guides/browser/index.html:269
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 ""
"Abra el ejemplo de Hosted Notes con un perfil de navegador independiente y "
"un puerto de depuración local. En Linux :"

#: website/public/guides/browser/index.html:275
msgctxt "page:guides/browser/index.html"
msgid "Start the example browser"
msgstr "Inicie el navegador de ejemplo"

#: website/public/guides/browser/index.html:276
#: website/public/guides/browser/index.html:308
#: website/public/guides/browser/index.html:342
#: website/public/guides/browser/index.html:361
#: website/public/guides/browser/index.html:426
msgctxt "page:guides/browser/index.html"
msgid "Copy"
msgstr "Copiar"

#: website/public/guides/browser/index.html:290
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 ""
"Utilice la ruta ejecutable de su navegador instalado en macOS o Windows . "
"Puede reemplazar la URL de la página con otra página que desee inspeccionar."

#: website/public/guides/browser/index.html:295
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 conecta a este navegador existente. Usted mantiene el control de la "
"página, realiza la acción y cierra el navegador cuando termina."

#: website/public/guides/browser/index.html:301
msgctxt "page:guides/browser/index.html"
msgid "Ask your agent to watch one action"
msgstr "Pídale a su agente que vea una acción"

#. {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:304
#, 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}Su agente de codificación"

#. {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:317
#, 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}Use REA para inspeccionar esta página mientras hago clic en "
"Exportar notas. ¿Qué solicitud hace y cómo se construye el "
"CSV?{ph3}{ph4}{ph5}"

#. {ph0}: <code>http://127.0.0.1:9222</code>
#: website/public/guides/browser/index.html:325
#, 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 ""
"Mensaje de ejemplo. Proporcione a su agente el punto final de depuración, "
"{ph0}, y la URL de la página. Deje que inicie la captura antes de hacer "
"clic."

#: website/public/guides/browser/index.html:330
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 ""
"Su agente descubre el destino de la página, abre una ventana de observación "
"y lee la evidencia resultante. Luego puede inspeccionar el script detrás de "
"la exportación."

#: website/public/guides/browser/index.html:337
msgctxt "page:guides/browser/index.html"
msgid "Or capture from the terminal"
msgstr "O captura desde la terminal"

#: website/public/guides/browser/index.html:338
msgctxt "page:guides/browser/index.html"
msgid "Find the page's target ID:"
msgstr "Encontrar el ID de destino de la página:"

#: website/public/guides/browser/index.html:341
msgctxt "page:guides/browser/index.html"
msgid "Find the page"
msgstr "Encuentra la página"

#. {ph0}: <code>TARGET_ID</code>
#: website/public/guides/browser/index.html:354
#, 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 ""
"Elija el destino con la URL de ejemplo de Notes. Reemplazar {ph0} abajo con "
"su ID, luego ejecute:"

#: website/public/guides/browser/index.html:360
msgctxt "page:guides/browser/index.html"
msgid "Capture the next ten seconds"
msgstr "Captura los siguientes diez segundos"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/browser/index.html:376
#, 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 ""
"Deje que el comando se conecte durante unos segundos y luego haga clic en "
"{ph0}Notas de exportación{ph1} en ese navegador. El resultado llega después "
"de que finaliza la ventana de observación."

#: website/public/guides/browser/index.html:381
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 ""
"El resultado capturado incluye la página seleccionada, la actividad de la "
"red durante esa ventana y la forma de la respuesta JSON. Las solicitudes "
"anteriores están fuera de esta captura."

#: website/public/guides/browser/index.html:388
msgctxt "page:guides/browser/index.html"
msgid "Read the request and export script"
msgstr "Leer el script de solicitud y exportación"

#: website/public/guides/browser/index.html:391
msgctxt "page:guides/browser/index.html"
msgid "Recorded with REA 4.1.0 on the local Notes example"
msgstr "Grabado con REA 4.1.0 en el ejemplo de notas locales"

#: website/public/guides/browser/index.html:396
msgctxt "page:guides/browser/index.html"
msgid "Captured fact"
msgstr "Hecho capturado"

#: website/public/guides/browser/index.html:397
msgctxt "page:guides/browser/index.html"
msgid "Value"
msgstr "Valor"

#: website/public/guides/browser/index.html:402
msgctxt "page:guides/browser/index.html"
msgid "Request"
msgstr "Solicitud"

#: website/public/guides/browser/index.html:406
msgctxt "page:guides/browser/index.html"
msgid "Response"
msgstr "Respuesta"

#: website/public/guides/browser/index.html:410
msgctxt "page:guides/browser/index.html"
msgid "Request initiator"
msgstr "Iniciador de la solicitud"

#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:411
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · script"
msgstr "{ph0} * guión"

#: website/public/guides/browser/index.html:414
msgctxt "page:guides/browser/index.html"
msgid "Response structure"
msgstr "Estructura de respuesta"

#. {ph0}: <code>notes[]</code>
#. {ph1}: <code>id</code>
#. {ph2}: <code>title</code>
#: website/public/guides/browser/index.html:415
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} with {ph1} and {ph2} fields"
msgstr "{ph0} con {ph1} y {ph2} campos"

#: website/public/guides/browser/index.html:425
msgctxt "page:guides/browser/index.html"
msgid "Read the loaded scripts"
msgstr "Leer los scripts cargados"

#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:439
#, 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 solicitud identifica el origen de datos y los registros REA {ph0} como su"
" iniciador. Lea la fuente de script capturada para ver cómo se utilizan los "
"datos:"

#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:459
#, 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 ""
"La descarga se construye en la página utilizando la respuesta JSON. El paso "
"de formateo CSV proviene del script; la captura de red establece que se "
"solicitó este clic {ph0}."

#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:475
#, 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 ""
"Busque el script que solicita {ph0}. ¿Cómo se escapa de los títulos que "
"contienen comas o comillas?"

#. {ph0}: <a href="../javascript/">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:480
#, 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 ""
"Para una aplicación JavaScript o Electron instalada, continúe con la "
"{ph0}flujo de trabajo de la aplicación{ph1} para seguir los límites de "
"archivos y procesos."

#: website/public/guides/browser/index.html:6
msgctxt "page:guides/browser/index.html"
msgid "Browser and Network Analysis — REA"
msgstr "Análisis de Navegadores y Redes-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 ""
"Observe una exportación de notas con REA: seleccione una página del "
"navegador, capture un clic, inspeccione la solicitud y siga el script de "
"exportación."

#: website/public/guides/browser/index.html:210
msgctxt "page:guides/browser/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/guides/browser/index.html:220
msgctxt "page:guides/browser/index.html"
msgid "Browser observation"
msgstr "Observación del navegador"

#: website/public/guides/browser/index.html:276
msgctxt "page:guides/browser/index.html"
msgid "Copy start the example browser"
msgstr "Copie inicie el navegador de ejemplo"

#: website/public/guides/browser/index.html:308
msgctxt "page:guides/browser/index.html"
msgid "Copy example prompt"
msgstr "Copie el mensaje de ejemplo"

#: website/public/guides/browser/index.html:342
msgctxt "page:guides/browser/index.html"
msgid "Copy find the page"
msgstr "Copiar buscar la página"

#: website/public/guides/browser/index.html:361
msgctxt "page:guides/browser/index.html"
msgid "Copy capture the next ten seconds"
msgstr "Copia captura los siguientes diez segundos"

#: website/public/guides/browser/index.html:426
msgctxt "page:guides/browser/index.html"
msgid "Copy read the loaded scripts"
msgstr "Copiar leer los scripts cargados"

#: website/public/guides/browser/index.html:513
msgctxt "page:guides/browser/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/guides/index.html:107
msgctxt "page:guides/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/guides/index.html:199
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "{ph0}Home{ph1} / Guides"
msgstr "{ph0}Inicio{ph1} / Guías"

#: website/public/guides/index.html:200
msgctxt "page:guides/index.html"
msgid "REA guides."
msgstr "Guías REA."

#: website/public/guides/index.html:201
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 ""
"Analice una función nativa, una exportación Electron o una solicitud del "
"navegador. Cada guía incluye un mensaje, código y resultados."

#: website/public/guides/index.html:208
msgctxt "page:guides/index.html"
msgid "First investigation"
msgstr "Primera investigación"

#: website/public/guides/index.html:210
msgctxt "page:guides/index.html"
msgid "Set up REA"
msgstr "Configurar REA"

#: website/public/guides/index.html:211
msgctxt "page:guides/index.html"
msgid "Connect your coding agent or use REA from the terminal."
msgstr "Conecte su agente de codificación o use REA desde la terminal."

#: website/public/guides/index.html:212
msgctxt "page:guides/index.html"
msgid "Get started with REA"
msgstr "Comience con REA"

#: website/public/guides/index.html:216
msgctxt "page:guides/index.html"
msgid "Native binaries"
msgstr "Programas de código máquina"

#: website/public/guides/index.html:218
msgctxt "page:guides/index.html"
msgid "Recover a sound-pan calculation"
msgstr "Recuperar un cálculo de la posición del sonido izquierda/derecha"

#: website/public/guides/index.html:219
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 ""
"Comience con un ejecutable de juego Windows. Inspeccione las instrucciones, "
"siga a la persona que llama, lea las constantes numéricas y verifique la C "
"recuperada."

#: website/public/guides/index.html:229
msgctxt "page:guides/index.html"
msgid "Native analysis guide"
msgstr "Guía de análisis de programas de código máquina"

#: website/public/guides/index.html:233
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript y Electron"

#: website/public/guides/index.html:235
msgctxt "page:guides/index.html"
msgid "Follow a CSV export"
msgstr "Siga una exportación de CSV"

#: website/public/guides/index.html:236
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 ""
"Una pequeña aplicación de notas distribuye una función en el renderizador, "
"la precarga y el proceso principal. Utilice REA para conectar la API, el "
"canal IPC y el escritor de archivos."

#: website/public/guides/index.html:246
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron guide"
msgstr "Guía JavaScript y Electron"

#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a>
#: website/public/guides/index.html:249
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "For a larger packaged app, follow {ph0}Notion's clipboard bridge{ph1}."
msgstr ""
"Para obtener una aplicación empaquetada más grande, siga {ph0} Puente del "
"portapapeles de Notion{ph1}."

#: website/public/guides/index.html:256
msgctxt "page:guides/index.html"
msgid "Browser behavior"
msgstr "Comportamiento del navegador"

#: website/public/guides/index.html:258
msgctxt "page:guides/index.html"
msgid "Observe a click"
msgstr "Observar un clic"

#: website/public/guides/index.html:259
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 ""
"Abra un ejemplo de notas de trabajo, capture una solicitud de exportación y "
"busque el código que convierte su respuesta en una descarga."

#: website/public/guides/index.html:268
msgctxt "page:guides/index.html"
msgid "Browser observation guide"
msgstr "Guía de observación del navegador"

#: website/public/guides/index.html:6
msgctxt "page:guides/index.html"
msgid "Reverse Engineering Guides — REA"
msgstr "Guías de Ingeniería Inversa-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 ""
"Aprenda REA a través de breves ejemplos trabajados: un cálculo nativo, una "
"exportación Electron CSV y una solicitud del navegador."

#: website/public/guides/index.html:288
msgctxt "page:guides/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/guides/javascript/index.html:107
msgctxt "page:guides/javascript/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/javascript/index.html:199
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / JavaScript & Electron"
msgstr "{ph0}Inicio{ph1} / {ph2}Guías{ph3} / JavaScript y Electron"

#. {ph0}: <br />
#: website/public/guides/javascript/index.html:203
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "Trace an Electron{ph0}CSV export."
msgstr "Rastrear un Electron {ph0} Exportación CSV."

#: website/public/guides/javascript/index.html:204
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow a button click from the page API, through Electron IPC, to the CSV "
"file writer."
msgstr ""
"Haga clic en un botón desde la API de la página, a través de Electron IPC, "
"hasta el escritor de archivos CSV."

#: website/public/guides/javascript/index.html:211
msgctxt "page:guides/javascript/index.html"
msgid "In this guide"
msgstr "En esta guía"

#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:213
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}El ejemplo{ph1}"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:214
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Pregúntele a su agente{ph1}"

#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:215
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Trace the export code{ph1}"
msgstr "{ph0}Rastrear el código de exportación{ph1}"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:216
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Try the example{ph1}"
msgstr "{ph0}Prueba el ejemplo{ph1}"

#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:217
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Inspect the CSV writer{ph1}"
msgstr "{ph0}Inspeccione la grabadora CSV{ph1}"

#: website/public/guides/javascript/index.html:222
msgctxt "page:guides/javascript/index.html"
msgid "Where does “Export notes” go?"
msgstr "¿A dónde van las \"Notas de exportación\"?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/javascript/index.html:223
#, 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 ""
"Esta guía utiliza una pequeña aplicación Electron. Haciendo clic {ph0}Notas "
"de exportación{ph1} llama a una API en la página, cruza al proceso principal"
" y escribe un CSV . El comportamiento se distribuye en varios archivos."

#: website/public/guides/javascript/index.html:230
msgctxt "page:guides/javascript/index.html"
msgid "The CSV export across Electron processes"
msgstr "La exportación CSV a través de procesos 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:234
#, 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}Renderizador → precarga{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} llama a la API "
"expuesta por {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:242
#, 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 procesos{ph1}{ph2}{ph3}{ph4}{ph5}La precarga invoca un canal IPC:"
" un mensaje con nombre para el proceso 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:250
#, 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}Proceso principal{ph1}{ph2}Un manipulador de "
"exportaciones{ph3}{ph4}{ph5} maneja ese canal y llama al escritor CSV.{ph6}"

#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>main.js</code>
#. {ph2}: <code>downloads/notes.csv</code>
#: website/public/guides/javascript/index.html:259
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} formats the notes → {ph1} writes {ph2}."
msgstr "{ph0} formatea las notas → {ph1} escribe {ph2}."

#: website/public/guides/javascript/index.html:263
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 hace coincidir la llamada IPC literal con su controlador e identifica la"
" API expuesta. La ruta se infiere del código; una captura en tiempo de "
"ejecución puede verificar qué se ejecuta."

#: website/public/guides/javascript/index.html:271
msgctxt "page:guides/javascript/index.html"
msgid "Ask about the CSV export"
msgstr "Pregunte por la exportación CSV"

#. {ph0}: <a href="../../get-started/#agent">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:272
#, 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}Conecte a su agente a REA {ph1} y asígnele el directorio de la "
"aplicación o el archivo 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:278
#, 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}Su agente de codificación"

#: website/public/guides/javascript/index.html:282
#: website/public/guides/javascript/index.html:431
msgctxt "page:guides/javascript/index.html"
msgid "Copy"
msgstr "Copiar"

#. {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:291
#, 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}Use REA para averiguar qué sucede cuando exporto notas en "
"esta aplicación. ¿Dónde se crea el CSV?{ph3}{ph4}{ph5}"

#. {ph0}: <code>app.asar</code>
#: website/public/guides/javascript/index.html:299
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Example prompt. Include the absolute path to the application folder or "
"{ph0}."
msgstr ""
"Mensaje de ejemplo. Incluya la ruta absoluta a la carpeta de la aplicación o"
" {ph0}."

#: website/public/guides/javascript/index.html:303
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 lee los archivos de la aplicación y crea un mapa de puntos de entrada, "
"módulos y límites de procesos. Su agente usa ese mapa para limitar la "
"investigación a la función de exportación."

#: website/public/guides/javascript/index.html:310
msgctxt "page:guides/javascript/index.html"
msgid "Trace the export code"
msgstr "Rastrear el código de exportación"

#: website/public/guides/javascript/index.html:311
msgctxt "page:guides/javascript/index.html"
msgid "The page calls a small API"
msgstr "La página llama a una pequeña API"

#: website/public/guides/javascript/index.html:324
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 página conoce el nombre del método. La implementación vive en la "
"precarga, que la expone al renderizador."

#. {ph0}: <code>notes.exportCsv</code>
#. {ph1}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:338
#, 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 ""
"Registros REA {ph0} y el canal literal {ph1}. Empareja esa invocación con el"
" único controlador coincidente en el proceso principal."

#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>notes.csv</code>
#: website/public/guides/javascript/index.html:355
#, 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 ""
"Leer el controlador responde a la pregunta original: {ph0} formatea las "
"notas y el proceso principal escribe {ph1} en la carpeta de descargas del "
"usuario."

#: website/public/guides/javascript/index.html:372
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 ""
"Grabado por REA 4.1.0 en el ejemplo descargable a continuación. Las "
"ubicaciones de origen acompañan a los hallazgos de la API, el canal y el "
"controlador."

#: website/public/guides/javascript/index.html:378
msgctxt "page:guides/javascript/index.html"
msgid "Analyze the example yourself"
msgstr "Analice el ejemplo usted mismo"

#. {ph0}: <a class="button" href="../../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/guides/javascript/index.html:385
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Descargar ZIP de ejemplo{ph1}"

#: website/public/guides/javascript/index.html:394
msgctxt "page:guides/javascript/index.html"
msgid "Browse the six source files"
msgstr "Explore los seis archivos fuente"

#: website/public/guides/javascript/index.html:430
msgctxt "page:guides/javascript/index.html"
msgid "Static application analysis"
msgstr "Análisis estático de aplicaciones"

#. {ph0}: <code>normalized_result.summary.ipc</code>
#. {ph1}: <code>normalized_result.graph</code>
#: website/public/guides/javascript/index.html:443
#, 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 ""
"Reemplace la ruta con la carpeta que descomprimió. Debería encontrar un "
"canal IPC y un controlador coincidente en {ph0}. Las ubicaciones de origen "
"están en {ph1}."

#: website/public/guides/javascript/index.html:449
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 ""
"Para su propia aplicación, use el mismo comando con su directorio o ruta "
"ASAR. Un agente puede seguir una cadena literal, un nombre de API o un canal"
" IPC con las herramientas de rastreo de funciones de REA."

#: website/public/guides/javascript/index.html:456
msgctxt "page:guides/javascript/index.html"
msgid "Inspect the CSV writer"
msgstr "Inspeccione la grabadora CSV"

#. {ph0}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:458
#, 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 ""
"Sigue {ph0} a su manejador. ¿Qué entradas llegan al escritor CSV y qué "
"sucede si falla la escritura del archivo?"

#: website/public/guides/javascript/index.html:464
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 ""
"Utilice las ubicaciones de origen para inspeccionar esos detalles. Los "
"nombres de canal calculados y los controladores ambiguos pueden permanecer "
"sin resolver; las observaciones en tiempo de ejecución le brindan otra forma"
" de investigarlos."

#. {ph0}: <a href="../../showcase/notion/" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/guides/javascript/index.html:470
#, 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}Siga el puente del portapapeles de Notion{ph1} {ph2}Aplique el mismo "
"enfoque a una aplicación Electron empaquetada.{ph3}"

#. {ph0}: <a href="../browser/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:476
#, 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}Observar una exportación del navegador{ph1}{ph2}Capture un clic real y "
"vea qué solicitud realiza.{ph3}"

#. {ph0}: <a href="../native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:482
#, 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}Sigue una función nativa{ph1}{ph2}Continúe en binario cuando una "
"característica dependa del código nativo.{ph3}"

#: website/public/guides/javascript/index.html:6
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript and Electron Analysis — REA"
msgstr "Análisis de JavaScript y Electron-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 ""
"Rastree una exportación de Notes CSV a través de una API de renderizador, "
"precarga y controlador IPC con REA . Incluye archivos de ejemplo "
"descargables y un resultado de análisis verificado."

#: website/public/guides/javascript/index.html:210
msgctxt "page:guides/javascript/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/guides/javascript/index.html:220
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript y Electron"

#: website/public/guides/javascript/index.html:282
msgctxt "page:guides/javascript/index.html"
msgid "Copy example prompt"
msgstr "Copie el mensaje de ejemplo"

#: website/public/guides/javascript/index.html:431
msgctxt "page:guides/javascript/index.html"
msgid "Copy static application analysis"
msgstr "Copiar análisis de aplicaciones estáticas"

#: website/public/guides/javascript/index.html:509
msgctxt "page:guides/javascript/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/guides/native/index.html:107
msgctxt "page:guides/native/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/native/index.html:199
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Native analysis"
msgstr ""
"{ph0}Inicio{ph1} / {ph2}Guías{ph3} / Análisis de programas de código máquina"

#. {ph0}: <br />
#: website/public/guides/native/index.html:202
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "Recover DX-Ball's{ph0}sound-pan calculation."
msgstr ""
"Recuperar DX-Ball 's{ph0}cálculo de la posición del sonido izquierda / "
"derecha."

#: website/public/guides/native/index.html:203
msgctxt "page:guides/native/index.html"
msgid ""
"Inspect the original instructions, identify the input and constants, then "
"check the recovered C."
msgstr ""
"Inspeccione las instrucciones originales, identifique la entrada y las "
"constantes, luego verifique la C recuperada."

#: website/public/guides/native/index.html:210
msgctxt "page:guides/native/index.html"
msgid "In this guide"
msgstr "En esta guía"

#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/native/index.html:212
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}El ejemplo{ph1}"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/native/index.html:213
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Pregúntele a su agente{ph1}"

#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/native/index.html:214
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Read the REA results{ph1}"
msgstr "{ph0}Lea los resultados del REA{ph1}"

#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/native/index.html:215
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Recover and check{ph1}"
msgstr "{ph0}Recuperar y comprobar{ph1}"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/native/index.html:216
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Use your own binary{ph1}"
msgstr "{ph0}Usa tu propio binario{ph1}"

#: website/public/guides/native/index.html:221
msgctxt "page:guides/native/index.html"
msgid "Calculate left/right sound panning"
msgstr "Calcular el posicionamiento del sonido estéreo izquierdo/derecho"

#: website/public/guides/native/index.html:222
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 ""
"En DX-Ball, un golpe de ladrillo proporciona una posición horizontal de la "
"pantalla. El código de sonido lo convierte en un valor de panorámica "
"izquierda / derecha."

#. {ph0}: <code>0x00406400</code>
#. {ph1}: <code>__ftol()</code>
#: website/public/guides/native/index.html:226
#, 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 función de inicio, {ph0}, tiene un resultado corto del descompilador: una"
" llamada a {ph1}.  REA también devuelve sus instrucciones y llamadas, que le"
" dan al agente una forma de investigar la aritmética faltante."

#: website/public/guides/native/index.html:233
msgctxt "page:guides/native/index.html"
msgid "New to these terms?"
msgstr "¿Eres nuevo en estos términos?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>MOV</code>
#. {ph3}: <code>ADD</code>
#: website/public/guides/native/index.html:235
#, 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}Instrucciones:{ph1} los pasos que ejecuta el procesador, que se "
"muestran en forma legible, como {ph2} o {ph3}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:240
#, 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}Resultado del descompilador / pseudocódigo:{ph1} el intento de una "
"herramienta de análisis de volver a convertir las instrucciones en código "
"tipo C. Puede perder partes, como en este ejemplo."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:245
#, 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}Llamador:{ph1} una función que llama a esta. Muestra qué valores se "
"pasan."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x00406400</code>
#: website/public/guides/native/index.html:249
#, 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}Dirección:{ph1} una ubicación en el programa, escrita en hexadecimal, "
"como {ph2}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:253
#, 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} números fijos almacenados en el programa, leídos como "
"bytes sin procesar y decodificados."

#: website/public/guides/native/index.html:260
msgctxt "page:guides/native/index.html"
msgid "Three pieces of evidence, one calculation"
msgstr "Tres pruebas, un cálculo"

#. {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:264
#, 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 * Instrucciones{ph1}{ph2}Una entrada entera{ph3}{ph4}Una lectura de "
"pila proporciona el valor utilizado por las instrucciones de coma "
"flotante.{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:272
#, 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 * Llamador{ph1}{ph2}Una coordenada de pantalla{ph3}{ph4}El llamador "
"golpeado por un ladrillo pasa {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:280
#, 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 * Bytes de datos{ph1}{ph2}Las constantes "
"numéricas{ph3}{ph4}Decodificación de bytes referenciados a {ph5}, {ph6} y un"
" valor de escala.{ph7}"

#: website/public/guides/native/index.html:292
msgctxt "page:guides/native/index.html"
msgid ""
"REA supplies the instructions, call relationship and bytes. The agent "
"interprets them together."
msgstr ""
"REA proporciona las instrucciones, la relación función-llamada y los bytes. "
"El agente los interpreta juntos."

#: website/public/guides/native/index.html:299
msgctxt "page:guides/native/index.html"
msgid "Ask about the behavior"
msgstr "Pregunte sobre el comportamiento"

#. {ph0}: <a href="../../get-started/#agent" >
#. {ph1}: </a >
#. {ph2}: <a href="../../get-started/#native" >
#. {ph3}: </a >
#: website/public/guides/native/index.html:300
#, 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 ""
"Después {ph0}conectando REA a su agente{ph1} y {ph2}configuración de una "
"herramienta de análisis de programas de código máquina{ph3}, proporcione el "
"ejecutable local y una pregunta:"

#: website/public/guides/native/index.html:311
msgctxt "page:guides/native/index.html"
msgid "Which analysis tool should I use?"
msgstr "¿Qué herramienta de análisis debo usar?"

#: website/public/guides/native/index.html:312
msgctxt "page:guides/native/index.html"
msgid "REA needs one of these to read native programs:"
msgstr "REA necesita uno de estos para leer programas nativos:"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:314
#, 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 o Linux): La configuración de REA lo detecta u "
"ofrece instalarlo. En macOS , abra Hopper una vez y elija el modo de "
"demostración o active una licencia antes de su primer análisis."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:320
#, 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 o Linux; experimental en Windows): gratis, pero "
"necesita un Ghidra 12.1 existente.x instalación y un JDK 21 de 64 bits o más"
" reciente."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:325
#, 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 ): para una configuración IDA existente con un "
"registro MCP."

#. {ph0}: <a href="../../get-started/#native">
#. {ph1}: </a>
#: website/public/guides/native/index.html:330
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "See {ph0}Set up native analysis{ph1} for the steps."
msgstr ""
"Véase {ph0}Configurar el análisis de programas de código máquina{ph1} para "
"los pasos."

#. {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:338
#, 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}Su agente de codificación"

#: website/public/guides/native/index.html:342
#: website/public/guides/native/index.html:473
msgctxt "page:guides/native/index.html"
msgid "Copy"
msgstr "Copiar"

#. {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:351
#, 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}Use REA para averiguar cómo DX-Ball calcula el "
"posicionamiento del sonido estéreo. Explique el cálculo y muestre el "
"código.{ph3}{ph4}{ph5}"

#: website/public/guides/native/index.html:359
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 ""
"Mensaje de ejemplo. Proporcione a su agente la ruta al ejecutable local de "
"DX-Ball 1.07.  REA no incluye DX-Ball, así que use su propia copia o haga el"
" mismo tipo de pregunta sobre otro pequeño programa Windows que tenga."

#: website/public/guides/native/index.html:366
msgctxt "page:guides/native/index.html"
msgid "How do I get a file's full path?"
msgstr "¿Cómo obtengo la ruta completa de un archivo?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:368
#, 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} en el Explorador de archivos, haga clic con el botón "
"derecho en el archivo y elija {ph2}Copiar como ruta{ph3}. En Windows 10, "
"mantenga presionada la tecla Mayús mientras hace clic con el botón derecho."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:373
#, 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} en Finder, haga clic con el botón derecho en el archivo, "
"mantenga presionada la opción y elija {ph2}Copie \"\"\" como nombre de "
"ruta{ph3}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:377
#, 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}Cualquier sistema:{ph1} arrastre el archivo a una ventana de terminal y"
" aparecerá su ruta."

#: website/public/guides/native/index.html:385
msgctxt "page:guides/native/index.html"
msgid "Read the REA results"
msgstr "Lea los resultados del REA"

#: website/public/guides/native/index.html:386
msgctxt "page:guides/native/index.html"
msgid "Read the input"
msgstr "Lea la entrada"

#: website/public/guides/native/index.html:395
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 ""
"Las instrucciones cargan un argumento entero y lo convierten para aritmética"
" de coma flotante. Esta es la entrada ausente en la primera vista de "
"pseudocódigo."

#: website/public/guides/native/index.html:400
msgctxt "page:guides/native/index.html"
msgid "Follow the caller"
msgstr "Siga a la persona que llama"

#. {ph0}: <code>0x14</code>
#: website/public/guides/native/index.html:409
#, 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 identifica a la persona que llama al golpe de ladrillo. Sus "
"instrucciones anteriores multiplican la coordenada del mosaico por 30; "
"sumando {ph0} (20) da la posición de la pantalla del ladrillo."

#: website/public/guides/native/index.html:414
msgctxt "page:guides/native/index.html"
msgid "Read the referenced constants"
msgstr "Lee las constantes a las que se hace referencia"

#: website/public/guides/native/index.html:425
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 ""
"La aritmética hace referencia a estas direcciones. La lectura de los bytes "
"proporciona los valores reales; el orden de instrucción le dice al agente "
"cómo se usan."

#: website/public/guides/native/index.html:432
msgctxt "page:guides/native/index.html"
msgid "Write and check the recovered function"
msgstr "Escriba y verifique la función recuperada"

#: website/public/guides/native/index.html:441
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 ""
"Con una escala de 1.0, las posiciones de pantalla 0, 320 y 640 se asignan a "
"-500, 0 y 500 antes de la conversión de enteros. El cálculo coloca el centro"
" de la pantalla en el centro del campo estéreo."

#: website/public/guides/native/index.html:446
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 ""
"El agente utilizó los hallazgos de REA para escribir el C. Comprobaciones "
"separadas compararon 3205 entradas con la función x86 original y "
"reprodujeron los 63 bytes compilados de la función completa."

#. {ph0}: <a href="../../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:451
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}See the full investigation and assembly-to-C comparison{ph1}"
msgstr ""
"{ph0}Vea la investigación completa y la comparación de assembly-to-C{ph1}"

#: website/public/guides/native/index.html:458
msgctxt "page:guides/native/index.html"
msgid "Try it with your own binary"
msgstr "Pruébalo con tu propio binario"

#. {ph0}: <a href="../../get-started/#native" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:459
#, 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}Conecte un proveedor de análisis de programas de código máquina{ph1}, "
"luego proporcione a su agente un ejecutable o biblioteca local y una función"
" para investigar .  Las preguntas iniciales útiles incluyen \"¿ Cómo se "
"analiza este archivo?\"o\" ¿Qué función maneja esta acción de menú?”"

#: website/public/guides/native/index.html:466
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 ya conoce el nombre o la dirección de una función, puede consultarla "
"desde el terminal. Para una instalación Ghidra configurada:"

#: website/public/guides/native/index.html:472
msgctxt "page:guides/native/index.html"
msgid "Function analysis"
msgstr "Análisis de funciones"

#. {ph0}: <code>main</code>
#: website/public/guides/native/index.html:485
#, 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 ""
"Reemplace la ruta de destino y {ph0} con su propio nombre de función o "
"dirección. Cada invocación CLI importa y analiza el binario, luego cierra su"
" sesión. Las consultas MCP de su agente reutilizan el binario importado "
"mientras esa sesión está abierta."

#: website/public/guides/native/index.html:491
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 ""
"Lea el pseudocódigo junto con las instrucciones y referencias. Cuando un "
"resultado deja una llamada o un valor sin resolver, use esa ubicación como "
"la siguiente pregunta."

#: website/public/guides/native/index.html:6
msgctxt "page:guides/native/index.html"
msgid "Native Binary Analysis — REA"
msgstr "Análisis Binario Nativo-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 ""
"Recupere un cálculo nativo con REA: inspeccione instrucciones, siga a una "
"persona que llama, lea constantes y verifique C reconstruido."

#: website/public/guides/native/index.html:209
msgctxt "page:guides/native/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/guides/native/index.html:219
msgctxt "page:guides/native/index.html"
msgid "Native analysis"
msgstr "Análisis de programas de código máquina"

#: website/public/guides/native/index.html:342
msgctxt "page:guides/native/index.html"
msgid "Copy example prompt"
msgstr "Copie el mensaje de ejemplo"

#: website/public/guides/native/index.html:473
msgctxt "page:guides/native/index.html"
msgid "Copy function analysis"
msgstr "Análisis de la función de copia"

#: website/public/guides/native/index.html:515
msgctxt "page:guides/native/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/index.html:109
msgctxt "page:index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#: website/public/index.html:201 website/public/index.html:211
#: website/public/index.html:209
msgctxt "page:index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/index.html:202 website/public/index.html:250
msgctxt "page:index.html"
msgid "Set up REA"
msgstr "Configurar REA"

#. {ph0}: <a href="#setup" aria-current="location">
#. {ph1}: </a>
#: website/public/index.html:213
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Set up REA{ph1}"
msgstr "{ph0}Configurar REA {ph1}"

#. {ph0}: <a href="#dinosaur">
#. {ph1}: </a>
#: website/public/index.html:215
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Dinosaur game{ph1}"
msgstr "{ph0}Juego de dinosaurios{ph1}"

#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:216
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Calculator{ph1}"
msgstr "{ph0}Calculadora{ph1}"

#. {ph0}: <a href="#try-rea">
#. {ph1}: </a>
#: website/public/index.html:218
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Try REA{ph1}"
msgstr "{ph0}Prueba REA {ph1}"

#. {ph0}: <a href="#analyze">
#. {ph1}: </a>
#: website/public/index.html:219
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Go deeper{ph1}"
msgstr "{ph0}Profundiza{ph1}"

#: website/public/index.html:228
msgctxt "page:index.html"
msgid "Reverse engineering, with your coding agent"
msgstr "Ingeniería inversa, con su agente de codificación"

#. {ph0}: <br />
#: website/public/index.html:229
#, python-brace-format
msgctxt "page:index.html"
msgid "Find out how{ph0}software works."
msgstr "Descubre cómo{ph0}funciona el software."

#: website/public/index.html:251
msgctxt "page:index.html"
msgid "Copy this into your coding agent:"
msgstr "Copia este prompt en tu agente de programación:"

#. {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:254
#, 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}Su agente de codificación"

#: website/public/index.html:259 website/public/index.html:283
#: website/public/index.html:519 website/public/index.html:600
#: website/public/index.html:824 website/public/index.html:1136
#: website/public/index.html:1164
msgctxt "page:index.html"
msgid "Copy"
msgstr "Copiar"

#: website/public/index.html:280
msgctxt "page:index.html"
msgid "Or run this in your terminal:"
msgstr "O ejecuta esto en la terminal:"

#: website/public/index.html:292
msgctxt "page:index.html"
msgid "Approve the setup plan, then restart your agent."
msgstr "Revisa y aprueba los cambios propuestos. Después, reinicia tu agente."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:368
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}01{ph1} Decode branches"
msgstr "{ph0}01{ph1} Decodificar ramas"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:376
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}02{ph1} Trace calls"
msgstr "{ph0}02{ph1} Rastrear llamadas"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:384
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}03{ph1} Recover the rule"
msgstr "{ph0}03{ph1} Recuperar la regla"

#. {ph0}: <span>
#. {ph1}: </span>
#. {ph2}: <span class="assembly-disclosure" aria-hidden="true" >
#. {ph3}: </span>
#: website/public/index.html:395
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Original x64 · selected instructions{ph1} {ph2}{ph3}"
msgstr "{ph0}Original x64 * instrucciones seleccionadas{ph1} {ph2}{ph3}"

#: website/public/index.html:437
msgctxt "page:index.html"
msgid "01 · Which branch?"
msgstr "01 * ¿Qué sucursal?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:438
#, 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} Dos saltos al mismo lugar. ¿Qué operadores son "
"estos?”"

#: website/public/index.html:442
msgctxt "page:index.html"
msgid "Look up the command IDs, then label the branch."
msgstr "Busque los ID de comando y luego etiquete la rama."

#: website/public/index.html:448
msgctxt "page:index.html"
msgid "Divide ÷"
msgstr "Divide ÷"

#: website/public/index.html:452
msgctxt "page:index.html"
msgid "Multiply ×"
msgstr "Multiplicar ×"

#: website/public/index.html:457
msgctxt "page:index.html"
msgid "02 · What do the calls do?"
msgstr "02 · ¿Qué hacen las funciones llamadas?"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:458
#, 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á claro. Las llamadas son solo direcciones. {ph0}¿Cuál divide? ¿Qué"
" valor entra?{ph1}”"

#: website/public/index.html:464
msgctxt "page:index.html"
msgid "Inspect the helpers and trace the stored values."
msgstr ""
"Inspeccione las funciones auxiliares y rastree los valores almacenados."

#: website/public/index.html:474
msgctxt "page:index.html"
msgid "Divide"
msgstr "Divide"

#: website/public/index.html:479
msgctxt "page:index.html"
msgid "03 · What is the rule?"
msgstr "03 * ¿Cuál es la regla?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:480
#, 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 ""
"\"Esta ruta se multiplica por la otra entrada. Entonces {ph0}10% significa "
"10% de 200{ph1} después de +.”"

#: website/public/index.html:484
msgctxt "page:index.html"
msgid "Name the operands and check both operator paths."
msgstr ""
"Asigne un nombre a los operandos y verifique ambas rutas de operadores."

#: website/public/index.html:500 website/public/index.html:427
msgctxt "page:index.html"
msgid "Illustrative expert reasoning"
msgstr "Razonamiento experto ilustrativo"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:503
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}You decode the instructions, follow the calls and reconstruct the "
"calculation.{ph1}"
msgstr ""
"{ph0}Decodifica las instrucciones, sigue las llamadas a funciones y "
"reconstruye el cálculo.{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:514
#, 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}Ejemplo de indicador * Calculadora"

#: website/public/index.html:536
msgctxt "page:index.html"
msgid "Example answer · based on the findings"
msgstr "Respuesta de ejemplo * basada en los hallazgos"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:539
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"After +, the % button takes {ph0}a percentage of the first number.{ph1}"
msgstr ""
"Después de +, el botón % toma {ph0}un porcentaje del primer número.{ph1}"

#: website/public/index.html:552
msgctxt "page:index.html"
msgid "REA supplies"
msgstr "REA proporciona"

#: website/public/index.html:553
msgctxt "page:index.html"
msgid "The handler’s instructions, decompiled code and calls."
msgstr "Instrucciones del manejador, código descompilado y llamadas."

#: website/public/index.html:558
msgctxt "page:index.html"
msgid "Your agent explains"
msgstr "Tu agente explica"

#: website/public/index.html:559
msgctxt "page:index.html"
msgid "Which branch applies, what it calculates and how to rebuild it."
msgstr "Qué rama se aplica, qué calcula y cómo reconstruirla."

#: website/public/index.html:583
msgctxt "page:index.html"
msgid "Example 01 · Chrome’s dinosaur game"
msgstr "Ejemplo 01 * Juego de dinosaurios de Chrome"

#: website/public/index.html:584
msgctxt "page:index.html"
msgid "Why does the dinosaur get faster?"
msgstr "¿Por qué el dinosaurio va cada vez más rápido?"

#: website/public/index.html:663
msgctxt "page:index.html"
msgid "Play"
msgstr "Jugar"

#: website/public/index.html:666
msgctxt "page:index.html"
msgid "Jump ↑"
msgstr "Saltar ↑"

#: website/public/index.html:667
msgctxt "page:index.html"
msgid "Restart"
msgstr "Reiniciar"

#: website/public/index.html:670
msgctxt "page:index.html"
msgid "Speed"
msgstr "Velocidad"

#: website/public/index.html:680
msgctxt "page:index.html"
msgid "Use the recovered acceleration rule"
msgstr "Utilice la regla de aceleración recuperada"

#: website/public/index.html:684
msgctxt "page:index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "Regla original: comience en 6, luego aumente hacia 13."

#: website/public/index.html:687
msgctxt "page:index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr ""
"Mueva el control deslizante para establecer su propia velocidad. Espaciar o "
"saltar despeja un cactus."

#. {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:609
#, 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}Utilice REA para inspeccionar este juego de dinosaurios. "
"¿Por qué se vuelve más rápido? Muestre la regla de velocidad, luego cree una"
" versión pequeña con una velocidad ajustable.{ph3}{ph4}{ph5}"

#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#: website/public/index.html:707
#, python-brace-format
msgctxt "page:index.html"
msgid "Inspected target: {ph0}wayou’s Chromium-derived browser edition{ph1}."
msgstr ""
"Objetivo inspeccionado: {ph0}edición de navegador derivada de Chromium de "
"wayou{ph1}."

#: website/public/index.html:698
msgctxt "page:index.html"
msgid "Open the speed lab →"
msgstr "Abra el laboratorio de velocidad →"

#: website/public/index.html:729
msgctxt "page:index.html"
msgid "What each part does"
msgstr "Qué hace cada parte"

#. {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:731
#, 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}Lee el guión del juego de carrera{ph3}{ph4}Devuelva "
"su código y configuración reales al agente.{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:738
#, 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 * Su agente{ph1}{ph2}Vuelva a generar la regla, agregue un "
"control{ph3}{ph4}Usa la aceleración recuperada en un juego pequeño con un "
"control deslizante de velocidad.{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:746
#, 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 * Tú{ph1}{ph2}Cambia la velocidad y juega{ph3}{ph4}Prueba la "
"aceleración original y luego elige tu propio ritmo.{ph5}"

#: website/public/index.html:704
msgctxt "page:index.html"
msgid "See the script, checks and how to try the analysis"
msgstr "Vea el script, las comprobaciones y cómo probar el análisis"

#. {ph0}: <code>index.js</code>
#: website/public/index.html:756
#, 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 inspeccionó la edición del navegador HTTP a través de una conexión de "
"depuración local y devolvió el archivo cargado {ph0}, incluyendo su fuente y"
" resumen."

#: website/public/index.html:769
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 ""
"Llamamos a la función de actualización del juego original en una "
"verificación controlada del navegador, con obstáculos y programación "
"automática deshabilitados. Después de 4.000 actualizaciones, la velocidad "
"era de 10,0; después de 10.000, era de 13,0, redondeado a un decimal."

#. {ph0}: <a href="examples/dino-lab/">
#. {ph1}: </a>
#: website/public/index.html:775
#, 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 ""
"El nuevo minijuego mantiene esa regla de velocidad. Su código de dibujo, "
"salto y colisión es una pequeña implementación de enseñanza. {ph0}Abra el "
"laboratorio{ph1} para ver el nuevo código y ejecutar la misma comprobación "
"de velocidad."

#. {ph0}: <a href="guides/browser/#prepare">
#. {ph1}: </a>
#. {ph2}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph3}: </a >
#: website/public/index.html:781
#, 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 ""
"Para inspeccionar el objetivo usted mismo, siga las instrucciones {ph0}pasos"
" de conexión del navegador{ph1} usando {ph2}la página del dinosaurio{ph3}. "
"Proporcione a su agente la URL de esa página y su punto final de depuración "
"local, luego copie el mensaje anterior."

#. {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:790
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Inspected speed code{ph1} · {ph2}Chromium Authors · BSD license{ph3}"
msgstr ""
"{ph0}Código de velocidad inspeccionado{ph1} · {ph2} Chromium Autores * "
"Licencia BSD{ph3}"

#: website/public/index.html:807
msgctxt "page:index.html"
msgid "Example 02 · Windows Calculator"
msgstr "Ejemplo 02 * Calculadora Windows"

#: website/public/index.html:808
msgctxt "page:index.html"
msgid "Rebuild Calculator’s % button."
msgstr "Recrea el botón % de la calculadora."

#: website/public/index.html:913
msgctxt "page:index.html"
msgid "Reset"
msgstr "Restablecer"

#: website/public/index.html:921
msgctxt "page:index.html"
msgid "10% of 200 = 20. Then 200 + 20 = 220."
msgstr "10% de 200 = 20. Entonces 200 + 20 = 220."

#: website/public/index.html:924
msgctxt "page:index.html"
msgid "Interactive illustration of the inspected percentage rule."
msgstr "Ilustración interactiva de la regla de porcentaje inspeccionado."

#. {ph0}: <code>previous = 200</code>
#. {ph1}: <code>current = 10</code>
#: website/public/index.html:932
#, python-brace-format
msgctxt "page:index.html"
msgid "For this example, {ph0} and {ph1}."
msgstr "Para este ejemplo, {ph0} y {ph1}."

#. {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:833
#, 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}Use REA para inspeccionar el botón % de la calculadora "
"Windows. Recupere las reglas después de + y×, luego construya una pequeña "
"calculadora que use ambas.{ph3}{ph4}{ph5}"

#: website/public/index.html:849
msgctxt "page:index.html"
msgid "With +"
msgstr "Con +"

#. {ph0}: <span>
#. {ph1}: </span >
#. {ph2}: <code>10% of 200 = 20 → 200 + 20 = 220</code>
#: website/public/index.html:850
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Take 10% of the first number.{ph1}{ph2}"
msgstr "{ph0}Toma el 10% del primer número.{ph1}{ph2}"

#: website/public/index.html:856
msgctxt "page:index.html"
msgid "With ×"
msgstr "Con ×"

#. {ph0}: <span>
#. {ph1}: </span>
#. {ph2}: <code>200 × 0.1 = 20</code>
#: website/public/index.html:857
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Turn 10% into 0.1.{ph1}{ph2}"
msgstr "{ph0}Convierta el 10% en 0.1.{ph1}{ph2}"

#: website/public/index.html:947
msgctxt "page:index.html"
msgid "From the installed app to a working % button"
msgstr "Desde la aplicación instalada hasta un botón % que funciona"

#. {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:960
#, 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 lee la biblioteca{ph1}{ph2}Devuelve el código del controlador "
"% {ph3}{ph4}La función verifica el operador y usa 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:968
#, 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 * Su agente lo interpreta{ph1}{ph2}Explicar y reproducir las "
"reglas{ph3}{ph4}Verifique la sucursal con la fuente de Microsoft, luego "
"intente + y × arriba.{ph5}"

#: website/public/index.html:931
msgctxt "page:index.html"
msgid "See the real code and how the answer was checked"
msgstr "Vea el código real y cómo se verificó la respuesta"

#: website/public/index.html:1003
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 ""
"Inspeccionado con REA 4.1.0: Calculadora Windows 11.2508.4.0, x64. El "
"resumen legible usa nombres de la fuente pública de Microsoft para explicar "
"la rama recuperada."

#. {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:1008
#, 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}Porcentaje de implementación{ph1} · {ph2}Casos de prueba de "
"Microsoft{ph3} · {ph4}Guía de configuración nativa{ph5}"

#: website/public/index.html:1077
msgctxt "page:index.html"
msgid "Your first investigation"
msgstr "Su primera investigación"

#: website/public/index.html:1078
msgctxt "page:index.html"
msgid "Try REA on a small app."
msgstr "Pruebe REA en una aplicación pequeña."

#: website/public/index.html:1079
msgctxt "page:index.html"
msgid ""
"Download our Notes example, trace its CSV export, and check one changed "
"input."
msgstr ""
"Descargue nuestro ejemplo de Notes, rastree su exportación CSV y verifique "
"una entrada modificada."

#: website/public/index.html:1084
msgctxt "page:index.html"
msgid "Try the guided example"
msgstr "Pruebe el ejemplo guiado"

#: website/public/index.html:1101
msgctxt "page:index.html"
msgid "Native binaries"
msgstr "Programas de código máquina"

#: website/public/index.html:1102
msgctxt "page:index.html"
msgid ""
"Inspect functions, strings, references and call relationships in executables"
" and libraries."
msgstr ""
"Inspeccione funciones, cadenas, referencias y relaciones función-llamada en "
"ejecutables y bibliotecas."

#: website/public/index.html:1106
msgctxt "page:index.html"
msgid "Native analysis guide"
msgstr "Guía de análisis de programas de código máquina"

#: website/public/index.html:1109
msgctxt "page:index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript y 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 ""
"Asigne módulos, rutas, IPC y dependencias nativas desde una carpeta de "
"aplicaciones o un archivo ASAR."

#: website/public/index.html:1114
msgctxt "page:index.html"
msgid "Application workflows"
msgstr "Flujos de trabajo de aplicaciones"

#: website/public/index.html:1117
msgctxt "page:index.html"
msgid "Browser & runtime activity"
msgstr "Actividad del navegador y del tiempo de ejecución"

#: website/public/index.html:1118
msgctxt "page:index.html"
msgid ""
"Capture selected browser or process activity, then compare the results "
"across runs."
msgstr ""
"Capture la actividad seleccionada del navegador o del proceso y, a "
"continuación, compare los resultados entre ejecuciones."

#: website/public/index.html:1122
msgctxt "page:index.html"
msgid "Browser observation guide"
msgstr "Guía de observación del navegador"

#: website/public/index.html:1193
msgctxt "page:index.html"
msgid "Any questions?"
msgstr "¿Tienes preguntas?"

#: website/public/index.html:6
msgctxt "page:index.html"
msgid "REA — Reverse Engineering for Your Coding Agent"
msgstr "REA-Ingeniería Inversa para su Agente de Codificación"

#: 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 ""
"Realice ingeniería inversa de aplicaciones, archivos binarios y "
"comportamiento del navegador con su agente de codificación. Siga guías "
"claras y pruebe ejemplos interactivos con REA ."

#: website/public/index.html:259
msgctxt "page:index.html"
msgid "Copy REA installation prompt"
msgstr "Copie el mensaje de instalación de REA"

#: website/public/index.html:283
msgctxt "page:index.html"
msgid "Copy setup command"
msgstr "Comando Copiar configuración"

#: website/public/index.html:363
msgctxt "page:index.html"
msgid "Follow the manual Calculator analysis"
msgstr "Siga el análisis manual de la calculadora"

#: website/public/index.html:519
msgctxt "page:index.html"
msgid "Copy Calculator percentage question"
msgstr "Copiar pregunta de porcentaje de la calculadora"

#: website/public/index.html:653
msgctxt "page:index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr ""
"Minijuego de dinosaurios. Usa el botón de salto o presiona la barra "
"espaciadora mientras el juego está enfocado."

#: website/public/index.html:600
msgctxt "page:index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "Copie el mensaje de análisis de dinosaurios"

#: website/public/index.html:870
msgctxt "page:index.html"
msgid "Choose the calculation"
msgstr "Elija el cálculo"

#: website/public/index.html:824
msgctxt "page:index.html"
msgid "Copy Calculator analysis prompt"
msgstr "Copie el mensaje de análisis de la calculadora"

#: website/public/index.html:1228
msgctxt "page:index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/showcase/aegis/index.html:108
msgctxt "page:showcase/aegis/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:200
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Android"
msgstr "{ph0}Inicio{ph1} / {ph2}Vitrinas{ph3} / Android"

#: website/public/showcase/aegis/index.html:203
msgctxt "page:showcase/aegis/index.html"
msgid "Case study · Aegis Authenticator"
msgstr "Caso práctico * Autenticador Aegis"

#. {ph0}: <br />
#: website/public/showcase/aegis/index.html:204
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "How does an authenticator{ph0}generate a login code?"
msgstr ""
"Cómo funciona un autenticador{ph0}¿generar un código de inicio de sesión?"

#: website/public/showcase/aegis/index.html:205
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 código de seis dígitos cambia cada 30 segundos. Usa REA para encontrar el"
" cálculo en un APK de Android y luego reconstrúyelo con un reloj que puedas "
"controlar."

#: website/public/showcase/aegis/index.html:210
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis 3.4.3 · Android · Official release APK · 6.9 MB"
msgstr "Aegis 3.4.3 * Android * Versión oficial APK * 6.9 MB"

#: website/public/showcase/aegis/index.html:213
msgctxt "page:showcase/aegis/index.html"
msgid "View Aegis on GitHub"
msgstr "Ver Aegis en GitHub"

#: website/public/showcase/aegis/index.html:219
msgctxt "page:showcase/aegis/index.html"
msgid "From an APK to a code you can reproduce"
msgstr "Desde un APK hasta un código que puedes reproducir"

#. {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:221
#, 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 * Localice la función{ph1}{ph2}3.077 clases → generación de "
"métodos{ph3}{ph4} REA busca en el paquete y rastrea el código utilizado por "
"las acciones de visualización y copia.{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:230
#, 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 * Leer el cálculo{ph1}{ph2}Hora + clave de cuenta → seis "
"dígitos{ph3}{ph4} REA devuelve los métodos y valores predeterminados. El "
"agente explica cómo encajan.{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:238
#, 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 * Reconstruir y comprobar{ph1}{ph2}Cambia el reloj. Mira el "
"código.{ph3}{ph4}Una nueva demostración del navegador reproduce la regla y "
"la compara con casos de referencia pública.{ph5}"

#: website/public/showcase/aegis/index.html:251
msgctxt "page:showcase/aegis/index.html"
msgid "In this case study"
msgstr "En este estudio de caso"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:253
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Pregúntele a su agente{ph1}"

#. {ph0}: <a href="#demo">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:254
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Try the code generator{ph1}"
msgstr "{ph0}Pruebe el generador de código{ph1}"

#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:255
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Find the code with REA{ph1}"
msgstr "{ph0}Encuentra el código con REA {ph1}"

#. {ph0}: <a href="#calculation">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:256
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Read the calculation{ph1}"
msgstr "{ph0}Lea el cálculo{ph1}"

#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:257
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}Compruebe la reconstrucción{ph1}"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:258
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Inspect the APK yourself{ph1}"
msgstr "{ph0}Inspeccione el APK usted mismo{ph1}"

#: website/public/showcase/aegis/index.html:263
msgctxt "page:showcase/aegis/index.html"
msgid "Ask your agent"
msgstr "Pregúntele a su agente"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:264
#, 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 ""
"La aplicación muestra un código de inicio de sesión cambiante. Queremos "
"encontrar {ph0}qué lo hace cambiar{ph1} y reproduce ese comportamiento."

#. {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:270
#, 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}Su agente de codificación"

#: website/public/showcase/aegis/index.html:274
#: website/public/showcase/aegis/index.html:737
msgctxt "page:showcase/aegis/index.html"
msgid "Copy"
msgstr "Copiar"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:294
#, 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 mensaje de ejemplo para el APK descargado, con el análisis de Android de "
"REA configurado. {ph0}Obtenga el APK y la configuración de análisis ↓{ph1}"

#: website/public/showcase/aegis/index.html:302
msgctxt "page:showcase/aegis/index.html"
msgid "Try the code generator"
msgstr "Pruebe el generador de código"

#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/showcase/aegis/index.html:303
#, 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 ""
"La aplicación agrupa el tiempo en {ph0}bloques de 30 segundos.{ph1} Combina "
"el número de bloque con la clave de cuenta para generar un código. La misma "
"clave y bloque producen el mismo código."

#: website/public/showcase/aegis/index.html:310
msgctxt "page:showcase/aegis/index.html"
msgid "Move the clock across 60 seconds"
msgstr "Mueve el reloj 60 segundos"

#: website/public/showcase/aegis/index.html:313
msgctxt "page:showcase/aegis/index.html"
msgid "Time"
msgstr "Tiempo"

#: website/public/showcase/aegis/index.html:315
msgctxt "page:showcase/aegis/index.html"
msgid "seconds"
msgstr "segundos"

#: website/public/showcase/aegis/index.html:316
msgctxt "page:showcase/aegis/index.html"
msgid "Our adjustable example clock"
msgstr "Nuestro reloj de ejemplo ajustable"

#: website/public/showcase/aegis/index.html:319
msgctxt "page:showcase/aegis/index.html"
msgid "30-second block"
msgstr "bloque de 30 segundos"

#: website/public/showcase/aegis/index.html:321
#: website/public/showcase/aegis/index.html:648
msgctxt "page:showcase/aegis/index.html"
msgid "Block"
msgstr "Bloque"

#. {ph0}: <code data-aegis-division>floor(59 / 30)</code>
#. {ph1}: <br />
#. {ph2}: <span data-aegis-window >
#. {ph3}: </span >
#: website/public/showcase/aegis/index.html:322
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}30–59 seconds{ph3}"
msgstr "{ph0}{ph1}{ph2}30-59 segundos{ph3}"

#: website/public/showcase/aegis/index.html:330
msgctxt "page:showcase/aegis/index.html"
msgid "Generated code"
msgstr "Código generado"

#: website/public/showcase/aegis/index.html:338
msgctxt "page:showcase/aegis/index.html"
msgid "Account key + block → six digits"
msgstr "Clave de cuenta + bloque → seis dígitos"

#: website/public/showcase/aegis/index.html:344
msgctxt "page:showcase/aegis/index.html"
msgid "Example time, in seconds"
msgstr "Tiempo de ejemplo, en segundos"

#: website/public/showcase/aegis/index.html:359
#: website/public/showcase/aegis/index.html:659
msgctxt "page:showcase/aegis/index.html"
msgid "59 seconds"
msgstr "59 segundos"

#: website/public/showcase/aegis/index.html:366
#: website/public/showcase/aegis/index.html:664
msgctxt "page:showcase/aegis/index.html"
msgid "60 seconds"
msgstr "60 segundos"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/showcase/aegis/index.html:375
#, 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 ""
"A los 59 segundos: {ph0}287082.{ph1} A los 60 segundos: {ph2}359152.{ph3} "
"Moverse dentro de un bloque deja el código sin cambios."

#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:382
#, 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 clave es fija, pública {ph0}Datos de prueba RFC 6238{ph1}. La "
"demostración implementa el cálculo recuperado del APK ."

#: website/public/showcase/aegis/index.html:389
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The diagram shows the result at 59 seconds. Enable JavaScript to change the "
"clock."
msgstr ""
"El diagrama muestra el resultado a los 59 segundos. Habilite JavaScript para"
" cambiar el reloj."

#: website/public/showcase/aegis/index.html:398
msgctxt "page:showcase/aegis/index.html"
msgid "Find the code with REA"
msgstr "Encuentra el código con REA"

#: website/public/showcase/aegis/index.html:401
msgctxt "page:showcase/aegis/index.html"
msgid "Narrow the APK to three classes"
msgstr "Reduzca el APK a tres clases"

#. {ph0}: <code>TotpInfo</code>
#: website/public/showcase/aegis/index.html:426
#, 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} es el candidato de cálculo; los otros dos se refieren a la barra de "
"progreso y las cuentas importadas.  TOTP significa una contraseña de un solo"
" uso basada en el tiempo."

#: website/public/showcase/aegis/index.html:433
msgctxt "page:showcase/aegis/index.html"
msgid "Connect the generator to the app's display"
msgstr "Conecte el generador a la pantalla de la aplicación"

#. {ph0}: <code>EntryHolder.getOtp</code>
#. {ph1}: <code>TotpInfo.getOtp(timestamp)</code>
#: website/public/showcase/aegis/index.html:461
#, 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 identifica la sobrecarga de la marca de tiempo y encuentra a los "
"llamantes del método base. Inspección {ph0} luego muestra la pantalla "
"llamando {ph1}."

#. {ph0}: <code>com.beemdevelopment.aegis</code>
#: website/public/showcase/aegis/index.html:469
#, 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 ""
"Las solicitudes muestran una ruta de entrada acortada. Los nombres de clase "
"de resultado omiten lo común {ph0} prefijo."

#: website/public/showcase/aegis/index.html:476
msgctxt "page:showcase/aegis/index.html"
msgid "Read the calculation"
msgstr "Lea el cálculo"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:477
#, 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 ""
"REA devoluciones {ph0}la conversión del reloj, la configuración "
"predeterminada y los métodos de generación.{ph1} Los constructores "
"establecen un intervalo de 30 segundos y seis dígitos; el método de marca de"
" tiempo convierte los segundos en un número de bloque."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:492
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}01{ph1} Time block"
msgstr "{ph0}01{ph1} Bloque de tiempo"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:500
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}02{ph1} Key + block"
msgstr "{ph0}02{ph1} Tecla + bloque"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:508
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}03{ph1} Six digits"
msgstr "{ph0}03{ph1} Seis dígitos"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:567
#, 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}El tiempo elige el bloque.{ph1} Los segundos 30 a 59 dan todos el "
"bloque 1. A los 60 segundos, el bloque se convierte en 2."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:573
#, 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 clave también importa.{ph1} El generador combina la clave de cuenta "
"con el bloque. Una cuenta con una clave diferente puede mostrar un código "
"diferente al mismo tiempo."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:580
#, 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}Mantén seis dígitos.{ph1} El resto después de la división por 1.000.000"
" se rellena con ceros cuando es necesario, por lo que un código puede "
"comenzar con 0."

#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:587
#, 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 ""
"Extractos de varios métodos inspeccionados, con envoltura de línea para "
"mostrar. El panel de la derecha es un resumen explicativo. {ph0} El código "
"Aegis es GPL-3.0.{ph1}"

#: website/public/showcase/aegis/index.html:596
msgctxt "page:showcase/aegis/index.html"
msgid "Inside the generator"
msgstr "Dentro del generador"

#. {ph0}: <code>generateOTP</code>
#. {ph1}: <code>kotlin.ExceptionsKt</code>
#. {ph2}: <code>TotpInfo</code>
#. {ph3}: <code>HOTP</code>
#: website/public/showcase/aegis/index.html:597
#, 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 ""
"El APK lanzado pone {ph0} en {ph1}.  REA sigue la llamada de {ph2} y "
"devuelve este cuerpo; la fuente original llama al ayudante {ph3}."

#: website/public/showcase/aegis/index.html:619
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 ""
"El último byte hash selecciona una posición. Cuatro bytes en esa posición "
"proporcionan un número positivo de 31 bits; el formateo lo reduce al número "
"solicitado de dígitos. El último argumento del constructor selecciona la "
"rama de formato de código introducida por compilación."

#. {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:626
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Compare with the matching release source{ph1}."
msgstr "{ph0}Compare con la fuente de publicación correspondiente{ph1}."

#: website/public/showcase/aegis/index.html:636
msgctxt "page:showcase/aegis/index.html"
msgid "Check the reconstruction"
msgstr "Compruebe la reconstrucción"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:637
#, 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 ""
"Ensamblamos los métodos Java devueltos por REA seleccionados en un pequeño "
"programa de prueba. Su producción coincidió con una reconstrucción "
"independiente en {ph0}133 casos de prueba{ph1}, incluidos los límites de los"
" bloques de tiempo y los códigos que comienzan con cero."

#: website/public/showcase/aegis/index.html:647
msgctxt "page:showcase/aegis/index.html"
msgid "Example time"
msgstr "Tiempo de ejemplo"

#: website/public/showcase/aegis/index.html:649
msgctxt "page:showcase/aegis/index.html"
msgid "Six-digit code"
msgstr "Código de seis dígitos"

#: website/public/showcase/aegis/index.html:654
msgctxt "page:showcase/aegis/index.html"
msgid "30 seconds"
msgstr "30 segundos"

#: website/public/showcase/aegis/index.html:669
msgctxt "page:showcase/aegis/index.html"
msgid "1,111,111,109 seconds"
msgstr "1,111,111,109 segundos"

#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:676
#, 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 ""
"El generador también coincide con los seis casos de referencia SHA-1 "
"publicados en {ph0}RFC 6238 (en inglés){ph1}. Compare la implementación del "
"navegador con ellos:"

#: website/public/showcase/aegis/index.html:684
msgctxt "page:showcase/aegis/index.html"
msgid "Run reference checks"
msgstr "Ejecutar comprobaciones de referencia"

#: website/public/showcase/aegis/index.html:691
msgctxt "page:showcase/aegis/index.html"
msgid "Read the demo's calculation"
msgstr "Lea el cálculo de la demostración"

#: website/public/showcase/aegis/index.html:695
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The reference cases use eight digits. The check also verifies their six-"
"digit results."
msgstr ""
"Los casos de referencia usan ocho dígitos. La verificación también verifica "
"sus resultados de seis dígitos."

#: website/public/showcase/aegis/index.html:704
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Verification runs extracted Java methods and the new demo. The Android APK "
"was inspected statically."
msgstr ""
"La verificación ejecuta métodos Java extraídos y la nueva demostración. El "
"Android APK fue inspeccionado estáticamente."

#: website/public/showcase/aegis/index.html:711
msgctxt "page:showcase/aegis/index.html"
msgid "Inspect the APK yourself"
msgstr "Inspeccione el APK usted mismo"

#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:712
#, 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}Configurar REA {ph1} en macOS o Linux , descargue estos dos archivos en"
" la misma carpeta. En Windows, use un entorno Linux como WSL."

#. {ph0}: <code>JAVA_HOME</code>
#. {ph1}: <code>PATH</code>
#: website/public/showcase/aegis/index.html:717
#, 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 ""
"El análisis de Android necesita un JDK 17 completo o posterior. Selecciónelo"
" con {ph0} o {ph1}. Este caso usó JDK 21."

#: website/public/showcase/aegis/index.html:733
msgctxt "page:showcase/aegis/index.html"
msgid "Point REA at the provider file and inspect the APK:"
msgstr "Apunte REA al archivo del proveedor e inspeccione el APK :"

#: website/public/showcase/aegis/index.html:736
msgctxt "page:showcase/aegis/index.html"
msgid "macOS / Linux"
msgstr "macOS / Linux"

#. {ph0}: <code>REA_JADX_MCP_JAR</code>
#: website/public/showcase/aegis/index.html:750
#, 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 ""
"Su agente puede continuar a través del REA de CLI utilizando el mensaje "
"anterior. Para MCP , agregue {ph0} al entorno del servidor REA y vuelva a "
"conectarlo."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:755
#, 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 ""
"Una pregunta siguiente: {ph0}¿qué sucede cuando una cuenta usa ocho dígitos "
"o un intervalo de tiempo diferente?{ph1}"

#: website/public/showcase/aegis/index.html:765
msgctxt "page:showcase/aegis/index.html"
msgid "Sources"
msgstr "Fuentes"

#. {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:767
#, 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}Lanzamiento oficial de Aegis 3.4.3{ph1} · {ph2}Confirmación de fuente "
"coincidente{ph3} · {ph4}Licencia 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:783
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}RFC 6238 reference cases{ph1} · {ph2}Demo test data{ph3}"
msgstr ""
"{ph0}Casos de referencia RFC 6238{ph1} · {ph2}Datos de prueba de "
"demostración{ph3}"

#: website/public/showcase/aegis/index.html:790
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 ""
"Inspeccionado con REA 6.1.0 el 9 de octubre de 2026. Los extractos "
"descompilados se acreditan a Aegis; el diagrama, el resumen legible y la "
"reconstrucción del navegador son nuevo material didáctico."

#: website/public/showcase/aegis/index.html:6
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK Reverse Engineering: Login Codes — REA"
msgstr "Aegis APK Ingeniería inversa: Códigos de inicio de sesión-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 ""
"Inspeccione el Aegis Android APK con REA, recupere su cálculo de código de "
"inicio de sesión de seis dígitos e intente una reconstrucción con un reloj "
"ajustable."

#: website/public/showcase/aegis/index.html:250
msgctxt "page:showcase/aegis/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/showcase/aegis/index.html:261
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK case study"
msgstr "Estudio de caso Aegis APK"

#: website/public/showcase/aegis/index.html:274
msgctxt "page:showcase/aegis/index.html"
msgid "Copy Aegis example prompt"
msgstr "Copie el indicador de ejemplo Aegis"

#: website/public/showcase/aegis/index.html:487
msgctxt "page:showcase/aegis/index.html"
msgid "Follow the login-code calculation"
msgstr "Siga el cálculo del código de inicio de sesión"

#: website/public/showcase/aegis/index.html:737
msgctxt "page:showcase/aegis/index.html"
msgid "Copy APK inspection command"
msgstr "Copie el comando de inspección APK"

#: website/public/showcase/aegis/index.html:814
msgctxt "page:showcase/aegis/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/showcase/ctf/index.html:107
msgctxt "page:showcase/ctf/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/ctf/index.html:199
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / CTF"
msgstr "{ph0}Inicio{ph1} / {ph2}Vitrinas{ph3} / CTF"

#: website/public/showcase/ctf/index.html:202
msgctxt "page:showcase/ctf/index.html"
msgid "Case study · DownUnderCTF 2023"
msgstr "Estudio de caso · DownUnderCTF 2023"

#. {ph0}: <br />
#: website/public/showcase/ctf/index.html:203
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "Find the flag in{ph0}a CTF binary."
msgstr "Encuentra la bandera en{ph0}un binario CTF."

#. {ph0}: <code>Correct!</code>
#: website/public/showcase/ctf/index.html:204
#, 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 ""
"Use REA para inspeccionar un pequeño verificador de indicadores, convertir "
"sus reglas en ecuaciones y encontrar una entrada que haga que se imprima el "
"programa original {ph0}."

#: website/public/showcase/ctf/index.html:209
msgctxt "page:showcase/ctf/index.html"
msgid "masked squares flag checker · Easy · Linux x86-64"
msgstr ""
"comprobador de banderas de cuadrados enmascarados * Fácil * Linux x86-64"

#: website/public/showcase/ctf/index.html:212
msgctxt "page:showcase/ctf/index.html"
msgid "View the original challenge"
msgstr "Ver el desafío original"

#: website/public/showcase/ctf/index.html:220
msgctxt "page:showcase/ctf/index.html"
msgid "From a binary to a checked answer"
msgstr "De una respuesta binaria a una respuesta marcada"

#. {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:222
#, 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 * Encuentra el cheque{ph1}{ph2}Cadenas → funciones de "
"comprobación{ph3}{ph4} REA encuentra el indicador, sus referencias y el "
"código que acepta o rechaza una entrada.{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:230
#, 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 * Extraer las reglas{ph1}{ph2}36 caracteres · 26 sumas{ph3}{ph4} REA"
" devuelve las instrucciones y los datos detrás de cada comprobación. El "
"agente los convierte en ecuaciones.{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:238
#, 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 * Resuelve y corre{ph1}{ph2}Bandera recuperada → "
"¡Correcto!{ph3}{ph4}Un script de Python resuelve las ecuaciones.  REA "
"captura el programa original aceptando el resultado.{ph5}"

#: website/public/showcase/ctf/index.html:247
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The challenge is by joseph, published in DownUnderCTF's official repository."
msgstr ""
"El desafío es de joseph, publicado en el repositorio oficial de "
"DownUnderCTF."

#: website/public/showcase/ctf/index.html:255
msgctxt "page:showcase/ctf/index.html"
msgid "In this case study"
msgstr "En este estudio de caso"

#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:257
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Find the checking code{ph1}"
msgstr "{ph0}Encuentra el código de verificación{ph1}"

#. {ph0}: <a href="#mask">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:258
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Read one mask{ph1}"
msgstr "{ph0}Leer una máscara{ph1}"

#. {ph0}: <a href="#code">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:259
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Assembly to readable code{ph1}"
msgstr "{ph0}Ensamblado a código legible{ph1}"

#. {ph0}: <a href="#solve">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:260
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Solve the equations{ph1}"
msgstr "{ph0}Resuelve las ecuaciones{ph1}"

#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:261
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Check the answer{ph1}"
msgstr "{ph0}Revisa la respuesta{ph1}"

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:262
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Try it yourself{ph1}"
msgstr "{ph0}Pruébalo tú mismo{ph1}"

#: website/public/showcase/ctf/index.html:267
msgctxt "page:showcase/ctf/index.html"
msgid "Find the checking code"
msgstr "Encuentra el código de verificación"

#. {ph0}: <code>Correct!</code>
#. {ph1}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:268
#, 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 ""
"El folleto es un ejecutable de 15 KB. Pide una bandera, luego imprime {ph0} "
"o {ph1}. Comience con una simple solicitud a su agente."

#. {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:275
#, 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}Su agente de codificación"

#: website/public/showcase/ctf/index.html:280
#: website/public/showcase/ctf/index.html:499
#: website/public/showcase/ctf/index.html:523
#: website/public/showcase/ctf/index.html:593
#: website/public/showcase/ctf/index.html:740
msgctxt "page:showcase/ctf/index.html"
msgid "Copy"
msgstr "Copiar"

#. {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:289
#, 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}Use REA para analizar ms_flag_checker y encontrar el "
"indicador. Explique cómo funcionan las comprobaciones y luego verifique la "
"respuesta con el programa original.{ph3}{ph4}{ph5}"

#: website/public/showcase/ctf/index.html:298
msgctxt "page:showcase/ctf/index.html"
msgid ""
"An example prompt, with the downloaded challenge available locally and a "
"native analysis provider connected."
msgstr ""
"Un mensaje de ejemplo, con el desafío descargado disponible localmente y un "
"análisis del proveedor de programas de código máquina conectado."

#: website/public/showcase/ctf/index.html:304
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the input prompt to its function"
msgstr "Siga el indicador de entrada a su función"

#: website/public/showcase/ctf/index.html:333
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 referencia le da al agente un lugar para investigar, aunque se hayan "
"eliminado los nombres de funciones originales del ejecutable."

#: website/public/showcase/ctf/index.html:340
msgctxt "page:showcase/ctf/index.html"
msgid "Read the checker and its two helpers"
msgstr "Lea el corrector y sus dos ayudantes"

#. {ph0}: <code>0x18</code>
#. {ph1}: <code>0x270</code>
#: website/public/showcase/ctf/index.html:368
#, 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 ""
"El primer bucle copia códigos de 36 caracteres. El bucle de comprobación "
"decodifica una máscara, suma los códigos seleccionados y compara el "
"resultado con un número almacenado. Su {ph0}- pasos de bytes a través {ph1} "
"los bytes dan 26 máscaras."

#: website/public/showcase/ctf/index.html:376
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 ""
"Estos son resultados seleccionados de un análisis REA reciente. La ruta de "
"destino local se acorta para su visualización; las direcciones se refieren a"
" la imagen importada de REA."

#: website/public/showcase/ctf/index.html:384
msgctxt "page:showcase/ctf/index.html"
msgid "One check reveals one character"
msgstr "Un cheque revela un carácter"

#: website/public/showcase/ctf/index.html:385
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 ""
"El verificador organiza la entrada en una cuadrícula de 6×6. Una máscara "
"elige qué celdas contribuyen a una suma. Su codificación compacta utiliza "
"números negativos para omitir celdas y números positivos para "
"seleccionarlos."

#. {ph0}: <a href="../../assets/figures/ctf-mask-equation.svg" >
#. {ph1}: </a >
#: website/public/showcase/ctf/index.html:405
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "The seventh check selects just one position. {ph0}Open figure{ph1}."
msgstr ""
"La séptima comprobación selecciona solo una posición. {ph0}Figura "
"abierta{ph1}."

#: website/public/showcase/ctf/index.html:412
msgctxt "page:showcase/ctf/index.html"
msgid "Read the mask and its target from the binary"
msgstr "Lea la máscara y su objetivo desde el binario"

#. {ph0}: <code>MOVSX</code>
#. {ph1}: <code>eb</code>
#. {ph2}: <code>code[21] = 55</code>
#. {ph3}: <code>7</code>
#: website/public/showcase/ctf/index.html:434
#, 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 ""
"La instrucción {ph0} lee bytes de máscara como valores firmados. Esta es la "
"razón {ph1} significa -21. El objetivo es un entero little-endian. Juntos, "
"estos bytes le dicen al agente que {ph2}, entonces ese personaje es {ph3}."

#: website/public/showcase/ctf/index.html:443
msgctxt "page:showcase/ctf/index.html"
msgid "From instructions to a readable check"
msgstr "De las instrucciones a un cheque legible"

#: website/public/showcase/ctf/index.html:444
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 ""
"Seleccione un paso para conectar el ayudante de suma y su interlocutor a la "
"misma regla en C."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:454
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01{ph1} Start"
msgstr "{ph0}01{ph1} Inicio"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:462
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}02{ph1} Select"
msgstr "{ph0}02{ph1} Seleccione"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:470
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}03{ph1} Add"
msgstr "{ph0}03{ph1} Añadir"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:478
#, 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:486
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}05{ph1} Compare"
msgstr "{ph0}05{ph1} Comparar"

#: website/public/showcase/ctf/index.html:498
msgctxt "page:showcase/ctf/index.html"
msgid "REA · selected original instructions"
msgstr "REA * instrucciones originales seleccionadas"

#: website/public/showcase/ctf/index.html:522
msgctxt "page:showcase/ctf/index.html"
msgid "Readable C · one-check summary"
msgstr "Resumen legible de C * one-check"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ECX</code>
#: website/public/showcase/ctf/index.html:551
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01 · Start at zero.{ph1} {ph2} holds the running sum."
msgstr "{ph0}01 * Comience en cero.{ph1} {ph2} contiene la suma corriente."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:555
#, 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 * Compruebe la celda de la máscara.{ph1} Un valor cero omite el "
"carácter; un valor distinto de cero lo incluye."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:559
#, 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 * Agregue un código de carácter.{ph1} El entero de la entrada en el "
"mismo desplazamiento se agrega a la suma."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:563
#, 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 * Pasar a la siguiente celda.{ph1} El bucle original avanza cuatro "
"bytes por entero y visita seis filas de seis celdas."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>EAX</code>
#. {ph3}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:568
#, 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 * Comparar con el objetivo almacenado.{ph1} La persona que llama "
"recibe la suma en {ph2}. Un desajuste salta a {ph3}."

#: website/public/showcase/ctf/index.html:575
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 ""
"Las instrucciones provienen del ayudante de suma y de su persona que llama. "
"La C es un resumen explicativo con nombres descriptivos y un bucle aplanado "
"de 36 celdas."

#: website/public/showcase/ctf/index.html:583
msgctxt "page:showcase/ctf/index.html"
msgid "Solve the 26 equations"
msgstr "Resuelve las 26 ecuaciones"

#: website/public/showcase/ctf/index.html:584
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 mayoría de las máscaras seleccionan varias celdas. Por ejemplo, la "
"primera verificación agrega códigos de 16 caracteres y requiere un total de "
"1441. Las selecciones superpuestas dan ecuaciones que un pequeño script de "
"Python puede resolver juntas."

#: website/public/showcase/ctf/index.html:592
msgctxt "page:showcase/ctf/index.html"
msgid "Python · solver excerpt"
msgstr "Extracto de Python * solver"

#. {ph0}: <code>DUCTF{…}</code>
#: website/public/showcase/ctf/index.html:620
#, 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 es un solucionador que encuentra valores que satisfacen estas ecuaciones."
" Este extracto usa los cheques extraídos y asume un {ph0} bandera con "
"letras, dígitos, guiones bajos y llaves. La descarga completa incluye las 26"
" máscaras y objetivos."

#: website/public/showcase/ctf/index.html:626
msgctxt "page:showcase/ctf/index.html"
msgid "Download the complete solver"
msgstr "Descargue el solucionador completo"

#: website/public/showcase/ctf/index.html:632
msgctxt "page:showcase/ctf/index.html"
msgid "Check the answer with the original program"
msgstr "Verifique la respuesta con el programa original"

#. {ph0}: <code>z</code>
#. {ph1}: <code>y</code>
#: website/public/showcase/ctf/index.html:633
#, 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 captura de procesos de REA registra el ejecutable original aceptando el "
"indicador resuelto. Cambiar un carácter seleccionado de {ph0} para {ph1} "
"hace la primera suma 1440 en lugar de 1441, y el programa la rechaza."

#: website/public/showcase/ctf/index.html:643
msgctxt "page:showcase/ctf/index.html"
msgid "Input"
msgstr "Entrada"

#: website/public/showcase/ctf/index.html:644
msgctxt "page:showcase/ctf/index.html"
msgid "Observed output"
msgstr "Salida observada"

#: website/public/showcase/ctf/index.html:645
msgctxt "page:showcase/ctf/index.html"
msgid "Exit code"
msgstr "Código de salida"

#: website/public/showcase/ctf/index.html:650
msgctxt "page:showcase/ctf/index.html"
msgid "Solver's flag"
msgstr "Bandera del solucionador"

#: website/public/showcase/ctf/index.html:655
msgctxt "page:showcase/ctf/index.html"
msgid "One character changed"
msgstr "Un personaje cambió"

#: website/public/showcase/ctf/index.html:663
msgctxt "page:showcase/ctf/index.html"
msgid "Show the recovered flag and captured output"
msgstr "Mostrar el indicador recuperado y la salida capturada"

#: website/public/showcase/ctf/index.html:666
msgctxt "page:showcase/ctf/index.html"
msgid "REA · original program output"
msgstr "REA * salida del programa original"

#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Copy flag"
msgstr "Bandera de copia"

#: website/public/showcase/ctf/index.html:679
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 ""
"El valor recuperado también coincide con la bandera en los metadatos de "
"desafío publicados por los organizadores, marcada después de resolver el "
"binario."

#: website/public/showcase/ctf/index.html:685
msgctxt "page:showcase/ctf/index.html"
msgid "Source, target identity and analysis details"
msgstr "Detalles de origen, identidad de destino y análisis"

#: website/public/showcase/ctf/index.html:686
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 ""
"Análisis reciente y dos capturas de procesos el 8 de octubre de 2026, "
"utilizando REA 4.1.0 con Ghidra 12.1.4 en Linux x64. El binario es un ELF "
"x86-64 despojado, 15.248 bytes."

#: website/public/showcase/ctf/index.html:697
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 ""
"Las referencias de cadena, funciones y constantes se inspeccionaron antes de"
" leer la fuente o solución de los organizadores. El solucionador de Python y"
" el diagrama se construyeron a partir de esos resultados de 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:702
#, 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}Compare con la fuente de los organizadores{ph1} · {ph2}Metadatos de "
"desafío y bandera{ph3} · {ph4} Notas de evidencia REA{ph5}"

#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Try it yourself"
msgstr "Pruébalo tú mismo"

#: website/public/showcase/ctf/index.html:723
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 ""
"Descargue el desafío original y el solucionador en una carpeta. Utilice el "
"mensaje anterior para investigar con su agente o ejecute el script incluido."

#: website/public/showcase/ctf/index.html:739
msgctxt "page:showcase/ctf/index.html"
msgid "Terminal · solve and run"
msgstr "Terminal * resuelve y ejecuta"

#. {ph0}: <code>z3-solver</code>
#: website/public/showcase/ctf/index.html:756
#, 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 ""
"El script imprime un indicador de candidato; péguelo en el indicador del "
"programa. Resolviendo necesidades Python y {ph0}. Ejecutar el ejecutable "
"original necesita Linux x86-64."

#: website/public/showcase/ctf/index.html:761
msgctxt "page:showcase/ctf/index.html"
msgid "Set up REA with your coding agent"
msgstr "Configure REA con su agente de codificación"

#: website/public/showcase/ctf/index.html:6
msgctxt "page:showcase/ctf/index.html"
msgid "CTF Reverse Engineering: DownUnderCTF Flag Checker — REA"
msgstr "Ingeniería inversa CTF: Comprobador de banderas 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 ""
"Use REA para resolver el verificador de banderas de cuadrados enmascarados "
"de DownUnderCTF. Encuentre las funciones de verificación, extraiga las "
"máscaras y compare un indicador recuperado con el programa original."

#: website/public/showcase/ctf/index.html:254
msgctxt "page:showcase/ctf/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/showcase/ctf/index.html:265
msgctxt "page:showcase/ctf/index.html"
msgid "CTF flag-checker case study"
msgstr "Estudio de caso de CTF flag-checker"

#: website/public/showcase/ctf/index.html:280
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF example prompt"
msgstr "Copie el mensaje de ejemplo de CTF"

#: website/public/showcase/ctf/index.html:391
msgctxt "page:showcase/ctf/index.html"
msgid "CTF mask equation; scroll horizontally on smaller screens"
msgstr ""
"Ecuación de máscara CTF; desplácese horizontalmente en pantallas más "
"pequeñas"

#: website/public/showcase/ctf/index.html:397
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 ""
"La séptima máscara omite 21 celdas, selecciona la posición 21 y luego omite "
"14. Solo esa celda contribuye a la suma. Su código de carácter requerido es "
"55, lo que significa que el carácter es 7."

#: website/public/showcase/ctf/index.html:449
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the CTF check"
msgstr "Siga la verificación CTF"

#: website/public/showcase/ctf/index.html:499
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF assembly"
msgstr "Copie la asamblea CTF"

#: website/public/showcase/ctf/index.html:523
msgctxt "page:showcase/ctf/index.html"
msgid "Copy readable CTF check"
msgstr "Verificación CTF legible por copia"

#: website/public/showcase/ctf/index.html:593
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver excerpt"
msgstr "Copiar extracto del solucionador CTF"

#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Copy recovered flag"
msgstr "Copiar bandera recuperada"

#: website/public/showcase/ctf/index.html:740
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver commands"
msgstr "Copiar comandos del solucionador CTF"

#: website/public/showcase/ctf/index.html:783
msgctxt "page:showcase/ctf/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/showcase/dx-ball/index.html:107
msgctxt "page:showcase/dx-ball/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/dx-ball/index.html:199
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / DX-Ball"
msgstr "{ph0}Inicio{ph1} / {ph2}Vitrinas{ph3} / DX-Ball"

#: website/public/showcase/dx-ball/index.html:202
msgctxt "page:showcase/dx-ball/index.html"
msgid "Case study · DX-Ball 1.07"
msgstr "Estudio de caso * DX-Ball 1.07"

#. {ph0}: <br />
#: website/public/showcase/dx-ball/index.html:203
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Rebuilding DX-Ball{ph0}from its executable."
msgstr "Reconstruyendo DX-Ball {ph0}desde su ejecutable."

#: website/public/showcase/dx-ball/index.html:204
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 ""
"El objetivo es una versión C mantenible del juego Windows de 1996.  REA "
"ayuda al agente a inspeccionar el original, una función a la vez."

#: website/public/showcase/dx-ball/index.html:208
msgctxt "page:showcase/dx-ball/index.html"
msgid "Windows i386 · C · REA"
msgstr "Windows i386 * C * REA"

#. {ph0}: <a href="../../assets/figures/dx-ball-sound-pan-investigation.svg" >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:225
#, 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 ""
"Una función, desde ejecutable hasta comprobada C. REA proporciona las "
"instrucciones, las personas que llaman y las lecturas de datos; el proyecto "
"de reconstrucción implementa y prueba el resultado. {ph0}Figura abierta{ph1}"

#: website/public/showcase/dx-ball/index.html:236
msgctxt "page:showcase/dx-ball/index.html"
msgid "In this case study"
msgstr "En este estudio de caso"

#. {ph0}: <a href="#progress">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:238
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}The project{ph1}"
msgstr "{ph0}El proyecto{ph1}"

#. {ph0}: <a href="#sound-pan">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:239
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Sound pan{ph1}"
msgstr "{ph0}Bandeja de sonido{ph1}"

#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:240
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Checking the result{ph1}"
msgstr "{ph0}Comprobando el resultado{ph1}"

#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:241
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Continue the work{ph1}"
msgstr "{ph0}Continuar el trabajo{ph1}"

#: website/public/showcase/dx-ball/index.html:249
msgctxt "page:showcase/dx-ball/index.html"
msgid "maintained C functions"
msgstr "funciones C mantenidas"

#: website/public/showcase/dx-ball/index.html:253
msgctxt "page:showcase/dx-ball/index.html"
msgid "comparisons with original code"
msgstr "comparaciones con el código original"

#: website/public/showcase/dx-ball/index.html:257
msgctxt "page:showcase/dx-ball/index.html"
msgid "functions with matching compiled bytes"
msgstr "funciones con bytes compilados coincidentes"

#. {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:260
#, 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 ""
"Punto de control del proyecto: 7 de octubre de 2026. {ph0}Libro de "
"progreso{ph1} · {ph2}Cobertura de la prueba{ph3}"

#: website/public/showcase/dx-ball/index.html:272
msgctxt "page:showcase/dx-ball/index.html"
msgid "The project so far"
msgstr "El proyecto hasta ahora"

#: website/public/showcase/dx-ball/index.html:273
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 ""
"El código recuperado cubre el manejo de tableros y recursos, golpes de "
"ladrillos, animaciones, partículas y producción de bonificaciones. Las "
"compilaciones actuales proporcionan utilidades de inspección y una "
"biblioteca de análisis. El trabajo en el juego jugable continúa con la "
"física de la pelota y la paleta, el manejo del encendido y la integración "
"Windows."

#: website/public/showcase/dx-ball/index.html:283
msgctxt "page:showcase/dx-ball/index.html"
msgid "Finding the sound-pan calculation"
msgstr "Encontrar el cálculo de la posición del sonido izquierda/derecha"

#: website/public/showcase/dx-ball/index.html:284
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 ""
"Cuando se golpea un ladrillo, su posición horizontal pasa al código de "
"sonido. La investigación necesaria para recuperar cómo esa coordenada de "
"pantalla se convierte en un valor de panorámica izquierda/derecha."

#. {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:291
#, 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}Su agente de codificación"

#: website/public/showcase/dx-ball/index.html:295
#: website/public/showcase/dx-ball/index.html:486
#: website/public/showcase/dx-ball/index.html:507
#: website/public/showcase/dx-ball/index.html:578
#: website/public/showcase/dx-ball/index.html:732
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy"
msgstr "Copiar"

#. {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:304
#, 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}Use REA para averiguar cómo DX-Ball calcula el "
"posicionamiento del sonido estéreo. Explique el cálculo y muestre el "
"código.{ph3}{ph4}{ph5}"

#: website/public/showcase/dx-ball/index.html:312
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 mensaje de ejemplo para su agente de codificación, con el ejecutable "
"local disponible. La investigación a continuación muestra las consultas REA "
"y la evidencia detrás de la respuesta."

#: website/public/showcase/dx-ball/index.html:317
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 ""
"El agente usó REA para inspeccionar la función, seguir a la persona que "
"llamó y leer las constantes del ejecutable. Esos resultados proporcionaron "
"la entrada y la aritmética necesarias para escribir la función C a "
"continuación."

#. {ph0}: <code>0x406400</code>
#. {ph1}: <code>FUN_00406400(void)</code>
#. {ph2}: <code>__ftol()</code>
#: website/public/showcase/dx-ball/index.html:323
#, 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 ""
"El resultado de la primera función para {ph0} declaración de pseudocódigo "
"incluida {ph1} y llamando {ph2}. Su vista de instrucciones mostraba una "
"entrada de pila y operaciones de coma flotante. Esa discrepancia le dio al "
"agente una razón concreta para seguir investigando."

#: website/public/showcase/dx-ball/index.html:331
msgctxt "page:showcase/dx-ball/index.html"
msgid "The first decompiler view"
msgstr "La primera vista del descompilador"

#: website/public/showcase/dx-ball/index.html:344
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 salida muestra una llamada de conversión. Al leer las instrucciones a "
"continuación, se revela la entrada y el cálculo que alimenta esa llamada."

#: website/public/showcase/dx-ball/index.html:350
msgctxt "page:showcase/dx-ball/index.html"
msgid "Three questions answered through REA"
msgstr "Tres preguntas respondidas a través de REA"

#: website/public/showcase/dx-ball/index.html:353
msgctxt "page:showcase/dx-ball/index.html"
msgid "Recover the missing input"
msgstr "Recuperar la entrada faltante"

#. {ph0}: <code>[EBP+8]</code>
#: website/public/showcase/dx-ball/index.html:370
#, 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 ""
"El resultado de la función incluye instrucciones junto con el pseudocódigo y"
" las personas que llaman. Aquí, {ph0} expone la entrada entera que falta en "
"la vista del descompilador."

#: website/public/showcase/dx-ball/index.html:377
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the caller to understand the input"
msgstr "Siga a la persona que llama para comprender la entrada"

#. {ph0}: <code>tile_x</code>
#. {ph1}: <code>20 + 30 × tile_x</code>
#: website/public/showcase/dx-ball/index.html:394
#, 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 identificó a esta persona que llamó en el primer resultado. Su escala de"
" instrucciones anteriores {ph0} por 30; sumando 20 da la coordenada de la "
"pantalla del ladrillo, {ph1}."

#: website/public/showcase/dx-ball/index.html:401
msgctxt "page:showcase/dx-ball/index.html"
msgid "Read the values behind the memory addresses"
msgstr "Leer los valores detrás de las direcciones de memoria"

#: website/public/showcase/dx-ball/index.html:422
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 ""
"Los bytes devueltos establecen las dos constantes aritméticas y la escala "
"panorámica inicial. El agente ahora tiene los valores necesarios para la "
"expresión C."

#: website/public/showcase/dx-ball/index.html:430
msgctxt "page:showcase/dx-ball/index.html"
msgid "From REA's findings to C"
msgstr "De los hallazgos de REA a C"

#: website/public/showcase/dx-ball/index.html:431
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 ""
"Siga los cinco pasos a continuación. Cada selección resalta las "
"instrucciones originales y las líneas C que informaron."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:441
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}01{ph1} Input"
msgstr "{ph0}01{ph1} Entrada"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:449
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}02{ph1} Multiply"
msgstr "{ph0}02{ph1} Multiplicar"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:457
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}03{ph1} Subtract"
msgstr "{ph0}03{ph1} Restar"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:465
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}04{ph1} Scale"
msgstr "{ph0}04{ph1} Escala"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:473
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}05{ph1} Return"
msgstr "{ph0}05{ph1} Regreso"

#: website/public/showcase/dx-ball/index.html:485
msgctxt "page:showcase/dx-ball/index.html"
msgid "Original x86 · excerpt"
msgstr "Original x86 · extracto"

#: website/public/showcase/dx-ball/index.html:506
msgctxt "page:showcase/dx-ball/index.html"
msgid "Reconstructed C"
msgstr "Reconstruido C"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>[EBP+8]</code>
#. {ph3}: <code>FILD</code>
#. {ph4}: <code>x</code>
#: website/public/showcase/dx-ball/index.html:533
#, 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 * Lea la entrada.{ph1} La vista de instrucciones en el resultado de "
"la función REA dice {ph2} y usos {ph3} para cargar el entero. Seguir a su "
"llamador a través de REA establece el significado de la coordenada de "
"pantalla del parámetro 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:540
#, 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 * Multiplica por 1.5625.{ph1} {ph2} lee el doble en {ph3}. Los bytes"
" devueltos por REA {ph4} decodificar a {ph5}; la C usa la misma 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:546
#, 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 * Resta 500.0.{ph1} {ph2} lee el doble en {ph3}.  El resultado de "
"bytes de REA se decodifica en {ph4}, cambiando el centro del cálculo a "
"coordenadas de pantalla {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:552
#, 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 * Aplique la báscula almacenada.{ph1} El segundo {ph2} lecturas "
"{ph3}. Ese global se llama {ph4} en la fuente mantenida.  La lectura del "
"segundo byte de REA establece su valor inicial 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:559
#, 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 * Devuelve un número entero.{ph1} La llamada al {ph2} alcances "
"{ph3}, identificado en los resultados de llamadas de REA. La C arroja el "
"resultado a {ph4}; original-las comparaciones x86 verifican el valor "
"devuelto."

#: website/public/showcase/dx-ball/index.html:568
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 ""
"El extracto de la asamblea selecciona las instrucciones de entrada, "
"aritmética y retorno. La lista completa a continuación también incluye las "
"tiendas intermedias y la configuración y limpieza de funciones."

#: website/public/showcase/dx-ball/index.html:574
msgctxt "page:showcase/dx-ball/index.html"
msgid "Full assembly and supporting evidence"
msgstr "Montaje completo y pruebas de apoyo"

#: website/public/showcase/dx-ball/index.html:577
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · 0x406400–0x40643e"
msgstr "REA resultado * 0x406400-0x40643e"

#: website/public/showcase/dx-ball/index.html:611
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the caller supplies"
msgstr "Lo que suministra la persona que llama"

#. {ph0}: <code>0x411f40</code>
#: website/public/showcase/dx-ball/index.html:612
#, 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 función de golpe de ladrillo en {ph0} escala su coordenada de mosaico en "
"30, agrega 20 y luego la empuja antes de la llamada:"

#: website/public/showcase/dx-ball/index.html:626
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the data reads establish"
msgstr "Lo que establecen las lecturas de los datos"

#: website/public/showcase/dx-ball/index.html:629
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte reads, decoded as little-endian doubles"
msgstr "Lecturas de bytes REA, decodificadas como dobles little-endian"

#: website/public/showcase/dx-ball/index.html:634
msgctxt "page:showcase/dx-ball/index.html"
msgid "Address"
msgstr "Dirección"

#: website/public/showcase/dx-ball/index.html:635
msgctxt "page:showcase/dx-ball/index.html"
msgid "Value"
msgstr "Valor"

#: website/public/showcase/dx-ball/index.html:636
msgctxt "page:showcase/dx-ball/index.html"
msgid "Used for"
msgstr "Utilizado para"

#: website/public/showcase/dx-ball/index.html:643
msgctxt "page:showcase/dx-ball/index.html"
msgid "First multiplication"
msgstr "Primera multiplicación"

#: website/public/showcase/dx-ball/index.html:648
msgctxt "page:showcase/dx-ball/index.html"
msgid "Subtraction"
msgstr "Resta"

#. {ph0}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:652
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0} initially"
msgstr "{ph0} inicialmente"

#: website/public/showcase/dx-ball/index.html:653
msgctxt "page:showcase/dx-ball/index.html"
msgid "Stored pan scale"
msgstr "Escala de pan almacenada"

#: website/public/showcase/dx-ball/index.html:658
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 ""
"Grabado con REA 4.1.0 para el objetivo DX-Ball 1.07 fijado con hash. Las "
"notas de investigación vinculadas conservan las identificaciones de las "
"pruebas."

#. {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:663
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Maintained source{ph1} · {ph2}Investigation notes and evidence "
"references{ph3}"
msgstr ""
"{ph0}Fuente mantenida{ph1} · {ph2}Notas de investigación y referencias de "
"evidencia{ph3}"

#: website/public/showcase/dx-ball/index.html:677
msgctxt "page:showcase/dx-ball/index.html"
msgid "Checking the recovered function"
msgstr "Comprobando la función recuperada"

#: website/public/showcase/dx-ball/index.html:678
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 función recuperada pasa dos comprobaciones: sus valores de retorno "
"coinciden con el original y sus bytes compilados coinciden con el "
"ejecutable."

#: website/public/showcase/dx-ball/index.html:684
msgctxt "page:showcase/dx-ball/index.html"
msgid "3,205 behavior cases"
msgstr "3.205 casos de conducta"

#: website/public/showcase/dx-ball/index.html:685
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 ""
"Las pruebas ejecutan la función x86 original y comparan su valor de retorno "
"con la C mantenida. Cubren cada posición entera de 0 a 640 en cinco escalas "
"panorámicas: 0, 0.5, 1, 20 y -1."

#: website/public/showcase/dx-ball/index.html:693
msgctxt "page:showcase/dx-ball/index.html"
msgid "63 matching bytes"
msgstr "63 bytes coincidentes"

#: website/public/showcase/dx-ball/index.html:694
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 función C se compila con la cadena de herramientas VC4.0 anclada. La "
"repetición del compilador coincide con la función completa después de "
"aplicar las reubicaciones revisadas y verificar las constantes a las que se "
"hace referencia."

#: website/public/showcase/dx-ball/index.html:702
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 ""
"En una escala de 1, el cálculo recuperado devuelve -500 en el borde "
"izquierdo, 0 en el centro y 500 en el borde derecho. La siguiente parte del "
"trabajo de audio es integrar ese valor con el backend de sonido del juego."

#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/BUILD_MATCHING.md"
#. >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:708
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Read the compiler replay details{ph1}"
msgstr "{ph0}Lea los detalles de la repetición del compilador{ph1}"

#: website/public/showcase/dx-ball/index.html:717
msgctxt "page:showcase/dx-ball/index.html"
msgid "Continue the investigation"
msgstr "Continuar la investigación"

#: website/public/showcase/dx-ball/index.html:718
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 ""
"El mismo enfoque se está utilizando para las actualizaciones de partículas, "
"las colas de explosión y la generación de bonificaciones: inspeccione las "
"funciones relevantes, recupere su estado y dependencias, luego compare la "
"implementación con la original."

#: website/public/showcase/dx-ball/index.html:724
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 ""
"Para inspeccionar la función de panorámica de sonido usted mismo, siga las "
"instrucciones de configuración del proyecto DX-Ball y proporcione su "
"objetivo original correspondiente. Entonces corre:"

#: website/public/showcase/dx-ball/index.html:731
msgctxt "page:showcase/dx-ball/index.html"
msgid "In the DX-Ball checkout"
msgstr "En la caja 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:745
#, 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} Repositorio DX-Ball{ph1}{ph2}Fuente actual, progreso y configuración "
"local.{ph3}"

#. {ph0}: <a href="../../guides/native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:750
#, 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} Flujo de trabajo de análisis REA{ph1}{ph2}Siga el cálculo, luego use "
"el mismo enfoque con su propio binario.{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:757
#, 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}Partículas y producción de bonos{ph1}{ph2}Una investigación más amplia "
"sobre el estado, las colas y las escrituras de píxeles.{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 "DX-Ball Ingeniería inversa: Panorámica de sonido-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 ""
"Siga una reconstrucción DX-Ball desde el análisis binario hasta REA hasta C "
"mantenido, pruebas originales-x86 y bytes de funciones compiladas "
"coincidentes."

#: website/public/showcase/dx-ball/index.html:211
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DX-Ball sound-pan investigation; scroll horizontally on smaller screens"
msgstr ""
"DX-Ball investigación panorámica de sonido; desplácese horizontalmente en "
"pantallas más pequeñas"

#: website/public/showcase/dx-ball/index.html:217
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 función EXE 0x00406400 se inspecciona con REA . Una persona que "
"llama al golpe de ladrillo suministra 20 más 30 veces tile_x. Las "
"instrucciones cargan x, multiplican por 1.5625, restan 500.0, aplican "
"pan_scale y devuelven un número entero. El C mantenido se verifica de forma "
"independiente con el x86 original en 3205 casos y mediante la reproducción "
"del compilador VC4.0 que coincide con 63 bytes."

#: website/public/showcase/dx-ball/index.html:235
msgctxt "page:showcase/dx-ball/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/showcase/dx-ball/index.html:244
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball reconstruction case study"
msgstr "Estudio de caso de reconstrucción DX-Ball"

#: website/public/showcase/dx-ball/index.html:295
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy example prompt"
msgstr "Copie el mensaje de ejemplo"

#: website/public/showcase/dx-ball/index.html:436
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the sound-pan calculation"
msgstr "Siga el cálculo de la posición del sonido izquierda/derecha"

#: website/public/showcase/dx-ball/index.html:486
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy original assembly excerpt"
msgstr "Copiar extracto original de la asamblea"

#: website/public/showcase/dx-ball/index.html:507
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy sound-pan function"
msgstr "Copiar función de panorámica de sonido"

#: website/public/showcase/dx-ball/index.html:578
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy complete sound-pan assembly"
msgstr "Copie el ensamblaje completo de la bandeja de sonido"

#: website/public/showcase/dx-ball/index.html:732
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy DX-Ball analysis command"
msgstr "Copie el comando de análisis DX-Ball"

#: website/public/showcase/dx-ball/index.html:791
msgctxt "page:showcase/dx-ball/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/showcase/index.html:107
msgctxt "page:showcase/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/showcase/index.html:199
#, python-brace-format
msgctxt "page:showcase/index.html"
msgid "{ph0}Home{ph1} / Showcases"
msgstr "{ph0}Inicio{ph1} / Vitrinas"

#: website/public/showcase/index.html:200
msgctxt "page:showcase/index.html"
msgid "REA case studies."
msgstr "Estudios de caso de REA."

#: website/public/showcase/index.html:201
msgctxt "page:showcase/index.html"
msgid ""
"Android, games, Electron and a CTF challenge, with code, figures and checked"
" results."
msgstr ""
"Android, juegos, Electron y un desafío CTF, con código, cifras y resultados "
"comprobados."

#: website/public/showcase/index.html:208
msgctxt "page:showcase/index.html"
msgid "Android · APK analysis"
msgstr "Análisis de Android * APK"

#: website/public/showcase/index.html:210
msgctxt "page:showcase/index.html"
msgid "How an authenticator generates a login code"
msgstr "Cómo genera un autenticador un código de inicio de sesión"

#: website/public/showcase/index.html:211
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 ""
"Encuentre el cálculo del código de seis dígitos de Aegis en su APK "
"publicado. Rastree los métodos de generación con REA, luego mueva un reloj "
"de demostración para ver por qué el código cambia cada 30 segundos."

#: website/public/showcase/index.html:222
msgctxt "page:showcase/index.html"
msgid "Read the Android case study"
msgstr "Lea el caso práctico de Android"

#: website/public/showcase/index.html:226
msgctxt "page:showcase/index.html"
msgid "CTF · Native analysis"
msgstr "CTF * Análisis de programas de código máquina"

#: website/public/showcase/index.html:228
msgctxt "page:showcase/index.html"
msgid "Solve a CTF flag checker"
msgstr "Resolver un comprobador de banderas CTF"

#: website/public/showcase/index.html:229
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 ""
"Inspeccione un desafío fácil de DownUnderCTF con REA . Encuentre sus "
"funciones de verificación, convierta máscaras y sumas en ecuaciones, luego "
"verifique el indicador resuelto con el programa original."

#: website/public/showcase/index.html:240
msgctxt "page:showcase/index.html"
msgid "Read the CTF case study"
msgstr "Lea el estudio de caso de CTF"

#: website/public/showcase/index.html:244
msgctxt "page:showcase/index.html"
msgid "Native · Reconstruction"
msgstr "Reconstrucción nativa ·"

#: website/public/showcase/index.html:246
msgctxt "page:showcase/index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "Cálculo de la posición del sonido izquierdo/derecho de DX-Ball"

#: website/public/showcase/index.html:247
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 ""
"Recupere un cálculo de la posición del sonido izquierdo/derecho de un juego "
"Windows de 1996.  Las instrucciones de REA ,las referencias de las personas "
"que llaman y las constantes numéricas conducen a una pequeña función C, "
"comprobada con el comportamiento original y los 63 bytes compilados."

#: website/public/showcase/index.html:259
msgctxt "page:showcase/index.html"
msgid "Read the DX-Ball case study"
msgstr "Lea el caso práctico de DX-Ball"

#: website/public/showcase/index.html:263
msgctxt "page:showcase/index.html"
msgid "Electron · Feature tracing"
msgstr "Electron * Rastreo de funciones"

#: website/public/showcase/index.html:265
msgctxt "page:showcase/index.html"
msgid "How Notion copies text and HTML"
msgstr "Cómo Notion copia texto y HTML"

#: website/public/showcase/index.html:266
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 ""
"Rastree una API orientada a la página a través del Notion empaquetado de "
"JavaScript . Siga sus envoltorios IPC hasta el portapapeles del sistema, "
"luego vea cómo un pequeño marcador HTML mantiene los datos enriquecidos del "
"bloque conectados a una copia."

#: website/public/showcase/index.html:277
msgctxt "page:showcase/index.html"
msgid "Read the Notion case study"
msgstr "Lea el caso práctico de Notion"

#: website/public/showcase/index.html:281
msgctxt "page:showcase/index.html"
msgid "PC-98 DOS · Reconstruction"
msgstr "Reconstrucción PC-98 DOS *"

#: website/public/showcase/index.html:283
msgctxt "page:showcase/index.html"
msgid "How TH04 aims a ring of bullets"
msgstr "Cómo TH04 apunta a un anillo de balas"

#: website/public/showcase/index.html:284
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 ""
"Inspeccione el ayudante de ángulo original de 16 bits con REA . Haga "
"coincidir sus operaciones de multiplicación, división y coordinación con C++"
" legible, luego vea cómo producen un anillo dirigido al jugador."

#: website/public/showcase/index.html:295
msgctxt "page:showcase/index.html"
msgid "Read the TH04 case study"
msgstr "Lea el caso práctico de TH04"

#: website/public/showcase/index.html:300
msgctxt "page:showcase/index.html"
msgid "Step-by-step guides"
msgstr "Guías paso a paso"

#: website/public/showcase/index.html:301
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 ""
"Las guías recorren un cálculo nativo, una exportación Electron y una "
"solicitud del navegador. Cada uno comienza con un mensaje y un objetivo "
"concreto."

#: website/public/showcase/index.html:305
msgctxt "page:showcase/index.html"
msgid "Read the guides"
msgstr "Lea las guías"

#: website/public/showcase/index.html:6
msgctxt "page:showcase/index.html"
msgid "Reverse Engineering Case Studies — REA"
msgstr "Estudios de Caso de Ingeniería Inversa-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 ""
"Siga las investigaciones de REA a través de código, figuras y "
"demostraciones: un autenticador de Android, DX-Ball, Notion, TH04 y un "
"comprobador de indicadores de DownUnderCTF."

#: website/public/showcase/index.html:323
msgctxt "page:showcase/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/showcase/notion/index.html:107
msgctxt "page:showcase/notion/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/notion/index.html:199
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Notion"
msgstr "{ph0}Inicio{ph1} / {ph2}Vitrinas{ph3} / Notion"

#: website/public/showcase/notion/index.html:202
msgctxt "page:showcase/notion/index.html"
msgid "Case study · Electron"
msgstr "Estudio de caso * Electron"

#. {ph0}: <br />
#: website/public/showcase/notion/index.html:203
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "How Notion copies{ph0}text and HTML."
msgstr "Cómo copia Notion{ph0}texto y HTML."

#: website/public/showcase/notion/index.html:204
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 ""
"Rastree una llamada al portapapeles desde la API de la página de Notion, a "
"través de la precarga y el proceso principal, hasta el escritor del "
"portapapeles de Electron."

#: website/public/showcase/notion/index.html:208
msgctxt "page:showcase/notion/index.html"
msgid "Notion Desktop 7.6.1 · JavaScript · REA"
msgstr "Escritorio Notion 7.6.1 * JavaScript · REA"

#: website/public/showcase/notion/index.html:212
msgctxt "page:showcase/notion/index.html"
msgid "The bridge inside Notion's desktop package"
msgstr "El puente dentro del paquete de escritorio 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:214
#, 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 orientada a páginas{ph1} {ph2}{ph3}{ph4} {ph5}La precarga "
"expone un método invocable.{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:221
#, 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 * Envoltura de precarga{ph1} {ph2}{ph3}{ph4} {ph5}El contenedor "
"envía el canal y los argumentos.{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:228
#, 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 * Controlador de procesos principales{ph1} {ph2}{ph3}{ph4} {ph5}El "
"receptor verifica qué página lo envió.{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:235
#, 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 * Portapapeles del sistema{ph1} {ph2}{ph3}{ph4} {ph5} Electron "
"escribe el texto y HTML suministrados.{ph6}"

#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:243
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "One channel joins the two sides: {ph0}"
msgstr "Un canal une los dos lados: {ph0}"

#: website/public/showcase/notion/index.html:247
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 ""
"El código empaquetado usa el mismo canal en la precarga y el proceso "
"principal. Al resolver los contenedores, se revelan las llamadas Electron "
"detrás de esos nombres."

#: website/public/showcase/notion/index.html:256
msgctxt "page:showcase/notion/index.html"
msgid "In this case study"
msgstr "En este estudio de caso"

#. {ph0}: <a href="#clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:258
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Follow the clipboard bridge{ph1}"
msgstr "{ph0}Sigue el puente del portapapeles{ph1}"

#. {ph0}: <a href="#rich-clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:259
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Keeping a block's structure{ph1}"
msgstr "{ph0}Mantener la estructura de un bloque{ph1}"

#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:260
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}More examples and sources{ph1}"
msgstr "{ph0}Más ejemplos y fuentes{ph1}"

#: website/public/showcase/notion/index.html:265
msgctxt "page:showcase/notion/index.html"
msgid "Where does the copy operation go?"
msgstr "¿A dónde va la operación de copia?"

#. {ph0}: <code>clipboard.write</code>
#: website/public/showcase/notion/index.html:266
#, 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 página ve un método llamado {ph0}. Su implementación en la precarga es un"
" wrapper. La pregunta útil es qué envía ese contenedor y qué código lo "
"recibe."

#. {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:273
#, 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}Su agente de codificación"

#: website/public/showcase/notion/index.html:277
#: website/public/showcase/notion/index.html:350
#: website/public/showcase/notion/index.html:379
#: website/public/showcase/notion/index.html:410
#: website/public/showcase/notion/index.html:438
msgctxt "page:showcase/notion/index.html"
msgid "Copy"
msgstr "Copiar"

#. {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:286
#, 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}Use REA para rastrear cómo Notion copia texto y HTML en el "
"portapapeles del sistema. Muestre el código en cada paso.{ph3}{ph4}{ph5}"

#: website/public/showcase/notion/index.html:294
msgctxt "page:showcase/notion/index.html"
msgid ""
"An example prompt with Notion's local application package available to your "
"coding agent."
msgstr ""
"Un mensaje de ejemplo con el paquete de aplicaciones locales de Notion "
"disponible para su agente de codificación."

#: website/public/showcase/notion/index.html:299
msgctxt "page:showcase/notion/index.html"
msgid "REA finds where to start reading"
msgstr "REA encuentra dónde comenzar a leer"

#: website/public/showcase/notion/index.html:300
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 ""
"Al analizar la precarga de pestañas con REA, se localiza la API expuesta a "
"la página y la llamada que envía una solicitud IPC. Ambos hallazgos vienen "
"con rangos de origen en el paquete minimizado:"

#: website/public/showcase/notion/index.html:306
msgctxt "page:showcase/notion/index.html"
msgid "REA findings → two places to open"
msgstr "Hallazgos REA → dos lugares para abrir"

#. {ph0}: <code>analyze_javascript_application</code>
#: website/public/showcase/notion/index.html:321
#, 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 ""
"Campos seleccionados de un nuevo {ph0} resultado en la precarga de la "
"pestaña Notion, grabada con REA 4.1.0. Las posiciones usan la línea y la "
"columna de base cero del paquete original."

#. {ph0}: <code>invokerInMain</code>
#. {ph1}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:328
#, 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 ""
"El agente abre esas ubicaciones, encuentra el miembro del portapapeles en la"
" API ensamblada y lee {ph0}. Suministros para el sitio Its call {ph1}. Ese "
"nombre le da al agente algo preciso que buscar en el paquete principal. Los "
"cuatro extractos a continuación muestran la ruta que conecta."

#: website/public/showcase/notion/index.html:337
msgctxt "page:showcase/notion/index.html"
msgid "Four short pieces of code"
msgstr "Cuatro piezas cortas de código"

#: website/public/showcase/notion/index.html:338
msgctxt "page:showcase/notion/index.html"
msgid ""
"Simplified from the packaged JavaScript, with readable variable names. "
"Unrelated members are omitted."
msgstr ""
"Simplificado a partir del JavaScript empaquetado , con nombres de variables "
"legibles. Se omiten los miembros no relacionados."

#: website/public/showcase/notion/index.html:344
msgctxt "page:showcase/notion/index.html"
msgid "Start at the API exposed to the page"
msgstr "Comience en la API expuesta en la página"

#. {ph0}: <code>invokerInMain</code>
#: website/public/showcase/notion/index.html:366
#, 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 ""
"Este miembro proporciona el nombre del canal. La implementación de {ph0} nos"
" dice cómo la solicitud sale del proceso de la página."

#: website/public/showcase/notion/index.html:373
msgctxt "page:showcase/notion/index.html"
msgid "Resolve the preload's wrapper"
msgstr "Resolver el contenedor de la precarga"

#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:396
#, 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 función devuelta reenvía los argumentos a través del IPC de solicitud y "
"respuesta de Electron. Ahora podemos buscar {ph0} en el lado del proceso "
"principal."

#: website/public/showcase/notion/index.html:404
msgctxt "page:showcase/notion/index.html"
msgid "Check how the receiver is registered"
msgstr "Compruebe cómo está registrado el destinatario"

#. {ph0}: <code>addListener</code>
#. {ph1}: <code>ipcMain.handle</code>
#: website/public/showcase/notion/index.html:425
#, 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 ""
"El proceso principal usa otro envoltorio. Su {ph0} el método registra un "
"{ph1} receptor para ese canal."

#: website/public/showcase/notion/index.html:432
msgctxt "page:showcase/notion/index.html"
msgid "Find the write and its sender check"
msgstr "Encuentre la escritura y su verificación de remitente"

#: website/public/showcase/notion/index.html:455
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 ""
"Este es el destino. Después de verificar el remitente, el controlador pasa "
"los datos proporcionados a la API del portapapeles de Electron. El canal y "
"los dos envoltorios resueltos conectan el método expuesto a esta llamada."

#: website/public/showcase/notion/index.html:466
msgctxt "page:showcase/notion/index.html"
msgid "How does a copied block keep its structure?"
msgstr "¿Cómo mantiene su estructura un bloque copiado?"

#. {ph0}: <code>electronApi.clipboard.write</code>
#: website/public/showcase/notion/index.html:467
#, 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 ""
"El editor web de Notion envía texto y HTML a través de {ph0}. Mantiene los "
"datos del bloque localmente y coloca una IDENTIFICACIÓN en el HTML copiado "
"para conectarlos."

#: website/public/showcase/notion/index.html:473
msgctxt "page:showcase/notion/index.html"
msgid "HTML links to saved block data"
msgstr "Enlaces HTML a los datos de bloque guardados"

#: website/public/showcase/notion/index.html:497
msgctxt "page:showcase/notion/index.html"
msgid "Read the HTML ID"
msgstr "Leer el ID HTML"

#: website/public/showcase/notion/index.html:498
msgctxt "page:showcase/notion/index.html"
msgid "Find the same local ID"
msgstr "Encuentre la misma identificación local"

#: website/public/showcase/notion/index.html:499
msgctxt "page:showcase/notion/index.html"
msgid "Restore Notion block data"
msgstr "Restaurar datos de bloque Notion"

#: website/public/showcase/notion/index.html:501
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 ""
"Texto ilustrativo e ID. La prueba del módulo grabado restaura los datos del "
"bloque cuando los ID coinciden; una entrada obsoleta devuelve solo texto y "
"HTML."

#: website/public/showcase/notion/index.html:507
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 ""
"Al pegar, Notion busca el ID HTML y lo compara con la copia guardada. Los ID"
" coincidentes restauran los datos del bloque."

#: website/public/showcase/notion/index.html:511
msgctxt "page:showcase/notion/index.html"
msgid "Clipboard format recorded from web assets cached on July 13, 2026."
msgstr ""
"Formato de portapapeles grabado a partir de activos web almacenados en caché"
" el 13 de julio de 2026."

#: website/public/showcase/notion/index.html:517
msgctxt "page:showcase/notion/index.html"
msgid "More examples and sources"
msgstr "Más ejemplos y fuentes"

#: website/public/showcase/notion/index.html:519
msgctxt "page:showcase/notion/index.html"
msgid "Another example: Markdown tables"
msgstr "Otro ejemplo: Tablas de rebajas"

#: website/public/showcase/notion/index.html:520
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 analiza Markdown en datos de bloque. Este ejemplo muestra cómo una "
"tabla se convierte en encabezado y filas de datos."

#: website/public/showcase/notion/index.html:525
msgctxt "page:showcase/notion/index.html"
msgid "A table through Notion's Markdown parser"
msgstr "Una tabla a través del analizador de rebajas de Notion"

#: website/public/showcase/notion/index.html:546
msgctxt "page:showcase/notion/index.html"
msgid ""
"Recorded output from an extracted Markdown parser. The table becomes rows "
"and cells."
msgstr ""
"Salida grabada de un analizador Markdown extraído. La tabla se convierte en "
"filas y celdas."

#: website/public/showcase/notion/index.html:553
msgctxt "page:showcase/notion/index.html"
msgid "Another path: the offline SQLite connection"
msgstr "Otra ruta: la conexión SQLite sin conexión"

#. {ph0}: <code>getSqliteMeta</code>
#: website/public/showcase/notion/index.html:554
#, 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 ""
"Solicitudes de renderizador de Notion {ph0} a través de IPC. El proceso "
"principal crea un canal de mensajes y le da un puerto al renderizador y el "
"otro a un proceso de utilidad SQLite. Los lotes de declaraciones posteriores"
" y los resultados viajan por ese puerto."

#: website/public/showcase/notion/index.html:560
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 ""
"A continuación, se explica dónde se ejecuta el trabajo de la base de datos y"
" por qué rastrear solo la solicitud inicial de IPC pierde la conversación "
"posterior."

#: website/public/showcase/notion/index.html:567
msgctxt "page:showcase/notion/index.html"
msgid "Sources and how to read the excerpts"
msgstr "Fuentes y cómo leer los extractos"

#. {ph0}: <code>app.asar</code>
#. {ph1}: <code>main/index.js</code>
#. {ph2}: <code>isNotionWebContents</code>
#: website/public/showcase/notion/index.html:568
#, 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 ""
"El puente del portapapeles proviene de Notion Desktop 7.6.1 {ph0}: la "
"pestaña precarga y {ph1}. Los extractos expanden los nombres de variables "
"minimizados y omiten el código no relacionado; el ayudante de verificación "
"del remitente se muestra con su subyacente {ph2} llama."

#. {ph0}: <code>747001</code>
#. {ph1}: <code>58169</code>
#. {ph2}: <code>736810</code>
#. {ph3}: <code>422457</code>
#: website/public/showcase/notion/index.html:576
#, 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 ""
"Los ejemplos del portapapeles virtual y Markdown provienen de activos web "
"almacenados en caché el 13 de julio de 2026, incluidos los módulos {ph0}, "
"{ph1}, {ph2} y {ph3}. Esos activos tienen su propia versión. Las sondas "
"guardadas ejecutaron módulos extraídos y arneses pequeños; sus resultados "
"describen esas sondas en lugar de una sesión de IU de escritorio capturada."

#: website/public/showcase/notion/index.html:584
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 ""
"El resultado de REA que se muestra aquí es un análisis enfocado de la "
"precarga de pestañas guardada, registrada con el paquete REA 4.1.0 "
"publicado. Localiza la API y la operación de invocación. El miembro del "
"portapapeles y el receptor coincidente se conectan leyendo sus "
"implementaciones de envoltura en el paquete."

#. {ph0}: <code>422457</code>
#: website/public/showcase/notion/index.html:591
#, 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 ""
"El ejemplo de Markdown usa el módulo analizador {ph0}. Las pruebas de módulo"
" guardadas muestran que tanto los filtros de página como de chat conservan "
"esta tabla. Los analizadores pegar/importar, Markdown estructurado y AI/chat"
" tienen puntos de entrada separados y formatos intermedios."

#. {ph0}: <a href="../../guides/javascript/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:599
#, 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} Guía de aplicación de JavaScript{ph1}{ph2}Siga la función de "
"exportación de una pequeña aplicación Electron.{ph3}"

#. {ph0}: <a href="../dx-ball/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:606
#, 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} Reconstrucción DX-Ball{ph1}{ph2}Siga las instrucciones nativas de una "
"función C marcada.{ph3}"

#: website/public/showcase/notion/index.html:6
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron Reverse Engineering: Clipboard — REA"
msgstr "Notion Electron Ingeniería inversa: Portapapeles-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 ""
"Siga la API del portapapeles de Notion a través de la precarga de Electron, "
"los contenedores IPC y el proceso principal, con breves extractos de código "
"y un vistazo a su rico formato de portapapeles."

#: website/public/showcase/notion/index.html:255
msgctxt "page:showcase/notion/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/showcase/notion/index.html:263
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron case study"
msgstr "Estudio de caso Notion Electron"

#: website/public/showcase/notion/index.html:277
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion analysis prompt"
msgstr "Copie el indicador de análisis Notion"

#: website/public/showcase/notion/index.html:350
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion preload excerpt"
msgstr "Copie el extracto de precarga de Notion"

#: website/public/showcase/notion/index.html:379
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion invoke wrapper excerpt"
msgstr "Copiar extracto del contenedor de invocación Notion"

#: website/public/showcase/notion/index.html:410
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion handler wrapper excerpt"
msgstr "Copie el extracto del contenedor del controlador Notion"

#: website/public/showcase/notion/index.html:438
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion clipboard receiver excerpt"
msgstr "Copiar extracto del receptor del portapapeles Notion"

#: website/public/showcase/notion/index.html:493
msgctxt "page:showcase/notion/index.html"
msgid "Restoring rich clipboard data on paste"
msgstr "Restauración de datos enriquecidos del portapapeles al pegar"

#: website/public/showcase/notion/index.html:637
msgctxt "page:showcase/notion/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/showcase/th04/index.html:107
msgctxt "page:showcase/th04/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/th04/index.html:199
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / TH04"
msgstr "{ph0}Inicio{ph1} / {ph2}Vitrinas{ph3} / TH04"

#: website/public/showcase/th04/index.html:202
msgctxt "page:showcase/th04/index.html"
msgid "Case study · Touhou 4: Lotus Land Story"
msgstr "Estudio de caso * Touhou 4: Historia de Lotus Land"

#. {ph0}: <br />
#: website/public/showcase/th04/index.html:203
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Reconstructing TH04's{ph0}bullet patterns."
msgstr "Reconstruyendo los TH04{ph0}patrones de bala."

#: website/public/showcase/th04/index.html:204
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 anillo de balas comienza con un cálculo de ángulo corto. Use REA para "
"inspeccionar la función DOS original, luego siga sus instrucciones en C ++ "
"legible."

#: website/public/showcase/th04/index.html:209
msgctxt "page:showcase/th04/index.html"
msgid "PC-98 · 16-bit DOS · C++ and assembly"
msgstr "PC-98 · DOS de 16 bits * C++ y ensamblado"

#: website/public/showcase/th04/index.html:210
msgctxt "page:showcase/th04/index.html"
msgid "View the TH04 reconstruction"
msgstr "Ver la reconstrucción del TH04"

#: website/public/showcase/th04/index.html:216
msgctxt "page:showcase/th04/index.html"
msgid "From original instructions to checked source"
msgstr "De las instrucciones originales a la fuente verificada"

#. {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:218
#, 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 * Juego original{ph1}{ph2}PRINCIPAL.EXE{ph3}{ph4}El ejecutable PC-98"
" y su ayudante de ángulo de bala.{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:225
#, 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 * Inspeccionar con REA {ph1}{ph2}Instrucciones + "
"referencias{ph3}{ph4}Verifique el código DOS cargado y lea el cálculo del "
"ángulo del ejecutable.{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:233
#, 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 * Leer el C++{ph1}{ph2}Espacio → apuntar → rotar{ph3}{ph4}Conecte "
"cada operación a la reconstrucción mantenida.{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:240
#, 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 * Verifique la fuente{ph1}{ph2}2.139 bytes coincidentes{ph3}{ph4}Las"
" comprobaciones grabadas del compilador cubren el código de generación de "
"viñetas que contiene este ayudante.{ph5}"

#: website/public/showcase/th04/index.html:249
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 devuelve el código original y su evidencia de análisis. El proyecto TH04"
" proporciona las comprobaciones de código fuente y compilador mantenidas."

#: website/public/showcase/th04/index.html:257
msgctxt "page:showcase/th04/index.html"
msgid "In this case study"
msgstr "En este estudio de caso"

#. {ph0}: <a href="#ring">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:259
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The bullet ring{ph1}"
msgstr "{ph0}El anillo de bala{ph1}"

#. {ph0}: <a href="#rea">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:260
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}What REA returns{ph1}"
msgstr "{ph0}Qué devuelve REA{ph1}"

#. {ph0}: <a href="#source">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:261
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Assembly to C++{ph1}"
msgstr "{ph0}Ensamblado a C++{ph1}"

#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:262
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Checking the source{ph1}"
msgstr "{ph0}Comprobando la fuente{ph1}"

#. {ph0}: <a href="#project">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:263
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The full project{ph1}"
msgstr "{ph0}El proyecto completo{ph1}"

#: website/public/showcase/th04/index.html:268
msgctxt "page:showcase/th04/index.html"
msgid "How a ring aims at the player"
msgstr "Cómo apunta un anillo al jugador"

#: website/public/showcase/th04/index.html:269
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 ""
"El ataque de Elly solicita un anillo apuntado con un conteo inicial de 16. "
"Un ayudante calcula la dirección de cada bala. El mismo anillo puede mirar "
"en una dirección fija o girar hacia el jugador."

#. {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:276
#, 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}Su agente de codificación"

#: website/public/showcase/th04/index.html:281
#: website/public/showcase/th04/index.html:337
#: website/public/showcase/th04/index.html:514
#: website/public/showcase/th04/index.html:548
msgctxt "page:showcase/th04/index.html"
msgid "Copy"
msgstr "Copiar"

#. {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:290
#, 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}Usa REA para descubrir cómo TH04 crea un anillo de balas y "
"lo apunta al jugador. Explique el cálculo y muestre el "
"código.{ph3}{ph4}{ph5}"

#: website/public/showcase/th04/index.html:299
msgctxt "page:showcase/th04/index.html"
msgid ""
"An example prompt, with the original executable and reconstruction checkout "
"available locally."
msgstr ""
"Un indicador de ejemplo, con el ejecutable original y el pago de "
"reconstrucción disponibles localmente."

#. {ph0}: <code>0, 16, 32, …, 240</code>
#: website/public/showcase/th04/index.html:303
#, 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 almacena un giro completo en el sentido de las agujas del reloj en 256 "
"unidades de ángulo. Para 16 viñetas, cada índice agrega 16 unidades: {ph0}. "
"Al agregar la dirección del jugador, se rotan esas posiciones juntas."

#. {ph0}: <a href="../../assets/figures/th04-bullet-ring.svg" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:323
#, 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 ""
"Una ilustración de la matemática del ángulo recuperado para el conteo 16, la"
" dirección del jugador 40 y la rotación de la plantilla 0. {ph0}Figura "
"abierta{ph1}"

#: website/public/showcase/th04/index.html:331
msgctxt "page:showcase/th04/index.html"
msgid "The firing template in the recovered source"
msgstr "La plantilla de cocción en la fuente recuperada"

#: website/public/showcase/th04/index.html:336
msgctxt "page:showcase/th04/index.html"
msgid "Elly's ring attack · source excerpt"
msgstr "Ataque anular de Elly * extracto de la fuente"

#. {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:351
#, 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 ""
"Estas líneas seleccionan el patrón antes de la dificultad y el ajuste del "
"rendimiento. {ph0}Lea la fuente del ataque{ph1}."

#: website/public/showcase/th04/index.html:362
msgctxt "page:showcase/th04/index.html"
msgid "What REA returns"
msgstr "Qué devuelve REA"

#. {ph0}: <code>bullet_velocity_and_angle_set()</code>
#: website/public/showcase/th04/index.html:363
#, 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 ""
"Inspeccionamos {ph0}, la función que establece la velocidad y el ángulo de "
"cada bala.  REA devuelve sus instrucciones, pseudocódigo y referencias. Tres"
" partes de ese resultado explican el patrón."

#: website/public/showcase/th04/index.html:371
msgctxt "page:showcase/th04/index.html"
msgid "Check the DOS image before reading its code"
msgstr "Verifique la imagen de DOS antes de leer su código"

#: website/public/showcase/th04/index.html:392
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 comprobación vincula el código cargado y los registros de reubicación al "
"ejecutable suministrado. La ruta anterior se acorta para su visualización."

#: website/public/showcase/th04/index.html:398
msgctxt "page:showcase/th04/index.html"
msgid "Read the ring's multiply and divide"
msgstr "Lee el anillo multiplica y divide"

#. {ph0}: <code>SI</code>
#. {ph1}: <code>DS:53AF</code>
#. {ph2}: <code>bullet_template.count</code>
#: website/public/showcase/th04/index.html:416
#, 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} sostiene el índice de bala. El desplazamiento lo multiplica por 256, "
"luego la división usa el recuento leído de {ph1}. La fuente mantenida nombra"
" ese campo {ph2}. La secuencia completa aparece a continuación."

#: website/public/showcase/th04/index.html:425
msgctxt "page:showcase/th04/index.html"
msgid "Find where the pattern turns toward the player"
msgstr "Encuentra dónde se dirige el patrón hacia el jugador"

#: website/public/showcase/th04/index.html:446
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 ""
"Los operandos de instrucción exponen dos diferencias de coordenadas y un "
"ayudante de dirección. Su valor de retorno se suma al ángulo relativo del "
"anillo. Los nombres de origen hacen que esas direcciones sean legibles; REA "
"permite al agente verificar las operaciones originales detrás de ellas."

#: website/public/showcase/th04/index.html:457
msgctxt "page:showcase/th04/index.html"
msgid "From assembly to readable C++"
msgstr "Del ensamblado al C ++ legible"

#: website/public/showcase/th04/index.html:458
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 ""
"Seleccione un paso para que coincida con las instrucciones originales con el"
" cálculo del ángulo. Este resumen sigue la ruta del anillo objetivo; la "
"fuente completa también maneja spreads, pilas y patrones aleatorios."

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:469
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}01{ph1} Index"
msgstr "{ph0}01{ph1} Índice"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:477
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}02{ph1} Space"
msgstr "{ph0}02{ph1} Espacio"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:485
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}03{ph1} Aim"
msgstr "{ph0}03{ph1} Objetivo"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:493
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}04{ph1} Rotate"
msgstr "{ph0}04{ph1} Rotar"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:501
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}05{ph1} Store"
msgstr "{ph0}05{ph1} Tienda"

#: website/public/showcase/th04/index.html:513
msgctxt "page:showcase/th04/index.html"
msgid "REA · original 16-bit instructions"
msgstr "REA * instrucciones originales de 16 bits"

#: website/public/showcase/th04/index.html:547
msgctxt "page:showcase/th04/index.html"
msgid "Readable C++ · aimed-ring summary"
msgstr "Resumen de anillo dirigido legible por C++ ·"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SI</code>
#: website/public/showcase/th04/index.html:576
#, 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 * Lea el índice de viñetas.{ph1} El argumento de la pila se carga en"
" {ph2}. En un anillo de 16 balas, este índice de miembros va de 0 a 15."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SHL AX,8</code>
#. {ph3}: <code>IDIV</code>
#: website/public/showcase/th04/index.html:581
#, 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 * Espacie las direcciones alrededor de una vuelta completa · {ph1} "
"{ph2} multiplica por 256. El conteo es cero, extendido a una palabra, luego "
"{ph3} divide el producto por ese conteo. Para el conteo 16, cada índice "
"avanza 16 unidades de ángulo."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AX</code>
#: website/public/showcase/th04/index.html:588
#, 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 * Agregue la dirección del jugador.{ph1} Las dos restas forman "
"coordenadas jugador-menos-origen. El ayudante de dirección devuelve un "
"ángulo en {ph2}; agregarlo gira todo el anillo hacia el jugador."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ADD AL,[0x53ad]</code>
#: website/public/showcase/th04/index.html:594
#, 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 * Añadir la rotación del patrón.{ph1} {ph2} agrega el ángulo de la "
"plantilla. La plantilla inicial de Elly la establece en cero; otros patrones"
" pueden usar el mismo ayudante con una rotación."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AL</code>
#: website/public/showcase/th04/index.html:600
#, 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 * Mantenga el ángulo final en un byte.{ph1} La tienda escribe {ph2} "
"al campo de ángulo de generación. Los valores se ajustan después de 255, tal"
" como lo hace la conversión de bytes sin signo. La fuente circundante "
"también convierte este ángulo y velocidad en velocidad."

#: website/public/showcase/th04/index.html:609
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 ""
"El conjunto selecciona la rama del anillo objetivo, el cálculo del objetivo "
"y el almacén final. El C++ anterior es un resumen legible. Las "
"comprobaciones del compilador a continuación se aplican a la fuente "
"mantenida en el proyecto vinculado."

#: website/public/showcase/th04/index.html:615
msgctxt "page:showcase/th04/index.html"
msgid "Read the maintained ring and aim source"
msgstr "Lea el anillo mantenido y apunte la fuente"

#. {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:644
#, 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 de anillo{ph1} · {ph2}Objetivo y fuente de velocidad{ph3} · "
"{ph4}Representación de ángulos{ph5}"

#: website/public/showcase/th04/index.html:664
msgctxt "page:showcase/th04/index.html"
msgid "Checking the maintained source"
msgstr "Comprobación de la fuente mantenida"

#: website/public/showcase/th04/index.html:665
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 ""
"Las comprobaciones grabadas del proyecto TH04 compilan el código de "
"generación de viñetas, incluido este ayudante, con su cadena de herramientas"
" Turbo C++ 4.0 J anclada."

#: website/public/showcase/th04/index.html:672
msgctxt "page:showcase/th04/index.html"
msgid "2,139 matching bytes"
msgstr "2.139 bytes coincidentes"

#: website/public/showcase/th04/index.html:673
msgctxt "page:showcase/th04/index.html"
msgid ""
"The compiled bullet-generation code matches a 2,139-byte section of the "
"original executable."
msgstr ""
"El código compilado de generación de viñetas coincide con una sección de "
"2139 bytes del ejecutable original."

#: website/public/showcase/th04/index.html:679
msgctxt "page:showcase/th04/index.html"
msgid "Two clean builds"
msgstr "Dos construcciones limpias"

#: website/public/showcase/th04/index.html:680
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 ""
"Dos compilaciones separadas producen los mismos bytes coincidentes. Los "
"hashes de entrada grabados coinciden con la fuente mantenida que se muestra "
"aquí."

#. {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:686
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Recorded on 3 October 2026. {ph0}Read the compiler checks{ph1}."
msgstr ""
"Grabado el 3 de octubre de 2026. {ph0}Leer las comprobaciones del "
"compilador{ph1}."

#: website/public/showcase/th04/index.html:694
msgctxt "page:showcase/th04/index.html"
msgid "Target identity and analysis scope"
msgstr "Identidad del objetivo y alcance del análisis"

#: website/public/showcase/th04/index.html:699
msgctxt "page:showcase/th04/index.html"
msgid "Original target"
msgstr "Objetivo original"

#. {ph0}: <code>MAIN.EXE</code>
#: website/public/showcase/th04/index.html:700
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, 156,258 bytes, DOS MZ"
msgstr "{ph0}, 156,258 bytes, DOS MZ"

#: website/public/showcase/th04/index.html:703
msgctxt "page:showcase/th04/index.html"
msgid "Helper entry"
msgstr "Entrada auxiliar"

#. {ph0}: <code>0x2cfc8</code>
#: website/public/showcase/th04/index.html:704
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0} in REA's loaded image"
msgstr "{ph0} en la imagen cargada de REA"

#: website/public/showcase/th04/index.html:707
msgctxt "page:showcase/th04/index.html"
msgid "Original file offset"
msgstr "Desplazamiento del archivo original"

#. {ph0}: <code>0x1e7c8</code>
#. {ph1}: <code>address_to_file_offset</code>
#: website/public/showcase/th04/index.html:708
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, returned by {ph1}"
msgstr "{ph0}, devuelto por {ph1}"

#: website/public/showcase/th04/index.html:714
msgctxt "page:showcase/th04/index.html"
msgid "Recorded code inspection"
msgstr "Inspección de código grabado"

#: website/public/showcase/th04/index.html:715
msgctxt "page:showcase/th04/index.html"
msgid "REA 4.1.0 · 7 October 2026"
msgstr "REA 4.1.0 * 7 de octubre de 2026"

#: website/public/showcase/th04/index.html:720
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 ""
"Las comprobaciones del compilador cubren la sección completa de código de "
"adición de viñetas, incluido este ayudante. También comparan su contribución"
" al MAPA y la reubicación superpuesta."

#. {ph0}: <code>0x1000</code>
#: website/public/showcase/th04/index.html:725
#, 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 verificó la imagen de carga estática de DOS en el segmento de carga "
"{ph0}. Sus direcciones describen esa imagen de análisis. El resultado de la "
"función informa 503 bytes de cuerpo en dos rangos en un intervalo de 517 "
"bytes; las instrucciones seleccionadas anteriormente se encuentran en esos "
"rangos informados."

#. {ph0}: <code>0d72e980</code>
#: website/public/showcase/th04/index.html:732
#, 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 ""
"Los nombres de origen y las comprobaciones del compilador provienen del "
"punto de control TH04 {ph0}. Las observaciones de reconstrucción anteriores "
"utilizaron los propios scripts de análisis del proyecto; esta página agrega "
"una nueva inspección REA del mismo objetivo original. La identidad del juego"
" suministrado está anclada por su manifiesto de repositorio, con la "
"procedencia independiente de volcado prístino aún abierta."

#: website/public/showcase/th04/index.html:740
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 figura ilustra el cálculo del ángulo. Los controles de juego completo, el"
" tiempo y el comportamiento del hardware PC-98 tienen comprobaciones de "
"tiempo de ejecución separadas en el proyecto de reconstrucción."

#: website/public/showcase/th04/index.html:749
msgctxt "page:showcase/th04/index.html"
msgid "The full TH04 reconstruction"
msgstr "La reconstrucción completa del TH04"

#: website/public/showcase/th04/index.html:750
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 ""
"El proyecto construye los cuatro productos DOS del juego a partir de C++ y "
"ensamblado mantenidos. Más allá de la generación de viñetas, la fuente cubre"
" etapas, jefes, renderizado, entrada, menús, finales y manejo de partituras."

#. {ph0}: <a class="text-link" href="https://github.com/N0zoM1z0/th04" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:756
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Explore the TH04 repository{ph1}"
msgstr "{ph0}Explore el repositorio 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:762
#, 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}Fuente de generación de balas{ph1}{ph2}El ayudante completo, otros "
"tipos de patrones y ajuste de plantillas.{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:771
#, 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}Guía de compilación y ejecución de DOS{ph1}{ph2}Compile el código "
"fuente y pruébelo en el flujo de trabajo del emulador PC-98 del "
"proyecto.{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:780
#, 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}Estado actual del proyecto{ph1}{ph2}Verificación DOS y el puerto x64 "
"nativo separado.{ph3}"

#: website/public/showcase/th04/index.html:6
msgctxt "page:showcase/th04/index.html"
msgid "TH04 Reverse Engineering: DOS Bullet Patterns — REA"
msgstr "TH04 Ingeniería inversa: Patrones de viñetas 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 ""
"Inspeccione el código DOS original de 16 bits de TH04 con REA . Siga el "
"ensamblado y el C ++ recuperado para ver cómo se separa un anillo de balas y"
" se apunta al jugador."

#: website/public/showcase/th04/index.html:256
msgctxt "page:showcase/th04/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/showcase/th04/index.html:266
msgctxt "page:showcase/th04/index.html"
msgid "TH04 bullet-pattern case study"
msgstr "Estudio de caso del patrón de bala TH04"

#: website/public/showcase/th04/index.html:281
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 example prompt"
msgstr "Copie el indicador de ejemplo TH04"

#: website/public/showcase/th04/index.html:309
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 fixed and aimed bullet rings; scroll horizontally on smaller screens"
msgstr ""
"TH04 anillos de bala fijos y apuntados; desplácese horizontalmente en "
"pantallas más pequeñas"

#: website/public/showcase/th04/index.html:315
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 ""
"Dos diagramas de un anillo de 16 balas. El anillo fijo comienza en ángulo "
"cero. Agregar una dirección del jugador de 40 gira cada dirección en la "
"misma cantidad; la primera viñeta resaltada apunta hacia el jugador. Ambos "
"mantienen un espaciado de 16 unidades de ángulo, o 22.5 grados."

#: website/public/showcase/th04/index.html:337
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 firing template"
msgstr "Copie la plantilla de cocción TH04"

#: website/public/showcase/th04/index.html:464
msgctxt "page:showcase/th04/index.html"
msgid "Follow the TH04 aimed-ring calculation"
msgstr "Siga el cálculo del anillo apuntado TH04"

#: website/public/showcase/th04/index.html:514
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 assembly excerpt"
msgstr "Copie el extracto de la asamblea TH04"

#: website/public/showcase/th04/index.html:548
msgctxt "page:showcase/th04/index.html"
msgid "Copy readable aimed-ring calculation"
msgstr "Cálculo de anillo apuntado legible por copia"

#: website/public/showcase/th04/index.html:806
msgctxt "page:showcase/th04/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/assets/main.js:21
msgctxt "runtime"
msgid "Copied"
msgstr "Copiado"

#: website/public/assets/main.js:32
msgctxt "runtime"
msgid "Selected"
msgstr "Seleccionados"

#: website/public/assets/main.js:23
msgctxt "runtime"
msgid "Code copied to clipboard."
msgstr "Código copiado al portapapeles."

#: website/public/assets/main.js:34
msgctxt "runtime"
msgid "Code selected. Use your keyboard to copy it."
msgstr "Código seleccionado. Usa el teclado para copiarlo."

#: website/public/assets/main.js:158
#, python-brace-format
msgctxt "runtime"
msgid "REA on GitHub ({count})"
msgstr "REA en GitHub ({count})"

#: website/public/assets/dino-demo.js:77
#, python-brace-format
msgctxt "runtime"
msgid "Distance {distance}"
msgstr "Distancia {distance}"

#: website/public/assets/dino-demo.js:87
msgctxt "runtime"
msgid "Hit a cactus. Try another speed."
msgstr "Golpea un cactus. Prueba con otra velocidad."

#: website/public/assets/dino-demo.js:87
msgctxt "runtime"
msgid "Space or Jump ↑"
msgstr "Espacio o Salto ↑"

#: website/public/assets/dino-demo.js:97
msgctxt "runtime"
msgid "Play again"
msgstr "Juega de nuevo"

#: website/public/assets/dino-demo.js:97
#: website/public/assets/dino-demo.js:111
msgctxt "runtime"
msgid "Play"
msgstr "Jugar"

#: website/public/assets/dino-demo.js:171
msgctxt "runtime"
msgid "Pause"
msgstr "Pausa"

#: website/public/assets/dino-demo.js:112
msgctxt "runtime"
msgid "Press Play, then jump over the cactus."
msgstr "Presiona Play, luego salta sobre el cactus."

#: website/public/assets/dino-demo.js:147
msgctxt "runtime"
msgid "Hit a cactus. Press Play again, or change the speed and restart."
msgstr ""
"Golpea un cactus. Presione Reproducir nuevamente, o cambie la velocidad y "
"reinicie."

#: website/public/assets/dino-demo.js:172
msgctxt "runtime"
msgid "Running. Space or Jump clears a cactus."
msgstr "Corriendo. Espaciar o saltar despeja un cactus."

#: website/public/assets/dino-demo.js:183
#: website/public/assets/dino-demo.js:219
#: website/public/assets/dino-demo.js:224
msgctxt "runtime"
msgid "Paused. Press Play to continue."
msgstr "En pausa. Presione Reproducir para continuar."

#: website/public/assets/dino-demo.js:203
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Space or Jump clears a cactus."
msgstr "Velocidad fija: {speed}. Espaciar o saltar despeja un cactus."

#: website/public/assets/dino-demo.js:206
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Press Play to try it."
msgstr "Velocidad fija: {speed}. Presiona Play para probarlo."

#: website/public/assets/dino-demo.js:215
msgctxt "runtime"
msgid "Recovered rule: start at 6, then increase toward 13."
msgstr "Regla recuperada: comience en 6, luego aumente hacia 13."

#: website/public/assets/dino-demo.js:216
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}."
msgstr "Velocidad fija: {speed}."

#: website/public/assets/dino-demo.js:249
msgctxt "runtime"
msgid ""
"Replayed the recovered rule. All four values match the controlled original-"
"game check when rounded to three decimals."
msgstr ""
"Reproducimos la regla recuperada. Los cuatro valores coinciden con la "
"verificación controlada del juego original cuando se redondean a tres "
"decimales."

#: website/public/assets/dino-demo.js:252
msgctxt "runtime"
msgid ""
"The replay differs from the recorded original-game values. Compare the speed"
" rule and settings above."
msgstr ""
"La repetición difiere de los valores grabados del juego original. Compare la"
" regla de velocidad y la configuración anteriores."

#: website/public/assets/aegis-demo.js:22
#, python-brace-format
msgctxt "runtime"
msgid "{start}–{end} seconds"
msgstr "{start}–{end} segundos"

#: website/public/assets/aegis-demo.js:29
#, python-brace-format
msgctxt "runtime"
msgid "{seconds} seconds, time block {block}"
msgstr "{seconds} segundos, bloque de tiempo {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 ""
"El cálculo interactivo no está disponible en este navegador. El ejemplo "
"muestra el código a los 59 segundos."

#: website/public/assets/aegis-demo.js:62
msgctxt "runtime"
msgid "Checking…"
msgstr "Comprobación…"

#: 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} cheques aprobados (seis casos de referencia, de seis y "
"ocho dígitos)."

#: website/public/assets/aegis-demo.js:81
msgctxt "runtime"
msgid "Could not run the reference checks. Try again."
msgstr ""
"No se pudieron ejecutar las comprobaciones de referencia. Inténtalo de "
"nuevo."

#: website/public/assets/figures/analyst-thinking.svg:2
msgctxt "figure:analyst-thinking.svg"
msgid "An analyst thinking at a computer"
msgstr "Un analista pensando en una computadora"

#: website/public/assets/figures/ctf-mask-equation.svg:2
#: website/public/assets/figures/ctf-mask-equation.svg:24
msgctxt "figure:ctf-mask-equation.svg"
msgid "One check reveals one character"
msgstr "Un cheque revela un carácter"

#: 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 ""
"La séptima máscara selecciona solo la posición 21 en la cuadrícula de "
"entrada de seis por seis. Su código de carácter debe ser igual a 55, por lo "
"que el carácter es 7. Las otras máscaras seleccionan diferentes posiciones y"
" dan ecuaciones adicionales."

#: website/public/assets/figures/ctf-mask-equation.svg:25
msgctxt "figure:ctf-mask-equation.svg"
msgid "The seventh check. Cell labels are input positions, starting at 0."
msgstr ""
"El séptimo cheque. Las etiquetas de celda son posiciones de entrada, "
"comenzando en 0."

#: website/public/assets/figures/ctf-mask-equation.svg:27
msgctxt "figure:ctf-mask-equation.svg"
msgid "Encoded mask: −21, +1, −14, 0"
msgstr "Máscara codificada: -21, +1, -14, 0"

#: website/public/assets/figures/ctf-mask-equation.svg:28
msgctxt "figure:ctf-mask-equation.svg"
msgid "Skip 21 cells. Select 1. Skip 14. Stop at 0."
msgstr "Omita 21 celdas. Seleccione 1. Salto 14. Deténgase en 0."

#: website/public/assets/figures/ctf-mask-equation.svg:32
msgctxt "figure:ctf-mask-equation.svg"
msgid "Only one cell contributes to this sum"
msgstr "Solo una celda contribuye a esta suma"

#: website/public/assets/figures/ctf-mask-equation.svg:35
msgctxt "figure:ctf-mask-equation.svg"
msgid "Position 21 in the flag must contain 7."
msgstr "La posición 21 en la bandera debe contener 7."

#: website/public/assets/figures/ctf-mask-equation.svg:37
msgctxt "figure:ctf-mask-equation.svg"
msgid "Selected: one cell"
msgstr "Seleccionado: una celda"

#: website/public/assets/figures/ctf-mask-equation.svg:38
msgctxt "figure:ctf-mask-equation.svg"
msgid "26 masks give 26 equations."
msgstr "26 máscaras dan 26 ecuaciones."

#: website/public/assets/figures/ctf-mask-equation.svg:39
msgctxt "figure:ctf-mask-equation.svg"
msgid "Solve them together to find the flag."
msgstr "Resuélvalos juntos para encontrar la bandera."

#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:2
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:20
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "DX-Ball sound-pan investigation"
msgstr "Investigación de paneo de sonido 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 proporciona la instrucción, la persona que llama y la evidencia de "
"lectura de bytes para una función DX-Ball. Una entrada de pila se multiplica"
" por 1,5625, se desplaza por 500, se escala y se convierte en un número "
"entero. Maintained C se verifica en 3205 casos originales-x86 y una "
"repetición separada del compilador de 63 bytes."

# 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 "Stack"
msgstr "Pila"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:40
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "input x"
msgstr "entrada x"

# 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 "Integer"
msgstr "Entero"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:45
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "return"
msgstr "retorno"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:46
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Reconstructed function"
msgstr "Función reconstruida"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:47
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Maintained C"
msgstr "C reconstruido"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:48
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Brick-hit caller"
msgstr "Llamada al golpe"

#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:49
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:50
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Original code"
msgstr "Código original"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:51
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:54
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "comparison"
msgstr "comparación"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:52
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "3,205 cases"
msgstr "3.205 pruebas"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:53
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:55
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "63 matching bytes"
msgstr "63 bytes iguales"

#: website/public/assets/figures/rea-investigation-flow.svg:2
#: website/public/assets/figures/rea-investigation-flow.svg:22
msgctxt "figure:rea-investigation-flow.svg"
msgid "REA investigation flow"
msgstr "Flujo de investigación 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 ""
"Haga una pregunta sobre un objetivo local.  REA inspecciona y rastrea a "
"través de adaptadores de análisis locales, devuelve evidencia y admite "
"preguntas de seguimiento a medida que su agente explica, implementa y "
"prueba."

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:31
msgctxt "figure:rea-investigation-flow.svg"
msgid "1. Ask"
msgstr "1. Preguntar"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:32
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent + local target"
msgstr "Agente + archivo local"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:33
msgctxt "figure:rea-investigation-flow.svg"
msgid "App / binary / browser"
msgstr "App / archivo / navegador"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:34
msgctxt "figure:rea-investigation-flow.svg"
msgid "2. Inspect & trace"
msgstr "2. Inspeccionar"

#: website/public/assets/figures/rea-investigation-flow.svg:36
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:37
msgctxt "figure:rea-investigation-flow.svg"
msgid "3. Read the evidence"
msgstr "3. Leer las pruebas"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:38
msgctxt "figure:rea-investigation-flow.svg"
msgid "Code / references /"
msgstr "Código / referencias /"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:39
msgctxt "figure:rea-investigation-flow.svg"
msgid "unknowns"
msgstr "incógnitas"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:40
msgctxt "figure:rea-investigation-flow.svg"
msgid "4. Use what you learn"
msgstr "4. Aplicar"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:41
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent"
msgstr "Tu agente"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:42
msgctxt "figure:rea-investigation-flow.svg"
msgid "Explain / implement / test"
msgstr "Explicar / crear / probar"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:43
msgctxt "figure:rea-investigation-flow.svg"
msgid "Analysis tools"
msgstr "Herramientas RE"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:44
msgctxt "figure:rea-investigation-flow.svg"
msgid "Local analysis adapters"
msgstr "Adaptadores locales"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:45
msgctxt "figure:rea-investigation-flow.svg"
msgid "Follow-up question"
msgstr "Otra pregunta"

#: 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: espaciar y apuntar un anillo de balas"

#: 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 giro completo en el sentido de las agujas del reloj tiene 256 unidades de"
" ángulo. Dieciséis balas comienzan en ángulos cero, dieciséis, treinta y "
"dos, hasta 240. Agregar una dirección de jugador de ejemplo de cuarenta gira"
" las dieciséis direcciones juntas; la primera viñeta apunta al jugador. La "
"rotación de la plantilla es cero."

#: website/public/assets/figures/th04-bullet-ring.svg:24
msgctxt "figure:th04-bullet-ring.svg"
msgid "Fixed ring"
msgstr "Anillo fijo"

#: website/public/assets/figures/th04-bullet-ring.svg:25
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: angle 0"
msgstr "Primera viñeta: ángulo 0"

#: website/public/assets/figures/th04-bullet-ring.svg:26
msgctxt "figure:th04-bullet-ring.svg"
msgid "Aimed ring"
msgstr "Anillo apuntado"

#: website/public/assets/figures/th04-bullet-ring.svg:27
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: player direction"
msgstr "Primera viñeta: dirección del jugador"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/th04-bullet-ring.svg:64
#: website/public/assets/figures/th04-bullet-ring.svg:102
msgctxt "figure:th04-bullet-ring.svg"
msgid "Origin"
msgstr "Centro"

#: website/public/assets/figures/th04-bullet-ring.svg:105
msgctxt "figure:th04-bullet-ring.svg"
msgid "Player"
msgstr "Jugador"

#: website/public/assets/figures/th04-bullet-ring.svg:110
msgctxt "figure:th04-bullet-ring.svg"
msgid "Same spacing: 256 ÷ 16 = 16 angle units = 22.5°"
msgstr "Mismo espaciado: 256 ÷ 16 = 16 unidades de ángulo = 22,5°"

#: website/public/blog/index.html:118
#: website/public/blog/reverse-engineering-models/index.html:118
#: website/public/blog/touhou-reconstruction/index.html:118
#: website/public/contributors/index.html:119
#: website/public/examples/dino-lab/index.html:119
#: website/public/faq/index.html:118
#: website/public/first-investigation/index.html:118
#: website/public/get-started/index.html:118
#: website/public/guides/browser/index.html:118
#: website/public/guides/index.html:118
#: website/public/guides/javascript/index.html:118
#: website/public/guides/native/index.html:118 website/public/index.html:120
#: website/public/showcase/aegis/index.html:119
#: website/public/showcase/ctf/index.html:118
#: website/public/showcase/dx-ball/index.html:118
#: website/public/showcase/index.html:118
#: website/public/showcase/notion/index.html:118
#: website/public/showcase/th04/index.html:118
msgctxt "shared"
msgid "Showcases"
msgstr "Casos prácticos"

#: website/public/blog/index.html:119
#: website/public/blog/reverse-engineering-models/index.html:119
#: website/public/blog/touhou-reconstruction/index.html:119
#: website/public/contributors/index.html:120
#: website/public/examples/dino-lab/index.html:120
#: website/public/faq/index.html:119
#: website/public/first-investigation/index.html:119
#: website/public/get-started/index.html:119
#: website/public/guides/browser/index.html:119
#: website/public/guides/index.html:119
#: website/public/guides/javascript/index.html:119
#: website/public/guides/native/index.html:119 website/public/index.html:121
#: website/public/showcase/aegis/index.html:120
#: website/public/showcase/ctf/index.html:119
#: website/public/showcase/dx-ball/index.html:119
#: website/public/showcase/index.html:119
#: website/public/showcase/notion/index.html:119
#: website/public/showcase/th04/index.html:119
msgctxt "shared"
msgid "Blog"
msgstr "Blog"

#: website/public/blog/index.html:117
#: website/public/blog/reverse-engineering-models/index.html:117
#: website/public/blog/touhou-reconstruction/index.html:117
#: website/public/contributors/index.html:118
#: 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 "Get started"
msgstr "Primeros pasos"

#: website/public/blog/index.html:120
#: website/public/blog/reverse-engineering-models/index.html:120
#: website/public/blog/touhou-reconstruction/index.html:120
#: website/public/contributors/index.html:121
#: website/public/examples/dino-lab/index.html:121
#: website/public/faq/index.html:120
#: website/public/first-investigation/index.html:120
#: website/public/get-started/index.html:120
#: website/public/guides/browser/index.html:120
#: website/public/guides/index.html:120
#: website/public/guides/javascript/index.html:120
#: website/public/guides/native/index.html:120 website/public/index.html:122
#: website/public/showcase/aegis/index.html:121
#: website/public/showcase/ctf/index.html:120
#: website/public/showcase/dx-ball/index.html:120
#: website/public/showcase/index.html:120
#: website/public/showcase/notion/index.html:120
#: website/public/showcase/th04/index.html:120
msgctxt "shared"
msgid "Guides"
msgstr "Guías"

#: website/public/blog/index.html:242
#: website/public/blog/reverse-engineering-models/index.html:881
#: website/public/blog/touhou-reconstruction/index.html:1078
#: website/public/contributors/index.html:1129
#: website/public/examples/dino-lab/index.html:473
#: website/public/faq/index.html:571
#: website/public/first-investigation/index.html:532
#: website/public/get-started/index.html:1815
#: website/public/guides/browser/index.html:505
#: website/public/guides/index.html:280
#: website/public/guides/javascript/index.html:501
#: website/public/guides/native/index.html:507 website/public/index.html:1220
#: website/public/showcase/aegis/index.html:806
#: website/public/showcase/ctf/index.html:775
#: website/public/showcase/dx-ball/index.html:783
#: website/public/showcase/index.html:315
#: website/public/showcase/notion/index.html:629
#: website/public/showcase/th04/index.html:798
msgctxt "shared"
msgid "Source"
msgstr "Código fuente"

#: website/public/blog/index.html:243
#: website/public/blog/reverse-engineering-models/index.html:882
#: website/public/blog/touhou-reconstruction/index.html:1079
#: website/public/contributors/index.html:1130
#: website/public/examples/dino-lab/index.html:474
#: website/public/faq/index.html:572
#: website/public/first-investigation/index.html:533
#: website/public/get-started/index.html:1816
#: website/public/guides/browser/index.html:506
#: website/public/guides/index.html:281
#: website/public/guides/javascript/index.html:502
#: website/public/guides/native/index.html:508 website/public/index.html:1221
#: website/public/showcase/aegis/index.html:807
#: website/public/showcase/ctf/index.html:776
#: website/public/showcase/dx-ball/index.html:784
#: website/public/showcase/index.html:316
#: website/public/showcase/notion/index.html:630
#: website/public/showcase/th04/index.html:799
msgctxt "shared"
msgid "MIT license"
msgstr "Licencia MIT"

#: website/public/blog/index.html:244
#: website/public/blog/reverse-engineering-models/index.html:883
#: website/public/blog/touhou-reconstruction/index.html:1080
#: website/public/contributors/index.html:1131
#: website/public/examples/dino-lab/index.html:475
#: website/public/faq/index.html:573
#: website/public/first-investigation/index.html:534
#: website/public/get-started/index.html:1817
#: website/public/guides/browser/index.html:507
#: website/public/guides/index.html:282
#: website/public/guides/javascript/index.html:503
#: website/public/guides/native/index.html:509 website/public/index.html:1222
#: website/public/showcase/aegis/index.html:808
#: website/public/showcase/ctf/index.html:777
#: website/public/showcase/dx-ball/index.html:785
#: website/public/showcase/index.html:317
#: website/public/showcase/notion/index.html:631
#: website/public/showcase/th04/index.html:800
msgctxt "shared"
msgid "Join the community"
msgstr "Únete a la comunidad"

#: website/public/blog/index.html:245
#: website/public/blog/reverse-engineering-models/index.html:884
#: website/public/blog/touhou-reconstruction/index.html:1081
#: website/public/contributors/index.html:1132
#: website/public/examples/dino-lab/index.html:476
#: website/public/faq/index.html:574
#: website/public/first-investigation/index.html:535
#: website/public/get-started/index.html:1818
#: website/public/guides/browser/index.html:508
#: website/public/guides/index.html:283
#: website/public/guides/javascript/index.html:504
#: website/public/guides/native/index.html:510 website/public/index.html:1223
#: website/public/showcase/aegis/index.html:809
#: website/public/showcase/ctf/index.html:778
#: website/public/showcase/dx-ball/index.html:786
#: website/public/showcase/index.html:318
#: website/public/showcase/notion/index.html:632
#: website/public/showcase/th04/index.html:801
msgctxt "shared"
msgid "Follow us on X"
msgstr "Síguenos en X"

#: website/public/examples/dino-lab/index.html:311
msgctxt "page:examples/dino-lab/index.html"
msgid "REA · selected script source"
msgstr "REA * fuente de script seleccionada"

#: website/public/first-investigation/index.html:379
msgctxt "page:first-investigation/index.html"
msgid "Source"
msgstr "Código fuente"

#: website/public/first-investigation/index.html:433
msgctxt "page:first-investigation/index.html"
msgid "Expected formatter output"
msgstr "Salida esperada del formateador"

#: website/public/guides/index.html:224
msgctxt "page:guides/index.html"
msgid "Instructions"
msgstr "Instrucciones"

#: website/public/guides/index.html:225
msgctxt "page:guides/index.html"
msgid "Caller"
msgstr "Llamador"

#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "Constants"
msgstr "Constantes"

#: website/public/guides/index.html:227
msgctxt "page:guides/index.html"
msgid "C function"
msgstr "Función C"

#: website/public/guides/index.html:242
msgctxt "page:guides/index.html"
msgid "Button"
msgstr "Botón"

#: website/public/guides/index.html:243
msgctxt "page:guides/index.html"
msgid "Preload API"
msgstr "API de precarga"

#: website/public/guides/index.html:244
msgctxt "page:guides/index.html"
msgid "IPC"
msgstr "IPC"

#: website/public/guides/index.html:244
msgctxt "page:guides/index.html"
msgid "CSV file"
msgstr "Archivo CSV"

#: website/public/guides/index.html:264
msgctxt "page:guides/index.html"
msgid "Your click"
msgstr "Su clic"

#: website/public/guides/index.html:265
msgctxt "page:guides/index.html"
msgid "Captured request"
msgstr "Solicitud capturada"

#: website/public/guides/index.html:266
msgctxt "page:guides/index.html"
msgid "Export script"
msgstr "Script de exportación"

#: website/public/guides/javascript/index.html:362
msgctxt "page:guides/javascript/index.html"
msgid "REA result · summary.ipc excerpt"
msgstr "REA resultado · resumen.extracto de ipc"

#: website/public/guides/native/index.html:389
msgctxt "page:guides/native/index.html"
msgid "REA instruction excerpt · 0x406409"
msgstr "Extracto de instrucciones REA * 0x406409"

#: website/public/guides/native/index.html:403
msgctxt "page:guides/native/index.html"
msgid "REA caller excerpt · 0x411f5b"
msgstr "Extracto de la persona que llama REA * 0x411f5b"

#: website/public/guides/native/index.html:417
msgctxt "page:guides/native/index.html"
msgid "REA byte results · interpreted as little-endian doubles"
msgstr "Resultados de bytes REA * interpretados como dobles little-endian"

#: website/public/guides/native/index.html:434
msgctxt "page:guides/native/index.html"
msgid "Recovered C · excerpt"
msgstr "Extracto recuperado de C *"

#: website/public/index.html:1034
msgctxt "page:index.html"
msgid "Showcases →"
msgstr "Vitrinas →"

#: website/public/index.html:763
msgctxt "page:index.html"
msgid "Selected settings from the inspected script"
msgstr "Configuración seleccionada del script inspeccionado"

#: website/public/index.html:938
msgctxt "page:index.html"
msgid "Readable summary of the % handler"
msgstr "Resumen legible del controlador %"

#: website/public/index.html:982
msgctxt "page:index.html"
msgid "REA · selected original instructions"
msgstr "REA * instrucciones originales seleccionadas"

#: website/public/index.html:993
msgctxt "page:index.html"
msgid "Operator IDs · Microsoft’s source"
msgstr "ID de operador * Fuente de Microsoft"

#: website/public/showcase/aegis/index.html:404
#: website/public/showcase/aegis/index.html:436
msgctxt "page:showcase/aegis/index.html"
msgid "Agent → REA"
msgstr "Agente → REA"

#: website/public/showcase/aegis/index.html:414
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · selected results"
msgstr "REA → agente * resultados seleccionados"

#: website/public/showcase/aegis/index.html:450
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · methods and callers"
msgstr "REA → agente * métodos y llamadores"

#: website/public/showcase/aegis/index.html:520
msgctxt "page:showcase/aegis/index.html"
msgid "REA · selected decompiled Java"
msgstr "REA * Java descompilado seleccionado"

#: website/public/showcase/aegis/index.html:550
msgctxt "page:showcase/aegis/index.html"
msgid "Readable summary · agent's interpretation"
msgstr "Resumen legible * interpretación del agente"

#: website/public/showcase/aegis/index.html:605
msgctxt "page:showcase/aegis/index.html"
msgid "REA · generateOTP, complete body"
msgstr "REA * generateOTP, cuerpo completo"

#: website/public/showcase/aegis/index.html:723
msgctxt "page:showcase/aegis/index.html"
msgid "Download Aegis APK"
msgstr "Descargar Aegis APK"

#: website/public/showcase/aegis/index.html:727
msgctxt "page:showcase/aegis/index.html"
msgid "Download Android analysis provider"
msgstr "Descargar proveedor de análisis de Android"

#: website/public/showcase/ctf/index.html:307
#: website/public/showcase/ctf/index.html:343
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA"
msgstr "Agente → REA"

#: website/public/showcase/ctf/index.html:323
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected results"
msgstr "REA → agente * resultados seleccionados"

#: website/public/showcase/ctf/index.html:355
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected instructions"
msgstr "REA → agente * instrucciones seleccionadas"

#: website/public/showcase/ctf/index.html:418
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA · read_bytes"
msgstr "Agente → REA * read_bytes"

#: website/public/showcase/ctf/index.html:425
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · seventh entries"
msgstr "REA → agente * séptima entradas"

#: website/public/showcase/ctf/index.html:693
msgctxt "page:showcase/ctf/index.html"
msgid "Original executable · SHA-256"
msgstr "Ejecutable original * SHA-256"

#: website/public/showcase/ctf/index.html:729
msgctxt "page:showcase/ctf/index.html"
msgid "Download the original challenge"
msgstr "Descarga el desafío original"

#: website/public/showcase/ctf/index.html:733
msgctxt "page:showcase/ctf/index.html"
msgid "Download solver"
msgstr "Descargar solver"

#: website/public/showcase/dx-ball/index.html:334
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · pseudocode excerpt"
msgstr "REA resultado * extracto de pseudocódigo"

#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/dx-ball/index.html:357
#: website/public/showcase/dx-ball/index.html:381
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · {ph0}"
msgstr "Agente → REA  · {ph0}"

#: website/public/showcase/dx-ball/index.html:363
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → extracto de instrucciones del agente ·"

#: website/public/showcase/dx-ball/index.html:387
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · caller excerpt"
msgstr "REA → extracto del agente * llamante"

#. {ph0}: <code>read_bytes</code>
#: website/public/showcase/dx-ball/index.html:405
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · two {ph0} requests"
msgstr "Agente → REA * dos {ph0} solicitudes"

#: website/public/showcase/dx-ball/index.html:415
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte results · decoded as doubles"
msgstr "Resultados de bytes REA * decodificados como dobles"

#: website/public/showcase/dx-ball/index.html:768
msgctxt "page:showcase/dx-ball/index.html"
msgid "Start with your own target"
msgstr "Comience con su propio objetivo"

#: website/public/showcase/index.html:217
msgctxt "page:showcase/index.html"
msgid "APK"
msgstr "APK"

#: website/public/showcase/index.html:218
msgctxt "page:showcase/index.html"
msgid "Generating code"
msgstr "Generando código"

#: website/public/showcase/index.html:219
msgctxt "page:showcase/index.html"
msgid "Recovered rule"
msgstr "Regla recuperada"

#: website/public/showcase/index.html:220
msgctxt "page:showcase/index.html"
msgid "Adjustable clock"
msgstr "Reloj ajustable"

#: website/public/showcase/index.html:235
msgctxt "page:showcase/index.html"
msgid "Binary"
msgstr "Binario"

#: website/public/showcase/index.html:236
msgctxt "page:showcase/index.html"
msgid "Checking code"
msgstr "Comprobación del código"

#: website/public/showcase/index.html:237
msgctxt "page:showcase/index.html"
msgid "Equations"
msgstr "Ecuaciones"

#: website/public/showcase/index.html:238
msgctxt "page:showcase/index.html"
msgid "Correct!"
msgstr "¡Correcto!"

#: website/public/showcase/index.html:254
msgctxt "page:showcase/index.html"
msgid "Executable"
msgstr "Ejecutable"

#: website/public/showcase/index.html:255
msgctxt "page:showcase/index.html"
msgid "REA findings"
msgstr "Hallazgos REA"

#: website/public/showcase/index.html:256
msgctxt "page:showcase/index.html"
msgid "Recovered C"
msgstr "Recuperado C"

#: website/public/showcase/index.html:257
msgctxt "page:showcase/index.html"
msgid "Validation"
msgstr "Validación"

#: website/public/showcase/index.html:272
msgctxt "page:showcase/index.html"
msgid "Packaged app"
msgstr "Aplicación empaquetada"

#: website/public/showcase/index.html:273
msgctxt "page:showcase/index.html"
msgid "Exposed API"
msgstr "API expuesta"

#: website/public/showcase/index.html:274
msgctxt "page:showcase/index.html"
msgid "IPC wrappers"
msgstr "Envoltorios IPC"

#: website/public/showcase/index.html:275
msgctxt "page:showcase/index.html"
msgid "Clipboard"
msgstr "Portapapeles"

#: website/public/showcase/index.html:290
msgctxt "page:showcase/index.html"
msgid "Original DOS code"
msgstr "Código DOS original"

#: website/public/showcase/index.html:291
msgctxt "page:showcase/index.html"
msgid "REA instructions"
msgstr "Instrucciones REA"

#: website/public/showcase/index.html:292
msgctxt "page:showcase/index.html"
msgid "Angle calculation"
msgstr "Cálculo de ángulos"

#: website/public/showcase/index.html:293
msgctxt "page:showcase/index.html"
msgid "Bullet ring"
msgstr "Anillo de bala"

#: website/public/showcase/notion/index.html:309
msgctxt "page:showcase/notion/index.html"
msgid "Exposed page API"
msgstr "API de página expuesta"

#: website/public/showcase/notion/index.html:315
msgctxt "page:showcase/notion/index.html"
msgid "Renderer IPC call"
msgstr "Llamada IPC del renderizador"

#: website/public/showcase/notion/index.html:477
msgctxt "page:showcase/notion/index.html"
msgid "Sent to the system clipboard"
msgstr "Enviado al portapapeles del sistema"

#: website/public/showcase/notion/index.html:485
msgctxt "page:showcase/notion/index.html"
msgid "Saved locally by Notion"
msgstr "Guardado localmente por Notion"

#: website/public/showcase/notion/index.html:530
msgctxt "page:showcase/notion/index.html"
msgid "Markdown input"
msgstr "Entrada de rebajas"

#: website/public/showcase/notion/index.html:537
msgctxt "page:showcase/notion/index.html"
msgid "Structured parser output · excerpt"
msgstr "Salida estructurada del analizador · extracto"

#: website/public/showcase/notion/index.html:614
msgctxt "page:showcase/notion/index.html"
msgid "Analyze your own app"
msgstr "Analiza tu propia app"

#: website/public/showcase/th04/index.html:374
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA"
msgstr "Agente → REA"

#: website/public/showcase/th04/index.html:383
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · selected fields"
msgstr "REA → agente * campos seleccionados"

#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/th04/index.html:402
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA · {ph0}"
msgstr "Agente → REA  · {ph0}"

#: website/public/showcase/th04/index.html:408
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → extracto de instrucciones del agente ·"

#: website/public/showcase/th04/index.html:429
msgctxt "page:showcase/th04/index.html"
msgid "Same function result · aim excerpt"
msgstr "Resultado de la misma función · extracto del objetivo"

#: website/public/showcase/th04/index.html:438
msgctxt "page:showcase/th04/index.html"
msgid "Corresponding maintained C++"
msgstr "Correspondiente C ++ mantenido"

#: website/public/showcase/th04/index.html:618
msgctxt "page:showcase/th04/index.html"
msgid "Ring macro · TH04 branch, excerpt"
msgstr "Macro de anillo * Rama TH04, extracto"

#: website/public/showcase/th04/index.html:628
msgctxt "page:showcase/th04/index.html"
msgid "Angle and velocity · source excerpt"
msgstr "Ángulo y velocidad · extracto de la fuente"

#: website/public/assets/home.js:29
msgctxt "runtime"
msgid "Press % to see what happens to 10."
msgstr "Presione % para ver qué sucede con 10."

#: website/public/assets/home.js:32
msgctxt "runtime"
msgid "10% of 200 is 20. Press = to add it."
msgstr "el 10% de 200 es 20. Presione = para agregarlo."

#: website/public/assets/home.js:33
msgctxt "runtime"
msgid "For multiplication, 10 becomes 0.1. Press = to multiply."
msgstr ""
"Para la multiplicación, 10 se convierte en 0.1. Presione = para multiplicar."

#: scripts/website_i18n.py
msgctxt "runtime"
msgid "Translation is being updated. Read this page in English for now."
msgstr ""
"La traducción está siendo actualizada. Lea esta página en inglés por ahora."

#. {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:430
#, 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}Utilice REA para analizar {ph3} y explique cómo exporta "
"datos. Muestre el código relevante y las ubicaciones de "
"origen.{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:248
#, 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}Instala REA y conéctalo a este agente de programación usando"
" {ph3}. Muéstrame los cambios propuestos y espera mi aprobación antes de "
"aplicarlos. Después, verifica la instalación.{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:298
#, 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}Descargar {ph3} en una nueva carpeta de ejemplo y "
"descomprímala. Use REA para averiguar qué sucede cuando hago clic en "
"Exportar notas. Mostrar dónde {ph4} está escrito, qué campos contiene y los "
"archivos y líneas relevantes.{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:783
#, 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}Instala REA y conéctalo a este agente de programación usando"
" {ph3}. Muéstrame los cambios propuestos y espera mi aprobación antes de "
"aplicarlos. Después, verifica la instalación.{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:268
#, 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}Instala REA y conéctalo a este agente de programación usando"
" {ph3}. Muéstrame los cambios propuestos y espera mi aprobación antes de "
"aplicarlos. Después, verifica la instalación.{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">dino-speed.js</span>
#: website/public/examples/dino-lab/index.html:325
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstruction · {ph0}"
msgstr "Reconstrucción * {ph0}"

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/faq/index.html:223
#, 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 ""
"Con {ph0} y npm disponible, ejecute el programa de instalación, elija su "
"agente de codificación y revise los cambios propuestos."

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:207
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "A supplied example · {ph0} and npm · Your coding agent"
msgstr "Un ejemplo proporcionado · {ph0} y npm * Su agente de codificación"

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="../get-started/">
#. {ph2}: </a >
#: website/public/first-investigation/index.html:226
#, 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 ""
"Use un agente de codificación como Claude Code, Codex o Cursor. Necesitarás "
"{ph0} y npm; el {ph1}la guía de configuración enumera las versiones "
"compatibles{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:344
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Page · {ph1}{ph2}{ph3}Export notes{ph4}{ph5}Calls {ph6}.{ph7}"
msgstr ""
"{ph0}Página · {ph1}{ph2}{ph3}Notas de exportación{ph4}{ph5}Llamadas "
"{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:352
#, 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}Puente · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}Envía un mensaje con nombre al "
"proceso 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:360
#, 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}Manejador · {ph1}{ph2}{ph3}Escribir {ph4}{ph5}{ph6}Llama al formateador"
" en {ph7} y escribe el archivo.{ph8}"

#. {ph0}: <span translate="no">main.js</span>
#: website/public/first-investigation/index.html:378
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · lines 8–12"
msgstr "{ph0} * líneas 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:420
#, 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}Predecir el CSV para una nota con id 1 y título {ph3}. Luego"
" ejecute el ejemplo {ph4} formateador con {ph5} para comprobarlo. Muestra la"
" predicción y la salida real.{ph6}{ph7}{ph8}"

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:438
#, 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 ""
"El título permanece en un campo entrecomillado; cada comilla se duplica. "
"Esto verifica el formateador directamente con {ph0}."

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:256
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr ""
"Necesitarás {ph0} 22 (22.23.4+), 24 (24.22.1+) o 26+ (>=26.12.1).  npm viene con {ph1}."

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:262
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Don't have {ph0}, or not sure?"
msgstr "No tengo {ph0}, ¿ o no estás seguro?"

#. {ph0}: <code>node -v</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:281
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
"Si {ph0} muestra v22.23.4+, v24.22.1+ o v26.12.1+, ya puedes continuar. Si muestra "
"una versión anterior o \"not recognized\" / \"command not found\", instala "
"{ph1} 24 LTS:"

#. {ph0}: <span translate="no">export.js</span>
#: website/public/guides/browser/index.html:446
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · example source excerpt"
msgstr "{ph0} * extracto de fuente de ejemplo"

#. {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:464
#, 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}Abra el ejemplo{ph1} · {ph2}Descargar {ph3}{ph4} · {ph5}Descargar "
"{ph6}{ph7}"

#. {ph0}: <span translate="no">renderer.js</span>
#: website/public/guides/javascript/index.html:314
#: website/public/guides/javascript/index.html:330
#: website/public/guides/javascript/index.html:345
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} · example source"
msgstr "{ph0} * fuente de ejemplo"

#. {ph0}: <code>notes-example</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/guides/javascript/index.html:379
#, 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 ""
"Descargue el ejemplo y descomprímalo. El archivo contiene la versión "
"completa {ph0} carpeta. Analícelo con {ph1} y npm; Electron no es necesario "
"para este ejemplo."

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="get-started/">
#. {ph2}: </a>
#: website/public/index.html:313
#, 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 ""
"Primera vez, o falta {ph0} ¿o un agente de codificación? {ph1}Siga la guía "
"de configuración paso a paso →{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:528
#, 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}Uso REA para inspeccionar Windows Calculadora. ¿Por qué "
"{ph3} da 220?{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/index.html:715
#, python-brace-format
msgctxt "page:index.html"
msgid "REA · loaded {ph0} · selected lines"
msgstr "REA * cargado {ph0} * líneas seleccionadas"

#. {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:951
#, 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 lee {ph1}{ph2}{ph3}Lanza la aplicación Calculadora{ph4}{ph5}Se"
" abre el código {ph6}. A continuación, el agente selecciona la biblioteca de"
" la aplicación instalada.{ph7}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="aegis-prompt" >
#. {ph3}: <span translate="no">aegis-v3.4.3.apk</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/showcase/aegis/index.html:283
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect {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}Analiza {ph3} con REA. Explica cómo se genera el código de "
"acceso de seis dígitos y por qué cambia cada 30 segundos. Crea una pequeña "
"demo donde pueda cambiar la hora.{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:347
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · API member"
msgstr "tab_browser_view/{ph0} * Miembro API"

#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:376
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · IPC helper"
msgstr "tab_browser_view/{ph0} * Ayudante de IPC"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:407
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · handler helper"
msgstr "principal/{ph0} * ayudante del manejador"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:435
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · clipboard receiver"
msgstr "principal/{ph0} * receptor del portapapeles"

#: website/public/assets/theme.js:52
msgctxt "runtime"
msgid "Switch to light mode"
msgstr "Cambiar al modo claro"

#: website/public/assets/theme.js:53
msgctxt "runtime"
msgid "Switch to dark mode"
msgstr "Cambiar al modo oscuro"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/web-network-
#. captures.md" >
#. {ph1}: </a >
#: website/public/guides/browser/index.html:485
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"For HTTP request and response bodies, use {ph0}Fiddler Everywhere: SAZ "
"captures, MCP and public skills{ph1}. Export SAZ or HAR 1.2 for offline REA "
"capture Evidence, or connect Everywhere's MCP server to inspect captured "
"traffic with your agent."
msgstr ""
"Para examinar los cuerpos de las solicitudes y respuestas HTTP, use "
"{ph0}Fiddler Everywhere: capturas SAZ, MCP y habilidades públicas{ph1}. "
"Exporte SAZ o HAR 1.2 para obtener Evidence de capturas en REA sin conexión,"
" o conecte el servidor MCP de Everywhere para inspeccionar el tráfico "
"capturado con su agente."

#. {ph0}: <br />
#: website/public/blog/index.html:205
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Model specialization{ph0}Essay"
msgstr "Modelos especializados{ph0}Ensayo"

#: website/public/blog/index.html:207
msgctxt "page:blog/index.html"
msgid "Does reverse engineering need a bigger model?"
msgstr "¿Necesita la ingeniería inversa un modelo más grande?"

#: website/public/blog/index.html:208
msgctxt "page:blog/index.html"
msgid ""
"What Touhou reconstruction suggests about general models, specialist models "
"and learning from compiler feedback."
msgstr ""
"Lo que la reconstrucción de Touhou sugiere sobre los modelos generales, los "
"especializados y el aprendizaje a partir de los resultados del compilador."

#: website/public/blog/index.html:215
msgctxt "page:blog/index.html"
msgid "By N0zoM1z0 · 13 October 2026"
msgstr "Por N0zoM1z0 · 13 de octubre de 2026"

#: website/public/blog/reverse-engineering-models/index.html:107
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/blog/reverse-engineering-models/index.html:199
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Models and RE"
msgstr "{ph0}Inicio{ph1} / {ph2}Blog{ph3} / Modelos e ingeniería inversa"

#: website/public/blog/reverse-engineering-models/index.html:202
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Essay"
msgstr "ensayo"

# Reviewed for technical meaning and readability; preserve the distinction
# between historical evidence and proposed experiments.
#: website/public/blog/reverse-engineering-models/index.html:203
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Does reverse engineering need a bigger model?"
msgstr "¿La ingeniería inversa necesita un modelo más grande?"

#: website/public/blog/reverse-engineering-models/index.html:204
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "By N0zoM1z0 · 13 October 2026"
msgstr "Por N0zoM1z0 · 13 de octubre de 2026"

#: website/public/blog/reverse-engineering-models/index.html:206
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Takeaway"
msgstr "Ideas clave"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:208
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Model capability changes the hypotheses an agent can find.{ph1} Later "
"sessions have solved problems that earlier work left unresolved."
msgstr ""
"{ph0}La capacidad del modelo afecta qué hipótesis puede proponer un agente "
"de IA.{ph1} Las sesiones posteriores resolvieron problemas que el trabajo "
"anterior había dejado sin resolver."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:216
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}A familiar compiler gives specialization something concrete to "
"learn.{ph1} Some exact matches depend on narrow, reusable source patterns."
msgstr ""
"{ph0}Un compilador familiar ofrece patrones concretos para que los aprenda "
"un modelo especializado.{ph1} Algunas coincidencias exactas de código de "
"máquina dependen de patrones de código fuente específicos y reutilizables."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/reverse-engineering-models/index.html:223
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Give repository knowledge a fair comparison.{ph1} A smaller model with "
"good retrieval may already know enough to make progress."
msgstr ""
"{ph0}Incluya el conocimiento del repositorio en una comparación justa.{ph1} "
"Es posible que un modelo más pequeño con una buena recuperación de "
"conocimiento ya tenga suficiente información para avanzar."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:228
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Train the next useful experiment, and test its oracle.{ph1} The value "
"of feedback depends on what the checker actually verifies."
msgstr ""
"{ph0}Entrene el modelo para elegir el siguiente experimento útil y pruebe su"
" verificador.{ph1} La retroalimentación es útil solo en la medida en que el "
"verificador verifica lo correcto."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:235
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Measure accepted reconstruction against time and cost.{ph1} That is the"
" result I want from the whole agent."
msgstr ""
"{ph0}Evaluar los resultados de reconstrucción verificados junto con el "
"tiempo y el costo.{ph1} Eso es lo que quiero medir para todo el flujo de "
"trabajo del agente de IA."

#: website/public/blog/reverse-engineering-models/index.html:246
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "In this article"
msgstr "En este artículo"

#. {ph0}: <a href="#model-capability">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:248
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}What better models changed{ph1}"
msgstr "{ph0}Qué cambiaron los modelos más capaces{ph1}"

#. {ph0}: <a href="#specialization">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:249
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Why specialize?{ph1}"
msgstr "{ph0}¿Por qué especializarse?{ph1}"

#. {ph0}: <a href="#repository-knowledge">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:250
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Where experience lives{ph1}"
msgstr "{ph0}¿Dónde debería almacenarse esta experiencia?{ph1}"

#. {ph0}: <a href="#learning-search">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:251
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Learning the next experiment{ph1}"
msgstr "{ph0}Aprendiendo el próximo experimento útil{ph1}"

#. {ph0}: <a href="#re-and-rl">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:252
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}RE and reinforcement learning{ph1}"
msgstr "{ph0}Ingeniería inversa y aprendizaje por refuerzo{ph1}"

#. {ph0}: <a href="#oracle">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:253
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}When the oracle is wrong{ph1}"
msgstr "{ph0}Cuando el verificador está equivocado{ph1}"

#. {ph0}: <a href="#comparison">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:254
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}A comparison worth running{ph1}"
msgstr "{ph0}Una comparación que vale la pena realizar{ph1}"

#. {ph0}: <a href="#future-agent">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:255
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}What kind of agent?{ph1}"
msgstr "{ph0}¿Qué tipo de agente de IA sugiere esto?{ph1}"

#: website/public/blog/reverse-engineering-models/index.html:263
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What better models changed"
msgstr "Qué cambiaron los modelos más capaces"

#: website/public/blog/reverse-engineering-models/index.html:264
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Since August 2026, I have been exploring how much reverse engineering an "
"agent can carry out with access to a program and a way to check its work. "
"Most of my experience comes from reconstructing games, especially Touhou. As"
" I have changed models, the repositories have kept a record of what each "
"session managed to recover."
msgstr ""
"Desde agosto de 2026, he estado explorando cuánta ingeniería inversa puede "
"realizar un agente con acceso a un programa y una forma de comprobar su "
"funcionamiento. La mayor parte de mi experiencia proviene de la "
"reconstrucción de juegos, especialmente Touhou. A medida que he ido "
"cambiando de modelo, los repositorios han ido manteniendo un registro de lo "
"que cada sesión logró recuperar."

#: website/public/blog/reverse-engineering-models/index.html:272
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Much of that work aims at exact reconstruction: we compile the maintained "
"source under a pinned historical toolchain and check whether it reproduces "
"the target function. When a later model succeeds where earlier work stalled,"
" the source changes show what made that progress possible."
msgstr ""
"Gran parte de ese trabajo apunta a una reconstrucción exacta: compilamos la "
"fuente mantenida bajo una cadena de herramientas histórica con versiones "
"fijas y comprobamos si reproduce la función de destino. Cuando un modelo "
"posterior tiene éxito donde el trabajo anterior se estancó, los cambios en "
"las fuentes muestran qué hizo posible ese progreso."

#: website/public/blog/reverse-engineering-models/index.html:279
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "The temporary values had to stay alive together"
msgstr "Los valores temporales debían seguir siendo válidos al mismo tiempo"

#: website/public/blog/reverse-engineering-models/index.html:280
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Much of a TH09 attack function's logic had already been reconstructed, but "
"the compiler still stored temporary results differently from the original. "
"The remaining problem was how long those results needed to stay alive and "
"when their storage could be reused."
msgstr ""
"Gran parte de la lógica de la función de ataque TH09 ya había sido "
"reconstruida, pero el compilador aún almacenaba resultados temporales de "
"manera diferente al original. El problema restante era cuánto tiempo "
"necesitaban esos resultados para permanecer vivos y cuándo se podía "
"reutilizar su almacenamiento."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/de63c0f9121963f3a6b1ab5471c4878625fd3425"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/52929ed7c299f1a5f29cc13964e22510145fd616"
#. >
#. {ph3}: </a >
#: website/public/blog/reverse-engineering-models/index.html:287
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A {ph0}GPT-6-Sol checkpoint{ph1} recorded this mismatch after testing "
"several ordinary source arrangements. When {ph2}GPT-6.1-Sol returned to the "
"problem{ph3}, it found a useful hypothesis about how long those temporary "
"values needed to stay alive."
msgstr ""
"Un registro de sesión {ph0}GPT-6-Sol{ph1} informó esta discrepancia después "
"de probar varias disposiciones de código fuente ordinarias. Cuando "
"{ph2}GPT-6.1-Sol examinó el problema nuevamente{ph3}, propuso una hipótesis "
"útil sobre la vida útil de estas variables temporales."

#: website/public/blog/reverse-engineering-models/index.html:301
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The function produced temporary results and copied them into animation "
"positions. In C++, a temporary result stays alive until the expression using"
" it finishes. Grouping the real operations into one expression kept those "
"results alive together, so the compiler could no longer reuse the same "
"storage for all of them."
msgstr ""
"La función produjo resultados temporales y los copió en posiciones de "
"animación. En C++, un resultado temporal permanece vivo hasta que finaliza "
"la expresión que lo utiliza. Agrupar las operaciones reales en una expresión"
" mantuvo esos resultados vivos juntos, por lo que el compilador ya no pudo "
"reutilizar el mismo almacenamiento para todos ellos."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:308
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"One result still shared storage with a value used later for collision "
"checks. Giving that value its own lifetime resolved the remaining overlap. "
"After several targeted experiments, {ph0}a clean rebuild confirmed that the "
"full function matched{ph1}."
msgstr ""
"Un resultado aún compartía almacenamiento con un valor utilizado más "
"adelante para comprobaciones de colisiones. Darle a ese valor su propia vida"
" útil resolvió la superposición restante. Después de varios experimentos "
"específicos, {ph0}una recompilación limpia del código fuente confirmó que la"
" función completa coincidía{ph1}."

#: website/public/blog/reverse-engineering-models/index.html:317
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"What interests me is how the discovery and the tests worked together. The "
"lifetime hypothesis gave the agent a new direction; compiler feedback helped"
" it refine that hypothesis into a source arrangement that matched."
msgstr ""
"Me interesa saber cómo el descubrimiento y las pruebas se apoyaron "
"mutuamente. La hipótesis sobre la vida temporal de los objetos dio al agente"
" de IA una nueva dirección. Los comentarios del compilador le ayudaron a "
"refinar esa hipótesis hasta convertirla en una disposición de código fuente "
"que coincidiera."

#: website/public/blog/reverse-engineering-models/index.html:323
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A different control-flow graph"
msgstr "Un gráfico de flujo de control diferente"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/f8d12d72aaf02212ee1b585a8f3f86d7ed000269"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:324
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A second TH09 function shows why that new direction can matter. Here, the "
"obstacle was how several branches shared their final work. "
"{ph0}GPT-6.1-Sol's earlier work{ph1} got parts of the function to match, but"
" the branches still joined up differently from the original."
msgstr ""
"Una segunda función TH09 muestra por qué esa nueva dirección puede ser "
"importante. Aquí el obstáculo fue cómo varias ramas compartieron su trabajo "
"final. El trabajo anterior de {ph0}GPT-6.1-Sol{ph1} consiguió que partes de "
"la función coincidieran, pero las ramas aún se unían de manera diferente al "
"original."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/da33a646221198ceb7f3df2b96e2ca0e9b2f705f"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/5f825b28a862f8e1a6d4aea2f78a42f04c09a1c0"
#. >
#. {ph3}: </a >
#: website/public/blog/reverse-engineering-models/index.html:335
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}GPT-6-Astra changed the surrounding control-flow graph{ph1}. The main "
"paths now led to a shared final update and return. In that source structure,"
" the compiler combined the branches in the same way as the original. The "
"complete function matched, and a {ph2}separate rebuild check confirmed "
"it{ph3}."
msgstr ""
"{ph0}GPT-6-Astra cambió el gráfico de flujo de control circundante{ph1}. Los"
" caminos principales conducían ahora a una actualización final compartida y "
"al regreso. En esa estructura fuente, el compilador combinó las ramas de la "
"misma manera que el original. La función completa coincidió y una "
"{ph2}verificación de reconstrucción separada lo confirmó{ph3}."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:347
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Changing the representation opened a more productive search space.{ph1}"
" Both cases give me a reason to take general model capability seriously: an "
"agent can keep trying local variations for a long time before finding a "
"better way to express the surrounding work."
msgstr ""
"{ph0}Cambiar la representación abrió un espacio de búsqueda más "
"productivo.{ph1} Ambos casos me dan una razón para tomar en serio la "
"capacidad del modelo general: un agente puede seguir probando variaciones "
"locales durante mucho tiempo antes de encontrar una mejor manera de expresar"
" el trabajo circundante."

#: website/public/blog/reverse-engineering-models/index.html:356
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"At the same time, the later sessions started with earlier source and "
"recorded failures. That accumulated work was part of their advantage. The "
"history lets us inspect the discoveries and their checks; a controlled "
"comparison would help separate the effect of the model from the experience "
"it inherited."
msgstr ""
"Las sesiones posteriores también heredaron el código anterior y los intentos"
" fallidos documentados. Esa experiencia acumulada formaba parte de su "
"ventaja. El historial permite examinar los hallazgos y sus comprobaciones; "
"una comparación controlada ayudaría a separar el efecto del modelo del de la"
" experiencia que recibió."

#: website/public/blog/reverse-engineering-models/index.html:363
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This is where the question becomes interesting to me. Some of the progress "
"came from finding a new representation, while much of the remaining work "
"involved testing source forms against a familiar compiler. How much needs "
"broad reasoning ability, and how much could a model learn through repeated "
"experience with that compiler and code?"
msgstr ""
"Esto es lo que hace que la pregunta me resulte interesante. Algunos avances "
"se produjeron al encontrar una nueva representación. Gran parte del trabajo "
"restante implicó probar diferentes disposiciones de código fuente con un "
"compilador familiar. ¿Cuánto de esto requiere una amplia capacidad de "
"razonamiento? ¿Cuánto podría aprender un modelo trabajando repetidamente con"
" ese compilador y código?"

#: website/public/blog/reverse-engineering-models/index.html:373
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Why might a specialist do well?"
msgstr "¿Por qué podría funcionar bien un modelo de IA especializado?"

#: website/public/blog/reverse-engineering-models/index.html:374
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Touhou gives us a concrete reason to expect that experience to help. Much of"
" the game code comes from the same author, ZUN, so recurring habits are a "
"reasonable starting assumption. The repositories back that up with useful "
"examples: related loops and helper arrangements have supplied hypotheses "
"across games."
msgstr ""
"Touhou nos da una razón concreta para esperar que esa experiencia ayude. "
"Gran parte del código del juego proviene del mismo autor, ZUN, por lo que "
"los hábitos recurrentes son una suposición inicial razonable. Los "
"repositorios respaldan esto con ejemplos útiles: bucles relacionados y "
"arreglos de ayuda han proporcionado hipótesis en todos los juegos."

#: website/public/blog/reverse-engineering-models/index.html:381
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Those source patterns become more specific when we include the compiler. "
"Under a particular version and set of options, small changes in source can "
"produce repeatable differences in machine code. Some of those differences "
"are surprisingly obscure."
msgstr ""
"Esos patrones fuente se vuelven más específicos cuando incluimos el "
"compilador. Bajo una versión particular y un conjunto de opciones, pequeños "
"cambios en la fuente pueden producir diferencias repetibles en el código de "
"máquina. Algunas de esas diferencias son sorprendentemente oscuras."

#. {ph0}: <strong >
#. {ph1}: </strong >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/26bb64bdb093a13f73abd0ee8ae7ce199ee4658f"
#. >
#. {ph3}: <code>Supervisor::LoadDat</code>
#. {ph4}: </a >
#: website/public/blog/reverse-engineering-models/index.html:387
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"In TH095, for example, {ph0}even the name used for a local variable could "
"change where VC7.1 stored it{ph1}. Moving the declaration alone did not "
"solve the layout, but an earlier background function had revealed a naming "
"pattern that affected the compiler's choice. That gave us a more promising "
"hypothesis for {ph2}the reconstruction of {ph3}{ph4}."
msgstr ""
"En TH095, por ejemplo, {ph0}incluso el nombre de una variable local podría "
"afectar dónde la almacenó VC7.1{ph1}. Mover su declaración no resolvió el "
"diseño del almacenamiento. Sin embargo, una función en segundo plano "
"anterior había revelado un patrón de nombres que afectaba la elección del "
"compilador. Eso sugirió una hipótesis más prometedora para {ph2}reconstruir "
"{ph3}{ph4}."

#: website/public/blog/reverse-engineering-models/index.html:401
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Reusing that pattern for the file-size variable produced the required layout"
" without adding storage. The full function then matched."
msgstr ""
"La reutilización de ese patrón para la variable de tamaño de archivo produjo"
" el diseño requerido sin agregar almacenamiento. Entonces coincidió la "
"función completa."

#: website/public/blog/reverse-engineering-models/index.html:406
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This is the sort of narrow detail a general model may not know when it "
"arrives. A specialist trained on this compiler could encounter many such "
"cases and learn which source variations are worth testing first."
msgstr ""
"Este es un detalle muy específico que un modelo de IA de propósito general "
"puede no conocer cuando encuentra el problema por primera vez. Un modelo "
"especializado para este compilador podría ver muchos de estos casos y "
"aprender qué variaciones del código fuente vale la pena probar primero."

#: website/public/blog/reverse-engineering-models/index.html:412
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The opportunity is especially clear in final matching problems where we "
"already understand the behavior. We are then asking which ordinary source "
"form this compiler turns into the observed instructions. Specialization "
"could help the model propose those forms more efficiently, while the target "
"still determines which hypotheses survive."
msgstr ""
"La oportunidad es especialmente clara en los problemas finales de "
"emparejamiento en los que ya entendemos el comportamiento. Entonces nos "
"preguntamos qué disposición ordinaria del código fuente convierte este "
"compilador en las instrucciones observadas. La especialización podría ayudar"
" al modelo a proponer esas formas de manera más eficiente, mientras que el "
"objetivo aún determina qué hipótesis sobreviven."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/commit/6dce0a79d5b931f0e2a08475b90e0c33d2321b98"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:420
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The useful patterns would have to retain their context, though. TH08 uses an"
" earlier Visual C++ version than TH095 and TH09. TH04 uses a different DOS-"
"era compiler, and its {ph0}player reconstruction{ph1} needed different "
"hypotheses about source patterns and how the compiled code was combined into"
" an executable. Shared authorship gives us a prior, but each target tells us"
" whether it applies. Distinguishing those contexts is part of what a "
"specialist would need to learn."
msgstr ""
"Los patrones útiles deben conservar su contexto. TH08 utiliza una versión "
"Visual C++ anterior a TH095 y TH09. TH04 utiliza un compilador diferente de "
"la era DOS. Su {ph0}reconstrucción del código del jugador{ph1} necesitaba "
"diferentes hipótesis sobre los patrones del código fuente y cómo el código "
"compilado se vinculaba a un ejecutable. Tener el mismo autor nos da una "
"expectativa inicial, pero cada objetivo nos dice si aplica. Un modelo "
"especializado necesitaría distinguir estos contextos."

#: website/public/blog/reverse-engineering-models/index.html:436
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Where should that experience live?"
msgstr "¿Dónde debería almacenarse esta experiencia?"

#. {ph0}: <a href="../touhou-reconstruction/">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:437
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Before deciding to teach those patterns through model training, I would look"
" at the knowledge we already keep in the repository. In the {ph0}previous "
"essay{ph1}, I wrote about it becoming the project's working memory. That "
"memory includes compiler lessons, along with the source and failed "
"experiments that made them useful."
msgstr ""
"Antes de decidir enseñar esos patrones mediante el entrenamiento de modelos,"
" miraría el conocimiento que ya guardamos en el repositorio. En el "
"{ph0}ensayo anterior{ph1}, escribí sobre cómo se convertiría en la memoria "
"de trabajo del proyecto. Esa memoria incluye lecciones del compilador, junto"
" con la fuente y los experimentos fallidos que los hicieron útiles."

#: website/public/blog/reverse-engineering-models/index.html:446
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"By retrieving that record, an agent can start with a known result and "
"inspect how we reached it. It can also avoid alternatives that have already "
"failed in the same context. The starting point improves without changing the"
" model's weights."
msgstr ""
"Al recuperar ese registro, un agente puede comenzar con un resultado "
"conocido e inspeccionar cómo llegamos a él. También puede evitar "
"alternativas que ya han fracasado en el mismo contexto. El punto de partida "
"mejora sin cambiar los parámetros entrenados del modelo."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/1eb843383941d00065622a9e353146c4bb96979e"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:452
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"When reconstructing TH09's enemy-spawn function, a {ph0}GPT-6-Luna-max "
"session{ph1} drew a hypothesis from TH08's corresponding source family. That"
" earlier source suggested how to structure the loop and handle failures "
"within it. TH09's own evidence supplied the game-specific details, and clean"
" rebuilds confirmed the complete match."
msgstr ""
"Mientras reconstruía la función de TH09 para crear enemigos, una sesión "
"{ph0}GPT-6-Luna-max{ph1} tomó una hipótesis del código fuente relacionado de"
" TH08. Ese código anterior sugirió cómo organizar el bucle y manejar las "
"fallas dentro de él. La propia evidencia de TH09 proporcionó los detalles "
"específicos del juego. Las reconstrucciones de la fuente confirmaron que la "
"función completa coincidía."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:463
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}\"The model did not know that compiler quirk\" and \"the model could "
"not use it\" are different problems.{ph1} Retrieval may solve the first, but"
" turning that fact into a useful candidate still takes work. And if the "
"candidate fails, the model must decide what the result means for its next "
"attempt. Knowing the relevant pattern is only the beginning of that process."
msgstr ""
"{ph0}\"El modelo no sabía esa peculiaridad del compilador\" y \"el modelo no"
" podía usarlo\" son problemas diferentes.{ph1} La recuperación puede "
"resolver el primero, pero convertir ese hecho en un candidato útil aún "
"requiere trabajo. Y si el código fuente candidato falla, el modelo debe "
"decidir qué significa el resultado para su próximo intento. Conocer el "
"patrón relevante es sólo el comienzo de ese proceso."

#: website/public/blog/reverse-engineering-models/index.html:473
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"For that reason, I would include a smaller general model with good retrieval"
" in any comparison. Giving it the same library of experience would help us "
"identify what training adds: better candidate generation, better decisions "
"after feedback, or both."
msgstr ""
"Por esa razón, incluiría en cualquier comparación un modelo de IA de "
"propósito general más pequeño con buena recuperación. Darle la misma "
"biblioteca de experiencia nos ayudaría a identificar qué aporta la "
"capacitación: mejor generación de candidatos, mejores decisiones después de "
"la retroalimentación, o ambas."

#: website/public/blog/reverse-engineering-models/index.html:481
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Learning the next useful experiment"
msgstr "Aprendiendo el próximo experimento útil"

#: website/public/blog/reverse-engineering-models/index.html:482
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Those decisions after feedback are what I would most like to study. In "
"agentic reconstruction, the model proposes an explanation and tests it "
"against the program. Even when the candidate fails, the result can narrow "
"the remaining possibilities and suggest a more useful next experiment."
msgstr ""
"Esas decisiones después del feedback son las que más me gustaría estudiar. "
"En la reconstrucción agente, el modelo propone una explicación y la compara "
"con el programa. Incluso cuando el código fuente candidato falla, el "
"resultado puede reducir las posibilidades restantes y sugerir un próximo "
"experimento más útil."

#: website/public/blog/reverse-engineering-models/index.html:489
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Consider the temporary-results example again. Its final source shows the "
"arrangement that worked, but the route to that source contains more "
"information. Each of the following experiments helped identify what still "
"needed to change."
msgstr ""
"Considere nuevamente el ejemplo de los resultados temporales. Su fuente "
"final muestra el arreglo que funcionó, pero la ruta a esa fuente contiene "
"más información. Cada uno de los siguientes experimentos ayudó a identificar"
" lo que aún era necesario cambiar."

#: website/public/blog/reverse-engineering-models/index.html:502
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Experiment"
msgstr "experimento"

#: website/public/blog/reverse-engineering-models/index.html:503
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What its result taught us"
msgstr "Lo que nos enseñó su resultado"

#: website/public/blog/reverse-engineering-models/index.html:508
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Try a different way to copy the results"
msgstr "Pruebe una forma diferente de copiar los resultados."

#: website/public/blog/reverse-engineering-models/index.html:509
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "The copy code changes, but the function still differs."
msgstr "El código de copia cambia, pero la función aún difiere."

#: website/public/blog/reverse-engineering-models/index.html:514
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Use the returned values directly"
msgstr "Utilice los valores devueltos directamente"

#: website/public/blog/reverse-engineering-models/index.html:515
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Copying follows the original pattern, but temporary storage still differs."
msgstr ""
"La copia sigue el patrón original, pero el almacenamiento temporal aún "
"difiere."

#: website/public/blog/reverse-engineering-models/index.html:521
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Keep the temporary results alive together"
msgstr "Mantener todas las variables temporales válidas al mismo tiempo."

#: website/public/blog/reverse-engineering-models/index.html:522
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"They get separate storage, but one still overlaps a value used later for "
"collision checks."
msgstr ""
"Se almacenan por separado, pero uno aún se superpone a un valor utilizado "
"más adelante para las comprobaciones de colisiones."

#: website/public/blog/reverse-engineering-models/index.html:528
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Keep the collision-check value separate"
msgstr "Mantenga el valor de verificación de colisiones separado"

#: website/public/blog/reverse-engineering-models/index.html:529
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A clean rebuild confirms the complete match."
msgstr ""
"Una recompilación limpia del código fuente confirma la coincidencia "
"completa."

#: website/public/blog/reverse-engineering-models/index.html:534
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Selected experiments from the attack-function reconstruction above, grouped "
"by what they taught us."
msgstr ""
"Experimentos seleccionados de la reconstrucción de la función de ataque "
"anterior, agrupados según lo que nos enseñaron."

#: website/public/blog/reverse-engineering-models/index.html:538
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A training record that keeps this sequence can teach more than the final "
"source alone. It connects each proposed change to an observed result and the"
" next decision. Keeping ineffective variations matters too: they tell a "
"later agent which hypotheses have already been tested in that context."
msgstr ""
"Un registro de capacitación que mantenga esta secuencia puede enseñar más "
"que la fuente final por sí sola. Conecta cada cambio propuesto con un "
"resultado observado y la siguiente decisión. Mantener variaciones ineficaces"
" también es importante: le dicen a un agente posterior qué hipótesis ya han "
"sido probadas en ese contexto."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:545
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}I would want the model to learn how to use feedback.{ph1} A neutral "
"result is a reason to reconsider the variation; a changed mismatch may point"
" to another cause. When local edits stop being informative, the agent should"
" be able to revisit the source representation or inspect the evidence again."
msgstr ""
"{ph0}Me gustaría que el modelo aprendiera a utilizar la "
"retroalimentación.{ph1} Un resultado neutral es una razón para reconsiderar "
"la variación; una discrepancia modificada puede indicar otra causa. Cuando "
"las ediciones locales dejan de ser informativas, el agente debería poder "
"revisar la representación de la fuente o inspeccionar la evidencia "
"nuevamente."

#: website/public/blog/reverse-engineering-models/index.html:554
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Learning to make those choices requires autonomy. Sometimes the useful next "
"step is inspecting another caller rather than compiling another edit. A "
"rigid sequence of required rewrites would remove that choice, along with "
"part of the behavior we want the model to learn."
msgstr ""
"Aprender a tomar esas decisiones requiere autonomía. A veces, el siguiente "
"paso útil es inspeccionar a otra persona que llama en lugar de compilar otra"
" edición. Una secuencia rígida de reescrituras requeridas eliminaría esa "
"elección, junto con parte del comportamiento que queremos que aprenda el "
"modelo."

#: website/public/blog/reverse-engineering-models/index.html:563
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Why RE is interesting for reinforcement learning"
msgstr ""
"Por qué la ingeniería inversa es interesante para el aprendizaje por "
"refuerzo"

#: website/public/blog/reverse-engineering-models/index.html:564
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Bounded reconstruction gives us a practical environment for studying these "
"choices. Once the target and compiler are pinned, many source experiments "
"produce quick, repeatable feedback. The agent can compile a candidate, "
"inspect the mismatch and use that observation to choose its next step."
msgstr ""
"La reconstrucción acotada nos brinda un entorno práctico para estudiar estas"
" opciones. Una vez que se corrigen las versiones de destino y del "
"compilador, muchos experimentos de origen producen comentarios rápidos y "
"repetibles. El agente puede compilar un candidato, inspeccionar la "
"discrepancia y utilizar esa observación para elegir el siguiente paso."

#: website/public/blog/reverse-engineering-models/index.html:571
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Reinforcement learning could train that decision-making process through the "
"feedback it receives. A candidate accepted by a defined check gives us a "
"concrete outcome, while the sequence of attempts lets us observe how much "
"work it took to reach it."
msgstr ""
"El aprendizaje por refuerzo podría entrenar ese proceso de toma de "
"decisiones a través de la retroalimentación que recibe. Un candidato "
"aceptado mediante un control definido nos da un resultado concreto, mientras"
" que la secuencia de intentos nos permite observar cuánto trabajo ha sido "
"necesario para alcanzarlo."

#. {ph0}: <a href="https://aclanthology.org/2024.emnlp-main.203/" >
#. {ph1}: </a >
#. {ph2}: <a href="https://arxiv.org/html/2606.16162v1">
#. {ph3}: </a>
#: website/public/blog/reverse-engineering-models/index.html:577
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"There is already research supporting this direction. {ph0}LLM4Decompile{ph1}"
" studies models specialized for decompilation. {ph2}AutoDecompiler{ph3} "
"trains multi-turn refinement using compiler and execution feedback. Their "
"studies focus on functional recovery. For this work, I would use them as a "
"starting point for the related task of finding source that matches a "
"historical compiler's output."
msgstr ""
"Ya existen investigaciones que respaldan esta dirección. "
"{ph0}LLM4Decompile{ph1} estudia modelos especializados para la "
"descompilación. {ph2}AutoDecompiler{ph3} entrena el refinamiento de varios "
"turnos utilizando el compilador y los comentarios de ejecución. Sus estudios"
" se centran en la recuperación funcional. Para este trabajo, los usaría como"
" punto de partida para la tarea relacionada de encontrar una fuente que "
"coincida con la salida de un compilador histórico."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/af9cb1d3e839b15a78b47ac1701506083cc82847"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:589
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To reach such a well-defined task, though, we may first need to establish "
"what a function owns or devise a new runtime measurement. In TH08, for "
"example, a {ph0}collision difference led back to how the original program "
"handled floating-point calculations{ph1}. Before the agent could test a "
"useful correction, it had to work out what to measure."
msgstr ""
"Sin embargo, para alcanzar una tarea tan bien definida, es posible que "
"primero necesitemos establecer qué recursos posee una función o diseñar una "
"nueva forma de observar el comportamiento del programa durante su ejecución."
" En TH08, por ejemplo, una {ph0}diferencia de colisión llevó a cómo el "
"programa original manejaba los cálculos de punto flotante{ph1}. Antes de que"
" el agente pudiera probar una corrección útil, tenía que decidir qué medir."

#: website/public/blog/reverse-engineering-models/index.html:600
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This suggests another role for a broadly capable model: helping make the "
"problem checkable in the first place. Once that check exists, we can "
"investigate how far a learned search policy can get with it."
msgstr ""
"Esto sugiere otra función para un modelo con amplias capacidades: ayudar a "
"que el problema sea verificable en primer lugar. Una vez que exista esa "
"verificación, podemos investigar hasta dónde puede llegar una política de "
"búsqueda aprendida."

#: website/public/blog/reverse-engineering-models/index.html:608
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "When the oracle is wrong"
msgstr "Cuando el verificador está equivocado"

#: website/public/blog/reverse-engineering-models/index.html:609
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Once we train against that check, its coverage becomes part of what the "
"model learns. I call the reference or checker an oracle. Even if it gives a "
"repeatable answer, we still need to understand what that answer covers."
msgstr ""
"Al entrenar con una comprobación, su cobertura pasa a formar parte del "
"entorno de aprendizaje. Llamo oracle a esa referencia o verificador. Aunque "
"la respuesta sea repetible, debemos entender qué verifica realmente."

#: website/public/blog/reverse-engineering-models/index.html:615
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"TH08 showed how much can hide outside that coverage. Some reconstructed "
"functions passed their exact comparisons with wrong floating constants. The "
"comparator adjusted relocated addresses before checking instructions, but it"
" checked the values behind those addresses only when they had been "
"explicitly recorded for verification. Other literal references could pass "
"without their values being examined."
msgstr ""
"TH08 mostró cuánto se puede ocultar fuera de esa cobertura. Algunas "
"funciones reconstruidas pasaron sus comparaciones exactas con constantes "
"flotantes incorrectas. El comparador ajustó las direcciones reubicadas antes"
" de verificar las instrucciones, pero verificó los valores detrás de esas "
"direcciones solo cuando se habían registrado explícitamente para su "
"verificación. Otras referencias literales podrían pasar sin que se examinen "
"sus valores."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph1}: </a >
#. {ph2}: <code>1.0f</code>
#. {ph3}: <code>32.0f</code>
#: website/public/blog/reverse-engineering-models/index.html:624
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To close that gap, a {ph0}wider audit{ph1} found incorrect constants in "
"functions that had already been accepted. In one calculation, the "
"reconstructed source added {ph2} where the original added {ph3}."
msgstr ""
"Para abordar esta brecha, una {ph0}auditoría más amplia{ph1} encontró "
"constantes incorrectas en funciones que ya habían pasado la verificación. En"
" un cálculo, el código fuente reconstruido agregó {ph2}, mientras que el "
"original agregó {ph3}."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:634
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}A learner rewarded by the old check could learn to produce the wrong "
"reconstruction.{ph1} We had not trained an RL model against this oracle; the"
" observed failure was in the check itself. But using that check as a reward "
"would have made the same blind spot part of the learning environment."
msgstr ""
"{ph0}Un modelo recompensado por la comprobación anterior podría aprender a "
"producir una reconstrucción incorrecta.{ph1} No entrenamos un modelo RL "
"usando ese verificador. El fallo que observamos estaba en la propia "
"comprobación. Pero si lo usáramos como recompensa, el mismo punto ciego "
"pasaría a formar parte del entorno de aprendizaje."

#. {ph0}: <a href="https://arxiv.org/html/2609.05370v1" >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:644
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A functional test can have a similar blind spot. {ph0}Differential-fuzzing "
"research on LLM decompilers{ph1} has found behavior differences beyond the "
"supplied tests. Passing those tests therefore needs to be read in terms of "
"the cases they exercise, just as an instruction match needs to be read in "
"terms of the bytes and data it checks."
msgstr ""
"Una prueba funcional puede tener un punto ciego similar. {ph0}La "
"investigación que utilizó fuzzing diferencial en descompiladores LLM{ph1} "
"encontró diferencias de comportamiento fuera de las pruebas proporcionadas. "
"Por lo tanto, debemos entender una prueba aprobatoria en términos de los "
"casos en los que se aplica. De manera similar, una coincidencia de "
"instrucciones debe entenderse en términos de los bytes y datos que verifica."

#: website/public/blog/reverse-engineering-models/index.html:654
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Before using either kind of check as a reward, I would test it with "
"deliberate failures. I would also keep final acceptance outside the "
"candidate's editable source, so the model has to satisfy the check through "
"its reconstruction. Otherwise, something like a byte array copied from the "
"target could satisfy a naive score without recovering useful source."
msgstr ""
"Antes de utilizar cualquier tipo de control de verificación como recompensa,"
" lo probaría con resultados deliberadamente incorrectos. También mantendría "
"la aceptación final separada del código fuente que el agente de IA puede "
"editar. El modelo debe pasar la verificación reconstruyendo el programa "
"correctamente. De lo contrario, simplemente copiar una matriz de bytes del "
"destino podría engañar a un sistema de puntuación ingenuo sin recuperar el "
"código fuente útil."

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:662
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Improving the learner and improving its oracle belong to the same "
"research problem.{ph1} As the learner gets better at optimizing the feedback"
" we give it, understanding that feedback becomes more important too."
msgstr ""
"{ph0}Mejorar al alumno y mejorar su verificador pertenecen al mismo problema"
" de investigación.{ph1} A medida que el alumno mejora en la optimización de "
"los comentarios que le damos, comprender esos comentarios también se vuelve "
"más importante."

#: website/public/blog/reverse-engineering-models/index.html:672
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A comparison worth running"
msgstr "Una comparación que vale la pena realizar"

#: website/public/blog/reverse-engineering-models/index.html:673
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"With those checks in place, I would start the comparison on a fixed VC7.1 "
"task family. First, I would establish baselines for a strong general model "
"and a smaller one. Adding repository knowledge to the smaller model would "
"show what retrieval changes. From there, supervised specialization and an "
"RL-trained version would let us examine what training adds."
msgstr ""
"Con esas comprobaciones implementadas, comenzaría la comparación en una "
"familia de tareas fija VC7.1. Primero, establecería líneas de base para un "
"modelo de IA de propósito general sólido y uno más pequeño. Agregar "
"conocimiento del repositorio al modelo más pequeño mostraría qué cambios en "
"la recuperación. A partir de ahí, la especialización supervisada y una "
"versión capacitada con RL nos permitirían examinar qué agrega la "
"capacitación."

#: website/public/blog/reverse-engineering-models/index.html:681
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To make those comparisons informative, each model would receive the same "
"target evidence and tools. For the training-specific comparisons, I would "
"keep the base model and available knowledge fixed as well. Repeated trials "
"would help distinguish a reliable search strategy from a lucky candidate."
msgstr ""
"Para que esas comparaciones sean informativas, cada modelo recibiría la "
"misma evidencia y herramientas objetivo. Para las comparaciones específicas "
"de la capacitación, también mantendría fijo el modelo base y el conocimiento"
" disponible. Las pruebas repetidas ayudarían a distinguir una estrategia de "
"búsqueda confiable de una solución candidata que tiene éxito por casualidad."

#: website/public/blog/reverse-engineering-models/index.html:688
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"I would then separate two starting conditions: reconstructing a function "
"from its instructions, and closing the last few differences in maintained "
"source. A specialist might be excellent at the second task while a general "
"model does much of the work needed to reach it. Measuring them separately "
"would reveal that division of work."
msgstr ""
"Luego separaría dos condiciones iniciales: reconstruir una función a partir "
"de sus instrucciones y cerrar las últimas diferencias en la fuente "
"mantenida. Un modelo de IA especializado podría ser excelente en la segunda "
"tarea, mientras que un modelo de IA de propósito general hace gran parte del"
" trabajo necesario para alcanzarla. Medirlos por separado revelaría esa "
"división del trabajo."

#: website/public/blog/reverse-engineering-models/index.html:696
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Both tasks need genuinely held-out examples. Because related Touhou games "
"share engine code, holding out a game's name would still allow nearly "
"identical functions to appear in training. I would instead hold out source "
"families and keep their accepted answers out of both training and retrieval."
msgstr ""
"Ambas tareas necesitan ejemplos de prueba excluidos del entrenamiento y la "
"recuperación. Los juegos Touhou relacionados comparten el código del motor. "
"Excluir un juego del entrenamiento aún podría dejar funciones casi idénticas"
" en el conjunto de entrenamiento. En cambio, excluiría grupos enteros de "
"código fuente relacionado y mantendría sus respuestas verificadas fuera de "
"los datos de entrenamiento y de la biblioteca de recuperación."

#: website/public/blog/reverse-engineering-models/index.html:703
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"On those examples, the outcome would be complete, independently validated "
"matches. Giving each model the same candidate or compile budget would help "
"compare search quality. Measuring elapsed time and total cost, including "
"compilation, would tell us whether that quality produces an efficient "
"workflow. Training costs would need their own accounting too."
msgstr ""
"Para estos ejemplos, el resultado serían coincidencias completas y "
"verificadas de forma independiente. La igualdad de presupuestos para las "
"propuestas de los candidatos o los intentos de compilación ayudaría a "
"comparar la calidad de la búsqueda. Medir el tiempo y el costo total, "
"incluida la compilación, mostraría si esa calidad produce un flujo de "
"trabajo eficiente. Los costos de capacitación deben medirse por separado."

#: website/public/blog/reverse-engineering-models/index.html:711
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Both views matter because a cheaper proposal can become an expensive "
"workflow if it causes more uninformative compiles. Conversely, a slower "
"model may pay for itself by finding a useful experiment sooner. The "
"comparison should capture those costs."
msgstr ""
"Ambas medidas importan. Una propuesta barata puede generar un flujo de "
"trabajo costoso si genera más compilaciones que no proporcionan información "
"útil. Por el contrario, un modelo más lento puede resultar más económico si "
"encuentra antes un experimento útil. La comparación debe incluir estos "
"costos."

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/ab72fd77728293fc0beacfc656ca701b0e266016"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:717
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Counting accepted results also keeps intermediate progress in perspective. "
"One TH09 {ph0}replay-save candidate{ph1} looked promising because the "
"compiled function had the expected size, but a full comparison still found "
"substantial differences. Changes in how the compiler arranges instructions "
"can also make a candidate look closer without resolving the underlying "
"problem. Such diagnostics can guide the next experiment, but I would "
"validate any reward for \"getting closer\" against the full acceptance "
"check."
msgstr ""
"Contar los resultados aceptados también ayuda a interpretar los avances "
"intermedios. Un {ph0}candidato para guardar repeticiones{ph1} de TH09 "
"parecía prometedor porque la función compilada tenía el tamaño esperado, "
"pero la comparación completa aún encontró diferencias importantes. La forma "
"en que el compilador ordena las instrucciones puede hacer que un candidato "
"parezca más cercano sin resolver el problema de fondo. Estos diagnósticos "
"orientan el siguiente experimento; antes de premiar una mayor cercanía, la "
"contrastaría con la comprobación completa de aceptación."

#: website/public/blog/reverse-engineering-models/index.html:732
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"I would be interested in the pattern across these results. If a specialist "
"does well within a familiar compiler family, does that advantage survive a "
"toolchain change? And once both models have good retrieval, how much does "
"training still add? The answers would help us decide where each kind of "
"model is most useful."
msgstr ""
"Me interesaría conocer el patrón de estos resultados. Si un modelo de IA "
"especializado funciona bien dentro de una familia de compiladores familiar, "
"¿esa ventaja sobrevive a un cambio en la cadena de herramientas? Y una vez "
"que ambos modelos de IA tengan una buena recuperación, ¿cuánto aporta aún el"
" entrenamiento? Las respuestas nos ayudarían a decidir dónde es más útil "
"cada tipo de modelo."

#: website/public/blog/reverse-engineering-models/index.html:741
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What kind of agent does this suggest?"
msgstr "¿Qué tipo de agente de IA sugiere esto?"

#: website/public/blog/reverse-engineering-models/index.html:742
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"If the models turn out to help at different stages, a useful arrangement "
"might be a broad agent with access to a specialist. Once a task becomes a "
"familiar compiler search, it could ask the specialist for candidates. If the"
" results stop making sense, the broader agent could return to the target "
"evidence or investigate the measurement itself."
msgstr ""
"Si los modelos resultan útiles en diferentes etapas, un acuerdo útil podría "
"ser un agente amplio con acceso a un modelo de IA especializado. Una vez que"
" una tarea se convierte en una búsqueda familiar del compilador, podría "
"solicitar candidatos al modelo de IA especializado. Si los resultados dejan "
"de tener sentido, el agente más amplio podría volver a la evidencia objetivo"
" o investigar la medición en sí."

#: website/public/blog/reverse-engineering-models/index.html:750
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"In that arrangement, specialization becomes a tool the agent can choose as "
"the investigation develops. The agent keeps the freedom to change direction "
"that made the earlier breakthroughs possible."
msgstr ""
"En ese arreglo, la especialización se convierte en una herramienta que el "
"agente puede elegir a medida que se desarrolla la investigación. El agente "
"conserva la libertad de cambiar la dirección que hizo posibles los avances "
"anteriores."

#: website/public/blog/reverse-engineering-models/index.html:755
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This follows naturally from the industrial shift I described in the previous"
" essay. Being able to run many more experiments changes how we organize the "
"work. It also gives us a reason to ask which decisions need broad judgment "
"and which improve through repeated experience with a particular craft."
msgstr ""
"Esto se deriva naturalmente del cambio industrial que describí en el ensayo "
"anterior. Poder realizar muchos más experimentos cambia la forma en que "
"organizamos el trabajo. También nos da una razón para preguntar qué "
"decisiones requieren un juicio amplio y cuáles mejoran a través de "
"experiencias repetidas con un oficio en particular."

#: website/public/blog/reverse-engineering-models/index.html:762
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"For now, the strongest general model has earned its place in my workflow by "
"opening problems I had left unresolved. Those successes are what make me "
"want to examine the work more closely: how much depended on the model's "
"breadth, and how much could be handled by a model trained in this particular"
" kind of reconstruction?"
msgstr ""
"Por ahora, el modelo general más potente se ha ganado su lugar en mi flujo "
"de trabajo al resolver problemas que había dejado pendientes. Esos éxitos me"
" llevan a examinar el proceso: ¿cuánto dependía de la amplitud del modelo y "
"cuánto podría asumir uno entrenado específicamente para esta clase de "
"reconstrucción?"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:770
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}The repositories give us a way to test the question.{ph1} I would like "
"to use that record to build the comparison and see what we learn."
msgstr ""
"{ph0}Los repositorios nos brindan una forma de probar la pregunta.{ph1} Me "
"gustaría usar ese registro para realizar la comparación y ver qué "
"aprendemos."

#: website/public/blog/reverse-engineering-models/index.html:780
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Evidence and model attribution"
msgstr "Atribución de evidencia y modelo"

#: website/public/blog/reverse-engineering-models/index.html:788
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The examples describe historical function-level comparisons recorded in the "
"linked commits. Whole-game runtime checks are separate milestones. Source "
"and matching records were reviewed on 13 October 2026."
msgstr ""
"Los ejemplos describen comparaciones históricas a nivel de función "
"registradas en las confirmaciones vinculadas. Las comprobaciones del tiempo "
"de ejecución del juego completo son hitos separados. Los registros fuente y "
"coincidentes se revisaron el 13 de octubre de 2026."

#. {ph0}: <code>gpt-dots</code>
#. {ph1}: <code>gpt-web</code>
#: website/public/blog/reverse-engineering-models/index.html:794
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The TH09 label {ph0} identifies GPT-6-Astra. {ph1} changed with the model "
"used at the time, so that label alone does not identify an individual run. "
"Explicit model names in the other cited commits establish their recorded "
"attribution; the histories do not contain uniform per-run cost or effort "
"measurements."
msgstr ""
"La etiqueta TH09 {ph0} significa GPT-6-Astra. El modelo asociado con {ph1} "
"cambió con el tiempo, por lo que esa etiqueta por sí sola no puede "
"identificar el modelo utilizado en una ejecución específica. Los nombres de "
"modelos explícitos en las otras confirmaciones citadas proporcionan la "
"atribución registrada. Estos historiales no incluyen mediciones consistentes"
" de costo o esfuerzo para cada ejecución."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/de63c0f9121963f3a6b1ab5471c4878625fd3425"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/52929ed7c299f1a5f29cc13964e22510145fd616"
#. >
#. {ph5}: </a >
#: website/public/blog/reverse-engineering-models/index.html:803
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}TH09 temporary lifetimes:{ph1} the {ph2}earlier context review{ph3} and"
" {ph4}complete cold reconstruction{ph5}."
msgstr ""
"{ph0}TH09 duración de los objetos temporales:{ph1} la {ph2}revisión de "
"contexto anterior{ph3} y la {ph4}reconstrucción completa verificada mediante"
" una recompilación limpia del código fuente{ph5}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/f8d12d72aaf02212ee1b585a8f3f86d7ed000269"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/da33a646221198ceb7f3df2b96e2ca0e9b2f705f"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/5f825b28a862f8e1a6d4aea2f78a42f04c09a1c0"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:815
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}TH09 Front callback:{ph1} {ph2}non-exact diagnostic regions{ph3}, "
"{ph4}Astra's new graph{ph5} and its {ph6}accepted recompile replay{ph7}."
msgstr ""
"{ph0}TH09 Front devolución de llamada:{ph1} {ph2}regiones de diagnóstico que"
" no coincidieron{ph3}, {ph4}Astra nuevo gráfico de flujo de control{ph5} y "
"su {ph6}verificación de recompilación aceptada{ph7}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/26bb64bdb093a13f73abd0ee8ae7ce199ee4658f"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th04/commit/6dce0a79d5b931f0e2a08475b90e0c33d2321b98"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/1eb843383941d00065622a9e353146c4bb96979e"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:831
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Compiler knowledge:{ph1} {ph2}TH095 identifier-bucket reuse{ph3}, "
"{ph4}TH04 player source and linker order{ph5} and {ph6}Luna's TH09 enemy-"
"spawn closure{ph7}."
msgstr ""
"{ph0}Conocimiento del compilador:{ph1} {ph2}TH095 reutilización del "
"comportamiento del identificador-depósito{ph3}, {ph4}TH04 código fuente del "
"jugador y orden del enlazador{ph5} y {ph6}Luna reconstrucción completa de la"
" función de creación de enemigos de TH09{ph7}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/af9cb1d3e839b15a78b47ac1701506083cc82847"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/ab72fd77728293fc0beacfc656ca701b0e266016"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:847
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Checks and diagnostics:{ph1} {ph2}TH08 floating-literal audit{ph3}, "
"{ph4}TH08 numerical investigation{ph5} and {ph6}TH09 replay-save "
"reconstruction{ph7}."
msgstr ""
"{ph0}Comprobaciones y diagnósticos:{ph1} {ph2}TH08 auditoría constante de "
"punto flotante{ph3}, {ph4}TH08 investigación numérica{ph5} y {ph6}TH09 "
"reconstrucción para guardar reproducciones{ph7}."

#: website/public/blog/reverse-engineering-models/index.html:864
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The proposed specialist and RL comparisons are future experiments. The "
"project histories motivate them; no trained specialist was evaluated for "
"this essay."
msgstr ""
"Las comparaciones propuestas de modelos especializados y entrenamiento RL "
"son experimentos futuros. Las historias de los proyectos los motivan. Para "
"este ensayo no se evaluó ningún modelo especializado entrenado."

#: website/public/blog/reverse-engineering-models/index.html:6
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Does reverse engineering need a bigger model? | REA"
msgstr "¿La ingeniería inversa necesita un modelo más grande? | REA"

#: website/public/blog/reverse-engineering-models/index.html:7
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"What Touhou reconstruction taught me about general models, specialist models"
" and learning to propose better hypotheses from compiler feedback."
msgstr ""
"Lo que me enseñó la reconstrucción Touhou sobre modelos generales, modelos "
"especializados y cómo aprender a proponer mejores hipótesis a partir de los "
"comentarios del compilador."

#: website/public/blog/reverse-engineering-models/index.html:245
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "On this page"
msgstr "En esta página"

#: website/public/blog/reverse-engineering-models/index.html:258
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Models and reverse engineering essay"
msgstr "Modelos y ensayo de ingeniería inversa."

#: website/public/blog/reverse-engineering-models/index.html:496
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Selected reconstruction experiments"
msgstr "Experimentos de reconstrucción seleccionados."

#: website/public/blog/reverse-engineering-models/index.html:889
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/website/evidence/reverse-
#. engineering-models.md" >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:781
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Detailed evidence notes{ph1} include the recorded comparisons and "
"experiment context."
msgstr ""
"Las {ph0}notas detalladas de evidencia{ph1} incluyen las comparaciones "
"registradas y el contexto de los experimentos."

#. {ph0}: <a href="#showcases">
#. {ph1}: </a>
#: website/public/index.html:217
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Showcases{ph1}"
msgstr "{ph0}Casos prácticos{ph1}"

#: website/public/index.html:1028
msgctxt "page:index.html"
msgid "REA case studies."
msgstr "Estudios de caso de REA."

#: website/public/index.html:1038
msgctxt "page:index.html"
msgid "Android · APK analysis"
msgstr "Análisis de Android * APK"

#: website/public/index.html:1039
msgctxt "page:index.html"
msgid "How an authenticator generates a login code"
msgstr "Cómo genera un autenticador un código de inicio de sesión"

#: website/public/index.html:1044
msgctxt "page:index.html"
msgid "Read the Android case study"
msgstr "Lea el caso práctico de Android"

#: website/public/index.html:1049
msgctxt "page:index.html"
msgid "Electron · Feature tracing"
msgstr "Electron * Rastreo de funciones"

#: website/public/index.html:1050
msgctxt "page:index.html"
msgid "How Notion copies text and HTML"
msgstr "Cómo Notion copia texto y HTML"

#: website/public/index.html:1055
msgctxt "page:index.html"
msgid "Read the Notion case study"
msgstr "Lea el caso práctico de Notion"

#: website/public/index.html:1060
msgctxt "page:index.html"
msgid "Native · Reconstruction"
msgstr "Reconstrucción nativa ·"

#: website/public/index.html:1061
msgctxt "page:index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "Cálculo de la posición del sonido izquierdo/derecho de DX-Ball"

#: website/public/index.html:1066
msgctxt "page:index.html"
msgid "Read the DX-Ball case study"
msgstr "Lea el caso práctico de DX-Ball"

#: website/public/index.html:295
msgctxt "page:index.html"
msgid "Setup options"
msgstr "Opciones de configuración"

#: website/public/get-started/index.html:201
msgctxt "page:get-started/index.html"
msgid ""
"Set up your computer and coding agent, connect REA, then investigate a small"
" app."
msgstr ""
"Prepara tu ordenador y tu agente de programación, conecta REA y después "
"investiga una pequeña aplicación."

#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:205
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"New to this? Follow the four steps below. Already have an agent? Go straight"
" to {ph0}Connect REA{ph1}."
msgstr ""
"¿Es tu primera vez? Sigue los cuatro pasos de abajo. ¿Ya tienes un agente? "
"Ve directamente a {ph0}Conectar REA{ph1}."

#. {ph0}: <a href="#computer">
#. {ph1}: </a>
#: website/public/get-started/index.html:214
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}1. Prepare your computer{ph1}"
msgstr "{ph0}1. Prepara tu ordenador{ph1}"

#. {ph0}: <a href="#choose-agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:215
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}2. Choose an agent{ph1}"
msgstr "{ph0}2. Elige un agente{ph1}"

#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:216
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}3. Connect REA{ph1}"
msgstr "{ph0}3. Conecta REA{ph1}"

#. {ph0}: <a href="#first-task">
#. {ph1}: </a>
#: website/public/get-started/index.html:217
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}4. Try an investigation{ph1}"
msgstr "{ph0}4. Prueba una investigación{ph1}"

#. {ph0}: <a href="#native">
#. {ph1}: </a>
#: website/public/get-started/index.html:218
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Other targets and providers{ph1}"
msgstr "{ph0}Otros objetivos y proveedores de análisis{ph1}"

#: website/public/get-started/index.html:225
msgctxt "page:get-started/index.html"
msgid "1. Prepare your computer"
msgstr "1. Prepara tu ordenador"

#: website/public/get-started/index.html:226
msgctxt "page:get-started/index.html"
msgid ""
"Use the computer where your target files are stored. A local coding agent "
"can read those files and run tools for you."
msgstr ""
"Usa el ordenador donde están los archivos que quieres investigar. Un agente "
"de programación local puede leer esos archivos y ejecutar herramientas por "
"ti."

#: website/public/get-started/index.html:251
msgctxt "page:get-started/index.html"
msgid ""
"Commands go in the terminal. Prompts labeled “Your coding agent” go in the "
"agent's chat."
msgstr ""
"Los comandos se introducen en la terminal. Las instrucciones etiquetadas "
"como «Tu agente de programación» se escriben en el chat del agente."

#. {ph0}: <a href="https://nodejs.org/en/download" >
#. {ph1}: </a >
#: website/public/get-started/index.html:307
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download the Node.js installer{ph1} if winget is unavailable."
msgstr ""
"{ph0}Descarga el instalador de Node.js{ph1} si winget no está disponible."

#. {ph0}: <em>
#. {ph1}: </em>
#. {ph2}: <code>npx</code>
#. {ph3}: <code>npx.cmd</code>
#. {ph4}: <code>npm.cmd</code>
#: website/public/get-started/index.html:313
#, 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}, use {ph3} instead. For npm, use {ph4}:"
msgstr ""
"Si más adelante PowerShell muestra {ph0}\"running scripts is disabled on "
"this system\"{ph1} al ejecutar {ph2}, usa {ph3} en su lugar. Para npm, usa "
"{ph4}:"

#: website/public/get-started/index.html:411
msgctxt "page:get-started/index.html"
msgid "Make a working folder for your agent"
msgstr "Crea una carpeta de trabajo para tu agente"

#: website/public/get-started/index.html:412
msgctxt "page:get-started/index.html"
msgid "In your terminal, make a folder for the exercise, then move into it:"
msgstr "En la terminal, crea una carpeta para el ejercicio y entra en ella:"

#: website/public/get-started/index.html:431
msgctxt "page:get-started/index.html"
msgid ""
"Keep this terminal open for the next step. If you already have a working "
"folder, open it instead."
msgstr ""
"Mantén esta terminal abierta para el siguiente paso. Si ya tienes una "
"carpeta de trabajo, abre esa en su lugar."

#: website/public/get-started/index.html:438
msgctxt "page:get-started/index.html"
msgid "2. Choose a coding agent"
msgstr "2. Elige un agente de programación"

#: website/public/get-started/index.html:439
msgctxt "page:get-started/index.html"
msgid ""
"Your agent is the AI you talk to. REA supplies the inspection tools it uses."
" Pick one client below; open its instructions if you haven't used it before."
msgstr ""
"Tu agente es la IA con la que hablas. REA le proporciona las herramientas de"
" inspección. Elige una aplicación cliente de la lista y abre sus "
"instrucciones si nunca la has usado."

#: website/public/get-started/index.html:445
msgctxt "page:get-started/index.html"
msgid "Codex · use your ChatGPT account"
msgstr "Codex · usa tu cuenta de ChatGPT"

#: website/public/get-started/index.html:493
msgctxt "page:get-started/index.html"
msgid ""
"Choose “Sign in with ChatGPT”, complete the browser sign-in, then return to "
"the terminal. When the message box appears, continue to step 3."
msgstr ""
"Elige «Sign in with ChatGPT», inicia sesión en el navegador y vuelve a la "
"terminal. Cuando aparezca el cuadro de mensajes, continúa con el paso 3."

#. {ph0}: <a href="https://learn.chatgpt.com/docs/codex/cli" >
#. {ph1}: </a >
#: website/public/get-started/index.html:498
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Codex installation and sign-in{ph1}"
msgstr "{ph0}Instalación e inicio de sesión de Codex{ph1}"

#: website/public/get-started/index.html:505
msgctxt "page:get-started/index.html"
msgid "Cursor, Windsurf or VS Code · use an editor"
msgstr "Cursor, Windsurf o VS Code · usa un editor"

#: website/public/get-started/index.html:507
msgctxt "page:get-started/index.html"
msgid "Install the editor for your operating system and sign in."
msgstr "Instala el editor para tu sistema operativo e inicia sesión."

#: website/public/get-started/index.html:510
msgctxt "page:get-started/index.html"
msgid "Open the rea-work folder you made in step 1."
msgstr "Abre la carpeta rea-work que creaste en el paso 1."

#: website/public/get-started/index.html:529
msgctxt "page:get-started/index.html"
msgid "Claude Code · use your Claude account"
msgstr "Claude Code · usa tu cuenta de Claude"

#: website/public/get-started/index.html:530
msgctxt "page:get-started/index.html"
msgid "Install using the command for your operating system:"
msgstr "Instala con el comando de tu sistema operativo:"

#. {ph0}: <code>claude</code>
#: website/public/get-started/index.html:559
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Reopen your terminal, return to your working folder and run {ph0}. Follow "
"the sign-in prompts. Access uses an eligible Claude subscription or a "
"configured API account."
msgstr ""
"Vuelve a abrir la terminal, entra en tu carpeta de trabajo y ejecuta {ph0}. "
"Sigue las instrucciones de inicio de sesión. Para acceder necesitas una "
"suscripción de Claude compatible o una cuenta de API configurada."

#. {ph0}: <a href="https://code.claude.com/docs/en/setup" >
#. {ph1}: </a >
#: website/public/get-started/index.html:564
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Claude Code installation and account options{ph1}"
msgstr "{ph0}Instalación de Claude Code y opciones de cuenta{ph1}"

#: website/public/get-started/index.html:571
msgctxt "page:get-started/index.html"
msgid "Claude Desktop · use a desktop chat"
msgstr "Claude Desktop · usa un chat de escritorio"

#. {ph0}: <a href="https://claude.ai/download">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md#claude-desktop" >
#. {ph3}: </a >
#: website/public/get-started/index.html:595
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Download Claude Desktop{ph1} · {ph2}Claude Desktop connection "
"details{ph3}"
msgstr ""
"{ph0}Descargar Claude Desktop{ph1} · {ph2}Detalles de conexión de Claude "
"Desktop{ph3}"

#. {ph0}: <code>opencode</code>
#. {ph1}: <code>/connect</code>
#: website/public/get-started/index.html:620
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Run {ph0} in your working folder. Use {ph1} in its chat to connect your "
"model account, then select a model."
msgstr ""
"Ejecuta {ph0} en tu carpeta de trabajo. Usa {ph1} en su chat para conectar "
"tu cuenta de modelos y después elige un modelo."

#. {ph0}: <a href="https://opencode.ai/docs/" >
#. {ph1}: </a >
#: website/public/get-started/index.html:625
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}OpenCode installation and model setup{ph1}"
msgstr "{ph0}Instalación de OpenCode y configuración de modelos{ph1}"

#: website/public/get-started/index.html:632
msgctxt "page:get-started/index.html"
msgid "All supported clients and setup IDs"
msgstr "Todos los clientes compatibles y sus identificadores de configuración"

#. {ph0}: <code>--client</code>
#: website/public/get-started/index.html:633
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The npm 6.4.0 release supports the clients below. Use the ID with {ph0} when"
" choosing a client explicitly."
msgstr ""
"La versión 6.4.0 de npm admite los clientes de abajo. Usa el identificador "
"con {ph0} cuando quieras elegir un cliente de forma explícita."

#: website/public/get-started/index.html:641
msgctxt "page:get-started/index.html"
msgid "Client"
msgstr "Cliente"

#: website/public/get-started/index.html:642
msgctxt "page:get-started/index.html"
msgid "Setup ID"
msgstr "ID de configuración"

#. {ph0}: <code>qoder</code>
#. {ph1}: <code>droid</code>
#. {ph2}: <code>trae</code>
#. {ph3}: <code>zcode</code>
#. {ph4}: <code>dsh</code>
#: website/public/get-started/index.html:717
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Qoder ({ph0}), Factory Droid ({ph1}), Trae ({ph2}), ZCode ({ph3}) and "
"DeepSeek Harness ({ph4}) are available on repository main; use a source "
"build or a release containing those integrations."
msgstr ""
"Qoder ({ph0}), Factory Droid ({ph1}), Trae ({ph2}), ZCode ({ph3}) y DeepSeek"
" Harness ({ph4}) están disponibles en la rama main del repositorio. Usa una "
"compilación del código fuente o una versión publicada que incluya esas "
"integraciones."

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#released-
#. package-and-main" >
#. {ph3}: </a >
#: website/public/get-started/index.html:724
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Client configuration and troubleshooting{ph1} · {ph2}Release "
"availability{ph3}"
msgstr ""
"{ph0}Configuración de clientes y solución de problemas{ph1} · "
"{ph2}Disponibilidad en versiones publicadas{ph3}"

#: website/public/get-started/index.html:736
msgctxt "page:get-started/index.html"
msgid "Grok Bot · connect on its hosted computer"
msgstr "Grok Bot · conecta en su ordenador alojado"

#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:737
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"In Grok Bot's chat, ask it to add a custom MCP server named {ph0} using this"
" command on the Bot's computer:"
msgstr ""
"En el chat de Grok Bot, pídele que añada un servidor MCP personalizado "
"llamado {ph0} ejecutando este comando en el ordenador del bot:"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md#other-client-settings" >
#. {ph1}: </a >
#: website/public/get-started/index.html:755
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Grok Bot connector instructions{ph1}"
msgstr "{ph0}Instrucciones del conector de Grok Bot{ph1}"

#: website/public/get-started/index.html:765
msgctxt "page:get-started/index.html"
msgid "3. Connect REA"
msgstr "3. Conecta REA"

#: website/public/get-started/index.html:766
msgctxt "page:get-started/index.html"
msgid "Copy this into your coding agent:"
msgstr "Copia este prompt en tu agente de programación:"

#: website/public/get-started/index.html:810
msgctxt "page:get-started/index.html"
msgid "For one specific client, add its setup ID:"
msgstr "Para un cliente concreto, añade su identificador de configuración:"

#. {ph0}: <code>y</code>
#: website/public/get-started/index.html:825
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If npm asks to download the package, type {ph0} and press Enter. In REA's "
"client list, use the arrow keys to move, Space to select your client and "
"Enter to continue."
msgstr ""
"Si npm pide descargar el paquete, escribe {ph0} y pulsa Enter. En la lista "
"de clientes de REA, usa las flechas para moverte, Espacio para seleccionar "
"tu cliente y Enter para continuar."

#: website/public/get-started/index.html:836
msgctxt "page:get-started/index.html"
msgid ""
"MCP is the connection that lets your agent call REA. The skill gives it a "
"workflow for investigating software."
msgstr ""
"MCP es la conexión que permite a tu agente llamar a REA. La skill le "
"proporciona un flujo de trabajo para investigar software."

#: website/public/get-started/index.html:840
msgctxt "page:get-started/index.html"
msgid ""
"For the first exercise, you can skip the optional Hopper installation. "
"Restart your client when setup finishes."
msgstr ""
"Para el primer ejercicio puedes omitir la instalación opcional de Hopper. "
"Reinicia tu cliente cuando termine la configuración."

#. {ph0}: <code>codex</code>
#. {ph1}: <code>"healthy": true</code>
#: website/public/get-started/index.html:873
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace {ph0} with your client's setup ID. A successful check reports {ph1}."
" Then ask your agent:"
msgstr ""
"Sustituye {ph0} por el identificador de configuración de tu cliente. Una "
"comprobación correcta muestra {ph1}. Después, pide a tu agente:"

#: website/public/get-started/index.html:879
msgctxt "page:get-started/index.html"
msgid "Check that REA is connected and show me which REA tools you can use."
msgstr ""
"Comprueba que REA está conectado y muéstrame qué herramientas de REA puedes "
"usar."

#: website/public/get-started/index.html:886
msgctxt "page:get-started/index.html"
msgid "4. Try your first investigation"
msgstr "4. Prueba tu primera investigación"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:887
#, python-brace-format
msgctxt "page:get-started/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 ""
"El ejemplo es una aplicación Electron de seis archivos con un {ph0}Notas de "
"exportación{ph1} botón. Su agente puede inspeccionar su código sin instalar "
"ni iniciar Electron ."

#: website/public/get-started/index.html:894
msgctxt "page:get-started/index.html"
msgid "Your coding agent"
msgstr "Tu agente de programación"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="setup-first-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/get-started/index.html:904
#, python-brace-format
msgctxt "page:get-started/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}Descargar {ph3} en una nueva carpeta de ejemplo y "
"descomprímala. Use REA para averiguar qué sucede cuando hago clic en "
"Exportar notas. Mostrar dónde {ph4} está escrito, qué campos contiene y los "
"archivos y líneas relevantes.{ph5}{ph6}{ph7}"

#: website/public/get-started/index.html:918
msgctxt "page:get-started/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr "Busque una breve explicación con referencias de archivos y líneas:"

#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/get-started/index.html:920
#, python-brace-format
msgctxt "page:get-started/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 ""
"El botón envía un {ph0} mensaje. El proceso principal formatea las notas "
"como CSV y escribe {ph1} en la carpeta de descargas del usuario. Las "
"columnas son {ph2} y {ph3}."

#. {ph0}: <a href="../first-investigation/#check" >
#. {ph1}: </a >
#: website/public/get-started/index.html:927
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Check a prediction in the guided exercise →{ph1}"
msgstr "{ph0}Comprueba una predicción en el ejercicio guiado →{ph1}"

#: website/public/get-started/index.html:933
msgctxt "page:get-started/index.html"
msgid "Download the example yourself, or use your own app"
msgstr "Descarga el ejemplo tú mismo o usa tu propia aplicación"

#. {ph0}: <a class="button" href="../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/get-started/index.html:936
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Descargar ZIP de ejemplo{ph1}"

#. {ph0}: <code>notes-example</code>
#: website/public/get-started/index.html:944
#, python-brace-format
msgctxt "page:get-started/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 su agente no puede descargar archivos, descomprímalo usted mismo. Dale el"
" camino al {ph0} carpeta y la misma pregunta de exportación."

#. {ph0}: <code>/absolute/path/to/app</code>
#: website/public/get-started/index.html:950
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Use REA to inspect the app at {ph0}. Find how it exports data and show the "
"relevant files and lines."
msgstr ""
"Usa REA para inspeccionar la aplicación en {ph0}. Averigua cómo exporta los "
"datos y muestra los archivos y las líneas relevantes."

#: website/public/get-started/index.html:980
msgctxt "page:get-started/index.html"
msgid "Analyze another kind of software"
msgstr "Analiza otro tipo de software"

#: website/public/get-started/index.html:981
msgctxt "page:get-started/index.html"
msgid ""
"Choose the section for your target. A provider is the local analysis tool "
"REA uses for that kind of software."
msgstr ""
"Elige la sección correspondiente a tu objetivo. Un proveedor de análisis es "
"la herramienta local que REA usa para ese tipo de software."

#: website/public/get-started/index.html:986
msgctxt "page:get-started/index.html"
msgid "Native executables and libraries · Hopper, Ghidra or IDA"
msgstr "Ejecutables y bibliotecas nativas · Hopper, Ghidra o IDA"

#: website/public/get-started/index.html:989
msgctxt "page:get-started/index.html"
msgid ""
"Install one analysis tool on the computer running REA. The host is your "
"operating system; the target is the program you want to inspect."
msgstr ""
"Instala una herramienta de análisis en el ordenador donde se ejecuta REA. El"
" host es tu sistema operativo; el objetivo es el programa que quieres "
"inspeccionar."

#: website/public/get-started/index.html:998
msgctxt "page:get-started/index.html"
msgid "Provider"
msgstr "Proveedor de análisis"

#: website/public/get-started/index.html:1007
msgctxt "page:get-started/index.html"
msgid "Unavailable"
msgstr "No disponible"

#: website/public/get-started/index.html:1009
msgctxt "page:get-started/index.html"
msgid "Supported distributions"
msgstr "Distribuciones compatibles"

#: website/public/get-started/index.html:1013
msgctxt "page:get-started/index.html"
msgid "x64 · experimental"
msgstr "x64 · experimental"

#: website/public/get-started/index.html:1019
msgctxt "page:get-started/index.html"
msgid "Verified profiles"
msgstr "Perfiles verificados"

#: website/public/get-started/index.html:1020
msgctxt "page:get-started/index.html"
msgid "Verified headless profile"
msgstr "Perfil sin interfaz gráfica verificado"

#: website/public/get-started/index.html:1021
msgctxt "page:get-started/index.html"
msgid "See provider guide"
msgstr "Consulta la guía del proveedor"

#: website/public/get-started/index.html:1027
msgctxt "page:get-started/index.html"
msgid "Hopper · let setup install or connect it"
msgstr "Hopper · deja que la configuración lo instale o lo conecte"

#: website/public/get-started/index.html:1033
msgctxt "page:get-started/index.html"
msgid ""
"Choose Hopper in setup and review its separate installation plan. On macOS, "
"choose demo mode or activate your license when Hopper first opens. On Linux,"
" setup prepares the supported demo and its private display."
msgstr ""
"Elige Hopper durante la configuración y revisa su plan de instalación por "
"separado. En macOS, elige el modo de demostración o activa tu licencia "
"cuando Hopper se abra por primera vez. En Linux, la configuración prepara la"
" demostración compatible y su pantalla privada."

#: website/public/get-started/index.html:1039
msgctxt "page:get-started/index.html"
msgid ""
"Linux hosts: Ubuntu 24.04+, Fedora 41+, Nobara 44+, Arch Linux, CachyOS or "
"Omarchy. Hopper is commercial software; its demo has vendor-defined limits."
msgstr ""
"Hosts Linux: Ubuntu 24.04+, Fedora 41+, Nobara 44+, Arch Linux, CachyOS u "
"Omarchy. Hopper es software comercial; su demostración tiene límites "
"definidos por el fabricante."

#: website/public/get-started/index.html:1058
msgctxt "page:get-started/index.html"
msgid ""
"If macOS asks for Automation permission, allow the app that starts REA in "
"System Settings → Privacy & Security → Automation, then retry."
msgstr ""
"Si macOS pide permiso de Automatización, autoriza la aplicación que inicia "
"REA en Ajustes del Sistema → Privacidad y seguridad → Automatización y "
"vuelve a intentarlo."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#hopper"
#. >
#. {ph1}: </a >
#: website/public/get-started/index.html:1063
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Hopper setup and troubleshooting{ph1}"
msgstr "{ph0}Configuración de Hopper y solución de problemas{ph1}"

#: website/public/get-started/index.html:1071
msgctxt "page:get-started/index.html"
msgid "Ghidra · install the free analysis tool and Java"
msgstr "Ghidra · instala la herramienta de análisis gratuita y Java"

#: website/public/get-started/index.html:1075
msgctxt "page:get-started/index.html"
msgid ""
"Install a 64-bit JDK 21 or newer, including the Java compiler. Choose the "
"package matching your computer's architecture."
msgstr ""
"Instala un JDK de 64 bits, versión 21 o posterior, que incluya el compilador"
" de Java. Elige el paquete correspondiente a la arquitectura de tu "
"ordenador."

#. {ph0}: <code>ghidra_…_PUBLIC_….zip</code>
#: website/public/get-started/index.html:1080
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Download Ghidra 12.1.4 from the release's Assets list and extract the {ph0} "
"archive. Choose the release archive, not “Source code”."
msgstr ""
"Descarga Ghidra 12.1.4 desde la lista Assets de la versión publicada y "
"extrae el archivo {ph0}. Elige el archivo de la versión, no «Source code»."

#. {ph0}: <code>ghidraRun</code>
#. {ph1}: <code>ghidraRun.bat</code>
#. {ph2}: <code>GHIDRA_INSTALL_DIR</code>
#: website/public/get-started/index.html:1085
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Find the extracted folder containing {ph0} or {ph1}. Use that folder for "
"{ph2}."
msgstr ""
"Busca la carpeta extraída que contiene {ph0} o {ph1}. Usa esa carpeta para "
"{ph2}."

#. {ph0}: <a href="https://adoptium.net/temurin/releases/?version=21" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_12.1.4_build"
#. >
#. {ph3}: </a >
#: website/public/get-started/index.html:1091
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download a JDK{ph1} · {ph2}Download Ghidra 12.1.4{ph3}"
msgstr "{ph0}Descargar un JDK{ph1} · {ph2}Descargar Ghidra 12.1.4{ph3}"

#. {ph0}: <code>java.home</code>
#. {ph1}: <code>JAVA_HOME</code>
#: website/public/get-started/index.html:1101
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Check Java. The first command prints {ph0}; use that folder for {ph1}. The "
"second confirms the compiler is installed:"
msgstr ""
"Comprueba Java. El primer comando muestra {ph0}; usa esa carpeta para {ph1}."
" El segundo confirma que el compilador está instalado:"

#: website/public/get-started/index.html:1217
msgctxt "page:get-started/index.html"
msgid ""
"Keep these commands in the same terminal session. Rerun setup after setting "
"the paths, approve the updated client configuration, then restart your "
"agent."
msgstr ""
"Ejecuta estos comandos en la misma sesión de terminal. Tras establecer las "
"rutas, vuelve a ejecutar la configuración, aprueba la configuración "
"actualizada del cliente y reinicia tu agente."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#ghidra"
#. >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/windows-
#. ghidra-p0.md" >
#. {ph3}: </a >
#: website/public/get-started/index.html:1222
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Ghidra setup and architecture requirements{ph1} · {ph2}Windows Ghidra "
"guide{ph3}"
msgstr ""
"{ph0}Configuración de Ghidra y requisitos de arquitectura{ph1} · {ph2}Guía "
"de Ghidra en Windows{ph3}"

#: website/public/get-started/index.html:1235
msgctxt "page:get-started/index.html"
msgid "IDA · connect an existing installation"
msgstr "IDA · conecta una instalación existente"

#: website/public/get-started/index.html:1236
msgctxt "page:get-started/index.html"
msgid ""
"Use the IDA provider guide to prepare an upstream MCP registration. Choose "
"an attached GUI with the original binary open, or a headless supervisor that"
" opens a private database."
msgstr ""
"Usa la guía del proveedor IDA para preparar el registro MCP del servidor al "
"que REA se conecta. Elige una interfaz gráfica conectada con el binario "
"original abierto o un supervisor sin interfaz gráfica que abra una base de "
"datos privada."

#: website/public/get-started/index.html:1241
msgctxt "page:get-started/index.html"
msgid ""
"Verified profiles include the Windows legacy GUI and headless supervisor, "
"plus a macOS arm64 headless supervisor with IDA Professional 9.1. The "
"optional native GUI bridge has its own version and platform requirements."
msgstr ""
"Los perfiles verificados incluyen la interfaz gráfica heredada y el "
"supervisor sin interfaz gráfica de Windows, además de un supervisor sin "
"interfaz gráfica en macOS arm64 con IDA Professional 9.1. El puente nativo "
"opcional de la interfaz gráfica tiene sus propios requisitos de versión y "
"plataforma."

#: website/public/get-started/index.html:1336
msgctxt "page:get-started/index.html"
msgid ""
"Use the JSON registration file you prepared with the provider guide, then "
"rerun setup and restart your agent."
msgstr ""
"Usa el archivo JSON de registro que preparaste siguiendo la guía del "
"proveedor. Después, vuelve a ejecutar la configuración y reinicia tu agente."

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/ida-
#. provider.md" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1340
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}IDA profiles, registration examples and verified platforms{ph1}"
msgstr ""
"{ph0}Perfiles de IDA, ejemplos de registro y plataformas verificadas{ph1}"

#: website/public/get-started/index.html:1348
msgctxt "page:get-started/index.html"
msgid ""
"Once connected, give your agent the original executable's full path and name"
" your provider:"
msgstr ""
"Una vez conectado, dale a tu agente la ruta completa del ejecutable original"
" e indica el proveedor de análisis:"

#. {ph0}: <a href="../guides/native/">
#. {ph1}: </a>
#: website/public/get-started/index.html:1360
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Follow a native analysis example{ph1}"
msgstr "{ph0}Sigue un ejemplo de análisis nativo{ph1}"

#: website/public/get-started/index.html:1365
msgctxt "page:get-started/index.html"
msgid "Websites, Android, .NET, firmware and other targets"
msgstr "Sitios web, Android, .NET, firmware y otros objetivos"

#: website/public/get-started/index.html:1368
msgctxt "page:get-started/index.html"
msgid ""
"Open the guide for the target you have. Each guide gives the additional "
"tools, supported hosts and first command."
msgstr ""
"Abre la guía del tipo de objetivo que tienes. Cada guía indica las "
"herramientas adicionales, los hosts compatibles y el primer comando."

#: website/public/get-started/index.html:1376
msgctxt "page:get-started/index.html"
msgid "Target"
msgstr "Objetivo"

#: website/public/get-started/index.html:1377
msgctxt "page:get-started/index.html"
msgid "Tools to prepare"
msgstr "Herramientas necesarias"

#: website/public/get-started/index.html:1378
msgctxt "page:get-started/index.html"
msgid "Guide"
msgstr "Guía"

#: website/public/get-started/index.html:1383
msgctxt "page:get-started/index.html"
msgid "JavaScript / Electron"
msgstr "JavaScript / Electron"

#. {ph0}: <a href="../guides/javascript/">
#. {ph1}: </a>
#: website/public/get-started/index.html:1385
#: website/public/get-started/index.html:1390
#: website/public/get-started/index.html:1395
#: website/public/get-started/index.html:1405
#: website/public/get-started/index.html:1415
#: website/public/get-started/index.html:1425
#: website/public/get-started/index.html:1435
#: website/public/get-started/index.html:1445
#: website/public/get-started/index.html:1455
#: website/public/get-started/index.html:1465
#: website/public/get-started/index.html:1475
#: website/public/get-started/index.html:1485
#: website/public/get-started/index.html:1495
#: website/public/get-started/index.html:1505
#: website/public/get-started/index.html:1515
#: website/public/get-started/index.html:1525
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Open guide{ph1}"
msgstr "{ph0}Abrir guía{ph1}"

#: website/public/get-started/index.html:1388
msgctxt "page:get-started/index.html"
msgid "Website"
msgstr "Sitio web"

#: website/public/get-started/index.html:1393
msgctxt "page:get-started/index.html"
msgid ".NET / Flutter / packages"
msgstr ".NET / Flutter / paquetes"

#: website/public/get-started/index.html:1403
msgctxt "page:get-started/index.html"
msgid "Android APK"
msgstr "APK de Android"

#: website/public/get-started/index.html:1413
msgctxt "page:get-started/index.html"
msgid "Android device"
msgstr "Dispositivo Android"

#: website/public/get-started/index.html:1423
msgctxt "page:get-started/index.html"
msgid "Android resources"
msgstr "Recursos de Android"

#: website/public/get-started/index.html:1433
msgctxt "page:get-started/index.html"
msgid "JEB project"
msgstr "Proyecto JEB"

#: website/public/get-started/index.html:1443
msgctxt "page:get-started/index.html"
msgid "Firmware"
msgstr "Firmware"

#: website/public/get-started/index.html:1453
msgctxt "page:get-started/index.html"
msgid "WASM"
msgstr "WASM"

#: website/public/get-started/index.html:1483
msgctxt "page:get-started/index.html"
msgid "ELF / Linux crash"
msgstr "ELF / fallo de Linux"

#: website/public/get-started/index.html:1493
msgctxt "page:get-started/index.html"
msgid "HAR / SAZ / mitmproxy"
msgstr "HAR / SAZ / mitmproxy"

#: website/public/get-started/index.html:1503
msgctxt "page:get-started/index.html"
msgid "PCAP / PCAPNG"
msgstr "PCAP / PCAPNG"

#: website/public/get-started/index.html:1513
msgctxt "page:get-started/index.html"
msgid "Logic signals"
msgstr "Señales lógicas"

#: website/public/get-started/index.html:1523
msgctxt "page:get-started/index.html"
msgid "Process behavior"
msgstr "Comportamiento de procesos"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/flutter-
#. analysis.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/javascript-
#. artifact-reconstruction.md" >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/morluto/rea/blob/main/docs/evm-
#. bytecode.md" >
#. {ph5}: </a >
#. {ph6}: <a href="../guides/">
#. {ph7}: </a>
#: website/public/get-started/index.html:1535
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Flutter guide{ph1} · {ph2}Packages and resources{ph3} · {ph4}EVM "
"bytecode{ph5} · {ph6}All investigation guides{ph7}"
msgstr ""
"{ph0}Guía de Flutter{ph1} · {ph2}Paquetes y recursos{ph3} · {ph4}Bytecode de"
" EVM{ph5} · {ph6}Todas las guías de investigación{ph7}"

#: website/public/get-started/index.html:1555
msgctxt "page:get-started/index.html"
msgid "Use REA from a terminal"
msgstr "Usa REA desde una terminal"

#: website/public/get-started/index.html:1557
msgctxt "page:get-started/index.html"
msgid "CLI commands, global installation and curl"
msgstr "Comandos CLI, instalación global y curl"

#. {ph0}: <code>main</code>
#: website/public/get-started/index.html:1654
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace {ph0} with a function name or address from the target's function "
"list. Ghidra must be configured first."
msgstr ""
"Sustituye {ph0} por un nombre o una dirección de función de la lista de "
"funciones del objetivo. Ghidra debe estar configurado previamente."

#: website/public/get-started/index.html:1658
msgctxt "page:get-started/index.html"
msgid ""
"On macOS or Linux, you can also use the curl installer after preparing "
"Node.js:"
msgstr ""
"En macOS o Linux también puedes usar el instalador curl después de preparar "
"Node.js:"

#: website/public/get-started/index.html:1696
msgctxt "page:get-started/index.html"
msgid ""
"Use the client check in step 3 with your setup ID. In editor clients, enable"
" REA in MCP settings and allow its tools in the agent chat."
msgstr ""
"Usa la comprobación del cliente del paso 3 con tu identificador de "
"configuración. En los clientes que son editores, activa REA en los ajustes "
"MCP y autoriza sus herramientas en el chat del agente."

#: website/public/get-started/index.html:1724
msgctxt "page:get-started/index.html"
msgid "Windows, WSL and paths with spaces"
msgstr "Windows, WSL y rutas con espacios"

#: website/public/get-started/index.html:1725
msgctxt "page:get-started/index.html"
msgid ""
"Use Windows PowerShell for Windows clients and analysis tools. If your agent"
" runs inside WSL, install Node.js and REA inside that Linux environment and "
"use Linux paths there. Headless providers run on the same host as REA."
msgstr ""
"Usa Windows PowerShell para los clientes y las herramientas de análisis de "
"Windows. Si tu agente se ejecuta dentro de WSL, instala Node.js y REA en ese"
" entorno Linux y usa allí rutas de Linux. Los proveedores sin interfaz "
"gráfica se ejecutan en el mismo host que REA."

#: website/public/get-started/index.html:1734
msgctxt "page:get-started/index.html"
msgid "Windows setup command:"
msgstr "Comando de configuración para Windows:"

#: website/public/get-started/index.html:1751
msgctxt "page:get-started/index.html"
msgid "Update or remove REA"
msgstr "Actualiza o elimina REA"

#: website/public/get-started/index.html:1752
msgctxt "page:get-started/index.html"
msgid ""
"To refresh your agent connection, run the latest setup command again, review"
" its plan and restart your client."
msgstr ""
"Para actualizar la conexión de tu agente, vuelve a ejecutar el comando de "
"configuración más reciente, revisa el plan y reinicia tu cliente."

#. {ph0}: <code>rea update</code>
#. {ph1}: <code>npx rea-agents@latest uninstall</code>
#: website/public/get-started/index.html:1770
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If you installed the global CLI, update it with {ph0}. Use {ph1} to remove "
"REA's client configuration and skill."
msgstr ""
"Si instalaste la CLI global, actualízala con {ph0}. Usa {ph1} para eliminar "
"la configuración de clientes y la skill de REA."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#diagnose-
#. update-and-remove" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1776
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Update and uninstall details{ph1}"
msgstr "{ph0}Detalles de actualización y desinstalación{ph1}"

#: website/public/get-started/index.html:322
msgctxt "page:get-started/index.html"
msgid "Copy Windows REA setup command"
msgstr "Copiar el comando de configuración de REA para Windows"

#: website/public/get-started/index.html:419
#: website/public/get-started/index.html:450
#: website/public/get-started/index.html:464
#: website/public/get-started/index.html:482
#: website/public/get-started/index.html:534
#: website/public/get-started/index.html:548
#: website/public/get-started/index.html:580
#: website/public/get-started/index.html:609
#: website/public/get-started/index.html:744
#: website/public/get-started/index.html:799
#: website/public/get-started/index.html:814
#: website/public/get-started/index.html:862
#: website/public/get-started/index.html:1047
#: website/public/get-started/index.html:1109
#: website/public/get-started/index.html:1132
#: website/public/get-started/index.html:1156
#: website/public/get-started/index.html:1204
#: website/public/get-started/index.html:1279
#: website/public/get-started/index.html:1305
#: website/public/get-started/index.html:1322
#: website/public/get-started/index.html:1643
#: website/public/get-started/index.html:1665
#: website/public/get-started/index.html:1738
#: website/public/get-started/index.html:1759
msgctxt "page:get-started/index.html"
msgid "Copy command"
msgstr "Copiar comando"

#: website/public/get-started/index.html:895
msgctxt "page:get-started/index.html"
msgid "Copy Notes investigation prompt"
msgstr "Aviso de investigación de Copy Notes"

#. {ph0}: <code>sudo apt install curl unzip</code>
#: website/public/get-started/index.html:362
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Install curl and unzip first if they are missing. On Debian or Ubuntu, run "
"{ph0}; on other distributions, use your package manager."
msgstr ""
"Instala primero curl y unzip si faltan. En Debian o Ubuntu, ejecuta {ph0}; "
"en otras distribuciones, usa tu gestor de paquetes."

#: website/public/get-started/index.html:381
msgctxt "page:get-started/index.html"
msgid "Close the terminal, open it again, then:"
msgstr "Cierra la terminal, ábrela de nuevo y después ejecuta:"

#: website/public/get-started/index.html:511
msgctxt "page:get-started/index.html"
msgid ""
"Open its AI chat and choose Agent mode. In Windsurf or Devin Desktop, open "
"the agent chat; in VS Code, set up GitHub Copilot first."
msgstr ""
"Abre el chat de IA y elige el modo Agent. En Windsurf o Devin Desktop, abre "
"el chat del agente; en VS Code, configura primero GitHub Copilot."

#. {ph0}: <a href="https://cursor.com/docs">
#. {ph1}: </a>
#. {ph2}: <a href="https://docs.windsurf.com/windsurf/getting-started" >
#. {ph3}: </a >
#. {ph4}: <a href="https://code.visualstudio.com/docs/setup/copilot" >
#. {ph5}: </a >
#: website/public/get-started/index.html:517
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Cursor setup{ph1} · {ph2}Windsurf / Devin Desktop setup{ph3} · {ph4}VS "
"Code and Copilot setup{ph5}"
msgstr ""
"{ph0}Configuración de Cursor{ph1} · {ph2}Configuración de Windsurf / Devin "
"Desktop{ph3} · {ph4}Configuración de VS Code y Copilot{ph5}"

#: website/public/get-started/index.html:605
msgctxt "page:get-started/index.html"
msgid "OpenCode · choose an AI model"
msgstr "OpenCode · elige un modelo de IA"

#: website/public/get-started/index.html:1263
msgctxt "page:get-started/index.html"
msgid "Prepare the IDA registration file"
msgstr "Prepara el archivo de registro de IDA"

#. {ph0}: <code>ida-mcp.json</code>
#. {ph1}: <code>.txt</code>
#: website/public/get-started/index.html:1264
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Install and configure the upstream server using the IDA guide below. Then "
"save its working registration as {ph0} in a text editor. On Windows, choose "
"“All files” when saving in Notepad so it doesn't add {ph1}."
msgstr ""
"Instala y configura el servidor al que REA se conecta siguiendo la guía de "
"IDA de abajo. Después, guarda su registro funcional como {ph0} en un editor "
"de texto. En Windows, elige «Todos los archivos» al guardar con el Bloc de "
"notas para que no añada {ph1}."

#. {ph0}: <code>idb_open</code>
#. {ph1}: <code>idb_list</code>
#. {ph2}: <code>idb_close</code>
#: website/public/get-started/index.html:1271
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For a headless supervisor providing {ph0}, {ph1} and {ph2}, the file can "
"look like this:"
msgstr ""
"Para un supervisor sin interfaz gráfica que ofrezca {ph0}, {ph1} y {ph2}, el"
" archivo puede ser así:"

#. {ph0}: <code>command</code>
#. {ph1}: <code>args</code>
#. {ph2}: <code>env</code>
#: website/public/get-started/index.html:1294
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For an attached legacy 1.4.0 GUI server, copy its working {ph0}, {ph1} and "
"optional {ph2} into the file. Open the original binary in IDA and start its "
"upstream plugin before asking REA to inspect it."
msgstr ""
"Para un servidor de interfaz gráfica heredado 1.4.0 conectado, copia en el "
"archivo sus valores funcionales de {ph0}, {ph1} y, si lo usa, {ph2}. Abre el"
" binario original en IDA e inicia el complemento de ese servidor antes de "
"pedir a REA que lo inspeccione."

#: website/public/get-started/index.html:1463
msgctxt "page:get-started/index.html"
msgid "SQLite database"
msgstr "Base de datos SQLite"

#: website/public/get-started/index.html:1473
msgctxt "page:get-started/index.html"
msgid "EVM bytecode"
msgstr "Bytecode de EVM"

#: website/public/get-started/index.html:446
msgctxt "page:get-started/index.html"
msgid "Install Codex using the command for your operating system:"
msgstr "Instala Codex con el comando de tu sistema operativo:"

#: website/public/get-started/index.html:475
msgctxt "page:get-started/index.html"
msgid ""
"After installation, reopen your terminal and return to the working folder. "
"Then start Codex:"
msgstr ""
"Tras la instalación, vuelve a abrir la terminal y entra en la carpeta de "
"trabajo. Después, inicia Codex:"

#. {ph0}: <a href="https://nodejs.org/en/download" >
#. {ph1}: </a >
#: website/public/get-started/index.html:336
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For a first installation, download the {ph0}Node.js 24 LTS macOS installer "
"(.pkg){ph1}, open it and follow the installer. Then reopen Terminal."
msgstr ""
"Para una primera instalación, descarga el {ph0}instalador de Node.js 24 LTS "
"para macOS (.pkg){ph1}, ábrelo y sigue sus instrucciones. Después, vuelve a "
"abrir Terminal."

#: website/public/get-started/index.html:343
msgctxt "page:get-started/index.html"
msgid "Already use Homebrew?"
msgstr "¿Ya usas Homebrew?"

#: website/public/get-started/index.html:572
msgctxt "page:get-started/index.html"
msgid ""
"Install Claude Desktop on Windows or macOS and sign in. Quit it completely, "
"then run this command in a terminal you opened outside Claude:"
msgstr ""
"Instala Claude Desktop en Windows o macOS e inicia sesión. Ciérralo por "
"completo y después ejecuta este comando en una terminal que hayas abierto "
"fuera de Claude:"

#. {ph0}: <a href="#check-connection">
#. {ph1}: </a>
#: website/public/get-started/index.html:591
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Review and approve the plan, reopen Claude, then {ph0}check the connection "
"in step 3{ph1}."
msgstr ""
"Revisa y aprueba el plan, vuelve a abrir Claude y {ph0}comprueba la conexión"
" en el paso 3{ph1}."

#: website/public/get-started/index.html:1168
msgctxt "page:get-started/index.html"
msgid ""
"Replace both paths with your existing installations. For a fresh macOS or "
"Linux arm64 installation, build the native decompiler for your computer "
"before continuing."
msgstr ""
"Sustituye ambas rutas por las de tus instalaciones existentes. En una "
"instalación nueva de macOS o Linux arm64, compila el descompilador nativo "
"para tu ordenador antes de continuar."

#: website/public/get-started/index.html:1174
msgctxt "page:get-started/index.html"
msgid "Build Ghidra's native decompiler"
msgstr "Compila el descompilador nativo de Ghidra"

#: website/public/get-started/index.html:1175
msgctxt "page:get-started/index.html"
msgid ""
"On macOS, the build needs Xcode Command Line Tools, make and bison. Use the "
"guide for your computer:"
msgstr ""
"En macOS, la compilación necesita Xcode Command Line Tools, make y bison. "
"Usa la guía correspondiente a tu ordenador:"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#missing-
#. macos-native-decompiler" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1180
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}macOS · Intel{ph1}"
msgstr "{ph0}macOS · Intel{ph1}"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#macos-
#. arm64-native-decompiler" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1186
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}macOS · Apple Silicon{ph1}"
msgstr "{ph0}macOS · Apple Silicon{ph1}"

#. {ph0}: <a
#. href="https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_12.1.4_build/GhidraDocs/GettingStarted.md#building-
#. native-components" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1192
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux arm64 · native build instructions{ph1}"
msgstr "{ph0}Linux arm64 · instrucciones de compilación nativa{ph1}"

#: website/public/get-started/index.html:1200
msgctxt "page:get-started/index.html"
msgid "Then check Ghidra and save its paths for your client:"
msgstr "Después, comprueba Ghidra y guarda sus rutas para tu cliente:"

#. {ph0}: <span translate="no">200 + 10%</span>
#: website/public/index.html:351
#, python-brace-format
msgctxt "page:index.html"
msgid "Why does Calculator give 220 for {ph0}?"
msgstr "¿Por qué {ph0} da 220 en la Calculadora?"

#. {ph0}: <a href="#what-is-re">
#. {ph1}: </a>
#: website/public/index.html:214
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}How it works{ph1}"
msgstr "{ph0}Cómo funciona{ph1}"

#: website/public/index.html:230
msgctxt "page:index.html"
msgid ""
"Ask your coding agent about an app, a game or a website. REA gives it the "
"tools to inspect the code behind the answer."
msgstr ""
"Pregunta a tu agente de programación sobre una aplicación, un juego o un "
"sitio web. REA le da herramientas para examinar el código que explica la "
"respuesta."

#: website/public/index.html:235
msgctxt "page:index.html"
msgid "Get started"
msgstr "Primeros pasos"

#: website/public/index.html:236
msgctxt "page:index.html"
msgid "See an example ↓"
msgstr "Ver un ejemplo ↓"

#: website/public/index.html:326
msgctxt "page:index.html"
msgid "How it works"
msgstr "Cómo funciona"

#: website/public/index.html:328
msgctxt "page:index.html"
msgid ""
"Reverse engineering means learning how software works by inspecting the "
"program itself. With REA, your agent can follow the code, explain a feature "
"and help you rebuild it."
msgstr ""
"La ingeniería inversa consiste en entender un software examinando el propio "
"programa. Con REA, tu agente puede seguir el código, explicar una función y "
"ayudarte a recrearla."

#: website/public/index.html:335
msgctxt "page:index.html"
msgid "Ask about one feature"
msgstr "Pregunta por una función"

#: website/public/index.html:336
msgctxt "page:index.html"
msgid "Give your agent a program or page and a question."
msgstr "Dale a tu agente un programa o una página y una pregunta."

#: website/public/index.html:339
msgctxt "page:index.html"
msgid "Inspect the program"
msgstr "Examina el programa"

#: website/public/index.html:340
msgctxt "page:index.html"
msgid "REA returns code, references and runtime observations."
msgstr ""
"REA devuelve código, referencias y observaciones durante la ejecución."

#: website/public/index.html:343
msgctxt "page:index.html"
msgid "Explain it, then try a change"
msgstr "Entiéndelo y prueba un cambio"

#: website/public/index.html:344
msgctxt "page:index.html"
msgid "Your agent uses the findings to explain or rebuild the feature."
msgstr "Tu agente usa los hallazgos para explicar o recrear la función."

#: website/public/index.html:360
msgctxt "page:index.html"
msgid "Follow the instructions step by step"
msgstr "Sigue las instrucciones paso a paso"

#: website/public/index.html:511
msgctxt "page:index.html"
msgid "Ask your agent the same question"
msgstr "Hazle la misma pregunta a tu agente"

#: website/public/index.html:724
msgctxt "page:index.html"
msgid ""
"Start at 6. Add 0.001 each update without a collision, while speed is below "
"13."
msgstr ""
"Comience a las 6. Añadir 0.001 cada actualización sin colisión, mientras que"
" la velocidad es inferior 13."

#: website/public/index.html:1029
msgctxt "page:index.html"
msgid ""
"Explore a feature in a released app or game, with code and checked results."
msgstr ""
"Explora una función de una aplicación o juego publicado, con código y "
"resultados comprobados."

#: website/public/index.html:1040
msgctxt "page:index.html"
msgid ""
"Trace Aegis's six-digit login code through its released APK, then move a "
"demo clock to see why it changes every 30 seconds."
msgstr ""
"Sigue el código de acceso de seis dígitos de Aegis en su APK publicado. "
"Después mueve el reloj de demostración para ver por qué cambia cada 30 "
"segundos."

#: website/public/index.html:1051
msgctxt "page:index.html"
msgid ""
"Follow Notion's packaged JavaScript to the system clipboard and see how a "
"copy preserves rich block data."
msgstr ""
"Sigue el JavaScript empaquetado de Notion hasta el portapapeles del sistema "
"y descubre cómo una copia conserva datos enriquecidos de los bloques."

#: website/public/index.html:1062
msgctxt "page:index.html"
msgid ""
"Recover how a ball's position becomes left/right sound in a 1996 Windows "
"game."
msgstr ""
"Recupera cómo la posición de una pelota se convierte en sonido a izquierda o"
" derecha en un juego de Windows de 1996."

#: website/public/index.html:1093
msgctxt "page:index.html"
msgid "Choose your target."
msgstr "Elige tu objetivo."

#: website/public/index.html:1094
msgctxt "page:index.html"
msgid ""
"These guides cover setup and a first investigation for each kind of "
"software."
msgstr ""
"Estas guías cubren la configuración y una primera investigación para cada "
"tipo de software."

#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:566
#, 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 ""
"Ensamblado seleccionado de la DLL de la calculadora instalada. Los "
"pensamientos y la respuesta ilustran los hallazgos. {ph0}Continúe con el "
"ejemplo de la Calculadora ↓{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:1131
#, 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}Ejemplo de solicitud * Sitio web"

#: website/public/index.html:1154
msgctxt "page:index.html"
msgid "Yes, this one."
msgstr "Sí, esta."

#. {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:1159
#, 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}Mensaje de ejemplo * Reconstrucción "
"del juego"

#. {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:1173
#, 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}Usa REA para reconstruir este juego a partir de su "
"ejecutable. Recupera la lógica de juego en C y pruébala con la "
"original.{ph3}{ph4}{ph5}"

#. {ph0}: <a href="showcase/dx-ball/">
#. {ph1}: </a>
#: website/public/index.html:1182
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}See the DX-Ball case study →{ph1}"
msgstr "{ph0}Vea el estudio de caso de DX-Ball →{ph1}"

#: website/public/index.html:1136
msgctxt "page:index.html"
msgid "Copy website project prompt"
msgstr "Copie el mensaje del proyecto del sitio web"

#: website/public/index.html:1164
msgctxt "page:index.html"
msgid "Copy game reconstruction prompt"
msgstr "Copiar mensaje de reconstrucción del juego"

#. {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:1145
#, 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}Utilice REA para inspeccionar {ph3}. Clona este sitio web "
"por mí.{ph4}{ph5}{ph6}"

#. {ph0}: <a href="showcase/">
#. {ph1}: </a>
#: website/public/index.html:239
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Showcases →{ph1} — investigations and interactive demos."
msgstr "{ph0}Casos →{ph1} — investigaciones y demostraciones interactivas."

#. {ph0}: <a href="blog/">
#. {ph1}: </a>
#: website/public/index.html:243
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Blog →{ph1} — methods and reconstruction notes."
msgstr "{ph0}Blog →{ph1} — métodos y notas sobre reconstrucción."

#: website/public/index.html:350
msgctxt "page:index.html"
msgid "See the full Calculator investigation"
msgstr "Ver la investigación completa de la Calculadora"

#: website/public/index.html:1126
msgctxt "page:index.html"
msgid "Try a larger project"
msgstr "Probar un proyecto más grande"

#: website/public/index.html:578
msgctxt "page:index.html"
msgid ""
"Let’s try two examples: change a game’s speed, then rebuild Calculator’s % "
"button."
msgstr ""
"Probemos dos ejemplos: cambiar la velocidad de un juego y recrear el botón %"
" de la Calculadora."

#: website/public/index.html:586
msgctxt "page:index.html"
msgid ""
"The game gets faster as you run. To rebuild it with a speed control, we "
"first need to find out how the speed changes."
msgstr ""
"El juego se acelera mientras corres. Para recrearlo con un control de "
"velocidad, primero debemos averiguar cómo cambia la velocidad."

#: website/public/index.html:592
msgctxt "page:index.html"
msgid "1. Ask about the speed"
msgstr "1. Pregunta por la velocidad"

#. {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:595
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example question · Dinosaur game"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Pregunta de ejemplo · Juego del "
"dinosaurio"

#: website/public/index.html:618
msgctxt "page:index.html"
msgid "2. Find the speed rule"
msgstr "2. Encuentra la regla de velocidad"

#: website/public/index.html:619
msgctxt "page:index.html"
msgid ""
"REA lets the agent read the game’s running code. The speed starts at 6 and "
"increases a little each update while it is below 13."
msgstr ""
"REA permite al agente leer el código del juego en ejecución. La velocidad "
"empieza en 6 y aumenta un poco en cada actualización mientras sea inferior a"
" 13."

#: website/public/index.html:626
msgctxt "page:index.html"
msgid "3. Play the result"
msgstr "3. Juega con el resultado"

#: website/public/index.html:627
msgctxt "page:index.html"
msgid ""
"We rebuilt that rule in the mini-game below and added a speed slider. Press "
"Play, then choose your own speed."
msgstr ""
"Recreamos esa regla en el minijuego de abajo y añadimos un control de "
"velocidad. Pulsa Jugar y elige tu velocidad."

#: website/public/index.html:692
msgctxt "page:index.html"
msgid ""
"Enable JavaScript to play. You can still read the rule and open the source "
"code below."
msgstr ""
"Activa JavaScript para jugar. Puedes seguir leyendo la regla y abrir el "
"código fuente de abajo."

#: website/public/index.html:810
msgctxt "page:index.html"
msgid ""
"The % button does different things after + and ×. Let’s find both rules and "
"try them in a small calculator."
msgstr ""
"El botón % hace cosas distintas después de + y ×. Busquemos ambas reglas y "
"probémoslas en una pequeña calculadora."

#: website/public/index.html:816
msgctxt "page:index.html"
msgid "1. Ask about the % button"
msgstr "1. Pregunta por el botón %"

#. {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:819
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example question · Calculator"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Pregunta de ejemplo · Calculadora"

#: website/public/index.html:842
msgctxt "page:index.html"
msgid "2. Find both rules"
msgstr "2. Encuentra ambas reglas"

#: website/public/index.html:843
msgctxt "page:index.html"
msgid ""
"REA helps the agent read the code behind the % button. It applies two "
"different rules:"
msgstr ""
"REA ayuda al agente a leer el código del botón %. Este aplica dos reglas "
"diferentes:"

#: website/public/index.html:864
msgctxt "page:index.html"
msgid "3. Try the % button"
msgstr "3. Prueba el botón %"

#: website/public/index.html:865
msgctxt "page:index.html"
msgid "We recreated both rules below. Choose + or ×, press %, then press =."
msgstr "Recreamos ambas reglas abajo. Elige + o ×, pulsa % y luego =."

#. {ph0}: <a href="faq/">
#. {ph1}: </a>
#: website/public/index.html:1195
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Read the FAQ{ph1} — setup and common questions."
msgstr ""
"{ph0}Lee las preguntas frecuentes{ph1} — configuración y dudas habituales."

#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/index.html:1198
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Join Discord{ph1} — get help and discuss your investigations."
msgstr ""
"{ph0}Únete a Discord{ph1} — pide ayuda y comparte tus investigaciones."

#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/index.html:1202
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}GitHub issues{ph1} — report a bug or request a feature."
msgstr "{ph0}GitHub issues{ph1} — informa de un error o solicita una función."

#: website/public/index.html:296
msgctxt "page:index.html"
msgid "Setup for your platform:"
msgstr "Configuración para tu plataforma:"

#. {ph0}: <a href="get-started/#curl-installation" >
#. {ph1}: <span translate="no">curl</span>
#. {ph2}: </a >
#: website/public/index.html:307
#, python-brace-format
msgctxt "page:index.html"
msgid "Other install options: {ph0}{ph1} →{ph2}"
msgstr "Otras formas de instalación: {ph0}{ph1} →{ph2}"

#. {ph0}: <code>rea setup</code>
#: website/public/get-started/index.html:1676
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Follow the setup prompts to connect your agent. If they don't appear, run "
"{ph0}."
msgstr ""
"Sigue las indicaciones de configuración para conectar tu agente. Si no "
"aparecen, ejecuta {ph0}."

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#development-
#. setup" >
#. {ph1}: </a >
#. {ph2}: <code>6.4.0</code>
#: website/public/get-started/index.html:1247
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The macOS headless profile and native GUI bridge require a {ph0}REA source "
"build{ph1} or a release containing those changes. npm {ph2} does not include"
" them."
msgstr ""
"El perfil sin interfaz de macOS y el puente GUI nativo requieren una "
"{ph0}compilación de REA desde el código fuente{ph1} o una versión que "
"incluya estos cambios. npm {ph2} no los incluye."

#. {ph0}: <code>node scripts/rea.mjs doctor --provider ida --json</code>
#. {ph1}: <code>node scripts/rea.mjs setup</code>
#. {ph2}: <code>npx</code>
#: website/public/get-started/index.html:1256
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"From the built checkout, run {ph0} and {ph1} instead of the {ph2} commands "
"below."
msgstr ""
"Desde el directorio del código fuente ya compilado, ejecuta {ph0} y {ph1} en"
" lugar de los comandos {ph2} de abajo."

#. {ph0}: <code>rea</code>
#. {ph1}: <code>"$HOME/.local/bin/rea" setup</code>
#: website/public/get-started/index.html:1680
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If your shell can't find {ph0}, use the executable path printed by the "
"installer. On Linux, the default setup command is {ph1}."
msgstr ""
"Si el shell no encuentra {ph0}, usa la ruta del ejecutable que muestra el "
"instalador. En Linux, el comando de configuración predeterminado es {ph1}."

#. {ph0}: <code>/absolute/path/to/program</code>
#: website/public/get-started/index.html:1353
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Use REA with my configured provider to inspect {ph0}. List its functions and"
" strings, then explain the part that handles user input with references to "
"the code."
msgstr ""
"Usa REA con el proveedor que he configurado para inspeccionar {ph0}. Enumera"
" sus funciones y cadenas, y después explica la parte que procesa la entrada "
"del usuario con referencias al código."

#: website/public/blog/index.html:122 website/public/blog/index.html:241
#: website/public/blog/reverse-engineering-models/index.html:122
#: website/public/blog/reverse-engineering-models/index.html:880
#: website/public/blog/touhou-reconstruction/index.html:122
#: website/public/blog/touhou-reconstruction/index.html:1077
#: website/public/contributors/index.html:123
#: website/public/contributors/index.html:1128
#: website/public/examples/dino-lab/index.html:123
#: website/public/examples/dino-lab/index.html:472
#: website/public/faq/index.html:122 website/public/faq/index.html:570
#: website/public/first-investigation/index.html:122
#: website/public/first-investigation/index.html:531
#: website/public/get-started/index.html:122
#: website/public/get-started/index.html:1814
#: website/public/guides/browser/index.html:122
#: website/public/guides/browser/index.html:504
#: website/public/guides/index.html:122 website/public/guides/index.html:279
#: website/public/guides/javascript/index.html:122
#: website/public/guides/javascript/index.html:500
#: website/public/guides/native/index.html:122
#: website/public/guides/native/index.html:506 website/public/index.html:124
#: website/public/index.html:1219 website/public/showcase/aegis/index.html:123
#: website/public/showcase/aegis/index.html:805
#: website/public/showcase/ctf/index.html:122
#: website/public/showcase/ctf/index.html:774
#: website/public/showcase/dx-ball/index.html:122
#: website/public/showcase/dx-ball/index.html:782
#: website/public/showcase/index.html:122
#: website/public/showcase/index.html:314
#: website/public/showcase/notion/index.html:122
#: website/public/showcase/notion/index.html:628
#: website/public/showcase/th04/index.html:122
#: website/public/showcase/th04/index.html:797
msgctxt "shared"
msgid "Contributors"
msgstr "Colaboradores"

#: website/public/contributors/index.html:108
msgctxt "page:contributors/index.html"
msgid "Skip to content"
msgstr "Saltar al contenido"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/contributors/index.html:200
#, python-brace-format
msgctxt "page:contributors/index.html"
msgid "{ph0}Home{ph1} / Contributors"
msgstr "{ph0}Inicio{ph1} / Colaboradores"

#: website/public/contributors/index.html:201
msgctxt "page:contributors/index.html"
msgid "Built together."
msgstr "Lo construimos juntos."

#: website/public/contributors/index.html:202
msgctxt "page:contributors/index.html"
msgid "Thank you to everyone who helps make REA better."
msgstr "Gracias a todas las personas que ayudan a mejorar REA."

#: website/public/contributors/index.html:203
msgctxt "page:contributors/index.html"
msgid ""
"Code, documentation, tests, translations and ideas — there are many ways to "
"contribute."
msgstr ""
"Código, documentación, pruebas, traducciones e ideas: hay muchas formas de "
"colaborar."

#: website/public/contributors/index.html:208
msgctxt "page:contributors/index.html"
msgid "How to contribute"
msgstr "Cómo colaborar"

#: website/public/contributors/index.html:213
msgctxt "page:contributors/index.html"
msgid "Join the conversation →"
msgstr "Únete a la conversación →"

#: website/public/contributors/index.html:223
msgctxt "page:contributors/index.html"
msgid "Contributors"
msgstr "Colaboradores"

#: website/public/contributors/index.html:225
msgctxt "page:contributors/index.html"
msgid "Find a contributor"
msgstr "Buscar colaboradores"

#. {ph0}: <a href="https://github.com/morluto/rea/graphs/contributors">
#. {ph1}: </a>
#. {ph2}: <time datetime="2026-10-15" translate="no">2026-10-15</time>
#: website/public/contributors/index.html:1112
#, python-brace-format
msgctxt "page:contributors/index.html"
msgid "From {ph0}GitHub’s contributor list{ph1} · Updated {ph2}."
msgstr ""
"De la {ph0}lista de colaboradores de GitHub{ph1} · Actualizada el {ph2}."

#: website/public/contributors/index.html:1117
msgctxt "page:contributors/index.html"
msgid "No matching contributors. Try another username."
msgstr "No se encontraron colaboradores. Prueba con otro nombre de usuario."

#: website/public/contributors/index.html:6
msgctxt "page:contributors/index.html"
msgid "Contributors · REA"
msgstr "Colaboradores · REA"

#: website/public/contributors/index.html:7
msgctxt "page:contributors/index.html"
msgid ""
"Meet the people who contribute code, documentation, tests and ideas to REA."
msgstr ""
"Conoce a quienes aportan código, documentación, pruebas e ideas a REA."

#: website/public/contributors/index.html:226
msgctxt "page:contributors/index.html"
msgid "GitHub username"
msgstr "Nombre de usuario de GitHub"

#: website/public/contributors/index.html:1137
msgctxt "page:contributors/index.html"
msgid "Back to top"
msgstr "Volver arriba"

#: website/public/assets/contributors.js:21
#, python-brace-format
msgctxt "runtime"
msgid "Contributors: {count}"
msgstr "Colaboradores: {count}"

#, python-brace-format
#~ msgctxt "runtime"
#~ msgid "{count} contributors"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Use REA with Ghidra to inspect {ph0}. List its functions and strings, then "
#~ "explain the part that handles user input with references to the code."
#~ msgstr ""
#~ "Usa REA con Ghidra para inspeccionar {ph0}. Enumera sus funciones y cadenas "
#~ "de texto y después explica la parte que procesa las entradas del usuario, "
#~ "con referencias al código."

#~ msgctxt "page:index.html"
#~ msgid "Play the reconstruction"
#~ msgstr "Juega a la reconstrucción"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Enable JavaScript to play the reconstruction. The code and explanation above"
#~ " remain readable."
#~ msgstr ""
#~ "Habilite JavaScript para reproducir la reconstrucción. El código y la "
#~ "explicación anteriores siguen siendo legibles."

#~ msgctxt "page:index.html"
#~ msgid "REA returned"
#~ msgstr "REA devolvió"

#, 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}Ejemplo rápido * Juego de "
#~ "dinosaurios"

#~ msgctxt "page:index.html"
#~ msgid "Try the calculation"
#~ msgstr "Prueba el cálculo"

#, 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}Solicitud de ejemplo * Reconstruir "
#~ "el botón %"

#, 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}Lea las Preguntas frecuentes{ph1}, {ph2}chatee con nosotros en Discord "
#~ "{ph3}, o {ph4}abrir un problema de GitHub{ph5} para errores y solicitudes de"
#~ " funciones."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We inspected the game's speed rule, then rebuilt it with a slider. Play the "
#~ "result and choose your own pace."
#~ msgstr ""
#~ "Examinamos la regla de velocidad del juego y la recreamos con un control "
#~ "deslizante. Juega y elige tu propio ritmo."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The running script contains the speed settings and update function. The "
#~ "agent uses them to recover the acceleration."
#~ msgstr ""
#~ "El script en ejecución contiene los ajustes de velocidad y la función de "
#~ "actualización. El agente los usa para recuperar la aceleración."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The % button behaves differently after + and ×. We inspected the installed "
#~ "app to recover both rules. Try them below."
#~ msgstr ""
#~ "El botón % se comporta de forma distinta después de + y ×. Examinamos la "
#~ "aplicación instalada para recuperar ambas reglas. Pruébalas abajo."

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "One branch divides by 100. The other also multiplies by the first number. "
#~ "The agent uses both to recreate the % button."
#~ msgstr ""
#~ "Una rama se divide por 100. El otro también se multiplica por el primer "
#~ "número. El agente usa ambos para recrear el botón%."

#~ msgctxt "page:index.html"
#~ msgid "See a code-level example with Calculator"
#~ msgstr "Ver un ejemplo de código con la Calculadora"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Selected assembly from the installed Calculator DLL. The thoughts and reply "
#~ "illustrate the findings."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}What is RE?{ph1}"
#~ msgstr "{ph0}¿Qué es RE?{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}How REA helps{ph1}"
#~ msgstr "{ph0}Cómo ayuda REA{ph1}"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "REA gives your agent the tools to inspect a program and explain what it "
#~ "does."
#~ msgstr ""
#~ "REA le da a tu agente de programación las herramientas para examinar un "
#~ "programa y explicar qué hace."

#~ msgctxt "page:index.html"
#~ msgid "What is reverse engineering?"
#~ msgstr "¿Qué es la ingeniería inversa?"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Finding out how software works by {ph0}examining the program itself.{ph1}"
#~ msgstr ""
#~ "Entender cómo funciona el software {ph0}examinando el propio programa.{ph1}"

#, 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 ""
#~ "El objetivo: comprender una característica lo suficientemente bien como para"
#~ " {ph0}explícalo{ph1}, {ph2}cámbialo{ph3} o {ph4}reconstrúyelo.{ph5}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "With REA · You ask {ph0}your agent{ph1}"
#~ msgstr "Con REA · Le preguntas a {ph0}tu agente{ph1}"

#~ msgctxt "page:index.html"
#~ msgid "One prompt."
#~ msgstr "Un solo prompt."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Ask your agent {ph0}in plain English.{ph1}"
#~ msgstr "Pregúntale a tu agente {ph0}con palabras normales.{ph1}"

#, 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}Probemos con dos ejemplos.{ph1} Cambia la velocidad de un juego, luego "
#~ "regresa a la Calculadora y reconstruye su botón%."

#~ msgctxt "page:index.html"
#~ msgid "Goal"
#~ msgstr "Objetivo"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Rebuild the game with {ph0}adjustable speed.{ph1}"
#~ msgstr "Reconstruye el juego con {ph0}velocidad ajustable.{ph1}"

#~ msgctxt "page:index.html"
#~ msgid "Why reverse engineer it?"
#~ msgstr "¿Por qué realizar ingeniería inversa?"

#, 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 ""
#~ "Para reproducir su aceleración, necesitamos {ph0}la regla en el juego "
#~ "terrestre{ph1}: qué tan rápido comienza, cuánto aumenta y cuándo se detiene."

#, 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}El script que realmente se ejecuta en la página.{ph1} El agente lee su "
#~ "función de actualización y la configuración de velocidad, luego usa esa "
#~ "regla en un nuevo juego."

#, 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}Comience a las 6.{ph1} Añadir {ph2}0.001{ph3} cada actualización sin "
#~ "colisión, mientras que la velocidad es inferior {ph4}13{ph5}."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Build a small calculator that handles {ph0}both + and × correctly.{ph1}"
#~ msgstr ""
#~ "Construye una pequeña calculadora que maneje {ph0}tanto + como × "
#~ "correctamente.{ph1}"

#, 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 ""
#~ "El mismo botón usa {ph0}reglas diferentes después de + y ×.{ph1} "
#~ "Inspeccionamos la aplicación instalada para encontrar a qué número se aplica"
#~ " el porcentaje."

#, 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}Una rama se divide por 100. El otro también se multiplica por el primer"
#~ " número.{ph1} El agente usa ambos para recrear el botón%."

#~ msgctxt "page:index.html"
#~ msgid "Want to go deeper?"
#~ msgstr "¿Quieres profundizar?"

#, 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 ""
#~ "Dígale a su agente lo que quiere entender o construir. Con REA, pueden "
#~ "trabajar juntos en cualquier cosa, desde {ph0}clonando este sitio web{ph1} "
#~ "para {ph2}reconstruyendo un juego a partir de su ejecutable.{ph3}"

#~ msgctxt "page:index.html"
#~ msgid "For setup and analysis steps, choose your target:"
#~ msgstr "Para los pasos de configuración y análisis, elija su objetivo:"

#~ msgctxt "page:index.html"
#~ msgid "Join the community"
#~ msgstr "Únete a la comunidad"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Share investigations and get help from other REA users on Discord. Follow "
#~ "REA on X for project updates."
#~ msgstr ""
#~ "Comparta investigaciones y obtenga ayuda de otros usuarios de REA en Discord"
#~ " . Siga a REA en X para obtener actualizaciones del proyecto."

#~ msgctxt "page:index.html"
#~ msgid "See how REA works ↓"
#~ msgstr "Mira cómo funciona REA ↓"

#~ msgctxt "page:index.html"
#~ msgid "Follow @reatools on X"
#~ msgstr "Sigue a @ reatools en X"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for {ph1}?{ph2}"
#~ msgstr ""
#~ "Por ejemplo: {ph0}¿por qué la calculadora da 220 al calcular {ph1}?{ph2}"

#, 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 ""
#~ "Vimos por qué {ph0}{ph1} da 220.{ph2} Ahora recuperemos las reglas para + y "
#~ "× y probémoslas."

# Use the same label as the Get started navigation link. The arrow is
# decorative.
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Get started {ph0}"
#~ msgstr "Primeros pasos {ph0}"

#~ msgctxt "page:index.html"
#~ msgid "One question:"
#~ msgstr "Una pregunta:"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Android, games, Electron and a CTF challenge, with code, figures and checked"
#~ " results."
#~ msgstr ""
#~ "Android, juegos, Electron y un desafío CTF, con código, cifras y resultados "
#~ "comprobados."

#~ msgctxt "page: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 ""
#~ "Encuentre el cálculo del código de seis dígitos de Aegis en su APK "
#~ "publicado. Rastree los métodos de generación con REA, luego mueva un reloj "
#~ "de demostración para ver por qué el código cambia cada 30 segundos."

#~ msgctxt "page: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 ""
#~ "Rastree una API orientada a la página a través del Notion empaquetado de "
#~ "JavaScript . Siga sus envoltorios IPC hasta el portapapeles del sistema, "
#~ "luego vea cómo un pequeño marcador HTML mantiene los datos enriquecidos del "
#~ "bloque conectados a una copia."

#~ msgctxt "page: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 ""
#~ "Recupere un cálculo de la posición del sonido izquierdo/derecho de un juego "
#~ "Windows de 1996.  Las instrucciones de REA ,las referencias de las personas "
#~ "que llaman y las constantes numéricas conducen a una pequeña función C, "
#~ "comprobada con el comportamiento original y los 63 bytes compilados."

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Before REA · You investigate it {ph0}yourself{ph1}"
#~ msgstr "Antes de REA · Lo investigas {ph0}por tu cuenta{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Use REA to inspect Windows Calculator. Why does {ph0} give 220?"
#~ msgstr "Uso REA para inspeccionar Windows Calculadora. ¿Por qué {ph0} da 220?"

#~ 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 ""
#~ "Este comando usa un shell compatible con here-document, como Bash o Zsh. Su "
#~ "agente puede ejecutar el mismo JavaScript en el shell de su plataforma."

#~ msgctxt "page:get-started/index.html"
#~ msgid "If you use Homebrew:"
#~ msgstr "Si usa Homebrew :"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Otherwise:"
#~ msgstr "De lo contrario:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Close Terminal, open it again, then:"
#~ msgstr "Cierre la terminal, ábrala de nuevo y luego:"

#~ 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 ""
#~ "Reemplace ambas rutas con sus instalaciones existentes. El programa de "
#~ "instalación los verifica y registra la configuración válida para el cliente "
#~ "seleccionado. En Linux arm64, es posible que deba compilar el descompilador "
#~ "nativo de Ghidra por separado."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy fnm installation command for macOS"
#~ msgstr "Copie el comando de instalación fnm para macOS"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Node.js 24 commands for macOS"
#~ msgstr "Copie los 24 comandos Node.js para macOS"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0} · CSV formatter"
#~ msgstr "{ph0} · CSV formateador"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "For a first installation, download the Node.js 24 LTS macOS installer "
#~ "(.pkg), open it and follow the installer. Then reopen Terminal."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Install Claude Desktop on Windows or macOS and sign in. Quit it completely "
#~ "before running REA setup in your terminal. Choose {ph0}, approve the plan, "
#~ "then reopen Claude and start a chat."
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "In the terminal you prepared above, install Codex:"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "Then start it:"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Open its AI chat and choose Agent mode. In Windsurf, open Cascade; in VS "
#~ "Code, set up GitHub Copilot first."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}Cursor setup{ph1} · {ph2}Windsurf setup{ph3} · {ph4}VS Code and Copilot"
#~ " setup{ph5}"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "OpenCode · choose a model provider"
#~ msgstr ""

#, 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 ""
#~ "El instalador necesita {ph0} y {ph1} (en Debian / Ubuntu: {ph2}). Cierre la "
#~ "terminal, ábrala de nuevo y luego:"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Connect REA to your coding agent, or inspect a local app from your terminal."
#~ msgstr ""
#~ "Conecte REA a su agente de codificación o inspeccione una aplicación local "
#~ "desde su terminal."

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Windows (PowerShell){ph1}"
#~ msgstr "{ph0} Windows (PowerShell){ph1}"

#, 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 dice más tarde {ph0}\"la ejecución de scripts está "
#~ "deshabilitada en este sistema\"{ph1} cuando corres {ph2}, ejecute esto una "
#~ "vez e inténtelo de nuevo:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Setup options"
#~ msgstr "Opciones de configuración"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Connect your coding agent{ph1}"
#~ msgstr "{ph0}Conecte a su agente de codificación{ph1}"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Set up native analysis{ph1}"
#~ msgstr "{ph0}Configurar el análisis de programas de código máquina{ph1}"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Connect your coding agent"
#~ msgstr "Conecte a su agente de codificación"

#~ 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 ""
#~ "Ejecute el programa de instalación para conectar REA a su agente de "
#~ "codificación. Las opciones de cliente incluyen Claude Code, Codex, Cursor, "
#~ "Gemini CLI, Windsurf, Grok Build y otros clientes MCP compatibles. El "
#~ "conector de Grok Bot se agrega desde su chat."

#~ msgctxt "page:get-started/index.html"
#~ msgid "New to coding agents?"
#~ msgstr "¿Eres nuevo en los agentes de codificación?"

#~ 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 agente de codificación es un asistente de IA que funciona en su "
#~ "computadora en lugar de en una pestaña del navegador. Puede leer archivos y "
#~ "ejecutar comandos, y pregunta antes de realizar cambios.  REA le brinda "
#~ "herramientas de ingeniería inversa."

#~ 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 aún no tiene uno, elija uno, siga su página de instalación e inicie "
#~ "sesión:"

#, 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} por Anthropic . Necesita un plan Claude de"
#~ " pago."

#, 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} por OpenAI . Inicie sesión con su cuenta de "
#~ "ChatGPT."

#, 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}, código abierto. Conecte al proveedor de "
#~ "modelos de su elección."

#~ 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 ""
#~ "Luego ábralo y copie el mensaje a continuación en él. El agente ejecuta la "
#~ "configuración de REA y le muestra el plan antes de cambiar nada."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Restart your client when setup finishes."
#~ msgstr "Reinicie su cliente cuando finalice la configuración."

#~ 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 ""
#~ "Dale a tu agente una ruta objetivo y una pregunta específica. Para una "
#~ "aplicación JavaScript o Electron, puede comenzar con:"

#, 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 ""
#~ "Mira {ph0} y descubra cómo exporta datos. Muestre los puntos de entrada, las"
#~ " llamadas y las dependencias involucradas, con las ubicaciones de origen de "
#~ "sus hallazgos."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Replace the path with your local target."
#~ msgstr "Reemplace la ruta con su objetivo local."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Use the CLI"
#~ msgstr "Utilice el CLI"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Set up native analysis"
#~ msgstr "Configurar el análisis de programas de código máquina"

#~ 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 ""
#~ "Los programas de código máquina necesitan una herramienta de análisis local."
#~ " Elija y configure uno a continuación, luego proporcione a REA su ejecutable"
#~ " o biblioteca."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Choose a tool: Ghidra, Hopper or IDA"
#~ msgstr "Elija una herramienta: Ghidra, Hopper o IDA"

#~ 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 ""
#~ "Utilice un Ghidra 12.1 existente.instalación x y un JDK 21 de 64 bits o "
#~ "posterior en Linux o macOS, en x64 o arm64. Su instalación de Ghidra "
#~ "necesita un descompilador nativo para su arquitectura de host. Establezca "
#~ "las rutas antes de ejecutar la configuración:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Ghidra connection · macOS / Linux"
#~ msgstr "Conexión Ghidra * macOS / Linux"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Ghidra connection · Windows PowerShell"
#~ msgstr "Conexión Ghidra · Windows PowerShell"

#~ 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 ""
#~ "En macOS , complete la opción de primera ejecución de Hopper de modo de "
#~ "demostración o activación de licencia antes de un análisis desatendido."

#~ 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 ""
#~ "Las configuraciones verificadas de IDA usan Windows, con un registro MCP "
#~ "existente para una GUI adjunta o una base de datos sin cabecera.  El "
#~ "análisis sin cabeza Linux y macOS permanece sin verificar."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Connect an existing IDA MCP registration"
#~ msgstr "Conecte un registro IDA MCP existente"

#, 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 ""
#~ "Mantenga el servidor ascendente funcionando {ph0}, {ph1} y opcional {ph2} en"
#~ " un archivo JSON. Un existente {ph3} objeto con un {ph4} también se acepta "
#~ "la entrada. Apunte REA a ese archivo antes de la configuración:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "IDA connection · Windows PowerShell"
#~ msgstr "Conexión IDA · Windows PowerShell"

#, 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 ""
#~ "El perfil adjunto utiliza herramientas legacy 1.4.0 ascendentes con el "
#~ "binario original ya abierto en IDA . El perfil sin cabeza utiliza la API de "
#~ "supervisor de base de datos ascendente y un registro con {ph0}; la "
#~ "verificación real cubre un supervisor IDA 9.3 Windows x64. El médico "
#~ "verifica el registro sin iniciar IDA ."

#, 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 ""
#~ "Asigne a REA la ruta ejecutable original, con {ph0} en una consulta CLI. "
#~ "Para un agente, incluya {ph1} en el entorno del registro REA y seleccione "
#~ "IDA al abrir el binario."

#~ msgctxt "page:get-started/index.html"
#~ msgid "For an existing Ghidra setup, inspect a function with:"
#~ msgstr "Para una configuración Ghidra existente, inspeccione una función con:"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Function analysis"
#~ msgstr "Análisis de funciones"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "Replace {ph0} with the function name or address you want to inspect."
#~ msgstr ""
#~ "Reemplazar {ph0} con el nombre de la función o la dirección que desea "
#~ "inspeccionar."

#~ msgctxt "page:get-started/index.html"
#~ msgid "How native analysis sessions work"
#~ msgstr ""
#~ "Cómo funcionan las sesiones de análisis de programas de código máquina"

#~ 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 ""
#~ "Cada comando CLI importa y analiza el binario, luego cierra su sesión. Las "
#~ "consultas MCP de su agente reutilizan el binario importado mientras esa "
#~ "sesión está abierta."

#, 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}Siga un ejemplo de análisis de programas de código máquina{ph1} para "
#~ "ver cómo el resultado de la función conduce a un cálculo recuperado."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Check one client"
#~ msgstr "Compruebe un cliente"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy PowerShell execution policy command"
#~ msgstr "Copie el comando de política de ejecución de PowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy agent setup command"
#~ msgstr "Comando Copiar configuración del agente"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Ghidra connection for macOS and Linux"
#~ msgstr "Copiar el comando de conexión de Ghidra para macOS y Linux"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Ghidra connection for Windows PowerShell"
#~ msgstr "Copie la conexión Ghidra para Windows PowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy IDA connection for Windows PowerShell"
#~ msgstr "Copie la conexión IDA para Windows PowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy native function analysis command"
#~ msgstr "Copiar comando de análisis de funciones nativas"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy client diagnosis command"
#~ msgstr "Copie el comando de diagnóstico del cliente"

#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell)"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA supplies"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Your agent explains"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Try the calculation"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell){ph0}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}{ph1}REA supplies{ph2} {ph3}The handler’s instructions, decompiled code"
#~ " and calls.{ph4}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}{ph1}Your agent explains{ph2} {ph3}10% of 200 = 20{ph4}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}{ph1}Try the calculation{ph2} {ph3}200 + 20 = 220{ph4}"
#~ msgstr ""

#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell) →"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Before REA · You investigate it {ph0}yourself{ph1} {ph2}{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Help & feedback{ph1}"
#~ msgstr "{ph0}Ayuda y comentarios{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Community{ph1}"
#~ msgstr "{ph0}Comunidad{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Already know RE? {ph0}Skip to analysis guides →{ph1}"
#~ msgstr "¿Ya conoces RE? {ph0}Saltar a guías de análisis →{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Want to go deeper? {ph0}Read the Blog →{ph1}"
#~ msgstr "¿Quieres profundizar? {ph0}Leer el Blog →{ph1}"

#~ msgctxt "page:blog/index.html"
#~ msgid "By N0zoM1z0 · 13 October 2026 · Draft for review"
#~ msgstr "Por N0zoM1z0 · 13 de octubre de 2026 · Borrador para revisión"

#~ msgctxt "page:index.html"
#~ msgid "Setup guide"
#~ msgstr "Guía de instalación"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Windows PowerShell"
#~ msgstr "Windows PowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid "macOS · Homebrew"
#~ msgstr "macOS · Homebrew"

#~ msgctxt "runtime"
#~ msgid "Copy"
#~ msgstr "Copiar"

#~ 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 "Reconstrucción * dino-speed.js"

#~ msgctxt "page:faq/index.html"
#~ msgid ""
#~ "With Node.js and npm available, run setup, choose your coding agent and "
#~ "review the proposed changes."
#~ msgstr ""
#~ "Con Node.js y npm disponible, ejecute el programa de instalación, elija su "
#~ "agente de codificación y revise los cambios propuestos."

#~ msgctxt "page:first-investigation/index.html"
#~ msgid "A supplied example · Node.js and npm · Your coding agent"
#~ msgstr "Un ejemplo proporcionado · Node.js y npm * Su agente de codificación"

#, 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 ""
#~ "Use un agente de codificación como Claude Code, Codex o Cursor. Necesitarás "
#~ "Node.js y npm; el {ph0}la guía de configuración enumera las versiones "
#~ "compatibles{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}Renderizador de página*.js{ph1}{ph2}Notas de "
#~ "exportación{ph3}{ph4}Llamadas {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}Puente * precarga · js{ph1}{ph2}{ph3}{ph4}{ph5}Envía un mensaje con "
#~ "nombre al proceso 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}Manejador * principal.js{ph1}{ph2}Escribe notas.csv{ph3}{ph4}Llama al "
#~ "formateador en {ph5} y escribe el archivo.{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}Predecir el CSV para una nota con id 1 y título Hola, "
#~ "\"REA\". Luego ejecute el formateador toCsv del ejemplo con Node.js para "
#~ "comprobarlo. Muestra la predicción y la salida real.{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 ""
#~ "El título permanece en un campo entrecomillado; cada comilla se duplica. "
#~ "Esto verifica el formateador directamente con Node.js."

#~ msgctxt "page:first-investigation/index.html"
#~ msgid "Node.js · CSV formatter"
#~ msgstr "Node.js · CSV formateador"

#~ 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 ""
#~ "Necesitarás Node.js 22 (22.19+), 24 (24.11+) o 26+. npm viene con Node.js."

#~ msgctxt "page:get-started/index.html"
#~ msgid "Don't have Node.js, or not sure?"
#~ msgstr "No tengo Node.js, ¿ o no estás seguro?"

#, 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+ o v26+, ya está listo. Si imprime una "
#~ "versión anterior o \"no reconocido\" / \"comando no encontrado\", instale "
#~ "Node.js 24 LITROS:"

#, 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}Abra el ejemplo{ph1} · {ph2}Descargar exportación.js{ph3} · "
#~ "{ph4}Descargar notas.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 ""
#~ "Descargue el ejemplo y descomprímalo. El archivo contiene la versión "
#~ "completa {ph0} carpeta. Analícelo con Node.js y npm; Electron no es "
#~ "necesario para este ejemplo."

#, 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 ""
#~ "Primera vez, o falta Node.js ¿o un agente de codificación? {ph0}Siga la guía"
#~ " de configuración paso a paso →{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for 200 + 10%?{ph1}"
#~ msgstr ""
#~ "Por ejemplo: {ph0}¿por qué la calculadora da 220 al calcular 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}Uso REA para inspeccionar Windows Calculadora. ¿Por qué 200 "
#~ "+ 10% da 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 ""
#~ "Vimos por qué {ph0}200 + 10% da 220.{ph1} Ahora recuperemos las reglas para "
#~ "+ y × y probémoslas."

#, 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 lee calc.exe{ph1}{ph2}Lanza la aplicación "
#~ "Calculadora{ph3}{ph4}Se abre el código {ph5}. A continuación, el agente "
#~ "selecciona la biblioteca de la aplicación instalada.{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}Uso REA para inspeccionar aegis-v3.4.3.apk. Descubra cómo "
#~ "genera el código de inicio de sesión de seis dígitos, explique por qué "
#~ "cambia cada 30 segundos y reconstruya una pequeña demostración en la que "
#~ "pueda cambiar la hora.{ph3}{ph4}{ph5}"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · API member"
#~ msgstr "tab_browser_view/precarga.js * Miembro API"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · IPC helper"
#~ msgstr "tab_browser_view/precarga.ayudante js * IPC"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · handler helper"
#~ msgstr "principal / índice.ayudante de manejador js * "

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · clipboard receiver"
#~ msgstr "principal / índice.js * receptor del portapapeles"

#~ msgctxt "page:first-investigation/index.html"
#~ msgid "main.js · lines 8–12"
#~ msgstr "principal.js * líneas 8-12"

#~ msgctxt "page:guides/browser/index.html"
#~ msgid "export.js · example source excerpt"
#~ msgstr "exportación.js * extracto de fuente de ejemplo"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "renderer.js · example source"
#~ msgstr "renderizador.js * fuente de ejemplo"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "preload.js · example source"
#~ msgstr "precarga.js * fuente de ejemplo"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "main.js · example source"
#~ msgstr "principal.js * fuente de ejemplo"

#~ msgctxt "page:index.html"
#~ msgid "REA · loaded index.js · selected lines"
#~ msgstr "REA * índice cargado.js * líneas seleccionadas"

#, 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}Uso REA para analizar / absolute / path / to / app y "
#~ "explicar cómo exporta datos. Muestre el código relevante y las ubicaciones "
#~ "de origen.{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}Instalar REA y conéctelo a este agente de codificación "
#~ "usando npx rea-agents @ última configuración. Muéstrame el plan de "
#~ "configuración para su aprobación y luego verifica la "
#~ "instalación.{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}Descargar https://rea.tools/examples/notes-example.zip en "
#~ "una nueva carpeta de ejemplo y descomprímala. Uso REA para saber qué sucede "
#~ "cuando hago clic en Exportar notas. Mostrar dónde notas.se escribe csv, qué "
#~ "campos contiene y los archivos y líneas relevantes.{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}Instalar REA y conéctelo a este agente de codificación "
#~ "usando npx rea-agents @ última configuración. Muéstrame el plan de "
#~ "configuración para su aprobación y luego verifica la "
#~ "instalación.{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}Instalar REA y conéctelo a este agente de codificación "
#~ "usando npx rea-agents @ última configuración. Muéstrame el plan de "
#~ "configuración para su aprobación y luego verifica la "
#~ "instalación.{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}Uso REA para inspeccionar https://rea.tools/. Clona este "
#~ "sitio web por mí.{ph3}{ph4}{ph5}"

#~ msgctxt "figure:ctf-mask-equation.svg"
#~ msgid "code[21] = 55"
#~ msgstr "código[21] = 55"

#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "0x00406400"
#~ msgstr "0x00406400"

#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "× pan_scale"
#~ msgstr "× escala panorámica"

#, python-brace-format
#~ msgctxt "shared"
#~ msgid "{ph0}REA{ph1}{ph2}Reverse Engineer Anything{ph3}"
#~ msgstr "{ph0}REA{ph1}{ph2}Ingeniería Inversa de Cualquier Cosa{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 ""
