#
msgid ""
msgstr ""
"Project-Id-Version: REA website\n"
"Language: th\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Initial-Translation: Machine-assisted baseline; see website/locales/README.md for review workflow\n"

#: website/public/blog/index.html:107
msgctxt "page:blog/index.html"
msgid "Skip to content"
msgstr "ข้ามไปที่เนื้อหา"

#. {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 ""
"สิ่งที่คู่มือใหม่และ "
"reconstructingTH08,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 "
"และเจ้าหน้าที่ปัญญาประดิษฐ์"

#: 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 "REA บน GitHub"

#: website/public/blog/index.html:155
#: website/public/blog/reverse-engineering-models/index.html:155
#: website/public/blog/touhou-reconstruction/index.html:155
#: website/public/contributors/index.html:156
#: website/public/examples/dino-lab/index.html:156
#: website/public/faq/index.html:155
#: website/public/first-investigation/index.html:155
#: website/public/get-started/index.html:155
#: website/public/guides/browser/index.html:155
#: website/public/guides/index.html:155
#: website/public/guides/javascript/index.html:155
#: website/public/guides/native/index.html:155 website/public/index.html:157
#: website/public/showcase/aegis/index.html:156
#: website/public/showcase/ctf/index.html:155
#: website/public/showcase/dx-ball/index.html:155
#: website/public/showcase/index.html:155
#: website/public/showcase/notion/index.html:155
#: website/public/showcase/th04/index.html:155
msgctxt "shared"
msgid "Join REA on Discord"
msgstr "เข้าร่วม 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 "ติดตาม REA บน X"

#: 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 ·10 ตุลาคม 2026"

#: 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}ใช้ที่เก็บและคอมโพเนนต์เป็นหน่วยความจำที่ทำงาน{ph1} ให้เหตุผลกับรหัส "
"การสนทนาจะสิ้นสุดลง"

#. {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} ลองกรณีที่มันควรจะปฏิเสธ "
"ถ้ามันพลาดข้อผิดพลาด,ทบทวนผลลัพธ์ก่อนหน้านี้ที่ขึ้นอยู่กับมัน."

#. {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 "ผู้ช่วย AI"

#. {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{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"

#: 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 ""
"ส่วนใหญ่ของงานใหม่ของฉันอยู่ในเกม "
"ผมสร้างพวกเขาเพื่อให้พฤติกรรมของพวกเขาสามารถเข้าใจได้และในที่สุดก็ดำเนินการ "
"นั่นคือประสบการณ์ที่อยู่เบื้องหลังบทความนี้. "
"วิธีการที่จะมีประโยชน์อื่นๆแต่แต่ละเขตข้อมูลความต้องการที่จะสร้างสิ่งที่มันสามารถตรวจ"

#: 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 ผมเริ่มสำรวจตัวแทนขับเคลื่อนอีกครั้งอย่างจริงจัง "
"ผมอยากเห็นว่าตัวแทนจะสามารถเข้าถึงโปรแกรมและเครื่องมือพัฒนาสามัญได้ไกลแค่ไหน"
" การฟื้นฟูทูโฮทำให้ผมมีโครงการมากมายที่จะหาคำตอบได้"

#: 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 ""
"ประวัติศาสตร์ที่นำเข้าสิ้นสุดลงที่สาธารณะด่าน 10 สิงหาคม "
"ความต่อเนื่องของฉันเริ่มต้นในวันที่ 13 สิงหาคม โดย 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 ""
"เล่นได้ Linux ฟื้นฟูพอร์ตมีความมุ่งมั่นที่ 24 "
"สิงหาคมประมาณสิบเอ็ดวันหลังจากที่ต่อเนื่องเริ่ม ฉบับเว็บตาม เดอะพื้นเมือง "
"Linux ปล่อย 64 บิตมาถึงเมื่อวันที่ 30 สิงหาคม"

#: 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}การอ้างอิงการตรวจสอบ(ออราเคิล){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 ""
"ในเดือนกันยายนข้อผิดพลาดที่รายงานโดยพอร์ตสวิทช์ปลายน้ำนำกลับไปที่รายการคอลเลกชั"
" แหล่งที่มาที่สร้างขึ้นใหม่ตรวจสอบอำนาจของผู้เล่นกับ {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}2 กันยายนแก้ไข{ph1} "
"แก้ไขแหล่งที่มาและทำการเปรียบเทียบตรวจสอบไบต์ที่เกิดขึ้นจริงของค่าคงที่อ้างอิง"
" A {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}สาธารณชน{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 ""
"การเพิ่มขึ้นของกริฟเตอร์(ไอรวบรวมและพอร์ต)ในพื้นที่นี้การจากการทำงานของเราสีภาพที่ไ…"

#: 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 ""
"แจ้งให้ทราบล่วงหน้ายังอธิบายโทรทางจิตวิทยาเกี่ยวกับผู้ดูแล "
"นโยบายการมีส่วนร่วมของพวกเขาไม่รวมการร้องขอดึงผลิตเป็นหลักกับเอไอ "
"พวกเขาใช้เวลาว่างในการทำงานที่ยากลำบากและงานนั้นช่วยทำให้ผมดำเนินต่อไปได้. "
"ผมเคารพความพยายามที่อยู่เบื้องหลังมัน "
"ความขัดแย้งที่ฉันต้องการจะหารือเกี่ยวกับวิธีการฟื้นฟูควรดำเนินการและวิธีการมีส่วนร่วม"

#: 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}แจ้งให้ทราบล่วงหน้า{ph1},ตรวจสอบเมื่อ 10 "
"ตุลาคม 2026,และ {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} ยิงกระสุนทำให้ค่าของประสบการณ์ที่ง่ายมากที่จะเห็น "
"พื้นที่เก็บข้อมูลของมันเริ่มเมื่อวันที่ 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 ""
"โดย 7 กันยายนทั้งหมด 697 ระบุฟังก์ชั่นเกมมีแหล่งที่มา พอถึง 8 กันยายน 696 "
"ได้รับการยอมรับว่าเป็นการเปรียบเทียบที่แน่นอน. "
"โปรแกรมทั้งหมดที่เชื่อมโยงในวันที่ 9 กันยายน ร Windows ผม386 "
"ฟื้นฟูถูกทำเครื่องหมายเล่นได้เมื่อวันที่ 10 "
"กันยายนประมาณสิบสองวันหลังจากการเริ่มต้น"

#: 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 ""
"ข้อผิดพลาดคงที่จุดลอยตัวอยู่ในหน่วยความจำที่มากเกินไป "
"มันอธิบายว่าทำไมการตรวจสอบการอ้างอิงยังต้องตรวจสอบข้อมูลที่อยู่เบื้องหลังมัน"
" การแก้ไขด้วยรหัสช่วยให้โครงการในภายหลังหลีกเลี่ยงการสืบทอดจุดบอดของเครื่องเ"

#. {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 ""
"ประโยชน์เดียวกันสามารถใช้ได้กับคนที่เข้าร่วมในภายหลัง. "
"Theyตรวจสอบการตัดสินใจและเรียกใช้การตรวจสอบก่อนที่จะดำเนินการต่อการทำงา "
"พวกเขาไม่ได้มีการสร้างประวัติของโครงการทั้งหมดเพื่อหาเหตุผลที่แหล่งที่มาที่มีลักษณะ"

#: 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 ดอส. "
"เป้าหมายอยู่ในขณะนี้สภาพแวดล้อม 16 บิตกับสี่โปรแกรมความร่วมมือ "
"การทำความเข้าใจพฤติกรรมของฮาร์ดแวร์จำเป็นต้องมีหลักฐานที่แตกต่างจาก Windows "
"กเขา ที่อยู่ {ph2}เรค 98{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 ""
"การฟื้นฟูดอสกำลังทำงานอยู่ "
"ในการทดสอบด้วยตนเองของฉันฉันเล่นเส้นทางปกติที่สมบูรณ์ผ่านตอนจบของพวกเขาและ "
"งานปัจจุบันเป็นพอร์ตพื้นเมือง 64 บิต "
"การสร้างเวอร์ชันดอสทำงานก่อนทำให้พอร์ตการสื่อสารนั้นมีการอ้างอิง"

#: 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 ""
"พิจารณาการเปลี่ยนแปลงจากการเล่นเกมที่จะสิ้นสุด "
"เราต้องรู้ว่ารัฐใดที่ดำเนินการข้ามขอบเขตนั้นและโปรแกรมใดที่รับผิดชอบต่อมัน "
"นั่นคือสิ่งที่เราสามารถตรวจสอบกับผลิตภัณฑ์ดอส. "
"เมื่อหลักฐานและการตรวจสอบที่มีอยู่ตัวแทนสามารถทำงานผ่านคำถามมากที่สุดเท่าที่มันไ"
" 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 "
"บิตตอนนี้เราสามารถตรวจสอบการดำเนินงานใหม่กับพฤติกรรมที่กู้คืนแล้วใน "
"ความรู้จากการบูรณะทำให้ท่าเรือมีอะไรบางอย่างที่จะสร้างขึ้น"

#. {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 ""
"รัฐโครงการณวันที่ 10 ตุลาคม 2026: {ph0}การฟื้นฟูและทดสอบด้วยตนเอง{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}เวิร์กโฟลว์ปัจจุบันของโรงงาน{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 "
"บักแสดงให้เห็นว่าทำไมการตรวจสอบเหล่านั้นสมควรได้รับความสนใจทางวิศวกรรมของตัวเอง"
" "
"เมื่อเปรียบเทียบเดียวกันถูกนำมาใช้ในหลายร้อยฟังก์ชั่นช่องว่างในมันสามารถแพร่กระจ"
" การทดสอบตัวตรวจสอบช่วยเพิ่มข้อเสนอแนะที่มีอยู่ทั้งหมดที่ทำงานในภายหลัง"

#. {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}โรงงานฟื้นฟูโทโฮ{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 ""
"ตอนนี้ฉันสามารถเห็นวิธีที่จะให้โครงการดังกล่าวย้ายผ่านการตรวจสอบซ้ำ "
"การฟื้นฟูการทำงานทำให้พอร์ตซอฟต์แวร์ในทางปฏิบัติมากขึ้น "
"การกู้คืนความหมายที่อ่านได้ทำให้ง่ายขึ้นสำหรับคนอื่นในการสำรวจสมัย "
"ความพยายามใส่ลงไปในการทำความเข้าใจเกมสามารถให้จ่ายออกหลังจากที่รุ่นแรกที่ท"

#. {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 ""
"วันที่อธิบายจุดตรวจโครงการบันทึกการตรวจสอบกับประชาชน GitHub ประวัติ 10 "
"ตุลาคม 2026. เวลาที่ผ่านไปเป็นเวลาปฏิทินระหว่างกระทำ "
"การแสดงตนของแหล่งที่มาการเปรียบเทียบที่แน่นอนสร้างและผลรันไทม์แต่ละชื่อก้าวที่แตก"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/001bf3e9c91cc35b79c7a0e36b3565b86f494362"
#. >
#. {ph3}: </a >
#. {ph4}: <a
#. href="https://github.com/N0zoM1z0/th08/blob/15caba73df6735fc44eac4783bc61b8d098ea830/docs/PROGRESS.md"
#. >
#. {ph5}: </a >
#. {ph6}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/da07b21c8cb63230142b0a66228d6aac66555f3f"
#. >
#. {ph7}: </a >
#. {ph8}: <a
#. href="https://github.com/N0zoM1z0/th08/commit/529eb1a3afa05ae36467731eaccb12e3e50e132f"
#. >
#. {ph9}: </a >
#. {ph10}: <a
#. href="https://github.com/N0zoM1z0/th08/releases/tag/v0.2.0-linux-64bit" >
#. {ph11}: </a >
#: website/public/blog/touhou-reconstruction/index.html: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}13 สิงหาคมต่อเนื่อง{ph3}, {ph4}19 "
"สิงหาคมที่มาบัญชีแยกประเภท{ph5}, {ph6}24 สิงหาคม Linux ท่าเรือ{ph7}, {ph8}26"
" สิงหาคมฉบับเว็บ{ph9} และ {ph10}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}29 สิงหาคมบัญชีแยกประเภทเริ่มต้น{ph3}, {ph4}7 "
"กันยายนที่มาบัญชีแยกประเภท{ph5}, {ph6}8 กันยายนเปรียบเทียบ{ph7}, {ph8}9 "
"กันยายนลิงค์{ph9} และ {ph10}10 กันยายนเล่นได้-สร้างบันทึก{ph11}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <a
#. href="https://github.com/N0zoM1z0/th04/blob/bb9faca54e2eb3c0d6c757c75d59ac29d2cd5e93/docs/RE_HANDOFF.md"
#. >
#. {ph3}: </a >
#: website/public/blog/touhou-reconstruction/index.html: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 ตุลาคมแฮนด์ออฟ{ph3} "
"บันทึกการฟื้นฟูการทำงานดอสการทดสอบเส้นทางปกติที่สมบูรณ์ของผู้ดูแลและเฟส 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}รายงานข้อผิดพลาดการเก็บรวบรวมอัตโนมัติ{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}การสั่งซื้อเฟสของโรงงานและสองเส้นทางการตรวจสอบ{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} โรงงาน {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สะท้อนถึงป้อนเองย้อนกลับวิศวกรรม,Touhou ชิ้นกับ AI "
"เจ้าหน้าที่และความรู้รประกอบที่ข้ามTH08,TH095และPC-98TH04."

#: 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}วายู 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} น้าเว็บ"

#: 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 ""
"การแก้ไขจุดสิ้นสุดของเพจและจุดสิ้นสุดการดีบักภายในเครื่อง,แล้วคัดลอกพร้อมท์นี้."

#. {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}ลิขสิทธิ์และใบอนุญาตบีเอสดี{ph3}. REA 4.1.0 ตรวจสอบรุ่นที่ทำงานใน "
"Chrome 150."

#: website/public/examples/dino-lab/index.html:6
msgctxt "page:examples/dino-lab/index.html"
msgid "Chrome Dinosaur Game: Rebuild Its Speed Rule — REA"
msgstr "Chrome เกมไดโนเสาร์:สร้างกฎความเร็ว — REA"

#: website/public/examples/dino-lab/index.html:7
msgctxt "page:examples/dino-lab/index.html"
msgid ""
"Read the dinosaur game’s speed rule with REA, rebuild it, then change the "
"speed and play."
msgstr ""
"อ่านกฎความเร็วของเกมไดโนเสาร์ด้วย REA สร้างมันแล้วเปลี่ยนความเร็วและเล่น"

#: website/public/examples/dino-lab/index.html: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} /คำถามที่พบบ่อย"

#: 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 ""
"คำสั่งตั้งค่าจะลงทะเบียนการเชื่อมต่อ MCP ของ REA และติดตั้ง skill "
"สำหรับการวิเคราะห์ เมื่อเสร็จแล้วให้เริ่มเอเจนต์ใหม่ "
"จากนั้นระบุพาธไฟล์และคำถาม "
"ดูข้อกำหนดและขั้นตอนวิเคราะห์ครั้งแรกได้ใน{ph0}คู่มือการตั้งค่า{ph1}"

#: website/public/faq/index.html:251
msgctxt "page:faq/index.html"
msgid "Which coding agents can use REA?"
msgstr "ซึ่งตัวแทนการเขียนโค้ดสามารถใช้ REA?"

# Reviewed for readable instructions and accurate software terminology.
#: 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 ในเครื่อง การตั้งค่ารองรับ 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 การแก้ไขข้อผิดพลาด รือไม่ CLI ด้วย npm:"

#: website/public/faq/index.html:271
msgctxt "page:faq/index.html"
msgid "Terminal · installed CLI"
msgstr "เทอร์มินัล*ติดตั้งแล้ว CLI"

