#
msgid ""
msgstr ""
"Project-Id-Version: REA website\n"
"Language: zh-TW\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Initial-Translation: Machine-assisted Traditional Chinese baseline; community review welcome\n"

#: website/public/blog/index.html:107
msgctxt "page:blog/index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

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

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

#: website/public/blog/index.html:201
msgctxt "page:blog/index.html"
msgid "Thoughts on reverse engineering."
msgstr "逆向工程的思考。"

#. {ph0}: <br />
#: website/public/blog/index.html:219
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Game reconstruction{ph0}Essay"
msgstr "遊戲重建{ph0}論文"

#: website/public/blog/index.html:221
msgctxt "page:blog/index.html"
msgid "The industrial revolution in reverse engineering"
msgstr "逆向工程的工業革命"

#: website/public/blog/index.html:222
msgctxt "page:blog/index.html"
msgid ""
"What manual RE and reconstructing TH08, TH095 and TH04 taught me about "
"agents, verification and knowledge that compounds across projects."
msgstr "什麼手動重新和重建TH08，TH095和TH04教我關於程式設計助手，驗證和知識，跨專案的化合物。"

#: website/public/blog/index.html:212 website/public/blog/index.html:227
msgctxt "page:blog/index.html"
msgid "Read the article"
msgstr "閱讀文章"

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

#: 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 和AI程式設計助手。"

#: website/public/blog/index.html:79 website/public/blog/index.html:92
#: website/public/blog/reverse-engineering-models/index.html:79
#: website/public/blog/reverse-engineering-models/index.html:92
#: website/public/blog/touhou-reconstruction/index.html:79
#: website/public/blog/touhou-reconstruction/index.html:92
#: website/public/contributors/index.html:79
#: website/public/contributors/index.html:92
#: website/public/examples/dino-lab/index.html:79
#: website/public/examples/dino-lab/index.html:92
#: website/public/faq/index.html:79 website/public/faq/index.html:92
#: website/public/first-investigation/index.html:79
#: website/public/first-investigation/index.html:92
#: website/public/get-started/index.html:79
#: website/public/get-started/index.html:92
#: website/public/guides/browser/index.html:79
#: website/public/guides/browser/index.html:92
#: website/public/guides/index.html:79 website/public/guides/index.html:92
#: website/public/guides/javascript/index.html:79
#: website/public/guides/javascript/index.html:92
#: website/public/guides/native/index.html:79
#: website/public/guides/native/index.html:92 website/public/index.html:79
#: website/public/index.html:92 website/public/showcase/aegis/index.html:79
#: website/public/showcase/aegis/index.html:92
#: website/public/showcase/ctf/index.html:79
#: website/public/showcase/ctf/index.html:92
#: website/public/showcase/dx-ball/index.html:79
#: website/public/showcase/dx-ball/index.html:92
#: website/public/showcase/index.html:79 website/public/showcase/index.html:92
#: website/public/showcase/notion/index.html:79
#: website/public/showcase/notion/index.html:92
#: website/public/showcase/th04/index.html:79
#: website/public/showcase/th04/index.html:92
msgctxt "shared"
msgid ""
"REA — Find out how software works. Reverse engineering with your coding "
"agent."
msgstr "REA-瞭解軟體的工作原理。 逆向工程與你的程式設計助手."

#: website/public/blog/index.html:112
#: website/public/blog/reverse-engineering-models/index.html:112
#: website/public/blog/touhou-reconstruction/index.html:112
#: website/public/contributors/index.html:113
#: website/public/examples/dino-lab/index.html:113
#: website/public/faq/index.html:112
#: website/public/first-investigation/index.html:112
#: website/public/get-started/index.html:112
#: website/public/guides/browser/index.html:112
#: website/public/guides/index.html:112
#: website/public/guides/javascript/index.html:112
#: website/public/guides/native/index.html:112 website/public/index.html:114
#: website/public/showcase/aegis/index.html:113
#: website/public/showcase/ctf/index.html:112
#: website/public/showcase/dx-ball/index.html:112
#: website/public/showcase/index.html:112
#: website/public/showcase/notion/index.html:112
#: website/public/showcase/th04/index.html:112
msgctxt "shared"
msgid "REA home"
msgstr "REA 首頁"

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

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

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

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

#: website/public/blog/index.html:250
msgctxt "page:blog/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/blog/touhou-reconstruction/index.html:107
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:199
#, 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:203
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Essay · Touhou reconstruction"
msgstr "隨筆 · 東方遊戲重建"

#: website/public/blog/touhou-reconstruction/index.html:204
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The industrial revolution in reverse engineering."
msgstr "逆向工程的工業革命。"

#: website/public/blog/touhou-reconstruction/index.html:205
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "By N0zoM1z0 · 10 October 2026"
msgstr "作者 N0zoM1z0 · 2026 年 10 月 10 日"

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

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:209
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Give agents autonomy over the investigation.{ph1} Set a clear goal and "
"acceptance criteria, then let the agent decide what to try next."
msgstr "{ph0}讓程式設計助手自主開展調查。{ph1}明確目標和驗收標準，再讓它決定下一步嘗試什麼。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:214
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Use the repository and Git as working memory.{ph1} Keep the reasoning "
"with the code. Git checkpoints let the next session continue after the "
"conversation ends."
msgstr ""
"{ph0}把程式碼儲存庫和 Git 當作工作記憶。{ph1}推理過程和程式碼一起儲存。用 Git 留下檢查點，下一次會話就能在對話結束後接著做。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:219
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Let evidence decide what you claim.{ph1} A confident explanation still "
"needs testing. “Unknown” is a valid answer when the evidence is incomplete."
msgstr "{ph0}結論要由證據決定。{ph1}說得再肯定，也需要驗證。證據不足時，“尚不清楚”是合理的答案。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:224
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Test the oracle too.{ph1} Try cases it should reject. If it misses a "
"bug, revisit the earlier results that depended on it."
msgstr "{ph0}驗證基準本身也要測試。{ph1}故意給它應當拒絕的錯誤案例。如果它漏掉了 bug，就重新檢查依賴這套基準的早期結果。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:229
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early days of RE's industrial revolution.{ph1} The "
"methods are still taking shape. There is plenty left to explore."
msgstr "{ph0}我們正處於逆向工程工業革命的早期。{ph1}方法還在成形，還有很多值得探索的地方。"

#: website/public/blog/touhou-reconstruction/index.html:241
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "How experience compounds"
msgstr "經驗如何產生複利"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:242
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Human direction{ph1} · Goal and acceptance criteria"
msgstr "{ph0}人來定方向{ph1} · 目標和驗收標準"

#: website/public/blog/touhou-reconstruction/index.html:330
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Autonomy"
msgstr "自主探索"

#: website/public/blog/touhou-reconstruction/index.html:331
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Agent"
msgstr "程式設計助手"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:332
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Choose an experiment.{ph0}Propose a hypothesis."
msgstr "選擇實驗。{ph0}提出假設。"

#: website/public/blog/touhou-reconstruction/index.html:335
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Verification"
msgstr "驗證"

#: website/public/blog/touhou-reconstruction/index.html:336
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Oracle"
msgstr "驗證基準"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:337
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Test against a{ph0}concrete reference."
msgstr "對照{ph0}具體的基準驗證。"

#: website/public/blog/touhou-reconstruction/index.html:340
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Repository"
msgstr "程式碼儲存庫"

#: website/public/blog/touhou-reconstruction/index.html:341
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Working memory"
msgstr "工作記憶"

#. {ph0}: <br />
#: website/public/blog/touhou-reconstruction/index.html:342
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Code, evidence,{ph0}checks and lessons."
msgstr "程式碼、證據、{ph0}檢查和經驗。"

#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:344
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Mismatch{ph0}{ph1}Revise the hypothesis{ph2}"
msgstr "不匹配{ph0}{ph1}修正假設{ph2}"

#. {ph0}: <br />
#. {ph1}: <strong>
#. {ph2}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:347
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "A better{ph0}{ph1}starting point{ph2}"
msgstr "更好的{ph0}{ph1}起點{ph2}"

#: website/public/blog/touhou-reconstruction/index.html:350
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Reuse"
msgstr "複用"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:351
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Pass{ph1} · Keep the result and its evidence"
msgstr "{ph0}透過{ph1} · 保留結果及其證據"

#: website/public/blog/touhou-reconstruction/index.html:363
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Each project leaves the next with a better starting point. That includes "
"fixing the checks when we discover a gap."
msgstr "每個專案都為下一個專案留下更好的起點。發現檢查有漏洞時，也要把檢查修好。"

#: website/public/blog/touhou-reconstruction/index.html:370
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:372
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}August 2026{ph1}"
msgstr "{ph0}2026年8月{ph1}"

#. {ph0}: <a href="#th08">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:373
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH08: the continuation{ph1}"
msgstr "{ph0}TH08：接續前人的工作{ph1}"

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

#. {ph0}: <a href="#th095">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:375
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}TH095: compounding{ph1}"
msgstr "{ph0}TH095：經驗的複利{ph1}"

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

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

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

#. {ph0}: <a href="#possibilities">
#. {ph1}: </a>
#: website/public/blog/touhou-reconstruction/index.html:381
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}What becomes possible{ph1}"
msgstr "{ph0}新的可能性{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:386
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What changed in August 2026"
msgstr "2026年8月發生了什麼變化"

#: website/public/blog/touhou-reconstruction/index.html:387
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Before this work, I had done a lot of manual reverse engineering. I would "
"inspect a function until I had an explanation, then test that explanation "
"against the program. Getting further meant spending more of my own time on "
"the next function. It also meant keeping an increasingly large picture in my"
" head."
msgstr ""
"在這之前，我做過很多手工逆向。我會反覆檢視一個函式，直到能解釋它，再對照程式驗證這個解釋。想推進專案，就得親自花更多時間研究下一個函式，腦子裡也要記住越來越多的整體關係。"

#: website/public/blog/touhou-reconstruction/index.html:394
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Most of my RE work is on games. I reconstruct them so their behavior can be "
"understood and eventually carried into a port or a mod. That is the "
"experience behind this article. The method can be useful elsewhere, but each"
" field needs to establish what it can check against a reliable reference."
msgstr ""
"我的逆向工作主要圍繞遊戲。我希望透過重建弄清遊戲的行為，最終做出移植版或 "
"mod。這篇文章來自這些經歷。方法可以遷移到其他領域，但每個領域都需要先明確：什麼可以用可靠的基準來驗證。"

#: website/public/blog/touhou-reconstruction/index.html:401
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In August 2026, I started exploring agent-driven RE seriously. I wanted to "
"see how far an agent could get with access to the program and ordinary "
"development tools. Touhou reconstruction gave me a substantial project in "
"which to find out."
msgstr ""
"2026 年 8 月，我開始認真探索讓程式設計助手做逆向。有了程式本身和常用開發工具，它究竟能走多遠？東方遊戲重建給了我一個足夠完整的專案來尋找答案。"

#: website/public/blog/touhou-reconstruction/index.html:407
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The early progress was startling. An investigation could keep moving without"
" me choosing every individual step. A failed comparison might send the agent"
" to another caller. It could write a small diagnostic and use the result to "
"decide what to try next. Giving it that freedom made a difference: I could "
"spend more attention on the project's direction and on whether its checks "
"were trustworthy."
msgstr ""
"早期的進展讓我吃驚。我不再需要為每一步作選擇，調查也能持續推進。對比失敗後，助手可能轉去檢視另一個呼叫方，寫一段診斷程式，再根據結果決定下一步。這種自主性改變了我的工作：我可以更多關注專案方向，以及檢查是否可靠。"

#: website/public/blog/touhou-reconstruction/index.html:416
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace got my attention first. Then I began wondering what would survive "
"beyond the current project. Would the next game benefit from everything we "
"had just learned?"
msgstr "速度先引起了我的注意。隨後我開始想：當前專案結束後，什麼會留下來？下一個遊戲能不能用上我們剛學到的經驗？"

#: website/public/blog/touhou-reconstruction/index.html:423
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:424
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08{ph1}, Imperishable Night, began as a continuation of "
"{ph2}GensokyoClub's reconstruction{ph3}. Their public source gave me a "
"substantial foundation. It came with knowledge of the build and a history of"
" contributions that I preserved in the continuation."
msgstr ""
"{ph0}TH08{ph1}，也就是《東方永夜抄》，從接續{ph2}GensokyoClub "
"的重建工作{ph3}開始。他們的公開原始碼提供了紮實的基礎，也留下了構建經驗和貢獻歷史。我在後續工作中保留了這些歷史。"

#: website/public/blog/touhou-reconstruction/index.html:433
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The imported history ends at the public 10 August checkpoint. My independent"
" continuation began on 13 August. By 19 August, the ledger recorded source "
"for all 1,107 identified game functions."
msgstr ""
"匯入的歷史截至 8 月 10 日的公開檢查點。我的獨立續作從 8 月 13 日開始。到 8 月 19 日，進度臺賬中已識別的 1,107 "
"個遊戲函式都有了原始碼。"

#: website/public/blog/touhou-reconstruction/index.html:438
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A playable Linux reconstruction port was committed on 24 August, roughly "
"eleven days after the continuation began. A Web edition followed. The native"
" Linux 64-bit release arrived on 30 August."
msgstr ""
"8 月 24 日，我們提交了可玩的 Linux 重建移植版，距離開始續作約十一天。隨後做出了 Web 版。8 月 30 日，原生 Linux 64 "
"位版釋出。"

#: website/public/blog/touhou-reconstruction/index.html:443
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"What struck me was that the work had reached a program people could run. "
"Getting there required following problems beyond an individual function. "
"Even when two functions looked correct in isolation, they could accidentally"
" use separate copies of state that should have been shared."
msgstr ""
"最打動我的是，這些工作最終變成了大家能執行的程式。為此必須解決單個函式以外的問題。即使兩個函式分別看起來都對，也可能各自使用一份本應共享的狀態。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:450
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This made reference checks central to the work. I call them "
"{ph0}oracles{ph1}. A code comparison can tell us whether a reconstructed "
"function reproduces the original instructions. A runtime check can tell us "
"whether an exercised route reaches the expected state. The agent proposes an"
" explanation and tests it; a mismatch gives it something specific to "
"investigate."
msgstr ""
"這讓對照檢查成為工作的核心。我把這些基準稱為{ph0}驗證基準（oracle）{ph1}。程式碼對比可以檢查重建函式是否復現原始指令；執行時檢查可以確認已走過的路徑是否到達預期狀態。助手提出解釋，再驗證它。發現不匹配，就有了具體的調查方向。"

#: website/public/blog/touhou-reconstruction/index.html:458
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "An exact match with the wrong constant"
msgstr "常量錯了，卻仍然“精確匹配”"

#: website/public/blog/touhou-reconstruction/index.html:459
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"An oracle is software someone wrote. TH08 gave me a clear reminder of how "
"much can depend on that software."
msgstr "校驗工具也是人寫的軟體。TH08 讓我清楚地看到，多少結論都依賴著它。"

#. {ph0}: <code>0.0</code>
#. {ph1}: <code>128.0</code>
#: website/public/blog/touhou-reconstruction/index.html:463
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In September, a bug reported by a downstream Switch port led back to item "
"auto-collection. The reconstructed source checked player power against "
"{ph0}. The original used {ph1}, the maximum-power threshold."
msgstr ""
"9 月，下游 Switch 移植版報告了一個 bug，最後追溯到道具自動收集。重建原始碼把玩家火力與 {ph0} 比較，而原版用的是 "
"{ph1}，即滿火力的閾值。"

#: website/public/blog/touhou-reconstruction/index.html:469
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Normal power is non-negative, so the reconstructed power check was "
"effectively always satisfied. Above the collection line, the game could "
"attract items without requiring maximum power. The other exceptions in the "
"condition were correct. This one constant changed the behavior."
msgstr ""
"正常火力不會小於零，所以重建版的火力條件幾乎總是滿足。玩家到了收集線上方，不用滿火力也會吸取道具。條件裡的其他例外沒有問題，但這一個常量就改變了行為。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:476
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "{ph0}Yet the function had already passed the exact comparison.{ph1}"
msgstr "{ph0}可這個函式之前已經透過了精確對比。{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:482
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A rebuild can put a constant at a different address. The comparison tool "
"accounted for that by adjusting addresses in the compiled instructions "
"before comparing them with the original. But it never checked the floating-"
"point value stored at the referenced address."
msgstr ""
"重新編譯後，常量可能出現在不同地址。比較工具會先調整編譯後指令中的地址，再和原版比較，以處理這種差異。問題是，它從未檢查被引用地址中實際存放的浮點值。"

#. {ph0}: <code>128.0</code>
#. {ph1}: <code>0.0</code>
#: website/public/blog/touhou-reconstruction/index.html:489
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That left a hole in the check. It could point the reconstructed instruction "
"at the original's {ph0} while the source still said {ph1}. The instruction "
"bytes matched. The source meant something different."
msgstr "漏洞就在這裡：工具可以把重建指令的引用地址調整為原版的 {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:495
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}2 September fix{ph1} corrected the source and made the comparison "
"check the referenced constant's actual bytes. A {ph2}wider audit{ph3} then "
"examined 1,548 floating-literal references. It found another twelve "
"incorrect references across five accepted functions."
msgstr ""
"{ph0}9 月 2 日的修復{ph1}糾正了原始碼，並讓比較工具檢查被引用常量的實際位元組。隨後進行的{ph2}全面審計{ph3}檢查了 1,548 "
"處浮點常量引用，又在五個已透過驗收的函式中發現十二處錯誤引用。"

#: website/public/blog/touhou-reconstruction/index.html:506
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The comparison now checks every such floating literal. Its tests include "
"deliberately wrong values to make sure they are rejected. We also had to "
"revisit results that had passed the weaker check."
msgstr "現在工具會檢查每一處這樣的浮點常量。測試還會故意使用錯誤值，確保工具能夠拒絕它們。我們也重新檢查了曾經透過舊版檢查的結果。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:511
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The oracle needed reconstructing too.{ph1} Repairing it was part of "
"repairing the game."
msgstr "{ph0}驗證基準本身也需要重建。{ph1}修復它，就是修復遊戲的一部分。"

#: website/public/blog/touhou-reconstruction/index.html:515
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That matters when the team is mostly one person working with agents. I "
"cannot personally inspect every line they produce, so much of my confidence "
"rests on their checks. A shared oracle's blind spot can affect many "
"investigations before I notice it. I have to understand what the checker "
"actually verifies and test it against cases that ought to fail."
msgstr ""
"當團隊幾乎就是一個人加一群程式設計助手時，這一點尤其重要。我無法逐行檢查它們寫出的所有程式碼，很多信心都來自檢查結果。共享驗證基準中的盲點，可能在我發現之前就影響許多調查。我必須弄清工具到底驗證了什麼，再用應當失敗的案例測試它。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:523
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"As the work continued, those checks became part of the repository. So did "
"the reasons for source changes and notes that let a later session pick up "
"where an earlier one stopped. {ph0}The repository was becoming the project's"
" working memory.{ph1}"
msgstr ""
"隨著專案推進，檢查程式進入了程式碼儲存庫。原始碼修改的理由也儲存在裡面，還有讓下一次會話能夠接著做的記錄。{ph0}程式碼儲存庫正在成為專案的工作記憶。{ph1}"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:532
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}A successful batch gave us both recovered code and a better environment"
" for the next batch.{ph1}"
msgstr "{ph0}每完成一批工作，我們既得到了還原的程式碼，也改善了下一批工作的環境。{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:540
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:541
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"GensokyoClub's {ph0}public README{ph1} makes its disagreement with this kind"
" of work explicit. The notice announces that further development will happen"
" privately until completion. One passage reads:"
msgstr ""
"GensokyoClub 的{ph0}公開 "
"README{ph1}明確表達了對這種工作的異議。公告說，專案完成前，後續開發將在私下進行。其中有這樣一段話："

#: website/public/blog/touhou-reconstruction/index.html:552
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The rise of grifters (AI decompilations and ports) in this space taking from"
" our work paints a bad image for future decompilation efforts…"
msgstr "“這個領域裡出現了利用我們成果的投機者（AI 反編譯和移植專案），給未來的反編譯工作留下了不好的印象……”"

#: website/public/blog/touhou-reconstruction/index.html:558
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The notice also describes the psychological toll on the maintainers. Their "
"contribution policy excludes pull requests produced primarily with AI. They "
"have put their free time into difficult work, and that work helped make my "
"continuation possible. I respect the effort behind it. The disagreement I "
"want to discuss is about how reconstruction should proceed and how a "
"contribution should be judged."
msgstr ""
"公告也提到了維護者承受的心理壓力。他們的貢獻政策不接受主要由 AI 生成的 "
"PR。他們用業餘時間投入了艱難的工作，這些成果讓我的續作成為可能。我尊重他們付出的努力。我想討論的分歧，是重建應當如何推進，以及貢獻應當如何評價。"

#: website/public/blog/touhou-reconstruction/index.html:567
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In the manual workflow I knew, developing an understanding of a function and"
" reconstructing it usually fell to the same person. A project relied heavily"
" on that person's expertise. Trust in the contributor mattered because so "
"much of the reasoning happened while they worked."
msgstr ""
"在我熟悉的手工流程中，理解一個函式和重建它，通常由同一個人完成。專案非常依賴這個人的專業能力。很多推理發生在工作過程中，所以對貢獻者本人的信任很重要。"

#: website/public/blog/touhou-reconstruction/index.html:574
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Existing projects already preserve knowledge in their source and build "
"tools. What changed for me was that an agent could use that knowledge to "
"pursue the next investigation on its own."
msgstr "已有專案本就會在原始碼和構建工具中儲存知識。對我而言，變化在於：程式設計助手能利用這些知識，自主推進下一次調查。"

#: website/public/blog/touhou-reconstruction/index.html:579
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"In my continuation, I decide the objective and the standard for accepting a "
"result. The agent has broad freedom to investigate. Its proposed "
"reconstruction then has to survive the relevant checks. I want another "
"person to be able to examine why we chose an implementation, even if an "
"agent did most of the work."
msgstr ""
"在我的續作中，我來確定目標和驗收標準，助手有充分的調查自由。它提出的重建方案必須透過相應檢查。我希望其他人能夠看懂我們為什麼選擇這個實現，即使大部分工作由助手完成。"

#: website/public/blog/touhou-reconstruction/index.html:586
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This can be a difficult transition. Years of careful work may become the "
"foundation for a continuation that moves much faster. That raises real "
"questions about credit. It also changes what maintainers need to know before"
" accepting a contribution."
msgstr ""
"這可能是一個艱難的轉變。多年的細緻工作，可能成為一個推進得更快的續作的基礎。這會帶來真實的歸屬與署名問題，也改變維護者在接受貢獻前需要了解的事情。"

#: website/public/blog/touhou-reconstruction/index.html:592
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy helps me think about this. In a craft, much of the "
"process depends on the skill of the person carrying it out. Machinery "
"changes where that skill is needed. Someone still has to design the process "
"and recognize when its output is wrong. Different communities can choose how"
" much of that change they want to take on."
msgstr ""
"工業化的比喻有助於理解這一點。手工作業的過程往往依賴操作者的技藝。機器改變了這些技藝發揮作用的位置，但仍然需要人設計流程、識別錯誤產出。不同社群可以選擇接受多少這樣的變化。"

#: website/public/blog/touhou-reconstruction/index.html:600
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"My choice is to continue openly, with the inherited work credited and its "
"history preserved. I want the new work to be reviewable. That gives us a way"
" to ask how far this approach can go and to learn from what goes wrong along"
" the way."
msgstr "我的選擇是公開繼續，註明繼承的工作並保留其歷史。我希望新工作可以被審查。這樣，我們才能探索這種方法能走多遠，也從沿途的問題中學習。"

#. {ph0}: <a
#. href="https://github.com/GensokyoClub/th08/blob/e874b98e210b3be1ed21c5e03d54b883eac5069c/README.md#important-
#. notice" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/GensokyoClub/th08/blob/f345c7dee07b849f2ff93a0029ab5ede126bf12c/CODE_OF_CONDUCT.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/d2a00f4acb4a13916e07a00bd13f714961714628/README.md#credits-
#. and-provenance" >
#. {ph5}: </a >
#: website/public/blog/touhou-reconstruction/index.html:606
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Source: GensokyoClub's {ph0}README notice{ph1}, checked on 10 October 2026, "
"and its {ph2}contribution policy{ph3}. The quotation is a shortened excerpt."
" TH08's {ph4}credits and provenance{ph5} record the continuation boundary."
msgstr ""
"來源：GensokyoClub 的{ph0}README 公告{ph1}（於 2026 年 10 月 10 "
"日核對）及其{ph2}貢獻政策{ph3}。上面的引文為節選譯文。TH08 的{ph4}貢獻署名與來源記錄{ph5}說明了獨立續作的起點。"

#: website/public/blog/touhou-reconstruction/index.html:624
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:625
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095{ph1}, Shoot the Bullet, made the value of that experience much "
"easier to see. Its repository began on 29 August with zero confirmed game "
"functions in the ledger. We still had to learn the game. But we already knew"
" much more about how to begin a reconstruction and how to keep it moving."
msgstr ""
"{ph0}TH095{ph1}，也就是《東方文花帖》，讓這些經驗的價值更容易看清。儲存庫於 8 月 29 "
"日建立，當時臺賬中確認的遊戲函式數量為零。我們仍需研究遊戲本身，但已經更清楚如何開始重建，以及怎樣持續推進。"

#: website/public/blog/touhou-reconstruction/index.html:633
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"By 7 September, all 697 identified game functions had source. By 8 "
"September, 696 had been accepted as exact comparisons. The whole program "
"linked on 9 September. The Windows i386 reconstruction was marked playable "
"on 10 September, about twelve days after initialization."
msgstr ""
"到 9 月 7 日，全部 697 個已識別遊戲函式都有了原始碼。9 月 8 日，其中 696 個透過了精確對比。9 月 9 日，整個程式完成連結。9 月"
" 10 日，Windows i386 重建版被記錄為可玩，距離初始化約十二天。"

#: website/public/blog/touhou-reconstruction/index.html:640
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I found this more exciting than the first project's speed. A fresh target "
"could benefit from work done on another game. The experience was already "
"present in the tools and in the way the project was organized."
msgstr "這比第一個專案的速度更讓我興奮。新目標能受益於另一個遊戲的工作。經驗已經進入工具，也進入了專案的組織方式。"

#: website/public/blog/touhou-reconstruction/index.html:646
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For example, TH08 had taught us to pay attention to the assembled program "
"early. If several recovered functions depend on the same state, their "
"isolated comparisons leave an important question open. We need to see them "
"working together. That lesson helped shape how we approached TH095's whole-"
"program build."
msgstr ""
"例如，TH08 教會我們儘早關注整個程式。如果幾個還原函式依賴同一份狀態，分別對比它們仍然會留下一個關鍵問題：它們能否一起正常工作？這條經驗影響了 "
"TH095 的整程式構建方式。"

#: website/public/blog/touhou-reconstruction/index.html:653
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A lesson that stays in my head is useful while I am there. Once it becomes a"
" check that another session can run, it can keep helping after I have moved "
"on. The next agent can use the result without repeating the investigation "
"that led to it."
msgstr ""
"經驗只記在我腦子裡，我在場時它才有用。變成其他會話能執行的檢查後，即使我離開，它仍能幫助專案。下一個助手可以利用檢查結果，不用重複當初得出這條經驗的調查。"

#: website/public/blog/touhou-reconstruction/index.html:659
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The floating-literal bug belongs in that memory too. It explains why "
"checking a reference also requires checking the data behind it. Keeping that"
" correction with the code helps later projects avoid inheriting the old "
"check's blind spot."
msgstr ""
"浮點常量的 bug 也屬於這份記憶。它說明，檢查引用時，還要檢查引用背後的資料。把修正儲存在程式碼旁邊，可以幫助後續專案避免繼承舊工具的盲點。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:665
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}The method becomes part of the starting material for the next "
"game.{ph1} We can spend more of the next project's effort on what is "
"actually new about its target."
msgstr "{ph0}方法本身成了下一個遊戲的起始材料。{ph1}我們可以把更多精力放在新目標真正不同的地方。"

#: website/public/blog/touhou-reconstruction/index.html:673
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The same benefit is available to people joining later. They can inspect a "
"decision and rerun its check before continuing the work. They do not have to"
" reconstruct the entire project's history to find out why the source looks "
"the way it does."
msgstr "後來加入的人也能受益。他們可以檢視某個決定，重新執行檢查，再繼續工作。不用先重走整個專案的歷史，才能理解原始碼為何這樣寫。"

#: website/public/blog/touhou-reconstruction/index.html:681
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "TH04: the workflow survives a different architecture"
msgstr "TH04：換了架構，工作方式仍然適用"

#. {ph0}: <a href="https://github.com/N0zoM1z0/th04">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/nmlgc/ReC98">
#. {ph3}: </a>
#: website/public/blog/touhou-reconstruction/index.html:682
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04{ph1}, Lotus Land Story, took this work into the PC-98 DOS era. The"
" target was now a 16-bit environment with four cooperating programs. "
"Understanding its hardware behavior required different evidence from the "
"Windows games. Existing {ph2}ReC98 work{ph3} gave us valuable knowledge and "
"source material here too."
msgstr ""
"{ph0}TH04{ph1}，也就是《東方幻想鄉》，把這套工作帶到了 PC-98 DOS 時代。這次是一個由四個程式協作的 16 "
"位環境。理解硬體行為，需要和 Windows 遊戲不同的證據。已有的{ph2}ReC98 工作{ph3}同樣提供了寶貴的知識與原始碼材料。"

#: website/public/blog/touhou-reconstruction/index.html:691
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The DOS reconstruction is now working. In my manual testing, I played "
"complete Normal routes through their endings and checked saves. The current "
"work is a native 64-bit port. Establishing a working DOS version first gives"
" that port a reference."
msgstr ""
"DOS 重建版現在已經能執行。我手工打完了完整的 Normal 路線，看到結局，並檢查了存檔。目前正在做原生 64 位移植。先得到一個正常工作的 DOS"
" 版，就為移植提供了參照。"

#: website/public/blog/touhou-reconstruction/index.html:697
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The architecture changed what we needed to investigate. It also changed the "
"compiler and runtime against which we checked our work. But the agent could "
"still follow a question through to a result and let that result guide the "
"next experiment."
msgstr "架構改變了要調查的問題，也改變了用來驗證的編譯器和執行時。但助手依然能沿著問題找到結果，再用結果指導下一次實驗。"

#: website/public/blog/touhou-reconstruction/index.html:703
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Consider the transition from gameplay to an ending. We need to know what "
"state carries across that boundary and which program is responsible for it. "
"That is something we can investigate against the DOS product. Once the "
"evidence and checks are available, an agent can work through the question "
"much as it did on a Windows title."
msgstr ""
"比如從遊戲過程切換到結局：哪些狀態需要跨越這個邊界？哪個程式負責它們？我們可以對照 DOS 原版調查。只要證據和檢查可用，助手就能像研究 Windows"
" 遊戲一樣推進這個問題。"

#: website/public/blog/touhou-reconstruction/index.html:711
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This is why TH04 matters to the argument. A substantial platform change did "
"not force us to start over with a new way of working. The architecture "
"defined the problem; the workflow still gave us a way to solve it."
msgstr "這就是 TH04 對這篇文章的意義。大幅的平臺變化，並沒有迫使我們重新發明一套工作方式。架構決定了問題，工作流程仍然提供瞭解決問題的方法。"

#: website/public/blog/touhou-reconstruction/index.html:717
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"For the 64-bit port, we can now examine the new implementation against "
"behavior already recovered on DOS. The knowledge from reconstruction gives "
"the port something to build on."
msgstr "做 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:722
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Project state as of 10 October 2026: {ph0}DOS reconstruction and manual "
"testing{ph1} · {ph2}64-bit port{ph3}. The port remains in development."
msgstr "截至 2026 年 10 月 10 日：{ph0}DOS 重建與手工測試{ph1} · {ph2}64 位移植{ph3}。移植仍在開發中。"

#: website/public/blog/touhou-reconstruction/index.html:735
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "From exact code to readable code"
msgstr "從精確還原到可讀原始碼"

#: website/public/blog/touhou-reconstruction/index.html:736
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Once a reconstruction works, I want someone else to be able to understand "
"it."
msgstr "重建版能執行之後，我還希望別人能讀懂它。"

#: website/public/blog/touhou-reconstruction/index.html:740
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"To me, assembly and raw offsets can feel like old friends. I realise this is"
" a slightly unusual definition of “readable.” Most people would prefer to "
"follow the game's logic without keeping the executable's memory layout in "
"their head."
msgstr ""
"對我而言，彙編和原始偏移就像老朋友。我知道，這種“可讀”的定義有點特別。多數人更希望直接看懂遊戲邏輯，而不用在腦中記住可執行檔案的記憶體佈局。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:746
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is where {ph0}semantic reconstruction{ph1} comes in. A recovered field "
"may still be known mainly by its offset. We follow how the game uses it "
"until we can explain its role. Then we can give it a meaningful name and a "
"type that fits the evidence. We keep the reasoning with the source so the "
"next person can see where that interpretation came from."
msgstr ""
"這就需要{ph0}語義重建{ph1}。一個還原欄位可能仍然只有偏移作為標識。我們追蹤遊戲如何使用它，直到能解釋其作用，再依據證據賦予合適的名稱和型別。推理過程和原始碼一起儲存，後來的人就能知道這個解釋從何而來。"

#: website/public/blog/touhou-reconstruction/index.html:754
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"This becomes especially important for a port. An absolute address tells me "
"where something lived in the old executable. It gives a 64-bit "
"implementation little help in deciding which object should own that state. "
"To move the behavior safely, we need to recover the relationship behind the "
"old memory access."
msgstr ""
"移植時，語義尤其重要。絕對地址能告訴我資料在舊程式中的位置，卻很難幫助 64 "
"位實現決定哪個物件應當持有這份狀態。要正確遷移行為，就得還原舊記憶體訪問背後的關係。"

#: website/public/blog/touhou-reconstruction/index.html:761
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:763
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Recover an exact baseline.{ph1} Compile the reconstructed pieces with "
"the historical compiler. Compare the relevant code and data with the "
"original executable. Record unresolved differences so the next phase has a "
"clear starting point."
msgstr ""
"{ph0}先建立精確還原的基線。{ph1}用當年的編譯器編譯重建程式碼，與原始可執行檔案對比相關程式碼和資料。記錄尚未解決的差異，讓下一階段有明確的起點。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:770
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Build and play it on the original platform.{ph1} Link those pieces into"
" the real program using the original architecture and compiler. Exercise "
"important gameplay paths. This is where we can find problems with shared "
"state or initialization that an isolated function comparison missed."
msgstr ""
"{ph0}在原平臺上構建，並實際遊玩。{ph1}用原架構和編譯器把各部分連結為真正的程式，走過重要的遊戲路徑。這能發現單函式對比漏掉的共享狀態或初始化問題。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:777
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Reconstruct the semantics against both references.{ph1} Take one "
"coherent part of the game at a time and establish what its recovered source "
"means. Improve its representation while preserving the exact comparisons and"
" the playable historical build."
msgstr ""
"{ph0}對照兩套基準做語義重建。{ph1}每次處理遊戲中一個完整、連貫的部分，明確還原原始碼的含義。改善程式碼表達，同時保留精確對比和可玩的原平臺構建。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:786
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Make the modern port.{ph1} Move the established behavior into the new "
"environment, such as a native 64-bit build. The reconstructed original-"
"platform game remains a reference for comparing how the port behaves."
msgstr "{ph0}再做現代平臺移植。{ph1}把已經確定的行為帶入新環境，例如原生 64 位構建。原平臺重建版繼續作為比較移植行為的參照。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/touhou-reconstruction/index.html:793
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The playable build from the second stage becomes a {ph0}second oracle{ph1} "
"during the third. The first oracle checks whether our changed source still "
"reproduces the relevant original code and data. The second checks that the "
"reconstructed program still builds and behaves correctly along the paths we "
"exercise."
msgstr ""
"第二階段的可玩構建，在第三階段成為{ph0}第二套驗證基準{ph1}。第一套檢查修改後的原始碼是否仍然復現原版相關程式碼和資料；第二套檢查重建程式是否能構建，並在實際測試的路徑上保持正確行為。"

#: website/public/blog/touhou-reconstruction/index.html:801
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"They catch different mistakes. A type change can alter the generated "
"instructions. An ownership change can leave two parts of the game using "
"different copies of state. Keeping both checks available gives the agent a "
"concrete failure to investigate before carrying a refactor further."
msgstr ""
"它們能發現不同型別的錯誤。型別修改可能改變生成的指令。狀態歸屬的修改，可能讓遊戲的兩部分各自使用一份狀態。保留兩套檢查，助手就能在繼續重構之前，針對具體的失敗展開調查。"

#: website/public/blog/touhou-reconstruction/index.html:808
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"A name needs evidence of its own. An exact comparison cannot tell us whether"
" a field really means “invulnerability time.” We have to establish that from"
" how the game writes and uses it. If the meaning remains uncertain, a "
"neutral name is more helpful to the next reader than a confident guess."
msgstr ""
"命名也需要自己的證據。精確對比不能證明某欄位一定是“無敵時間”。我們必須從遊戲如何寫入和使用它來確認。如果含義仍不明確，中性名稱比自信的猜測更有利於下一位讀者。"

#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-
#. factory/blob/717e1b8560783ed17a39fdf159d30aa16bb307a7/docs/semantic-
#. reconstruction.md" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:815
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"We learned this order through the projects. TH08 already had playable ports "
"before some of its later historical-platform audits. That made certain "
"defects harder to see. The {ph0}Factory's current workflow{ph1} puts the "
"original-platform build first, so semantic work can use it as a reference "
"before porting begins."
msgstr ""
"這個順序來自專案中的教訓。TH08 在後來的一些原平臺審計之前，就已經有了可玩的移植版，一些缺陷因此更難察覺。{ph0}Factory "
"目前的工作流程{ph1}把原平臺構建放在前面，讓語義重建先有參照，再開始移植。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:826
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Exact reconstruction gives us a reference. Semantic reconstruction "
"makes the recovered knowledge usable.{ph1} A port can then build on both."
msgstr "{ph0}精確重建提供基準，語義重建讓還原的知識可用。{ph1}移植隨後建立在兩者之上。"

#: website/public/blog/touhou-reconstruction/index.html:835
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "What makes this an industrial shift"
msgstr "為什麼這是工業化的轉變"

#: website/public/blog/touhou-reconstruction/index.html:836
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"These projects changed where I spent my attention. Once agents could carry "
"much of an investigation forward, improving their working environment became"
" one of the most useful things I could do. A better tool could help with "
"every later function that needed it."
msgstr ""
"這些專案改變了我投入注意力的地方。助手能自主推進大部分調查之後，改善它們的工作環境，就成了我最值得做的事情之一。一項工具的改進，可以幫助之後所有需要它的函式。"

#: website/public/blog/touhou-reconstruction/index.html:843
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Autonomy matters here. The useful next step often becomes clear only after a"
" failed experiment. An agent needs enough freedom to follow that result "
"somewhere unexpected. If it has to wait for me to prescribe each step, much "
"of the work remains tied to my attention."
msgstr ""
"自主性在這裡很重要。下一步該怎麼做，常常在實驗失敗後才清楚。助手需要足夠的自由，沿著結果探索意料之外的方向。如果每一步都要等我指定，大部分工作仍然綁在我的注意力上。"

#: website/public/blog/touhou-reconstruction/index.html:850
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I expect the agent to make wrong hypotheses. What matters is whether we can "
"test them and learn from the result. A failed check should help it "
"understand the mistake well enough to try again. I still have to decide "
"whether the accumulated evidence supports a project milestone."
msgstr ""
"我預期助手會提出錯誤假設。關鍵是我們能否驗證它們，並從結果中學習。失敗的檢查應該幫助它理解錯誤，再次嘗試。我仍要判斷：累積的證據是否足以支援某個專案里程碑。"

#: website/public/blog/touhou-reconstruction/index.html:857
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"REA gives the agent access to analysis tools. A question about a function's "
"caller can lead straight into inspecting that caller. The reconstruction "
"project supplies the compiler and its own reference checks. The agent can "
"use those to test the source it proposes and see where its explanation holds"
" up."
msgstr ""
"REA "
"讓助手能夠使用分析工具。調查某函式的呼叫方時，它可以直接繼續檢查那個呼叫方。重建專案提供編譯器和自己的對照檢查。助手用它們驗證提出的原始碼，看看解釋在哪些地方成立。"

#: website/public/blog/touhou-reconstruction/index.html:864
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The TH08 bug shows why those checks deserve engineering attention of their "
"own. When the same comparison is used across hundreds of functions, a gap in"
" it can spread much further than a mistake in one implementation. Testing "
"the checker improves the feedback available to all that later work."
msgstr ""
"TH08 的 bug "
"說明，檢查工具本身也值得認真工程化。相同的比較用於數百個函式時，一個漏洞的影響可能遠大於某個實現中的錯誤。測試檢查器，能改善所有後續工作得到的反饋。"

#. {ph0}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:871
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The industrial analogy has a useful historical example here. Boulton and "
"Watt introduced a {ph0}steam-engine indicator in 1796{ph1} to help adjust "
"engine valves. A recording version traced pressure through the piston "
"stroke. It made the engine's internal behavior available for inspection. Our"
" comparison tools serve a similar purpose: they let us examine what the "
"machinery is doing while we improve it."
msgstr ""
"工業史中有一個合適的例子：博爾頓和瓦特在{ph0}1796 "
"年引入蒸汽機示功器{ph1}，幫助調節閥門。記錄式示功器能繪出活塞行程中的壓力變化，讓人看到機器內部的執行情況。我們的比較工具也有類似作用：改進機器時，能看清它究竟做了什麼。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:884
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}We are in the early stages of this industrial shift.{ph1} Much of the "
"infrastructure is still immature. Agents can move faster than our checks "
"were designed to support, so the process has to develop alongside them. When"
" we find a defect in a shared tool, we have to repair it and revisit the "
"results it affected. The next project can then inherit a stronger tool."
msgstr ""
"{ph0}我們正處於這場工業化轉變的早期。{ph1}許多基礎設施還不成熟。助手推進工作的速度，可能超過原有檢查的承受能力，所以流程也要一起發展。共享工具出現缺陷時，要修好它，並重查受影響的結果。下一個專案才能繼承更可靠的工具。"

#: website/public/blog/touhou-reconstruction/index.html:894
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"There is also a practical limit to any one conversation. It will end before "
"a large reconstruction is finished. The repository has to make it possible "
"for another session to continue without losing the reason for the last "
"decision."
msgstr "任何一段對話都有實際的長度限制。大型重建完成之前，對話就會結束。程式碼儲存庫必須讓下一次會話能繼續工作，而不丟失上一次決定背後的理由。"

#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-factory"
#. >
#. {ph1}: </a >
#: website/public/blog/touhou-reconstruction/index.html:900
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The {ph0}Touhou Reconstruction Factory{ph1} grew out of that need. It gives "
"projects a shared way to carry their checks and lessons forward. Work on one"
" game can improve the starting conditions for another."
msgstr ""
"{ph0}Touhou Reconstruction "
"Factory{ph1}正是為此而建立。它提供一種共用方式，讓專案把檢查和經驗傳遞下去。一個遊戲的工作，可以改善另一個遊戲的起點。"

#: website/public/blog/touhou-reconstruction/index.html:910
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That is what makes the industrial analogy meaningful to me. Experience "
"starts becoming part of tools that others can use. Improving those tools "
"changes how much the next person—or the next agent—can get done."
msgstr "這就是工業化比喻對我的意義：經驗開始進入別人也能使用的工具。改善工具，就能改變下一個人或下一個助手能完成多少工作。"

#: website/public/blog/touhou-reconstruction/index.html:918
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "The projects we can now consider"
msgstr "現在值得嘗試的專案"

#: website/public/blog/touhou-reconstruction/index.html:919
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The pace matters because it changes the decision to begin. A game could be "
"fascinating to reverse engineer and still demand more of my own attention "
"than I could realistically give it. Many projects would stay ideas."
msgstr "速度的意義在於，它改變了是否開始一個專案的決定。某個遊戲也許很值得逆向，卻需要我投入遠超現實所能承受的精力。很多專案因此一直停留在想法裡。"

#: website/public/blog/touhou-reconstruction/index.html:925
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"Now I can see a way to keep such a project moving through repeated "
"investigations. Getting a working reconstruction makes a port more "
"practical. Recovering readable semantics makes it easier for someone else to"
" explore a mod. The effort put into understanding the game can keep paying "
"off after the first version runs."
msgstr ""
"現在，我看到了透過一次次調查持續推進它們的可能。得到能執行的重建版，讓移植更可行；還原可讀的語義，讓別人更容易探索 "
"mod。理解遊戲的投入，可以在第一版執行之後繼續帶來回報。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/touhou-reconstruction/index.html:932
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"I now look at an unfamiliar program and ask: {ph0}what access, feedback and "
"accumulated knowledge would let an agent work on this reliably?{ph1}"
msgstr "現在看到一個陌生程式，我會問：{ph0}怎樣的工具訪問、反饋和知識積累，能讓助手可靠地推進這個專案？{ph1}"

#: website/public/blog/touhou-reconstruction/index.html:939
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"That question makes me consider projects I would previously have left alone."
" Each one can improve the way we approach the next. I want to keep exploring"
" how far that can take us."
msgstr "這個問題讓我考慮以前會放棄的專案。每個專案都能改善下一個專案的工作方式。我想繼續探索，這能帶我們走多遠。"

#: website/public/blog/touhou-reconstruction/index.html:947
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Project milestones and sources"
msgstr "專案里程碑與來源"

#: website/public/blog/touhou-reconstruction/index.html:948
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"The dates describe recorded project checkpoints, checked against public "
"GitHub history on 10 October 2026. Elapsed time is calendar time between "
"commits. Source presence, exact comparisons, a build and a runtime result "
"each name a different milestone."
msgstr ""
"這些日期是已記錄的專案檢查點，於 2026 年 10 月 10 日對照公開 GitHub "
"歷史核實。耗時是提交之間經過的日曆時間。“有原始碼”“透過精確對比”“完成構建”和“得到執行結果”是不同的里程碑。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/001bf3e9c91cc35b79c7a0e36b3565b86f494362"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/15caba73df6735fc44eac4783bc61b8d098ea830/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/da07b21c8cb63230142b0a66228d6aac66555f3f"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/529eb1a3afa05ae36467731eaccb12e3e50e132f"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th08/releases/tag/v0.2.0-linux-64bit" >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:956
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08:{ph1} {ph2}13 August continuation{ph3}, {ph4}19 August source "
"ledger{ph5}, {ph6}24 August Linux port{ph7}, {ph8}26 August Web "
"edition{ph9}, and {ph10}30 August 64-bit Linux release{ph11}."
msgstr ""
"{ph0}TH08：{ph1}{ph2}8 月 13 日開始續作{ph3}、{ph4}8 月 19 日原始碼臺賬{ph5}、{ph6}8 月 24 日 "
"Linux 移植{ph7}、{ph8}8 月 26 日 Web 版{ph9}、{ph10}8 月 30 日 64 位 Linux 釋出{ph11}。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/8c31e6f892d945423b7f7b439747a2bd915f82d8/docs/PROGRESS.md"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/0fa857fb2b2ec6237732e4d6be8d0a28069c9330/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/74baddfccb712d1311a4d6e7487a63cd1100452e/docs/PROGRESS.md"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/33d46a0ee48f37060d973125a1a7632a40f8d998"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th095/blob/3442dcf29d9e0b5bef384a49bd0c9ad32a711826/docs/WHOLE_BUILD_TODO.md"
#. >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html:979
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH095:{ph1} {ph2}29 August initial ledger{ph3}, {ph4}7 September source"
" ledger{ph5}, {ph6}8 September comparisons{ph7}, {ph8}9 September "
"linkage{ph9}, and {ph10}10 September playable-build record{ph11}."
msgstr ""
"{ph0}TH095：{ph1}{ph2}8 月 29 日初始臺賬{ph3}、{ph4}9 月 7 日原始碼臺賬{ph5}、{ph6}9 月 8 "
"日對比結果{ph7}、{ph8}9 月 9 日連結{ph9}、{ph10}9 月 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:1002
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH04:{ph1} {ph2}10 October handoff{ph3} records the working DOS "
"reconstruction, the maintainer's complete Normal-route testing and the "
"current 64-bit phase."
msgstr ""
"{ph0}TH04：{ph1}{ph2}10 月 10 日交接記錄{ph3}包含可執行的 DOS 重建版、維護者完成的 Normal "
"路線測試，以及當前的 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:1011
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}TH08 oracle correction:{ph1} {ph2}the reported auto-collection "
"bug{ph3}, {ph4}the source and comparison fix{ph5}, and {ph6}the full "
"floating-literal audit{ph7}."
msgstr ""
"{ph0}TH08 驗證基準修正：{ph1}{ph2}道具自動收集 bug "
"報告{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:1025
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Semantic reconstruction:{ph1} {ph2}TH08's readability playbook{ph3} and"
" {ph4}the Factory's phase order and two validation paths{ph5}."
msgstr "{ph0}語義重建：{ph1}{ph2}TH08 可讀性指南{ph3}和{ph4}Factory 的階段順序及兩條驗證路徑{ph5}。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
#. steam-engine-indicator" >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html:1037
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Industrial history:{ph1} {ph2}the Science Museum Group's steam-engine "
"indicator record{ph3} describes the 1796 introduction and the pressure-"
"recording mechanism."
msgstr "{ph0}工業史：{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:1046
#, python-brace-format
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid ""
"{ph0}Method:{ph1} the Factory's {ph2}agent autonomy{ph3} and {ph4}cross-game"
" knowledge{ph5} documents retain the working principles and lessons."
msgstr "{ph0}方法：{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:1061
#, 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 回顧從手工逆向到程式設計助手參與的東方遊戲重建，以及經驗如何在 TH08、TH095 和 PC-98 TH04 之間積累。"

#: website/public/blog/touhou-reconstruction/index.html:355
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Experience carried between projects"
msgstr "在專案之間傳遞經驗"

#: website/public/blog/touhou-reconstruction/index.html:369
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/blog/touhou-reconstruction/index.html:384
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Touhou reconstruction essay"
msgstr "東方遊戲重建隨筆"

#: website/public/blog/touhou-reconstruction/index.html:1086
msgctxt "page:blog/touhou-reconstruction/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/examples/dino-lab/index.html:108
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:200
#, 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:203
msgctxt "page:examples/dino-lab/index.html"
msgid "Inspect → rebuild → change"
msgstr "檢查→重建→更改"

#: website/public/examples/dino-lab/index.html:204
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:205
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"To recreate the game’s acceleration, first find the rule that controls its "
"speed. {ph0}REA returned the running script;{ph1} we used its rule to build "
"this mini-game with {ph2}adjustable speed.{ph3}"
msgstr ""
"要重新建立遊戲的加速，首先找到控制其速度的規則。 {ph0} REA返回執行指令碼;{ph1} 我們用它的規則來構建這個迷你遊戲。 "
"{ph2}速度可調。{ph3}"

#: website/public/examples/dino-lab/index.html:214
#: website/public/examples/dino-lab/index.html:213
msgctxt "page:examples/dino-lab/index.html"
msgid "On this page"
msgstr "在本頁"

#. {ph0}: <a href="#play">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:216
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Play and change the speed{ph1}"
msgstr "{ph0}播放和改變速度{ph1}"

#. {ph0}: <a href="#rule">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:217
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Read the recovered rule{ph1}"
msgstr "{ph0}讀取恢復的規則{ph1}"

#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/examples/dino-lab/index.html:218
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}檢查重建{ph1}"

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

#: website/public/examples/dino-lab/index.html:224
msgctxt "page:examples/dino-lab/index.html"
msgid "Play and change the speed"
msgstr "播放和改變速度"

#: website/public/examples/dino-lab/index.html:225
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Press Play, then jump over the cactus. Move the speed slider to try a slower"
" or faster game; it switches to a fixed speed. Select the recovered rule to "
"start at 6 and gradually accelerate again."
msgstr "按播放，然後跳過仙人掌。 移動速度滑塊嘗試更慢或更快的遊戲;它切換到固定的速度。 選擇恢復的規則從6開始，然後再次逐漸加速。"

#: website/public/examples/dino-lab/index.html:231
msgctxt "page:examples/dino-lab/index.html"
msgid "Play the reconstruction"
msgstr "試玩重建版"

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

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

#: website/public/examples/dino-lab/index.html:267
msgctxt "page:examples/dino-lab/index.html"
msgid "Restart"
msgstr "重新開始"

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

#: website/public/examples/dino-lab/index.html:280
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the recovered acceleration rule"
msgstr "使用恢復的加速規則"

#: website/public/examples/dino-lab/index.html:284
msgctxt "page:examples/dino-lab/index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "原始規則：從6開始，然後向13增加。"

#: website/public/examples/dino-lab/index.html:287
msgctxt "page:examples/dino-lab/index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr "移動滑塊來設定自己的速度。 空間或跳躍清除仙人掌。"

#: website/public/examples/dino-lab/index.html:292
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Enable JavaScript to play the reconstruction. The code and explanation above"
" remain readable."
msgstr "啟用JavaScript播放重建。 上面的程式碼和解釋仍然是可讀的。"

#: website/public/examples/dino-lab/index.html:300
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:301
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We inspected {ph0}wayou’s Chromium-derived browser edition{ph1} with REA. It"
" returned the loaded {ph2}, including this branch in the game’s update "
"function:"
msgstr ""
"我們檢查過 {ph0}wayou的Chromium派生瀏覽器版{ph1} 與REA。 它返回載入 {ph2}，將此分支包含在遊戲的更新功能中:"

#. {ph0}: <code>SPEED: 6</code>
#. {ph1}: <code>ACCELERATION: 0.001</code>
#. {ph2}: <code>MAX_SPEED: 13</code>
#: website/public/examples/dino-lab/index.html:317
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The settings are {ph0}, {ph1} and {ph2}. The game runs this branch on an "
"update without a collision."
msgstr "設定是 {ph0}, {ph1} 和 {ph2}. 遊戲在沒有碰撞的更新上執行此分支。"

#: website/public/examples/dino-lab/index.html:322
msgctxt "page:examples/dino-lab/index.html"
msgid "Use the same rule in the new game"
msgstr "在新遊戲中使用相同的規則"

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

#: website/public/examples/dino-lab/index.html:341
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"The mini-game uses this function for automatic acceleration. Moving the "
"slider supplies a fixed speed instead. Drawing, jump physics and rectangle "
"collision checks are new code for this teaching game; its simulation "
"advances at 60 updates per second."
msgstr ""
"迷你遊戲使用此功能進行自動加速。 移動滑塊提供了一個固定的速度代替. "
"繪圖，跳躍物理和矩形碰撞檢查是這個教學遊戲的新程式碼;它的模擬以每秒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:347
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}Download the speed rule{ph1} · {ph2}Read the game code{ph3}"
msgstr "{ph0}下載速度規則{ph1} · {ph2}閱讀遊戲程式碼{ph3}"

#: website/public/examples/dino-lab/index.html:355
msgctxt "page:examples/dino-lab/index.html"
msgid "Check the reconstruction"
msgstr "檢查重建"

#: website/public/examples/dino-lab/index.html:356
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"We called the original game’s update function with obstacles and automatic "
"scheduling disabled. Compare those recorded speeds with a replay of the "
"recovered rule."
msgstr "我們稱原來的遊戲的更新功能與障礙和自動排程禁用。 將這些記錄的速度與恢復規則的重播進行比較。"

#: website/public/examples/dino-lab/index.html:365
msgctxt "page:examples/dino-lab/index.html"
msgid "Updates"
msgstr "更新資料"

#: website/public/examples/dino-lab/index.html:366
msgctxt "page:examples/dino-lab/index.html"
msgid "Original game"
msgstr "原創遊戲"

#: website/public/examples/dino-lab/index.html:367
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstructed rule"
msgstr "重建規則"

#: website/public/examples/dino-lab/index.html:394
msgctxt "page:examples/dino-lab/index.html"
msgid "Run the speed check"
msgstr "執行速度檢查"

#: website/public/examples/dino-lab/index.html:397
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Values rounded to three decimals. The branch checks before adding, so the "
"final increment can take speed just above 13."
msgstr "四捨五入為三位小數的值。 分支在新增之前進行檢查，因此最終增量可以採用略高於13的速度。"

#: website/public/examples/dino-lab/index.html:403
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:405
#, 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:409
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Follow the {ph0}browser connection steps{ph1}, using {ph2} as the page URL."
msgstr "跟隨 {ph0}瀏覽器連線步驟{ph1}，使用 {ph2} 作為頁面URL。"

#: website/public/examples/dino-lab/index.html:416
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Give your agent the page URL and local debugging endpoint, then copy this "
"prompt."
msgstr "為你的程式設計助手提供頁面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:423
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="lab-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/examples/dino-lab/index.html:436
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}使用REA檢查這個恐龍游戲。 為什麼它變得更快？ "
"顯示速度規則，然後構建一個可調節速度的小版本。{ph3}{ph4}{ph5}"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/examples/dino-lab/index.html:445
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Ask a follow-up: {ph0}“Where is jump height calculated? Add a jump-height "
"control to the new version.”{ph1}"
msgstr "要求跟進: {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:452
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Source: {ph0}inspected speed code{ph1}, Chromium Authors. {ph2}Copyright and"
" BSD license{ph3}. REA 4.1.0 inspected the running HTTP edition in Chrome "
"150."
msgstr ""
"資料來源: {ph0}檢查速度程式碼{ph1}，Chromium作者。 {ph2}版權及BSD許可證{ph3}.  "
"REA4.1.0檢查了Chrome150中執行的HTTP版本。"

#: 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:222
msgctxt "page:examples/dino-lab/index.html"
msgid "Dinosaur speed reconstruction"
msgstr "恐龍速度重建"

#: website/public/examples/dino-lab/index.html:253
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr "恐龍迷你遊戲。 使用跳躍按鈕或按空格鍵，而遊戲是重點。"

#: website/public/examples/dino-lab/index.html:328
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy reconstructed speed rule"
msgstr "複製重建速度規則"

#: website/public/examples/dino-lab/index.html:427
msgctxt "page:examples/dino-lab/index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "複製恐龍分析提示"

#: website/public/examples/dino-lab/index.html:481
msgctxt "page:examples/dino-lab/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/faq/index.html:107
msgctxt "page:faq/index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

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

#: website/public/faq/index.html:200
msgctxt "page:faq/index.html"
msgid "REA FAQ."
msgstr "REA 常見問題。"

#: website/public/faq/index.html:201
msgctxt "page:faq/index.html"
msgid "Setup, updates, analysis and troubleshooting."
msgstr "安裝、更新、分析和故障排查。"

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

#. {ph0}: <a href="#setup">
#. {ph1}: </a>
#: website/public/faq/index.html:207
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Setup and updates{ph1}"
msgstr "{ph0}安裝與更新{ph1}"

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

#. {ph0}: <a href="#troubleshooting">
#. {ph1}: </a>
#: website/public/faq/index.html:209
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Troubleshooting{ph1}"
msgstr "{ph0}故障排除{ph1}"

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

#: website/public/faq/index.html:219
msgctxt "page:faq/index.html"
msgid "Setup and updates"
msgstr "安裝與更新"

#: website/public/faq/index.html:222
msgctxt "page:faq/index.html"
msgid "How do I install REA?"
msgstr "如何安裝 REA？"

#: website/public/faq/index.html:230
msgctxt "page:faq/index.html"
msgid "Terminal · agent setup"
msgstr "終端 · 配置程式設計助手"

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

# Reviewed for readable setup and analysis terminology.
#. {ph0}: <a href="../get-started/">
#. {ph1}: </a>
#: website/public/faq/index.html:242
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Setup registers REA's MCP connection and installs the matching investigation"
" skill. Restart your agent when it finishes, then give it a target path and "
"a question. {ph0}Follow the setup guide{ph1} for prerequisites and your "
"first analysis."
msgstr ""
"setup 會註冊 REA 的 MCP "
"連線，並安裝配套的調查技能。完成後重啟助手，再提供目標路徑和問題。{ph0}檢視安裝指南{ph1}，瞭解前置條件和第一次分析的步驟。"

#: website/public/faq/index.html:251
msgctxt "page:faq/index.html"
msgid "Which coding agents can use REA?"
msgstr "哪些程式設計助手能使用 REA？"

#: website/public/faq/index.html:252
msgctxt "page:faq/index.html"
msgid ""
"Any agent that supports local MCP servers. Setup includes Claude Code, "
"Claude Desktop, Codex, Cursor, Gemini CLI, Windsurf, Devin, OpenCode, "
"Antigravity, GitHub Copilot CLI, Command Code, Grok Build, OMP, and VS Code."
" Grok Bot's connector is added from its chat."
msgstr ""
"支援本地 MCP 伺服器的助手都可以。setup 提供 Claude Code、Claude Desktop、Codex、Cursor、Gemini "
"CLI、Windsurf、Devin、OpenCode、Antigravity、GitHub Copilot CLI、Command Code、Grok"
" Build、OMP 和 VS Code 的配置。Grok Bot 的聯結器從聊天中新增。"

#. {ph0}: <a href="../get-started/#agent">
#. {ph1}: </a>
#: website/public/faq/index.html:259
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}Connect your coding agent{ph1}."
msgstr "{ph0}連線程式設計助手{ph1}。"

#: website/public/faq/index.html:264
msgctxt "page:faq/index.html"
msgid "How do I update REA?"
msgstr "如何更新 REA？"

#: website/public/faq/index.html:265
msgctxt "page:faq/index.html"
msgid ""
"REA releases frequently, including bug fixes. If you installed the CLI with "
"npm:"
msgstr "REA 更新很頻繁，也會持續修復 bug。如果你透過 npm 安裝了 CLI："

#: website/public/faq/index.html:271
msgctxt "page:faq/index.html"
msgid "Terminal · installed CLI"
msgstr "終端 · 已安裝的 CLI"

#. {ph0}: <code>npx</code>
#: website/public/faq/index.html:283
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Follow the setup refresh command printed by the update. If you set up your "
"agent through {ph0}, run:"
msgstr "更新後，按照輸出中的命令重新整理配置。如果之前透過 {ph0} 配置助手，執行："

#: website/public/faq/index.html:289
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:301
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review the changes and restart your agent. Its REA connection pins a package"
" version, so refreshing setup makes it use the new release. For one-off CLI "
"commands, use {ph0} followed by the command."
msgstr ""
"檢查變更後，重啟程式設計助手。REA 的連線配置指定了包版本，重新執行 setup 才會讓助手使用新版本。臨時執行 CLI 命令時，在 {ph0} "
"後面接具體命令即可。"

#: website/public/faq/index.html:309
msgctxt "page:faq/index.html"
msgid "Is installing the skill from skills.sh enough?"
msgstr "只從 skills.sh 安裝技能就夠了嗎？"

#. {ph0}: <a href="#install">
#. {ph1}: </a>
#: website/public/faq/index.html:312
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"The skill gives your agent investigation instructions. Run {ph0}REA "
"setup{ph1} to connect the MCP server and install the matching skill, then "
"restart your agent so it can call the tools."
msgstr ""
"技能告訴助手如何開展調查。還需要執行 {ph0}REA setup{ph1}，連線 MCP 伺服器並安裝配套技能。隨後重啟助手，它才能呼叫工具。"

#: website/public/faq/index.html:323
msgctxt "page:faq/index.html"
msgid "Analysis"
msgstr "分析"

#: website/public/faq/index.html:326
msgctxt "page:faq/index.html"
msgid "What can I analyze with REA?"
msgstr "REA 可以分析什麼？"

#: website/public/faq/index.html:327
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:329
#, 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:334
#, 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:339
#, 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:344
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA also has workflows for managed assemblies, Android APKs, firmware and "
"packaged resources. {ph0}See the case studies{ph1} for worked "
"investigations."
msgstr "REA 也提供託管程式集、Android APK、韌體和打包資源的分析流程。{ph0}檢視案例{ph1}，瞭解完整的調查過程。"

#: website/public/faq/index.html:352
msgctxt "page:faq/index.html"
msgid "Do I need Hopper, Ghidra or IDA?"
msgstr "需要 Hopper、Ghidra 或 IDA 嗎？"

#: website/public/faq/index.html:353
msgctxt "page:faq/index.html"
msgid ""
"Deep native analysis uses one of them. Static JavaScript and .NET inspection"
" work with the supplied files and do not need a native analysis engine."
msgstr "深度原生分析需要其中一個工具。靜態 JavaScript 和 .NET 檢查直接使用提供的檔案，不需要原生分析引擎。"

#. {ph0}: <a href="../get-started/#native">
#. {ph1}: </a>
#: website/public/faq/index.html:358
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Connect your existing Ghidra or IDA installation, or let setup detect Hopper"
" and propose an installation. Your host and target determine which provider "
"can be used. {ph0}Set up native analysis{ph1}."
msgstr ""
"連線已有的 Ghidra 或 IDA 安裝，或讓 setup 檢測 Hopper "
"並提出安裝計劃。可用的分析後端取決於你的系統和分析目標。{ph0}配置原生分析{ph1}。"

#: website/public/faq/index.html:366
msgctxt "page:faq/index.html"
msgid "Can I use REA without a coding agent?"
msgstr "不用程式設計助手，也能用 REA 嗎？"

#: website/public/faq/index.html:367
msgctxt "page:faq/index.html"
msgid ""
"Yes. The CLI uses the same analysis workflows. For a local JavaScript or "
"Electron app:"
msgstr "可以。CLI 使用同一套分析流程。對於本地 JavaScript 或 Electron 應用："

#: website/public/faq/index.html:373
msgctxt "page:faq/index.html"
msgid "Terminal · static application analysis"
msgstr "終端 · 靜態應用分析"

#. {ph0}: <a href="../get-started/#terminal">
#. {ph1}: </a>
#: website/public/faq/index.html:386
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with an extracted application folder or ASAR file. {ph0}Use"
" the CLI{ph1} for installation options."
msgstr "把路徑換成解包後的應用目錄或 ASAR 檔案。{ph0}檢視 CLI 的安裝方式{ph1}。"

# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:393
msgctxt "page:faq/index.html"
msgid "What code does REA return?"
msgstr "REA 會返回什麼程式碼？"

# Reviewed for readable setup and analysis terminology.
#: website/public/faq/index.html:394
msgctxt "page:faq/index.html"
msgid ""
"Native analysis returns assembly and pseudocode, with calls, references and "
"relevant constants. JavaScript analysis returns modules, their relationships"
" and source locations."
msgstr "原生程式分析返回彙編、虛擬碼、函式呼叫、引用和相關常量。JavaScript 分析返回模組、模組之間的關係，以及原始碼位置。"

#. {ph0}: <a href="../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#. {ph2}: <a href="../showcase/ctf/">
#. {ph3}: </a>
#: website/public/faq/index.html:399
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Your agent uses these findings to explain the behavior or write and test an "
"implementation. The {ph0}DX-Ball calculation{ph1} and {ph2}CTF flag "
"checker{ph3} show how that process works."
msgstr ""
"助手根據這些結果解釋行為，或編寫實現並測試。{ph0}DX-Ball 計算規則{ph1}和{ph2}CTF flag 檢查器{ph3}展示了這個過程。"

#: website/public/faq/index.html:410
msgctxt "page:faq/index.html"
msgid "What should I ask my agent?"
msgstr "應該向助手提什麼問題？"

#: website/public/faq/index.html:411
msgctxt "page:faq/index.html"
msgid ""
"Give it a local target and one behavior to investigate. For a JavaScript or "
"Electron app:"
msgstr "提供一個本地目標，以及一個想調查的行為。比如 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:417
#, python-brace-format
msgctxt "page:faq/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#. {ph0}: <a href="../guides/">
#. {ph1}: </a>
#: website/public/faq/index.html:440
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace the path with your target. The {ph0}guides{ph1} provide prompts for "
"native, Electron and browser examples."
msgstr "把路徑換成自己的目標。{ph0}指南{ph1}提供了原生、Electron 和瀏覽器示例的 prompt。"

#: website/public/faq/index.html:450
msgctxt "page:faq/index.html"
msgid "Troubleshooting"
msgstr "故障排除"

#: website/public/faq/index.html:453
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:454
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Restart or reconnect your agent after setup. Check its REA registration with"
" {ph0}; for Codex:"
msgstr "安裝後重啟或重新連線助手。用 {ph0} 檢查 REA 註冊情況。以 Codex 為例："

#: website/public/faq/index.html:460
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:472
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Replace {ph0} with your client ID, such as {ph1} or {ph2}. If the report "
"shows a missing or stale registration, run setup for that client:"
msgstr "把 {ph0} 換成客戶端 ID，例如 {ph1} 或 {ph2}。如果報告顯示註冊缺失或過期，為這個客戶端執行 setup："

#: website/public/faq/index.html:480
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:492
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Review its plan and restart the client. If registration is healthy but tools"
" remain absent, check the client's MCP connection error. {ph0}More setup "
"diagnostics{ph1}."
msgstr "確認計劃後重啟客戶端。如果註冊正常但工具仍未出現，檢查客戶端的 MCP 連線錯誤。{ph0}檢視更多配置診斷{ph1}。"

#: website/public/faq/index.html:500
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:501
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"REA starts Hopper when an operation needs it. On macOS, complete the first-"
"run choice of demo mode or license activation before unattended analysis. "
"{ph0}See native provider setup{ph1}."
msgstr ""
"REA 會在操作需要時啟動 Hopper。在 macOS "
"上，首次使用時先完成演示模式或許可證啟用的選擇，再進行無人值守分析。{ph0}檢視原生分析配置{ph1}。"

#: website/public/faq/index.html:510
msgctxt "page:faq/index.html"
msgid "What should I do if I hit a bug?"
msgstr "遇到 bug 怎麼辦？"

#. {ph0}: <a href="#update">
#. {ph1}: </a>
#: website/public/faq/index.html:511
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}Update REA{ph1}, restart your agent and retry the same task. A recent "
"release may already fix the problem."
msgstr "先{ph0}更新 REA{ph1}，重啟助手，再試一次相同任務。新版本可能已經修復這個問題。"

#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/faq/index.html:515
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"If it persists, {ph0}open an issue{ph1} with your REA version, operating "
"system, target type, steps to reproduce and error output. Include the "
"provider name when the problem involves native analysis."
msgstr ""
"如果問題仍然存在，{ph0}提交 issue{ph1}，附上 REA 版本、作業系統、目標型別、復現步驟和錯誤輸出。涉及原生分析時，也寫明分析後端。"

#: website/public/faq/index.html:529
msgctxt "page:faq/index.html"
msgid "Data and sharing"
msgstr "資料與分享"

#: website/public/faq/index.html:532
msgctxt "page:faq/index.html"
msgid "Does REA upload my app?"
msgstr "REA 會上傳我的應用嗎？"

#: website/public/faq/index.html:533
msgctxt "page:faq/index.html"
msgid ""
"REA analyzes targets on your machine. Your agent receives the results, and "
"its model provider's data policy applies to those results."
msgstr "REA 在你的機器上分析目標。助手會收到分析結果，這些結果受其模型服務商的資料政策約束。"

#: website/public/faq/index.html:540
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:541
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Have a useful REA example? We'd love to see it. Share the target, your "
"question, the findings and how you checked them in an {ph0}issue{ph1} or "
"{ph2}pull request{ph3}. Short code excerpts and figures help others follow "
"the investigation."
msgstr ""
"做出了有用的 REA 案例？我們很想看看！透過 {ph0}issue{ph1} 或 {ph2}PR{ph3} "
"分享目標、問題、結果，以及如何驗證。簡短的程式碼片段和圖示，能幫助大家理解調查過程。"

#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/faq/index.html:553
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"Bug reports, feature requests, documentation and code improvements are "
"welcome too. You can also discuss an example in the {ph0}community{ph1}."
msgstr "也歡迎反饋 bug、提出需求、改進文件和程式碼。你還可以在{ph0}社群{ph1}裡討論自己的案例。"

#: website/public/faq/index.html:6
msgctxt "page:faq/index.html"
msgid "REA FAQ: Setup, Updates and Troubleshooting"
msgstr "REA FAQ：安裝、更新與故障排查"

#: 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:204
msgctxt "page:faq/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/faq/index.html:213
msgctxt "page:faq/index.html"
msgid "Frequently asked questions about REA"
msgstr "REA 常見問題"

#: website/public/faq/index.html:231
msgctxt "page:faq/index.html"
msgid "Copy REA setup command"
msgstr "複製REA設定命令"

#: website/public/faq/index.html:272
msgctxt "page:faq/index.html"
msgid "Copy REA update command"
msgstr "複製REA更新命令"

#: website/public/faq/index.html:290
msgctxt "page:faq/index.html"
msgid "Copy agent setup refresh command"
msgstr "複製程式設計助手設定重新整理命令"

#: website/public/faq/index.html:374
msgctxt "page:faq/index.html"
msgid "Copy REA CLI analysis command"
msgstr "複製REA CLI分析命令"

#: website/public/faq/index.html:421
msgctxt "page:faq/index.html"
msgid "Copy example analysis prompt"
msgstr "複製示例分析提示"

#: website/public/faq/index.html:461
msgctxt "page:faq/index.html"
msgid "Copy client diagnosis command"
msgstr "複製客戶端診斷命令"

#: website/public/faq/index.html:481
msgctxt "page:faq/index.html"
msgid "Copy scoped setup command"
msgstr "複製作用域設定命令"

#: website/public/faq/index.html:579
msgctxt "page:faq/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/first-investigation/index.html:107
msgctxt "page:first-investigation/index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:199
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Home{ph1} / Your first investigation"
msgstr "{ph0}首頁{ph1} / 第一次調查"

#. {ph0}: <br />
#: website/public/first-investigation/index.html:202
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Find out where{ph0}exported notes go."
msgstr "弄清楚{ph0}匯出的筆記寫到哪裡。"

#: website/public/first-investigation/index.html:203
msgctxt "page:first-investigation/index.html"
msgid ""
"Use REA to inspect a small app, follow its Export notes button and check one"
" detail yourself."
msgstr "用 REA 檢查一個小應用，追蹤 Export notes 按鈕，再親自驗證一個細節。"

#: website/public/first-investigation/index.html:214
msgctxt "page:first-investigation/index.html"
msgid "In this exercise"
msgstr "在這個練習中"

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

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:217
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}2. Ask about export{ph1}"
msgstr "{ph0}2. 詢問匯出過程{ph1}"

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

#. {ph0}: <a href="#check">
#. {ph1}: </a>
#: website/public/first-investigation/index.html:219
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}4. Check a prediction{ph1}"
msgstr "{ph0}4. 檢查預測{ph1}"

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

#: website/public/first-investigation/index.html:225
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:234
#: website/public/first-investigation/index.html:284
#: website/public/first-investigation/index.html:406
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

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

#: website/public/first-investigation/index.html:258
msgctxt "page:first-investigation/index.html"
msgid "Or run this command in your terminal:"
msgstr "或者在終端中執行此命令:"

#: website/public/first-investigation/index.html:270
msgctxt "page:first-investigation/index.html"
msgid ""
"Review the plan, approve the setup, then restart your agent. Already "
"connected? Continue below."
msgstr "檢視計劃，確認配置後重啟助手。如果已經連線，直接繼續。"

#: website/public/first-investigation/index.html:276
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:277
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The example is a six-file Electron app with an {ph0}Export notes{ph1} "
"button. Your agent can inspect its code without installing or launching "
"Electron."
msgstr ""
"示例是一個包含六個檔案的 Electron 應用，帶有{ph0}Export notes（匯出筆記）{ph1}按鈕。助手無需安裝或啟動 Electron"
" 就能檢查程式碼。"

#: website/public/first-investigation/index.html:312
msgctxt "page:first-investigation/index.html"
msgid ""
"Your agent downloads the files and gives the unpacked folder to REA for "
"inspection."
msgstr "助手會下載並解壓檔案，再把目錄交給 REA 檢查。"

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

#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:324
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"If your agent can’t download files, unzip this archive yourself. Give it the"
" path to the {ph0} folder and the same export question."
msgstr "如果助手不能下載檔案，你也可以手動解壓。把 {ph0} 資料夾的路徑交給它，再問同一個匯出問題。"

#: website/public/first-investigation/index.html:331
msgctxt "page:first-investigation/index.html"
msgid "3. Follow the answer back to the code"
msgstr "3. 從回答追蹤到程式碼"

#: website/public/first-investigation/index.html:332
msgctxt "page:first-investigation/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr "尋找帶檔案和行號的簡短解釋："

#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/first-investigation/index.html:334
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The button sends a {ph0} message. The main process formats the notes as CSV "
"and writes {ph1} in the user’s Downloads folder. The columns are {ph2} and "
"{ph3}."
msgstr "按鈕傳送 {ph0} 訊息。主程序把筆記轉換為 CSV，並將 {ph1} 寫到使用者的下載資料夾。列名為 {ph2} 和 {ph3}。"

#: website/public/first-investigation/index.html:342
msgctxt "page:first-investigation/index.html"
msgid "From the button to the file writer"
msgstr "從按鈕到檔案寫入"

#: website/public/first-investigation/index.html:371
msgctxt "page:first-investigation/index.html"
msgid ""
"REA’s static analysis pairs the message with its handler. The destination is"
" read from code."
msgstr "REA 的靜態分析把訊息和處理函式關聯起來。匯出位置是從程式碼中讀到的。"

#: website/public/first-investigation/index.html:387
msgctxt "page:first-investigation/index.html"
msgid ""
"The file path, formatter and write call are together in this handler. Ask "
"your agent to show these lines if its answer leaves them out."
msgstr "檔案路徑、格式化函式和寫入呼叫都在這個處理函式中。如果回答沒有展示這些行，可以讓助手補上。"

#. {ph0}: <a href="../guides/javascript/#follow" >
#. {ph1}: </a >
#: website/public/first-investigation/index.html:392
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}See the full code trace and recorded REA result{ph1}."
msgstr "{ph0}檢視完整的程式碼追蹤和記錄的 REA 結果{ph1}。"

#: website/public/first-investigation/index.html:399
msgctxt "page:first-investigation/index.html"
msgid "4. Check a prediction"
msgstr "4. 檢查預測"

#: website/public/first-investigation/index.html:400
msgctxt "page:first-investigation/index.html"
msgid ""
"A comma separates CSV columns. What happens when a note title itself "
"contains a comma or quotation marks?"
msgstr "CSV 用逗號分隔各列。如果筆記標題本身包含逗號或引號，會發生什麼？"

#: website/public/first-investigation/index.html:444
msgctxt "page:first-investigation/index.html"
msgid "Run the check yourself"
msgstr "自己檢查一下"

#. {ph0}: <code>notes-example</code>
#: website/public/first-investigation/index.html:445
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "Open a terminal in the unpacked {ph0} folder:"
msgstr "在解壓後的 {ph0} 資料夾裡開啟終端："

#: website/public/first-investigation/index.html:486
msgctxt "page:first-investigation/index.html"
msgid "5. Ask another question"
msgstr "5. 再問一個問題"

#: website/public/first-investigation/index.html:487
msgctxt "page:first-investigation/index.html"
msgid "Try a follow-up in the same conversation:"
msgstr "在同一段對話中繼續提問："

#: website/public/first-investigation/index.html:489
msgctxt "page:first-investigation/index.html"
msgid ""
"What happens if the file can’t be written? Follow the error back to the "
"page."
msgstr "如果檔案無法寫入，會發生什麼？沿著錯誤處理追蹤回頁面。"

#: website/public/first-investigation/index.html:494
msgctxt "page:first-investigation/index.html"
msgid ""
"Or give your agent an app of your own and ask about one button, file or "
"behavior."
msgstr "也可以提供自己的應用，詢問其中一個按鈕、檔案或行為。"

#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:499
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How Notion copies text and HTML{ph1}{ph2}Follow a clipboard feature in "
"a packaged Electron app.{ph3}"
msgstr "{ph0}Notion 如何複製文字和 HTML{ph1}{ph2}追蹤打包 Electron 應用中的剪貼簿功能。{ph3}"

#. {ph0}: <a href="../showcase/dx-ball/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:505
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}How DX-Ball calculates sound panning{ph1}{ph2}Read the original "
"instructions and the reconstruction’s checks.{ph3}"
msgstr "{ph0}DX-Ball 如何計算聲音左右位置{ph1}{ph2}檢視原始指令，以及重建結果的驗證。{ph3}"

#. {ph0}: <a href="../faq/#troubleshooting" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/first-investigation/index.html:513
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Troubleshoot setup or analysis{ph1}{ph2}Update REA and check the "
"connection if you get stuck.{ph3}"
msgstr "{ph0}安裝或分析遇到問題{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 "用小型 Notes 應用嘗試 REA。配置助手，詢問匯出的筆記寫到哪裡，再用一個示例標題驗證 CSV 格式化函式。"

#: website/public/first-investigation/index.html:213
msgctxt "page:first-investigation/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/first-investigation/index.html:223
msgctxt "page:first-investigation/index.html"
msgid "Your first REA investigation"
msgstr "你的第一次REA調查"

#: website/public/first-investigation/index.html:239
msgctxt "page:first-investigation/index.html"
msgid "Copy REA installation prompt"
msgstr "複製REA安裝提示"

#: website/public/first-investigation/index.html:261
msgctxt "page:first-investigation/index.html"
msgid "Copy setup command"
msgstr "複製安裝命令"

#: website/public/first-investigation/index.html:289
msgctxt "page:first-investigation/index.html"
msgid "Copy Notes investigation prompt"
msgstr "複製筆記調查提示"

#: website/public/first-investigation/index.html:411
msgctxt "page:first-investigation/index.html"
msgid "Copy CSV check prompt"
msgstr "複製CSV檢查提示"

#: website/public/first-investigation/index.html:452
#: website/public/first-investigation/index.html:469
msgctxt "page:first-investigation/index.html"
msgid "Copy formatter check command"
msgstr "複製格式化程式檢查命令"

#: website/public/first-investigation/index.html:540
msgctxt "page:first-investigation/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/get-started/index.html:107
msgctxt "page:get-started/index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

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

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#: website/public/get-started/index.html:200
msgctxt "page:get-started/index.html"
msgid "Set up REA."
msgstr "設定 REA。"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#: website/public/get-started/index.html:265
msgctxt "page:get-started/index.html"
msgid "Open a terminal and check:"
msgstr "開啟終端機並檢查："

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

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

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#. {ph0}: <code>node -v</code>
#: website/public/get-started/index.html:303
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Type Y if asked to accept the terms. Close PowerShell, open it again, then "
"run {ph0}."
msgstr "如果要求你接受條款，請輸入 Y。關閉 PowerShell 後重新開啟，再執行 {ph0}。"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#. {ph0}: <code>nodejs</code>
#. {ph1}: <code>node -v</code>
#: website/public/get-started/index.html:398
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Your distribution's own {ph0} package is often older than 22.23.4, so check "
"{ph1} if you use it instead."
msgstr "發行版提供的 {ph0} 套件通常早於 22.23.4。如果使用它，請執行 {ph1} 確認版本。"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#. {ph0}: <a href="https://nodejs.org/en/download">
#. {ph1}: </a>
#: website/public/get-started/index.html:404
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Prefer a regular installer? Download the LTS version from "
"{ph0}nodejs.org{ph1}."
msgstr "偏好一般的安裝程式？到 {ph0}nodejs.org{ph1} 下載 LTS 版本。"

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

#. {ph0}: <a href="#help">
#. {ph1}: </a>
#: website/public/get-started/index.html:220
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Getting help{ph1}"
msgstr "{ph0}尋求幫助{ph1}"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/get-started/index.html:769
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#: website/public/get-started/index.html:795
msgctxt "page:get-started/index.html"
msgid "Or run setup yourself"
msgstr "也可以自己執行 setup"

#: website/public/get-started/index.html:231
msgctxt "page:get-started/index.html"
msgid "How do I open a terminal?"
msgstr "怎麼開啟終端？"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:233
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} open the Start menu, type {ph2}PowerShell{ph3} and press "
"Enter."
msgstr "{ph0}Windows：{ph1}開啟「開始」功能表，輸入 {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:237
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} press {ph2} {ph3}, type {ph4}Terminal{ph5} and press Enter."
msgstr "{ph0}macOS：{ph1}按 {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:241
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux:{ph1} press {ph2} {ph3} {ph4} on most desktops."
msgstr "{ph0}Linux：{ph1}多數桌面環境可以按 {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:246
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Paste a command with {ph0} {ph1} (macOS: {ph2} {ph3}; Linux terminals: {ph4}"
" {ph5} {ph6}), then press Enter."
msgstr ""
"用 {ph0} {ph1} 貼上命令（macOS：{ph2} {ph3}；Linux 終端：{ph4} {ph5} {ph6}），再按 Enter。"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#: website/public/get-started/index.html:831
msgctxt "page:get-started/index.html"
msgid ""
"Choose your client and review the setup plan. REA adds its MCP connection "
"and the matching investigation skill, keeping a backup of existing "
"configuration. It asks before applying the changes."
msgstr "選擇你的用戶端並檢查設定計畫。REA 會加入它的 MCP 連線和對應的調查 skill，並備份現有的設定。套用變更前，它會先詢問你。"

#: website/public/get-started/index.html:845
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:846
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Desktop apps{ph1} (Claude Desktop, Cursor, Windsurf, VS Code): quit the"
" app completely, then open it again. Closing the window isn't enough. On "
"macOS press {ph2} {ph3}; on Windows, also quit from the tray icon if there "
"is one."
msgstr ""
"{ph0}桌面應用{ph1}（Claude Desktop、Cursor、Windsurf、VS Code）：完全退出後再開啟，只關視窗不夠。macOS"
" 上按 {ph2} {ph3}；Windows 上，如果有托盤圖示，也要從那裡退出。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:853
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Terminal agents{ph1} (Claude Code, Codex, Gemini CLI): exit the session"
" and start it again."
msgstr "{ph0}終端助手{ph1}（Claude Code、Codex、Gemini CLI）：退出當前會話，再啟動一次。"

#: website/public/get-started/index.html:957
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:959
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the folder and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0}Windows：{ph1}在檔案資源管理器中右鍵資料夾，選擇{ph2}“複製檔案地址”{ph3}。Windows 10 上，按住 Shift "
"再右鍵。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html:964
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the folder, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr "{ph0}macOS：{ph1}在 Finder 中右鍵資料夾，按住 Option，選擇{ph2}“將…複製為路徑名稱”{ph3}。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:968
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the folder into a terminal window and its path "
"appears."
msgstr "{ph0}所有系統：{ph1}把資料夾拖進終端視窗，也能顯示路徑。"

#: website/public/get-started/index.html:973
#: website/public/get-started/index.html:1731
msgctxt "page:get-started/index.html"
msgid "In a terminal, put quotes around a path that contains spaces."
msgstr "在終端裡，包含空格的路徑需要加引號。"

#: website/public/get-started/index.html:1558
msgctxt "page:get-started/index.html"
msgid ""
"Analyze a JavaScript or Electron application folder or ASAR archive without "
"running the app:"
msgstr "靜態分析 JavaScript 或 Electron 應用目錄、ASAR 檔案，無需啟動應用："

#: website/public/get-started/index.html:1564
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:1576
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace the path with your extracted app directory or {ph0} file. On "
"Windows, a path such as {ph1} works here."
msgstr "把路徑換成解包後的應用目錄或 {ph0} 檔案。Windows 上也可以使用 {ph1} 這樣的路徑。"

#: website/public/get-started/index.html:1582
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:1583
#, 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:1588
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Windows:{ph1} {ph2}"
msgstr "{ph0} Windows :{ph1} {ph2}"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code
#. >/Applications/&lt;App&gt;.app/Contents/Resources/app.asar</code >
#. {ph3}: <em>
#. {ph4}: </em>
#: website/public/get-started/index.html:1594
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}macOS:{ph1} {ph2} (right-click the app and choose {ph3}Show Package "
"Contents{ph4})"
msgstr "{ph0}macOS：{ph1}{ph2}（右鍵應用，選擇{ph3}“顯示包內容”{ph4}）"

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

#. {ph0}: <code>app.asar</code>
#: website/public/get-started/index.html:1607
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Some apps install elsewhere. Search the app's folder for {ph0}."
msgstr "有些應用安裝在其他位置。在應用目錄裡搜尋 {ph0}。"

#: website/public/get-started/index.html:1612
msgctxt "page:get-started/index.html"
msgid ""
"The result identifies the app, shows connections between modules and gives "
"their source locations. Connections REA cannot resolve are marked in the "
"result."
msgstr "結果會識別應用，展示模組之間的關係，並給出原始碼位置。REA 無法解析的關係會在結果中註明。"

#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:1617
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "If you'd like a permanent {ph0} command in your shell:"
msgstr "如果希望在 shell 中直接使用 {ph0} 命令："

#: website/public/get-started/index.html:1623
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:1635
#, 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:1152
msgctxt "page:get-started/index.html"
msgid "Connect your Ghidra installation"
msgstr "連線已有的 Ghidra"

#: website/public/get-started/index.html:1122
msgctxt "page:get-started/index.html"
msgid "Connect Ghidra on Windows"
msgstr "在 Windows 上連線 Ghidra"

#: website/public/get-started/index.html:1123
msgctxt "page:get-started/index.html"
msgid ""
"Windows x64 has experimental, read-only support for native x86 and x64 PE "
"applications and DLLs on fixed local NTFS drives. Use an existing Ghidra "
"12.1.x installation and a 64-bit JDK 21 or newer:"
msgstr ""
"Windows x64 提供實驗性的只讀支援：分析固定本地 NTFS 驅動器上的原生 x86、x64 PE 應用和 DLL。使用已有的 Ghidra "
"12.1.x 和 64 位 JDK 21 或更新版本："

#: website/public/get-started/index.html:1146
msgctxt "page:get-started/index.html"
msgid ""
"Replace the two paths with your installations, then review setup's plan."
msgstr "把兩個路徑換成安裝位置，再檢視 setup 計劃。"

#: website/public/get-started/index.html:1028
msgctxt "page:get-started/index.html"
msgid ""
"Connect Hopper on macOS or Linux. Run the setup command above; it detects an"
" existing installation or offers an installation plan for your approval."
msgstr "在 macOS 或 Linux 上連線 Hopper。執行上面的 setup 命令，它會檢測已有安裝，或提出安裝計劃供你確認。"

#: website/public/get-started/index.html:1689
msgctxt "page:get-started/index.html"
msgid "Getting help"
msgstr "尋求幫助"

#: website/public/get-started/index.html:1691
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:1692
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Restart or reconnect the client after setup. Check its REA connection with "
"{ph0}; for Codex:"
msgstr "配置後重啟或重新連線客戶端。用 {ph0} 檢查 REA 連線。以 Codex 為例："

#: website/public/get-started/index.html:1703
msgctxt "page:get-started/index.html"
msgid "If a provider needs attention"
msgstr "分析後端出現問題時"

#: website/public/get-started/index.html:1704
msgctxt "page:get-started/index.html"
msgid "Check the provider you're using. For Ghidra:"
msgstr "檢查正在使用的分析後端。以 Ghidra 為例："

#: website/public/get-started/index.html:1707
msgctxt "page:get-started/index.html"
msgid "Check one provider"
msgstr "檢查一個分析後端"

#: website/public/get-started/index.html:1719
msgctxt "page:get-started/index.html"
msgid "The report gives the failed check and a suggested next step."
msgstr "報告會列出失敗的檢查和建議的下一步。"

#. {ph0}: <a href="../faq/">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:1784
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA FAQ{ph1}{ph2}Quick answers on updates, agents and analysis.{ph3}"
msgstr "{ph0}REA FAQ{ph1}{ph2}關於更新、助手和分析的常見解答。{ph3}"

#. {ph0}: <a href="../guides/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/get-started/index.html:1788
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Choose an investigation guide{ph1}{ph2}Worked examples for a binary, an"
" Electron app and a browser.{ph3}"
msgstr "{ph0}選擇調查指南{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:1795
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}GitHub issues{ph1}{ph2}Report a problem with the command and "
"diagnostics.{ph3}"
msgstr "{ph0}GitHub issues{ph1}{ph2}附上命令與診斷結果，反饋問題。{ph3}"

#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/get-started/index.html:1799
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}REA community{ph1}{ph2}Questions, investigations and work in "
"progress.{ph3}"
msgstr "{ph0}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 應用。包含配置、首次提問和原生分析後端指南。"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#: website/public/get-started/index.html:269
msgctxt "page:get-started/index.html"
msgid "Copy Node.js version check"
msgstr "複製 Node.js 版本檢查命令"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#: website/public/get-started/index.html:292
msgctxt "page:get-started/index.html"
msgid "Copy Node.js installation command for Windows"
msgstr "複製 Windows 的 Node.js 安裝命令"

#: website/public/get-started/index.html:347
msgctxt "page:get-started/index.html"
msgid "Copy Homebrew Node.js installation command"
msgstr "複製 Homebrew Node.js 安裝命令"

#: website/public/get-started/index.html:370
msgctxt "page:get-started/index.html"
msgid "Copy fnm installation command for Linux"
msgstr "複製Linux的fnm安裝命令"

#: website/public/get-started/index.html:385
msgctxt "page:get-started/index.html"
msgid "Copy Node.js 24 commands for Linux"
msgstr "複製 Node.js 24命令 Linux"

#: website/public/get-started/index.html:212
#: website/public/get-started/index.html:211
msgctxt "page:get-started/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/get-started/index.html:223
msgctxt "page:get-started/index.html"
msgid "REA getting started guide"
msgstr "REA入門指南"

#: website/public/get-started/index.html:774
msgctxt "page:get-started/index.html"
msgid "Copy REA installation prompt"
msgstr "複製REA安裝提示"

#: website/public/get-started/index.html:1565
msgctxt "page:get-started/index.html"
msgid "Copy JavaScript analysis command"
msgstr "複製JavaScript分析命令"

#: website/public/get-started/index.html:1624
msgctxt "page:get-started/index.html"
msgid "Copy CLI installation command"
msgstr "複製CLI安裝命令"

#: website/public/get-started/index.html:1708
msgctxt "page:get-started/index.html"
msgid "Copy provider diagnosis command"
msgstr "複製提供者診斷命令"

#: website/public/get-started/index.html:1823
msgctxt "page:get-started/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/guides/browser/index.html:107
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:199
#, 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:203
#, 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:204
msgctxt "page:guides/browser/index.html"
msgid ""
"Use a small browser app to connect an action, its network request and the "
"JavaScript that builds a download."
msgstr "使用小型瀏覽器應用程式連線操作，其網路請求和構建下載的JavaScript。"

#: website/public/guides/browser/index.html:211
msgctxt "page:guides/browser/index.html"
msgid "In this guide"
msgstr "在本指南中"

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

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

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:215
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}問問你的程式設計助手{ph1}"

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

#. {ph0}: <a href="#result">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:217
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}Read the request and script{ph1}"
msgstr "{ph0}閱讀請求和指令碼{ph1}"

#: website/public/guides/browser/index.html:222
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:223
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The {ph0}Notes browser example{ph1} has an {ph2}Export notes{ph3} button. "
"Clicking it loads {ph4}, formats the two notes as CSV, and starts a "
"download."
msgstr ""
"{ph0}Notes 瀏覽器示例{ph1}有一個{ph2}Export notes（匯出筆記）{ph3}按鈕。點選後載入 {ph4}，把兩條筆記格式化為"
" CSV，再開始下載。"

#: website/public/guides/browser/index.html:231
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:233
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}01 · You{ph1}{ph2}Click Export notes{ph3}{ph4}Perform the action in "
"your browser while the capture is running.{ph5}"
msgstr "{ph0}01 · 你{ph1}{ph2}點選 Export notes{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:241
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}02 · REA{ph1}{ph2}Record the request{ph3}{ph4}Capture the request URL, "
"response status and JSON structure from the selected page.{ph5}"
msgstr "{ph0}02*REA {ph1}{ph2}記錄請求{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:249
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}03 · Your agent{ph1}{ph2}Read the export code{ph3}{ph4}Connect the "
"observed request to {ph5} in {ph6}.{ph7}"
msgstr ""
"{ph0}03 · 程式設計助手{ph1}{ph2}讀取匯出程式碼{ph3}{ph4}把觀察到的請求與 {ph6} 中的 {ph5} "
"關聯起來。{ph7}"

#: website/public/guides/browser/index.html:262
msgctxt "page:guides/browser/index.html"
msgid "Start the capture before clicking Export notes."
msgstr "在單擊匯出註釋之前開始捕獲。"

#: website/public/guides/browser/index.html:268
msgctxt "page:guides/browser/index.html"
msgid "Open Chrome with remote debugging"
msgstr "使用遠端除錯開啟Chrome"

#: website/public/guides/browser/index.html:269
msgctxt "page:guides/browser/index.html"
msgid ""
"Open the hosted Notes example with a separate browser profile and a local "
"debugging port. On Linux:"
msgstr "用獨立的瀏覽器配置和本地除錯埠開啟線上 Notes 示例。Linux 上："

#: website/public/guides/browser/index.html:275
msgctxt "page:guides/browser/index.html"
msgid "Start the example browser"
msgstr "啟動示例瀏覽器"

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

#: website/public/guides/browser/index.html:290
msgctxt "page:guides/browser/index.html"
msgid ""
"Use your installed browser's executable path on macOS or Windows. You can "
"replace the page URL with another page you want to inspect."
msgstr "在macOS或Windows上使用已安裝的瀏覽器的可執行路徑。 你可以將頁面URL替換為要檢查的其他頁面。"

#: website/public/guides/browser/index.html:295
msgctxt "page:guides/browser/index.html"
msgid ""
"REA connects to this existing browser. You keep control of the page, perform"
" the action, and close the browser when finished."
msgstr "REA連線到這個現有的瀏覽器。 你可以控制頁面，執行操作，並在完成後關閉瀏覽器。"

#: website/public/guides/browser/index.html:301
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:304
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="browser-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/guides/browser/index.html:317
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this page while I click Export notes. "
"What request does it make, and how is the CSV built?{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}用 REA 檢查這個頁面。我點選 Export notes 時，它發起什麼請求？CSV "
"是怎樣生成的？{ph3}{ph4}{ph5}"

#. {ph0}: <code>http://127.0.0.1:9222</code>
#: website/public/guides/browser/index.html:325
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Example prompt. Give your agent the debugging endpoint, {ph0}, and the page "
"URL. Let it start the capture before you click."
msgstr "示例 prompt。把除錯地址 {ph0} 和頁面網址交給助手。等它開始捕獲，再點選按鈕。"

#: website/public/guides/browser/index.html:330
msgctxt "page:guides/browser/index.html"
msgid ""
"Your agent discovers the page target, starts an observation window, and "
"reads the resulting evidence. It can then inspect the script behind the "
"export."
msgstr "你的程式設計助手發現頁面目標，啟動觀察視窗，並讀取生成的證據。 然後，它可以檢查匯出後面的指令碼。"

#: website/public/guides/browser/index.html:337
msgctxt "page:guides/browser/index.html"
msgid "Or capture from the terminal"
msgstr "或從終端捕獲"

#: website/public/guides/browser/index.html:338
msgctxt "page:guides/browser/index.html"
msgid "Find the page's target ID:"
msgstr "查詢頁面的目標ID:"

#: website/public/guides/browser/index.html:341
msgctxt "page:guides/browser/index.html"
msgid "Find the page"
msgstr "查詢頁面"

#. {ph0}: <code>TARGET_ID</code>
#: website/public/guides/browser/index.html:354
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Choose the target with the Notes example URL. Replace {ph0} below with its "
"ID, then run:"
msgstr "選擇網址為 Notes 示例的目標，把下面的 {ph0} 換成目標 ID，再執行："

#: website/public/guides/browser/index.html:360
msgctxt "page:guides/browser/index.html"
msgid "Capture the next ten seconds"
msgstr "捕捉接下來的十秒"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/browser/index.html:376
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Let the command connect for a few seconds, then click {ph0}Export notes{ph1}"
" in that browser. The result arrives after the observation window ends."
msgstr "讓命令連線幾秒鐘，再在瀏覽器中點選{ph0}Export notes{ph1}。觀察時間視窗結束後會返回結果。"

#: website/public/guides/browser/index.html:381
msgctxt "page:guides/browser/index.html"
msgid ""
"The captured result includes the selected page, network activity during that"
" window, and the shape of the JSON response. Earlier requests are outside "
"this capture."
msgstr "捕獲的結果包括所選頁面、該視窗期間的網路活動以及JSON響應的形狀。 較早的請求在此捕獲之外。"

#: website/public/guides/browser/index.html:388
msgctxt "page:guides/browser/index.html"
msgid "Read the request and export script"
msgstr "讀取請求和匯出指令碼"

#: website/public/guides/browser/index.html:391
msgctxt "page:guides/browser/index.html"
msgid "Recorded with REA 4.1.0 on the local Notes example"
msgstr "在本地筆記示例中用REA4.1.0記錄"

#: website/public/guides/browser/index.html:396
msgctxt "page:guides/browser/index.html"
msgid "Captured fact"
msgstr "捕獲的事實"

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

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

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

#: website/public/guides/browser/index.html:410
msgctxt "page:guides/browser/index.html"
msgid "Request initiator"
msgstr "請求發起者"

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

#: website/public/guides/browser/index.html:414
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:415
#, 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:425
msgctxt "page:guides/browser/index.html"
msgid "Read the loaded scripts"
msgstr "閱讀載入的指令碼"

#. {ph0}: <code>export.js</code>
#: website/public/guides/browser/index.html:439
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The request identifies the data source, and REA records {ph0} as its "
"initiator. Read the captured script source to see how the data is used:"
msgstr "請求指出了資料來源，REA 記錄的請求發起方是 {ph0}。讀取捕獲的指令碼原始碼，看看它如何使用資料："

#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:459
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"The download is constructed in the page using the JSON response. The CSV "
"formatting step comes from the script; the network capture establishes that "
"this click requested {ph0}."
msgstr "下載是使用JSON響應在頁面中構建的。 CSV格式化步驟來自指令碼;網路捕獲建立此單擊請求 {ph0}."

#. {ph0}: <code>notes.json</code>
#: website/public/guides/browser/index.html:475
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"Find the script that requests {ph0}. How does it escape titles containing "
"commas or quotation marks?"
msgstr "查詢請求的指令碼 {ph0}. 它如何轉義包含逗號或引號的標題？"

#. {ph0}: <a href="../javascript/">
#. {ph1}: </a>
#: website/public/guides/browser/index.html:480
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"For an installed JavaScript or Electron app, continue with the "
"{ph0}application workflow{ph1} to follow files and process boundaries."
msgstr "對於已安裝的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:210
msgctxt "page:guides/browser/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/guides/browser/index.html:220
msgctxt "page:guides/browser/index.html"
msgid "Browser observation"
msgstr "瀏覽器觀察"

#: website/public/guides/browser/index.html:276
msgctxt "page:guides/browser/index.html"
msgid "Copy start the example browser"
msgstr "複製啟動示例瀏覽器"

#: website/public/guides/browser/index.html:308
msgctxt "page:guides/browser/index.html"
msgid "Copy example prompt"
msgstr "複製示例提示"

#: website/public/guides/browser/index.html:342
msgctxt "page:guides/browser/index.html"
msgid "Copy find the page"
msgstr "複製查詢頁面"

#: website/public/guides/browser/index.html:361
msgctxt "page:guides/browser/index.html"
msgid "Copy capture the next ten seconds"
msgstr "複製捕獲接下來的十秒鐘"

#: website/public/guides/browser/index.html:426
msgctxt "page:guides/browser/index.html"
msgid "Copy read the loaded scripts"
msgstr "複製讀取載入的指令碼"

#: website/public/guides/browser/index.html:513
msgctxt "page:guides/browser/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/guides/index.html:107
msgctxt "page:guides/index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/guides/index.html:199
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "{ph0}Home{ph1} / Guides"
msgstr "{ph0}首頁{ph1} /指南"

#: website/public/guides/index.html:200
msgctxt "page:guides/index.html"
msgid "REA guides."
msgstr "REA 分析指南。"

#: website/public/guides/index.html:201
msgctxt "page:guides/index.html"
msgid ""
"Analyze a native function, an Electron export or a browser request. Each "
"guide includes a prompt, code and results."
msgstr "分析本機函式、Electron匯出或瀏覽器請求。 每個指南包括提示，程式碼和結果。"

#: website/public/guides/index.html:208
msgctxt "page:guides/index.html"
msgid "First investigation"
msgstr "第一次調查"

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

#: website/public/guides/index.html:211
msgctxt "page:guides/index.html"
msgid "Connect your coding agent or use REA from the terminal."
msgstr "連線你的程式設計助手或使用 REA 從終端。"

#: website/public/guides/index.html:212
msgctxt "page:guides/index.html"
msgid "Get started with REA"
msgstr "開始使用 REA"

#: website/public/guides/index.html:216
msgctxt "page:guides/index.html"
msgid "Native binaries"
msgstr "原生二進位制"

#: website/public/guides/index.html:218
msgctxt "page:guides/index.html"
msgid "Recover a sound-pan calculation"
msgstr "恢復左/右聲音位置的計算"

#: website/public/guides/index.html:219
msgctxt "page:guides/index.html"
msgid ""
"Start with a Windows game executable. Inspect instructions, follow a caller,"
" read numeric constants and check the recovered C."
msgstr "從Windows遊戲可執行檔案開始。 檢查指令，跟隨呼叫者，讀取數字常量並檢查恢復的C。"

#: website/public/guides/index.html:229
msgctxt "page:guides/index.html"
msgid "Native analysis guide"
msgstr "原生分析指南"

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

#: website/public/guides/index.html:235
msgctxt "page:guides/index.html"
msgid "Follow a CSV export"
msgstr "追蹤 CSV 匯出"

#: website/public/guides/index.html:236
msgctxt "page:guides/index.html"
msgid ""
"A small Notes app spreads one feature across the renderer, preload and main "
"process. Use REA to connect the API, IPC channel and file writer."
msgstr "一個小Notes應用程式在渲染器，預載入和主程序中傳播一個功能。 使用REA連線API，IPC通道和檔案編寫器。"

#: website/public/guides/index.html:246
msgctxt "page:guides/index.html"
msgid "JavaScript & Electron guide"
msgstr "JavaScript&Electron指南"

#. {ph0}: <a href="../showcase/notion/">
#. {ph1}: </a>
#: website/public/guides/index.html:249
#, python-brace-format
msgctxt "page:guides/index.html"
msgid "For a larger packaged app, follow {ph0}Notion's clipboard bridge{ph1}."
msgstr "對於更大的打包應用程式，請遵循 {ph0} Notion的剪貼簿橋{ph1}."

#: website/public/guides/index.html:256
msgctxt "page:guides/index.html"
msgid "Browser behavior"
msgstr "瀏覽器行為"

#: website/public/guides/index.html:258
msgctxt "page:guides/index.html"
msgid "Observe a click"
msgstr "觀察點選"

#: website/public/guides/index.html:259
msgctxt "page:guides/index.html"
msgid ""
"Open a working Notes example, capture an export request and find the code "
"that turns its response into a download."
msgstr "開啟工作筆記示例，捕獲匯出請求並找到將其響應轉換為下載的程式碼。"

#: website/public/guides/index.html:268
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:288
msgctxt "page:guides/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/guides/javascript/index.html:107
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:199
#, 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:203
#, 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:204
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow a button click from the page API, through Electron IPC, to the CSV "
"file writer."
msgstr "按照一個按鈕點選從頁面API，透過Electron IPC，到CSV檔案編寫器。"

#: website/public/guides/javascript/index.html:211
msgctxt "page:guides/javascript/index.html"
msgid "In this guide"
msgstr "在本指南中"

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

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:214
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}問問你的程式設計助手{ph1}"

#. {ph0}: <a href="#follow">
#. {ph1}: </a>
#: website/public/guides/javascript/index.html:215
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}Trace the export code{ph1}"
msgstr "{ph0}跟蹤匯出程式碼{ph1}"

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

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

#: website/public/guides/javascript/index.html:222
msgctxt "page:guides/javascript/index.html"
msgid "Where does “Export notes” go?"
msgstr "\"Export notes（匯出筆記）\"去哪兒了？"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/javascript/index.html:223
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"This guide uses a small Electron app. Clicking {ph0}Export notes{ph1} calls "
"an API in the page, crosses into the main process, and writes a CSV. The "
"behavior is spread across several files."
msgstr ""
"本指南使用一個小型 Electron 應用。點選{ph0}Export notes（匯出筆記）{ph1}後，頁面呼叫 "
"API，透過程序邊界進入主程序，最後寫出 CSV。這個行為分散在幾個檔案中。"

#: website/public/guides/javascript/index.html:230
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:234
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Renderer → preload{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} calls the API exposed "
"by {ph7}.{ph8}"
msgstr "{ph0}渲染器→預載入{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} 呼叫由 {ph7}.{ph8}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: <code>notes:export</code>
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:242
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Between processes{ph1}{ph2}{ph3}{ph4}{ph5}The preload invokes an IPC "
"channel: a named message to the main process.{ph6}"
msgstr "{ph0}程序之間{ph1}{ph2}{ph3}{ph4}{ph5}預載入呼叫IPC通道：主程序的命名訊息。{ph6}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <span class="flow-node">
#. {ph3}: </span >
#. {ph4}: <span class="flow-note" >
#. {ph5}: <code>main.js</code>
#. {ph6}: </span >
#: website/public/guides/javascript/index.html:250
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Main process{ph1}{ph2}An export handler{ph3}{ph4}{ph5} handles that "
"channel and calls the CSV writer.{ph6}"
msgstr "{ph0}主程序{ph1}{ph2}匯出處理函式{ph3}{ph4}{ph5}處理這個通道，再呼叫 CSV 寫入函式。{ph6}"

#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>main.js</code>
#. {ph2}: <code>downloads/notes.csv</code>
#: website/public/guides/javascript/index.html:259
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} formats the notes → {ph1} writes {ph2}."
msgstr "{ph0} 格式化註釋→ {ph1} 寫道 {ph2}."

#: website/public/guides/javascript/index.html:263
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA matches the literal IPC call to its handler and identifies the exposed "
"API. The path is inferred from code; a runtime capture can check what "
"executes."
msgstr "REA將字面IPC呼叫與其處理程式相匹配，並標識公開的API。 路徑是從程式碼中推斷出來的；執行時捕獲可以檢查執行的內容。"

#: website/public/guides/javascript/index.html:271
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:272
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Connect your agent to REA{ph1} and give it the app directory or ASAR "
"file:"
msgstr "{ph0}將你的程式設計助手連線到 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:278
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#: website/public/guides/javascript/index.html:282
#: website/public/guides/javascript/index.html:431
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:291
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find what happens when I export notes in this "
"app. Where is the CSV created?{ph3}{ph4}{ph5}"
msgstr "{ph0}›{ph1}{ph2}用 REA 找出這個應用匯出筆記時發生了什麼。CSV 檔案在哪裡建立？{ph3}{ph4}{ph5}"

#. {ph0}: <code>app.asar</code>
#: website/public/guides/javascript/index.html:299
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Example prompt. Include the absolute path to the application folder or "
"{ph0}."
msgstr "示例提示。 包括應用程式資料夾的絕對路徑或 {ph0}."

#: website/public/guides/javascript/index.html:303
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA reads the application files and builds a map of entrypoints, modules and"
" process boundaries. Your agent uses that map to narrow the investigation to"
" the export feature."
msgstr "REA讀取應用程式檔案並構建入口點，模組和流程邊界的對映。 你的程式設計助手使用該對映將調查範圍縮小到匯出功能。"

#: website/public/guides/javascript/index.html:310
msgctxt "page:guides/javascript/index.html"
msgid "Trace the export code"
msgstr "跟蹤匯出程式碼"

#: website/public/guides/javascript/index.html:311
msgctxt "page:guides/javascript/index.html"
msgid "The page calls a small API"
msgstr "頁面呼叫一個小API"

#: website/public/guides/javascript/index.html:324
msgctxt "page:guides/javascript/index.html"
msgid ""
"The page knows the method name. The implementation lives in the preload, "
"which exposes it to the renderer."
msgstr "頁面知道方法名稱。 實現存在於預載入中，預載入將其暴露給渲染器。"

#. {ph0}: <code>notes.exportCsv</code>
#. {ph1}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:338
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"REA records {ph0} and the literal channel {ph1}. It pairs that invocation "
"with the single matching handler in the main process."
msgstr "REA 記錄 {ph0} 和直接寫在程式碼中的通道名 {ph1}，並將呼叫關聯到主程序裡唯一匹配的處理函式。"

#. {ph0}: <code>csv.js</code>
#. {ph1}: <code>notes.csv</code>
#: website/public/guides/javascript/index.html:355
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Reading the handler answers the original question: {ph0} formats the notes, "
"and the main process writes {ph1} into the user's Downloads folder."
msgstr "讀取處理函式就能回答最初的問題：{ph0} 格式化筆記，主程序將 {ph1} 寫入使用者的下載資料夾。"

#: website/public/guides/javascript/index.html:372
msgctxt "page:guides/javascript/index.html"
msgid ""
"Recorded by REA 4.1.0 on the downloadable example below. Source locations "
"accompany the API, channel and handler findings."
msgstr "使用 REA 4.1.0 分析下面可下載的示例。API、通道和處理函式的結果均附有原始碼位置。"

#: website/public/guides/javascript/index.html:378
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:385
#, 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:394
msgctxt "page:guides/javascript/index.html"
msgid "Browse the six source files"
msgstr "瀏覽六個原始檔"

#: website/public/guides/javascript/index.html:430
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:443
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Replace the path with the folder you unzipped. You should find one IPC "
"channel and one matching handler in {ph0}. Source locations are in {ph1}."
msgstr "將路徑替換為你解壓縮的資料夾。 你應該在以下位置找到一個IPC通道和一個匹配的處理程式 {ph0}. 源位置在 {ph1}."

#: website/public/guides/javascript/index.html:449
msgctxt "page:guides/javascript/index.html"
msgid ""
"For your own app, use the same command with its directory or ASAR path. An "
"agent can follow a literal string, API name or IPC channel with REA's "
"feature tracing tools."
msgstr ""
"對於你自己的應用程式，請對其目錄或ASARpath使用相同的命令。 程式設計助手可以使用REA的功能跟蹤工具跟隨文字字串，API名稱或IPC通道。"

#: website/public/guides/javascript/index.html:456
msgctxt "page:guides/javascript/index.html"
msgid "Inspect the CSV writer"
msgstr "檢查CSV寫入器"

#. {ph0}: <code>notes:export</code>
#: website/public/guides/javascript/index.html:458
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Follow {ph0} to its handler. Which inputs reach the CSV writer, and what "
"happens if writing the file fails?"
msgstr "追蹤 {ph0} 到處理函式。哪些輸入傳給 CSV 寫入函式？如果寫入失敗，會怎樣？"

#: website/public/guides/javascript/index.html:464
msgctxt "page:guides/javascript/index.html"
msgid ""
"Use the source locations to inspect those details. Computed channel names "
"and ambiguous handlers can remain unresolved; runtime observations give you "
"another way to investigate them."
msgstr "使用源位置檢查這些詳細資訊。 計算的通道名稱和不明確的處理程式可以保持未解析；執行時觀察為你提供了另一種調查它們的方法。"

#. {ph0}: <a href="../../showcase/notion/" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/guides/javascript/index.html:470
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow Notion's clipboard bridge{ph1} {ph2}Apply the same approach to a"
" packaged Electron app.{ph3}"
msgstr "{ph0}追蹤 Notion 剪貼簿橋接程式碼{ph1}{ph2}把同樣的方法用於打包的 Electron 應用。{ph3}"

#. {ph0}: <a href="../browser/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:476
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Observe a browser export{ph1}{ph2}Capture a real click and see which "
"request it makes.{ph3}"
msgstr "{ph0}觀察瀏覽器匯出{ph1}{ph2}捕獲一個真正的點選，看看它提出了哪個請求。{ph3}"

#. {ph0}: <a href="../native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/guides/javascript/index.html:482
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"{ph0}Follow a native function{ph1}{ph2}Continue into a binary when a feature"
" depends on native code.{ph3}"
msgstr "{ph0}遵循原生函式{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 "透過具有REA的渲染器API，預載入和IPC處理程式跟蹤Notes CSV匯出。 包括可下載的示例檔案和經過驗證的分析結果。"

#: website/public/guides/javascript/index.html:210
msgctxt "page:guides/javascript/index.html"
msgid "On this page"
msgstr "在本頁"

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

#: website/public/guides/javascript/index.html:282
msgctxt "page:guides/javascript/index.html"
msgid "Copy example prompt"
msgstr "複製示例提示"

#: website/public/guides/javascript/index.html:431
msgctxt "page:guides/javascript/index.html"
msgid "Copy static application analysis"
msgstr "複製靜態應用程式分析"

#: website/public/guides/javascript/index.html:509
msgctxt "page:guides/javascript/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/guides/native/index.html:107
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:199
#, 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:202
#, 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:203
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:210
msgctxt "page:guides/native/index.html"
msgid "In this guide"
msgstr "在本指南中"

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

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/guides/native/index.html:213
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}問問你的程式設計助手{ph1}"

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

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

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/guides/native/index.html:216
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}Use your own binary{ph1}"
msgstr "{ph0}使用你自己的二進位制檔案{ph1}"

#: website/public/guides/native/index.html:221
msgctxt "page:guides/native/index.html"
msgid "Calculate left/right sound panning"
msgstr "計算左/右立體聲聲音定位"

#: website/public/guides/native/index.html:222
msgctxt "page:guides/native/index.html"
msgid ""
"In DX-Ball, a brick hit supplies a horizontal screen position. The sound "
"code turns it into a left/right panning value."
msgstr "在DX-Ball中，磚擊提供水平螢幕位置。 聲音程式碼將其轉換為左/右平移值。"

#. {ph0}: <code>0x00406400</code>
#. {ph1}: <code>__ftol()</code>
#: website/public/guides/native/index.html:226
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"The starting function, {ph0}, has a short decompiler result: a call to "
"{ph1}. REA also returns its instructions and callers, which give the agent a"
" way to investigate the missing arithmetic."
msgstr ""
"啟動函式, {ph0}，有一個簡短的反編譯器結果：呼叫 {ph1}. REA 還返回其指令和呼叫者，這給程式設計助手一種方法來調查丟失的算術。"

#: website/public/guides/native/index.html:233
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:235
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Instructions:{ph1} the steps the processor runs, shown in readable form"
" such as {ph2} or {ph3}."
msgstr "{ph0}指令：{ph1}處理器執行的步驟，以 {ph2}、{ph3} 這樣的可讀形式顯示。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:240
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Decompiler result / pseudocode:{ph1} an analysis tool's attempt to turn"
" instructions back into C-like code. It can miss parts, as in this example."
msgstr "{ph0}反編譯器結果/虛擬碼:{ph1} 分析工具試圖將指令轉換回類似C的程式碼。 它可能會錯過部分，如本例所示。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:245
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Caller:{ph1} a function that calls this one. It shows which values are "
"passed in."
msgstr "{ph0}呼叫方：{ph1}呼叫當前函式的函式，可以看出傳入的數值。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x00406400</code>
#: website/public/guides/native/index.html:249
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Address:{ph1} a location in the program, written in hexadecimal, such "
"as {ph2}."
msgstr "{ph0}地址:{ph1} 程式中的一個位置，用十六進位制編寫，如 {ph2}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:253
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Constants:{ph1} fixed numbers stored in the program, read as raw bytes "
"and decoded."
msgstr "{ph0}常量:{ph1} 固定數字儲存在程式中，讀取為原始位元組和解碼。"

#: website/public/guides/native/index.html:260
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:264
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}01 · Instructions{ph1}{ph2}An integer input{ph3}{ph4}A stack read "
"supplies the value used by the floating-point instructions.{ph5}"
msgstr "{ph0}01 · 指令{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:272
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}02 · Caller{ph1}{ph2}A screen coordinate{ph3}{ph4}The brick-hit caller "
"passes {ph5}.{ph6}"
msgstr "{ph0}02 · 呼叫方{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:280
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}03 · Data bytes{ph1}{ph2}The numeric constants{ph3}{ph4}Referenced "
"bytes decode to {ph5}, {ph6} and a scale value.{ph7}"
msgstr ""
"{ph0}03 · 資料位元組{ph1}{ph2}數值常量{ph3}{ph4}引用的位元組解碼為 {ph5}、{ph6} 和一個縮放係數。{ph7}"

#: website/public/guides/native/index.html:292
msgctxt "page:guides/native/index.html"
msgid ""
"REA supplies the instructions, call relationship and bytes. The agent "
"interprets them together."
msgstr "REA提供指令，呼叫關係和位元組。 程式設計助手一起解釋它們。"

#: website/public/guides/native/index.html:299
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:300
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"After {ph0}connecting REA to your agent{ph1} and {ph2}setting up a native "
"analysis tool{ph3}, provide the local executable and a question:"
msgstr "{ph0}將 REA 連線到助手{ph1}並{ph2}配置原生分析工具{ph3}後，提供本地可執行檔案和一個問題："

#: website/public/guides/native/index.html:311
msgctxt "page:guides/native/index.html"
msgid "Which analysis tool should I use?"
msgstr "我應該使用哪種分析工具？"

#: website/public/guides/native/index.html:312
msgctxt "page:guides/native/index.html"
msgid "REA needs one of these to read native programs:"
msgstr "REA需要其中一個來閱讀原生程式:"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:314
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Hopper{ph1} (macOS or Linux): REA's setup detects it or offers to "
"install it. On macOS, open Hopper once and choose demo mode or activate a "
"license before your first analysis."
msgstr ""
"{ph0} Hopper {ph1} （macOS或Linux）：REA的安裝程式檢測到它或提供安裝它。 "
"在macOS上，開啟一次Hopper，然後選擇演示模式或在第一次分析之前啟用許可證。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:320
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Ghidra{ph1} (macOS or Linux; experimental on Windows): free, but needs "
"an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer."
msgstr ""
"{ph0} Ghidra {ph1} "
"（macOS或Linux;在Windows上進行實驗）：免費，但需要現有的Ghidra12.1。x安裝和64位JDK21或更高版本。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:325
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}IDA{ph1} (Windows): for an existing IDA setup with an MCP registration."
msgstr "{ph0} IDA {ph1} (Windows)：用於具有MCP註冊的現有IDA設定。"

#. {ph0}: <a href="../../get-started/#native">
#. {ph1}: </a>
#: website/public/guides/native/index.html:330
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "See {ph0}Set up native analysis{ph1} for the steps."
msgstr "見 {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:338
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#: website/public/guides/native/index.html:342
#: website/public/guides/native/index.html:473
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:351
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}用 REA 找出 DX-Ball 如何計算聲音的左右位置。解釋計算過程，並展示程式碼。{ph3}{ph4}{ph5}"

#: website/public/guides/native/index.html:359
msgctxt "page:guides/native/index.html"
msgid ""
"Example prompt. Give your agent the path to your local DX-Ball 1.07 "
"executable. REA doesn't include DX-Ball, so use your own copy, or ask the "
"same kind of question about another small Windows program you have."
msgstr ""
"示例 prompt。把本地 DX-Ball 1.07 可執行檔案的路徑交給助手。REA 不附帶遊戲，需要用自己的副本，也可以換成手裡的其他小型 "
"Windows 程式，問同類問題。"

#: website/public/guides/native/index.html:366
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:368
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Windows:{ph1} in File Explorer, right-click the file and choose "
"{ph2}Copy as path{ph3}. On Windows 10, hold Shift while right-clicking."
msgstr ""
"{ph0} Windows :{ph1} 在檔案資源管理器中，右鍵單擊該檔案並選擇 {ph2}複製為路徑{ph3}. "
"在Windows10上，在右鍵單擊時按住Shift。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/guides/native/index.html:373
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}macOS:{ph1} in Finder, right-click the file, hold Option and choose "
"{ph2}Copy \"…\" as Pathname{ph3}."
msgstr "{ph0} macOS :{ph1} 在Finder中，右鍵單擊檔案，按住選項並選擇 {ph2}複製\"...\"作為路徑名{ph3}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/guides/native/index.html:377
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Any system:{ph1} drag the file into a terminal window and its path "
"appears."
msgstr "{ph0}任何系統:{ph1} 將檔案拖到終端視窗中並顯示其路徑。"

#: website/public/guides/native/index.html:385
msgctxt "page:guides/native/index.html"
msgid "Read the REA results"
msgstr "閱讀REA結果"

#: website/public/guides/native/index.html:386
msgctxt "page:guides/native/index.html"
msgid "Read the input"
msgstr "閱讀輸入"

#: website/public/guides/native/index.html:395
msgctxt "page:guides/native/index.html"
msgid ""
"The instructions load an integer argument and convert it for floating-point "
"arithmetic. This is the input absent from the first pseudocode view."
msgstr "指令載入一個整數引數並將其轉換為浮點算術。 這是第一個虛擬碼檢視中沒有的輸入。"

#: website/public/guides/native/index.html:400
msgctxt "page:guides/native/index.html"
msgid "Follow the caller"
msgstr "跟隨呼叫方"

#. {ph0}: <code>0x14</code>
#: website/public/guides/native/index.html:409
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"REA identifies the brick-hit caller. Its earlier instructions multiply the "
"tile coordinate by 30; adding {ph0} (20) gives the brick's screen position."
msgstr "REA 找到磚塊碰撞處理函式。它先把磚塊橫座標乘以 30，再加上 {ph0}（20），得到磚塊的螢幕位置。"

#: website/public/guides/native/index.html:414
msgctxt "page:guides/native/index.html"
msgid "Read the referenced constants"
msgstr "讀取引用的常量"

#: website/public/guides/native/index.html:425
msgctxt "page:guides/native/index.html"
msgid ""
"The arithmetic references these addresses. Reading the bytes supplies the "
"actual values; the instruction order tells the agent how they are used."
msgstr "算術引用這些地址。 讀取位元組提供實際值；指令順序告訴程式設計助手如何使用它們。"

#: website/public/guides/native/index.html:432
msgctxt "page:guides/native/index.html"
msgid "Write and check the recovered function"
msgstr "寫入並檢查恢復的函式"

#: website/public/guides/native/index.html:441
msgctxt "page:guides/native/index.html"
msgid ""
"With a scale of 1.0, screen positions 0, 320 and 640 map to −500, 0 and 500 "
"before integer conversion. The calculation puts the center of the screen at "
"the center of the stereo field."
msgstr "比例為1.0時，螢幕位置0、320和640在整數轉換之前對映到-500、0和500。 計算將螢幕的中心置於立體場的中心。"

#: website/public/guides/native/index.html:446
msgctxt "page:guides/native/index.html"
msgid ""
"The agent used REA's findings to write the C. Separate checks compared 3,205"
" inputs against the original x86 function and reproduced all 63 compiled "
"bytes of the complete function."
msgstr "程式設計助手使用REA的發現來編寫C.單獨的檢查將3,205個輸入與原始x86函式進行了比較，並再現了完整函式的所有63個編譯位元組。"

#. {ph0}: <a href="../../showcase/dx-ball/#sound-pan" >
#. {ph1}: </a >
#: website/public/guides/native/index.html:451
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "{ph0}See the full investigation and assembly-to-C comparison{ph1}"
msgstr "{ph0}檢視完整的調查和組裝到C的比較{ph1}"

#: website/public/guides/native/index.html:458
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:459
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"{ph0}Connect a native analysis provider{ph1}, then give your agent a local "
"executable or library and a feature to investigate. Useful starting "
"questions include “How is this file parsed?” or “Which function handles this"
" menu action?”"
msgstr ""
"{ph0}連線原生分析提供程式{ph1}，然後給你的程式設計助手一個本地可執行檔案或庫和一個要調查的函式。 "
"有用的起始問題包括\"如何解析此檔案？\"或\"哪個函式處理此選單操作？”"

#: website/public/guides/native/index.html:466
msgctxt "page:guides/native/index.html"
msgid ""
"If you already know a function name or address, you can query it from the "
"terminal. For a configured Ghidra installation:"
msgstr "如果你已經知道函式名稱或地址，則可以從終端查詢它。 對於已配置的Ghidra安裝:"

#: website/public/guides/native/index.html:472
msgctxt "page:guides/native/index.html"
msgid "Function analysis"
msgstr "函式分析"

#. {ph0}: <code>main</code>
#: website/public/guides/native/index.html:485
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid ""
"Replace the target path and {ph0} with your own function name or address. "
"Each CLI invocation imports and analyzes the binary, then closes its "
"session. Your agent's MCP queries reuse the imported binary while that "
"session is open."
msgstr ""
"替換目標路徑和 {ph0} 使用你自己的函式名稱或地址。 每個 CLI 呼叫匯入並分析二進位制檔案，然後關閉其會話。 你的程式設計助手 MCP "
"查詢在該會話開啟時重用匯入的二進位制檔案。"

#: website/public/guides/native/index.html:491
msgctxt "page:guides/native/index.html"
msgid ""
"Read the pseudocode alongside instructions and references. When a result "
"leaves a call or value unresolved, use that location as the next question."
msgstr "把虛擬碼與指令、引用一起閱讀。結果中尚未解析的呼叫或數值，可以成為下一個調查問題。"

#: 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:209
msgctxt "page:guides/native/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/guides/native/index.html:219
msgctxt "page:guides/native/index.html"
msgid "Native analysis"
msgstr "機器程式碼程式分析"

#: website/public/guides/native/index.html:342
msgctxt "page:guides/native/index.html"
msgid "Copy example prompt"
msgstr "複製示例提示"

#: website/public/guides/native/index.html:473
msgctxt "page:guides/native/index.html"
msgid "Copy function analysis"
msgstr "複製函式分析"

#: website/public/guides/native/index.html:515
msgctxt "page:guides/native/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/index.html:109
msgctxt "page:index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

#: website/public/index.html:201 website/public/index.html:211
#: website/public/index.html:209
msgctxt "page:index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/index.html:202 website/public/index.html:250
msgctxt "page:index.html"
msgid "Set up REA"
msgstr "安裝與配置 REA"

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

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

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

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

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

#: website/public/index.html:228
msgctxt "page:index.html"
msgid "Reverse engineering, with your coding agent"
msgstr "和程式設計助手一起做逆向工程"

#. {ph0}: <br />
#: website/public/index.html:229
#, python-brace-format
msgctxt "page:index.html"
msgid "Find out how{ph0}software works."
msgstr "弄清楚{ph0}軟體如何工作。"

#: website/public/index.html:251
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:254
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

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

#: website/public/index.html:280
msgctxt "page:index.html"
msgid "Or run this in your terminal:"
msgstr "也可以在終端執行："

#: website/public/index.html:292
msgctxt "page:index.html"
msgid "Approve the setup plan, then restart your agent."
msgstr "確認安裝計劃後，重啟程式設計助手。"

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

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:376
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}02{ph1} Trace calls"
msgstr "{ph0}02{ph1} 追蹤函式呼叫"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/index.html:384
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}03{ph1} Recover the rule"
msgstr "{ph0}03{ph1} 還原計算規則"

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

#: website/public/index.html:437
msgctxt "page:index.html"
msgid "01 · Which branch?"
msgstr "01 · 走哪個分支？"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:438
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“{ph0}0x5b? 0x5c?{ph1} Two jumps to the same place. Which operators are "
"these?”"
msgstr "“{ph0}0x5b？0x5c？{ph1}兩個跳轉去了同一個位置。它們對應哪些運算子？”"

#: website/public/index.html:442
msgctxt "page:index.html"
msgid "Look up the command IDs, then label the branch."
msgstr "查詢命令 ID，再標明分支含義。"

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

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

#: website/public/index.html:457
msgctxt "page:index.html"
msgid "02 · What do the calls do?"
msgstr "02 · 這些函式呼叫做什麼？"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:458
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“100 is clear. The calls are just addresses. {ph0}Which one divides? Which "
"value goes in?{ph1}”"
msgstr "“100 很明確，但函式呼叫只有地址。{ph0}哪個負責除法？傳進去的是哪個值？{ph1}”"

#: website/public/index.html:464
msgctxt "page:index.html"
msgid "Inspect the helpers and trace the stored values."
msgstr "檢查輔助函式，追蹤儲存的數值。"

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

#: website/public/index.html:479
msgctxt "page:index.html"
msgid "03 · What is the rule?"
msgstr "03 · 規則是什麼？"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:480
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"“This path multiplies by the other input. So {ph0}10% means 10% of 200{ph1} "
"after +.”"
msgstr "“這個分支乘上了另一個輸入。所以在 + 之後，{ph0}10% 表示 200 的 10%{ph1}。”"

#: website/public/index.html:484
msgctxt "page:index.html"
msgid "Name the operands and check both operator paths."
msgstr "確定運算元的含義，並檢查兩條運算路徑。"

#: website/public/index.html:500 website/public/index.html:427
msgctxt "page:index.html"
msgid "Illustrative expert reasoning"
msgstr "專家思考過程示意"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/index.html:503
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}You decode the instructions, follow the calls and reconstruct the "
"calculation.{ph1}"
msgstr "{ph0}你需要讀懂指令、追蹤呼叫，再還原計算過程。{ph1}"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:514
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Calculator"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}示例 prompt · 計算器"

#: website/public/index.html:536
msgctxt "page:index.html"
msgid "Example answer · based on the findings"
msgstr "示例回答 · 根據分析結果"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/index.html:539
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"After +, the % button takes {ph0}a percentage of the first number.{ph1}"
msgstr "在 + 之後，% 按鈕計算的是{ph0}第一個數的百分比。{ph1}"

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

#: website/public/index.html:553
msgctxt "page:index.html"
msgid "The handler’s instructions, decompiled code and calls."
msgstr "處理函式的指令、反編譯程式碼和呼叫關係。"

#: website/public/index.html:558
msgctxt "page:index.html"
msgid "Your agent explains"
msgstr "程式設計助手解釋"

#: website/public/index.html:559
msgctxt "page:index.html"
msgid "Which branch applies, what it calculates and how to rebuild it."
msgstr "走哪個分支、怎樣計算，以及如何重新實現。"

#: website/public/index.html:583
msgctxt "page:index.html"
msgid "Example 01 · Chrome’s dinosaur game"
msgstr "示例 01 · Chrome 小恐龍游戲"

#: website/public/index.html:584
msgctxt "page:index.html"
msgid "Why does the dinosaur get faster?"
msgstr "為什麼恐龍變得更快？"

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

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

#: website/public/index.html:667
msgctxt "page:index.html"
msgid "Restart"
msgstr "重新開始"

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

#: website/public/index.html:680
msgctxt "page:index.html"
msgid "Use the recovered acceleration rule"
msgstr "使用還原的加速規則"

#: website/public/index.html:684
msgctxt "page:index.html"
msgid "Original rule: start at 6, then increase toward 13."
msgstr "原版規則：速度從 6 開始，逐漸增加到 13。"

#: website/public/index.html:687
msgctxt "page:index.html"
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
msgstr "拖動滑塊，選擇自己的速度。按空格鍵或“跳躍”越過仙人掌。"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dino-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:609
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect this dinosaur game. Why does it get "
"faster? Show the speed rule, then build a small version with an adjustable "
"speed.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}用 REA "
"檢查這個小恐龍游戲。它為什麼會越來越快？找出速度規則，再做一個速度可調的小版本。{ph3}{ph4}{ph5}"

#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
#. {ph1}: </a >
#: website/public/index.html:707
#, python-brace-format
msgctxt "page:index.html"
msgid "Inspected target: {ph0}wayou’s Chromium-derived browser edition{ph1}."
msgstr "分析目標：{ph0}wayou 基於 Chromium 製作的瀏覽器版本{ph1}。"

#: website/public/index.html:698
msgctxt "page:index.html"
msgid "Open the speed lab →"
msgstr "開啟速度實驗室 →"

#: website/public/index.html:729
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:731
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA{ph1}{ph2}Read the running game’s script{ph3}{ph4}Return its "
"actual code and settings to the agent.{ph5}"
msgstr "{ph0}01 · REA{ph1}{ph2}讀取正在執行的遊戲指令碼{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:738
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · Your agent{ph1}{ph2}Rebuild the rule, add a control{ph3}{ph4}Use "
"the recovered acceleration in a small game with a speed slider.{ph5}"
msgstr ""
"{ph0}02 · 程式設計助手{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:746
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · You{ph1}{ph2}Change the speed and play{ph3}{ph4}Try the original "
"acceleration, then choose your own pace.{ph5}"
msgstr "{ph0}03 · 你{ph1}{ph2}調整速度，親自試玩{ph3}{ph4}先體驗原版加速，再選擇自己的節奏。{ph5}"

#: website/public/index.html:704
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:756
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"REA inspected the HTTP browser edition through a local debugging connection "
"and returned the loaded {ph0}, including its source and digest."
msgstr "REA 透過本地除錯連線檢查 HTTP 瀏覽器版本，返回了已載入的 {ph0}，包含原始碼和摘要。"

#: website/public/index.html:769
msgctxt "page:index.html"
msgid ""
"We called the original game’s update function in a controlled browser check,"
" with obstacles and automatic scheduling disabled. After 4,000 updates, "
"speed was 10.0; after 10,000, it was 13.0, rounded to one decimal."
msgstr ""
"我們在受控的瀏覽器檢查中呼叫原版更新函式，禁用了障礙物和自動排程。保留一位小數時，更新 4,000 次後的速度為 10.0，更新 10,000 次後為 "
"13.0。"

#. {ph0}: <a href="examples/dino-lab/">
#. {ph1}: </a>
#: website/public/index.html:775
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"The new mini-game keeps that speed rule. Its drawing, jumping and collision "
"code are a small teaching implementation. {ph0}Open the lab{ph1} to see the "
"new code and run the same speed check."
msgstr "新小遊戲保留了這條速度規則。繪圖、跳躍和碰撞程式碼是簡化的教學實現。{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:781
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"To inspect the target yourself, follow the {ph0}browser connection "
"steps{ph1} using {ph2}the dinosaur page{ph3}. Give your agent that page URL "
"and your local debugging endpoint, then copy the prompt above."
msgstr ""
"想親自分析？用{ph2}小恐龍頁面{ph3}跟著{ph0}瀏覽器連線步驟{ph1}操作。把頁面網址和本地除錯地址交給助手，再複製上面的 prompt。"

#. {ph0}: <a href="https://github.com/wayou/t-rex-
#. runner/blob/5455bfa408ec6b707c7300ff194b7390733a766d/index.js#L565-L571" >
#. {ph1}: </a >
#. {ph2}: <a href="assets/licenses/dinosaur.txt" >
#. {ph3}: </a >
#: website/public/index.html:790
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Inspected speed code{ph1} · {ph2}Chromium Authors · BSD license{ph3}"
msgstr "{ph0}分析的速度程式碼{ph1} · {ph2}Chromium Authors · BSD 許可證{ph3}"

#: website/public/index.html:807
msgctxt "page:index.html"
msgid "Example 02 · Windows Calculator"
msgstr "示例 02 · Windows 計算器"

#: website/public/index.html:808
msgctxt "page:index.html"
msgid "Rebuild Calculator’s % button."
msgstr "重新實現計算器的 % 按鈕。"

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

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

#: website/public/index.html:924
msgctxt "page:index.html"
msgid "Interactive illustration of the inspected percentage rule."
msgstr "根據實際分析得到的百分比規則製作的互動示例。"

#. {ph0}: <code>previous = 200</code>
#. {ph1}: <code>current = 10</code>
#: website/public/index.html:932
#, python-brace-format
msgctxt "page:index.html"
msgid "For this example, {ph0} and {ph1}."
msgstr "對於這個例子, {ph0} 和 {ph1}."

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="calculator-analysis-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:833
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator’s % button. Recover "
"the rules after + and ×, then build a small calculator that uses "
"both.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}用 REA 檢查 Windows 計算器的 % 按鈕。還原 + 和 × "
"後的規則，再做一個同時採用這兩條規則的小計算器。{ph3}{ph4}{ph5}"

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

#. {ph0}: <span>
#. {ph1}: </span >
#. {ph2}: <code>10% of 200 = 20 → 200 + 20 = 220</code>
#: website/public/index.html:850
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Take 10% of the first number.{ph1}{ph2}"
msgstr "{ph0}取第一個數字的10％。{ph1}{ph2}"

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

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

#: website/public/index.html:947
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:960
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}02 · REA reads the library{ph1}{ph2}Return the % handler’s "
"code{ph3}{ph4}The function checks the operator and uses the constant "
"{ph5}.{ph6}"
msgstr ""
"{ph0}02 · REA 讀取庫{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:968
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}03 · Your agent interprets it{ph1}{ph2}Explain and reproduce the "
"rules{ph3}{ph4}Crosscheck the branch with Microsoft’s source, then try + and"
" × above.{ph5}"
msgstr ""
"{ph0}03 · 程式設計助手解釋{ph1}{ph2}解釋並復現規則{ph3}{ph4}對照 Microsoft 的原始碼核實分支，再試試上面的 + "
"和 ×。{ph5}"

#: website/public/index.html:931
msgctxt "page:index.html"
msgid "See the real code and how the answer was checked"
msgstr "檢視實際程式碼和驗證方式"

#: website/public/index.html:1003
msgctxt "page:index.html"
msgid ""
"Inspected with REA 4.1.0: Windows Calculator 11.2508.4.0, x64. The readable "
"summary uses names from Microsoft’s public source to explain the recovered "
"branch."
msgstr ""
"使用 REA 4.1.0 檢查 Windows 計算器 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:1008
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}Percentage implementation{ph1} · {ph2}Microsoft’s test cases{ph3} · "
"{ph4}Native setup guide{ph5}"
msgstr "{ph0}百分比實現{ph1} · {ph2}Microsoft 測試用例{ph3} · {ph4}原生分析配置指南{ph5}"

#: website/public/index.html:1077
msgctxt "page:index.html"
msgid "Your first investigation"
msgstr "第一次調查"

#: website/public/index.html:1078
msgctxt "page:index.html"
msgid "Try REA on a small app."
msgstr "用一個小應用試試 REA。"

#: website/public/index.html:1079
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:1084
msgctxt "page:index.html"
msgid "Try the guided example"
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 "從應用目錄或 ASAR 檔案中分析模組、路由、IPC 和原生依賴。"

#: 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:1193
msgctxt "page:index.html"
msgid "Any questions?"
msgstr "有什麼問題嗎？"

#: 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 "和程式設計助手一起分析應用、二進位制檔案和瀏覽器行為。跟著清晰的指南，體驗 REA 的互動示例。"

#: website/public/index.html:259
msgctxt "page:index.html"
msgid "Copy REA installation prompt"
msgstr "複製REA安裝提示"

#: website/public/index.html:283
msgctxt "page:index.html"
msgid "Copy setup command"
msgstr "複製安裝命令"

#: website/public/index.html:363
msgctxt "page:index.html"
msgid "Follow the manual Calculator analysis"
msgstr "按照手動計算器分析"

#: website/public/index.html:519
msgctxt "page:index.html"
msgid "Copy Calculator percentage question"
msgstr "複製計算器百分比問題"

#: website/public/index.html:653
msgctxt "page:index.html"
msgid ""
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
"focused."
msgstr "小恐龍游戲。點選“跳躍”，或在遊戲獲得焦點後按空格鍵。"

#: website/public/index.html:600
msgctxt "page:index.html"
msgid "Copy dinosaur analysis prompt"
msgstr "複製恐龍分析提示"

#: website/public/index.html:870
msgctxt "page:index.html"
msgid "Choose the calculation"
msgstr "選擇計算"

#: website/public/index.html:824
msgctxt "page:index.html"
msgid "Copy Calculator analysis prompt"
msgstr "複製計算器分析提示"

#: website/public/index.html:1228
msgctxt "page:index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/showcase/aegis/index.html:108
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:200
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Android"
msgstr "{ph0}首頁{ph1} / {ph2}案例展示{ph3} /安卓"

#: website/public/showcase/aegis/index.html:203
msgctxt "page:showcase/aegis/index.html"
msgid "Case study · Aegis Authenticator"
msgstr "案例研究 · Aegis驗證器"

#. {ph0}: <br />
#: website/public/showcase/aegis/index.html:204
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "How does an authenticator{ph0}generate a login code?"
msgstr "身份驗證器如何{ph0}生成登入程式碼？"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/aegis/index.html:205
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A six-digit code changes every 30 seconds. Use REA to find the calculation "
"in an Android APK, then rebuild it with a clock you can control."
msgstr "六位驗證碼每 30 秒變化一次。用 REA 在 Android APK 中找出計算方法，再重建一個可調節時鐘的演示。"

#: website/public/showcase/aegis/index.html:210
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis 3.4.3 · Android · Official release APK · 6.9 MB"
msgstr "Aegis 3.4.3 · Android · 正式釋出 APK ·6.9MB"

#: website/public/showcase/aegis/index.html:213
msgctxt "page:showcase/aegis/index.html"
msgid "View Aegis on GitHub"
msgstr "在GitHub上檢視Aegis"

#: website/public/showcase/aegis/index.html:219
msgctxt "page:showcase/aegis/index.html"
msgid "From an APK to a code you can reproduce"
msgstr "從 APK 還原可復現的驗證碼"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node" >
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:221
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}01 · Locate the feature{ph1}{ph2}3,077 classes → generating "
"methods{ph3}{ph4}REA searches the package and traces the code used by the "
"display and copy actions.{ph5}"
msgstr ""
"{ph0}01 · 定位功能{ph1}{ph2}3,077 個類 → 生成方法{ph3}{ph4}REA "
"搜尋包，追蹤顯示和複製驗證碼時使用的程式碼。{ph5}"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:230
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}02 · Read the calculation{ph1}{ph2}Time + account key → six "
"digits{ph3}{ph4}REA returns the methods and defaults. The agent explains how"
" they fit together.{ph5}"
msgstr ""
"{ph0}02 · 閱讀計算{ph1}{ph2}時間 + 賬戶金鑰 → 六位數字{ph3}{ph4}REA "
"返回方法與預設值，助手解釋它們如何配合。{ph5}"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html:238
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}03 · Rebuild and check{ph1}{ph2}Change the clock. Watch the "
"code.{ph3}{ph4}A new browser demo reproduces the rule and checks it against "
"public reference cases.{ph5}"
msgstr ""
"{ph0}03 · 重建並驗證{ph1}{ph2}調整時鐘，檢視驗證碼。{ph3}{ph4}新的瀏覽器演示覆現規則，再用公開對照用例檢查。{ph5}"

#: website/public/showcase/aegis/index.html:251
msgctxt "page:showcase/aegis/index.html"
msgid "In this case study"
msgstr "在本個案研究中"

#. {ph0}: <a href="#ask">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:253
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Ask your agent{ph1}"
msgstr "{ph0}問問你的程式設計助手{ph1}"

#. {ph0}: <a href="#demo">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:254
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Try the code generator{ph1}"
msgstr "{ph0}試試程式碼生成器{ph1}"

#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:255
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Find the code with REA{ph1}"
msgstr "{ph0}用REA查詢程式碼 {ph1}"

#. {ph0}: <a href="#calculation">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:256
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Read the calculation{ph1}"
msgstr "{ph0}閱讀計算{ph1}"

#. {ph0}: <a href="#verify">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:257
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}Check the reconstruction{ph1}"
msgstr "{ph0}檢查重建{ph1}"

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

#: website/public/showcase/aegis/index.html:263
msgctxt "page:showcase/aegis/index.html"
msgid "Ask your agent"
msgstr "問問你的程式設計助手"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:264
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app shows a changing login code. We want to find {ph0}what makes it "
"change{ph1} and reproduce that behavior."
msgstr "該應用程式顯示更改的登入程式碼。 我們想找到 {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:270
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

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

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:294
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"An example prompt for the downloaded APK, with REA's Android analysis "
"configured. {ph0}Get the APK and analysis setup ↓{ph1}"
msgstr ""
"這是用於下載的 APK 的示例 prompt，需要先配置 REA 的 Android 分析後端。{ph0}獲取 APK 和分析配置 ↓{ph1}"

#: website/public/showcase/aegis/index.html:302
msgctxt "page:showcase/aegis/index.html"
msgid "Try the code generator"
msgstr "試試程式碼生成器"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <mark class="prose-highlight">
#. {ph1}: </mark>
#: website/public/showcase/aegis/index.html:303
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The app groups time into {ph0}30-second blocks.{ph1} It combines the block "
"number with the account key to generate a code. The same key and block "
"produce the same code."
msgstr "應用把時間劃分為{ph0}每塊 30 秒{ph1}，再結合時間塊編號和賬戶金鑰生成驗證碼。同樣的金鑰和時間塊，會得到同樣的驗證碼。"

#: website/public/showcase/aegis/index.html:310
msgctxt "page:showcase/aegis/index.html"
msgid "Move the clock across 60 seconds"
msgstr "將時鐘移動60秒"

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

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

#: website/public/showcase/aegis/index.html:316
msgctxt "page:showcase/aegis/index.html"
msgid "Our adjustable example clock"
msgstr "我們的可調節示例時鐘"

#: website/public/showcase/aegis/index.html:319
msgctxt "page:showcase/aegis/index.html"
msgid "30-second block"
msgstr "30秒區塊"

#: website/public/showcase/aegis/index.html:321
#: website/public/showcase/aegis/index.html:648
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:322
#, 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:330
msgctxt "page:showcase/aegis/index.html"
msgid "Generated code"
msgstr "生成的驗證碼"

#: website/public/showcase/aegis/index.html:338
msgctxt "page:showcase/aegis/index.html"
msgid "Account key + block → six digits"
msgstr "帳戶金鑰+區塊→六位數字"

#: website/public/showcase/aegis/index.html:344
msgctxt "page:showcase/aegis/index.html"
msgid "Example time, in seconds"
msgstr "示例時間，以秒為單位"

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

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

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <strong>
#. {ph3}: </strong>
#: website/public/showcase/aegis/index.html:375
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"At 59 seconds: {ph0}287082.{ph1} At 60 seconds: {ph2}359152.{ph3} Moving "
"within one block leaves the code unchanged."
msgstr "在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:382
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The key is fixed, public {ph0}RFC 6238 test data{ph1}. The demo implements "
"the calculation recovered from the APK."
msgstr "金鑰是固定的，公開的 {ph0}RFC6238測試資料{ph1}. 該演示實現了從APK恢復的計算。"

#: website/public/showcase/aegis/index.html:389
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The diagram shows the result at 59 seconds. Enable JavaScript to change the "
"clock."
msgstr "該圖顯示了59秒時的結果。 啟用JavaScript以更改時鐘。"

#: website/public/showcase/aegis/index.html:398
msgctxt "page:showcase/aegis/index.html"
msgid "Find the code with REA"
msgstr "用REA查詢程式碼"

#: website/public/showcase/aegis/index.html:401
msgctxt "page:showcase/aegis/index.html"
msgid "Narrow the APK to three classes"
msgstr "將APK縮小到三個類"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>TotpInfo</code>
#: website/public/showcase/aegis/index.html:426
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0} is the calculation candidate; the other two concern the progress bar "
"and imported accounts. TOTP means a time-based one-time password."
msgstr "{ph0} 是計算邏輯的候選方法；另外兩個涉及進度條和匯入的賬戶。TOTP 指基於時間的一次性密碼。"

#: website/public/showcase/aegis/index.html:433
msgctxt "page:showcase/aegis/index.html"
msgid "Connect the generator to the app's display"
msgstr "將生成器連線到應用程式的顯示器"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>EntryHolder.getOtp</code>
#. {ph1}: <code>TotpInfo.getOtp(timestamp)</code>
#: website/public/showcase/aegis/index.html:461
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA identifies the timestamp overload and finds the base method's callers. "
"Inspecting {ph0} then shows the display calling {ph1}."
msgstr "REA 找到接受時間戳的方法過載，並定位基礎方法的呼叫方。繼續檢查 {ph0}，就能看到顯示邏輯呼叫了 {ph1}。"

#. {ph0}: <code>com.beemdevelopment.aegis</code>
#: website/public/showcase/aegis/index.html:469
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Requests show a shortened input path. Result class names omit the common "
"{ph0} prefix."
msgstr "請求顯示縮短的輸入路徑。 結果類名省略常用 {ph0} 字首。"

#: website/public/showcase/aegis/index.html:476
msgctxt "page:showcase/aegis/index.html"
msgid "Read the calculation"
msgstr "閱讀計算"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:477
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"REA returns {ph0}the clock conversion, default settings and generating "
"methods.{ph1} The constructors set a 30-second interval and six digits; the "
"timestamp method turns seconds into a block number."
msgstr ""
"REA 返回{ph0}時間轉換、預設設定和生成方法{ph1}。建構函式把間隔設為 30 秒、位數設為 6；接受時間戳的方法將秒數轉換為時間塊編號。"

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

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

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

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:567
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Time chooses the block.{ph1} Seconds 30 through 59 all give block 1. At"
" 60 seconds, the block becomes 2."
msgstr "{ph0}時間選擇塊。{ph1} 秒30到59都給塊1。 在60秒時，塊變為2。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:573
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}The key matters too.{ph1} The generator combines the account key with "
"the block. An account with a different key can show a different code at the "
"same time."
msgstr "{ph0}金鑰也會影響結果。{ph1} 生成函式把賬戶金鑰和時間塊組合起來。金鑰不同的賬戶，在同一時間也可能顯示不同驗證碼。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:580
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Keep six digits.{ph1} The remainder after division by 1,000,000 is "
"padded with zeroes when needed, so a code can begin with 0."
msgstr "{ph0}保留六位數字。{ph1} 取除以 1,000,000 的餘數，位數不足時在前面補零，因此驗證碼也可以以 0 開頭。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <a
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
#. >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:587
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Excerpts from several inspected methods, with line wrapping for display. The"
" right panel is an explanatory summary. {ph0}Aegis code is GPL-3.0.{ph1}"
msgstr "這些節選來自多個檢查過的方法，為便於顯示增加了換行。右側是解釋性摘要。{ph0}Aegis 原始碼採用 GPL-3.0 許可。{ph1}"

#: website/public/showcase/aegis/index.html:596
msgctxt "page:showcase/aegis/index.html"
msgid "Inside the generator"
msgstr "驗證碼生成函式內部"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>generateOTP</code>
#. {ph1}: <code>kotlin.ExceptionsKt</code>
#. {ph2}: <code>TotpInfo</code>
#. {ph3}: <code>HOTP</code>
#: website/public/showcase/aegis/index.html:597
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The released APK puts {ph0} in {ph1}. REA follows the call from {ph2} and "
"returns this body; the original source calls the helper {ph3}."
msgstr ""
"釋出的 APK 將 {ph0} 放在 {ph1} 中。REA 從 {ph2} 追蹤呼叫，並返回這個函式體；原始原始碼把輔助函式命名為 {ph3}。"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/aegis/index.html:619
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The last hash byte selects a position. Four bytes at that position provide a"
" positive 31-bit number; formatting reduces it to the requested number of "
"digits. The constructor's last argument selects the code-formatting branch "
"introduced by compilation."
msgstr ""
"雜湊的最後一個位元組決定讀取位置。從這個位置讀取四個位元組，得到正的 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:626
#, 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:636
msgctxt "page:showcase/aegis/index.html"
msgid "Check the reconstruction"
msgstr "檢查重建"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/aegis/index.html:637
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"We assembled the selected REA-returned Java methods in a small test program."
" Their output matched an independent reconstruction on {ph0}133 test "
"cases{ph1}, including time-block boundaries and codes beginning with zero."
msgstr ""
"我們將選定的 REA 返回的 Java 方法放進小型測試程式。它們的輸出與獨立重建的實現一致，共驗證 {ph0}133 "
"個測試用例{ph1}，包括時間塊邊界和以零開頭的驗證碼。"

#: website/public/showcase/aegis/index.html:647
msgctxt "page:showcase/aegis/index.html"
msgid "Example time"
msgstr "示例時間"

#: website/public/showcase/aegis/index.html:649
msgctxt "page:showcase/aegis/index.html"
msgid "Six-digit code"
msgstr "六位驗證碼"

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

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

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
#. {ph1}: </a >
#: website/public/showcase/aegis/index.html:676
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The generator also matches the six published SHA-1 reference cases in "
"{ph0}RFC 6238{ph1}. Check the browser implementation against them:"
msgstr "生成函式還符合 {ph0}RFC 6238{ph1} 中釋出的六個 SHA-1 對照用例。可以用這些用例檢查瀏覽器實現："

#: website/public/showcase/aegis/index.html:684
msgctxt "page:showcase/aegis/index.html"
msgid "Run reference checks"
msgstr "執行對照檢查"

#: website/public/showcase/aegis/index.html:691
msgctxt "page:showcase/aegis/index.html"
msgid "Read the demo's calculation"
msgstr "閱讀演示的計算"

#: website/public/showcase/aegis/index.html:695
msgctxt "page:showcase/aegis/index.html"
msgid ""
"The reference cases use eight digits. The check also verifies their six-"
"digit results."
msgstr "參考案例使用八位數字。 檢查也驗證他們的六位數的結果。"

#: website/public/showcase/aegis/index.html:704
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Verification runs extracted Java methods and the new demo. The Android APK "
"was inspected statically."
msgstr "驗證執行提取的Java方法和新的演示。 對Android APK進行了靜態檢查。"

#: website/public/showcase/aegis/index.html:711
msgctxt "page:showcase/aegis/index.html"
msgid "Inspect the APK yourself"
msgstr "親自檢查APK"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:712
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Set up REA{ph1} on macOS or Linux, then download these two files into "
"the same folder. On Windows, use a Linux environment such as WSL."
msgstr ""
"先在 macOS 或 Linux 上{ph0}設定 REA{ph1}，再將這兩個檔案下載到同一資料夾。Windows 上可使用 WSL 等 Linux "
"環境。"

#. {ph0}: <code>JAVA_HOME</code>
#. {ph1}: <code>PATH</code>
#: website/public/showcase/aegis/index.html:717
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Android analysis needs a full JDK 17 or later. Select it with {ph0} or "
"{ph1}. This case used JDK 21."
msgstr "Android分析需要完整的JDK17或更高版本。 選擇它與 {ph0} 或 {ph1}. 本案例使用了JDK21。"

#: website/public/showcase/aegis/index.html:733
msgctxt "page:showcase/aegis/index.html"
msgid "Point REA at the provider file and inspect the APK:"
msgstr "讓 REA 使用分析後端配置檔案，再檢查 APK："

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

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>REA_JADX_MCP_JAR</code>
#: website/public/showcase/aegis/index.html:750
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Your agent can continue through REA's CLI using the prompt above. For MCP, "
"add {ph0} to the REA server's environment and reconnect it."
msgstr "助手可以透過 REA CLI 繼續使用上方的 prompt。如果使用 MCP，將 {ph0} 加入 REA 服務的環境配置，再重新連線。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/showcase/aegis/index.html:755
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"A next question: {ph0}what happens when an account uses eight digits or a "
"different time interval?{ph1}"
msgstr "下一個問題: {ph0}當帳戶使用八位數字或不同的時間間隔時會發生什麼？{ph1}"

#: website/public/showcase/aegis/index.html:765
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:767
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Official Aegis 3.4.3 release{ph1} · {ph2}Matching source commit{ph3} · "
"{ph4}GPL-3.0 license{ph5}"
msgstr "{ph0}官方Aegis3.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:783
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid "{ph0}RFC 6238 reference cases{ph1} · {ph2}Demo test data{ph3}"
msgstr "{ph0}RFC6238參考案例{ph1} · {ph2}演示測試資料{ph3}"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/aegis/index.html:790
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspected with REA 6.1.0 on 9 October 2026. Decompiled excerpts are credited"
" to Aegis; the diagram, readable summary and browser reconstruction are new "
"teaching material."
msgstr "使用 REA 6.1.0 於 2026 年 10 月 9 日檢查。反編譯節選歸屬 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"

# Reviewed for clear case-study reasoning and evidence.
#: 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 "用 REA 檢查 Aegis Android APK，還原六位登入驗證碼的計算，再試玩可調時鐘的重建演示。"

#: website/public/showcase/aegis/index.html:250
msgctxt "page:showcase/aegis/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/showcase/aegis/index.html:261
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK case study"
msgstr "Aegis APK案例研究"

#: website/public/showcase/aegis/index.html:274
msgctxt "page:showcase/aegis/index.html"
msgid "Copy Aegis example prompt"
msgstr "複製Aegis示例提示"

#: website/public/showcase/aegis/index.html:487
msgctxt "page:showcase/aegis/index.html"
msgid "Follow the login-code calculation"
msgstr "按照登入程式碼計算"

#: website/public/showcase/aegis/index.html:737
msgctxt "page:showcase/aegis/index.html"
msgid "Copy APK inspection command"
msgstr "複製APK檢查命令"

#: website/public/showcase/aegis/index.html:814
msgctxt "page:showcase/aegis/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/showcase/ctf/index.html:107
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:199
#, 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:202
msgctxt "page:showcase/ctf/index.html"
msgid "Case study · DownUnderCTF 2023"
msgstr "案例研究·Downunderctf2023"

#. {ph0}: <br />
#: website/public/showcase/ctf/index.html:203
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "Find the flag in{ph0}a CTF binary."
msgstr "找到國旗{ph0}一個CTF二進位制檔案。"

#. {ph0}: <code>Correct!</code>
#: website/public/showcase/ctf/index.html:204
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Use REA to inspect a small flag checker, turn its rules into equations and "
"find an input that makes the original program print {ph0}."
msgstr "使用方法 REA 要檢查一個小的flag 檢查器，將其規則轉換為方程，並找到一個使原始程式列印的輸入 {ph0}."

#: website/public/showcase/ctf/index.html:209
msgctxt "page:showcase/ctf/index.html"
msgid "masked squares flag checker · Easy · Linux x86-64"
msgstr "蒙面方格旗檢查器 · 容易·Linuxx86-64"

#: website/public/showcase/ctf/index.html:212
msgctxt "page:showcase/ctf/index.html"
msgid "View the original challenge"
msgstr "檢視原始挑戰"

#: website/public/showcase/ctf/index.html:220
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:222
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}01 · Find the check{ph1}{ph2}Strings → checking functions{ph3}{ph4}REA "
"finds the prompt, its references and the code that accepts or rejects an "
"input.{ph5}"
msgstr ""
"{ph0}01 · 找到檢查{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:230
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Extract the rules{ph1}{ph2}36 characters · 26 sums{ph3}{ph4}REA "
"returns the instructions and data behind each check. The agent turns them "
"into equations.{ph5}"
msgstr ""
"{ph0}02 · 提取規則{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:238
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Solve and run{ph1}{ph2}Recovered flag → Correct!{ph3}{ph4}A Python"
" script solves the equations. REA captures the original program accepting "
"the result.{ph5}"
msgstr ""
"{ph0}03 · 解決並執行{ph1}{ph2}恢復旗→正確！{ph3}{ph4}一個Python指令碼解決方程. REA "
"捕獲接受結果的原始程式。{ph5}"

#: website/public/showcase/ctf/index.html:247
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The challenge is by joseph, published in DownUnderCTF's official repository."
msgstr "挑戰是由約瑟夫，發表在DownUnderCTF的官方程式碼儲存庫。"

#: website/public/showcase/ctf/index.html:255
msgctxt "page:showcase/ctf/index.html"
msgid "In this case study"
msgstr "在本個案研究中"

#. {ph0}: <a href="#find">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:257
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Find the checking code{ph1}"
msgstr "{ph0}查詢檢查程式碼{ph1}"

#. {ph0}: <a href="#mask">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:258
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Read one mask{ph1}"
msgstr "{ph0}讀一個面具{ph1}"

#. {ph0}: <a href="#code">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:259
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Assembly to readable code{ph1}"
msgstr "{ph0}彙編到可讀程式碼{ph1}"

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

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

#. {ph0}: <a href="#try">
#. {ph1}: </a>
#: website/public/showcase/ctf/index.html:262
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}Try it yourself{ph1}"
msgstr "{ph0}你自己試試吧{ph1}"

#: website/public/showcase/ctf/index.html:267
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:268
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The handout is a 15 KB executable. It asks for a flag, then prints {ph0} or "
"{ph1}. Start with a simple request to your agent."
msgstr "講義是一個15KB可執行檔案。 它要求一面旗幟，然後列印 {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:275
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

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

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="ctf-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/ctf/index.html:289
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze ms_flag_checker and find the flag. "
"Explain how the checks work, then verify the answer with the original "
"program.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}使用REA分析ms_flag_checker並找到標誌。 "
"解釋檢查是如何工作的，然後用原始程式驗證答案。{ph3}{ph4}{ph5}"

#: website/public/showcase/ctf/index.html:298
msgctxt "page:showcase/ctf/index.html"
msgid ""
"An example prompt, with the downloaded challenge available locally and a "
"native analysis provider connected."
msgstr "一個示例提示，下載的質詢在本地可用，並連線了原生分析提供程式。"

#: website/public/showcase/ctf/index.html:304
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the input prompt to its function"
msgstr "按照輸入提示到其函式"

#: website/public/showcase/ctf/index.html:333
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The reference gives the agent a place to investigate, even though the "
"executable's original function names have been removed."
msgstr "引用為程式設計助手提供了一個調查的地方，即使可執行檔案的原始函式名已被刪除。"

#: website/public/showcase/ctf/index.html:340
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:368
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The first loop copies 36 character codes. The checking loop decodes a mask, "
"sums the selected codes and compares the result with a stored number. Its "
"{ph0}-byte steps across {ph1} bytes give 26 masks."
msgstr ""
"第一個迴圈複製36個字元程式碼。 檢查迴圈解碼掩碼，對所選程式碼求和，並將結果與儲存的數字進行比較。 其 {ph0}-位元組跨步 {ph1} "
"位元組給出26個掩碼。"

#: website/public/showcase/ctf/index.html:376
msgctxt "page:showcase/ctf/index.html"
msgid ""
"These are selected results from a fresh REA analysis. The local target path "
"is shortened for display; addresses refer to REA's imported image."
msgstr "這些是來自新鮮REA分析的選擇結果。 本地目標路徑縮短顯示;地址參考REA的匯入影象。"

#: website/public/showcase/ctf/index.html:384
msgctxt "page:showcase/ctf/index.html"
msgid "One check reveals one character"
msgstr "一張檢查顯示一個字元"

#: website/public/showcase/ctf/index.html:385
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The checker arranges the input in a 6×6 grid. A mask chooses which cells "
"contribute to a sum. Its compact encoding uses negative numbers to skip "
"cells and positive numbers to select them."
msgstr "檢查器將輸入排列在6×6網格中。 掩碼選擇哪些單元格對總和做出貢獻。 它的緊湊編碼使用負數跳過單元格和正數來選擇它們。"

#. {ph0}: <a href="../../assets/figures/ctf-mask-equation.svg" >
#. {ph1}: </a >
#: website/public/showcase/ctf/index.html:405
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "The seventh check selects just one position. {ph0}Open figure{ph1}."
msgstr "第七個檢查只選擇一個位置。 {ph0}開啟圖{ph1}."

#: website/public/showcase/ctf/index.html:412
msgctxt "page:showcase/ctf/index.html"
msgid "Read the mask and its target from the binary"
msgstr "從二進位制檔案中讀取掩碼及其目標"

#. {ph0}: <code>MOVSX</code>
#. {ph1}: <code>eb</code>
#. {ph2}: <code>code[21] = 55</code>
#. {ph3}: <code>7</code>
#: website/public/showcase/ctf/index.html:434
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instruction {ph0} reads mask bytes as signed values. This is why {ph1} "
"means −21. The target is a little-endian integer. Together, these bytes tell"
" the agent that {ph2}, so that character is {ph3}."
msgstr ""
"指示 {ph0} 將掩碼位元組讀取為有符號值。 這就是為什麼 {ph1} 表示-21. 目標是一個小端整數。 這些位元組一起告訴程式設計助手 "
"{ph2}，所以該字元是 {ph3}."

#: website/public/showcase/ctf/index.html:443
msgctxt "page:showcase/ctf/index.html"
msgid "From instructions to a readable check"
msgstr "從指令到可讀的檢查"

#: website/public/showcase/ctf/index.html:444
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Select a step to connect the summing helper and its caller to the same rule "
"in C."
msgstr "選擇一個步驟將求和幫助程式及其呼叫者連線到C中的同一規則。"

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

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

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

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:478
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}04{ph1} Advance"
msgstr "{ph0}04{ph1} 前進，前進"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/ctf/index.html:486
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}05{ph1} Compare"
msgstr "{ph0}05{ph1} 比較一下"

#: website/public/showcase/ctf/index.html:498
msgctxt "page:showcase/ctf/index.html"
msgid "REA · selected original instructions"
msgstr "REA  · 選定的原始說明"

#: website/public/showcase/ctf/index.html:522
msgctxt "page:showcase/ctf/index.html"
msgid "Readable C · one-check summary"
msgstr "可讀的C · 一檢查摘要"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ECX</code>
#: website/public/showcase/ctf/index.html:551
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "{ph0}01 · Start at zero.{ph1} {ph2} holds the running sum."
msgstr "{ph0}01 · 從零開始。{ph1} {ph2} 持有執行總和。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:555
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}02 · Check the mask cell.{ph1} A zero value skips the character; a "
"nonzero value includes it."
msgstr "{ph0}02 · 檢查掩碼單元格。{ph1} 零值跳過字元;非零值包括它。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:559
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}03 · Add a character code.{ph1} The input's integer at the same offset "
"is added to the sum."
msgstr "{ph0}03 · 新增字元程式碼。{ph1} 輸入在相同偏移量處的整數被新增到總和中。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/showcase/ctf/index.html:563
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}04 · Move to the next cell.{ph1} The original loop advances four bytes "
"per integer and visits six rows of six cells."
msgstr "{ph0}04 · 移動到下一個單元格。{ph1} 原始迴圈每個整數前進四個位元組，並訪問六個單元格的六行。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>EAX</code>
#. {ph3}: <code>Incorrect!</code>
#: website/public/showcase/ctf/index.html:568
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}05 · Compare with the stored target.{ph1} The caller receives the sum "
"in {ph2}. A mismatch jumps to {ph3}."
msgstr "{ph0}05 · 與儲存的目標進行比較。{ph1} 呼叫方在 {ph2}. 不匹配跳轉到 {ph3}."

#: website/public/showcase/ctf/index.html:575
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The instructions come from the summing helper and its caller. The C is an "
"explanatory summary with descriptive names and a flattened 36-cell loop."
msgstr "指令來自求和助手及其呼叫者。 C是一個具有描述性名稱和扁平36個單元格迴圈的解釋性摘要。"

#: website/public/showcase/ctf/index.html:583
msgctxt "page:showcase/ctf/index.html"
msgid "Solve the 26 equations"
msgstr "求解26個方程"

#: website/public/showcase/ctf/index.html:584
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Most masks select several cells. For example, the first check adds 16 "
"character codes and requires a total of 1441. The overlapping selections "
"give equations that a small Python script can solve together."
msgstr ""
"大多數掩碼選擇幾個單元格。 例如，第一次檢查新增了16個字元程式碼，總共需要1441個。 重疊的選擇給出了一個小的Python指令碼可以一起求解的方程。"

#: website/public/showcase/ctf/index.html:592
msgctxt "page:showcase/ctf/index.html"
msgid "Python · solver excerpt"
msgstr "Python · 求解器摘錄"

#. {ph0}: <code>DUCTF{…}</code>
#: website/public/showcase/ctf/index.html:620
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Z3 is a solver that finds values satisfying these equations. This excerpt "
"uses the extracted checks and assumes a {ph0} flag with letters, digits, "
"underscores and braces. The complete download includes all 26 masks and "
"targets."
msgstr ""
"Z3是一個求解器，可以找到滿足這些方程的值。 此摘錄使用提取的檢查，並假定 {ph0} 用字母，數字，下劃線和大括號標記。 "
"完整的下載包括所有26個面具和目標。"

#: website/public/showcase/ctf/index.html:626
msgctxt "page:showcase/ctf/index.html"
msgid "Download the complete solver"
msgstr "下載完整的求解器"

#: website/public/showcase/ctf/index.html:632
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:633
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"REA's process capture records the original executable accepting the solved "
"flag. Changing one selected character from {ph0} to {ph1} makes the first "
"sum 1440 instead of 1441, and the program rejects it."
msgstr ""
"REA的程序捕獲記錄接受已解決標誌的原始可執行檔案。 更改一個選定的字元 {ph0} 到 {ph1} 使第一和1440而不是1441，並且程式拒絕它。"

#: website/public/showcase/ctf/index.html:643
msgctxt "page:showcase/ctf/index.html"
msgid "Input"
msgstr "輸入"

#: website/public/showcase/ctf/index.html:644
msgctxt "page:showcase/ctf/index.html"
msgid "Observed output"
msgstr "觀察到的輸出"

#: website/public/showcase/ctf/index.html:645
msgctxt "page:showcase/ctf/index.html"
msgid "Exit code"
msgstr "退出程式碼"

#: website/public/showcase/ctf/index.html:650
msgctxt "page:showcase/ctf/index.html"
msgid "Solver's flag"
msgstr "解算者之旗"

#: website/public/showcase/ctf/index.html:655
msgctxt "page:showcase/ctf/index.html"
msgid "One character changed"
msgstr "一個角色改變了"

#: website/public/showcase/ctf/index.html:663
msgctxt "page:showcase/ctf/index.html"
msgid "Show the recovered flag and captured output"
msgstr "顯示恢復的標誌和捕獲的輸出"

#: website/public/showcase/ctf/index.html:666
msgctxt "page:showcase/ctf/index.html"
msgid "REA · original program output"
msgstr "REA · 原始程式輸出"

#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Copy flag"
msgstr "複製標誌"

#: website/public/showcase/ctf/index.html:679
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The recovered value also matches the flag in the organizers' published "
"challenge metadata, checked after solving the binary."
msgstr "恢復的值還與組織者釋出的挑戰後設資料中的標誌相匹配，在解決二進位制後檢查。"

#: website/public/showcase/ctf/index.html:685
msgctxt "page:showcase/ctf/index.html"
msgid "Source, target identity and analysis details"
msgstr "來源、目標身份和分析詳細資訊"

#: website/public/showcase/ctf/index.html:686
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Fresh analysis and two process captures on 8 October 2026, using REA 4.1.0 "
"with Ghidra 12.1.4 on Linux x64. The binary is a stripped x86-64 ELF, 15,248"
" bytes."
msgstr ""
"在2026年10月8日使用REA4.1.0和Ghidra12.1.4在Linux x64上進行新的分析和兩個過程捕獲。 "
"二進位制檔案是一個剝離的x86-64ELF，15,248位元組。"

#: website/public/showcase/ctf/index.html:697
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The string references, functions and constants were inspected before reading"
" the organizers' source or solution. The Python solver and the diagram were "
"built from those REA results."
msgstr "在閱讀組織者的原始碼或解決方案之前，對字串引用，函式和常量進行了檢查。 Python求解器和圖表是根據REA結果構建的。"

#. {ph0}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/src/ms_flag_checker.c" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/DownUnderCTF/Challenges_2023_Public/blob/b48f83db2984bc7fa2ec7879a32d7efb1be8d333/rev/masked-
#. squares-flag-checker/ctfcli.yaml" >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/morluto/rea/blob/main/website/evidence/ctf-masked-
#. squares.md" >
#. {ph5}: </a >
#: website/public/showcase/ctf/index.html:702
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"{ph0}Compare with the organizers' source{ph1} · {ph2}Challenge metadata and "
"flag{ph3} · {ph4}REA evidence notes{ph5}"
msgstr "{ph0}與主辦方來源比較{ph1} · {ph2}挑戰後設資料和標誌{ph3} · {ph4} REA證據說明{ph5}"

#: website/public/showcase/ctf/index.html:722
msgctxt "page:showcase/ctf/index.html"
msgid "Try it yourself"
msgstr "你自己試試吧"

#: website/public/showcase/ctf/index.html:723
msgctxt "page:showcase/ctf/index.html"
msgid ""
"Download the original challenge and the solver into one folder. Use the "
"prompt above to investigate with your agent, or run the included script."
msgstr "將原始挑戰和求解器下載到一個資料夾中。 使用上面的提示與你的程式設計助手進行調查，或執行包含的指令碼。"

#: website/public/showcase/ctf/index.html:739
msgctxt "page:showcase/ctf/index.html"
msgid "Terminal · solve and run"
msgstr "終端 · 解決和執行"

#. {ph0}: <code>z3-solver</code>
#: website/public/showcase/ctf/index.html:756
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The script prints a candidate flag; paste it at the program's prompt. "
"Solving needs Python and {ph0}. Running the original executable needs Linux "
"x86-64."
msgstr "指令碼列印候選標誌；將其貼上到程式的提示符處。 解決需要Python和 {ph0}. 執行原始可執行檔案需要Linux x86-64。"

#: website/public/showcase/ctf/index.html:761
msgctxt "page:showcase/ctf/index.html"
msgid "Set up REA with your coding agent"
msgstr "設定REA與你的程式設計助手"

#: website/public/showcase/ctf/index.html:6
msgctxt "page:showcase/ctf/index.html"
msgid "CTF Reverse Engineering: DownUnderCTF Flag Checker — REA"
msgstr "CTF逆向工程：DownUnderCTFflag 檢查器-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來解決DownUnderCTF的掩碼方塊flag 檢查器。 找到檢查函式，提取掩碼並將恢復的標誌與原始程式進行比較。"

#: website/public/showcase/ctf/index.html:254
msgctxt "page:showcase/ctf/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/showcase/ctf/index.html:265
msgctxt "page:showcase/ctf/index.html"
msgid "CTF flag-checker case study"
msgstr "CTFflag 檢查個案研究"

#: website/public/showcase/ctf/index.html:280
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF example prompt"
msgstr "複製CTF示例提示"

#: website/public/showcase/ctf/index.html:391
msgctxt "page:showcase/ctf/index.html"
msgid "CTF mask equation; scroll horizontally on smaller screens"
msgstr "CTF掩碼方程;在較小的螢幕上水平滾動"

#: website/public/showcase/ctf/index.html:397
msgctxt "page:showcase/ctf/index.html"
msgid ""
"The seventh mask skips 21 cells, selects position 21, then skips 14. Only "
"that cell contributes to the sum. Its required character code is 55, which "
"means the character is 7."
msgstr "第七個掩碼跳過21個單元格，選擇位置21，然後跳過14。 只有該單元格貢獻總和。 它所需的字元程式碼是55，這意味著字元是7。"

#: website/public/showcase/ctf/index.html:449
msgctxt "page:showcase/ctf/index.html"
msgid "Follow the CTF check"
msgstr "遵循CTF檢查"

#: website/public/showcase/ctf/index.html:499
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF assembly"
msgstr "複製CTF裝配"

#: website/public/showcase/ctf/index.html:523
msgctxt "page:showcase/ctf/index.html"
msgid "Copy readable CTF check"
msgstr "複製可讀CTF檢查"

#: website/public/showcase/ctf/index.html:593
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver excerpt"
msgstr "複製CTF解算器摘錄"

#: website/public/showcase/ctf/index.html:667
msgctxt "page:showcase/ctf/index.html"
msgid "Copy recovered flag"
msgstr "複製恢復標誌"

#: website/public/showcase/ctf/index.html:740
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver commands"
msgstr "複製CTF求解器命令"

#: website/public/showcase/ctf/index.html:783
msgctxt "page:showcase/ctf/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/showcase/dx-ball/index.html:107
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:199
#, 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"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:202
msgctxt "page:showcase/dx-ball/index.html"
msgid "Case study · DX-Ball 1.07"
msgstr "案例 · DX-Ball 1.07"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <br />
#: website/public/showcase/dx-ball/index.html:203
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Rebuilding DX-Ball{ph0}from its executable."
msgstr "從可執行檔案{ph0}重建 DX-Ball。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:204
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The goal is a maintainable C version of the 1996 Windows game. REA helps the"
" agent inspect the original, one function at a time."
msgstr "目標是為這款 1996 年的 Windows 遊戲重建一份可維護的 C 程式碼。REA 幫助程式設計助手逐個分析原版函式。"

#: website/public/showcase/dx-ball/index.html:208
msgctxt "page:showcase/dx-ball/index.html"
msgid "Windows i386 · C · REA"
msgstr "Windows i386 · C · REA"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <a href="../../assets/figures/dx-ball-sound-pan-investigation.svg" >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:225
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"One function, from executable to checked C. REA supplies the instructions, "
"callers and data reads; the reconstruction project implements and tests the "
"result. {ph0}Open figure{ph1}"
msgstr ""
"從可執行檔案中的一個函式，到經過驗證的 C 程式碼：REA 提供指令、呼叫方和讀取的資料，重建專案據此實現並測試函式。{ph0}檢視大圖{ph1}"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:236
msgctxt "page:showcase/dx-ball/index.html"
msgid "In this case study"
msgstr "本案例內容"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <a href="#progress">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:238
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}The project{ph1}"
msgstr "{ph0}專案進度{ph1}"

#. {ph0}: <a href="#sound-pan">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:239
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Sound pan{ph1}"
msgstr "{ph0}聲像計算{ph1}"

#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:240
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Checking the result{ph1}"
msgstr "{ph0}檢查結果{ph1}"

#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html:241
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}Continue the work{ph1}"
msgstr "{ph0}繼續工作{ph1}"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:249
msgctxt "page:showcase/dx-ball/index.html"
msgid "maintained C functions"
msgstr "個可維護的 C 函式"

#: website/public/showcase/dx-ball/index.html:253
msgctxt "page:showcase/dx-ball/index.html"
msgid "comparisons with original code"
msgstr "與原始程式碼的比較"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:257
msgctxt "page:showcase/dx-ball/index.html"
msgid "functions with matching compiled bytes"
msgstr "個編譯後位元組匹配的函式"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/PROGRESS.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ORACLES.md" >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:260
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Project checkpoint: 7 October 2026. {ph0}Progress ledger{ph1} · {ph2}Test "
"coverage{ph3}"
msgstr "專案進度截至 2026 年 10 月 7 日。{ph0}進度記錄{ph1} · {ph2}測試覆蓋情況{ph3}"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:272
msgctxt "page:showcase/dx-ball/index.html"
msgid "The project so far"
msgstr "當前進度"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:273
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered code covers board and resource handling, brick hits, "
"animations, particles and bonus production. Current builds provide "
"inspection utilities and an analysis library. Work on the playable game "
"continues with ball and paddle physics, power-up handling and Windows "
"integration."
msgstr ""
"目前已還原關卡與資源處理、磚塊碰撞、動畫、粒子和獎勵生成。當前構建提供檢查工具與分析庫。可玩的遊戲版本還在開發，後續工作包括球和擋板的物理邏輯、道具處理及"
" Windows 整合。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:283
msgctxt "page:showcase/dx-ball/index.html"
msgid "Finding the sound-pan calculation"
msgstr "找出聲音的左右位置如何計算"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:284
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"When a brick is hit, its horizontal position is passed to the sound code. "
"The investigation needed to recover how that screen coordinate becomes a "
"left/right panning value."
msgstr "磚塊被擊中時，它的橫座標會傳給聲音處理程式碼。這次調查要找出：螢幕座標如何轉換為聲音的左右聲像值？"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/dx-ball/index.html:291
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#: website/public/showcase/dx-ball/index.html:295
#: website/public/showcase/dx-ball/index.html:486
#: website/public/showcase/dx-ball/index.html:507
#: website/public/showcase/dx-ball/index.html:578
#: website/public/showcase/dx-ball/index.html:732
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy"
msgstr "複製"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="dxball-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/dx-ball/index.html:304
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how DX-Ball calculates sound panning. "
"Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}用 REA 找出 DX-Ball 如何計算聲音的左右位置。解釋計算過程，並展示程式碼。{ph3}{ph4}{ph5}"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:312
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"An example prompt for your coding agent, with the local executable "
"available. The investigation below shows the REA queries and evidence behind"
" the answer."
msgstr "把本地可執行檔案交給程式設計助手，再使用這個示例 prompt。下面展示助手為回答問題發起的 REA 查詢，以及得到的證據。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:317
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The agent used REA to inspect the function, follow its brick-hit caller and "
"read the constants from the executable. Those results supplied the input and"
" arithmetic needed to write the C function below."
msgstr "助手用 REA 檢查函式、追蹤呼叫它的磚塊碰撞函式，再從可執行檔案中讀取常量。這些結果確定了輸入和計算步驟，才有了下面的 C 函式。"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <code>0x406400</code>
#. {ph1}: <code>FUN_00406400(void)</code>
#. {ph2}: <code>__ftol()</code>
#: website/public/showcase/dx-ball/index.html:323
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The first function result for {ph0} included pseudocode declaring {ph1} and "
"calling {ph2}. Its instruction view showed a stack input and floating-point "
"operations. That discrepancy gave the agent a concrete reason to keep "
"investigating."
msgstr ""
"REA 最初返回的 {ph0} 虛擬碼宣告瞭 {ph1}，並呼叫 {ph2}。但指令中還有來自棧的輸入和浮點運算。這個差異提示助手：還需要繼續查。"

#: website/public/showcase/dx-ball/index.html:331
msgctxt "page:showcase/dx-ball/index.html"
msgid "The first decompiler view"
msgstr "最初的反編譯結果"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:344
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The output shows a conversion call. Reading the instructions below reveals "
"the input and the calculation feeding that call."
msgstr "結果裡能看到一次轉換呼叫。繼續閱讀下面的指令，就能找出輸入，以及傳入這個呼叫前的計算。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:350
msgctxt "page:showcase/dx-ball/index.html"
msgid "Three questions answered through REA"
msgstr "用 REA 回答三個問題"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:353
msgctxt "page:showcase/dx-ball/index.html"
msgid "Recover the missing input"
msgstr "找回缺失的輸入"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <code>[EBP+8]</code>
#: website/public/showcase/dx-ball/index.html:370
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The function result includes instructions alongside pseudocode and callers. "
"Here, {ph0} exposes the integer input missing from the decompiler view."
msgstr "函式結果同時提供虛擬碼、指令和呼叫方。這裡的 {ph0} 顯示了反編譯結果中缺失的整數輸入。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:377
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the caller to understand the input"
msgstr "追蹤呼叫方，理解輸入含義"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <code>tile_x</code>
#. {ph1}: <code>20 + 30 × tile_x</code>
#: website/public/showcase/dx-ball/index.html:394
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"REA identified this caller in the first result. Its preceding instructions "
"scale {ph0} by 30; adding 20 gives the brick's screen coordinate, {ph1}."
msgstr "REA 在第一次結果中就給出了這個呼叫方。呼叫前的指令將 {ph0} 乘以 30，再加上 20，得到磚塊的螢幕座標 {ph1}。"

#: website/public/showcase/dx-ball/index.html:401
msgctxt "page:showcase/dx-ball/index.html"
msgid "Read the values behind the memory addresses"
msgstr "讀取記憶體地址後面的值"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:422
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The returned bytes establish the two arithmetic constants and initial pan "
"scale. The agent now has the values needed for the C expression."
msgstr "返回的位元組確定了兩個運算常量，以及聲像縮放係數的初始值。助手由此得到編寫 C 表示式所需的數值。"

#: website/public/showcase/dx-ball/index.html:430
msgctxt "page:showcase/dx-ball/index.html"
msgid "From REA's findings to C"
msgstr "從 REA 分析結果到 C 程式碼"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:431
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow the five steps below. Each selection highlights the original "
"instructions and the C lines they informed."
msgstr "下面分五步展示計算。點選每一步，原始指令和對應的 C 程式碼行會同時高亮。"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:441
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}01{ph1} Input"
msgstr "{ph0}01{ph1} 輸入"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:449
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}02{ph1} Multiply"
msgstr "{ph0}02{ph1} 乘以"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:457
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}03{ph1} Subtract"
msgstr "{ph0}03{ph1} 減去"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:465
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}04{ph1} Scale"
msgstr "{ph0}04{ph1} 縮放"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/dx-ball/index.html:473
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0}05{ph1} Return"
msgstr "{ph0}05{ph1} 返回"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:485
msgctxt "page:showcase/dx-ball/index.html"
msgid "Original x86 · excerpt"
msgstr "原始 x86 · 節選"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:506
msgctxt "page:showcase/dx-ball/index.html"
msgid "Reconstructed C"
msgstr "重建的 C 程式碼"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>[EBP+8]</code>
#. {ph3}: <code>FILD</code>
#. {ph4}: <code>x</code>
#: website/public/showcase/dx-ball/index.html:533
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}01 · Read the input.{ph1} The instruction view in REA's function result"
" reads {ph2} and uses {ph3} to load the integer. Following its caller "
"through REA establishes the screen-coordinate meaning of the C parameter "
"{ph4}."
msgstr ""
"{ph0}01 · 讀取輸入。{ph1} REA 返回的指令讀取 {ph2}，再透過 {ph3} 載入這個整數。用 REA 追蹤呼叫方，就能確定 C "
"引數 {ph4} 表示螢幕座標。"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x420068</code>
#. {ph4}: <code>read_bytes</code>
#. {ph5}: <code>1.5625</code>
#: website/public/showcase/dx-ball/index.html:540
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}02 · Multiply by 1.5625.{ph1} {ph2} reads the double at {ph3}. The "
"bytes returned by REA's {ph4} decode to {ph5}; the C uses the same constant."
msgstr ""
"{ph0}02 · 乘以 1.5625。{ph1} {ph2} 讀取 {ph3} 處的雙精度浮點數。REA 的 {ph4} 返回的位元組解碼後是 "
"{ph5}，C 程式碼使用相同常量。"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FSUB</code>
#. {ph3}: <code>0x420070</code>
#. {ph4}: <code>500.0</code>
#. {ph5}: <code>320</code>
#: website/public/showcase/dx-ball/index.html:546
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}03 · Subtract 500.0.{ph1} {ph2} reads the double at {ph3}. REA's byte "
"result decodes to {ph4}, shifting the calculation's center to screen "
"coordinate {ph5}."
msgstr ""
"{ph0}03 · 減去 500.0。{ph1} {ph2} 讀取 {ph3} 處的雙精度浮點數。REA 返回的位元組解碼後是 "
"{ph4}，讓計算的中心對應螢幕座標 {ph5}。"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x4210a0</code>
#. {ph4}: <code>dxball_pan_scale</code>
#. {ph5}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:552
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}04 · Apply the stored scale.{ph1} The second {ph2} reads {ph3}. That "
"global is named {ph4} in the maintained source. REA's second byte read "
"establishes its initial value of {ph5}."
msgstr ""
"{ph0}04 · 乘以儲存的縮放係數。{ph1} 第二條 {ph2} 讀取 {ph3}。這個全域性變數在重建原始碼中名為 {ph4}。REA "
"的第二次位元組讀取確認它的初始值是 {ph5}。"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>0x406430</code>
#. {ph3}: <code>__ftol</code>
#. {ph4}: <code>DxBallInt</code>
#: website/public/showcase/dx-ball/index.html:559
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}05 · Return an integer.{ph1} The call at {ph2} reaches {ph3}, "
"identified in REA's callee results. The C casts the result to {ph4}; "
"original-x86 comparisons check the returned value."
msgstr ""
"{ph0}05 · 返回整數。{ph1} {ph2} 處的呼叫進入 {ph3}，REA 返回的被呼叫函式資訊確認了這一點。C 程式碼把結果轉換為 "
"{ph4}，再與原始 x86 函式比較，驗證返回值。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:568
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The assembly excerpt selects the input, arithmetic and return instructions. "
"The full listing below also includes the intervening stores and function "
"setup and cleanup."
msgstr "這段彙編節選包含輸入、運算和返回指令。下面的完整列表還保留了中間的儲存操作，以及函式開頭和結尾的處理。"

#: website/public/showcase/dx-ball/index.html:574
msgctxt "page:showcase/dx-ball/index.html"
msgid "Full assembly and supporting evidence"
msgstr "完整彙編與相關證據"

#: website/public/showcase/dx-ball/index.html:577
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA result · 0x406400–0x40643e"
msgstr "REA結果 · 0x406400–0x40643e"

#: website/public/showcase/dx-ball/index.html:611
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the caller supplies"
msgstr "呼叫方傳入什麼"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <code>0x411f40</code>
#: website/public/showcase/dx-ball/index.html:612
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The brick-hit function at {ph0} scales its tile coordinate by 30, adds 20, "
"then pushes it before the call:"
msgstr "{ph0} 處的磚塊碰撞函式把格子座標乘以 30，再加上 20，然後在呼叫前將結果壓棧："

#: website/public/showcase/dx-ball/index.html:626
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the data reads establish"
msgstr "讀取資料確認了什麼"

#: website/public/showcase/dx-ball/index.html:629
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte reads, decoded as little-endian doubles"
msgstr "REA 讀取的位元組，按小端雙精度浮點數解碼"

#: website/public/showcase/dx-ball/index.html:634
msgctxt "page:showcase/dx-ball/index.html"
msgid "Address"
msgstr "地址"

#: website/public/showcase/dx-ball/index.html:635
msgctxt "page:showcase/dx-ball/index.html"
msgid "Value"
msgstr "數值"

#: website/public/showcase/dx-ball/index.html:636
msgctxt "page:showcase/dx-ball/index.html"
msgid "Used for"
msgstr "用於"

#: website/public/showcase/dx-ball/index.html:643
msgctxt "page:showcase/dx-ball/index.html"
msgid "First multiplication"
msgstr "第一次乘法"

#: website/public/showcase/dx-ball/index.html:648
msgctxt "page:showcase/dx-ball/index.html"
msgid "Subtraction"
msgstr "減法"

#. {ph0}: <code>1.0</code>
#: website/public/showcase/dx-ball/index.html:652
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "{ph0} initially"
msgstr "{ph0} 最初"

#: website/public/showcase/dx-ball/index.html:653
msgctxt "page:showcase/dx-ball/index.html"
msgid "Stored pan scale"
msgstr "儲存的聲像縮放係數"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:658
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Recorded with REA 4.1.0 for the hash-pinned DX-Ball 1.07 target. The linked "
"investigation notes retain the Evidence IDs."
msgstr "使用 REA 4.1.0 記錄，分析目標為透過雜湊確定的 DX-Ball 1.07 檔案。連結的調查筆記保留了 Evidence ID。"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/src/gameplay.c#L41" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/GAMEPLAY_OWNER.md"
#. >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html:663
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Maintained source{ph1} · {ph2}Investigation notes and evidence "
"references{ph3}"
msgstr "{ph0}重建原始碼{ph1} · {ph2}調查筆記與證據引用{ph3}"

#: website/public/showcase/dx-ball/index.html:677
msgctxt "page:showcase/dx-ball/index.html"
msgid "Checking the recovered function"
msgstr "驗證還原的函式"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:678
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The recovered function passes two checks: its return values match the "
"original, and its compiled bytes match the executable."
msgstr "還原的函式透過了兩項檢查：返回值與原版一致，編譯後的位元組與原始可執行檔案一致。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:684
msgctxt "page:showcase/dx-ball/index.html"
msgid "3,205 behavior cases"
msgstr "3,205 個行為測試用例"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:685
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The tests execute the original x86 function and compare its return value "
"with the maintained C. They cover every integer position from 0 to 640 at "
"five pan scales: 0, 0.5, 1, 20 and −1."
msgstr ""
"測試執行原始 x86 函式，將返回值與重建的 C 函式比較。測試覆蓋 0 到 640 的所有整數位置，並分別使用五個聲像縮放係數：0、0.5、1、20 "
"和 −1。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:693
msgctxt "page:showcase/dx-ball/index.html"
msgid "63 matching bytes"
msgstr "63 位元組完全匹配"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:694
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The C function is compiled with the pinned VC4.0 toolchain. Compiler replay "
"matches the complete function after applying the reviewed relocations and "
"checking the referenced constants."
msgstr "C 函式使用指定的 VC4.0 工具鏈編譯。應用經過檢查的重定位，並核對引用的常量後，編譯結果與原始函式的全部位元組一致。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:702
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"At a scale of 1, the recovered calculation returns −500 at the left edge, 0 "
"at the center and 500 at the right edge. The next part of the audio work is "
"integrating that value with the game's sound backend."
msgstr "縮放係數為 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:708
#, 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:717
msgctxt "page:showcase/dx-ball/index.html"
msgid "Continue the investigation"
msgstr "繼續調查"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:718
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"The same approach is being used for particle updates, explosion queues and "
"bonus generation: inspect the relevant functions, recover their state and "
"dependencies, then compare the implementation with the original."
msgstr "粒子更新、爆炸佇列和獎勵生成也使用同樣的方法：檢查相關函式，還原狀態與依賴，再把實現和原版比較。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:724
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"To inspect the sound-pan function yourself, follow the DX-Ball project's "
"setup instructions and supply its matching original target. Then run:"
msgstr "如果你也想分析這個聲像函式，先按 DX-Ball 專案的說明配置環境，並準備匹配的原始檔案。然後執行："

#: website/public/showcase/dx-ball/index.html:731
msgctxt "page:showcase/dx-ball/index.html"
msgid "In the DX-Ball checkout"
msgstr "在 DX-Ball 儲存庫目錄中"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-ball" >
#. {ph1}: </a >
#. {ph2}: <span>
#. {ph3}: </span>
#: website/public/showcase/dx-ball/index.html:745
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}DX-Ball repository{ph1}{ph2}Current source, progress and local "
"setup.{ph3}"
msgstr "{ph0}DX-Ball 儲存庫{ph1}{ph2}當前原始碼、進度和本地配置。{ph3}"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <a href="../../guides/native/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:750
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}REA analysis workflow{ph1}{ph2}Follow the calculation, then use the "
"same approach with your own binary.{ph3}"
msgstr "{ph0}REA 分析流程{ph1}{ph2}追蹤這段計算，再用同樣方法分析自己的二進位制檔案。{ph3}"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ENTITIES_OWNER.md"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/dx-ball/index.html:757
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}Particles and bonus production{ph1}{ph2}A larger investigation into "
"state, queues and pixel writes.{ph3}"
msgstr "{ph0}粒子與獎勵生成{ph1}{ph2}進一步分析狀態、佇列和畫素寫入。{ph3}"

# Reviewed for clear terminology and preserved evidence.
#: 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"

# Reviewed for clear terminology and preserved evidence.
#: 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 行為測試和編譯位元組匹配驗證。"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:211
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DX-Ball sound-pan investigation; scroll horizontally on smaller screens"
msgstr "DX-Ball 聲像計算調查；小螢幕可橫向滾動"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:217
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"DXBALL.EXE function 0x00406400 is inspected with REA. A brick-hit caller "
"supplies 20 plus 30 times tile_x. Instructions load x, multiply by 1.5625, "
"subtract 500.0, apply pan_scale and return an integer. The maintained C is "
"checked independently against the original x86 in 3,205 cases and by VC4.0 "
"compiler replay matching 63 bytes."
msgstr ""
"用 REA 檢查 DXBALL.EXE 中的函式 0x00406400。磚塊碰撞呼叫方傳入 20 + 30 × tile_x。指令載入 x，乘以 "
"1.5625，減去 500.0，再乘以 pan_scale，最後返回整數。重建的 C 程式碼透過 3,205 個用例與原始 x86 函式比較，並用 "
"VC4.0 編譯結果匹配全部 63 位元組。"

#: website/public/showcase/dx-ball/index.html:235
msgctxt "page:showcase/dx-ball/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/showcase/dx-ball/index.html:244
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball reconstruction case study"
msgstr "DX-Ball重建案例研究"

#: website/public/showcase/dx-ball/index.html:295
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy example prompt"
msgstr "複製示例提示"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:436
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the sound-pan calculation"
msgstr "追蹤聲像計算"

#: website/public/showcase/dx-ball/index.html:486
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy original assembly excerpt"
msgstr "複製原始彙編摘錄"

#: website/public/showcase/dx-ball/index.html:507
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy sound-pan function"
msgstr "複製聲像函式"

# Reviewed for clear terminology and preserved evidence.
#: website/public/showcase/dx-ball/index.html:578
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy complete sound-pan assembly"
msgstr "複製完整聲像計算彙編"

#: website/public/showcase/dx-ball/index.html:732
msgctxt "page:showcase/dx-ball/index.html"
msgid "Copy DX-Ball analysis command"
msgstr "複製DX-Ball分析命令"

#: website/public/showcase/dx-ball/index.html:791
msgctxt "page:showcase/dx-ball/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/showcase/index.html:107
msgctxt "page:showcase/index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/showcase/index.html:199
#, python-brace-format
msgctxt "page:showcase/index.html"
msgid "{ph0}Home{ph1} / Showcases"
msgstr "{ph0}首頁{ph1} /陳列櫃"

#: website/public/showcase/index.html:200
msgctxt "page:showcase/index.html"
msgid "REA case studies."
msgstr "REA 實際案例。"

#: website/public/showcase/index.html:201
msgctxt "page:showcase/index.html"
msgid ""
"Android, games, Electron and a CTF challenge, with code, figures and checked"
" results."
msgstr "安卓，遊戲，Electron和CTF挑戰，與程式碼，數字和檢查結果。"

#: website/public/showcase/index.html:208
msgctxt "page:showcase/index.html"
msgid "Android · APK analysis"
msgstr "Android · APK 分析"

#: website/public/showcase/index.html:210
msgctxt "page:showcase/index.html"
msgid "How an authenticator generates a login code"
msgstr "驗證器如何生成登入驗證碼"

#: website/public/showcase/index.html:211
msgctxt "page:showcase/index.html"
msgid ""
"Find Aegis's six-digit code calculation in its released APK. Trace the "
"generating methods with REA, then move a demo clock to see why the code "
"changes every 30 seconds."
msgstr "在其釋出的APK中找到Aegis的六位數程式碼計算。 使用REA跟蹤生成方法，然後移動演示時鐘以檢視程式碼每30秒更改一次的原因。"

#: website/public/showcase/index.html:222
msgctxt "page:showcase/index.html"
msgid "Read the Android case study"
msgstr "閱讀Android案例研究"

#: website/public/showcase/index.html:226
msgctxt "page:showcase/index.html"
msgid "CTF · Native analysis"
msgstr "CTF · 原生分析"

#: website/public/showcase/index.html:228
msgctxt "page:showcase/index.html"
msgid "Solve a CTF flag checker"
msgstr "分析 CTF flag 檢查器"

#: website/public/showcase/index.html:229
msgctxt "page:showcase/index.html"
msgid ""
"Inspect an easy DownUnderCTF challenge with REA. Find its checking "
"functions, turn masks and sums into equations, then verify the solved flag "
"with the original program."
msgstr "使用REA檢查一個簡單的DownUnderCTF挑戰。 找到它的檢查函式，將掩碼和和轉換為方程，然後用原始程式驗證已求解的標誌。"

#: website/public/showcase/index.html:240
msgctxt "page:showcase/index.html"
msgid "Read the CTF case study"
msgstr "閱讀CTF案例研究"

#: website/public/showcase/index.html:244
msgctxt "page:showcase/index.html"
msgid "Native · Reconstruction"
msgstr "原生程式 · 重建"

#: website/public/showcase/index.html:246
msgctxt "page:showcase/index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "DX-Ball 的聲像計算"

#: website/public/showcase/index.html:247
msgctxt "page:showcase/index.html"
msgid ""
"Recover a sound-pan calculation from a 1996 Windows game. REA's "
"instructions, caller references and numeric constants lead to a small C "
"function, checked against the original behavior and all 63 compiled bytes."
msgstr ""
"從1996年的Windows遊戲中恢復左/右聲音位置的計算。  "
"REA的指令，呼叫者引用和數字常量導致一個小的C函式，對照原始行為和所有63個編譯位元組進行檢查。"

#: website/public/showcase/index.html:259
msgctxt "page:showcase/index.html"
msgid "Read the DX-Ball case study"
msgstr "閱讀DX-Ball案例研究"

#: website/public/showcase/index.html:263
msgctxt "page:showcase/index.html"
msgid "Electron · Feature tracing"
msgstr "Electron · 功能追蹤"

#: website/public/showcase/index.html:265
msgctxt "page:showcase/index.html"
msgid "How Notion copies text and HTML"
msgstr "Notion 如何複製文字和 HTML"

#: website/public/showcase/index.html:266
msgctxt "page:showcase/index.html"
msgid ""
"Trace a page-facing API through Notion's packaged JavaScript. Follow its IPC"
" wrappers to the system clipboard, then see how a small HTML marker keeps "
"rich block data connected to a copy."
msgstr ""
"透過跟蹤面向頁面的API Notion包裝好了 JavaScript. "
"跟隨它的IPC包裝到系統剪貼簿，然後看看一個小的HTML標記如何保持豐富的塊資料連線到複製。"

#: website/public/showcase/index.html:277
msgctxt "page:showcase/index.html"
msgid "Read the Notion case study"
msgstr "閱讀Notion案例研究"

#: website/public/showcase/index.html:281
msgctxt "page:showcase/index.html"
msgid "PC-98 DOS · Reconstruction"
msgstr "PC-98 DOS · 重建"

#: website/public/showcase/index.html:283
msgctxt "page:showcase/index.html"
msgid "How TH04 aims a ring of bullets"
msgstr "TH04 如何把環形彈幕對準玩家"

#: website/public/showcase/index.html:284
msgctxt "page:showcase/index.html"
msgid ""
"Inspect the original 16-bit angle helper with REA. Match its multiply, "
"divide and coordinate operations to readable C++, then see how they produce "
"a ring aimed at the player."
msgstr "用REA檢查原始的16位角度助手。 將其乘法，除法和座標操作匹配到可讀的C++，然後看看它們如何產生一個針對玩家的環形彈幕。"

#: website/public/showcase/index.html:295
msgctxt "page:showcase/index.html"
msgid "Read the TH04 case study"
msgstr "閱讀TH04案例研究"

#: website/public/showcase/index.html:300
msgctxt "page:showcase/index.html"
msgid "Step-by-step guides"
msgstr "循序漸進指南"

#: website/public/showcase/index.html:301
msgctxt "page:showcase/index.html"
msgid ""
"The guides walk through a native calculation, an Electron export and a "
"browser request. Each starts with a prompt and a concrete target."
msgstr "本指南介紹了本機計算、Electron匯出和瀏覽器請求。 每個都以提示和具體目標開始。"

#: website/public/showcase/index.html:305
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身份驗證器, DX-Ball, Notion, TH04 "
"和一個DownUnderCTFflag 檢查器。"

#: website/public/showcase/index.html:323
msgctxt "page:showcase/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/showcase/notion/index.html:107
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:199
#, 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:202
msgctxt "page:showcase/notion/index.html"
msgid "Case study · Electron"
msgstr "個案研究*Electron"

#. {ph0}: <br />
#: website/public/showcase/notion/index.html:203
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "How Notion copies{ph0}text and HTML."
msgstr "如何 Notion 複製{ph0}文字和HTML。"

#: website/public/showcase/notion/index.html:204
msgctxt "page:showcase/notion/index.html"
msgid ""
"Trace a clipboard call from Notion's page API, through the preload and main "
"process, to Electron's clipboard writer."
msgstr "跟蹤剪貼簿呼叫從Notion的頁面API，透過預載入和主程序，到Electron的剪貼簿編寫器。"

#: website/public/showcase/notion/index.html:208
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:212
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:214
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}01 · Page-facing API{ph1} {ph2}{ph3}{ph4} {ph5}The preload exposes a "
"callable method.{ph6}"
msgstr "{ph0}01 · 面向頁面的API{ph1} {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:221
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}02 · Preload wrapper{ph1} {ph2}{ph3}{ph4} {ph5}The wrapper sends the "
"channel and arguments.{ph6}"
msgstr "{ph0}02 · 預載入包裝器{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:228
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}03 · Main-process handler{ph1} {ph2}{ph3}{ph4} {ph5}The receiver checks"
" which page sent it.{ph6}"
msgstr "{ph0}03 · 主程序處理程式{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:235
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}04 · System clipboard{ph1} {ph2}{ph3}{ph4} {ph5}Electron writes the "
"supplied text and HTML.{ph6}"
msgstr "{ph0}04 · 系統剪貼簿{ph1} {ph2}{ph3}{ph4} {ph5}Electron 寫入提供的文字和HTML。{ph6}"

#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:243
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "One channel joins the two sides: {ph0}"
msgstr "一個通道連線雙方: {ph0}"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/notion/index.html:247
msgctxt "page:showcase/notion/index.html"
msgid ""
"The packaged code uses the same channel in the preload and main process. "
"Resolving the wrappers reveals the Electron calls behind those names."
msgstr "預載入指令碼和主程序使用同一個通道。解析包裝函式後，就能看出這些名稱背後實際呼叫的 Electron 函式。"

#: website/public/showcase/notion/index.html:256
msgctxt "page:showcase/notion/index.html"
msgid "In this case study"
msgstr "在本個案研究中"

#. {ph0}: <a href="#clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:258
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Follow the clipboard bridge{ph1}"
msgstr "{ph0}跟隨剪貼簿橋{ph1}"

#. {ph0}: <a href="#rich-clipboard">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:259
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}Keeping a block's structure{ph1}"
msgstr "{ph0}保留內容塊的結構{ph1}"

#. {ph0}: <a href="#continue">
#. {ph1}: </a>
#: website/public/showcase/notion/index.html:260
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}More examples and sources{ph1}"
msgstr "{ph0}更多示例和來源{ph1}"

#: website/public/showcase/notion/index.html:265
msgctxt "page:showcase/notion/index.html"
msgid "Where does the copy operation go?"
msgstr "複製操作去哪裡？"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>clipboard.write</code>
#: website/public/showcase/notion/index.html:266
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The page sees a method called {ph0}. Its implementation in the preload is a "
"wrapper. The useful question is what that wrapper sends, and which code "
"receives it."
msgstr "頁面可以呼叫名為 {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:273
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#: website/public/showcase/notion/index.html:277
#: website/public/showcase/notion/index.html:350
#: website/public/showcase/notion/index.html:379
#: website/public/showcase/notion/index.html:410
#: website/public/showcase/notion/index.html:438
msgctxt "page:showcase/notion/index.html"
msgid "Copy"
msgstr "複製"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="notion-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/notion/index.html:286
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to trace how Notion copies text and HTML to the "
"system clipboard. Show the code at each step.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}使用REA跟蹤Notion如何將文字和HTML複製到系統剪貼簿。 在每個步驟顯示程式碼。{ph3}{ph4}{ph5}"

#: website/public/showcase/notion/index.html:294
msgctxt "page:showcase/notion/index.html"
msgid ""
"An example prompt with Notion's local application package available to your "
"coding agent."
msgstr "一個示例提示與Notion的本地應用程式包可供你的程式設計助手."

#: website/public/showcase/notion/index.html:299
msgctxt "page:showcase/notion/index.html"
msgid "REA finds where to start reading"
msgstr "REA查詢從哪裡開始閱讀"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/notion/index.html:300
msgctxt "page:showcase/notion/index.html"
msgid ""
"Analyzing the tab preload with REA locates the API exposed to the page and "
"the call that sends an IPC request. Both findings come with source ranges in"
" the minified bundle:"
msgstr "用 REA 分析標籤頁的預載入指令碼，可以找到暴露給頁面的 API，以及傳送 IPC 請求的呼叫。兩個結果都給出了在壓縮程式碼中的位置："

#: website/public/showcase/notion/index.html:306
msgctxt "page:showcase/notion/index.html"
msgid "REA findings → two places to open"
msgstr "REA 分析結果 → 兩個原始碼位置"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>analyze_javascript_application</code>
#: website/public/showcase/notion/index.html:321
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Selected fields from a fresh {ph0} result on Notion's tab preload, recorded "
"with REA 4.1.0. Positions use the original bundle's line and zero-based "
"column."
msgstr ""
"這是新一次 {ph0} 分析結果中的部分欄位，來自 Notion 標籤頁的預載入指令碼，使用 REA 4.1.0 "
"記錄。位置對應原始壓縮包中的行號和從零開始的列號。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>invokerInMain</code>
#. {ph1}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:328
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The agent opens those locations, finds the clipboard member in the assembled"
" API, and reads {ph0}. Its call site supplies {ph1}. That name gives the "
"agent something precise to look for in the main bundle. The four excerpts "
"below show the route it connects."
msgstr ""
"助手開啟這些位置，在組裝的 API 中找到剪貼簿成員，再讀取 {ph0}。呼叫處傳入 "
"{ph1}，讓助手知道要在主程序程式碼中搜尋哪個名稱。下面四段程式碼展示這條呼叫鏈。"

#: website/public/showcase/notion/index.html:337
msgctxt "page:showcase/notion/index.html"
msgid "Four short pieces of code"
msgstr "四段簡短程式碼"

#: website/public/showcase/notion/index.html:338
msgctxt "page:showcase/notion/index.html"
msgid ""
"Simplified from the packaged JavaScript, with readable variable names. "
"Unrelated members are omitted."
msgstr "從打包的JavaScript簡化，具有可讀的變數名稱。 不相關的成員被省略。"

#: website/public/showcase/notion/index.html:344
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:366
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"This member supplies the channel name. The implementation of {ph0} tells us "
"how the request leaves the page's process."
msgstr "此成員提供通道名稱。 的實施 {ph0} 告訴我們請求如何離開頁面的程序。"

#: website/public/showcase/notion/index.html:373
msgctxt "page:showcase/notion/index.html"
msgid "Resolve the preload's wrapper"
msgstr "解析預載入的包裝器"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
#: website/public/showcase/notion/index.html:396
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The returned function forwards the arguments through Electron's request-and-"
"response IPC. We can now look for {ph0} on the main-process side."
msgstr "返回的函式透過 Electron 的請求／響應 IPC 轉發引數。接下來可以在主程序中查詢 {ph0}。"

#: website/public/showcase/notion/index.html:404
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:425
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The main process uses another wrapper. Its {ph0} method registers an {ph1} "
"receiver for that channel."
msgstr "主程序使用另一個包裝器。 其 {ph0} 方法註冊一個 {ph1} 那個頻道的接收器。"

#: website/public/showcase/notion/index.html:432
msgctxt "page:showcase/notion/index.html"
msgid "Find the write and its sender check"
msgstr "查詢寫入及其發件人檢查"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/notion/index.html:455
msgctxt "page:showcase/notion/index.html"
msgid ""
"This is the destination. After checking the sender, the handler passes the "
"supplied data to Electron's clipboard API. The channel and the two resolved "
"wrappers connect the exposed method to this call."
msgstr ""
"這就是呼叫的終點。處理函式檢查傳送方後，把收到的資料交給 Electron 的剪貼簿 "
"API。通道名和兩個解析後的包裝函式，把暴露給頁面的方法連線到了這裡。"

#: website/public/showcase/notion/index.html:466
msgctxt "page:showcase/notion/index.html"
msgid "How does a copied block keep its structure?"
msgstr "複製的塊如何保持其結構？"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>electronApi.clipboard.write</code>
#: website/public/showcase/notion/index.html:467
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's web editor sends text and HTML through {ph0}. It keeps the block "
"data locally and puts an ID in the copied HTML to connect them."
msgstr ""
"Notion 的網頁編輯器透過 {ph0} 傳送文字和 HTML。它在本地保留內容塊資料，再在複製的 HTML 中放入一個 ID，將二者關聯起來。"

#: website/public/showcase/notion/index.html:473
msgctxt "page:showcase/notion/index.html"
msgid "HTML links to saved block data"
msgstr "儲存的塊資料的HTML連結"

#: website/public/showcase/notion/index.html:497
msgctxt "page:showcase/notion/index.html"
msgid "Read the HTML ID"
msgstr "讀取HTML ID"

#: website/public/showcase/notion/index.html:498
msgctxt "page:showcase/notion/index.html"
msgid "Find the same local ID"
msgstr "查詢相同的本地ID"

#: website/public/showcase/notion/index.html:499
msgctxt "page:showcase/notion/index.html"
msgid "Restore Notion block data"
msgstr "恢復Notion塊資料"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/notion/index.html:501
msgctxt "page:showcase/notion/index.html"
msgid ""
"Illustrative text and ID. The recorded module test restores the block data "
"when IDs match; a stale entry returns only text and HTML."
msgstr "文字和 ID 為示意值。已記錄的模組測試顯示：ID 匹配時可以取回內容塊資料；條目失效時只返回文字和 HTML。"

#: website/public/showcase/notion/index.html:507
msgctxt "page:showcase/notion/index.html"
msgid ""
"On paste, Notion looks for the HTML ID and checks it against the saved copy."
" Matching IDs restore the block data."
msgstr "在貼上時，Notion查詢HTML ID並根據儲存的複製進行檢查。 匹配的Id恢復所述塊資料。"

#: website/public/showcase/notion/index.html:511
msgctxt "page:showcase/notion/index.html"
msgid "Clipboard format recorded from web assets cached on July 13, 2026."
msgstr "從2026年7月13日快取的web資產中記錄的剪貼簿格式。"

#: website/public/showcase/notion/index.html:517
msgctxt "page:showcase/notion/index.html"
msgid "More examples and sources"
msgstr "更多示例和來源"

#: website/public/showcase/notion/index.html:519
msgctxt "page:showcase/notion/index.html"
msgid "Another example: Markdown tables"
msgstr "另一個例子：Markdown 表格"

#: website/public/showcase/notion/index.html:520
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion parses Markdown into block data. This example shows how a table "
"becomes header and data rows."
msgstr "Notion將Markdown解析為塊資料。 此示例顯示錶如何成為標題和資料行。"

#: website/public/showcase/notion/index.html:525
msgctxt "page:showcase/notion/index.html"
msgid "A table through Notion's Markdown parser"
msgstr "透過Notion的Markdown解析器的表格"

#: website/public/showcase/notion/index.html:546
msgctxt "page:showcase/notion/index.html"
msgid ""
"Recorded output from an extracted Markdown parser. The table becomes rows "
"and cells."
msgstr "從提取的Markdown解析器記錄輸出。 表變為行和單元格。"

#: website/public/showcase/notion/index.html:553
msgctxt "page:showcase/notion/index.html"
msgid "Another path: the offline SQLite connection"
msgstr "另一條路徑：離線SQLite連線"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>getSqliteMeta</code>
#: website/public/showcase/notion/index.html:554
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"Notion's renderer requests {ph0} through IPC. The main process creates a "
"message channel and gives one port to the renderer and the other to a SQLite"
" utility process. Subsequent statement batches and results travel over that "
"port."
msgstr ""
"Notion 的渲染程序透過 IPC 請求 {ph0}。主程序建立訊息通道，把一個埠交給渲染程序，另一個交給 SQLite "
"工具程序。後續的語句批次和結果直接透過這個埠傳輸。"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/notion/index.html:560
msgctxt "page:showcase/notion/index.html"
msgid ""
"Following this handoff explains where the database work runs, and why "
"tracing only the initial IPC request misses the later conversation."
msgstr "追蹤這次交接，就能知道資料庫操作在哪個程序執行，也能解釋為什麼只跟蹤最初的 IPC 請求會漏掉後續通訊。"

#: website/public/showcase/notion/index.html:567
msgctxt "page:showcase/notion/index.html"
msgid "Sources and how to read the excerpts"
msgstr "資料來源及如何閱讀摘錄"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>app.asar</code>
#. {ph1}: <code>main/index.js</code>
#. {ph2}: <code>isNotionWebContents</code>
#: website/public/showcase/notion/index.html:568
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The clipboard bridge comes from Notion Desktop 7.6.1's {ph0}: the tab "
"preload and {ph1}. The excerpts expand minified variable names and omit "
"unrelated code; the sender-check helper is shown with its underlying {ph2} "
"call."
msgstr ""
"剪貼簿橋接程式碼來自 Notion Desktop 7.6.1 的 {ph0}，包括標籤頁預載入指令碼和 "
"{ph1}。節選中展開了壓縮後的變數名，並省略無關程式碼；傳送方檢查輔助函式展示了底層的 {ph2} 呼叫。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>747001</code>
#. {ph1}: <code>58169</code>
#. {ph2}: <code>736810</code>
#. {ph3}: <code>422457</code>
#: website/public/showcase/notion/index.html:576
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The virtual clipboard and Markdown examples come from web assets cached on "
"July 13, 2026, including modules {ph0}, {ph1}, {ph2} and {ph3}. Those assets"
" have their own version. Saved probes executed extracted modules and small "
"harnesses; their outputs describe those probes rather than a captured "
"desktop UI session."
msgstr ""
"虛擬剪貼簿和 Markdown 示例來自 2026 年 7 月 13 日快取的網頁資源，包括 {ph0}、{ph1}、{ph2} 和 {ph3} "
"模組。這些資源有獨立版本。儲存的測試執行提取出的模組和小型測試程式；輸出反映的是這些測試，沒有記錄桌面 UI 操作。"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/notion/index.html:584
msgctxt "page:showcase/notion/index.html"
msgid ""
"The REA result shown here is a focused analysis of the saved tab preload, "
"recorded with the published REA 4.1.0 package. It locates the API and invoke"
" operation. The clipboard member and matching receiver are connected by "
"reading their wrapper implementations in the package."
msgstr ""
"這裡的 REA 結果是對儲存的標籤頁預載入指令碼進行的專項分析，使用已釋出的 REA 4.1.0 記錄。它定位了 API "
"和呼叫操作。讀取包中的包裝函式實現後，就能把剪貼簿成員與匹配的接收方連線起來。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>422457</code>
#: website/public/showcase/notion/index.html:591
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"The Markdown example uses parser module {ph0}. Saved module tests show that "
"both page and chat filters preserve this table. The paste/import, structured"
" Markdown and AI/chat parsers have separate entry points and intermediate "
"formats."
msgstr ""
"Markdown 示例使用解析器模組 {ph0}。儲存的模組測試顯示，頁面和聊天過濾器都會保留這張表格。貼上／匯入、結構化標記和 "
"AI／聊天解析器各自有不同入口與中間格式。"

#. {ph0}: <a href="../../guides/javascript/" >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:599
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}JavaScript application guide{ph1}{ph2}Follow a small Electron "
"application's export feature.{ph3}"
msgstr "{ph0} JavaScript應用指南{ph1}{ph2}遵循一個小的Electron應用程式的匯出功能。{ph3}"

#. {ph0}: <a href="../dx-ball/">
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/notion/index.html:606
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid ""
"{ph0}DX-Ball reconstruction{ph1}{ph2}Follow native instructions to a checked"
" C function.{ph3}"
msgstr "{ph0}DX-Ball 重建工程{ph1}{ph2}按照原生說明檢查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逆向工程：Clipboard-REA"

# Reviewed for clear case-study reasoning and evidence.
#: 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 ""
"追蹤 Notion 的剪貼簿 API，經過 Electron 預載入指令碼、IPC "
"包裝函式和主程序。透過簡短程式碼節選瞭解呼叫鏈，再檢視富文字剪貼簿格式。"

#: website/public/showcase/notion/index.html:255
msgctxt "page:showcase/notion/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/showcase/notion/index.html:263
msgctxt "page:showcase/notion/index.html"
msgid "Notion Electron case study"
msgstr "Notion Electron案例研究"

#: website/public/showcase/notion/index.html:277
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion analysis prompt"
msgstr "複製Notion分析提示"

#: website/public/showcase/notion/index.html:350
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion preload excerpt"
msgstr "複製Notion預載入摘錄"

#: website/public/showcase/notion/index.html:379
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion invoke wrapper excerpt"
msgstr "複製 Notion 呼叫包裝摘錄"

#: website/public/showcase/notion/index.html:410
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion handler wrapper excerpt"
msgstr "複製Notion處理程式包裝器摘錄"

#: website/public/showcase/notion/index.html:438
msgctxt "page:showcase/notion/index.html"
msgid "Copy Notion clipboard receiver excerpt"
msgstr "複製Notion剪貼簿接收器摘錄"

#: website/public/showcase/notion/index.html:493
msgctxt "page:showcase/notion/index.html"
msgid "Restoring rich clipboard data on paste"
msgstr "在貼上上還原豐富的剪貼簿資料"

#: website/public/showcase/notion/index.html:637
msgctxt "page:showcase/notion/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/showcase/th04/index.html:107
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:199
#, 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:202
msgctxt "page:showcase/th04/index.html"
msgid "Case study · Touhou 4: Lotus Land Story"
msgstr "個案研究·東方4：蓮花地故事"

#. {ph0}: <br />
#: website/public/showcase/th04/index.html:203
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Reconstructing TH04's{ph0}bullet patterns."
msgstr "重建TH04{ph0}子彈圖案。"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:204
msgctxt "page:showcase/th04/index.html"
msgid ""
"A ring of bullets starts with a short angle calculation. Use REA to inspect "
"the original DOS function, then follow its instructions into readable C++."
msgstr "一圈彈幕從一段簡短的角度計算開始。用 REA 檢查原始 DOS 函式，再把指令對應到可讀的 C++ 程式碼。"

#: website/public/showcase/th04/index.html:209
msgctxt "page:showcase/th04/index.html"
msgid "PC-98 · 16-bit DOS · C++ and assembly"
msgstr "PC-98·16位DOS · C++和彙編"

#: website/public/showcase/th04/index.html:210
msgctxt "page:showcase/th04/index.html"
msgid "View the TH04 reconstruction"
msgstr "檢視TH04重建"

#: website/public/showcase/th04/index.html:216
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:218
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Original game{ph1}{ph2}MAIN.EXE{ph3}{ph4}The PC-98 executable and "
"its bullet-angle helper.{ph5}"
msgstr "{ph0}01 · 原創遊戲{ph1}{ph2}主要。EXE檔案{ph3}{ph4}該 PC-98 可執行檔案及其子彈角助手。{ph5}"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:225
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Inspect with REA{ph1}{ph2}Instructions + "
"references{ph3}{ph4}Verify the loaded DOS code and read the angle "
"calculation from the executable.{ph5}"
msgstr ""
"{ph0}02 · 用 REA 檢查{ph1}{ph2}指令 + 引用{ph3}{ph4}驗證載入的 DOS "
"程式碼，再從可執行檔案中讀取角度計算。{ph5}"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:233
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Read the C++{ph1}{ph2}Space → aim → rotate{ph3}{ph4}Connect each "
"operation to the maintained reconstruction.{ph5}"
msgstr ""
"{ph0}03 · 閱讀 C++{ph1}{ph2}等分 → 瞄準 → 旋轉{ph3}{ph4}把每個操作對應到維護中的重建原始碼。{ph5}"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:240
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Check the source{ph1}{ph2}2,139 matching bytes{ph3}{ph4}Recorded "
"compiler checks cover the bullet-generation code that contains this "
"helper.{ph5}"
msgstr ""
"{ph0}04 · 驗證原始碼{ph1}{ph2}2,139 "
"位元組匹配{ph3}{ph4}已記錄的編譯器檢查覆蓋了包含這個輔助函式的彈幕生成程式碼。{ph5}"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:249
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA returns the original code and its analysis evidence. The TH04 project "
"supplies the maintained source and compiler checks."
msgstr "REA 返回原始程式碼和分析證據。TH04 專案提供維護中的原始碼，以及編譯器檢查結果。"

#: website/public/showcase/th04/index.html:257
msgctxt "page:showcase/th04/index.html"
msgid "In this case study"
msgstr "在本個案研究中"

#. {ph0}: <a href="#ring">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:259
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The bullet ring{ph1}"
msgstr "{ph0}子彈環{ph1}"

#. {ph0}: <a href="#rea">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:260
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}What REA returns{ph1}"
msgstr "{ph0}REA 返回什麼{ph1}"

#. {ph0}: <a href="#source">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:261
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Assembly to C++{ph1}"
msgstr "{ph0}彙編到C++{ph1}"

#. {ph0}: <a href="#checking">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:262
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Checking the source{ph1}"
msgstr "{ph0}檢查來源{ph1}"

#. {ph0}: <a href="#project">
#. {ph1}: </a>
#: website/public/showcase/th04/index.html:263
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}The full project{ph1}"
msgstr "{ph0}完整專案{ph1}"

#: website/public/showcase/th04/index.html:268
msgctxt "page:showcase/th04/index.html"
msgid "How a ring aims at the player"
msgstr "環形彈幕如何瞄準玩家"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:269
msgctxt "page:showcase/th04/index.html"
msgid ""
"Elly's attack requests an aimed ring with an initial count of 16. One helper"
" calculates the direction of each bullet. The same ring can face a fixed "
"direction or turn toward the player."
msgstr "Elly 的攻擊請求一個初始數量為 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:276
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Your coding agent"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}你的程式設計助手"

#: website/public/showcase/th04/index.html:281
#: website/public/showcase/th04/index.html:337
#: website/public/showcase/th04/index.html:514
#: website/public/showcase/th04/index.html:548
msgctxt "page:showcase/th04/index.html"
msgid "Copy"
msgstr "複製"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="th04-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/showcase/th04/index.html:290
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to find how TH04 creates a ring of bullets and aims "
"it at the player. Explain the calculation and show the code.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}使用REA查詢TH04如何建立一個子彈環並將其瞄準玩家。 解釋計算並顯示程式碼。{ph3}{ph4}{ph5}"

#: website/public/showcase/th04/index.html:299
msgctxt "page:showcase/th04/index.html"
msgid ""
"An example prompt, with the original executable and reconstruction checkout "
"available locally."
msgstr "一個示例提示，原始可執行檔案和重建簽出可在本地使用。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>0, 16, 32, …, 240</code>
#: website/public/showcase/th04/index.html:303
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 stores a full clockwise turn in 256 angle units. For 16 bullets, each "
"index adds 16 units: {ph0}. Adding the player's direction rotates those "
"positions together."
msgstr ""
"TH04 用 256 個角度單位表示順時針轉一整圈。16 顆子彈之間各隔 16 個單位：{ph0}。再加上玩家方向，就能讓所有方向一起旋轉。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <a href="../../assets/figures/th04-bullet-ring.svg" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:323
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"An illustration of the recovered angle math for count 16, player direction "
"40 and template rotation 0. {ph0}Open figure{ph1}"
msgstr "圖中演示還原出的角度計算：子彈數量為 16，玩家方向為 40，模板旋轉角為 0。{ph0}檢視大圖{ph1}"

#: website/public/showcase/th04/index.html:331
msgctxt "page:showcase/th04/index.html"
msgid "The firing template in the recovered source"
msgstr "還原原始碼中的發射模板"

#: website/public/showcase/th04/index.html:336
msgctxt "page:showcase/th04/index.html"
msgid "Elly's ring attack · source excerpt"
msgstr "Elly 的環形攻擊 · 原始碼節選"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/boss/elly_phase_ring16.cpp#L26"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:351
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"These lines select the pattern before difficulty and performance tuning. "
"{ph0}Read the attack's source{ph1}."
msgstr "這些線在難度和效能調整之前選擇模式。 {ph0}閱讀攻擊的來源{ph1}."

#: website/public/showcase/th04/index.html:362
msgctxt "page:showcase/th04/index.html"
msgid "What REA returns"
msgstr "REA 返回什麼"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>bullet_velocity_and_angle_set()</code>
#: website/public/showcase/th04/index.html:363
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"We inspect {ph0}, the function that sets each bullet's velocity and angle. "
"REA returns its instructions, pseudocode and references. Three parts of that"
" result explain the pattern."
msgstr "我們檢查設定每顆子彈速度和角度的函式 {ph0}。REA 返回指令、虛擬碼和引用，其中三部分解釋了這種彈幕如何生成。"

#: website/public/showcase/th04/index.html:371
msgctxt "page:showcase/th04/index.html"
msgid "Check the DOS image before reading its code"
msgstr "在閱讀其程式碼之前檢查DOS映像"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:392
msgctxt "page:showcase/th04/index.html"
msgid ""
"The check ties the loaded code and relocation records to the supplied "
"executable. The path above is shortened for display."
msgstr "這項檢查確認載入的程式碼和重定位記錄對應提供的可執行檔案。上方路徑為便於顯示而縮短。"

#: website/public/showcase/th04/index.html:398
msgctxt "page:showcase/th04/index.html"
msgid "Read the ring's multiply and divide"
msgstr "檢視環形彈幕的乘除計算"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>SI</code>
#. {ph1}: <code>DS:53AF</code>
#. {ph2}: <code>bullet_template.count</code>
#: website/public/showcase/th04/index.html:416
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0} holds the bullet index. The shift multiplies it by 256, then the "
"division uses the count read from {ph1}. The maintained source names that "
"field {ph2}. The complete sequence appears below."
msgstr ""
"{ph0} 儲存子彈索引。移位將它乘以 256，再除以從 {ph1} 讀取的數量。重建原始碼把這個欄位命名為 {ph2}。完整指令序列見下文。"

#: website/public/showcase/th04/index.html:425
msgctxt "page:showcase/th04/index.html"
msgid "Find where the pattern turns toward the player"
msgstr "找到模式轉向玩家的位置"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:446
msgctxt "page:showcase/th04/index.html"
msgid ""
"The instruction operands expose two coordinate differences and a direction "
"helper. Its return value is added to the relative ring angle. Source names "
"make those addresses readable; REA lets the agent check the original "
"operations behind them."
msgstr ""
"指令運算元顯示了兩個座標差，以及一個計算方向的輔助函式。它的返回值加到相對環形角度上。原始碼名稱讓這些地址的含義更易讀；REA "
"則幫助助手核對地址背後的原始操作。"

#: website/public/showcase/th04/index.html:457
msgctxt "page:showcase/th04/index.html"
msgid "From assembly to readable C++"
msgstr "從彙編到可讀C++"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:458
msgctxt "page:showcase/th04/index.html"
msgid ""
"Select a step to match the original instructions with the angle calculation."
" This summary follows the aimed-ring path; the full source also handles "
"spreads, stacks and random patterns."
msgstr "點選每一步，對照原始指令和角度計算。這份摘要展示自機狙環形彈幕的路徑；完整原始碼還處理散射、疊層和隨機模式。"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:469
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}01{ph1} Index"
msgstr "{ph0}01{ph1} 索引"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:477
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}02{ph1} Space"
msgstr "{ph0}02{ph1} 等分"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:485
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}03{ph1} Aim"
msgstr "{ph0}03{ph1} 瞄準"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:493
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}04{ph1} Rotate"
msgstr "{ph0}04{ph1} 旋轉"

#. {ph0}: <span>
#. {ph1}: </span>
#: website/public/showcase/th04/index.html:501
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}05{ph1} Store"
msgstr "{ph0}05{ph1} 儲存"

#: website/public/showcase/th04/index.html:513
msgctxt "page:showcase/th04/index.html"
msgid "REA · original 16-bit instructions"
msgstr "REA · 原始 16 位指令"

#: website/public/showcase/th04/index.html:547
msgctxt "page:showcase/th04/index.html"
msgid "Readable C++ · aimed-ring summary"
msgstr "可讀 C++ · 自機狙環形彈幕摘要"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SI</code>
#: website/public/showcase/th04/index.html:576
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}01 · Read the bullet index.{ph1} The stack argument is loaded into "
"{ph2}. In a 16-bullet ring, this member index runs from 0 through 15."
msgstr "{ph0}01 · 讀取子彈索引。{ph1} 棧引數載入到 {ph2}。在 16 顆子彈的環中，索引從 0 到 15。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>SHL AX,8</code>
#. {ph3}: <code>IDIV</code>
#: website/public/showcase/th04/index.html:581
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Space the directions around a full turn.{ph1} {ph2} multiplies by "
"256. The count is zero-extended into a word, then {ph3} divides the product "
"by that count. For count 16, each index advances 16 angle units."
msgstr ""
"{ph0}02 · 在整圈中等分方向。{ph1} {ph2} 將索引乘以 256。數量先零擴充套件為一個字，再由 {ph3} 用乘積除以數量。數量為 "
"16 時，每個索引前進 16 個角度單位。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AX</code>
#: website/public/showcase/th04/index.html:588
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}03 · Add the player direction.{ph1} The two subtractions form player-"
"minus-origin coordinates. The direction helper returns an angle in {ph2}; "
"adding it turns the whole ring toward the player."
msgstr ""
"{ph0}03 · 加上玩家方向。{ph1} 兩次減法得到玩家座標與原點座標的差。方向輔助函式在 {ph2} "
"中返回角度；加上這個值，就能把整圈彈幕轉向玩家。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>ADD AL,[0x53ad]</code>
#: website/public/showcase/th04/index.html:594
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}04 · Add the pattern's rotation.{ph1} {ph2} adds the template angle. "
"Elly's initial template sets it to zero; other patterns can use the same "
"helper with a rotation."
msgstr ""
"{ph0}04 · 加上模板旋轉角。{ph1} {ph2} 加上模板中的角度。Elly 的初始模板將它設為零；其他彈幕可以用同一個輔助函式進行旋轉。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>AL</code>
#: website/public/showcase/th04/index.html:600
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}05 · Keep the final angle in one byte.{ph1} The store writes {ph2} to "
"the spawn-angle field. Values wrap after 255, just as the unsigned-byte cast"
" does. The surrounding source also converts this angle and speed into "
"velocity."
msgstr ""
"{ph0}05 · 用一個位元組儲存最終角度。{ph1} 儲存指令把 {ph2} 寫入子彈生成角度欄位。值超過 255 "
"後迴繞，與無符號位元組轉換一致。周圍原始碼還會根據這個角度和速率計算速度分量。"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:609
msgctxt "page:showcase/th04/index.html"
msgid ""
"The assembly selects the aimed-ring branch, aim calculation and final store."
" The C++ above is a readable summary. Compiler checks below apply to the "
"maintained source in the linked project."
msgstr "彙編節選展示自機狙環形分支、瞄準計算和最終儲存。上面的 C++ 是便於閱讀的摘要。下方的編譯器檢查針對連結專案中維護的原始碼。"

#: website/public/showcase/th04/index.html:615
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:644
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Ring macro{ph1} · {ph2}Aim and velocity source{ph3} · {ph4}Angle "
"representation{ph5}"
msgstr "{ph0}環宏{ph1} · {ph2}目標和速度源{ph3} · {ph4}角度表示{ph5}"

#: website/public/showcase/th04/index.html:664
msgctxt "page:showcase/th04/index.html"
msgid "Checking the maintained source"
msgstr "檢查維護的源"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:665
msgctxt "page:showcase/th04/index.html"
msgid ""
"The TH04 project's recorded checks compile the bullet-generation code, "
"including this helper, with its pinned Turbo C++ 4.0J toolchain."
msgstr "TH04 專案記錄的檢查使用指定的 Turbo C++ 4.0J 工具鏈，編譯包含這個輔助函式的彈幕生成程式碼。"

#: website/public/showcase/th04/index.html:672
msgctxt "page:showcase/th04/index.html"
msgid "2,139 matching bytes"
msgstr "2,139匹配位元組"

#: website/public/showcase/th04/index.html:673
msgctxt "page:showcase/th04/index.html"
msgid ""
"The compiled bullet-generation code matches a 2,139-byte section of the "
"original executable."
msgstr "編譯的子彈生成程式碼與原始可執行檔案的2,139位元組部分相匹配。"

#: website/public/showcase/th04/index.html:679
msgctxt "page:showcase/th04/index.html"
msgid "Two clean builds"
msgstr "兩個乾淨的構建"

#: website/public/showcase/th04/index.html:680
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two separate builds produce the same matching bytes. The recorded input "
"hashes match the maintained source shown here."
msgstr "兩個單獨的構建產生相同的匹配位元組。 記錄的輸入雜湊值與此處顯示的維護源匹配。"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/docs/reconstruction/product/TH04_SEMANTIC_BULLET_GENERATION_V1236.md#validation"
#. >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:686
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Recorded on 3 October 2026. {ph0}Read the compiler checks{ph1}."
msgstr "2026年10月3日錄得。 {ph0}閱讀編譯器檢查{ph1}."

#: website/public/showcase/th04/index.html:694
msgctxt "page:showcase/th04/index.html"
msgid "Target identity and analysis scope"
msgstr "目標身份和分析範圍"

#: website/public/showcase/th04/index.html:699
msgctxt "page:showcase/th04/index.html"
msgid "Original target"
msgstr "原始目標"

#. {ph0}: <code>MAIN.EXE</code>
#: website/public/showcase/th04/index.html:700
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, 156,258 bytes, DOS MZ"
msgstr "{ph0},156,258位元組,DOS MZ"

#: website/public/showcase/th04/index.html:703
msgctxt "page:showcase/th04/index.html"
msgid "Helper entry"
msgstr "傭工入境"

#. {ph0}: <code>0x2cfc8</code>
#: website/public/showcase/th04/index.html:704
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0} in REA's loaded image"
msgstr "{ph0} 在REA的載入影象"

#: website/public/showcase/th04/index.html:707
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:708
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}, returned by {ph1}"
msgstr "{ph0}，返回 {ph1}"

#: website/public/showcase/th04/index.html:714
msgctxt "page:showcase/th04/index.html"
msgid "Recorded code inspection"
msgstr "記錄程式碼檢查"

#: website/public/showcase/th04/index.html:715
msgctxt "page:showcase/th04/index.html"
msgid "REA 4.1.0 · 7 October 2026"
msgstr "REA4.1.0*2026年10月7日"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:720
msgctxt "page:showcase/th04/index.html"
msgid ""
"Compiler checks cover the complete bullet-add code section, including this "
"helper. They also compare its MAP contribution and overlapping relocation."
msgstr "編譯器檢查覆蓋完整的彈幕新增程式碼段，包括這個輔助函式。檢查還比較它在 map 檔案中的貢獻，以及重疊的重定位項。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>0x1000</code>
#: website/public/showcase/th04/index.html:725
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"REA verified the static DOS load image at load segment {ph0}. Its addresses "
"describe that analysis image. The function result reports 503 body bytes in "
"two ranges across a 517-byte span; the selected instructions above lie in "
"those reported ranges."
msgstr ""
"REA 驗證了載入段為 {ph0} 的靜態 DOS 載入映像。地址描述的是分析映像。函式結果在一個 517 位元組範圍內報告了兩段程式碼，共 503 "
"位元組；上方節選的指令都位於這些已報告的程式碼範圍內。"

# Reviewed for clear case-study reasoning and evidence.
#. {ph0}: <code>0d72e980</code>
#: website/public/showcase/th04/index.html:732
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"The source names and compiler checks come from TH04 checkpoint {ph0}. "
"Earlier reconstruction observations used the project's own analysis scripts;"
" this page adds a fresh REA inspection of the same original target. The "
"supplied game's identity is pinned by its repository manifest, with "
"independent pristine-dump provenance still open."
msgstr ""
"原始碼名稱和編譯器檢查來自 TH04 檢查點 {ph0}。較早的重建分析使用專案自身的指令碼；這個頁面新增了用 REA "
"對同一原始目標的檢查。遊戲檔案的身份由儲存庫清單確定，獨立原始轉儲的來源仍未確定。"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:740
msgctxt "page:showcase/th04/index.html"
msgid ""
"The figure illustrates the angle calculation. Full-game controls, timing and"
" PC-98 hardware behavior have separate runtime checks in the reconstruction "
"project."
msgstr "圖中說明的是角度計算。完整遊戲的控制、時序和 PC-98 硬體行為，在重建專案中有各自的執行時檢查。"

#: website/public/showcase/th04/index.html:749
msgctxt "page:showcase/th04/index.html"
msgid "The full TH04 reconstruction"
msgstr "完整的TH04重建"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:750
msgctxt "page:showcase/th04/index.html"
msgid ""
"The project builds the game's four DOS products from maintained C++ and "
"assembly. Beyond bullet generation, the source covers stages, bosses, "
"rendering, input, menus, endings and score handling."
msgstr "專案用維護中的 C++ 和彙編構建遊戲的四個 DOS 程式。除了彈幕生成，原始碼還覆蓋關卡、Boss、渲染、輸入、選單、結局和分數處理。"

#. {ph0}: <a class="text-link" href="https://github.com/N0zoM1z0/th04" >
#. {ph1}: </a >
#: website/public/showcase/th04/index.html:756
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "{ph0}Explore the TH04 repository{ph1}"
msgstr "{ph0}探索 TH04 程式碼儲存庫{ph1}"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/0d72e9801a5c14c10384efcbb6734ceccb74ee63/src/main/bullet/add.cpp#L292"
#. >
#. {ph1}: </a >
#. {ph2}: <span >
#. {ph3}: </span >
#: website/public/showcase/th04/index.html:762
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Bullet-generation source{ph1}{ph2}The complete helper, other pattern "
"types and template tuning.{ph3}"
msgstr "{ph0}子彈生成源{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:771
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}DOS build and run guide{ph1}{ph2}Build the source and test it in the "
"project's PC-98 emulator workflow.{ph3}"
msgstr "{ph0}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:780
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}Current project state{ph1}{ph2}DOS verification and the separate native"
" x64 port.{ph3}"
msgstr "{ph0}當前專案狀態{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"

# Reviewed for clear case-study reasoning and evidence.
#: 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 "用 REA 檢查 TH04 的原始 16 位 DOS 程式碼。對照彙編與還原的 C++，瞭解環形彈幕如何等分方向並瞄準玩家。"

#: website/public/showcase/th04/index.html:256
msgctxt "page:showcase/th04/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/showcase/th04/index.html:266
msgctxt "page:showcase/th04/index.html"
msgid "TH04 bullet-pattern case study"
msgstr "TH04子彈型案例研究"

#: website/public/showcase/th04/index.html:281
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 example prompt"
msgstr "複製TH04示例提示"

#: website/public/showcase/th04/index.html:309
msgctxt "page:showcase/th04/index.html"
msgid ""
"TH04 fixed and aimed bullet rings; scroll horizontally on smaller screens"
msgstr "TH04固定和瞄準子彈環;在較小的螢幕上水平滾動"

# Reviewed for clear case-study reasoning and evidence.
#: website/public/showcase/th04/index.html:315
msgctxt "page:showcase/th04/index.html"
msgid ""
"Two diagrams of a 16-bullet ring. The fixed ring starts at angle zero. "
"Adding a player direction of 40 rotates every direction by the same amount; "
"the highlighted first bullet points toward the player. Both keep a spacing "
"of 16 angle units, or 22.5 degrees."
msgstr ""
"兩幅圖展示 16 顆子彈的環。固定環從角度 0 開始。加上玩家方向 40 後，每個方向都旋轉相同角度，高亮的第一顆子彈指向玩家。兩者都保持 16 "
"個角度單位的間距，即 22.5 度。"

#: website/public/showcase/th04/index.html:337
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 firing template"
msgstr "複製 TH04 發射範本"

#: website/public/showcase/th04/index.html:464
msgctxt "page:showcase/th04/index.html"
msgid "Follow the TH04 aimed-ring calculation"
msgstr "按照TH04-環計算"

#: website/public/showcase/th04/index.html:514
msgctxt "page:showcase/th04/index.html"
msgid "Copy TH04 assembly excerpt"
msgstr "複製TH04彙編摘錄"

#: website/public/showcase/th04/index.html:548
msgctxt "page:showcase/th04/index.html"
msgid "Copy readable aimed-ring calculation"
msgstr "複製可讀瞄準環計算"

#: website/public/showcase/th04/index.html:806
msgctxt "page:showcase/th04/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/assets/main.js:21
msgctxt "runtime"
msgid "Copied"
msgstr "已複製"

#: website/public/assets/main.js:32
msgctxt "runtime"
msgid "Selected"
msgstr "已選中"

#: website/public/assets/main.js:23
msgctxt "runtime"
msgid "Code copied to clipboard."
msgstr "程式碼已複製到剪貼簿。"

#: website/public/assets/main.js:34
msgctxt "runtime"
msgid "Code selected. Use your keyboard to copy it."
msgstr "程式碼已選中，請用鍵盤快捷鍵複製。"

#: website/public/assets/main.js:158
#, python-brace-format
msgctxt "runtime"
msgid "REA on GitHub ({count})"
msgstr "REA在GitHub（{count})"

#: website/public/assets/dino-demo.js:77
#, python-brace-format
msgctxt "runtime"
msgid "Distance {distance}"
msgstr "距離 {distance}"

#: website/public/assets/dino-demo.js:87
msgctxt "runtime"
msgid "Hit a cactus. Try another speed."
msgstr "撞到仙人掌了，試試其他速度。"

#: website/public/assets/dino-demo.js:87
msgctxt "runtime"
msgid "Space or Jump ↑"
msgstr "空格鍵或“跳躍” ↑"

#: website/public/assets/dino-demo.js:97
msgctxt "runtime"
msgid "Play again"
msgstr "再玩一次"

#: website/public/assets/dino-demo.js:97
#: website/public/assets/dino-demo.js:111
msgctxt "runtime"
msgid "Play"
msgstr "開始"

#: website/public/assets/dino-demo.js:171
msgctxt "runtime"
msgid "Pause"
msgstr "暫停"

#: website/public/assets/dino-demo.js:112
msgctxt "runtime"
msgid "Press Play, then jump over the cactus."
msgstr "點選“開始”，再跳過仙人掌。"

#: website/public/assets/dino-demo.js:147
msgctxt "runtime"
msgid "Hit a cactus. Press Play again, or change the speed and restart."
msgstr "撞到仙人掌了。再點選“開始”，或調整速度後重新開始。"

#: website/public/assets/dino-demo.js:172
msgctxt "runtime"
msgid "Running. Space or Jump clears a cactus."
msgstr "遊戲執行中。按空格鍵或“跳躍”越過仙人掌。"

#: website/public/assets/dino-demo.js:183
#: website/public/assets/dino-demo.js:219
#: website/public/assets/dino-demo.js:224
msgctxt "runtime"
msgid "Paused. Press Play to continue."
msgstr "已暫停。點選“開始”繼續。"

#: website/public/assets/dino-demo.js:203
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Space or Jump clears a cactus."
msgstr "固定速度：{speed}。按空格鍵或“跳躍”越過仙人掌。"

#: website/public/assets/dino-demo.js:206
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}. Press Play to try it."
msgstr "固定速度：{speed}。點選“開始”試試。"

#: website/public/assets/dino-demo.js:215
msgctxt "runtime"
msgid "Recovered rule: start at 6, then increase toward 13."
msgstr "還原的規則：速度從 6 開始，逐漸增加到 13。"

#: website/public/assets/dino-demo.js:216
#, python-brace-format
msgctxt "runtime"
msgid "Fixed speed: {speed}."
msgstr "固定速度: {speed}."

#: website/public/assets/dino-demo.js:249
msgctxt "runtime"
msgid ""
"Replayed the recovered rule. All four values match the controlled original-"
"game check when rounded to three decimals."
msgstr "重放了恢復的規則。 當四捨五入到三位小數時，所有四個值都匹配受控的原始遊戲檢查。"

#: website/public/assets/dino-demo.js:252
msgctxt "runtime"
msgid ""
"The replay differs from the recorded original-game values. Compare the speed"
" rule and settings above."
msgstr "重播與記錄的原始遊戲值不同。 比較上面的速度規則和設定。"

#: 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:24
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:25
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:27
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:28
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:32
msgctxt "figure:ctf-mask-equation.svg"
msgid "Only one cell contributes to this sum"
msgstr "只有一個單元格貢獻這一總和"

#: website/public/assets/figures/ctf-mask-equation.svg:35
msgctxt "figure:ctf-mask-equation.svg"
msgid "Position 21 in the flag must contain 7."
msgstr "標誌中的位置21必須包含7。"

#: website/public/assets/figures/ctf-mask-equation.svg:37
msgctxt "figure:ctf-mask-equation.svg"
msgid "Selected: one cell"
msgstr "選擇：一個單元格"

#: website/public/assets/figures/ctf-mask-equation.svg:38
msgctxt "figure:ctf-mask-equation.svg"
msgid "26 masks give 26 equations."
msgstr "26個掩碼給出26個方程。"

#: website/public/assets/figures/ctf-mask-equation.svg:39
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:20
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，縮放並轉換為整數。 "
"在3,205個原始-x86案例和單獨的63位元組編譯器重放中檢查維護的C。"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:39
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Stack"
msgstr "棧"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:40
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "input x"
msgstr "輸入 x"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:44
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Integer"
msgstr "整數"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:45
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "return"
msgstr "返回"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:46
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Reconstructed function"
msgstr "還原的函式"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:47
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Maintained C"
msgstr "可維護的 C"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:48
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Brick-hit caller"
msgstr "磚塊碰撞呼叫方"

#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:49
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "20 + 30 × tile_x"
msgstr "20 + 30 × tile_x"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:50
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "Original code"
msgstr "原始程式碼"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:51
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:54
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "comparison"
msgstr "比較"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:52
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "3,205 cases"
msgstr "3,205 個用例"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:53
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "VC4.0 build"
msgstr "VC4.0 編譯"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:55
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
msgid "63 matching bytes"
msgstr "63 位元組匹配"

#: website/public/assets/figures/rea-investigation-flow.svg:2
#: website/public/assets/figures/rea-investigation-flow.svg:22
msgctxt "figure:rea-investigation-flow.svg"
msgid "REA investigation flow"
msgstr "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:31
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:32
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:33
msgctxt "figure:rea-investigation-flow.svg"
msgid "App / binary / browser"
msgstr "應用 / 二進位制 / 瀏覽器"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:34
msgctxt "figure:rea-investigation-flow.svg"
msgid "2. Inspect & trace"
msgstr "2. 檢查與追蹤"

#: website/public/assets/figures/rea-investigation-flow.svg:36
msgctxt "figure:rea-investigation-flow.svg"
msgid "CLI / MCP"
msgstr "CLI / MCP"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:37
msgctxt "figure:rea-investigation-flow.svg"
msgid "3. Read the evidence"
msgstr "3. 閱讀證據"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:38
msgctxt "figure:rea-investigation-flow.svg"
msgid "Code / references /"
msgstr "程式碼 / 引用 /"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:39
msgctxt "figure:rea-investigation-flow.svg"
msgid "unknowns"
msgstr "未知資訊"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:40
msgctxt "figure:rea-investigation-flow.svg"
msgid "4. Use what you learn"
msgstr "4. 應用結果"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:41
msgctxt "figure:rea-investigation-flow.svg"
msgid "Your agent"
msgstr "程式設計助手"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:42
msgctxt "figure:rea-investigation-flow.svg"
msgid "Explain / implement / test"
msgstr "解釋 / 實現 / 測試"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:43
msgctxt "figure:rea-investigation-flow.svg"
msgid "Analysis tools"
msgstr "分析工具"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:44
msgctxt "figure:rea-investigation-flow.svg"
msgid "Local analysis adapters"
msgstr "本地分析介面卡"

# Reviewed for technical meaning and concise diagram labels.
#: website/public/assets/figures/rea-investigation-flow.svg:45
msgctxt "figure:rea-investigation-flow.svg"
msgid "Follow-up question"
msgstr "繼續提問"

#: 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:24
msgctxt "figure:th04-bullet-ring.svg"
msgid "Fixed ring"
msgstr "固定環"

#: website/public/assets/figures/th04-bullet-ring.svg:25
msgctxt "figure:th04-bullet-ring.svg"
msgid "First bullet: angle 0"
msgstr "第一顆子彈：角度0"

#: website/public/assets/figures/th04-bullet-ring.svg:26
msgctxt "figure:th04-bullet-ring.svg"
msgid "Aimed ring"
msgstr "瞄準環"

#: website/public/assets/figures/th04-bullet-ring.svg:27
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:64
#: website/public/assets/figures/th04-bullet-ring.svg:102
msgctxt "figure:th04-bullet-ring.svg"
msgid "Origin"
msgstr "原點"

#: website/public/assets/figures/th04-bullet-ring.svg:105
msgctxt "figure:th04-bullet-ring.svg"
msgid "Player"
msgstr "球員"

#: website/public/assets/figures/th04-bullet-ring.svg:110
msgctxt "figure:th04-bullet-ring.svg"
msgid "Same spacing: 256 ÷ 16 = 16 angle units = 22.5°"
msgstr "相同間距：256÷16=16角度單位=22.5°"

#: website/public/blog/index.html:118
#: website/public/blog/reverse-engineering-models/index.html:118
#: website/public/blog/touhou-reconstruction/index.html:118
#: website/public/contributors/index.html:119
#: website/public/examples/dino-lab/index.html:119
#: website/public/faq/index.html:118
#: website/public/first-investigation/index.html:118
#: website/public/get-started/index.html:118
#: website/public/guides/browser/index.html:118
#: website/public/guides/index.html:118
#: website/public/guides/javascript/index.html:118
#: website/public/guides/native/index.html:118 website/public/index.html:120
#: website/public/showcase/aegis/index.html:119
#: website/public/showcase/ctf/index.html:118
#: website/public/showcase/dx-ball/index.html:118
#: website/public/showcase/index.html:118
#: website/public/showcase/notion/index.html:118
#: website/public/showcase/th04/index.html:118
msgctxt "shared"
msgid "Showcases"
msgstr "案例展示"

#: website/public/blog/index.html:119
#: website/public/blog/reverse-engineering-models/index.html:119
#: website/public/blog/touhou-reconstruction/index.html:119
#: website/public/contributors/index.html:120
#: website/public/examples/dino-lab/index.html:120
#: website/public/faq/index.html:119
#: website/public/first-investigation/index.html:119
#: website/public/get-started/index.html:119
#: website/public/guides/browser/index.html:119
#: website/public/guides/index.html:119
#: website/public/guides/javascript/index.html:119
#: website/public/guides/native/index.html:119 website/public/index.html:121
#: website/public/showcase/aegis/index.html:120
#: website/public/showcase/ctf/index.html:119
#: website/public/showcase/dx-ball/index.html:119
#: website/public/showcase/index.html:119
#: website/public/showcase/notion/index.html:119
#: website/public/showcase/th04/index.html:119
msgctxt "shared"
msgid "Blog"
msgstr "部落格"

#: website/public/blog/index.html:117
#: website/public/blog/reverse-engineering-models/index.html:117
#: website/public/blog/touhou-reconstruction/index.html:117
#: website/public/contributors/index.html:118
#: website/public/examples/dino-lab/index.html:118
#: website/public/faq/index.html:117
#: website/public/first-investigation/index.html:117
#: website/public/get-started/index.html:117
#: website/public/guides/browser/index.html:117
#: website/public/guides/index.html:117
#: website/public/guides/javascript/index.html:117
#: website/public/guides/native/index.html:117 website/public/index.html:119
#: website/public/showcase/aegis/index.html:118
#: website/public/showcase/ctf/index.html:117
#: website/public/showcase/dx-ball/index.html:117
#: website/public/showcase/index.html:117
#: website/public/showcase/notion/index.html:117
#: website/public/showcase/th04/index.html:117
msgctxt "shared"
msgid "Get started"
msgstr "開始使用"

#: website/public/blog/index.html:120
#: website/public/blog/reverse-engineering-models/index.html:120
#: website/public/blog/touhou-reconstruction/index.html:120
#: website/public/contributors/index.html:121
#: website/public/examples/dino-lab/index.html:121
#: website/public/faq/index.html:120
#: website/public/first-investigation/index.html:120
#: website/public/get-started/index.html:120
#: website/public/guides/browser/index.html:120
#: website/public/guides/index.html:120
#: website/public/guides/javascript/index.html:120
#: website/public/guides/native/index.html:120 website/public/index.html:122
#: website/public/showcase/aegis/index.html:121
#: website/public/showcase/ctf/index.html:120
#: website/public/showcase/dx-ball/index.html:120
#: website/public/showcase/index.html:120
#: website/public/showcase/notion/index.html:120
#: website/public/showcase/th04/index.html:120
msgctxt "shared"
msgid "Guides"
msgstr "指南"

#: website/public/blog/index.html:242
#: website/public/blog/reverse-engineering-models/index.html:881
#: website/public/blog/touhou-reconstruction/index.html:1078
#: website/public/contributors/index.html:1129
#: website/public/examples/dino-lab/index.html:473
#: website/public/faq/index.html:571
#: website/public/first-investigation/index.html:532
#: website/public/get-started/index.html:1815
#: website/public/guides/browser/index.html:505
#: website/public/guides/index.html:280
#: website/public/guides/javascript/index.html:501
#: website/public/guides/native/index.html:507 website/public/index.html:1220
#: website/public/showcase/aegis/index.html:806
#: website/public/showcase/ctf/index.html:775
#: website/public/showcase/dx-ball/index.html:783
#: website/public/showcase/index.html:315
#: website/public/showcase/notion/index.html:629
#: website/public/showcase/th04/index.html:798
msgctxt "shared"
msgid "Source"
msgstr "原始碼"

#: website/public/blog/index.html:243
#: website/public/blog/reverse-engineering-models/index.html:882
#: website/public/blog/touhou-reconstruction/index.html:1079
#: website/public/contributors/index.html:1130
#: website/public/examples/dino-lab/index.html:474
#: website/public/faq/index.html:572
#: website/public/first-investigation/index.html:533
#: website/public/get-started/index.html:1816
#: website/public/guides/browser/index.html:506
#: website/public/guides/index.html:281
#: website/public/guides/javascript/index.html:502
#: website/public/guides/native/index.html:508 website/public/index.html:1221
#: website/public/showcase/aegis/index.html:807
#: website/public/showcase/ctf/index.html:776
#: website/public/showcase/dx-ball/index.html:784
#: website/public/showcase/index.html:316
#: website/public/showcase/notion/index.html:630
#: website/public/showcase/th04/index.html:799
msgctxt "shared"
msgid "MIT license"
msgstr "MIT 許可證"

#: website/public/blog/index.html:244
#: website/public/blog/reverse-engineering-models/index.html:883
#: website/public/blog/touhou-reconstruction/index.html:1080
#: website/public/contributors/index.html:1131
#: website/public/examples/dino-lab/index.html:475
#: website/public/faq/index.html:573
#: website/public/first-investigation/index.html:534
#: website/public/get-started/index.html:1817
#: website/public/guides/browser/index.html:507
#: website/public/guides/index.html:282
#: website/public/guides/javascript/index.html:503
#: website/public/guides/native/index.html:509 website/public/index.html:1222
#: website/public/showcase/aegis/index.html:808
#: website/public/showcase/ctf/index.html:777
#: website/public/showcase/dx-ball/index.html:785
#: website/public/showcase/index.html:317
#: website/public/showcase/notion/index.html:631
#: website/public/showcase/th04/index.html:800
msgctxt "shared"
msgid "Join the community"
msgstr "加入社群"

#: website/public/blog/index.html:245
#: website/public/blog/reverse-engineering-models/index.html:884
#: website/public/blog/touhou-reconstruction/index.html:1081
#: website/public/contributors/index.html:1132
#: website/public/examples/dino-lab/index.html:476
#: website/public/faq/index.html:574
#: website/public/first-investigation/index.html:535
#: website/public/get-started/index.html:1818
#: website/public/guides/browser/index.html:508
#: website/public/guides/index.html:283
#: website/public/guides/javascript/index.html:504
#: website/public/guides/native/index.html:510 website/public/index.html:1223
#: website/public/showcase/aegis/index.html:809
#: website/public/showcase/ctf/index.html:778
#: website/public/showcase/dx-ball/index.html:786
#: website/public/showcase/index.html:318
#: website/public/showcase/notion/index.html:632
#: website/public/showcase/th04/index.html:801
msgctxt "shared"
msgid "Follow us on X"
msgstr "在 X 上關注我們"

#: website/public/examples/dino-lab/index.html:311
msgctxt "page:examples/dino-lab/index.html"
msgid "REA · selected script source"
msgstr "REA · 選定指令碼源"

#: website/public/first-investigation/index.html:379
msgctxt "page:first-investigation/index.html"
msgid "Source"
msgstr "原始碼"

#: website/public/first-investigation/index.html:433
msgctxt "page:first-investigation/index.html"
msgid "Expected formatter output"
msgstr "預期格式化程式輸出"

#: website/public/guides/index.html:224
msgctxt "page:guides/index.html"
msgid "Instructions"
msgstr "指令"

#: website/public/guides/index.html:225
msgctxt "page:guides/index.html"
msgid "Caller"
msgstr "呼叫方"

#: website/public/guides/index.html:226
msgctxt "page:guides/index.html"
msgid "Constants"
msgstr "常量"

#: website/public/guides/index.html:227
msgctxt "page:guides/index.html"
msgid "C function"
msgstr "C函式"

#: website/public/guides/index.html:242
msgctxt "page:guides/index.html"
msgid "Button"
msgstr "按鈕"

#: website/public/guides/index.html:243
msgctxt "page:guides/index.html"
msgid "Preload API"
msgstr "預載入API"

#: website/public/guides/index.html:244
msgctxt "page:guides/index.html"
msgid "IPC"
msgstr "IPC"

#: website/public/guides/index.html:244
msgctxt "page:guides/index.html"
msgid "CSV file"
msgstr "CSV檔案"

#: website/public/guides/index.html:264
msgctxt "page:guides/index.html"
msgid "Your click"
msgstr "你的點選"

#: website/public/guides/index.html:265
msgctxt "page:guides/index.html"
msgid "Captured request"
msgstr "捕獲的請求"

#: website/public/guides/index.html:266
msgctxt "page:guides/index.html"
msgid "Export script"
msgstr "匯出指令碼"

#: website/public/guides/javascript/index.html:362
msgctxt "page:guides/javascript/index.html"
msgid "REA result · summary.ipc excerpt"
msgstr "REA 結果 · summary.ipc 摘錄"

#: website/public/guides/native/index.html:389
msgctxt "page:guides/native/index.html"
msgid "REA instruction excerpt · 0x406409"
msgstr "REA指令摘錄·0x406409"

#: website/public/guides/native/index.html:403
msgctxt "page:guides/native/index.html"
msgid "REA caller excerpt · 0x411f5b"
msgstr "REA呼叫方摘錄 · 0x411f5b"

#: website/public/guides/native/index.html:417
msgctxt "page:guides/native/index.html"
msgid "REA byte results · interpreted as little-endian doubles"
msgstr "REA位元組結果 · 解釋為little-endian雙精度浮點數"

#: website/public/guides/native/index.html:434
msgctxt "page:guides/native/index.html"
msgid "Recovered C · excerpt"
msgstr "恢復C · 摘錄"

#: website/public/index.html:1034
msgctxt "page:index.html"
msgid "Showcases →"
msgstr "檢視案例 →"

#: website/public/index.html:763
msgctxt "page:index.html"
msgid "Selected settings from the inspected script"
msgstr "實際指令碼中的設定節選"

#: website/public/index.html:938
msgctxt "page:index.html"
msgid "Readable summary of the % handler"
msgstr "% 處理函式的可讀摘要"

#: website/public/index.html:982
msgctxt "page:index.html"
msgid "REA · selected original instructions"
msgstr "REA · 原始指令節選"

#: website/public/index.html:993
msgctxt "page:index.html"
msgid "Operator IDs · Microsoft’s source"
msgstr "運算子 ID · Microsoft 原始碼"

#: website/public/showcase/aegis/index.html:404
#: website/public/showcase/aegis/index.html:436
msgctxt "page:showcase/aegis/index.html"
msgid "Agent → REA"
msgstr "程式設計助手→ REA"

#: website/public/showcase/aegis/index.html:414
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · selected results"
msgstr "REA →程式設計助手 · 選定結果"

#: website/public/showcase/aegis/index.html:450
msgctxt "page:showcase/aegis/index.html"
msgid "REA → agent · methods and callers"
msgstr "REA →程式設計助手·方法和呼叫者"

#: website/public/showcase/aegis/index.html:520
msgctxt "page:showcase/aegis/index.html"
msgid "REA · selected decompiled Java"
msgstr "REA · 精選反編譯Java"

#: website/public/showcase/aegis/index.html:550
msgctxt "page:showcase/aegis/index.html"
msgid "Readable summary · agent's interpretation"
msgstr "可讀摘要 · 程式設計助手解釋"

#: website/public/showcase/aegis/index.html:605
msgctxt "page:showcase/aegis/index.html"
msgid "REA · generateOTP, complete body"
msgstr "REA · generateOTP 完整函式體"

#: website/public/showcase/aegis/index.html:723
msgctxt "page:showcase/aegis/index.html"
msgid "Download Aegis APK"
msgstr "下載Aegis APK"

#: website/public/showcase/aegis/index.html:727
msgctxt "page:showcase/aegis/index.html"
msgid "Download Android analysis provider"
msgstr "下載 Android 分析後端"

#: website/public/showcase/ctf/index.html:307
#: website/public/showcase/ctf/index.html:343
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA"
msgstr "程式設計助手→ REA"

#: website/public/showcase/ctf/index.html:323
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected results"
msgstr "REA →程式設計助手 · 選定結果"

#: website/public/showcase/ctf/index.html:355
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · selected instructions"
msgstr "REA →程式設計助手 · 選擇說明"

#: website/public/showcase/ctf/index.html:418
msgctxt "page:showcase/ctf/index.html"
msgid "Agent → REA · read_bytes"
msgstr "程式設計助手→ REA  · read_bytes"

#: website/public/showcase/ctf/index.html:425
msgctxt "page:showcase/ctf/index.html"
msgid "REA → agent · seventh entries"
msgstr "REA →程式設計助手·第七項"

#: website/public/showcase/ctf/index.html:693
msgctxt "page:showcase/ctf/index.html"
msgid "Original executable · SHA-256"
msgstr "原始可執行檔案 · SHA-256"

#: website/public/showcase/ctf/index.html:729
msgctxt "page:showcase/ctf/index.html"
msgid "Download the original challenge"
msgstr "下載原始挑戰"

#: website/public/showcase/ctf/index.html:733
msgctxt "page:showcase/ctf/index.html"
msgid "Download solver"
msgstr "下載求解器"

#: website/public/showcase/dx-ball/index.html:334
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:357
#: website/public/showcase/dx-ball/index.html:381
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · {ph0}"
msgstr "程式設計助手→ REA · {ph0}"

#: website/public/showcase/dx-ball/index.html:363
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA →程式設計助手·指令摘錄"

#: website/public/showcase/dx-ball/index.html:387
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA → agent · caller excerpt"
msgstr "REA →程式設計助手·呼叫方摘錄"

# Reviewed for clear terminology and preserved evidence.
#. {ph0}: <code>read_bytes</code>
#: website/public/showcase/dx-ball/index.html:405
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid "Agent → REA · two {ph0} requests"
msgstr "助手 → REA · 兩次 {ph0} 請求"

#: website/public/showcase/dx-ball/index.html:415
msgctxt "page:showcase/dx-ball/index.html"
msgid "REA byte results · decoded as doubles"
msgstr "REA 位元組結果 · 雙精度浮點數解碼"

#: website/public/showcase/dx-ball/index.html:768
msgctxt "page:showcase/dx-ball/index.html"
msgid "Start with your own target"
msgstr "從你自己的目標開始"

#: website/public/showcase/index.html:217
msgctxt "page:showcase/index.html"
msgid "APK"
msgstr "APK"

#: website/public/showcase/index.html:218
msgctxt "page:showcase/index.html"
msgid "Generating code"
msgstr "生成驗證碼"

#: website/public/showcase/index.html:219
msgctxt "page:showcase/index.html"
msgid "Recovered rule"
msgstr "還原的規則"

#: website/public/showcase/index.html:220
msgctxt "page:showcase/index.html"
msgid "Adjustable clock"
msgstr "可調時鐘"

#: website/public/showcase/index.html:235
msgctxt "page:showcase/index.html"
msgid "Binary"
msgstr "二進位制"

#: website/public/showcase/index.html:236
msgctxt "page:showcase/index.html"
msgid "Checking code"
msgstr "檢查 flag 的程式碼"

#: website/public/showcase/index.html:237
msgctxt "page:showcase/index.html"
msgid "Equations"
msgstr "方程"

#: website/public/showcase/index.html:238
msgctxt "page:showcase/index.html"
msgid "Correct!"
msgstr "正確！"

#: website/public/showcase/index.html:254
msgctxt "page:showcase/index.html"
msgid "Executable"
msgstr "可執行檔案"

#: website/public/showcase/index.html:255
msgctxt "page:showcase/index.html"
msgid "REA findings"
msgstr "REA調查結果"

#: website/public/showcase/index.html:256
msgctxt "page:showcase/index.html"
msgid "Recovered C"
msgstr "還原的 C 程式碼"

#: website/public/showcase/index.html:257
msgctxt "page:showcase/index.html"
msgid "Validation"
msgstr "驗證"

#: website/public/showcase/index.html:272
msgctxt "page:showcase/index.html"
msgid "Packaged app"
msgstr "打包應用程式"

#: website/public/showcase/index.html:273
msgctxt "page:showcase/index.html"
msgid "Exposed API"
msgstr "公開API"

#: website/public/showcase/index.html:274
msgctxt "page:showcase/index.html"
msgid "IPC wrappers"
msgstr "IPC包裝器"

#: website/public/showcase/index.html:275
msgctxt "page:showcase/index.html"
msgid "Clipboard"
msgstr "剪貼簿"

#: website/public/showcase/index.html:290
msgctxt "page:showcase/index.html"
msgid "Original DOS code"
msgstr "原始DOS程式碼"

#: website/public/showcase/index.html:291
msgctxt "page:showcase/index.html"
msgid "REA instructions"
msgstr "REA 指令"

#: website/public/showcase/index.html:292
msgctxt "page:showcase/index.html"
msgid "Angle calculation"
msgstr "角度計算"

#: website/public/showcase/index.html:293
msgctxt "page:showcase/index.html"
msgid "Bullet ring"
msgstr "環形彈幕"

#: website/public/showcase/notion/index.html:309
msgctxt "page:showcase/notion/index.html"
msgid "Exposed page API"
msgstr "公開頁面API"

#: website/public/showcase/notion/index.html:315
msgctxt "page:showcase/notion/index.html"
msgid "Renderer IPC call"
msgstr "渲染器IPC呼叫"

#: website/public/showcase/notion/index.html:477
msgctxt "page:showcase/notion/index.html"
msgid "Sent to the system clipboard"
msgstr "傳送到系統剪貼簿"

#: website/public/showcase/notion/index.html:485
msgctxt "page:showcase/notion/index.html"
msgid "Saved locally by Notion"
msgstr "Notion本地儲存"

#: website/public/showcase/notion/index.html:530
msgctxt "page:showcase/notion/index.html"
msgid "Markdown input"
msgstr "Markdown 輸入"

#: website/public/showcase/notion/index.html:537
msgctxt "page:showcase/notion/index.html"
msgid "Structured parser output · excerpt"
msgstr "結構化解析器輸出 · 摘錄"

#: website/public/showcase/notion/index.html:614
msgctxt "page:showcase/notion/index.html"
msgid "Analyze your own app"
msgstr "分析你自己的應用程式"

#: website/public/showcase/th04/index.html:374
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA"
msgstr "程式設計助手→ REA"

#: website/public/showcase/th04/index.html:383
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · selected fields"
msgstr "REA →程式設計助手 · 選定欄位"

#. {ph0}: <code>analyze_function</code>
#: website/public/showcase/th04/index.html:402
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid "Agent → REA · {ph0}"
msgstr "程式設計助手→ REA · {ph0}"

#: website/public/showcase/th04/index.html:408
msgctxt "page:showcase/th04/index.html"
msgid "REA → agent · instruction excerpt"
msgstr "REA →程式設計助手·指令摘錄"

#: website/public/showcase/th04/index.html:429
msgctxt "page:showcase/th04/index.html"
msgid "Same function result · aim excerpt"
msgstr "相同的函式結果 · 目標摘錄"

#: website/public/showcase/th04/index.html:438
msgctxt "page:showcase/th04/index.html"
msgid "Corresponding maintained C++"
msgstr "對應維護的C++"

#: website/public/showcase/th04/index.html:618
msgctxt "page:showcase/th04/index.html"
msgid "Ring macro · TH04 branch, excerpt"
msgstr "環宏 · TH04分支，摘錄"

#: website/public/showcase/th04/index.html:628
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 "200的10%是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:430
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to analyze {ph3} and explain how it exports data. "
"Show the relevant code and source locations.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}用 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:248
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}使用 {ph3} 安裝 "
"REA，並連線到這個程式設計助手。先展示安裝計劃，等我確認後再執行，然後驗證安裝結果。{ph4}{ph5}{ph6}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-analysis-prompt" >
#. {ph3}: <span translate="no" >https://rea.tools/examples/notes-
#. example.zip</span >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="terminal-cursor" aria-hidden="true">
#. {ph7}: </span>
#: website/public/first-investigation/index.html:298
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Download {ph3} into a new example folder and unpack it. Use "
"REA to find what happens when I click Export notes. Show where {ph4} is "
"written, which fields it contains, and the relevant files and "
"lines.{ph5}{ph6}{ph7}"
msgstr ""
"{ph0}›{ph1}{ph2}下載 {ph3}，放進一個新的示例資料夾並解壓。用 REA 找出點選 Export notes 後發生了什麼。展示 "
"{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:783
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}使用 {ph3} 安裝 "
"REA，並連線到這個程式設計助手。先展示安裝計劃，等我確認後再執行，然後驗證安裝結果。{ph4}{ph5}{ph6}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="home-install-prompt" >
#. {ph3}: <span translate="no">npx rea-agents@latest setup</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:268
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Install REA and connect it to this coding agent using {ph3}."
" Show me the setup plan for approval, then verify the "
"installation.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}使用 {ph3} 安裝 "
"REA，並連線到這個程式設計助手。先展示安裝計劃，等我確認後再執行，然後驗證安裝結果。{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">dino-speed.js</span>
#: website/public/examples/dino-lab/index.html:325
#, python-brace-format
msgctxt "page:examples/dino-lab/index.html"
msgid "Reconstruction · {ph0}"
msgstr "重建工程 · {ph0}"

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/faq/index.html:223
#, python-brace-format
msgctxt "page:faq/index.html"
msgid ""
"With {ph0} and npm available, run setup, choose your coding agent and review"
" the proposed changes."
msgstr "準備好 {ph0} 和 npm 後，執行 setup，選擇程式設計助手，再確認擬進行的更改。"

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:207
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "A supplied example · {ph0} and npm · Your coding agent"
msgstr "提供的示例 · {ph0} 和 npm · 程式設計助手"

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="../get-started/">
#. {ph2}: </a >
#: website/public/first-investigation/index.html:226
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"Use a coding agent such as Claude Code, Codex or Cursor. You’ll need {ph0} "
"and npm; the {ph1}setup guide lists supported versions{ph2}."
msgstr ""
"使用 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:344
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0}Page · {ph1}{ph2}{ph3}Export notes{ph4}{ph5}Calls {ph6}.{ph7}"
msgstr "{ph0}頁面 · {ph1}{ph2}{ph3}Export notes（匯出筆記）{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:352
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Bridge · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}Sends a named message to the "
"main process.{ph7}"
msgstr "{ph0}橋接 · {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:360
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}Handler · {ph1}{ph2}{ph3}Write {ph4}{ph5}{ph6}Calls the formatter in "
"{ph7} and writes the file.{ph8}"
msgstr ""
"{ph0}處理函式 · {ph1}{ph2}{ph3}寫入 {ph4}{ph5}{ph6}呼叫 {ph7} 中的格式化函式，再寫入檔案。{ph8}"

#. {ph0}: <span translate="no">main.js</span>
#: website/public/first-investigation/index.html:378
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid "{ph0} · lines 8–12"
msgstr "{ph0} · 第 8–12 行"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="first-check-prompt" >
#. {ph3}: <span translate="no">Hello, "REA"</span>
#. {ph4}: <span translate="no">toCsv</span>
#. {ph5}: <span translate="no">Node.js</span>
#. {ph6}: </span >
#. {ph7}: <span class="terminal-cursor" aria-hidden="true">
#. {ph8}: </span>
#: website/public/first-investigation/index.html:420
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title {ph3}. Then "
"run the example’s {ph4} formatter with {ph5} to check it. Show the "
"prediction and actual output.{ph6}{ph7}{ph8}"
msgstr ""
"{ph0}›{ph1}{ph2}預測 id 為 1、標題為 {ph3} 的筆記會匯出怎樣的 CSV。再用 {ph5} 執行示例的 {ph4} "
"格式化函式驗證。展示預測和實際輸出。{ph6}{ph7}{ph8}"

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/first-investigation/index.html:438
#, python-brace-format
msgctxt "page:first-investigation/index.html"
msgid ""
"The title stays in one quoted field; each quotation mark is doubled. This "
"checks the formatter directly with {ph0}."
msgstr "標題保留在一個帶引號的欄位裡，每個引號都寫成兩個。這裡用 {ph0} 直接檢查格式化函式。"

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:256
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"You'll need {ph0} 22 (22.23.4+), 24 (24.22.1+) or 26+ (>=26.12.1). npm comes with {ph1}."
msgstr "需要 {ph0} 22（22.23.4+）、24（24.22.1+）或 26+ (>=26.12.1)。npm 會隨 {ph1} 一起安裝。"

#. {ph0}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:262
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "Don't have {ph0}, or not sure?"
msgstr "還沒安裝 {ph0}，或不確定？"

#. {ph0}: <code>node -v</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/get-started/index.html:281
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If {ph0} prints v22.23.4+, v24.22.1+ or v26.12.1+, you're ready. If it prints an "
"older version or \"not recognized\" / \"command not found\", install {ph1} "
"24 LTS:"
msgstr ""
"如果 {ph0} 顯示 v22.23.4+、v24.22.1+ 或 v26.12.1+，就可以繼續。如果版本更舊，或顯示“無法識別”/“command not "
"found”，先安裝 {ph1} 24 LTS："

#. {ph0}: <span translate="no">export.js</span>
#: website/public/guides/browser/index.html:446
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid "{ph0} · example source excerpt"
msgstr "{ph0}  · 示例源摘錄"

#. {ph0}: <a href="../../examples/notes-web/">
#. {ph1}: </a>
#. {ph2}: <a href="../../examples/notes-web/export.js" download >
#. {ph3}: <span translate="no">export.js</span>
#. {ph4}: </a >
#. {ph5}: <a href="../../examples/notes-web/notes.json" download >
#. {ph6}: <span translate="no">notes.json</span>
#. {ph7}: </a >
#: website/public/guides/browser/index.html:464
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"{ph0}Open the example{ph1} · {ph2}Download {ph3}{ph4} · {ph5}Download "
"{ph6}{ph7}"
msgstr "{ph0}開啟示例{ph1} · {ph2}下載 {ph3}{ph4} · {ph5}下載 {ph6}{ph7}"

#. {ph0}: <span translate="no">renderer.js</span>
#: website/public/guides/javascript/index.html:314
#: website/public/guides/javascript/index.html:330
#: website/public/guides/javascript/index.html:345
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid "{ph0} · example source"
msgstr "{ph0}  · 示例來源"

#. {ph0}: <code>notes-example</code>
#. {ph1}: <span translate="no">Node.js</span>
#: website/public/guides/javascript/index.html:379
#, python-brace-format
msgctxt "page:guides/javascript/index.html"
msgid ""
"Download the example and unzip it. The archive contains the complete {ph0} "
"folder. Analyze it with {ph1} and npm; Electron is not needed for this "
"example."
msgstr "下載示例並解壓縮。 存檔包含完整的 {ph0} 資料夾。 分析它與 {ph1} 和 npm; Electron 本例不需要。"

#. {ph0}: <span translate="no">Node.js</span>
#. {ph1}: <a href="get-started/">
#. {ph2}: </a>
#: website/public/index.html:313
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"First time, or missing {ph0} or a coding agent? {ph1}Follow the step-by-step"
" setup guide →{ph2}"
msgstr "第一次使用，還沒安裝 {ph0} 或程式設計助手？{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:528
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect Windows Calculator. Why does {ph3} give "
"220?{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}用 REA 檢查 Windows 計算器。為什麼 {ph3} 會得到 220？{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/index.html:715
#, python-brace-format
msgctxt "page:index.html"
msgid "REA · loaded {ph0} · selected lines"
msgstr "REA · 已載入 {ph0} · 程式碼節選"

#. {ph0}: <span class="flow-label" >
#. {ph1}: <span translate="no">calc.exe</span>
#. {ph2}: </span >
#. {ph3}: <span class="flow-node">
#. {ph4}: </span >
#. {ph5}: <span class="flow-note" >
#. {ph6}: <code>ms-calculator:</code>
#. {ph7}: </span >
#: website/public/index.html:951
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}01 · REA reads {ph1}{ph2}{ph3}It launches the Calculator "
"app{ph4}{ph5}The code opens {ph6}. The agent then selects the installed "
"app’s library.{ph7}"
msgstr ""
"{ph0}01 · REA 讀取 {ph1}{ph2}{ph3}它啟動計算器應用{ph4}{ph5}程式碼開啟 "
"{ph6}。助手隨後選擇已安裝應用的庫。{ph7}"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="aegis-prompt" >
#. {ph3}: <span translate="no">aegis-v3.4.3.apk</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/showcase/aegis/index.html:283
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect {ph3}. Find how it generates the six-"
"digit login code, explain why it changes every 30 seconds, and rebuild a "
"small demo where I can change the time.{ph4}{ph5}{ph6}"
msgstr ""
"{ph0}›{ph1}{ph2}用 REA 分析 {ph3}，找出六位登入驗證碼是怎麼產生的，解釋為什麼它每 30 "
"秒變化一次，再做一個可以調整時間的小示範。{ph4}{ph5}{ph6}"

#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:347
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · API member"
msgstr "tab_browser_view/{ph0}  · API 成員"

#. {ph0}: <span translate="no">preload.js</span>
#: website/public/showcase/notion/index.html:376
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "tab_browser_view/{ph0} · IPC helper"
msgstr "tab_browser_view/{ph0}  · IPC 輔助函式"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:407
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · handler helper"
msgstr "主要/{ph0}  · 處理程式助手"

#. {ph0}: <span translate="no">index.js</span>
#: website/public/showcase/notion/index.html:435
#, python-brace-format
msgctxt "page:showcase/notion/index.html"
msgid "main/{ph0} · clipboard receiver"
msgstr "主要/{ph0}  · 剪貼簿接收器"

#: website/public/assets/theme.js:52
msgctxt "runtime"
msgid "Switch to light mode"
msgstr "切換至淺色模式"

#: website/public/assets/theme.js:53
msgctxt "runtime"
msgid "Switch to dark mode"
msgstr "切換至深色模式"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/web-network-
#. captures.md" >
#. {ph1}: </a >
#: website/public/guides/browser/index.html:485
#, python-brace-format
msgctxt "page:guides/browser/index.html"
msgid ""
"For HTTP request and response bodies, use {ph0}Fiddler Everywhere: SAZ "
"captures, MCP and public skills{ph1}. Export SAZ or HAR 1.2 for offline REA "
"capture Evidence, or connect Everywhere's MCP server to inspect captured "
"traffic with your agent."
msgstr ""
"若要檢查 HTTP 請求與回應本文，請使用{ph0}Fiddler Everywhere：SAZ 擷取、MCP 與公開技能{ph1}。匯出 SAZ ? "
"HAR 1.2 可在 REA 中離線取得擷取 Evidence，也可以連接 Everywhere 的 MCP 伺服器，讓代理檢查已擷取的流量。"

#. {ph0}: <br />
#: website/public/blog/index.html:205
#, python-brace-format
msgctxt "page:blog/index.html"
msgid "Model specialization{ph0}Essay"
msgstr "專用模型{ph0}隨筆"

#: website/public/blog/index.html:207
msgctxt "page:blog/index.html"
msgid "Does reverse engineering need a bigger model?"
msgstr "逆向工程需要更大的模型嗎？"

#: website/public/blog/index.html:208
msgctxt "page:blog/index.html"
msgid ""
"What Touhou reconstruction suggests about general models, specialist models "
"and learning from compiler feedback."
msgstr "從 Touhou 重建的經驗，探討通用模型、專用模型，以及如何從編譯器回饋中學習。"

#: website/public/blog/index.html:215
msgctxt "page:blog/index.html"
msgid "By N0zoM1z0 · 13 October 2026"
msgstr "作者 N0zoM1z0 · 2026 年 10 月 13 日"

#: website/public/blog/reverse-engineering-models/index.html:107
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

#. {ph0}: <a href="../../">
#. {ph1}: </a>
#. {ph2}: <a href="../">
#. {ph3}: </a>
#: website/public/blog/reverse-engineering-models/index.html:199
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Models and RE"
msgstr "{ph0}首頁{ph1} / {ph2}部落格{ph3} / 模型與逆向工程"

#: website/public/blog/reverse-engineering-models/index.html:202
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Essay"
msgstr "隨筆"

# Reviewed for technical meaning and readability; preserve the distinction
# between historical evidence and proposed experiments.
#: website/public/blog/reverse-engineering-models/index.html:203
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Does reverse engineering need a bigger model?"
msgstr "逆向工程需要更大的模型嗎？"

#: website/public/blog/reverse-engineering-models/index.html:204
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "By N0zoM1z0 · 13 October 2026"
msgstr "作者 N0zoM1z0 · 2026 年 10 月 13 日"

#: website/public/blog/reverse-engineering-models/index.html:206
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Takeaway"
msgstr "要點"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:208
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Model capability changes the hypotheses an agent can find.{ph1} Later "
"sessions have solved problems that earlier work left unresolved."
msgstr "{ph0}模型能力會影響 agent 能提出哪些假設。{ph1} 後來的工作解決了早期嘗試未能解決的問題。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:216
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}A familiar compiler gives specialization something concrete to "
"learn.{ph1} Some exact matches depend on narrow, reusable source patterns."
msgstr "{ph0}熟悉的編譯器為專用模型提供了具體的學習對象。{ph1} 有些精確匹配依賴細小但可以複用的原始碼模式。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/blog/reverse-engineering-models/index.html:223
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Give repository knowledge a fair comparison.{ph1} A smaller model with "
"good retrieval may already know enough to make progress."
msgstr "{ph0}也要公平評估程式碼倉庫裡的知識。{ph1} 較小的模型配合良好的檢索，可能已經掌握了足以推進工作的知識。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:228
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Train the next useful experiment, and test its oracle.{ph1} The value "
"of feedback depends on what the checker actually verifies."
msgstr "{ph0}訓練模型選擇下一個有價值的實驗，同時檢驗它使用的驗證器。{ph1} 回饋是否有用，取決於驗證器究竟檢查了什麼。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:235
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Measure accepted reconstruction against time and cost.{ph1} That is the"
" result I want from the whole agent."
msgstr "{ph0}結合時間和成本，評估透過驗證的重建成果。{ph1} 這是我希望從整個 agent 工作流程中獲得的結果。"

#: website/public/blog/reverse-engineering-models/index.html:246
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "In this article"
msgstr "在本文中"

#. {ph0}: <a href="#model-capability">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:248
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}What better models changed{ph1}"
msgstr "{ph0}更強的模型改變了什麼{ph1}"

#. {ph0}: <a href="#specialization">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:249
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Why specialize?{ph1}"
msgstr "{ph0}為什麼考慮專用模型？{ph1}"

#. {ph0}: <a href="#repository-knowledge">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:250
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Where experience lives{ph1}"
msgstr "{ph0}這些經驗應該存在哪裡？{ph1}"

#. {ph0}: <a href="#learning-search">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:251
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}Learning the next experiment{ph1}"
msgstr "{ph0}學習選擇下一個有價值的實驗{ph1}"

#. {ph0}: <a href="#re-and-rl">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:252
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}RE and reinforcement learning{ph1}"
msgstr "{ph0}逆向工程與強化學習{ph1}"

#. {ph0}: <a href="#oracle">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:253
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}When the oracle is wrong{ph1}"
msgstr "{ph0}當驗證器出錯時{ph1}"

#. {ph0}: <a href="#comparison">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:254
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}A comparison worth running{ph1}"
msgstr "{ph0}值得做的對照實驗{ph1}"

#. {ph0}: <a href="#future-agent">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:255
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "{ph0}What kind of agent?{ph1}"
msgstr "{ph0}這意味著怎樣的 agent？{ph1}"

#: website/public/blog/reverse-engineering-models/index.html:263
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What better models changed"
msgstr "更強的模型改變了什麼"

#: website/public/blog/reverse-engineering-models/index.html:264
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Since August 2026, I have been exploring how much reverse engineering an "
"agent can carry out with access to a program and a way to check its work. "
"Most of my experience comes from reconstructing games, especially Touhou. As"
" I have changed models, the repositories have kept a record of what each "
"session managed to recover."
msgstr ""
"從 2026 年 8 月開始，我一直在探索：如果給 agent "
"訪問程式的能力，以及驗證自身工作的手段，它能獨立完成多少逆向工作？我的經驗主要來自遊戲重建，尤其是東方系列。隨著我更換模型，程式碼倉庫記錄了每次工作還原出的內容。"

#: website/public/blog/reverse-engineering-models/index.html:272
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Much of that work aims at exact reconstruction: we compile the maintained "
"source under a pinned historical toolchain and check whether it reproduces "
"the target function. When a later model succeeds where earlier work stalled,"
" the source changes show what made that progress possible."
msgstr ""
"這些工作很大一部分追求精確重建：用固定版本的歷史工具鏈編譯我們維護的原始碼，檢查它能否復現目標函式。當後來的模型解決了早期工作卡住的問題，我們可以從原始碼變化中看出，是什麼促成了這次進展。"

#: website/public/blog/reverse-engineering-models/index.html:279
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "The temporary values had to stay alive together"
msgstr "臨時值需要同時保持有效"

#: website/public/blog/reverse-engineering-models/index.html:280
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Much of a TH09 attack function's logic had already been reconstructed, but "
"the compiler still stored temporary results differently from the original. "
"The remaining problem was how long those results needed to stay alive and "
"when their storage could be reused."
msgstr ""
"TH09 "
"中一個攻擊函式的大部分邏輯已經還原，但編譯器對臨時結果的儲存安排仍然與原版不同。剩下的問題在於：這些結果的生命週期應該多長，編譯器何時可以複用它們的儲存空間？"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/de63c0f9121963f3a6b1ab5471c4878625fd3425"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/52929ed7c299f1a5f29cc13964e22510145fd616"
#. >
#. {ph3}: </a >
#: website/public/blog/reverse-engineering-models/index.html:287
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A {ph0}GPT-6-Sol checkpoint{ph1} recorded this mismatch after testing "
"several ordinary source arrangements. When {ph2}GPT-6.1-Sol returned to the "
"problem{ph3}, it found a useful hypothesis about how long those temporary "
"values needed to stay alive."
msgstr ""
"{ph0}GPT-6-Sol 的一次工作記錄{ph1}表明，嘗試幾種常見的原始碼寫法後，差異仍未消除。後來，{ph2}GPT-6.1-Sol "
"重新研究這個問題{ph3}，提出了一個有價值的假設：關鍵可能在於這些臨時值的生命週期。"

#: website/public/blog/reverse-engineering-models/index.html:301
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The function produced temporary results and copied them into animation "
"positions. In C++, a temporary result stays alive until the expression using"
" it finishes. Grouping the real operations into one expression kept those "
"results alive together, so the compiler could no longer reuse the same "
"storage for all of them."
msgstr ""
"這個函式會產生臨時結果，再把它們複製到動畫的位置資料中。在 C++ "
"中，臨時結果會一直存在，直到使用它的表示式執行完畢。把實際操作放進同一個表示式，就能讓這些結果同時存活，編譯器也就不能為它們全部複用同一塊儲存空間。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:308
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"One result still shared storage with a value used later for collision "
"checks. Giving that value its own lifetime resolved the remaining overlap. "
"After several targeted experiments, {ph0}a clean rebuild confirmed that the "
"full function matched{ph1}."
msgstr ""
"其中一個結果仍然與稍後用於碰撞檢查的值共享儲存。給那個值單獨的生命週期後，最後一處重疊也消失了。經過幾次有針對性的實驗，{ph0}一次乾淨的重新構建確認，整個函式都已匹配{ph1}。"

#: website/public/blog/reverse-engineering-models/index.html:317
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"What interests me is how the discovery and the tests worked together. The "
"lifetime hypothesis gave the agent a new direction; compiler feedback helped"
" it refine that hypothesis into a source arrangement that matched."
msgstr ""
"我感興趣的是，發現與驗證如何共同推進工作。生命週期的假設給 agent 指明瞭新方向；編譯器的回饋又幫助它逐步調整原始碼，直到找到匹配的寫法。"

#: website/public/blog/reverse-engineering-models/index.html:323
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A different control-flow graph"
msgstr "換一種控制流結構"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/f8d12d72aaf02212ee1b585a8f3f86d7ed000269"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:324
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A second TH09 function shows why that new direction can matter. Here, the "
"obstacle was how several branches shared their final work. "
"{ph0}GPT-6.1-Sol's earlier work{ph1} got parts of the function to match, but"
" the branches still joined up differently from the original."
msgstr ""
"TH09 的另一個函式說明了，新方向為什麼重要。這次的難點是多個分支如何共享末尾的操作。{ph0}GPT-6.1-Sol "
"之前的工作{ph1}已經讓函式的一些部分匹配，但分支匯合的方式仍與原版不同。"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/da33a646221198ceb7f3df2b96e2ca0e9b2f705f"
#. >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/5f825b28a862f8e1a6d4aea2f78a42f04c09a1c0"
#. >
#. {ph3}: </a >
#: website/public/blog/reverse-engineering-models/index.html:335
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}GPT-6-Astra changed the surrounding control-flow graph{ph1}. The main "
"paths now led to a shared final update and return. In that source structure,"
" the compiler combined the branches in the same way as the original. The "
"complete function matched, and a {ph2}separate rebuild check confirmed "
"it{ph3}."
msgstr ""
"{ph0}GPT-6-Astra "
"改寫了外圍的控制流圖{ph1}，讓主要路徑匯入共同的最終更新與返回。在這種原始碼結構下，編譯器合併分支的方式與原版一致。整個函式實現了匹配，{ph2}另一次獨立的重新構建也確認了這一結果{ph3}。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:347
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Changing the representation opened a more productive search space.{ph1}"
" Both cases give me a reason to take general model capability seriously: an "
"agent can keep trying local variations for a long time before finding a "
"better way to express the surrounding work."
msgstr ""
"{ph0}換一種表達方式，開啟了更有價值的搜尋空間。{ph1} 這兩個例子讓我認真看待通用模型的能力：agent "
"可能花很長時間嘗試局部變化，才找到一種更好的整體寫法。"

#: website/public/blog/reverse-engineering-models/index.html:356
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"At the same time, the later sessions started with earlier source and "
"recorded failures. That accumulated work was part of their advantage. The "
"history lets us inspect the discoveries and their checks; a controlled "
"comparison would help separate the effect of the model from the experience "
"it inherited."
msgstr ""
"不過，後來的工作也繼承了之前的原始碼和失敗記錄。這些積累本身就是優勢的一部分。歷史記錄讓我們可以檢查發現及其驗證過程；要區分模型能力和繼承經驗各自帶來的幫助，還需要對照實驗。"

#: website/public/blog/reverse-engineering-models/index.html:363
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This is where the question becomes interesting to me. Some of the progress "
"came from finding a new representation, while much of the remaining work "
"involved testing source forms against a familiar compiler. How much needs "
"broad reasoning ability, and how much could a model learn through repeated "
"experience with that compiler and code?"
msgstr ""
"這正是我覺得有趣的地方。有些進展來自新的表達方式，剩下的大量工作則是在熟悉的編譯器上試驗不同寫法。其中有多少需要廣泛的推理能力？又有多少可以透過反覆接觸這個編譯器和這些程式碼來學會？"

#: website/public/blog/reverse-engineering-models/index.html:373
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Why might a specialist do well?"
msgstr "為什麼專用模型可能做得很好？"

#: website/public/blog/reverse-engineering-models/index.html:374
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Touhou gives us a concrete reason to expect that experience to help. Much of"
" the game code comes from the same author, ZUN, so recurring habits are a "
"reasonable starting assumption. The repositories back that up with useful "
"examples: related loops and helper arrangements have supplied hypotheses "
"across games."
msgstr ""
"東方系列給了我們一個具體的理由，去期待經驗積累能發揮作用。大量遊戲程式碼出自同一個作者 "
"ZUN，因此，把反覆出現的程式設計習慣作為初始假設是合理的。程式碼倉庫也提供了實際例子：相似的迴圈和輔助函式組織方式，曾為其他遊戲的重建提供假設。"

#: website/public/blog/reverse-engineering-models/index.html:381
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Those source patterns become more specific when we include the compiler. "
"Under a particular version and set of options, small changes in source can "
"produce repeatable differences in machine code. Some of those differences "
"are surprisingly obscure."
msgstr "把編譯器也考慮進去，這些原始碼模式就更加具體了。在固定版本和選項下，原始碼的小變化可能穩定地產生不同的機器碼。其中一些規律藏得很深。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/26bb64bdb093a13f73abd0ee8ae7ce199ee4658f"
#. >
#. {ph3}: <code>Supervisor::LoadDat</code>
#. {ph4}: </a >
#: website/public/blog/reverse-engineering-models/index.html:387
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"In TH095, for example, {ph0}even the name used for a local variable could "
"change where VC7.1 stored it{ph1}. Moving the declaration alone did not "
"solve the layout, but an earlier background function had revealed a naming "
"pattern that affected the compiler's choice. That gave us a more promising "
"hypothesis for {ph2}the reconstruction of {ph3}{ph4}."
msgstr ""
"以 TH095 為例，{ph0}連局部變數的名字，都可能改變 VC7.1 "
"為它安排的儲存位置{ph1}。只移動宣告並不能解決佈局問題，但先前重建的一個背景函式揭示了會影響編譯器選擇的命名模式。這為{ph2}重建 "
"{ph3}{ph4}提供了更有希望的假設。"

#: website/public/blog/reverse-engineering-models/index.html:401
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Reusing that pattern for the file-size variable produced the required layout"
" without adding storage. The full function then matched."
msgstr "把這個模式用於表示檔案大小的變數，不增加額外儲存就得到了所需佈局。隨後，整個函式實現了匹配。"

#: website/public/blog/reverse-engineering-models/index.html:406
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This is the sort of narrow detail a general model may not know when it "
"arrives. A specialist trained on this compiler could encounter many such "
"cases and learn which source variations are worth testing first."
msgstr "這類細節非常具體，通用模型第一次接觸時未必知道。而針對這個編譯器訓練的專用模型，可以接觸許多類似案例，學會哪些原始碼變化值得優先嚐試。"

#: website/public/blog/reverse-engineering-models/index.html:412
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The opportunity is especially clear in final matching problems where we "
"already understand the behavior. We are then asking which ordinary source "
"form this compiler turns into the observed instructions. Specialization "
"could help the model propose those forms more efficiently, while the target "
"still determines which hypotheses survive."
msgstr ""
"當我們已經理解函式行為，只剩最後的匹配差異時，這個機會尤其明顯。此時的問題是：這個編譯器會把哪一種普通寫法編譯成眼前的指令？專用訓練可能讓模型更高效地提出這些寫法，而最終由目標程式決定哪些假設成立。"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th04/commit/6dce0a79d5b931f0e2a08475b90e0c33d2321b98"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:420
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The useful patterns would have to retain their context, though. TH08 uses an"
" earlier Visual C++ version than TH095 and TH09. TH04 uses a different DOS-"
"era compiler, and its {ph0}player reconstruction{ph1} needed different "
"hypotheses about source patterns and how the compiled code was combined into"
" an executable. Shared authorship gives us a prior, but each target tells us"
" whether it applies. Distinguishing those contexts is part of what a "
"specialist would need to learn."
msgstr ""
"但這些模式必須保留適用的上下文。TH08 使用的 Visual C++ 版本早於 TH095 和 TH09。TH04 用的是另一種 DOS "
"時代的編譯器，其{ph0}玩家邏輯重建{ph1}需要不同的假設，既涉及原始碼寫法，也涉及編譯後的程式碼如何連結成可執行檔案。同一作者為我們提供了先驗，具體目標則告訴我們它是否適用。區分這些情況，也是專用模型需要學會的事。"

#: website/public/blog/reverse-engineering-models/index.html:436
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Where should that experience live?"
msgstr "這些經驗應該存在哪裡？"

#. {ph0}: <a href="../touhou-reconstruction/">
#. {ph1}: </a>
#: website/public/blog/reverse-engineering-models/index.html:437
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Before deciding to teach those patterns through model training, I would look"
" at the knowledge we already keep in the repository. In the {ph0}previous "
"essay{ph1}, I wrote about it becoming the project's working memory. That "
"memory includes compiler lessons, along with the source and failed "
"experiments that made them useful."
msgstr ""
"在決定透過訓練讓模型學會這些模式之前，我會先看看程式碼倉庫裡已有的知識。在{ph0}上一篇文章{ph1}中，我寫過：倉庫正在成為專案的工作記憶。這裡儲存著對編譯器的認識，也儲存著相關原始碼和失敗實驗，讓這些經驗有據可查。"

#: website/public/blog/reverse-engineering-models/index.html:446
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"By retrieving that record, an agent can start with a known result and "
"inspect how we reached it. It can also avoid alternatives that have already "
"failed in the same context. The starting point improves without changing the"
" model's weights."
msgstr ""
"檢索這些記錄後，agent 可以從已知結果出發，看看我們是如何得到它的，也可以避開在相同條件下已經失敗的方案。模型的參數沒有改變，工作的起點卻提高了。"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/1eb843383941d00065622a9e353146c4bb96979e"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:452
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"When reconstructing TH09's enemy-spawn function, a {ph0}GPT-6-Luna-max "
"session{ph1} drew a hypothesis from TH08's corresponding source family. That"
" earlier source suggested how to structure the loop and handle failures "
"within it. TH09's own evidence supplied the game-specific details, and clean"
" rebuilds confirmed the complete match."
msgstr ""
"重建 TH09 的敵人生成函式時，{ph0}GPT-6-Luna-max 的一次工作{ph1}從 TH08 "
"對應的原始碼中找到了假設。之前的寫法提示了迴圈該如何組織，以及內部失敗該如何處理。TH09 "
"自身的證據補上了遊戲特有的細節，乾淨的重新構建確認了整個函式的匹配。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:463
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}\"The model did not know that compiler quirk\" and \"the model could "
"not use it\" are different problems.{ph1} Retrieval may solve the first, but"
" turning that fact into a useful candidate still takes work. And if the "
"candidate fails, the model must decide what the result means for its next "
"attempt. Knowing the relevant pattern is only the beginning of that process."
msgstr ""
"{ph0}“模型不知道這個編譯器特性”和“模型不會利用它”，是兩個不同的問題。{ph1} "
"檢索可能解決前者，但把知識變成有價值的候選原始碼，仍然需要能力。如果候選方案失敗了，模型還得判斷這次結果對下一次嘗試意味著什麼。知道相關模式，只是這個過程的起點。"

#: website/public/blog/reverse-engineering-models/index.html:473
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"For that reason, I would include a smaller general model with good retrieval"
" in any comparison. Giving it the same library of experience would help us "
"identify what training adds: better candidate generation, better decisions "
"after feedback, or both."
msgstr ""
"所以，在任何對照實驗中，我都會加入一個具備良好檢索能力的小型通用模型。給它相同的經驗庫，才能看清訓練究竟增加了什麼：更好的候選方案、更好的回饋後決策，還是兩者都有？"

#: website/public/blog/reverse-engineering-models/index.html:481
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Learning the next useful experiment"
msgstr "學習選擇下一個有價值的實驗"

#: website/public/blog/reverse-engineering-models/index.html:482
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Those decisions after feedback are what I would most like to study. In "
"agentic reconstruction, the model proposes an explanation and tests it "
"against the program. Even when the candidate fails, the result can narrow "
"the remaining possibilities and suggest a more useful next experiment."
msgstr ""
"回饋之後如何決策，是我最想研究的部分。在 agent "
"驅動的重建中，模型提出解釋，再用程式來驗證。即使候選方案失敗了，結果也可能縮小剩餘的可能性，提示下一步更值得嘗試什麼。"

#: website/public/blog/reverse-engineering-models/index.html:489
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Consider the temporary-results example again. Its final source shows the "
"arrangement that worked, but the route to that source contains more "
"information. Each of the following experiments helped identify what still "
"needed to change."
msgstr "再看前面的臨時結果例子。最終原始碼展示了成功的寫法，但得到它的過程包含更多資訊。下面的每次實驗，都幫助我們確定了還有什麼需要改變。"

#: website/public/blog/reverse-engineering-models/index.html:502
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Experiment"
msgstr "實驗"

#: website/public/blog/reverse-engineering-models/index.html:503
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What its result taught us"
msgstr "結果告訴了我們什麼"

#: website/public/blog/reverse-engineering-models/index.html:508
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Try a different way to copy the results"
msgstr "嘗試另一種複製結果的方式"

#: website/public/blog/reverse-engineering-models/index.html:509
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "The copy code changes, but the function still differs."
msgstr "複製程式碼改變了，但函式仍有差異。"

#: website/public/blog/reverse-engineering-models/index.html:514
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Use the returned values directly"
msgstr "直接使用回傳值"

#: website/public/blog/reverse-engineering-models/index.html:515
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Copying follows the original pattern, but temporary storage still differs."
msgstr "複製方式與原版一致，但臨時儲存佈局仍有差異。"

#: website/public/blog/reverse-engineering-models/index.html:521
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Keep the temporary results alive together"
msgstr "讓臨時結果同時保持有效"

#: website/public/blog/reverse-engineering-models/index.html:522
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"They get separate storage, but one still overlaps a value used later for "
"collision checks."
msgstr "它們得到了各自的儲存空間，但其中一個仍與稍後用於碰撞檢查的值重疊。"

#: website/public/blog/reverse-engineering-models/index.html:528
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Keep the collision-check value separate"
msgstr "讓碰撞檢查的值擁有獨立儲存"

#: website/public/blog/reverse-engineering-models/index.html:529
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A clean rebuild confirms the complete match."
msgstr "乾淨的重新構建確認了整個函式的匹配。"

#: website/public/blog/reverse-engineering-models/index.html:534
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Selected experiments from the attack-function reconstruction above, grouped "
"by what they taught us."
msgstr "選自前面攻擊函式的重建實驗，按每次得到的認識整理。"

#: website/public/blog/reverse-engineering-models/index.html:538
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A training record that keeps this sequence can teach more than the final "
"source alone. It connects each proposed change to an observed result and the"
" next decision. Keeping ineffective variations matters too: they tell a "
"later agent which hypotheses have already been tested in that context."
msgstr ""
"儲存這個過程的訓練記錄，比單獨儲存最終原始碼能教會模型更多東西。它把每個改動、觀察到的結果和下一步決策聯絡起來。無效的嘗試也值得保留：後來的 agent"
" 可以據此知道，在這個上下文中，哪些假設已經檢驗過。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:545
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}I would want the model to learn how to use feedback.{ph1} A neutral "
"result is a reason to reconsider the variation; a changed mismatch may point"
" to another cause. When local edits stop being informative, the agent should"
" be able to revisit the source representation or inspect the evidence again."
msgstr ""
"{ph0}我希望模型學會如何利用回饋。{ph1} "
"結果沒有變化，可能意味著該重新考慮這個改動；差異發生變化，則可能指向另一個原因。當局部修改不再提供有效資訊時，agent "
"應該可以重新考慮原始碼的整體表達，或者回頭檢查證據。"

#: website/public/blog/reverse-engineering-models/index.html:554
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Learning to make those choices requires autonomy. Sometimes the useful next "
"step is inspecting another caller rather than compiling another edit. A "
"rigid sequence of required rewrites would remove that choice, along with "
"part of the behavior we want the model to learn."
msgstr ""
"學會這些選擇，需要自主性。有時，更有價值的下一步是檢查另一個呼叫者，而不是再修改一次原始碼並編譯。如果強制按照固定順序改寫，就會剝奪這種選擇，也失去一部分我們希望模型學會的行為。"

#: website/public/blog/reverse-engineering-models/index.html:563
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Why RE is interesting for reinforcement learning"
msgstr "為什麼逆向工程值得用來探索強化學習"

#: website/public/blog/reverse-engineering-models/index.html:564
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Bounded reconstruction gives us a practical environment for studying these "
"choices. Once the target and compiler are pinned, many source experiments "
"produce quick, repeatable feedback. The agent can compile a candidate, "
"inspect the mismatch and use that observation to choose its next step."
msgstr ""
"範圍明確的重建任務，為研究這些選擇提供了一個實際環境。目標和編譯器版本固定之後，許多原始碼實驗都能快速給出可重複的回饋。agent "
"可以編譯候選原始碼、檢查差異，再根據觀察選擇下一步。"

#: website/public/blog/reverse-engineering-models/index.html:571
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Reinforcement learning could train that decision-making process through the "
"feedback it receives. A candidate accepted by a defined check gives us a "
"concrete outcome, while the sequence of attempts lets us observe how much "
"work it took to reach it."
msgstr ""
"強化學習可以利用這些回饋，訓練模型的決策過程。候選原始碼透過明確定義的檢查，就給出了一個具體成果；而嘗試的過程，讓我們可以看到實現它花了多少功夫。"

#. {ph0}: <a href="https://aclanthology.org/2024.emnlp-main.203/" >
#. {ph1}: </a >
#. {ph2}: <a href="https://arxiv.org/html/2606.16162v1">
#. {ph3}: </a>
#: website/public/blog/reverse-engineering-models/index.html:577
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"There is already research supporting this direction. {ph0}LLM4Decompile{ph1}"
" studies models specialized for decompilation. {ph2}AutoDecompiler{ph3} "
"trains multi-turn refinement using compiler and execution feedback. Their "
"studies focus on functional recovery. For this work, I would use them as a "
"starting point for the related task of finding source that matches a "
"historical compiler's output."
msgstr ""
"已有研究支援這個方向。{ph0}LLM4Decompile{ph1}研究專門用於反編譯的模型。{ph2}AutoDecompiler{ph3}利用編譯和執行回饋，訓練多輪改進能力。這些研究關注的是功能還原。對於我們的工作，我會以它們為起點，研究一個相關任務：找到能復現歷史編譯器輸出的原始碼。"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/af9cb1d3e839b15a78b47ac1701506083cc82847"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:589
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To reach such a well-defined task, though, we may first need to establish "
"what a function owns or devise a new runtime measurement. In TH08, for "
"example, a {ph0}collision difference led back to how the original program "
"handled floating-point calculations{ph1}. Before the agent could test a "
"useful correction, it had to work out what to measure."
msgstr ""
"不過，要得到這樣一個定義明確的任務，有時得先確定函式負責哪些資源，或者設計新的方法觀察程式執行時的行為。在 TH08 "
"中，{ph0}一次碰撞差異最終追溯到原版處理浮點計算的方式{ph1}。agent 必須先弄清楚該測量什麼，才能驗證有價值的修正。"

#: website/public/blog/reverse-engineering-models/index.html:600
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This suggests another role for a broadly capable model: helping make the "
"problem checkable in the first place. Once that check exists, we can "
"investigate how far a learned search policy can get with it."
msgstr "這提示了能力全面的模型的另一個作用：先把問題變得可驗證。驗證手段建立起來後，我們才可以研究，學出來的搜尋策略能走多遠。"

#: website/public/blog/reverse-engineering-models/index.html:608
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "When the oracle is wrong"
msgstr "當驗證器出錯時"

#: website/public/blog/reverse-engineering-models/index.html:609
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Once we train against that check, its coverage becomes part of what the "
"model learns. I call the reference or checker an oracle. Even if it gives a "
"repeatable answer, we still need to understand what that answer covers."
msgstr ""
"一旦用某項檢查來訓練模型，它的覆蓋範圍就會成為學習環境的一部分。我把這種參考標準或驗證器稱為 "
"oracle。即使它能給出可重複的答案，我們也必須知道，這個答案覆蓋了什麼。"

#: website/public/blog/reverse-engineering-models/index.html:615
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"TH08 showed how much can hide outside that coverage. Some reconstructed "
"functions passed their exact comparisons with wrong floating constants. The "
"comparator adjusted relocated addresses before checking instructions, but it"
" checked the values behind those addresses only when they had been "
"explicitly recorded for verification. Other literal references could pass "
"without their values being examined."
msgstr ""
"TH08 "
"展示了檢查範圍之外可能藏著多少問題。一些重建函式使用了錯誤的浮點常量，卻仍然透過了精確比較。比較器會先調整重定位地址，再檢查指令；但只有明確登記過的常量，才會進一步檢查地址指向的值。其他常量引用，即使值沒被檢查，也可能透過。"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph1}: </a >
#. {ph2}: <code>1.0f</code>
#. {ph3}: <code>32.0f</code>
#: website/public/blog/reverse-engineering-models/index.html:624
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To close that gap, a {ph0}wider audit{ph1} found incorrect constants in "
"functions that had already been accepted. In one calculation, the "
"reconstructed source added {ph2} where the original added {ph3}."
msgstr ""
"為了補上這個漏洞，{ph0}一次更全面的審計{ph1}在已經透過檢查的函式中找到了錯誤常量。有一個計算中，重建原始碼加的是 {ph2}，而原版加的是 "
"{ph3}。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:634
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}A learner rewarded by the old check could learn to produce the wrong "
"reconstruction.{ph1} We had not trained an RL model against this oracle; the"
" observed failure was in the check itself. But using that check as a reward "
"would have made the same blind spot part of the learning environment."
msgstr ""
"{ph0}如果用舊檢查的結果作為獎勵，模型可能學會生成錯誤的重建原始碼。{ph1} 我們沒有用這個驗證器訓練 RL "
"模型；實際觀察到的是檢查本身的漏洞。但如果把它用作獎勵，同一個盲點也會進入學習環境。"

#. {ph0}: <a href="https://arxiv.org/html/2609.05370v1" >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:644
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"A functional test can have a similar blind spot. {ph0}Differential-fuzzing "
"research on LLM decompilers{ph1} has found behavior differences beyond the "
"supplied tests. Passing those tests therefore needs to be read in terms of "
"the cases they exercise, just as an instruction match needs to be read in "
"terms of the bytes and data it checks."
msgstr ""
"功能測試也可能存在類似盲點。{ph0}針對 LLM "
"反編譯器的差分模糊測試研究{ph1}發現，在已有測試之外，程式行為仍可能不同。因此，理解“測試透過”時，必須看它實際覆蓋了哪些情況；理解“指令匹配”時，也必須看它檢查了哪些位元組和資料。"

#: website/public/blog/reverse-engineering-models/index.html:654
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Before using either kind of check as a reward, I would test it with "
"deliberate failures. I would also keep final acceptance outside the "
"candidate's editable source, so the model has to satisfy the check through "
"its reconstruction. Otherwise, something like a byte array copied from the "
"target could satisfy a naive score without recovering useful source."
msgstr ""
"在把任何一種檢查用作獎勵之前，我都會用刻意構造的錯誤來測試它。我還會把最終驗收機制放在候選原始碼可修改的範圍之外，讓模型透過正確重建來滿足檢查。否則，直接複製目標程式的位元組陣列，也可能騙過簡單的評分，卻沒有還原出有用的原始碼。"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:662
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Improving the learner and improving its oracle belong to the same "
"research problem.{ph1} As the learner gets better at optimizing the feedback"
" we give it, understanding that feedback becomes more important too."
msgstr "{ph0}改進模型和改進它的驗證器，屬於同一個研究問題。{ph1} 模型越擅長最佳化我們給它的回饋，我們就越需要理解回饋本身。"

#: website/public/blog/reverse-engineering-models/index.html:672
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "A comparison worth running"
msgstr "值得做的對照實驗"

#: website/public/blog/reverse-engineering-models/index.html:673
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"With those checks in place, I would start the comparison on a fixed VC7.1 "
"task family. First, I would establish baselines for a strong general model "
"and a smaller one. Adding repository knowledge to the smaller model would "
"show what retrieval changes. From there, supervised specialization and an "
"RL-trained version would let us examine what training adds."
msgstr ""
"具備這些檢查之後，我會從一組固定的 VC7.1 "
"任務開始比較。先為強通用模型和小型通用模型建立基線，再給小模型加入倉庫知識，觀察檢索帶來的變化。接著比較監督訓練的專用模型，以及在此基礎上進行 RL "
"訓練的版本，看看訓練增加了什麼。"

#: website/public/blog/reverse-engineering-models/index.html:681
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"To make those comparisons informative, each model would receive the same "
"target evidence and tools. For the training-specific comparisons, I would "
"keep the base model and available knowledge fixed as well. Repeated trials "
"would help distinguish a reliable search strategy from a lucky candidate."
msgstr ""
"為了讓比較有意義，每個模型都應獲得相同的目標證據和工具。專門比較訓練效果時，還要固定基礎模型和可用知識。重複實驗有助於區分可靠的搜尋策略與偶然成功的候選方案。"

#: website/public/blog/reverse-engineering-models/index.html:688
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"I would then separate two starting conditions: reconstructing a function "
"from its instructions, and closing the last few differences in maintained "
"source. A specialist might be excellent at the second task while a general "
"model does much of the work needed to reach it. Measuring them separately "
"would reveal that division of work."
msgstr ""
"我還會區分兩種起點：從指令開始重建函式，以及在已有原始碼中消除最後幾處差異。專用模型可能很擅長後者，而通用模型承擔了到達這個階段的大部分工作。分別評估，才能看清這種分工。"

#: website/public/blog/reverse-engineering-models/index.html:696
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Both tasks need genuinely held-out examples. Because related Touhou games "
"share engine code, holding out a game's name would still allow nearly "
"identical functions to appear in training. I would instead hold out source "
"families and keep their accepted answers out of both training and retrieval."
msgstr ""
"兩類任務都需要真正未見過的測試案例。東方系列的相關遊戲會共享引擎程式碼，只留出某個遊戲，仍可能讓幾乎相同的函式進入訓練集。我會改為按相關原始碼家族留出測試集，並把它們透過驗證的答案同時排除在訓練資料和檢索庫之外。"

#: website/public/blog/reverse-engineering-models/index.html:703
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"On those examples, the outcome would be complete, independently validated "
"matches. Giving each model the same candidate or compile budget would help "
"compare search quality. Measuring elapsed time and total cost, including "
"compilation, would tell us whether that quality produces an efficient "
"workflow. Training costs would need their own accounting too."
msgstr ""
"在這些案例上，要統計的是完整、獨立驗證過的匹配成果。給每個模型相同的候選數量或編譯次數預算，可以比較搜尋品質。記錄總耗時和總成本，包括編譯，才能知道這種品質是否轉化成了高效的工作流程。訓練成本也要單獨計算。"

#: website/public/blog/reverse-engineering-models/index.html:711
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Both views matter because a cheaper proposal can become an expensive "
"workflow if it causes more uninformative compiles. Conversely, a slower "
"model may pay for itself by finding a useful experiment sooner. The "
"comparison should capture those costs."
msgstr ""
"兩種角度都重要。一個便宜的提議，如果導致大量無效編譯，整個工作流程仍可能很貴。反過來，較慢的模型如果更早找到有價值的實驗，也可能更划算。對照實驗應當反映這些成本。"

#. {ph0}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/ab72fd77728293fc0beacfc656ca701b0e266016"
#. >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:717
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Counting accepted results also keeps intermediate progress in perspective. "
"One TH09 {ph0}replay-save candidate{ph1} looked promising because the "
"compiled function had the expected size, but a full comparison still found "
"substantial differences. Changes in how the compiler arranges instructions "
"can also make a candidate look closer without resolving the underlying "
"problem. Such diagnostics can guide the next experiment, but I would "
"validate any reward for \"getting closer\" against the full acceptance "
"check."
msgstr ""
"只統計透過驗收的結果，也能幫助我們合理看待中間進展。TH09 "
"的一個{ph0}錄影儲存候選方案{ph1}看起來很有希望，因為編譯後函式的大小符合預期，但完整比較仍發現大量差異。編譯器改變指令排列，也可能讓候選原始碼看起來更接近，卻沒有解決根本問題。這些診斷可以指導下一步，但若要獎勵“變得更接近”，我會先對照完整驗收檢查，確認這種獎勵有效。"

#: website/public/blog/reverse-engineering-models/index.html:732
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"I would be interested in the pattern across these results. If a specialist "
"does well within a familiar compiler family, does that advantage survive a "
"toolchain change? And once both models have good retrieval, how much does "
"training still add? The answers would help us decide where each kind of "
"model is most useful."
msgstr ""
"我想看這些結果呈現出什麼規律。如果專用模型在熟悉的編譯器上表現很好，換了工具鏈後，這種優勢還在嗎？當雙方都擁有良好的檢索能力時，訓練還能增加多少價值？這些答案能幫助我們決定，每類模型最適合用在哪裡。"

#: website/public/blog/reverse-engineering-models/index.html:741
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "What kind of agent does this suggest?"
msgstr "這意味著怎樣的 agent？"

#: website/public/blog/reverse-engineering-models/index.html:742
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"If the models turn out to help at different stages, a useful arrangement "
"might be a broad agent with access to a specialist. Once a task becomes a "
"familiar compiler search, it could ask the specialist for candidates. If the"
" results stop making sense, the broader agent could return to the target "
"evidence or investigate the measurement itself."
msgstr ""
"如果不同模型在不同階段各有所長，一種有價值的安排可能是：讓能力全面的 agent "
"可以呼叫專用模型。當任務變成一種熟悉的編譯器搜尋時，它可以請專用模型提出候選方案。如果結果開始說不通，通用 agent "
"可以回頭檢查目標證據，或者調查測量本身。"

#: website/public/blog/reverse-engineering-models/index.html:750
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"In that arrangement, specialization becomes a tool the agent can choose as "
"the investigation develops. The agent keeps the freedom to change direction "
"that made the earlier breakthroughs possible."
msgstr ""
"在這樣的安排中，專用模型成為 agent 隨著調查進展可以選擇的工具。agent 仍然擁有改變方向的自由，而這正是前面那些突破發生的重要條件。"

#: website/public/blog/reverse-engineering-models/index.html:755
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"This follows naturally from the industrial shift I described in the previous"
" essay. Being able to run many more experiments changes how we organize the "
"work. It also gives us a reason to ask which decisions need broad judgment "
"and which improve through repeated experience with a particular craft."
msgstr ""
"這自然延續了上一篇文章中談到的工業化轉變。能夠開展更多實驗，會改變我們組織工作的方式，也讓我們有理由追問：哪些決策需要全面的判斷，哪些可以透過反覆積累某項具體技藝來改善？"

#: website/public/blog/reverse-engineering-models/index.html:762
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"For now, the strongest general model has earned its place in my workflow by "
"opening problems I had left unresolved. Those successes are what make me "
"want to examine the work more closely: how much depended on the model's "
"breadth, and how much could be handled by a model trained in this particular"
" kind of reconstruction?"
msgstr ""
"目前，最強的通用模型解決了我過去沒能解決的問題，因此在我的工作流程中佔據了一席之地。正是這些成功，讓我想更仔細地研究過程：有多少依賴模型能力的廣度？又有多少可以交給專門學習這類重建的模型？"

#. {ph0}: <strong >
#. {ph1}: </strong >
#: website/public/blog/reverse-engineering-models/index.html:770
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}The repositories give us a way to test the question.{ph1} I would like "
"to use that record to build the comparison and see what we learn."
msgstr "{ph0}這些程式碼倉庫讓我們有機會驗證這個問題。{ph1} 我想利用這些記錄建立對照實驗，看看我們能學到什麼。"

#: website/public/blog/reverse-engineering-models/index.html:780
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Evidence and model attribution"
msgstr "證據與模型歸屬"

#: website/public/blog/reverse-engineering-models/index.html:788
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The examples describe historical function-level comparisons recorded in the "
"linked commits. Whole-game runtime checks are separate milestones. Source "
"and matching records were reviewed on 13 October 2026."
msgstr ""
"這些例子來自連結中的提交中記錄的歷史函式級比較。整款遊戲的執行時檢查屬於另一個里程碑。相關原始碼與匹配記錄核查於 2026 年 10 月 13 日。"

#. {ph0}: <code>gpt-dots</code>
#. {ph1}: <code>gpt-web</code>
#: website/public/blog/reverse-engineering-models/index.html:794
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The TH09 label {ph0} identifies GPT-6-Astra. {ph1} changed with the model "
"used at the time, so that label alone does not identify an individual run. "
"Explicit model names in the other cited commits establish their recorded "
"attribution; the histories do not contain uniform per-run cost or effort "
"measurements."
msgstr ""
"TH09 中的標籤 {ph0} 對應 GPT-6-Astra。{ph1} "
"會隨當時使用的模型變化，因此僅憑這個標籤無法確定某次執行的具體模型。其他引用提交中的明確模型名，提供了對應的歸屬記錄；這些歷史記錄並沒有統一的單次執行成本或投入統計。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/de63c0f9121963f3a6b1ab5471c4878625fd3425"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/52929ed7c299f1a5f29cc13964e22510145fd616"
#. >
#. {ph5}: </a >
#: website/public/blog/reverse-engineering-models/index.html:803
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}TH09 temporary lifetimes:{ph1} the {ph2}earlier context review{ph3} and"
" {ph4}complete cold reconstruction{ph5}."
msgstr "{ph0}TH09 臨時值生命週期：{ph1}{ph2}早期上下文檢查{ph3}與{ph4}完整的乾淨重建{ph5}。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/f8d12d72aaf02212ee1b585a8f3f86d7ed000269"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/da33a646221198ceb7f3df2b96e2ca0e9b2f705f"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/5f825b28a862f8e1a6d4aea2f78a42f04c09a1c0"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:815
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}TH09 Front callback:{ph1} {ph2}non-exact diagnostic regions{ph3}, "
"{ph4}Astra's new graph{ph5} and its {ph6}accepted recompile replay{ph7}."
msgstr ""
"{ph0}TH09 Front 回呼：{ph1}{ph2}未匹配的診斷區域{ph3}、{ph4}Astra "
"提出的新控制流圖{ph5}與{ph6}透過驗收的重新編譯檢查{ph7}。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th095/commit/26bb64bdb093a13f73abd0ee8ae7ce199ee4658f"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th04/commit/6dce0a79d5b931f0e2a08475b90e0c33d2321b98"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/1eb843383941d00065622a9e353146c4bb96979e"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:831
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Compiler knowledge:{ph1} {ph2}TH095 identifier-bucket reuse{ph3}, "
"{ph4}TH04 player source and linker order{ph5} and {ph6}Luna's TH09 enemy-"
"spawn closure{ph7}."
msgstr ""
"{ph0}編譯器知識：{ph1}{ph2}TH095 識別符號分桶規律的複用{ph3}、{ph4}TH04 "
"玩家原始碼與連結順序{ph5}、{ph6}Luna 完成的 TH09 敵人生成函式匹配{ph7}。"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/a393f400786e4cc6cbb1000af0dad3276da12c78"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/af9cb1d3e839b15a78b47ac1701506083cc82847"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th09/commit/ab72fd77728293fc0beacfc656ca701b0e266016"
#. >
#. {ph7}: </a >
#: website/public/blog/reverse-engineering-models/index.html:847
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Checks and diagnostics:{ph1} {ph2}TH08 floating-literal audit{ph3}, "
"{ph4}TH08 numerical investigation{ph5} and {ph6}TH09 replay-save "
"reconstruction{ph7}."
msgstr ""
"{ph0}檢查與診斷：{ph1}{ph2}TH08 浮點常量審計{ph3}、{ph4}TH08 數值問題調查{ph5}、{ph6}TH09 "
"錄影儲存重建{ph7}。"

#: website/public/blog/reverse-engineering-models/index.html:864
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"The proposed specialist and RL comparisons are future experiments. The "
"project histories motivate them; no trained specialist was evaluated for "
"this essay."
msgstr "文中提出的專用模型與 RL 對照，屬於未來實驗。專案歷史為這些想法提供了依據；本文尚未評估經過訓練的專用模型。"

#: website/public/blog/reverse-engineering-models/index.html:6
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Does reverse engineering need a bigger model? | REA"
msgstr "逆向工程需要更大的模型嗎？ | REA"

#: website/public/blog/reverse-engineering-models/index.html:7
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"What Touhou reconstruction taught me about general models, specialist models"
" and learning to propose better hypotheses from compiler feedback."
msgstr "東方重建讓我如何思考通用模型、專用模型，以及怎樣從編譯器回饋中學會提出更好的假設。"

#: website/public/blog/reverse-engineering-models/index.html:245
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "On this page"
msgstr "在本頁"

#: website/public/blog/reverse-engineering-models/index.html:258
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Models and reverse engineering essay"
msgstr "模型與逆向工程隨筆"

#: website/public/blog/reverse-engineering-models/index.html:496
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Selected reconstruction experiments"
msgstr "重建實驗選例"

#: website/public/blog/reverse-engineering-models/index.html:889
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid "Back to top"
msgstr "回到頂部"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/website/evidence/reverse-
#. engineering-models.md" >
#. {ph1}: </a >
#: website/public/blog/reverse-engineering-models/index.html:781
#, python-brace-format
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"{ph0}Detailed evidence notes{ph1} include the recorded comparisons and "
"experiment context."
msgstr "{ph0}詳細證據記錄{ph1}包含歷史比較結果與實驗背景。"

#. {ph0}: <a href="#showcases">
#. {ph1}: </a>
#: website/public/index.html:217
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Showcases{ph1}"
msgstr "{ph0}案例展示{ph1}"

#: website/public/index.html:1028
msgctxt "page:index.html"
msgid "REA case studies."
msgstr "REA 實際案例。"

#: website/public/index.html:1038
msgctxt "page:index.html"
msgid "Android · APK analysis"
msgstr "Android · APK 分析"

#: website/public/index.html:1039
msgctxt "page:index.html"
msgid "How an authenticator generates a login code"
msgstr "驗證器如何生成登入驗證碼"

#: website/public/index.html:1044
msgctxt "page:index.html"
msgid "Read the Android case study"
msgstr "閱讀Android案例研究"

#: website/public/index.html:1049
msgctxt "page:index.html"
msgid "Electron · Feature tracing"
msgstr "Electron · 功能追蹤"

#: website/public/index.html:1050
msgctxt "page:index.html"
msgid "How Notion copies text and HTML"
msgstr "Notion 如何複製文字和 HTML"

#: website/public/index.html:1055
msgctxt "page:index.html"
msgid "Read the Notion case study"
msgstr "閱讀Notion案例研究"

#: website/public/index.html:1060
msgctxt "page:index.html"
msgid "Native · Reconstruction"
msgstr "原生程式 · 重建"

#: website/public/index.html:1061
msgctxt "page:index.html"
msgid "DX-Ball's sound-pan calculation"
msgstr "DX-Ball 的聲像計算"

#: website/public/index.html:1066
msgctxt "page:index.html"
msgid "Read the DX-Ball case study"
msgstr "閱讀DX-Ball案例研究"

#: website/public/index.html:295
msgctxt "page:index.html"
msgid "Setup options"
msgstr "配置方式"

#: website/public/get-started/index.html:201
msgctxt "page:get-started/index.html"
msgid ""
"Set up your computer and coding agent, connect REA, then investigate a small"
" app."
msgstr "準備好電腦和程式開發助手，連接 REA，再分析一個小應用程式。"

#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:205
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"New to this? Follow the four steps below. Already have an agent? Go straight"
" to {ph0}Connect REA{ph1}."
msgstr "第一次使用？按下面四步來。已經有程式開發助手？直接看{ph0}連接 REA{ph1}。"

#. {ph0}: <a href="#computer">
#. {ph1}: </a>
#: website/public/get-started/index.html:214
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}1. Prepare your computer{ph1}"
msgstr "{ph0}1. 準備電腦{ph1}"

#. {ph0}: <a href="#choose-agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:215
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}2. Choose an agent{ph1}"
msgstr "{ph0}2. 選擇程式開發助手{ph1}"

#. {ph0}: <a href="#agent">
#. {ph1}: </a>
#: website/public/get-started/index.html:216
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}3. Connect REA{ph1}"
msgstr "{ph0}3. 連接 REA{ph1}"

#. {ph0}: <a href="#first-task">
#. {ph1}: </a>
#: website/public/get-started/index.html:217
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}4. Try an investigation{ph1}"
msgstr "{ph0}4. 試著分析一個應用程式{ph1}"

#. {ph0}: <a href="#native">
#. {ph1}: </a>
#: website/public/get-started/index.html:218
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Other targets and providers{ph1}"
msgstr "{ph0}其他目標和分析工具{ph1}"

#: website/public/get-started/index.html:225
msgctxt "page:get-started/index.html"
msgid "1. Prepare your computer"
msgstr "1. 準備電腦"

#: website/public/get-started/index.html:226
msgctxt "page:get-started/index.html"
msgid ""
"Use the computer where your target files are stored. A local coding agent "
"can read those files and run tools for you."
msgstr "在存放目標檔案的電腦上操作。本機的程式開發助手可以讀取這些檔案，並幫你執行分析工具。"

#: website/public/get-started/index.html:251
msgctxt "page:get-started/index.html"
msgid ""
"Commands go in the terminal. Prompts labeled “Your coding agent” go in the "
"agent's chat."
msgstr "指令貼到終端機；標著「你的程式開發助手」的提問貼到助手的聊天框。"

#. {ph0}: <a href="https://nodejs.org/en/download" >
#. {ph1}: </a >
#: website/public/get-started/index.html:307
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download the Node.js installer{ph1} if winget is unavailable."
msgstr "如果沒有 winget，可以{ph0}下載 Node.js 安裝程式{ph1}。"

#. {ph0}: <em>
#. {ph1}: </em>
#. {ph2}: <code>npx</code>
#. {ph3}: <code>npx.cmd</code>
#. {ph4}: <code>npm.cmd</code>
#: website/public/get-started/index.html:313
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If PowerShell later says {ph0}\"running scripts is disabled on this "
"system\"{ph1} when you run {ph2}, use {ph3} instead. For npm, use {ph4}:"
msgstr ""
"如果執行 {ph2} 時 PowerShell 提示{ph0}「此系統上禁止執行指令碼」{ph1}，改用 {ph3}。npm 則改用 {ph4}："

#: website/public/get-started/index.html:411
msgctxt "page:get-started/index.html"
msgid "Make a working folder for your agent"
msgstr "為程式開發助手建一個工作資料夾"

#: website/public/get-started/index.html:412
msgctxt "page:get-started/index.html"
msgid "In your terminal, make a folder for the exercise, then move into it:"
msgstr "在終端機中為練習建一個資料夾，然後進入它："

#: website/public/get-started/index.html:431
msgctxt "page:get-started/index.html"
msgid ""
"Keep this terminal open for the next step. If you already have a working "
"folder, open it instead."
msgstr "下一步繼續使用這個終端機。如果已經有工作資料夾，進入那個資料夾即可。"

#: website/public/get-started/index.html:438
msgctxt "page:get-started/index.html"
msgid "2. Choose a coding agent"
msgstr "2. 選擇程式開發助手"

#: website/public/get-started/index.html:439
msgctxt "page:get-started/index.html"
msgid ""
"Your agent is the AI you talk to. REA supplies the inspection tools it uses."
" Pick one client below; open its instructions if you haven't used it before."
msgstr "你和程式開發助手對話，它呼叫 REA 來分析軟體。從下面選一個用戶端；第一次使用就展開它的安裝步驟。"

#: website/public/get-started/index.html:445
msgctxt "page:get-started/index.html"
msgid "Codex · use your ChatGPT account"
msgstr "Codex · 使用 ChatGPT 帳號"

#: website/public/get-started/index.html:493
msgctxt "page:get-started/index.html"
msgid ""
"Choose “Sign in with ChatGPT”, complete the browser sign-in, then return to "
"the terminal. When the message box appears, continue to step 3."
msgstr "選擇「Sign in with ChatGPT」，在瀏覽器中登入後回到終端機。看到訊息輸入框後，繼續第 3 步。"

#. {ph0}: <a href="https://learn.chatgpt.com/docs/codex/cli" >
#. {ph1}: </a >
#: website/public/get-started/index.html:498
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Codex installation and sign-in{ph1}"
msgstr "{ph0}Codex 安裝與登入{ph1}"

#: website/public/get-started/index.html:505
msgctxt "page:get-started/index.html"
msgid "Cursor, Windsurf or VS Code · use an editor"
msgstr "Cursor、Windsurf 或 VS Code · 使用編輯器"

#: website/public/get-started/index.html:507
msgctxt "page:get-started/index.html"
msgid "Install the editor for your operating system and sign in."
msgstr "安裝適合你作業系統的編輯器，然後登入。"

#: website/public/get-started/index.html:510
msgctxt "page:get-started/index.html"
msgid "Open the rea-work folder you made in step 1."
msgstr "打開第 1 步建立的 rea-work 資料夾。"

#: website/public/get-started/index.html:529
msgctxt "page:get-started/index.html"
msgid "Claude Code · use your Claude account"
msgstr "Claude Code · 使用 Claude 帳號"

#: website/public/get-started/index.html:530
msgctxt "page:get-started/index.html"
msgid "Install using the command for your operating system:"
msgstr "使用適合你作業系統的安裝指令："

#. {ph0}: <code>claude</code>
#: website/public/get-started/index.html:559
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Reopen your terminal, return to your working folder and run {ph0}. Follow "
"the sign-in prompts. Access uses an eligible Claude subscription or a "
"configured API account."
msgstr "重新打開終端機，回到工作資料夾並執行 {ph0}，按提示登入。你需要符合條件的 Claude 訂閱或已設定的 API 帳號。"

#. {ph0}: <a href="https://code.claude.com/docs/en/setup" >
#. {ph1}: </a >
#: website/public/get-started/index.html:564
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Claude Code installation and account options{ph1}"
msgstr "{ph0}Claude Code 安裝與帳號選項{ph1}"

#: website/public/get-started/index.html:571
msgctxt "page:get-started/index.html"
msgid "Claude Desktop · use a desktop chat"
msgstr "Claude Desktop · 使用桌面聊天應用程式"

#. {ph0}: <a href="https://claude.ai/download">
#. {ph1}: </a>
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md#claude-desktop" >
#. {ph3}: </a >
#: website/public/get-started/index.html:595
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Download Claude Desktop{ph1} · {ph2}Claude Desktop connection "
"details{ph3}"
msgstr "{ph0}下載 Claude Desktop{ph1} · {ph2}Claude Desktop 連接詳情{ph3}"

#. {ph0}: <code>opencode</code>
#. {ph1}: <code>/connect</code>
#: website/public/get-started/index.html:620
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Run {ph0} in your working folder. Use {ph1} in its chat to connect your "
"model account, then select a model."
msgstr "在工作資料夾裡執行 {ph0}。在聊天框中使用 {ph1} 連接模型帳號，再選擇模型。"

#. {ph0}: <a href="https://opencode.ai/docs/" >
#. {ph1}: </a >
#: website/public/get-started/index.html:625
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}OpenCode installation and model setup{ph1}"
msgstr "{ph0}OpenCode 安裝與模型設定{ph1}"

#: website/public/get-started/index.html:632
msgctxt "page:get-started/index.html"
msgid "All supported clients and setup IDs"
msgstr "全部支援的用戶端與 setup ID"

#. {ph0}: <code>--client</code>
#: website/public/get-started/index.html:633
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The npm 6.4.0 release supports the clients below. Use the ID with {ph0} when"
" choosing a client explicitly."
msgstr "npm 6.4.0 支援下面這些用戶端。指定用戶端時，在 {ph0} 後填寫對應的 ID。"

#: website/public/get-started/index.html:641
msgctxt "page:get-started/index.html"
msgid "Client"
msgstr "用戶端"

#: website/public/get-started/index.html:642
msgctxt "page:get-started/index.html"
msgid "Setup ID"
msgstr "Setup ID"

#. {ph0}: <code>qoder</code>
#. {ph1}: <code>droid</code>
#. {ph2}: <code>trae</code>
#. {ph3}: <code>zcode</code>
#. {ph4}: <code>dsh</code>
#: website/public/get-started/index.html:717
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Qoder ({ph0}), Factory Droid ({ph1}), Trae ({ph2}), ZCode ({ph3}) and "
"DeepSeek Harness ({ph4}) are available on repository main; use a source "
"build or a release containing those integrations."
msgstr ""
"Qoder（{ph0}）、Factory Droid（{ph1}）、Trae（{ph2}）、ZCode（{ph3}）和 DeepSeek "
"Harness（{ph4}）已在 main 中提供；需要使用原始碼建置或包含這些整合的新版本。"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#released-
#. package-and-main" >
#. {ph3}: </a >
#: website/public/get-started/index.html:724
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Client configuration and troubleshooting{ph1} · {ph2}Release "
"availability{ph3}"
msgstr "{ph0}用戶端設定與疑難排解{ph1} · {ph2}版本支援情況{ph3}"

#: website/public/get-started/index.html:736
msgctxt "page:get-started/index.html"
msgid "Grok Bot · connect on its hosted computer"
msgstr "Grok Bot · 在它的託管電腦上連接"

#. {ph0}: <code>rea</code>
#: website/public/get-started/index.html:737
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"In Grok Bot's chat, ask it to add a custom MCP server named {ph0} using this"
" command on the Bot's computer:"
msgstr "在 Grok Bot 聊天中，請它新增名為 {ph0} 的自訂 MCP 服務，在 Bot 的電腦上執行這條指令："

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/client-
#. configuration.md#other-client-settings" >
#. {ph1}: </a >
#: website/public/get-started/index.html:755
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Grok Bot connector instructions{ph1}"
msgstr "{ph0}Grok Bot 連接器說明{ph1}"

#: website/public/get-started/index.html:765
msgctxt "page:get-started/index.html"
msgid "3. Connect REA"
msgstr "3. 連接 REA"

#: website/public/get-started/index.html:766
msgctxt "page:get-started/index.html"
msgid "Copy this into your coding agent:"
msgstr "把這段話複製給程式設計助手："

#: website/public/get-started/index.html:810
msgctxt "page:get-started/index.html"
msgid "For one specific client, add its setup ID:"
msgstr "如果只設定一個指定用戶端，附上它的 setup ID："

#. {ph0}: <code>y</code>
#: website/public/get-started/index.html:825
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If npm asks to download the package, type {ph0} and press Enter. In REA's "
"client list, use the arrow keys to move, Space to select your client and "
"Enter to continue."
msgstr ""
"如果 npm 詢問是否下載，輸入 {ph0} 後按 Enter。在 REA 的用戶端清單中，用方向鍵移動、空白鍵選擇，然後按 Enter 繼續。"

#: website/public/get-started/index.html:836
msgctxt "page:get-started/index.html"
msgid ""
"MCP is the connection that lets your agent call REA. The skill gives it a "
"workflow for investigating software."
msgstr "MCP 讓程式開發助手能夠呼叫 REA；skill 則告訴它分析軟體時該怎樣使用這些工具。"

#: website/public/get-started/index.html:840
msgctxt "page:get-started/index.html"
msgid ""
"For the first exercise, you can skip the optional Hopper installation. "
"Restart your client when setup finishes."
msgstr "第一次練習可以跳過可選的 Hopper 安裝。setup 完成後，重新啟動用戶端。"

#. {ph0}: <code>codex</code>
#. {ph1}: <code>"healthy": true</code>
#: website/public/get-started/index.html:873
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace {ph0} with your client's setup ID. A successful check reports {ph1}."
" Then ask your agent:"
msgstr "把 {ph0} 換成你用戶端的 setup ID。檢查通過時會顯示 {ph1}。然後問程式開發助手："

#: website/public/get-started/index.html:879
msgctxt "page:get-started/index.html"
msgid "Check that REA is connected and show me which REA tools you can use."
msgstr "檢查 REA 是否已連接，並告訴我你能使用哪些 REA 工具。"

#: website/public/get-started/index.html:886
msgctxt "page:get-started/index.html"
msgid "4. Try your first investigation"
msgstr "4. 開始第一次分析"

#. {ph0}: <strong>
#. {ph1}: </strong>
#: website/public/get-started/index.html:887
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The example is a six-file Electron app with an {ph0}Export notes{ph1} "
"button. Your agent can inspect its code without installing or launching "
"Electron."
msgstr ""
"示例是一個包含六個檔案的 Electron 應用，帶有{ph0}Export notes（匯出筆記）{ph1}按鈕。助手無需安裝或啟動 Electron"
" 就能檢查程式碼。"

#: website/public/get-started/index.html:894
msgctxt "page:get-started/index.html"
msgid "Your coding agent"
msgstr "你的程式開發助手"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="setup-first-prompt" >
#. {ph3}: <span translate="no" >https://rea.tools/examples/notes-
#. example.zip</span >
#. {ph4}: <span translate="no">notes.csv</span>
#. {ph5}: </span >
#. {ph6}: <span class="terminal-cursor" aria-hidden="true">
#. {ph7}: </span>
#: website/public/get-started/index.html:904
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}›{ph1}{ph2}Download {ph3} into a new example folder and unpack it. Use "
"REA to find what happens when I click Export notes. Show where {ph4} is "
"written, which fields it contains, and the relevant files and "
"lines.{ph5}{ph6}{ph7}"
msgstr ""
"{ph0}›{ph1}{ph2}下載 {ph3}，放進一個新的示例資料夾並解壓。用 REA 找出點選 Export notes 後發生了什麼。展示 "
"{ph4} 寫到哪裡、有哪些欄位，以及相關檔案和行號。{ph5}{ph6}{ph7}"

#: website/public/get-started/index.html:918
msgctxt "page:get-started/index.html"
msgid "Look for a short explanation with file and line references:"
msgstr "尋找帶檔案和行號的簡短解釋："

#. {ph0}: <code>notes:export</code>
#. {ph1}: <code>notes.csv</code>
#. {ph2}: <code>id</code>
#. {ph3}: <code>title</code>
#: website/public/get-started/index.html:920
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The button sends a {ph0} message. The main process formats the notes as CSV "
"and writes {ph1} in the user’s Downloads folder. The columns are {ph2} and "
"{ph3}."
msgstr "按鈕傳送 {ph0} 訊息。主程序把筆記轉換為 CSV，並將 {ph1} 寫到使用者的下載資料夾。列名為 {ph2} 和 {ph3}。"

#. {ph0}: <a href="../first-investigation/#check" >
#. {ph1}: </a >
#: website/public/get-started/index.html:927
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Check a prediction in the guided exercise →{ph1}"
msgstr "{ph0}跟著練習檢查一個預測 →{ph1}"

#: website/public/get-started/index.html:933
msgctxt "page:get-started/index.html"
msgid "Download the example yourself, or use your own app"
msgstr "自行下載範例，或使用自己的應用程式"

#. {ph0}: <a class="button" href="../examples/notes-example.zip"
#. download="notes-example.zip" >
#. {ph1}: </a >
#: website/public/get-started/index.html:936
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download example ZIP{ph1}"
msgstr "{ph0}下載示例ZIP{ph1}"

#. {ph0}: <code>notes-example</code>
#: website/public/get-started/index.html:944
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If your agent can’t download files, unzip this archive yourself. Give it the"
" path to the {ph0} folder and the same export question."
msgstr "如果助手不能下載檔案，你也可以手動解壓。把 {ph0} 資料夾的路徑交給它，再問同一個匯出問題。"

#. {ph0}: <code>/absolute/path/to/app</code>
#: website/public/get-started/index.html:950
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Use REA to inspect the app at {ph0}. Find how it exports data and show the "
"relevant files and lines."
msgstr "用 REA 檢查 {ph0} 中的應用程式。找出它怎樣匯出資料，並給出相關檔案和行號。"

#: website/public/get-started/index.html:980
msgctxt "page:get-started/index.html"
msgid "Analyze another kind of software"
msgstr "分析其他類型的軟體"

#: website/public/get-started/index.html:981
msgctxt "page:get-started/index.html"
msgid ""
"Choose the section for your target. A provider is the local analysis tool "
"REA uses for that kind of software."
msgstr "按目標類型展開下面的步驟。Provider 指 REA 分析這類軟體時使用的本機工具。"

#: website/public/get-started/index.html:986
msgctxt "page:get-started/index.html"
msgid "Native executables and libraries · Hopper, Ghidra or IDA"
msgstr "原生執行檔和函式庫 · Hopper、Ghidra 或 IDA"

#: website/public/get-started/index.html:989
msgctxt "page:get-started/index.html"
msgid ""
"Install one analysis tool on the computer running REA. The host is your "
"operating system; the target is the program you want to inspect."
msgstr "在執行 REA 的電腦上安裝一個分析工具。Host 指你使用的作業系統，target 指要分析的程式。"

#: website/public/get-started/index.html:998
msgctxt "page:get-started/index.html"
msgid "Provider"
msgstr "分析工具"

#: website/public/get-started/index.html:1007
msgctxt "page:get-started/index.html"
msgid "Unavailable"
msgstr "不支援"

#: website/public/get-started/index.html:1009
msgctxt "page:get-started/index.html"
msgid "Supported distributions"
msgstr "支援的發行版"

#: website/public/get-started/index.html:1013
msgctxt "page:get-started/index.html"
msgid "x64 · experimental"
msgstr "x64 · 實驗性支援"

#: website/public/get-started/index.html:1019
msgctxt "page:get-started/index.html"
msgid "Verified profiles"
msgstr "已驗證的設定"

#: website/public/get-started/index.html:1020
msgctxt "page:get-started/index.html"
msgid "Verified headless profile"
msgstr "已驗證的無介面設定"

#: website/public/get-started/index.html:1021
msgctxt "page:get-started/index.html"
msgid "See provider guide"
msgstr "參閱 provider 指南"

#: website/public/get-started/index.html:1027
msgctxt "page:get-started/index.html"
msgid "Hopper · let setup install or connect it"
msgstr "Hopper · 透過 setup 安裝或連接"

#: website/public/get-started/index.html:1033
msgctxt "page:get-started/index.html"
msgid ""
"Choose Hopper in setup and review its separate installation plan. On macOS, "
"choose demo mode or activate your license when Hopper first opens. On Linux,"
" setup prepares the supported demo and its private display."
msgstr ""
"在 setup 中選擇 Hopper，查看它的獨立安裝計畫。macOS 首次打開 Hopper 時選擇試用模式或啟用授權；Linux 的 setup "
"會準備支援的試用版及其專用顯示環境。"

#: website/public/get-started/index.html:1039
msgctxt "page:get-started/index.html"
msgid ""
"Linux hosts: Ubuntu 24.04+, Fedora 41+, Nobara 44+, Arch Linux, CachyOS or "
"Omarchy. Hopper is commercial software; its demo has vendor-defined limits."
msgstr ""
"Linux 支援 Ubuntu 24.04+、Fedora 41+、Nobara 44+、Arch Linux、CachyOS 和 "
"Omarchy。Hopper 是商業軟體，試用版有廠商規定的限制。"

#: website/public/get-started/index.html:1058
msgctxt "page:get-started/index.html"
msgid ""
"If macOS asks for Automation permission, allow the app that starts REA in "
"System Settings → Privacy & Security → Automation, then retry."
msgstr "如果 macOS 請求自動化權限，在「系統設定 → 隱私權與安全性 → 自動化」中允許啟動 REA 的應用程式，然後重試。"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#hopper"
#. >
#. {ph1}: </a >
#: website/public/get-started/index.html:1063
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Hopper setup and troubleshooting{ph1}"
msgstr "{ph0}Hopper 安裝與疑難排解{ph1}"

#: website/public/get-started/index.html:1071
msgctxt "page:get-started/index.html"
msgid "Ghidra · install the free analysis tool and Java"
msgstr "Ghidra · 安裝免費的分析工具和 Java"

#: website/public/get-started/index.html:1075
msgctxt "page:get-started/index.html"
msgid ""
"Install a 64-bit JDK 21 or newer, including the Java compiler. Choose the "
"package matching your computer's architecture."
msgstr "安裝包含 Java 編譯器的 64 位元 JDK 21 或更新版本。下載時選擇符合電腦架構的安裝套件。"

#. {ph0}: <code>ghidra_…_PUBLIC_….zip</code>
#: website/public/get-started/index.html:1080
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Download Ghidra 12.1.4 from the release's Assets list and extract the {ph0} "
"archive. Choose the release archive, not “Source code”."
msgstr "從 Ghidra 12.1.4 發布頁的 Assets 清單下載並解壓縮 {ph0}。選擇發布套件，不要選擇「Source code」。"

#. {ph0}: <code>ghidraRun</code>
#. {ph1}: <code>ghidraRun.bat</code>
#. {ph2}: <code>GHIDRA_INSTALL_DIR</code>
#: website/public/get-started/index.html:1085
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Find the extracted folder containing {ph0} or {ph1}. Use that folder for "
"{ph2}."
msgstr "找到解壓縮後包含 {ph0} 或 {ph1} 的資料夾，把該資料夾的完整路徑填入 {ph2}。"

#. {ph0}: <a href="https://adoptium.net/temurin/releases/?version=21" >
#. {ph1}: </a >
#. {ph2}: <a
#. href="https://github.com/NationalSecurityAgency/ghidra/releases/tag/Ghidra_12.1.4_build"
#. >
#. {ph3}: </a >
#: website/public/get-started/index.html:1091
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download a JDK{ph1} · {ph2}Download Ghidra 12.1.4{ph3}"
msgstr "{ph0}下載 JDK{ph1} · {ph2}下載 Ghidra 12.1.4{ph3}"

#. {ph0}: <code>java.home</code>
#. {ph1}: <code>JAVA_HOME</code>
#: website/public/get-started/index.html:1101
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Check Java. The first command prints {ph0}; use that folder for {ph1}. The "
"second confirms the compiler is installed:"
msgstr "檢查 Java。第一條指令會顯示 {ph0}，將該資料夾用於 {ph1}；第二條確認編譯器已安裝："

#: website/public/get-started/index.html:1217
msgctxt "page:get-started/index.html"
msgid ""
"Keep these commands in the same terminal session. Rerun setup after setting "
"the paths, approve the updated client configuration, then restart your "
"agent."
msgstr "在同一個終端機工作階段中執行這些指令。設定路徑後重新執行 setup，確認更新後的用戶端設定，再重新啟動程式開發助手。"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#ghidra"
#. >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/windows-
#. ghidra-p0.md" >
#. {ph3}: </a >
#: website/public/get-started/index.html:1222
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Ghidra setup and architecture requirements{ph1} · {ph2}Windows Ghidra "
"guide{ph3}"
msgstr "{ph0}Ghidra 設定與架構要求{ph1} · {ph2}Windows Ghidra 指南{ph3}"

#: website/public/get-started/index.html:1235
msgctxt "page:get-started/index.html"
msgid "IDA · connect an existing installation"
msgstr "IDA · 連接既有安裝"

#: website/public/get-started/index.html:1236
msgctxt "page:get-started/index.html"
msgid ""
"Use the IDA provider guide to prepare an upstream MCP registration. Choose "
"an attached GUI with the original binary open, or a headless supervisor that"
" opens a private database."
msgstr ""
"按 IDA provider 指南準備上游 MCP 設定。可以連接已打開原始程式的 IDA 介面，或使用建立獨立資料庫的無介面 supervisor。"

#: website/public/get-started/index.html:1241
msgctxt "page:get-started/index.html"
msgid ""
"Verified profiles include the Windows legacy GUI and headless supervisor, "
"plus a macOS arm64 headless supervisor with IDA Professional 9.1. The "
"optional native GUI bridge has its own version and platform requirements."
msgstr ""
"已驗證的設定包括 Windows 舊版 GUI 與無介面 supervisor，以及 macOS arm64 上的 IDA Professional "
"9.1 無介面 supervisor。可選的原生 GUI 橋接另有版本和平台要求。"

#: website/public/get-started/index.html:1336
msgctxt "page:get-started/index.html"
msgid ""
"Use the JSON registration file you prepared with the provider guide, then "
"rerun setup and restart your agent."
msgstr "使用按 provider 指南準備好的 JSON 設定檔，再執行 setup 並重新啟動程式開發助手。"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/ida-
#. provider.md" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1340
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}IDA profiles, registration examples and verified platforms{ph1}"
msgstr "{ph0}IDA 設定、註冊範例與已驗證平台{ph1}"

#: website/public/get-started/index.html:1348
msgctxt "page:get-started/index.html"
msgid ""
"Once connected, give your agent the original executable's full path and name"
" your provider:"
msgstr "連接後，把原始執行檔的完整路徑和分析工具名稱告訴程式開發助手："

#. {ph0}: <a href="../guides/native/">
#. {ph1}: </a>
#: website/public/get-started/index.html:1360
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Follow a native analysis example{ph1}"
msgstr "{ph0}跟著範例分析原生程式{ph1}"

#: website/public/get-started/index.html:1365
msgctxt "page:get-started/index.html"
msgid "Websites, Android, .NET, firmware and other targets"
msgstr "網站、Android、.NET、韌體及其他目標"

#: website/public/get-started/index.html:1368
msgctxt "page:get-started/index.html"
msgid ""
"Open the guide for the target you have. Each guide gives the additional "
"tools, supported hosts and first command."
msgstr "打開對應目標的指南，其中會列出額外工具、支援的平台和第一條分析指令。"

#: website/public/get-started/index.html:1376
msgctxt "page:get-started/index.html"
msgid "Target"
msgstr "目標"

#: website/public/get-started/index.html:1377
msgctxt "page:get-started/index.html"
msgid "Tools to prepare"
msgstr "需要準備的工具"

#: website/public/get-started/index.html:1378
msgctxt "page:get-started/index.html"
msgid "Guide"
msgstr "指南"

#: website/public/get-started/index.html:1383
msgctxt "page:get-started/index.html"
msgid "JavaScript / Electron"
msgstr "JavaScript / Electron"

#. {ph0}: <a href="../guides/javascript/">
#. {ph1}: </a>
#: website/public/get-started/index.html:1385
#: website/public/get-started/index.html:1390
#: website/public/get-started/index.html:1395
#: website/public/get-started/index.html:1405
#: website/public/get-started/index.html:1415
#: website/public/get-started/index.html:1425
#: website/public/get-started/index.html:1435
#: website/public/get-started/index.html:1445
#: website/public/get-started/index.html:1455
#: website/public/get-started/index.html:1465
#: website/public/get-started/index.html:1475
#: website/public/get-started/index.html:1485
#: website/public/get-started/index.html:1495
#: website/public/get-started/index.html:1505
#: website/public/get-started/index.html:1515
#: website/public/get-started/index.html:1525
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Open guide{ph1}"
msgstr "{ph0}查看指南{ph1}"

#: website/public/get-started/index.html:1388
msgctxt "page:get-started/index.html"
msgid "Website"
msgstr "網站"

#: website/public/get-started/index.html:1393
msgctxt "page:get-started/index.html"
msgid ".NET / Flutter / packages"
msgstr ".NET / Flutter / 軟體套件"

#: website/public/get-started/index.html:1403
msgctxt "page:get-started/index.html"
msgid "Android APK"
msgstr "Android APK"

#: website/public/get-started/index.html:1413
msgctxt "page:get-started/index.html"
msgid "Android device"
msgstr "Android 裝置"

#: website/public/get-started/index.html:1423
msgctxt "page:get-started/index.html"
msgid "Android resources"
msgstr "Android 資源"

#: website/public/get-started/index.html:1433
msgctxt "page:get-started/index.html"
msgid "JEB project"
msgstr "JEB 專案"

#: website/public/get-started/index.html:1443
msgctxt "page:get-started/index.html"
msgid "Firmware"
msgstr "韌體"

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

#: website/public/get-started/index.html:1483
msgctxt "page:get-started/index.html"
msgid "ELF / Linux crash"
msgstr "ELF / Linux 當機記錄"

#: website/public/get-started/index.html:1493
msgctxt "page:get-started/index.html"
msgid "HAR / SAZ / mitmproxy"
msgstr "HAR / SAZ / mitmproxy"

#: website/public/get-started/index.html:1503
msgctxt "page:get-started/index.html"
msgid "PCAP / PCAPNG"
msgstr "PCAP / PCAPNG"

#: website/public/get-started/index.html:1513
msgctxt "page:get-started/index.html"
msgid "Logic signals"
msgstr "邏輯訊號"

#: website/public/get-started/index.html:1523
msgctxt "page:get-started/index.html"
msgid "Process behavior"
msgstr "程序行為"

#. {ph0}: <a href="https://github.com/morluto/rea/blob/main/docs/flutter-
#. analysis.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/morluto/rea/blob/main/docs/javascript-
#. artifact-reconstruction.md" >
#. {ph3}: </a >
#. {ph4}: <a href="https://github.com/morluto/rea/blob/main/docs/evm-
#. bytecode.md" >
#. {ph5}: </a >
#. {ph6}: <a href="../guides/">
#. {ph7}: </a>
#: website/public/get-started/index.html:1535
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Flutter guide{ph1} · {ph2}Packages and resources{ph3} · {ph4}EVM "
"bytecode{ph5} · {ph6}All investigation guides{ph7}"
msgstr ""
"{ph0}Flutter 指南{ph1} · {ph2}軟體套件與資源{ph3} · {ph4}EVM 位元碼{ph5} · "
"{ph6}全部分析指南{ph7}"

#: website/public/get-started/index.html:1555
msgctxt "page:get-started/index.html"
msgid "Use REA from a terminal"
msgstr "在終端機中使用 REA"

#: website/public/get-started/index.html:1557
msgctxt "page:get-started/index.html"
msgid "CLI commands, global installation and curl"
msgstr "CLI 指令、全域安裝與 curl"

#. {ph0}: <code>main</code>
#: website/public/get-started/index.html:1654
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Replace {ph0} with a function name or address from the target's function "
"list. Ghidra must be configured first."
msgstr "把 {ph0} 換成目標函式清單中的名稱或位址。先完成 Ghidra 設定再執行。"

#: website/public/get-started/index.html:1658
msgctxt "page:get-started/index.html"
msgid ""
"On macOS or Linux, you can also use the curl installer after preparing "
"Node.js:"
msgstr "macOS 或 Linux 準備好 Node.js 後，也可以使用 curl 安裝："

#: website/public/get-started/index.html:1696
msgctxt "page:get-started/index.html"
msgid ""
"Use the client check in step 3 with your setup ID. In editor clients, enable"
" REA in MCP settings and allow its tools in the agent chat."
msgstr "在第 3 步的檢查指令中填寫你的 setup ID。使用編輯器時，在 MCP 設定中啟用 REA，並在助手聊天中允許使用它的工具。"

#: website/public/get-started/index.html:1724
msgctxt "page:get-started/index.html"
msgid "Windows, WSL and paths with spaces"
msgstr "Windows、WSL 與含空白的路徑"

#: website/public/get-started/index.html:1725
msgctxt "page:get-started/index.html"
msgid ""
"Use Windows PowerShell for Windows clients and analysis tools. If your agent"
" runs inside WSL, install Node.js and REA inside that Linux environment and "
"use Linux paths there. Headless providers run on the same host as REA."
msgstr ""
"Windows 用戶端和分析工具使用 Windows PowerShell。如果程式開發助手在 WSL 內執行，就在那個 Linux 環境中安裝 "
"Node.js 和 REA，並使用 Linux 路徑。無介面 provider 與 REA 在同一個系統環境中執行。"

#: website/public/get-started/index.html:1734
msgctxt "page:get-started/index.html"
msgid "Windows setup command:"
msgstr "Windows setup 指令："

#: website/public/get-started/index.html:1751
msgctxt "page:get-started/index.html"
msgid "Update or remove REA"
msgstr "更新或移除 REA"

#: website/public/get-started/index.html:1752
msgctxt "page:get-started/index.html"
msgid ""
"To refresh your agent connection, run the latest setup command again, review"
" its plan and restart your client."
msgstr "要更新程式開發助手的連接，重新執行最新版 setup，查看並確認計畫，然後重新啟動用戶端。"

#. {ph0}: <code>rea update</code>
#. {ph1}: <code>npx rea-agents@latest uninstall</code>
#: website/public/get-started/index.html:1770
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If you installed the global CLI, update it with {ph0}. Use {ph1} to remove "
"REA's client configuration and skill."
msgstr "全域安裝的 CLI 用 {ph0} 更新。使用 {ph1} 移除 REA 的用戶端設定和 skill。"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#diagnose-
#. update-and-remove" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1776
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Update and uninstall details{ph1}"
msgstr "{ph0}更新與解除安裝詳情{ph1}"

#: website/public/get-started/index.html:322
msgctxt "page:get-started/index.html"
msgid "Copy Windows REA setup command"
msgstr "複製 Windows REA setup 指令"

#: website/public/get-started/index.html:419
#: website/public/get-started/index.html:450
#: website/public/get-started/index.html:464
#: website/public/get-started/index.html:482
#: website/public/get-started/index.html:534
#: website/public/get-started/index.html:548
#: website/public/get-started/index.html:580
#: website/public/get-started/index.html:609
#: website/public/get-started/index.html:744
#: website/public/get-started/index.html:799
#: website/public/get-started/index.html:814
#: website/public/get-started/index.html:862
#: website/public/get-started/index.html:1047
#: website/public/get-started/index.html:1109
#: website/public/get-started/index.html:1132
#: website/public/get-started/index.html:1156
#: website/public/get-started/index.html:1204
#: website/public/get-started/index.html:1279
#: website/public/get-started/index.html:1305
#: website/public/get-started/index.html:1322
#: website/public/get-started/index.html:1643
#: website/public/get-started/index.html:1665
#: website/public/get-started/index.html:1738
#: website/public/get-started/index.html:1759
msgctxt "page:get-started/index.html"
msgid "Copy command"
msgstr "複製指令"

#: website/public/get-started/index.html:895
msgctxt "page:get-started/index.html"
msgid "Copy Notes investigation prompt"
msgstr "複製筆記調查提示"

#. {ph0}: <code>sudo apt install curl unzip</code>
#: website/public/get-started/index.html:362
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Install curl and unzip first if they are missing. On Debian or Ubuntu, run "
"{ph0}; on other distributions, use your package manager."
msgstr "如果沒有 curl 和 unzip，先安裝它們。Debian 或 Ubuntu 使用 {ph0}；其他發行版使用對應的套件管理工具。"

#: website/public/get-started/index.html:381
msgctxt "page:get-started/index.html"
msgid "Close the terminal, open it again, then:"
msgstr "關閉終端機，重新打開，再執行："

#: website/public/get-started/index.html:511
msgctxt "page:get-started/index.html"
msgid ""
"Open its AI chat and choose Agent mode. In Windsurf or Devin Desktop, open "
"the agent chat; in VS Code, set up GitHub Copilot first."
msgstr ""
"打開 AI 聊天面板，選擇 Agent 模式。Windsurf 或 Devin Desktop 使用其助手聊天面板；VS Code 先設定 GitHub"
" Copilot。"

#. {ph0}: <a href="https://cursor.com/docs">
#. {ph1}: </a>
#. {ph2}: <a href="https://docs.windsurf.com/windsurf/getting-started" >
#. {ph3}: </a >
#. {ph4}: <a href="https://code.visualstudio.com/docs/setup/copilot" >
#. {ph5}: </a >
#: website/public/get-started/index.html:517
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"{ph0}Cursor setup{ph1} · {ph2}Windsurf / Devin Desktop setup{ph3} · {ph4}VS "
"Code and Copilot setup{ph5}"
msgstr ""
"{ph0}Cursor 安裝{ph1} · {ph2}Windsurf / Devin Desktop 安裝{ph3} · {ph4}VS Code 與"
" Copilot 設定{ph5}"

#: website/public/get-started/index.html:605
msgctxt "page:get-started/index.html"
msgid "OpenCode · choose an AI model"
msgstr "OpenCode · 選擇 AI 模型"

#: website/public/get-started/index.html:1263
msgctxt "page:get-started/index.html"
msgid "Prepare the IDA registration file"
msgstr "準備 IDA 設定檔"

#. {ph0}: <code>ida-mcp.json</code>
#. {ph1}: <code>.txt</code>
#: website/public/get-started/index.html:1264
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Install and configure the upstream server using the IDA guide below. Then "
"save its working registration as {ph0} in a text editor. On Windows, choose "
"“All files” when saving in Notepad so it doesn't add {ph1}."
msgstr ""
"按下面的 IDA 指南安裝並設定上游服務，再用文字編輯器把可用的連接設定儲存為 {ph0}。Windows 記事本儲存時選擇「所有檔案」，避免自動加入 "
"{ph1}。"

#. {ph0}: <code>idb_open</code>
#. {ph1}: <code>idb_list</code>
#. {ph2}: <code>idb_close</code>
#: website/public/get-started/index.html:1271
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For a headless supervisor providing {ph0}, {ph1} and {ph2}, the file can "
"look like this:"
msgstr "如果使用提供 {ph0}、{ph1} 和 {ph2} 的無介面 supervisor，檔案可以這樣寫："

#. {ph0}: <code>command</code>
#. {ph1}: <code>args</code>
#. {ph2}: <code>env</code>
#: website/public/get-started/index.html:1294
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For an attached legacy 1.4.0 GUI server, copy its working {ph0}, {ph1} and "
"optional {ph2} into the file. Open the original binary in IDA and start its "
"upstream plugin before asking REA to inspect it."
msgstr ""
"如果連接舊版 1.4.0 GUI 服務，把可用的 {ph0}、{ph1} 和可選的 {ph2} 複製到檔案中。先在 IDA "
"中打開原始程式並啟動上游外掛，再讓 REA 分析。"

#: website/public/get-started/index.html:1463
msgctxt "page:get-started/index.html"
msgid "SQLite database"
msgstr "SQLite 資料庫"

#: website/public/get-started/index.html:1473
msgctxt "page:get-started/index.html"
msgid "EVM bytecode"
msgstr "EVM 位元碼"

#: website/public/get-started/index.html:446
msgctxt "page:get-started/index.html"
msgid "Install Codex using the command for your operating system:"
msgstr "使用適合你作業系統的指令安裝 Codex："

#: website/public/get-started/index.html:475
msgctxt "page:get-started/index.html"
msgid ""
"After installation, reopen your terminal and return to the working folder. "
"Then start Codex:"
msgstr "安裝後，重新打開終端機並回到工作資料夾，再啟動 Codex："

#. {ph0}: <a href="https://nodejs.org/en/download" >
#. {ph1}: </a >
#: website/public/get-started/index.html:336
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"For a first installation, download the {ph0}Node.js 24 LTS macOS installer "
"(.pkg){ph1}, open it and follow the installer. Then reopen Terminal."
msgstr ""
"首次安裝時，下載 {ph0}Node.js 24 LTS 的 macOS 安裝套件（.pkg）{ph1}，打開並按提示安裝，然後重新打開終端機。"

#: website/public/get-started/index.html:343
msgctxt "page:get-started/index.html"
msgid "Already use Homebrew?"
msgstr "已經在使用 Homebrew？"

#: website/public/get-started/index.html:572
msgctxt "page:get-started/index.html"
msgid ""
"Install Claude Desktop on Windows or macOS and sign in. Quit it completely, "
"then run this command in a terminal you opened outside Claude:"
msgstr ""
"在 Windows 或 macOS 上安裝 Claude Desktop 並登入。先完全結束它，再在 Claude 之外打開一個終端機，執行這條指令："

#. {ph0}: <a href="#check-connection">
#. {ph1}: </a>
#: website/public/get-started/index.html:591
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Review and approve the plan, reopen Claude, then {ph0}check the connection "
"in step 3{ph1}."
msgstr "查看並確認計畫，重新打開 Claude，再{ph0}按第 3 步檢查連接{ph1}。"

#: website/public/get-started/index.html:1168
msgctxt "page:get-started/index.html"
msgid ""
"Replace both paths with your existing installations. For a fresh macOS or "
"Linux arm64 installation, build the native decompiler for your computer "
"before continuing."
msgstr ""
"把兩個路徑換成你已有的安裝位置。如果剛在 macOS 或 Linux arm64 上解壓縮 "
"Ghidra，先為這台電腦編譯原生反編譯器，再繼續下面的步驟。"

#: website/public/get-started/index.html:1174
msgctxt "page:get-started/index.html"
msgid "Build Ghidra's native decompiler"
msgstr "編譯 Ghidra 的原生反編譯器"

#: website/public/get-started/index.html:1175
msgctxt "page:get-started/index.html"
msgid ""
"On macOS, the build needs Xcode Command Line Tools, make and bison. Use the "
"guide for your computer:"
msgstr "macOS 編譯需要 Xcode Command Line Tools、make 和 bison。選擇符合電腦架構的指南："

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#missing-
#. macos-native-decompiler" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1180
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}macOS · Intel{ph1}"
msgstr "{ph0}macOS · Intel{ph1}"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/docs/installation.md#macos-
#. arm64-native-decompiler" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1186
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}macOS · Apple Silicon{ph1}"
msgstr "{ph0}macOS · Apple Silicon{ph1}"

#. {ph0}: <a
#. href="https://github.com/NationalSecurityAgency/ghidra/blob/Ghidra_12.1.4_build/GhidraDocs/GettingStarted.md#building-
#. native-components" >
#. {ph1}: </a >
#: website/public/get-started/index.html:1192
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Linux arm64 · native build instructions{ph1}"
msgstr "{ph0}Linux arm64 · 原生元件編譯說明{ph1}"

#: website/public/get-started/index.html:1200
msgctxt "page:get-started/index.html"
msgid "Then check Ghidra and save its paths for your client:"
msgstr "然後檢查 Ghidra，並為用戶端儲存這些路徑："

#. {ph0}: <span translate="no">200 + 10%</span>
#: website/public/index.html:351
#, python-brace-format
msgctxt "page:index.html"
msgid "Why does Calculator give 220 for {ph0}?"
msgstr "為什麼計算機中的 {ph0} 得到 220？"

#. {ph0}: <a href="#what-is-re">
#. {ph1}: </a>
#: website/public/index.html:214
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}How it works{ph1}"
msgstr "{ph0}如何運作{ph1}"

#: website/public/index.html:230
msgctxt "page:index.html"
msgid ""
"Ask your coding agent about an app, a game or a website. REA gives it the "
"tools to inspect the code behind the answer."
msgstr "向你的程式開發助手提一個關於應用程式、遊戲或網站的問題。REA 為它提供工具，讓它檢查答案背後的程式碼。"

#: website/public/index.html:235
msgctxt "page:index.html"
msgid "Get started"
msgstr "開始使用"

#: website/public/index.html:236
msgctxt "page:index.html"
msgid "See an example ↓"
msgstr "看一個例子 ↓"

#: website/public/index.html:326
msgctxt "page:index.html"
msgid "How it works"
msgstr "如何運作"

#: website/public/index.html:328
msgctxt "page:index.html"
msgid ""
"Reverse engineering means learning how software works by inspecting the "
"program itself. With REA, your agent can follow the code, explain a feature "
"and help you rebuild it."
msgstr "逆向工程就是透過檢查程式本身，了解軟體如何運作。有了 REA，你的助手可以追蹤程式碼、解釋一個功能，並幫你重新實作它。"

#: website/public/index.html:335
msgctxt "page:index.html"
msgid "Ask about one feature"
msgstr "問一個具體功能"

#: website/public/index.html:336
msgctxt "page:index.html"
msgid "Give your agent a program or page and a question."
msgstr "給助手一個程式或頁面，再提一個問題。"

#: website/public/index.html:339
msgctxt "page:index.html"
msgid "Inspect the program"
msgstr "檢查程式"

#: website/public/index.html:340
msgctxt "page:index.html"
msgid "REA returns code, references and runtime observations."
msgstr "REA 回傳程式碼、參照關係和執行時觀察結果。"

#: website/public/index.html:343
msgctxt "page:index.html"
msgid "Explain it, then try a change"
msgstr "理解它，再試著修改"

#: website/public/index.html:344
msgctxt "page:index.html"
msgid "Your agent uses the findings to explain or rebuild the feature."
msgstr "助手根據這些發現解釋或重新實作這個功能。"

#: website/public/index.html:360
msgctxt "page:index.html"
msgid "Follow the instructions step by step"
msgstr "一步步閱讀指令"

#: website/public/index.html:511
msgctxt "page:index.html"
msgid "Ask your agent the same question"
msgstr "向助手提同一個問題"

#: website/public/index.html:724
msgctxt "page:index.html"
msgid ""
"Start at 6. Add 0.001 each update without a collision, while speed is below "
"13."
msgstr "起始速度為 6。速度低於 13 時，每次沒有發生碰撞的更新增加 0.001。"

#: website/public/index.html:1029
msgctxt "page:index.html"
msgid ""
"Explore a feature in a released app or game, with code and checked results."
msgstr "查看已發行應用程式或遊戲中的一個功能，以及相關程式碼和驗證結果。"

#: website/public/index.html:1040
msgctxt "page:index.html"
msgid ""
"Trace Aegis's six-digit login code through its released APK, then move a "
"demo clock to see why it changes every 30 seconds."
msgstr "在 Aegis 已發行的 APK 中追蹤六位登入驗證碼，再移動示範時鐘，看看它為什麼每 30 秒變化一次。"

#: website/public/index.html:1051
msgctxt "page:index.html"
msgid ""
"Follow Notion's packaged JavaScript to the system clipboard and see how a "
"copy preserves rich block data."
msgstr "從 Notion 打包的 JavaScript 追蹤到系統剪貼簿，看看複製如何保留豐富的區塊資料。"

#: website/public/index.html:1062
msgctxt "page:index.html"
msgid ""
"Recover how a ball's position becomes left/right sound in a 1996 Windows "
"game."
msgstr "還原一款 1996 年 Windows 遊戲如何把球的位置轉成左右聲道的聲音。"

#: website/public/index.html:1093
msgctxt "page:index.html"
msgid "Choose your target."
msgstr "選擇你的目標。"

#: website/public/index.html:1094
msgctxt "page:index.html"
msgid ""
"These guides cover setup and a first investigation for each kind of "
"software."
msgstr "這些指南介紹各類軟體的環境設定和第一次調查。"

#. {ph0}: <a href="#calculator">
#. {ph1}: </a>
#: website/public/index.html:566
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"Selected assembly from the installed Calculator DLL. The thoughts and reply "
"illustrate the findings. {ph0}Continue with the Calculator example ↓{ph1}"
msgstr "彙編節選自已安裝的計算器 DLL。思考過程和回答用於解釋分析結果。{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:1131
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Website"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}示例 prompt · 網站"

#: website/public/index.html:1154
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:1159
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example prompt · Game reconstruction"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}示例 prompt · 遊戲重建"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="game-project-prompt" >
#. {ph3}: </span >
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
#. {ph5}: </span>
#: website/public/index.html:1173
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to reconstruct this game from its executable. "
"Recover the gameplay logic in C and test it against the "
"original.{ph3}{ph4}{ph5}"
msgstr ""
"{ph0}›{ph1}{ph2}用 REA 從這個遊戲的可執行檔案重建遊戲。用 C 還原遊戲邏輯，並對照原版測試。{ph3}{ph4}{ph5}"

#. {ph0}: <a href="showcase/dx-ball/">
#. {ph1}: </a>
#: website/public/index.html:1182
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}See the DX-Ball case study →{ph1}"
msgstr "{ph0}檢視 DX-Ball 案例 →{ph1}"

#: website/public/index.html:1136
msgctxt "page:index.html"
msgid "Copy website project prompt"
msgstr "複製網站專案提示"

#: website/public/index.html:1164
msgctxt "page:index.html"
msgid "Copy game reconstruction prompt"
msgstr "複製遊戲重建提示"

#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
#. {ph1}: </span >
#. {ph2}: <span id="website-project-prompt" >
#. {ph3}: <span translate="no">https://rea.tools/</span>
#. {ph4}: </span >
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
#. {ph6}: </span>
#: website/public/index.html:1145
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}›{ph1}{ph2}Use REA to inspect {ph3}. Clone this website for "
"me.{ph4}{ph5}{ph6}"
msgstr "{ph0}›{ph1}{ph2}用 REA 檢查 {ph3}。幫我克隆這個網站。{ph4}{ph5}{ph6}"

#. {ph0}: <a href="showcase/">
#. {ph1}: </a>
#: website/public/index.html:239
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Showcases →{ph1} — investigations and interactive demos."
msgstr "{ph0}案例展示 →{ph1} — 調查過程與互動示範。"

#. {ph0}: <a href="blog/">
#. {ph1}: </a>
#: website/public/index.html:243
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Blog →{ph1} — methods and reconstruction notes."
msgstr "{ph0}部落格 →{ph1} — 方法與軟體重建筆記。"

#: website/public/index.html:350
msgctxt "page:index.html"
msgid "See the full Calculator investigation"
msgstr "展開完整的計算機調查"

#: website/public/index.html:1126
msgctxt "page:index.html"
msgid "Try a larger project"
msgstr "試一個更大的專案"

#: website/public/index.html:578
msgctxt "page:index.html"
msgid ""
"Let’s try two examples: change a game’s speed, then rebuild Calculator’s % "
"button."
msgstr "試兩個例子吧：先改變遊戲速度，再重新實作計算機的 % 按鈕。"

#: website/public/index.html:586
msgctxt "page:index.html"
msgid ""
"The game gets faster as you run. To rebuild it with a speed control, we "
"first need to find out how the speed changes."
msgstr "遊戲會隨著奔跑越來越快。要重新實作它並加上速度控制，我們先得弄清速度怎麼變化。"

#: website/public/index.html:592
msgctxt "page:index.html"
msgid "1. Ask about the speed"
msgstr "1. 問一問速度"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:595
#, python-brace-format
msgctxt "page:index.html"
msgid ""
"{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example question · Dinosaur game"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}範例問題 · 恐龍遊戲"

#: website/public/index.html:618
msgctxt "page:index.html"
msgid "2. Find the speed rule"
msgstr "2. 找到速度規則"

#: website/public/index.html:619
msgctxt "page:index.html"
msgid ""
"REA lets the agent read the game’s running code. The speed starts at 6 and "
"increases a little each update while it is below 13."
msgstr "REA 讓助手讀到遊戲正在執行的程式碼。速度從 6 開始，低於 13 時，每次更新都會增加一點。"

#: website/public/index.html:626
msgctxt "page:index.html"
msgid "3. Play the result"
msgstr "3. 玩一玩結果"

#: website/public/index.html:627
msgctxt "page:index.html"
msgid ""
"We rebuilt that rule in the mini-game below and added a speed slider. Press "
"Play, then choose your own speed."
msgstr "我們把這條規則用在下面的小遊戲裡，加上了速度滑桿。點擊開始，再選一個自己的速度。"

#: website/public/index.html:692
msgctxt "page:index.html"
msgid ""
"Enable JavaScript to play. You can still read the rule and open the source "
"code below."
msgstr "開啟 JavaScript 就能玩。你仍然可以閱讀規則，並展開下方的原始碼。"

#: website/public/index.html:810
msgctxt "page:index.html"
msgid ""
"The % button does different things after + and ×. Let’s find both rules and "
"try them in a small calculator."
msgstr "% 按鈕在 + 和 × 之後做的事情不同。我們來找出兩條規則，在一個小計算機裡試試。"

#: website/public/index.html:816
msgctxt "page:index.html"
msgid "1. Ask about the % button"
msgstr "1. 問一問 % 按鈕"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/index.html:819
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}Example question · Calculator"
msgstr "{ph0}{ph1}{ph2}{ph3}{ph4}{ph5}{ph6}{ph7}範例問題 · 計算機"

#: website/public/index.html:842
msgctxt "page:index.html"
msgid "2. Find both rules"
msgstr "2. 找到兩條規則"

#: website/public/index.html:843
msgctxt "page:index.html"
msgid ""
"REA helps the agent read the code behind the % button. It applies two "
"different rules:"
msgstr "REA 幫助助手讀到 % 按鈕背後的程式碼。它使用兩條不同的規則："

#: website/public/index.html:864
msgctxt "page:index.html"
msgid "3. Try the % button"
msgstr "3. 試試 % 按鈕"

#: website/public/index.html:865
msgctxt "page:index.html"
msgid "We recreated both rules below. Choose + or ×, press %, then press =."
msgstr "我們在下面重新實作了兩條規則。選 + 或 ×，按 %，再按 =。"

#. {ph0}: <a href="faq/">
#. {ph1}: </a>
#: website/public/index.html:1195
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Read the FAQ{ph1} — setup and common questions."
msgstr "{ph0}閱讀 FAQ{ph1} — 安裝設定和常見問題。"

#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
#. {ph1}: </a>
#: website/public/index.html:1198
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}Join Discord{ph1} — get help and discuss your investigations."
msgstr "{ph0}加入 Discord{ph1} — 尋求協助，交流你的調查。"

#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
#. {ph1}: </a >
#: website/public/index.html:1202
#, python-brace-format
msgctxt "page:index.html"
msgid "{ph0}GitHub issues{ph1} — report a bug or request a feature."
msgstr "{ph0}GitHub issues{ph1} — 回報問題或提出功能需求。"

#: website/public/index.html:296
msgctxt "page:index.html"
msgid "Setup for your platform:"
msgstr "依你的平台設定："

#. {ph0}: <a href="get-started/#curl-installation" >
#. {ph1}: <span translate="no">curl</span>
#. {ph2}: </a >
#: website/public/index.html:307
#, python-brace-format
msgctxt "page:index.html"
msgid "Other install options: {ph0}{ph1} →{ph2}"
msgstr "其他安裝方式：{ph0}{ph1} →{ph2}"

#. {ph0}: <code>rea setup</code>
#: website/public/get-started/index.html:1676
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Follow the setup prompts to connect your agent. If they don't appear, run "
"{ph0}."
msgstr "依設定提示連接你的助手。如果沒有出現提示，執行 {ph0}。"

#. {ph0}: <a
#. href="https://github.com/morluto/rea/blob/main/CONTRIBUTING.md#development-
#. setup" >
#. {ph1}: </a >
#. {ph2}: <code>6.4.0</code>
#: website/public/get-started/index.html:1247
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"The macOS headless profile and native GUI bridge require a {ph0}REA source "
"build{ph1} or a release containing those changes. npm {ph2} does not include"
" them."
msgstr ""
"macOS 無介面模式和原生 GUI 橋接需要 {ph0}REA 原始碼建置{ph1}，或包含這些改動的發行版。npm {ph2} 尚未包含這些改動。"

#. {ph0}: <code>node scripts/rea.mjs doctor --provider ida --json</code>
#. {ph1}: <code>node scripts/rea.mjs setup</code>
#. {ph2}: <code>npx</code>
#: website/public/get-started/index.html:1256
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"From the built checkout, run {ph0} and {ph1} instead of the {ph2} commands "
"below."
msgstr "在已建置的原始碼目錄中，執行 {ph0} 和 {ph1}，不要使用下方的 {ph2} 命令。"

#. {ph0}: <code>rea</code>
#. {ph1}: <code>"$HOME/.local/bin/rea" setup</code>
#: website/public/get-started/index.html:1680
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"If your shell can't find {ph0}, use the executable path printed by the "
"installer. On Linux, the default setup command is {ph1}."
msgstr "如果終端找不到 {ph0}，請使用安裝器印出的執行檔路徑。在 Linux 上，預設的設定命令是 {ph1}。"

#. {ph0}: <code>/absolute/path/to/program</code>
#: website/public/get-started/index.html:1353
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid ""
"Use REA with my configured provider to inspect {ph0}. List its functions and"
" strings, then explain the part that handles user input with references to "
"the code."
msgstr "使用 REA 和我已設定的分析工具檢查 {ph0}。列出其中的函式和字串，然後說明處理使用者輸入的部分，並提供程式碼引用。"

#: website/public/blog/index.html:122 website/public/blog/index.html:241
#: website/public/blog/reverse-engineering-models/index.html:122
#: website/public/blog/reverse-engineering-models/index.html:880
#: website/public/blog/touhou-reconstruction/index.html:122
#: website/public/blog/touhou-reconstruction/index.html:1077
#: website/public/contributors/index.html:123
#: website/public/contributors/index.html:1128
#: website/public/examples/dino-lab/index.html:123
#: website/public/examples/dino-lab/index.html:472
#: website/public/faq/index.html:122 website/public/faq/index.html:570
#: website/public/first-investigation/index.html:122
#: website/public/first-investigation/index.html:531
#: website/public/get-started/index.html:122
#: website/public/get-started/index.html:1814
#: website/public/guides/browser/index.html:122
#: website/public/guides/browser/index.html:504
#: website/public/guides/index.html:122 website/public/guides/index.html:279
#: website/public/guides/javascript/index.html:122
#: website/public/guides/javascript/index.html:500
#: website/public/guides/native/index.html:122
#: website/public/guides/native/index.html:506 website/public/index.html:124
#: website/public/index.html:1219 website/public/showcase/aegis/index.html:123
#: website/public/showcase/aegis/index.html:805
#: website/public/showcase/ctf/index.html:122
#: website/public/showcase/ctf/index.html:774
#: website/public/showcase/dx-ball/index.html:122
#: website/public/showcase/dx-ball/index.html:782
#: website/public/showcase/index.html:122
#: website/public/showcase/index.html:314
#: website/public/showcase/notion/index.html:122
#: website/public/showcase/notion/index.html:628
#: website/public/showcase/th04/index.html:122
#: website/public/showcase/th04/index.html:797
msgctxt "shared"
msgid "Contributors"
msgstr "貢獻者"

#: website/public/contributors/index.html:108
msgctxt "page:contributors/index.html"
msgid "Skip to content"
msgstr "跳轉到內容"

#. {ph0}: <a href="../">
#. {ph1}: </a>
#: website/public/contributors/index.html:200
#, python-brace-format
msgctxt "page:contributors/index.html"
msgid "{ph0}Home{ph1} / Contributors"
msgstr "{ph0}首頁{ph1} / 貢獻者"

#: website/public/contributors/index.html:201
msgctxt "page:contributors/index.html"
msgid "Built together."
msgstr "一起打造。"

#: website/public/contributors/index.html:202
msgctxt "page:contributors/index.html"
msgid "Thank you to everyone who helps make REA better."
msgstr "感謝每一位讓 REA 變得更好的人。"

#: website/public/contributors/index.html:203
msgctxt "page:contributors/index.html"
msgid ""
"Code, documentation, tests, translations and ideas — there are many ways to "
"contribute."
msgstr "程式碼、文件、測試、翻譯和想法——你可以用許多方式參與。"

#: website/public/contributors/index.html:208
msgctxt "page:contributors/index.html"
msgid "How to contribute"
msgstr "如何參與貢獻"

#: website/public/contributors/index.html:213
msgctxt "page:contributors/index.html"
msgid "Join the conversation →"
msgstr "加入討論 →"

#: website/public/contributors/index.html:223
msgctxt "page:contributors/index.html"
msgid "Contributors"
msgstr "貢獻者"

#: website/public/contributors/index.html:225
msgctxt "page:contributors/index.html"
msgid "Find a contributor"
msgstr "尋找貢獻者"

#. {ph0}: <a href="https://github.com/morluto/rea/graphs/contributors">
#. {ph1}: </a>
#. {ph2}: <time datetime="2026-10-15" translate="no">2026-10-15</time>
#: website/public/contributors/index.html:1112
#, python-brace-format
msgctxt "page:contributors/index.html"
msgid "From {ph0}GitHub’s contributor list{ph1} · Updated {ph2}."
msgstr "來自 {ph0}GitHub 貢獻者名單{ph1} · 更新於 {ph2}。"

#: website/public/contributors/index.html:1117
msgctxt "page:contributors/index.html"
msgid "No matching contributors. Try another username."
msgstr "找不到符合的貢獻者。試試其他使用者名稱。"

#: website/public/contributors/index.html:6
msgctxt "page:contributors/index.html"
msgid "Contributors · REA"
msgstr "貢獻者 · REA"

#: website/public/contributors/index.html:7
msgctxt "page:contributors/index.html"
msgid ""
"Meet the people who contribute code, documentation, tests and ideas to REA."
msgstr "認識為 REA 貢獻程式碼、文件、測試和想法的人。"

#: website/public/contributors/index.html:226
msgctxt "page:contributors/index.html"
msgid "GitHub username"
msgstr "GitHub 使用者名稱"

#: website/public/contributors/index.html:1137
msgctxt "page:contributors/index.html"
msgid "Back to top"
msgstr "回到頂部"

#: website/public/assets/contributors.js:21
#, python-brace-format
msgctxt "runtime"
msgid "Contributors: {count}"
msgstr "貢獻者: {count}"

#, python-brace-format
#~ msgctxt "runtime"
#~ msgid "{count} contributors"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Use REA with Ghidra to inspect {ph0}. List its functions and strings, then "
#~ "explain the part that handles user input with references to the code."
#~ msgstr "用 REA 和 Ghidra 檢查 {ph0}。列出函式和字串，再解釋處理使用者輸入的部分，並給出對應的程式碼位置。"

#~ msgctxt "page:index.html"
#~ msgid "Play the reconstruction"
#~ msgstr "試玩重建版"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Enable JavaScript to play the reconstruction. The code and explanation above"
#~ " remain readable."
#~ msgstr "啟用 JavaScript 即可試玩。上面的程式碼和說明無需 JavaScript 也能閱讀。"

#~ msgctxt "page:index.html"
#~ msgid "REA returned"
#~ msgstr "REA 返回"

#, 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}示例 prompt · 小恐龍游戲"

#~ msgctxt "page:index.html"
#~ msgid "Try the calculation"
#~ msgstr "試試計算"

#, 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}示例 prompt · 重建 % 按鈕"

#, 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}閱讀 FAQ{ph1}、{ph2}在 Discord 和我們聊聊{ph3}，或{ph4}提交 GitHub issue{ph5}反饋 bug "
#~ "和功能需求。"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We inspected the game's speed rule, then rebuilt it with a slider. Play the "
#~ "result and choose your own pace."
#~ msgstr "我們檢查了遊戲的速度規則，再加上滑桿重新實作它。玩一玩，選一個自己的速度。"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The running script contains the speed settings and update function. The "
#~ "agent uses them to recover the acceleration."
#~ msgstr "執行中的腳本包含速度設定和更新函式。助手用它們還原加速規則。"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The % button behaves differently after + and ×. We inspected the installed "
#~ "app to recover both rules. Try them below."
#~ msgstr "% 按鈕在 + 和 × 之後有不同的行為。我們檢查了已安裝的應用程式，找出兩種規則。試試下面的計算機。"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "One branch divides by 100. The other also multiplies by the first number. "
#~ "The agent uses both to recreate the % button."
#~ msgstr "一個分支除以 100；另一個還要乘上第一個數。助手用這兩條規則重新實現 % 按鈕。"

#~ msgctxt "page:index.html"
#~ msgid "See a code-level example with Calculator"
#~ msgstr "展開計算機的程式碼分析範例"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Selected assembly from the installed Calculator DLL. The thoughts and reply "
#~ "illustrate the findings."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}What is RE?{ph1}"
#~ msgstr "{ph0}什麼是RE？{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}How REA helps{ph1}"
#~ msgstr "{ph0}REA 如何幫忙{ph1}"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "REA gives your agent the tools to inspect a program and explain what it "
#~ "does."
#~ msgstr "REA 為程式設計助手提供分析工具，讓它檢查程式並解釋程式的行為。"

#~ msgctxt "page:index.html"
#~ msgid "What is reverse engineering?"
#~ msgstr "什麼是逆向工程？"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Finding out how software works by {ph0}examining the program itself.{ph1}"
#~ msgstr "透過{ph0}檢查程式本身{ph1}，弄清軟體如何工作。"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The goal: understand a feature well enough to {ph0}explain it{ph1}, "
#~ "{ph2}change it{ph3} or {ph4}rebuild it.{ph5}"
#~ msgstr "目標是理解一項功能，從而能{ph0}解釋它{ph1}、{ph2}修改它{ph3}，或{ph4}重新實現它。{ph5}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "With REA · You ask {ph0}your agent{ph1}"
#~ msgstr "使用 REA · 你只需問{ph0}程式設計助手{ph1}"

#~ msgctxt "page:index.html"
#~ msgid "One prompt."
#~ msgstr "一句話即可。"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Ask your agent {ph0}in plain English.{ph1}"
#~ msgstr "{ph0}用日常語言{ph1}告訴助手你的問題。"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}Let's try two examples.{ph1} Change a game's speed, then return to "
#~ "Calculator and rebuild its % button."
#~ msgstr "{ph0}來試兩個例子。{ph1}先調整遊戲速度，再回到計算器，重新實現 % 按鈕。"

#~ msgctxt "page:index.html"
#~ msgid "Goal"
#~ msgstr "目標"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Rebuild the game with {ph0}adjustable speed.{ph1}"
#~ msgstr "重建一個{ph0}速度可調{ph1}的遊戲。"

#~ msgctxt "page:index.html"
#~ msgid "Why reverse engineer it?"
#~ msgstr "為什麼逆向工程？"

#, 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}：起始速度是多少、每次增加多少、何時停止加速。"

#, 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}助手讀取更新函式和速度設定，再把規則用到新的遊戲中。"

#, 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}速度低於 {ph4}13{ph5} 時，每次沒有發生碰撞的更新增加 {ph2}0.001{ph3}。"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Build a small calculator that handles {ph0}both + and × correctly.{ph1}"
#~ msgstr "做一個小計算器，能{ph0}正確處理 + 和 × 兩種情況。{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "The same button uses {ph0}different rules after + and ×.{ph1} We inspect the"
#~ " installed app to find which number the percentage is applied to."
#~ msgstr "同一個按鈕，在{ph0}+ 和 × 後採用不同規則。{ph1}我們檢查已安裝的應用，弄清百分比究竟作用於哪個數。"

#, 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}助手用這兩條規則重新實現 % 按鈕。"

#~ msgctxt "page:index.html"
#~ msgid "Want to go deeper?"
#~ msgstr "想更深入嗎？"

#, 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}"

#~ msgctxt "page:index.html"
#~ msgid "For setup and analysis steps, choose your target:"
#~ msgstr "根據目標選擇配置和分析指南："

#~ msgctxt "page:index.html"
#~ msgid "Join the community"
#~ msgstr "加入社群"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Share investigations and get help from other REA users on Discord. Follow "
#~ "REA on X for project updates."
#~ msgstr "在 Discord 分享調查，與其他 REA 使用者交流。關注 REA 的 X 賬號獲取專案更新。"

#~ msgctxt "page:index.html"
#~ msgid "See how REA works ↓"
#~ msgstr "看看 REA 如何工作 ↓"

#~ msgctxt "page:index.html"
#~ msgid "Follow @reatools on X"
#~ msgstr "在X上關注@reatools"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for {ph1}?{ph2}"
#~ msgstr "比如：{ph0}為什麼計算器算 {ph1} 會得到 220？{ph2}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We saw why {ph0}{ph1} gives 220.{ph2} Now let’s recover the rules for both +"
#~ " and ×, and try them."
#~ msgstr "我們已看到{ph0}為什麼 {ph1} 得到 220。{ph2}現在把 + 和 × 後的規則都還原出來，親自試試。"

# Use the same label as the Get started navigation link. The arrow is
# decorative.
#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Get started {ph0}"
#~ msgstr "開始使用 {ph0}"

#~ msgctxt "page:index.html"
#~ msgid "One question:"
#~ msgstr "一個問題："

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Android, games, Electron and a CTF challenge, with code, figures and checked"
#~ " results."
#~ msgstr "安卓，遊戲，Electron和CTF挑戰，與程式碼，數字和檢查結果。"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Find Aegis's six-digit code calculation in its released APK. Trace the "
#~ "generating methods with REA, then move a demo clock to see why the code "
#~ "changes every 30 seconds."
#~ msgstr "在其釋出的APK中找到Aegis的六位數程式碼計算。 使用REA跟蹤生成方法，然後移動演示時鐘以檢視程式碼每30秒更改一次的原因。"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Trace a page-facing API through Notion's packaged JavaScript. Follow its IPC"
#~ " wrappers to the system clipboard, then see how a small HTML marker keeps "
#~ "rich block data connected to a copy."
#~ msgstr ""
#~ "透過跟蹤面向頁面的API Notion包裝好了 JavaScript. "
#~ "跟隨它的IPC包裝到系統剪貼簿，然後看看一個小的HTML標記如何保持豐富的塊資料連線到複製。"

#~ msgctxt "page:index.html"
#~ msgid ""
#~ "Recover a sound-pan calculation from a 1996 Windows game. REA's "
#~ "instructions, caller references and numeric constants lead to a small C "
#~ "function, checked against the original behavior and all 63 compiled bytes."
#~ msgstr ""
#~ "從1996年的Windows遊戲中恢復左/右聲音位置的計算。  "
#~ "REA的指令，呼叫者引用和數字常量導致一個小的C函式，對照原始行為和所有63個編譯位元組進行檢查。"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Before REA · You investigate it {ph0}yourself{ph1}"
#~ msgstr "使用 REA 之前 · 你要{ph0}親自調查{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Use REA to inspect Windows Calculator. Why does {ph0} give 220?"
#~ msgstr "用 REA 檢查 Windows 計算器。為什麼 {ph0} 會得到 220？"

#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "This command uses a shell with here-document support, such as Bash or Zsh. "
#~ "Your agent can run the same JavaScript in your platform’s shell."
#~ msgstr ""
#~ "這條命令需要 Bash、Zsh 等支援 here-document 的 shell。助手也可以在你的系統 shell 中執行同樣的 "
#~ "JavaScript。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "If you use Homebrew:"
#~ msgstr "如果你使用 Homebrew："

#~ msgctxt "page:get-started/index.html"
#~ msgid "Otherwise:"
#~ msgstr "其他情況："

#~ msgctxt "page:get-started/index.html"
#~ msgid "Close Terminal, open it again, then:"
#~ msgstr "關閉終端，重新開啟，然後執行："

#~ 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 ""
#~ "把兩個路徑換成自己的安裝位置。setup 會檢查路徑，併為選定客戶端儲存有效配置。Linux arm64 上可能需要另行構建 Ghidra "
#~ "原生反編譯器。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy fnm installation command for macOS"
#~ msgstr "複製macOS的fnm安裝命令"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Node.js 24 commands for macOS"
#~ msgstr "複製 Node.js 24命令 macOS"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0} · CSV formatter"
#~ msgstr "{ph0} · CSV 格式化函式"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "For a first installation, download the Node.js 24 LTS macOS installer "
#~ "(.pkg), open it and follow the installer. Then reopen Terminal."
#~ msgstr "首次安裝時，下載 Node.js 24 LTS 的 macOS 安裝套件（.pkg），打開並按提示安裝，然後重新打開終端機。"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Install Claude Desktop on Windows or macOS and sign in. Quit it completely "
#~ "before running REA setup in your terminal. Choose {ph0}, approve the plan, "
#~ "then reopen Claude and start a chat."
#~ msgstr ""
#~ "在 Windows 或 macOS 上安裝 Claude Desktop 並登入。先完全結束它，再在終端機中執行 REA setup，選擇 {ph0} "
#~ "並確認安裝計畫，然後重新打開 Claude 開始對話。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "In the terminal you prepared above, install Codex:"
#~ msgstr "在剛才準備的終端機裡安裝 Codex："

#~ msgctxt "page:get-started/index.html"
#~ msgid "Then start it:"
#~ msgstr "然後啟動它："

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Open its AI chat and choose Agent mode. In Windsurf, open Cascade; in VS "
#~ "Code, set up GitHub Copilot first."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}Cursor setup{ph1} · {ph2}Windsurf setup{ph3} · {ph4}VS Code and Copilot"
#~ " setup{ph5}"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "OpenCode · choose a model provider"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "The installer needs {ph0} and {ph1} (on Debian/Ubuntu: {ph2}). Close the "
#~ "terminal, open it again, then:"
#~ msgstr "安裝程式需要 {ph0} 和 {ph1}（Debian/Ubuntu 上用 {ph2} 安裝）。關閉終端，重新開啟，然後執行："

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Connect REA to your coding agent, or inspect a local app from your terminal."
#~ msgstr "將 REA 連接到你的程式設計助手，或在終端機中檢查本機應用程式。"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Windows (PowerShell){ph1}"
#~ msgstr "{ph0}Windows（PowerShell）{ph1}"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "If PowerShell later says {ph0}\"running scripts is disabled on this "
#~ "system\"{ph1} when you run {ph2}, run this once and try again:"
#~ msgstr ""
#~ "如果之後執行 {ph2} 時，PowerShell 提示{ph0}“running scripts is disabled on this "
#~ "system”{ph1}（系統禁止執行指令碼），執行下面的命令一次，再重試："

#~ msgctxt "page:get-started/index.html"
#~ msgid "Setup options"
#~ msgstr "配置方式"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Connect your coding agent{ph1}"
#~ msgstr "{ph0}連線程式設計助手{ph1}"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "{ph0}Set up native analysis{ph1}"
#~ msgstr "{ph0}配置原生分析{ph1}"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Connect your coding agent"
#~ msgstr "連線程式設計助手"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#~ 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 Bot 的連接器要從它的聊天介面新增。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "New to coding agents?"
#~ msgstr "第一次使用程式設計助手？"

#~ 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 ""
#~ "程式設計助手是一種在你的電腦上工作、而不只待在瀏覽器頁面裡的 AI 助手。它能讀取檔案、執行命令，並在修改前徵求確認。REA 為它提供逆向工程工具。"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "If you don't have one yet, pick one, follow its install page and sign in:"
#~ msgstr "如果還沒有助手，選擇一個，按照其安裝頁面操作並登入："

#, 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 套餐。"

#, 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 賬號登入。"

#, 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}，開源，可以連線你選擇的模型服務商。"

#~ 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 "開啟助手，把下面的 prompt 複製進去。助手會執行 REA setup，並在執行更改前展示計劃。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Restart your client when setup finishes."
#~ msgstr "配置完成後重啟客戶端。"

#~ 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 應用，可以這樣開始："

#, 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}，找出它如何匯出資料。展示涉及的入口點、函式呼叫和依賴，並給出分析結果對應的原始碼位置。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Replace the path with your local target."
#~ msgstr "把路徑換成自己的本地目標。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Use the CLI"
#~ msgstr "使用CLI"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Set up native analysis"
#~ msgstr "配置原生分析"

#~ 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 "原生二進位制需要本地分析工具。在下面選擇並配置一個工具，再提供可執行檔案或庫。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Choose a tool: Ghidra, Hopper or IDA"
#~ msgstr "選擇工具：Ghidra、Hopper 或 IDA"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Use an existing Ghidra 12.1.x installation and a 64-bit JDK 21 or newer on "
#~ "Linux or macOS, on x64 or arm64. Your Ghidra installation needs a native "
#~ "decompiler for your host architecture. Set the paths before running setup:"
#~ msgstr ""
#~ "在 Linux 或 macOS 的 x64、arm64 上，使用已有的 Ghidra 12.1.x 和 64 位 JDK 21 或更新版本。Ghidra"
#~ " 需要對應主機架構的原生反編譯器。執行 setup 前先設定路徑："

#~ msgctxt "page:get-started/index.html"
#~ msgid "Ghidra connection · macOS / Linux"
#~ msgstr "Ghidra 連線 · macOS / Linux"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Ghidra connection · Windows PowerShell"
#~ msgstr "Ghidra 連線 · Windows PowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "On macOS, complete Hopper's first-run choice of demo mode or license "
#~ "activation before an unattended analysis."
#~ msgstr "在 macOS 上，首次使用 Hopper 時先完成演示模式或許可證啟用的選擇，再做無人值守分析。"

#~ 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 註冊，可附加到 GUI，也可使用無介面資料庫。Linux 和 macOS "
#~ "的無介面分析仍未驗證。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Connect an existing IDA MCP registration"
#~ msgstr "連線已有的 IDA MCP 註冊"

#, 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} 物件中包含 {ph4} 條目也可以。執行"
#~ " setup 前讓 REA 指向這個檔案："

#~ msgctxt "page:get-started/index.html"
#~ msgid "IDA connection · Windows PowerShell"
#~ msgstr "IDA 連線 · Windows PowerShell"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "The attached profile uses upstream legacy 1.4.0 tools with the original "
#~ "binary already open in IDA. The headless profile uses the upstream database-"
#~ "supervisor API and a registration with {ph0}; real verification covers an "
#~ "IDA 9.3 Windows x64 supervisor. Doctor checks the registration without "
#~ "starting IDA."
#~ msgstr ""
#~ "附加配置使用上游 legacy 1.4.0 工具，原始二進位制應已在 IDA 中開啟。無介面配置使用上游 database-supervisor "
#~ "API，以及包含 {ph0} 的註冊；實際驗證覆蓋 IDA 9.3 Windows x64 supervisor。doctor 只檢查註冊，不會啟動 "
#~ "IDA。"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Give REA the original executable path, with {ph0} in a CLI query. For an "
#~ "agent, include {ph1} in the REA registration's environment and select IDA "
#~ "when opening the binary."
#~ msgstr ""
#~ "給 REA 原始可執行檔案的路徑，在 CLI 查詢中加入 {ph0}。使用程式設計助手時，把 {ph1} 加入 REA "
#~ "註冊的環境配置，並在開啟二進位制時選擇 IDA。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "For an existing Ghidra setup, inspect a function with:"
#~ msgstr "已配置 Ghidra 時，可以這樣檢查函式："

#~ msgctxt "page:get-started/index.html"
#~ msgid "Function analysis"
#~ msgstr "函式分析"

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid "Replace {ph0} with the function name or address you want to inspect."
#~ msgstr "把 {ph0} 換成要檢查的函式名或地址。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "How native analysis sessions work"
#~ msgstr "原生分析會話如何工作"

#~ 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 查詢會在會話保持開啟時複用已匯入的二進位制檔案。"

#, 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}，看看函式結果如何幫助還原計算規則。"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Check one client"
#~ msgstr "檢查一個客戶端"

# Adapted from Kaoru0822's Traditional Chinese draft in PR #1737.
#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy PowerShell execution policy command"
#~ msgstr "複製 PowerShell 執行原則命令"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy agent setup command"
#~ msgstr "複製程式設計助手設定命令"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Ghidra connection for macOS and Linux"
#~ msgstr "複製 macOS 和 Linux 的 Ghidra 連線命令"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy Ghidra connection for Windows PowerShell"
#~ msgstr "複製 Ghidra 連線 Windows PowerShell的"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy IDA connection for Windows PowerShell"
#~ msgstr "複製 IDA 連線 Windows PowerShell的"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy native function analysis command"
#~ msgstr "複製原生函式分析命令"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy client diagnosis command"
#~ msgstr "複製客戶端診斷命令"

#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell)"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA supplies"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Your agent explains"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Try the calculation"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell){ph0}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}{ph1}REA supplies{ph2} {ph3}The handler’s instructions, decompiled code"
#~ " and calls.{ph4}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}{ph1}Your agent explains{ph2} {ph3}10% of 200 = 20{ph4}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}{ph1}Try the calculation{ph2} {ph3}200 + 20 = 220{ph4}"
#~ msgstr ""

#~ msgctxt "page:index.html"
#~ msgid "Windows (PowerShell) →"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Before REA · You investigate it {ph0}yourself{ph1} {ph2}{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Help & feedback{ph1}"
#~ msgstr "{ph0}幫助和反饋{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Community{ph1}"
#~ msgstr "{ph0}社群{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Already know RE? {ph0}Skip to analysis guides →{ph1}"
#~ msgstr "已經瞭解逆向工程？{ph0}直接看分析指南 →{ph1}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "Want to go deeper? {ph0}Read the Blog →{ph1}"
#~ msgstr "想深入瞭解？{ph0}閱讀部落格 →{ph1}"

#~ msgctxt "page:blog/index.html"
#~ msgid "By N0zoM1z0 · 13 October 2026 · Draft for review"
#~ msgstr "作者 N0zoM1z0 · 2026 年 10 月 13 日 · 待審草稿"

#~ msgctxt "page:index.html"
#~ msgid "Setup guide"
#~ msgstr "安裝指南"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Windows PowerShell"
#~ msgstr "WindowsQ"

#~ msgctxt "page:get-started/index.html"
#~ msgid "macOS · Homebrew"
#~ msgstr "macOS*Homebrew"

#~ msgctxt "runtime"
#~ msgid "Copy"
#~ msgstr "複製"

#~ 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 "重建*迪諾-速度。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}頁*渲染器。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}橋*預緊。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}處理程式*主。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 對於id1和標題Hello的註釋，\"REA\". 然後執行示例的toCsv格式化程式 Node.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 24LTS:"

#, 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}下載匯出。js的{ph3} · {ph4}下載筆記。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 和 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 計算器。 為什麼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}它啟動計算器應用程式{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。丹共。 "
#~ "找到它如何生成六位數的登入程式碼，解釋為什麼它每30秒更改一次，並重建一個我可以更改時間的小演示。{ph3}{ph4}{ph5}"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · API member"
#~ msgstr "tab_browser_view/預載入。js*API成員"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · IPC helper"
#~ msgstr "tab_browser_view/預載入。js*IPC助手"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · handler helper"
#~ msgstr "主/索引。js*handler helper"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · clipboard receiver"
#~ msgstr "主/索引。js*剪貼簿接收器"

#~ msgctxt "page:first-investigation/index.html"
#~ msgid "main.js · lines 8–12"
#~ msgstr "主要。js*第8-12行"

#~ msgctxt "page:guides/browser/index.html"
#~ msgid "export.js · example source excerpt"
#~ msgstr "出口。js*例項原始碼摘錄"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "renderer.js · example source"
#~ msgstr "渲染器。js*示例源"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "preload.js · example source"
#~ msgstr "預緊力。js*示例源"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "main.js · example source"
#~ msgstr "主要。js*示例源"

#~ msgctxt "page:index.html"
#~ msgid "REA · loaded index.js · selected lines"
#~ msgstr "REA*載入索引。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-代理@最新設定。 "
#~ "向我顯示安裝計劃以供批准，然後驗證安裝。{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 要查詢當我單擊匯出筆記時會發生什麼。 "
#~ "顯示註釋的位置。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-代理@最新設定。 "
#~ "向我顯示安裝計劃以供批准，然後驗證安裝。{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-代理@最新設定。 "
#~ "向我顯示安裝計劃以供批准，然後驗證安裝。{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 ""

#, 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 ""
