rea/website/locales/ru/messages.po

13495 lines
577 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

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

#
msgid ""
msgstr ""
"Project-Id-Version: REA website\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Initial-Translation: Machine-assisted baseline; see website/locales/README.md for review workflow\n"
#: website/public/blog/index.html:99
msgctxt "page:blog/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/blog/index.html:181
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "{ph0}Home{ph1} / Blog"
msgstr "{ph0}Главная{ph1} страница / Блог"
#: website/public/blog/index.html:182
msgctxt "page:blog/index.html"
msgid "Blog."
msgstr "Блог."
#: website/public/blog/index.html:183
msgctxt "page:blog/index.html"
msgid "Thoughts on reverse engineering."
msgstr "Мысли о реверс-инжиниринге."
#. {ph0}: <br />
#: website/public/blog/index.html:187
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Game reconstruction{ph0}Essay"
msgstr "Реконструкция игры{ph0}Сочинение"
#: website/public/blog/index.html:189
msgctxt "page:blog/index.html"
msgid "The industrial revolution in reverse engineering"
msgstr "Промышленная революция в области реверс-инжиниринга"
#: website/public/blog/index.html:190
msgctxt "page:blog/index.html"
msgid ""
"What manual RE and reconstructing TH08, TH095 and TH04 taught me about "
"agents, verification and knowledge that compounds across projects."
msgstr ""
"Чему меня научило руководство по обновлению и реконструкции TH08, TH095 и "
"TH04 об агентах, проверке и знаниях, которые используются в разных проектах."
#: website/public/blog/index.html:195
msgctxt "page:blog/index.html"
msgid "Read the article"
msgstr "Прочтите статью"
#: website/public/blog/index.html:198
msgctxt "page:blog/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "Автор: N0zoM1z0 · 10 октября 2026"
#. {ph0}: <span aria-hidden="true">
#. {ph1}: </span>
#: website/public/blog/index.html:217
#: website/public/blog/touhou-reconstruction/index.html:1067
#: website/public/examples/dino-lab/index.html:462
#: website/public/faq/index.html:560
#: website/public/first-investigation/index.html:510
#: website/public/get-started/index.html:869
#: website/public/guides/browser/index.html:485
#: website/public/guides/index.html:269
#: website/public/guides/javascript/index.html:490
#: website/public/guides/native/index.html:496 website/public/index.html:1173
#: website/public/showcase/aegis/index.html:795
#: website/public/showcase/ctf/index.html:764
#: website/public/showcase/dx-ball/index.html:772
#: website/public/showcase/index.html:304
#: website/public/showcase/notion/index.html:618
#: website/public/showcase/th04/index.html:787
#, python-brace-format
msgctxt "shared"
msgid "{ph0}↑{ph1} Top"
msgstr "{ph0}↑{ph1} Топ"
#: website/public/blog/index.html:6
msgctxt "page:blog/index.html"
msgid "REA Blog — Thoughts on Reverse Engineering"
msgstr "Блог REA — Мысли о реверс-инжиниринге"
#: 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 ""
"Размышления о реверс-инжиниринге, основанные на практическом опыте работы с "
"REA и агентами искусственного интеллекта."
#: website/public/blog/index.html:75 website/public/blog/index.html:88
#: website/public/blog/touhou-reconstruction/index.html:75
#: website/public/blog/touhou-reconstruction/index.html:88
#: website/public/examples/dino-lab/index.html:75
#: website/public/examples/dino-lab/index.html:88
#: website/public/faq/index.html:75 website/public/faq/index.html:88
#: website/public/first-investigation/index.html:75
#: website/public/first-investigation/index.html:88
#: website/public/get-started/index.html:75
#: website/public/get-started/index.html:88
#: website/public/guides/browser/index.html:75
#: website/public/guides/browser/index.html:88
#: website/public/guides/index.html:75 website/public/guides/index.html:88
#: website/public/guides/javascript/index.html:75
#: website/public/guides/javascript/index.html:88
#: website/public/guides/native/index.html:75
#: website/public/guides/native/index.html:88 website/public/index.html:75
#: website/public/index.html:88 website/public/showcase/aegis/index.html:75
#: website/public/showcase/aegis/index.html:88
#: website/public/showcase/ctf/index.html:75
#: website/public/showcase/ctf/index.html:88
#: website/public/showcase/dx-ball/index.html:75
#: website/public/showcase/dx-ball/index.html:88
#: website/public/showcase/index.html:75 website/public/showcase/index.html:88
#: website/public/showcase/notion/index.html:75
#: website/public/showcase/notion/index.html:88
#: website/public/showcase/th04/index.html:75
#: website/public/showcase/th04/index.html:88
msgctxt "shared"
msgid ""
"REA — Find out how software works. Reverse engineering with your coding "
"agent."
msgstr ""
"REA — Узнайте, как работает программное обеспечение. Обратное проектирование"
" с помощью вашего программиста."
#: website/public/blog/index.html:104
#: website/public/blog/touhou-reconstruction/index.html:104
#: website/public/examples/dino-lab/index.html:105
#: website/public/faq/index.html:104
#: website/public/first-investigation/index.html:104
#: website/public/get-started/index.html:104
#: website/public/guides/browser/index.html:104
#: website/public/guides/index.html:104
#: website/public/guides/javascript/index.html:104
#: website/public/guides/native/index.html:104 website/public/index.html:106
#: website/public/showcase/aegis/index.html:105
#: website/public/showcase/ctf/index.html:104
#: website/public/showcase/dx-ball/index.html:104
#: website/public/showcase/index.html:104
#: website/public/showcase/notion/index.html:104
#: website/public/showcase/th04/index.html:104
msgctxt "shared"
msgid "REA home"
msgstr "Главная REA"
#: website/public/blog/index.html:108
#: website/public/blog/touhou-reconstruction/index.html:108
#: website/public/examples/dino-lab/index.html:109
#: website/public/faq/index.html:108
#: website/public/first-investigation/index.html:108
#: website/public/get-started/index.html:108
#: website/public/guides/browser/index.html:108
#: website/public/guides/index.html:108
#: website/public/guides/javascript/index.html:108
#: website/public/guides/native/index.html:108 website/public/index.html:110
#: website/public/showcase/aegis/index.html:109
#: website/public/showcase/ctf/index.html:108
#: website/public/showcase/dx-ball/index.html:108
#: website/public/showcase/index.html:108
#: website/public/showcase/notion/index.html:108
#: website/public/showcase/th04/index.html:108
msgctxt "shared"
msgid "Main navigation"
msgstr "Основная навигация"
#: website/public/blog/index.html:117
#: website/public/blog/touhou-reconstruction/index.html:117
#: website/public/examples/dino-lab/index.html:118
#: website/public/faq/index.html:117
#: website/public/first-investigation/index.html:117
#: website/public/get-started/index.html:117
#: website/public/guides/browser/index.html:117
#: website/public/guides/index.html:117
#: website/public/guides/javascript/index.html:117
#: website/public/guides/native/index.html:117 website/public/index.html:119
#: website/public/showcase/aegis/index.html:118
#: website/public/showcase/ctf/index.html:117
#: website/public/showcase/dx-ball/index.html:117
#: website/public/showcase/index.html:117
#: website/public/showcase/notion/index.html:117
#: website/public/showcase/th04/index.html:117
msgctxt "shared"
msgid "REA on GitHub"
msgstr "REA на GitHub"
#: website/public/blog/index.html:137
#: website/public/blog/touhou-reconstruction/index.html:137
#: website/public/examples/dino-lab/index.html:138
#: website/public/faq/index.html:137
#: website/public/first-investigation/index.html:137
#: website/public/get-started/index.html:137
#: website/public/guides/browser/index.html:137
#: website/public/guides/index.html:137
#: website/public/guides/javascript/index.html:137
#: website/public/guides/native/index.html:137 website/public/index.html:139
#: website/public/showcase/aegis/index.html:138
#: website/public/showcase/ctf/index.html:137
#: website/public/showcase/dx-ball/index.html:137
#: website/public/showcase/index.html:137
#: website/public/showcase/notion/index.html:137
#: website/public/showcase/th04/index.html:137
msgctxt "shared"
msgid "Join REA on Discord"
msgstr "Присоединиться к REA в Discord"
#: website/public/blog/index.html:156
#: website/public/blog/touhou-reconstruction/index.html:156
#: website/public/examples/dino-lab/index.html:157
#: website/public/faq/index.html:156
#: website/public/first-investigation/index.html:156
#: website/public/get-started/index.html:156
#: website/public/guides/browser/index.html:156
#: website/public/guides/index.html:156
#: website/public/guides/javascript/index.html:156
#: website/public/guides/native/index.html:156 website/public/index.html:158
#: website/public/showcase/aegis/index.html:157
#: website/public/showcase/ctf/index.html:156
#: website/public/showcase/dx-ball/index.html:156
#: website/public/showcase/index.html:156
#: website/public/showcase/notion/index.html:156
#: website/public/showcase/th04/index.html:156
msgctxt "shared"
msgid "Follow REA on X"
msgstr "Подписаться на REA в X"
#: website/public/blog/index.html:217
msgctxt "page:blog/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/blog/touhou-reconstruction/index.html:99
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:181
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Touhou reconstruction"
msgstr "{ph0}Главная{ph1} страница / {ph2}Блог{ph3} / Реконструкция Тохоу"
#: website/public/blog/touhou-reconstruction/index.html:185
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Essay · Touhou reconstruction"
msgstr "Эссе · Реконструкция Тохоу"
#: website/public/blog/touhou-reconstruction/index.html:186
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The industrial revolution in reverse engineering."
msgstr "Промышленная революция в области реверс-инжиниринга."
#: website/public/blog/touhou-reconstruction/index.html:187
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "Автор: N0zoM1z0 · 10 октября 2026"
#: website/public/blog/touhou-reconstruction/index.html:189
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Takeaway"
msgstr "Главное"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:191
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Give agents autonomy over the investigation.{ph1} Set a clear goal and "
"acceptance criteria, then let the agent decide what to try next."
msgstr ""
"{ph0}Предоставьте агентам самостоятельность в проведении расследования.{ph1}"
" Установите четкую цель и критерии приемлемости, а затем позвольте агенту "
"решить, что делать дальше."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:196
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Use the repository and Git as working memory.{ph1} Keep the reasoning "
"with the code. Git checkpoints let the next session continue after the "
"conversation ends."
msgstr ""
"{ph0}Используйте репозиторий и Git в качестве рабочей памяти.{ph1} "
"Сохраняйте логику в коде. Контрольные точки Git позволяют продолжить "
"следующий сеанс после завершения диалога."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:201
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Let evidence decide what you claim.{ph1} A confident explanation still "
"needs testing. “Unknown” is a valid answer when the evidence is incomplete."
msgstr ""
"{ph0}Позвольте доказательствам решить, что вы утверждаете.{ph1} Убедительное"
" объяснение все еще нуждается в проверке. “Неизвестно” - это правильный "
"ответ, когда доказательства неполны."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:206
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Test the oracle too.{ph1} Try cases it should reject. If it misses a "
"bug, revisit the earlier results that depended on it."
msgstr ""
"{ph0}Проверьте также ссылку для проверки (oracle).{ph1} Попробуйте варианты,"
" которые он должен отклонить. Если ошибка не обнаружена, просмотрите "
"предыдущие результаты, которые зависели от нее."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:211
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early days of RE's industrial revolution.{ph1} The "
"methods are still taking shape. There is plenty left to explore."
msgstr ""
"{ph0}Мы находимся на заре промышленной революции в RE.{ph1} Методы все еще "
"разрабатываются. Нам еще многое предстоит изучить."
#: website/public/blog/touhou-reconstruction/index.html:223
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "How experience compounds"
msgstr "Как опыт соединяет"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:224
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Human direction{ph1} · Goal and acceptance criteria"
msgstr "{ph0}Управление{ph1} персоналом · Цель и критерии приемлемости"
#: website/public/blog/touhou-reconstruction/index.html:312
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Autonomy"
msgstr "Самостоятельность"
#: website/public/blog/touhou-reconstruction/index.html:313
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Agent"
msgstr "Агент"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:314
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Choose an experiment.{ph0}Propose a hypothesis."
msgstr "Выберите эксперимент.{ph0}Выдвиньте гипотезу."
#: website/public/blog/touhou-reconstruction/index.html:317
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Verification"
msgstr "Проверка"
#: website/public/blog/touhou-reconstruction/index.html:318
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Oracle"
msgstr "Эталон проверки"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:319
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Test against a{ph0}concrete reference."
msgstr "Тестирование на{ph0}конкретные ссылки."
#: website/public/blog/touhou-reconstruction/index.html:322
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Repository"
msgstr "Репозиторий"
#: website/public/blog/touhou-reconstruction/index.html:323
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Working memory"
msgstr "Рабочая память"
#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:324
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Code, evidence,{ph0}checks and lessons."
msgstr "Кодекс, доказательства,{ph0}проверки и уроки."
#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:326
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Mismatch{ph0}{ph1}Revise the hypothesis{ph2}"
msgstr "Несоответствие{ph0}{ph1}Пересмотрите гипотезу{ph2}"
#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:329
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "A better{ph0}{ph1}starting point{ph2}"
msgstr "Лучше{ph0}{ph1}отправная точка{ph2}"
#: website/public/blog/touhou-reconstruction/index.html:332
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reuse"
msgstr "Повторное использование"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:333
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Pass{ph1} · Keep the result and its evidence"
msgstr "{ph0}Пройти{ph1} · Сохранить результат и его доказательства"
#: website/public/blog/touhou-reconstruction/index.html:345
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Each project leaves the next with a better starting point. That includes "
"fixing the checks when we discover a gap."
msgstr ""
"Каждый следующий проект становится лучшей отправной точкой. Это включает в "
"себя исправление проверок, когда мы обнаруживаем пробелы."
#: website/public/blog/touhou-reconstruction/index.html:352
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "In this article"
msgstr "В этой статье"
#. {ph0}: <a href="#august">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:354
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}August 2026{ph1}"
msgstr "{ph0}Август 2026 года{ph1}"
#. {ph0}: <a href="#th08">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:355
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH08: the continuation{ph1}"
msgstr "{ph0} TH08 : продолжение{ph1}"
#. {ph0}: <a href="#different-approaches">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:356
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Two approaches{ph1}"
msgstr "{ph0}Два подхода{ph1}"
#. {ph0}: <a href="#th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:357
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH095: compounding{ph1}"
msgstr "{ph0} TH095 : рецептура{ph1}"
#. {ph0}: <a href="#th04">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:358
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH04: across architectures{ph1}"
msgstr "{ph0} TH04 : различные архитектуры{ph1}"
#. {ph0}: <a href="#semantic-reconstruction">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:359
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}From exact to readable{ph1}"
msgstr "{ph0}От точного к удобочитаемому{ph1}"
#. {ph0}: <a href="#industrial-shift">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:362
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}The industrial shift{ph1}"
msgstr "{ph0}Промышленный сдвиг{ph1}"
#. {ph0}: <a href="#possibilities">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:363
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}What becomes possible{ph1}"
msgstr "{ph0}Что становится возможным{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:368
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What changed in August 2026"
msgstr "Что изменилось в августе 2026 года"
#: website/public/blog/touhou-reconstruction/index.html:369
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Before this work, I had done a lot of manual reverse engineering. I would "
"inspect a function until I had an explanation, then test that explanation "
"against the program. Getting further meant spending more of my own time on "
"the next function. It also meant keeping an increasingly large picture in my"
" head."
msgstr ""
"До этой работы я много занимался обратным проектированием вручную. Я "
"проверял функцию до тех пор, пока не находил объяснение, а затем тестировал "
"это объяснение в программе. Продвигаясь дальше, я тратил больше своего "
"времени на следующую функцию. Это также означало, что я держал в голове все "
"более объемную картину."
#: website/public/blog/touhou-reconstruction/index.html:376
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Most of my RE work is on games. I reconstruct them so their behavior can be "
"understood and eventually carried into a port or a mod. That is the "
"experience behind this article. The method can be useful elsewhere, but each"
" field needs to establish what it can check against a reliable reference."
msgstr ""
"Большая часть моей работы связана с играми. Я реконструирую их, чтобы можно "
"было понять их поведение и в конечном итоге перенести в программный порт или"
" мод. Именно этот опыт лежит в основе этой статьи. Этот метод может быть "
"полезен в других областях, но в каждой области необходимо установить, что "
"можно проверить с помощью надежных ссылок."
#: website/public/blog/touhou-reconstruction/index.html:383
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In August 2026, I started exploring agent-driven RE seriously. I wanted to "
"see how far an agent could get with access to the program and ordinary "
"development tools. Touhou reconstruction gave me a substantial project in "
"which to find out."
msgstr ""
"В августе 2026 года я начал серьезно изучать RE, управляемый агентами. Я "
"хотел посмотреть, как далеко может продвинуться агент, имея доступ к "
"программе и обычным инструментам разработки. Touhou reconstruction "
"предоставила мне значительный проект, в котором я мог это выяснить."
#: website/public/blog/touhou-reconstruction/index.html:389
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The early progress was startling. An investigation could keep moving without"
" me choosing every individual step. A failed comparison might send the agent"
" to another caller. It could write a small diagnostic and use the result to "
"decide what to try next. Giving it that freedom made a difference: I could "
"spend more attention on the project's direction and on whether its checks "
"were trustworthy."
msgstr ""
"Первые результаты были поразительными. Расследование могло бы продолжаться "
"без моего участия в выборе каждого отдельного шага. Неудачное сравнение "
"могло бы отправить агента к другому абоненту. Можно было бы написать "
"небольшую диагностику и использовать результат, чтобы решить, что делать "
"дальше. Предоставление этой свободы изменило ситуацию к лучшему: я смог "
"уделять больше внимания направлению проекта и тому, заслуживают ли доверия "
"его проверки."
#: website/public/blog/touhou-reconstruction/index.html:398
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace got my attention first. Then I began wondering what would survive "
"beyond the current project. Would the next game benefit from everything we "
"had just learned?"
msgstr ""
"В первую очередь мое внимание привлек темп. Затем я начал задумываться о "
"том, что останется после текущего проекта. Будет ли в следующей игре полезно"
" все, что мы только что узнали?"
#: website/public/blog/touhou-reconstruction/index.html:405
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH08: building on human work"
msgstr "TH08 : опора на человеческий труд"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th08">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/GensokyoClub/th08" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:406
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08{ph1}, Imperishable Night, began as a continuation of "
"{ph2}GensokyoClub's reconstruction{ph3}. Their public source gave me a "
"substantial foundation. It came with knowledge of the build and a history of"
" contributions that I preserved in the continuation."
msgstr ""
"{ph0} TH08{ph1} , \"Вечная ночь\", начинался как продолжение "
"{ph2}реконструкции{ph3} GensokyoClub. Их открытый источник дал мне "
"существенную основу. Это пришло вместе со знанием конструкции и историей "
"вклада, которую я сохранил в продолжении."
#: website/public/blog/touhou-reconstruction/index.html:415
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The imported history ends at the public 10 August checkpoint. My independent"
" continuation began on 13 August. By 19 August, the ledger recorded source "
"for all 1,107 identified game functions."
msgstr ""
"Импортированная история заканчивается на общедоступной контрольной точке 10 "
"августа. Мое самостоятельное продолжение началось 13 августа. К 19 августа в"
" журнале были зарегистрированы исходные данные для всех 1107 "
"идентифицированных игровых функций."
#: website/public/blog/touhou-reconstruction/index.html:420
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A playable Linux reconstruction port was committed on 24 August, roughly "
"eleven days after the continuation began. A Web edition followed. The native"
" Linux 64-bit release arrived on 30 August."
msgstr ""
"Играбельный порт реконструкции Linux был выпущен 24 августа, примерно через "
"одиннадцать дней после начала работы над продолжением. Затем была выпущена "
"веб-версия. 64-разрядная версия Linux для собственной версии вышла 30 "
"августа."
#: website/public/blog/touhou-reconstruction/index.html:425
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"What struck me was that the work had reached a program people could run. "
"Getting there required following problems beyond an individual function. "
"Even when two functions looked correct in isolation, they could accidentally"
" use separate copies of state that should have been shared."
msgstr ""
"Что меня поразило, так это то, что в результате работы была создана "
"программа, которую могли запускать люди. Чтобы достичь этого, потребовалось "
"решить проблемы, выходящие за рамки отдельной функции. Даже если две функции"
" выглядели корректно по отдельности, они могли случайно использовать "
"отдельные копии state, которые должны были быть общими."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:432
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This made reference checks central to the work. I call them "
"{ph0}oracles{ph1}. A code comparison can tell us whether a reconstructed "
"function reproduces the original instructions. A runtime check can tell us "
"whether an exercised route reaches the expected state. The agent proposes an"
" explanation and tests it; a mismatch gives it something specific to "
"investigate."
msgstr ""
"Это сделало проверку ссылок центральной в работе. Я называю их "
"{ph0}проверочными ссылками (оракулами){ph1}. Сравнение кода может сказать "
"нам, воспроизводит ли восстановленная функция исходные инструкции. Проверка "
"во время выполнения может сказать нам, достигает ли реализованный маршрут "
"ожидаемого состояния. Агент предлагает объяснение и проверяет его; "
"несоответствие дает ему возможность исследовать что-то конкретное."
#: website/public/blog/touhou-reconstruction/index.html:440
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "An exact match with the wrong constant"
msgstr "Точное совпадение с неправильной константой"
#: website/public/blog/touhou-reconstruction/index.html:441
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"An oracle is software someone wrote. TH08 gave me a clear reminder of how "
"much can depend on that software."
msgstr ""
"Ссылка для проверки (oracle) - это программное обеспечение, которое кто-то "
"написал. TH08 дал мне четкое напоминание о том, как много может зависеть от"
" этого программного обеспечения."
#. {ph0}: <code>0.0</code>
#. {ph1}: <code>128.0</code>
#: website/public/blog/touhou-reconstruction/index.html:445
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In September, a bug reported by a downstream Switch port led back to item "
"auto-collection. The reconstructed source checked player power against "
"{ph0}. The original used {ph1}, the maximum-power threshold."
msgstr ""
"В сентябре ошибка, о которой сообщил порт коммутатора, снова привела к "
"автоматическому сбору предметов. В восстановленном источнике мощность "
"проигрывателя была проверена на уровне {ph0}. В оригинале использовалось "
"значение {ph1} - порог максимальной мощности."
#: website/public/blog/touhou-reconstruction/index.html:451
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Normal power is non-negative, so the reconstructed power check was "
"effectively always satisfied. Above the collection line, the game could "
"attract items without requiring maximum power. The other exceptions in the "
"condition were correct. This one constant changed the behavior."
msgstr ""
"Нормальная мощность неотрицательна, поэтому проверка восстановленной "
"мощности фактически всегда выполнялась. Выше линии сбора игра могла "
"привлекать предметы, не требуя максимальной мощности. Другие исключения из "
"условия были верными. Эта константа изменила поведение."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:458
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Yet the function had already passed the exact comparison.{ph1}"
msgstr "{ph0}Тем не менее, функция уже прошла точное сравнение.{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:464
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A rebuild can put a constant at a different address. The comparison tool "
"accounted for that by adjusting addresses in the compiled instructions "
"before comparing them with the original. But it never checked the floating-"
"point value stored at the referenced address."
msgstr ""
"При перестроении константа может быть помещена по другому адресу. Инструмент"
" сравнения учитывал это, корректируя адреса в скомпилированных инструкциях "
"перед их сравнением с исходными. Но он никогда не проверял значение с "
"плавающей запятой, сохраненное по указанному адресу."
#. {ph0}: <code>128.0</code>
#. {ph1}: <code>0.0</code>
#: website/public/blog/touhou-reconstruction/index.html:471
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That left a hole in the check. It could point the reconstructed instruction "
"at the original's {ph0} while the source still said {ph1}. The instruction "
"bytes matched. The source meant something different."
msgstr ""
"Это оставило пробел в проверке. Это могло привести к тому, что "
"восстановленная команда указывала на исходное значение {ph0}, в то время как"
" в источнике по-прежнему указывалось {ph1}. Байты инструкции совпали. "
"Источник имел в виду что-то другое."
#. {ph0}: <a href="https://github.com/N0zoM1z0/th08/pull/11" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/th08/pull/13">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:477
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}2 September fix{ph1} corrected the source and made the comparison "
"check the referenced constant's actual bytes. A {ph2}wider audit{ph3} then "
"examined 1,548 floating-literal references. It found another twelve "
"incorrect references across five accepted functions."
msgstr ""
"Исправление, выпущенное {ph0}2 сентября, исправило{ph1} исходный код и "
"заставило при сравнении проверять фактические байты константы, на которую "
"ссылается ссылка. Затем был проведен более {ph2}широкий аудит{ph3}, в ходе "
"которого было проанализировано 1548 ссылок на константы с плавающей запятой."
" Было обнаружено еще двенадцать неправильных ссылок в пяти принятых "
"функциях."
#: website/public/blog/touhou-reconstruction/index.html:488
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The comparison now checks every such floating literal. Its tests include "
"deliberately wrong values to make sure they are rejected. We also had to "
"revisit results that had passed the weaker check."
msgstr ""
"При сравнении теперь проверяется каждая такая константа с плавающей запятой."
" В тестах используются заведомо неверные значения, чтобы убедиться, что они "
"отклонены. Нам также пришлось пересмотреть результаты, которые прошли более "
"слабую проверку."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:493
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The oracle needed reconstructing too.{ph1} Repairing it was part of "
"repairing the game."
msgstr ""
"{ph0}Ссылка для проверки (oracle) также нуждалась в восстановлении.{ph1} Ее "
"исправление было частью обновления игры."
#: website/public/blog/touhou-reconstruction/index.html:497
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That matters when the team is mostly one person working with agents. I "
"cannot personally inspect every line they produce, so much of my confidence "
"rests on their checks. A shared oracle's blind spot can affect many "
"investigations before I notice it. I have to understand what the checker "
"actually verifies and test it against cases that ought to fail."
msgstr ""
"Это важно, когда команда состоит в основном из одного человека, работающего "
"с агентами. Я не могу лично проверять каждую строку, которую они создают, "
"поэтому во многом я доверяю их проверкам. \"Слепое пятно\" в системе общего "
"контроля (oracle) может повлиять на многие расследования, прежде чем я его "
"замечу. Я должен понять, что на самом деле проверяет средство проверки, и "
"протестировать его на предмет случаев, которые должны завершиться неудачей."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:505
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"As the work continued, those checks became part of the repository. So did "
"the reasons for source changes and notes that let a later session pick up "
"where an earlier one stopped. {ph0}The repository was becoming the project's"
" working memory.{ph1}"
msgstr ""
"По мере продолжения работы эти проверки становились частью репозитория. Так "
"же как и причины изменений исходного кода и примечания, которые позволяли "
"более позднему сеансу продолжить работу с того места, на котором "
"остановилась предыдущая сессия. {ph0}Репозиторий исходного кода становился "
"рабочей памятью проекта.{ph1}"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:514
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}A successful batch gave us both recovered code and a better environment"
" for the next batch.{ph1}"
msgstr ""
"{ph0}Успешный запуск пакета позволил нам восстановить код и улучшить среду "
"для следующего пакета.{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:522
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Two different ideas of reconstruction"
msgstr "Две разные идеи реконструкции"
#. {ph0}: <a
#. href="https://web.archive.org/web/20260909051514/https://github.com/GensokyoClub/th08#important-
#. notice" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:523
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"GensokyoClub's {ph0}public README{ph1} makes its disagreement with this kind"
" of work explicit. The notice announces that further development will happen"
" privately until completion. One passage reads:"
msgstr ""
"{ph0}Публичный сайт GensokyoClub явно выражает{ph1} свое несогласие с такого"
" рода работой. В уведомлении сообщается, что дальнейшая разработка будет "
"вестись в частном порядке до завершения. В одном отрывке говорится:"
#: website/public/blog/touhou-reconstruction/index.html:534
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The rise of grifters (AI decompilations and ports) in this space taking from"
" our work paints a bad image for future decompilation efforts…"
msgstr ""
"Рост числа мошенников (декомпиляторов и портаторов искусственного "
"интеллекта) в этой области, основанный на нашей работе, создает плохую "
"картину для будущих усилий по декомпиляции…"
#: website/public/blog/touhou-reconstruction/index.html:540
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The notice also describes the psychological toll on the maintainers. Their "
"contribution policy excludes pull requests produced primarily with AI. They "
"have put their free time into difficult work, and that work helped make my "
"continuation possible. I respect the effort behind it. The disagreement I "
"want to discuss is about how reconstruction should proceed and how a "
"contribution should be judged."
msgstr ""
"В уведомлении также описывается психологическая нагрузка на сопровождающих. "
"Их политика в отношении вкладов исключает запросы на перенос, сделанные в "
"основном с помощью искусственного интеллекта. Они посвятили свое свободное "
"время сложной работе, и эта работа помогла мне продолжить работу. Я уважаю "
"усилия, которые стоят за этим. Разногласия, которые я хочу обсудить, "
"касаются того, как должна проходить реконструкция и как следует оценивать "
"вклад."
#: website/public/blog/touhou-reconstruction/index.html:549
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In the manual workflow I knew, developing an understanding of a function and"
" reconstructing it usually fell to the same person. A project relied heavily"
" on that person's expertise. Trust in the contributor mattered because so "
"much of the reasoning happened while they worked."
msgstr ""
"В привычном мне ручном рабочем процессе разработка понимания функции и ее "
"реконструкция обычно возлагались на одного и того же человека. Проект в "
"значительной степени зависел от опыта этого человека. Доверие к разработчику"
" имело значение, потому что большая часть рассуждений возникала во время его"
" работы."
#: website/public/blog/touhou-reconstruction/index.html:556
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Existing projects already preserve knowledge in their source and build "
"tools. What changed for me was that an agent could use that knowledge to "
"pursue the next investigation on its own."
msgstr ""
"Существующие проекты уже сохраняют знания в своих исходных текстах и "
"инструментах для создания. Что изменилось для меня, так это то, что агент "
"может использовать эти знания для проведения следующего расследования "
"самостоятельно."
#: website/public/blog/touhou-reconstruction/index.html:561
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In my continuation, I decide the objective and the standard for accepting a "
"result. The agent has broad freedom to investigate. Its proposed "
"reconstruction then has to survive the relevant checks. I want another "
"person to be able to examine why we chose an implementation, even if an "
"agent did most of the work."
msgstr ""
"В своем продолжении я определяю цель и стандарт принятия результата. У "
"агента есть широкая свобода в проведении расследования. Затем предлагаемая "
"реконструкция должна пройти соответствующие проверки. Я хочу, чтобы другой "
"человек мог проанализировать, почему мы выбрали ту или иную реализацию, даже"
" если большую часть работы выполнил агент."
#: website/public/blog/touhou-reconstruction/index.html:568
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This can be a difficult transition. Years of careful work may become the "
"foundation for a continuation that moves much faster. That raises real "
"questions about credit. It also changes what maintainers need to know before"
" accepting a contribution."
msgstr ""
"Это может быть трудным переходом. Годы тщательной работы могут стать основой"
" для дальнейшего развития, которое будет продвигаться гораздо быстрее. В "
"связи с этим возникают серьезные вопросы о кредитоспособности. Это также "
"меняет то, что необходимо знать разработчикам, прежде чем принимать вклад."
#: website/public/blog/touhou-reconstruction/index.html:574
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy helps me think about this. In a craft, much of the "
"process depends on the skill of the person carrying it out. Machinery "
"changes where that skill is needed. Someone still has to design the process "
"and recognize when its output is wrong. Different communities can choose how"
" much of that change they want to take on."
msgstr ""
"Аналогия с промышленностью помогает мне задуматься над этим. В ремесле "
"большая часть процесса зависит от мастерства человека, который его "
"выполняет. Оборудование меняется там, где требуется этот навык. Кто-то все "
"равно должен разрабатывать процесс и распознавать, когда его результаты "
"неверны. Различные сообщества могут выбирать, какую часть этих изменений они"
" хотят взять на себя."
#: website/public/blog/touhou-reconstruction/index.html:582
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"My choice is to continue openly, with the inherited work credited and its "
"history preserved. I want the new work to be reviewable. That gives us a way"
" to ask how far this approach can go and to learn from what goes wrong along"
" the way."
msgstr ""
"Мой выбор - продолжать открыто, с учетом унаследованной работы и сохранением"
" ее истории. Я хочу, чтобы новая работа была доступна для рецензирования. "
"Это дает нам возможность оценить, насколько далеко может зайти этот подход, "
"и извлечь уроки из того, что на этом пути идет не так."
#. {ph0}: <a
#. href="https://github.com/GensokyoClub/th08/blob/e874b98e210b3be1ed21c5e03d54b883eac5069c/README.md#important-
#. notice" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/GensokyoClub/th08/blob/f345c7dee07b849f2ff93a0029ab5ede126bf12c/CODE_OF_CONDUCT.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/README.md#credits-
#. and-provenance" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:588
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Source: GensokyoClub's {ph0}README notice{ph1}, checked on 10 October 2026, "
"and its {ph2}contribution policy{ph3}. The quotation is a shortened excerpt."
" TH08's {ph4}credits and provenance{ph5} record the continuation boundary."
msgstr ""
"Источник: {ph0}Уведомление GensokyoClub на README{ph1}, проверенное 10 "
"октября 2026 года, и его {ph2}политика в отношении взносов{ph3}. Цитата "
"является сокращенной выдержкой. {ph4}Титры и происхождение{ph5} TH08 "
"указывают на границу продолжения."
#: website/public/blog/touhou-reconstruction/index.html:606
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH095: experience starts compounding"
msgstr "TH095 : опыт начинает накапливаться"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:607
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095{ph1}, Shoot the Bullet, made the value of that experience much "
"easier to see. Its repository began on 29 August with zero confirmed game "
"functions in the ledger. We still had to learn the game. But we already knew"
" much more about how to begin a reconstruction and how to keep it moving."
msgstr ""
"{ph0} TH095{ph1}, Shoot the Bullet, значительно упростил восприятие этого "
"опыта. 29 августа началось его обновление с нулевыми подтвержденными "
"игровыми функциями в реестре. Нам все еще предстояло изучить игру. Но мы уже"
" знали гораздо больше о том, как начать реконструкцию и как поддерживать ее "
"в рабочем состоянии."
#: website/public/blog/touhou-reconstruction/index.html:615
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"By 7 September, all 697 identified game functions had source. By 8 "
"September, 696 had been accepted as exact comparisons. The whole program "
"linked on 9 September. The Windows i386 reconstruction was marked playable "
"on 10 September, about twelve days after initialization."
msgstr ""
"К 7 сентября все 697 идентифицированных игровых функций имели исходный код. "
"К 8 сентября 696 были приняты в качестве точных сравнений. 9 сентября вся "
"программа была подключена. Реконструкция Windows i386 была отмечена как "
"играбельная 10 сентября, примерно через двенадцать дней после инициализации."
#: website/public/blog/touhou-reconstruction/index.html:622
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I found this more exciting than the first project's speed. A fresh target "
"could benefit from work done on another game. The experience was already "
"present in the tools and in the way the project was organized."
msgstr ""
"Я нашел это более захватывающим, чем скорость первого проекта. Новая цель "
"могла бы извлечь выгоду из работы над другой игрой. Опыт уже присутствовал в"
" инструментах и в том, как был организован проект."
#: website/public/blog/touhou-reconstruction/index.html:628
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For example, TH08 had taught us to pay attention to the assembled program "
"early. If several recovered functions depend on the same state, their "
"isolated comparisons leave an important question open. We need to see them "
"working together. That lesson helped shape how we approached TH095's whole-"
"program build."
msgstr ""
"Например, TH08 научил нас обращать внимание на собранную программу с самого "
"начала. Если несколько восстановленных функций зависят от одного и того же "
"состояния, их изолированное сравнение оставляет открытым важный вопрос. Нам "
"нужно увидеть, как они работают вместе. Этот урок помог нам сформулировать "
"подход к построению всей программы TH095."
#: website/public/blog/touhou-reconstruction/index.html:635
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A lesson that stays in my head is useful while I am there. Once it becomes a"
" check that another session can run, it can keep helping after I have moved "
"on. The next agent can use the result without repeating the investigation "
"that led to it."
msgstr ""
"Урок, который остается у меня в голове, полезен, пока я там нахожусь. Как "
"только он становится проверкой, что можно запустить другой сеанс, он может "
"продолжать помогать и после того, как я перейду дальше. Следующий агент "
"может использовать результат, не повторяя расследование, которое привело к "
"нему."
#: website/public/blog/touhou-reconstruction/index.html:641
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The floating-literal bug belongs in that memory too. It explains why "
"checking a reference also requires checking the data behind it. Keeping that"
" correction with the code helps later projects avoid inheriting the old "
"check's blind spot."
msgstr ""
"Ошибка, связанная с константой с плавающей запятой, также относится к этой "
"памяти. Это объясняет, почему проверка ссылки также требует проверки данных,"
" которые за ней стоят. Сохранение этого исправления в коде помогает "
"последующим проектам избежать \"слепого пятна\" старой проверки."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:647
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The method becomes part of the starting material for the next "
"game.{ph1} We can spend more of the next project's effort on what is "
"actually new about its target."
msgstr ""
"{ph0}Этот метод становится частью исходного материала для следующей "
"игры.{ph1} В следующем проекте мы можем потратить больше усилий на то, чтобы"
" внести что-то действительно новое в его цель."
#: website/public/blog/touhou-reconstruction/index.html:655
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The same benefit is available to people joining later. They can inspect a "
"decision and rerun its check before continuing the work. They do not have to"
" reconstruct the entire project's history to find out why the source looks "
"the way it does."
msgstr ""
"Те же преимущества доступны для тех, кто присоединится позже. Они могут "
"просмотреть решение и повторно выполнить его проверку, прежде чем продолжить"
" работу. Им не нужно восстанавливать всю историю проекта, чтобы выяснить, "
"почему исходный код выглядит именно так."
#: website/public/blog/touhou-reconstruction/index.html:663
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH04: the workflow survives a different architecture"
msgstr ""
"TH04 : рабочий процесс функционирует в соответствии с другой архитектурой"
#. {ph0}: <a href="https://github.com/N0zoM1z0/th04">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/nmlgc/ReC98">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:664
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04{ph1}, Lotus Land Story, took this work into the PC-98 DOS era. The"
" target was now a 16-bit environment with four cooperating programs. "
"Understanding its hardware behavior required different evidence from the "
"Windows games. Existing {ph2}ReC98 work{ph3} gave us valuable knowledge and "
"source material here too."
msgstr ""
"{ph0} TH04{ph1}, разработчик Lotus Land Story, перенес эту работу в эпоху "
"PC-98 для DOS. Теперь целью была 16-разрядная среда с четырьмя "
"взаимодействующими программами. Для понимания поведения аппаратного "
"обеспечения требовались другие данные, полученные из игр Windows. "
"Существующая {ph2}работа{ph3} по ReC98 также дала нам ценные знания и "
"исходные материалы."
#: website/public/blog/touhou-reconstruction/index.html:673
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The DOS reconstruction is now working. In my manual testing, I played "
"complete Normal routes through their endings and checked saves. The current "
"work is a native 64-bit port. Establishing a working DOS version first gives"
" that port a reference."
msgstr ""
"Восстановление DOS теперь работает. В ходе моего ручного тестирования я "
"воспроизвел все обычные маршруты до их окончаний и проверил сохранения. В "
"настоящее время используется собственный 64-разрядный порт. При установке "
"рабочей версии DOS сначала указывается ссылка на этот порт."
#: website/public/blog/touhou-reconstruction/index.html:679
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The architecture changed what we needed to investigate. It also changed the "
"compiler and runtime against which we checked our work. But the agent could "
"still follow a question through to a result and let that result guide the "
"next experiment."
msgstr ""
"Архитектура изменила то, что нам нужно было исследовать. Это также изменило "
"компилятор и среду выполнения, с помощью которых мы проверяли нашу работу. "
"Но агент по-прежнему мог довести вопрос до результата и использовать этот "
"результат для следующего эксперимента."
#: website/public/blog/touhou-reconstruction/index.html:685
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Consider the transition from gameplay to an ending. We need to know what "
"state carries across that boundary and which program is responsible for it. "
"That is something we can investigate against the DOS product. Once the "
"evidence and checks are available, an agent can work through the question "
"much as it did on a Windows title."
msgstr ""
"Рассмотрим переход от игрового процесса к завершению. Нам нужно знать, какое"
" состояние переходит через эту границу и какая программа за это отвечает. "
"Это то, что мы можем исследовать на примере продукта DOS. Как только "
"доказательства и чеки будут доступны, агент сможет проработать вопрос во "
"многом так же, как это было с заголовком Windows."
#: website/public/blog/touhou-reconstruction/index.html:693
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This is why TH04 matters to the argument. A substantial platform change did "
"not force us to start over with a new way of working. The architecture "
"defined the problem; the workflow still gave us a way to solve it."
msgstr ""
"Вот почему TH04 важен для нашего аргумента. Существенное изменение платформы"
" не заставило нас начать все сначала с нового способа работы. Архитектура "
"определила проблему; рабочий процесс по-прежнему давал нам возможность ее "
"решить."
#: website/public/blog/touhou-reconstruction/index.html:699
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For the 64-bit port, we can now examine the new implementation against "
"behavior already recovered on DOS. The knowledge from reconstruction gives "
"the port something to build on."
msgstr ""
"Что касается 64-разрядного порта, то теперь мы можем сравнить новую "
"реализацию с поведением, уже восстановленным в DOS. Знания, полученные в "
"результате реконструкции, дают порту основу для дальнейшего развития."
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/th04/tree/port/modern-64" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:704
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Project state as of 10 October 2026: {ph0}DOS reconstruction and manual "
"testing{ph1} · {ph2}64-bit port{ph3}. The port remains in development."
msgstr ""
"Состояние проекта на 10 октября 2026 года: {ph0}реконструкция DOS и ручное "
"тестирование{ph1} · {ph2}64-разрядный порт{ph3}. Порт находится в "
"разработке."
#: website/public/blog/touhou-reconstruction/index.html:717
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "From exact code to readable code"
msgstr "От точного кода к читаемому коду"
#: website/public/blog/touhou-reconstruction/index.html:718
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Once a reconstruction works, I want someone else to be able to understand "
"it."
msgstr ""
"Как только реконструкция завершится, я хочу, чтобы кто-то еще смог это "
"понять."
#: website/public/blog/touhou-reconstruction/index.html:722
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"To me, assembly and raw offsets can feel like old friends. I realise this is"
" a slightly unusual definition of “readable.” Most people would prefer to "
"follow the game's logic without keeping the executable's memory layout in "
"their head."
msgstr ""
"Для меня ассемблер и необработанные смещения кажутся старыми друзьями. Я "
"понимаю, что это несколько необычное определение слова “читаемый”. "
"Большинство людей предпочли бы следовать логике игры, не держа в голове "
"расположение исполняемого файла в памяти."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:728
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is where {ph0}semantic reconstruction{ph1} comes in. A recovered field "
"may still be known mainly by its offset. We follow how the game uses it "
"until we can explain its role. Then we can give it a meaningful name and a "
"type that fits the evidence. We keep the reasoning with the source so the "
"next person can see where that interpretation came from."
msgstr ""
"Именно здесь требуется {ph0}семантическая реконструкция{ph1}. "
"Восстановленное поле все еще может быть известно в основном по его смещению."
" Мы следим за тем, как оно используется в игре, пока не сможем объяснить его"
" роль. Затем мы можем дать ему осмысленное название и тип, который "
"соответствует доказательствам. Мы приводим доводы в соответствии с "
"источником, чтобы следующий человек мог понять, откуда взялась эта "
"интерпретация."
#: website/public/blog/touhou-reconstruction/index.html:736
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This becomes especially important for a port. An absolute address tells me "
"where something lived in the old executable. It gives a 64-bit "
"implementation little help in deciding which object should own that state. "
"To move the behavior safely, we need to recover the relationship behind the "
"old memory access."
msgstr ""
"Это становится особенно важным для программного порта. Абсолютный адрес "
"указывает мне, где что-то находилось в старом исполняемом файле. Это мало "
"помогает 64-разрядной реализации решить, какому объекту должно принадлежать "
"это состояние. Чтобы безопасно изменить поведение, нам нужно восстановить "
"связь, стоящую за старым доступом к памяти."
#: website/public/blog/touhou-reconstruction/index.html:743
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The order I now use is:"
msgstr "Порядок, который я сейчас использую, таков:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:745
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Recover an exact baseline.{ph1} Compile the reconstructed pieces with "
"the historical compiler. Compare the relevant code and data with the "
"original executable. Record unresolved differences so the next phase has a "
"clear starting point."
msgstr ""
"{ph0}Восстановите точную базовую линию.{ph1} Скомпилируйте восстановленные "
"фрагменты с помощью исторического компилятора. Сравните соответствующий код "
"и данные с исходным исполняемым файлом. Запишите неразрешенные различия, "
"чтобы у следующего этапа была четкая отправная точка."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:752
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Build and play it on the original platform.{ph1} Link those pieces into"
" the real program using the original architecture and compiler. Exercise "
"important gameplay paths. This is where we can find problems with shared "
"state or initialization that an isolated function comparison missed."
msgstr ""
"{ph0}Создайте и играйте в нее на оригинальной платформе.{ph1} Объедините эти"
" фрагменты в реальную программу, используя оригинальную архитектуру и "
"компилятор. Используйте важные элементы геймплея. Именно здесь мы можем "
"обнаружить проблемы с общим состоянием или инициализацией, которые были "
"пропущены при сравнении изолированных функций."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:759
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Reconstruct the semantics against both references.{ph1} Take one "
"coherent part of the game at a time and establish what its recovered source "
"means. Improve its representation while preserving the exact comparisons and"
" the playable historical build."
msgstr ""
"{ph0}Реконструируйте семантику в соответствии с обеими ссылками.{ph1} "
"Выделите одну связную часть игры за раз и выясните, что означает "
"восстановленный источник. Улучшите ее представление, сохранив точные "
"сравнения и воспроизводимую историческую структуру."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:768
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Make the modern port.{ph1} Move the established behavior into the new "
"environment, such as a native 64-bit build. The reconstructed original-"
"platform game remains a reference for comparing how the port behaves."
msgstr ""
"{ph0}Создайте современный порт.{ph1} Перенесите устоявшееся поведение в "
"новую среду, например, в собственную 64-разрядную сборку. Реконструированная"
" игра на оригинальной платформе остается эталоном для сравнения поведения "
"порта."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:775
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The playable build from the second stage becomes a {ph0}second oracle{ph1} "
"during the third. The first oracle checks whether our changed source still "
"reproduces the relevant original code and data. The second checks that the "
"reconstructed program still builds and behaves correctly along the paths we "
"exercise."
msgstr ""
"Воспроизводимая сборка, полученная на втором этапе, становится {ph0}второй "
"ссылкой для проверки (oracle){ph1} на третьем этапе. Первая ссылка для "
"проверки (oracle) проверяет, по-прежнему ли наш измененный исходный код "
"воспроизводит соответствующий исходный код и данные. Второй проверяет, что "
"восстановленная программа по-прежнему строит и ведет себя корректно в "
"соответствии с выбранными нами путями."
#: website/public/blog/touhou-reconstruction/index.html:783
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"They catch different mistakes. A type change can alter the generated "
"instructions. An ownership change can leave two parts of the game using "
"different copies of state. Keeping both checks available gives the agent a "
"concrete failure to investigate before carrying a refactor further."
msgstr ""
"Они выявляют различные ошибки. Изменение типа может привести к изменению "
"сгенерированных инструкций. Смена владельца может привести к тому, что две "
"части игры будут использовать разные копии state. Если обе проверки будут "
"доступны, агенту не удастся провести расследование, прежде чем проводить "
"дальнейший рефакторинг."
#: website/public/blog/touhou-reconstruction/index.html:790
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A name needs evidence of its own. An exact comparison cannot tell us whether"
" a field really means “invulnerability time.” We have to establish that from"
" how the game writes and uses it. If the meaning remains uncertain, a "
"neutral name is more helpful to the next reader than a confident guess."
msgstr ""
"Название само по себе требует подтверждения. Точное сравнение не может "
"сказать нам, действительно ли поле означает “время неуязвимости”. Мы должны "
"установить это по тому, как игра его записывает и использует. Если значение "
"остается неопределенным, нейтральное название будет более полезным для "
"следующего читателя, чем уверенное предположение."
#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:797
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"We learned this order through the projects. TH08 already had playable ports "
"before some of its later historical-platform audits. That made certain "
"defects harder to see. The {ph0}Factory's current workflow{ph1} puts the "
"original-platform build first, so semantic work can use it as a reference "
"before porting begins."
msgstr ""
"Мы изучили этот порядок в ходе работы над проектами. У TH08 уже были "
"доступные для воспроизведения порты до некоторых более поздних проверок "
"исторических платформ. Это затрудняло выявление некоторых дефектов. "
"{ph0}Текущий рабочий процесс фабрики{ph1} ставит сборку исходной платформы "
"на первое место, поэтому semantic work может использовать ее в качестве "
"справочного материала перед началом переноса."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:808
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Exact reconstruction gives us a reference. Semantic reconstruction "
"makes the recovered knowledge usable.{ph1} A port can then build on both."
msgstr ""
"{ph0}Точная реконструкция дает нам ссылку. Семантическая реконструкция "
"позволяет использовать восстановленные знания.{ph1} Затем порт может "
"использовать и то, и другое."
#: website/public/blog/touhou-reconstruction/index.html:817
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What makes this an industrial shift"
msgstr "Что делает это промышленным сдвигом"
#: website/public/blog/touhou-reconstruction/index.html:818
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"These projects changed where I spent my attention. Once agents could carry "
"much of an investigation forward, improving their working environment became"
" one of the most useful things I could do. A better tool could help with "
"every later function that needed it."
msgstr ""
"Эти проекты изменили направление моего внимания. Как только агенты получили "
"возможность проводить большую часть расследований, улучшение их рабочей "
"среды стало одной из самых полезных вещей, которые я мог сделать. Более "
"совершенный инструмент мог бы помочь в любой последующей работе, которая в "
"нем нуждалась."
#: website/public/blog/touhou-reconstruction/index.html:825
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Autonomy matters here. The useful next step often becomes clear only after a"
" failed experiment. An agent needs enough freedom to follow that result "
"somewhere unexpected. If it has to wait for me to prescribe each step, much "
"of the work remains tied to my attention."
msgstr ""
"Здесь важна самостоятельность. Полезный следующий шаг часто становится "
"понятен только после неудачного эксперимента. Агенту нужна достаточная "
"свобода, чтобы добиться результата в неожиданном месте. Если ему приходится "
"ждать, пока я назначу каждый шаг, большая часть работы остается в моем "
"распоряжении."
#: website/public/blog/touhou-reconstruction/index.html:832
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I expect the agent to make wrong hypotheses. What matters is whether we can "
"test them and learn from the result. A failed check should help it "
"understand the mistake well enough to try again. I still have to decide "
"whether the accumulated evidence supports a project milestone."
msgstr ""
"Я ожидаю, что агент выдвинет неверные гипотезы. Важно то, сможем ли мы "
"проверить их и извлечь уроки из результата. Неудачная проверка должна помочь"
" ему понять ошибку достаточно хорошо, чтобы повторить попытку. Мне все еще "
"нужно решить, соответствуют ли собранные данные этапу проекта."
#: website/public/blog/touhou-reconstruction/index.html:839
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"REA gives the agent access to analysis tools. A question about a function's "
"caller can lead straight into inspecting that caller. The reconstruction "
"project supplies the compiler and its own reference checks. The agent can "
"use those to test the source it proposes and see where its explanation holds"
" up."
msgstr ""
"REA предоставляет агенту доступ к инструментам анализа. Вопрос о вызывающем "
"объекте функции может привести непосредственно к проверке этого вызывающего "
"объекта. Проект реконструкции предоставляет компилятор и свои собственные "
"проверки ссылок. Агент может использовать их, чтобы протестировать "
"предлагаемый им источник и посмотреть, соответствует ли его объяснение "
"действительности."
#: website/public/blog/touhou-reconstruction/index.html:846
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The TH08 bug shows why those checks deserve engineering attention of their "
"own. When the same comparison is used across hundreds of functions, a gap in"
" it can spread much further than a mistake in one implementation. Testing "
"the checker improves the feedback available to all that later work."
msgstr ""
"Ошибка TH08 показывает, почему эти проверки сами по себе заслуживают "
"внимания инженеров. Когда одно и то же сравнение используется в сотнях "
"функций, пробел в нем может распространиться гораздо дальше, чем ошибка в "
"одной реализации. Тестирование средства проверки улучшает обратную связь, "
"доступную для всей последующей работы."
#. {ph0}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:853
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy has a useful historical example here. Boulton and "
"Watt introduced a {ph0}steam-engine indicator in 1796{ph1} to help adjust "
"engine valves. A recording version traced pressure through the piston "
"stroke. It made the engine's internal behavior available for inspection. Our"
" comparison tools serve a similar purpose: they let us examine what the "
"machinery is doing while we improve it."
msgstr ""
"Промышленная аналогия имеет здесь полезный исторический пример. {ph0}В 1796 "
"году Боултон и Уатт представили индикатор для паровой машины, который "
"помогал регулировать клапаны двигателя{ph1}. Версия для записи давления "
"отслеживала ход поршня. Это сделало доступным для контроля внутреннее "
"состояние двигателя. Наши инструменты сравнения служат той же цели: они "
"позволяют нам изучать, что делает оборудование, и одновременно "
"совершенствовать его."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:866
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early stages of this industrial shift.{ph1} Much of the "
"infrastructure is still immature. Agents can move faster than our checks "
"were designed to support, so the process has to develop alongside them. When"
" we find a defect in a shared tool, we have to repair it and revisit the "
"results it affected. The next project can then inherit a stronger tool."
msgstr ""
"{ph0}Мы находимся на ранней стадии этого промышленного сдвига.{ph1} Большая "
"часть инфраструктуры все еще находится в стадии разработки. Агенты могут "
"работать быстрее, чем это предусмотрено нашими чеками, поэтому процесс "
"должен развиваться параллельно с ними. Когда мы обнаруживаем дефект в общем "
"инструменте, мы должны устранить его и пересмотреть результаты, на которые "
"он повлиял. Следующий проект может унаследовать более мощный инструмент."
#: website/public/blog/touhou-reconstruction/index.html:876
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"There is also a practical limit to any one conversation. It will end before "
"a large reconstruction is finished. The repository has to make it possible "
"for another session to continue without losing the reason for the last "
"decision."
msgstr ""
"Также существует практический предел для любого отдельного диалога. Он "
"завершится до завершения масштабной реконструкции. Хранилище исходного кода "
"должно обеспечивать возможность продолжения следующего сеанса без потери "
"причины, по которой было принято последнее решение."
#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-factory"
#. >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:882
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}Touhou Reconstruction Factory{ph1} grew out of that need. It gives "
"projects a shared way to carry their checks and lessons forward. Work on one"
" game can improve the starting conditions for another."
msgstr ""
"Проект {ph0}Touhou Reconstruction Factory{ph1} вырос из этой потребности. Он"
" дает проектам возможность совместно проводить проверки и извлекать уроки. "
"Работа над одной игрой может улучшить стартовые условия для другой."
#: website/public/blog/touhou-reconstruction/index.html:892
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is what makes the industrial analogy meaningful to me. Experience "
"starts becoming part of tools that others can use. Improving those tools "
"changes how much the next person—or the next agent—can get done."
msgstr ""
"Именно это делает аналогию с промышленностью значимой для меня. Опыт "
"становится частью инструментов, которые могут использовать другие. "
"Совершенствование этих инструментов влияет на то, как много может сделать "
"следующий человек — или следующий агент."
#: website/public/blog/touhou-reconstruction/index.html:900
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The projects we can now consider"
msgstr "Проекты, которые мы теперь можем рассмотреть"
#: website/public/blog/touhou-reconstruction/index.html:901
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace matters because it changes the decision to begin. A game could be "
"fascinating to reverse engineer and still demand more of my own attention "
"than I could realistically give it. Many projects would stay ideas."
msgstr ""
"Темп важен, потому что он меняет решение о начале работы. Игра может быть "
"увлекательной для реинжиниринга и все равно требовать от меня больше "
"внимания, чем я мог бы ей уделить. Многие проекты так и останутся идеями."
#: website/public/blog/touhou-reconstruction/index.html:907
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Now I can see a way to keep such a project moving through repeated "
"investigations. Getting a working reconstruction makes a port more "
"practical. Recovering readable semantics makes it easier for someone else to"
" explore a mod. The effort put into understanding the game can keep paying "
"off after the first version runs."
msgstr ""
"Теперь я вижу способ продвинуть такой проект с помощью повторных "
"исследований. Получение работающей реконструкции делает порт программного "
"обеспечения более практичным. Восстановление читаемой семантики облегчает "
"кому-то еще изучение мода. Усилия, затраченные на понимание игры, могут "
"окупиться после запуска первой версии."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:914
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I now look at an unfamiliar program and ask: {ph0}what access, feedback and "
"accumulated knowledge would let an agent work on this reliably?{ph1}"
msgstr ""
"Теперь я смотрю на незнакомую программу и спрашиваю: {ph0}какой доступ, "
"обратная связь и накопленные знания позволили бы агенту надежно работать с "
"ней?{ph1}"
#: website/public/blog/touhou-reconstruction/index.html:921
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That question makes me consider projects I would previously have left alone."
" Each one can improve the way we approach the next. I want to keep exploring"
" how far that can take us."
msgstr ""
"Этот вопрос заставляет меня задуматься о проектах, которые я раньше оставил "
"бы в покое. Каждый из них может улучшить наш подход к следующему. Я хочу "
"продолжать изучать, как далеко это может нас завести."
#: website/public/blog/touhou-reconstruction/index.html:929
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Project milestones and sources"
msgstr "Основные этапы и источники реализации проекта"
#: website/public/blog/touhou-reconstruction/index.html:930
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The dates describe recorded project checkpoints, checked against public "
"GitHub history on 10 October 2026. Elapsed time is calendar time between "
"commits. Source presence, exact comparisons, a build and a runtime result "
"each name a different milestone."
msgstr ""
"Даты описывают зарегистрированные контрольные точки проекта, сверенные с "
"общедоступной историей GitHub на 10 октября 2026 года. Прошедшее время - это"
" календарное время между фиксациями. Наличие исходного кода, точные "
"сравнения, сборка и результат выполнения - все это указывает на разные "
"этапы."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/001bf3e9c91cc35b79c7a0e36b3565b86f494362"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/15caba73df6735fc44eac4783bc61b8d098ea830/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/da07b21c8cb63230142b0a66228d6aac66555f3f"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/529eb1a3afa05ae36467731eaccb12e3e50e132f"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th08/releases/tag/v0.2.0-linux-64bit" >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:938
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08:{ph1} {ph2}13 August continuation{ph3}, {ph4}19 August source "
"ledger{ph5}, {ph6}24 August Linux port{ph7}, {ph8}26 August Web "
"edition{ph9}, and {ph10}30 August 64-bit Linux release{ph11}."
msgstr ""
"{ph0} TH08:{ph1} {ph2}продолжение от 13 августа{ph3}, {ph4}исходный код от "
"19 {ph5}августа, порт Linux{ph6} от 24{ph7} августа, {ph8}веб-версия от 26 "
"августа{ph9} и {ph10}64-разрядный релиз Linux от 30 августа{ph11}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/8c31e6f892d945423b7f7b439747a2bd915f82d8/docs/PROGRESS.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/0fa857fb2b2ec6237732e4d6be8d0a28069c9330/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/74baddfccb712d1311a4d6e7487a63cd1100452e/docs/PROGRESS.md"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/33d46a0ee48f37060d973125a1a7632a40f8d998"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/3442dcf29d9e0b5bef384a49bd0c9ad32a711826/docs/WHOLE_BUILD_TODO.md"
#. >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:961
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095:{ph1} {ph2}29 August initial ledger{ph3}, {ph4}7 September source"
" ledger{ph5}, {ph6}8 September comparisons{ph7}, {ph8}9 September "
"linkage{ph9}, and {ph10}10 September playable-build record{ph11}."
msgstr ""
"{ph0} TH095 :{ph1} исходная бухгалтерская книга за {ph2}29 августа, "
"{ph3}исходная бухгалтерская{ph4} книга за 7 сентября{ph5}, {ph6}сравнения за"
" 8 сентября{ph7}, {ph8}привязка за 9 сентября{ph9} и {ph10}запись о создании"
" игры за 10 сентября{ph11}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:984
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04:{ph1} {ph2}10 October handoff{ph3} records the working DOS "
"reconstruction, the maintainer's complete Normal-route testing and the "
"current 64-bit phase."
msgstr ""
"{ph0} TH04 :{ph1} {ph2}передача от 10 октября{ph3} фиксирует восстановление "
"рабочей DOS, полное тестирование разработчиком обычного маршрута и текущую "
"64-разрядную фазу."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a href="https://github.com/N0zoM1z0/th08/issues/10" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/7148a76ba224742677895c7160807a68897957d5"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph7}: </a >
#: website/public/blog/touhou-reconstruction/index.html:993
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08 oracle correction:{ph1} {ph2}the reported auto-collection "
"bug{ph3}, {ph4}the source and comparison fix{ph5}, and {ph6}the full "
"floating-literal audit{ph7}."
msgstr ""
"{ph0} Исправление TH08 verification reference (oracle):{ph1} {ph2}ошибка "
"автоматического сбора данных, {ph3}исправление{ph4} исходного кода и "
"сравнения{ph5}, а {ph6}также полный аудит констант с плавающей запятой{ph7}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/docs/SEMANTIC_PLAYBOOK.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1007
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Semantic reconstruction:{ph1} {ph2}TH08's readability playbook{ph3} and"
" {ph4}the Factory's phase order and two validation paths{ph5}."
msgstr ""
"{ph0}Семантическая реконструкция:{ph1} {ph2}руководство по "
"удобочитаемости{ph3} TH08, {ph4}заводской порядок этапов и два пути "
"проверки{ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1019
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Industrial history:{ph1} {ph2}the Science Museum Group's steam-engine "
"indicator record{ph3} describes the 1796 introduction and the pressure-"
"recording mechanism."
msgstr ""
"{ph0}Промышленная история:{ph1} в {ph2}архиве Группы научных музеев, "
"посвященном индикаторам паровых двигателей{ph3}, описывается введение в "
"эксплуатацию в 1796 году и механизм регистрации давления."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/agent-
#. autonomy.md" >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/038b6bed51d273c8b3680553b6f43e1b97d19bd1/docs/knowledge-
#. base.md" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1028
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Method:{ph1} the Factory's {ph2}agent autonomy{ph3} and {ph4}cross-game"
" knowledge{ph5} documents retain the working principles and lessons."
msgstr ""
"{ph0}Метод:{ph1} в документах Factory по {ph2}автономии агентов{ph3} и "
"{ph4}знаниям о кросс-играх{ph5} сохраняются принципы работы и уроки."
#. {ph0}: <a class="text-link" href="../">
#. {ph1}: </a>
#. {ph2}: <a class="text-link" href="../../showcase/th04/" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1043
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}More articles{ph1} · {ph2}Explore a TH04 investigation{ph3}"
msgstr ""
"{ph0}Дополнительные статьи{ph1} · {ph2}Ознакомьтесь с исследованием "
"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 "Промышленная революция в области реверс—инжиниринга - 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 рассказывает о ручном реинжиниринге, реконструкции Touhou с помощью"
" агентов искусственного интеллекта и о том, как знания объединяются в TH08, "
"TH095 и PC-98, TH04 ."
#: website/public/blog/touhou-reconstruction/index.html:337
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Experience carried between projects"
msgstr "Опыт, накопленный в период между проектами"
#: website/public/blog/touhou-reconstruction/index.html:351
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/blog/touhou-reconstruction/index.html:366
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Touhou reconstruction essay"
msgstr "Эссе о реконструкции Тохоу"
#: website/public/blog/touhou-reconstruction/index.html:1067
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/examples/dino-lab/index.html:100
msgctxt "page:examples/dino-lab/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/examples/dino-lab/index.html:182
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Home{ph1}{ph2}/{ph3}Dinosaur speed lab"
msgstr "{ph0}Главная{ph1}{ph2} страница/{ph3}Лаборатория скорости динозавров"
#: website/public/examples/dino-lab/index.html:185
msgctxt "page:examples/dino-lab/index.html"
msgid "Inspect → rebuild → change"
msgstr "Проверить → перестроить → изменить"
#: website/public/examples/dino-lab/index.html:186
msgctxt "page:examples/dino-lab/index.html"
msgid "Rebuild the dinosaur’s speed rule."
msgstr "Восстановите скоростное правило динозавра."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <mark class="prose-highlight">
#. {ph3}: </mark>
#: website/public/examples/dino-lab/index.html:187
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"To recreate the game’s acceleration, first find the rule that controls its "
"speed. {ph0}REA returned the running script;{ph1} we used its rule to build "
"this mini-game with {ph2}adjustable speed.{ph3}"
msgstr ""
"Чтобы воссоздать ускорение игры, сначала найдите правило, управляющее ее "
"скоростью. {ph0}REA вернул запущенный скрипт;{ph1} мы использовали его "
"правило для создания этой мини-игры с {ph2}регулируемой скоростью.{ph3}"
#: website/public/examples/dino-lab/index.html:196
#: website/public/examples/dino-lab/index.html:195
msgctxt "page:examples/dino-lab/index.html"
msgid "On this page"
msgstr "На этой странице"
#. {ph0}: <a href="#play">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:198
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Play and change the speed{ph1}"
msgstr "{ph0}Играйте и меняйте скорость{ph1}"
#. {ph0}: <a href="#rule">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:199
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Read the recovered rule{ph1}"
msgstr "{ph0}Прочтите восстановленное правило{ph1}"
#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:200
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}Проверьте реконструкцию{ph1}"
#. {ph0}: <a href="#inspect">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:201
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Try the analysis{ph1}"
msgstr "{ph0}Попробуйте провести анализ{ph1}"
#: website/public/examples/dino-lab/index.html:206
msgctxt "page:examples/dino-lab/index.html"
msgid "Play and change the speed"
msgstr "Играйте и меняйте скорость"
#: website/public/examples/dino-lab/index.html:207
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Press Play, then jump over the cactus. Move the speed slider to try a slower"
" or faster game; it switches to a fixed speed. Select the recovered rule to "
"start at 6 and gradually accelerate again."
msgstr ""
"Нажмите Play, затем перепрыгните через кактус. Переместите ползунок "
"скорости, чтобы выбрать более медленную или быструю игру; она переключится "
"на фиксированную скорость. Выберите восстановленное правило, чтобы начать с "
"6 и постепенно увеличивать скорость снова."
#: website/public/examples/dino-lab/index.html:213
msgctxt "page:examples/dino-lab/index.html"
msgid "Play the reconstruction"
msgstr "Играть в воссозданную версию"
#: website/public/examples/dino-lab/index.html:245
msgctxt "page:examples/dino-lab/index.html"
msgid "Play"
msgstr "Играть"
#: website/public/examples/dino-lab/index.html:248
msgctxt "page:examples/dino-lab/index.html"
msgid "Jump ↑"
msgstr "Прыжок ↑"
#: website/public/examples/dino-lab/index.html:249
msgctxt "page:examples/dino-lab/index.html"
msgid "Restart"
msgstr "Начать заново"
#: website/public/examples/dino-lab/index.html:252
msgctxt "page:examples/dino-lab/index.html"
msgid "Speed"
msgstr "Скорость"
#: website/public/examples/dino-lab/index.html:262
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the recovered acceleration rule"
msgstr "Используйте правило восстановленного ускорения"
#: website/public/examples/dino-lab/index.html:266
msgctxt "page:examples/dino-lab/index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "Первоначальное правило: начинайте с 6, затем увеличивайте до 13."
#: website/public/examples/dino-lab/index.html:269
msgctxt "page:examples/dino-lab/index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr ""
"Перемещайте ползунок, чтобы установить собственную скорость. Пробел или "
"прыжок убирают кактус."
#: website/public/examples/dino-lab/index.html:274
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr ""
"Включите JavaScript для воспроизведения реконструкции. Приведенный выше код "
"и пояснения остаются читаемыми."
#: website/public/examples/dino-lab/index.html:282
msgctxt "page:examples/dino-lab/index.html"
msgid "Read the script REA returned"
msgstr "Прочитал возвращенный скрипт REA"
#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#. {ph2}: <code>index.js</code>
#: website/public/examples/dino-lab/index.html:283
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We inspected {ph0}wayou’s Chromium-derived browser edition{ph1} with REA. It"
" returned the loaded {ph2}, including this branch in the game’s update "
"function:"
msgstr ""
"Мы проверили {ph0}версию браузера wayou, основанную{ph1} на Chromium, с "
"помощью REA. Она вернула загруженный {ph2} index.js, включив эту ветку в "
"функцию обновления игры:"
#. {ph0}: <code>SPEED: 6</code>
#. {ph1}: <code>ACCELERATION: 0.001</code>
#. {ph2}: <code>MAX_SPEED: 13</code>
#: website/public/examples/dino-lab/index.html:299
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The settings are {ph0}, {ph1} and {ph2}. The game runs this branch on an "
"update without a collision."
msgstr ""
"Заданы следующие параметры: {ph0}, {ph1} и МАКСИМАЛЬНАЯ {ph2}. Игра "
"запускает эту ветку в обновлении без каких-либо коллизий."
#: website/public/examples/dino-lab/index.html:304
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the same rule in the new game"
msgstr "Используйте то же правило в новой игре"
#: website/public/examples/dino-lab/index.html:310
#: website/public/examples/dino-lab/index.html:409
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy"
msgstr "Копировать"
#: website/public/examples/dino-lab/index.html:323
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The mini-game uses this function for automatic acceleration. Moving the "
"slider supplies a fixed speed instead. Drawing, jump physics and rectangle "
"collision checks are new code for this teaching game; its simulation "
"advances at 60 updates per second."
msgstr ""
"Мини-игра использует эту функцию для автоматического ускорения. Перемещение "
"ползунка обеспечивает фиксированную скорость. Рисование, физика прыжков и "
"проверка столкновений с прямоугольниками - это новый код для этой обучающей "
"игры; его симуляция обновляется со скоростью 60 раз в секунду."
#. {ph0}: <a href="../../assets/dino-speed.js" download >
#. {ph1}: </a >
#. {ph2}: <a href="../../assets/dino-demo.js">
#. {ph3}: </a>
#: website/public/examples/dino-lab/index.html:329
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Download the speed rule{ph1} · {ph2}Read the game code{ph3}"
msgstr "{ph0}Скачайте правила скорости{ph1} · {ph2}Прочитайте код игры{ph3}"
#: website/public/examples/dino-lab/index.html:337
msgctxt "page:examples/dino-lab/index.html"
msgid "Check the reconstruction"
msgstr "Проверьте реконструкцию"
#: website/public/examples/dino-lab/index.html:338
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We called the original game’s update function with obstacles and automatic "
"scheduling disabled. Compare those recorded speeds with a replay of the "
"recovered rule."
msgstr ""
"Мы запустили функцию обновления оригинальной игры с отключенными "
"препятствиями и автоматическим планированием. Сравните эти записанные "
"скорости с воспроизведением восстановленного правила."
#: website/public/examples/dino-lab/index.html:347
msgctxt "page:examples/dino-lab/index.html"
msgid "Updates"
msgstr "Обновления"
#: website/public/examples/dino-lab/index.html:348
msgctxt "page:examples/dino-lab/index.html"
msgid "Original game"
msgstr "Оригинальная игра"
#: website/public/examples/dino-lab/index.html:349
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstructed rule"
msgstr "Реконструированное правило"
#: website/public/examples/dino-lab/index.html:376
msgctxt "page:examples/dino-lab/index.html"
msgid "Run the speed check"
msgstr "Запустите проверку скорости"
#: website/public/examples/dino-lab/index.html:379
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Values rounded to three decimals. The branch checks before adding, so the "
"final increment can take speed just above 13."
msgstr ""
"Значения округлены до трех знаков после запятой. Ветвление проверяет перед "
"добавлением, поэтому конечное приращение может быть чуть выше 13."
#: website/public/examples/dino-lab/index.html:385
msgctxt "page:examples/dino-lab/index.html"
msgid "Try the analysis yourself"
msgstr "Попробуйте провести анализ самостоятельно"
#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:387
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Set up REA{ph1} with your coding agent."
msgstr "{ph0}Настройте REA{ph1} с помощью вашего агента по кодированию."
#. {ph0}: <a href="../../guides/browser/#prepare" >
#. {ph1}: </a >
#. {ph2}: <code>https://wayou.github.io/t-rex-runner/</code>
#: website/public/examples/dino-lab/index.html:391
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Follow the {ph0}browser connection steps{ph1}, using {ph2} as the page URL."
msgstr ""
"Выполните {ph0}действия по подключению к браузеру{ph1}, используя {ph2} в "
"качестве URL-адреса страницы."
#: website/public/examples/dino-lab/index.html:398
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Give your agent the page URL and local debugging endpoint, then copy this "
"prompt."
msgstr ""
"Укажите своему агенту URL страницы и локальную конечную точку отладки, затем"
" скопируйте это приглашение."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/examples/dino-lab/index.html:405
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="lab-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/examples/dino-lab/index.html:418
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы ознакомиться с этой игрой про "
"динозавров. Почему она стала быстрее? Покажите правило скорости, а затем "
"создайте уменьшенную версию с регулируемой скоростью.{ph3}{ph4}{ph5}"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/examples/dino-lab/index.html:427
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Ask a follow-up: {ph0}“Where is jump height calculated? Add a jump-height "
"control to the new version.”{ph1}"
msgstr ""
"Задайте следующий вопрос: {ph0}“Где рассчитывается высота прыжка? Добавьте "
"элемент управления высотой прыжка в новую версию”.{ph1}"
#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="../../assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/examples/dino-lab/index.html:434
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Source: {ph0}inspected speed code{ph1}, Chromium Authors. {ph2}Copyright and"
" BSD license{ph3}. REA 4.1.0 inspected the running HTTP edition in Chrome "
"150."
msgstr ""
"Источник: {ph0}проверенный код скорости{ph1}, авторы Chromium. "
"{ph2}Авторское право и лицензия BSD{ph3}. REA 4.1.0 проверил запущенную "
"версию HTTP в 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 "Chrome Игра про динозавров: перестроить правила скорости — 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 ""
"Прочитайте правила скорости в игре про динозавров с помощью REA, перестройте"
" их, затем измените скорость и играйте."
#: website/public/examples/dino-lab/index.html:204
msgctxt "page:examples/dino-lab/index.html"
msgid "Dinosaur speed reconstruction"
msgstr "Реконструкция скорости динозавра"
#: website/public/examples/dino-lab/index.html:235
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr ""
"Мини-игра про динозавров. Используйте кнопку перехода или нажмите пробел, "
"пока игра сосредоточена."
#: website/public/examples/dino-lab/index.html:310
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy reconstructed speed rule"
msgstr "Скопируйте восстановленное правило скорости"
#: website/public/examples/dino-lab/index.html:409
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "Запрос на копирование результатов анализа динозавров"
#: website/public/examples/dino-lab/index.html:462
msgctxt "page:examples/dino-lab/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/faq/index.html:99
msgctxt "page:faq/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/faq/index.html:181
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Home{ph1} / FAQ"
msgstr "{ph0}Главная{ph1} страница / Часто задаваемые вопросы"
#: website/public/faq/index.html:182
msgctxt "page:faq/index.html"
msgid "REA FAQ."
msgstr "ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ по REA."
#: website/public/faq/index.html:183
msgctxt "page:faq/index.html"
msgid "Setup, updates, analysis and troubleshooting."
msgstr "Настройка, обновления, анализ и устранение неполадок."
#: website/public/faq/index.html:187
msgctxt "page:faq/index.html"
msgid "Topics"
msgstr "Темы"
#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/faq/index.html:189
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Setup and updates{ph1}"
msgstr "{ph0}Настройка и обновления{ph1}"
#. {ph0}: <a href="#analysis">
#. {ph1}: </a>
#: website/public/faq/index.html:190
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Analysis{ph1}"
msgstr "{ph0}Анализ{ph1}"
#. {ph0}: <a href="#troubleshooting">
#. {ph1}: </a>
#: website/public/faq/index.html:191
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Troubleshooting{ph1}"
msgstr "{ph0}Диагностика{ph1}"
#. {ph0}: <a href="#sharing">
#. {ph1}: </a>
#: website/public/faq/index.html:192
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Data and sharing{ph1}"
msgstr "{ph0}Данные и обмен ими{ph1}"
#: website/public/faq/index.html:201
msgctxt "page:faq/index.html"
msgid "Setup and updates"
msgstr "Настройка и обновления"
#: website/public/faq/index.html:204
msgctxt "page:faq/index.html"
msgid "How do I install REA?"
msgstr "Как установить REA?"
#: website/public/faq/index.html:212
msgctxt "page:faq/index.html"
msgid "Terminal · agent setup"
msgstr "Терминал · настройка агента"
#: website/public/faq/index.html:213 website/public/faq/index.html:254
#: website/public/faq/index.html:272 website/public/faq/index.html:356
#: website/public/faq/index.html:403 website/public/faq/index.html:443
#: website/public/faq/index.html:463
msgctxt "page:faq/index.html"
msgid "Copy"
msgstr "Копировать"
# Reviewed for readable setup and analysis terminology.
#. {ph0}: <a href="../get-started/">
#. {ph1}: </a>
#: website/public/faq/index.html:224
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Setup registers REA's MCP connection and installs the matching investigation"
" skill. Restart your agent when it finishes, then give it a target path and "
"a question. {ph0}Follow the setup guide{ph1} for prerequisites and your "
"first analysis."
msgstr ""
"Настройка регистрирует MCP-подключение REA и устанавливает соответствующий "
"навык анализа. После завершения перезапустите агента и передайте ему путь к "
"файлу и вопрос. Требования и шаги первого анализа описаны в {ph0}руководстве"
" по настройке{ph1}."
#: website/public/faq/index.html:233
msgctxt "page:faq/index.html"
msgid "Which coding agents can use REA?"
msgstr "Какие агенты кодирования могут использовать REA?"
#: website/public/faq/index.html:234
msgctxt "page:faq/index.html"
msgid ""
"Any agent that supports local MCP servers. Setup includes Claude Code, "
"Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, Devin, OpenCode, "
"Antigravity, GitHub Copilot CLI, Command Code, Grok Build, OMP, and VS Code."
" Grok Bot's connector is added from its chat."
msgstr ""
"Любой агент, поддерживающий локальные серверы MCP. Установка включает в себя"
" Claude Code, Claude для настольных компьютеров, Codex, Cursor, Gemini CLI, "
"Windsurf, Devin, OpenCode, Antigravity, GitHub Copilot CLI , Command Code , "
"Grok Build , OMP и VS Code . Коннектор Grok-бота добавлен из его чата."
#. {ph0}: <a href="../get-started/#agent">
#. {ph1}: </a>
#: website/public/faq/index.html:241
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Connect your coding agent{ph1}."
msgstr "{ph0}Подключите свой кодирующий агент{ph1}."
#: website/public/faq/index.html:246
msgctxt "page:faq/index.html"
msgid "How do I update REA?"
msgstr "Как обновить REA?"
#: website/public/faq/index.html:247
msgctxt "page:faq/index.html"
msgid ""
"REA releases frequently, including bug fixes. If you installed the CLI with "
"npm:"
msgstr ""
"REA релизы часто, включая исправления ошибок. Если вы установили CLI с npm:"
#: website/public/faq/index.html:253
msgctxt "page:faq/index.html"
msgid "Terminal · installed CLI"
msgstr "Терминал · установлен CLI"
#. {ph0}: <code>npx</code>
#: website/public/faq/index.html:265
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Follow the setup refresh command printed by the update. If you set up your "
"agent through {ph0}, run:"
msgstr ""
"Выполните команду обновления настроек, указанную в обновлении. Если вы "
"настраиваете свой агент через {ph0}, запустите:"
#: website/public/faq/index.html:271
msgctxt "page:faq/index.html"
msgid "Terminal · refresh agent setup"
msgstr "Терминал · настройка агента обновления"
# Reviewed for readable setup and analysis terminology.
#. {ph0}: <code>npx -y rea-agents@latest</code>
#: website/public/faq/index.html:283
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review the changes and restart your agent. Its REA connection pins a package"
" version, so refreshing setup makes it use the new release. For one-off CLI "
"commands, use {ph0} followed by the command."
msgstr ""
"Проверьте изменения и перезапустите агента. Подключение к REA использует "
"фиксированную версию пакета. Повторите настройку, чтобы агент перешёл на "
"новую версию. Для разового вызова CLI добавьте нужную команду после {ph0}."
#: website/public/faq/index.html:291
msgctxt "page:faq/index.html"
msgid "Is installing the skill from skills.sh enough?"
msgstr "Устанавливается навык из навыков.этого достаточно?"
#. {ph0}: <a href="#install">
#. {ph1}: </a>
#: website/public/faq/index.html:294
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"The skill gives your agent investigation instructions. Run {ph0}REA "
"setup{ph1} to connect the MCP server and install the matching skill, then "
"restart your agent so it can call the tools."
msgstr ""
"Навык предоставляет вашему агенту инструкции по расследованию. Запустите "
"{ph0}программу установки{ph1} REA, чтобы подключить сервер MCP и установить "
"соответствующий навык, затем перезапустите свой агент, чтобы он мог вызвать "
"инструменты."
#: website/public/faq/index.html:305
msgctxt "page:faq/index.html"
msgid "Analysis"
msgstr "Анализ"
#: website/public/faq/index.html:308
msgctxt "page:faq/index.html"
msgid "What can I analyze with REA?"
msgstr "Что я могу проанализировать с помощью REA?"
#: website/public/faq/index.html:309
msgctxt "page:faq/index.html"
msgid "Start with the kind of software you have:"
msgstr "Начните с того программного обеспечения, которое у вас есть:"
#. {ph0}: <a href="../guides/native/" >
#. {ph1}: </a >
#: website/public/faq/index.html:311
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Native executables and libraries{ph1}: functions, assembly, pseudocode "
"and references."
msgstr ""
"{ph0}Собственные исполняемые файлы и библиотеки{ph1}: функции, сборка, "
"псевдокод и ссылки."
#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/faq/index.html:316
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}JavaScript and Electron apps{ph1}: modules, imports, IPC and source "
"locations."
msgstr ""
"{ph0} Приложения JavaScript и Electron{ph1}: модули, импорт, IPC и "
"расположение источников."
#. {ph0}: <a href="../guides/browser/">
#. {ph1}: </a>
#: website/public/faq/index.html:321
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Browser pages{ph1}: scripts, requests and runtime observations."
msgstr ""
"{ph0}Страницы браузера{ph1}: скрипты, запросы и наблюдения во время "
"выполнения."
#. {ph0}: <a href="../showcase/">
#. {ph1}: </a>
#: website/public/faq/index.html:326
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA also has workflows for managed assemblies, Android APKs, firmware and "
"packaged resources. {ph0}See the case studies{ph1} for worked "
"investigations."
msgstr ""
"REA также поддерживает рабочие процессы для управляемых сборок, приложений "
"APK для Android, встроенного ПО и упакованных ресурсов. {ph0}Смотрите "
"примеры проведенных исследований{ph1}."
#: website/public/faq/index.html:334
msgctxt "page:faq/index.html"
msgid "Do I need Hopper, Ghidra or IDA?"
msgstr "Нужен ли мне Hopper, Ghidra или IDA?"
#: website/public/faq/index.html:335
msgctxt "page:faq/index.html"
msgid ""
"Deep native analysis uses one of them. Static JavaScript and .NET inspection"
" work with the supplied files and do not need a native analysis engine."
msgstr ""
"Для глубокого анализа программ с машинным кодом используется один из них. "
"Статический JavaScript и .NET inspection работают с предоставленными файлами"
" и не требуют анализа движка программ с машинным кодом."
#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a>
#: website/public/faq/index.html:340
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Connect your existing Ghidra or IDA installation, or let setup detect Hopper"
" and propose an installation. Your host and target determine which provider "
"can be used. {ph0}Set up native analysis{ph1}."
msgstr ""
"Подключите существующую установку Ghidra или IDA или позвольте программе "
"установки обнаружить Hopper и предложить установку. Ваш хост и целевой "
"сервер определяют, какого провайдера можно использовать. {ph0}Настройте "
"анализ программ с машинным кодом{ph1}."
#: website/public/faq/index.html:348
msgctxt "page:faq/index.html"
msgid "Can I use REA without a coding agent?"
msgstr "Могу ли я использовать REA без кодирующего агента?"
#: website/public/faq/index.html:349
msgctxt "page:faq/index.html"
msgid ""
"Yes. The CLI uses the same analysis workflows. For a local JavaScript or "
"Electron app:"
msgstr ""
"Да. В CLI используются те же рабочие процессы анализа. Для локального "
"приложения JavaScript или Electron:"
#: website/public/faq/index.html:355
msgctxt "page:faq/index.html"
msgid "Terminal · static application analysis"
msgstr "Терминал · статический анализ приложений"
#. {ph0}: <a href="../get-started/#terminal">
#. {ph1}: </a>
#: website/public/faq/index.html:368
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with an extracted application folder or ASAR file. {ph0}Use"
" the CLI{ph1} for installation options."
msgstr ""
"Замените путь на папку с извлеченным приложением или файл ASAR. "
"{ph0}Используйте CLI{ph1} для параметров установки."
# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:375
msgctxt "page:faq/index.html"
msgid "What code does REA return?"
msgstr "Какой код возвращает REA?"
# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:376
msgctxt "page:faq/index.html"
msgid ""
"Native analysis returns assembly and pseudocode, with calls, references and "
"relevant constants. JavaScript analysis returns modules, their relationships"
" and source locations."
msgstr ""
"Анализ машинного кода возвращает ассемблер и псевдокод, а также вызовы "
"функций, ссылки и нужные константы. Анализ JavaScript возвращает модули, "
"связи между ними и расположение в исходном коде."
#. {ph0}: <a href="../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#. {ph2}: <a href="../showcase/ctf/">
#. {ph3}: </a>
#: website/public/faq/index.html:381
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Your agent uses these findings to explain the behavior or write and test an "
"implementation. The {ph0}DX-Ball calculation{ph1} and {ph2}CTF flag "
"checker{ph3} show how that process works."
msgstr ""
"Ваш агент использует эти результаты для объяснения поведения или написания и"
" тестирования реализации. {ph0}Расчет{ph1} DX-Ball и {ph2}проверка флага "
"CTF{ph3} показывают, как работает этот процесс."
#: website/public/faq/index.html:392
msgctxt "page:faq/index.html"
msgid "What should I ask my agent?"
msgstr "Что спросить у помощника?"
#: website/public/faq/index.html:393
msgctxt "page:faq/index.html"
msgid ""
"Give it a local target and one behavior to investigate. For a JavaScript or "
"Electron app:"
msgstr ""
"Задайте ему локальную цель и одно поведение для изучения. Для приложения "
"JavaScript или Electron:"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/faq/index.html:399
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#. {ph0}: <a href="../guides/">
#. {ph1}: </a>
#: website/public/faq/index.html:422
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with your target. The {ph0}guides{ph1} provide prompts for "
"native, Electron and browser examples."
msgstr ""
"Замените путь на целевой. В {ph0}руководствах{ph1} приведены подсказки для "
"примеров в native, Electron и браузере."
#: website/public/faq/index.html:432
msgctxt "page:faq/index.html"
msgid "Troubleshooting"
msgstr "Диагностика"
#: website/public/faq/index.html:435
msgctxt "page:faq/index.html"
msgid "Why can't my agent see the REA tools?"
msgstr "Почему мой агент не может видеть инструменты REA?"
#. {ph0}: <code>doctor</code>
#: website/public/faq/index.html:436
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Restart or reconnect your agent after setup. Check its REA registration with"
" {ph0}; for Codex:"
msgstr ""
"Перезапустите или повторно подключите свой агент после настройки. Проверьте "
"его регистрацию REA в {ph0}; для Codex :"
#: website/public/faq/index.html:442
msgctxt "page:faq/index.html"
msgid "Terminal · check one client"
msgstr "Терминал · проверьте одного клиента"
#. {ph0}: <code>codex</code>
#. {ph1}: <code>claude_code</code>
#. {ph2}: <code>cursor</code>
#: website/public/faq/index.html:454
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace {ph0} with your client ID, such as {ph1} or {ph2}. If the report "
"shows a missing or stale registration, run setup for that client:"
msgstr ""
"Замените {ph0} на свой идентификатор клиента, например, {ph1} или {ph2}. "
"Если в отчете отображается отсутствие или устаревшая регистрация, запустите "
"программу установки для этого клиента:"
#: website/public/faq/index.html:462
msgctxt "page:faq/index.html"
msgid "Terminal · repair one client's setup"
msgstr "Терминал · исправление настроек одного клиента"
#. {ph0}: <a href="../get-started/#help">
#. {ph1}: </a>
#: website/public/faq/index.html:474
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review its plan and restart the client. If registration is healthy but tools"
" remain absent, check the client's MCP connection error. {ph0}More setup "
"diagnostics{ph1}."
msgstr ""
"Просмотрите его план и перезапустите клиент. Если регистрация прошла "
"успешно, но инструменты по-прежнему отсутствуют, проверьте ошибку "
"подключения клиента MCP. {ph0}Дополнительная диагностика настройки{ph1}."
#: website/public/faq/index.html:482
msgctxt "page:faq/index.html"
msgid "Do I need to start Hopper first?"
msgstr "Нужно ли мне сначала запускать Hopper?"
#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a >
#: website/public/faq/index.html:483
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA starts Hopper when an operation needs it. On macOS, complete the first-"
"run choice of demo mode or license activation before unattended analysis. "
"{ph0}See native provider setup{ph1}."
msgstr ""
"REA запускает Hopper, когда это необходимо для выполнения операции. На macOS"
" перед автоматическим анализом выполните первый запуск, выбрав "
"демонстрационный режим или активацию лицензии. {ph0}Смотрите раздел "
"Настройка собственного провайдера{ph1}."
#: website/public/faq/index.html:492
msgctxt "page:faq/index.html"
msgid "What should I do if I hit a bug?"
msgstr "Что делать, если я нашёл ошибку?"
#. {ph0}: <a href="#update">
#. {ph1}: </a>
#: website/public/faq/index.html:493
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Update REA{ph1}, restart your agent and retry the same task. A recent "
"release may already fix the problem."
msgstr ""
"{ph0}Обновите REA{ph1} , перезапустите свой агент и повторите ту же задачу. "
"Возможно, проблема уже устранена в недавнем выпуске."
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/faq/index.html:497
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"If it persists, {ph0}open an issue{ph1} with your REA version, operating "
"system, target type, steps to reproduce and error output. Include the "
"provider name when the problem involves native analysis."
msgstr ""
"Если {ph0}проблема{ph1} не устраняется, укажите версию REA, операционную "
"систему, тип устройства, шаги для воспроизведения и вывод ошибки. Укажите "
"имя поставщика, если проблема связана с анализом программ с машинным кодом."
#: website/public/faq/index.html:511
msgctxt "page:faq/index.html"
msgid "Data and sharing"
msgstr "Данные и обмен ими"
#: website/public/faq/index.html:514
msgctxt "page:faq/index.html"
msgid "Does REA upload my app?"
msgstr "Загружает ли REA мое приложение?"
#: website/public/faq/index.html:515
msgctxt "page:faq/index.html"
msgid ""
"REA analyzes targets on your machine. Your agent receives the results, and "
"its model provider's data policy applies to those results."
msgstr ""
"REA анализирует цели на вашем компьютере. Ваш агент получает результаты, и к"
" этим результатам применяется политика в отношении данных, установленная его"
" поставщиком моделей."
#: website/public/faq/index.html:522
msgctxt "page:faq/index.html"
msgid "How can I share an example or contribute?"
msgstr "Как я могу поделиться примером или внести свой вклад?"
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/pulls">
#. {ph3}: </a >
#: website/public/faq/index.html:523
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Have a useful REA example? We'd love to see it. Share the target, your "
"question, the findings and how you checked them in an {ph0}issue{ph1} or "
"{ph2}pull request{ph3}. Short code excerpts and figures help others follow "
"the investigation."
msgstr ""
"У вас есть полезный пример REA? Мы были бы рады его увидеть. Поделитесь "
"целью, своим вопросом, результатами и тем, как вы их проверили, в сообщении "
"о {ph0}проблеме{ph1} или {ph2}запросе{ph3} на обновление. Короткие выдержки "
"из кода и цифры помогают другим следить за ходом расследования."
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/faq/index.html:535
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Bug reports, feature requests, documentation and code improvements are "
"welcome too. You can also discuss an example in the {ph0}community{ph1}."
msgstr ""
"Также приветствуются сообщения об ошибках, запросы функций, документация и "
"улучшения кода. Вы также можете обсудить пример в {ph0}сообществе{ph1}."
#: website/public/faq/index.html:6
msgctxt "page:faq/index.html"
msgid "REA FAQ: Setup, Updates and Troubleshooting"
msgstr ""
"Часто задаваемые вопросы по REA: Настройка, обновления и устранение "
"неполадок"
#: 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 ""
"Ответы на распространенные вопросы REA: установка, обновления, инструменты "
"анализа, средства программирования, устранение неполадок и обмен примерами."
#: website/public/faq/index.html:186
msgctxt "page:faq/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/faq/index.html:195
msgctxt "page:faq/index.html"
msgid "Frequently asked questions about REA"
msgstr "Часто задаваемые вопросы о REA"
#: website/public/faq/index.html:213
msgctxt "page:faq/index.html"
msgid "Copy REA setup command"
msgstr "Скопировать установочную команду REA"
#: website/public/faq/index.html:254
msgctxt "page:faq/index.html"
msgid "Copy REA update command"
msgstr "Скопировать команду обновления REA"
#: website/public/faq/index.html:272
msgctxt "page:faq/index.html"
msgid "Copy agent setup refresh command"
msgstr "Команда обновления настройки агента копирования"
#: website/public/faq/index.html:356
msgctxt "page:faq/index.html"
msgid "Copy REA CLI analysis command"
msgstr "Скопировать команду анализа REA CLI"
#: website/public/faq/index.html:403
msgctxt "page:faq/index.html"
msgid "Copy example analysis prompt"
msgstr "Запрос на копирование примера анализа"
#: website/public/faq/index.html:443
msgctxt "page:faq/index.html"
msgid "Copy client diagnosis command"
msgstr "Скопировать команду диагностики клиента"
#: website/public/faq/index.html:463
msgctxt "page:faq/index.html"
msgid "Copy scoped setup command"
msgstr "Команда настройки в области копирования"
#: website/public/faq/index.html:560
msgctxt "page:faq/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/first-investigation/index.html:99
msgctxt "page:first-investigation/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:181
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Home{ph1} / Your first investigation"
msgstr "{ph0}Главная{ph1} / Ваше первое расследование"
#. {ph0}: <br />
#: website/public/first-investigation/index.html:184
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Find out where{ph0}exported notes go."
msgstr "Узнайте, куда отправляются{ph0}экспортированные заметки."
#: website/public/first-investigation/index.html:185
msgctxt "page:first-investigation/index.html"
msgid ""
"Use REA to inspect a small app, follow its Export notes button and check one"
" detail yourself."
msgstr ""
"Используйте REA для проверки небольшого приложения, нажмите на кнопку "
"\"Экспорт заметок\" и проверьте одну деталь самостоятельно."
#: website/public/first-investigation/index.html:196
msgctxt "page:first-investigation/index.html"
msgid "In this exercise"
msgstr "В этом упражнении"
#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:198
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}1. Set up{ph1}"
msgstr "{ph0}1. Настройка{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:199
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}2. Ask about export{ph1}"
msgstr "{ph0}2. Спросите об экспорте{ph1}"
#. {ph0}: <a href="#answer">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:200
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}3. Follow the answer{ph1}"
msgstr "{ph0}3. Следуйте ответу{ph1}"
#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:201
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}4. Check a prediction{ph1}"
msgstr "{ph0}4. Проверьте прогноз{ph1}"
#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:202
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}5. Ask another question{ph1}"
msgstr "{ph0}5. Задайте еще один вопрос{ph1}"
#: website/public/first-investigation/index.html:207
msgctxt "page:first-investigation/index.html"
msgid "1. Connect your agent to REA"
msgstr "1. Подключите своего агента к REA."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/first-investigation/index.html:216
#: website/public/first-investigation/index.html:266
#: website/public/first-investigation/index.html:388
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/first-investigation/index.html:221
#: website/public/first-investigation/index.html:243
#: website/public/first-investigation/index.html:271
#: website/public/first-investigation/index.html:393
#: website/public/first-investigation/index.html:435
msgctxt "page:first-investigation/index.html"
msgid "Copy"
msgstr "Копировать"
#: website/public/first-investigation/index.html:240
msgctxt "page:first-investigation/index.html"
msgid "Or run this command in your terminal:"
msgstr "Или запустите эту команду в своем терминале:"
#: website/public/first-investigation/index.html:252
msgctxt "page:first-investigation/index.html"
msgid ""
"Review the plan, approve the setup, then restart your agent. Already "
"connected? Continue below."
msgstr ""
"Ознакомьтесь с планом, одобрите настройку, затем перезапустите свой агент. "
"Вы уже подключены? Продолжение ниже."
#: website/public/first-investigation/index.html:258
msgctxt "page:first-investigation/index.html"
msgid "2. Ask where the CSV is written"
msgstr "2. Спросите, где записан CSV"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/first-investigation/index.html:259
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The example is a six-file Electron app with an {ph0}Export notes{ph1} "
"button. Your agent can inspect its code without installing or launching "
"Electron."
msgstr ""
"Примером может служить приложение Electron, состоящее из шести файлов, с "
"кнопкой {ph0}экспорта заметок{ph1}. Ваш агент может проверить его код, не "
"устанавливая и не запуская Electron."
#: website/public/first-investigation/index.html:294
msgctxt "page:first-investigation/index.html"
msgid ""
"Your agent downloads the files and gives the unpacked folder to REA for "
"inspection."
msgstr ""
"Ваш агент загружает файлы и передает распакованную папку REA для проверки."
#. {ph0}: <a class="button" href="../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:298
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Пример загрузки ZIP-файла{ph1}"
#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:306
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"If your agent can’t download files, unzip this archive yourself. Give it the"
" path to the {ph0} folder and the same export question."
msgstr ""
"Если ваш агент не может загрузить файлы, распакуйте этот архив "
"самостоятельно. Укажите путь к папке {ph0} и задайте тот же вопрос об "
"экспорте."
#: website/public/first-investigation/index.html:313
msgctxt "page:first-investigation/index.html"
msgid "3. Follow the answer back to the code"
msgstr "3. Следуйте ответу обратно к коду"
#: website/public/first-investigation/index.html:314
msgctxt "page:first-investigation/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr "Ищите краткое объяснение со ссылками на файлы и строки:"
#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/first-investigation/index.html:316
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The button sends a {ph0} message. The main process formats the notes as CSV "
"and writes {ph1} in the user’s Downloads folder. The columns are {ph2} and "
"{ph3}."
msgstr ""
"Кнопка отправляет сообщение {ph0}. Основной процесс форматирует заметки как "
"CSV и записывает {ph1} в папку загрузок пользователя. Это столбцы {ph2} и "
"{ph3}."
#: website/public/first-investigation/index.html:324
msgctxt "page:first-investigation/index.html"
msgid "From the button to the file writer"
msgstr "От кнопки до устройства записи файлов"
#: website/public/first-investigation/index.html:353
msgctxt "page:first-investigation/index.html"
msgid ""
"REA’s static analysis pairs the message with its handler. The destination is"
" read from code."
msgstr ""
"Статический анализ REA сопоставляет сообщение с его обработчиком. Адресат "
"считывается из кода."
#: website/public/first-investigation/index.html:369
msgctxt "page:first-investigation/index.html"
msgid ""
"The file path, formatter and write call are together in this handler. Ask "
"your agent to show these lines if its answer leaves them out."
msgstr ""
"Путь к файлу, средство форматирования и вызов записи находятся в этом "
"обработчике вместе. Попросите вашего агента показать эти строки, если в его "
"ответе они отсутствуют."
#. {ph0}: <a href="../guides/javascript/#follow" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:374
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}See the full code trace and recorded REA result{ph1}."
msgstr ""
"{ph0}Посмотрите полную трассировку кода и записанный результат{ph1} REA."
#: website/public/first-investigation/index.html:381
msgctxt "page:first-investigation/index.html"
msgid "4. Check a prediction"
msgstr "4. Проверьте прогноз"
#: website/public/first-investigation/index.html:382
msgctxt "page:first-investigation/index.html"
msgid ""
"A comma separates CSV columns. What happens when a note title itself "
"contains a comma or quotation marks?"
msgstr ""
"Столбцы CSV разделены запятой. Что происходит, когда заголовок заметки сам "
"по себе содержит запятую или кавычки?"
#: website/public/first-investigation/index.html:426
msgctxt "page:first-investigation/index.html"
msgid "Run the check yourself"
msgstr "Проведите проверку самостоятельно"
#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:427
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Open a terminal in the unpacked {ph0} folder:"
msgstr "Откройте терминал в распакованной папке {ph0}:"
#: website/public/first-investigation/index.html:449
msgctxt "page:first-investigation/index.html"
msgid ""
"This command uses a shell with here-document support, such as Bash or Zsh. "
"Your agent can run the same JavaScript in your platform’s shell."
msgstr ""
"Эта команда использует оболочку с поддержкой here-document, такую как Bash "
"или Zsh. Ваш агент может запустить тот же JavaScript в оболочке вашей "
"платформы."
#: website/public/first-investigation/index.html:457
msgctxt "page:first-investigation/index.html"
msgid "5. Ask another question"
msgstr "5. Задайте еще один вопрос"
#: website/public/first-investigation/index.html:458
msgctxt "page:first-investigation/index.html"
msgid "Try a follow-up in the same conversation:"
msgstr "Попробуйте продолжить тот же разговор:"
#: website/public/first-investigation/index.html:460
msgctxt "page:first-investigation/index.html"
msgid ""
"What happens if the file can’t be written? Follow the error back to the "
"page."
msgstr ""
"Что произойдет, если файл не может быть записан? Вернитесь на страницу, "
"указанную в сообщении об ошибке."
#: website/public/first-investigation/index.html:465
msgctxt "page:first-investigation/index.html"
msgid ""
"Or give your agent an app of your own and ask about one button, file or "
"behavior."
msgstr ""
"Или предоставьте своему агенту собственное приложение и спросите об одной "
"кнопке, файле или поведении."
#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:470
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How Notion copies text and HTML{ph1}{ph2}Follow a clipboard feature in "
"a packaged Electron app.{ph3}"
msgstr ""
"{ph0}Как Notion копирует текст и HTML{ph1}{ph2} с помощью функции буфера "
"обмена в встроенном приложении Electron.{ph3}"
#. {ph0}: <a href="../showcase/dx-ball/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:476
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How DX-Ball calculates sound panning{ph1}{ph2}Read the original "
"instructions and the reconstruction’s checks.{ph3}"
msgstr ""
"{ph0}Как DX-Ball рассчитывает расположение стереозвука{ph1}{ph2}, читайте в "
"оригинальных инструкциях и проверках реконструкции.{ph3}"
#. {ph0}: <a href="../faq/#troubleshooting" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:484
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Troubleshoot setup or analysis{ph1}{ph2}Update REA and check the "
"connection if you get stuck.{ph3}"
msgstr ""
"{ph0}Устраните неполадки в программе установки или аналитическом{ph1}{ph2} "
"обновлении REA и проверьте соединение, если оно не работает.{ph3}"
#: website/public/first-investigation/index.html:6
msgctxt "page:first-investigation/index.html"
msgid "Your First Reverse Engineering Investigation — REA"
msgstr "Ваше первое исследование в области реверс—инжиниринга - 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 ""
"Попробуйте REA в небольшом приложении для заметок. Настройте свой агент, "
"спросите, куда отправляются экспортированные заметки, и проверьте "
"форматирование CSV с примером заголовка."
#: website/public/first-investigation/index.html:195
msgctxt "page:first-investigation/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/first-investigation/index.html:205
msgctxt "page:first-investigation/index.html"
msgid "Your first REA investigation"
msgstr "Ваше первое расследование REA"
#: website/public/first-investigation/index.html:221
msgctxt "page:first-investigation/index.html"
msgid "Copy REA installation prompt"
msgstr "Скопировать запрос на установку REA"
#: website/public/first-investigation/index.html:243
msgctxt "page:first-investigation/index.html"
msgid "Copy setup command"
msgstr "Команда настройки копирования"
#: website/public/first-investigation/index.html:271
msgctxt "page:first-investigation/index.html"
msgid "Copy Notes investigation prompt"
msgstr "Запрос на копирование заметок для расследования"
#: website/public/first-investigation/index.html:393
msgctxt "page:first-investigation/index.html"
msgid "Copy CSV check prompt"
msgstr "Скопировать запрос проверки CSV"
#: website/public/first-investigation/index.html:435
msgctxt "page:first-investigation/index.html"
msgid "Copy formatter check command"
msgstr "Команда проверки форматирования копии"
#: website/public/first-investigation/index.html:510
msgctxt "page:first-investigation/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/get-started/index.html:99
msgctxt "page:get-started/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/get-started/index.html:181
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Home{ph1} / Get started"
msgstr "{ph0}Главная{ph1} страница / Начало работы"
#: website/public/get-started/index.html:182
msgctxt "page:get-started/index.html"
msgid "Set up REA."
msgstr "Настройте REA ."
#: website/public/get-started/index.html:183
msgctxt "page:get-started/index.html"
msgid ""
"Connect REA to your coding agent, or inspect a local app from your terminal."
msgstr ""
"Подключите REA к вашему программисту или проверьте локальное приложение с "
"вашего терминала."
#: website/public/get-started/index.html:195
msgctxt "page:get-started/index.html"
msgid "Open a terminal and check:"
msgstr "Откройте терминал и проверьте:"
#: website/public/get-started/index.html:198
#: website/public/get-started/index.html:455
msgctxt "page:get-started/index.html"
msgid "Terminal"
msgstr "Терминал"
#: website/public/get-started/index.html:199
#: website/public/get-started/index.html:220
#: website/public/get-started/index.html:243
#: website/public/get-started/index.html:259
#: website/public/get-started/index.html:274
#: website/public/get-started/index.html:289
#: website/public/get-started/index.html:305
#: website/public/get-started/index.html:324
#: website/public/get-started/index.html:410
#: website/public/get-started/index.html:456
#: website/public/get-started/index.html:532
#: website/public/get-started/index.html:591
#: website/public/get-started/index.html:632
#: website/public/get-started/index.html:664
#: website/public/get-started/index.html:721
#: website/public/get-started/index.html:762
#: website/public/get-started/index.html:802
#: website/public/get-started/index.html:818
msgctxt "page:get-started/index.html"
msgid "Copy"
msgstr "Копировать"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:216
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows (PowerShell){ph1}"
msgstr "{ph0} Windows (PowerShell){ph1}"
#: website/public/get-started/index.html:219
#: website/public/get-started/index.html:242
msgctxt "page:get-started/index.html"
msgid "Windows PowerShell"
msgstr "Оболочка PowerShell Windows"
#. {ph0}: <code>node -v</code>
#: website/public/get-started/index.html:231
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Type Y if asked to accept the terms. Close PowerShell, open it again, then "
"run {ph0}."
msgstr ""
"Введите Y, если вас попросят принять условия. Закройте PowerShell, откройте "
"его снова, затем запустите {ph0}."
#. {ph0}: <em>
#. {ph1}: </em>
#. {ph2}: <code>npx</code>
#: website/public/get-started/index.html:235
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If PowerShell later says {ph0}\"running scripts is disabled on this "
"system\"{ph1} when you run {ph2}, run this once and try again:"
msgstr ""
"Если позже PowerShell сообщит, что {ph0}\"запуск сценариев в этой системе "
"отключен\"{ph1}, когда вы запустите {ph2}, запустите это один раз и "
"повторите попытку:"
#: website/public/get-started/index.html:255
msgctxt "page:get-started/index.html"
msgid "If you use Homebrew:"
msgstr "Если вы используете Homebrew :"
#: website/public/get-started/index.html:258
msgctxt "page:get-started/index.html"
msgid "macOS · Homebrew"
msgstr "macOS · Homebrew"
#: website/public/get-started/index.html:270
msgctxt "page:get-started/index.html"
msgid "Otherwise:"
msgstr "Иначе:"
#: website/public/get-started/index.html:285
msgctxt "page:get-started/index.html"
msgid "Close Terminal, open it again, then:"
msgstr "Закройте терминал, откройте его снова, затем:"
#. {ph0}: <code>curl</code>
#. {ph1}: <code>unzip</code>
#. {ph2}: <code>sudo apt install curl unzip</code>
#: website/public/get-started/index.html:316
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The installer needs {ph0} and {ph1} (on Debian/Ubuntu: {ph2}). Close the "
"terminal, open it again, then:"
msgstr ""
"Для установки потребуется {ph0} и {ph1} файл (в Debian/Ubuntu: {ph2}). "
"Закройте терминал, откройте его снова, затем:"
#. {ph0}: <code>nodejs</code>
#. {ph1}: <code>node -v</code>
#: website/public/get-started/index.html:336
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Your distribution's own {ph0} package is often older than 22.19, so check "
"{ph1} if you use it instead."
msgstr ""
"Собственный пакет {ph0} вашего дистрибутива часто старше версии 22.19, "
"поэтому проверьте {ph1}, если вы используете его вместо этого."
#. {ph0}: <a href="https://nodejs.org/en/download">
#. {ph1}: </a>
#: website/public/get-started/index.html:340
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Prefer a regular installer? Download the LTS version from "
"{ph0}nodejs.org{ph1}."
msgstr ""
"Предпочитаете обычный установщик? Загрузите версию LTS с сайта "
"{ph0}nodejs.org{ph1}."
#: website/public/get-started/index.html:348
msgctxt "page:get-started/index.html"
msgid "Setup options"
msgstr "Параметры настройки"
#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:350
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Connect your coding agent{ph1}"
msgstr "{ph0}Подключите свой кодирующий агент{ph1}"
#. {ph0}: <a href="#terminal">
#. {ph1}: </a>
#: website/public/get-started/index.html:351
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Use the CLI{ph1}"
msgstr "{ph0}Используйте CLI{ph1}"
#. {ph0}: <a href="#native">
#. {ph1}: </a>
#: website/public/get-started/index.html:352
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Set up native analysis{ph1}"
msgstr "{ph0}Настройка анализа программ с машинным кодом{ph1}"
#. {ph0}: <a href="#help">
#. {ph1}: </a>
#: website/public/get-started/index.html:353
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Getting help{ph1}"
msgstr "{ph0}Получение помощи{ph1}"
#: website/public/get-started/index.html:358
msgctxt "page:get-started/index.html"
msgid "Connect your coding agent"
msgstr "Подключите свой кодирующий агент"
#: website/public/get-started/index.html:359
msgctxt "page:get-started/index.html"
msgid ""
"Run setup to connect REA to your coding agent. Client choices include Claude"
" Code, Codex, Cursor, Gemini CLI, Windsurf, Grok Build, and other supported "
"MCP clients. Grok Bot's connector is added from its chat."
msgstr ""
"Запустите программу установки, чтобы подключить REA к вашему программисту. "
"Среди доступных клиентов Claude Code, Codex, Cursor, Gemini CLI, Windsurf, "
"Grok Build и другие поддерживаемые клиенты MCP. Коннектор Grok-бота добавлен"
" из его чата."
#: website/public/get-started/index.html:366
msgctxt "page:get-started/index.html"
msgid "New to coding agents?"
msgstr "Новичок в кодировании агентов?"
#: website/public/get-started/index.html:367
msgctxt "page:get-started/index.html"
msgid ""
"A coding agent is an AI assistant that works on your computer instead of in "
"a browser tab. It can read files and run commands, and it asks before making"
" changes. REA gives it reverse-engineering tools."
msgstr ""
"Программист - это помощник с искусственным интеллектом, который работает на "
"вашем компьютере, а не на вкладке браузера. Он может читать файлы и "
"выполнять команды, а также запрашивает их, прежде чем вносить изменения. "
"REA предоставляет ему инструменты для обратного проектирования."
#: website/public/get-started/index.html:373
msgctxt "page:get-started/index.html"
msgid ""
"If you don't have one yet, pick one, follow its install page and sign in:"
msgstr ""
"Если у вас его еще нет, выберите его, перейдите на страницу установки и "
"войдите в систему:"
#. {ph0}: <strong >
#. {ph1}: <a href="https://code.claude.com/docs/en/setup" >
#. {ph2}: </a >
#. {ph3}: </strong >
#: website/public/get-started/index.html:378
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}Claude Code{ph2}{ph3} by Anthropic. Needs a paid Claude plan."
msgstr ""
"{ph0}{ph1} Claude Code{ph2}{ph3} от Anthropic . Требуется платный тарифный "
"план Claude."
#. {ph0}: <strong >
#. {ph1}: <a href="https://github.com/openai/codex">
#. {ph2}: </a>
#. {ph3}: </strong >
#: website/public/get-started/index.html:386
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}Codex{ph2}{ph3} by OpenAI. Sign in with your ChatGPT account."
msgstr ""
"{ph0}{ph1} Codex{ph2}{ph3} с помощью OpenAI . Войдите в свою учетную запись "
"ChatGPT."
#. {ph0}: <strong >
#. {ph1}: <a href="https://opencode.ai/docs">
#. {ph2}: </a>
#. {ph3}: </strong >
#: website/public/get-started/index.html:392
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}{ph1}OpenCode{ph2}{ph3}, open source. Connect the model provider of "
"your choice."
msgstr ""
"{ph0}{ph1} OpenCode{ph2}{ph3} , с открытым исходным кодом. Подключите "
"поставщика модели по вашему выбору."
#: website/public/get-started/index.html:398
msgctxt "page:get-started/index.html"
msgid ""
"Then open it and copy the prompt below into it. The agent runs REA's setup "
"and shows you the plan before changing anything."
msgstr ""
"Затем откройте его и скопируйте в него приведенное ниже приглашение. Прежде "
"чем что-либо изменить, агент запустит настройку 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/get-started/index.html:405
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/get-started/index.html:430
msgctxt "page:get-started/index.html"
msgid "Or run setup yourself"
msgstr "Или запустите программу настройки самостоятельно"
#: website/public/get-started/index.html:432
msgctxt "page:get-started/index.html"
msgid "How do I open a terminal?"
msgstr "Как мне открыть терминал?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:434
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} open the Start menu, type {ph2}PowerShell{ph3} and press "
"Enter."
msgstr ""
"{ph0} Windows :{ph1} откройте меню \"Пуск\", введите {ph2}PowerShell{ph3} и "
"нажмите Enter."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Space</kbd>
#. {ph4}: <em>
#. {ph5}: </em>
#: website/public/get-started/index.html:438
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} press {ph2} {ph3}, type {ph4}Terminal{ph5} and press Enter."
msgstr ""
"{ph0} macOS :{ph1} нажмите {ph2} {ph3}, введите {ph4}Terminal{ph5} и нажмите"
" Enter."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>Ctrl</kbd>
#. {ph3}: <kbd>Alt</kbd>
#. {ph4}: <kbd>T</kbd>
#: website/public/get-started/index.html:442
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} press {ph2} {ph3} {ph4} on most desktops."
msgstr ""
"{ph0} Linux :{ph1} нажмите {ph2} {ph3} {ph4} на большинстве настольных "
"компьютеров."
#. {ph0}: <kbd>Ctrl</kbd>
#. {ph1}: <kbd>V</kbd>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>V</kbd>
#. {ph4}: <kbd>Ctrl</kbd>
#. {ph5}: <kbd>Shift</kbd>
#. {ph6}: <kbd>V</kbd>
#: website/public/get-started/index.html:447
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Paste a command with {ph0} {ph1} (macOS: {ph2} {ph3}; Linux terminals: {ph4}"
" {ph5} {ph6}), then press Enter."
msgstr ""
"Введите команду с помощью {ph0} {ph1} ( macOS : {ph2} {ph3}; Linux для "
"терминалов: {ph4} {ph5} {ph6}), затем нажмите Enter."
#: website/public/get-started/index.html:468
msgctxt "page:get-started/index.html"
msgid ""
"Choose your client and review the setup plan. REA adds its MCP connection "
"and the matching investigation skill, keeping a backup of existing "
"configuration. It asks before applying the changes."
msgstr ""
"Выберите свой клиент и ознакомьтесь с планом настройки. REA добавляет "
"подключение MCP и соответствующий навык исследования, сохраняя резервную "
"копию существующей конфигурации. Перед применением изменений программа "
"запрашивает доступ."
#: website/public/get-started/index.html:473
msgctxt "page:get-started/index.html"
msgid "Restart your client when setup finishes."
msgstr "После завершения установки перезагрузите клиент."
#: website/public/get-started/index.html:475
msgctxt "page:get-started/index.html"
msgid "How do I restart my client?"
msgstr "Как мне перезапустить мой клиент?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <kbd>⌘</kbd>
#. {ph3}: <kbd>Q</kbd>
#: website/public/get-started/index.html:476
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Desktop apps{ph1} (Claude Desktop, Cursor, Windsurf, VS Code): quit the"
" app completely, then open it again. Closing the window isn't enough. On "
"macOS press {ph2} {ph3}; on Windows, also quit from the tray icon if there "
"is one."
msgstr ""
"{ph0}Приложения для настольных{ph1} компьютеров (Claude для настольных "
"компьютеров, Cursor, Windsurf , VS Code ): полностью закройте приложение, "
"затем откройте его снова. Закрыть окно недостаточно. На macOS нажмите {ph2} "
"{ph3}; на Windows также завершите работу с помощью значка в трее, если он "
"есть."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:483
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Terminal agents{ph1} (Claude Code, Codex, Gemini CLI): exit the session"
" and start it again."
msgstr ""
"{ph0}Терминальные агенты{ph1} ( Claude Code , Codex , Gemini CLI ): выйдите "
"из сеанса и запустите его снова."
#: website/public/get-started/index.html:488
msgctxt "page:get-started/index.html"
msgid ""
"Give your agent a target path and a specific question. For a JavaScript or "
"Electron app, you might start with:"
msgstr ""
"Укажите своему агенту целевой путь и задайте конкретный вопрос. Для "
"приложения JavaScript или Electron вы можете начать с:"
#. {ph0}: <code>/absolute/path/to/app</code>
#: website/public/get-started/index.html:493
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Look at {ph0} and find how it exports data. Show the entry points, calls and"
" dependencies involved, with the source locations for your findings."
msgstr ""
"Посмотрите на {ph0} и узнайте, как он экспортирует данные. Укажите точки "
"входа, вызовы и зависимости, а также исходные местоположения для ваших "
"результатов."
#: website/public/get-started/index.html:499
msgctxt "page:get-started/index.html"
msgid "Replace the path with your local target."
msgstr "Замените путь на ваш локальный целевой объект."
#: website/public/get-started/index.html:501
msgctxt "page:get-started/index.html"
msgid "How do I get a folder's full path?"
msgstr "Как мне получить полный путь к папке?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:503
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the folder and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0} Windows :{ph1} в проводнике щелкните правой кнопкой мыши папку и "
"выберите \"{ph2}Копировать как путь{ph3}\". На Windows 10, удерживая Shift, "
"щелкните правой кнопкой мыши."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:508
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the folder, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr ""
"{ph0} macOS :{ph1} в Finder щелкните правой кнопкой мыши папку, удерживайте "
"опцию и выберите {ph2}Копировать \"...\" в качестве пути{ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:512
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the folder into a terminal window and its path "
"appears."
msgstr ""
"{ph0}Любая система:{ph1} перетащите папку в окно терминала, и появится путь "
"к ней."
#: website/public/get-started/index.html:517
msgctxt "page:get-started/index.html"
msgid "In a terminal, put quotes around a path that contains spaces."
msgstr "В терминале заключите путь, содержащий пробелы, в кавычки."
#: website/public/get-started/index.html:524
msgctxt "page:get-started/index.html"
msgid "Use the CLI"
msgstr "Используйте CLI"
#: website/public/get-started/index.html:525
msgctxt "page:get-started/index.html"
msgid ""
"Analyze a JavaScript or Electron application folder or ASAR archive without "
"running the app:"
msgstr ""
"Проанализируйте папку приложения JavaScript или Electron или архив ASAR, не "
"запуская приложение:"
#: website/public/get-started/index.html:531
msgctxt "page:get-started/index.html"
msgid "Static application analysis"
msgstr "Статический анализ приложений"
#. {ph0}: <code>.asar</code>
#. {ph1}: <code>"D:/apps/example"</code>
#: website/public/get-started/index.html:544
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace the path with your extracted app directory or {ph0} file. On "
"Windows, a path such as {ph1} works here."
msgstr ""
"Замените путь на каталог вашего извлеченного приложения или файл {ph0}. В "
"Windows здесь работает путь, например {ph1}."
#: website/public/get-started/index.html:550
msgctxt "page:get-started/index.html"
msgid "Where do I find an app's .asar file?"
msgstr "Где мне найти asar-файл приложения?"
#. {ph0}: <code>resources</code>
#: website/public/get-started/index.html:551
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Electron apps usually keep it in a {ph0} folder:"
msgstr "Приложения Electron обычно хранят его в папке {ph0}:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >C:\Users\&lt;you&gt;\AppData\Local\Programs\&lt;App&gt;\resources\app.asar</code
#. >
#: website/public/get-started/index.html:556
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows:{ph1} {ph2}"
msgstr "{ph0} Windows :{ph1} {ph2}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >/Applications/&lt;App&gt;.app/Contents/Resources/app.asar</code >
#. {ph3}: <em>
#. {ph4}: </em>
#: website/public/get-started/index.html:562
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} {ph2} (right-click the app and choose {ph3}Show Package "
"Contents{ph4})"
msgstr ""
"{ph0} macOS :{ph1} {ph2} (щелкните правой кнопкой мыши приложение и выберите"
" {ph3}Показать содержимое пакета{ph4})"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>/opt/&lt;App&gt;/resources/app.asar</code>
#: website/public/get-started/index.html:570
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} often {ph2}"
msgstr "{ph0} Linux :{ph1} часто {ph2}"
#. {ph0}: <code>app.asar</code>
#: website/public/get-started/index.html:575
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Some apps install elsewhere. Search the app's folder for {ph0}."
msgstr ""
"Некоторые приложения устанавливаются в другом месте. Найдите в папке "
"приложения {ph0}."
#: website/public/get-started/index.html:580
msgctxt "page:get-started/index.html"
msgid ""
"The result identifies the app, shows connections between modules and gives "
"their source locations. Connections REA cannot resolve are marked in the "
"result."
msgstr ""
"Результат идентифицирует приложение, показывает соединения между модулями и "
"указывает местоположение их источников. В результате отмечаются соединения, "
"которые REA не может разрешить."
#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:585
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "If you'd like a permanent {ph0} command in your shell:"
msgstr "Если вы хотите, чтобы в вашей оболочке была постоянная команда {ph0}:"
#: website/public/get-started/index.html:590
msgctxt "page:get-started/index.html"
msgid "Install the CLI"
msgstr "Установите CLI"
#. {ph0}: <a href="../guides/javascript/" >
#. {ph1}: </a >
#: website/public/get-started/index.html:602
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Continue with the JavaScript application guide{ph1}"
msgstr "{ph0}Продолжайте читать руководство по применению JavaScript{ph1}"
#: website/public/get-started/index.html:610
msgctxt "page:get-started/index.html"
msgid "Set up native analysis"
msgstr "Настройка анализа программ с машинным кодом"
#: website/public/get-started/index.html:611
msgctxt "page:get-started/index.html"
msgid ""
"Native binaries need a local analysis tool. Choose and configure one below, "
"then give REA your executable or library."
msgstr ""
"Программам с машинным кодом требуется локальный инструмент анализа. Выберите"
" и настройте один из приведенных ниже инструментов, затем укажите REA свой "
"исполняемый файл или библиотеку."
#: website/public/get-started/index.html:616
msgctxt "page:get-started/index.html"
msgid "Choose a tool: Ghidra, Hopper or IDA"
msgstr "Выберите инструмент: Ghidra, Hopper или IDA"
#: website/public/get-started/index.html:621
msgctxt "page:get-started/index.html"
msgid ""
"Use an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer on "
"Linux or macOS, on x64 or arm64. Your Ghidra installation needs a native "
"decompiler for your host architecture. Set the paths before running setup:"
msgstr ""
"Используйте существующую версию Ghidra 12.1.x и 64-разрядную версию JDK 21 "
"или новее на Linux или macOS , на x64 или arm64. Для установки Ghidra "
"требуется собственный декомпилятор для архитектуры вашего хоста. Задайте "
"пути перед запуском программы установки:"
#: website/public/get-started/index.html:628
msgctxt "page:get-started/index.html"
msgid "Connect your Ghidra installation"
msgstr "Подключите вашу установку Ghidra"
#: website/public/get-started/index.html:631
msgctxt "page:get-started/index.html"
msgid "Ghidra connection · macOS / Linux"
msgstr "Подключение Ghidra · macOS / Linux"
#: website/public/get-started/index.html:646
msgctxt "page:get-started/index.html"
msgid ""
"Replace both paths with your existing installations. Setup checks them and "
"records valid settings for your selected client. On Linux arm64, you may "
"need to build Ghidra's native decompiler separately."
msgstr ""
"Замените оба пути на ваши существующие установки. Программа установки "
"проверяет их и записывает корректные настройки для выбранного вами клиента. "
"В Linux arm64 вам может потребоваться отдельно собрать собственный "
"декомпилятор Ghidra."
#: website/public/get-started/index.html:654
msgctxt "page:get-started/index.html"
msgid "Connect Ghidra on Windows"
msgstr "Подключите Ghidra к Windows"
#: website/public/get-started/index.html:655
msgctxt "page:get-started/index.html"
msgid ""
"Windows x64 has experimental, read-only support for native x86 and x64 PE "
"applications and DLLs on fixed local NTFS drives. Use an existing Ghidra "
"12.1.x installation and a 64-bit JDK 21 or newer:"
msgstr ""
"Windows x64 имеет экспериментальную поддержку только для чтения собственных "
"приложений x86 и x64 PE и библиотек DLL на фиксированных локальных дисках "
"NTFS. Используйте существующую установку Ghidra 12.1.x и 64-разрядную версию"
" JDK 21 или новее:"
#: website/public/get-started/index.html:663
msgctxt "page:get-started/index.html"
msgid "Ghidra connection · Windows PowerShell"
msgstr "Подключение Ghidra · Windows PowerShell"
#: website/public/get-started/index.html:678
msgctxt "page:get-started/index.html"
msgid ""
"Replace the two paths with your installations, then review setup's plan."
msgstr ""
"Замените эти два пути вашими установками, затем просмотрите план установки."
#: website/public/get-started/index.html:688
msgctxt "page:get-started/index.html"
msgid ""
"Connect Hopper on macOS or Linux. Run the setup command above; it detects an"
" existing installation or offers an installation plan for your approval."
msgstr ""
"Подключите Hopper к macOS или Linux. Запустите приведенную выше команду "
"установки; она обнаружит существующую установку или предложит план установки"
" для вашего одобрения."
#: website/public/get-started/index.html:693
msgctxt "page:get-started/index.html"
msgid ""
"On macOS, complete Hopper's first-run choice of demo mode or license "
"activation before an unattended analysis."
msgstr ""
"На macOS перед автоматическим анализом выполните первый запуск Hopper, "
"выбрав демонстрационный режим или активацию лицензии."
#: website/public/get-started/index.html:702
msgctxt "page:get-started/index.html"
msgid ""
"The verified IDA setups use Windows, with an existing MCP registration for "
"an attached GUI or a headless database. Linux and macOS headless analysis "
"remains unverified."
msgstr ""
"В проверенных настройках IDA используется Windows с существующей "
"регистрацией MCP для подключенного графического интерфейса пользователя или "
"безголовой базы данных. Анализ Linux и macOS без учета данных остается "
"непроверенным."
#: website/public/get-started/index.html:708
msgctxt "page:get-started/index.html"
msgid "Connect an existing IDA MCP registration"
msgstr "Подключите существующую регистрацию IDA MCP"
#. {ph0}: <code>command</code>
#. {ph1}: <code>args</code>
#. {ph2}: <code>env</code>
#. {ph3}: <code>mcpServers</code>
#. {ph4}: <code>ida-pro-mcp</code>
#: website/public/get-started/index.html:711
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Keep the upstream server's working {ph0}, {ph1} and optional {ph2} in a JSON"
" file. An existing {ph3} object with an {ph4} entry is also accepted. Point "
"REA at that file before setup:"
msgstr ""
"Сохраните рабочую {ph0} вышестоящего сервера, {ph1} и необязательный {ph2} в"
" файле JSON. Также принимается существующий {ph3}объект mcpServers с записью"
" {ph4}. Укажите REA в этом файле перед установкой:"
#: website/public/get-started/index.html:720
msgctxt "page:get-started/index.html"
msgid "IDA connection · Windows PowerShell"
msgstr "Подключение IDA · Windows PowerShell"
#. {ph0}: <code>"mode": "headless"</code>
#: website/public/get-started/index.html:735
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The attached profile uses upstream legacy 1.4.0 tools with the original "
"binary already open in IDA. The headless profile uses the upstream database-"
"supervisor API and a registration with {ph0}; real verification covers an "
"IDA 9.3 Windows x64 supervisor. Doctor checks the registration without "
"starting IDA."
msgstr ""
"В прикрепленном профиле используются устаревшие инструменты версии 1.4.0, а "
"исходный двоичный файл уже открыт в IDA . В профиле headless используется "
"вышестоящий API database-supervisor и регистрация в {ph0}; для реальной "
"проверки используется супервизор IDA 9.3 Windows x64. Врач проверяет "
"регистрацию, не запуская IDA ."
#. {ph0}: <code>--provider ida</code>
#. {ph1}: <code>REA_IDA_MCP_CONFIG</code>
#: website/public/get-started/index.html:744
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Give REA the original executable path, with {ph0} in a CLI query. For an "
"agent, include {ph1} in the REA registration's environment and select IDA "
"when opening the binary."
msgstr ""
"Укажите REA исходный путь к исполняемому файлу с помощью {ph0} в запросе "
"CLI. Для агента включите {ph1} в среду регистрации REA и выберите IDA при "
"открытии двоичного файла."
#: website/public/get-started/index.html:756
msgctxt "page:get-started/index.html"
msgid "For an existing Ghidra setup, inspect a function with:"
msgstr "Для существующей настройки Ghidra проверьте функцию с помощью:"
#: website/public/get-started/index.html:761
msgctxt "page:get-started/index.html"
msgid "Function analysis"
msgstr "Функциональный анализ"
#. {ph0}: <code>main</code>
#: website/public/get-started/index.html:774
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Replace {ph0} with the function name or address you want to inspect."
msgstr "Замените {ph0} на имя функции или адрес, который вы хотите проверить."
#: website/public/get-started/index.html:779
msgctxt "page:get-started/index.html"
msgid "How native analysis sessions work"
msgstr "Как работают сеансы анализа программ с машинным кодом"
#: website/public/get-started/index.html:780
msgctxt "page:get-started/index.html"
msgid ""
"Each CLI command imports and analyzes the binary, then closes its session. "
"Your agent's MCP queries reuse the imported binary while that session is "
"open."
msgstr ""
"Каждая команда CLI импортирует и анализирует двоичный файл, а затем "
"закрывает свой сеанс. Запросы MCP вашего агента повторно используют "
"импортированный двоичный файл, пока этот сеанс открыт."
#. {ph0}: <a href="../guides/native/">
#. {ph1}: </a>
#: website/public/get-started/index.html:786
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Follow a native analysis example{ph1} to see how the function result "
"leads to a recovered calculation."
msgstr ""
"{ph0}Следуйте примеру анализа программ с машинным кодом{ph1}, чтобы увидеть,"
" как результат функции приводит к восстановленному вычислению."
#: website/public/get-started/index.html:793
msgctxt "page:get-started/index.html"
msgid "Getting help"
msgstr "Получение помощи"
#: website/public/get-started/index.html:794
msgctxt "page:get-started/index.html"
msgid "If your agent doesn't see REA"
msgstr "Если ваш агент не видит REA"
#. {ph0}: <code>doctor</code>
#: website/public/get-started/index.html:795
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Restart or reconnect the client after setup. Check its REA connection with "
"{ph0}; for Codex:"
msgstr ""
"Перезапустите или повторно подключите клиент после установки. Проверьте его "
"REA-соединение с {ph0}; для Codex :"
#: website/public/get-started/index.html:801
msgctxt "page:get-started/index.html"
msgid "Check one client"
msgstr "Проверьте одного клиента"
#: website/public/get-started/index.html:813
msgctxt "page:get-started/index.html"
msgid "If a provider needs attention"
msgstr "Если поставщик услуг нуждается во внимании"
#: website/public/get-started/index.html:814
msgctxt "page:get-started/index.html"
msgid "Check the provider you're using. For Ghidra:"
msgstr "Проверьте, каким провайдером вы пользуетесь. Для Ghidra :"
#: website/public/get-started/index.html:817
msgctxt "page:get-started/index.html"
msgid "Check one provider"
msgstr "Проверьте одного поставщика"
#: website/public/get-started/index.html:829
msgctxt "page:get-started/index.html"
msgid "The report gives the failed check and a suggested next step."
msgstr ""
"В отчете содержится информация о неудачной проверке и предлагаемый следующий"
" шаг."
#. {ph0}: <a href="../faq/">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:831
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA FAQ{ph1}{ph2}Quick answers on updates, agents and analysis.{ph3}"
msgstr ""
"{ph0}REA задаваемые{ph1}{ph2} вопросы по обновлениям, агентам и "
"анализу.{ph3}"
#. {ph0}: <a href="../guides/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/get-started/index.html:835
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Choose an investigation guide{ph1}{ph2}Worked examples for a binary, an"
" Electron app and a browser.{ph3}"
msgstr ""
"{ph0}Выберите руководство по исследованию{ph1}{ph2} и примеры для двоичного "
"файла, приложения Electron и браузера.{ph3}"
#. {ph0}: <a href="https://github.com/morluto/rea/issues">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:842
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}GitHub issues{ph1}{ph2}Report a problem with the command and "
"diagnostics.{ph3}"
msgstr ""
"{ph0} Проблемы{ph1}{ph2} GitHub Сообщают о проблеме с командой и "
"диагностикой.{ph3}"
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:846
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA community{ph1}{ph2}Questions, investigations and work in "
"progress.{ph3}"
msgstr ""
"{ph0} REA Вопросы сообщества{ph1}{ph2}, расследования и текущая работа.{ph3}"
#: website/public/get-started/index.html:6
msgctxt "page:get-started/index.html"
msgid "Install REA and Set Up Your Coding Agent"
msgstr "Установите REA и настройте Свой кодирующий агент"
#: 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 ""
"Подключите REA к вашему программисту или воспользуйтесь локальным "
"приложением JavaScript или Electron с терминала. Настройка, первые вопросы и"
" инструкции для местных провайдеров."
#: website/public/get-started/index.html:199
msgctxt "page:get-started/index.html"
msgid "Copy Node.js version check"
msgstr "Скопируйте проверку версии Node.js"
#: website/public/get-started/index.html:220
msgctxt "page:get-started/index.html"
msgid "Copy Node.js installation command for Windows"
msgstr "Скопируйте команду установки Node.js для Windows"
#: website/public/get-started/index.html:243
msgctxt "page:get-started/index.html"
msgid "Copy PowerShell execution policy command"
msgstr "Скопировать команду политики выполнения PowerShell"
#: website/public/get-started/index.html:259
msgctxt "page:get-started/index.html"
msgid "Copy Homebrew Node.js installation command"
msgstr "Скопировать команду установки Homebrew Node.js"
#: website/public/get-started/index.html:274
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for macOS"
msgstr "Скопируйте команду установки fnm для macOS"
#: website/public/get-started/index.html:289
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for macOS"
msgstr "Скопируйте 24 команды Node.js для macOS"
#: website/public/get-started/index.html:305
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for Linux"
msgstr "Скопируйте команду установки fnm для Linux"
#: website/public/get-started/index.html:324
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for Linux"
msgstr "Скопируйте 24 команды Node.js для Linux"
#: website/public/get-started/index.html:347
msgctxt "page:get-started/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/get-started/index.html:356
msgctxt "page:get-started/index.html"
msgid "REA getting started guide"
msgstr "REA руководство по началу работы"
#: website/public/get-started/index.html:410
msgctxt "page:get-started/index.html"
msgid "Copy REA installation prompt"
msgstr "Скопировать запрос на установку REA"
#: website/public/get-started/index.html:456
msgctxt "page:get-started/index.html"
msgid "Copy agent setup command"
msgstr "Команда настройки агента копирования"
#: website/public/get-started/index.html:532
msgctxt "page:get-started/index.html"
msgid "Copy JavaScript analysis command"
msgstr "Скопировать команду анализа JavaScript"
#: website/public/get-started/index.html:591
msgctxt "page:get-started/index.html"
msgid "Copy CLI installation command"
msgstr "Скопировать команду установки CLI"
#: website/public/get-started/index.html:632
msgctxt "page:get-started/index.html"
msgid "Copy ghidra connection · macos / linux"
msgstr "Скопировать соединение с ghidra · macos / linux"
#: website/public/get-started/index.html:664
msgctxt "page:get-started/index.html"
msgid "Copy Ghidra connection for Windows PowerShell"
msgstr "Скопируйте подключение Ghidra для Windows PowerShell"
#: website/public/get-started/index.html:721
msgctxt "page:get-started/index.html"
msgid "Copy IDA connection for Windows PowerShell"
msgstr "Скопируйте подключение IDA для Windows PowerShell"
#: website/public/get-started/index.html:762
msgctxt "page:get-started/index.html"
msgid "Copy native function analysis command"
msgstr "Скопировать команду анализа собственной функции"
#: website/public/get-started/index.html:802
msgctxt "page:get-started/index.html"
msgid "Copy client diagnosis command"
msgstr "Скопировать команду диагностики клиента"
#: website/public/get-started/index.html:818
msgctxt "page:get-started/index.html"
msgid "Copy provider diagnosis command"
msgstr "Команда диагностики поставщика копирования"
#: website/public/get-started/index.html:869
msgctxt "page:get-started/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/guides/browser/index.html:99
msgctxt "page:guides/browser/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/browser/index.html:181
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Browser observation"
msgstr "{ph0}Главная{ph1} страница / {ph2}Руководства{ph3} / Обзор браузера"
#. {ph0}: <br />
#: website/public/guides/browser/index.html:185
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "See what happens{ph0}when you click."
msgstr "Посмотрим, что произойдет{ph0}когда вы нажмете."
#: website/public/guides/browser/index.html:186
msgctxt "page:guides/browser/index.html"
msgid ""
"Use a small browser app to connect an action, its network request and the "
"JavaScript that builds a download."
msgstr ""
"Используйте небольшое браузерное приложение для подключения действия, его "
"сетевого запроса и JavaScript, который создает загрузку."
#: website/public/guides/browser/index.html:193
msgctxt "page:guides/browser/index.html"
msgid "In this guide"
msgstr "В этом руководстве"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:195
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}Приведенный пример{ph1}"
#. {ph0}: <a href="#prepare">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:196
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Open the browser{ph1}"
msgstr "{ph0}Откройте браузер{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:197
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Спросите своего агента{ph1}"
#. {ph0}: <a href="#capture">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:198
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Capture from CLI{ph1}"
msgstr "{ph0}Захват из CLI{ph1}"
#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:199
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Read the request and script{ph1}"
msgstr "{ph0}Прочитайте запрос и скрипт{ph1}"
#: website/public/guides/browser/index.html:204
msgctxt "page:guides/browser/index.html"
msgid "What happens when you click Export?"
msgstr "Что происходит, когда вы нажимаете кнопку Экспортировать?"
#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <strong>
#. {ph3}: </strong>
#. {ph4}: <code>notes.json</code>
#: website/public/guides/browser/index.html:205
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The {ph0}Notes browser example{ph1} has an {ph2}Export notes{ph3} button. "
"Clicking it loads {ph4}, formats the two notes as CSV, and starts a "
"download."
msgstr ""
"В {ph0}примере браузера Notes{ph1} есть кнопка {ph2}экспорта заметок{ph3}. "
"При нажатии на нее загружается файл {ph4}, две заметки форматируются как CSV"
" и начинается загрузка."
#: website/public/guides/browser/index.html:213
msgctxt "page:guides/browser/index.html"
msgid "From the click to the CSV download"
msgstr "От клика до загрузки CSV"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/browser/index.html:215
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}01 · You{ph1}{ph2}Click Export notes{ph3}{ph4}Perform the action in "
"your browser while the capture is running.{ph5}"
msgstr ""
"{ph0}01 · Вы{ph1}{ph2} нажимаете кнопку Экспорт заметок{ph3}{ph4} и "
"выполняете это действие в своем браузере во время выполнения записи.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/browser/index.html:223
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}02 · REA{ph1}{ph2}Record the request{ph3}{ph4}Capture the request URL, "
"response status and JSON structure from the selected page.{ph5}"
msgstr ""
"{ph0}02 · REA{ph1}{ph2} Запишите запрос{ph3}{ph4}, захватите URL-адрес "
"запроса, статус ответа и структуру JSON с выбранной страницы.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>fetch("./notes.json")</code>
#. {ph6}: <code>export.js</code>
#. {ph7}: </span >
#: website/public/guides/browser/index.html:231
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}03 · Your agent{ph1}{ph2}Read the export code{ph3}{ph4}Connect the "
"observed request to {ph5} in {ph6}.{ph7}"
msgstr ""
"{ph0}03 · Ваш агент{ph1}{ph2} прочитал экспортный код{ph3}{ph4}, "
"подключающий наблюдаемый запрос к {ph5} в {ph6}.{ph7}"
#: website/public/guides/browser/index.html:244
msgctxt "page:guides/browser/index.html"
msgid "Start the capture before clicking Export notes."
msgstr "Запустите запись, прежде чем нажать кнопку Экспортировать заметки."
#: website/public/guides/browser/index.html:250
msgctxt "page:guides/browser/index.html"
msgid "Open Chrome with remote debugging"
msgstr "Откройте Chrome с удаленной отладкой"
#: website/public/guides/browser/index.html:251
msgctxt "page:guides/browser/index.html"
msgid ""
"Open the hosted Notes example with a separate browser profile and a local "
"debugging port. On Linux:"
msgstr ""
"Откройте размещенный на хостинге пример Notes, используя отдельный профиль "
"браузера и локальный порт для отладки. На Linux :"
#: website/public/guides/browser/index.html:257
msgctxt "page:guides/browser/index.html"
msgid "Start the example browser"
msgstr "Запустите примерный браузер"
#: website/public/guides/browser/index.html:258
#: website/public/guides/browser/index.html:290
#: website/public/guides/browser/index.html:324
#: website/public/guides/browser/index.html:343
#: website/public/guides/browser/index.html:408
msgctxt "page:guides/browser/index.html"
msgid "Copy"
msgstr "Копировать"
#: website/public/guides/browser/index.html:272
msgctxt "page:guides/browser/index.html"
msgid ""
"Use your installed browser's executable path on macOS or Windows. You can "
"replace the page URL with another page you want to inspect."
msgstr ""
"Используйте путь к исполняемому файлу вашего установленного браузера в macOS"
" или Windows . Вы можете заменить URL-адрес страницы на другую страницу, "
"которую хотите просмотреть."
#: website/public/guides/browser/index.html:277
msgctxt "page:guides/browser/index.html"
msgid ""
"REA connects to this existing browser. You keep control of the page, perform"
" the action, and close the browser when finished."
msgstr ""
"REA подключается к этому существующему браузеру. Вы сохраняете контроль над "
"страницей, выполняете действие и по завершении закрываете браузер."
#: website/public/guides/browser/index.html:283
msgctxt "page:guides/browser/index.html"
msgid "Ask your agent to watch one action"
msgstr "Попросите своего агента посмотреть одно действие"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/browser/index.html:286
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="browser-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/browser/index.html:299
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this page while I click Export notes. "
"What request does it make, and how is the CSV built?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы просмотреть эту страницу, пока я "
"нажимаю \"Экспортировать заметки\". Какой запрос она отправляет и как "
"устроен CSV?{ph3}{ph4}{ph5}"
#. {ph0}: <code>http://127.0.0.1:9222</code>
#: website/public/guides/browser/index.html:307
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Example prompt. Give your agent the debugging endpoint, {ph0}, and the page "
"URL. Let it start the capture before you click."
msgstr ""
"Пример запроса. Укажите вашему агенту конечную точку отладки, {ph0} и URL-"
"адрес страницы. Пусть он запустит запись до того, как вы нажмете."
#: website/public/guides/browser/index.html:312
msgctxt "page:guides/browser/index.html"
msgid ""
"Your agent discovers the page target, starts an observation window, and "
"reads the resulting evidence. It can then inspect the script behind the "
"export."
msgstr ""
"Ваш агент обнаруживает целевую страницу, запускает окно просмотра и "
"считывает полученные данные. Затем он может проверить сценарий, лежащий в "
"основе экспорта."
#: website/public/guides/browser/index.html:319
msgctxt "page:guides/browser/index.html"
msgid "Or capture from the terminal"
msgstr "Или захват с терминала"
#: website/public/guides/browser/index.html:320
msgctxt "page:guides/browser/index.html"
msgid "Find the page's target ID:"
msgstr "Найдите целевой идентификатор страницы:"
#: website/public/guides/browser/index.html:323
msgctxt "page:guides/browser/index.html"
msgid "Find the page"
msgstr "Найдите нужную страницу"
#. {ph0}: <code>TARGET_ID</code>
#: website/public/guides/browser/index.html:336
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Choose the target with the Notes example URL. Replace {ph0} below with its "
"ID, then run:"
msgstr ""
"Выберите целевой объект с помощью URL-адреса, приведенного в примере Notes. "
"Замените {ph0} ниже на его идентификатор, затем запустите:"
#: website/public/guides/browser/index.html:342
msgctxt "page:guides/browser/index.html"
msgid "Capture the next ten seconds"
msgstr "Запечатлейте следующие десять секунд"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/browser/index.html:358
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Let the command connect for a few seconds, then click {ph0}Export notes{ph1}"
" in that browser. The result arrives after the observation window ends."
msgstr ""
"Дайте команде подключиться в течение нескольких секунд, затем нажмите "
"\"{ph0}Экспортировать заметки{ph1}\" в этом браузере. Результат появится "
"после завершения просмотра."
#: website/public/guides/browser/index.html:363
msgctxt "page:guides/browser/index.html"
msgid ""
"The captured result includes the selected page, network activity during that"
" window, and the shape of the JSON response. Earlier requests are outside "
"this capture."
msgstr ""
"Полученный результат включает выбранную страницу, сетевую активность в "
"течение этого окна и форму ответа в формате JSON. Предыдущие запросы не "
"входят в этот список."
#: website/public/guides/browser/index.html:370
msgctxt "page:guides/browser/index.html"
msgid "Read the request and export script"
msgstr "Прочитайте запрос и экспортируйте скрипт"
#: website/public/guides/browser/index.html:373
msgctxt "page:guides/browser/index.html"
msgid "Recorded with REA 4.1.0 on the local Notes example"
msgstr "Записано с помощью REA 4.1.0 на примере local Notes"
#: website/public/guides/browser/index.html:378
msgctxt "page:guides/browser/index.html"
msgid "Captured fact"
msgstr "Зафиксированный факт"
#: website/public/guides/browser/index.html:379
msgctxt "page:guides/browser/index.html"
msgid "Value"
msgstr "Ценность"
#: website/public/guides/browser/index.html:384
msgctxt "page:guides/browser/index.html"
msgid "Request"
msgstr "Запрос"
#: website/public/guides/browser/index.html:388
msgctxt "page:guides/browser/index.html"
msgid "Response"
msgstr "Ответ"
#: website/public/guides/browser/index.html:392
msgctxt "page:guides/browser/index.html"
msgid "Request initiator"
msgstr "Инициатор запроса"
#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:393
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · script"
msgstr "{ph0} · сценарий"
#: website/public/guides/browser/index.html:396
msgctxt "page:guides/browser/index.html"
msgid "Response structure"
msgstr "Структура ответа"
#. {ph0}: <code>notes[]</code>
#. {ph1}: <code>id</code>
#. {ph2}: <code>title</code>
#: website/public/guides/browser/index.html:397
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} with {ph1} and {ph2} fields"
msgstr "{ph0} с полями {ph1} и {ph2}"
#: website/public/guides/browser/index.html:407
msgctxt "page:guides/browser/index.html"
msgid "Read the loaded scripts"
msgstr "Прочитайте загруженные скрипты"
#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:421
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The request identifies the data source, and REA records {ph0} as its "
"initiator. Read the captured script source to see how the data is used:"
msgstr ""
"Запрос идентифицирует источник данных, и REA записывает export.js {ph0} "
"качестве инициатора запроса. Прочитайте захваченный исходный код сценария, "
"чтобы увидеть, как используются данные:"
#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:441
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The download is constructed in the page using the JSON response. The CSV "
"formatting step comes from the script; the network capture establishes that "
"this click requested {ph0}."
msgstr ""
"Загрузка выполняется на странице с использованием ответа в формате JSON. Шаг"
" форматирования CSV выполняется из скрипта; сетевой анализ показывает, что "
"при этом щелчке запрашивался файл {ph0}."
#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:457
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Find the script that requests {ph0}. How does it escape titles containing "
"commas or quotation marks?"
msgstr ""
"Найдите скрипт, который запрашивает файл {ph0}. Как он экранирует заголовки,"
" содержащие запятые или кавычки?"
#. {ph0}: <a href="../javascript/">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:462
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"For an installed JavaScript or Electron app, continue with the "
"{ph0}application workflow{ph1} to follow files and process boundaries."
msgstr ""
"Для установленного приложения JavaScript или Electron продолжайте работать с"
" рабочим {ph0}процессом приложения{ph1}, чтобы отслеживать файлы и границы "
"процессов."
#: website/public/guides/browser/index.html:6
msgctxt "page:guides/browser/index.html"
msgid "Browser and Network Analysis — REA"
msgstr "Анализ браузера и сети — 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 ""
"Наблюдайте за экспортом заметок с помощью REA: выберите страницу браузера, "
"зафиксируйте щелчок, просмотрите запрос и следуйте сценарию экспорта."
#: website/public/guides/browser/index.html:192
msgctxt "page:guides/browser/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/guides/browser/index.html:202
msgctxt "page:guides/browser/index.html"
msgid "Browser observation"
msgstr "Наблюдение в браузере"
#: website/public/guides/browser/index.html:258
msgctxt "page:guides/browser/index.html"
msgid "Copy start the example browser"
msgstr "Скопируйте и запустите пример браузера"
#: website/public/guides/browser/index.html:290
msgctxt "page:guides/browser/index.html"
msgid "Copy example prompt"
msgstr "Запрос на копирование примера"
#: website/public/guides/browser/index.html:324
msgctxt "page:guides/browser/index.html"
msgid "Copy find the page"
msgstr "Скопируйте найденную страницу"
#: website/public/guides/browser/index.html:343
msgctxt "page:guides/browser/index.html"
msgid "Copy capture the next ten seconds"
msgstr "Скопируйте запись на следующие десять секунд"
#: website/public/guides/browser/index.html:408
msgctxt "page:guides/browser/index.html"
msgid "Copy read the loaded scripts"
msgstr "Копировать читать загруженные скрипты"
#: website/public/guides/browser/index.html:485
msgctxt "page:guides/browser/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/guides/index.html:99
msgctxt "page:guides/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/guides/index.html:181
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "{ph0}Home{ph1} / Guides"
msgstr "{ph0}Главная{ph1} страница / Путеводители"
#: website/public/guides/index.html:182
msgctxt "page:guides/index.html"
msgid "REA guides."
msgstr "Направляющие REA."
#: website/public/guides/index.html:183
msgctxt "page:guides/index.html"
msgid ""
"Analyze a native function, an Electron export or a browser request. Each "
"guide includes a prompt, code and results."
msgstr ""
"Проанализируйте встроенную функцию, экспорт Electron или запрос браузера. "
"Каждое руководство содержит подсказку, код и результаты."
#: website/public/guides/index.html:190
msgctxt "page:guides/index.html"
msgid "First investigation"
msgstr "Первое расследование"
#: website/public/guides/index.html:192
msgctxt "page:guides/index.html"
msgid "Set up REA"
msgstr "Настройка REA"
#: website/public/guides/index.html:193
msgctxt "page:guides/index.html"
msgid "Connect your coding agent or use REA from the terminal."
msgstr "Подключите свой кодировщик или используйте REA с терминала."
#: website/public/guides/index.html:194
msgctxt "page:guides/index.html"
msgid "Get started with REA"
msgstr "Начните работу с REA"
#: website/public/guides/index.html:198
msgctxt "page:guides/index.html"
msgid "Native binaries"
msgstr "Программы с машинным кодом"
#: website/public/guides/index.html:200
msgctxt "page:guides/index.html"
msgid "Recover a sound-pan calculation"
msgstr "Восстановление расчета положения звука слева/справа"
#: website/public/guides/index.html:201
msgctxt "page:guides/index.html"
msgid ""
"Start with a Windows game executable. Inspect instructions, follow a caller,"
" read numeric constants and check the recovered C."
msgstr ""
"Начните с исполняемого файла игры Windows. Ознакомьтесь с инструкциями, "
"следуйте за вызывающим пользователем, прочитайте числовые константы и "
"проверьте восстановленный C."
#: website/public/guides/index.html:211
msgctxt "page:guides/index.html"
msgid "Native analysis guide"
msgstr "Руководство по анализу программ с машинным кодом"
#: website/public/guides/index.html:215
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript и Electron"
#: website/public/guides/index.html:217
msgctxt "page:guides/index.html"
msgid "Follow a CSV export"
msgstr "Следите за экспортом CSV"
#: website/public/guides/index.html:218
msgctxt "page:guides/index.html"
msgid ""
"A small Notes app spreads one feature across the renderer, preload and main "
"process. Use REA to connect the API, IPC channel and file writer."
msgstr ""
"Небольшое приложение Notes объединяет в себе функции рендеринга, "
"предварительной загрузки и основного процесса. Используйте REA для "
"подключения API, IPC-канала и средства записи файлов."
#: website/public/guides/index.html:228
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron guide"
msgstr "Руководство по JavaScript и Electron"
#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a>
#: website/public/guides/index.html:231
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "For a larger packaged app, follow {ph0}Notion's clipboard bridge{ph1}."
msgstr ""
"Чтобы создать более крупное упакованное приложение, воспользуйтесь "
"{ph0}мостом буфера{ph1} обмена Notion."
#: website/public/guides/index.html:238
msgctxt "page:guides/index.html"
msgid "Browser behavior"
msgstr "Поведение браузера"
#: website/public/guides/index.html:240
msgctxt "page:guides/index.html"
msgid "Observe a click"
msgstr "Наблюдайте за щелчком"
#: website/public/guides/index.html:241
msgctxt "page:guides/index.html"
msgid ""
"Open a working Notes example, capture an export request and find the code "
"that turns its response into a download."
msgstr ""
"Откройте пример working Notes, запишите запрос на экспорт и найдите код, "
"который преобразует его ответ в загрузку."
#: website/public/guides/index.html:250
msgctxt "page:guides/index.html"
msgid "Browser observation guide"
msgstr "Руководство по наблюдению за браузером"
#: website/public/guides/index.html:6
msgctxt "page:guides/index.html"
msgid "Reverse Engineering Guides — REA"
msgstr "Руководства по реверс—инжинирингу - 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 ""
"Изучите REA на кратких примерах: собственные вычисления, экспорт Electron, "
"CSV и запрос из браузера."
#: website/public/guides/index.html:269
msgctxt "page:guides/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/guides/javascript/index.html:99
msgctxt "page:guides/javascript/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/javascript/index.html:181
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / JavaScript & Electron"
msgstr ""
"{ph0}Главная{ph1} страница / {ph2}Руководства{ph3} / JavaScript и Electron"
#. {ph0}: <br />
#: website/public/guides/javascript/index.html:185
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "Trace an Electron{ph0}CSV export."
msgstr "Проследите экспорт Electron {ph0} CSV."
#: website/public/guides/javascript/index.html:186
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow a button click from the page API, through Electron IPC, to the CSV "
"file writer."
msgstr ""
"Выполните нажатие кнопки на странице API, через Electron IPC, для записи "
"файлов CSV."
#: website/public/guides/javascript/index.html:193
msgctxt "page:guides/javascript/index.html"
msgid "In this guide"
msgstr "В этом руководстве"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:195
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}Приведенный пример{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:196
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Спросите своего агента{ph1}"
#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:197
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Trace the export code{ph1}"
msgstr "{ph0}Отслеживание экспортного кода{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:198
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Try the example{ph1}"
msgstr "{ph0}Попробуйте на примере{ph1}"
#. {ph0}: <a href="#next">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:199
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Inspect the CSV writer{ph1}"
msgstr "{ph0}Проверьте устройство записи CSV{ph1}"
#: website/public/guides/javascript/index.html:204
msgctxt "page:guides/javascript/index.html"
msgid "Where does “Export notes” go?"
msgstr "Куда девается “Экспорт заметок”?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/javascript/index.html:205
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"This guide uses a small Electron app. Clicking {ph0}Export notes{ph1} calls "
"an API in the page, crosses into the main process, and writes a CSV. The "
"behavior is spread across several files."
msgstr ""
"В этом руководстве используется небольшое приложение Electron. При нажатии "
"кнопки {ph0}Экспортировать заметки{ph1} вызывается API на странице, "
"выполняется переход к основному процессу и записывается CSV . Поведение "
"распределено по нескольким файлам."
#: website/public/guides/javascript/index.html:212
msgctxt "page:guides/javascript/index.html"
msgid "The CSV export across Electron processes"
msgstr "Экспорт CSV в рамках процессов Electron"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes.exportCsv()</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>renderer.js</code>
#. {ph7}: <code>preload.js</code>
#. {ph8}: </span >
#: website/public/guides/javascript/index.html:216
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Renderer → preload{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} calls the API exposed "
"by {ph7}.{ph8}"
msgstr ""
"{ph0}Средство визуализации → предварительная "
"загрузка{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} вызывает API, предоставляемый с "
"помощью {ph7}.{ph8}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes:export</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:224
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Between processes{ph1}{ph2}{ph3}{ph4}{ph5}The preload invokes an IPC "
"channel: a named message to the main process.{ph6}"
msgstr ""
"{ph0}Примечания: При экспорте предварительной загрузки вызывается IPC-канал:"
" именованное сообщение для основного процесса{ph1}{ph2}{ph3}{ph4}{ph5}.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>main.js</code>
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:232
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Main process{ph1}{ph2}An export handler{ph3}{ph4}{ph5} handles that "
"channel and calls the CSV writer.{ph6}"
msgstr ""
"{ph0}Основной процесс{ph1}{ph2} - обработчик экспорта{ph3}{ph4}{ph5} main.js"
" обрабатывает этот канал и вызывает CSV writer.{ph6}"
#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>main.js</code>
#. {ph2}: <code>downloads/notes.csv</code>
#: website/public/guides/javascript/index.html:241
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} formats the notes → {ph1} writes {ph2}."
msgstr "{ph0} форматирует заметки → {ph1} записывает файлы для {ph2}."
#: website/public/guides/javascript/index.html:245
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA matches the literal IPC call to its handler and identifies the exposed "
"API. The path is inferred from code; a runtime capture can check what "
"executes."
msgstr ""
"REA сопоставляет буквальный IPC-вызов с его обработчиком и идентифицирует "
"открытый API. Путь выводится из кода; при перехвате во время выполнения "
"можно проверить, что выполняется."
#: website/public/guides/javascript/index.html:253
msgctxt "page:guides/javascript/index.html"
msgid "Ask about the CSV export"
msgstr "Спросите об экспорте CSV"
#. {ph0}: <a href="../../get-started/#agent">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:254
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Connect your agent to REA{ph1} and give it the app directory or ASAR "
"file:"
msgstr ""
"{ph0}Подключите свой агент к REA{ph1} и передайте ему каталог приложений или"
" файл ASAR:"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/guides/javascript/index.html:260
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/guides/javascript/index.html:264
#: website/public/guides/javascript/index.html:413
msgctxt "page:guides/javascript/index.html"
msgid "Copy"
msgstr "Копировать"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="javascript-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/javascript/index.html:273
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find what happens when I export notes in this "
"app. Where is the CSV created?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы узнать, что происходит, когда я "
"экспортирую заметки в это приложение. Где создан CSV?{ph3}{ph4}{ph5}"
#. {ph0}: <code>app.asar</code>
#: website/public/guides/javascript/index.html:281
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Example prompt. Include the absolute path to the application folder or "
"{ph0}."
msgstr "Пример запроса. Укажите абсолютный путь к папке приложения или {ph0}."
#: website/public/guides/javascript/index.html:285
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA reads the application files and builds a map of entrypoints, modules and"
" process boundaries. Your agent uses that map to narrow the investigation to"
" the export feature."
msgstr ""
"REA считывает файлы приложения и создает карту точек входа, модулей и границ"
" процессов. Ваш агент использует эту карту, чтобы сузить область поиска до "
"функции экспорта."
#: website/public/guides/javascript/index.html:292
msgctxt "page:guides/javascript/index.html"
msgid "Trace the export code"
msgstr "Отслеживание экспортного кода"
#: website/public/guides/javascript/index.html:293
msgctxt "page:guides/javascript/index.html"
msgid "The page calls a small API"
msgstr "Страница вызывает небольшой API"
#: website/public/guides/javascript/index.html:306
msgctxt "page:guides/javascript/index.html"
msgid ""
"The page knows the method name. The implementation lives in the preload, "
"which exposes it to the renderer."
msgstr ""
"Странице известно имя метода. Реализация находится в предварительной "
"загрузке, которая предоставляет ее в распоряжение средства визуализации."
#. {ph0}: <code>notes.exportCsv</code>
#. {ph1}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:320
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA records {ph0} and the literal channel {ph1}. It pairs that invocation "
"with the single matching handler in the main process."
msgstr ""
"REA записывает {ph0} и буквенный канал {ph1}. Он связывает этот вызов с "
"единственным соответствующим обработчиком в основном процессе."
#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>notes.csv</code>
#: website/public/guides/javascript/index.html:337
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Reading the handler answers the original question: {ph0} formats the notes, "
"and the main process writes {ph1} into the user's Downloads folder."
msgstr ""
"Чтение обработчика дает ответ на исходный вопрос: {ph0} заметки "
"форматируются, и основной процесс записывает файл {ph1} в папку загрузок "
"пользователя."
#: website/public/guides/javascript/index.html:354
msgctxt "page:guides/javascript/index.html"
msgid ""
"Recorded by REA 4.1.0 on the downloadable example below. Source locations "
"accompany the API, channel and handler findings."
msgstr ""
"Записано с помощью REA 4.1.0 на примере, который можно загрузить ниже. "
"Расположение исходных текстов соответствует выводам API, канала и "
"обработчика."
#: website/public/guides/javascript/index.html:360
msgctxt "page:guides/javascript/index.html"
msgid "Analyze the example yourself"
msgstr "Проанализируйте этот пример самостоятельно"
#. {ph0}: <a class="button" href="../../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/guides/javascript/index.html:367
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}Пример загрузки ZIP-файла{ph1}"
#: website/public/guides/javascript/index.html:376
msgctxt "page:guides/javascript/index.html"
msgid "Browse the six source files"
msgstr "Просмотрите шесть исходных файлов"
#: website/public/guides/javascript/index.html:412
msgctxt "page:guides/javascript/index.html"
msgid "Static application analysis"
msgstr "Статический анализ приложений"
#. {ph0}: <code>normalized_result.summary.ipc</code>
#. {ph1}: <code>normalized_result.graph</code>
#: website/public/guides/javascript/index.html:425
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Replace the path with the folder you unzipped. You should find one IPC "
"channel and one matching handler in {ph0}. Source locations are in {ph1}."
msgstr ""
"Замените путь на папку, которую вы распаковали. Вы должны найти один IPC-"
"канал и один соответствующий обработчик в {ph0}. Местоположения источников "
"указаны в {ph1}."
#: website/public/guides/javascript/index.html:431
msgctxt "page:guides/javascript/index.html"
msgid ""
"For your own app, use the same command with its directory or ASAR path. An "
"agent can follow a literal string, API name or IPC channel with REA's "
"feature tracing tools."
msgstr ""
"Для вашего собственного приложения используйте ту же команду, указав его "
"каталог или путь к ASAR. Агент может использовать буквенную строку, имя API "
"или IPC-канал с помощью инструментов отслеживания функций REA."
#: website/public/guides/javascript/index.html:438
msgctxt "page:guides/javascript/index.html"
msgid "Inspect the CSV writer"
msgstr "Проверьте устройство записи CSV"
#. {ph0}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:440
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow {ph0} to its handler. Which inputs reach the CSV writer, and what "
"happens if writing the file fails?"
msgstr ""
"Следуйте {ph0} в его обработчик. Какие входные данные поступают в CSV writer"
" и что произойдет, если запись файла завершится неудачей?"
#: website/public/guides/javascript/index.html:446
msgctxt "page:guides/javascript/index.html"
msgid ""
"Use the source locations to inspect those details. Computed channel names "
"and ambiguous handlers can remain unresolved; runtime observations give you "
"another way to investigate them."
msgstr ""
"Используйте расположение источников для проверки этих сведений. Имена "
"вычисленных каналов и неоднозначные обработчики могут оставаться "
"неразрешенными; наблюдения во время выполнения дают вам другой способ их "
"изучения."
#. {ph0}: <a href="../../showcase/notion/" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/guides/javascript/index.html:452
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow Notion's clipboard bridge{ph1} {ph2}Apply the same approach to a"
" packaged Electron app.{ph3}"
msgstr ""
"{ph0}Воспользуйтесь мостом обмена{ph1} Notion и {ph2}примените тот же подход"
" к пакетному приложению Electron.{ph3}"
#. {ph0}: <a href="../browser/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:458
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Observe a browser export{ph1}{ph2}Capture a real click and see which "
"request it makes.{ph3}"
msgstr ""
"{ph0}Понаблюдайте, как браузер при экспорте{ph1}{ph2} фиксирует реальный "
"клик, и посмотрите, какой запрос он делает.{ph3}"
#. {ph0}: <a href="../native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:464
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow a native function{ph1}{ph2}Continue into a binary when a feature"
" depends on native code.{ph3}"
msgstr ""
"{ph0}Выполнение нативной функции{ph1}{ph2} продолжается в двоичном формате, "
"когда функция зависит от нативного кода.{ph3}"
#: website/public/guides/javascript/index.html:6
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript and Electron Analysis — REA"
msgstr "Анализ JavaScript и 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 ""
"Проследите экспорт Notes CSV с помощью API-интерфейса визуализации, "
"предварительной загрузки и обработчика IPC с помощью REA. Включает "
"загружаемые файлы примеров и проверенный результат анализа."
#: website/public/guides/javascript/index.html:192
msgctxt "page:guides/javascript/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/guides/javascript/index.html:202
msgctxt "page:guides/javascript/index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript и Electron"
#: website/public/guides/javascript/index.html:264
msgctxt "page:guides/javascript/index.html"
msgid "Copy example prompt"
msgstr "Запрос на копирование примера"
#: website/public/guides/javascript/index.html:413
msgctxt "page:guides/javascript/index.html"
msgid "Copy static application analysis"
msgstr "Копирование статического анализа приложения"
#: website/public/guides/javascript/index.html:490
msgctxt "page:guides/javascript/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/guides/native/index.html:99
msgctxt "page:guides/native/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/guides/native/index.html:181
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Native analysis"
msgstr ""
"{ph0}Главная{ph1} страница / {ph2}Руководства{ph3} / Анализ программ с "
"машинным кодом"
#. {ph0}: <br />
#: website/public/guides/native/index.html:184
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "Recover DX-Ball's{ph0}sound-pan calculation."
msgstr "Восстановить данные DX-Ball{ph0}расчет положения звука слева/справа."
#: website/public/guides/native/index.html:185
msgctxt "page:guides/native/index.html"
msgid ""
"Inspect the original instructions, identify the input and constants, then "
"check the recovered C."
msgstr ""
"Просмотрите исходные инструкции, определите входные данные и константы, "
"затем проверьте восстановленный C."
#: website/public/guides/native/index.html:192
msgctxt "page:guides/native/index.html"
msgid "In this guide"
msgstr "В этом руководстве"
#. {ph0}: <a href="#example">
#. {ph1}: </a>
#: website/public/guides/native/index.html:194
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}The example{ph1}"
msgstr "{ph0}Приведенный пример{ph1}"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/native/index.html:195
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Спросите своего агента{ph1}"
#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/native/index.html:196
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Read the REA results{ph1}"
msgstr "{ph0}Ознакомьтесь с результатами REA{ph1}"
#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/native/index.html:197
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Recover and check{ph1}"
msgstr "{ph0}Восстановите и проверьте{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/native/index.html:198
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Use your own binary{ph1}"
msgstr "{ph0}Используйте свой собственный двоичный файл{ph1}"
#: website/public/guides/native/index.html:203
msgctxt "page:guides/native/index.html"
msgid "Calculate left/right sound panning"
msgstr "Рассчитать расположение стереозвука слева / справа"
#: website/public/guides/native/index.html:204
msgctxt "page:guides/native/index.html"
msgid ""
"In DX-Ball, a brick hit supplies a horizontal screen position. The sound "
"code turns it into a left/right panning value."
msgstr ""
"В DX-Ball удар кирпича задает горизонтальное положение экрана. Звуковой код "
"преобразует его в значение поворота влево/вправо."
#. {ph0}: <code>0x00406400</code>
#. {ph1}: <code>__ftol()</code>
#: website/public/guides/native/index.html:208
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"The starting function, {ph0}, has a short decompiler result: a call to "
"{ph1}. REA also returns its instructions and callers, which give the agent a"
" way to investigate the missing arithmetic."
msgstr ""
"Начальная функция, {ph0}, выдает короткий результат декомпиляции: вызов "
"функции {ph1}. REA также возвращает свои инструкции и вызывающие "
"устройства, которые дают агенту возможность найти недостающую арифметику."
#: website/public/guides/native/index.html:215
msgctxt "page:guides/native/index.html"
msgid "New to these terms?"
msgstr "Вы знакомы с этими условиями?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>MOV</code>
#. {ph3}: <code>ADD</code>
#: website/public/guides/native/index.html:217
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Instructions:{ph1} the steps the processor runs, shown in readable form"
" such as {ph2} or {ph3}."
msgstr ""
"{ph0}Инструкции:{ph1} шаги, выполняемые процессором, отображаются в "
"удобочитаемой форме, такой как {ph2} или {ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:222
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Decompiler result / pseudocode:{ph1} an analysis tool's attempt to turn"
" instructions back into C-like code. It can miss parts, as in this example."
msgstr ""
"{ph0}Результат декомпиляции / псевдокод:{ph1} попытка инструмента анализа "
"преобразовать инструкции обратно в C-подобный код. В нем могут отсутствовать"
" отдельные части, как в этом примере."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:227
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Caller:{ph1} a function that calls this one. It shows which values are "
"passed in."
msgstr ""
"{ph0}Вызывающая функция:{ph1} функция, которая вызывает эту функцию. Она "
"показывает, какие значения передаются."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x00406400</code>
#: website/public/guides/native/index.html:231
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Address:{ph1} a location in the program, written in hexadecimal, such "
"as {ph2}."
msgstr ""
"{ph0}Адрес:{ph1} местоположение в программе, записанное в шестнадцатеричном "
"формате, например, {ph2}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:235
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Constants:{ph1} fixed numbers stored in the program, read as raw bytes "
"and decoded."
msgstr ""
"{ph0}Константы:{ph1} фиксированные числа, хранящиеся в программе, "
"считываемые как необработанные байты и декодируемые."
#: website/public/guides/native/index.html:242
msgctxt "page:guides/native/index.html"
msgid "Three pieces of evidence, one calculation"
msgstr "Три улики, один расчет"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/guides/native/index.html:246
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}01 · Instructions{ph1}{ph2}An integer input{ph3}{ph4}A stack read "
"supplies the value used by the floating-point instructions.{ph5}"
msgstr ""
"{ph0}01 · Инструкции{ph1}{ph2} Целочисленный ввод{ph3}{ph4}, считываемый "
"стеком, предоставляет значение, используемое инструкциями с плавающей "
"запятой.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>20 + 30 × tile_x</code>
#. {ph6}: </span >
#: website/public/guides/native/index.html:254
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}02 · Caller{ph1}{ph2}A screen coordinate{ph3}{ph4}The brick-hit caller "
"passes {ph5}.{ph6}"
msgstr ""
"{ph0}02 · Вызывающий абонент{ph1}{ph2} - Экранная координата{ph3}{ph4}, по "
"которой вызывающий абонент, ударившийся кирпичом, проходит {ph5}.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>1.5625</code>
#. {ph6}: <code>500.0</code>
#. {ph7}: </span >
#: website/public/guides/native/index.html:262
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}03 · Data bytes{ph1}{ph2}The numeric constants{ph3}{ph4}Referenced "
"bytes decode to {ph5}, {ph6} and a scale value.{ph7}"
msgstr ""
"{ph0}03 · Байты данных{ph1}{ph2} Числовые константы{ph3}{ph4}, на которые "
"ссылаются байты, декодируются как {ph5}, {ph6} и масштабное значение.{ph7}"
#: website/public/guides/native/index.html:274
msgctxt "page:guides/native/index.html"
msgid ""
"REA supplies the instructions, call relationship and bytes. The agent "
"interprets them together."
msgstr ""
"REA предоставляет инструкции, связь между вызовами функций и байты. Агент "
"интерпретирует их вместе."
#: website/public/guides/native/index.html:281
msgctxt "page:guides/native/index.html"
msgid "Ask about the behavior"
msgstr "Спросите о поведении"
#. {ph0}: <a href="../../get-started/#agent" >
#. {ph1}: </a >
#. {ph2}: <a href="../../get-started/#native" >
#. {ph3}: </a >
#: website/public/guides/native/index.html:282
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"After {ph0}connecting REA to your agent{ph1} and {ph2}setting up a native "
"analysis tool{ph3}, provide the local executable and a question:"
msgstr ""
"После {ph0}подключения REA к вашему агенту{ph1} и {ph2}настройки инструмента"
" анализа программ с машинным кодом{ph3} предоставьте локальный исполняемый "
"файл и вопрос:"
#: website/public/guides/native/index.html:293
msgctxt "page:guides/native/index.html"
msgid "Which analysis tool should I use?"
msgstr "Какой инструмент анализа мне следует использовать?"
#: website/public/guides/native/index.html:294
msgctxt "page:guides/native/index.html"
msgid "REA needs one of these to read native programs:"
msgstr "REA нужен один из них для чтения собственных программ:"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:296
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Hopper{ph1} (macOS or Linux): REA's setup detects it or offers to "
"install it. On macOS, open Hopper once and choose demo mode or activate a "
"license before your first analysis."
msgstr ""
"{ph0} Hopper{ph1} ( macOS или Linux ): Программа установки REA обнаруживает "
"его или предлагает установить. На macOS откройте Hopper один раз и выберите "
"демонстрационный режим или активируйте лицензию перед первым анализом."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:302
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Ghidra{ph1} (macOS or Linux; experimental on Windows): free, but needs "
"an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer."
msgstr ""
"{ph0} Ghidra{ph1} ( macOS или Linux ; экспериментальная версия Windows ): "
"бесплатен, но требует существующей установки Ghidra 12.1.x и 64-разрядной "
"версии JDK 21 или новее."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:307
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}IDA{ph1} (Windows): for an existing IDA setup with an MCP registration."
msgstr ""
"{ph0} IDA{ph1} ( Windows ): для существующей настройки IDA с регистрацией "
"MCP."
#. {ph0}: <a href="../../get-started/#native">
#. {ph1}: </a>
#: website/public/guides/native/index.html:312
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "See {ph0}Set up native analysis{ph1} for the steps."
msgstr ""
"Инструкции по настройке анализа программ с машинным кодом приведены в "
"разделе {ph0}Настройка анализа программ с машинным кодом{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/guides/native/index.html:320
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/guides/native/index.html:324
#: website/public/guides/native/index.html:455
msgctxt "page:guides/native/index.html"
msgid "Copy"
msgstr "Копировать"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="native-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/native/index.html:333
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы узнать, как DX-Ball рассчитывает "
"расположение стереозвука. Объясните расчет и покажите код.{ph3}{ph4}{ph5}"
#: website/public/guides/native/index.html:341
msgctxt "page:guides/native/index.html"
msgid ""
"Example prompt. Give your agent the path to your local DX-Ball 1.07 "
"executable. REA doesn't include DX-Ball, so use your own copy, or ask the "
"same kind of question about another small Windows program you have."
msgstr ""
"Пример запроса. Укажите своему агенту путь к локальному исполняемому файлу "
"DX-Ball 1.07. REA не включает DX-Ball, поэтому используйте свою собственную"
" копию или задайте такой же вопрос о другой небольшой программе Windows, "
"которая у вас есть."
#: website/public/guides/native/index.html:348
msgctxt "page:guides/native/index.html"
msgid "How do I get a file's full path?"
msgstr "Как мне получить полный путь к файлу?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:350
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the file and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0} Windows :{ph1} в проводнике щелкните файл правой кнопкой мыши и "
"выберите \"{ph2}Копировать как путь{ph3}\". На Windows 10, удерживая Shift, "
"щелкните правой кнопкой мыши."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:355
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the file, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr ""
"{ph0} macOS :{ph1} в Finder щелкните файл правой кнопкой мыши, удерживайте "
"опцию и выберите {ph2}Копировать \"...\" в качестве пути{ph3}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:359
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the file into a terminal window and its path "
"appears."
msgstr ""
"{ph0}Любая система:{ph1} перетащите файл в окно терминала, и появится путь к"
" нему."
#: website/public/guides/native/index.html:367
msgctxt "page:guides/native/index.html"
msgid "Read the REA results"
msgstr "Ознакомьтесь с результатами REA"
#: website/public/guides/native/index.html:368
msgctxt "page:guides/native/index.html"
msgid "Read the input"
msgstr "Прочитайте входные данные"
#: website/public/guides/native/index.html:377
msgctxt "page:guides/native/index.html"
msgid ""
"The instructions load an integer argument and convert it for floating-point "
"arithmetic. This is the input absent from the first pseudocode view."
msgstr ""
"Инструкции загружают целочисленный аргумент и преобразуют его в арифметику с"
" плавающей запятой. Это входные данные, отсутствующие в первом представлении"
" псевдокода."
#: website/public/guides/native/index.html:382
msgctxt "page:guides/native/index.html"
msgid "Follow the caller"
msgstr "Следуйте за звонящим"
#. {ph0}: <code>0x14</code>
#: website/public/guides/native/index.html:391
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"REA identifies the brick-hit caller. Its earlier instructions multiply the "
"tile coordinate by 30; adding {ph0} (20) gives the brick's screen position."
msgstr ""
"REA идентифицирует объект, на который упал кирпич. В предыдущих инструкциях "
"координата плитки умножалась на 30; добавление {ph0} (20) дает положение "
"кирпича на экране."
#: website/public/guides/native/index.html:396
msgctxt "page:guides/native/index.html"
msgid "Read the referenced constants"
msgstr "Прочитайте указанные константы"
#: website/public/guides/native/index.html:407
msgctxt "page:guides/native/index.html"
msgid ""
"The arithmetic references these addresses. Reading the bytes supplies the "
"actual values; the instruction order tells the agent how they are used."
msgstr ""
"Арифметика ссылается на эти адреса. Считывание байтов позволяет получить "
"фактические значения; порядок команд сообщает агенту, как они используются."
#: website/public/guides/native/index.html:414
msgctxt "page:guides/native/index.html"
msgid "Write and check the recovered function"
msgstr "Запишите и проверьте восстановленную функцию"
#: website/public/guides/native/index.html:423
msgctxt "page:guides/native/index.html"
msgid ""
"With a scale of 1.0, screen positions 0, 320 and 640 map to −500, 0 and 500 "
"before integer conversion. The calculation puts the center of the screen at "
"the center of the stereo field."
msgstr ""
"При масштабе 1,0 позиции экрана 0, 320 и 640 преобразуются в -500, 0 и 500 "
"до преобразования в целое число. При вычислении центр экрана оказывается в "
"центре стереополя."
#: website/public/guides/native/index.html:428
msgctxt "page:guides/native/index.html"
msgid ""
"The agent used REA's findings to write the C. Separate checks compared 3,205"
" inputs against the original x86 function and reproduced all 63 compiled "
"bytes of the complete function."
msgstr ""
"Агент использовал результаты REA для написания кода C. Отдельные проверки "
"сравнили 3205 входных данных с исходной функцией x86 и воспроизвели все 63 "
"скомпилированных байта полной функции."
#. {ph0}: <a href="../../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:433
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}See the full investigation and assembly-to-C comparison{ph1}"
msgstr "{ph0}Смотрите полное исследование и сравнение сборки с C{ph1}"
#: website/public/guides/native/index.html:440
msgctxt "page:guides/native/index.html"
msgid "Try it with your own binary"
msgstr "Попробуйте это с вашим собственным двоичным кодом"
#. {ph0}: <a href="../../get-started/#native" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:441
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Connect a native analysis provider{ph1}, then give your agent a local "
"executable or library and a feature to investigate. Useful starting "
"questions include “How is this file parsed?” or “Which function handles this"
" menu action?”"
msgstr ""
"{ph0}Подключите поставщика программ для анализа машинного кода{ph1}, затем "
"предоставьте своему агенту локальный исполняемый файл или библиотеку и "
"функцию для изучения. Полезные начальные вопросы включают в себя “Как "
"обрабатывается этот файл?” или “Какая функция выполняет это действие в "
"меню?”."
#: website/public/guides/native/index.html:448
msgctxt "page:guides/native/index.html"
msgid ""
"If you already know a function name or address, you can query it from the "
"terminal. For a configured Ghidra installation:"
msgstr ""
"Если вы уже знаете название функции или адрес, вы можете запросить его из "
"терминала. Для настроенной установки Ghidra:"
#: website/public/guides/native/index.html:454
msgctxt "page:guides/native/index.html"
msgid "Function analysis"
msgstr "Функциональный анализ"
#. {ph0}: <code>main</code>
#: website/public/guides/native/index.html:467
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"Replace the target path and {ph0} with your own function name or address. "
"Each CLI invocation imports and analyzes the binary, then closes its "
"session. Your agent's MCP queries reuse the imported binary while that "
"session is open."
msgstr ""
"Замените целевой путь и {ph0} на свое собственное имя функции или адрес. "
"Каждый вызов CLI импортирует и анализирует двоичный файл, а затем закрывает "
"свой сеанс. Запросы вашего агента MCP повторно используют импортированный "
"двоичный файл, пока этот сеанс открыт."
#: website/public/guides/native/index.html:473
msgctxt "page:guides/native/index.html"
msgid ""
"Read the pseudocode alongside instructions and references. When a result "
"leaves a call or value unresolved, use that location as the next question."
msgstr ""
"Прочтите псевдокод вместе с инструкциями и ссылками. Если в результате "
"остается нерешенным вопрос о вызове или значении, используйте это "
"местоположение в качестве следующего вопроса."
#: website/public/guides/native/index.html:6
msgctxt "page:guides/native/index.html"
msgid "Native Binary Analysis — REA"
msgstr "Собственный бинарный анализ — 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 ""
"Восстановите собственные вычисления с помощью REA: просмотрите инструкции, "
"следуйте за вызывающим пользователем, считывайте константы и проверяйте "
"восстановленный C."
#: website/public/guides/native/index.html:191
msgctxt "page:guides/native/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/guides/native/index.html:201
msgctxt "page:guides/native/index.html"
msgid "Native analysis"
msgstr "Анализ программ с машинным кодом"
#: website/public/guides/native/index.html:324
msgctxt "page:guides/native/index.html"
msgid "Copy example prompt"
msgstr "Запрос на копирование примера"
#: website/public/guides/native/index.html:455
msgctxt "page:guides/native/index.html"
msgid "Copy function analysis"
msgstr "Анализ функции копирования"
#: website/public/guides/native/index.html:496
msgctxt "page:guides/native/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/index.html:101
msgctxt "page:index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#: website/public/index.html:183 website/public/index.html:193
#: website/public/index.html:191
msgctxt "page:index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/index.html:184 website/public/index.html:233
msgctxt "page:index.html"
msgid "Set up REA"
msgstr "Настройка REA"
#. {ph0}: <a href="#setup" aria-current="location">
#. {ph1}: </a>
#: website/public/index.html:195
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Set up REA{ph1}"
msgstr "{ph0}Настройка REA{ph1}"
#. {ph0}: <a href="#what-is-re">
#. {ph1}: </a>
#: website/public/index.html:196
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}What is RE?{ph1}"
msgstr "{ph0}Что такое ОГОНЬ?{ph1}"
#. {ph0}: <a href="#how-rea-helps">
#. {ph1}: </a>
#: website/public/index.html:197
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}How REA helps{ph1}"
msgstr "{ph0}Как помогает REA{ph1}"
#. {ph0}: <a href="#dinosaur">
#. {ph1}: </a>
#: website/public/index.html:198
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Dinosaur game{ph1}"
msgstr "{ph0}Игра в динозавров{ph1}"
#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:199
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Calculator{ph1}"
msgstr "{ph0}Калькулятор{ph1}"
#. {ph0}: <a href="#try-rea">
#. {ph1}: </a>
#: website/public/index.html:200
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Try REA{ph1}"
msgstr "{ph0}Попробуйте REA{ph1}"
#. {ph0}: <a href="#analyze">
#. {ph1}: </a>
#: website/public/index.html:201
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Go deeper{ph1}"
msgstr "{ph0}Узнать больше{ph1}"
#. {ph0}: <a href="#questions">
#. {ph1}: </a>
#: website/public/index.html:202
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Help & feedback{ph1}"
msgstr "{ph0}Помощь и обратная связь{ph1}"
#. {ph0}: <a href="#community">
#. {ph1}: </a>
#: website/public/index.html:203
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Community{ph1}"
msgstr "{ph0}Сообщество{ph1}"
#: website/public/index.html:212
msgctxt "page:index.html"
msgid "Reverse engineering, with your coding agent"
msgstr "Обратное проектирование с помощью вашего агента по кодированию"
#. {ph0}: <br />
#: website/public/index.html:213
#, python-brace-format
msgctxt "page:index.html"
msgid "Find out how{ph0}software works."
msgstr "Узнайте, как{ph0}работает программа."
#: website/public/index.html:214
msgctxt "page:index.html"
msgid ""
"REA gives your agent the tools to inspect a program and explain what it "
"does."
msgstr ""
"REA даёт вашему ИИ-помощнику инструменты для исследования программы и "
"объяснения её поведения."
#. {ph0}: <a href="#analysis-guides">
#. {ph1}: </a>
#: website/public/index.html:223
#, python-brace-format
msgctxt "page:index.html"
msgid "Already know RE? {ph0}Skip to analysis guides →{ph1}"
msgstr "Уже знакомы с RE? {ph0}Перейти к руководствам по анализу →{ph1}"
#. {ph0}: <a href="blog/">
#. {ph1}: </a>
#: website/public/index.html:227
#, python-brace-format
msgctxt "page:index.html"
msgid "Want to go deeper? {ph0}Read the Blog →{ph1}"
msgstr "Хотите копнуть глубже? {ph0}Читать блог →{ph1}"
#: website/public/index.html:234
msgctxt "page:index.html"
msgid "Copy this into your coding agent:"
msgstr "Вставьте этот запрос в своего ИИ-помощника для программирования:"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:237
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/index.html:242 website/public/index.html:264
#: website/public/index.html:479 website/public/index.html:647
#: website/public/index.html:883 website/public/index.html:1045
#: website/public/index.html:1073
msgctxt "page:index.html"
msgid "Copy"
msgstr "Копировать"
#: website/public/index.html:261
msgctxt "page:index.html"
msgid "Or run this in your terminal:"
msgstr "Или выполните эту команду в терминале:"
#: website/public/index.html:273
msgctxt "page:index.html"
msgid "Approve the setup plan, then restart your agent."
msgstr "Проверьте и одобрите план изменений, затем перезапустите помощника."
#: website/public/index.html:288
msgctxt "page:index.html"
msgid "What is reverse engineering?"
msgstr "Что такое обратная разработка?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:289
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Finding out how software works by {ph0}examining the program itself.{ph1}"
msgstr ""
"Изучение того, как работает программа, через {ph0}исследование самой "
"программы.{ph1}"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#. {ph2}: <mark class="prose-highlight">
#. {ph3}: </mark>
#. {ph4}: <mark class="prose-highlight">
#. {ph5}: </mark>
#: website/public/index.html:294
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The goal: understand a feature well enough to {ph0}explain it{ph1}, "
"{ph2}change it{ph3} or {ph4}rebuild it.{ph5}"
msgstr ""
"Цель: понять функцию достаточно хорошо, чтобы {ph0}объяснить ее{ph1}, "
"{ph2}изменить{ph3} или {ph4}перестроить заново.{ph5}"
#. {ph0}: <strong class="prose-highlight">
#. {ph1}: </strong>
#: website/public/index.html:312
#, python-brace-format
msgctxt "page:index.html"
msgid "Before REA · You investigate it {ph0}yourself{ph1}"
msgstr "До REA · Вы исследуете {ph0}самостоятельно{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:321
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}01{ph1} Decode branches"
msgstr "{ph0}01{ph1} Декодирование ветвей"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:329
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}02{ph1} Trace calls"
msgstr "{ph0}02{ph1} Отслеживание вызовов"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:337
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}03{ph1} Recover the rule"
msgstr "{ph0}03{ph1} Восстановите правило"
#. {ph0}: <span>
#. {ph1}: </span>
#. {ph2}: <span class="assembly-disclosure" aria-hidden="true">
#. {ph3}: </span>
#: website/public/index.html:352
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Original x64 · selected instructions{ph1} {ph2}{ph3}"
msgstr "{ph0}Оригинальные выбранные инструкции для x64 ·{ph1}{ph2}{ph3}"
#: website/public/index.html:391
msgctxt "page:index.html"
msgid "01 · Which branch?"
msgstr "01 · В каком филиале?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:392
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“{ph0}0x5b? 0x5c?{ph1} Two jumps to the same place. Which operators are "
"these?”"
msgstr ""
"“{ph0}0x5b? 0x5c?{ph1} Два перехода в одно и то же место. Что это за "
"операторы?”"
#: website/public/index.html:396
msgctxt "page:index.html"
msgid "Look up the command IDs, then label the branch."
msgstr "Найдите идентификаторы команд, затем пометьте ветвь."
#: website/public/index.html:402
msgctxt "page:index.html"
msgid "Divide ÷"
msgstr "Разделить ÷"
#: website/public/index.html:406
msgctxt "page:index.html"
msgid "Multiply ×"
msgstr "Умножить ×"
#: website/public/index.html:411
msgctxt "page:index.html"
msgid "02 · What do the calls do?"
msgstr "02 · Что делают вызываемые функции?"
#. {ph0}: <strong>
#. {ph1}: </strong >
#: website/public/index.html:412
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“100 is clear. The calls are just addresses. {ph0}Which one divides? Which "
"value goes in?{ph1}”"
msgstr ""
"“100 - это чисто. Вызовы - это просто адреса. {ph0}Какой из них делится? "
"Какое значение входит в?{ph1}”"
#: website/public/index.html:417
msgctxt "page:index.html"
msgid "Inspect the helpers and trace the stored values."
msgstr "Проверьте вспомогательные функции и проследите сохраненные значения."
#: website/public/index.html:427
msgctxt "page:index.html"
msgid "Divide"
msgstr "Делить"
#: website/public/index.html:432
msgctxt "page:index.html"
msgid "03 · What is the rule?"
msgstr "03 · Каково это правило?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:433
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“This path multiplies by the other input. So {ph0}10% means 10% of 200{ph1} "
"after +.”"
msgstr ""
"“Этот путь умножается на другие входные данные. Таким образом, {ph0}10% "
"означает 10% от 200{ph1} после +”."
#: website/public/index.html:437
msgctxt "page:index.html"
msgid "Name the operands and check both operator paths."
msgstr "Назовите операнды и проверьте оба пути к операторам."
#: website/public/index.html:453 website/public/index.html:381
msgctxt "page:index.html"
msgid "Illustrative expert reasoning"
msgstr "Наглядное рассуждение эксперта"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:456
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}You decode the instructions, follow the calls and reconstruct the "
"calculation.{ph1}"
msgstr ""
"{ph0}Вы расшифровываете инструкции, выполняете вызовы функций и "
"восстанавливаете вычисления.{ph1}"
#. {ph0}: <strong class="prose-highlight">
#. {ph1}: </strong>
#: website/public/index.html:464
#, python-brace-format
msgctxt "page:index.html"
msgid "With REA · You ask {ph0}your agent{ph1}"
msgstr "С REA · Вы спрашиваете {ph0}своего помощника{ph1}"
#: website/public/index.html:468
msgctxt "page:index.html"
msgid "One prompt."
msgstr "Всего один запрос."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:469
#, python-brace-format
msgctxt "page:index.html"
msgid "Ask your agent {ph0}in plain English.{ph1}"
msgstr "Задайте помощнику вопрос {ph0}обычными словами.{ph1}"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:474
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Calculator"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Пример подсказки · Калькулятор"
#: website/public/index.html:496
msgctxt "page:index.html"
msgid "Example answer · based on the findings"
msgstr "Пример ответа · основан на результатах исследования"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:499
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"After +, the % button takes {ph0}a percentage of the first number.{ph1}"
msgstr ""
"После + кнопка % выводит {ph0}процентное значение от первого числа.{ph1}"
#: website/public/index.html:511
msgctxt "page:index.html"
msgid "REA supplies"
msgstr "REA предоставляет"
#: website/public/index.html:512
msgctxt "page:index.html"
msgid "The handler’s instructions, decompiled code and calls."
msgstr "Инструкции обработчика, декомпилированный код и вызовы."
#: website/public/index.html:517
msgctxt "page:index.html"
msgid "Your agent explains"
msgstr "Помощник объясняет"
#: website/public/index.html:518
msgctxt "page:index.html"
msgid "Which branch applies, what it calculates and how to rebuild it."
msgstr "Какая ветвь применяется, что она вычисляет и как ее перестроить."
#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:525
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Selected assembly from the installed Calculator DLL. The thoughts and reply "
"illustrate the findings. {ph0}Continue with the Calculator example ↓{ph1}"
msgstr ""
"Выберите сборку из установленной библиотеки DLL Calculator. Соображения и "
"ответ иллюстрируют полученные результаты. {ph0}Продолжим с примером с "
"калькулятором ↓{ph1}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:536
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Let's try two examples.{ph1} Change a game's speed, then return to "
"Calculator and rebuild its % button."
msgstr ""
"{ph0}Давайте рассмотрим два примера.{ph1} Измените скорость игры, затем "
"вернитесь в калькулятор и перестройте его кнопку %."
#: website/public/index.html:542
msgctxt "page:index.html"
msgid "Example 01 · Chrome’s dinosaur game"
msgstr "Пример 01 · Игра в динозавров Chrome"
#: website/public/index.html:543
msgctxt "page:index.html"
msgid "Why does the dinosaur get faster?"
msgstr "Почему динозавр ускоряется?"
#: website/public/index.html:547 website/public/index.html:785
msgctxt "page:index.html"
msgid "Goal"
msgstr "Цель"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/index.html:548
#, python-brace-format
msgctxt "page:index.html"
msgid "Rebuild the game with {ph0}adjustable speed.{ph1}"
msgstr "Перестраивайте игру с {ph0}регулируемой скоростью.{ph1}"
#: website/public/index.html:554 website/public/index.html:792
msgctxt "page:index.html"
msgid "Why reverse engineer it?"
msgstr "Зачем его перепроектировать?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:555
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"To reproduce its acceleration, we need {ph0}the rule in the running "
"game{ph1}: how fast it starts, how much it increases and when it stops."
msgstr ""
"Чтобы воспроизвести его ускорение, нам нужно {ph0}правило в бегущей "
"игре{ph1}: как быстро оно начинается, насколько увеличивается и когда "
"прекращается."
#: website/public/index.html:564
msgctxt "page:index.html"
msgid "Play the reconstruction"
msgstr "Играть в воссозданную версию"
#: website/public/index.html:596
msgctxt "page:index.html"
msgid "Play"
msgstr "Играть"
#: website/public/index.html:599
msgctxt "page:index.html"
msgid "Jump ↑"
msgstr "Прыжок ↑"
#: website/public/index.html:600
msgctxt "page:index.html"
msgid "Restart"
msgstr "Начать заново"
#: website/public/index.html:603
msgctxt "page:index.html"
msgid "Speed"
msgstr "Скорость"
#: website/public/index.html:613
msgctxt "page:index.html"
msgid "Use the recovered acceleration rule"
msgstr "Используйте правило восстановленного ускорения"
#: website/public/index.html:617
msgctxt "page:index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "Первоначальное правило: начинайте с 6, затем увеличивайте до 13."
#: website/public/index.html:620
msgctxt "page:index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr ""
"Перемещайте ползунок, чтобы установить собственную скорость. Пробел или "
"прыжок убирают кактус."
#: website/public/index.html:625
msgctxt "page:index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr ""
"Включите JavaScript для воспроизведения реконструкции. Приведенный выше код "
"и пояснения остаются читаемыми."
#: website/public/index.html:633 website/public/index.html:863
msgctxt "page:index.html"
msgid "REA returned"
msgstr "REA вернул"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:634
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}The script actually running in the page.{ph1} The agent reads its "
"update function and speed settings, then uses that rule in a new game."
msgstr ""
"{ph0}Скрипт, фактически запущенный на странице.{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:642
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Dinosaur game"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Пример подсказки · Игра в динозавров"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dino-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:656
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы ознакомиться с этой игрой про "
"динозавров. Почему она стала быстрее? Покажите правило скорости, а затем "
"создайте уменьшенную версию с регулируемой скоростью.{ph3}{ph4}{ph5}"
#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#: website/public/index.html:665
#, python-brace-format
msgctxt "page:index.html"
msgid "Inspected target: {ph0}wayou’s Chromium-derived browser edition{ph1}."
msgstr ""
"Проверенная цель: {ph0}версия браузера wayou, основанная{ph1} на Chromium."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#. {ph4}: <strong>
#. {ph5}: </strong>
#: website/public/index.html:682
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Start at 6.{ph1} Add {ph2}0.001{ph3} each update without a collision, "
"while speed is below {ph4}13{ph5}."
msgstr ""
"{ph0}Начните с 6.{ph1} Добавляйте 0,001 при каждом обновлении без сбоев, "
"пока скорость ниже 13.{ph2}{ph3}{ph4}{ph5}"
#: website/public/index.html:687
msgctxt "page:index.html"
msgid "Open the speed lab →"
msgstr "Откройте лабораторию скорости →"
#: website/public/index.html:693
msgctxt "page:index.html"
msgid "What each part does"
msgstr "Что делает каждая часть"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:695
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA{ph1}{ph2}Read the running game’s script{ph3}{ph4}Return its "
"actual code and settings to the agent.{ph5}"
msgstr ""
"{ph0}01 · REA{ph1}{ph2} Считывает скрипт запущенной игры{ph3}{ph4} и "
"возвращает его действительный код и настройки агенту.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:702
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · Your agent{ph1}{ph2}Rebuild the rule, add a control{ph3}{ph4}Use "
"the recovered acceleration in a small game with a speed slider.{ph5}"
msgstr ""
"{ph0}02 · Ваш агент{ph1}{ph2} перестроит правило, добавит элемент "
"управления{ph3}{ph4} и использует восстановленное ускорение в небольшой игре"
" с ползунком скорости.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:710
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · You{ph1}{ph2}Change the speed and play{ph3}{ph4}Try the original "
"acceleration, then choose your own pace.{ph5}"
msgstr ""
"{ph0}03 · Вы{ph1}{ph2} меняете скорость и играете{ph3}{ph4} с оригинальным "
"ускорением, затем выбираете свой собственный темп.{ph5}"
#: website/public/index.html:721
msgctxt "page:index.html"
msgid "See the script, checks and how to try the analysis"
msgstr "Ознакомьтесь со сценарием, проверками и тем, как попробовать анализ"
#. {ph0}: <code>index.js</code>
#: website/public/index.html:724
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"REA inspected the HTTP browser edition through a local debugging connection "
"and returned the loaded {ph0}, including its source and digest."
msgstr ""
"REA проверил версию HTTP-браузера через локальное отладочное соединение и "
"вернул загруженный {ph0}, включая его исходный код и дайджест."
#: website/public/index.html:737
msgctxt "page:index.html"
msgid ""
"We called the original game’s update function in a controlled browser check,"
" with obstacles and automatic scheduling disabled. After 4,000 updates, "
"speed was 10.0; after 10,000, it was 13.0, rounded to one decimal."
msgstr ""
"Мы запустили функцию обновления оригинальной игры в контролируемой "
"браузерной проверке, отключив препятствия и автоматическое планирование. "
"После 4000 обновлений скорость составила 10,0; после 10 000 - 13,0, "
"округленная до одного знака после запятой."
#. {ph0}: <a href="examples/dino-lab/">
#. {ph1}: </a>
#: website/public/index.html:743
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The new mini-game keeps that speed rule. Its drawing, jumping and collision "
"code are a small teaching implementation. {ph0}Open the lab{ph1} to see the "
"new code and run the same speed check."
msgstr ""
"В новой мини-игре сохранено это правило скорости. Ее код для рисования, "
"прыжков и столкновений - это небольшая обучающая реализация. {ph0}Откройте "
"лабораторию{ph1}, чтобы ознакомиться с новым кодом и выполнить ту же "
"проверку скорости."
#. {ph0}: <a href="guides/browser/#prepare">
#. {ph1}: </a>
#. {ph2}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph3}: </a >
#: website/public/index.html:749
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"To inspect the target yourself, follow the {ph0}browser connection "
"steps{ph1} using {ph2}the dinosaur page{ph3}. Give your agent that page URL "
"and your local debugging endpoint, then copy the prompt above."
msgstr ""
"Чтобы самостоятельно проверить целевой объект, выполните {ph0}действия по "
"подключению к браузеру{ph1}, используя {ph2}страницу dinosaur{ph3}. Укажите "
"своему агенту URL этой страницы и локальную конечную точку отладки, затем "
"скопируйте приведенное выше приглашение."
#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/index.html:758
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Inspected speed code{ph1} · {ph2}Chromium Authors · BSD license{ph3}"
msgstr ""
"{ph0}Проверенный код скорости{ph1} · {ph2}Авторы Chromium · Лицензия "
"BSD{ph3}"
#: website/public/index.html:775
msgctxt "page:index.html"
msgid "Example 02 · Windows Calculator"
msgstr "Пример 02 · Калькулятор Windows"
#: website/public/index.html:776
msgctxt "page:index.html"
msgid "Rebuild Calculator’s % button."
msgstr "Воссоздайте кнопку % калькулятора."
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/index.html:786
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Build a small calculator that handles {ph0}both + and × correctly.{ph1}"
msgstr ""
"Создайте небольшой калькулятор, который {ph0}корректно обрабатывает как +, "
"так и ×.{ph1}"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:793
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The same button uses {ph0}different rules after + and ×.{ph1} We inspect the"
" installed app to find which number the percentage is applied to."
msgstr ""
"Одна и та же кнопка использует {ph0}разные правила после + и ×.{ph1} Мы "
"проверяем установленное приложение, чтобы определить, к какому числу "
"применяется процентное соотношение."
#: website/public/index.html:802
msgctxt "page:index.html"
msgid "Try the calculation"
msgstr "Попробуйте произвести расчет"
#: website/public/index.html:846
msgctxt "page:index.html"
msgid "Reset"
msgstr "Сбросить"
#: website/public/index.html:854
msgctxt "page:index.html"
msgid "10% of 200 = 20. Then 200 + 20 = 220."
msgstr "10% от 200 = 20. Тогда 200 + 20 = 220."
#: website/public/index.html:857
msgctxt "page:index.html"
msgid "Interactive illustration of the inspected percentage rule."
msgstr "Интерактивная иллюстрация проверяемого процентного правила."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:864
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}One branch divides by 100. The other also multiplies by the first "
"number.{ph1} The agent uses both to recreate the % button."
msgstr ""
"{ph0}Одна ветвь делится на 100. Другая также умножается на первое "
"число.{ph1} Агент использует обе ветви для воссоздания кнопки %."
#. {ph0}: <code>previous = 200</code>
#. {ph1}: <code>current = 10</code>
#: website/public/index.html:872
#, python-brace-format
msgctxt "page:index.html"
msgid "For this example, {ph0} and {ph1}."
msgstr "В этом примере {ph0}, а {ph1}."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:878
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Rebuild the % "
"button"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Пример подсказки · Перестроить "
"кнопку %"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="calculator-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:892
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator’s % button. Recover "
"the rules after + and ×, then build a small calculator that uses "
"both.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA для проверки кнопки % в калькуляторе "
"Windows. Восстановите правила после + и ×, затем создайте небольшой "
"калькулятор, который использует оба параметра.{ph3}{ph4}{ph5}"
#: website/public/index.html:913
msgctxt "page:index.html"
msgid "With +"
msgstr "С +"
#. {ph0}: <strong>
#. {ph1}: </strong >
#. {ph2}: <code>10% of 200 = 20 → 200 + 20 = 220</code>
#: website/public/index.html:914
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Take 10% of the first number.{ph1}{ph2}"
msgstr "{ph0}Возьмем 10% от первого числа.{ph1}{ph2}"
#: website/public/index.html:920
msgctxt "page:index.html"
msgid "With ×"
msgstr "С ×"
#. {ph0}: <strong>
#. {ph1}: </strong >
#. {ph2}: <code>200 × 0.1 = 20</code>
#: website/public/index.html:921
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Turn 10% into 0.1.{ph1}{ph2}"
msgstr "{ph0}Превратите 10% в 0,1200{ph1}{ph2}"
#: website/public/index.html:930
msgctxt "page:index.html"
msgid "From the installed app to a working % button"
msgstr "От установленного приложения к рабочей кнопке %"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>100</code>
#. {ph6}: </span >
#: website/public/index.html:943
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · REA reads the library{ph1}{ph2}Return the % handler’s "
"code{ph3}{ph4}The function checks the operator and uses the constant "
"{ph5}.{ph6}"
msgstr ""
"{ph0}02 · REA считывает библиотеку{ph1}{ph2}, возвращает код обработчика "
"%{ph3}{ph4}, функция проверяет оператор и использует константу {ph5}.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/index.html:951
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · Your agent interprets it{ph1}{ph2}Explain and reproduce the "
"rules{ph3}{ph4}Crosscheck the branch with Microsoft’s source, then try + and"
" × above.{ph5}"
msgstr ""
"{ph0}03 · Ваш агент интерпретирует это{ph1}{ph2}, объясняет и воспроизводит "
"правила{ph3}{ph4}, сверяет ветвь с исходным кодом Microsoft, затем "
"попробуйте + и ×, указанные выше.{ph5}"
#: website/public/index.html:962
msgctxt "page:index.html"
msgid "See the real code and how the answer was checked"
msgstr "Посмотрите реальный код и то, как был проверен ответ"
#: website/public/index.html:988
msgctxt "page:index.html"
msgid ""
"Inspected with REA 4.1.0: Windows Calculator 11.2508.4.0, x64. The readable "
"summary uses names from Microsoft’s public source to explain the recovered "
"branch."
msgstr ""
"Проверено с помощью REA 4.1.0: Windows Calculator 11.2508.4.0, x64. В "
"доступной для чтения сводке используются имена из общедоступного источника "
"Microsoft для описания восстановленной ветви."
#. {ph0}: <a
#. href="https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalcManager/CEngine/scifunc.cpp#L98-L111"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/microsoft/calculator/blob/d125246a4e19842ce1332e6c7839cf0e110027d8/src/CalculatorUnitTests/CalculatorManagerTest.cpp#L350-L370"
#. >
#. {ph3}: </a >
#. {ph4}: <a href="guides/native/">
#. {ph5}: </a>
#: website/public/index.html:993
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Percentage implementation{ph1} · {ph2}Microsoft’s test cases{ph3} · "
"{ph4}Native setup guide{ph5}"
msgstr ""
"{ph0}Процент реализации{ph1} · {ph2}Тестовые примеры Microsoft{ph3} · "
"Руководство по {ph4}встроенной настройке{ph5}"
#: website/public/index.html:1012
msgctxt "page:index.html"
msgid "Your first investigation"
msgstr "Ваше первое расследование"
#: website/public/index.html:1013
msgctxt "page:index.html"
msgid "Try REA on a small app."
msgstr "Попробуйте REA в небольшом приложении."
#: website/public/index.html:1014
msgctxt "page:index.html"
msgid ""
"Download our Notes example, trace its CSV export, and check one changed "
"input."
msgstr ""
"Загрузите наш пример Notes, проследите его экспорт CSV и проверьте один "
"измененный ввод."
#: website/public/index.html:1019
msgctxt "page:index.html"
msgid "Try the guided example"
msgstr "Попробуйте руководствоваться приведенным примером"
#: website/public/index.html:1028
msgctxt "page:index.html"
msgid "Want to go deeper?"
msgstr "Хотите разобраться глубже?"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/index.html:1029
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Tell your agent what you want to understand or build. With REA, you can work"
" together on anything from {ph0}cloning this website{ph1} to "
"{ph2}reconstructing a game from its executable.{ph3}"
msgstr ""
"Расскажите своему агенту, что вы хотите понять или доработать. С REA вы "
"можете работать вместе над чем угодно - от {ph0}клонирования этого веб-"
"сайта{ph1} до {ph2}воссоздания игры по ее исполняемому файлу.{ph3}"
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:1040
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Website"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Пример запроса · Веб-сайт"
#: website/public/index.html:1063
msgctxt "page:index.html"
msgid "Yes, this one."
msgstr "Да, вот этот."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:1068
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Game reconstruction"
msgstr ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Пример подсказки · Реконструкция "
"игры"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="game-project-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:1082
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to reconstruct this game from its executable. "
"Recover the gameplay logic in C and test it against the "
"original.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы воссоздать эту игру по ее "
"исполняемому файлу. Восстановите логику игрового процесса на C и сравните ее"
" с оригиналом.{ph3}{ph4}{ph5}"
#. {ph0}: <a href="showcase/dx-ball/">
#. {ph1}: </a>
#: website/public/index.html:1091
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}See the DX-Ball case study →{ph1}"
msgstr "{ph0}Смотрите тематическое исследование DX-Ball →{ph1}"
#: website/public/index.html:1096
msgctxt "page:index.html"
msgid "For setup and analysis steps, choose your target:"
msgstr ""
"Для выполнения этапов настройки и анализа выберите свой целевой объект:"
#: website/public/index.html:1101
msgctxt "page:index.html"
msgid "Native binaries"
msgstr "Программы с машинным кодом"
#: website/public/index.html:1102
msgctxt "page:index.html"
msgid ""
"Inspect functions, strings, references and call relationships in executables"
" and libraries."
msgstr ""
"Проверяйте функции, строки, ссылки и связи между вызовами функций в "
"исполняемых файлах и библиотеках."
#: website/public/index.html:1106
msgctxt "page:index.html"
msgid "Native analysis guide"
msgstr "Руководство по анализу программ с машинным кодом"
#: website/public/index.html:1109
msgctxt "page:index.html"
msgid "JavaScript & Electron"
msgstr "JavaScript и Electron"
#: website/public/index.html:1110
msgctxt "page:index.html"
msgid ""
"Map modules, routes, IPC and native dependencies from an application folder "
"or ASAR archive."
msgstr ""
"Отображайте модули, маршруты, IPC и собственные зависимости из папки "
"приложения или архива ASAR."
#: website/public/index.html:1114
msgctxt "page:index.html"
msgid "Application workflows"
msgstr "Рабочие процессы приложений"
#: website/public/index.html:1117
msgctxt "page:index.html"
msgid "Browser & runtime activity"
msgstr "Активность в браузере и во время выполнения"
#: website/public/index.html:1118
msgctxt "page:index.html"
msgid ""
"Capture selected browser or process activity, then compare the results "
"across runs."
msgstr ""
"Фиксируйте активность выбранного браузера или процесса, а затем сравнивайте "
"результаты в разных запусках."
#: website/public/index.html:1122
msgctxt "page:index.html"
msgid "Browser observation guide"
msgstr "Руководство по наблюдению за браузером"
#: website/public/index.html:1129
msgctxt "page:index.html"
msgid "Any questions?"
msgstr "Есть вопросы?"
#. {ph0}: <a href="faq/">
#. {ph1}: </a>
#. {ph2}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph3}: </a>
#. {ph4}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph5}: </a >
#: website/public/index.html:1130
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Read the FAQ{ph1}, {ph2}chat with us on Discord{ph3}, or {ph4}open a "
"GitHub issue{ph5} for bugs and feature requests."
msgstr ""
"{ph0}Ознакомьтесь с часто{ph1} задаваемыми вопросами, {ph2}пообщайтесь с "
"нами по Discord{ph3} или {ph4}откройте выпуск{ph5} GitHub, чтобы узнать об "
"ошибках и запросах функций."
#: website/public/index.html:1143 website/public/index.html:1149
msgctxt "page:index.html"
msgid "Join the community"
msgstr "Вступить в сообщество"
#: website/public/index.html:1144
msgctxt "page:index.html"
msgid ""
"Share investigations and get help from other REA users on Discord. Follow "
"REA on X for project updates."
msgstr ""
"Делитесь результатами исследований и получайте помощь от других "
"пользователей REA на Discord. Следите за обновлениями проекта REA на X."
#: website/public/index.html:6
msgctxt "page:index.html"
msgid "REA — Reverse Engineering for Your Coding Agent"
msgstr "REA — Реверс-инжиниринг для Вашего программиста"
#: 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 ""
"Выполняйте реинжиниринг приложений, двоичных файлов и поведения браузера с "
"помощью вашего coding agent. Следуйте четким инструкциям и попробуйте "
"интерактивные примеры с REA."
#: website/public/index.html:242
msgctxt "page:index.html"
msgid "Copy REA installation prompt"
msgstr "Скопировать запрос на установку REA"
#: website/public/index.html:264
msgctxt "page:index.html"
msgid "Copy setup command"
msgstr "Команда настройки копирования"
#: website/public/index.html:316
msgctxt "page:index.html"
msgid "Follow the manual Calculator analysis"
msgstr "Следуйте инструкциям ручного калькулятора для анализа"
#: website/public/index.html:479
msgctxt "page:index.html"
msgid "Copy Calculator percentage question"
msgstr "Процентный вопрос калькулятора копирования"
#: website/public/index.html:586
msgctxt "page:index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr ""
"Мини-игра про динозавров. Используйте кнопку перехода или нажмите пробел, "
"пока игра сосредоточена."
#: website/public/index.html:647
msgctxt "page:index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "Запрос на копирование результатов анализа динозавров"
#: website/public/index.html:803
msgctxt "page:index.html"
msgid "Choose the calculation"
msgstr "Выберите способ расчета"
#: website/public/index.html:883
msgctxt "page:index.html"
msgid "Copy Calculator analysis prompt"
msgstr "Запрос на анализ с помощью калькулятора копирования"
#: website/public/index.html:1045
msgctxt "page:index.html"
msgid "Copy website project prompt"
msgstr "Запрос на копирование проекта веб-сайта"
#: website/public/index.html:1073
msgctxt "page:index.html"
msgid "Copy game reconstruction prompt"
msgstr "Запрос на копирование реконструкции игры"
#: website/public/index.html:1173
msgctxt "page:index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/showcase/aegis/index.html:100
msgctxt "page:showcase/aegis/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:182
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Android"
msgstr "{ph0}Главная{ph1} страница / {ph2}Витрины{ph3} / Android"
#: website/public/showcase/aegis/index.html:185
msgctxt "page:showcase/aegis/index.html"
msgid "Case study · Aegis Authenticator"
msgstr "Практический пример · Аутентификатор Aegis"
#. {ph0}: <br />
#: website/public/showcase/aegis/index.html:186
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "How does an authenticator{ph0}generate a login code?"
msgstr "Откуда Аутентификатор{ph0}генерировать код авторизации?"
#: website/public/showcase/aegis/index.html:187
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A six-digit code changes every 30 seconds. Use REA to find the calculation "
"in an Android APK, then rebuild it with a clock you can control."
msgstr ""
"Шестизначный код меняется каждые 30 секунд. Используйте REA, чтобы найти "
"вычисления в Android APK , а затем перестройте их с помощью часов, которыми "
"вы можете управлять."
#: website/public/showcase/aegis/index.html:192
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis 3.4.3 · Android · Official release APK · 6.9 MB"
msgstr "Aegis 3.4.3 · Android · Официальный релиз APK · 6,9 МБ"
#: website/public/showcase/aegis/index.html:195
msgctxt "page:showcase/aegis/index.html"
msgid "View Aegis on GitHub"
msgstr "Посмотреть Aegis на GitHub"
#: website/public/showcase/aegis/index.html:201
msgctxt "page:showcase/aegis/index.html"
msgid "From an APK to a code you can reproduce"
msgstr "От APK до кода, который вы можете воспроизвести"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node" >
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:203
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}01 · Locate the feature{ph1}{ph2}3,077 classes → generating "
"methods{ph3}{ph4}REA searches the package and traces the code used by the "
"display and copy actions.{ph5}"
msgstr ""
"{ph0}01 · Найдите функцию{ph1}{ph2} 3077 классы → методы генерации{ph3}{ph4}"
" REA выполняет поиск в пакете и отслеживает код, используемый для "
"отображения и копирования действий.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:212
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}02 · Read the calculation{ph1}{ph2}Time + account key → six "
"digits{ph3}{ph4}REA returns the methods and defaults. The agent explains how"
" they fit together.{ph5}"
msgstr ""
"{ph0}02 · Прочитайте время расчета{ph1}{ph2} + ключ учетной записи → "
"шестизначный{ph3}{ph4} REA возвращает методы и значения по умолчанию. Агент "
"объясняет, как они сочетаются друг с другом.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:220
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}03 · Rebuild and check{ph1}{ph2}Change the clock. Watch the "
"code.{ph3}{ph4}A new browser demo reproduces the rule and checks it against "
"public reference cases.{ph5}"
msgstr ""
"{ph0}03 · Перестройте и установите флажок{ph1}{ph2} \"Изменить время\". "
"Ознакомьтесь с кодом.{ph3}{ph4}Новая демонстрация браузера воспроизводит "
"правило и проверяет его на соответствие общедоступным ссылкам.{ph5}"
#: website/public/showcase/aegis/index.html:233
msgctxt "page:showcase/aegis/index.html"
msgid "In this case study"
msgstr "В этом тематическом исследовании"
#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:235
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}Спросите своего агента{ph1}"
#. {ph0}: <a href="#demo">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:236
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Try the code generator{ph1}"
msgstr "{ph0}Попробуйте воспользоваться генератором кода{ph1}"
#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:237
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Find the code with REA{ph1}"
msgstr "{ph0}Найдите код с помощью REA{ph1}"
#. {ph0}: <a href="#calculation">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:238
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Read the calculation{ph1}"
msgstr "{ph0}Ознакомьтесь с расчетом{ph1}"
#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:239
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}Проверьте реконструкцию{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:240
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Inspect the APK yourself{ph1}"
msgstr "{ph0}Проверьте APK самостоятельно{ph1}"
#: website/public/showcase/aegis/index.html:245
msgctxt "page:showcase/aegis/index.html"
msgid "Ask your agent"
msgstr "Спросите своего агента"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:246
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app shows a changing login code. We want to find {ph0}what makes it "
"change{ph1} and reproduce that behavior."
msgstr ""
"Приложение показывает изменяющийся код для входа в систему. Мы хотим "
"выяснить, {ph0}что заставляет его меняться{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/showcase/aegis/index.html:252
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/showcase/aegis/index.html:256
#: website/public/showcase/aegis/index.html:719
msgctxt "page:showcase/aegis/index.html"
msgid "Copy"
msgstr "Копировать"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:276
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"An example prompt for the downloaded APK, with REA's Android analysis "
"configured. {ph0}Get the APK and analysis setup ↓{ph1}"
msgstr ""
"Пример запроса для загруженного APK с настроенным анализом REA для Android. "
"{ph0}Получите APK и настройки анализа ↓{ph1}"
#: website/public/showcase/aegis/index.html:284
msgctxt "page:showcase/aegis/index.html"
msgid "Try the code generator"
msgstr "Попробуйте воспользоваться генератором кода"
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/showcase/aegis/index.html:285
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app groups time into {ph0}30-second blocks.{ph1} It combines the block "
"number with the account key to generate a code. The same key and block "
"produce the same code."
msgstr ""
"Приложение группирует время в {ph0}30-секундные блоки.{ph1} Для генерации "
"кода номер блока объединяется с ключом учетной записи. Один и тот же ключ и "
"блок генерируют один и тот же код."
#: website/public/showcase/aegis/index.html:292
msgctxt "page:showcase/aegis/index.html"
msgid "Move the clock across 60 seconds"
msgstr "Переведите стрелки часов на 60 секунд вперед"
#: website/public/showcase/aegis/index.html:295
msgctxt "page:showcase/aegis/index.html"
msgid "Time"
msgstr "Время"
#: website/public/showcase/aegis/index.html:297
msgctxt "page:showcase/aegis/index.html"
msgid "seconds"
msgstr "секунд"
#: website/public/showcase/aegis/index.html:298
msgctxt "page:showcase/aegis/index.html"
msgid "Our adjustable example clock"
msgstr "Наши регулируемые примерные часы"
#: website/public/showcase/aegis/index.html:301
msgctxt "page:showcase/aegis/index.html"
msgid "30-second block"
msgstr "30-секундный блок"
#: website/public/showcase/aegis/index.html:303
#: website/public/showcase/aegis/index.html:630
msgctxt "page:showcase/aegis/index.html"
msgid "Block"
msgstr "Блок"
#. {ph0}: <code data-aegis-division>floor(59 / 30)</code>
#. {ph1}: <br />
#. {ph2}: <span data-aegis-window >
#. {ph3}: </span >
#: website/public/showcase/aegis/index.html:304
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}30–59 seconds{ph3}"
msgstr "{ph0}{ph1}{ph2}30-59 секунд{ph3}"
#: website/public/showcase/aegis/index.html:312
msgctxt "page:showcase/aegis/index.html"
msgid "Generated code"
msgstr "Сгенерированный код"
#: website/public/showcase/aegis/index.html:320
msgctxt "page:showcase/aegis/index.html"
msgid "Account key + block → six digits"
msgstr "Ключ учетной записи + блокировка → шесть цифр"
#: website/public/showcase/aegis/index.html:326
msgctxt "page:showcase/aegis/index.html"
msgid "Example time, in seconds"
msgstr "Примерное время, в секундах"
#: website/public/showcase/aegis/index.html:341
#: website/public/showcase/aegis/index.html:641
msgctxt "page:showcase/aegis/index.html"
msgid "59 seconds"
msgstr "59 секунд"
#: website/public/showcase/aegis/index.html:348
#: website/public/showcase/aegis/index.html:646
msgctxt "page:showcase/aegis/index.html"
msgid "60 seconds"
msgstr "60 секунд"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/showcase/aegis/index.html:357
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"At 59 seconds: {ph0}287082.{ph1} At 60 seconds: {ph2}359152.{ph3} Moving "
"within one block leaves the code unchanged."
msgstr ""
"На 59 секунде: {ph0}287082.{ph1} На 60 секунде: {ph2}359152.{ph3} При "
"перемещении в пределах одного блока код остается неизменным."
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:364
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The key is fixed, public {ph0}RFC 6238 test data{ph1}. The demo implements "
"the calculation recovered from the APK."
msgstr ""
"Ключ является фиксированным, общедоступные {ph0}тестовые данные RFC "
"6238{ph1}. В демонстрации реализован расчет, восстановленный из APK ."
#: website/public/showcase/aegis/index.html:371
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The diagram shows the result at 59 seconds. Enable JavaScript to change the "
"clock."
msgstr ""
"На диаграмме показан результат за 59 секунд. Включите JavaScript, чтобы "
"изменить время."
#: website/public/showcase/aegis/index.html:380
msgctxt "page:showcase/aegis/index.html"
msgid "Find the code with REA"
msgstr "Найдите код с помощью REA"
#: website/public/showcase/aegis/index.html:383
msgctxt "page:showcase/aegis/index.html"
msgid "Narrow the APK to three classes"
msgstr "Сократите APK до трех классов"
#. {ph0}: <code>TotpInfo</code>
#: website/public/showcase/aegis/index.html:408
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0} is the calculation candidate; the other two concern the progress bar "
"and imported accounts. TOTP means a time-based one-time password."
msgstr ""
"{ph0} расчета используется TotpInfo; два других параметра относятся к "
"индикатору выполнения и импортированным учетным записям. TOTP означает "
"одноразовый пароль, основанный на времени."
#: website/public/showcase/aegis/index.html:415
msgctxt "page:showcase/aegis/index.html"
msgid "Connect the generator to the app's display"
msgstr "Подключите генератор к дисплею приложения"
#. {ph0}: <code>EntryHolder.getOtp</code>
#. {ph1}: <code>TotpInfo.getOtp(timestamp)</code>
#: website/public/showcase/aegis/index.html:443
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA identifies the timestamp overload and finds the base method's callers. "
"Inspecting {ph0} then shows the display calling {ph1}."
msgstr ""
"REA определяет перегрузку временной метки и находит вызывающих базовый "
"метод. При проверке {ph0} на дисплее отображается вызов {ph1}."
#. {ph0}: <code>com.beemdevelopment.aegis</code>
#: website/public/showcase/aegis/index.html:451
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Requests show a shortened input path. Result class names omit the common "
"{ph0} prefix."
msgstr ""
"Запросы показывают сокращенный путь ввода. В именах результирующих классов "
"отсутствует распространенный префикс {ph0}."
#: website/public/showcase/aegis/index.html:458
msgctxt "page:showcase/aegis/index.html"
msgid "Read the calculation"
msgstr "Ознакомьтесь с расчетом"
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:459
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA returns {ph0}the clock conversion, default settings and generating "
"methods.{ph1} The constructors set a 30-second interval and six digits; the "
"timestamp method turns seconds into a block number."
msgstr ""
"REA возвращает {ph0}преобразование часов, настройки по умолчанию и методы "
"генерации.{ph1} Разработчики установили 30-секундный интервал и шесть цифр; "
"метод временной метки преобразует секунды в номер блока."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:474
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}01{ph1} Time block"
msgstr "{ph0}Временной блок 01{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:482
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}02{ph1} Key + block"
msgstr "{ph0}02{ph1} Клавиша + блок"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/aegis/index.html:490
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}03{ph1} Six digits"
msgstr "{ph0}03{ph1} Шесть цифр"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:549
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Time chooses the block.{ph1} Seconds 30 through 59 all give block 1. At"
" 60 seconds, the block becomes 2."
msgstr ""
"{ph0}Время выбирает блок.{ph1} Все секунды с 30 по 59 дают блок 1. Через 60 "
"секунд блок становится 2."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:555
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}The key matters too.{ph1} The generator combines the account key with "
"the block. An account with a different key can show a different code at the "
"same time."
msgstr ""
"{ph0}Ключ тоже имеет значение.{ph1} Генератор объединяет ключ учетной записи"
" с блоком. Учетная запись с другим ключом может одновременно отображать "
"другой код."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:562
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Keep six digits.{ph1} The remainder after division by 1,000,000 is "
"padded with zeroes when needed, so a code can begin with 0."
msgstr ""
"{ph0}Оставьте шесть цифр.{ph1} Остаток после деления на 1 000 000 при "
"необходимости дополняется нулями, так что код может начинаться с 0."
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:569
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Excerpts from several inspected methods, with line wrapping for display. The"
" right panel is an explanatory summary. {ph0}Aegis code is GPL-3.0.{ph1}"
msgstr ""
"Приведены выдержки из нескольких проверенных методов с переносом строк для "
"отображения. Правая панель представляет собой пояснительное резюме. "
"{ph0}Код Aegis соответствует GPL-3.0.{ph1}"
#: website/public/showcase/aegis/index.html:578
msgctxt "page:showcase/aegis/index.html"
msgid "Inside the generator"
msgstr "Внутри генератора"
#. {ph0}: <code>generateOTP</code>
#. {ph1}: <code>kotlin.ExceptionsKt</code>
#. {ph2}: <code>TotpInfo</code>
#. {ph3}: <code>HOTP</code>
#: website/public/showcase/aegis/index.html:579
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The released APK puts {ph0} in {ph1}. REA follows the call from {ph2} and "
"returns this body; the original source calls the helper {ph3}."
msgstr ""
"Выпущенный APK переводит {ph0} в {ph1}. REA следует за вызовом из {ph2} и "
"возвращает это тело; исходный источник вызывает вспомогательный {ph3}."
#: website/public/showcase/aegis/index.html:601
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The last hash byte selects a position. Four bytes at that position provide a"
" positive 31-bit number; formatting reduces it to the requested number of "
"digits. The constructor's last argument selects the code-formatting branch "
"introduced by compilation."
msgstr ""
"Последний байт хэша выбирает позицию. Четыре байта в этой позиции дают "
"положительное 31-разрядное число; форматирование уменьшает его до требуемого"
" количества цифр. Последний аргумент конструктора выбирает ветвь "
"форматирования кода, введенную при компиляции."
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/app/src/main/java/com/beemdevelopment/aegis/crypto/otp/HOTP.java"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:608
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Compare with the matching release source{ph1}."
msgstr "{ph0}Сравните с соответствующим источником выпуска{ph1}."
#: website/public/showcase/aegis/index.html:618
msgctxt "page:showcase/aegis/index.html"
msgid "Check the reconstruction"
msgstr "Проверьте реконструкцию"
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:619
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"We assembled the selected REA-returned Java methods in a small test program."
" Their output matched an independent reconstruction on {ph0}133 test "
"cases{ph1}, including time-block boundaries and codes beginning with zero."
msgstr ""
"Мы собрали выбранные методы Java, возвращаемые REA, в небольшую тестовую "
"программу. Их результаты соответствовали независимой реконструкции {ph0}133 "
"тестовых примеров{ph1}, включая границы временных блоков и коды, "
"начинающиеся с нуля."
#: website/public/showcase/aegis/index.html:629
msgctxt "page:showcase/aegis/index.html"
msgid "Example time"
msgstr "Примерное время"
#: website/public/showcase/aegis/index.html:631
msgctxt "page:showcase/aegis/index.html"
msgid "Six-digit code"
msgstr "Шестизначный код"
#: website/public/showcase/aegis/index.html:636
msgctxt "page:showcase/aegis/index.html"
msgid "30 seconds"
msgstr "30 секунд"
#: website/public/showcase/aegis/index.html:651
msgctxt "page:showcase/aegis/index.html"
msgid "1,111,111,109 seconds"
msgstr "1,111,111,109 секунды"
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:658
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The generator also matches the six published SHA-1 reference cases in "
"{ph0}RFC 6238{ph1}. Check the browser implementation against them:"
msgstr ""
"Генератор также соответствует шести опубликованным ссылочным вариантам SHA-1"
" в {ph0}RFC 6238{ph1}. Проверьте их реализацию в браузере:"
#: website/public/showcase/aegis/index.html:666
msgctxt "page:showcase/aegis/index.html"
msgid "Run reference checks"
msgstr "Выполнять проверку ссылок"
#: website/public/showcase/aegis/index.html:673
msgctxt "page:showcase/aegis/index.html"
msgid "Read the demo's calculation"
msgstr "Ознакомьтесь с демонстрационным расчетом"
#: website/public/showcase/aegis/index.html:677
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The reference cases use eight digits. The check also verifies their six-"
"digit results."
msgstr ""
"В контрольных случаях используются восьмизначные значения. Проверка также "
"подтверждает их шестизначные результаты."
#: website/public/showcase/aegis/index.html:686
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Verification runs extracted Java methods and the new demo. The Android APK "
"was inspected statically."
msgstr ""
"Для проверки используются извлеченные методы Java и новая демонстрация. "
"Android APK был проверен статически."
#: website/public/showcase/aegis/index.html:693
msgctxt "page:showcase/aegis/index.html"
msgid "Inspect the APK yourself"
msgstr "Проверьте APK самостоятельно"
#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:694
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Set up REA{ph1} on macOS or Linux, then download these two files into "
"the same folder. On Windows, use a Linux environment such as WSL."
msgstr ""
"{ph0}Настройте REA{ph1} на macOS или Linux , затем загрузите эти два файла в"
" одну папку. В Windows используйте среду Linux, такую как WSL."
#. {ph0}: <code>JAVA_HOME</code>
#. {ph1}: <code>PATH</code>
#: website/public/showcase/aegis/index.html:699
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Android analysis needs a full JDK 17 or later. Select it with {ph0} or "
"{ph1}. This case used JDK 21."
msgstr ""
"Для анализа Android требуется полный JDK 17 или более поздней версии. "
"Выберите его с помощью {ph0} или {ph1}. В данном случае использовался JDK "
"21."
#: website/public/showcase/aegis/index.html:715
msgctxt "page:showcase/aegis/index.html"
msgid "Point REA at the provider file and inspect the APK:"
msgstr "Наведите курсор REA на файл поставщика и проверьте APK :"
#: website/public/showcase/aegis/index.html:718
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:732
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Your agent can continue through REA's CLI using the prompt above. For MCP, "
"add {ph0} to the REA server's environment and reconnect it."
msgstr ""
"Ваш агент может продолжить работу через CLI от REA, воспользовавшись "
"приведенной выше инструкцией. Для MCP добавьте {ph0} в среду сервера REA и "
"повторно подключите его."
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:737
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A next question: {ph0}what happens when an account uses eight digits or a "
"different time interval?{ph1}"
msgstr ""
"Следующий вопрос: {ph0}что происходит, когда в учетной записи используются "
"восемь цифр или другой интервал времени?{ph1}"
#: website/public/showcase/aegis/index.html:747
msgctxt "page:showcase/aegis/index.html"
msgid "Sources"
msgstr "Источники"
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/releases/tag/v3.4.3" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/beemdevelopment/Aegis/tree/d6f4e5925a97e4e91593f1542085eae03432a759"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph5}: </a >
#: website/public/showcase/aegis/index.html:749
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Official Aegis 3.4.3 release{ph1} · {ph2}Matching source commit{ph3} · "
"{ph4}GPL-3.0 license{ph5}"
msgstr ""
"{ph0}Официальный релиз Aegis 3.4.3{ph1} · {ph2}Соответствующий исходный{ph3}"
" код · {ph4}Лицензия GPL-3.0{ph5}"
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#. {ph2}: <a href="test-vectors.json">
#. {ph3}: </a>
#: website/public/showcase/aegis/index.html:765
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}RFC 6238 reference cases{ph1} · {ph2}Demo test data{ph3}"
msgstr ""
"{ph0}Справочные примеры RFC 6238{ph1} · {ph2}Демонстрационные тестовые "
"данные{ph3}"
#: website/public/showcase/aegis/index.html:772
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspected with REA 6.1.0 on 9 October 2026. Decompiled excerpts are credited"
" to Aegis; the diagram, readable summary and browser reconstruction are new "
"teaching material."
msgstr ""
"Проверено с помощью REA 6.1.0 9 октября 2026 года. Декомпилированные "
"фрагменты добавлены в Aegis; диаграмма, читаемое резюме и реконструкция "
"браузера являются новым учебным материалом."
#: website/public/showcase/aegis/index.html:6
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK Reverse Engineering: Login Codes — REA"
msgstr "Aegis APK Обратный инжиниринг: Коды для входа — 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 ""
"Проверить Aegis Андроид APK с REA, восстановить его шестизначный логин-код "
"расчетов и попробовать реконструкция с регулируемым часы."
#: website/public/showcase/aegis/index.html:232
msgctxt "page:showcase/aegis/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/showcase/aegis/index.html:243
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK case study"
msgstr "Тематическое исследование Aegis APK"
#: website/public/showcase/aegis/index.html:256
msgctxt "page:showcase/aegis/index.html"
msgid "Copy Aegis example prompt"
msgstr "Скопировать запрос в качестве примера Aegis"
#: website/public/showcase/aegis/index.html:469
msgctxt "page:showcase/aegis/index.html"
msgid "Follow the login-code calculation"
msgstr "Следуйте инструкциям по вводу регистрационного кода"
#: website/public/showcase/aegis/index.html:719
msgctxt "page:showcase/aegis/index.html"
msgid "Copy APK inspection command"
msgstr "Скопировать команду проверки APK"
#: website/public/showcase/aegis/index.html:795
msgctxt "page:showcase/aegis/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/showcase/ctf/index.html:99
msgctxt "page:showcase/ctf/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/ctf/index.html:181
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / CTF"
msgstr "{ph0}Главная{ph1} страница / {ph2}Витрины{ph3} / CTF"
#: website/public/showcase/ctf/index.html:184
msgctxt "page:showcase/ctf/index.html"
msgid "Case study · DownUnderCTF 2023"
msgstr "Тематическое исследование · DownUnderCTF 2023"
#. {ph0}: <br />
#: website/public/showcase/ctf/index.html:185
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "Find the flag in{ph0}a CTF binary."
msgstr "Найдите флаг в{ph0}двоичном формате CTF."
#. {ph0}: <code>Correct!</code>
#: website/public/showcase/ctf/index.html:186
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Use REA to inspect a small flag checker, turn its rules into equations and "
"find an input that makes the original program print {ph0}."
msgstr ""
"Используйте REA для проверки небольшого средства проверки флагов, "
"преобразуйте его правила в уравнения и найдите входные данные, которые "
"{ph0}."
#: website/public/showcase/ctf/index.html:191
msgctxt "page:showcase/ctf/index.html"
msgid "masked squares flag checker · Easy · Linux x86-64"
msgstr ""
"устройство для проверки флажков в маскированных квадратах · Простое · Linux "
"x86-64"
#: website/public/showcase/ctf/index.html:194
msgctxt "page:showcase/ctf/index.html"
msgid "View the original challenge"
msgstr "Просмотрите оригинальную задачу"
#: website/public/showcase/ctf/index.html:202
msgctxt "page:showcase/ctf/index.html"
msgid "From a binary to a checked answer"
msgstr "От двоичного кода к проверенному ответу"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:204
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}01 · Find the check{ph1}{ph2}Strings → checking functions{ph3}{ph4}REA "
"finds the prompt, its references and the code that accepts or rejects an "
"input.{ph5}"
msgstr ""
"{ph0}01 · Найдите строки проверки{ph1}{ph2} → функции{ph3}{ph4} проверки REA"
" находит запрос, ссылки на него и код, который принимает или отклоняет "
"вводимые данные.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:212
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Extract the rules{ph1}{ph2}36 characters · 26 sums{ph3}{ph4}REA "
"returns the instructions and data behind each check. The agent turns them "
"into equations.{ph5}"
msgstr ""
"{ph0}02 · Извлеките правила{ph1}{ph2} из 36 символов · 26 сумм{ph3}{ph4} REA"
" возвращает инструкции и данные, стоящие за каждой проверкой. Агент "
"преобразует их в уравнения.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/ctf/index.html:220
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Solve and run{ph1}{ph2}Recovered flag → Correct!{ph3}{ph4}A Python"
" script solves the equations. REA captures the original program accepting "
"the result.{ph5}"
msgstr ""
"{ph0}03 · Решите и запустите{ph1}{ph2} восстановленный флаг → "
"Исправить!{ph3}{ph4}Уравнения решаются скриптом на Python. REA фиксирует "
"исходную программу, принимающую результат.{ph5}"
#: website/public/showcase/ctf/index.html:229
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The challenge is by joseph, published in DownUnderCTF's official repository."
msgstr ""
"Задача написана Джозефом и опубликована в официальном репозитории "
"DownUnderCTF."
#: website/public/showcase/ctf/index.html:237
msgctxt "page:showcase/ctf/index.html"
msgid "In this case study"
msgstr "В этом тематическом исследовании"
#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:239
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Find the checking code{ph1}"
msgstr "{ph0}Найдите проверочный код{ph1}"
#. {ph0}: <a href="#mask">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:240
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Read one mask{ph1}"
msgstr "{ph0}Прочитайте одну маску{ph1}"
#. {ph0}: <a href="#code">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:241
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Assembly to readable code{ph1}"
msgstr "{ph0}Сборка в читаемый код{ph1}"
#. {ph0}: <a href="#solve">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:242
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Solve the equations{ph1}"
msgstr "{ph0}Решите уравнения{ph1}"
#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:243
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Check the answer{ph1}"
msgstr "{ph0}Проверьте ответ{ph1}"
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:244
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Try it yourself{ph1}"
msgstr "{ph0}Попробуйте сами{ph1}"
#: website/public/showcase/ctf/index.html:249
msgctxt "page:showcase/ctf/index.html"
msgid "Find the checking code"
msgstr "Найдите проверочный код"
#. {ph0}: <code>Correct!</code>
#. {ph1}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:250
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The handout is a 15 KB executable. It asks for a flag, then prints {ph0} or "
"{ph1}. Start with a simple request to your agent."
msgstr ""
"Раздаточный материал представляет собой исполняемый файл размером 15 КБ. Он "
"запрашивает флажок, затем выводит \"{ph0} или \"{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/showcase/ctf/index.html:257
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/showcase/ctf/index.html:262
#: website/public/showcase/ctf/index.html:481
#: website/public/showcase/ctf/index.html:505
#: website/public/showcase/ctf/index.html:575
#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Copy"
msgstr "Копировать"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="ctf-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/ctf/index.html:271
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze ms_flag_checker and find the flag. "
"Explain how the checks work, then verify the answer with the original "
"program.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA для анализа ms_flag_checker и поиска флага."
" Объясните, как работают проверки, затем проверьте ответ с помощью исходной "
"программы.{ph3}{ph4}{ph5}"
#: website/public/showcase/ctf/index.html:280
msgctxt "page:showcase/ctf/index.html"
msgid ""
"An example prompt, with the downloaded challenge available locally and a "
"native analysis provider connected."
msgstr ""
"Пример запроса с загруженной задачей, доступной локально, и подключенным "
"поставщиком программ для анализа машинного кода."
#: website/public/showcase/ctf/index.html:286
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the input prompt to its function"
msgstr "Следуйте инструкциям по вводу для перехода к его функции"
#: website/public/showcase/ctf/index.html:315
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The reference gives the agent a place to investigate, even though the "
"executable's original function names have been removed."
msgstr ""
"Ссылка дает агенту возможность провести расследование, даже несмотря на то, "
"что исходные имена функций исполняемого файла были удалены."
#: website/public/showcase/ctf/index.html:322
msgctxt "page:showcase/ctf/index.html"
msgid "Read the checker and its two helpers"
msgstr "Ознакомьтесь с программой проверки и двумя ее помощниками"
#. {ph0}: <code>0x18</code>
#. {ph1}: <code>0x270</code>
#: website/public/showcase/ctf/index.html:350
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The first loop copies 36 character codes. The checking loop decodes a mask, "
"sums the selected codes and compares the result with a stored number. Its "
"{ph0}-byte steps across {ph1} bytes give 26 masks."
msgstr ""
"Первый цикл копирует коды из 36 символов. Цикл проверки расшифровывает "
"маску, суммирует выбранные коды и сравнивает результат с сохраненным числом."
" Его шаги размером {ph0} байт по {ph1} байт дают 26 масок."
#: website/public/showcase/ctf/index.html:358
msgctxt "page:showcase/ctf/index.html"
msgid ""
"These are selected results from a fresh REA analysis. The local target path "
"is shortened for display; addresses refer to REA's imported image."
msgstr ""
"Это выбранные результаты нового анализа REA. Путь к локальному целевому "
"объекту сокращен для отображения; адреса относятся к импортированному "
"изображению REA."
#: website/public/showcase/ctf/index.html:366
msgctxt "page:showcase/ctf/index.html"
msgid "One check reveals one character"
msgstr "Одна проверка выявляет один символ"
#: website/public/showcase/ctf/index.html:367
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The checker arranges the input in a 6×6 grid. A mask chooses which cells "
"contribute to a sum. Its compact encoding uses negative numbers to skip "
"cells and positive numbers to select them."
msgstr ""
"Программа проверки упорядочивает входные данные в виде сетки размером 6×6. "
"Маска определяет, какие ячейки участвуют в сумме. В компактном кодировании "
"используются отрицательные числа для пропуска ячеек и положительные числа "
"для их выбора."
#. {ph0}: <a href="../../assets/figures/ctf-mask-equation.svg" >
#. {ph1}: </a >
#: website/public/showcase/ctf/index.html:387
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "The seventh check selects just one position. {ph0}Open figure{ph1}."
msgstr ""
"При седьмой проверке выбирается только одна позиция. {ph0}Откройте "
"рисунок{ph1}."
#: website/public/showcase/ctf/index.html:394
msgctxt "page:showcase/ctf/index.html"
msgid "Read the mask and its target from the binary"
msgstr "Считайте маску и ее цель из двоичного файла"
#. {ph0}: <code>MOVSX</code>
#. {ph1}: <code>eb</code>
#. {ph2}: <code>code[21] = 55</code>
#. {ph3}: <code>7</code>
#: website/public/showcase/ctf/index.html:416
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instruction {ph0} reads mask bytes as signed values. This is why {ph1} "
"means −21. The target is a little-endian integer. Together, these bytes tell"
" the agent that {ph2}, so that character is {ph3}."
msgstr ""
"Команда {ph0} считывает байты маски как значения со знаком. Вот почему {ph1}"
" означает -21. Целью является целое число в порядке убывания. Вместе эти "
"байты сообщают агенту, что {ph2}, так что этот символ равен {ph3}."
#: website/public/showcase/ctf/index.html:425
msgctxt "page:showcase/ctf/index.html"
msgid "From instructions to a readable check"
msgstr "От инструкций к удобочитаемому чеку"
#: website/public/showcase/ctf/index.html:426
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Select a step to connect the summing helper and its caller to the same rule "
"in C."
msgstr ""
"Выберите шаг для подключения вспомогательного средства суммирования и "
"вызывающего его объекта к одному и тому же правилу в C."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:436
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01{ph1} Start"
msgstr "{ph0}01{ph1} Начало"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:444
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}02{ph1} Select"
msgstr "{ph0}02{ph1} Выберите"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:452
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}03{ph1} Add"
msgstr "{ph0}03{ph1} Добавить"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:460
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}04{ph1} Advance"
msgstr "{ph0}04{ph1} Продвижение"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:468
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}05{ph1} Compare"
msgstr "{ph0}05{ph1} Сравнить"
#: website/public/showcase/ctf/index.html:480
msgctxt "page:showcase/ctf/index.html"
msgid "REA · selected original instructions"
msgstr "REA · выбранные оригинальные инструкции"
#: website/public/showcase/ctf/index.html:504
msgctxt "page:showcase/ctf/index.html"
msgid "Readable C · one-check summary"
msgstr "Читаемая сводка C · one-check"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ECX</code>
#: website/public/showcase/ctf/index.html:533
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01 · Start at zero.{ph1} {ph2} holds the running sum."
msgstr "{ph0}01 · Начните с нуля.{ph1} {ph2} содержит текущую сумму."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:537
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Check the mask cell.{ph1} A zero value skips the character; a "
"nonzero value includes it."
msgstr ""
"{ph0}02 · Проверьте ячейку маски.{ph1} Нулевое значение пропускает символ; "
"ненулевое значение включает его."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:541
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Add a character code.{ph1} The input's integer at the same offset "
"is added to the sum."
msgstr ""
"{ph0}03 · Добавьте символьный код.{ph1} К сумме добавляется целое число, "
"полученное при вводе с тем же смещением."
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:545
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}04 · Move to the next cell.{ph1} The original loop advances four bytes "
"per integer and visits six rows of six cells."
msgstr ""
"{ph0}04 · Переход к следующей ячейке.{ph1} Исходный цикл продвигается по "
"четыре байта на целое число и посещает шесть строк по шесть ячеек."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>EAX</code>
#. {ph3}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:550
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}05 · Compare with the stored target.{ph1} The caller receives the sum "
"in {ph2}. A mismatch jumps to {ph3}."
msgstr ""
"{ph0}05 · Сравнить с сохраненным целевым значением.{ph1} Вызывающий абонент "
"получает сумму в {ph2}. Несоответствие становится {ph3}."
#: website/public/showcase/ctf/index.html:557
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instructions come from the summing helper and its caller. The C is an "
"explanatory summary with descriptive names and a flattened 36-cell loop."
msgstr ""
"Инструкции поступают от помощника по суммированию и вызывающего его "
"устройства. C - это пояснительная записка с описательными названиями и "
"сглаженным циклом из 36 ячеек."
#: website/public/showcase/ctf/index.html:565
msgctxt "page:showcase/ctf/index.html"
msgid "Solve the 26 equations"
msgstr "Решите 26 уравнений"
#: website/public/showcase/ctf/index.html:566
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Most masks select several cells. For example, the first check adds 16 "
"character codes and requires a total of 1441. The overlapping selections "
"give equations that a small Python script can solve together."
msgstr ""
"В большинстве масок выбирается несколько ячеек. Например, при первой "
"проверке добавляется 16 кодов символов, и требуется в общей сложности 1441. "
"Перекрывающиеся выборки дают уравнения, которые может решить небольшой "
"скрипт на Python."
#: website/public/showcase/ctf/index.html:574
msgctxt "page:showcase/ctf/index.html"
msgid "Python · solver excerpt"
msgstr "Отрывок из Python · solver"
#. {ph0}: <code>DUCTF{…}</code>
#: website/public/showcase/ctf/index.html:602
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Z3 is a solver that finds values satisfying these equations. This excerpt "
"uses the extracted checks and assumes a {ph0} flag with letters, digits, "
"underscores and braces. The complete download includes all 26 masks and "
"targets."
msgstr ""
"Z3 - это программа-решатель, которая находит значения, удовлетворяющие этим "
"уравнениям. В этом фрагменте используются извлеченные проверки и "
"используется {ph0} с буквами, цифрами, символами подчеркивания и фигурными "
"скобками. Полная загрузка включает все 26 масок и целевых объектов."
#: website/public/showcase/ctf/index.html:608
msgctxt "page:showcase/ctf/index.html"
msgid "Download the complete solver"
msgstr "Загрузите полный решатель"
#: website/public/showcase/ctf/index.html:614
msgctxt "page:showcase/ctf/index.html"
msgid "Check the answer with the original program"
msgstr "Проверьте ответ с помощью оригинальной программы"
#. {ph0}: <code>z</code>
#. {ph1}: <code>y</code>
#: website/public/showcase/ctf/index.html:615
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"REA's process capture records the original executable accepting the solved "
"flag. Changing one selected character from {ph0} to {ph1} makes the first "
"sum 1440 instead of 1441, and the program rejects it."
msgstr ""
"Программа захвата процесса REA записывает исходный исполняемый файл, "
"принимающий флаг solved. Изменение одного выбранного символа с {ph0} на "
"{ph1} приводит к получению первой суммы 1440 вместо 1441, и программа "
"отклоняет ее."
#: website/public/showcase/ctf/index.html:625
msgctxt "page:showcase/ctf/index.html"
msgid "Input"
msgstr "Ввод"
#: website/public/showcase/ctf/index.html:626
msgctxt "page:showcase/ctf/index.html"
msgid "Observed output"
msgstr "Наблюдаемый результат"
#: website/public/showcase/ctf/index.html:627
msgctxt "page:showcase/ctf/index.html"
msgid "Exit code"
msgstr "Код выхода"
#: website/public/showcase/ctf/index.html:632
msgctxt "page:showcase/ctf/index.html"
msgid "Solver's flag"
msgstr "Флаг решателя"
#: website/public/showcase/ctf/index.html:637
msgctxt "page:showcase/ctf/index.html"
msgid "One character changed"
msgstr "Один персонаж изменен"
#: website/public/showcase/ctf/index.html:645
msgctxt "page:showcase/ctf/index.html"
msgid "Show the recovered flag and captured output"
msgstr "Отобразить восстановленный флаг и захваченные выходные данные"
#: website/public/showcase/ctf/index.html:648
msgctxt "page:showcase/ctf/index.html"
msgid "REA · original program output"
msgstr "REA · исходный программный результат"
#: website/public/showcase/ctf/index.html:649
msgctxt "page:showcase/ctf/index.html"
msgid "Copy flag"
msgstr "Флаг копирования"
#: website/public/showcase/ctf/index.html:661
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The recovered value also matches the flag in the organizers' published "
"challenge metadata, checked after solving the binary."
msgstr ""
"Восстановленное значение также соответствует флагу в опубликованных "
"организаторами метаданных задачи, который был проверен после решения "
"двоичной задачи."
#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Source, target identity and analysis details"
msgstr "Идентификация источника, цели и детали анализа"
#: website/public/showcase/ctf/index.html:668
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Fresh analysis and two process captures on 8 October 2026, using REA 4.1.0 "
"with Ghidra 12.1.4 on Linux x64. The binary is a stripped x86-64 ELF, 15,248"
" bytes."
msgstr ""
"Новый анализ и две записи процессов, опубликованные 8 октября 2026 года, с "
"использованием REA 4.1.0 и Ghidra 12.1.4 на Linux x64. Двоичный файл "
"представляет собой урезанный x86-64 ELF, объемом 15 248 байт."
#: website/public/showcase/ctf/index.html:679
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The string references, functions and constants were inspected before reading"
" the organizers' source or solution. The Python solver and the diagram were "
"built from those REA results."
msgstr ""
"Ссылки на строки, функции и константы были проверены перед чтением исходного"
" кода или решения организаторов. На основе этих результатов REA были созданы"
" решатель на Python и диаграмма."
#. {ph0}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/src/ms_flag_checker.c" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/ctfcli.yaml" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/morluto/rea/blob/main/website/evidence/ctf-masked-
#. squares.md" >
#. {ph5}: </a >
#: website/public/showcase/ctf/index.html:684
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}Compare with the organizers' source{ph1} · {ph2}Challenge metadata and "
"flag{ph3} · {ph4}REA evidence notes{ph5}"
msgstr ""
"{ph0}Сравните с источником, предоставленным организаторами{ph1} · "
"{ph2}Метаданные и флаг конкурса{ph3} · {ph4}Примечания к доказательствам "
"REA{ph5}"
#: website/public/showcase/ctf/index.html:704
msgctxt "page:showcase/ctf/index.html"
msgid "Try it yourself"
msgstr "Попробуйте сами"
#: website/public/showcase/ctf/index.html:705
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Download the original challenge and the solver into one folder. Use the "
"prompt above to investigate with your agent, or run the included script."
msgstr ""
"Загрузите исходную задачу и решение в одну папку. Воспользуйтесь приведенной"
" выше инструкцией, чтобы провести расследование с помощью своего агента, или"
" запустите прилагаемый сценарий."
#: website/public/showcase/ctf/index.html:721
msgctxt "page:showcase/ctf/index.html"
msgid "Terminal · solve and run"
msgstr "Терминал · решить и запустить"
#. {ph0}: <code>z3-solver</code>
#: website/public/showcase/ctf/index.html:738
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The script prints a candidate flag; paste it at the program's prompt. "
"Solving needs Python and {ph0}. Running the original executable needs Linux "
"x86-64."
msgstr ""
"Скрипт выводит флаг кандидата; вставьте его в командную строку программы. "
"Для решения требуется Python и {ph0}. Для запуска исходного исполняемого "
"файла требуется Linux x86-64."
#: website/public/showcase/ctf/index.html:743
msgctxt "page:showcase/ctf/index.html"
msgid "Set up REA with your coding agent"
msgstr "Настройте REA с помощью вашего агента по кодированию"
#: website/public/showcase/ctf/index.html:6
msgctxt "page:showcase/ctf/index.html"
msgid "CTF Reverse Engineering: DownUnderCTF Flag Checker — REA"
msgstr "Обратный инжиниринг CTF: проверка флага 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 ""
"Используйте REA для решения задачи проверки флагов маскированных квадратов в"
" DOWNDERCTF. Найдите функции проверки, извлеките маски и сравните "
"восстановленный флаг с исходной программой."
#: website/public/showcase/ctf/index.html:236
msgctxt "page:showcase/ctf/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/showcase/ctf/index.html:247
msgctxt "page:showcase/ctf/index.html"
msgid "CTF flag-checker case study"
msgstr "Практический пример проверки флагов CTF"
#: website/public/showcase/ctf/index.html:262
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF example prompt"
msgstr "Запрос на копирование примера CTF"
#: website/public/showcase/ctf/index.html:373
msgctxt "page:showcase/ctf/index.html"
msgid "CTF mask equation; scroll horizontally on smaller screens"
msgstr ""
"Уравнение маски CTF; прокрутка по горизонтали на экранах меньшего размера"
#: website/public/showcase/ctf/index.html:379
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The seventh mask skips 21 cells, selects position 21, then skips 14. Only "
"that cell contributes to the sum. Its required character code is 55, which "
"means the character is 7."
msgstr ""
"Седьмая маска пропускает 21 ячейку, выбирает позицию 21, затем пропускает "
"14. Только эта ячейка вносит свой вклад в сумму. Ее обязательный код - 55, "
"что означает, что символ равен 7."
#: website/public/showcase/ctf/index.html:431
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the CTF check"
msgstr "Выполните проверку CTF"
#: website/public/showcase/ctf/index.html:481
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF assembly"
msgstr "Скопируйте сборку CTF"
#: website/public/showcase/ctf/index.html:505
msgctxt "page:showcase/ctf/index.html"
msgid "Copy readable CTF check"
msgstr "Копируемый чек CTF для чтения"
#: website/public/showcase/ctf/index.html:575
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver excerpt"
msgstr "Скопируйте выдержку из CTF-решателя"
#: website/public/showcase/ctf/index.html:649
msgctxt "page:showcase/ctf/index.html"
msgid "Copy recovered flag"
msgstr "Копировать восстановленный флаг"
#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver commands"
msgstr "Копирование команд решателя CTF"
#: website/public/showcase/ctf/index.html:764
msgctxt "page:showcase/ctf/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/showcase/dx-ball/index.html:99
msgctxt "page:showcase/dx-ball/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/dx-ball/index.html:181
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / DX-Ball"
msgstr "{ph0}Главная{ph1} страница / {ph2}Витрины{ph3} / DX-Ball"
#: website/public/showcase/dx-ball/index.html:184
msgctxt "page:showcase/dx-ball/index.html"
msgid "Case study · DX-Ball 1.07"
msgstr "Тематическое исследование · DX-Ball 1.07"
#. {ph0}: <br />
#: website/public/showcase/dx-ball/index.html:185
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Rebuilding DX-Ball{ph0}from its executable."
msgstr "Восстанавливаем DX-Ball {ph0}из его исполняемого файла."
#: website/public/showcase/dx-ball/index.html:186
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The goal is a maintainable C version of the 1996 Windows game. REA helps the"
" agent inspect the original, one function at a time."
msgstr ""
"Целью является создание поддерживаемой версии игры Windows на языке C, "
"выпущенной в 1996 году. REA помогает агенту проверять оригинал, по одной "
"функции за раз."
#: website/public/showcase/dx-ball/index.html:190
msgctxt "page:showcase/dx-ball/index.html"
msgid "Windows i386 · C · REA"
msgstr "Windows для i386 · с · REA"
#. {ph0}: <a href="../../assets/figures/dx-ball-sound-pan-investigation.svg" >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:207
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"One function, from executable to checked C. REA supplies the instructions, "
"callers and data reads; the reconstruction project implements and tests the "
"result. {ph0}Open figure{ph1}"
msgstr ""
"Одна функция, от исполняемой до проверяемой C. REA предоставляет инструкции,"
" вызывающие устройства и данные для чтения; проект реконструкции реализует и"
" тестирует результат. {ph0}Открыть рисунок{ph1}"
#: website/public/showcase/dx-ball/index.html:218
msgctxt "page:showcase/dx-ball/index.html"
msgid "In this case study"
msgstr "В этом тематическом исследовании"
#. {ph0}: <a href="#progress">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:220
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}The project{ph1}"
msgstr "{ph0}Проект{ph1}"
#. {ph0}: <a href="#sound-pan">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:221
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Sound pan{ph1}"
msgstr "{ph0}Звуковая панорама{ph1}"
#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:222
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Checking the result{ph1}"
msgstr "{ph0}Проверка результата{ph1}"
#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:223
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Continue the work{ph1}"
msgstr "{ph0}Продолжайте работу{ph1}"
#: website/public/showcase/dx-ball/index.html:231
msgctxt "page:showcase/dx-ball/index.html"
msgid "maintained C functions"
msgstr "поддерживаемые функции C"
#: website/public/showcase/dx-ball/index.html:235
msgctxt "page:showcase/dx-ball/index.html"
msgid "comparisons with original code"
msgstr "сравнение с исходным кодом"
#: website/public/showcase/dx-ball/index.html:239
msgctxt "page:showcase/dx-ball/index.html"
msgid "functions with matching compiled bytes"
msgstr "функции с соответствующими скомпилированными байтами"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/PROGRESS.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ORACLES.md" >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:242
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Project checkpoint: 7 October 2026. {ph0}Progress ledger{ph1} · {ph2}Test "
"coverage{ph3}"
msgstr ""
"Контрольная точка проекта: 7 октября 2026 года. {ph0}Журнал выполнения{ph1} "
"работ · {ph2}Тестовый охват{ph3}"
#: website/public/showcase/dx-ball/index.html:254
msgctxt "page:showcase/dx-ball/index.html"
msgid "The project so far"
msgstr "Проект до сих пор"
#: website/public/showcase/dx-ball/index.html:255
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered code covers board and resource handling, brick hits, "
"animations, particles and bonus production. Current builds provide "
"inspection utilities and an analysis library. Work on the playable game "
"continues with ball and paddle physics, power-up handling and Windows "
"integration."
msgstr ""
"Восстановленный код охватывает управление доской и ресурсами, удары "
"кирпичом, анимацию, частицы и получение бонусов. В текущих сборках доступны "
"утилиты проверки и библиотека анализа. Продолжается работа над игрой, в "
"которую можно играть, физикой мяча и весла, управлением усилениями и "
"интеграцией Windows."
#: website/public/showcase/dx-ball/index.html:265
msgctxt "page:showcase/dx-ball/index.html"
msgid "Finding the sound-pan calculation"
msgstr "Определение положения звука слева/справа при расчете"
#: website/public/showcase/dx-ball/index.html:266
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"When a brick is hit, its horizontal position is passed to the sound code. "
"The investigation needed to recover how that screen coordinate becomes a "
"left/right panning value."
msgstr ""
"При ударе по кирпичу его горизонтальное положение передается в звуковой код."
" В ходе исследования было необходимо восстановить, как эта координата экрана"
" преобразуется в значение поворота влево/вправо."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/dx-ball/index.html:273
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/showcase/dx-ball/index.html:277
#: website/public/showcase/dx-ball/index.html:468
#: website/public/showcase/dx-ball/index.html:489
#: website/public/showcase/dx-ball/index.html:560
#: website/public/showcase/dx-ball/index.html:714
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy"
msgstr "Копировать"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dxball-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/dx-ball/index.html:286
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы узнать, как DX-Ball рассчитывает "
"расположение стереозвука. Объясните расчет и покажите код.{ph3}{ph4}{ph5}"
#: website/public/showcase/dx-ball/index.html:294
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"An example prompt for your coding agent, with the local executable "
"available. The investigation below shows the REA queries and evidence behind"
" the answer."
msgstr ""
"Пример запроса для вашего coding agent с доступным локальным исполняемым "
"файлом. В приведенном ниже исследовании показаны запросы REA и "
"доказательства, лежащие в основе ответа."
#: website/public/showcase/dx-ball/index.html:299
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The agent used REA to inspect the function, follow its brick-hit caller and "
"read the constants from the executable. Those results supplied the input and"
" arithmetic needed to write the C function below."
msgstr ""
"Агент использовал REA для проверки функции, отслеживания ее вызывающего "
"устройства и считывания констант из исполняемого файла. Эти результаты "
"предоставили входные данные и арифметику, необходимые для написания функции "
"на языке Си, приведенной ниже."
#. {ph0}: <code>0x406400</code>
#. {ph1}: <code>FUN_00406400(void)</code>
#. {ph2}: <code>__ftol()</code>
#: website/public/showcase/dx-ball/index.html:305
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The first function result for {ph0} included pseudocode declaring {ph1} and "
"calling {ph2}. Its instruction view showed a stack input and floating-point "
"operations. That discrepancy gave the agent a concrete reason to keep "
"investigating."
msgstr ""
"Первый результат функции для {ph0} включал псевдокод, объявляющий {ph1} и "
"вызывающий {ph2}. В окне команд отображался ввод данных из стека и операции "
"с плавающей запятой. Это несоответствие дало агенту конкретную причину "
"продолжить расследование."
#: website/public/showcase/dx-ball/index.html:313
msgctxt "page:showcase/dx-ball/index.html"
msgid "The first decompiler view"
msgstr "Первое представление декомпилятора"
#: website/public/showcase/dx-ball/index.html:326
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The output shows a conversion call. Reading the instructions below reveals "
"the input and the calculation feeding that call."
msgstr ""
"На выходе отображается вызов преобразования. При чтении приведенных ниже "
"инструкций можно увидеть входные данные и вычисления, которые используются "
"для этого вызова."
#: website/public/showcase/dx-ball/index.html:332
msgctxt "page:showcase/dx-ball/index.html"
msgid "Three questions answered through REA"
msgstr "Ответы на три вопроса с помощью REA"
#: website/public/showcase/dx-ball/index.html:335
msgctxt "page:showcase/dx-ball/index.html"
msgid "Recover the missing input"
msgstr "Восстановите недостающие входные данные"
#. {ph0}: <code>[EBP+8]</code>
#: website/public/showcase/dx-ball/index.html:352
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The function result includes instructions alongside pseudocode and callers. "
"Here, {ph0} exposes the integer input missing from the decompiler view."
msgstr ""
"Результат работы функции включает инструкции наряду с псевдокодом и "
"вызывающими элементами. Здесь {ph0} предоставляет целочисленный ввод, "
"отсутствующий в представлении декомпилятора."
#: website/public/showcase/dx-ball/index.html:359
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the caller to understand the input"
msgstr "Следуйте за вызывающим абонентом, чтобы понять вводимые данные"
#. {ph0}: <code>tile_x</code>
#. {ph1}: <code>20 + 30 × tile_x</code>
#: website/public/showcase/dx-ball/index.html:376
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"REA identified this caller in the first result. Its preceding instructions "
"scale {ph0} by 30; adding 20 gives the brick's screen coordinate, {ph1}."
msgstr ""
"REA идентифицировал этого вызывающего абонента в первом результате. В "
"предыдущих инструкциях tile_x масштабируется {ph0}на 30; добавление 20 дает "
"экранную координату кирпича, {ph1}."
#: website/public/showcase/dx-ball/index.html:383
msgctxt "page:showcase/dx-ball/index.html"
msgid "Read the values behind the memory addresses"
msgstr "Считайте значения, стоящие за адресами памяти"
#: website/public/showcase/dx-ball/index.html:404
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The returned bytes establish the two arithmetic constants and initial pan "
"scale. The agent now has the values needed for the C expression."
msgstr ""
"Возвращаемые байты задают две арифметические константы и начальный масштаб "
"панорамирования. Теперь у агента есть значения, необходимые для выражения на"
" языке Си."
#: website/public/showcase/dx-ball/index.html:412
msgctxt "page:showcase/dx-ball/index.html"
msgid "From REA's findings to C"
msgstr "От выводов REA до C"
#: website/public/showcase/dx-ball/index.html:413
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow the five steps below. Each selection highlights the original "
"instructions and the C lines they informed."
msgstr ""
"Выполните пять шагов, описанных ниже. В каждом выбранном элементе выделены "
"исходные инструкции и основные строки, которые они содержали."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:423
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}01{ph1} Input"
msgstr "{ph0}Вход 01{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:431
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}02{ph1} Multiply"
msgstr "{ph0}02{ph1} Умножить"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:439
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}03{ph1} Subtract"
msgstr "{ph0}03{ph1} Вычесть"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:447
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}04{ph1} Scale"
msgstr "{ph0}Шкала 04{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:455
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}05{ph1} Return"
msgstr "{ph0}05{ph1} Возвращение"
#: website/public/showcase/dx-ball/index.html:467
msgctxt "page:showcase/dx-ball/index.html"
msgid "Original x86 · excerpt"
msgstr "Оригинальная выдержка из x86 ·"
#: website/public/showcase/dx-ball/index.html:488
msgctxt "page:showcase/dx-ball/index.html"
msgid "Reconstructed C"
msgstr "Реконструированный 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:515
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}01 · Read the input.{ph1} The instruction view in REA's function result"
" reads {ph2} and uses {ph3} to load the integer. Following its caller "
"through REA establishes the screen-coordinate meaning of the C parameter "
"{ph4}."
msgstr ""
"{ph0}01 · Считайте входные данные.{ph1} В окне команд в результате работы "
"функции REA отображается {ph2} и используется {ph3} для загрузки целого "
"числа. Отслеживание вызывающего абонента через REA устанавливает значение "
"экранной координаты параметра C {ph4}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x420068</code>
#. {ph4}: <code>read_bytes</code>
#. {ph5}: <code>1.5625</code>
#: website/public/showcase/dx-ball/index.html:522
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}02 · Multiply by 1.5625.{ph1} {ph2} reads the double at {ph3}. The "
"bytes returned by REA's {ph4} decode to {ph5}; the C uses the same constant."
msgstr ""
"{ph0}02 · Умножить на 1,5625.{ph1} {ph2} считывает удвоенное значение {ph3}."
" Байты, возвращаемые функцией REA's {ph4}, декодируются как {ph5}; C "
"использует ту же константу."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FSUB</code>
#. {ph3}: <code>0x420070</code>
#. {ph4}: <code>500.0</code>
#. {ph5}: <code>320</code>
#: website/public/showcase/dx-ball/index.html:528
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}03 · Subtract 500.0.{ph1} {ph2} reads the double at {ph3}. REA's byte "
"result decodes to {ph4}, shifting the calculation's center to screen "
"coordinate {ph5}."
msgstr ""
"{ph0}03 · Вычтите 500,0.{ph1} {ph2} считывает двойное значение в {ph3}. "
"Результат в байтах REA расшифровывается как {ph4}, смещая центр вычисления "
"на экранную координату {ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x4210a0</code>
#. {ph4}: <code>dxball_pan_scale</code>
#. {ph5}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:534
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}04 · Apply the stored scale.{ph1} The second {ph2} reads {ph3}. That "
"global is named {ph4} in the maintained source. REA's second byte read "
"establishes its initial value of {ph5}."
msgstr ""
"{ph0}04 · Примените сохраненную шкалу.{ph1} Второй {ph2} показывает значение"
" {ph3}. В поддерживаемом источнике этот глобал называется {ph4}. При чтении"
" второго байта REA его начальное значение равно {ph5}."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x406430</code>
#. {ph3}: <code>__ftol</code>
#. {ph4}: <code>DxBallInt</code>
#: website/public/showcase/dx-ball/index.html:541
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}05 · Return an integer.{ph1} The call at {ph2} reaches {ph3}, "
"identified in REA's callee results. The C casts the result to {ph4}; "
"original-x86 comparisons check the returned value."
msgstr ""
"{ph0}05 · Возвращает целое число.{ph1} Вызов по {ph2} 0x406430 достигает "
"значения {ph3}, указанного в результатах поиска вызываемого абонента REA. C "
"преобразует результат в {ph4}; исходные сравнения с x86 проверяют "
"возвращаемое значение."
#: website/public/showcase/dx-ball/index.html:550
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The assembly excerpt selects the input, arithmetic and return instructions. "
"The full listing below also includes the intervening stores and function "
"setup and cleanup."
msgstr ""
"В приведенном ниже отрывке из сборки выбираются инструкции по вводу, "
"арифметике и возврату. В приведенный ниже полный список также включены "
"промежуточные хранилища, настройка и очистка функций."
#: website/public/showcase/dx-ball/index.html:556
msgctxt "page:showcase/dx-ball/index.html"
msgid "Full assembly and supporting evidence"
msgstr "Полная сборка и подтверждающие доказательства"
#: website/public/showcase/dx-ball/index.html:559
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · 0x406400–0x40643e"
msgstr "Результат REA · 0x406400–0x40643e"
#: website/public/showcase/dx-ball/index.html:593
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the caller supplies"
msgstr "Что предоставляет вызывающий абонент"
#. {ph0}: <code>0x411f40</code>
#: website/public/showcase/dx-ball/index.html:594
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The brick-hit function at {ph0} scales its tile coordinate by 30, adds 20, "
"then pushes it before the call:"
msgstr ""
"Функция brick-hit в {ph0} масштабирует свою координату плитки на 30, "
"добавляет 20, а затем перемещает ее перед вызовом:"
#: website/public/showcase/dx-ball/index.html:608
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the data reads establish"
msgstr "То, что читают данные, устанавливает"
#: website/public/showcase/dx-ball/index.html:611
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte reads, decoded as little-endian doubles"
msgstr "Считывается байт REA, декодируемый как удвоение в порядке убывания"
#: website/public/showcase/dx-ball/index.html:616
msgctxt "page:showcase/dx-ball/index.html"
msgid "Address"
msgstr "Адрес"
#: website/public/showcase/dx-ball/index.html:617
msgctxt "page:showcase/dx-ball/index.html"
msgid "Value"
msgstr "Ценность"
#: website/public/showcase/dx-ball/index.html:618
msgctxt "page:showcase/dx-ball/index.html"
msgid "Used for"
msgstr "Используется для"
#: website/public/showcase/dx-ball/index.html:625
msgctxt "page:showcase/dx-ball/index.html"
msgid "First multiplication"
msgstr "Первое умножение"
#: website/public/showcase/dx-ball/index.html:630
msgctxt "page:showcase/dx-ball/index.html"
msgid "Subtraction"
msgstr "Вычитание"
#. {ph0}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:634
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0} initially"
msgstr "{ph0} изначально"
#: website/public/showcase/dx-ball/index.html:635
msgctxt "page:showcase/dx-ball/index.html"
msgid "Stored pan scale"
msgstr "Сохраненные весы для поддонов"
#: website/public/showcase/dx-ball/index.html:640
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Recorded with REA 4.1.0 for the hash-pinned DX-Ball 1.07 target. The linked "
"investigation notes retain the Evidence IDs."
msgstr ""
"Записано с помощью REA 4.1.0 для цели DX-Ball 1.07 с привязкой к хэшу. В "
"связанных материалах расследования сохраняются идентификаторы улик."
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/src/gameplay.c#L41" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/GAMEPLAY_OWNER.md"
#. >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:645
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Maintained source{ph1} · {ph2}Investigation notes and evidence "
"references{ph3}"
msgstr ""
"{ph0}Поддерживаемый источник{ph1} · {ph2}Заметки о расследовании и ссылки на"
" доказательства{ph3}"
#: website/public/showcase/dx-ball/index.html:659
msgctxt "page:showcase/dx-ball/index.html"
msgid "Checking the recovered function"
msgstr "Проверка восстановленной функции"
#: website/public/showcase/dx-ball/index.html:660
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered function passes two checks: its return values match the "
"original, and its compiled bytes match the executable."
msgstr ""
"Восстановленная функция проходит две проверки: ее возвращаемые значения "
"совпадают с исходными, а скомпилированные байты соответствуют исполняемому "
"файлу."
#: website/public/showcase/dx-ball/index.html:666
msgctxt "page:showcase/dx-ball/index.html"
msgid "3,205 behavior cases"
msgstr "3 205 случаев нарушения поведения"
#: website/public/showcase/dx-ball/index.html:667
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The tests execute the original x86 function and compare its return value "
"with the maintained C. They cover every integer position from 0 to 640 at "
"five pan scales: 0, 0.5, 1, 20 and −1."
msgstr ""
"Тесты выполняют исходную функцию x86 и сравнивают возвращаемое ею значение с"
" сохраненным значением C. Они охватывают все целочисленные позиции от 0 до "
"640 в пяти масштабах панорамирования: 0, 0,5, 1, 20 и -1."
#: website/public/showcase/dx-ball/index.html:675
msgctxt "page:showcase/dx-ball/index.html"
msgid "63 matching bytes"
msgstr "63 совпадающих байта"
#: website/public/showcase/dx-ball/index.html:676
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The C function is compiled with the pinned VC4.0 toolchain. Compiler replay "
"matches the complete function after applying the reviewed relocations and "
"checking the referenced constants."
msgstr ""
"Функция C компилируется с помощью закрепленной цепочки инструментов VC4.0. "
"Повторное воспроизведение компилятором соответствует полной функции после "
"применения рассмотренных изменений и проверки констант, на которые даны "
"ссылки."
#: website/public/showcase/dx-ball/index.html:684
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"At a scale of 1, the recovered calculation returns −500 at the left edge, 0 "
"at the center and 500 at the right edge. The next part of the audio work is "
"integrating that value with the game's sound backend."
msgstr ""
"При шкале, равной 1, восстановленные вычисления возвращают значение -500 по "
"левому краю, 0 по центру и 500 по правому краю. Следующая часть работы со "
"звуком - это интеграция этого значения со звуковым сопровождением игры."
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/BUILD_MATCHING.md"
#. >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:690
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Read the compiler replay details{ph1}"
msgstr "{ph0}Ознакомьтесь с подробностями воспроизведения компилятором{ph1}"
#: website/public/showcase/dx-ball/index.html:699
msgctxt "page:showcase/dx-ball/index.html"
msgid "Continue the investigation"
msgstr "Продолжайте расследование"
#: website/public/showcase/dx-ball/index.html:700
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The same approach is being used for particle updates, explosion queues and "
"bonus generation: inspect the relevant functions, recover their state and "
"dependencies, then compare the implementation with the original."
msgstr ""
"Тот же подход используется для обновления частиц, создания очередей с "
"расширением и генерации бонусов: проверьте соответствующие функции, "
"восстановите их состояние и зависимости, а затем сравните реализацию с "
"исходной."
#: website/public/showcase/dx-ball/index.html:706
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"To inspect the sound-pan function yourself, follow the DX-Ball project's "
"setup instructions and supply its matching original target. Then run:"
msgstr ""
"Чтобы самостоятельно проверить функцию панорамирования звука, следуйте "
"инструкциям по настройке DX-Ball project и укажите соответствующую исходную "
"цель. Затем запустите:"
#: website/public/showcase/dx-ball/index.html:713
msgctxt "page:showcase/dx-ball/index.html"
msgid "In the DX-Ball checkout"
msgstr "При оформлении заказа DX-Ball"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-ball" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/dx-ball/index.html:727
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}DX-Ball repository{ph1}{ph2}Current source, progress and local "
"setup.{ph3}"
msgstr ""
"{ph0} Текущий источник репозитория{ph1}{ph2} DX-Ball, ход выполнения и "
"локальная настройка.{ph3}"
#. {ph0}: <a href="../../guides/native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:732
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}REA analysis workflow{ph1}{ph2}Follow the calculation, then use the "
"same approach with your own binary.{ph3}"
msgstr ""
"{ph0} Рабочий процесс анализа{ph1}{ph2} REA Завершается вычислением, затем "
"используйте тот же подход с вашим собственным двоичным файлом.{ph3}"
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ENTITIES_OWNER.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:739
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Particles and bonus production{ph1}{ph2}A larger investigation into "
"state, queues and pixel writes.{ph3}"
msgstr ""
"{ph0}Создание частиц и бонусов{ph1}{ph2} - более масштабное исследование "
"состояния, очередей и записи пикселей.{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 Обратный инжиниринг: Панорамирование звука — 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 ""
"Выполните реконструкцию DX-Ball от бинарного анализа через REA до "
"поддерживаемых тестов на C, исходных x86 и сопоставления скомпилированных "
"байтов функций."
#: website/public/showcase/dx-ball/index.html:193
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DX-Ball sound-pan investigation; scroll horizontally on smaller screens"
msgstr ""
"DX-Ball sound-исследование панорамирования; горизонтальная прокрутка на "
"экранах меньшего размера"
#: website/public/showcase/dx-ball/index.html:199
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DXBALL.EXE function 0x00406400 is inspected with REA. A brick-hit caller "
"supplies 20 plus 30 times tile_x. Instructions load x, multiply by 1.5625, "
"subtract 500.0, apply pan_scale and return an integer. The maintained C is "
"checked independently against the original x86 in 3,205 cases and by VC4.0 "
"compiler replay matching 63 bytes."
msgstr ""
"DXBALL.EXE функция 0x00406400 проверяется с помощью REA . Вызывающий "
"абонент, попавший в тупик, выдает значение tile_x в 20 и 30 раз больше. "
"Инструкции загружают x, умножают на 1,5625, вычитают 500,0, применяют "
"pan_scale и возвращают целое число. Поддерживаемый C проверяется независимо "
"от исходного x86 в 3205 случаях и с помощью компилятора VC4.0 "
"воспроизводится на соответствие 63 байтам."
#: website/public/showcase/dx-ball/index.html:217
msgctxt "page:showcase/dx-ball/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/showcase/dx-ball/index.html:226
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball reconstruction case study"
msgstr "Тематическое исследование реконструкции DX-Ball"
#: website/public/showcase/dx-ball/index.html:277
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy example prompt"
msgstr "Запрос на копирование примера"
#: website/public/showcase/dx-ball/index.html:418
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the sound-pan calculation"
msgstr "Следите за расчетом положения звука слева/справа"
#: website/public/showcase/dx-ball/index.html:468
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy original assembly excerpt"
msgstr "Скопируйте фрагмент оригинальной сборки"
#: website/public/showcase/dx-ball/index.html:489
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy sound-pan function"
msgstr "Функция копирования звука-панорамирование"
#: website/public/showcase/dx-ball/index.html:560
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy complete sound-pan assembly"
msgstr "Скопируйте полную сборку sound-pan"
#: website/public/showcase/dx-ball/index.html:714
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy DX-Ball analysis command"
msgstr "Скопировать команду анализа DX-Ball"
#: website/public/showcase/dx-ball/index.html:772
msgctxt "page:showcase/dx-ball/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/showcase/index.html:99
msgctxt "page:showcase/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/showcase/index.html:181
#, python-brace-format
msgctxt "page:showcase/index.html"
msgid "{ph0}Home{ph1} / Showcases"
msgstr "{ph0}Главная{ph1} страница / Витрины"
#: website/public/showcase/index.html:182
msgctxt "page:showcase/index.html"
msgid "REA case studies."
msgstr "Тематические исследования REA."
#: website/public/showcase/index.html:183
msgctxt "page:showcase/index.html"
msgid ""
"Android, games, Electron and a CTF challenge, with code, figures and checked"
" results."
msgstr ""
"Android, игры, Electron и конкурс CTF с кодом, цифрами и проверенными "
"результатами."
#: website/public/showcase/index.html:190
msgctxt "page:showcase/index.html"
msgid "Android · APK analysis"
msgstr "Android · Анализ APK"
#: website/public/showcase/index.html:192
msgctxt "page:showcase/index.html"
msgid "How an authenticator generates a login code"
msgstr "Как аутентификатор генерирует код входа в систему"
#: website/public/showcase/index.html:193
msgctxt "page:showcase/index.html"
msgid ""
"Find Aegis's six-digit code calculation in its released APK. Trace the "
"generating methods with REA, then move a demo clock to see why the code "
"changes every 30 seconds."
msgstr ""
"Узнайте, как Aegis рассчитывает шестизначный код, в опубликованном APK . "
"Проследите за методами генерации с помощью REA, затем посмотрите на "
"демонстрационные часы, чтобы понять, почему код меняется каждые 30 секунд."
#: website/public/showcase/index.html:204
msgctxt "page:showcase/index.html"
msgid "Read the Android case study"
msgstr "Ознакомьтесь с тематическим исследованием Android"
#: website/public/showcase/index.html:208
msgctxt "page:showcase/index.html"
msgid "CTF · Native analysis"
msgstr "CTF · Анализ программ с машинным кодом"
#: website/public/showcase/index.html:210
msgctxt "page:showcase/index.html"
msgid "Solve a CTF flag checker"
msgstr "Решите проблему с проверкой флага CTF"
#: website/public/showcase/index.html:211
msgctxt "page:showcase/index.html"
msgid ""
"Inspect an easy DownUnderCTF challenge with REA. Find its checking "
"functions, turn masks and sums into equations, then verify the solved flag "
"with the original program."
msgstr ""
"Изучите простую задачу DOWNDERCTF с помощью REA. Найдите ее проверяющие "
"функции, преобразуйте маски и суммы в уравнения, затем проверьте флажок "
"\"решено\" с помощью исходной программы."
#: website/public/showcase/index.html:222
msgctxt "page:showcase/index.html"
msgid "Read the CTF case study"
msgstr "Ознакомьтесь с тематическим исследованием CTF"
#: website/public/showcase/index.html:226
msgctxt "page:showcase/index.html"
msgid "Native · Reconstruction"
msgstr "Нативная · Реконструкция"
#: website/public/showcase/index.html:228
msgctxt "page:showcase/index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "DX-Ball рассчитывает положение звука слева/справа"
#: website/public/showcase/index.html:229
msgctxt "page:showcase/index.html"
msgid ""
"Recover a sound-pan calculation from a 1996 Windows game. REA's "
"instructions, caller references and numeric constants lead to a small C "
"function, checked against the original behavior and all 63 compiled bytes."
msgstr ""
"Восстановите расчет положения звука слева / справа из игры Windows 1996 года"
" выпуска. Инструкции REA, ссылки на вызывающий объект и числовые константы "
"приводят к созданию небольшой функции C, которая проверяется на соответствие"
" исходному поведению и всем 63 скомпилированным байтам."
#: website/public/showcase/index.html:241
msgctxt "page:showcase/index.html"
msgid "Read the DX-Ball case study"
msgstr "Ознакомьтесь с тематическим исследованием DX-Ball"
#: website/public/showcase/index.html:245
msgctxt "page:showcase/index.html"
msgid "Electron · Feature tracing"
msgstr "Electron · Отслеживание объектов"
#: website/public/showcase/index.html:247
msgctxt "page:showcase/index.html"
msgid "How Notion copies text and HTML"
msgstr "Как Notion копирует текст и HTML"
#: website/public/showcase/index.html:248
msgctxt "page:showcase/index.html"
msgid ""
"Trace a page-facing API through Notion's packaged JavaScript. Follow its IPC"
" wrappers to the system clipboard, then see how a small HTML marker keeps "
"rich block data connected to a copy."
msgstr ""
"Отследите API, работающий на странице, с помощью JavaScript, встроенного в "
"Notion. Проследите за его IPC-оболочками в системном буфере обмена, а затем "
"посмотрите, как маленький HTML-маркер связывает данные расширенного блока с "
"копией."
#: website/public/showcase/index.html:259
msgctxt "page:showcase/index.html"
msgid "Read the Notion case study"
msgstr "Ознакомьтесь с тематическим исследованием Notion"
#: website/public/showcase/index.html:263
msgctxt "page:showcase/index.html"
msgid "PC-98 DOS · Reconstruction"
msgstr "PC-98 DOS · Реконструкция"
#: website/public/showcase/index.html:265
msgctxt "page:showcase/index.html"
msgid "How TH04 aims a ring of bullets"
msgstr "Как TH04 целится в кольцо из пуль"
#: website/public/showcase/index.html:266
msgctxt "page:showcase/index.html"
msgid ""
"Inspect the original 16-bit angle helper with REA. Match its multiply, "
"divide and coordinate operations to readable C++, then see how they produce "
"a ring aimed at the player."
msgstr ""
"Проверьте оригинальный 16-разрядный angle helper с помощью REA . Сопоставьте"
" его операции умножения, деления и координации с понятным C++, а затем "
"посмотрите, как они создают кольцо, направленное на игрока."
#: website/public/showcase/index.html:277
msgctxt "page:showcase/index.html"
msgid "Read the TH04 case study"
msgstr "Ознакомьтесь с тематическим исследованием TH04"
#: website/public/showcase/index.html:282
msgctxt "page:showcase/index.html"
msgid "Step-by-step guides"
msgstr "Пошаговые руководства"
#: website/public/showcase/index.html:283
msgctxt "page:showcase/index.html"
msgid ""
"The guides walk through a native calculation, an Electron export and a "
"browser request. Each starts with a prompt and a concrete target."
msgstr ""
"В руководствах описываются собственные вычисления, экспорт Electron и запрос"
" к браузеру. Каждое из них начинается с запроса и конкретной цели."
#: website/public/showcase/index.html:287
msgctxt "page:showcase/index.html"
msgid "Read the guides"
msgstr "Ознакомьтесь с руководствами"
#: website/public/showcase/index.html:6
msgctxt "page:showcase/index.html"
msgid "Reverse Engineering Case Studies — REA"
msgstr "Тематические исследования по реверс—инжинирингу - 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 ""
"Следите за расследованиями REA с помощью кода, рисунков и демонстраций: "
"Android authenticator, DX-Ball, Notion, TH04 и средства проверки флага "
"DownUnderCTF."
#: website/public/showcase/index.html:304
msgctxt "page:showcase/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/showcase/notion/index.html:99
msgctxt "page:showcase/notion/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/notion/index.html:181
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Notion"
msgstr "{ph0}Главная{ph1} страница / {ph2}Витрины{ph3} / Notion"
#: website/public/showcase/notion/index.html:184
msgctxt "page:showcase/notion/index.html"
msgid "Case study · Electron"
msgstr "Тематическое исследование · Electron"
#. {ph0}: <br />
#: website/public/showcase/notion/index.html:185
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "How Notion copies{ph0}text and HTML."
msgstr "Как Notion копирует{ph0}текст и HTML."
#: website/public/showcase/notion/index.html:186
msgctxt "page:showcase/notion/index.html"
msgid ""
"Trace a clipboard call from Notion's page API, through the preload and main "
"process, to Electron's clipboard writer."
msgstr ""
"Проследите вызов буфера обмена из API страницы Notion, через предварительную"
" загрузку и основной процесс, в программу записи буфера обмена Electron."
#: website/public/showcase/notion/index.html:190
msgctxt "page:showcase/notion/index.html"
msgid "Notion Desktop 7.6.1 · JavaScript · REA"
msgstr "Рабочий стол Notion 7.6.1 · JavaScript · REA"
#: website/public/showcase/notion/index.html:194
msgctxt "page:showcase/notion/index.html"
msgid "The bridge inside Notion's desktop package"
msgstr "Мост внутри настольного пакета Notion"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>clipboard.write(data)</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:196
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}01 · Page-facing API{ph1} {ph2}{ph3}{ph4} {ph5}The preload exposes a "
"callable method.{ph6}"
msgstr ""
"{ph0}01 · {ph1}Буфер обмена API, ориентированный на страницу{ph2}{ph3}{ph4} "
"{ph5}Предварительная загрузка предоставляет вызываемый метод.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>ipcRenderer.invoke</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:203
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}02 · Preload wrapper{ph1} {ph2}{ph3}{ph4} {ph5}The wrapper sends the "
"channel and arguments.{ph6}"
msgstr ""
"{ph0}02 · Предварительно загрузите оболочку{ph1} {ph2}{ph3}{ph4} "
"{ph5}оболочки отправляет канал и аргументы.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>ipcMain.handle</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:210
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}03 · Main-process handler{ph1} {ph2}{ph3}{ph4} {ph5}The receiver checks"
" which page sent it.{ph6}"
msgstr ""
"{ph0}03 · Обработчик основного процесса "
"ipcMain{ph1}.обработчик{ph2}{ph3}{ph4} {ph5}получателя проверяет, с какой "
"страницы он был отправлен.{ph6}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span>
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>clipboard.write(data)</code>
#. {ph4}: </span>
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/showcase/notion/index.html:217
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}04 · System clipboard{ph1} {ph2}{ph3}{ph4} {ph5}Electron writes the "
"supplied text and HTML.{ph6}"
msgstr ""
"{ph0}04 · Системный буфер{ph1} обмена {ph2}{ph3}{ph4} {ph5}Electron "
"записывает предоставленный текст и HTML-код.{ph6}"
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:225
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "One channel joins the two sides: {ph0}"
msgstr "Один канал соединяет две стороны: {ph0}"
#: website/public/showcase/notion/index.html:229
msgctxt "page:showcase/notion/index.html"
msgid ""
"The packaged code uses the same channel in the preload and main process. "
"Resolving the wrappers reveals the Electron calls behind those names."
msgstr ""
"Упакованный код использует один и тот же канал в процессе предварительной "
"загрузки и в основном процессе. При разрешении оболочек обнаруживаются "
"вызовы Electron, стоящие за этими именами."
#: website/public/showcase/notion/index.html:238
msgctxt "page:showcase/notion/index.html"
msgid "In this case study"
msgstr "В этом тематическом исследовании"
#. {ph0}: <a href="#clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:240
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Follow the clipboard bridge{ph1}"
msgstr "{ph0}Следуйте по мосту из буфера обмена{ph1}"
#. {ph0}: <a href="#rich-clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:241
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Keeping a block's structure{ph1}"
msgstr "{ph0}Сохранение структуры блока{ph1}"
#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:242
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}More examples and sources{ph1}"
msgstr "{ph0}Дополнительные примеры и источники{ph1}"
#: website/public/showcase/notion/index.html:247
msgctxt "page:showcase/notion/index.html"
msgid "Where does the copy operation go?"
msgstr "Где выполняется операция копирования?"
#. {ph0}: <code>clipboard.write</code>
#: website/public/showcase/notion/index.html:248
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The page sees a method called {ph0}. Its implementation in the preload is a "
"wrapper. The useful question is what that wrapper sends, and which code "
"receives it."
msgstr ""
"На странице отображается метод под названием {ph0}. Его реализация в "
"предварительной загрузке является оболочкой. Полезный вопрос заключается в "
"том, что отправляет эта оболочка и какой код ее получает."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/notion/index.html:255
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/showcase/notion/index.html:259
#: website/public/showcase/notion/index.html:332
#: website/public/showcase/notion/index.html:361
#: website/public/showcase/notion/index.html:392
#: website/public/showcase/notion/index.html:420
msgctxt "page:showcase/notion/index.html"
msgid "Copy"
msgstr "Копировать"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="notion-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/notion/index.html:268
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to trace how Notion copies text and HTML to the "
"system clipboard. Show the code at each step.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы проследить, как Notion копирует "
"текст и HTML в системный буфер обмена. Показывайте код на каждом "
"шаге.{ph3}{ph4}{ph5}"
#: website/public/showcase/notion/index.html:276
msgctxt "page:showcase/notion/index.html"
msgid ""
"An example prompt with Notion's local application package available to your "
"coding agent."
msgstr ""
"Пример запроса с локальным пакетом приложений Notion, доступным вашему "
"программисту."
#: website/public/showcase/notion/index.html:281
msgctxt "page:showcase/notion/index.html"
msgid "REA finds where to start reading"
msgstr "REA находит, с чего начать чтение"
#: website/public/showcase/notion/index.html:282
msgctxt "page:showcase/notion/index.html"
msgid ""
"Analyzing the tab preload with REA locates the API exposed to the page and "
"the call that sends an IPC request. Both findings come with source ranges in"
" the minified bundle:"
msgstr ""
"Анализ предварительной загрузки вкладок с помощью REA позволяет найти API, "
"доступный для страницы, и вызов, который отправляет запрос IPC. Оба "
"результата представлены с диапазонами исходных текстов в уменьшенном пакете:"
#: website/public/showcase/notion/index.html:288
msgctxt "page:showcase/notion/index.html"
msgid "REA findings → two places to open"
msgstr "REA выводы → два места для открытия"
#. {ph0}: <code>analyze_javascript_application</code>
#: website/public/showcase/notion/index.html:303
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Selected fields from a fresh {ph0} result on Notion's tab preload, recorded "
"with REA 4.1.0. Positions use the original bundle's line and zero-based "
"column."
msgstr ""
"Выбранные поля из нового {ph0}результата применения "
"analyze_javascript_application в предварительной загрузке вкладки Notion, "
"записанного с помощью REA 4.1.0. Для позиций используются строка исходного "
"пакета и столбец, основанный на нуле."
#. {ph0}: <code>invokerInMain</code>
#. {ph1}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:310
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The agent opens those locations, finds the clipboard member in the assembled"
" API, and reads {ph0}. Its call site supplies {ph1}. That name gives the "
"agent something precise to look for in the main bundle. The four excerpts "
"below show the route it connects."
msgstr ""
"Агент открывает эти папки, находит элемент clipboard в собранном API и "
"считывает {ph0}. Его сайт вызова предоставляет {ph1}. Это имя дает агенту "
"точную информацию для поиска в основном пакете. В четырех приведенных ниже "
"выдержках показан маршрут, по которому он подключается."
#: website/public/showcase/notion/index.html:319
msgctxt "page:showcase/notion/index.html"
msgid "Four short pieces of code"
msgstr "Четыре коротких фрагмента кода"
#: website/public/showcase/notion/index.html:320
msgctxt "page:showcase/notion/index.html"
msgid ""
"Simplified from the packaged JavaScript, with readable variable names. "
"Unrelated members are omitted."
msgstr ""
"Упрощенный по сравнению с пакетным JavaScript, с удобочитаемыми именами "
"переменных. Несвязанные элементы опущены."
#: website/public/showcase/notion/index.html:326
msgctxt "page:showcase/notion/index.html"
msgid "Start at the API exposed to the page"
msgstr "Начните с API, доступного для этой страницы"
#. {ph0}: <code>invokerInMain</code>
#: website/public/showcase/notion/index.html:348
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"This member supplies the channel name. The implementation of {ph0} tells us "
"how the request leaves the page's process."
msgstr ""
"Этот участник предоставляет название канала. Реализация {ph0} сообщает нам, "
"как запрос завершает обработку страницы."
#: website/public/showcase/notion/index.html:355
msgctxt "page:showcase/notion/index.html"
msgid "Resolve the preload's wrapper"
msgstr "Устраните оболочку предварительной загрузки"
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:378
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The returned function forwards the arguments through Electron's request-and-"
"response IPC. We can now look for {ph0} on the main-process side."
msgstr ""
"Возвращаемая функция перенаправляет аргументы через IPC запроса и ответа "
"Electron. Теперь мы можем искать {ph0} на стороне основного процесса."
#: website/public/showcase/notion/index.html:386
msgctxt "page:showcase/notion/index.html"
msgid "Check how the receiver is registered"
msgstr "Проверьте, как зарегистрирован получатель"
#. {ph0}: <code>addListener</code>
#. {ph1}: <code>ipcMain.handle</code>
#: website/public/showcase/notion/index.html:407
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The main process uses another wrapper. Its {ph0} method registers an {ph1} "
"receiver for that channel."
msgstr ""
"Основной процесс использует другую оболочку. Его метод {ph0} регистрирует "
"{ph1} для этого канала."
#: website/public/showcase/notion/index.html:414
msgctxt "page:showcase/notion/index.html"
msgid "Find the write and its sender check"
msgstr "Найдите запись и проверьте ее отправителя"
#: website/public/showcase/notion/index.html:437
msgctxt "page:showcase/notion/index.html"
msgid ""
"This is the destination. After checking the sender, the handler passes the "
"supplied data to Electron's clipboard API. The channel and the two resolved "
"wrappers connect the exposed method to this call."
msgstr ""
"Это адресат. После проверки отправителя обработчик передает предоставленные "
"данные в API буфера обмена Electron. Канал и две разрешенные оболочки "
"подключают открытый метод к этому вызову."
#: website/public/showcase/notion/index.html:448
msgctxt "page:showcase/notion/index.html"
msgid "How does a copied block keep its structure?"
msgstr "Как скопированный блок сохраняет свою структуру?"
#. {ph0}: <code>electronApi.clipboard.write</code>
#: website/public/showcase/notion/index.html:449
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's web editor sends text and HTML through {ph0}. It keeps the block "
"data locally and puts an ID in the copied HTML to connect them."
msgstr ""
"Веб-редактор Notion отправляет текст и HTML-код через {ph0}. Он сохраняет "
"данные блока локально и вставляет идентификатор в скопированный HTML-код, "
"чтобы связать их."
#: website/public/showcase/notion/index.html:455
msgctxt "page:showcase/notion/index.html"
msgid "HTML links to saved block data"
msgstr "HTML-ссылки на сохраненные данные блоков"
#: website/public/showcase/notion/index.html:479
msgctxt "page:showcase/notion/index.html"
msgid "Read the HTML ID"
msgstr "Прочитайте HTML-идентификатор"
#: website/public/showcase/notion/index.html:480
msgctxt "page:showcase/notion/index.html"
msgid "Find the same local ID"
msgstr "Найдите тот же локальный идентификатор"
#: website/public/showcase/notion/index.html:481
msgctxt "page:showcase/notion/index.html"
msgid "Restore Notion block data"
msgstr "Восстановить данные блока Notion"
#: website/public/showcase/notion/index.html:483
msgctxt "page:showcase/notion/index.html"
msgid ""
"Illustrative text and ID. The recorded module test restores the block data "
"when IDs match; a stale entry returns only text and HTML."
msgstr ""
"Иллюстративный текст и идентификатор. Записанный модульный тест "
"восстанавливает данные блока, если идентификаторы совпадают; устаревшая "
"запись возвращает только текст и HTML."
#: website/public/showcase/notion/index.html:489
msgctxt "page:showcase/notion/index.html"
msgid ""
"On paste, Notion looks for the HTML ID and checks it against the saved copy."
" Matching IDs restore the block data."
msgstr ""
"При вставке Notion ищет HTML-идентификатор и сравнивает его с сохраненной "
"копией. Совпадающие идентификаторы восстанавливают данные блока."
#: website/public/showcase/notion/index.html:493
msgctxt "page:showcase/notion/index.html"
msgid "Clipboard format recorded from web assets cached on July 13, 2026."
msgstr ""
"Формат буфера обмена, записанный из веб-ресурсов, кэшированных 13 июля 2026 "
"года."
#: website/public/showcase/notion/index.html:499
msgctxt "page:showcase/notion/index.html"
msgid "More examples and sources"
msgstr "Дополнительные примеры и источники"
#: website/public/showcase/notion/index.html:501
msgctxt "page:showcase/notion/index.html"
msgid "Another example: Markdown tables"
msgstr "Другой пример: таблицы уценки"
#: website/public/showcase/notion/index.html:502
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion parses Markdown into block data. This example shows how a table "
"becomes header and data rows."
msgstr ""
"Notion преобразует Markdown в блочные данные. В этом примере показано, как "
"таблица преобразуется в заголовок и строки данных."
#: website/public/showcase/notion/index.html:507
msgctxt "page:showcase/notion/index.html"
msgid "A table through Notion's Markdown parser"
msgstr "Таблица с помощью анализатора уценки Notion"
#: website/public/showcase/notion/index.html:528
msgctxt "page:showcase/notion/index.html"
msgid ""
"Recorded output from an extracted Markdown parser. The table becomes rows "
"and cells."
msgstr ""
"Записанный вывод из извлеченного анализатора Markdown. Таблица преобразуется"
" в строки и ячейки."
#: website/public/showcase/notion/index.html:535
msgctxt "page:showcase/notion/index.html"
msgid "Another path: the offline SQLite connection"
msgstr "Другой путь: автономное подключение к SQLite"
#. {ph0}: <code>getSqliteMeta</code>
#: website/public/showcase/notion/index.html:536
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's renderer requests {ph0} through IPC. The main process creates a "
"message channel and gives one port to the renderer and the other to a SQLite"
" utility process. Subsequent statement batches and results travel over that "
"port."
msgstr ""
"Программа визуализации Notion запрашивает {ph0} через IPC. Основной процесс "
"создает канал передачи сообщений и передает один порт программе "
"визуализации, а другой - служебному процессу SQLite. Последующие пакеты "
"инструкций и результаты передаются через этот порт."
#: website/public/showcase/notion/index.html:542
msgctxt "page:showcase/notion/index.html"
msgid ""
"Following this handoff explains where the database work runs, and why "
"tracing only the initial IPC request misses the later conversation."
msgstr ""
"После этой передачи обслуживания объясняется, как выполняется работа с базой"
" данных и почему при отслеживании только первоначального IPC-запроса не "
"учитывается последующий диалог."
#: website/public/showcase/notion/index.html:549
msgctxt "page:showcase/notion/index.html"
msgid "Sources and how to read the excerpts"
msgstr "Источники и как читать выдержки"
#. {ph0}: <code>app.asar</code>
#. {ph1}: <code>main/index.js</code>
#. {ph2}: <code>isNotionWebContents</code>
#: website/public/showcase/notion/index.html:550
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The clipboard bridge comes from Notion Desktop 7.6.1's {ph0}: the tab "
"preload and {ph1}. The excerpts expand minified variable names and omit "
"unrelated code; the sender-check helper is shown with its underlying {ph2} "
"call."
msgstr ""
"Интерфейс буфера обмена взят из NotionNotion{ph0}: предварительная загрузка "
"вкладки и {ph1}. В приведенных выдержках приведены сокращенные имена "
"переменных и опущен несвязанный код; показан помощник для проверки "
"отправителя с базовым {ph2}вызовом isNotionWebContents."
#. {ph0}: <code>747001</code>
#. {ph1}: <code>58169</code>
#. {ph2}: <code>736810</code>
#. {ph3}: <code>422457</code>
#: website/public/showcase/notion/index.html:558
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The virtual clipboard and Markdown examples come from web assets cached on "
"July 13, 2026, including modules {ph0}, {ph1}, {ph2} and {ph3}. Those assets"
" have their own version. Saved probes executed extracted modules and small "
"harnesses; their outputs describe those probes rather than a captured "
"desktop UI session."
msgstr ""
"Примеры виртуального буфера обмена и Markdown взяты из веб-ресурсов, "
"кэшированных 13 июля 2026 года, включая модули {ph0}, {ph1}, {ph2} и {ph3}. "
"У этих ресурсов есть своя версия. Сохраненные тесты запускали извлеченные "
"модули и небольшие модули управления; их выходные данные описывают эти "
"тесты, а не захваченный сеанс пользовательского интерфейса рабочего стола."
#: website/public/showcase/notion/index.html:566
msgctxt "page:showcase/notion/index.html"
msgid ""
"The REA result shown here is a focused analysis of the saved tab preload, "
"recorded with the published REA 4.1.0 package. It locates the API and invoke"
" operation. The clipboard member and matching receiver are connected by "
"reading their wrapper implementations in the package."
msgstr ""
"Показанный здесь результат REA представляет собой целенаправленный анализ "
"сохраненной предварительной загрузки вкладок, записанный с помощью "
"опубликованного пакета REA 4.1.0. Он определяет местоположение API и "
"запускает операцию. Элемент буфера обмена и соответствующий приемник "
"подключаются путем считывания их реализаций-оболочек в пакете."
#. {ph0}: <code>422457</code>
#: website/public/showcase/notion/index.html:573
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The Markdown example uses parser module {ph0}. Saved module tests show that "
"both page and chat filters preserve this table. The paste/import, structured"
" Markdown and AI/chat parsers have separate entry points and intermediate "
"formats."
msgstr ""
"В примере Markdown используется модуль синтаксического анализа {ph0}. Тесты "
"сохраненного модуля показывают, что и фильтры страницы, и фильтры чата "
"сохраняют эту таблицу. Парсеры вставки/импорта, структурированного Markdown "
"и AI/chat имеют отдельные точки входа и промежуточные форматы."
#. {ph0}: <a href="../../guides/javascript/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:581
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}JavaScript application guide{ph1}{ph2}Follow a small Electron "
"application's export feature.{ph3}"
msgstr ""
"{ph0} Руководство по применению{ph1}{ph2} JavaScript Ознакомьтесь с "
"небольшой функцией экспорта приложения Electron.{ph3}"
#. {ph0}: <a href="../dx-ball/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:588
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}DX-Ball reconstruction{ph1}{ph2}Follow native instructions to a checked"
" C function.{ph3}"
msgstr ""
"{ph0} Реконструкция{ph1}{ph2} DX-Ball Выполняется в соответствии с "
"собственными инструкциями для проверенной функции C.{ph3}"
#: website/public/showcase/notion/index.html:6
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron Reverse Engineering: Clipboard — REA"
msgstr "Notion Electron Обратный инжиниринг: Буфер обмена — 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 ""
"Следуйте API буфера обмена Notion через предварительную загрузку Electron, "
"IPC-оболочку и основной процесс, с краткими выдержками кода и ознакомьтесь с"
" его богатым форматом буфера обмена."
#: website/public/showcase/notion/index.html:237
msgctxt "page:showcase/notion/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/showcase/notion/index.html:245
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron case study"
msgstr "Тематическое исследование Notion Electron"
#: website/public/showcase/notion/index.html:259
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion analysis prompt"
msgstr "Скопировать запрос на анализ Notion"
#: website/public/showcase/notion/index.html:332
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion preload excerpt"
msgstr "Скопировать фрагмент предварительной загрузки Notion"
#: website/public/showcase/notion/index.html:361
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion invoke wrapper excerpt"
msgstr "Скопировать фрагмент кода Notion для вызова оболочки"
#: website/public/showcase/notion/index.html:392
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion handler wrapper excerpt"
msgstr "Скопировать фрагмент оболочки обработчика Notion"
#: website/public/showcase/notion/index.html:420
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion clipboard receiver excerpt"
msgstr "Скопировать фрагмент приемника из буфера обмена Notion"
#: website/public/showcase/notion/index.html:475
msgctxt "page:showcase/notion/index.html"
msgid "Restoring rich clipboard data on paste"
msgstr "Восстановление расширенных данных буфера обмена при вставке"
#: website/public/showcase/notion/index.html:618
msgctxt "page:showcase/notion/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/showcase/th04/index.html:99
msgctxt "page:showcase/th04/index.html"
msgid "Skip to content"
msgstr "Перейти к содержанию"
#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/showcase/th04/index.html:181
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / TH04"
msgstr "{ph0}Главная{ph1} страница / {ph2}Витрины{ph3} / TH04"
#: website/public/showcase/th04/index.html:184
msgctxt "page:showcase/th04/index.html"
msgid "Case study · Touhou 4: Lotus Land Story"
msgstr "Тематическое исследование · Тохоу 4: История земли лотосов"
#. {ph0}: <br />
#: website/public/showcase/th04/index.html:185
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Reconstructing TH04's{ph0}bullet patterns."
msgstr "Реконструкции TH04 с{ph0}узоры пули."
#: website/public/showcase/th04/index.html:186
msgctxt "page:showcase/th04/index.html"
msgid ""
"A ring of bullets starts with a short angle calculation. Use REA to inspect "
"the original DOS function, then follow its instructions into readable C++."
msgstr ""
"Набор маркеров начинается с вычисления короткого угла. Используйте REA для "
"проверки исходной функции DOS, затем следуйте ее инструкциям на "
"удобочитаемом C++."
#: website/public/showcase/th04/index.html:191
msgctxt "page:showcase/th04/index.html"
msgid "PC-98 · 16-bit DOS · C++ and assembly"
msgstr "PC-98 · 16-разрядная версия DOS · C++ и сборка"
#: website/public/showcase/th04/index.html:192
msgctxt "page:showcase/th04/index.html"
msgid "View the TH04 reconstruction"
msgstr "Посмотреть реконструкцию TH04"
#: website/public/showcase/th04/index.html:198
msgctxt "page:showcase/th04/index.html"
msgid "From original instructions to checked source"
msgstr "От оригинальных инструкций к проверенному источнику"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:200
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Original game{ph1}{ph2}MAIN.EXE{ph3}{ph4}The PC-98 executable and "
"its bullet-angle helper.{ph5}"
msgstr ""
"{ph0}01 · Основная часть оригинальной игры{ph1}{ph2}.ЗАПУСТИТЕ "
"исполняемый{ph3}{ph4} файл PC-98 и его вспомогательный инструмент bullet-"
"angle.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:207
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Inspect with REA{ph1}{ph2}Instructions + "
"references{ph3}{ph4}Verify the loaded DOS code and read the angle "
"calculation from the executable.{ph5}"
msgstr ""
"{ph0}02 · Проверьте с помощью{ph1}{ph2} инструкций REA + ссылок{ph3}{ph4}, "
"проверьте загруженный код DOS и прочитайте расчет угла из исполняемого "
"файла.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:215
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Read the C++{ph1}{ph2}Space → aim → rotate{ph3}{ph4}Connect each "
"operation to the maintained reconstruction.{ph5}"
msgstr ""
"{ph0}03 · Прочитайте пробел C++{ph1}{ph2} → aim → rotate{ph3}{ph4}, чтобы "
"связать каждую операцию с сохраняемой реконструкцией.{ph5}"
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:222
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Check the source{ph1}{ph2}2,139 matching bytes{ph3}{ph4}Recorded "
"compiler checks cover the bullet-generation code that contains this "
"helper.{ph5}"
msgstr ""
"{ph0}04 · Проверьте исходные{ph1}{ph2} 2139 совпадающих байт{ph3}{ph4}, "
"записанных компилятором, проверки охватывают код генерации маркеров, "
"содержащий этот вспомогательный элемент.{ph5}"
#: website/public/showcase/th04/index.html:231
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA returns the original code and its analysis evidence. The TH04 project "
"supplies the maintained source and compiler checks."
msgstr ""
"REA возвращает исходный код и результаты его анализа. Проект TH04 "
"предоставляет поддерживаемые проверки исходного кода и компилятора."
#: website/public/showcase/th04/index.html:239
msgctxt "page:showcase/th04/index.html"
msgid "In this case study"
msgstr "В этом тематическом исследовании"
#. {ph0}: <a href="#ring">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:241
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The bullet ring{ph1}"
msgstr "{ph0}Кольцо с пулями{ph1}"
#. {ph0}: <a href="#rea">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:242
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}What REA returns{ph1}"
msgstr "{ph0}Что возвращает REA{ph1}"
#. {ph0}: <a href="#source">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:243
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Assembly to C++{ph1}"
msgstr "{ph0}Сборка на C++{ph1}"
#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:244
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Checking the source{ph1}"
msgstr "{ph0}Проверка источника{ph1}"
#. {ph0}: <a href="#project">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:245
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The full project{ph1}"
msgstr "{ph0}Полный проект{ph1}"
#: website/public/showcase/th04/index.html:250
msgctxt "page:showcase/th04/index.html"
msgid "How a ring aims at the player"
msgstr "Как кольцо нацеливается на игрока"
#: website/public/showcase/th04/index.html:251
msgctxt "page:showcase/th04/index.html"
msgid ""
"Elly's attack requests an aimed ring with an initial count of 16. One helper"
" calculates the direction of each bullet. The same ring can face a fixed "
"direction or turn toward the player."
msgstr ""
"Для атаки Элли требуется прицельное кольцо с начальным счетом 16. Один из "
"помощников рассчитывает направление полета каждой пули. Одно и то же кольцо "
"может быть направлено в фиксированном направлении или повернуто в сторону "
"игрока."
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/th04/index.html:258
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Ваш кодирующий агент"
#: website/public/showcase/th04/index.html:263
#: website/public/showcase/th04/index.html:319
#: website/public/showcase/th04/index.html:496
#: website/public/showcase/th04/index.html:530
msgctxt "page:showcase/th04/index.html"
msgid "Copy"
msgstr "Копировать"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="th04-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/th04/index.html:272
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how TH04 creates a ring of bullets and aims "
"it at the player. Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA, чтобы узнать, как TH04 создает кольцо из "
"пуль и направляет его на игрока. Объясните расчет и покажите "
"код.{ph3}{ph4}{ph5}"
#: website/public/showcase/th04/index.html:281
msgctxt "page:showcase/th04/index.html"
msgid ""
"An example prompt, with the original executable and reconstruction checkout "
"available locally."
msgstr ""
"Пример запроса с исходным исполняемым файлом и восстановлением, доступным "
"локально."
#. {ph0}: <code>0, 16, 32, …, 240</code>
#: website/public/showcase/th04/index.html:285
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 stores a full clockwise turn in 256 angle units. For 16 bullets, each "
"index adds 16 units: {ph0}. Adding the player's direction rotates those "
"positions together."
msgstr ""
"TH04 сохраняет полный оборот по часовой стрелке в 256 угловых единицах. Для "
"16 пуль каждый индекс добавляет по 16 единиц.: {ph0}. При добавлении "
"направления движения игрока эти позиции меняются местами."
#. {ph0}: <a href="../../assets/figures/th04-bullet-ring.svg" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:305
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"An illustration of the recovered angle math for count 16, player direction "
"40 and template rotation 0. {ph0}Open figure{ph1}"
msgstr ""
"Иллюстрация восстановленного математического расчета угла для счета 16, "
"направления игрока 40 и поворота шаблона 0. {ph0}Открыть рисунок{ph1}"
#: website/public/showcase/th04/index.html:313
msgctxt "page:showcase/th04/index.html"
msgid "The firing template in the recovered source"
msgstr "Шаблон запуска в восстановленном источнике"
#: website/public/showcase/th04/index.html:318
msgctxt "page:showcase/th04/index.html"
msgid "Elly's ring attack · source excerpt"
msgstr "Нападение Элли на кольцо · отрывок из источника"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/boss/elly_phase_ring16.cpp#L26"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:333
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"These lines select the pattern before difficulty and performance tuning. "
"{ph0}Read the attack's source{ph1}."
msgstr ""
"В этих строках выбирается шаблон перед настройкой сложности и "
"производительности. {ph0}Прочитайте источник атаки{ph1}."
#: website/public/showcase/th04/index.html:344
msgctxt "page:showcase/th04/index.html"
msgid "What REA returns"
msgstr "Что возвращает REA"
#. {ph0}: <code>bullet_velocity_and_angle_set()</code>
#: website/public/showcase/th04/index.html:345
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"We inspect {ph0}, the function that sets each bullet's velocity and angle. "
"REA returns its instructions, pseudocode and references. Three parts of that"
" result explain the pattern."
msgstr ""
"Мы проверяем {ph0}, которые задают скорость и угол наклона каждой пули. REA"
" возвращает свои инструкции, псевдокод и ссылки. Три части этого результата "
"объясняют закономерность."
#: website/public/showcase/th04/index.html:353
msgctxt "page:showcase/th04/index.html"
msgid "Check the DOS image before reading its code"
msgstr "Проверьте образ DOS, прежде чем читать его код"
#: website/public/showcase/th04/index.html:374
msgctxt "page:showcase/th04/index.html"
msgid ""
"The check ties the loaded code and relocation records to the supplied "
"executable. The path above is shortened for display."
msgstr ""
"Проверка привязывает загруженный код и записи о перемещении к "
"предоставленному исполняемому файлу. Путь, указанный выше, сокращен для "
"отображения."
#: website/public/showcase/th04/index.html:380
msgctxt "page:showcase/th04/index.html"
msgid "Read the ring's multiply and divide"
msgstr "Прочитайте надпись на кольце \"умножай и дели\""
#. {ph0}: <code>SI</code>
#. {ph1}: <code>DS:53AF</code>
#. {ph2}: <code>bullet_template.count</code>
#: website/public/showcase/th04/index.html:398
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0} holds the bullet index. The shift multiplies it by 256, then the "
"division uses the count read from {ph1}. The maintained source names that "
"field {ph2}. The complete sequence appears below."
msgstr ""
"{ph0} записан общий индекс. При сдвиге значение умножается на 256, затем при"
" делении используется значение, считанное из {ph1}. Имена поддерживаемых "
"источников, которые указаны в поле {ph2}. Полная последовательность "
"приведена ниже."
#: website/public/showcase/th04/index.html:407
msgctxt "page:showcase/th04/index.html"
msgid "Find where the pattern turns toward the player"
msgstr "Найдите, где рисунок поворачивается в сторону игрока"
#: website/public/showcase/th04/index.html:428
msgctxt "page:showcase/th04/index.html"
msgid ""
"The instruction operands expose two coordinate differences and a direction "
"helper. Its return value is added to the relative ring angle. Source names "
"make those addresses readable; REA lets the agent check the original "
"operations behind them."
msgstr ""
"Операнды команд предоставляют две разности координат и вспомогательное "
"значение направления. Возвращаемое значение добавляется к относительному "
"кольцевому углу. Имена источников делают эти адреса удобочитаемыми; REA "
"позволяет агенту проверять исходные операции, стоящие за ними."
#: website/public/showcase/th04/index.html:439
msgctxt "page:showcase/th04/index.html"
msgid "From assembly to readable C++"
msgstr "От ассемблера к удобочитаемому C++"
#: website/public/showcase/th04/index.html:440
msgctxt "page:showcase/th04/index.html"
msgid ""
"Select a step to match the original instructions with the angle calculation."
" This summary follows the aimed-ring path; the full source also handles "
"spreads, stacks and random patterns."
msgstr ""
"Выберите шаг, который соответствует первоначальным инструкциям по расчету "
"угла. В этом обзоре приведена схема прицельного кольца; полный исходный код "
"также содержит данные о разбросах, стопках и случайных моделях."
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:451
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}01{ph1} Index"
msgstr "{ph0}Индекс 01{ph1}"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:459
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}02{ph1} Space"
msgstr "{ph0}02{ph1} Пространство"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:467
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}03{ph1} Aim"
msgstr "{ph0}03{ph1} Цель"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:475
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}04{ph1} Rotate"
msgstr "{ph0}04{ph1} Вращать"
#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:483
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}05{ph1} Store"
msgstr "{ph0}05{ph1} Магазин"
#: website/public/showcase/th04/index.html:495
msgctxt "page:showcase/th04/index.html"
msgid "REA · original 16-bit instructions"
msgstr "REA · оригинальные 16-разрядные инструкции"
#: website/public/showcase/th04/index.html:529
msgctxt "page:showcase/th04/index.html"
msgid "Readable C++ · aimed-ring summary"
msgstr "Читаемый C++ · краткое описание aimed-ring"
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SI</code>
#: website/public/showcase/th04/index.html:558
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Read the bullet index.{ph1} The stack argument is loaded into "
"{ph2}. In a 16-bullet ring, this member index runs from 0 through 15."
msgstr ""
"{ph0}01 · Считываем маркерный индекс.{ph1} Аргумент stack загружается в "
"{ph2}. В кольце из 16 маркеров этот индекс элемента находится в диапазоне от"
" 0 до 15."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SHL AX,8</code>
#. {ph3}: <code>IDIV</code>
#: website/public/showcase/th04/index.html:563
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Space the directions around a full turn.{ph1} {ph2} multiplies by "
"256. The count is zero-extended into a word, then {ph3} divides the product "
"by that count. For count 16, each index advances 16 angle units."
msgstr ""
"{ph0}02 · Расставьте направления на полный оборот.{ph1} {ph2} 8 умножается "
"на 256. Число умножается на ноль и преобразуется в слово, затем {ph3} делит "
"результат на это число. Для числа 16 каждый индекс умножается на 16 угловых "
"единиц."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AX</code>
#: website/public/showcase/th04/index.html:570
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Add the player direction.{ph1} The two subtractions form player-"
"minus-origin coordinates. The direction helper returns an angle in {ph2}; "
"adding it turns the whole ring toward the player."
msgstr ""
"{ph0}03 · Добавьте направление движения игрока.{ph1} Два вычитания образуют "
"координаты игрока минус исходная точка. Вспомогательный инструмент direction"
" возвращает угол в {ph2}; при сложении все кольцо поворачивается к игроку."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ADD AL,[0x53ad]</code>
#: website/public/showcase/th04/index.html:576
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Add the pattern's rotation.{ph1} {ph2} adds the template angle. "
"Elly's initial template sets it to zero; other patterns can use the same "
"helper with a rotation."
msgstr ""
"{ph0}04 · Добавьте поворот шаблона.{ph1} {ph2} добавляет угол наклона "
"шаблона. В исходном шаблоне Elly он равен нулю; другие шаблоны могут "
"использовать тот же вспомогательный элемент с поворотом."
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AL</code>
#: website/public/showcase/th04/index.html:582
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}05 · Keep the final angle in one byte.{ph1} The store writes {ph2} to "
"the spawn-angle field. Values wrap after 255, just as the unsigned-byte cast"
" does. The surrounding source also converts this angle and speed into "
"velocity."
msgstr ""
"{ph0}05 · Сохраняйте конечный угол в одном байте.{ph1} Хранилище записывает "
"{ph2} в поле \"Угол появления\". Значения переносятся после 255, точно так "
"же, как это происходит при преобразовании беззнаковых байт. Окружающий "
"источник также преобразует этот угол и скорость в скорость вращения."
#: website/public/showcase/th04/index.html:591
msgctxt "page:showcase/th04/index.html"
msgid ""
"The assembly selects the aimed-ring branch, aim calculation and final store."
" The C++ above is a readable summary. Compiler checks below apply to the "
"maintained source in the linked project."
msgstr ""
"В сборке выбирается ветвь aimed-ring, вычисление aim и конечное хранилище. "
"Приведенный выше текст на C++ представляет собой удобочитаемую сводку. "
"Приведенные ниже проверки компилятора применяются к поддерживаемому "
"исходному тексту в связанном проекте."
#: website/public/showcase/th04/index.html:597
msgctxt "page:showcase/th04/index.html"
msgid "Read the maintained ring and aim source"
msgstr "Ознакомьтесь с сохраняемым кольцом и прицелитесь в источник"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add_impl.hpp#L4"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L422"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/types.hpp#L6"
#. >
#. {ph5}: </a >
#: website/public/showcase/th04/index.html:626
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Ring macro{ph1} · {ph2}Aim and velocity source{ph3} · {ph4}Angle "
"representation{ph5}"
msgstr ""
"{ph0}Кольцевой макрос{ph1} · {ph2}Цель и источник скорости{ph3} · "
"{ph4}Представление угла{ph5}"
#: website/public/showcase/th04/index.html:646
msgctxt "page:showcase/th04/index.html"
msgid "Checking the maintained source"
msgstr "Проверка поддерживаемого источника"
#: website/public/showcase/th04/index.html:647
msgctxt "page:showcase/th04/index.html"
msgid ""
"The TH04 project's recorded checks compile the bullet-generation code, "
"including this helper, with its pinned Turbo C++ 4.0J toolchain."
msgstr ""
"Записанные проверки проекта TH04 позволяют скомпилировать код для генерации "
"маркеров, включая этот помощник, с помощью закрепленного набора инструментов"
" Turbo C++ 4.0J."
#: website/public/showcase/th04/index.html:654
msgctxt "page:showcase/th04/index.html"
msgid "2,139 matching bytes"
msgstr "2,139 совпадающих байта"
#: website/public/showcase/th04/index.html:655
msgctxt "page:showcase/th04/index.html"
msgid ""
"The compiled bullet-generation code matches a 2,139-byte section of the "
"original executable."
msgstr ""
"Скомпилированный код генерации маркеров соответствует 2139-байтовому разделу"
" исходного исполняемого файла."
#: website/public/showcase/th04/index.html:661
msgctxt "page:showcase/th04/index.html"
msgid "Two clean builds"
msgstr "Две чистые сборки"
#: website/public/showcase/th04/index.html:662
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two separate builds produce the same matching bytes. The recorded input "
"hashes match the maintained source shown here."
msgstr ""
"Две отдельные сборки генерируют одинаковые совпадающие байты. Записанные "
"входные хэши соответствуют показанному здесь сохраненному источнику."
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/reconstruction/product/TH04_SEMANTIC_BULLET_GENERATION_V1236.md#validation"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:668
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Recorded on 3 October 2026. {ph0}Read the compiler checks{ph1}."
msgstr ""
"Записано 3 октября 2026 года. {ph0}Ознакомьтесь с проверками "
"компилятора{ph1}."
#: website/public/showcase/th04/index.html:676
msgctxt "page:showcase/th04/index.html"
msgid "Target identity and analysis scope"
msgstr "Идентификация цели и объем анализа"
#: website/public/showcase/th04/index.html:681
msgctxt "page:showcase/th04/index.html"
msgid "Original target"
msgstr "Первоначальная цель"
#. {ph0}: <code>MAIN.EXE</code>
#: website/public/showcase/th04/index.html:682
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, 156,258 bytes, DOS MZ"
msgstr "{ph0} , 156 258 байт, DOS MZ"
#: website/public/showcase/th04/index.html:685
msgctxt "page:showcase/th04/index.html"
msgid "Helper entry"
msgstr "Вспомогательная запись"
#. {ph0}: <code>0x2cfc8</code>
#: website/public/showcase/th04/index.html:686
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0} in REA's loaded image"
msgstr "{ph0} в загруженном изображении REA"
#: website/public/showcase/th04/index.html:689
msgctxt "page:showcase/th04/index.html"
msgid "Original file offset"
msgstr "Смещение исходного файла"
#. {ph0}: <code>0x1e7c8</code>
#. {ph1}: <code>address_to_file_offset</code>
#: website/public/showcase/th04/index.html:690
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, returned by {ph1}"
msgstr "{ph0}, возвращаемый параметром {ph1}"
#: website/public/showcase/th04/index.html:696
msgctxt "page:showcase/th04/index.html"
msgid "Recorded code inspection"
msgstr "Проверка записанного кода"
#: website/public/showcase/th04/index.html:697
msgctxt "page:showcase/th04/index.html"
msgid "REA 4.1.0 · 7 October 2026"
msgstr "REA 4.1.0 · 7 октября 2026"
#: website/public/showcase/th04/index.html:702
msgctxt "page:showcase/th04/index.html"
msgid ""
"Compiler checks cover the complete bullet-add code section, including this "
"helper. They also compare its MAP contribution and overlapping relocation."
msgstr ""
"Проверки компилятора охватывают весь раздел кода для добавления маркеров, "
"включая этот вспомогательный инструмент. Они также сравнивают его вклад в "
"отображение и перекрывающееся перемещение."
#. {ph0}: <code>0x1000</code>
#: website/public/showcase/th04/index.html:707
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA verified the static DOS load image at load segment {ph0}. Its addresses "
"describe that analysis image. The function result reports 503 body bytes in "
"two ranges across a 517-byte span; the selected instructions above lie in "
"those reported ranges."
msgstr ""
"REA проверил статический загрузочный образ DOS в сегменте загрузки {ph0}. "
"Его адреса описывают этот аналитический образ. Результат функции сообщает о "
"503 байтах тела в двух диапазонах по 517 байт; выбранные инструкции, "
"приведенные выше, находятся в этих сообщенных диапазонах."
#. {ph0}: <code>0d72e980</code>
#: website/public/showcase/th04/index.html:714
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"The source names and compiler checks come from TH04 checkpoint {ph0}. "
"Earlier reconstruction observations used the project's own analysis scripts;"
" this page adds a fresh REA inspection of the same original target. The "
"supplied game's identity is pinned by its repository manifest, with "
"independent pristine-dump provenance still open."
msgstr ""
"Имена исходных текстов и проверки компилятором исходят из контрольной точки "
"TH04 {ph0}. В предыдущих наблюдениях за реконструкцией использовались "
"собственные аналитические скрипты проекта; на этой странице добавлена новая "
"проверка REA для той же исходной цели. Предоставленная игра идентифицируется"
" в манифесте репозитория, при этом независимое происхождение нетронутого "
"дампа все еще открыто."
#: website/public/showcase/th04/index.html:722
msgctxt "page:showcase/th04/index.html"
msgid ""
"The figure illustrates the angle calculation. Full-game controls, timing and"
" PC-98 hardware behavior have separate runtime checks in the reconstruction "
"project."
msgstr ""
"На рисунке показан расчет угла. Элементы управления в полной версии игры, "
"хронометраж и поведение аппаратного обеспечения PC-98 проверяются во время "
"выполнения в проекте реконструкции отдельно."
#: website/public/showcase/th04/index.html:731
msgctxt "page:showcase/th04/index.html"
msgid "The full TH04 reconstruction"
msgstr "Полная реконструкция TH04"
#: website/public/showcase/th04/index.html:732
msgctxt "page:showcase/th04/index.html"
msgid ""
"The project builds the game's four DOS products from maintained C++ and "
"assembly. Beyond bullet generation, the source covers stages, bosses, "
"rendering, input, menus, endings and score handling."
msgstr ""
"Проект создает четыре DOS-продукта для игры на поддерживаемом C++ и "
"ассемблере. Помимо генерации маркеров, в исходном коде описаны этапы, боссы,"
" рендеринг, ввод, меню, концовки и обработка результатов."
#. {ph0}: <a class="text-link" href="https://github.com/N0zoM1z0/th04" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:738
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Explore the TH04 repository{ph1}"
msgstr "{ph0}Изучите репозиторий TH04{ph1}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L292"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:744
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Bullet-generation source{ph1}{ph2}The complete helper, other pattern "
"types and template tuning.{ph3}"
msgstr ""
"{ph0}Источник для генерации маркеров -{ph1}{ph2} это полный вспомогательный "
"инструмент, другие типы шаблонов и настройка шаблона.{ph3}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/DOS_BUILD.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:753
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}DOS build and run guide{ph1}{ph2}Build the source and test it in the "
"project's PC-98 emulator workflow.{ph3}"
msgstr ""
"{ph0}Руководство по сборке и запуску DOS{ph1}{ph2} Создайте исходный код и "
"протестируйте его в рабочем процессе эмулятора PC-98 проекта.{ph3}"
#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/RE_HANDOFF.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/th04/index.html:762
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Current project state{ph1}{ph2}DOS verification and the separate native"
" x64 port.{ph3}"
msgstr ""
"{ph0}Текущая проверка состояния проекта{ph1}{ph2} DOS и отдельный "
"собственный порт x64.{ph3}"
#: website/public/showcase/th04/index.html:6
msgctxt "page:showcase/th04/index.html"
msgid "TH04 Reverse Engineering: DOS Bullet Patterns — REA"
msgstr "TH04 Обратный инжиниринг: шаблоны маркеров 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 ""
"Проверьте оригинальный 16-разрядный DOS-код TH04 с помощью REA . Проследите "
"за сборкой и восстановленным C++, чтобы увидеть, как расставлено кольцо пуль"
" и как они нацелены на игрока."
#: website/public/showcase/th04/index.html:238
msgctxt "page:showcase/th04/index.html"
msgid "On this page"
msgstr "На этой странице"
#: website/public/showcase/th04/index.html:248
msgctxt "page:showcase/th04/index.html"
msgid "TH04 bullet-pattern case study"
msgstr "Тематическое исследование по маркировке TH04"
#: website/public/showcase/th04/index.html:263
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 example prompt"
msgstr "Скопировать запрос в качестве примера TH04"
#: website/public/showcase/th04/index.html:291
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 fixed and aimed bullet rings; scroll horizontally on smaller screens"
msgstr ""
"TH04 фиксированные и нацеленные пулевые кольца; прокрутка по горизонтали на "
"экранах меньшего размера"
#: website/public/showcase/th04/index.html:297
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two diagrams of a 16-bullet ring. The fixed ring starts at angle zero. "
"Adding a player direction of 40 rotates every direction by the same amount; "
"the highlighted first bullet points toward the player. Both keep a spacing "
"of 16 angle units, or 22.5 degrees."
msgstr ""
"Две диаграммы кольца из 16 точек. Неподвижное кольцо начинается с нулевого "
"угла. При добавлении направления движения игрока, равного 40, все стороны "
"поворачиваются на одинаковую величину; выделенная первая точка указывает на "
"игрока. В обоих случаях расстояние между точками составляет 16 угловых "
"единиц, или 22,5 градуса."
#: website/public/showcase/th04/index.html:319
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 firing template"
msgstr "Скопировать шаблон запуска TH04"
#: website/public/showcase/th04/index.html:446
msgctxt "page:showcase/th04/index.html"
msgid "Follow the TH04 aimed-ring calculation"
msgstr "Следуйте расчету прицельного кольца TH04"
#: website/public/showcase/th04/index.html:496
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 assembly excerpt"
msgstr "Скопируйте фрагмент сборки TH04"
#: website/public/showcase/th04/index.html:530
msgctxt "page:showcase/th04/index.html"
msgid "Copy readable aimed-ring calculation"
msgstr "Копировально-читаемый расчет прицельного кольца"
#: website/public/showcase/th04/index.html:787
msgctxt "page:showcase/th04/index.html"
msgid "Back to top"
msgstr "Наверх"
#: website/public/assets/main.js:39
msgctxt "runtime"
msgid "Copy"
msgstr "Копировать"
#: website/public/assets/main.js:20
msgctxt "runtime"
msgid "Copied"
msgstr "Скопированный"
#: website/public/assets/main.js:31
msgctxt "runtime"
msgid "Selected"
msgstr "Выбранный"
#: website/public/assets/main.js:22
msgctxt "runtime"
msgid "Code copied to clipboard."
msgstr "Код копируется в буфер обмена."
#: website/public/assets/main.js:33
msgctxt "runtime"
msgid "Code selected. Use your keyboard to copy it."
msgstr "Выбранный код. Скопируйте его с клавиатуры."
#: website/public/assets/main.js:147
#, python-brace-format
msgctxt "runtime"
msgid "REA on GitHub ({count})"
msgstr "REA на GitHub ({count})"
#: website/public/assets/dino-demo.js:71
#, python-brace-format
msgctxt "runtime"
msgid "Distance {distance}"
msgstr "Расстояние {distance}"
#: website/public/assets/dino-demo.js:81
msgctxt "runtime"
msgid "Hit a cactus. Try another speed."
msgstr "Врезался в кактус. Переключи скорость."
#: website/public/assets/dino-demo.js:81
msgctxt "runtime"
msgid "Space or Jump ↑"
msgstr "Пробел или прыжок ↑"
#: website/public/assets/dino-demo.js:91
msgctxt "runtime"
msgid "Play again"
msgstr "Сыграй еще раз"
#: website/public/assets/dino-demo.js:91
#: website/public/assets/dino-demo.js:105
msgctxt "runtime"
msgid "Play"
msgstr "Играть"
#: website/public/assets/dino-demo.js:165
msgctxt "runtime"
msgid "Pause"
msgstr "Пауза"
#: website/public/assets/dino-demo.js:106
msgctxt "runtime"
msgid "Press Play, then jump over the cactus."
msgstr "Нажмите Play, затем перепрыгните через кактус."
#: website/public/assets/dino-demo.js:141
msgctxt "runtime"
msgid "Hit a cactus. Press Play again, or change the speed and restart."
msgstr ""
"Попадите по кактусу. Нажмите воспроизведение еще раз или измените скорость и"
" перезапустите игру."
#: website/public/assets/dino-demo.js:166
msgctxt "runtime"
msgid "Running. Space or Jump clears a cactus."
msgstr "Бегущий. Пробел или прыжок уничтожают кактус."
#: website/public/assets/dino-demo.js:177
#: website/public/assets/dino-demo.js:213
#: website/public/assets/dino-demo.js:218
msgctxt "runtime"
msgid "Paused. Press Play to continue."
msgstr "Приостановлено. Нажмите Воспроизведение, чтобы продолжить."
#: website/public/assets/dino-demo.js:197
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Space or Jump clears a cactus."
msgstr "Фиксированная скорость: {speed}. Пробел или прыжок убирают кактус."
#: website/public/assets/dino-demo.js:200
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Press Play to try it."
msgstr ""
"Фиксированная скорость: увеличить {speed}. Нажмите Play, чтобы попробовать."
#: website/public/assets/dino-demo.js:209
msgctxt "runtime"
msgid "Recovered rule: start at 6, then increase toward 13."
msgstr "Восстановленное правило: начинайте с 6, затем увеличивайте до 13."
#: website/public/assets/dino-demo.js:210
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}."
msgstr "Фиксированная скорость: {speed} вращения."
#: website/public/assets/dino-demo.js:242
msgctxt "runtime"
msgid ""
"Replayed the recovered rule. All four values match the controlled original-"
"game check when rounded to three decimals."
msgstr ""
"Воспроизвел восстановленное правило. Все четыре значения соответствуют "
"контролируемой проверке в оригинальной игре, если округлить их до трех "
"знаков после запятой."
#: website/public/assets/dino-demo.js:245
msgctxt "runtime"
msgid ""
"The replay differs from the recorded original-game values. Compare the speed"
" rule and settings above."
msgstr ""
"Воспроизведение отличается от значений, записанных в оригинальной игре. "
"Сравните приведенные выше правила скорости и настройки."
#: website/public/assets/aegis-demo.js:22
#, python-brace-format
msgctxt "runtime"
msgid "{start}–{end} seconds"
msgstr "{start} и {end}"
#: website/public/assets/aegis-demo.js:29
#, python-brace-format
msgctxt "runtime"
msgid "{seconds} seconds, time block {block}"
msgstr "{seconds} секунды, временной блок {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 ""
"Интерактивный расчет в этом браузере недоступен. В примере код отображается "
"через 59 секунд."
#: website/public/assets/aegis-demo.js:62
msgctxt "runtime"
msgid "Checking…"
msgstr "Проверка…"
#: 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} пройдено проверок (шесть контрольных случаев, "
"обозначенных шестизначными и восьмизначными цифрами)."
#: website/public/assets/aegis-demo.js:81
msgctxt "runtime"
msgid "Could not run the reference checks. Try again."
msgstr "Не удалось выполнить проверку ссылок. Пробовать снова."
#: website/public/assets/figures/analyst-thinking.svg:2
msgctxt "figure:analyst-thinking.svg"
msgid "An analyst thinking at a computer"
msgstr "Аналитик, думающий за компьютером"
#: website/public/assets/figures/ctf-mask-equation.svg:2
#: website/public/assets/figures/ctf-mask-equation.svg:7
msgctxt "figure:ctf-mask-equation.svg"
msgid "One check reveals one character"
msgstr "Одна проверка выявляет один символ"
#: 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 ""
"Седьмая маска выбирает только позицию 21 во входной сетке шесть на шесть. Ее"
" символьный код должен быть равен 55, таким образом, символ равен 7. Другие "
"маски выбирают другие позиции и дают дополнительные уравнения."
#: website/public/assets/figures/ctf-mask-equation.svg:8
msgctxt "figure:ctf-mask-equation.svg"
msgid "The seventh check. Cell labels are input positions, starting at 0."
msgstr "Седьмая проверка. Метки ячеек - это позиции ввода, начинающиеся с 0."
#: website/public/assets/figures/ctf-mask-equation.svg:10
msgctxt "figure:ctf-mask-equation.svg"
msgid "Encoded mask: −21, +1, −14, 0"
msgstr "Кодированная маска: -21, +1, -14, 0"
#: website/public/assets/figures/ctf-mask-equation.svg:11
msgctxt "figure:ctf-mask-equation.svg"
msgid "Skip 21 cells. Select 1. Skip 14. Stop at 0."
msgstr "Пропустите 21 ячейку. Выберите 1. Пропустите 14. Остановитесь на 0."
#: website/public/assets/figures/ctf-mask-equation.svg:15
msgctxt "figure:ctf-mask-equation.svg"
msgid "Only one cell contributes to this sum"
msgstr "Сумма берёт одну ячейку"
#: website/public/assets/figures/ctf-mask-equation.svg:18
msgctxt "figure:ctf-mask-equation.svg"
msgid "Position 21 in the flag must contain 7."
msgstr "Позиция 21 во флаге должна содержать 7."
#: website/public/assets/figures/ctf-mask-equation.svg:20
msgctxt "figure:ctf-mask-equation.svg"
msgid "Selected: one cell"
msgstr "Выделено: одна ячейка"
#: website/public/assets/figures/ctf-mask-equation.svg:21
msgctxt "figure:ctf-mask-equation.svg"
msgid "26 masks give 26 equations."
msgstr "26 масок дают 26 уравнений."
#: website/public/assets/figures/ctf-mask-equation.svg:22
msgctxt "figure:ctf-mask-equation.svg"
msgid "Solve them together to find the flag."
msgstr "Решите их вместе, чтобы найти флаг."
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:2
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:9
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "DX-Ball sound-pan investigation"
msgstr "Исследование звука 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 предоставляет инструкцию, вызывающий элемент и данные для считывания "
"байтов для одной функции DX-Ball. Входные данные стека умножаются на 1,5625,"
" смещаются на 500, масштабируются и преобразуются в целое число. "
"Поддерживаемый C проверяется в 3205 исходных x86 случаях и в отдельном "
"63-байтовом воспроизведении компилятором."
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:28
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Stack"
msgstr "Стек"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:29
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "input x"
msgstr "вход x"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:33
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Integer"
msgstr "Целое"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:34
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "return"
msgstr "возврат"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:35
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Reconstructed function"
msgstr "Восстановленный код"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:36
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Maintained C"
msgstr "Код на C"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:37
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Brick-hit caller"
msgstr "Вызов при ударе"
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:38
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "20 + 30 × tile_x"
msgstr "20 + 30 × tile_x"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:39
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Original code"
msgstr "Исходный код"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:40
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:43
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "comparison"
msgstr "сравнение"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:41
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "3,205 cases"
msgstr "3 205 тестов"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:42
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "VC4.0 build"
msgstr "Сборка VC4.0"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:44
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "63 matching bytes"
msgstr "63 байта совпали"
#: website/public/assets/figures/rea-investigation-flow.svg:2
#: website/public/assets/figures/rea-investigation-flow.svg:10
msgctxt "figure:rea-investigation-flow.svg"
msgid "REA investigation flow"
msgstr "Ход расследования 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 ""
"Задайте вопрос о локальном объекте. REA проверяет и отслеживает данные с "
"помощью адаптеров локального анализа, возвращает доказательства и "
"поддерживает последующие вопросы по мере того, как ваш агент объясняет, "
"внедряет и тестирует."
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:19
msgctxt "figure:rea-investigation-flow.svg"
msgid "1. Ask"
msgstr "1. Вопрос"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:20
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent + local target"
msgstr "Агент + локальный файл"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:21
msgctxt "figure:rea-investigation-flow.svg"
msgid "App / binary / browser"
msgstr "Программа / файл / Web"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:22
msgctxt "figure:rea-investigation-flow.svg"
msgid "2. Inspect & trace"
msgstr "2. Анализ и поиск"
#: website/public/assets/figures/rea-investigation-flow.svg:24
msgctxt "figure:rea-investigation-flow.svg"
msgid "CLI / MCP"
msgstr "CLI / MCP"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:25
msgctxt "figure:rea-investigation-flow.svg"
msgid "3. Read the evidence"
msgstr "3. Читать факты"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:26
msgctxt "figure:rea-investigation-flow.svg"
msgid "Code / references /"
msgstr "Код / ссылки /"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:27
msgctxt "figure:rea-investigation-flow.svg"
msgid "unknowns"
msgstr "неизвестное"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:28
msgctxt "figure:rea-investigation-flow.svg"
msgid "4. Use what you learn"
msgstr "4. Применить"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:29
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent"
msgstr "Ваш агент"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:30
msgctxt "figure:rea-investigation-flow.svg"
msgid "Explain / implement / test"
msgstr "Объяснить / создать / тест"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:31
msgctxt "figure:rea-investigation-flow.svg"
msgid "Analysis tools"
msgstr "Средства анализа"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:32
msgctxt "figure:rea-investigation-flow.svg"
msgid "Local analysis adapters"
msgstr "Локальные адаптеры"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:33
msgctxt "figure:rea-investigation-flow.svg"
msgid "Follow-up question"
msgstr "Следующий вопрос"
#: 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 : расстояние между пулями и наведение их на цель кольцом"
#: 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 ""
"Полный поворот по часовой стрелке имеет 256 угловых единиц. Шестнадцать "
"точек отсчета начинаются с углов от нуля, шестнадцати, тридцати двух до 240."
" Если добавить примерное направление игрока, состоящее из сорока точек, то "
"получится, что все шестнадцать точек отсчета совпадают; первая точка отсчета"
" указывает на игрока. Вращение шаблона равно нулю."
#: website/public/assets/figures/th04-bullet-ring.svg:8
msgctxt "figure:th04-bullet-ring.svg"
msgid "Fixed ring"
msgstr "Неподвижное кольцо"
#: website/public/assets/figures/th04-bullet-ring.svg:9
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: angle 0"
msgstr "Первый маркер: угол 0"
#: website/public/assets/figures/th04-bullet-ring.svg:10
msgctxt "figure:th04-bullet-ring.svg"
msgid "Aimed ring"
msgstr "Нацеленное кольцо"
#: website/public/assets/figures/th04-bullet-ring.svg:11
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: player direction"
msgstr "Первый пункт: направление движения игрока"
# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/th04-bullet-ring.svg:48
#: website/public/assets/figures/th04-bullet-ring.svg:86
msgctxt "figure:th04-bullet-ring.svg"
msgid "Origin"
msgstr "Центр"
#: website/public/assets/figures/th04-bullet-ring.svg:89
msgctxt "figure:th04-bullet-ring.svg"
msgid "Player"
msgstr "Игрок"
#: website/public/assets/figures/th04-bullet-ring.svg:94
msgctxt "figure:th04-bullet-ring.svg"
msgid "Same spacing: 256 ÷ 16 = 16 angle units = 22.5°"
msgstr "Одинаковое расстояние: 256 ÷ 16 = 16 угловых единиц = 22,5°"
#: website/public/blog/index.html:109
#: website/public/blog/touhou-reconstruction/index.html:109
#: website/public/examples/dino-lab/index.html:110
#: website/public/faq/index.html:109
#: website/public/first-investigation/index.html:109
#: website/public/get-started/index.html:109
#: website/public/guides/browser/index.html:109
#: website/public/guides/index.html:109
#: website/public/guides/javascript/index.html:109
#: website/public/guides/native/index.html:109 website/public/index.html:111
#: website/public/showcase/aegis/index.html:110
#: website/public/showcase/ctf/index.html:109
#: website/public/showcase/dx-ball/index.html:109
#: website/public/showcase/index.html:109
#: website/public/showcase/notion/index.html:109
#: website/public/showcase/th04/index.html:109
msgctxt "shared"
msgid "Showcases"
msgstr "Примеры"
#: website/public/blog/index.html:110
#: website/public/blog/touhou-reconstruction/index.html:110
#: website/public/examples/dino-lab/index.html:111
#: website/public/faq/index.html:110
#: website/public/first-investigation/index.html:110
#: website/public/get-started/index.html:110
#: website/public/guides/browser/index.html:110
#: website/public/guides/index.html:110
#: website/public/guides/javascript/index.html:110
#: website/public/guides/native/index.html:110 website/public/index.html:112
#: website/public/showcase/aegis/index.html:111
#: website/public/showcase/ctf/index.html:110
#: website/public/showcase/dx-ball/index.html:110
#: website/public/showcase/index.html:110
#: website/public/showcase/notion/index.html:110
#: website/public/showcase/th04/index.html:110
msgctxt "shared"
msgid "Blog"
msgstr "Блог"
#: website/public/blog/index.html:111
#: website/public/blog/touhou-reconstruction/index.html:111
#: website/public/examples/dino-lab/index.html:112
#: website/public/faq/index.html:111
#: website/public/first-investigation/index.html:111
#: website/public/get-started/index.html:111
#: website/public/guides/browser/index.html:111
#: website/public/guides/index.html:111
#: website/public/guides/javascript/index.html:111
#: website/public/guides/native/index.html:111 website/public/index.html:113
#: website/public/showcase/aegis/index.html:112
#: website/public/showcase/ctf/index.html:111
#: website/public/showcase/dx-ball/index.html:111
#: website/public/showcase/index.html:111
#: website/public/showcase/notion/index.html:111
#: website/public/showcase/th04/index.html:111
msgctxt "shared"
msgid "Get started"
msgstr "Начать"
#: website/public/blog/index.html:112
#: website/public/blog/touhou-reconstruction/index.html:112
#: website/public/examples/dino-lab/index.html:113
#: website/public/faq/index.html:112
#: website/public/first-investigation/index.html:112
#: website/public/get-started/index.html:112
#: website/public/guides/browser/index.html:112
#: website/public/guides/index.html:112
#: website/public/guides/javascript/index.html:112
#: website/public/guides/native/index.html:112 website/public/index.html:114
#: website/public/showcase/aegis/index.html:113
#: website/public/showcase/ctf/index.html:112
#: website/public/showcase/dx-ball/index.html:112
#: website/public/showcase/index.html:112
#: website/public/showcase/notion/index.html:112
#: website/public/showcase/th04/index.html:112
msgctxt "shared"
msgid "Guides"
msgstr "Руководства"
#: website/public/blog/index.html:209
#: website/public/blog/touhou-reconstruction/index.html:1059
#: website/public/examples/dino-lab/index.html:454
#: website/public/faq/index.html:552
#: website/public/first-investigation/index.html:502
#: website/public/get-started/index.html:861
#: website/public/guides/browser/index.html:477
#: website/public/guides/index.html:261
#: website/public/guides/javascript/index.html:482
#: website/public/guides/native/index.html:488 website/public/index.html:1165
#: website/public/showcase/aegis/index.html:787
#: website/public/showcase/ctf/index.html:756
#: website/public/showcase/dx-ball/index.html:764
#: website/public/showcase/index.html:296
#: website/public/showcase/notion/index.html:610
#: website/public/showcase/th04/index.html:779
msgctxt "shared"
msgid "Source"
msgstr "Исходный код"
#: website/public/blog/index.html:210
#: website/public/blog/touhou-reconstruction/index.html:1060
#: website/public/examples/dino-lab/index.html:455
#: website/public/faq/index.html:553
#: website/public/first-investigation/index.html:503
#: website/public/get-started/index.html:862
#: website/public/guides/browser/index.html:478
#: website/public/guides/index.html:262
#: website/public/guides/javascript/index.html:483
#: website/public/guides/native/index.html:489 website/public/index.html:1166
#: website/public/showcase/aegis/index.html:788
#: website/public/showcase/ctf/index.html:757
#: website/public/showcase/dx-ball/index.html:765
#: website/public/showcase/index.html:297
#: website/public/showcase/notion/index.html:611
#: website/public/showcase/th04/index.html:780
msgctxt "shared"
msgid "MIT license"
msgstr "Лицензия MIT"
#: website/public/blog/index.html:211
#: website/public/blog/touhou-reconstruction/index.html:1061
#: website/public/examples/dino-lab/index.html:456
#: website/public/faq/index.html:554
#: website/public/first-investigation/index.html:504
#: website/public/get-started/index.html:863
#: website/public/guides/browser/index.html:479
#: website/public/guides/index.html:263
#: website/public/guides/javascript/index.html:484
#: website/public/guides/native/index.html:490 website/public/index.html:1167
#: website/public/showcase/aegis/index.html:789
#: website/public/showcase/ctf/index.html:758
#: website/public/showcase/dx-ball/index.html:766
#: website/public/showcase/index.html:298
#: website/public/showcase/notion/index.html:612
#: website/public/showcase/th04/index.html:781
msgctxt "shared"
msgid "Join the community"
msgstr "Вступить в сообщество"
#: website/public/blog/index.html:212
#: website/public/blog/touhou-reconstruction/index.html:1062
#: website/public/examples/dino-lab/index.html:457
#: website/public/faq/index.html:555
#: website/public/first-investigation/index.html:505
#: website/public/get-started/index.html:864
#: website/public/guides/browser/index.html:480
#: website/public/guides/index.html:264
#: website/public/guides/javascript/index.html:485
#: website/public/guides/native/index.html:491 website/public/index.html:1168
#: website/public/showcase/aegis/index.html:790
#: website/public/showcase/ctf/index.html:759
#: website/public/showcase/dx-ball/index.html:767
#: website/public/showcase/index.html:299
#: website/public/showcase/notion/index.html:613
#: website/public/showcase/th04/index.html:782
msgctxt "shared"
msgid "Follow us on X"
msgstr "Подписаться в X"
#: website/public/examples/dino-lab/index.html:293
msgctxt "page:examples/dino-lab/index.html"
msgid "REA · selected script source"
msgstr "REA · выбранный источник скрипта"
#: website/public/first-investigation/index.html:361
msgctxt "page:first-investigation/index.html"
msgid "Source"
msgstr "Исходный код"
#: website/public/first-investigation/index.html:415
msgctxt "page:first-investigation/index.html"
msgid "Expected formatter output"
msgstr "Ожидаемый результат форматирования"
#: website/public/guides/index.html:206
msgctxt "page:guides/index.html"
msgid "Instructions"
msgstr "Инструкции"
#: website/public/guides/index.html:207
msgctxt "page:guides/index.html"
msgid "Caller"
msgstr "Вызывающий абонент"
#: website/public/guides/index.html:208
msgctxt "page:guides/index.html"
msgid "Constants"
msgstr "Константы"
#: website/public/guides/index.html:209
msgctxt "page:guides/index.html"
msgid "C function"
msgstr "Функция C"
#: website/public/guides/index.html:224
msgctxt "page:guides/index.html"
msgid "Button"
msgstr "Кнопка"
#: website/public/guides/index.html:225
msgctxt "page:guides/index.html"
msgid "Preload API"
msgstr "API предварительной загрузки"
#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "IPC"
msgstr "МПК"
#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "CSV file"
msgstr "Файл CSV"
#: website/public/guides/index.html:246
msgctxt "page:guides/index.html"
msgid "Your click"
msgstr "Ваш щелчок"
#: website/public/guides/index.html:247
msgctxt "page:guides/index.html"
msgid "Captured request"
msgstr "Захваченный запрос"
#: website/public/guides/index.html:248
msgctxt "page:guides/index.html"
msgid "Export script"
msgstr "Экспорт скрипта"
#: website/public/guides/javascript/index.html:344
msgctxt "page:guides/javascript/index.html"
msgid "REA result · summary.ipc excerpt"
msgstr "REA результат · сводка.выдержка из ipc"
#: website/public/guides/native/index.html:371
msgctxt "page:guides/native/index.html"
msgid "REA instruction excerpt · 0x406409"
msgstr "REA выдержка из инструкции · 0x406409"
#: website/public/guides/native/index.html:385
msgctxt "page:guides/native/index.html"
msgid "REA caller excerpt · 0x411f5b"
msgstr "REA запрос вызывающего абонента · 0x411f5b"
#: website/public/guides/native/index.html:399
msgctxt "page:guides/native/index.html"
msgid "REA byte results · interpreted as little-endian doubles"
msgstr ""
"Результаты в байтах REA · интерпретируются как удвоения в порядке убывания"
#: website/public/guides/native/index.html:416
msgctxt "page:guides/native/index.html"
msgid "Recovered C · excerpt"
msgstr "Восстановленный отрывок из C ·"
#: website/public/index.html:219
msgctxt "page:index.html"
msgid "See how REA works ↓"
msgstr "Посмотрите, как работает REA ↓"
#: website/public/index.html:220
msgctxt "page:index.html"
msgid "Setup guide"
msgstr "Руководство по установке"
#: website/public/index.html:221
msgctxt "page:index.html"
msgid "Showcases →"
msgstr "Витрины →"
#: website/public/index.html:731
msgctxt "page:index.html"
msgid "Selected settings from the inspected script"
msgstr "Выбранные настройки из проверенного скрипта"
#: website/public/index.html:903
msgctxt "page:index.html"
msgid "Readable summary of the % handler"
msgstr "Читаемая сводка об обработчике %"
#: website/public/index.html:967
msgctxt "page:index.html"
msgid "REA · selected original instructions"
msgstr "REA · выбранные оригинальные инструкции"
#: website/public/index.html:978
msgctxt "page:index.html"
msgid "Operator IDs · Microsoft’s source"
msgstr "Идентификаторы операторов · Исходный код Microsoft"
#: website/public/index.html:1152
msgctxt "page:index.html"
msgid "Follow @reatools on X"
msgstr "Подписывайтесь на @reatools на X"
#: website/public/showcase/aegis/index.html:386
#: website/public/showcase/aegis/index.html:418
msgctxt "page:showcase/aegis/index.html"
msgid "Agent → REA"
msgstr "Агент → REA"
#: website/public/showcase/aegis/index.html:396
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · selected results"
msgstr "REA → агент · выбранные результаты"
#: website/public/showcase/aegis/index.html:432
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · methods and callers"
msgstr "REA → агент · методы и вызывающие абоненты"
#: website/public/showcase/aegis/index.html:502
msgctxt "page:showcase/aegis/index.html"
msgid "REA · selected decompiled Java"
msgstr "REA · выбранный декомпилированный Java"
#: website/public/showcase/aegis/index.html:532
msgctxt "page:showcase/aegis/index.html"
msgid "Readable summary · agent's interpretation"
msgstr "Читаемое резюме · интерпретация агента"
#: website/public/showcase/aegis/index.html:587
msgctxt "page:showcase/aegis/index.html"
msgid "REA · generateOTP, complete body"
msgstr "REA · generateOTP, полный корпус"
#: website/public/showcase/aegis/index.html:705
msgctxt "page:showcase/aegis/index.html"
msgid "Download Aegis APK"
msgstr "Скачать Aegis APK"
#: website/public/showcase/aegis/index.html:709
msgctxt "page:showcase/aegis/index.html"
msgid "Download Android analysis provider"
msgstr "Скачать Android analysis provider"
#: website/public/showcase/ctf/index.html:289
#: website/public/showcase/ctf/index.html:325
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA"
msgstr "Агент → REA"
#: website/public/showcase/ctf/index.html:305
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected results"
msgstr "REA → агент · выбранные результаты"
#: website/public/showcase/ctf/index.html:337
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected instructions"
msgstr "REA → агент · выбранные инструкции"
#: website/public/showcase/ctf/index.html:400
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA · read_bytes"
msgstr "Агент → REA · прочитано_байт"
#: website/public/showcase/ctf/index.html:407
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · seventh entries"
msgstr "REA → агент · седьмые записи"
#: website/public/showcase/ctf/index.html:675
msgctxt "page:showcase/ctf/index.html"
msgid "Original executable · SHA-256"
msgstr "Оригинальный исполняемый файл · SHA-256"
#: website/public/showcase/ctf/index.html:711
msgctxt "page:showcase/ctf/index.html"
msgid "Download the original challenge"
msgstr "Скачайте оригинальную игру challenge"
#: website/public/showcase/ctf/index.html:715
msgctxt "page:showcase/ctf/index.html"
msgid "Download solver"
msgstr "Скачать решатель"
#: website/public/showcase/dx-ball/index.html:316
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · pseudocode excerpt"
msgstr "Результат REA · фрагмент псевдокода"
#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/dx-ball/index.html:339
#: website/public/showcase/dx-ball/index.html:363
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · {ph0}"
msgstr "Агент → REA · функция {ph0}"
#: website/public/showcase/dx-ball/index.html:345
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → агент · отрывок из инструкции"
#: website/public/showcase/dx-ball/index.html:369
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · caller excerpt"
msgstr "REA → агент · отрывок из сообщения о звонящем"
#. {ph0}: <code>read_bytes</code>
#: website/public/showcase/dx-ball/index.html:387
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · two {ph0} requests"
msgstr "Агент → REA · два {ph0}запроса на чтение в байтах"
#: website/public/showcase/dx-ball/index.html:397
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte results · decoded as doubles"
msgstr "Результаты в байтах REA · декодируются как двойные"
#: website/public/showcase/dx-ball/index.html:750
msgctxt "page:showcase/dx-ball/index.html"
msgid "Start with your own target"
msgstr "Начните со своей собственной цели"
#: website/public/showcase/index.html:199
msgctxt "page:showcase/index.html"
msgid "APK"
msgstr "APK"
#: website/public/showcase/index.html:200
msgctxt "page:showcase/index.html"
msgid "Generating code"
msgstr "Генерация кода"
#: website/public/showcase/index.html:201
msgctxt "page:showcase/index.html"
msgid "Recovered rule"
msgstr "Восстановленное правило"
#: website/public/showcase/index.html:202
msgctxt "page:showcase/index.html"
msgid "Adjustable clock"
msgstr "Регулируемые часы"
#: website/public/showcase/index.html:217
msgctxt "page:showcase/index.html"
msgid "Binary"
msgstr "Двоичный"
#: website/public/showcase/index.html:218
msgctxt "page:showcase/index.html"
msgid "Checking code"
msgstr "Проверяющий код"
#: website/public/showcase/index.html:219
msgctxt "page:showcase/index.html"
msgid "Equations"
msgstr "Уравнения"
#: website/public/showcase/index.html:220
msgctxt "page:showcase/index.html"
msgid "Correct!"
msgstr "Правильно!"
#: website/public/showcase/index.html:236
msgctxt "page:showcase/index.html"
msgid "Executable"
msgstr "Выполнимый"
#: website/public/showcase/index.html:237
msgctxt "page:showcase/index.html"
msgid "REA findings"
msgstr "Выводы REA"
#: website/public/showcase/index.html:238
msgctxt "page:showcase/index.html"
msgid "Recovered C"
msgstr "Восстановленный C"
#: website/public/showcase/index.html:239
msgctxt "page:showcase/index.html"
msgid "Validation"
msgstr "Утверждение"
#: website/public/showcase/index.html:254
msgctxt "page:showcase/index.html"
msgid "Packaged app"
msgstr "Упакованное приложение"
#: website/public/showcase/index.html:255
msgctxt "page:showcase/index.html"
msgid "Exposed API"
msgstr "Открытый API"
#: website/public/showcase/index.html:256
msgctxt "page:showcase/index.html"
msgid "IPC wrappers"
msgstr "Оболочки IPC"
#: website/public/showcase/index.html:257
msgctxt "page:showcase/index.html"
msgid "Clipboard"
msgstr "Буфер обмена"
#: website/public/showcase/index.html:272
msgctxt "page:showcase/index.html"
msgid "Original DOS code"
msgstr "Исходный код DOS"
#: website/public/showcase/index.html:273
msgctxt "page:showcase/index.html"
msgid "REA instructions"
msgstr "Инструкции по REA"
#: website/public/showcase/index.html:274
msgctxt "page:showcase/index.html"
msgid "Angle calculation"
msgstr "Расчет угла наклона"
#: website/public/showcase/index.html:275
msgctxt "page:showcase/index.html"
msgid "Bullet ring"
msgstr "Пулевое кольцо"
#: website/public/showcase/notion/index.html:291
msgctxt "page:showcase/notion/index.html"
msgid "Exposed page API"
msgstr "Открытый API страницы"
#: website/public/showcase/notion/index.html:297
msgctxt "page:showcase/notion/index.html"
msgid "Renderer IPC call"
msgstr "Вызов IPC средства визуализации"
#: website/public/showcase/notion/index.html:459
msgctxt "page:showcase/notion/index.html"
msgid "Sent to the system clipboard"
msgstr "Отправлено в системный буфер обмена"
#: website/public/showcase/notion/index.html:467
msgctxt "page:showcase/notion/index.html"
msgid "Saved locally by Notion"
msgstr "Сохранено локально с помощью Notion"
#: website/public/showcase/notion/index.html:512
msgctxt "page:showcase/notion/index.html"
msgid "Markdown input"
msgstr "Ввод данных для уценки"
#: website/public/showcase/notion/index.html:519
msgctxt "page:showcase/notion/index.html"
msgid "Structured parser output · excerpt"
msgstr "Вывод структурированного синтаксического анализатора · выдержка"
#: website/public/showcase/notion/index.html:596
msgctxt "page:showcase/notion/index.html"
msgid "Analyze your own app"
msgstr "Проанализируйте свое собственное приложение"
#: website/public/showcase/th04/index.html:356
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA"
msgstr "Агент → REA"
#: website/public/showcase/th04/index.html:365
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · selected fields"
msgstr "REA → агент · выбранные поля"
#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/th04/index.html:384
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA · {ph0}"
msgstr "Агент → REA · функция {ph0}"
#: website/public/showcase/th04/index.html:390
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA → агент · отрывок из инструкции"
#: website/public/showcase/th04/index.html:411
msgctxt "page:showcase/th04/index.html"
msgid "Same function result · aim excerpt"
msgstr "Результат той же функции · выдержка из aim"
#: website/public/showcase/th04/index.html:420
msgctxt "page:showcase/th04/index.html"
msgid "Corresponding maintained C++"
msgstr "Соответствующий поддерживаемый C++"
#: website/public/showcase/th04/index.html:600
msgctxt "page:showcase/th04/index.html"
msgid "Ring macro · TH04 branch, excerpt"
msgstr "Кольцевой макрос · Ветвь TH04, фрагмент"
#: website/public/showcase/th04/index.html:610
msgctxt "page:showcase/th04/index.html"
msgid "Angle and velocity · source excerpt"
msgstr "Угол и скорость · выдержка из источника"
#: website/public/assets/home.js:29
msgctxt "runtime"
msgid "Press % to see what happens to 10."
msgstr "Нажмите %, чтобы посмотреть, что произойдет с 10."
#: website/public/assets/home.js:32
msgctxt "runtime"
msgid "10% of 200 is 20. Press = to add it."
msgstr "10% от 200 равно 20. Нажмите =, чтобы добавить это значение."
#: website/public/assets/home.js:33
msgctxt "runtime"
msgid "For multiplication, 10 becomes 0.1. Press = to multiply."
msgstr "При умножении 10 становится равным 0,1. Нажмите = для умножения."
#: scripts/website_i18n.py
msgctxt "runtime"
msgid "Translation is being updated. Read this page in English for now."
msgstr "Перевод обновляется. Пока прочтите эту страницу на английском языке."
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="faq-analysis-prompt" >
#. {ph3}: <span translate="no">/absolute/path/to/app</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/faq/index.html:412
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze {ph3} and explain how it exports data. "
"Show the relevant code and source locations.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA для анализа {ph3}и объяснения того, как он "
"экспортирует данные. Покажите соответствующий код и расположение "
"источников.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/first-investigation/index.html:230
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Установи REA и подключи его к этому ИИ-помощнику с помощью "
"{ph3}. Сначала покажи план изменений и дождись моего одобрения. Затем "
"проверь установку.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-analysis-prompt" >
#. {ph3}: <span translate="no" >https://rea.tools/examples/notes-
#. example.zip</span >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="terminal-cursor" aria-hidden="true">
#. {ph7}: </span>
#: website/public/first-investigation/index.html:280
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Download {ph3} into a new example folder and unpack it. Use "
"REA to find what happens when I click Export notes. Show where {ph4} is "
"written, which fields it contains, and the relevant files and "
"lines.{ph5}{ph6}{ph7}"
msgstr ""
"{ph0}\"{ph1}{ph2}Загрузите {ph3}в новую папку с примерами и распакуйте ее. "
"Используйте REA, чтобы узнать, что происходит, когда я нажимаю "
"\"Экспортировать заметки\". Покажите, где {ph4}что записано, какие поля оно "
"содержит, а также соответствующие файлы и строки.{ph5}{ph6}{ph7}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="agent-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/get-started/index.html:419
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Установи REA и подключи его к этому ИИ-помощнику с помощью "
"{ph3}. Сначала покажи план изменений и дождись моего одобрения. Затем "
"проверь установку.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:251
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}Установи REA и подключи его к этому ИИ-помощнику с помощью "
"{ph3}. Сначала покажи план изменений и дождись моего одобрения. Затем "
"проверь установку.{ph4}{ph5}{ph6}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="website-project-prompt" >
#. {ph3}: <span translate="no">https://rea.tools/</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:1054
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect {ph3}. Clone this website for "
"me.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA для проверки {ph3}. Скопируйте этот веб-"
"сайт для меня.{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">dino-speed.js</span>
#: website/public/examples/dino-lab/index.html:307
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstruction · {ph0}"
msgstr "Реконструкция · {ph0}"
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/faq/index.html:205
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"With {ph0} and npm available, run setup, choose your coding agent and review"
" the proposed changes."
msgstr ""
"При наличии {ph0} и npm запустите программу установки, выберите свой "
"кодирующий агент и ознакомьтесь с предлагаемыми изменениями."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:189
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "A supplied example · {ph0} and npm · Your coding agent"
msgstr "Приведенный пример · {ph0} и npm · Ваш кодирующий агент"
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="../get-started/">
#. {ph2}: </a >
#: website/public/first-investigation/index.html:208
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"Use a coding agent such as Claude Code, Codex or Cursor. You’ll need {ph0} "
"and npm; the {ph1}setup guide lists supported versions{ph2}."
msgstr ""
"Используйте средство кодирования, такое как Claude Code, Codex или Cursor. "
"Вам понадобятся {ph0} и npm; в {ph1}руководстве по установке перечислены "
"поддерживаемые версии{ph2}."
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">renderer.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>notes.exportCsv()</code>
#. {ph7}: </span >
#: website/public/first-investigation/index.html:326
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Page · {ph1}{ph2}{ph3}Export notes{ph4}{ph5}Calls {ph6}.{ph7}"
msgstr ""
"{ph0}Страница · {ph1}{ph2}{ph3} При экспорте заметок{ph4}{ph5} вызывается "
"функция {ph6}.{ph7}"
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">preload.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: <code>notes:export</code>
#. {ph5}: </span >
#. {ph6}: <span class="flow-note" >
#. {ph7}: </span >
#: website/public/first-investigation/index.html:334
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Bridge · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}Sends a named message to the "
"main process.{ph7}"
msgstr ""
"{ph0}Мост · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6} в основной процесс отправляется "
"именованное сообщение.{ph7}"
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">main.js</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node" >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="flow-note" >
#. {ph7}: <code>csv.js</code>
#. {ph8}: </span >
#: website/public/first-investigation/index.html:342
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Handler · {ph1}{ph2}{ph3}Write {ph4}{ph5}{ph6}Calls the formatter in "
"{ph7} and writes the file.{ph8}"
msgstr ""
"{ph0}Обработчик · {ph1}{ph2}{ph3}Write {ph4}{ph5}{ph6}Вызывает средство "
"форматирования в {ph7} и записывает файл.{ph8}"
#. {ph0}: <span translate="no">main.js</span>
#: website/public/first-investigation/index.html:360
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · lines 8–12"
msgstr "{ph0} · строки 8-12"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-check-prompt" >
#. {ph3}: <span translate="no">Hello, "REA"</span>
#. {ph4}: <span translate="no">toCsv</span>
#. {ph5}: <span translate="no">Node.js</span>
#. {ph6}: </span >
#. {ph7}: <span class="terminal-cursor" aria-hidden="true">
#. {ph8}: </span>
#: website/public/first-investigation/index.html:402
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title {ph3}. Then "
"run the example’s {ph4} formatter with {ph5} to check it. Show the "
"prediction and actual output.{ph6}{ph7}{ph8}"
msgstr ""
"{ph0}\"{ph1}{ph2}Спрогнозируйте CSV для заметки с идентификатором 1 и "
"заголовком {ph3}. Затем запустите {ph4}программу форматирования примера "
"с{ph5}, чтобы проверить это. Покажите прогноз и фактический "
"результат.{ph6}{ph7}{ph8}"
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:420
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The title stays in one quoted field; each quotation mark is doubled. This "
"checks the formatter directly with {ph0}."
msgstr ""
"Заголовок остается в одном поле, заключенном в кавычки; каждая кавычка "
"удваивается. При этом выполняется прямая проверка форматирования с помощью "
"{ph0}."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:433
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · CSV formatter"
msgstr "{ph0} · CSV форматировщик"
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:187
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
msgstr ""
"Вам понадобится {ph0}22 (22.19+), 24 (24.11+) или 26+. В комплект поставки "
"входит {ph1}npm ."
#. {ph0}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:192
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Don't have {ph0}, or not sure?"
msgstr "У вас нет {ph0} или вы не уверены?"
#. {ph0}: <code>node -v</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:211
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
"Если {ph0} печатает версии v22.19+, v24.11+ или v26+, все готово. Если он "
"выводит более старую версию или \"не распознается\" / \"команда не "
"найдена\", установите {ph1} 24 LTS:"
#. {ph0}: <span translate="no">export.js</span>
#: website/public/guides/browser/index.html:428
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · example source excerpt"
msgstr "{ph0} · пример выдержки из источника"
#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <a href="../../examples/notes-web/export.js" download >
#. {ph3}: <span translate="no">export.js</span>
#. {ph4}: </a >
#. {ph5}: <a href="../../examples/notes-web/notes.json" download >
#. {ph6}: <span translate="no">notes.json</span>
#. {ph7}: </a >
#: website/public/guides/browser/index.html:446
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}Open the example{ph1} · {ph2}Download {ph3}{ph4} · {ph5}Download "
"{ph6}{ph7}"
msgstr ""
"{ph0}Откройте пример{ph1} · {ph2}Скачать {ph3}{ph4} · {ph5}Загрузите файл "
"{ph6}{ph7}"
#. {ph0}: <span translate="no">renderer.js</span>
#: website/public/guides/javascript/index.html:296
#: website/public/guides/javascript/index.html:312
#: website/public/guides/javascript/index.html:327
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} · example source"
msgstr "{ph0} · пример источника"
#. {ph0}: <code>notes-example</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/guides/javascript/index.html:361
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Download the example and unzip it. The archive contains the complete {ph0} "
"folder. Analyze it with {ph1} and npm; Electron is not needed for this "
"example."
msgstr ""
"Скачайте пример и распакуйте его. Архив содержит полную папку с {ph0}. "
"Проанализируйте его с {ph1}помощью и npm; Electron для этого примера не "
"нужен."
#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="get-started/">
#. {ph2}: </a>
#: website/public/index.html:276
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"First time, or missing {ph0} or a coding agent? {ph1}Follow the step-by-step"
" setup guide →{ph2}"
msgstr ""
"Первый раз или отсутствует {ph0} или используется средство кодирования? "
"{ph1}Следуйте пошаговому руководству по настройке →{ph2}"
#. {ph0}: <strong >
#. {ph1}: <span translate="no">200 + 10%</span>
#. {ph2}: </strong >
#: website/public/index.html:300
#, python-brace-format
msgctxt "page:index.html"
msgid "One question: {ph0}why does Calculator give 220 for {ph1}?{ph2}"
msgstr "Например: {ph0}почему калькулятор выдаёт 220 для {ph1}?{ph2}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-analysis-prompt" >
#. {ph3}: <span translate="no">200 + 10%</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:488
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator. Why does {ph3} give "
"220?{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA для проверки Windows Calculator. Почему "
"{ph3} дают 220?{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/index.html:673
#, python-brace-format
msgctxt "page:index.html"
msgid "REA · loaded {ph0} · selected lines"
msgstr "REA · загружено {ph0} · выбранные строки"
#. {ph0}: <strong>
#. {ph1}: <span translate="no">200 + 10%</span>
#. {ph2}: </strong>
#: website/public/index.html:777
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"We saw why {ph0}{ph1} gives 220.{ph2} Now let’s recover the rules for both +"
" and ×, and try them."
msgstr ""
"Мы видели, почему {ph0}{ph1} дают 220.{ph2} Теперь давайте восстановим "
"правила для + и × и попробуем их применить."
#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">calc.exe</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>ms-calculator:</code>
#. {ph7}: </span >
#: website/public/index.html:934
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA reads {ph1}{ph2}{ph3}It launches the Calculator "
"app{ph4}{ph5}The code opens {ph6}. The agent then selects the installed "
"app’s library.{ph7}"
msgstr ""
"{ph0}01 · REA читает {ph1}{ph2}{ph3} При запуске приложения "
"Calculator{ph4}{ph5} код открывает {ph6}. Затем агент выбирает библиотеку "
"установленного приложения.{ph7}"
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="aegis-prompt" >
#. {ph3}: <span translate="no" >3.apk</span >
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/showcase/aegis/index.html:265
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect aegis-v3.4.{ph3}. Find how it generates "
"the six-digit login code, explain why it changes every 30 seconds, and "
"rebuild a small demo where I can change the time.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}\"{ph1}{ph2}Используйте REA для проверки aegis-v3.4.{ph3}. Узнайте, как"
" он генерирует шестизначный код для входа, объясните, почему он меняется "
"каждые 30 секунд, и восстановите небольшую демонстрацию, в которой я могу "
"изменить время.{ph4}{ph5}{ph6}"
#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:329
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · API member"
msgstr "tab_browser_view/{ph0} · Член API"
#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:358
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · IPC helper"
msgstr "tab_browser_view/{ph0} · Помощник IPC"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:389
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · handler helper"
msgstr "main/{ph0} · помощник обработчика"
#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:417
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · clipboard receiver"
msgstr "main/{ph0} · приемник буфера обмена"
#~ 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 "Реконструкция · 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 ""
#~ "При наличии Node.js и npm запустите программу установки, выберите свой "
#~ "кодирующий агент и ознакомьтесь с предлагаемыми изменениями."
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "A supplied example · Node.js and npm · Your coding agent"
#~ msgstr "Приведенный пример · Node.js и npm · Ваш кодирующий агент"
#, 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 ""
#~ "Используйте средство кодирования, такое как Claude Code, Codex или Cursor. "
#~ "Вам понадобятся Node.js и npm; в {ph0}руководстве по установке перечислены "
#~ "поддерживаемые версии{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}Страница · renderer.js{ph1}{ph2} При экспорте заметок{ph3}{ph4} "
#~ "вызывается функция {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}Мост · preload.js{ph1}{ph2}{ph3}{ph4}{ph5} в основной процесс "
#~ "отправляется именованное сообщение.{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}Обработчик · main.js{ph1}{ph2} Запись заметок.csv{ph3}{ph4} Вызывает "
#~ "средство форматирования в {ph5} и записывает файл.{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}Спрогнозируйте CSV-файл для заметки с идентификатором 1 и "
#~ "заголовком \"Привет, REA\". Затем запустите средство форматирования toCsv в "
#~ "примере с помощью Node.jsNode.js чтобы проверить его. Покажите прогноз и "
#~ "фактический результат.{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 ""
#~ "Заголовок остается в одном поле, заключенном в кавычки; каждая кавычка "
#~ "удваивается. При этом выполняется прямая проверка форматирования с помощью "
#~ "Node.js."
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "Node.js · CSV formatter"
#~ msgstr "Node.js · CSV форматировщик"
#~ 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 ""
#~ "Вам понадобится Node.js 22 (22.19+), 24 (24.11+) или 26+. npm поставляется с"
#~ " Node.js."
#~ msgctxt "page:get-started/index.html"
#~ msgid "Don't have Node.js, or not sure?"
#~ msgstr "У вас нет Node.js или вы не уверены?"
#, 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 ""
#~ "Если {ph0} печатает версии v22.19+, v24.11+ или v26+, все готово. Если он "
#~ "выводит более старую версию или \"не распознается\" / \"команда не "
#~ "найдена\", установите Node.js 24 LTS:"
#, 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}Откройте пример{ph1} · {ph2}Скачать export.js{ph3} · {ph4}Загрузите "
#~ "файл notes.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 ""
#~ "Скачайте пример и распакуйте его. Архив содержит полную папку с {ph0}. "
#~ "Проанализируйте это с Node.js Node.js и npm; в этом примере Electron не "
#~ "нужен."
#, 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 ""
#~ "Первый раз или отсутствует Node.js или используется средство кодирования? "
#~ "{ph0}Следуйте пошаговому руководству по настройке →{ph1}"
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for 200 + 10%?{ph1}"
#~ msgstr "Например: {ph0}почему калькулятор выдаёт 220 для 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}Используйте REA для проверки Windows Calculator. Почему 200"
#~ " + 10% дают 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 ""
#~ "Мы видели, почему {ph0}200 + 10% дают 220.{ph1} Теперь давайте восстановим "
#~ "правила для + и × и попробуем их применить."
#, 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 читает calc.exe{ph1}{ph2} При запуске приложения "
#~ "Calculator{ph3}{ph4} код открывает {ph5}. Затем агент выбирает библиотеку "
#~ "установленного приложения.{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}Используйте REA для проверки aegis-v3.4.3.apk. Узнайте, как"
#~ " он генерирует шестизначный код для входа, объясните, почему он меняется "
#~ "каждые 30 секунд, и восстановите небольшую демонстрацию, в которой я могу "
#~ "изменить время.{ph3}{ph4}{ph5}"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · API member"
#~ msgstr "tab_browser_view/preload.js · Член API"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · IPC helper"
#~ msgstr "tab_browser_view/preload.js · Помощник IPC"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · handler helper"
#~ msgstr "main/index.js · помощник обработчика"
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · clipboard receiver"
#~ msgstr "main/index.js · приемник буфера обмена"
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "main.js · lines 8–12"
#~ msgstr "main.js · строки 8-12"
#~ msgctxt "page:guides/browser/index.html"
#~ msgid "export.js · example source excerpt"
#~ msgstr "export.js · пример выдержки из источника"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "renderer.js · example source"
#~ msgstr "renderer.js · пример источника"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "preload.js · example source"
#~ msgstr "preload.js · пример источника"
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "main.js · example source"
#~ msgstr "main.js · пример источника"
#~ msgctxt "page:index.html"
#~ msgid "REA · loaded index.js · selected lines"
#~ msgstr "REA · загружено index.js · выбранные строки"
#, 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}Используйте REA для анализа /абсолютного/пути/к/приложению "
#~ "и объясните, как оно экспортирует данные. Покажите соответствующий код и "
#~ "расположение источников.{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}Установите REA и подключите его к этому агенту "
#~ "программирования, используя npx rea-agents@latest setup. Покажите мне план "
#~ "установки для утверждения, затем проверьте правильность "
#~ "установки.{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}Загрузите https://rea.tools/examples/notes-example.zip в "
#~ "новую папку с примерами и распакуйте ее. Используйте REA, чтобы узнать, что "
#~ "происходит, когда я нажимаю \"Экспортировать заметки\". Покажите, где "
#~ "записан файл notes.csv, какие поля он содержит, а также соответствующие "
#~ "файлы и строки.{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}Установите REA и подключите его к этому агенту "
#~ "программирования, используя npx rea-agents@latest setup. Покажите мне план "
#~ "установки для утверждения, затем проверьте правильность "
#~ "установки.{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}Установите REA и подключите его к этому агенту "
#~ "программирования, используя npx rea-agents@latest setup. Покажите мне план "
#~ "установки для утверждения, затем проверьте правильность "
#~ "установки.{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}Используйте REA для проверки https://rea.tools/. Клонируйте"
#~ " этот веб-сайт для меня.{ph3}{ph4}{ph5}"
#~ msgctxt "figure:ctf-mask-equation.svg"
#~ msgid "code[21] = 55"
#~ msgstr "код[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 "× панорамный масштаб"
#, python-brace-format
#~ msgctxt "shared"
#~ msgid "{ph0}REA{ph1}{ph2}Reverse Engineer Anything{ph3}"
#~ msgstr "{ph0}REA{ph1}{ph2} Обратное проектирование чего угодно{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 ""