# Reviewed for readable instructions and accurate software terminology.
#. {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 "
"ใช้เวอร์ชันแพ็กเกจที่ระบุไว้ "
"จึงต้องเรียกคำสั่งตั้งค่าอีกครั้งเพื่อใช้เวอร์ชันใหม่ หากต้องการใช้ 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 พอแล้ว?"

# Reviewed for readable instructions and accurate software terminology.
#. {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 ""
"skill ให้คำแนะนำการวิเคราะห์แก่ผู้ช่วย เรียก{ph0}การตั้งค่า "
"REA{ph1}เพื่อเชื่อมต่อเซิร์ฟเวอร์ MCP และติดตั้ง skill ที่ตรงกัน "
"จากนั้นเริ่มผู้ช่วยใหม่เพื่อใช้งานเครื่องมือ"

#: 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 "เริ่มต้นด้วยชนิดของซอฟต์แวร์ที่คุณมี:"

# Reviewed for readable instructions and accurate software terminology.
#. {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}: ฟังก์ชัน assembly, pseudocode "
"และการอ้างอิง"

#. {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}:โมดูลการนำเข้าไอพีซีและสถานที่ที่มา"

#. {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}:สคริปต์การร้องขอและการสังเกตรันไทม์"

# Reviewed for readable instructions and accurate software terminology.
#. {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 ยังวิเคราะห์ managed assembly เช่น .NET, 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?"

# Reviewed for readable instructions and accurate software terminology.
#: 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 แบบสแตติกทำงานกับไฟล์ที่ให้มา "
"และไม่ต้องใช้เอนจินวิเคราะห์เนทีฟ"

# Reviewed for readable instructions and accurate software terminology.
#. {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 ที่ติดตั้งอยู่แล้ว หรือให้คำสั่งตั้งค่าตรวจหา "
"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 โดยไม่มีตัวแทนการเขียนโค้ด?"

# Reviewed for readable instructions and accurate software terminology.
#: 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 "เทอร์มินัล*การวิเคราะห์การใช้งานแบบคงที่"

# Reviewed for readable instructions and accurate software terminology.
#. {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 ""
"การวิเคราะห์โปรแกรมเนทีฟจะส่งคืน assembly และ pseudocode "
"พร้อมการเรียกฟังก์ชัน การอ้างอิง และค่าคงที่ที่เกี่ยวข้อง การวิเคราะห์ "
"JavaScript จะส่งคืนโมดูล ความสัมพันธ์ระหว่างโมดูล และตำแหน่งในซอร์สโค้ด"

# Reviewed for readable instructions and accurate software terminology.
#. {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}ตัวตรวจ flag ของ "
"CTF{ph3}"

#: website/public/faq/index.html:410
msgctxt "page:faq/index.html"
msgid "What should I ask my agent?"
msgstr "ควรถามอะไรกับผู้ช่วย?"

# Reviewed for readable instructions and accurate software terminology.
#: 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}ตัวแทนการเข้ารหัสของคุณ"

# Reviewed for readable instructions and accurate software terminology.
#. {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 และเบราว์เซอร์"

#: 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 เครื่องมือ?"

# Reviewed for readable instructions and accurate software terminology.
#. {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 ""
"หลังตั้งค่า ให้เริ่มผู้ช่วยใหม่หรือเชื่อมต่ออีกครั้ง ตรวจสอบการลงทะเบียน REA"
" ด้วย {ph0} ตัวอย่างสำหรับ Codex:"

#: website/public/faq/index.html:460
msgctxt "page:faq/index.html"
msgid "Terminal · check one client"
msgstr "เทอร์มินัล*ตรวจสอบลูกค้าหนึ่ง"

# Reviewed for readable instructions and accurate software terminology.
#. {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} "
"หากรายงานว่าการลงทะเบียนหายไปหรือเก่า ให้ตั้งค่าไคลเอนต์นั้นอีกครั้ง:"

#: website/public/faq/index.html:480
msgctxt "page:faq/index.html"
msgid "Terminal · repair one client's setup"
msgstr "เทอร์มินัล*ซ่อมแซมการตั้งค่าของไคลเอนต์หนึ่ง"

# Reviewed for readable instructions and accurate software terminology.
#. {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 ก่อน?"

# Reviewed for readable instructions and accurate software terminology.
#. {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 "ควรทำอย่างไรเมื่อพบข้อผิดพลาด?"

# Reviewed for readable instructions and accurate software terminology.
#. {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} เริ่มผู้ช่วยใหม่ และลองงานเดิมอีกครั้ง "
"เวอร์ชันล่าสุดอาจแก้ปัญหานี้แล้ว"

# Reviewed for readable instructions and accurate software terminology.
#. {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 อัปโหลดแอปของฉัน?"

# Reviewed for readable instructions and accurate software terminology.
#: 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 "ฉันจะแบ่งปันตัวอย่างหรือมีส่วนร่วมได้อย่างไร"

# Reviewed for readable instructions and accurate software terminology.
#. {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}pull request{ph3} โค้ดสั้น ๆ "
"และรูปช่วยให้คนอื่นตามการวิเคราะห์ได้ง่าย"

# Reviewed for readable instructions and accurate software terminology.
#. {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 ""
"ยินดีรับรายงานบั๊ก คำขอฟีเจอร์ และการปรับปรุงเอกสารหรือโค้ดเช่นกัน "
"คุณสามารถพูดคุยเรื่องตัวอย่างใน{ph0}ชุมชน{ph1}ได้"

#: website/public/faq/index.html:6
msgctxt "page:faq/index.html"
msgid "REA FAQ: Setup, Updates and Troubleshooting"
msgstr "REAคำถามที่พบบ่อย:การติดตั้งการปรับปรุงและการแก้ไขปัญหา"

# Reviewed for readable instructions and accurate software terminology.
#: 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 "
"นาดเล็กทำตามปุ่มบันทึกการส่งออกและตรวจสอบรายละเอียดหนึ่งด้วยตัวคุณเอง"

#: 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}บันทึกการส่งออก{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}ดาวน์โหลดตัวอย่างไปรษณีย์{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 "
"คัดลอกข้อความและเอชทีเอ็ม{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 ""
"ลองดู 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} /เริ่มต้นใช้งาน"

#: website/public/get-started/index.html:200
msgctxt "page:get-started/index.html"
msgid "Set up REA."
msgstr "ตั้งค่า REA."

#: 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 "คัดลอก"

#. {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}"

#. {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}"

#. {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}."

#. {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}ผู้ช่วย AI เขียนโค้ดของคุณ"

#: website/public/get-started/index.html:795
msgctxt "page:get-started/index.html"
msgid "Or run setup yourself"
msgstr "หรือเรียกใช้การตั้งค่าด้วยตัวคุณเอง"

#: website/public/get-started/index.html:231
msgctxt "page:get-started/index.html"
msgid "How do I open a terminal?"
msgstr "ฉันจะเปิดเทอร์มินัลได้อย่างไร?"

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <em>
#. {ph3}: </em>
#: website/public/get-started/index.html: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} เปิดเมนู Start พิมพ์ {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"

#: 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 "
"การเชื่อมต่อและทักษะการตรวจสอบการจับคู่การรักษาสำรองของการกำหนดค่าที่มีอยู่ "
"มันถามก่อนที่จะใช้การเปลี่ยนแปลง"

#: 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} ใน File Explorer ให้คลิกขวาที่โฟลเดอร์แล้วเลือก {ph2}Copy"
" as path{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}Copy \"…\" as Pathname{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 "ถ้าคุณต้องการถาวร {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 "เชื่อมต่อ Ghidra บน Windows"

#: website/public/get-started/index.html:1123
msgctxt "page:get-started/index.html"
msgid ""
"Windows x64 has experimental, read-only support for native x86 and x64 PE "
"applications and DLLs on fixed local NTFS drives. Use an existing Ghidra "
"12.1.x installation and a 64-bit JDK 21 or newer:"
msgstr ""
"Windows x64 รองรับการวิเคราะห์แบบทดลองและอ่านอย่างเดียวสำหรับแอป PE และ DLL "
"เนทีฟ x86 และ x64 บนไดรฟ์ NTFS ภายในเครื่องแบบคงที่ ใช้ Ghidra 12.1.x "
"ที่ติดตั้งไว้แล้วและ JDK 21 ขึ้นไปแบบ 64 บิต:"

#: 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 "แทนที่เส้นทางสองเส้นทางด้วยการติดตั้งจากนั้นตรวจสอบแผนการติดตั้ง"

#: 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 ""
"เชื่อมต่อHopperบmacOSหรือLinux. "
"รันคำสั่งการติดตั้งข้างต้นจะตรวจพบการติดตั้งที่มีอยู่หรือเสนอแผนการติดตั้งเพื่อขออนุมัติ"

#: 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 ""
"รีสตาร์ทหรือเชื่อมต่อไคลเอ็นต์หลังจากการตั้งค่า ตรวจสอบ REA การเชื่อมต่อกับ "
"{ph0};สำหรับ 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 "
"คำถาม{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 ปัญหา{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 และตั้งค่าผู้ช่วย AI เขียนโค้ด"

#: 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 กับผู้ช่วย AI เขียนโค้ด หรือสำรวจแอป JavaScript หรือ Electron "
"บนเครื่องจากเทอร์มินัล พร้อมขั้นตอนตั้งค่า คำถามแรก "
"และคู่มือเครื่องมือวิเคราะห์เนทีฟ"

#: website/public/get-started/index.html:269
msgctxt "page:get-started/index.html"
msgid "Copy Node.js version check"
msgstr "คัดลอก Node.js ตรวจสอบรุ่น"

#: website/public/get-started/index.html:292
msgctxt "page:get-started/index.html"
msgid "Copy Node.js installation command for Windows"
msgstr "คัดลอก Node.js คำสั่งการติดตั้งสำหรับ Windows"

#: 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"

#: 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}ตัวอย่างเบราว์เซอร์หมายเหตุ{ph1} มี {ph2}บันทึกการส่งออก{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}คลิกส่งออกหมายเหตุ{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}รงสร้างการตอบสนองและโครงสร้างเจสันจากเพจที่เลือก{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}เชื่อมต่อคำขอสังเกตไปที่"
" {ph5} ใน {ph6}.{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 ""
"เปิดตัวอย่างบันทึกย่อที่โฮสต์กับโปรไฟล์เบราว์เซอร์ที่แยกต่างหากและพอร์ตการดีบักโลคั"
" บน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. "
"คุณสามารถแทนที่ลิงค์เพจด้วยเพจอื่นที่คุณต้องการตรวจสอบได้"

#: 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 เพื่อตรวจสอบหน้านี้ในขณะที่ฉันคลิกบันทึกการส่งออก "
"สิ่งที่ร้องขอไม่ได้ทำให้และวิธีการที่เป็น 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 ""
"รือไม่ ให้ตัวแทนของคุณดีบักปลายทาง, {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 "ค้นหารหัสเป้าหมายของหน้าเว็บ:"

#: 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 ""
"เลือกเป้าหมายด้วยลิงค์ตัวอย่างหมายเหตุ แทนที่ {ph0} "
"ด้านล่างมีรหัสของตนแล้วเรียกใช้:"

#: 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}บันทึกการส่งออก{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 ""
"ผลลัพธ์ที่จับมีเพจที่เลือกกิจกรรมของเครือข่ายระหว่างหน้าต่างนั้นและรูปร่างของการตอ"
" คำขอก่อนหน้านี้อยู่นอกการจับภาพนี้"

#: 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 "บันทึกด้วย REA 4.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 ""
"น้าโดยใช้การตอบสนอง ร 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 ปฏิบัติการเกม "
"ตรวจสอบคำแนะนำ,ทำตามโทร,อ่านค่าคงที่ตัวเลขและตรวจสอบการกู้คืนซี."

#: 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 ""
"แอพพลิเคบันทึกย่อขนาดเล็กกระจายคุณลักษณะหนึ่งในการแสดงผล,โหลดล่วงหน้าและกระบ"
" ใช้ REA การเขียนข้อความโฆษณา,การเขียนในนามคนอื่น,บทความ"

#: 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 ""
"การตลาดทางอินเทอร์เน็ต,การขาย,การตลาด,การโฆษณา Electron การเงินและการลงทุน "
"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 "ที่ไม่\"บันทึกการส่งออก\"ไป?"

#. {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}บันทึกการส่งออก{ph1} "
"การเขียนข้อความโฆษณา,บล็อก,การเขียนในนามคนอื่น,บทความ,การเขียนเนื้อหา 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}แสดงผล pre พรีโหลด{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}การเรียกใช้ช่องสัญญาณไอพีซี:ข้อความที่มีชื่อไปยังกระบวนการหลัก{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 การเรียกตัวจัดการและระบุเอพีไอที่เปิดเผย "
"พาธจะอนุมานจากรหัสจับรันไทม์สามารถตรวจสอบสิ่งที่ดำเนินการ"

#: 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 "การแปลภาษา,การพิสูจน์อักษร,การตรวจแก้"

#: 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 ในตัวอย่างที่สามารถดาวน์โหลดได้ด้านล่าง "
"การวิจัยทางการเงิน,การเงิน,ตลาดการเงิน,การวิเคราะห์ทางการเงิน"

#: 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}ดาวน์โหลดตัวอย่างไปรษณีย์{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 ""
"แทนที่เส้นทางด้วยโฟลเดอร์ที่คุณเปิดซิป "
"คุณควรหาช่องทางไอพีซีหนึ่งช่องและตัวจัดการการจับคู่หนึ่งใน {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 ""
"สำหรับแอปของคุณเองให้ใช้คำสั่งเดียวกันกับไดเรกทอรีหรือ ASAR เส้นทาง "
"ตัวแทนสามารถทำตามสตริงที่แท้จริงชื่อเอพีไอหรือช่องทางไอพีซีด้วย "
"REAคุณลักษณะของเครื่องมือติดตาม"

#: 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 ""
"ติดตามบันทึกย่อ CSV "
"ออกแบบเว็บไซต์,ออกแบบกราฟิก,ออกแบบโลโก้,การสร้างตราสินค้า REA. "
"รวมไฟล์ตัวอย่างที่สามารถดาวน์โหลดได้และผลการวิเคราะห์ที่ได้รับการยืนยัน"

#: 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 "ตรวจสอบคำแนะนำเดิมระบุการป้อนข้อมูลและค่าคงที่แล้วตรวจสอบการกู้คืนซี"

#: 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} "
"ความพยายามของเครื่องมือวิเคราะห์เพื่อเปิดคำแนะนำกลับเป็นโค้ดเหมือนซี "
"มันสามารถพลาดชิ้นส่วนเช่นเดียวกับในตัวอย่างนี้"

#. {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):ฟรีแต่ต้องการที่มีอยู่ "
"Ghidra 12.1.64 บิตเจดีเค 21 หรือใหม่กว่า"

#. {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):สำหรับที่มีอยู่ IDA การติดตั้งด้วย MCP ลงทะเบียน"

#. {ph0}: <a href="../../get-started/#native">
#. {ph1}: </a>
#: website/public/guides/native/index.html:330
#, python-brace-format
msgctxt "page:guides/native/index.html"
msgid "See {ph0}Set up native analysis{ph1} for the steps."
msgstr ""
"เห็นมั้ย {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 ""
"รือไม่ ให้ตัวแทนของคุณเส้นทางไปยังท้องถิ่นของคุณ DX-Ball 1.07 ปฏิบัติการ REA"
" ไม่รวม DX-Ball "
"เพื่อใช้สำเนาของคุณเองหรือถามชนิดเดียวกันของคำถามเกี่ยวกับขนาดเล็กอื่น "
"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}. บน Windows 10 กดค้างไว้ในขณะที่การคลิกขวา"

#. {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} ในการค้นหาให้คลิกขวาที่แฟ้มค้างไว้และเลือก "
"{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การค้นพบที่จะเขียนซีตรวจสอบแยกต่างหากเมื่อเทียบกับ 3,205 "
"ปัจจัยการผลิตกับเดิม 86 ฟังก์ชั่นแ"

#. {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}เครื่องชั่งสำหรับธุรกิจค้าปลีกอาหารเครื่องชั่งคิดราคาเครื่องชั่งติดป้ายราคา{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:ตรวจสอบคำแนะนำตามโทรอ่านค่าคงที่และตรวจสอบการสร้างขึ้นใหม่ซี"

#: 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 "วางพรอมป์ต์นี้ในผู้ช่วยเขียนโค้ด AI ของคุณ:"

#. {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}ต้นฉบับ 64·เลือกคำแนะนำ{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}0*5 บาท? 0*5 องศาเซลเซียส?{ph1} สองกระโดดไปยังสถานที่เดียวกัน "
"ผู้ประกอบการคนไหน”"

#: website/public/index.html:442
msgctxt "page:index.html"
msgid "Look up the command IDs, then label the branch."
msgstr "ค้นหารหัสคำสั่งแล้วติดป้ายชื่อสาขา"

#: 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%หมายถึง 10%ของ 200{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}ตัวอย่างพรอมต์*เครื่องคิดเลข"

#: 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}วายู 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 ตรวจสอบรุ่นเบราว์เซอร์ผ่านการเชื่อมต่อดีบักท้องถิ่นและส่งกลับโหลด {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 ""
"เพื่อตรวจสอบเป้าหมายด้วยตัวคุณเองตาม "
"{ph0}ขั้นตอนการเชื่อมต่อเบราว์เซอร์{ph1} ใช้ {ph2}หน้าไดโนเสาร์{ph3}. "
"ณแล้วคัดลอกพร้อมท์ข้างต้น."

#. {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 ผู้เขียน·ใบอนุญาตบีเอส{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 "10%ของ 200=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}ตรวจสอบสาขาที่มีแหล่งที่มาของไมโครซอฟท์,แล้วลอง+และ×ข้างต้น.{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 เท่า 64 "
"สรุปสามารถอ่านได้ใช้ชื่อจากแหล่งสาธารณะของไมโครซอฟท์เพื่ออธิบายสาขาที่กู้คืน"

#. {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}กรณีทดสอบของไมโครซอฟท์{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 ""
"ดาวน์โหลดตัวอย่างบันทึกของเรา,ติดตามของ 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 ยวข้อง"

#: 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}สร้างรหัสล็อกอิน?"

#: 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*แอนดรอยด์*การเปิดตัวอย่างเป็นทางการ APK ·6.9 ล้านบาท"

#: website/public/showcase/aegis/index.html:213
msgctxt "page:showcase/aegis/index.html"
msgid "View Aegis on GitHub"
msgstr "ดู Aegis บน GitHub"

#: website/public/showcase/aegis/index.html:219
msgctxt "page:showcase/aegis/index.html"
msgid "From an APK to a code you can reproduce"
msgstr "จาก APK รหัสที่คุณสามารถทำซ้ำ"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node" >
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html: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 ชั้นเรียน methods "
"การสร้างวิธี{ph3}{ph4}REA "
"ค้นหาแพ็กเกจและติดตามรหัสที่ใช้โดยการแสดงผลและการดำเนินการคัดลอก{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html: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}เวลา+บัญชีคีย์ six หกหลัก{ph3}{ph4}REA "
"ส่งกลับเมธอดและค่าดีฟอลต์ เจ้าหน้าที่อธิบายว่าพวกเขาเข้ากันได้ยังไง{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/aegis/index.html: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 concrete meaning, software terminology and readable sentences.
#. {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 ที่ดาวน์โหลดมา ให้ตั้งค่าการวิเคราะห์ Android ของ"
" REA ก่อน {ph0}ดาวน์โหลด APK และการตั้งค่าการวิเคราะห์ ↓{ph1}"

#: website/public/showcase/aegis/index.html:302
msgctxt "page:showcase/aegis/index.html"
msgid "Try the code generator"
msgstr "ลองสร้างรหัส"

# Reviewed for concrete meaning, software terminology and readable sentences.
#. {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 "คีย์บัญชี+บล็อก six หกหลัก"

#: 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}6238 ข้อมูลการทดสอบ{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 ถึงสามชั้นเรียน"

#. {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 "เชื่อมต่อเครื่องกำเนิดไฟฟ้าเข้ากับจอแสดงผลของแอป"

#. {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 "อ่านการคำนวณ"

#. {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 "
"วินาทีและหกหลัก;วิธีการประทับเวลาจะเปลี่ยนวินาทีเป็นจำนวนบล็อ"

#. {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"

#. {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} เครื่องกำเนิดไฟฟ้ารวมคีย์บัญชีกับบล็อก "
"บัญชีที่มีคีย์ที่แตกต่างกันสามารถแสดงรหัสที่แตกต่างกันในเวลาเดียวกัน"

#. {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"

#. {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 รหัสคือจีพีแอล-3.0{ph1}"

#: website/public/showcase/aegis/index.html:596
msgctxt "page:showcase/aegis/index.html"
msgid "Inside the generator"
msgstr "Insideในเครื่องกำเนิดไฟฟ้า"

#. {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}."

#: 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 "ตรวจสอบการฟื้นฟู"

#. {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-กลับวิธีการจาวาในโปรแกรมทดสอบขนาดเล็ก "
"ผลผลิตของพวกเขาตรงกับการฟื้นฟูอิสระ {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 วินาที"

#. {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 ""
"เครื่องกำเนิดไฟฟ้ายังตรงกับหกตีพิมพ์ SHA-1 กรณีอ้างอิงใน {ph0}6238{ph1}. "
"ตรวจสอบการใช้เบราว์เซอร์กับพวกเขา:"

#: 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 ""
"การตรวจสอบการทำงานแยกวิธีการจาวาและการสาธิตใหม่ Android APK "
"ได้รับการตรวจสอบแบบคงที่"

#: website/public/showcase/aegis/index.html:711
msgctxt "page:showcase/aegis/index.html"
msgid "Inspect the APK yourself"
msgstr "ตรวจสอบ APK ตัวคุณเอง"

#. {ph0}: <a href="../../get-started/">
#. {ph1}: </a>
#: website/public/showcase/aegis/index.html:712
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"{ph0}Set up REA{ph1} on macOS or Linux, then download these two files into "
"the same folder. On Windows, use a Linux environment such as WSL."
msgstr ""
"{ph0}ตั้งค่า REA{ph1} บน macOS หรือ Linux "
"แล้วดาวน์โหลดทั้งสองไฟล์ลงในโฟลเดอร์เดียวกัน บน Windows ใช้ 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 "17 หรือสูงกว่า เลือกด้วย {ph0} หรือ {ph1}. คดีนี้ใช้เจดีเค 21"

#: website/public/showcase/aegis/index.html:733
msgctxt "page:showcase/aegis/index.html"
msgid "Point REA at the provider file and inspect the APK:"
msgstr "จุด REA ที่ไฟล์ผู้ให้บริการและตรวจสอบ APK:"

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

#. {ph0}: <code>REA_JADX_MCP_JAR</code>
#: website/public/showcase/aegis/index.html:750
#, python-brace-format
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Your agent can continue through REA's CLI using the prompt above. For MCP, "
"add {ph0} to the REA server's environment and reconnect it."
msgstr ""
"ตัวแทนของคุณสามารถดำเนินการต่อผ่าน REAของ CLI ใช้พร้อมท์ข้างต้น สำหรับ "
"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}ทางการ Aegis 3.4.3 ปล่อย{ph1} · {ph2}แหล่งที่มาที่ตรงกันกระทำ{ph3} · "
"{ph4}จีพีแอล-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}กรณีอ้างอิง 6238{ph1} · {ph2}ข้อมูลการทดสอบการสาธิต{ph3}"

#: website/public/showcase/aegis/index.html:790
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspected with REA 6.1.0 on 9 October 2026. Decompiled excerpts are credited"
" to Aegis; the diagram, readable summary and browser reconstruction are new "
"teaching material."
msgstr ""
"ตรวจสอบด้วย REA 6.1.0 เมื่อวันที่ 9 ตุลาคม 2026 "
"ข้อความที่ตัดตอนมาแบบแยกส่วนจะให้เครดิตกับ "
"Aegis;แผนภาพสรุปที่อ่านได้และการฟื้นฟูเบราว์เซอร์เป็นวัสดุการเรียนการสอนใหม่"

#: website/public/showcase/aegis/index.html:6
msgctxt "page:showcase/aegis/index.html"
msgid "Aegis APK Reverse Engineering: Login Codes — REA"
msgstr "Aegis APK วิศวกรรมย้อนกลับ:รหัสเข้าสู่ระบบ — REA"

#: website/public/showcase/aegis/index.html:7
msgctxt "page:showcase/aegis/index.html"
msgid ""
"Inspect the Aegis Android APK with REA, recover its six-digit login-code "
"calculation and try a reconstruction with an adjustable clock."
msgstr ""
"ตรวจสอบที่AegisAndroidAPKกับREA,ฟื้นคืนของมันหก-ตัวเลขล็อกอิน-รหัสการคำนวณและลองชิ้นกับ"
" comment."

#: 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} /ซีทีเอฟ"

#: website/public/showcase/ctf/index.html:202
msgctxt "page:showcase/ctf/index.html"
msgid "Case study · DownUnderCTF 2023"
msgstr "กรณีศึกษา·ดาวน์ดันเดอร์ซีเอฟ 2023"

#. {ph0}: <br />
#: website/public/showcase/ctf/index.html:203
#, python-brace-format
msgctxt "page:showcase/ctf/index.html"
msgid "Find the flag in{ph0}a CTF binary."
msgstr "หาธงใน{ph0}ไบนารีซีทีเอฟ"

#. {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 "
"ในการตรวจสอบตัวตรวจสอบธงขนาดเล็ก,เปิดกฎของมันเป็นสมการและหาอินพุตที่ทำให้ก "
"{ph0}."

#: website/public/showcase/ctf/index.html:209
msgctxt "page:showcase/ctf/index.html"
msgid "masked squares flag checker · Easy · Linux x86-64"
msgstr "สี่เหลี่ยมสวมหน้ากากตรวจสอบธง*ง่าย · Linux 86-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}สคริปต์หลามแก้สมการ"
" 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 ""
"ความท้าทายคือโจเซฟเผยแพร่ในพื้นที่เก็บข้อมูลอย่างเป็นทางการของดาวันเดอร์ซีฟ"

#: 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 ""
"เอกสารประกอบคำบรรยายเป็น 15 กิโลไบต์ปฏิบัติการ มันขอให้ธงแล้วพิมพ์ {ph0} "
"หรือ {ph1}. เริ่มต้นด้วยการร้องขออย่างง่ายๆกับตัวแทนของคุณ"

#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
#. {ph1}: <i>
#. {ph2}: </i>
#. {ph3}: <i>
#. {ph4}: </i>
#. {ph5}: <i>
#. {ph6}: </i>
#. {ph7}: </span >
#: website/public/showcase/ctf/index.html: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 "
"วิจัย,การเขียนทางเทคนิค,การเขียนรายงาน,การเขียนเชิงวิชาการ "
"อธิบายวิธีการตรวจสอบการทำงานแล้วตรวจสอบคำตอบด้วยโปรแกรมต้นฉบับ{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 ""
"เลือกขั้นตอนในการเชื่อมต่อผู้ช่วยข้อสรุปและฟังก์ชั่นการเรียกของกฎเดียวกันในซี"

#. {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 "อ่านค·สรุปหนึ่งตรวจสอบ"

#. {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 ""
"คำแนะนำมาจากผู้ช่วยข้อสรุปและฟังก์ชั่นการเรียก "
"คเป็นบทสรุปอธิบายที่มีชื่ออธิบายและแบนลูป 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 "
"การเลือกที่ทับซ้อนกันให้สมการที่สคริปต์หลามขนาดเล็กสามารถแก้ร่วมกัน"

#: website/public/showcase/ctf/index.html:592
msgctxt "page:showcase/ctf/index.html"
msgid "Python · solver excerpt"
msgstr "งูหลาม*ตัดตอนแก้"

#. {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 ""
"3 เป็นตัวแก้ที่พบว่าค่าที่น่าพอใจสมการเหล่านี้ "
"ข้อความที่ตัดตอนมานี้จะใช้การตรวจสอบสกัดและถือว่า {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 ""
"เพิ่งวิเคราะห์และสองระบวนการจับภาพใน 8 ตุลาคม 2026 ใช้REA4.1.0 "
"กับGhidra12.1.4 บLinuxx64. 86-64 เอลฟ์ 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 ""
"อ้างอิงสตริงฟังก์ชั่นและค่าคงที่ได้รับการตรวจสอบก่อนที่จะอ่านแหล่งที่มาของผู้จัดงานหรือ"
" แก้หลามและแผนภาพที่ถูกสร้างขึ้นจากเหล่านั้น 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 ""
"สคริปต์พิมพ์ธงผู้สมัครวางไว้ที่พรอมต์ของโปรแกรม การแก้ความต้องการงูหลามและ "
"{ph0}. การเรียกใช้ความต้องการที่ปฏิบัติการเดิม Linux จำนวน 86-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 "การควบคุมการสั่นสะเทือนและการสั่นสะเทือน — 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 ธง "
"หาฟังก์ชั่นการตรวจสอบสารสกัดจากหน้ากากและเปรียบเทียบธงกู้คืนกับโปรแกรมเดิม"

#: 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 "กรณีศึกษา"

#: website/public/showcase/ctf/index.html:280
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF example prompt"
msgstr "พร้อมท์ตัวอย่างการคัดลอก"

#: website/public/showcase/ctf/index.html:391
msgctxt "page:showcase/ctf/index.html"
msgid "CTF mask equation; scroll horizontally on smaller screens"
msgstr "สมการหน้ากากซีทีเอฟ;เลื่อนในแนวนอนบนหน้าจอขนาดเล็ก"

#: 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 "ทำตามการตรวจสอบซีทีเอฟ"

#: website/public/showcase/ctf/index.html:499
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF assembly"
msgstr "คัดลอก"

#: website/public/showcase/ctf/index.html:523
msgctxt "page:showcase/ctf/index.html"
msgid "Copy readable CTF check"
msgstr "คัดลอกตรวจสอบซีทีเอฟที่อ่านได้"

#: website/public/showcase/ctf/index.html:593
msgctxt "page:showcase/ctf/index.html"
msgid "Copy CTF solver excerpt"
msgstr "คัดลอก"

#: 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 "คัดลอกคำสั่งแก้"

#: 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"

#: 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"

#. {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 "การฟื้นฟู DX-Ball{ph0}จากปฏิบัติการของ"

# Reviewed for concrete meaning, software terminology and readable sentences.
#: 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 ""
"เป้าหมายคือสร้างเกม Windows ปี 1996 ขึ้นใหม่ด้วยโค้ด C ที่ดูแลต่อได้ REA "
"ช่วยให้เอเจนต์วิเคราะห์ฟังก์ชันในโปรแกรมต้นฉบับทีละฟังก์ชัน"

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

#. {ph0}: <a href="../../assets/figures/dx-ball-sound-pan-investigation.svg" >
#. {ph1}: </a >
#: website/public/showcase/dx-ball/index.html:225
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"One function, from executable to checked C. REA supplies the instructions, "
"callers and data reads; the reconstruction project implements and tests the "
"result. {ph0}Open figure{ph1}"
msgstr ""
"หนึ่งฟังก์ชั่นจากปฏิบัติการเพื่อตรวจสอบซี REA "
"งานธุรการงานทรัพยากรบุคคล>งานธุรการงานการจัดการทั่วไปงานธุรการงานทรัพยากร "
"{ph0}เปิดรูป{ph1}"

#: website/public/showcase/dx-ball/index.html:236
msgctxt "page:showcase/dx-ball/index.html"
msgid "In this case study"
msgstr "กรณีศึกษา"

#. {ph0}: <a href="#progress">
#. {ph1}: </a>
#: website/public/showcase/dx-ball/index.html: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}"

#: 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 "เปรียบเทียบกับรหัสเดิม"

#: website/public/showcase/dx-ball/index.html:257
msgctxt "page:showcase/dx-ball/index.html"
msgid "functions with matching compiled bytes"
msgstr "ฟังก์ชั่นที่มีการจับคู่ไบต์ที่รวบรวมไว้"

#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/PROGRESS.md" >
#. {ph1}: </a >
#. {ph2}: <a href="https://github.com/N0zoM1z0/dx-
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/ORACLES.md" >
#. {ph3}: </a >
#: website/public/showcase/dx-ball/index.html: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 ""
"ด่านโครงการ:7 ตุลาคม 2026 {ph0}บัญชีแยกประเภท{ph1} · "
"{ph2}ความคุ้มครองการทดสอบ{ph3}"

#: website/public/showcase/dx-ball/index.html:272
msgctxt "page:showcase/dx-ball/index.html"
msgid "The project so far"
msgstr "โครงการเพื่อให้ห่างไกล"

#: 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 บูรณาการ"

#: website/public/showcase/dx-ball/index.html:283
msgctxt "page:showcase/dx-ball/index.html"
msgid "Finding the sound-pan calculation"
msgstr "การหาการคำนวณตำแหน่งเสียงซ้าย/ขวา"

#: 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 "คัดลอก"

#. {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}"

#: 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 ""
"พร้อมท์ตัวอย่างสำหรับตัวแทนการเขียนโค้ดของคุณพร้อมใช้งานแบบโลคัล "
"การสืบสวนด้านล่างแสดงให้เห็นว่า REA "
"แบบสอบถามและหลักฐานที่อยู่เบื้องหลังคำตอบ"

# Reviewed for concrete meaning, software terminology and readable sentences.
#: 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 ด้านล่าง"

#. {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 ""
"ผลการวิเคราะห์ครั้งแรกสำหรับฟังก์ชั่นสำหรับ {ph0} รวมรหัสปลอมประกาศ {ph1} "
"และโทร {ph2}. "
"มุมมองการเรียนการสอนแสดงให้เห็นการป้อนข้อมูลสแต็คและการดำเนินงานจุดลอยตัว "
"ความขัดแย้งนั้นทำให้ตัวแทนมีเหตุผลที่ชัดเจนที่จะสืบสวนต่อไป"

#: website/public/showcase/dx-ball/index.html:331
msgctxt "page:showcase/dx-ball/index.html"
msgid "The first decompiler view"
msgstr "มุมมองแยกคอมไพเลอร์แรก"

#: 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 ""
"ผลลัพธ์แสดงการเรียกร้องการแปลง "
"อ่านคำแนะนำด้านล่างแสดงให้เห็นการป้อนข้อมูลและการให้อาหารการคำนวณที่เรียก"

#: website/public/showcase/dx-ball/index.html:350
msgctxt "page:showcase/dx-ball/index.html"
msgid "Three questions answered through REA"
msgstr "สามคำถามตอบผ่าน REA"

#: website/public/showcase/dx-ball/index.html:353
msgctxt "page:showcase/dx-ball/index.html"
msgid "Recover the missing input"
msgstr "กู้คืนข้อมูลที่ขาดหายไป"

#. {ph0}: <code>[EBP+8]</code>
#: website/public/showcase/dx-ball/index.html: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} "
"แสดงการป้อนข้อมูลจำนวนเต็มที่ขาดหายไปจากมุมมองแยกคอมไพเลอร์"

#: website/public/showcase/dx-ball/index.html:377
msgctxt "page:showcase/dx-ball/index.html"
msgid "Follow the caller to understand the input"
msgstr "ติดตามฟังก์ชันที่เรียกที่จะเข้าใจการป้อนข้อมูล"

#. {ph0}: <code>tile_x</code>
#. {ph1}: <code>20 + 30 × tile_x</code>
#: website/public/showcase/dx-ball/index.html: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 "อ่านค่าที่อยู่เบื้องหลังที่อยู่หน่วยความจำ"

#: 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 ""
"ไบต์ที่ส่งคืนจะสร้างค่าคงที่ทางคณิตศาสตร์ทั้งสองและขนาดแพนเริ่มต้น "
"ตัวแทนตอนนี้มีค่าที่จำเป็นสำหรับนิพจน์ค"

#: website/public/showcase/dx-ball/index.html:430
msgctxt "page:showcase/dx-ball/index.html"
msgid "From REA's findings to C"
msgstr "จาก REAการค้นพบของค"

#: 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 ""
"ทำตามห้าขั้นตอนด้านล่าง. การเลือกแต่ละไฮไลท์คำแนะนำเดิมและสายคที่พวกเขาแจ้ง"

#. {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} การคืนสินค้า"

#: website/public/showcase/dx-ball/index.html:485
msgctxt "page:showcase/dx-ball/index.html"
msgid "Original x86 · excerpt"
msgstr "ต้นฉบับ 86·ข้อความที่ตัดตอนมา"

#: website/public/showcase/dx-ball/index.html:506
msgctxt "page:showcase/dx-ball/index.html"
msgid "Reconstructed C"
msgstr "สร้างขึ้นใหม่ค"

#. {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 "
"กำหนดหน้าจอพิกัดความหมายของพารามิเตอร์ค {ph4}."

#. {ph0}: <strong>
#. {ph1}: </strong>
#. {ph2}: <code>FMUL</code>
#. {ph3}: <code>0x420068</code>
#. {ph4}: <code>read_bytes</code>
#. {ph5}: <code>1.5625</code>
#: website/public/showcase/dx-ball/index.html:540
#, python-brace-format
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"{ph0}02 · Multiply by 1.5625.{ph1} {ph2} reads the double at {ph3}. The "
"bytes returned by REA's {ph4} decode to {ph5}; the C uses the same constant."
msgstr ""
"{ph0}02*คูณด้วย 1.5625{ph1} {ph2} อ่านคู่ที่ {ph3}. ไบต์ที่ส่งคืนโดย REAของ "
"{ph4} ถอดรหัสไปที่ {ph5} คใช้ค่าคงที่เดียวกัน"

#. {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}."

#. {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}."

#. {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ผลของแคลลี าการปวดหลังและอาการบวม {ph4};เปรียบเทียบต้นฉบับ-86 "
"เทียบตรวจสอบค่าที่ส่งคืน"

#: 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 ผล·0*406400-0*40643"

#: website/public/showcase/dx-ball/index.html:611
msgctxt "page:showcase/dx-ball/index.html"
msgid "What the caller supplies"
msgstr "สิ่งที่อุปกรณ์โทร"

#. {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 "ขนาดกระทะที่เก็บไว้"

#: 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 เป้าหมาย "
"บันทึกการตรวจสอบที่เชื่อมโยงเก็บรหัสหลักฐาน"

#. {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 "การตรวจสอบฟังก์ชั่นการกู้คืน"

#: 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 ""
"ฟังก์ชั่นการกู้คืนผ่านการตรวจสอบสอง:ค่าส่งคืนตรงกับต้นฉบับและไบต์ที่คอมไพล์ตรงกับปฏิ"

#: website/public/showcase/dx-ball/index.html:684
msgctxt "page:showcase/dx-ball/index.html"
msgid "3,205 behavior cases"
msgstr "3,205 กรณีพฤติกรรม"

#: 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 ""
"86 "
"และเปรียบเทียบค่าตอบแทนของมันกับซีที่เก็บรักษาไว้มันครอบคลุมทุกตำแหน่งจำนวนเต็มตั้งแต่"
" 0 ถึง 640 ที่ห้าเครื่องชั่งแพน:0,0.5,1,20 และ -1"

#: website/public/showcase/dx-ball/index.html:693
msgctxt "page:showcase/dx-ball/index.html"
msgid "63 matching bytes"
msgstr "63 ไบต์ที่ตรงกัน"

#: 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 ""
"4.0 "
"รีเพลย์คอมไพเลอร์ตรงกับฟังก์ชันที่สมบูรณ์หลังจากใช้การย้ายที่ตรวจสอบและตรวจสอบค่า"

#: 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 "ต่อการสืบสวน"

#: 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 ""
"วิธีการเดียวกันจะถูกใช้สำหรับการปรับปรุงอนุภาคคิวการระเบิดและการสร้างโบนัส:ตรวจ"

#: 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 ชำระเงิน"

#. {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}"

#. {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}"

#. {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}"

#: website/public/showcase/dx-ball/index.html:6
msgctxt "page:showcase/dx-ball/index.html"
msgid "DX-Ball Reverse Engineering: Sound Panning — REA"
msgstr "DX-Ball วิศวกรรมย้อนกลับ:เสียงแพน — REA"

#: website/public/showcase/dx-ball/index.html:7
msgctxt "page:showcase/dx-ball/index.html"
msgid ""
"Follow a DX-Ball reconstruction from binary analysis through REA to "
"maintained C, original-x86 tests and matching compiled function bytes."
msgstr ""
"ทำตาม DX-Ball ฟื้นฟูจากการวิเคราะห์ไบนารีผ่าน REA การทดสอบ 86 "
"และการจับคู่ไบต์ฟังก์ชันที่รวบรวมไว้"

#: 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 การตรวจสอบเสียงแพน;เลื่อนในแนวนอนบนหน้าจอขนาดเล็ก"

#: 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 ""
"ดีเอ็กซ์บอลตรวจสอบฟังก์ชั่น 0*00406400 REA. อิฐตีโทรอุปกรณ์ 20 บวก 30 "
"ครั้งไทล์_เอ็กซ์คำแนะนำในการโหลด,คูณด้วย 1.5625,ลบ 500.0,ใช้แพนสเกลและกลับ "
"86 ใน 3,205 กรณีและโดยคอมไพเลอร์รีเพลย์ 4.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 "คัดลอกตัวอย่างพรอมต์"

#: 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 "คัดลอกฟังก์ชั่นเสียงแพน"

#: 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 "Android,เกมส์, Electron รหัส,ตัวเลขและผลการตรวจสอบ"

#: website/public/showcase/index.html:208
msgctxt "page:showcase/index.html"
msgid "Android · APK analysis"
msgstr "แอนดรอยด์ · 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 ""
"ค้นหา Aegisการคำนวณรหัสหกหลักในการเปิดตัวของ APK. ติดตามวิธีการสร้างด้วย 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 "การวิเคราะห์ของโปรแกรมเครื่องรหัส"

#: website/public/showcase/index.html:228
msgctxt "page:showcase/index.html"
msgid "Solve a CTF flag checker"
msgstr "คีย์ข้อมูล,การพิมพ์ดีดคัดลอก"

#: 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. "
"ค้นหาฟังก์ชั่นการตรวจสอบของเปิดหน้ากากและผลรวมเป็นสมการแล้วตรวจสอบธงแก้ไข"

#: website/public/showcase/index.html:240
msgctxt "page:showcase/index.html"
msgid "Read the CTF case study"
msgstr "อ่านกรณีศึกษาซีทีเอฟ"

#: 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ล็กการตรวจสอบกับพฤติกรรมเดิมและทั้งหมด 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 คัดลอกข้อความและเอชทีเอ็ม"

#: 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 ""
"ออกแบบกราฟิก,ออกแบบโลโก้ Notionบรรจุ JavaScript. "
"การป้องกันไวรัสมัลแวร์และอุปกรณ์ที่หายไปสำหรับมาร์ทโฟนและแท็บเล็"

#: 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ดอส*ฟื้นฟู"

#: 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 ""
"ตรวจสอบผู้ช่วยมุม 16 บิตเดิมด้วย REA. "
"นการประสานงานกับแถวคอ่านแล้วดูว่าพวกเขาผลิตแหวนที่มุ่งเป้าไปที่ผู้เล่น"

#: 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 และนักตรวจสอบธงขาลง"

#: 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}ข้อความและเอชทีเอ็ม"

#: 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การเขียนข้อความโฆษณา,การเขียนในนามคนอื่น,บทความ,การเขียนเนื้อหา "
"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·หน้าหันหน้าไปทางเอพีไอ{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 "
"การเขียนข้อความโฆษณา,การเขียนในนามคนอื่น{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}"

#: 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 "การดำเนินการคัดลอกไปที่ไหน?"

#. {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 อร์ดระบบ "
"แสดงรหัสในแต่ละขั้นตอน{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 ค้นหาตำแหน่งที่จะเริ่มต้นการอ่าน"

#: 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 การเรียกที่ส่งคำขอไอพีซี "
"การค้นพบทั้งสองมาพร้อมกับช่วงแหล่งที่มาในกลุ่มย่อ:"

#: website/public/showcase/notion/index.html:306
msgctxt "page:showcase/notion/index.html"
msgid "REA findings → two places to open"
msgstr "REA ผลการวิจัย→สองสถานที่ที่จะเปิด"

#. {ph0}: <code>analyze_javascript_application</code>
#: website/public/showcase/notion/index.html: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. ตำแหน่งใช้บรรทัดของชุดเดิมและคอลัมน์ตามศูนย์"

#. {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 ""
"การเขียนข้อความโฆษณา,การเขียนในนามคนอื่น,บทความ,การเขียนบทความใหม่,การเขียน "
"{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 "การเขียนข้อความโฆษณา,การเขียนในนามคนอื่น"

#. {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 "แก้ไขกระดาษห่อของโหลด"

#. {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คำขอและการตอบสนองของไอพีซี "
"ตอนนี้เราสามารถมองหา {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 "ค้นหาการเขียนและการตรวจสอบผู้ส่ง"

#: 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คลิปบอร์ดเอพีไอ "
"ช่องและตัวห่อที่แก้ไขแล้วสองตัวเชื่อมต่อวิธีการเปิดเผยกับสายนี้"

#: website/public/showcase/notion/index.html:466
msgctxt "page:showcase/notion/index.html"
msgid "How does a copied block keep its structure?"
msgstr "บล็อกที่ถูกคัดลอกเก็บโครงสร้างไว้ได้อย่างไร"

#. {ph0}: <code>electronApi.clipboard.write</code>
#: website/public/showcase/notion/index.html: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}. "
"การป้องกันไวรัสในเชิงรุกและการรักษาความปลอดภัยที่จะไปมือถือด้วยความมั่นใจ"

#: website/public/showcase/notion/index.html:473
msgctxt "page:showcase/notion/index.html"
msgid "HTML links to saved block data"
msgstr "เชื่อมโยงไปยังบล็อกข้อมูลที่บันทึกไว้"

#: website/public/showcase/notion/index.html:497
msgctxt "page:showcase/notion/index.html"
msgid "Read the HTML ID"
msgstr "อ่านรหัสเอชทีเอ็มแอล"

#: website/public/showcase/notion/index.html:498
msgctxt "page:showcase/notion/index.html"
msgid "Find the same local ID"
msgstr "ค้นหารหัสท้องถิ่นเดียวกัน"

#: website/public/showcase/notion/index.html:499
msgctxt "page:showcase/notion/index.html"
msgid "Restore Notion block data"
msgstr "คืนค่า Notion บล็อกข้อมูล"

#: website/public/showcase/notion/index.html:501
msgctxt "page:showcase/notion/index.html"
msgid ""
"Illustrative text and ID. The recorded module test restores the block data "
"when IDs match; a stale entry returns only text and HTML."
msgstr ""
"ข้อความและรหัสตัวอย่าง "
"การทดสอบโมดูลที่บันทึกไว้คืนค่าข้อมูลบล็อกเมื่อตรงกับรหัส;รายการเก่าส่งกลับเฉพาะข้อค"

#: 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 ตรวจสอบกับสำเนาที่บันทึกไว้ "
"รหัสที่ตรงกันจะคืนค่าข้อมูลที่ถูกบล็อก"

#: 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 "รูปแบบคลิปบอร์ดที่บันทึกจากเนื้อหาเว็บแคชเมื่อวันที่ 13 กรกฎาคม 2026"

#: 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 "อีกตัวอย่างหนึ่ง:ตารางยอด"

#: 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 วิเคราะห์ยอดรวมลงในข้อมูลบล็อก "
"ตัวอย่างนี้แสดงให้เห็นว่าตารางกลายเป็นแถวส่วนหัวและข้อมูล"

#: website/public/showcase/notion/index.html:525
msgctxt "page:showcase/notion/index.html"
msgid "A table through Notion's Markdown parser"
msgstr "ตารางผ่าน Notionวิเคราะห์ยอดรวมของ"

#: website/public/showcase/notion/index.html:546
msgctxt "page:showcase/notion/index.html"
msgid ""
"Recorded output from an extracted Markdown parser. The table becomes rows "
"and cells."
msgstr "ผลลัพธ์ที่บันทึกจากตัวแยกยอดรวม ตารางจะกลายเป็นแถวและเซลล์"

#: website/public/showcase/notion/index.html:553
msgctxt "page:showcase/notion/index.html"
msgid "Another path: the offline SQLite connection"
msgstr "เส้นทางอื่น:การเชื่อมต่อแบบออฟไลน์"

#. {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คำขอแสดงผลของ {ph0} ผ่านไอพีซี "
"กระบวนการหลักสร้างแชแนลข้อความและให้พอร์ตหนึ่งไปยังตัวแสดงผลและอื่นๆไปยังกระบ"
" ชุดคำสั่งที่ตามมาและผลการเดินทางผ่านพอร์ตที่"

#: 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 ""
"ต่อไปนี้แฮนด์ออฟนี้อธิบายที่ทำงานฐานข้อมูล,และทำไมการติดตามเพียงการร้องขอไอพีซีเ"

#: website/public/showcase/notion/index.html:567
msgctxt "page:showcase/notion/index.html"
msgid "Sources and how to read the excerpts"
msgstr "แหล่งที่มาและวิธีการอ่านข้อความที่ตัดตอนมา"

#. {ph0}: <code>app.asar</code>
#. {ph1}: <code>main/index.js</code>
#. {ph2}: <code>isNotionWebContents</code>
#: website/public/showcase/notion/index.html: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 สก์ท็อป 7.6.1 ของ {ph0}:โหลดแท็บล่วงหน้าและ "
"{ph1}. "
"ข้อความที่ตัดตอนมาขยายชื่อตัวแปรที่ย่อและละเว้นรหัสที่ไม่เกี่ยวข้อง;ผู้ช่วยตรวจสอบผู้ส่ง"
" {ph2} เรียกฟังก์ชันมา"

#. {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 ""
"ตัวอย่างคลิปบอร์ดเสมือนและรวมยอดมาจากเนื้อหาเว็บแคชเมื่อวันที่ 13 กรกฎาคม "
"2026 รวมถึงโมดูล {ph0}, {ph1}, {ph2} และ {ph3}. "
"สินทรัพย์เหล่านั้นมีเวอร์ชั่นของตัวเอง "
"โพรบที่บันทึกไว้ดำเนินการแยกโมดูลและสายรัดขนาดเล็ก;ผลของพวกเขาอธิบายหัววัดเหล่"

#: 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 แพคเกจ "
"การบริหารจัดการโปรเจค,วิจัย,การวิจัยตลาด,การวิจัยอินเทอร์เน็ต "
"สมาชิกคลิปบอร์ดและรับจับคู่มีการเชื่อมต่อโดยการอ่านการใช้งานห่อของพวกเขาในแพค"

#. {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 ""
"ตัวอย่างยอดรวมใช้โมดูลแยก {ph0}. "
"การทดสอบโมดูลที่บันทึกไว้แสดงว่าทั้งหน้าและตัวกรองแชทจะเก็บตารางนี้ไว้ "
"วาง/นำเข้า,การรวมโครงสร้างและการวิเคราะห์ไอ/แชทมีจุดเข้าที่แยกต่างหากและรูปแบบ"

#. {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 วิศวกรรมย้อนกลับ:คลิปบอร์ด — REA"

#: website/public/showcase/notion/index.html:7
msgctxt "page:showcase/notion/index.html"
msgid ""
"Follow Notion's clipboard API through Electron's preload, IPC wrappers and "
"main process, with short code excerpts and a look at its rich clipboard "
"format."
msgstr ""
"ทำตาม Notionของคลิปบอร์ดเอพีไอผ่าน "
"Electronโหลดของห่อไอพีซีและกระบวนการหลักที่มีข้อความที่ตัดตอนมารหัสสั้นและดูที่รูปแบบคลิปบอ"

#: 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}รูปแบบกระสุน"

#: 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 "
"รวจสอบฟงกชันดอสดั้งเดิมจากนั้นปฏิบัติตามคำแนะนำของฟงกชันดอสที่สามารถอ่านได"

#: 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 บิต·ซีดีและแอสเซมบลี"

#: 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}กเขาเอ็กเซส{ph3}{ph4}ร PC-98 "
"ปฏิบัติการและผู้ช่วยกระสุนของมุม{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html:225
#, python-brace-format
msgctxt "page:showcase/th04/index.html"
msgid ""
"{ph0}02 · Inspect with REA{ph1}{ph2}Instructions + "
"references{ph3}{ph4}Verify the loaded DOS code and read the angle "
"calculation from the executable.{ph5}"
msgstr ""
"{ph0}02·ตรวจสอบด้วย "
"REA{ph1}{ph2}คำแนะนำ+อ้างอิง{ph3}{ph4}ตรวจสอบโค้ดดอสโหลดและอ่านการคำนวณมุมจากปฏิบัติการ{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html: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·อ่านซี++{ph1}{ph2}พื้นที่จุดมุ่งหมาย ro "
"หมุน{ph3}{ph4}เชื่อมต่อการดำเนินการแต่ละครั้งเพื่อการฟื้นฟูการบำรุงรักษา{ph5}"

#. {ph0}: <span class="flow-label">
#. {ph1}: </span >
#. {ph2}: <strong class="flow-node">
#. {ph3}: </strong >
#. {ph4}: <span class="flow-note" >
#. {ph5}: </span >
#: website/public/showcase/th04/index.html: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}"

#: 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}การชุมนุมที่จะค++{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 "วิธีแหวนเล็งไปที่ผู้เล่น"

#: 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 ""
"การโจมตีของเอลลี่ขอแหวนเล็งที่มีจำนวนเริ่มต้น 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 ""
"พร้อมท์ตัวอย่างด้วยการเช็คเอาท์ที่ปฏิบัติการและการฟื้นฟูเดิมที่มีอยู่ภายใน"

#. {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}. "
"การเพิ่มทิศทางของผู้เล่นหมุนตำแหน่งเหล่านั้นเข้าด้วยกัน"

#. {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 "การโจมตีแหวนของเอลลี่*ที่มาตัดตอนมา"

#. {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 การคืนสินค้า"

#. {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 "ตรวจสอบภาพก่อนอ่านรหัส"

#: 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 "อ่านแหวนคูณและหาร"

#. {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 "หาที่รูปแบบหันไปทางผู้เล่น"

#: 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 "จากการชุมนุมที่จะอ่านค++"

#: 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 "Reอ่านได้ค*สรุปเล็งแหวน"

#. {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"

#. {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 หน่วยมุม"

#. {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};เพิ่มมันจะเปิดแหวนทั้งที่มีต่อผู้เล่น"

#. {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} เพิ่มมุมแม่แบบ "
"แม่แบบเริ่มต้นของเอลลี่ชุดให้เป็นศูนย์;รูปแบบอื่นๆสามารถใช้ผู้ช่วยเดียวกันกับการหมุน"

#. {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 เช่นเดียวกับการหล่อไบต์ที่ไม่ได้ลงนามไม่ "
"แหล่งที่มาโดยรอบยังแปลงมุมนี้และความเร็วเป็นความเร็ว"

#: 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 ""
"การชุมนุมเลือกสาขาเล็งแหวน,การคำนวณจุดมุ่งหมายและเก็บสุดท้าย "
"บทความนี้ไม่มีการอ้างอิงจากเอกสารอ้างอิงหรือแหล่งข้อมูลโปรดช่วยพัฒนาบทความนี้โด"
" "
"ตรวจสอบคอมไพเลอร์ด้านล่างนำไปใช้กับแหล่งที่มาของการบำรุงรักษาในโครงการที่เชื่"

#: 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 "การตรวจสอบแหล่งที่มาที่บำรุงรักษา"

#: 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 "
"การตรวจสอบการบันทึกของโครงการรวบรวมรหัสรุ่นกระสุน,รวมทั้งผู้ช่วยนี้,กับเทอร์โบตรึงค"
" 44.0"

#: 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 "บันทึกใน 3 ตุลาคม 2026. {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 ไบต์,เมกะไบต์"

#: 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·7 ตุลาคม 2026"

#: website/public/showcase/th04/index.html:720
msgctxt "page:showcase/th04/index.html"
msgid ""
"Compiler checks cover the complete bullet-add code section, including this "
"helper. They also compare its MAP contribution and overlapping relocation."
msgstr ""
"ตรวจสอบคอมไพเลอร์ครอบคลุมส่วนโค้ดเพิ่มกระสุนที่สมบูรณ์รวมถึงตัวช่วยนี้ "
"พวกเขายังเปรียบเทียบการมีส่วนร่วมของแผนที่และการย้ายที่ทับซ้อนกัน"

#. {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}. "
"ที่อยู่ของมันอธิบายภาพการวิเคราะห์นั้น ผลฟังก์ชันรายงาน 503 "
"ไบต์ร่างกายในสองช่วงข้ามช่วง 517 ไบต์;คำแนะนำที่เลือกข้างต้นอยู่ในช่วง"

#. {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 การตรวจสอบของเป้าหมายเดิมเดียวกัน "
"ตัวตนของเกมที่ให้มาถูกตรึงโดยที่ประจักษ์พื้นที่เก็บข้อมูลที่มีแหล่งที่มาที่เก่าแก่การถ่ายโอน"

#: 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 การฟื้นฟู"

#: 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 ""
"งการสร้างเกมสี่ผลิตภัณฑ์ดอสจากการบำรุงรักษาซีซีและการชุมนุม "
"นอกเหนือจากการสร้างกระสุน,แหล่งที่มาครอบคลุมขั้นตอนผู้บังคับบัญชา,การแสดงผล,การป้อ"

#. {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}สร้างและเรียกใช้คู่มือ{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}64 พอร์ต{ph3}"

#: website/public/showcase/th04/index.html:6
msgctxt "page:showcase/th04/index.html"
msgid "TH04 Reverse Engineering: DOS Bullet Patterns — REA"
msgstr "TH04 การวิเคราะห์ทางวิทยาศาสตร์ — REA"

#: website/public/showcase/th04/index.html:7
msgctxt "page:showcase/th04/index.html"
msgid ""
"Inspect TH04's original 16-bit DOS code with REA. Follow the assembly and "
"recovered C++ to see how a ring of bullets is spaced and aimed at the "
"player."
msgstr ""
"ตรวจสอบ TH04ของเดิม 16 บิตรหัสดอสด้วย REA. "
"นของกระสุนมีระยะห่างและมุ่งเป้าไปที่ผู้เล่น"

#: 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 คงที่และมุ่งแหวนกระสุน;เลื่อนในแนวนอนบนหน้าจอขนาดเล็ก"

#: 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 กระสุน แหวนคงเริ่มต้นที่มุมศูนย์ "
"การเพิ่มทิศทางของผู้เล่น 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 เท่า 86 และรีเพลย์คอมไพเลอร์ 63 "
"ไบต์แยกต่างหาก"

# 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 "int"

# 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 "พรีโหลดเอพีไอ"

#: website/public/guides/index.html:244
msgctxt "page:guides/index.html"
msgid "IPC"
msgstr "ไอพีซี"

#: 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ผล·สรุปข้อความที่ตัดตอนมาจากไอพีซี"

#: website/public/guides/native/index.html:389
msgctxt "page:guides/native/index.html"
msgid "REA instruction excerpt · 0x406409"
msgstr "REA คำแนะนำ*0*406409"

#: website/public/guides/native/index.html:403
msgctxt "page:guides/native/index.html"
msgid "REA caller excerpt · 0x411f5b"
msgstr "REA ข้อความที่ตัดตอนมา*0*411เอฟ5 บาท"

#: website/public/guides/native/index.html:417
msgctxt "page:guides/native/index.html"
msgid "REA byte results · interpreted as little-endian doubles"
msgstr "REA ผลลัพธ์ไบต์*ตีความว่าเป็นคู่เล็กๆน้อยๆเอนเดียน"

#: website/public/guides/native/index.html:434
msgctxt "page:guides/native/index.html"
msgid "Recovered C · excerpt"
msgstr "กู้คืนค*ตัดตอนมา"

#: 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 "รหัสผู้ประกอบการ·แหล่งที่มาของไมโครซอฟท์"

#: 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  agent ตัวแทน·ผลลัพธ์ที่เลือกไว้"

#: 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 *เลือกแยกจาวา"

#: 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 *เครื่องกำเนิดไฟฟ้า,ร่างกายที่สมบูรณ์"

#: 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  agent ตัวแทน·ผลลัพธ์ที่เลือกไว้"

#: 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 ·อ่าน_ไบต์"

#: 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 →ตัวแทน*ข้อความที่ตัดตอนมาโทร"

#. {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 "ตรวจสอบรหัส"

#: 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 "กู้คืนค"

#: 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 "งคุณเอง"

#: website/public/showcase/index.html:274
msgctxt "page:showcase/index.html"
msgid "IPC wrappers"
msgstr "ห่อไอพีซี"

#: 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 "รหัสดอสต้นฉบับ"

#: 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 "หน้าเว็บ"

#: website/public/showcase/notion/index.html:315
msgctxt "page:showcase/notion/index.html"
msgid "Renderer IPC call"
msgstr "ทำให้เรียกฟังก์ชันไอพีซี"

#: 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 "อินพุตมาร์กดาวน์"

#: 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  agent ตัวแทน·ช่องที่เลือกไว้"

#. {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 "การบำรุงรักษาที่สอดคล้องกันค++"

#: 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 "10%ของ 200 ได้ 20 กด=เพื่อเพิ่มมัน"

#: website/public/assets/home.js:33
msgctxt "runtime"
msgid "For multiplication, 10 becomes 0.1. Press = to multiply."
msgstr "สำหรับการคูณ 10 กลายเป็น 0.1 กด=เพื่อคูณ"

#: scripts/website_i18n.py
msgctxt "runtime"
msgid "Translation is being updated. Read this page in English for now."
msgstr "แปลมีการปรับปรุง อ่านหน้านี้ในภาษาอังกฤษสำหรับตอนนี้."

# Reviewed for readable instructions and accurate software terminology.
#. {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 "
"เมื่อต้องการค้นหาสิ่งที่เกิดขึ้นเมื่อฉันคลิกบันทึกการส่งออก แสดงที่ไหน {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}"

# Reviewed for readable instructions and accurate software terminology.
#. {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 แล้ว ให้เรียกคำสั่งตั้งค่า เลือกผู้ช่วยเขียนโค้ด "
"และตรวจสอบการเปลี่ยนแปลงที่เสนอ"

#. {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}บันทึกการส่งออก{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}ทำนาย CSV สำหรับบันทึกย่อที่มีรหัส 1 และชื่อ {ph3}. "
"แล้วเรียกใช้ตัวอย่างของ {ph4} รูปแบบด้วย {ph5} เพื่อตรวจสอบ "
"แสดงการคาดการณ์และผลลัพธ์ที่เกิดขึ้นจริง{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+ ก็พร้อมใช้ หากแสดงรุ่นเก่าหรือ "
"‘not recognized’ / ‘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 "แท็บ_เบราเซอร์_มุมมอง/{ph0} ·สมาชิกเอพีไอ"

#. {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 "แท็บ_เบราเซอร์_มุมมอง/{ph0} ·ผู้ช่วยไอพีซี"

#. {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 เพื่อรับ Evidence จากข้อมูลที่บันทึกใน REA แบบออฟไลน์ "
"หรือเชื่อมต่อเซิร์ฟเวอร์ MCP ของ Everywhere "
"เพื่อตรวจสอบทราฟฟิกที่บันทึกไว้ร่วมกับเอเจนต์ของคุณ"

#. {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 · 13 ตุลาคม 2026"

#: 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}Home{ph1} / {ph2}Blog{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 · 13 ตุลาคม 2026"

#: 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}ความสามารถของโมเดลส่งผลต่อสมมติฐานที่เอเจนต์ AI สามารถเสนอได้{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} "
"นั่นคือสิ่งที่ฉันต้องการวัดสำหรับเวิร์กโฟลว์เอเจนต์ AI ที่สมบูรณ์"

#: 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}สิ่งนี้แนะนำเอเจนต์ AI ประเภทใด{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 "
"ฉันได้สำรวจว่าตัวแทนสามารถดำเนินการวิศวกรรมย้อนกลับได้มากเพียงใดโดยมีสิทธิ์เข้าถึงโปรแกรมและวิธีการตรวจสอบงาน"
" ประสบการณ์ส่วนใหญ่ของฉันมาจากการสร้างเกมขึ้นใหม่ โดยเฉพาะ Touhou "
"ขณะที่ฉันเปลี่ยนโมเดล "
"พื้นที่เก็บข้อมูลได้เก็บบันทึกว่าแต่ละเซสชันจัดการเพื่อกู้คืนอะไรบ้าง"

#: 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 ""
"ฉันสนใจว่าการค้นพบและการทดสอบสนับสนุนซึ่งกันและกันอย่างไร "
"สมมติฐานเกี่ยวกับอายุการใช้งานของวัตถุชั่วคราวทำให้เอเจนต์ AI มีทิศทางใหม่ "
"คำติชมของคอมไพเลอร์ช่วยปรับแต่งสมมติฐานนั้นให้กลายเป็นการจัดเรียงซอร์สโค้ดที่ตรงกัน"

#: 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} "
"ทั้งสองกรณีให้เหตุผลแก่ฉันในการให้ความสำคัญกับความสามารถของโมเดลทั่วไปอย่างจริงจัง:"
" "
"ตัวแทนสามารถลองใช้รูปแบบท้องถิ่นต่อไปเป็นเวลานานก่อนที่จะพบวิธีที่ดีกว่าในการแสดงงานโดยรอบ"

#: 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 "เหตุใดโมเดล AI เฉพาะทางจึงทำได้ดี"

#: website/public/blog/reverse-engineering-models/index.html:374
msgctxt "page:blog/reverse-engineering-models/index.html"
msgid ""
"Touhou gives us a concrete reason to expect that experience to help. Much of"
" the game code comes from the same author, ZUN, so recurring habits are a "
"reasonable starting assumption. The repositories back that up with useful "
"examples: related loops and helper arrangements have supplied hypotheses "
"across games."
msgstr ""
"Touhou ให้เหตุผลที่ชัดเจนแก่เราในการคาดหวังว่าประสบการณ์นั้นจะช่วยได้ "
"รหัสเกมส่วนใหญ่มาจากผู้เขียนคนเดียวกัน 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 ""
"นี่เป็นรายละเอียดเฉพาะเจาะจงมากที่โมเดล AI "
"เอนกประสงค์อาจไม่ทราบเมื่อพบปัญหาครั้งแรก "
"โมเดลเฉพาะสำหรับคอมไพลเลอร์นี้สามารถเห็นกรณีดังกล่าวได้มากมาย "
"และเรียนรู้ว่าซอร์สโค้ดรูปแบบใดที่ควรค่าแก่การทดสอบก่อน"

#: 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 ""
"ด้วยการเรียกบันทึกนั้น "
"ตัวแทนสามารถเริ่มต้นด้วยผลลัพธ์ที่ทราบและตรวจสอบว่าเราเข้าถึงได้อย่างไร "
"นอกจากนี้ยังสามารถหลีกเลี่ยงทางเลือกอื่นที่ล้มเหลวในบริบทเดียวกันได้ "
"จุดเริ่มต้นจะดีขึ้นโดยไม่ต้องเปลี่ยนพารามิเตอร์ที่ได้รับการฝึกของโมเดล"

#. {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 ""
"ด้วยเหตุผลดังกล่าว ฉันจึงรวมโมเดล AI "
"อเนกประสงค์ที่มีขนาดเล็กกว่าพร้อมการดึงข้อมูลที่ดีไว้ด้วยในการเปรียบเทียบ "
"การให้คลังประสบการณ์แบบเดียวกันจะช่วยให้เราระบุได้ว่าการฝึกอบรมใดที่เพิ่มเข้ามา"
" เช่น การสร้างผู้สมัครที่ดีขึ้น การตัดสินใจที่ดีขึ้นหลังจากได้รับคำติชม "
"หรือทั้งสองอย่าง"

#: 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 ""
"การตัดสินใจเหล่านั้นหลังจากได้รับคำติชมคือสิ่งที่ฉันอยากศึกษามากที่สุด "
"ในการฟื้นฟูแบบเอเจนต์ แบบจำลองจะเสนอคำอธิบายและทดสอบกับโปรแกรม "
"แม้ว่าซอร์สโค้ดของผู้สมัครจะล้มเหลว "
"ผลลัพธ์ก็สามารถจำกัดความเป็นไปได้ที่เหลืออยู่ให้แคบลง "
"และแนะนำการทดลองถัดไปที่มีประโยชน์มากขึ้น"

#: 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 ""
"บันทึกการฝึกอบรมที่เก็บลำดับนี้สามารถสอนได้มากกว่าแหล่งข้อมูลสุดท้ายเพียงอย่างเดียว"
" "
"โดยเชื่อมโยงการเปลี่ยนแปลงที่เสนอแต่ละรายการกับผลลัพธ์ที่สังเกตได้และการตัดสินใจครั้งต่อไป"
" การรักษารูปแบบที่ไม่มีประสิทธิภาพก็มีความสำคัญเช่นกัน "
"โดยจะแจ้งตัวแทนในภายหลังว่าสมมติฐานใดได้รับการทดสอบแล้วในบริบทนั้น"

#. {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} "
"ผลลัพธ์ที่เป็นกลางคือเหตุผลที่ต้องพิจารณารูปแบบใหม่อีกครั้ง "
"ความไม่ตรงกันที่เปลี่ยนแปลงอาจชี้ไปที่สาเหตุอื่น "
"เมื่อการแก้ไขเฉพาะที่หยุดให้ข้อมูล "
"ตัวแทนควรสามารถทบทวนการนำเสนอแหล่งที่มาหรือตรวจสอบหลักฐานอีกครั้ง"

#: 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 ""
"การสร้างโค้ดขึ้นใหม่ในขอบเขตที่ชัดเจนเป็นสภาพแวดล้อมที่ใช้ศึกษาการเลือกเหล่านี้ได้จริง"
" เมื่อกำหนดเป้าหมายและเวอร์ชันคอมไพเลอร์ไว้แน่นอน "
"การทดลองซอร์สโค้ดหลายแบบจะให้ผลตอบกลับรวดเร็วและทำซ้ำได้ "
"เอเจนต์สามารถคอมไพล์โค้ดที่เสนอ ตรวจส่วนที่ยังต่าง แล้วเลือกขั้นตอนถัดไป"

#: 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} "
"ก่อนที่ตัวแทนจะทดสอบการแก้ไขที่เป็นประโยชน์ได้ ก็ต้องพิจารณาว่าจะวัดอะไรก่อน"

#: 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 แสดงให้เห็นว่าปัญหาอาจซ่อนอยู่นอกขอบเขตการตรวจ "
"บางฟังก์ชันใช้ค่าคงที่แบบ floating-point ที่ผิด "
"แต่ยังผ่านการเปรียบเทียบแบบตรงกันทุกส่วน "
"ตัวเปรียบเทียบปรับแอดเดรสที่ถูกย้ายก่อนตรวจคำสั่ง "
"แต่ตรวจค่าที่แอดเดรสนั้นชี้ไปเฉพาะกรณีที่บันทึกไว้ให้ตรวจอย่างชัดเจน "
"การอ้างอิงค่าคงที่อื่นจึงอาจผ่านโดยไม่ได้ตรวจค่า"

#. {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 ""
"ก่อนที่จะใช้การตรวจสอบยืนยันประเภทใดประเภทหนึ่งเป็นรางวัล "
"ฉันจะทดสอบด้วยผลลัพธ์ที่ไม่ถูกต้องโดยเจตนา "
"ฉันยังจะแยกการยอมรับขั้นสุดท้ายออกจากซอร์สโค้ดที่เอเจนต์ AI สามารถแก้ไขได้ "
"โมเดลจะต้องผ่านการตรวจสอบโดยการสร้างโปรแกรมใหม่อย่างถูกต้อง มิฉะนั้น "
"การคัดลอกอาร์เรย์ไบต์จากเป้าหมายอาจหลอกระบบการให้คะแนนที่ไร้เดียงสาโดยไม่ต้องกู้คืนซอร์สโค้ดที่มีประโยชน์"

#. {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 ที่คงที่ ก่อนอื่น "
"ฉันจะสร้างพื้นฐานสำหรับโมเดล AI อเนกประสงค์ที่แข็งแกร่งและโมเดลที่เล็กกว่า "
"การเพิ่มความรู้เกี่ยวกับพื้นที่เก็บข้อมูลให้กับโมเดลขนาดเล็กจะแสดงให้เห็นว่าการเปลี่ยนแปลงในการดึงข้อมูลมีอะไรบ้าง"
" จากนั้น ความเชี่ยวชาญพิเศษภายใต้การดูแลและเวอร์ชันที่ได้รับการฝึกอบรม 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 ""
"จากนั้นฉันจะแยกเงื่อนไขเริ่มต้นสองเงื่อนไข: สร้างฟังก์ชันใหม่จากคำแนะนำ "
"และปิดความแตกต่างสองสามข้อสุดท้ายในแหล่งที่มาที่ได้รับการบำรุงรักษา โมเดล AI"
" เฉพาะทางอาจทำงานได้ดีในงานที่สอง ในขณะที่โมเดล AI "
"เอนกประสงค์ทำงานส่วนใหญ่ที่จำเป็นในการเข้าถึงโมเดลนั้น "
"การวัดแยกกันจะเผยให้เห็นการแบ่งส่วนงานนั้น"

#: 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 ""
"ทั้งสองงานต้องมีตัวอย่างทดสอบที่ไม่อยู่ในข้อมูลฝึกและแหล่งข้อมูลสำหรับค้นคืน"
" เกม Touhou ที่เกี่ยวข้องใช้โค้ดเอนจินร่วมกัน "
"การกันเกมหนึ่งออกจากข้อมูลฝึกจึงอาจยังเหลือฟังก์ชันที่เกือบเหมือนกันในชุดฝึก"
" ผมจะกันซอร์สโค้ดที่เกี่ยวข้องทั้งกลุ่มออก "
"และไม่ให้คำตอบที่ผ่านการตรวจแล้วอยู่ในข้อมูลฝึกหรือคลังสำหรับค้นคืน"

#: 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 ""
"ฉันจะสนใจรูปแบบของผลลัพธ์เหล่านี้ หากโมเดล AI "
"เฉพาะทางทำงานได้ดีในตระกูลคอมไพเลอร์ที่คุ้นเคย "
"ข้อได้เปรียบนั้นจะรอดพ้นจากการเปลี่ยนแปลง toolchain หรือไม่ และเมื่อ AI "
"ทั้งสองโมเดลดึงข้อมูลได้ดีแล้ว การฝึกยังเพิ่มอีกเท่าไหร่? "
"คำตอบจะช่วยให้เราตัดสินใจได้ว่าโมเดลแต่ละประเภทมีประโยชน์มากที่สุดที่ใด"

#: 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 "สิ่งนี้แนะนำเอเจนต์ AI ประเภทใด"

#: 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 ""
"หากโมเดลต่างๆ กลายเป็นความช่วยเหลือในขั้นตอนต่างๆ "
"การจัดการที่เป็นประโยชน์อาจเป็นตัวแทนในวงกว้างที่สามารถเข้าถึงโมเดล AI "
"เฉพาะทางได้ เมื่องานกลายมาเป็นการค้นหาคอมไพเลอร์ที่คุ้นเคย "
"งานนั้นก็สามารถถามโมเดล AI เฉพาะทางสำหรับผู้สมัครได้ หากผลลัพธ์ไม่สมเหตุสมผล"
" สารในวงกว้างสามารถกลับไปยังหลักฐานเป้าหมายหรือตรวจสอบการวัดเองได้"

#: 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 ""
"ในการจัดการดังกล่าว "
"ความเชี่ยวชาญเฉพาะทางจะกลายเป็นเครื่องมือที่ตัวแทนสามารถเลือกได้ในขณะที่การสืบสวนพัฒนาขึ้น"
" ตัวแทนรักษาอิสระในการเปลี่ยนทิศทางที่ทำให้ความก้าวหน้าก่อนหน้านี้เป็นไปได้"

#: 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 ""
"ตัวอย่างจะอธิบายการเปรียบเทียบระดับฟังก์ชันในอดีตที่บันทึกไว้ในการคอมมิตที่เชื่อมโยง"
" การตรวจสอบรันไทม์ทั้งเกมถือเป็นเหตุการณ์สำคัญที่แยกจากกัน "
"แหล่งที่มาและบันทึกการจับคู่ได้รับการตรวจสอบเมื่อวันที่ 13 ตุลาคม พ.ศ. 2569"

#. {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}คอลแบ็ก Front ของ TH09:{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 ""
"สิ่งที่ Touhou การสร้างใหม่สอนฉันเกี่ยวกับโมเดลทั่วไป โมเดลผู้เชี่ยวชาญ "
"และการเรียนรู้ที่จะเสนอสมมติฐานที่ดีกว่าจากคำติชมของคอมไพเลอร์"

#: 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 "แอนดรอยด์ · 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 คัดลอกข้อความและเอชทีเอ็ม"

#: 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 ""
"เตรียมคอมพิวเตอร์และผู้ช่วย AI เขียนโค้ด เชื่อมต่อ 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 ""
"เพิ่งเริ่มใช่ไหม? ทำตามสี่ขั้นตอนด้านล่าง หากมีผู้ช่วย AI อยู่แล้ว ไปที่ "
"{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. เลือกผู้ช่วย AI{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 ""
"ใช้คอมพิวเตอร์ที่เก็บไฟล์ที่ต้องการวิเคราะห์ ผู้ช่วย AI "
"เขียนโค้ดที่ทำงานบนเครื่องสามารถอ่านไฟล์เหล่านั้นและเรียกใช้เครื่องมือให้คุณได้"

#: 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 ""
"ป้อนคำสั่งในเทอร์มินัล ส่วนพรอมป์ต์ที่มีป้ายว่า “ผู้ช่วย AI เขียนโค้ดของคุณ”"
" ให้ป้อนในแชตของผู้ช่วย"

#. {ph0}: <a href="https://nodejs.org/en/download" >
#. {ph1}: </a >
#: website/public/get-started/index.html:307
#, python-brace-format
msgctxt "page:get-started/index.html"
msgid "{ph0}Download the Node.js installer{ph1} if winget is unavailable."
msgstr "{ph0}ดาวน์โหลดตัวติดตั้ง Node.js{ph1} หากใช้ winget ไม่ได้"

#. {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 ""
"หากภายหลัง PowerShell แจ้งว่า {ph0}“running scripts is disabled on this "
"system” (ระบบนี้ปิดการเรียกใช้สคริปต์){ph1} เมื่อเรียก {ph2} ให้ใช้ {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 "สร้างโฟลเดอร์ทำงานสำหรับผู้ช่วย AI"

#: 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. เลือกผู้ช่วย AI เขียนโค้ด"

#: 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 ""
"ผู้ช่วยคือ AI ที่คุณพูดคุยด้วย ส่วน 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 "เปิดโฟลเดอร์ rea-work ที่สร้างไว้ในขั้นตอนที่ 1"

#: 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 "แอปที่รองรับทั้งหมดและ 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 รองรับแอปด้านล่าง หากต้องการระบุแอปโดยตรง ให้ใช้ ID คู่กับ "
"{ph0}"

#: 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 "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 · เชื่อมต่อบนคอมพิวเตอร์ที่รัน 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 ขอให้เพิ่มเซิร์ฟเวอร์ MCP แบบกำหนดเองชื่อ {ph0} "
"โดยใช้คำสั่งนี้บนคอมพิวเตอร์ของ 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 "วางพรอมป์ต์นี้ในผู้ช่วยเขียนโค้ด AI ของคุณ:"

#: website/public/get-started/index.html:810
msgctxt "page:get-started/index.html"
msgid "For one specific client, add its setup ID:"
msgstr "หากต้องการเลือกแอปใดแอปหนึ่ง ให้เพิ่ม 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 ใช้ปุ่มลูกศรเพื่อเลื่อน กด Space เพื่อเลือกแอป และ 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 คือการเชื่อมต่อที่ให้ผู้ช่วย AI เรียกใช้ REA ได้ "
"ส่วนสกิลบอกขั้นตอนการสำรวจซอฟต์แวร์ให้ผู้ช่วย"

#: 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 ซึ่งเป็นตัวเลือกเสริมได้ "
"เมื่อตั้งค่าเสร็จ ให้เริ่มแอปที่เชื่อมต่อใหม่"

#. {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} ด้วย ID สำหรับตั้งค่าของแอปที่ใช้ หากตรวจสอบสำเร็จ จะรายงาน "
"{ph1} จากนั้นบอกผู้ช่วย AI ว่า:"

#: 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 ที่มี 6 ไฟล์และปุ่ม {ph0}Export notes{ph1} "
"ผู้ช่วย AI สำรวจโค้ดได้โดยไม่ต้องติดตั้งหรือเรียกใช้ Electron"

#: website/public/get-started/index.html:894
msgctxt "page:get-started/index.html"
msgid "Your coding agent"
msgstr "ผู้ช่วย AI เขียนโค้ดของคุณ"

#. {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 "
"โฮสต์คือระบบปฏิบัติการที่คุณใช้ ส่วนเป้าหมายคือโปรแกรมที่ต้องการวิเคราะห์"

#: 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 "การตั้งค่าแบบไม่มี GUI ที่ตรวจสอบแล้ว"

#: website/public/get-started/index.html:1021
msgctxt "page:get-started/index.html"
msgid "See provider guide"
msgstr "ดูคู่มือเครื่องมือวิเคราะห์"

#: website/public/get-started/index.html:1027
msgctxt "page:get-started/index.html"
msgid "Hopper · let setup install or connect it"
msgstr "Hopper · ให้ขั้นตอนตั้งค่าติดตั้งหรือเชื่อมต่อให้"

#: 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 ""
"เลือก Hopper ในขั้นตอนตั้งค่า และตรวจสอบแผนติดตั้งแยกของ Hopper บน macOS "
"ให้เลือกโหมดเดโมหรือเปิดใช้งานใบอนุญาตเมื่อเปิด Hopper ครั้งแรก บน Linux "
"ขั้นตอนตั้งค่าจะเตรียมเดโมที่รองรับและจอแสดงผลเฉพาะของเดโม"

#: 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 ขอสิทธิ์ Automation ให้อนุญาตแอปที่เริ่ม REA ใน System Settings → "
"Privacy & Security → Automation แล้วลองใหม่"

#. {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 ""
"ติดตั้ง JDK 21 ขึ้นไปแบบ 64 บิตที่มีคอมไพเลอร์ Java "
"เลือกแพ็กเกจที่ตรงกับสถาปัตยกรรมของคอมพิวเตอร์"

#. {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 ""
"เรียกคำสั่งเหล่านี้ในเซสชันเทอร์มินัลเดียวกัน หลังตั้งค่าพาธ "
"ให้เรียกขั้นตอนตั้งค่าอีกครั้ง อนุมัติการตั้งค่าแอปที่อัปเดต "
"แล้วเริ่มผู้ช่วย AI ใหม่"

#. {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}คู่มือ Ghidra บน "
"Windows{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 เพื่อเตรียมการลงทะเบียนเซิร์ฟเวอร์ MCP ฝั่ง IDA "
"เลือกเชื่อมต่อกับ GUI ที่เปิดไบนารีต้นฉบับอยู่ หรือใช้โพรเซสควบคุมแบบไม่มี "
"GUI ที่เปิดฐานข้อมูลเฉพาะ"

#: 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 ""
"รูปแบบที่ตรวจสอบแล้วมี GUI แบบเดิมและโพรเซสควบคุมแบบไม่มี GUI บน Windows "
"รวมถึงโพรเซสควบคุมแบบไม่มี GUI บน macOS arm64 ที่ใช้ IDA Professional 9.1 "
"บริดจ์ 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 ""
"ใช้ไฟล์ลงทะเบียน JSON ที่เตรียมตามคู่มือเครื่องมือวิเคราะห์ "
"แล้วเรียกขั้นตอนตั้งค่าอีกครั้งและเริ่มผู้ช่วย AI ใหม่"

#. {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 ""
"เมื่อเชื่อมต่อแล้ว "
"ให้บอกพาธเต็มของไฟล์ปฏิบัติการต้นฉบับและชื่อเครื่องมือวิเคราะห์แก่ผู้ช่วย "
"AI:"

#. {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 คุณใช้ตัวติดตั้งผ่าน curl ได้เช่นกัน หลังเตรียม Node.js "
"แล้ว:"

#: website/public/get-started/index.html:1696
msgctxt "page:get-started/index.html"
msgid ""
"Use the client check in step 3 with your setup ID. In editor clients, enable"
" REA in MCP settings and allow its tools in the agent chat."
msgstr ""
"ใช้คำสั่งตรวจสอบแอปในขั้นตอนที่ 3 กับ ID สำหรับตั้งค่าของคุณ "
"สำหรับโปรแกรมแก้ไขโค้ด ให้เปิดใช้ REA ในการตั้งค่า MCP "
"และอนุญาตเครื่องมือในแชตของผู้ช่วย AI"

#: 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 PowerShell สำหรับแอปและเครื่องมือวิเคราะห์บน Windows หากผู้ช่วย "
"AI ทำงานใน WSL ให้ติดตั้ง Node.js และ REA ในสภาพแวดล้อม Linux นั้น และใช้พาธ"
" Linux เครื่องมือวิเคราะห์แบบไม่มี GUI ทำงานบนโฮสต์เดียวกับ REA"

#: website/public/get-started/index.html:1734
msgctxt "page:get-started/index.html"
msgid "Windows setup command:"
msgstr "คำสั่งตั้งค่าบน Windows:"

#: 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 ""
"หากต้องการอัปเดตการเชื่อมต่อผู้ช่วย AI "
"ให้เรียกคำสั่งตั้งค่ารุ่นล่าสุดอีกครั้ง ตรวจสอบแผน "
"แล้วเริ่มแอปที่เชื่อมต่อใหม่"

#. {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"

#. {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 "คัดลอกคำสั่งตั้งค่า REA บน Windows"

#: website/public/get-started/index.html:419
#: website/public/get-started/index.html:450
#: website/public/get-started/index.html:464
#: website/public/get-started/index.html:482
#: website/public/get-started/index.html:534
#: website/public/get-started/index.html:548
#: website/public/get-started/index.html:580
#: website/public/get-started/index.html:609
#: website/public/get-started/index.html:744
#: website/public/get-started/index.html:799
#: website/public/get-started/index.html:814
#: website/public/get-started/index.html:862
#: website/public/get-started/index.html:1047
#: website/public/get-started/index.html:1109
#: website/public/get-started/index.html:1132
#: website/public/get-started/index.html:1156
#: website/public/get-started/index.html:1204
#: website/public/get-started/index.html:1279
#: website/public/get-started/index.html:1305
#: website/public/get-started/index.html:1322
#: website/public/get-started/index.html:1643
#: website/public/get-started/index.html:1665
#: website/public/get-started/index.html:1738
#: website/public/get-started/index.html:1759
msgctxt "page:get-started/index.html"
msgid "Copy command"
msgstr "คัดลอกคำสั่ง"

#: 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 ให้เปิดแชตของผู้ช่วย AI ส่วน 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 ให้เลือก “All files” เมื่อบันทึกใน Notepad เพื่อไม่ให้เพิ่ม {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 ""
"สำหรับโพรเซสควบคุมแบบไม่มี GUI ที่มี {ph0}, {ph1} และ {ph2} "
"ไฟล์อาจมีรูปแบบดังนี้:"

#. {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 ""
"สำหรับเซิร์ฟเวอร์ GUI แบบเดิมรุ่น 1.4.0 ที่เชื่อมต่ออยู่ ให้คัดลอก {ph0}, "
"{ph1} ที่ใช้งานได้ และ {ph2} หากมี ลงในไฟล์ เปิดไบนารีต้นฉบับใน IDA "
"และเริ่มปลั๊กอินฝั่ง 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} เปิดไฟล์และทำตามขั้นตอน จากนั้นเปิด Terminal ใหม่"

#: 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 ""
"ติดตั้ง Claude Desktop บน Windows หรือ macOS แล้วลงชื่อเข้าใช้ "
"ปิดแอปให้สมบูรณ์ แล้วเรียกคำสั่งนี้ในเทอร์มินัลที่เปิดนอก 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 ให้สร้างดีคอมไพเลอร์เนทีฟสำหรับคอมพิวเตอร์ของคุณก่อนดำเนินการต่อ"

#: 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 เพิ่ม 0.001 "
"แต่ละการปรับปรุงโดยไม่ต้องปะทะกันในขณะที่ความเร็วอยู่ด้านล่าง 13."

#: website/public/index.html:1029
msgctxt "page:index.html"
msgid ""
"Explore a feature in a released app or game, with code and checked results."
msgstr "สำรวจฟีเจอร์ในแอปหรือเกมที่เผยแพร่แล้ว พร้อมโค้ดและผลที่ตรวจสอบแล้ว"

#: 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 ""
"ตาม JavaScript ที่บรรจุใน Notion ไปถึงคลิปบอร์ดของระบบ "
"และดูว่าการคัดลอกเก็บข้อมูลบล็อกแบบสมบูรณ์ไว้อย่างไร"

#: 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 ""
"หาว่าตำแหน่งลูกบอลกลายเป็นเสียงด้านซ้ายหรือขวาอย่างไรในเกม Windows ปี 1996"

#: 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 ""
"การประกอบที่เลือกจากเครื่องคิดเลขที่ติดตั้ง ความคิดและคำตอบแสดงถึงการค้นพบ. "
"{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}ตัวอย่างพรอมต์*เว็บไซต์"

#: 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}ตัวอย่างพรอมต์*ฟื้นฟูเกม"

#. {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 เพื่อสร้างเกมนี้จากการปฏิบัติการของ "
"กู้คืนตรรกะการเล่นเกมในซีและทดสอบกับเดิม{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 ""
"โปรไฟล์แบบไม่มี GUI บน 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 "ร่วมกันสร้าง REA"

#: 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 เพื่อเล่นการฟื้นฟู รหัสและคำอธิบายข้างต้นยังคงอ่านได้"

#~ 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}ตัวอย่างพรอมต์*เกมไดโนเสาร์"

#~ 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}พร้อมท์ตัวอย่าง·สร้างปุ่ม%ใหม่"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}Read the FAQ{ph1}, {ph2}chat with us on Discord{ph3}, or {ph4}open a "
#~ "GitHub issue{ph5} for bugs and feature requests."
#~ msgstr ""
#~ "{ph0}อ่านคำถามที่พบบ่อย{ph1}, {ph2}แชทกับเราใน Discord{ph3} หรือ {ph4}เปิด "
#~ "GitHub ปัญหา{ph5} สำหรับข้อบกพร่องและการร้องขอคุณสมบัติ"

#~ 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}เรื่องคืออะไร?{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 ให้เครื่องมือแก่ผู้ช่วยเขียนโค้ด AI ของคุณ "
#~ "เพื่อดูโปรแกรมและอธิบายการทำงาน"

#~ 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}ผู้ช่วย AI{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} เพิ่ม {ph2}0.001{ph3} "
#~ "แต่ละการปรับปรุงโดยไม่ต้องปะทะกันในขณะที่ความเร็วอยู่ด้านล่าง {ph4}13{ph5}."

#, 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 ""
#~ "แบ่งปันการตรวจสอบและได้รับความช่วยเหลือจากคนอื่นๆ REA ผู้ใช้บน Discord. "
#~ "ทำตาม REA การปรับปรุงโครงการ"

#~ msgctxt "page:index.html"
#~ msgid "See how REA works ↓"
#~ msgstr "ดูว่า REA ทำงานอย่างไร ↓"

#~ msgctxt "page:index.html"
#~ msgid "Follow @reatools on X"
#~ msgstr "ดูบทสนทนาซ่อนบทสนทนา"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "One question: {ph0}why does Calculator give 220 for {ph1}?{ph2}"
#~ msgstr "ตัวอย่าง: {ph0}ทำไมเครื่องคิดเลขจึงได้ 220 เมื่อคำนวณ {ph1}?{ph2}"

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "We saw why {ph0}{ph1} gives 220.{ph2} Now let’s recover the rules for both +"
#~ " and ×, and try them."
#~ msgstr ""
#~ "เราเห็นว่าทำไม {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 "Android,เกมส์, Electron รหัส,ตัวเลขและผลการตรวจสอบ"

#~ 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 ""
#~ "ค้นหา Aegisการคำนวณรหัสหกหลักในการเปิดตัวของ APK. ติดตามวิธีการสร้างด้วย 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 ""
#~ "ออกแบบกราฟิก,ออกแบบโลโก้ Notionบรรจุ JavaScript. "
#~ "การป้องกันไวรัสมัลแวร์และอุปกรณ์ที่หายไปสำหรับมาร์ทโฟนและแท็บเล็"

#~ 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ล็กการตรวจสอบกับพฤติกรรมเดิมและทั้งหมด 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 ""
#~ "คำสั่งนี้ใช้เชลล์ที่มีการสนับสนุนเอกสารที่นี่เช่นการทุบตีหรือ "
#~ "ตัวแทนของคุณสามารถทำงานได้เหมือนกัน 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 ""
#~ "แทนที่ทั้งสองพาธด้วยการติดตั้งที่มีอยู่ของคุณ "
#~ "การตั้งค่าการตรวจสอบพวกเขาและบันทึกการตั้งค่าที่ถูกต้องสำหรับลูกค้าที่คุณเลือก"
#~ " บน Linux แขน64 คุณอาจจำเป็นต้องสร้าง Ghidraพื้นเมืองแยกต่างหาก"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Copy fnm installation command for macOS"
#~ msgstr "สำเนาคำสั่งการติดตั้งสำหรับ macOS"

#~ 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 ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Install Claude Desktop on Windows or macOS and sign in. Quit it completely "
#~ "before running REA setup in your terminal. Choose {ph0}, approve the plan, "
#~ "then reopen Claude and start a chat."
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "In the terminal you prepared above, install Codex:"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "Then start it:"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "Open its AI chat and choose Agent mode. In Windsurf, open Cascade; in VS "
#~ "Code, set up GitHub Copilot first."
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "{ph0}Cursor setup{ph1} · {ph2}Windsurf setup{ph3} · {ph4}VS Code and Copilot"
#~ " setup{ph5}"
#~ msgstr ""

#~ msgctxt "page:get-started/index.html"
#~ msgid "OpenCode · choose a model provider"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:get-started/index.html"
#~ msgid ""
#~ "The installer needs {ph0} and {ph1} (on Debian/Ubuntu: {ph2}). Close the "
#~ "terminal, open it again, then:"
#~ msgstr ""
#~ "ความต้องการการติดตั้ง {ph0} และ {ph1} (บนเดเบียน/อูบุนตู: {ph2}). "
#~ "ปิดสถานีเปิดอีกครั้งแล้ว:"

#~ 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 ""
#~ "ถ้าPowerShellในภายหลังกล่าวว่า "
#~ "{ph0}\"การเรียกใช้สคริปต์ถูกปิดใช้งานในระบบนี้\"{ph1} เมื่อคุณวิ่ง {ph2} "
#~ "เรียกใช้ครั้งนี้และลองอีกครั้ง:"

#~ 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 "เชื่อมต่อตัวแทนการเข้ารหัสของคุณ"

#~ 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 ""
#~ "ตัวแทนการเข้ารหัสเป็นผู้ช่วยปัญญาประดิษฐ์ที่ทำงานบนคอมพิวเตอร์ของคุณแทนที่จะเป็นใ"
#~ " มันสามารถอ่านไฟล์และเรียกใช้คำสั่งและจะถามก่อนที่จะทำการเปลี่ยนแปลง 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. ลงชื่อเข้าใช้ด้วยบัญชีแชทของคุณ"

#, 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 ""
#~ "จากนั้นเปิดและคัดลอกพร้อมท์ด้านล่างลงไป ตัวแทนทำงาน "
#~ "REAการติดตั้งและแสดงให้คุณเห็นแผนก่อนที่จะเปลี่ยนแปลงอะไร"

#~ 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 ""
#~ "ไบนารีพื้นเมืองต้องการเครื่องมือวิเคราะห์ท้องถิ่น "
#~ "เลือกและกำหนดค่าหนึ่งด้านล่างแล้วให้ REA ปฏิบัติการหรือห้องสมุดของคุณ"

#~ 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 ""
#~ "ใช้ที่มีอยู่ Ghidra 12.1.การติดตั้งเอ็กซ์และเจดีเค 64 บิต 21 หรือใหม่กว่าบน "
#~ "Linux หรือ macOS 64 หรือ 64 แขน คุณ Ghidra "
#~ "การติดตั้งต้องใช้ตัวถอดคอมไพเลอร์พื้นเมืองสำหรับสถาปัตยกรรมโฮสต์ของคุณ "
#~ "ตั้งค่าพาธก่อนรันการตั้งค่า:"

#~ 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 "
#~ "การประมวลผลข้อมูล,คีย์ข้อมูล,การพิมพ์ดีดคัดลอก 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} ในแฟ้มเจสัน "
#~ "ที่มีอยู่ {ph3} วัตถุที่มี {ph4} สามารถเข้าชมได้ จุด 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 ""
#~ "รายละเอียดที่แนบมาใช้ต้นน้ำมรดก 1.4.0 "
#~ "เครื่องมือที่มีไบนารีเดิมเปิดอยู่แล้วใน IDA. "
#~ "การตลาดทางอินเทอร์เน็ต,การขาย,การตลาด,การโฆษณา,รายชื่อผู้มุ่งหวัง "
#~ "{ph0};การตรวจสอบจริงครอบคลุม IDA 9.3 Windows 64 หัวหน้างาน "
#~ "แพทย์ตรวจสอบการลงทะเบียนโดยไม่ต้องเริ่มต้น 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 เส้นทางปฏิบัติการเดิมด้วย {ph0} ใน CLI งคุณ สำหรับตัวแทนรวมถึง {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 "ตรวจสอบลูกค้าหนึ่งราย"

#~ 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 "คัดลอกคำสั่งเชื่อมต่อ Ghidra สำหรับ macOS และ Linux"

#~ 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 · 13 ตุลาคม 2026 · ฉบับร่างสำหรับตรวจทาน"

#~ msgctxt "page:index.html"
#~ msgid "Setup guide"
#~ msgstr "คู่มือการติดตั้ง"

#~ msgctxt "page:get-started/index.html"
#~ msgid "Windows PowerShell"
#~ msgstr "Windows PowerShell"

#~ msgctxt "page:get-started/index.html"
#~ msgid "macOS · Homebrew"
#~ msgstr "macOS · Homebrew"

#~ msgctxt "runtime"
#~ msgid "Copy"
#~ msgstr "คัดลอก"

#~ 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 "ฟื้นฟู*ดิโน-ความเร็วเจเอส"

#~ 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}หน้า*แสดงผลเจเอส{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}สะพาน·โหลดล่วงหน้าเจเอส{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}ตัวจัดการ*หลักเจเอส{ph1}{ph2}เขียนบันทึกซีเอสวี{ph3}{ph4}เรียกตัวจัดรูปแบบใน"
#~ " {ph5} และเขียนไฟล์{ph6}"

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid ""
#~ "{ph0}›{ph1}{ph2}Predict the CSV for a note with id 1 and title Hello, "
#~ "\"REA\". Then run the example’s toCsv formatter with Node.js to check it. "
#~ "Show the prediction and actual output.{ph3}{ph4}{ph5}"
#~ msgstr ""
#~ "{ph0}›{ph1}{ph2}ทำนาย CSV สำหรับบันทึกที่มีรหัส 1 และชื่อสวัสดี\"REA\". "
#~ "การเขียนข้อความโฆษณา,การเขียนในนามคนอื่น,บทความ 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} พิมพ์วี 22.19+,24.11+หรือวี 26+พร้อมแล้ว "
#~ "ถ้าพิมพ์รุ่นเก่าหรือ\"ไม่รู้\"/\"ไม่พบคำสั่ง\",ติดตั้ง Node.js 24 ลิตร:"

#, 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}ดาวน์โหลดส่งออกเจเอส{ph3} · "
#~ "{ph4}ดาวน์โหลดบันทึกย่อเจสัน{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 "
#~ "อ่านคำนวณเอ็กเซส{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 เพื่อตรวจสอบเอจิส-เวอร์ชั่น 3.4.3เอพีเค "
#~ "หาวิธีที่จะสร้างรหัสล็อกอินหกหลักอธิบายว่าทำไมมันเปลี่ยนทุก 30 "
#~ "วินาทีและสร้างการสาธิตขนาดเล็กที่ฉันสามารถเปลี่ยนเวลา{ph3}{ph4}{ph5}"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · API member"
#~ msgstr "แท็บ_เบราว์เซอร์_ดู/โหลดล่วงหน้าสมาชิกเจเอส·เอพีไอ"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "tab_browser_view/preload.js · IPC helper"
#~ msgstr "แท็บ_เบราว์เซอร์_ดู/โหลดล่วงหน้าผู้ช่วยเจเอส·ไอพีซี"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · handler helper"
#~ msgstr "หลัก/ดัชนีผู้ช่วยผู้จัดการ"

#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "main/index.js · clipboard receiver"
#~ msgstr "หลัก/ดัชนีเครื่องรับคลิปบอร์ด"

#~ msgctxt "page:first-investigation/index.html"
#~ msgid "main.js · lines 8–12"
#~ msgstr "กเขาเจเอส*สาย 8-12"

#~ msgctxt "page:guides/browser/index.html"
#~ msgid "export.js · example source excerpt"
#~ msgstr "งกันการแก้ไขข้อผิดพลาด"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "renderer.js · example source"
#~ msgstr "แสดงผลรือไม่"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "preload.js · example source"
#~ msgstr "โหลดก่อนรือไม่"

#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "main.js · example source"
#~ msgstr "กเขารือไม่"

#~ msgctxt "page:index.html"
#~ msgid "REA · loaded index.js · selected lines"
#~ msgstr "REA*ดัชนีโหลดเจเอส*สายที่เลือกไว้"

#, 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 "
#~ "การตั้งค่าล่าสุด "
#~ "แสดงแผนการตั้งค่าเพื่อขออนุมัติจากนั้นตรวจสอบการติดตั้ง{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 "
#~ "เมื่อต้องการค้นหาสิ่งที่เกิดขึ้นเมื่อฉันคลิกบันทึกการส่งออก "
#~ "แสดงที่บันทึกงเขตข้อมูลที่มีและไฟล์ที่เกี่ยวข้องและบรรทัด{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 "
#~ "การตั้งค่าล่าสุด "
#~ "แสดงแผนการตั้งค่าเพื่อขออนุมัติจากนั้นตรวจสอบการติดตั้ง{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 "
#~ "การตั้งค่าล่าสุด "
#~ "แสดงแผนการตั้งค่าเพื่อขออนุมัติจากนั้นตรวจสอบการติดตั้ง{ph3}{ph4}{ph5}"

#~ msgctxt "page:index.html"
#~ msgid "0x5b"
#~ msgstr "0*5 บาท"

#~ msgctxt "page:index.html"
#~ msgid "0x5c"
#~ msgstr "0*5 องศาเซลเซียส"

#~ msgctxt "page:index.html"
#~ msgid "0x64"
#~ msgstr "0*64"

#, 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 "0*00406400"

#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
#~ msgid "× pan_scale"
#~ msgstr "×แพน_ขนาด"

#, python-brace-format
#~ msgctxt "shared"
#~ msgid "{ph0}REA{ph1}{ph2}Reverse Engineer Anything{ph3}"
#~ msgstr "{ph0}REA{ph1}{ph2}วิศวกรย้อนกลับอะไร{ph3}"

#, python-brace-format
#~ msgctxt "shared"
#~ msgid ""
#~ "{ph0}Showcases{ph1} {ph2}Blog{ph3} {ph4}Get started{ph5} {ph6}Guides{ph7} "
#~ "{ph8}FAQ{ph9}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "shared"
#~ msgid ""
#~ "{ph0}Source{ph1}{ph2}MIT license{ph3}{ph4}Join the community{ph5}{ph6}Follow"
#~ " us on X{ph7}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:blog/touhou-reconstruction/index.html"
#~ msgid "{ph0}TH08{ph1}{ph2}→{ph3}{ph4}TH095{ph5}{ph6}→{ph7}{ph8}TH04{ph9}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:examples/dino-lab/index.html"
#~ msgid "{ph0}REA · selected script source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0}main.js · lines 8–12{ph1}{ph2}Source{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:first-investigation/index.html"
#~ msgid "{ph0}Expected formatter output{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/browser/index.html"
#~ msgid "{ph0}export.js · example source excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Instructions{ph1} {ph2}→{ph3} {ph4}Caller{ph5} {ph6}→{ph7} "
#~ "{ph8}Constants{ph9} {ph10}→{ph11} {ph12}C function{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Button{ph1} {ph2}→{ph3} {ph4}Preload API{ph5} {ph6}→{ph7} {ph8}IPC{ph9}"
#~ " {ph10}→{ph11} {ph12}CSV file{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/index.html"
#~ msgid ""
#~ "{ph0}Your click{ph1} {ph2}→{ph3} {ph4}Captured request{ph5} {ph6}→{ph7} "
#~ "{ph8}Export script{ph9}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}renderer.js · example source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}preload.js · example source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}main.js · example source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/javascript/index.html"
#~ msgid "{ph0}REA result · summary.ipc excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA instruction excerpt · 0x406409{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA caller excerpt · 0x411f5b{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}REA byte results · interpreted as little-endian doubles{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:guides/native/index.html"
#~ msgid "{ph0}Recovered C · excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid ""
#~ "{ph0}See how REA works ↓{ph1} {ph2}Setup guide{ph3} {ph4}Showcases →{ph5}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA · loaded index.js · selected lines{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Selected settings from the inspected script{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Readable summary of the % handler{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}REA · selected original instructions{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Operator IDs · Microsoft’s source{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:index.html"
#~ msgid "{ph0}Join the community{ph1} {ph2}Follow @reatools on X{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA → agent · selected results{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA → agent · methods and callers{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA · selected decompiled Java{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}Readable summary · agent's interpretation{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid "{ph0}REA · generateOTP, complete body{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/aegis/index.html"
#~ msgid ""
#~ "{ph0}Download Aegis APK{ph1}{ph2}Download Android analysis provider{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · selected results{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · selected instructions{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Agent → REA · read_bytes{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}REA → agent · seventh entries{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Original executable · SHA-256{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/ctf/index.html"
#~ msgid "{ph0}Download the original challenge{ph1}{ph2}Download solver{ph3}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA result · pseudocode excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Agent → REA · {ph1}{ph2}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA → agent · instruction excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA → agent · caller excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Agent → REA · two {ph1} requests{ph2}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}REA byte results · decoded as doubles{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/dx-ball/index.html"
#~ msgid "{ph0}Start with your own target{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}APK{ph1} {ph2}→{ph3} {ph4}Generating code{ph5} {ph6}→{ph7} "
#~ "{ph8}Recovered rule{ph9} {ph10}→{ph11} {ph12}Adjustable clock{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Binary{ph1} {ph2}→{ph3} {ph4}Checking code{ph5} {ph6}→{ph7} "
#~ "{ph8}Equations{ph9} {ph10}→{ph11} {ph12}Correct!{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Executable{ph1} {ph2}→{ph3} {ph4}REA findings{ph5} {ph6}→{ph7} "
#~ "{ph8}Recovered C{ph9} {ph10}→{ph11} {ph12}Validation{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Packaged app{ph1} {ph2}→{ph3} {ph4}Exposed API{ph5} {ph6}→{ph7} "
#~ "{ph8}IPC wrappers{ph9} {ph10}→{ph11} {ph12}Clipboard{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/index.html"
#~ msgid ""
#~ "{ph0}Original DOS code{ph1} {ph2}→{ph3} {ph4}REA instructions{ph5} "
#~ "{ph6}→{ph7} {ph8}Angle calculation{ph9} {ph10}→{ph11} {ph12}Bullet "
#~ "ring{ph13}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Exposed page API{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Renderer IPC call{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Sent to the system clipboard{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Saved locally by Notion{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Markdown input{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Structured parser output · excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/notion/index.html"
#~ msgid "{ph0}Analyze your own app{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Agent → REA{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}REA → agent · selected fields{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Agent → REA · {ph1}{ph2}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}REA → agent · instruction excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Same function result · aim excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Corresponding maintained C++{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Ring macro · TH04 branch, excerpt{ph1}"
#~ msgstr ""

#, python-brace-format
#~ msgctxt "page:showcase/th04/index.html"
#~ msgid "{ph0}Angle and velocity · source excerpt{ph1}"
#~ msgstr ""
