14755 lines
580 KiB
Plaintext
14755 lines
580 KiB
Plaintext
#
|
||
msgid ""
|
||
msgstr ""
|
||
"Project-Id-Version: REA website\n"
|
||
"Language: vi\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:103
|
||
msgctxt "page:blog/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:blog/index.html"
|
||
msgid "{ph0}Home{ph1} / Blog"
|
||
msgstr "{ph0}Nhà{ph1} / Blog"
|
||
|
||
#: website/public/blog/index.html:195
|
||
msgctxt "page:blog/index.html"
|
||
msgid "Blog."
|
||
msgstr "Blog."
|
||
|
||
#: website/public/blog/index.html:196
|
||
msgctxt "page:blog/index.html"
|
||
msgid "Thoughts on reverse engineering."
|
||
msgstr "Suy nghĩ về kỹ thuật đảo ngược."
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/blog/index.html:214
|
||
#, python-brace-format
|
||
msgctxt "page:blog/index.html"
|
||
msgid "Game reconstruction{ph0}Essay"
|
||
msgstr "Tái thiết trò chơi{ph0}Bài luận"
|
||
|
||
#: website/public/blog/index.html:216
|
||
msgctxt "page:blog/index.html"
|
||
msgid "The industrial revolution in reverse engineering"
|
||
msgstr "Cuộc cách mạng công nghiệp trong kỹ thuật đảo ngược"
|
||
|
||
#: website/public/blog/index.html:217
|
||
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 ""
|
||
"NHỮNG gì HƯỚNG DẪN SỬ DỤNG LẠI VÀ tái TẠO TH08, TH095 và TH04 đã dạy tôi về "
|
||
"các agent, xác minh và kiến thức mà các hợp chất trong các dự án."
|
||
|
||
#: website/public/blog/index.html:207 website/public/blog/index.html:222
|
||
msgctxt "page:blog/index.html"
|
||
msgid "Read the article"
|
||
msgstr "Đọc bài viết"
|
||
|
||
#: website/public/blog/index.html:225
|
||
msgctxt "page:blog/index.html"
|
||
msgid "By N0zoM1z0 · 10 October 2026"
|
||
msgstr "Bởi N0zoM1z0 * 10 tháng mười 2026"
|
||
|
||
#. {ph0}: <span aria-hidden="true">
|
||
#. {ph1}: </span>
|
||
#: 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/examples/dino-lab/index.html:475
|
||
#: website/public/faq/index.html:573
|
||
#: website/public/first-investigation/index.html:523
|
||
#: website/public/get-started/index.html:882
|
||
#: 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:1191
|
||
#: 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
|
||
#, python-brace-format
|
||
msgctxt "shared"
|
||
msgid "{ph0}↑{ph1} Top"
|
||
msgstr "{ph0}↑{ph1} Hàng đầu"
|
||
|
||
#: website/public/blog/index.html:6
|
||
msgctxt "page:blog/index.html"
|
||
msgid "REA Blog — Thoughts on Reverse Engineering"
|
||
msgstr "REA Blog-Suy Nghĩ Về Kỹ Thuật Đảo Ngược"
|
||
|
||
#: 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 ""
|
||
"Suy nghĩ về kỹ thuật đảo ngược, dựa trên kinh nghiệm thực tế VỚI CÁC agent "
|
||
"REA và AI."
|
||
|
||
#: website/public/blog/index.html:75 website/public/blog/index.html:88
|
||
#: website/public/blog/reverse-engineering-models/index.html:75
|
||
#: website/public/blog/reverse-engineering-models/index.html:88
|
||
#: website/public/blog/touhou-reconstruction/index.html:75
|
||
#: website/public/blog/touhou-reconstruction/index.html:88
|
||
#: website/public/examples/dino-lab/index.html:75
|
||
#: website/public/examples/dino-lab/index.html:88
|
||
#: website/public/faq/index.html:75 website/public/faq/index.html:88
|
||
#: website/public/first-investigation/index.html:75
|
||
#: website/public/first-investigation/index.html:88
|
||
#: website/public/get-started/index.html:75
|
||
#: website/public/get-started/index.html:88
|
||
#: website/public/guides/browser/index.html:75
|
||
#: website/public/guides/browser/index.html:88
|
||
#: website/public/guides/index.html:75 website/public/guides/index.html:88
|
||
#: website/public/guides/javascript/index.html:75
|
||
#: website/public/guides/javascript/index.html:88
|
||
#: website/public/guides/native/index.html:75
|
||
#: website/public/guides/native/index.html:88 website/public/index.html:75
|
||
#: website/public/index.html:88 website/public/showcase/aegis/index.html:75
|
||
#: website/public/showcase/aegis/index.html:88
|
||
#: website/public/showcase/ctf/index.html:75
|
||
#: website/public/showcase/ctf/index.html:88
|
||
#: website/public/showcase/dx-ball/index.html:75
|
||
#: website/public/showcase/dx-ball/index.html:88
|
||
#: website/public/showcase/index.html:75 website/public/showcase/index.html:88
|
||
#: website/public/showcase/notion/index.html:75
|
||
#: website/public/showcase/notion/index.html:88
|
||
#: website/public/showcase/th04/index.html:75
|
||
#: website/public/showcase/th04/index.html:88
|
||
msgctxt "shared"
|
||
msgid ""
|
||
"REA — Find out how software works. Reverse engineering with your coding "
|
||
"agent."
|
||
msgstr ""
|
||
"REA-Tìm hiểu cách thức hoạt động của phần mềm. Kỹ thuật đảo ngược với agent "
|
||
"mã hóa của bạn."
|
||
|
||
#: website/public/blog/index.html:108
|
||
#: website/public/blog/reverse-engineering-models/index.html:108
|
||
#: website/public/blog/touhou-reconstruction/index.html:108
|
||
#: website/public/examples/dino-lab/index.html:109
|
||
#: website/public/faq/index.html:108
|
||
#: website/public/first-investigation/index.html:108
|
||
#: website/public/get-started/index.html:108
|
||
#: website/public/guides/browser/index.html:108
|
||
#: website/public/guides/index.html:108
|
||
#: website/public/guides/javascript/index.html:108
|
||
#: website/public/guides/native/index.html:108 website/public/index.html:110
|
||
#: website/public/showcase/aegis/index.html:109
|
||
#: website/public/showcase/ctf/index.html:108
|
||
#: website/public/showcase/dx-ball/index.html:108
|
||
#: website/public/showcase/index.html:108
|
||
#: website/public/showcase/notion/index.html:108
|
||
#: website/public/showcase/th04/index.html:108
|
||
msgctxt "shared"
|
||
msgid "REA home"
|
||
msgstr "Trang chủ 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/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 "Main navigation"
|
||
msgstr "Điều hướng chính"
|
||
|
||
#: website/public/blog/index.html:130
|
||
#: website/public/blog/reverse-engineering-models/index.html:130
|
||
#: website/public/blog/touhou-reconstruction/index.html:130
|
||
#: website/public/examples/dino-lab/index.html:131
|
||
#: website/public/faq/index.html:130
|
||
#: website/public/first-investigation/index.html:130
|
||
#: website/public/get-started/index.html:130
|
||
#: website/public/guides/browser/index.html:130
|
||
#: website/public/guides/index.html:130
|
||
#: website/public/guides/javascript/index.html:130
|
||
#: website/public/guides/native/index.html:130 website/public/index.html:132
|
||
#: website/public/showcase/aegis/index.html:131
|
||
#: website/public/showcase/ctf/index.html:130
|
||
#: website/public/showcase/dx-ball/index.html:130
|
||
#: website/public/showcase/index.html:130
|
||
#: website/public/showcase/notion/index.html:130
|
||
#: website/public/showcase/th04/index.html:130
|
||
msgctxt "shared"
|
||
msgid "REA on GitHub"
|
||
msgstr "REA TRÊN GitHub"
|
||
|
||
#: website/public/blog/index.html:150
|
||
#: website/public/blog/reverse-engineering-models/index.html:150
|
||
#: website/public/blog/touhou-reconstruction/index.html:150
|
||
#: website/public/examples/dino-lab/index.html:151
|
||
#: website/public/faq/index.html:150
|
||
#: website/public/first-investigation/index.html:150
|
||
#: website/public/get-started/index.html:150
|
||
#: website/public/guides/browser/index.html:150
|
||
#: website/public/guides/index.html:150
|
||
#: website/public/guides/javascript/index.html:150
|
||
#: website/public/guides/native/index.html:150 website/public/index.html:152
|
||
#: website/public/showcase/aegis/index.html:151
|
||
#: website/public/showcase/ctf/index.html:150
|
||
#: website/public/showcase/dx-ball/index.html:150
|
||
#: website/public/showcase/index.html:150
|
||
#: website/public/showcase/notion/index.html:150
|
||
#: website/public/showcase/th04/index.html:150
|
||
msgctxt "shared"
|
||
msgid "Join REA on Discord"
|
||
msgstr "Tham gia Discord của REA"
|
||
|
||
#: website/public/blog/index.html:169
|
||
#: website/public/blog/reverse-engineering-models/index.html:169
|
||
#: website/public/blog/touhou-reconstruction/index.html:169
|
||
#: website/public/examples/dino-lab/index.html:170
|
||
#: website/public/faq/index.html:169
|
||
#: website/public/first-investigation/index.html:169
|
||
#: website/public/get-started/index.html:169
|
||
#: website/public/guides/browser/index.html:169
|
||
#: website/public/guides/index.html:169
|
||
#: website/public/guides/javascript/index.html:169
|
||
#: website/public/guides/native/index.html:169 website/public/index.html:171
|
||
#: website/public/showcase/aegis/index.html:170
|
||
#: website/public/showcase/ctf/index.html:169
|
||
#: website/public/showcase/dx-ball/index.html:169
|
||
#: website/public/showcase/index.html:169
|
||
#: website/public/showcase/notion/index.html:169
|
||
#: website/public/showcase/th04/index.html:169
|
||
msgctxt "shared"
|
||
msgid "Follow REA on X"
|
||
msgstr "Theo DÕI REA Trên X"
|
||
|
||
#: website/public/blog/index.html:244
|
||
msgctxt "page:blog/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:103
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Blog{ph3} / Touhou reconstruction"
|
||
msgstr "{ph0}Nhà{ph1} / {ph2}Blog{ph3} / Tái thiết Touhou"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:198
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Essay · Touhou reconstruction"
|
||
msgstr "Tiểu luận * Tái Thiết Touhou"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:199
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "The industrial revolution in reverse engineering."
|
||
msgstr "Cuộc cách mạng công nghiệp trong kỹ thuật đảo ngược."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:200
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "By N0zoM1z0 · 10 October 2026"
|
||
msgstr "Bởi N0zoM1z0 * 10 tháng mười 2026"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:202
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Takeaway"
|
||
msgstr "Điểm chính"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:204
|
||
#, 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}Cung cấp cho các agent quyền tự chủ trong cuộc điều tra.{ph1} Đặt mục "
|
||
"tiêu rõ ràng và tiêu chí chấp nhận, sau đó để agent quyết định thử gì tiếp "
|
||
"theo."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:209
|
||
#, 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}Sử dụng kho lưu trữ và Git làm bộ nhớ làm việc.{ph1} Giữ lý luận với "
|
||
"mã. Các điểm kiểm tra Git để phiên tiếp theo tiếp tục sau khi cuộc trò "
|
||
"chuyện kết thúc."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:214
|
||
#, 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}Hãy để bằng chứng quyết định những gì bạn yêu cầu.{ph1} Một lời giải "
|
||
"thích tự tin vẫn cần thử nghiệm. \"Không xác định\" là một câu trả lời hợp "
|
||
"lệ khi bằng chứng không đầy đủ."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:219
|
||
#, 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}Kiểm tra tài liệu tham khảo xác minh (oracle) quá.{ph1} Hãy thử các "
|
||
"trường hợp nó nên từ chối. Nếu nó bỏ lỡ một lỗi, hãy xem lại các kết quả "
|
||
"trước đó phụ thuộc vào nó."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:224
|
||
#, 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}CHÚNG ta đang ở trong những ngày đầu CỦA CUỘC cách mạng CÔNG nghiệp CỦA"
|
||
" RE.{ph1} Các phương pháp vẫn đang hình thành. Còn rất nhiều thứ để khám "
|
||
"phá."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:236
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "How experience compounds"
|
||
msgstr "Làm thế nào kinh nghiệm hợp chất"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:237
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}Human direction{ph1} · Goal and acceptance criteria"
|
||
msgstr "{ph0}Hướng của con người{ph1} * Tiêu chí mục tiêu và chấp nhận"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:325
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Autonomy"
|
||
msgstr "Quyền tự chủ"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:326
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Agent"
|
||
msgstr "Trợ lý AI"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/blog/touhou-reconstruction/index.html:327
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Choose an experiment.{ph0}Propose a hypothesis."
|
||
msgstr "Chọn một thử nghiệm.{ph0}Đề xuất một giả thuyết."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:330
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Verification"
|
||
msgstr "Kiểm chứng"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:331
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Oracle"
|
||
msgstr "Chuẩn kiểm chứng"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/blog/touhou-reconstruction/index.html:332
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Test against a{ph0}concrete reference."
|
||
msgstr "Kiểm tra chống lại một{ph0}tham chiếu cụ thể."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:335
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Repository"
|
||
msgstr "Kho mã"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:336
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Working memory"
|
||
msgstr "Bộ nhớ làm việc"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/blog/touhou-reconstruction/index.html:337
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Code, evidence,{ph0}checks and lessons."
|
||
msgstr "Mã, bằng chứng,{ph0}kiểm tra và bài học."
|
||
|
||
#. {ph0}: <br />
|
||
#. {ph1}: <strong>
|
||
#. {ph2}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:339
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Mismatch{ph0}{ph1}Revise the hypothesis{ph2}"
|
||
msgstr "Không phù hợp{ph0}{ph1}Sửa đổi giả thuyết{ph2}"
|
||
|
||
#. {ph0}: <br />
|
||
#. {ph1}: <strong>
|
||
#. {ph2}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:342
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "A better{ph0}{ph1}starting point{ph2}"
|
||
msgstr "Một tốt hơn{ph0}{ph1}điểm bắt đầu{ph2}"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:345
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Reuse"
|
||
msgstr "Tái sử dụng"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:346
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}Pass{ph1} · Keep the result and its evidence"
|
||
msgstr "{ph0}Vượt qua{ph1} * Giữ kết quả và bằng chứng của nó"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:358
|
||
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 ""
|
||
"Mỗi dự án để lại tiếp theo với một điểm khởi đầu tốt hơn. Điều đó bao gồm "
|
||
"sửa chữa các kiểm tra khi chúng tôi phát hiện ra một khoảng cách."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:365
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "In this article"
|
||
msgstr "Trong bài viết này"
|
||
|
||
#. {ph0}: <a href="#august">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:367
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}August 2026{ph1}"
|
||
msgstr "{ph0}Mai 2026{ph1}"
|
||
|
||
#. {ph0}: <a href="#th08">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:368
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}TH08: the continuation{ph1}"
|
||
msgstr "{ph0} TH08 : sự tiếp tục{ph1}"
|
||
|
||
#. {ph0}: <a href="#different-approaches">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:369
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}Two approaches{ph1}"
|
||
msgstr "{ph0}Hai cách tiếp cận{ph1}"
|
||
|
||
#. {ph0}: <a href="#th095">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:370
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}TH095: compounding{ph1}"
|
||
msgstr "{ph0} TH095 : hợp chất{ph1}"
|
||
|
||
#. {ph0}: <a href="#th04">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:371
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}TH04: across architectures{ph1}"
|
||
msgstr "{ph0} TH04: trên các kiến trúc{ph1}"
|
||
|
||
#. {ph0}: <a href="#semantic-reconstruction">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:372
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}From exact to readable{ph1}"
|
||
msgstr "{ph0}Từ chính xác đến có thể đọc được{ph1}"
|
||
|
||
#. {ph0}: <a href="#industrial-shift">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:375
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}The industrial shift{ph1}"
|
||
msgstr "{ph0}Sự thay đổi công nghiệp{ph1}"
|
||
|
||
#. {ph0}: <a href="#possibilities">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:376
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}What becomes possible{ph1}"
|
||
msgstr "{ph0}Điều gì trở nên khả thi{ph1}"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:381
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "What changed in August 2026"
|
||
msgstr "Điều gì đã thay đổi vào tháng 8 năm 2026"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:382
|
||
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 ""
|
||
"Trước khi làm việc này, tôi đã thực hiện rất nhiều kỹ thuật đảo ngược thủ "
|
||
"công. Tôi sẽ kiểm tra một chức năng cho đến khi tôi có một lời giải thích, "
|
||
"sau đó kiểm tra lời giải thích đó chống lại chương trình. Tiếp tục có nghĩa "
|
||
"là dành nhiều thời gian hơn cho chức năng tiếp theo. Nó cũng có nghĩa là giữ"
|
||
" một bức tranh ngày càng lớn trong đầu tôi."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:389
|
||
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 ""
|
||
"Hầu hết CÁC CÔNG VIỆC LẠI của tôi là trên các trò chơi. Tôi tái tạo lại "
|
||
"chúng để hành vi của chúng có thể được hiểu và cuối cùng được đưa vào cổng "
|
||
"phần mềm hoặc mod. Đó là kinh nghiệm đằng sau bài viết này. Phương thức này "
|
||
"có thể hữu ích ở nơi khác, nhưng mỗi trường cần thiết lập những gì nó có thể"
|
||
" kiểm tra đối với một tham chiếu đáng tin cậy."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:396
|
||
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 ""
|
||
"Vào tháng 8 năm 2026, tôi bắt đầu khám phá tái agent-driven nghiêm túc. Tôi "
|
||
"muốn xem một agent có thể đi được bao xa với quyền truy cập vào chương trình"
|
||
" và các công cụ phát triển thông thường. Touhou tái thiết đã cho tôi một dự "
|
||
"án đáng kể trong đó để tìm hiểu."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:402
|
||
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 ""
|
||
"Sự tiến bộ ban đầu thật đáng kinh ngạc. Một cuộc điều tra có thể tiếp tục di"
|
||
" chuyển mà không cần tôi chọn từng bước riêng lẻ. Một so sánh thất bại có "
|
||
"thể gửi các agent cho người gọi khác. Nó có thể viết một chẩn đoán nhỏ và sử"
|
||
" dụng kết quả để quyết định những gì để thử tiếp theo. Cho nó rằng tự do đã "
|
||
"tạo ra sự khác biệt: tôi có thể dành nhiều sự chú ý hơn cho hướng của dự án "
|
||
"và về việc kiểm tra của nó có đáng tin cậy hay không."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:411
|
||
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 ""
|
||
"Tốc độ đã thu hút sự chú ý của tôi đầu tiên. Sau đó, tôi bắt đầu tự hỏi điều"
|
||
" gì sẽ tồn tại ngoài dự án hiện tại. Liệu trò chơi tiếp theo có được hưởng "
|
||
"lợi từ mọi thứ chúng ta vừa học được không?"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:418
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "TH08: building on human work"
|
||
msgstr "TH08: xây dựng trên công việc của con người"
|
||
|
||
#. {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:419
|
||
#, 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}, Đêm Imperishable, bắt đầu như là một sự tiếp nối của {ph2}"
|
||
" GensokyoClub tái thiết{ph3}. Nguồn công khai của họ đã cho tôi một nền tảng"
|
||
" đáng kể. Nó đi kèm với kiến thức về việc xây dựng và lịch sử đóng góp mà "
|
||
"tôi đã lưu giữ trong phần tiếp theo."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:428
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid ""
|
||
"The imported history ends at the public 10 August checkpoint. My independent"
|
||
" continuation began on 13 August. By 19 August, the ledger recorded source "
|
||
"for all 1,107 identified game functions."
|
||
msgstr ""
|
||
"Lịch sử nhập khẩu kết thúc tại trạm kiểm soát ngày 10 tháng 8 công cộng. Sự "
|
||
"tiếp tục độc lập của tôi bắt đầu vào ngày 13 tháng tám. Đến ngày 19 tháng 8,"
|
||
" sổ cái đã ghi lại nguồn cho tất cả 1.107 chức năng trò chơi được xác định."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:433
|
||
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 ""
|
||
"MỘT CỔNG TÁI THIẾT Linux có thể chơi ĐƯỢC đã được cam kết vào ngày 24 tháng "
|
||
"8, khoảng mười một ngày sau khi bắt đầu tiếp tục. Một phiên Bản Web theo "
|
||
"sau. BẢN PHÁT HÀNH Linux 64-bit gốc đã đến vào ngày 30 tháng 8."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:438
|
||
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 ""
|
||
"Điều khiến tôi ấn tượng là công việc đã đạt đến một chương trình mà mọi "
|
||
"người có thể chạy. Đến đó yêu cầu các vấn đề sau ngoài một chức năng riêng "
|
||
"lẻ. Ngay cả khi hai hàm trông chính xác trong sự cô lập, chúng có thể vô "
|
||
"tình sử dụng các bản sao riêng biệt của trạng thái đáng lẽ phải được chia "
|
||
"sẻ."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:445
|
||
#, 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 ""
|
||
"Điều này làm cho kiểm tra tham chiếu trung tâm cho công việc. Tôi gọi họ "
|
||
"{ph0}tài liệu tham khảo xác minh (oracles){ph1}. So sánh mã có thể cho chúng"
|
||
" ta biết liệu một hàm được xây dựng lại có tái tạo các hướng dẫn ban đầu hay"
|
||
" không. Kiểm tra thời gian chạy có thể cho chúng tôi biết liệu một tuyến "
|
||
"đường được thực hiện có đạt đến trạng thái mong đợi hay không. Agent đề xuất"
|
||
" một lời giải thích và kiểm tra nó; một sự không phù hợp mang lại cho nó một"
|
||
" cái gì đó cụ thể để điều tra."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:453
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "An exact match with the wrong constant"
|
||
msgstr "Một kết hợp chính xác với hằng số sai"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:454
|
||
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 ""
|
||
"Một tài liệu tham khảo xác minh (oracle) là phần mềm ai đó đã viết. TH08 đã"
|
||
" cho tôi một lời nhắc nhở rõ ràng về bao nhiêu có thể phụ thuộc vào phần mềm"
|
||
" đó."
|
||
|
||
#. {ph0}: <code>0.0</code>
|
||
#. {ph1}: <code>128.0</code>
|
||
#: website/public/blog/touhou-reconstruction/index.html:458
|
||
#, 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 ""
|
||
"Vào tháng 9, một lỗi được báo cáo bởi một cổng Chuyển Đổi Xuôi dòng đã dẫn "
|
||
"trở lại mục tự động thu thập. Nguồn tái tạo kiểm tra sức mạnh của người chơi"
|
||
" chống lại {ph0}. Bản gốc được sử dụng {ph1}, ngưỡng công suất tối đa."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:464
|
||
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 ""
|
||
"Công suất bình thường là không âm, vì vậy việc kiểm tra công suất được xây "
|
||
"dựng lại luôn được thỏa mãn một cách hiệu quả. Phía trên dòng bộ sưu tập, "
|
||
"trò chơi có thể thu hút các vật phẩm mà không cần sức mạnh tối đa. Các ngoại"
|
||
" lệ khác trong điều kiện là chính xác. Điều này liên tục thay đổi hành vi."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:471
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}Yet the function had already passed the exact comparison.{ph1}"
|
||
msgstr "{ph0}Tuy nhiên, chức năng đã vượt qua so sánh chính xác.{ph1}"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:477
|
||
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 ""
|
||
"Việc xây dựng lại có thể đặt hằng số tại một địa chỉ khác. Công cụ so sánh "
|
||
"chiếm điều đó bằng cách điều chỉnh địa chỉ trong các hướng dẫn được biên "
|
||
"dịch trước khi so sánh chúng với bản gốc. Nhưng nó không bao giờ kiểm tra "
|
||
"giá trị dấu phẩy động được lưu trữ tại địa chỉ được tham chiếu."
|
||
|
||
#. {ph0}: <code>128.0</code>
|
||
#. {ph1}: <code>0.0</code>
|
||
#: website/public/blog/touhou-reconstruction/index.html:484
|
||
#, 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 ""
|
||
"Điều đó để lại một lỗ trong séc. Nó có thể chỉ ra hướng dẫn được xây dựng "
|
||
"lại tại của bản gốc {ph0} trong khi nguồn tin vẫn nói {ph1}. Các byte hướng "
|
||
"dẫn phù hợp. Nguồn có nghĩa là một cái gì đó khác nhau."
|
||
|
||
#. {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:490
|
||
#, 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 ""
|
||
"Các {ph0}2 tháng chín sửa chữa{ph1} đã sửa nguồn và thực hiện so sánh kiểm "
|
||
"tra các byte thực tế của hằng số được tham chiếu. A {ph2}kiểm toán rộng "
|
||
"hơn{ph3} sau đó kiểm tra 1.548 tham chiếu liên tục dấu phẩy động. Nó tìm "
|
||
"thấy mười hai tài liệu tham khảo không chính xác khác trên năm chức năng "
|
||
"được chấp nhận."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:501
|
||
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 ""
|
||
"So sánh bây giờ kiểm tra mọi hằng số dấu phẩy động như vậy. Các thử nghiệm "
|
||
"của nó bao gồm các giá trị cố tình sai để đảm bảo chúng bị từ chối. Chúng "
|
||
"tôi cũng phải xem lại kết quả đã vượt qua kiểm tra yếu hơn."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:506
|
||
#, 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}Tài liệu tham khảo xác minh (oracle) cũng cần được xây dựng lại.{ph1} "
|
||
"Sửa chữa nó là một phần của việc sửa chữa trò chơi."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:510
|
||
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 ""
|
||
"Điều đó quan trọng khi nhóm chủ yếu là một người làm việc với các agent. Cá "
|
||
"nhân tôi không thể kiểm tra mọi dòng họ sản xuất, vì vậy phần lớn sự tự tin "
|
||
"của tôi nằm trên séc của họ. Điểm mù của tài liệu tham khảo xác minh được "
|
||
"chia sẻ (oracle) có thể ảnh hưởng đến nhiều cuộc điều tra trước khi tôi nhận"
|
||
" thấy nó. Tôi phải hiểu những gì trình kiểm tra thực sự xác minh và kiểm tra"
|
||
" nó chống lại các trường hợp phải thất bại."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:518
|
||
#, 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 ""
|
||
"Khi công việc tiếp tục, những kiểm tra đó đã trở thành một phần của kho lưu "
|
||
"trữ. Vì vậy, các lý do cho các thay đổi nguồn và ghi chú cho phép một phiên "
|
||
"sau đó chọn nơi một phiên trước đó dừng lại. {ph0}Kho lưu trữ mã nguồn đang "
|
||
"trở thành bộ nhớ làm việc của dự án.{ph1}"
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:527
|
||
#, 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}Một lô thành công đã cho chúng tôi cả mã được khôi phục và môi trường "
|
||
"tốt hơn cho lô tiếp theo.{ph1}"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:535
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Two different ideas of reconstruction"
|
||
msgstr "Hai ý tưởng tái thiết khác nhau"
|
||
|
||
#. {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:536
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid ""
|
||
"GensokyoClub's {ph0}public README{ph1} makes its disagreement with this kind"
|
||
" of work explicit. The notice announces that further development will happen"
|
||
" privately until completion. One passage reads:"
|
||
msgstr ""
|
||
"GensokyoClub ' s {ph0}README công CỘNG{ph1} làm cho sự bất đồng của nó với "
|
||
"loại công việc này rõ ràng. Thông báo thông báo rằng việc phát triển thêm sẽ"
|
||
" diễn ra riêng tư cho đến khi hoàn thành. Một đoạn văn đọc:"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:547
|
||
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 ""
|
||
"Sự trỗi dậy của grifters (dịch ngược AI và cổng) trong không gian này lấy từ"
|
||
" tác phẩm của chúng tôi vẽ nên một hình ảnh xấu cho những nỗ lực dịch ngược "
|
||
"trong tương lai…"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:553
|
||
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 ""
|
||
"Thông báo cũng mô tả số điện thoại tâm lý trên các nhà bảo trì. Chính sách "
|
||
"đóng góp của họ không bao gồm các yêu cầu kéo được sản xuất chủ yếu với AI. "
|
||
"Họ đã đặt thời gian rảnh của họ vào công việc khó khăn, và công việc đó đã "
|
||
"giúp tôi tiếp tục có thể. Tôi tôn trọng nỗ lực đằng sau nó. Sự bất đồng tôi "
|
||
"muốn thảo luận là về việc tái thiết nên tiến hành như thế nào và đóng góp "
|
||
"nên được đánh giá như thế nào."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:562
|
||
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 ""
|
||
"Trong quy trình làm việc thủ công tôi biết, phát triển sự hiểu biết về một "
|
||
"chức năng và tái tạo nó thường rơi vào cùng một người. Một dự án phụ thuộc "
|
||
"rất nhiều vào chuyên môn của người đó. Niềm tin vào người đóng góp quan "
|
||
"trọng vì rất nhiều lý do đã xảy ra trong khi họ làm việc."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:569
|
||
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 ""
|
||
"Các dự án hiện tại đã bảo tồn kiến thức trong nguồn của họ và xây dựng các "
|
||
"công cụ. Điều thay đổi đối với tôi là một agent có thể sử dụng kiến thức đó "
|
||
"để tự mình theo đuổi cuộc điều tra tiếp theo."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:574
|
||
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 ""
|
||
"Trong phần tiếp theo của mình, tôi quyết định mục tiêu và tiêu chuẩn để chấp"
|
||
" nhận kết quả. Agent có quyền tự do điều tra rộng rãi. Tái thiết đề xuất của"
|
||
" nó sau đó phải tồn tại các kiểm tra có liên quan. Tôi muốn một người khác "
|
||
"có thể kiểm tra lý do tại sao chúng tôi chọn một triển khai, ngay cả khi một"
|
||
" agent đã làm hầu hết công việc."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:581
|
||
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 ""
|
||
"Đây có thể là một quá trình chuyển đổi khó khăn. Nhiều năm làm việc cẩn thận"
|
||
" có thể trở thành nền tảng cho sự tiếp tục di chuyển nhanh hơn nhiều. Điều "
|
||
"đó đặt ra câu hỏi thực sự về tín dụng. Nó cũng thay đổi những gì các nhà bảo"
|
||
" trì cần biết trước khi chấp nhận đóng góp."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:587
|
||
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 ""
|
||
"Sự tương tự công nghiệp giúp tôi suy nghĩ về điều này. Trong một nghề thủ "
|
||
"công, phần lớn quá trình phụ thuộc vào kỹ năng của người thực hiện nó. Máy "
|
||
"móc thay đổi khi cần kỹ năng đó. Ai đó vẫn phải thiết kế quy trình và nhận "
|
||
"ra khi nào đầu ra của nó sai. Các cộng đồng khác nhau có thể chọn mức độ "
|
||
"thay đổi mà họ muốn thực hiện."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:595
|
||
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 ""
|
||
"Sự lựa chọn của tôi là tiếp tục công khai, với công việc được thừa kế được "
|
||
"ghi có và lịch sử của nó được bảo tồn. Tôi muốn công việc mới có thể xem xét"
|
||
" lại. Điều đó cho chúng ta một cách để hỏi cách tiếp cận này có thể đi bao "
|
||
"xa và học hỏi từ những gì sai trên đường đi."
|
||
|
||
#. {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:601
|
||
#, 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 ""
|
||
"NGUỒN: GensokyoClub ' s {ph0}THÔNG BÁO README{ph1}, đã kiểm tra vào ngày 10 "
|
||
"tháng 10 năm 2026 và {ph2}chính sách đóng góp{ph3}. Trích dẫn là một đoạn "
|
||
"trích rút gọn. TH08 ' s {ph4}tín dụng và xuất xứ{ph5} ghi lại ranh giới "
|
||
"tiếp tục."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:619
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "TH095: experience starts compounding"
|
||
msgstr "TH095: kinh nghiệm bắt đầu ghép"
|
||
|
||
#. {ph0}: <a href="https://github.com/N0zoM1z0/th095">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/touhou-reconstruction/index.html:620
|
||
#, 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}, Bắn Viên Đạn, làm cho giá trị của trải nghiệm đó dễ nhìn "
|
||
"hơn nhiều. Kho lưu trữ của nó bắt đầu vào ngày 29 tháng 8 với các chức năng "
|
||
"trò chơi được xác nhận bằng không trong sổ cái. Chúng tôi vẫn phải học trò "
|
||
"chơi. Nhưng chúng tôi đã biết nhiều hơn về cách bắt đầu tái thiết và cách "
|
||
"giữ cho nó di chuyển."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:628
|
||
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 ""
|
||
"Đến ngày 7 tháng 9, tất cả 697 chức năng trò chơi được xác định đều có "
|
||
"nguồn. Đến ngày 8 tháng 9, 696 đã được chấp nhận là so sánh chính xác. Toàn "
|
||
"bộ chương trình được liên kết vào ngày 9 tháng 9. VIỆC TÁI THIẾT Windows "
|
||
"i386 được đánh dấu có thể chơi được vào ngày 10 tháng 9, khoảng mười hai "
|
||
"ngày sau khi khởi tạo."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:635
|
||
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 ""
|
||
"Tôi thấy điều này thú vị hơn tốc độ của dự án đầu tiên. Một mục tiêu mới có "
|
||
"thể được hưởng lợi từ công việc được thực hiện trên một trò chơi khác. Kinh "
|
||
"nghiệm đã có mặt trong các công cụ và trong cách dự án được tổ chức."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:641
|
||
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 ""
|
||
"VÍ dụ, TH08 đã dạy chúng ta chú ý đến chương trình lắp ráp sớm. Nếu một số "
|
||
"chức năng được phục hồi phụ thuộc vào cùng một trạng thái, các so sánh biệt "
|
||
"lập của chúng sẽ để lại một câu hỏi quan trọng. Chúng ta cần thấy họ làm "
|
||
"việc cùng nhau. Bài học đó đã giúp định hình cách chúng tôi tiếp cận BẢN "
|
||
"dựng toàn bộ CHƯƠNG trình CỦA TH095."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:648
|
||
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 ""
|
||
"Một bài học ở trong đầu tôi rất hữu ích khi tôi ở đó. Một khi nó trở thành "
|
||
"một kiểm tra mà một phiên khác có thể chạy, nó có thể tiếp tục giúp đỡ sau "
|
||
"khi tôi đã chuyển sang. Các agent tiếp theo có thể sử dụng kết quả mà không "
|
||
"cần lặp lại điều tra dẫn đến nó."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:654
|
||
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 ""
|
||
"Lỗi liên tục dấu phẩy động cũng thuộc về bộ nhớ đó. Nó giải thích lý do tại "
|
||
"sao kiểm tra một tài liệu tham khảo cũng yêu cầu kiểm tra dữ liệu đằng sau "
|
||
"nó. Giữ sự điều chỉnh đó bằng mã giúp các dự án sau này tránh kế thừa điểm "
|
||
"mù của séc cũ."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:660
|
||
#, 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}Phương pháp này trở thành một phần của tài liệu bắt đầu cho trò chơi "
|
||
"tiếp theo.{ph1} Chúng ta có thể dành nhiều nỗ lực của dự án tiếp theo cho "
|
||
"những gì thực sự mới về mục tiêu của nó."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:668
|
||
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 ""
|
||
"Lợi ích tương tự có sẵn cho những người tham gia sau này. Họ có thể kiểm tra"
|
||
" một quyết định và chạy lại kiểm tra trước khi tiếp tục công việc. Họ không "
|
||
"phải xây dựng lại toàn bộ lịch sử của dự án để tìm hiểu lý do tại sao nguồn "
|
||
"trông giống như cách nó làm."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:676
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "TH04: the workflow survives a different architecture"
|
||
msgstr "TH04: quy trình làm việc tồn tại trong một kiến trúc khác"
|
||
|
||
#. {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:677
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid ""
|
||
"{ph0}TH04{ph1}, Lotus Land Story, took this work into the PC-98 DOS era. The"
|
||
" target was now a 16-bit environment with four cooperating programs. "
|
||
"Understanding its hardware behavior required different evidence from the "
|
||
"Windows games. Existing {ph2}ReC98 work{ph3} gave us valuable knowledge and "
|
||
"source material here too."
|
||
msgstr ""
|
||
"{ph0} TH04 {ph1}, Lotus Land Story, đã đưa tác phẩm này vào kỷ NGUYÊN PC-98 "
|
||
"dos. Mục tiêu bây giờ là một môi trường 16 bit với bốn chương trình hợp tác."
|
||
" Hiểu được hành vi phần cứng của nó đòi hỏi bằng chứng khác NHAU từ CÁC TRÒ "
|
||
"CHƠI Windows. Hiện có {ph2}ReC98 làm việc{ph3} đã cho chúng tôi kiến thức có"
|
||
" giá trị và tài liệu nguồn ở đây quá."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:686
|
||
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 ""
|
||
"VIỆC tái THIẾT DOS hiện đang hoạt động. Trong thử nghiệm thủ công của tôi, "
|
||
"tôi đã chơi các tuyến Đường Bình thường hoàn chỉnh thông qua kết thúc của "
|
||
"chúng và kiểm tra lưu. Công việc hiện tại là một cổng 64 bit gốc. Thiết lập "
|
||
"phiên bản dos hoạt động trước tiên cung cấp cho cổng đó một tham chiếu."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:692
|
||
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 ""
|
||
"Kiến trúc đã thay đổi những gì chúng tôi cần để điều tra. Nó cũng thay đổi "
|
||
"trình biên dịch và thời gian chạy mà chúng tôi đã kiểm tra công việc của "
|
||
"mình. Nhưng tác nhân vẫn có thể làm theo một câu hỏi cho đến một kết quả và "
|
||
"để kết quả đó hướng dẫn thí nghiệm tiếp theo."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:698
|
||
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 ""
|
||
"Hãy xem xét sự chuyển đổi từ lối chơi sang kết thúc. Chúng ta cần biết trạng"
|
||
" thái nào mang qua ranh giới đó và chương trình nào chịu trách nhiệm về nó. "
|
||
"Đó là điều chúng tôi có thể điều tra chống lại sản phẩm dos. Một khi các "
|
||
"bằng chứng và kiểm tra có sẵn, một agent có thể làm việc thông qua các câu "
|
||
"hỏi nhiều như nó đã làm trên một tiêu đề Windows."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:706
|
||
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 ""
|
||
"ĐÂY là lý do TẠI sao TH04 quan trọng đối với đối số. Một sự thay đổi nền "
|
||
"tảng đáng kể đã không buộc chúng tôi phải bắt đầu lại với một cách làm việc "
|
||
"mới. Kiến trúc đã xác định vấn đề; quy trình làm việc vẫn cho chúng ta một "
|
||
"cách để giải quyết nó."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:712
|
||
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 ""
|
||
"Đối với cổng 64 bit, bây giờ chúng ta có thể kiểm tra triển khai mới chống "
|
||
"lại hành vi đã được phục hồi trên DOS. Kiến thức từ việc tái thiết mang lại "
|
||
"cho cảng một cái gì đó để xây dựng."
|
||
|
||
#. {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:717
|
||
#, 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 ""
|
||
"Dự án nhà nước tính đến ngày 10 tháng 10 năm 2026: {ph0}Tái THIẾT DOS và "
|
||
"kiểm tra thủ công{ph1} · {ph2}Cổng 64-bit{ph3}. Cảng vẫn đang được phát "
|
||
"triển."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:730
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "From exact code to readable code"
|
||
msgstr "Từ mã chính xác đến mã có thể đọc được"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:731
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid ""
|
||
"Once a reconstruction works, I want someone else to be able to understand "
|
||
"it."
|
||
msgstr ""
|
||
"Khi một công trình tái thiết hoạt động, tôi muốn người khác có thể hiểu nó."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:735
|
||
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 ""
|
||
"Đối với tôi, lắp ráp và bù đắp thô có thể cảm thấy như những người bạn cũ. "
|
||
"Tôi nhận ra đây là một định nghĩa hơi bất thường về \"có thể đọc được.\"Hầu "
|
||
"hết mọi người muốn tuân theo logic của trò chơi mà không giữ bố cục bộ nhớ "
|
||
"của tệp thực thi trong đầu."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:741
|
||
#, 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 ""
|
||
"Đó là nơi {ph0}tái tạo ngữ nghĩa{ph1} vào đi. Một trường phục hồi vẫn có thể"
|
||
" được biết đến chủ yếu bằng cách bù đắp của nó. Chúng tôi làm theo cách trò "
|
||
"chơi sử dụng nó cho đến khi chúng tôi có thể giải thích vai trò của nó. Sau "
|
||
"đó, chúng ta có thể đặt cho nó một cái tên có ý nghĩa và một loại phù hợp "
|
||
"với bằng chứng. Chúng tôi giữ lý luận với nguồn để người tiếp theo có thể "
|
||
"thấy cách giải thích đó đến từ đâu."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:749
|
||
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 ""
|
||
"Điều này trở nên đặc biệt quan trọng đối với một cổng phần mềm. Một địa chỉ "
|
||
"tuyệt đối cho tôi biết nơi nào đó sống trong tệp thực thi cũ. Nó cung cấp "
|
||
"một triển khai 64 bit giúp ích rất ít trong việc quyết định đối tượng nào "
|
||
"nên sở hữu trạng thái đó. Để di chuyển hành vi một cách an toàn, chúng ta "
|
||
"cần khôi phục mối quan hệ đằng sau quyền truy cập bộ nhớ cũ."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:756
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "The order I now use is:"
|
||
msgstr "Thứ tự tôi sử dụng bây giờ là:"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:758
|
||
#, 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}Khôi phục một đường cơ sở chính xác.{ph1} Biên dịch các phần được xây "
|
||
"dựng lại với trình biên dịch lịch sử. So sánh mã và dữ liệu có liên quan với"
|
||
" tệp thực thi gốc. Ghi lại sự khác biệt chưa được giải quyết để giai đoạn "
|
||
"tiếp theo có một điểm khởi đầu rõ ràng."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:765
|
||
#, 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}Xây dựng và chơi nó trên nền tảng ban đầu.{ph1} Liên kết các phần đó "
|
||
"vào chương trình thực bằng cách sử dụng kiến trúc và trình biên dịch gốc. "
|
||
"Tập thể dục đường lối chơi quan trọng. Đây là nơi chúng ta có thể tìm thấy "
|
||
"các vấn đề với trạng thái chia sẻ hoặc khởi tạo mà so sánh hàm bị cô lập bị "
|
||
"bỏ lỡ."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:772
|
||
#, 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}Xây dựng lại ngữ nghĩa chống lại cả hai tài liệu tham khảo.{ph1} Lấy "
|
||
"một phần mạch lạc của trò chơi tại một thời điểm và thiết lập nguồn phục hồi"
|
||
" của nó có nghĩa là gì. Cải thiện đại diện của nó trong khi bảo tồn các so "
|
||
"sánh chính xác và xây dựng lịch sử có thể chơi được."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:781
|
||
#, 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}Làm cho cổng hiện đại.{ph1} Di chuyển hành vi đã thiết lập vào môi "
|
||
"trường mới, chẳng hạn như bản dựng 64 bit gốc. Trò chơi nền tảng gốc được "
|
||
"xây dựng lại vẫn là một tài liệu tham khảo để so sánh cách thức hoạt động "
|
||
"của cổng."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/touhou-reconstruction/index.html:788
|
||
#, 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 ""
|
||
"Xây dựng có thể chơi được từ giai đoạn thứ hai trở thành một {ph0}tham chiếu"
|
||
" xác minh thứ hai (oracle){ph1} trong lần thứ ba. Tham chiếu xác minh đầu "
|
||
"tiên (oracle) kiểm tra xem nguồn đã thay đổi của chúng tôi có còn tái tạo mã"
|
||
" và dữ liệu gốc có liên quan hay không. Lần thứ hai kiểm tra xem chương "
|
||
"trình được xây dựng lại vẫn xây dựng và hoạt động chính xác dọc theo các con"
|
||
" đường chúng ta tập thể dục."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:796
|
||
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 ""
|
||
"Họ bắt những sai lầm khác nhau. Thay đổi kiểu có thể thay đổi các hướng dẫn "
|
||
"được tạo. Một sự thay đổi quyền sở hữu có thể để lại hai phần của trò chơi "
|
||
"bằng cách sử dụng các bản sao khác nhau của nhà nước. Giữ cả hai kiểm tra có"
|
||
" sẵn cung cấp cho các agent một thất bại cụ thể để điều tra trước khi thực "
|
||
"hiện một refactor hơn nữa."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:803
|
||
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 ""
|
||
"Một cái tên cần bằng chứng của riêng nó. Một so sánh chính xác không thể cho"
|
||
" chúng ta biết liệu một lĩnh vực có thực sự có nghĩa là \"thời gian bất khả "
|
||
"xâm phạm.\"Chúng tôi phải thiết lập điều đó từ cách trò chơi viết và sử dụng"
|
||
" nó. Nếu ý nghĩa vẫn không chắc chắn, một cái tên trung lập sẽ hữu ích hơn "
|
||
"cho người đọc tiếp theo hơn là một dự đoán tự tin."
|
||
|
||
#. {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:810
|
||
#, 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 ""
|
||
"Chúng tôi đã học được thứ tự này thông qua các dự án. TH08 đã có các cổng "
|
||
"có thể chơi được trước một số cuộc kiểm toán nền tảng lịch sử sau này của "
|
||
"NÓ. Điều đó làm cho một số khiếm khuyết khó nhìn thấy hơn. Các {ph0}Quy "
|
||
"trình làm việc hiện tại của nhà máy{ph1} đặt bản dựng nền tảng gốc lên hàng "
|
||
"đầu, vì vậy công việc ngữ nghĩa có thể sử dụng nó làm tài liệu tham khảo "
|
||
"trước khi bắt đầu chuyển."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:821
|
||
#, 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}Tái thiết chính xác cho chúng ta một tài liệu tham khảo. Tái tạo ngữ "
|
||
"nghĩa làm cho kiến thức phục hồi có thể sử dụng được.{ph1} Một cổng sau đó "
|
||
"có thể xây dựng trên cả hai."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:830
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "What makes this an industrial shift"
|
||
msgstr "Điều gì làm cho điều này một sự thay đổi công nghiệp"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:831
|
||
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 ""
|
||
"Những dự án này đã thay đổi nơi tôi dành sự chú ý của mình. Một khi các "
|
||
"agent có thể tiến hành nhiều cuộc điều tra, việc cải thiện môi trường làm "
|
||
"việc của họ đã trở thành một trong những điều hữu ích nhất mà tôi có thể "
|
||
"làm. Một công cụ tốt hơn có thể giúp với mọi chức năng sau này cần nó."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:838
|
||
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 ""
|
||
"Vấn đề tự chủ ở đây. Bước tiếp theo hữu ích thường trở nên rõ ràng chỉ sau "
|
||
"một thử nghiệm thất bại. Một agent cần đủ tự do để làm theo kết quả đó ở đâu"
|
||
" đó bất ngờ. Nếu phải đợi tôi quy định từng bước, phần lớn công việc vẫn gắn"
|
||
" liền với sự chú ý của tôi."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:845
|
||
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 ""
|
||
"Tôi hy vọng các agent để làm cho giả thuyết sai. Điều quan trọng là liệu "
|
||
"chúng ta có thể kiểm tra chúng và học hỏi từ kết quả hay không. Kiểm tra "
|
||
"thất bại sẽ giúp nó hiểu rõ sai lầm đủ để thử lại. Tôi vẫn phải quyết định "
|
||
"xem bằng chứng tích lũy có hỗ trợ một cột mốc dự án hay không."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:852
|
||
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 cung cấp cho các agent truy cập vào các công cụ phân tích. Một câu hỏi "
|
||
"về người gọi của một chức năng có thể dẫn thẳng vào việc kiểm tra người gọi "
|
||
"đó. Dự án tái thiết cung cấp trình biên dịch và kiểm tra tham chiếu của "
|
||
"riêng nó. Tác nhân có thể sử dụng chúng để kiểm tra nguồn mà nó đề xuất và "
|
||
"xem lời giải thích của nó giữ ở đâu."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:859
|
||
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 ""
|
||
"LỖI TH08 cho thấy lý do tại sao những kiểm tra đó xứng đáng được chú ý kỹ "
|
||
"thuật của riêng họ. Khi so sánh tương tự được sử dụng trên hàng trăm chức "
|
||
"năng, một khoảng cách trong đó có thể lan rộng hơn nhiều so với một sai lầm "
|
||
"trong một lần thực hiện. Kiểm tra trình kiểm tra cải thiện phản hồi có sẵn "
|
||
"cho tất cả những gì sau này hoạt động."
|
||
|
||
#. {ph0}: <a
|
||
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
|
||
#. steam-engine-indicator" >
|
||
#. {ph1}: </a >
|
||
#: website/public/blog/touhou-reconstruction/index.html:866
|
||
#, 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 ""
|
||
"Sự tương tự công nghiệp có một ví dụ lịch sử hữu ích ở đây. Boulton và Watt "
|
||
"giới thiệu một {ph0}chỉ báo động cơ hơi nước năm 1796{ph1} để giúp điều "
|
||
"chỉnh van động cơ. Một phiên bản ghi âm truy tìm áp lực thông qua hành trình"
|
||
" piston. Nó làm cho hành vi bên trong của động cơ có sẵn để kiểm tra. Các "
|
||
"công cụ so sánh của chúng tôi phục vụ một mục đích tương tự: chúng cho phép "
|
||
"chúng tôi kiểm tra những gì máy móc đang làm trong khi chúng tôi cải thiện "
|
||
"nó."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:879
|
||
#, 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}Chúng tôi đang trong giai đoạn đầu của sự thay đổi công nghiệp "
|
||
"này.{ph1} Phần lớn cơ sở hạ tầng vẫn chưa trưởng thành. Các agent có thể di "
|
||
"chuyển nhanh hơn so với séc của chúng tôi được thiết kế để hỗ trợ, vì vậy "
|
||
"quá trình này phải phát triển cùng với chúng. Khi chúng tôi tìm thấy một lỗi"
|
||
" trong một công cụ được chia sẻ, chúng tôi phải sửa chữa nó và xem lại kết "
|
||
"quả mà nó bị ảnh hưởng. Dự án tiếp theo sau đó có thể kế thừa một công cụ "
|
||
"mạnh mẽ hơn."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:889
|
||
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 ""
|
||
"Ngoài ra còn có một giới hạn thực tế cho bất kỳ một cuộc trò chuyện. Nó sẽ "
|
||
"kết thúc trước khi một cuộc tái thiết lớn kết thúc. Kho lưu trữ mã nguồn "
|
||
"phải làm cho một phiên khác có thể tiếp tục mà không làm mất lý do cho quyết"
|
||
" định cuối cùng."
|
||
|
||
#. {ph0}: <a href="https://github.com/N0zoM1z0/touhou-reconstruction-factory"
|
||
#. >
|
||
#. {ph1}: </a >
|
||
#: website/public/blog/touhou-reconstruction/index.html:895
|
||
#, 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 ""
|
||
"Các {ph0}Nhà Máy Tái Thiết Touhou{ph1} phát triển ra khỏi nhu cầu đó. Nó "
|
||
"cung cấp cho các dự án một cách chung để thực hiện kiểm tra và bài học của "
|
||
"họ về phía trước. Làm việc trên một trò chơi có thể cải thiện các điều kiện "
|
||
"bắt đầu cho một trò chơi khác."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:905
|
||
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 ""
|
||
"Đó là những gì làm cho sự tương tự công nghiệp có ý nghĩa đối với tôi. Kinh "
|
||
"nghiệm bắt đầu trở thành một phần của các công cụ mà người khác có thể sử "
|
||
"dụng. Cải thiện những công cụ thay đổi bao nhiêu người tiếp theo—hoặc các "
|
||
"agent tiếp theo—có thể được thực hiện."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:913
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "The projects we can now consider"
|
||
msgstr "Các dự án bây giờ chúng ta có thể xem xét"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:914
|
||
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 ""
|
||
"Tốc độ quan trọng bởi vì nó thay đổi quyết định bắt đầu. Một trò chơi có thể"
|
||
" là hấp dẫn để đảo ngược kỹ sư và vẫn đòi hỏi nhiều sự chú ý của riêng tôi "
|
||
"hơn tôi thực tế có thể cung cấp cho nó. Nhiều dự án sẽ ở lại ý tưởng."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:920
|
||
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 ""
|
||
"Bây giờ tôi có thể thấy một cách để giữ cho một dự án như vậy di chuyển qua "
|
||
"các cuộc điều tra lặp đi lặp lại. Nhận được một tái thiết làm việc làm cho "
|
||
"một cổng phần mềm thực tế hơn. Khôi phục ngữ nghĩa có thể đọc được giúp "
|
||
"người khác dễ dàng khám phá bản mod hơn. Nỗ lực để hiểu trò chơi có thể tiếp"
|
||
" tục được đền đáp sau khi phiên bản đầu tiên chạy."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/touhou-reconstruction/index.html:927
|
||
#, 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 ""
|
||
"Bây giờ tôi nhìn vào một chương trình xa lạ và hỏi: {ph0}truy cập, phản hồi "
|
||
"và kiến thức tích lũy nào sẽ cho phép một agent làm việc về điều này một "
|
||
"cách đáng tin cậy?{ph1}"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:934
|
||
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 ""
|
||
"Câu hỏi đó khiến tôi cân nhắc các dự án mà trước đây tôi sẽ để lại một mình."
|
||
" Mỗi người có thể cải thiện cách chúng ta tiếp cận tiếp theo. Tôi muốn tiếp "
|
||
"tục khám phá xem điều đó có thể đưa chúng ta đi bao xa."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:942
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Project milestones and sources"
|
||
msgstr "Các cột mốc và nguồn dự án"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:943
|
||
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 ""
|
||
"Các ngày mô tả các trạm kiểm soát dự án được ghi lại, được kiểm tra dựa trên"
|
||
" LỊCH sử GitHub công khai vào ngày 10 tháng 10 năm 2026. Thời gian trôi qua "
|
||
"là thời gian theo lịch giữa các cam kết. Sự hiện diện nguồn, so sánh chính "
|
||
"xác, bản dựng và kết quả thời gian chạy mỗi tên một cột mốc khác nhau."
|
||
|
||
#. {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:951
|
||
#, 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 tháng tám tiếp tục{ph3}, {ph4}19 tháng tám nguồn "
|
||
"ledger{ph5}, {ph6}24 tháng tám Linux cổng{ph7}, {ph8}26 tháng Tám phiên Bản "
|
||
"Web{ph9}, và {ph10}30 tháng tám 64-bit Linux phát hành{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:974
|
||
#, 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 tháng tám sổ cái ban đầu{ph3}, {ph4}7 tháng chín "
|
||
"nguồn ledger{ph5}, {ph6}8 so sánh tháng chín{ph7}, {ph8}9 tháng chín liên "
|
||
"kết{ph9}, và {ph10}10 tháng chín có thể chơi được-xây dựng hồ sơ{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:997
|
||
#, 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 tháng mười handoff{ph3} ghi lại QUÁ trình tái tạo "
|
||
"dos đang hoạt động, thử nghiệm Tuyến Đường Bình thường Hoàn chỉnh của người "
|
||
"bảo trì và giai đoạn 64 bit hiện tại."
|
||
|
||
#. {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:1006
|
||
#, 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 tham khảo xác minh (oracle) sửa CHỮA:{ph1} {ph2}lỗi thu thập tự "
|
||
"động được báo cáo{ph3}, {ph4}nguồn và sửa chữa so sánh{ph5}, và {ph6}kiểm "
|
||
"toán liên tục dấu phẩy động đầy đủ{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:1020
|
||
#, 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}Tái tạo ngữ nghĩa:{ph1} {ph2} Sách phát khả năng đọc CỦA TH08{ph3} và "
|
||
"{ph4}thứ tự pha Của Nhà Máy và hai đường dẫn xác nhận{ph5}."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <a
|
||
#. href="https://collection.sciencemuseumgroup.org.uk/objects/co51439/watts-
|
||
#. steam-engine-indicator" >
|
||
#. {ph3}: </a >
|
||
#: website/public/blog/touhou-reconstruction/index.html:1032
|
||
#, 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}Lịch sử công nghiệp:{ph1} {ph2}hồ sơ chỉ báo động cơ hơi Nước Của Nhóm "
|
||
"Bảo Tàng Khoa học{ph3} mô tả phần giới thiệu năm 1796 và cơ chế ghi áp suất."
|
||
|
||
#. {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:1041
|
||
#, 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}Phương pháp:{ph1} Nhà Máy {ph2}tự chủ agent{ph3} và {ph4}kiến thức trò "
|
||
"chơi chéo{ph5} tài liệu giữ lại các nguyên tắc làm việc và bài học."
|
||
|
||
#. {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:1056
|
||
#, python-brace-format
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "{ph0}More articles{ph1} · {ph2}Explore a TH04 investigation{ph3}"
|
||
msgstr "{ph0}Thêm bài viết{ph1} · {ph2}Khám PHÁ MỘT CUỘC điều TRA 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 "Cuộc Cách mạng công nghiệp của Reverse Engineering-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 phản ánh về kỹ thuật đảo ngược thủ công, Tái Thiết Touhou với các "
|
||
"tác nhân AI và cách các hợp chất kiến thức trên TH08, TH095 và PC-98 TH04 ."
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:350
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Experience carried between projects"
|
||
msgstr "Kinh nghiệm thực hiện giữa các dự án"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:364
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:379
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Touhou reconstruction essay"
|
||
msgstr "Bài luận tái thiết Touhou"
|
||
|
||
#: website/public/blog/touhou-reconstruction/index.html:1080
|
||
msgctxt "page:blog/touhou-reconstruction/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/examples/dino-lab/index.html:104
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <span>
|
||
#. {ph3}: </span>
|
||
#: website/public/examples/dino-lab/index.html:195
|
||
#, python-brace-format
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "{ph0}Home{ph1}{ph2}/{ph3}Dinosaur speed lab"
|
||
msgstr "{ph0}Nhà{ph1}{ph2}/{ph3}Phòng thí nghiệm tốc độ khủng long"
|
||
|
||
#: website/public/examples/dino-lab/index.html:198
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Inspect → rebuild → change"
|
||
msgstr "Kiểm tra → xây dựng lại → thay đổi"
|
||
|
||
#: website/public/examples/dino-lab/index.html:199
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Rebuild the dinosaur’s speed rule."
|
||
msgstr "Xây dựng lại quy tắc tốc độ của khủng long."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <mark class="prose-highlight">
|
||
#. {ph3}: </mark>
|
||
#: website/public/examples/dino-lab/index.html:200
|
||
#, 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 ""
|
||
"Để tạo lại khả năng tăng tốc của trò chơi, trước tiên hãy tìm quy tắc kiểm "
|
||
"soát tốc độ của nó. {ph0} REA trả về tập lệnh đang chạy;{ph1} chúng tôi đã "
|
||
"sử dụng quy tắc của nó để xây dựng trò chơi nhỏ này với {ph2}tốc độ điều "
|
||
"chỉnh.{ph3}"
|
||
|
||
#: website/public/examples/dino-lab/index.html:209
|
||
#: website/public/examples/dino-lab/index.html:208
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#. {ph0}: <a href="#play">
|
||
#. {ph1}: </a>
|
||
#: website/public/examples/dino-lab/index.html:211
|
||
#, python-brace-format
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "{ph0}Play and change the speed{ph1}"
|
||
msgstr "{ph0}Chơi và thay đổi tốc độ{ph1}"
|
||
|
||
#. {ph0}: <a href="#rule">
|
||
#. {ph1}: </a>
|
||
#: website/public/examples/dino-lab/index.html:212
|
||
#, python-brace-format
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "{ph0}Read the recovered rule{ph1}"
|
||
msgstr "{ph0}Đọc quy tắc đã khôi phục{ph1}"
|
||
|
||
#. {ph0}: <a href="#check">
|
||
#. {ph1}: </a>
|
||
#: website/public/examples/dino-lab/index.html:213
|
||
#, python-brace-format
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "{ph0}Check the reconstruction{ph1}"
|
||
msgstr "{ph0}Kiểm tra việc tái thiết{ph1}"
|
||
|
||
#. {ph0}: <a href="#inspect">
|
||
#. {ph1}: </a>
|
||
#: website/public/examples/dino-lab/index.html:214
|
||
#, python-brace-format
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "{ph0}Try the analysis{ph1}"
|
||
msgstr "{ph0}Hãy thử phân tích{ph1}"
|
||
|
||
#: website/public/examples/dino-lab/index.html:219
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Play and change the speed"
|
||
msgstr "Chơi và thay đổi tốc độ"
|
||
|
||
#: website/public/examples/dino-lab/index.html:220
|
||
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 ""
|
||
"Nhấn Play, sau đó nhảy qua cây xương rồng. Di chuyển thanh trượt tốc độ để "
|
||
"thử một trò chơi chậm hơn hoặc nhanh hơn; nó chuyển sang một tốc độ cố định."
|
||
" Chọn quy tắc đã khôi phục để bắt đầu từ 6 và tăng tốc dần trở lại."
|
||
|
||
#: website/public/examples/dino-lab/index.html:226
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Play the reconstruction"
|
||
msgstr "Chơi bản dựng lại"
|
||
|
||
#: website/public/examples/dino-lab/index.html:258
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Play"
|
||
msgstr "Chơi"
|
||
|
||
#: website/public/examples/dino-lab/index.html:261
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Jump ↑"
|
||
msgstr "Nhảy ↑"
|
||
|
||
#: website/public/examples/dino-lab/index.html:262
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Restart"
|
||
msgstr "Chơi lại"
|
||
|
||
#: website/public/examples/dino-lab/index.html:265
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Speed"
|
||
msgstr "Tốc độ"
|
||
|
||
#: website/public/examples/dino-lab/index.html:275
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Use the recovered acceleration rule"
|
||
msgstr "Sử dụng quy tắc tăng tốc đã khôi phục"
|
||
|
||
#: website/public/examples/dino-lab/index.html:279
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Original rule: start at 6, then increase toward 13."
|
||
msgstr "Quy tắc ban đầu: bắt đầu từ 6, sau đó tăng lên 13."
|
||
|
||
#: website/public/examples/dino-lab/index.html:282
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
|
||
msgstr ""
|
||
"Di chuyển thanh trượt để thiết lập tốc độ của riêng bạn. Không gian Hoặc "
|
||
"Nhảy xóa một cây xương rồng."
|
||
|
||
#: website/public/examples/dino-lab/index.html:287
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid ""
|
||
"Enable JavaScript to play the reconstruction. The code and explanation above"
|
||
" remain readable."
|
||
msgstr ""
|
||
"Cho PHÉP JavaScript để chơi tái thiết. Mã và giải thích ở trên vẫn có thể "
|
||
"đọc được."
|
||
|
||
#: website/public/examples/dino-lab/index.html:295
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Read the script REA returned"
|
||
msgstr "Đọc kịch BẢN REA trả về"
|
||
|
||
#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <code>index.js</code>
|
||
#: website/public/examples/dino-lab/index.html:296
|
||
#, 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 ""
|
||
"Chúng tôi đã kiểm tra {ph0}PHIÊN bản trình duyệt CÓ NGUỒN GỐC TỪ Chromium "
|
||
"của wayou{ph1} VỚI REA . Nó trả lại tải {ph2}, bao gồm chi nhánh này trong "
|
||
"chức năng cập nhật của trò chơi:"
|
||
|
||
#. {ph0}: <code>SPEED: 6</code>
|
||
#. {ph1}: <code>ACCELERATION: 0.001</code>
|
||
#. {ph2}: <code>MAX_SPEED: 13</code>
|
||
#: website/public/examples/dino-lab/index.html:312
|
||
#, 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 ""
|
||
"Các cài đặt là {ph0}, {ph1} và {ph2}. Trò chơi chạy nhánh này trên bản cập "
|
||
"nhật mà không có va chạm."
|
||
|
||
#: website/public/examples/dino-lab/index.html:317
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Use the same rule in the new game"
|
||
msgstr "Sử dụng quy tắc tương tự trong trò chơi mới"
|
||
|
||
#: website/public/examples/dino-lab/index.html:323
|
||
#: website/public/examples/dino-lab/index.html:422
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#: website/public/examples/dino-lab/index.html:336
|
||
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 ""
|
||
"Trò chơi mini sử dụng chức năng này để tăng tốc tự động. Thay vào đó, di "
|
||
"chuyển thanh trượt cung cấp tốc độ cố định. Vẽ, nhảy vật lý và kiểm tra va "
|
||
"chạm hình chữ nhật là mã mới cho trò chơi giảng dạy này; mô phỏng của nó "
|
||
"tiến bộ ở mức 60 bản cập nhật mỗi giây."
|
||
|
||
#. {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:342
|
||
#, python-brace-format
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "{ph0}Download the speed rule{ph1} · {ph2}Read the game code{ph3}"
|
||
msgstr "{ph0}Tải xuống quy tắc tốc độ{ph1} · {ph2}Đọc mã trò chơi{ph3}"
|
||
|
||
#: website/public/examples/dino-lab/index.html:350
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Check the reconstruction"
|
||
msgstr "Kiểm tra việc tái thiết"
|
||
|
||
#: website/public/examples/dino-lab/index.html:351
|
||
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 ""
|
||
"Chúng tôi đã gọi chức năng cập nhật của trò chơi gốc với các chướng ngại vật"
|
||
" và lập lịch tự động bị vô hiệu hóa. So sánh những tốc độ ghi lại với một "
|
||
"phát lại của quy tắc phục hồi."
|
||
|
||
#: website/public/examples/dino-lab/index.html:360
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Updates"
|
||
msgstr "Cập nhật"
|
||
|
||
#: website/public/examples/dino-lab/index.html:361
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Original game"
|
||
msgstr "Trò chơi gốc"
|
||
|
||
#: website/public/examples/dino-lab/index.html:362
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Reconstructed rule"
|
||
msgstr "Quy tắc được xây dựng lại"
|
||
|
||
#: website/public/examples/dino-lab/index.html:389
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Run the speed check"
|
||
msgstr "Chạy kiểm tra tốc độ"
|
||
|
||
#: website/public/examples/dino-lab/index.html:392
|
||
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 ""
|
||
"Giá trị làm tròn đến ba số thập phân. Chi nhánh kiểm tra trước khi thêm, vì "
|
||
"vậy gia số cuối cùng có thể mất tốc độ chỉ trên 13."
|
||
|
||
#: website/public/examples/dino-lab/index.html:398
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Try the analysis yourself"
|
||
msgstr "Hãy tự mình thử phân tích"
|
||
|
||
#. {ph0}: <a href="../../get-started/">
|
||
#. {ph1}: </a>
|
||
#: website/public/examples/dino-lab/index.html:400
|
||
#, python-brace-format
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "{ph0}Set up REA{ph1} with your coding agent."
|
||
msgstr "{ph0}Thiết LẬP REA {ph1} với agent mã hóa của bạn."
|
||
|
||
#. {ph0}: <a href="../../guides/browser/#prepare" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <code>https://wayou.github.io/t-rex-runner/</code>
|
||
#: website/public/examples/dino-lab/index.html:404
|
||
#, 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 ""
|
||
"Theo dõi {ph0}các bước kết nối trình duyệt{ph1}, sử dụng {ph2} như url "
|
||
"trang."
|
||
|
||
#: website/public/examples/dino-lab/index.html:411
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid ""
|
||
"Give your agent the page URL and local debugging endpoint, then copy this "
|
||
"prompt."
|
||
msgstr ""
|
||
"Cung cấp cho agent CỦA bạn URL trang và điểm cuối gỡ lỗi cục bộ, sau đó sao "
|
||
"chép lời nhắc này."
|
||
|
||
#. {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:418
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
|
||
#. {ph1}: </span >
|
||
#. {ph2}: <span id="lab-analysis-prompt" >
|
||
#. {ph3}: </span >
|
||
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
|
||
#. {ph5}: </span>
|
||
#: website/public/examples/dino-lab/index.html:431
|
||
#, 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}SỬ DỤNG REA để kiểm tra trò chơi khủng long này. Tại sao nó "
|
||
"nhanh hơn? Hiển thị quy tắc tốc độ, sau đó xây dựng một phiên bản nhỏ với "
|
||
"tốc độ có thể điều chỉnh.{ph3}{ph4}{ph5}"
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/examples/dino-lab/index.html:440
|
||
#, 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 ""
|
||
"Yêu cầu theo dõi: {ph0}\"Chiều cao nhảy được tính ở đâu? Thêm điều khiển "
|
||
"chiều cao nhảy vào phiên bản mới.”{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:447
|
||
#, 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 ""
|
||
"Nguồn: {ph0}kiểm tra mã tốc độ{ph1}, TÁC giả Chromium. {ph2}Bản quyền và "
|
||
"giấy phép BSD{ph3}. REA 4.1.0 đã kiểm tra phiên bản HTTP đang chạy TRONG "
|
||
"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 "TRÒ Chơi Khủng Long Chrome: Xây Dựng Lại Quy tắc Tốc độ của Nó — 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 ""
|
||
"Đọc quy tắc tốc độ của trò chơi khủng long VỚI REA , xây dựng lại nó, sau đó"
|
||
" thay đổi tốc độ và chơi."
|
||
|
||
#: website/public/examples/dino-lab/index.html:217
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Dinosaur speed reconstruction"
|
||
msgstr "Khủng long tốc độ tái thiết"
|
||
|
||
#: website/public/examples/dino-lab/index.html:248
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid ""
|
||
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
|
||
"focused."
|
||
msgstr ""
|
||
"Khủng long mini-game. Sử dụng Nút Nhảy hoặc Nhấn Không gian trong khi trò "
|
||
"chơi được tập trung."
|
||
|
||
#: website/public/examples/dino-lab/index.html:323
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Copy reconstructed speed rule"
|
||
msgstr "Sao chép quy tắc tốc độ được xây dựng lại"
|
||
|
||
#: website/public/examples/dino-lab/index.html:422
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Copy dinosaur analysis prompt"
|
||
msgstr "Sao chép dấu nhắc phân tích khủng long"
|
||
|
||
#: website/public/examples/dino-lab/index.html:475
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/faq/index.html:103
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid "{ph0}Home{ph1} / FAQ"
|
||
msgstr "{ph0}Nhà{ph1} / HỎI ĐÁP"
|
||
|
||
#: website/public/faq/index.html:195
|
||
msgctxt "page:faq/index.html"
|
||
msgid "REA FAQ."
|
||
msgstr "REA CÂU HỎI THƯỜNG GẶP."
|
||
|
||
#: website/public/faq/index.html:196
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Setup, updates, analysis and troubleshooting."
|
||
msgstr "Thiết lập, cập nhật, phân tích và khắc phục sự cố."
|
||
|
||
#: website/public/faq/index.html:200
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Topics"
|
||
msgstr "Chủ đề"
|
||
|
||
#. {ph0}: <a href="#setup">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:202
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid "{ph0}Setup and updates{ph1}"
|
||
msgstr "{ph0}Thiết lập và cập nhật{ph1}"
|
||
|
||
#. {ph0}: <a href="#analysis">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:203
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid "{ph0}Analysis{ph1}"
|
||
msgstr "{ph0}Phân tích{ph1}"
|
||
|
||
#. {ph0}: <a href="#troubleshooting">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:204
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid "{ph0}Troubleshooting{ph1}"
|
||
msgstr "{ph0}Khắc phục sự cố{ph1}"
|
||
|
||
#. {ph0}: <a href="#sharing">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:205
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid "{ph0}Data and sharing{ph1}"
|
||
msgstr "{ph0}Dữ liệu và chia sẻ{ph1}"
|
||
|
||
#: website/public/faq/index.html:214
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Setup and updates"
|
||
msgstr "Thiết lập và cập nhật"
|
||
|
||
#: website/public/faq/index.html:217
|
||
msgctxt "page:faq/index.html"
|
||
msgid "How do I install REA?"
|
||
msgstr "Cài đặt REA thế nào?"
|
||
|
||
#: website/public/faq/index.html:225
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Terminal · agent setup"
|
||
msgstr "Thiết bị đầu cuối · thiết lập agent"
|
||
|
||
#: website/public/faq/index.html:226 website/public/faq/index.html:267
|
||
#: website/public/faq/index.html:285 website/public/faq/index.html:369
|
||
#: website/public/faq/index.html:416 website/public/faq/index.html:456
|
||
#: website/public/faq/index.html:476
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
# Reviewed for readable setup and analysis terminology.
|
||
#. {ph0}: <a href="../get-started/">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:237
|
||
#, 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 ""
|
||
"Lệnh thiết lập đăng ký kết nối MCP của REA và cài skill phân tích tương ứng."
|
||
" Khi hoàn tất, khởi động lại agent rồi đưa đường dẫn tệp và câu hỏi. "
|
||
"{ph0}Hướng dẫn thiết lập{ph1} trình bày các yêu cầu và bước phân tích đầu "
|
||
"tiên."
|
||
|
||
#: website/public/faq/index.html:246
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Which coding agents can use REA?"
|
||
msgstr "NHỮNG agent mã hóa NÀO có thể sử DỤNG REA ?"
|
||
|
||
#: website/public/faq/index.html:247
|
||
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 ""
|
||
"Bất kỳ agent nào hỗ trợ MÁY chủ MCP cục bộ. Thiết lập BAO GỒM Claude Code , "
|
||
"Claude Desktop, Codex , Cursor , Gemini CLI , Windsurf , Devin , OpenCode , "
|
||
"Antigravity , GitHub Copilot CLI , Command Code , Grok Build , OMP , VÀ VS "
|
||
"Code . Trình kết nối của Grok Bot được thêm vào từ cuộc trò chuyện của Nó."
|
||
|
||
#. {ph0}: <a href="../get-started/#agent">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:254
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid "{ph0}Connect your coding agent{ph1}."
|
||
msgstr "{ph0}Kết nối agent mã hóa của bạn{ph1}."
|
||
|
||
#: website/public/faq/index.html:259
|
||
msgctxt "page:faq/index.html"
|
||
msgid "How do I update REA?"
|
||
msgstr "Cập nhật REA thế nào?"
|
||
|
||
#: website/public/faq/index.html:260
|
||
msgctxt "page:faq/index.html"
|
||
msgid ""
|
||
"REA releases frequently, including bug fixes. If you installed the CLI with "
|
||
"npm:"
|
||
msgstr ""
|
||
"REA phát hành thường xuyên, bao gồm sửa lỗi. Nếu bạn đã cài ĐẶT CLI với npm "
|
||
":"
|
||
|
||
#: website/public/faq/index.html:266
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Terminal · installed CLI"
|
||
msgstr "Thiết bị đầu cuối * CÀI ĐẶT CLI"
|
||
|
||
#. {ph0}: <code>npx</code>
|
||
#: website/public/faq/index.html:278
|
||
#, 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 ""
|
||
"Thực hiện theo lệnh làm mới thiết lập được in bởi bản cập nhật. Nếu bạn "
|
||
"thiết lập agent của bạn thông qua {ph0}, chạy đi:"
|
||
|
||
#: website/public/faq/index.html:284
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Terminal · refresh agent setup"
|
||
msgstr "Thiết bị đầu cuối · thiết lập agent làm mới"
|
||
|
||
# Reviewed for readable setup and analysis terminology.
|
||
#. {ph0}: <code>npx -y rea-agents@latest</code>
|
||
#: website/public/faq/index.html:296
|
||
#, 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 ""
|
||
"Kiểm tra thay đổi và khởi động lại agent. Kết nối REA dùng một phiên bản gói"
|
||
" cụ thể, nên cần chạy lại lệnh thiết lập để agent dùng bản mới. Với lệnh CLI"
|
||
" chạy một lần, thêm lệnh cần dùng sau {ph0}."
|
||
|
||
#: website/public/faq/index.html:304
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Is installing the skill from skills.sh enough?"
|
||
msgstr "Đang cài đặt kỹ năng từ skills.sh đủ chưa?"
|
||
|
||
#. {ph0}: <a href="#install">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:307
|
||
#, 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 ""
|
||
"Kỹ năng đưa ra hướng dẫn điều tra agent của bạn. Chạy đi {ph0} THIẾT LẬP "
|
||
"REA{ph1} để kết nối MÁY chủ MCP và cài đặt kỹ năng phù hợp, sau đó khởi động"
|
||
" lại agent của bạn để nó có thể gọi các công cụ."
|
||
|
||
#: website/public/faq/index.html:318
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Analysis"
|
||
msgstr "Phân tích"
|
||
|
||
#: website/public/faq/index.html:321
|
||
msgctxt "page:faq/index.html"
|
||
msgid "What can I analyze with REA?"
|
||
msgstr "Tôi có thể phân tích gì VỚI REA ?"
|
||
|
||
#: website/public/faq/index.html:322
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Start with the kind of software you have:"
|
||
msgstr "Bắt đầu với loại phần mềm bạn có:"
|
||
|
||
#. {ph0}: <a href="../guides/native/" >
|
||
#. {ph1}: </a >
|
||
#: website/public/faq/index.html:324
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid ""
|
||
"{ph0}Native executables and libraries{ph1}: functions, assembly, pseudocode "
|
||
"and references."
|
||
msgstr ""
|
||
"{ph0}Các tệp thực thi và thư viện gốc{ph1}: chức năng, lắp ráp, mã giả và "
|
||
"tài liệu tham khảo."
|
||
|
||
#. {ph0}: <a href="../guides/javascript/" >
|
||
#. {ph1}: </a >
|
||
#: website/public/faq/index.html:329
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid ""
|
||
"{ph0}JavaScript and Electron apps{ph1}: modules, imports, IPC and source "
|
||
"locations."
|
||
msgstr ""
|
||
"{ph0} JavaScript và Electron ứng dụng{ph1}: mô-đun, nhập KHẨU, IPC và vị trí"
|
||
" nguồn."
|
||
|
||
#. {ph0}: <a href="../guides/browser/">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:334
|
||
#, python-brace-format
|
||
msgctxt "page:faq/index.html"
|
||
msgid "{ph0}Browser pages{ph1}: scripts, requests and runtime observations."
|
||
msgstr ""
|
||
"{ph0}Trang trình duyệt{ph1}: kịch bản, yêu cầu và quan sát thời gian chạy."
|
||
|
||
#. {ph0}: <a href="../showcase/">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:339
|
||
#, 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 cũng có quy trình làm việc cho các hội đồng được quản lý, Apk Android, "
|
||
"phần sụn và tài nguyên đóng gói. {ph0}Xem các nghiên cứu điển hình{ph1} đối "
|
||
"với các cuộc điều tra làm việc."
|
||
|
||
#: website/public/faq/index.html:347
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Do I need Hopper, Ghidra or IDA?"
|
||
msgstr "TÔI có cần Hopper , Ghidra hoặc IDA không ?"
|
||
|
||
#: website/public/faq/index.html:348
|
||
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 ""
|
||
"Phân tích sâu các chương trình mã máy sử dụng một trong số chúng. KIỂM tra "
|
||
"JavaScript và.NET tĩnh hoạt động với các tệp được cung cấp và không cần phân"
|
||
" tích công cụ chương trình mã máy."
|
||
|
||
#. {ph0}: <a href="../get-started/#native">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:353
|
||
#, 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 ""
|
||
"Kết nối CÀI ĐẶT Ghidra hoặc IDA hiện CÓ của bạn hoặc để thiết lập phát hiện "
|
||
"Hopper và đề xuất cài đặt. Máy chủ và mục tiêu của bạn xác định nhà cung cấp"
|
||
" nào có thể được sử dụng. {ph0}Thiết lập phân tích các chương trình mã "
|
||
"máy{ph1}."
|
||
|
||
#: website/public/faq/index.html:361
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Can I use REA without a coding agent?"
|
||
msgstr "Tôi có thể sử DỤNG REA mà không cần agent mã hóa không?"
|
||
|
||
#: website/public/faq/index.html:362
|
||
msgctxt "page:faq/index.html"
|
||
msgid ""
|
||
"Yes. The CLI uses the same analysis workflows. For a local JavaScript or "
|
||
"Electron app:"
|
||
msgstr ""
|
||
"Vâng. CLI sử dụng cùng một quy trình phân tích. ĐỐI với ỨNG DỤNG JavaScript "
|
||
"hoặc Electron cục BỘ:"
|
||
|
||
#: website/public/faq/index.html:368
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Terminal · static application analysis"
|
||
msgstr "Thiết bị đầu cuối · phân tích ứng dụng tĩnh"
|
||
|
||
#. {ph0}: <a href="../get-started/#terminal">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:381
|
||
#, 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 ""
|
||
"Thay thế đường dẫn bằng thư mục ứng dụng được giải nén hoặc tệp ASAR. "
|
||
"{ph0}Sử DỤNG CLI {ph1} đối với các tùy chọn cài đặt."
|
||
|
||
# Reviewed for readable setup and analysis terminology.
|
||
#: website/public/faq/index.html:388
|
||
msgctxt "page:faq/index.html"
|
||
msgid "What code does REA return?"
|
||
msgstr "REA trả về mã gì?"
|
||
|
||
# Reviewed for readable setup and analysis terminology.
|
||
#: website/public/faq/index.html:389
|
||
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 ""
|
||
"Phân tích mã máy trả về assembly và mã giả, kèm lời gọi hàm, tham chiếu và "
|
||
"các hằng số liên quan. Phân tích JavaScript trả về mô-đun, quan hệ giữa "
|
||
"chúng và vị trí trong mã nguồn."
|
||
|
||
#. {ph0}: <a href="../showcase/dx-ball/#sound-pan" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <a href="../showcase/ctf/">
|
||
#. {ph3}: </a>
|
||
#: website/public/faq/index.html:394
|
||
#, 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 ""
|
||
"Agent của bạn sử dụng những phát hiện này để giải thích hành vi hoặc viết và"
|
||
" kiểm tra việc thực hiện. Các {ph0} DX-Ball tính TOÁN{ph1} và {ph2}CTF cờ "
|
||
"checker{ph3} cho thấy quá trình đó hoạt động như thế nào."
|
||
|
||
#: website/public/faq/index.html:405
|
||
msgctxt "page:faq/index.html"
|
||
msgid "What should I ask my agent?"
|
||
msgstr "Tôi nên hỏi trợ lý điều gì?"
|
||
|
||
#: website/public/faq/index.html:406
|
||
msgctxt "page:faq/index.html"
|
||
msgid ""
|
||
"Give it a local target and one behavior to investigate. For a JavaScript or "
|
||
"Electron app:"
|
||
msgstr ""
|
||
"Cung cấp cho nó một mục tiêu địa phương và một hành vi để điều tra. ĐỐI VỚI "
|
||
"ỨNG DỤNG JavaScript hoặc 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:412
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#. {ph0}: <a href="../guides/">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:435
|
||
#, 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 ""
|
||
"Thay thế đường dẫn bằng mục tiêu của bạn. Các {ph0}hướng dẫn{ph1} cung cấp "
|
||
"lời nhắc cho các ví dụ gốc, Electron và trình duyệt."
|
||
|
||
#: website/public/faq/index.html:445
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Troubleshooting"
|
||
msgstr "Khắc phục sự cố"
|
||
|
||
#: website/public/faq/index.html:448
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Why can't my agent see the REA tools?"
|
||
msgstr "Tại sao agent của tôi không thể thấy CÁC CÔNG cụ REA?"
|
||
|
||
#. {ph0}: <code>doctor</code>
|
||
#: website/public/faq/index.html:449
|
||
#, 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 ""
|
||
"Khởi động lại hoặc kết nối lại agent của bạn sau khi thiết lập. Kiểm tra "
|
||
"ĐĂNG ký REA của NÓ với {ph0}; CHO Codex :"
|
||
|
||
#: website/public/faq/index.html:455
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Terminal · check one client"
|
||
msgstr "Thiết bị đầu cuối * kiểm tra một khách hàng"
|
||
|
||
#. {ph0}: <code>codex</code>
|
||
#. {ph1}: <code>claude_code</code>
|
||
#. {ph2}: <code>cursor</code>
|
||
#: website/public/faq/index.html:467
|
||
#, 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 ""
|
||
"Thay thế {ph0} VỚI ID khách HÀNG của bạn, chẳng hạn như {ph1} hoặc {ph2}. "
|
||
"Nếu báo cáo hiển thị đăng ký bị thiếu hoặc cũ, hãy chạy thiết lập cho khách "
|
||
"hàng đó:"
|
||
|
||
#: website/public/faq/index.html:475
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Terminal · repair one client's setup"
|
||
msgstr "Thiết bị đầu cuối · sửa chữa thiết lập của một khách hàng"
|
||
|
||
#. {ph0}: <a href="../get-started/#help">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:487
|
||
#, 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 ""
|
||
"Xem lại kế hoạch của nó và khởi động lại khách hàng. Nếu đăng ký là lành "
|
||
"mạnh nhưng các công cụ vẫn vắng mặt, hãy kiểm tra LỖI KẾT nối MCP của khách "
|
||
"hàng. {ph0}Thêm chẩn đoán thiết lập{ph1}."
|
||
|
||
#: website/public/faq/index.html:495
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Do I need to start Hopper first?"
|
||
msgstr "Tôi có cần khởi ĐỘNG Hopper trước không?"
|
||
|
||
#. {ph0}: <a href="../get-started/#native">
|
||
#. {ph1}: </a >
|
||
#: website/public/faq/index.html:496
|
||
#, 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 bắt ĐẦU Hopper khi một hoạt động cần nó. TRÊN macOS, hoàn thành lựa chọn"
|
||
" chạy đầu tiên của chế độ demo hoặc kích hoạt giấy phép trước khi phân tích "
|
||
"không giám sát. {ph0}Xem thiết lập nhà cung cấp gốc{ph1}."
|
||
|
||
#: website/public/faq/index.html:505
|
||
msgctxt "page:faq/index.html"
|
||
msgid "What should I do if I hit a bug?"
|
||
msgstr "Tôi nên làm gì khi gặp lỗi?"
|
||
|
||
#. {ph0}: <a href="#update">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:506
|
||
#, 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}Cập NHẬT REA {ph1}, khởi động lại agent của bạn và thử lại cùng một "
|
||
"nhiệm vụ. Một bản phát hành gần đây có thể đã khắc phục được sự cố."
|
||
|
||
#. {ph0}: <a href="https://github.com/morluto/rea/issues/new/choose" >
|
||
#. {ph1}: </a >
|
||
#: website/public/faq/index.html:510
|
||
#, 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 ""
|
||
"Nếu nó vẫn tồn tại, {ph0}mở một vấn đề{ph1} VỚI PHIÊN BẢN REA CỦA bạn, hệ "
|
||
"điều hành, loại mục tiêu, các bước để tái tạo và đầu ra lỗi. Bao gồm tên nhà"
|
||
" cung cấp khi sự cố liên quan đến việc phân tích các chương trình mã máy."
|
||
|
||
#: website/public/faq/index.html:524
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Data and sharing"
|
||
msgstr "Dữ liệu và chia sẻ"
|
||
|
||
#: website/public/faq/index.html:527
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Does REA upload my app?"
|
||
msgstr "REA có tải lên ứng dụng của tôi không?"
|
||
|
||
#: website/public/faq/index.html:528
|
||
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 phân tích mục tiêu trên máy tính của bạn. Agent của bạn nhận được kết "
|
||
"quả và chính sách dữ liệu của nhà cung cấp mô hình áp dụng cho các kết quả "
|
||
"đó."
|
||
|
||
#: website/public/faq/index.html:535
|
||
msgctxt "page:faq/index.html"
|
||
msgid "How can I share an example or contribute?"
|
||
msgstr "Làm thế nào tôi có thể chia sẻ một ví dụ hoặc đóng góp?"
|
||
|
||
#. {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:536
|
||
#, 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 ""
|
||
"Có một VÍ DỤ REA hữu ích? Chúng tôi rất muốn nhìn thấy nó. Chia sẻ mục tiêu,"
|
||
" câu hỏi của bạn, những phát hiện và cách bạn kiểm tra chúng trong một "
|
||
"{ph0}vấn đề{ph1} hoặc {ph2}yêu cầu kéo{ph3}. Các đoạn trích và số liệu mã "
|
||
"ngắn giúp người khác theo dõi cuộc điều tra."
|
||
|
||
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
|
||
#. {ph1}: </a>
|
||
#: website/public/faq/index.html:548
|
||
#, 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 ""
|
||
"Báo cáo lỗi, yêu cầu tính năng, tài liệu và cải tiến mã cũng được chào đón. "
|
||
"Bạn cũng có thể thảo luận về một ví dụ trong {ph0}cộng đồng{ph1}."
|
||
|
||
#: website/public/faq/index.html:6
|
||
msgctxt "page:faq/index.html"
|
||
msgid "REA FAQ: Setup, Updates and Troubleshooting"
|
||
msgstr "REA FAQ: Thiết Lập, Cập nhật Và Khắc phục Sự Cố"
|
||
|
||
#: 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 ""
|
||
"Câu trả lời cho CÁC CÂU HỎI REA phổ biến: cài đặt, cập nhật, công cụ phân "
|
||
"tích, agent mã hóa, khắc phục sự cố và chia sẻ ví dụ."
|
||
|
||
#: website/public/faq/index.html:199
|
||
msgctxt "page:faq/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/faq/index.html:208
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Frequently asked questions about REA"
|
||
msgstr "CÂU hỏi thường gặp VỀ REA"
|
||
|
||
#: website/public/faq/index.html:226
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Copy REA setup command"
|
||
msgstr "Sao CHÉP lệnh THIẾT LẬP REA"
|
||
|
||
#: website/public/faq/index.html:267
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Copy REA update command"
|
||
msgstr "Sao CHÉP lệnh cập NHẬT REA"
|
||
|
||
#: website/public/faq/index.html:285
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Copy agent setup refresh command"
|
||
msgstr "Sao chép lệnh làm mới thiết lập tác nhân"
|
||
|
||
#: website/public/faq/index.html:369
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Copy REA CLI analysis command"
|
||
msgstr "Sao CHÉP lệnh PHÂN tích REA CLI"
|
||
|
||
#: website/public/faq/index.html:416
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Copy example analysis prompt"
|
||
msgstr "Sao chép lời nhắc phân tích ví dụ"
|
||
|
||
#: website/public/faq/index.html:456
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Copy client diagnosis command"
|
||
msgstr "Sao chép lệnh chẩn đoán khách hàng"
|
||
|
||
#: website/public/faq/index.html:476
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Copy scoped setup command"
|
||
msgstr "Sao chép lệnh thiết lập phạm vi"
|
||
|
||
#: website/public/faq/index.html:573
|
||
msgctxt "page:faq/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/first-investigation/index.html:103
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../">
|
||
#. {ph1}: </a>
|
||
#: website/public/first-investigation/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}Home{ph1} / Your first investigation"
|
||
msgstr "{ph0}Nhà{ph1} / Cuộc điều tra đầu tiên của bạn"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/first-investigation/index.html:197
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Find out where{ph0}exported notes go."
|
||
msgstr "Tìm ra nơi{ph0}xuất khẩu ghi chú đi."
|
||
|
||
#: website/public/first-investigation/index.html:198
|
||
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 ""
|
||
"SỬ DỤNG REA để kiểm tra một ứng dụng nhỏ, hãy làm theo Nút Xuất ghi Chú Của "
|
||
"NÓ và tự kiểm tra một chi tiết."
|
||
|
||
#: website/public/first-investigation/index.html:209
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "In this exercise"
|
||
msgstr "Trong bài tập này"
|
||
|
||
#. {ph0}: <a href="#setup">
|
||
#. {ph1}: </a>
|
||
#: website/public/first-investigation/index.html:211
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}1. Set up{ph1}"
|
||
msgstr "{ph0}1. Thiết lập{ph1}"
|
||
|
||
#. {ph0}: <a href="#ask">
|
||
#. {ph1}: </a>
|
||
#: website/public/first-investigation/index.html:212
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}2. Ask about export{ph1}"
|
||
msgstr "{ph0}2. Hỏi về xuất khẩu{ph1}"
|
||
|
||
#. {ph0}: <a href="#answer">
|
||
#. {ph1}: </a>
|
||
#: website/public/first-investigation/index.html:213
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}3. Follow the answer{ph1}"
|
||
msgstr "{ph0}3. Làm theo câu trả lời{ph1}"
|
||
|
||
#. {ph0}: <a href="#check">
|
||
#. {ph1}: </a>
|
||
#: website/public/first-investigation/index.html:214
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}4. Check a prediction{ph1}"
|
||
msgstr "{ph0}4. Kiểm tra dự đoán{ph1}"
|
||
|
||
#. {ph0}: <a href="#next">
|
||
#. {ph1}: </a>
|
||
#: website/public/first-investigation/index.html:215
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}5. Ask another question{ph1}"
|
||
msgstr "{ph0}5. Hỏi một câu hỏi khác{ph1}"
|
||
|
||
#: website/public/first-investigation/index.html:220
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "1. Connect your agent to REA"
|
||
msgstr "1. Kết nối agent CỦA BẠN VỚI 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:229
|
||
#: website/public/first-investigation/index.html:279
|
||
#: website/public/first-investigation/index.html:401
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/first-investigation/index.html:234
|
||
#: website/public/first-investigation/index.html:256
|
||
#: website/public/first-investigation/index.html:284
|
||
#: website/public/first-investigation/index.html:406
|
||
#: website/public/first-investigation/index.html:448
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#: website/public/first-investigation/index.html:253
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Or run this command in your terminal:"
|
||
msgstr "Hoặc chạy lệnh này trong thiết bị đầu cuối của bạn:"
|
||
|
||
#: website/public/first-investigation/index.html:265
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid ""
|
||
"Review the plan, approve the setup, then restart your agent. Already "
|
||
"connected? Continue below."
|
||
msgstr ""
|
||
"Xem lại kế hoạch, phê duyệt thiết lập, sau đó khởi động lại agent của bạn. "
|
||
"Đã kết nối? Tiếp tục dưới đây."
|
||
|
||
#: website/public/first-investigation/index.html:271
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "2. Ask where the CSV is written"
|
||
msgstr "2. Hỏi CSV được viết ở đâu"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/first-investigation/index.html:272
|
||
#, 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 ""
|
||
"Ví dụ là một ứng dụng Electron sáu tệp với một {ph0}Xuất ghi chú{ph1} nút. "
|
||
"Agent của bạn có thể kiểm tra mã của nó mà không cần cài đặt hoặc khởi CHẠY "
|
||
"Electron ."
|
||
|
||
#: website/public/first-investigation/index.html:307
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid ""
|
||
"Your agent downloads the files and gives the unpacked folder to REA for "
|
||
"inspection."
|
||
msgstr ""
|
||
"Agent của bạn tải xuống các tệp và cung cấp thư mục đã giải nén CHO REA để "
|
||
"kiểm tra."
|
||
|
||
#. {ph0}: <a class="button" href="../examples/notes-example.zip"
|
||
#. download="notes-example.zip" >
|
||
#. {ph1}: </a >
|
||
#: website/public/first-investigation/index.html:311
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}Download example ZIP{ph1}"
|
||
msgstr "{ph0}Tải xuống VÍ DỤ ZIP{ph1}"
|
||
|
||
#. {ph0}: <code>notes-example</code>
|
||
#: website/public/first-investigation/index.html:319
|
||
#, 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 ""
|
||
"Nếu agent của bạn không thể tải xuống tệp, hãy tự giải nén kho lưu trữ này. "
|
||
"Cung cấp cho nó con đường đến {ph0} thư mục và cùng một câu hỏi xuất."
|
||
|
||
#: website/public/first-investigation/index.html:326
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "3. Follow the answer back to the code"
|
||
msgstr "3. Làm theo câu trả lời trở lại mã"
|
||
|
||
#: website/public/first-investigation/index.html:327
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Look for a short explanation with file and line references:"
|
||
msgstr "Tìm kiếm một lời giải thích ngắn với các tham chiếu tệp và dòng:"
|
||
|
||
#. {ph0}: <code>notes:export</code>
|
||
#. {ph1}: <code>notes.csv</code>
|
||
#. {ph2}: <code>id</code>
|
||
#. {ph3}: <code>title</code>
|
||
#: website/public/first-investigation/index.html:329
|
||
#, 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 ""
|
||
"Nút gửi một {ph0} tin nhắn. Quá trình chính định dạng các ghi chú DƯỚI DẠNG "
|
||
"CSV và viết {ph1} trong thư mục Tải xuống của người dùng. Các cột là {ph2} "
|
||
"và {ph3}."
|
||
|
||
#: website/public/first-investigation/index.html:337
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "From the button to the file writer"
|
||
msgstr "Từ nút đến trình ghi tệp"
|
||
|
||
#: website/public/first-investigation/index.html:366
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid ""
|
||
"REA’s static analysis pairs the message with its handler. The destination is"
|
||
" read from code."
|
||
msgstr ""
|
||
"PHÂN tích TĨNH CỦA REA ghép nối thông báo với trình xử lý của nó. Điểm đến "
|
||
"được đọc từ mã."
|
||
|
||
#: website/public/first-investigation/index.html:382
|
||
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 ""
|
||
"Đường dẫn tệp, trình định dạng và cuộc gọi ghi nằm cùng nhau trong trình xử "
|
||
"lý này. Yêu cầu agent của bạn hiển thị những dòng này nếu câu trả lời của nó"
|
||
" loại bỏ chúng."
|
||
|
||
#. {ph0}: <a href="../guides/javascript/#follow" >
|
||
#. {ph1}: </a >
|
||
#: website/public/first-investigation/index.html:387
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}See the full code trace and recorded REA result{ph1}."
|
||
msgstr "{ph0}Xem dấu vết mã đầy đủ và ghi LẠI KẾT quả REA{ph1}."
|
||
|
||
#: website/public/first-investigation/index.html:394
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "4. Check a prediction"
|
||
msgstr "4. Kiểm tra dự đoán"
|
||
|
||
#: website/public/first-investigation/index.html:395
|
||
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 ""
|
||
"Dấu phẩy phân TÁCH CÁC CỘT CSV. Điều gì xảy ra khi một tiêu đề ghi chú chứa "
|
||
"dấu phẩy hoặc dấu ngoặc kép?"
|
||
|
||
#: website/public/first-investigation/index.html:439
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Run the check yourself"
|
||
msgstr "Tự chạy kiểm tra"
|
||
|
||
#. {ph0}: <code>notes-example</code>
|
||
#: website/public/first-investigation/index.html:440
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Open a terminal in the unpacked {ph0} folder:"
|
||
msgstr "Mở một thiết bị đầu cuối trong giải nén {ph0} thư mục:"
|
||
|
||
#: website/public/first-investigation/index.html:462
|
||
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 ""
|
||
"Lệnh này sử dụng một shell có hỗ trợ tài liệu ở đây, chẳng hạn như Bash hoặc"
|
||
" Zsh. Agent của bạn có thể chạy CÙNG MỘT JavaScript trong vỏ nền tảng của "
|
||
"bạn."
|
||
|
||
#: website/public/first-investigation/index.html:470
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "5. Ask another question"
|
||
msgstr "5. Hỏi một câu hỏi khác"
|
||
|
||
#: website/public/first-investigation/index.html:471
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Try a follow-up in the same conversation:"
|
||
msgstr "Hãy thử theo dõi trong cùng một cuộc trò chuyện:"
|
||
|
||
#: website/public/first-investigation/index.html:473
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid ""
|
||
"What happens if the file can’t be written? Follow the error back to the "
|
||
"page."
|
||
msgstr ""
|
||
"Điều gì xảy ra nếu tập tin không thể được viết? Thực hiện theo các lỗi trở "
|
||
"lại trang."
|
||
|
||
#: website/public/first-investigation/index.html:478
|
||
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 ""
|
||
"Hoặc cung cấp cho agent của bạn một ứng dụng của riêng bạn và hỏi về một "
|
||
"nút, tệp hoặc hành vi."
|
||
|
||
#. {ph0}: <a href="../showcase/notion/">
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span >
|
||
#. {ph3}: </span >
|
||
#: website/public/first-investigation/index.html:483
|
||
#, 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 sao chép văn bản và HTML như thế nào{ph1}{ph2}Thực hiện theo một"
|
||
" tính năng clipboard TRONG MỘT ỨNG dụng Electron đóng gói.{ph3}"
|
||
|
||
#. {ph0}: <a href="../showcase/dx-ball/" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span >
|
||
#. {ph3}: </span >
|
||
#: website/public/first-investigation/index.html:489
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid ""
|
||
"{ph0}How DX-Ball calculates sound panning{ph1}{ph2}Read the original "
|
||
"instructions and the reconstruction’s checks.{ph3}"
|
||
msgstr ""
|
||
"{ph0}CÁCH DX-Ball tính toán định vị âm thanh nổi{ph1}{ph2}Đọc hướng dẫn ban "
|
||
"đầu và séc tái thiết.{ph3}"
|
||
|
||
#. {ph0}: <a href="../faq/#troubleshooting" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span >
|
||
#. {ph3}: </span >
|
||
#: website/public/first-investigation/index.html:497
|
||
#, 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}Khắc phục sự cố thiết lập hoặc phân tích{ph1}{ph2}Cập NHẬT REA và kiểm "
|
||
"tra kết nối nếu bạn gặp khó khăn.{ph3}"
|
||
|
||
#: website/public/first-investigation/index.html:6
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Your First Reverse Engineering Investigation — REA"
|
||
msgstr "Điều Tra Kỹ Thuật Đảo Ngược Đầu tiên của bạn-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 ""
|
||
"Hãy thử REA trên Một Ứng dụng Ghi chú nhỏ. Thiết lập agent của bạn, hỏi ghi "
|
||
"chú đã xuất đi đâu và kiểm tra TRÌNH định dạng CSV với tiêu đề mẫu."
|
||
|
||
#: website/public/first-investigation/index.html:208
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/first-investigation/index.html:218
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Your first REA investigation"
|
||
msgstr "CUỘC điều tra REA đầu tiên của bạn"
|
||
|
||
#: website/public/first-investigation/index.html:234
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Copy REA installation prompt"
|
||
msgstr "Sao CHÉP lời nhắc cài ĐẶT REA"
|
||
|
||
#: website/public/first-investigation/index.html:256
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Copy setup command"
|
||
msgstr "Sao chép lệnh thiết lập"
|
||
|
||
#: website/public/first-investigation/index.html:284
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Copy Notes investigation prompt"
|
||
msgstr "Sao Chép Ghi chú điều tra nhanh chóng"
|
||
|
||
#: website/public/first-investigation/index.html:406
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Copy CSV check prompt"
|
||
msgstr "Sao CHÉP CSV kiểm tra dấu nhắc"
|
||
|
||
#: website/public/first-investigation/index.html:448
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Copy formatter check command"
|
||
msgstr "Sao chép lệnh kiểm tra định dạng"
|
||
|
||
#: website/public/first-investigation/index.html:523
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/get-started/index.html:103
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../">
|
||
#. {ph1}: </a>
|
||
#: website/public/get-started/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Home{ph1} / Get started"
|
||
msgstr "{ph0}Nhà{ph1} / Bắt đầu"
|
||
|
||
#: website/public/get-started/index.html:195
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Set up REA."
|
||
msgstr "Thiết LẬP REA ."
|
||
|
||
#: website/public/get-started/index.html:196
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"Connect REA to your coding agent, or inspect a local app from your terminal."
|
||
msgstr ""
|
||
"Kết nối REA với agent mã hóa của bạn hoặc kiểm tra một ứng dụng cục bộ từ "
|
||
"thiết bị đầu cuối của bạn."
|
||
|
||
#: website/public/get-started/index.html:208
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Open a terminal and check:"
|
||
msgstr "Mở một thiết bị đầu cuối và kiểm tra:"
|
||
|
||
#: website/public/get-started/index.html:211
|
||
#: website/public/get-started/index.html:468
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Terminal"
|
||
msgstr "Thiết bị đầu cuối"
|
||
|
||
#: website/public/get-started/index.html:212
|
||
#: website/public/get-started/index.html:233
|
||
#: website/public/get-started/index.html:256
|
||
#: website/public/get-started/index.html:272
|
||
#: website/public/get-started/index.html:287
|
||
#: website/public/get-started/index.html:302
|
||
#: website/public/get-started/index.html:318
|
||
#: website/public/get-started/index.html:337
|
||
#: website/public/get-started/index.html:423
|
||
#: website/public/get-started/index.html:469
|
||
#: website/public/get-started/index.html:545
|
||
#: website/public/get-started/index.html:604
|
||
#: website/public/get-started/index.html:645
|
||
#: website/public/get-started/index.html:677
|
||
#: website/public/get-started/index.html:734
|
||
#: website/public/get-started/index.html:775
|
||
#: website/public/get-started/index.html:815
|
||
#: website/public/get-started/index.html:831
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/get-started/index.html:229
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Windows (PowerShell){ph1}"
|
||
msgstr "{ph0} Windows (PowerShell){ph1}"
|
||
|
||
#. {ph0}: <code>node -v</code>
|
||
#: website/public/get-started/index.html:244
|
||
#, 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 ""
|
||
"Loại Y nếu được yêu cầu chấp nhận các điều khoản. Đóng PowerShell, mở lại, "
|
||
"sau đó chạy {ph0}."
|
||
|
||
#. {ph0}: <em>
|
||
#. {ph1}: </em>
|
||
#. {ph2}: <code>npx</code>
|
||
#: website/public/get-started/index.html:248
|
||
#, 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 ""
|
||
"Nếu PowerShell sau đó nói {ph0}\"chạy tập lệnh bị vô hiệu hóa trên hệ thống "
|
||
"này\"{ph1} khi bạn chạy {ph2}, chạy cái này một lần và thử lại:"
|
||
|
||
#: website/public/get-started/index.html:268
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "If you use Homebrew:"
|
||
msgstr "NẾU bạn sử DỤNG Homebrew :"
|
||
|
||
#: website/public/get-started/index.html:283
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Otherwise:"
|
||
msgstr "Nếu không:"
|
||
|
||
#: website/public/get-started/index.html:298
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Close Terminal, open it again, then:"
|
||
msgstr "Đóng Thiết bị đầu cuối, mở lại, sau đó:"
|
||
|
||
#. {ph0}: <code>curl</code>
|
||
#. {ph1}: <code>unzip</code>
|
||
#. {ph2}: <code>sudo apt install curl unzip</code>
|
||
#: website/public/get-started/index.html:329
|
||
#, 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 ""
|
||
"Trình cài đặt cần {ph0} và {ph1} (Trên Debian/Ubuntu: {ph2}). Đóng thiết bị "
|
||
"đầu cuối, mở lại, sau đó:"
|
||
|
||
#. {ph0}: <code>nodejs</code>
|
||
#. {ph1}: <code>node -v</code>
|
||
#: website/public/get-started/index.html:349
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"Your distribution's own {ph0} package is often older than 22.19, so check "
|
||
"{ph1} if you use it instead."
|
||
msgstr ""
|
||
"Bản phân phối của riêng bạn {ph0} gói thường cũ hơn 22,19, vì vậy hãy kiểm "
|
||
"tra {ph1} nếu bạn sử dụng nó thay thế."
|
||
|
||
#. {ph0}: <a href="https://nodejs.org/en/download">
|
||
#. {ph1}: </a>
|
||
#: website/public/get-started/index.html:353
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"Prefer a regular installer? Download the LTS version from "
|
||
"{ph0}nodejs.org{ph1}."
|
||
msgstr ""
|
||
"Thích một trình cài đặt thông thường? Tải xuống phiên bản LTS từ "
|
||
"{ph0}nodejs.org{ph1}."
|
||
|
||
#: website/public/get-started/index.html:361
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Setup options"
|
||
msgstr "Tùy chọn thiết lập"
|
||
|
||
#. {ph0}: <a href="#agent">
|
||
#. {ph1}: </a>
|
||
#: website/public/get-started/index.html:363
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Connect your coding agent{ph1}"
|
||
msgstr "{ph0}Kết nối agent mã hóa của bạn{ph1}"
|
||
|
||
#. {ph0}: <a href="#terminal">
|
||
#. {ph1}: </a>
|
||
#: website/public/get-started/index.html:364
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Use the CLI{ph1}"
|
||
msgstr "{ph0}Sử DỤNG CLI {ph1}"
|
||
|
||
#. {ph0}: <a href="#native">
|
||
#. {ph1}: </a>
|
||
#: website/public/get-started/index.html:365
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Set up native analysis{ph1}"
|
||
msgstr "{ph0}Thiết lập phân tích các chương trình mã máy{ph1}"
|
||
|
||
#. {ph0}: <a href="#help">
|
||
#. {ph1}: </a>
|
||
#: website/public/get-started/index.html:366
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Getting help{ph1}"
|
||
msgstr "{ph0}Nhận trợ giúp{ph1}"
|
||
|
||
#: website/public/get-started/index.html:371
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Connect your coding agent"
|
||
msgstr "Kết nối agent mã hóa của bạn"
|
||
|
||
#: website/public/get-started/index.html:372
|
||
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 ""
|
||
"Chạy thiết lập để kết nối REA với tác nhân mã hóa của bạn. Các lựa chọn của "
|
||
"khách hàng bao gồm Claude Code , Codex , Cursor , Gemini CLI , Windsurf , "
|
||
"Grok Build và CÁC máy KHÁCH MCP được hỗ trợ khác. Trình kết nối của Grok Bot"
|
||
" được thêm vào từ cuộc trò chuyện của Nó."
|
||
|
||
#: website/public/get-started/index.html:379
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "New to coding agents?"
|
||
msgstr "Mới đối với agent mã hóa?"
|
||
|
||
#: website/public/get-started/index.html:380
|
||
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 ""
|
||
"Tác nhân mã hóa là một trợ lý AI hoạt động trên máy tính của bạn thay vì "
|
||
"trong tab trình duyệt. Nó có thể đọc các tập tin và chạy các lệnh, và nó yêu"
|
||
" cầu trước khi thực hiện thay đổi. REA cung cấp cho nó các công cụ kỹ thuật"
|
||
" ngược."
|
||
|
||
#: website/public/get-started/index.html:386
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"If you don't have one yet, pick one, follow its install page and sign in:"
|
||
msgstr ""
|
||
"Nếu bạn chưa có, hãy chọn một, theo dõi trang cài đặt của nó và đăng nhập:"
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: <a href="https://code.claude.com/docs/en/setup" >
|
||
#. {ph2}: </a >
|
||
#. {ph3}: </strong >
|
||
#: website/public/get-started/index.html:391
|
||
#, 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} BỞI Anthropic . Cần một kế hoạch Claude "
|
||
"trả tiền."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: <a href="https://github.com/openai/codex">
|
||
#. {ph2}: </a>
|
||
#. {ph3}: </strong >
|
||
#: website/public/get-started/index.html:399
|
||
#, 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} BỞI OpenAI . Đăng nhập bằng Tài khoản ChatGPT "
|
||
"của bạn."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: <a href="https://opencode.ai/docs">
|
||
#. {ph2}: </a>
|
||
#. {ph3}: </strong >
|
||
#: website/public/get-started/index.html:405
|
||
#, 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}, mã nguồn mở. Kết nối nhà cung cấp mô hình "
|
||
"bạn chọn."
|
||
|
||
#: website/public/get-started/index.html:411
|
||
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 ""
|
||
"Sau đó mở nó và sao chép lời nhắc bên dưới vào nó. Các agent chạy REA 's "
|
||
"thiết lập và cho bạn thấy kế hoạch trước khi thay đổi bất cứ điều gì."
|
||
|
||
#. {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:418
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/get-started/index.html:443
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Or run setup yourself"
|
||
msgstr "Hoặc tự chạy thiết lập"
|
||
|
||
#: website/public/get-started/index.html:445
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "How do I open a terminal?"
|
||
msgstr "Làm cách nào để mở một thiết bị đầu cuối?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <em>
|
||
#. {ph3}: </em>
|
||
#: website/public/get-started/index.html:447
|
||
#, 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} mở Menu Bắt đầu, nhập {ph2}PowerShell{ph3} và nhấn "
|
||
"Enter."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <kbd>⌘</kbd>
|
||
#. {ph3}: <kbd>Space</kbd>
|
||
#. {ph4}: <em>
|
||
#. {ph5}: </em>
|
||
#: website/public/get-started/index.html:451
|
||
#, 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} báo chí {ph2} {ph3}, loại {ph4}Thiết bị đầu cuối{ph5} và "
|
||
"nhấn Enter."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <kbd>Ctrl</kbd>
|
||
#. {ph3}: <kbd>Alt</kbd>
|
||
#. {ph4}: <kbd>T</kbd>
|
||
#: website/public/get-started/index.html:455
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Linux:{ph1} press {ph2} {ph3} {ph4} on most desktops."
|
||
msgstr ""
|
||
"{ph0} Linux :{ph1} báo chí {ph2} {ph3} {ph4} trên hầu hết các máy tính để "
|
||
"bàn."
|
||
|
||
#. {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:460
|
||
#, 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 ""
|
||
"Dán một lệnh với {ph0} {ph1} (macOS : {ph2} {ph3}; THIẾT BỊ ĐẦU CUỐI Linux: "
|
||
"{ph4} {ph5} {ph6}), sau đó nhấn Enter."
|
||
|
||
#: website/public/get-started/index.html:481
|
||
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 ""
|
||
"Chọn khách hàng của bạn và xem lại kế hoạch thiết lập. REA thêm KẾT nối MCP"
|
||
" và kỹ năng điều tra phù hợp, giữ một bản sao lưu cấu hình hiện có. Nó hỏi "
|
||
"trước khi áp dụng các thay đổi."
|
||
|
||
#: website/public/get-started/index.html:486
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Restart your client when setup finishes."
|
||
msgstr "Khởi động lại máy khách của bạn khi thiết lập kết thúc."
|
||
|
||
#: website/public/get-started/index.html:488
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "How do I restart my client?"
|
||
msgstr "Làm cách nào để khởi động lại khách hàng của tôi?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <kbd>⌘</kbd>
|
||
#. {ph3}: <kbd>Q</kbd>
|
||
#: website/public/get-started/index.html:489
|
||
#, 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}Ứng dụng máy tính để bàn{ph1} (Claude Desktop, Cursor , Windsurf, VS "
|
||
"Code ): thoát khỏi ứng dụng hoàn toàn, sau đó mở lại. Đóng cửa sổ là không "
|
||
"đủ. TRÊN macOS báo chí {ph2} {ph3}; TRÊN Windows, cũng thoát khỏi biểu tượng"
|
||
" khay nếu có."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/get-started/index.html:496
|
||
#, 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}Agent thiết bị đầu cuối{ph1} (Claude Code, Codex, Gemini CLI): thoát "
|
||
"khỏi phiên và bắt đầu lại."
|
||
|
||
#: website/public/get-started/index.html:501
|
||
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 ""
|
||
"Cung cấp cho agent của bạn một đường dẫn mục tiêu và một câu hỏi cụ thể. ĐỐI"
|
||
" với ỨNG dụng JavaScript hoặc Electron, bạn có thể bắt đầu với:"
|
||
|
||
#. {ph0}: <code>/absolute/path/to/app</code>
|
||
#: website/public/get-started/index.html:506
|
||
#, 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 ""
|
||
"Nhìn kìa {ph0} và tìm cách nó xuất dữ liệu. Hiển thị các điểm vào, cuộc gọi "
|
||
"và phụ thuộc liên quan, với các vị trí nguồn cho những phát hiện của bạn."
|
||
|
||
#: website/public/get-started/index.html:512
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Replace the path with your local target."
|
||
msgstr "Thay thế đường dẫn bằng mục tiêu cục bộ của bạn."
|
||
|
||
#: website/public/get-started/index.html:514
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "How do I get a folder's full path?"
|
||
msgstr "Làm cách nào để có được đường dẫn đầy đủ của một thư mục?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <em>
|
||
#. {ph3}: </em>
|
||
#: website/public/get-started/index.html:516
|
||
#, 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} Trong File Explorer, nhấp chuột phải vào thư mục và "
|
||
"chọn {ph2}Sao chép dưới dạng đường dẫn{ph3}. TRÊN Windows 10, giữ Shift "
|
||
"trong khi nhấp chuột phải."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <em>
|
||
#. {ph3}: </em>
|
||
#: website/public/get-started/index.html:521
|
||
#, 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} trong Finder, nhấp chuột phải vào thư mục, giữ Tùy chọn "
|
||
"và chọn {ph2}Sao chép \" ... \" dưới Dạng Tên Đường Dẫn{ph3}."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/get-started/index.html:525
|
||
#, 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}Bất kỳ hệ thống:{ph1} kéo thư mục vào cửa sổ đầu cuối và đường dẫn của "
|
||
"nó xuất hiện."
|
||
|
||
#: website/public/get-started/index.html:530
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "In a terminal, put quotes around a path that contains spaces."
|
||
msgstr ""
|
||
"Trong một thiết bị đầu cuối, đặt dấu ngoặc kép xung quanh một đường dẫn có "
|
||
"chứa khoảng trắng."
|
||
|
||
#: website/public/get-started/index.html:537
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Use the CLI"
|
||
msgstr "Sử DỤNG CLI"
|
||
|
||
#: website/public/get-started/index.html:538
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"Analyze a JavaScript or Electron application folder or ASAR archive without "
|
||
"running the app:"
|
||
msgstr ""
|
||
"Phân tích THƯ mục ỨNG DỤNG JavaScript hoặc Electron hoặc KHO LƯU TRỮ ASAR mà"
|
||
" không cần chạy ứng dụng:"
|
||
|
||
#: website/public/get-started/index.html:544
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Static application analysis"
|
||
msgstr "Phân tích ứng dụng tĩnh"
|
||
|
||
#. {ph0}: <code>.asar</code>
|
||
#. {ph1}: <code>"D:/apps/example"</code>
|
||
#: website/public/get-started/index.html:557
|
||
#, 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 ""
|
||
"Thay thế đường dẫn bằng thư mục ứng dụng được trích xuất của bạn hoặc {ph0} "
|
||
"tập tin. TRÊN Windows, một đường dẫn như {ph1} hoạt động ở đây."
|
||
|
||
#: website/public/get-started/index.html:563
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Where do I find an app's .asar file?"
|
||
msgstr "Tôi tìm thấy một ứng dụng ở đâu .tập tin asar?"
|
||
|
||
#. {ph0}: <code>resources</code>
|
||
#: website/public/get-started/index.html:564
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Electron apps usually keep it in a {ph0} folder:"
|
||
msgstr "Electron ứng dụng thường giữ nó trong một {ph0} thư mục:"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code
|
||
#. >C:\Users\<you>\AppData\Local\Programs\<App>\resources\app.asar</code
|
||
#. >
|
||
#: website/public/get-started/index.html:569
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Windows:{ph1} {ph2}"
|
||
msgstr "{ph0} Windows :{ph1} {ph2}"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code
|
||
#. >/Applications/<App>.app/Contents/Resources/app.asar</code >
|
||
#. {ph3}: <em>
|
||
#. {ph4}: </em>
|
||
#: website/public/get-started/index.html:575
|
||
#, 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} (nhấp chuột phải vào ứng dụng và chọn {ph3}Hiển Thị"
|
||
" Nội Dung Gói{ph4})"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>/opt/<App>/resources/app.asar</code>
|
||
#: website/public/get-started/index.html:583
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Linux:{ph1} often {ph2}"
|
||
msgstr "{ph0} Linux :{ph1} thường xuyên {ph2}"
|
||
|
||
#. {ph0}: <code>app.asar</code>
|
||
#: website/public/get-started/index.html:588
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Some apps install elsewhere. Search the app's folder for {ph0}."
|
||
msgstr ""
|
||
"Một số ứng dụng cài đặt ở nơi khác. Tìm kiếm thư mục của ứng dụng cho {ph0}."
|
||
|
||
#: website/public/get-started/index.html:593
|
||
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 ""
|
||
"Kết quả xác định ứng dụng, hiển thị kết nối giữa các mô-đun và cung cấp vị "
|
||
"trí nguồn của chúng. Kết nối REA không thể giải quyết được đánh dấu trong "
|
||
"kết quả."
|
||
|
||
#. {ph0}: <code>rea</code>
|
||
#: website/public/get-started/index.html:598
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "If you'd like a permanent {ph0} command in your shell:"
|
||
msgstr "Nếu bạn muốn một vĩnh viễn {ph0} lệnh trong shell của bạn:"
|
||
|
||
#: website/public/get-started/index.html:603
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Install the CLI"
|
||
msgstr "Cài ĐẶT CLI"
|
||
|
||
#. {ph0}: <a href="../guides/javascript/" >
|
||
#. {ph1}: </a >
|
||
#: website/public/get-started/index.html:615
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "{ph0}Continue with the JavaScript application guide{ph1}"
|
||
msgstr "{ph0}Tiếp tục VỚI hướng dẫn ứng DỤNG JavaScript{ph1}"
|
||
|
||
#: website/public/get-started/index.html:623
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Set up native analysis"
|
||
msgstr "Thiết lập phân tích các chương trình mã máy"
|
||
|
||
#: website/public/get-started/index.html:624
|
||
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 ""
|
||
"Các chương trình mã máy cần một công cụ phân tích cục bộ. Chọn và định cấu "
|
||
"hình MỘT bên dưới, sau đó cung cấp CHO REA tệp thực thi hoặc thư viện của "
|
||
"bạn."
|
||
|
||
#: website/public/get-started/index.html:629
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Choose a tool: Ghidra, Hopper or IDA"
|
||
msgstr "Chọn một công cụ: Ghidra, Hopper hoặc IDA"
|
||
|
||
#: website/public/get-started/index.html:634
|
||
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 ""
|
||
"Sử DỤNG Ghidra 12.1 hiện có.cài đặt x và JDK 21 64 bit trở lên TRÊN Linux "
|
||
"hoặc macOS , trên x64 hoặc arm64. Cài ĐẶT Ghidra của bạn cần một trình dịch "
|
||
"ngược gốc cho kiến trúc máy chủ của bạn. Đặt đường dẫn trước khi chạy thiết "
|
||
"lập:"
|
||
|
||
#: website/public/get-started/index.html:641
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Connect your Ghidra installation"
|
||
msgstr "Kết nối CÀI ĐẶT Ghidra của bạn"
|
||
|
||
#: website/public/get-started/index.html:644
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Ghidra connection · macOS / Linux"
|
||
msgstr "Ghidra kết nối * macOS / Linux"
|
||
|
||
#: website/public/get-started/index.html:659
|
||
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 ""
|
||
"Thay thế cả hai đường dẫn bằng các cài đặt hiện có của bạn. Thiết lập kiểm "
|
||
"tra chúng và ghi lại các cài đặt hợp lệ cho ứng dụng khách đã chọn của bạn. "
|
||
"TRÊN Linux arm64, bạn có thể cần xây DỰNG RIÊNG TRÌNH dịch ngược GỐC CỦA "
|
||
"Ghidra."
|
||
|
||
#: website/public/get-started/index.html:667
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Connect Ghidra on Windows"
|
||
msgstr "Kết NỐI Ghidra TRÊN Windows"
|
||
|
||
#: website/public/get-started/index.html:668
|
||
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 có hỗ trợ thử nghiệm, chỉ đọc cho các ứng dụng VÀ Dll X86 và x64"
|
||
" pe gốc trên các ổ đĩa ntfs cục bộ cố định. Sử DỤNG Ghidra 12.1 hiện có.x "
|
||
"cài đặt VÀ 64-bit JDK 21 hoặc mới hơn:"
|
||
|
||
#: website/public/get-started/index.html:676
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Ghidra connection · Windows PowerShell"
|
||
msgstr "Ghidra kết nối * Windows PowerShell"
|
||
|
||
#: website/public/get-started/index.html:691
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"Replace the two paths with your installations, then review setup's plan."
|
||
msgstr ""
|
||
"Thay thế hai đường dẫn bằng cài đặt của bạn, sau đó xem lại kế hoạch thiết "
|
||
"lập."
|
||
|
||
#: website/public/get-started/index.html:701
|
||
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 ""
|
||
"Kết nối Hopper TRÊN macOS hoặc Linux . Chạy lệnh thiết lập ở trên; nó phát "
|
||
"hiện cài đặt hiện có hoặc cung cấp kế hoạch cài đặt để bạn phê duyệt."
|
||
|
||
#: website/public/get-started/index.html:706
|
||
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 ""
|
||
"TRÊN macOS, hoàn THÀNH Hopper ' s lựa chọn chạy đầu tiên của chế độ demo "
|
||
"hoặc kích hoạt giấy phép trước khi phân tích không giám sát."
|
||
|
||
#: website/public/get-started/index.html:715
|
||
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 ""
|
||
"CÁC THIẾT LẬP IDA đã được xác minh sử dụng Windows , với đăng ký MCP hiện có"
|
||
" cho GUI đính kèm hoặc cơ sở dữ liệu không đầu. PHÂN tích không đầu Linux "
|
||
"và macOS vẫn chưa được xác minh."
|
||
|
||
#: website/public/get-started/index.html:721
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Connect an existing IDA MCP registration"
|
||
msgstr "Kết nối ĐĂNG ký IDA MCP HIỆN CÓ"
|
||
|
||
#. {ph0}: <code>command</code>
|
||
#. {ph1}: <code>args</code>
|
||
#. {ph2}: <code>env</code>
|
||
#. {ph3}: <code>mcpServers</code>
|
||
#. {ph4}: <code>ida-pro-mcp</code>
|
||
#: website/public/get-started/index.html:724
|
||
#, 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 ""
|
||
"Giữ cho máy chủ thượng nguồn hoạt động {ph0}, {ph1} và tùy chọn {ph2} trong "
|
||
"một tệp JSON. Một hiện có {ph3} đối tượng với một {ph4} nhập cảnh cũng được "
|
||
"chấp nhận. Trỏ REA vào tệp đó trước khi thiết lập:"
|
||
|
||
#: website/public/get-started/index.html:733
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "IDA connection · Windows PowerShell"
|
||
msgstr "IDA kết nối * Windows PowerShell"
|
||
|
||
#. {ph0}: <code>"mode": "headless"</code>
|
||
#: website/public/get-started/index.html:748
|
||
#, 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 ""
|
||
"Hồ sơ đính kèm sử dụng các công cụ legacy 1.4.0 ngược dòng với nhị phân ban "
|
||
"đầu đã mở TRONG IDA . Hồ sơ không đầu sử dụng api giám sát cơ sở dữ liệu "
|
||
"ngược dòng và đăng ký với {ph0}; xác minh thực sự bao gồm MỘT giám sát VIÊN "
|
||
"IDA 9.3 Windows x64. Bác sĩ kiểm tra đăng ký mà không bắt ĐẦU IDA ."
|
||
|
||
#. {ph0}: <code>--provider ida</code>
|
||
#. {ph1}: <code>REA_IDA_MCP_CONFIG</code>
|
||
#: website/public/get-started/index.html:757
|
||
#, 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 ""
|
||
"Cung CẤP CHO REA đường dẫn thực thi ban đầu, với {ph0} TRONG truy vấn CLI. "
|
||
"Đối với một agent, bao gồm {ph1} trong môi trường ĐĂNG ký REA và chọn IDA "
|
||
"khi mở nhị phân."
|
||
|
||
#: website/public/get-started/index.html:769
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "For an existing Ghidra setup, inspect a function with:"
|
||
msgstr "Đối với THIẾT LẬP Ghidra hiện có, hãy kiểm tra một chức năng với:"
|
||
|
||
#: website/public/get-started/index.html:774
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Function analysis"
|
||
msgstr "Phân tích chức năng"
|
||
|
||
#. {ph0}: <code>main</code>
|
||
#: website/public/get-started/index.html:787
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Replace {ph0} with the function name or address you want to inspect."
|
||
msgstr "Thay thế {ph0} với tên chức năng hoặc địa chỉ bạn muốn kiểm tra."
|
||
|
||
#: website/public/get-started/index.html:792
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "How native analysis sessions work"
|
||
msgstr "Cách phân tích các phiên chương trình mã máy hoạt động"
|
||
|
||
#: website/public/get-started/index.html:793
|
||
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 ""
|
||
"Mỗi lệnh CLI nhập và phân tích nhị phân, sau đó đóng phiên của nó. Các truy "
|
||
"vấn MCP của agent của bạn sử dụng lại nhị phân đã nhập trong khi phiên đó "
|
||
"đang mở."
|
||
|
||
#. {ph0}: <a href="../guides/native/">
|
||
#. {ph1}: </a>
|
||
#: website/public/get-started/index.html:799
|
||
#, 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}Thực hiện theo phân tích ví dụ về chương trình mã máy{ph1} để xem kết "
|
||
"quả hàm dẫn đến một phép tính được phục hồi như thế nào."
|
||
|
||
#: website/public/get-started/index.html:806
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Getting help"
|
||
msgstr "Nhận trợ giúp"
|
||
|
||
#: website/public/get-started/index.html:807
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "If your agent doesn't see REA"
|
||
msgstr "Nếu agent của bạn không THẤY REA"
|
||
|
||
#. {ph0}: <code>doctor</code>
|
||
#: website/public/get-started/index.html:808
|
||
#, 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 ""
|
||
"Khởi động lại hoặc kết nối lại máy khách sau khi thiết lập. Kiểm tra KẾT nối"
|
||
" REA của NÓ với {ph0}; CHO Codex :"
|
||
|
||
#: website/public/get-started/index.html:814
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Check one client"
|
||
msgstr "Kiểm tra một khách hàng"
|
||
|
||
#: website/public/get-started/index.html:826
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "If a provider needs attention"
|
||
msgstr "Nếu một nhà cung cấp cần chú ý"
|
||
|
||
#: website/public/get-started/index.html:827
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Check the provider you're using. For Ghidra:"
|
||
msgstr "Kiểm tra nhà cung cấp bạn đang sử dụng. CHO Ghidra :"
|
||
|
||
#: website/public/get-started/index.html:830
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Check one provider"
|
||
msgstr "Kiểm tra một nhà cung cấp"
|
||
|
||
#: website/public/get-started/index.html:842
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "The report gives the failed check and a suggested next step."
|
||
msgstr "Báo cáo đưa ra kiểm tra thất bại và một bước tiếp theo được đề xuất."
|
||
|
||
#. {ph0}: <a href="../faq/">
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span>
|
||
#. {ph3}: </span>
|
||
#: website/public/get-started/index.html:844
|
||
#, 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 CÂU HỎI THƯỜNG GẶP{ph1}{ph2}Câu trả lời nhanh về cập nhật, agent "
|
||
"và phân tích.{ph3}"
|
||
|
||
#. {ph0}: <a href="../guides/">
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span >
|
||
#. {ph3}: </span >
|
||
#: website/public/get-started/index.html:848
|
||
#, 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}Chọn một hướng dẫn điều tra{ph1}{ph2}Làm việc ví dụ cho một nhị phân, "
|
||
"MỘT ỨNG dụng Electron và một trình duyệt.{ph3}"
|
||
|
||
#. {ph0}: <a href="https://github.com/morluto/rea/issues">
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span>
|
||
#. {ph3}: </span>
|
||
#: website/public/get-started/index.html:855
|
||
#, 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 vấn đề{ph1}{ph2}Báo cáo sự cố với lệnh và chẩn đoán.{ph3}"
|
||
|
||
#. {ph0}: <a href="https://discord.gg/GkcryMnJDM">
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span>
|
||
#. {ph3}: </span>
|
||
#: website/public/get-started/index.html:859
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"{ph0}REA community{ph1}{ph2}Questions, investigations and work in "
|
||
"progress.{ph3}"
|
||
msgstr ""
|
||
"{ph0} Cộng ĐỒNG REA{ph1}{ph2}Câu hỏi, điều tra và làm việc trong tiến "
|
||
"trình.{ph3}"
|
||
|
||
#: website/public/get-started/index.html:6
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Install REA and Set Up Your Coding Agent"
|
||
msgstr "Cài ĐẶT REA và Thiết Lập Agent Mã Hóa Của Bạn"
|
||
|
||
#: website/public/get-started/index.html:7
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"Connect REA to your coding agent or inspect a local JavaScript or Electron "
|
||
"app from the terminal. Setup, first questions and native provider guides."
|
||
msgstr ""
|
||
"Kết nối REA với agent mã hóa của bạn hoặc kiểm tra ỨNG dụng JavaScript hoặc "
|
||
"Electron cục bộ từ thiết bị đầu cuối. Thiết lập, câu hỏi đầu tiên và hướng "
|
||
"dẫn nhà cung cấp bản địa."
|
||
|
||
#: website/public/get-started/index.html:212
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy Node.js version check"
|
||
msgstr "Sao CHÉP kiểm tra PHIÊN BẢN Node.js"
|
||
|
||
#: website/public/get-started/index.html:233
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy Node.js installation command for Windows"
|
||
msgstr "Sao CHÉP lệnh cài ĐẶT Node.js CHO Windows"
|
||
|
||
#: website/public/get-started/index.html:256
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy PowerShell execution policy command"
|
||
msgstr "Sao Chép Lệnh Chính sách Thực Thi PowerShell"
|
||
|
||
#: website/public/get-started/index.html:272
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy Homebrew Node.js installation command"
|
||
msgstr "Sao CHÉP lệnh cài ĐẶT Homebrew Node.js"
|
||
|
||
#: website/public/get-started/index.html:287
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy fnm installation command for macOS"
|
||
msgstr "Sao chép lệnh cài đặt fnm CHO macOS"
|
||
|
||
#: website/public/get-started/index.html:302
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy Node.js 24 commands for macOS"
|
||
msgstr "Sao CHÉP Node.js 24 lệnh CHO macOS"
|
||
|
||
#: website/public/get-started/index.html:318
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy fnm installation command for Linux"
|
||
msgstr "Sao chép lệnh cài đặt fnm CHO Linux"
|
||
|
||
#: website/public/get-started/index.html:337
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy Node.js 24 commands for Linux"
|
||
msgstr "Sao CHÉP Node.js 24 lệnh CHO Linux"
|
||
|
||
#: website/public/get-started/index.html:360
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/get-started/index.html:369
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "REA getting started guide"
|
||
msgstr "REA bắt đầu hướng dẫn"
|
||
|
||
#: website/public/get-started/index.html:423
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy REA installation prompt"
|
||
msgstr "Sao CHÉP lời nhắc cài ĐẶT REA"
|
||
|
||
#: website/public/get-started/index.html:469
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy agent setup command"
|
||
msgstr "Sao chép lệnh thiết lập tác nhân"
|
||
|
||
#: website/public/get-started/index.html:545
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy JavaScript analysis command"
|
||
msgstr "Sao CHÉP lệnh PHÂN tích JavaScript"
|
||
|
||
#: website/public/get-started/index.html:604
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy CLI installation command"
|
||
msgstr "Sao CHÉP lệnh cài ĐẶT CLI"
|
||
|
||
#: website/public/get-started/index.html:645
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy Ghidra connection for macOS and Linux"
|
||
msgstr "Sao chép lệnh kết nối Ghidra cho macOS và Linux"
|
||
|
||
#: website/public/get-started/index.html:677
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy Ghidra connection for Windows PowerShell"
|
||
msgstr "Sao CHÉP Ghidra kết nối CHO Windows PowerShell"
|
||
|
||
#: website/public/get-started/index.html:734
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy IDA connection for Windows PowerShell"
|
||
msgstr "Sao CHÉP IDA kết nối CHO Windows PowerShell"
|
||
|
||
#: website/public/get-started/index.html:775
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy native function analysis command"
|
||
msgstr "Sao chép lệnh phân tích chức năng gốc"
|
||
|
||
#: website/public/get-started/index.html:815
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy client diagnosis command"
|
||
msgstr "Sao chép lệnh chẩn đoán khách hàng"
|
||
|
||
#: website/public/get-started/index.html:831
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Copy provider diagnosis command"
|
||
msgstr "Sao chép lệnh chẩn đoán nhà cung cấp"
|
||
|
||
#: website/public/get-started/index.html:882
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/guides/browser/index.html:103
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/guides/browser/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Browser observation"
|
||
msgstr "{ph0}Nhà{ph1} / {ph2}Hướng dẫn{ph3} / Quan sát trình duyệt"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/guides/browser/index.html:198
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "See what happens{ph0}when you click."
|
||
msgstr "Xem những gì xảy ra{ph0}khi bạn nhấp vào."
|
||
|
||
#: website/public/guides/browser/index.html:199
|
||
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 ""
|
||
"Sử dụng một ứng dụng trình duyệt nhỏ để kết nối một hành động, yêu cầu mạng "
|
||
"của nó và JavaScript xây dựng tải xuống."
|
||
|
||
#: website/public/guides/browser/index.html:206
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "In this guide"
|
||
msgstr "Trong hướng dẫn này"
|
||
|
||
#. {ph0}: <a href="#example">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/browser/index.html:208
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0}The example{ph1}"
|
||
msgstr "{ph0}Ví dụ{ph1}"
|
||
|
||
#. {ph0}: <a href="#prepare">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/browser/index.html:209
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0}Open the browser{ph1}"
|
||
msgstr "{ph0}Mở trình duyệt{ph1}"
|
||
|
||
#. {ph0}: <a href="#ask">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/browser/index.html:210
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0}Ask your agent{ph1}"
|
||
msgstr "{ph0}Hỏi agent của bạn{ph1}"
|
||
|
||
#. {ph0}: <a href="#capture">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/browser/index.html:211
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0}Capture from CLI{ph1}"
|
||
msgstr "{ph0}Chụp TỪ CLI {ph1}"
|
||
|
||
#. {ph0}: <a href="#result">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/browser/index.html:212
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0}Read the request and script{ph1}"
|
||
msgstr "{ph0}Đọc yêu cầu và tập lệnh{ph1}"
|
||
|
||
#: website/public/guides/browser/index.html:217
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "What happens when you click Export?"
|
||
msgstr "Điều gì xảy ra khi bạn nhấp Vào Xuất?"
|
||
|
||
#. {ph0}: <a href="../../examples/notes-web/">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <strong>
|
||
#. {ph3}: </strong>
|
||
#. {ph4}: <code>notes.json</code>
|
||
#: website/public/guides/browser/index.html:218
|
||
#, 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 ""
|
||
"Các {ph0}Ghi chú ví dụ trình duyệt{ph1} có một {ph2}Xuất ghi chú{ph3} nút. "
|
||
"Nhấp vào nó tải {ph4}, định dạng hai ghi chú DƯỚI DẠNG CSV và bắt đầu tải "
|
||
"xuống."
|
||
|
||
#: website/public/guides/browser/index.html:226
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "From the click to the CSV download"
|
||
msgstr "Từ nhấp VÀO TẢI XUỐNG 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:228
|
||
#, 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 * Bạn{ph1}{ph2}Nhấp Vào Xuất ghi chú{ph3}{ph4}Thực hiện hành động "
|
||
"trong trình duyệt của bạn trong khi chụp đang chạy.{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:236
|
||
#, 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}Ghi lại yêu cầu{ph3}{ph4}Chụp URL yêu cầu, trạng "
|
||
"thái phản hồi và cấu trúc JSON từ trang đã chọn.{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:244
|
||
#, 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 * agent của Bạn{ph1}{ph2}Đọc mã xuất{ph3}{ph4}Kết nối yêu cầu quan "
|
||
"sát được với {ph5} trong {ph6}.{ph7}"
|
||
|
||
#: website/public/guides/browser/index.html:257
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Start the capture before clicking Export notes."
|
||
msgstr "Bắt đầu chụp trước khi nhấp Vào xuất ghi chú."
|
||
|
||
#: website/public/guides/browser/index.html:263
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Open Chrome with remote debugging"
|
||
msgstr "MỞ Chrome với gỡ lỗi từ xa"
|
||
|
||
#: website/public/guides/browser/index.html:264
|
||
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 ""
|
||
"Mở Ví Dụ Ghi chú được lưu trữ với cấu hình trình duyệt riêng biệt và cổng gỡ"
|
||
" lỗi cục bộ. TRÊN Linux :"
|
||
|
||
#: website/public/guides/browser/index.html:270
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Start the example browser"
|
||
msgstr "Khởi động trình duyệt ví dụ"
|
||
|
||
#: website/public/guides/browser/index.html:271
|
||
#: website/public/guides/browser/index.html:303
|
||
#: website/public/guides/browser/index.html:337
|
||
#: website/public/guides/browser/index.html:356
|
||
#: website/public/guides/browser/index.html:421
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#: website/public/guides/browser/index.html:285
|
||
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 ""
|
||
"Sử dụng đường dẫn thực thi của trình duyệt đã cài đặt của BẠN TRÊN macOS "
|
||
"hoặc Windows . BẠN có thể thay THẾ url trang bằng một trang khác mà bạn muốn"
|
||
" kiểm tra."
|
||
|
||
#: website/public/guides/browser/index.html:290
|
||
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 kết nối với trình duyệt hiện có này. Bạn giữ quyền kiểm soát trang, thực"
|
||
" hiện hành động và đóng trình duyệt khi hoàn tất."
|
||
|
||
#: website/public/guides/browser/index.html:296
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Ask your agent to watch one action"
|
||
msgstr "Yêu cầu agent của bạn xem một hành động"
|
||
|
||
#. {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:299
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
|
||
#. {ph1}: </span >
|
||
#. {ph2}: <span id="browser-prompt" >
|
||
#. {ph3}: </span >
|
||
#. {ph4}: <span class="terminal-cursor" aria-hidden="true">
|
||
#. {ph5}: </span>
|
||
#: website/public/guides/browser/index.html:312
|
||
#, 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}Sử dụng REA để kiểm tra trang này trong khi tôi nhấp Vào "
|
||
"xuất ghi chú. NÓ đưa ra yêu cầu gì và CSV được xây dựng như thế "
|
||
"nào?{ph3}{ph4}{ph5}"
|
||
|
||
#. {ph0}: <code>http://127.0.0.1:9222</code>
|
||
#: website/public/guides/browser/index.html:320
|
||
#, 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 ""
|
||
"Ví dụ nhắc nhở. Cung cấp cho agent của bạn điểm cuối gỡ lỗi, {ph0}, VÀ url "
|
||
"trang. Hãy để nó bắt đầu chụp trước khi bạn nhấp vào."
|
||
|
||
#: website/public/guides/browser/index.html:325
|
||
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 ""
|
||
"Agent của bạn phát hiện ra mục tiêu trang, bắt đầu một cửa sổ quan sát và "
|
||
"đọc bằng chứng kết quả. Sau đó, nó có thể kiểm tra tập lệnh đằng sau xuất "
|
||
"khẩu."
|
||
|
||
#: website/public/guides/browser/index.html:332
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Or capture from the terminal"
|
||
msgstr "Hoặc chụp từ thiết bị đầu cuối"
|
||
|
||
#: website/public/guides/browser/index.html:333
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Find the page's target ID:"
|
||
msgstr "Tìm ID mục tiêu của trang:"
|
||
|
||
#: website/public/guides/browser/index.html:336
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Find the page"
|
||
msgstr "Tìm trang"
|
||
|
||
#. {ph0}: <code>TARGET_ID</code>
|
||
#: website/public/guides/browser/index.html:349
|
||
#, 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 ""
|
||
"Chọn mục tiêu với Url Ví dụ Ghi chú. Thay thế {ph0} BÊN dưới VỚI ID của NÓ, "
|
||
"sau đó chạy:"
|
||
|
||
#: website/public/guides/browser/index.html:355
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Capture the next ten seconds"
|
||
msgstr "Chụp mười giây tiếp theo"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/browser/index.html:371
|
||
#, 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 ""
|
||
"Để lệnh kết nối trong vài giây, sau đó nhấp vào {ph0}Xuất ghi chú{ph1} trong"
|
||
" trình duyệt đó. Kết quả đến sau khi cửa sổ quan sát kết thúc."
|
||
|
||
#: website/public/guides/browser/index.html:376
|
||
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 ""
|
||
"Kết quả đã chụp bao gồm trang đã chọn, hoạt động mạng trong cửa sổ đó và "
|
||
"hình dạng của phản hồi JSON. Yêu cầu trước đó là bên ngoài chụp này."
|
||
|
||
#: website/public/guides/browser/index.html:383
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Read the request and export script"
|
||
msgstr "Đọc yêu cầu và xuất tập lệnh"
|
||
|
||
#: website/public/guides/browser/index.html:386
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Recorded with REA 4.1.0 on the local Notes example"
|
||
msgstr "Được ghi BẰNG REA 4.1.0 trên Ví Dụ Ghi chú cục Bộ"
|
||
|
||
#: website/public/guides/browser/index.html:391
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Captured fact"
|
||
msgstr "Thực tế bị bắt"
|
||
|
||
#: website/public/guides/browser/index.html:392
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Value"
|
||
msgstr "Giá trị"
|
||
|
||
#: website/public/guides/browser/index.html:397
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Request"
|
||
msgstr "Yêu cầu"
|
||
|
||
#: website/public/guides/browser/index.html:401
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Response"
|
||
msgstr "Phản hồi"
|
||
|
||
#: website/public/guides/browser/index.html:405
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Request initiator"
|
||
msgstr "Yêu cầu người khởi xướng"
|
||
|
||
#. {ph0}: <code>export.js</code>
|
||
#: website/public/guides/browser/index.html:406
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0} · script"
|
||
msgstr "{ph0} * kịch bản"
|
||
|
||
#: website/public/guides/browser/index.html:409
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Response structure"
|
||
msgstr "Cấu trúc phản hồi"
|
||
|
||
#. {ph0}: <code>notes[]</code>
|
||
#. {ph1}: <code>id</code>
|
||
#. {ph2}: <code>title</code>
|
||
#: website/public/guides/browser/index.html:410
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0} with {ph1} and {ph2} fields"
|
||
msgstr "{ph0} với {ph1} và {ph2} lĩnh vực"
|
||
|
||
#: website/public/guides/browser/index.html:420
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Read the loaded scripts"
|
||
msgstr "Đọc các tập lệnh đã tải"
|
||
|
||
#. {ph0}: <code>export.js</code>
|
||
#: website/public/guides/browser/index.html:434
|
||
#, 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 ""
|
||
"Yêu cầu xác định nguồn dữ liệu và BẢN ghi REA {ph0} là người khởi xướng nó. "
|
||
"Đọc nguồn tập lệnh đã chụp để xem dữ liệu được sử dụng như thế nào:"
|
||
|
||
#. {ph0}: <code>notes.json</code>
|
||
#: website/public/guides/browser/index.html:454
|
||
#, 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 ""
|
||
"Việc tải xuống được xây dựng trong trang bằng phản hồi JSON. BƯỚC ĐỊNH DẠNG "
|
||
"CSV xuất phát từ tập lệnh; chụp mạng thiết lập rằng nhấp chuột này được yêu "
|
||
"cầu {ph0}."
|
||
|
||
#. {ph0}: <code>notes.json</code>
|
||
#: website/public/guides/browser/index.html:470
|
||
#, 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 ""
|
||
"Tìm tập lệnh yêu cầu {ph0}. Làm thế nào để nó thoát khỏi tiêu đề chứa dấu "
|
||
"phẩy hoặc dấu ngoặc kép?"
|
||
|
||
#. {ph0}: <a href="../javascript/">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/browser/index.html:475
|
||
#, 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 ""
|
||
"ĐỐI với ỨNG DỤNG JavaScript hoặc Electron đã cài đặt, hãy tiếp tục với "
|
||
"{ph0}quy trình làm việc ứng dụng{ph1} để theo dõi các tệp và xử lý ranh "
|
||
"giới."
|
||
|
||
#: website/public/guides/browser/index.html:6
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Browser and Network Analysis — REA"
|
||
msgstr "Phân tích Trình duyệt Và Mạng-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 ""
|
||
"Quan sát Một Ghi chú xuất KHẨU VỚI REA : chọn một trang trình duyệt, chụp "
|
||
"một nhấp chuột, kiểm tra các yêu cầu và làm theo các kịch bản xuất khẩu."
|
||
|
||
#: website/public/guides/browser/index.html:205
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/guides/browser/index.html:215
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Browser observation"
|
||
msgstr "Quan sát trình duyệt"
|
||
|
||
#: website/public/guides/browser/index.html:271
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Copy start the example browser"
|
||
msgstr "Sao chép bắt đầu trình duyệt ví dụ"
|
||
|
||
#: website/public/guides/browser/index.html:303
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Copy example prompt"
|
||
msgstr "Sao chép ví dụ dấu nhắc"
|
||
|
||
#: website/public/guides/browser/index.html:337
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Copy find the page"
|
||
msgstr "Sao chép tìm trang"
|
||
|
||
#: website/public/guides/browser/index.html:356
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Copy capture the next ten seconds"
|
||
msgstr "Sao chép chụp mười giây tiếp theo"
|
||
|
||
#: website/public/guides/browser/index.html:421
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Copy read the loaded scripts"
|
||
msgstr "Sao chép đọc các tập lệnh đã tải"
|
||
|
||
#: website/public/guides/browser/index.html:507
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/guides/index.html:103
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:guides/index.html"
|
||
msgid "{ph0}Home{ph1} / Guides"
|
||
msgstr "{ph0}Nhà{ph1} / Hướng dẫn"
|
||
|
||
#: website/public/guides/index.html:195
|
||
msgctxt "page:guides/index.html"
|
||
msgid "REA guides."
|
||
msgstr "REA hướng dẫn."
|
||
|
||
#: website/public/guides/index.html:196
|
||
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 ""
|
||
"Phân tích chức năng gốc, xuất Electron hoặc yêu cầu trình duyệt. Mỗi hướng "
|
||
"dẫn bao gồm một lời nhắc, mã và kết quả."
|
||
|
||
#: website/public/guides/index.html:203
|
||
msgctxt "page:guides/index.html"
|
||
msgid "First investigation"
|
||
msgstr "Điều tra đầu tiên"
|
||
|
||
#: website/public/guides/index.html:205
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Set up REA"
|
||
msgstr "Thiết LẬP REA"
|
||
|
||
#: website/public/guides/index.html:206
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Connect your coding agent or use REA from the terminal."
|
||
msgstr "Kết nối agent mã hóa của bạn hoặc SỬ dụng REA từ thiết bị đầu cuối."
|
||
|
||
#: website/public/guides/index.html:207
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Get started with REA"
|
||
msgstr "Bắt đầu VỚI REA"
|
||
|
||
#: website/public/guides/index.html:211
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Native binaries"
|
||
msgstr "Chương trình mã máy"
|
||
|
||
#: website/public/guides/index.html:213
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Recover a sound-pan calculation"
|
||
msgstr "Khôi phục tính toán vị trí âm thanh trái/phải"
|
||
|
||
#: website/public/guides/index.html:214
|
||
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 ""
|
||
"Bắt đầu với MỘT TRÒ CHƠI Windows thực thi. Kiểm tra hướng dẫn, theo dõi hàm "
|
||
"gọi, đọc hằng Số và kiểm Tra C đã khôi Phục."
|
||
|
||
#: website/public/guides/index.html:224
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Native analysis guide"
|
||
msgstr "Phân tích hướng dẫn chương trình mã máy"
|
||
|
||
#: website/public/guides/index.html:228
|
||
msgctxt "page:guides/index.html"
|
||
msgid "JavaScript & Electron"
|
||
msgstr "JavaScript & Electron"
|
||
|
||
#: website/public/guides/index.html:230
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Follow a CSV export"
|
||
msgstr "Thực HIỆN theo một CSV xuất KHẨU"
|
||
|
||
#: website/public/guides/index.html:231
|
||
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 ""
|
||
"Một Ứng dụng Ghi chú nhỏ trải rộng một tính năng trên trình kết xuất, tải "
|
||
"trước và quy trình chính. SỬ DỤNG REA để kết nối api, KÊNH IPC và trình ghi "
|
||
"tệp."
|
||
|
||
#: website/public/guides/index.html:241
|
||
msgctxt "page:guides/index.html"
|
||
msgid "JavaScript & Electron guide"
|
||
msgstr "JavaScript & Electron hướng dẫn"
|
||
|
||
#. {ph0}: <a href="../showcase/notion/">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/index.html:244
|
||
#, python-brace-format
|
||
msgctxt "page:guides/index.html"
|
||
msgid "For a larger packaged app, follow {ph0}Notion's clipboard bridge{ph1}."
|
||
msgstr ""
|
||
"Đối với một ứng dụng đóng gói lớn hơn, hãy làm theo {ph0} Cầu clipboard CỦA "
|
||
"Notion{ph1}."
|
||
|
||
#: website/public/guides/index.html:251
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Browser behavior"
|
||
msgstr "Hành vi trình duyệt"
|
||
|
||
#: website/public/guides/index.html:253
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Observe a click"
|
||
msgstr "Quan sát một cú nhấp chuột"
|
||
|
||
#: website/public/guides/index.html:254
|
||
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 ""
|
||
"Mở Một Ví Dụ Ghi chú làm việc, chụp yêu cầu xuất và tìm mã biến phản hồi của"
|
||
" nó thành tải xuống."
|
||
|
||
#: website/public/guides/index.html:263
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Browser observation guide"
|
||
msgstr "Hướng dẫn quan sát trình duyệt"
|
||
|
||
#: website/public/guides/index.html:6
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Reverse Engineering Guides — REA"
|
||
msgstr "Hướng Dẫn kỹ thuật đảo ngược-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 ""
|
||
"Tìm HIỂU REA thông qua các ví dụ làm việc ngắn: tính toán gốc, xuất Electron"
|
||
" CSV và yêu cầu trình duyệt."
|
||
|
||
#: website/public/guides/index.html:282
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/guides/javascript/index.html:103
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/guides/javascript/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / JavaScript & Electron"
|
||
msgstr "{ph0}Nhà{ph1} / {ph2}Hướng dẫn{ph3} / JavaScript & Electron"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/guides/javascript/index.html:198
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Trace an Electron{ph0}CSV export."
|
||
msgstr "Theo dõi Electron {ph0} CSV xuất khẩu."
|
||
|
||
#: website/public/guides/javascript/index.html:199
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid ""
|
||
"Follow a button click from the page API, through Electron IPC, to the CSV "
|
||
"file writer."
|
||
msgstr ""
|
||
"Thực hiện theo một nút bấm từ api trang, THÔNG qua Electron IPC, ĐẾN TRÌNH "
|
||
"ghi tệp CSV."
|
||
|
||
#: website/public/guides/javascript/index.html:206
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "In this guide"
|
||
msgstr "Trong hướng dẫn này"
|
||
|
||
#. {ph0}: <a href="#example">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/javascript/index.html:208
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0}The example{ph1}"
|
||
msgstr "{ph0}Ví dụ{ph1}"
|
||
|
||
#. {ph0}: <a href="#ask">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/javascript/index.html:209
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0}Ask your agent{ph1}"
|
||
msgstr "{ph0}Hỏi agent của bạn{ph1}"
|
||
|
||
#. {ph0}: <a href="#follow">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/javascript/index.html:210
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0}Trace the export code{ph1}"
|
||
msgstr "{ph0}Theo dõi mã xuất{ph1}"
|
||
|
||
#. {ph0}: <a href="#try">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/javascript/index.html:211
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0}Try the example{ph1}"
|
||
msgstr "{ph0}Hãy thử ví dụ{ph1}"
|
||
|
||
#. {ph0}: <a href="#next">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/javascript/index.html:212
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0}Inspect the CSV writer{ph1}"
|
||
msgstr "{ph0}Kiểm TRA NHÀ văn CSV{ph1}"
|
||
|
||
#: website/public/guides/javascript/index.html:217
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Where does “Export notes” go?"
|
||
msgstr "\"Xuất ghi chú\" đi đâu?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/javascript/index.html:218
|
||
#, 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 ""
|
||
"Hướng dẫn này sử dụng MỘT ỨNG dụng Electron nhỏ. Nhấp chuột {ph0}Xuất ghi "
|
||
"chú{ph1} gọi MỘT API trong trang, đi vào quy trình chính và VIẾT CSV . Hành "
|
||
"vi được trải rộng trên một số tệp."
|
||
|
||
#: website/public/guides/javascript/index.html:225
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "The CSV export across Electron processes"
|
||
msgstr "XUẤT CSV qua CÁC quy TRÌNH 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:229
|
||
#, 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}Trình kết xuất → tải trước{ph1}{ph2}{ph3}{ph4}{ph5}{ph6} gọi API được "
|
||
"hiển thị bởi {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:237
|
||
#, 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}Giữa các quy trình{ph1}{ph2}{ph3}{ph4}{ph5}Tải trước gọi một KÊNH IPC: "
|
||
"một thông báo được đặt tên cho quy trình chính.{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:245
|
||
#, 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}Quy trình chính{ph1}{ph2}Một trình xử lý xuất khẩu{ph3}{ph4}{ph5} xử lý"
|
||
" kênh đó và gọi CHO NHÀ văn CSV.{ph6}"
|
||
|
||
#. {ph0}: <code>csv.js</code>
|
||
#. {ph1}: <code>main.js</code>
|
||
#. {ph2}: <code>downloads/notes.csv</code>
|
||
#: website/public/guides/javascript/index.html:254
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0} formats the notes → {ph1} writes {ph2}."
|
||
msgstr "{ph0} định dạng các ghi chú → {ph1} viết {ph2}."
|
||
|
||
#: website/public/guides/javascript/index.html:258
|
||
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 khớp với lệnh GỌI IPC theo nghĩa đen với trình xử lý của NÓ và xác định "
|
||
"API được hiển thị. Đường dẫn được suy ra từ mã; chụp thời gian chạy có thể "
|
||
"kiểm tra những gì thực thi."
|
||
|
||
#: website/public/guides/javascript/index.html:266
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Ask about the CSV export"
|
||
msgstr "Hỏi VỀ xuất CSV"
|
||
|
||
#. {ph0}: <a href="../../get-started/#agent">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/javascript/index.html:267
|
||
#, 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}Kết nối agent CỦA BẠN VỚI REA {ph1} và cung cấp cho nó thư mục ứng dụng"
|
||
" hoặc TỆP 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:273
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/guides/javascript/index.html:277
|
||
#: website/public/guides/javascript/index.html:426
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#. {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:286
|
||
#, 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}SỬ DỤNG REA để tìm những gì xảy ra khi tôi xuất ghi chú "
|
||
"trong ứng dụng này. CSV được tạo ở đâu?{ph3}{ph4}{ph5}"
|
||
|
||
#. {ph0}: <code>app.asar</code>
|
||
#: website/public/guides/javascript/index.html:294
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid ""
|
||
"Example prompt. Include the absolute path to the application folder or "
|
||
"{ph0}."
|
||
msgstr ""
|
||
"Ví dụ nhắc nhở. Bao gồm đường dẫn tuyệt đối đến thư mục ứng dụng hoặc {ph0}."
|
||
|
||
#: website/public/guides/javascript/index.html:298
|
||
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 đọc các tệp ứng dụng và xây dựng bản đồ các điểm vào, mô-đun và ranh "
|
||
"giới quy trình. Agent của bạn sử dụng bản đồ đó để thu hẹp cuộc điều tra về "
|
||
"tính năng xuất."
|
||
|
||
#: website/public/guides/javascript/index.html:305
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Trace the export code"
|
||
msgstr "Theo dõi mã xuất"
|
||
|
||
#: website/public/guides/javascript/index.html:306
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "The page calls a small API"
|
||
msgstr "Trang gọi MỘT API nhỏ"
|
||
|
||
#: website/public/guides/javascript/index.html:319
|
||
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 ""
|
||
"Trang biết tên phương thức. Việc triển khai sống trong tải trước, điều này "
|
||
"cho thấy nó với trình kết xuất."
|
||
|
||
#. {ph0}: <code>notes.exportCsv</code>
|
||
#. {ph1}: <code>notes:export</code>
|
||
#: website/public/guides/javascript/index.html:333
|
||
#, 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 ""
|
||
"Hồ SƠ REA {ph0} và kênh theo nghĩa đen {ph1}. Nó ghép nối lời gọi đó với "
|
||
"trình xử lý khớp duy nhất trong quy trình chính."
|
||
|
||
#. {ph0}: <code>csv.js</code>
|
||
#. {ph1}: <code>notes.csv</code>
|
||
#: website/public/guides/javascript/index.html:350
|
||
#, 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 ""
|
||
"Đọc trình xử lý trả lời câu hỏi ban đầu: {ph0} định dạng các ghi chú và quá "
|
||
"trình chính viết {ph1} vào Thư mục Tải xuống của người dùng."
|
||
|
||
#: website/public/guides/javascript/index.html:367
|
||
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 ""
|
||
"Được GHI LẠI bởi REA 4.1.0 trên ví dụ có thể tải xuống bên dưới. Vị trí "
|
||
"nguồn đi kèm VỚI CÁC PHÁT hiện API, kênh và trình xử lý."
|
||
|
||
#: website/public/guides/javascript/index.html:373
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Analyze the example yourself"
|
||
msgstr "Tự phân tích ví dụ"
|
||
|
||
#. {ph0}: <a class="button" href="../../examples/notes-example.zip"
|
||
#. download="notes-example.zip" >
|
||
#. {ph1}: </a >
|
||
#: website/public/guides/javascript/index.html:380
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0}Download example ZIP{ph1}"
|
||
msgstr "{ph0}Tải xuống VÍ DỤ ZIP{ph1}"
|
||
|
||
#: website/public/guides/javascript/index.html:389
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Browse the six source files"
|
||
msgstr "Duyệt qua sáu tệp nguồn"
|
||
|
||
#: website/public/guides/javascript/index.html:425
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Static application analysis"
|
||
msgstr "Phân tích ứng dụng tĩnh"
|
||
|
||
#. {ph0}: <code>normalized_result.summary.ipc</code>
|
||
#. {ph1}: <code>normalized_result.graph</code>
|
||
#: website/public/guides/javascript/index.html:438
|
||
#, 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 ""
|
||
"Thay thế đường dẫn bằng thư mục bạn đã giải nén. Bạn sẽ tìm thấy một KÊNH "
|
||
"IPC và một trình xử lý phù hợp trong {ph0}. Vị trí nguồn đang ở {ph1}."
|
||
|
||
#: website/public/guides/javascript/index.html:444
|
||
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 ""
|
||
"Đối với ứng dụng của riêng bạn, hãy sử dụng cùng một lệnh với thư mục HOẶC "
|
||
"đường DẪN ASAR của nó. Một tác nhân có thể theo một chuỗi ký tự, TÊN API "
|
||
"hoặc KÊNH IPC VỚI CÁC CÔNG cụ truy tìm tính năng CỦA REA."
|
||
|
||
#: website/public/guides/javascript/index.html:451
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Inspect the CSV writer"
|
||
msgstr "Kiểm TRA NHÀ văn CSV"
|
||
|
||
#. {ph0}: <code>notes:export</code>
|
||
#: website/public/guides/javascript/index.html:453
|
||
#, 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 ""
|
||
"Theo dõi {ph0} để xử lý của nó. Đầu vào nào đạt đến trình ghi CSV và điều gì"
|
||
" sẽ xảy ra nếu việc ghi tệp không thành công?"
|
||
|
||
#: website/public/guides/javascript/index.html:459
|
||
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 ""
|
||
"Sử dụng các vị trí nguồn để kiểm tra các chi tiết đó. Tên kênh được tính "
|
||
"toán và trình xử lý mơ hồ có thể vẫn chưa được giải quyết; các quan sát thời"
|
||
" gian chạy cung cấp cho bạn một cách khác để điều tra chúng."
|
||
|
||
#. {ph0}: <a href="../../showcase/notion/" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span>
|
||
#. {ph3}: </span>
|
||
#: website/public/guides/javascript/index.html:465
|
||
#, 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}Theo Notion ' s clipboard cầu{ph1} {ph2}Áp dụng cách tiếp cận tương tự "
|
||
"cho ỨNG dụng Electron đóng gói.{ph3}"
|
||
|
||
#. {ph0}: <a href="../browser/">
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span >
|
||
#. {ph3}: </span >
|
||
#: website/public/guides/javascript/index.html:471
|
||
#, 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}Quan sát xuất trình duyệt{ph1}{ph2}Chụp một cú nhấp chuột thực sự và "
|
||
"xem yêu cầu nào nó thực hiện.{ph3}"
|
||
|
||
#. {ph0}: <a href="../native/">
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span >
|
||
#. {ph3}: </span >
|
||
#: website/public/guides/javascript/index.html:477
|
||
#, 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}Thực hiện theo một chức năng gốc{ph1}{ph2}Tiếp tục vào nhị phân khi một"
|
||
" tính năng phụ thuộc vào mã gốc.{ph3}"
|
||
|
||
#: website/public/guides/javascript/index.html:6
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "JavaScript and Electron Analysis — REA"
|
||
msgstr "PHÂN Tích JavaScript và 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 ""
|
||
"Theo Dõi Một Ghi CHÚ CSV xuất thông qua TRÌNH kết xuất API, tải trước và "
|
||
"TRÌNH xử lý IPC với REA . Bao gồm các tệp ví dụ có thể tải xuống và kết quả "
|
||
"phân tích đã được xác minh."
|
||
|
||
#: website/public/guides/javascript/index.html:205
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/guides/javascript/index.html:215
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "JavaScript & Electron"
|
||
msgstr "JavaScript & Electron"
|
||
|
||
#: website/public/guides/javascript/index.html:277
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Copy example prompt"
|
||
msgstr "Sao chép ví dụ dấu nhắc"
|
||
|
||
#: website/public/guides/javascript/index.html:426
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Copy static application analysis"
|
||
msgstr "Sao chép phân tích ứng dụng tĩnh"
|
||
|
||
#: website/public/guides/javascript/index.html:503
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/guides/native/index.html:103
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/guides/native/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Guides{ph3} / Native analysis"
|
||
msgstr ""
|
||
"{ph0}Nhà{ph1} / {ph2}Hướng dẫn{ph3} / Phân tích các chương trình mã máy"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/guides/native/index.html:197
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Recover DX-Ball's{ph0}sound-pan calculation."
|
||
msgstr "Khôi PHỤC DX-Ball ' s{ph0}tính toán vị trí âm thanh trái/phải."
|
||
|
||
#: website/public/guides/native/index.html:198
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid ""
|
||
"Inspect the original instructions, identify the input and constants, then "
|
||
"check the recovered C."
|
||
msgstr ""
|
||
"Kiểm Tra các hướng dẫn ban Đầu, xác Định đầu vào và hằng số, sau Đó kiểm Tra"
|
||
" C đã khôi Phục."
|
||
|
||
#: website/public/guides/native/index.html:205
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "In this guide"
|
||
msgstr "Trong hướng dẫn này"
|
||
|
||
#. {ph0}: <a href="#example">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/native/index.html:207
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "{ph0}The example{ph1}"
|
||
msgstr "{ph0}Ví dụ{ph1}"
|
||
|
||
#. {ph0}: <a href="#ask">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/native/index.html:208
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "{ph0}Ask your agent{ph1}"
|
||
msgstr "{ph0}Hỏi agent của bạn{ph1}"
|
||
|
||
#. {ph0}: <a href="#follow">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/native/index.html:209
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "{ph0}Read the REA results{ph1}"
|
||
msgstr "{ph0}Đọc KẾT QUẢ REA{ph1}"
|
||
|
||
#. {ph0}: <a href="#result">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/native/index.html:210
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "{ph0}Recover and check{ph1}"
|
||
msgstr "{ph0}Phục hồi và kiểm tra{ph1}"
|
||
|
||
#. {ph0}: <a href="#try">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/native/index.html:211
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "{ph0}Use your own binary{ph1}"
|
||
msgstr "{ph0}Sử dụng nhị phân của riêng bạn{ph1}"
|
||
|
||
#: website/public/guides/native/index.html:216
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Calculate left/right sound panning"
|
||
msgstr "Tính toán trái / phải định vị âm thanh stereo"
|
||
|
||
#: website/public/guides/native/index.html:217
|
||
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 ""
|
||
"TRONG DX-Ball, một cú đánh bằng gạch cung cấp vị trí màn hình nằm ngang. Mã "
|
||
"âm thanh biến nó thành giá trị xoay trái/phải."
|
||
|
||
#. {ph0}: <code>0x00406400</code>
|
||
#. {ph1}: <code>__ftol()</code>
|
||
#: website/public/guides/native/index.html:221
|
||
#, 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 ""
|
||
"Chức năng bắt đầu, {ph0}, có một kết quả dịch ngược ngắn: một cuộc gọi đến "
|
||
"{ph1}. REA cũng trả về các hướng dẫn và hàm gọi của nó, cung cấp cho tác "
|
||
"nhân một cách để điều tra số học bị thiếu."
|
||
|
||
#: website/public/guides/native/index.html:228
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "New to these terms?"
|
||
msgstr "Mới đối với các điều khoản này?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>MOV</code>
|
||
#. {ph3}: <code>ADD</code>
|
||
#: website/public/guides/native/index.html:230
|
||
#, 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}Hướng dẫn:{ph1} các bước bộ xử lý chạy, được hiển thị ở dạng có thể đọc"
|
||
" được như {ph2} hoặc {ph3}."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/native/index.html:235
|
||
#, 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}Kết quả dịch ngược / mã giả:{ph1} nỗ lực của một công cụ phân tích để "
|
||
"biến các hướng dẫn trở lại thành mã C-like. Nó có thể bỏ lỡ các bộ phận, như"
|
||
" trong ví dụ này."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/native/index.html:240
|
||
#, 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}Người gọi:{ph1} một hàm gọi cái này. Nó cho thấy những giá trị nào được"
|
||
" truyền vào."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>0x00406400</code>
|
||
#: website/public/guides/native/index.html:244
|
||
#, 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}Địa chỉ:{ph1} một vị trí trong chương trình, được viết bằng hệ thập lục"
|
||
" phân, chẳng hạn như {ph2}."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/native/index.html:248
|
||
#, 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}Hằng số:{ph1} số cố định được lưu trữ trong chương trình, đọc như byte "
|
||
"thô và giải mã."
|
||
|
||
#: website/public/guides/native/index.html:255
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Three pieces of evidence, one calculation"
|
||
msgstr "Ba bằng chứng, một phép tính"
|
||
|
||
#. {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:259
|
||
#, 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 * Hướng dẫn{ph1}{ph2}Một đầu vào số nguyên{ph3}{ph4}Một stack read "
|
||
"cung cấp giá trị được sử dụng bởi các hướng dẫn dấu phẩy động.{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:267
|
||
#, 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 * Người Gọi{ph1}{ph2}Tọa độ màn hình{ph3}{ph4}Người gọi gạch-hit đi "
|
||
"{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:275
|
||
#, 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 * Byte Dữ liệu{ph1}{ph2}Các hằng số số{ph3}{ph4}Tham chiếu byte giải"
|
||
" mã để {ph5}, {ph6} và một giá trị quy mô.{ph7}"
|
||
|
||
#: website/public/guides/native/index.html:287
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid ""
|
||
"REA supplies the instructions, call relationship and bytes. The agent "
|
||
"interprets them together."
|
||
msgstr ""
|
||
"REA cung cấp các hướng dẫn, mối quan hệ cuộc gọi chức năng và byte. Các "
|
||
"agent giải thích chúng cùng nhau."
|
||
|
||
#: website/public/guides/native/index.html:294
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Ask about the behavior"
|
||
msgstr "Hỏi về hành vi"
|
||
|
||
#. {ph0}: <a href="../../get-started/#agent" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <a href="../../get-started/#native" >
|
||
#. {ph3}: </a >
|
||
#: website/public/guides/native/index.html:295
|
||
#, 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 ""
|
||
"Sau {ph0}kết NỐI REA với agent của bạn{ph1} và {ph2}thiết lập phân tích công"
|
||
" cụ chương trình mã máy{ph3}, cung cấp thực thi cục bộ và một câu hỏi:"
|
||
|
||
#: website/public/guides/native/index.html:306
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Which analysis tool should I use?"
|
||
msgstr "Tôi nên sử dụng công cụ phân tích nào?"
|
||
|
||
#: website/public/guides/native/index.html:307
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "REA needs one of these to read native programs:"
|
||
msgstr "REA cần một trong số này để đọc các chương trình gốc:"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/native/index.html:309
|
||
#, 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 hoặc Linux ): THIẾT lập CỦA REA phát hiện nó hoặc "
|
||
"đề nghị cài đặt nó. TRÊN macOS, mở Hopper một lần và chọn chế độ demo hoặc "
|
||
"kích hoạt giấy phép trước khi phân tích đầu tiên của bạn."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/native/index.html:315
|
||
#, 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 hoặc Linux ; thử nghiệm TRÊN Windows ): miễn phí, "
|
||
"nhưng cần Ghidra 12.1 hiện có.x cài đặt và 64-bit JDK 21 hoặc mới hơn."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/native/index.html:320
|
||
#, 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): đối với THIẾT lập IDA hiện có với đăng ký MCP."
|
||
|
||
#. {ph0}: <a href="../../get-started/#native">
|
||
#. {ph1}: </a>
|
||
#: website/public/guides/native/index.html:325
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "See {ph0}Set up native analysis{ph1} for the steps."
|
||
msgstr ""
|
||
"Xem {ph0}Thiết lập phân tích các chương trình mã máy{ph1} đối với các bước."
|
||
|
||
#. {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:333
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/guides/native/index.html:337
|
||
#: website/public/guides/native/index.html:468
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#. {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:346
|
||
#, 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}SỬ dụng REA để tìm CÁCH DX-Ball tính toán định vị âm thanh "
|
||
"nổi. Giải thích tính toán và hiển thị mã.{ph3}{ph4}{ph5}"
|
||
|
||
#: website/public/guides/native/index.html:354
|
||
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 ""
|
||
"Ví dụ nhắc nhở. Cung cấp cho agent của bạn đường dẫn ĐẾN tệp THỰC thi DX-"
|
||
"Ball 1.07 cục BỘ của bạn. REA không bao gồm DX-Ball , vì vậy hãy sử dụng "
|
||
"bản sao của riêng bạn hoặc hỏi cùng một loại câu hỏi về một chương trình "
|
||
"Windows nhỏ khác mà bạn có."
|
||
|
||
#: website/public/guides/native/index.html:361
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "How do I get a file's full path?"
|
||
msgstr "Làm cách nào để có được đường dẫn đầy đủ của tệp?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <em>
|
||
#. {ph3}: </em>
|
||
#: website/public/guides/native/index.html:363
|
||
#, 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} Trong File Explorer, nhấp chuột phải vào tệp và chọn "
|
||
"{ph2}Sao chép dưới dạng đường dẫn{ph3}. TRÊN Windows 10, giữ Shift trong khi"
|
||
" nhấp chuột phải."
|
||
|
||
#. {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}macOS:{ph1} in Finder, right-click the file, hold Option and choose "
|
||
"{ph2}Copy \"…\" as Pathname{ph3}."
|
||
msgstr ""
|
||
"{ph0} macOS :{ph1} trong Finder, nhấp chuột phải vào tệp, Giữ Tùy chọn và "
|
||
"chọn {ph2}Sao chép \" ... \" dưới Dạng Tên Đường Dẫn{ph3}."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/guides/native/index.html:372
|
||
#, 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}Bất kỳ hệ thống:{ph1} kéo tệp vào cửa sổ đầu cuối và đường dẫn của nó "
|
||
"xuất hiện."
|
||
|
||
#: website/public/guides/native/index.html:380
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Read the REA results"
|
||
msgstr "Đọc KẾT QUẢ REA"
|
||
|
||
#: website/public/guides/native/index.html:381
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Read the input"
|
||
msgstr "Đọc đầu vào"
|
||
|
||
#: website/public/guides/native/index.html:390
|
||
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 ""
|
||
"Các hướng dẫn tải một đối số nguyên và chuyển đổi nó cho số học dấu phẩy "
|
||
"động. Đây là đầu vào vắng mặt từ chế độ xem mã giả đầu tiên."
|
||
|
||
#: website/public/guides/native/index.html:395
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Follow the caller"
|
||
msgstr "Theo dõi hàm gọi"
|
||
|
||
#. {ph0}: <code>0x14</code>
|
||
#: website/public/guides/native/index.html:404
|
||
#, 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 xác định hàm gọi gạch-hit. Các hướng dẫn trước đó của nó nhân tọa độ "
|
||
"gạch với 30; thêm {ph0} (20) cho vị trí màn hình của gạch."
|
||
|
||
#: website/public/guides/native/index.html:409
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Read the referenced constants"
|
||
msgstr "Đọc các hằng số được tham chiếu"
|
||
|
||
#: website/public/guides/native/index.html:420
|
||
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 ""
|
||
"Số học tham chiếu các địa chỉ này. Đọc các byte cung cấp các giá trị thực "
|
||
"tế; thứ tự hướng dẫn cho tác nhân biết cách chúng được sử dụng."
|
||
|
||
#: website/public/guides/native/index.html:427
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Write and check the recovered function"
|
||
msgstr "Viết và kiểm tra chức năng đã khôi phục"
|
||
|
||
#: website/public/guides/native/index.html:436
|
||
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 ""
|
||
"Với tỷ lệ 1.0, vị trí màn hình 0, 320 và 640 bản đồ đến -500, 0 và 500 trước"
|
||
" khi chuyển đổi số nguyên. Tính toán đặt trung tâm của màn hình ở trung tâm "
|
||
"của trường âm thanh nổi."
|
||
|
||
#: website/public/guides/native/index.html:441
|
||
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 ""
|
||
"Tác nhân đã sử dụng REA phát hiện của để viết C. Kiểm tra Riêng biệt so sánh"
|
||
" 3.205 đầu vào với hàm x86 ban đầu và sao chép tất cả 63 byte được biên dịch"
|
||
" của hàm hoàn chỉnh."
|
||
|
||
#. {ph0}: <a href="../../showcase/dx-ball/#sound-pan" >
|
||
#. {ph1}: </a >
|
||
#: website/public/guides/native/index.html:446
|
||
#, python-brace-format
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "{ph0}See the full investigation and assembly-to-C comparison{ph1}"
|
||
msgstr "{ph0}Xem điều tra đầy đủ và so sánh assembly-To-c{ph1}"
|
||
|
||
#: website/public/guides/native/index.html:453
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Try it with your own binary"
|
||
msgstr "Hãy thử nó với nhị phân của riêng bạn"
|
||
|
||
#. {ph0}: <a href="../../get-started/#native" >
|
||
#. {ph1}: </a >
|
||
#: website/public/guides/native/index.html:454
|
||
#, 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}Kết nối phân tích nhà cung cấp chương trình mã máy{ph1}, sau đó cung "
|
||
"cấp cho agent của bạn một tệp thực thi hoặc thư viện cục bộ và một tính năng"
|
||
" để điều tra. Các câu hỏi bắt đầu hữu ích bao gồm \" tệp này được phân tích "
|
||
"cú pháp Như thế nào?\"hoặc\" chức năng nào xử lý hành động menu này?”"
|
||
|
||
#: website/public/guides/native/index.html:461
|
||
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 ""
|
||
"Nếu bạn đã biết tên hoặc địa chỉ chức năng, bạn có thể truy vấn nó từ thiết "
|
||
"bị đầu cuối. Để CÀI ĐẶT Ghidra được định cấu HÌNH:"
|
||
|
||
#: website/public/guides/native/index.html:467
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Function analysis"
|
||
msgstr "Phân tích chức năng"
|
||
|
||
#. {ph0}: <code>main</code>
|
||
#: website/public/guides/native/index.html:480
|
||
#, 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 ""
|
||
"Thay thế đường dẫn mục tiêu và {ph0} với tên chức năng hoặc địa chỉ của "
|
||
"riêng bạn. Mỗi LẦN NHẬP lệnh GỌI CLI và phân tích nhị phân, sau đó đóng "
|
||
"phiên của NÓ. Các truy vấn MCP của agent của bạn sử dụng lại nhị phân đã "
|
||
"nhập trong khi phiên đó đang mở."
|
||
|
||
#: website/public/guides/native/index.html:486
|
||
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 ""
|
||
"Đọc mã giả cùng với hướng dẫn và tài liệu tham khảo. Khi một kết quả để lại "
|
||
"một cuộc gọi hoặc giá trị chưa được giải quyết, hãy sử dụng vị trí đó làm "
|
||
"câu hỏi tiếp theo."
|
||
|
||
#: website/public/guides/native/index.html:6
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Native Binary Analysis — REA"
|
||
msgstr "Phân Tích nhị phân gốc-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 ""
|
||
"Khôi phục tính toán gốc VỚI REA : kiểm Tra hướng Dẫn, theo dõi hàm gọi, đọc "
|
||
"hằng số và kiểm Tra Tái Tạo C."
|
||
|
||
#: website/public/guides/native/index.html:204
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/guides/native/index.html:214
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Native analysis"
|
||
msgstr "Phân tích các chương trình mã máy"
|
||
|
||
#: website/public/guides/native/index.html:337
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Copy example prompt"
|
||
msgstr "Sao chép ví dụ dấu nhắc"
|
||
|
||
#: website/public/guides/native/index.html:468
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Copy function analysis"
|
||
msgstr "Sao chép phân tích chức năng"
|
||
|
||
#: website/public/guides/native/index.html:509
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/index.html:105
|
||
msgctxt "page:index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#: website/public/index.html:196 website/public/index.html:206
|
||
#: website/public/index.html:204
|
||
msgctxt "page:index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/index.html:197 website/public/index.html:251
|
||
msgctxt "page:index.html"
|
||
msgid "Set up REA"
|
||
msgstr "Thiết LẬP REA"
|
||
|
||
#. {ph0}: <a href="#setup" aria-current="location">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:208
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Set up REA{ph1}"
|
||
msgstr "{ph0}Thiết LẬP REA {ph1}"
|
||
|
||
#. {ph0}: <a href="#what-is-re">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:209
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}What is RE?{ph1}"
|
||
msgstr "{ph0}RE LÀ GÌ?{ph1}"
|
||
|
||
#. {ph0}: <a href="#how-rea-helps">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:210
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}How REA helps{ph1}"
|
||
msgstr "{ph0}REA giúp gì?{ph1}"
|
||
|
||
#. {ph0}: <a href="#dinosaur">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:211
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Dinosaur game{ph1}"
|
||
msgstr "{ph0}Chơi Dinosaur miễn phí{ph1}"
|
||
|
||
#. {ph0}: <a href="#calculator">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:212
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Calculator{ph1}"
|
||
msgstr "{ph0}Máy tính{ph1}"
|
||
|
||
#. {ph0}: <a href="#try-rea">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:213
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Try REA{ph1}"
|
||
msgstr "{ph0}Thử REA {ph1}"
|
||
|
||
#. {ph0}: <a href="#analyze">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:214
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Go deeper{ph1}"
|
||
msgstr "{ph0}Tìm hiểu sâu hơn{ph1}"
|
||
|
||
#. {ph0}: <a href="#questions">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:215
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Help & feedback{ph1}"
|
||
msgstr "{ph0}Trợ giúp & phản hồi{ph1}"
|
||
|
||
#. {ph0}: <a href="#community">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:216
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Community{ph1}"
|
||
msgstr "{ph0}Cộng đồng{ph1}"
|
||
|
||
#: website/public/index.html:225
|
||
msgctxt "page:index.html"
|
||
msgid "Reverse engineering, with your coding agent"
|
||
msgstr "Kỹ thuật đảo ngược, với agent mã hóa của bạn"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/index.html:226
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "Find out how{ph0}software works."
|
||
msgstr "Tìm hiểu cách{ph0}phần mềm hoạt động."
|
||
|
||
#: website/public/index.html:227
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"REA gives your agent the tools to inspect a program and explain what it "
|
||
"does."
|
||
msgstr ""
|
||
"REA cung cấp công cụ để trợ lý lập trình AI của bạn kiểm tra chương trình và"
|
||
" giải thích cách nó hoạt động."
|
||
|
||
#. {ph0}: <a href="#analysis-guides">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:241
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "Already know RE? {ph0}Skip to analysis guides →{ph1}"
|
||
msgstr "ĐÃ BIẾT LẠI? {ph0}Chuyển đến hướng dẫn phân tích →{ph1}"
|
||
|
||
#. {ph0}: <a href="blog/">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:245
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "Want to go deeper? {ph0}Read the Blog →{ph1}"
|
||
msgstr "Bạn muốn đi sâu hơn? {ph0}Đọc Blog →{ph1}"
|
||
|
||
#: website/public/index.html:252
|
||
msgctxt "page:index.html"
|
||
msgid "Copy this into your coding agent:"
|
||
msgstr "Dán lời nhắc này vào trợ lý lập trình AI của bạn:"
|
||
|
||
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
|
||
#. {ph1}: <i>
|
||
#. {ph2}: </i>
|
||
#. {ph3}: <i>
|
||
#. {ph4}: </i>
|
||
#. {ph5}: <i>
|
||
#. {ph6}: </i>
|
||
#. {ph7}: </span >
|
||
#: website/public/index.html:255
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/index.html:260 website/public/index.html:282
|
||
#: website/public/index.html:497 website/public/index.html:665
|
||
#: website/public/index.html:901 website/public/index.html:1063
|
||
#: website/public/index.html:1091
|
||
msgctxt "page:index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#: website/public/index.html:279
|
||
msgctxt "page:index.html"
|
||
msgid "Or run this in your terminal:"
|
||
msgstr "Hoặc chạy lệnh này trong terminal:"
|
||
|
||
#: website/public/index.html:291
|
||
msgctxt "page:index.html"
|
||
msgid "Approve the setup plan, then restart your agent."
|
||
msgstr "Xem và chấp thuận kế hoạch cài đặt, rồi khởi động lại trợ lý."
|
||
|
||
#: website/public/index.html:306
|
||
msgctxt "page:index.html"
|
||
msgid "What is reverse engineering?"
|
||
msgstr "Kỹ thuật đảo ngược là gì?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:307
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Finding out how software works by {ph0}examining the program itself.{ph1}"
|
||
msgstr ""
|
||
"Tìm hiểu cách phần mềm hoạt động bằng cách {ph0}kiểm tra chính chương trình "
|
||
"đó.{ph1}"
|
||
|
||
#. {ph0}: <mark class="prose-highlight">
|
||
#. {ph1}: </mark>
|
||
#. {ph2}: <mark class="prose-highlight">
|
||
#. {ph3}: </mark>
|
||
#. {ph4}: <mark class="prose-highlight">
|
||
#. {ph5}: </mark>
|
||
#: website/public/index.html:312
|
||
#, 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 ""
|
||
"Mục tiêu: hiểu một tính năng đủ tốt để {ph0}giải thích nó{ph1}, {ph2}thay "
|
||
"đổi nó{ph3} hoặc {ph4}xây dựng lại nó.{ph5}"
|
||
|
||
#. {ph0}: <strong class="prose-highlight">
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:330
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "Before REA · You investigate it {ph0}yourself{ph1}"
|
||
msgstr "Trước khi dùng REA · Bạn {ph0}tự điều tra{ph1}"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/index.html:339
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}01{ph1} Decode branches"
|
||
msgstr "{ph0}01{ph1} Giải mã chi nhánh"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/index.html:347
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}02{ph1} Trace calls"
|
||
msgstr "{ph0}02{ph1} Theo dõi cuộc gọi"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/index.html:355
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}03{ph1} Recover the rule"
|
||
msgstr "{ph0}03{ph1} Khôi phục quy tắc"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#. {ph2}: <span class="assembly-disclosure" aria-hidden="true">
|
||
#. {ph3}: </span>
|
||
#: website/public/index.html:370
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Original x64 · selected instructions{ph1} {ph2}{ph3}"
|
||
msgstr "{ph0}Ban đầu x64 * lựa chọn hướng dẫn{ph1} {ph2}{ph3}"
|
||
|
||
#: website/public/index.html:409
|
||
msgctxt "page:index.html"
|
||
msgid "01 · Which branch?"
|
||
msgstr "01 * chi Nhánh Nào?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:410
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"“{ph0}0x5b? 0x5c?{ph1} Two jumps to the same place. Which operators are "
|
||
"these?”"
|
||
msgstr ""
|
||
"“{ph0}0x5b? 0x5c?{ph1} Hai bước nhảy đến cùng một nơi. Những nhà khai thác "
|
||
"này là gì?”"
|
||
|
||
#: website/public/index.html:414
|
||
msgctxt "page:index.html"
|
||
msgid "Look up the command IDs, then label the branch."
|
||
msgstr "Tra Cứu id lệnh, sau đó gắn nhãn nhánh."
|
||
|
||
#: website/public/index.html:420
|
||
msgctxt "page:index.html"
|
||
msgid "Divide ÷"
|
||
msgstr "Chia ÷"
|
||
|
||
#: website/public/index.html:424
|
||
msgctxt "page:index.html"
|
||
msgid "Multiply ×"
|
||
msgstr "Nhân ×"
|
||
|
||
#: website/public/index.html:429
|
||
msgctxt "page:index.html"
|
||
msgid "02 · What do the calls do?"
|
||
msgstr "02 · Các hàm được gọi làm gì?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong >
|
||
#: website/public/index.html:430
|
||
#, 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 là rõ ràng. Các cuộc gọi chỉ là địa chỉ. {ph0}Cái nào phân chia? Giá "
|
||
"trị nào đi vào?{ph1}”"
|
||
|
||
#: website/public/index.html:435
|
||
msgctxt "page:index.html"
|
||
msgid "Inspect the helpers and trace the stored values."
|
||
msgstr "Kiểm tra các chức năng trợ giúp và theo dõi các giá trị được lưu trữ."
|
||
|
||
#: website/public/index.html:445
|
||
msgctxt "page:index.html"
|
||
msgid "Divide"
|
||
msgstr "Chia"
|
||
|
||
#: website/public/index.html:450
|
||
msgctxt "page:index.html"
|
||
msgid "03 · What is the rule?"
|
||
msgstr "03 * quy tắc Là gì?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:451
|
||
#, 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 ""
|
||
"\"Con đường này nhân với đầu vào khác. Vậy {ph0}10% có nghĩa là 10% của "
|
||
"200{ph1} sau +.”"
|
||
|
||
#: website/public/index.html:455
|
||
msgctxt "page:index.html"
|
||
msgid "Name the operands and check both operator paths."
|
||
msgstr "Đặt tên cho các toán hạng và kiểm tra cả hai đường dẫn toán tử."
|
||
|
||
#: website/public/index.html:471 website/public/index.html:399
|
||
msgctxt "page:index.html"
|
||
msgid "Illustrative expert reasoning"
|
||
msgstr "Lý luận chuyên gia minh họa"
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/index.html:474
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"{ph0}You decode the instructions, follow the calls and reconstruct the "
|
||
"calculation.{ph1}"
|
||
msgstr ""
|
||
"{ph0}Bạn giải mã các hướng dẫn, làm theo các cuộc gọi hàm và xây dựng lại "
|
||
"tính toán.{ph1}"
|
||
|
||
#. {ph0}: <strong class="prose-highlight">
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:482
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "With REA · You ask {ph0}your agent{ph1}"
|
||
msgstr "Với REA · Bạn hỏi {ph0}trợ lý AI{ph1}"
|
||
|
||
#: website/public/index.html:486
|
||
msgctxt "page:index.html"
|
||
msgid "One prompt."
|
||
msgstr "Chỉ một lời nhắc."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:487
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "Ask your agent {ph0}in plain English.{ph1}"
|
||
msgstr "Hỏi trợ lý {ph0}bằng ngôn ngữ thông thường.{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:492
|
||
#, 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}Ví dụ nhắc · Máy tính"
|
||
|
||
#: website/public/index.html:514
|
||
msgctxt "page:index.html"
|
||
msgid "Example answer · based on the findings"
|
||
msgstr "Câu trả lời ví dụ · dựa trên những phát hiện"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:517
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"After +, the % button takes {ph0}a percentage of the first number.{ph1}"
|
||
msgstr "Sau +, nút % mất {ph0}một tỷ lệ phần trăm của số đầu tiên.{ph1}"
|
||
|
||
#: website/public/index.html:529
|
||
msgctxt "page:index.html"
|
||
msgid "REA supplies"
|
||
msgstr "REA cung cấp"
|
||
|
||
#: website/public/index.html:530
|
||
msgctxt "page:index.html"
|
||
msgid "The handler’s instructions, decompiled code and calls."
|
||
msgstr "Hướng dẫn của trình xử lý, mã dịch ngược và các cuộc gọi."
|
||
|
||
#: website/public/index.html:535
|
||
msgctxt "page:index.html"
|
||
msgid "Your agent explains"
|
||
msgstr "Trợ lý giải thích"
|
||
|
||
#: website/public/index.html:536
|
||
msgctxt "page:index.html"
|
||
msgid "Which branch applies, what it calculates and how to rebuild it."
|
||
msgstr "Chi nhánh nào áp dụng, những gì nó tính toán và cách xây dựng lại nó."
|
||
|
||
#. {ph0}: <a href="#calculator">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:543
|
||
#, 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 ""
|
||
"Lắp ráp được chọn từ DLL Máy tính đã cài đặt. Những suy nghĩ và trả lời minh"
|
||
" họa những phát hiện. {ph0}Tiếp tục với ví dụ máy tính ↓{ph1}"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:554
|
||
#, 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}Hãy thử hai ví dụ.{ph1} Thay đổi tốc độ của trò chơi, sau đó quay lại "
|
||
"Máy tính và xây dựng lại nút % của trò chơi."
|
||
|
||
#: website/public/index.html:560
|
||
msgctxt "page:index.html"
|
||
msgid "Example 01 · Chrome’s dinosaur game"
|
||
msgstr "Ví dụ 01 * Chrome ' s trò chơi khủng long"
|
||
|
||
#: website/public/index.html:561
|
||
msgctxt "page:index.html"
|
||
msgid "Why does the dinosaur get faster?"
|
||
msgstr "Vì sao khủng long chạy nhanh dần?"
|
||
|
||
#: website/public/index.html:565 website/public/index.html:803
|
||
msgctxt "page:index.html"
|
||
msgid "Goal"
|
||
msgstr "Mục tiêu"
|
||
|
||
#. {ph0}: <mark class="prose-highlight">
|
||
#. {ph1}: </mark>
|
||
#: website/public/index.html:566
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "Rebuild the game with {ph0}adjustable speed.{ph1}"
|
||
msgstr "Xây dựng lại trò chơi với {ph0}tốc độ điều chỉnh.{ph1}"
|
||
|
||
#: website/public/index.html:572 website/public/index.html:810
|
||
msgctxt "page:index.html"
|
||
msgid "Why reverse engineer it?"
|
||
msgstr "Tại sao kỹ sư đảo ngược nó?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:573
|
||
#, 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 ""
|
||
"Để tái tạo gia tốc của nó, chúng ta cần {ph0}quy tắc trong trò chơi đang "
|
||
"chạy{ph1}: nó bắt đầu nhanh như thế nào, nó tăng bao nhiêu và khi nào nó "
|
||
"dừng lại."
|
||
|
||
#: website/public/index.html:582
|
||
msgctxt "page:index.html"
|
||
msgid "Play the reconstruction"
|
||
msgstr "Chơi bản dựng lại"
|
||
|
||
#: website/public/index.html:614
|
||
msgctxt "page:index.html"
|
||
msgid "Play"
|
||
msgstr "Chơi"
|
||
|
||
#: website/public/index.html:617
|
||
msgctxt "page:index.html"
|
||
msgid "Jump ↑"
|
||
msgstr "Nhảy ↑"
|
||
|
||
#: website/public/index.html:618
|
||
msgctxt "page:index.html"
|
||
msgid "Restart"
|
||
msgstr "Chơi lại"
|
||
|
||
#: website/public/index.html:621
|
||
msgctxt "page:index.html"
|
||
msgid "Speed"
|
||
msgstr "Tốc độ"
|
||
|
||
#: website/public/index.html:631
|
||
msgctxt "page:index.html"
|
||
msgid "Use the recovered acceleration rule"
|
||
msgstr "Sử dụng quy tắc tăng tốc đã khôi phục"
|
||
|
||
#: website/public/index.html:635
|
||
msgctxt "page:index.html"
|
||
msgid "Original rule: start at 6, then increase toward 13."
|
||
msgstr "Quy tắc ban đầu: bắt đầu từ 6, sau đó tăng lên 13."
|
||
|
||
#: website/public/index.html:638
|
||
msgctxt "page:index.html"
|
||
msgid "Move the slider to set your own speed. Space or Jump clears a cactus."
|
||
msgstr ""
|
||
"Di chuyển thanh trượt để thiết lập tốc độ của riêng bạn. Không gian Hoặc "
|
||
"Nhảy xóa một cây xương rồng."
|
||
|
||
#: website/public/index.html:643
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Enable JavaScript to play the reconstruction. The code and explanation above"
|
||
" remain readable."
|
||
msgstr ""
|
||
"Cho PHÉP JavaScript để chơi tái thiết. Mã và giải thích ở trên vẫn có thể "
|
||
"đọc được."
|
||
|
||
#: website/public/index.html:651 website/public/index.html:881
|
||
msgctxt "page:index.html"
|
||
msgid "REA returned"
|
||
msgstr "REA trả về"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:652
|
||
#, 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}Kịch bản thực sự chạy trong trang.{ph1} Tác nhân đọc chức năng cập nhật"
|
||
" và cài đặt tốc độ của nó, sau đó sử dụng quy tắc đó trong một trò chơi mới."
|
||
|
||
#. {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:660
|
||
#, 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}Ví dụ nhắc · Trò Chơi Khủng Long"
|
||
|
||
#. {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:674
|
||
#, 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}SỬ DỤNG REA để kiểm tra trò chơi khủng long này. Tại sao nó "
|
||
"nhanh hơn? Hiển thị quy tắc tốc độ, sau đó xây dựng một phiên bản nhỏ với "
|
||
"tốc độ có thể điều chỉnh.{ph3}{ph4}{ph5}"
|
||
|
||
#. {ph0}: <a href="https://wayou.github.io/t-rex-runner/" >
|
||
#. {ph1}: </a >
|
||
#: website/public/index.html:683
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "Inspected target: {ph0}wayou’s Chromium-derived browser edition{ph1}."
|
||
msgstr ""
|
||
"Mục tiêu được kiểm tra: {ph0}PHIÊN bản trình duyệt CÓ NGUỒN GỐC TỪ Chromium "
|
||
"của wayou{ph1}."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <strong>
|
||
#. {ph3}: </strong>
|
||
#. {ph4}: <strong>
|
||
#. {ph5}: </strong>
|
||
#: website/public/index.html:700
|
||
#, 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}Bắt đầu từ 6.{ph1} Thêm {ph2}0.001{ph3} mỗi bản cập nhật mà không có va"
|
||
" chạm, trong khi tốc độ thấp hơn {ph4}13{ph5}."
|
||
|
||
#: website/public/index.html:705
|
||
msgctxt "page:index.html"
|
||
msgid "Open the speed lab →"
|
||
msgstr "Mở phòng thí nghiệm tốc độ →"
|
||
|
||
#: website/public/index.html:711
|
||
msgctxt "page:index.html"
|
||
msgid "What each part does"
|
||
msgstr "Mỗi phần làm gì"
|
||
|
||
#. {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:713
|
||
#, 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}Đọc kịch bản của trò chơi đang chạy{ph3}{ph4}Trả lại"
|
||
" mã và cài đặt thực tế của nó cho tác nhân.{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:720
|
||
#, 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 * agent của Bạn{ph1}{ph2}Xây dựng lại quy tắc, thêm một điều "
|
||
"khiển{ph3}{ph4}Sử dụng khả năng tăng tốc phục hồi trong một trò chơi nhỏ với"
|
||
" một thanh trượt tốc độ.{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:728
|
||
#, 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 * Bạn{ph1}{ph2}Thay đổi tốc độ và chơi{ph3}{ph4}Hãy thử tăng tốc ban"
|
||
" đầu, sau đó chọn tốc độ của riêng bạn.{ph5}"
|
||
|
||
#: website/public/index.html:739
|
||
msgctxt "page:index.html"
|
||
msgid "See the script, checks and how to try the analysis"
|
||
msgstr "Xem kịch bản, kiểm tra và cách thử phân tích"
|
||
|
||
#. {ph0}: <code>index.js</code>
|
||
#: website/public/index.html:742
|
||
#, 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 đã kiểm tra PHIÊN bản TRÌNH duyệt HTTP thông qua kết nối gỡ lỗi cục bộ "
|
||
"và trả về đã tải {ph0}, bao gồm cả nguồn và tiêu hóa của nó."
|
||
|
||
#: website/public/index.html:755
|
||
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 ""
|
||
"Chúng tôi đã gọi chức năng cập nhật của trò chơi gốc trong kiểm tra trình "
|
||
"duyệt được kiểm soát, với các chướng ngại vật và lập lịch tự động bị vô hiệu"
|
||
" hóa. Sau 4.000 bản cập nhật, tốc độ là 10.0; sau 10.000, nó là 13.0, được "
|
||
"làm tròn thành một số thập phân."
|
||
|
||
#. {ph0}: <a href="examples/dino-lab/">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:761
|
||
#, 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 ""
|
||
"Trò chơi nhỏ mới giữ quy tắc tốc độ đó. Bản vẽ, nhảy và mã va chạm của nó là"
|
||
" một triển khai giảng dạy nhỏ. {ph0}Mở phòng thí nghiệm{ph1} để xem mã mới "
|
||
"và chạy kiểm tra tốc độ tương tự."
|
||
|
||
#. {ph0}: <a href="guides/browser/#prepare">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="https://wayou.github.io/t-rex-runner/" >
|
||
#. {ph3}: </a >
|
||
#: website/public/index.html:767
|
||
#, 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 ""
|
||
"Để tự mình kiểm tra mục tiêu, hãy làm theo {ph0}các bước kết nối trình "
|
||
"duyệt{ph1} sử dụng {ph2}trang khủng long{ph3}. Cung cấp cho agent CỦA bạn "
|
||
"URL trang đó và điểm cuối gỡ lỗi cục bộ của bạn, sau đó sao chép lời nhắc ở "
|
||
"trên."
|
||
|
||
#. {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:776
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"{ph0}Inspected speed code{ph1} · {ph2}Chromium Authors · BSD license{ph3}"
|
||
msgstr ""
|
||
"{ph0}Kiểm tra mã tốc độ{ph1} · {ph2} Tác GIẢ Chromium * giấy phép BSD{ph3}"
|
||
|
||
#: website/public/index.html:793
|
||
msgctxt "page:index.html"
|
||
msgid "Example 02 · Windows Calculator"
|
||
msgstr "Ví dụ 02 * Windows Máy Tính"
|
||
|
||
#: website/public/index.html:794
|
||
msgctxt "page:index.html"
|
||
msgid "Rebuild Calculator’s % button."
|
||
msgstr "Dựng lại nút % của Máy tính."
|
||
|
||
#. {ph0}: <mark class="prose-highlight">
|
||
#. {ph1}: </mark>
|
||
#: website/public/index.html:804
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Build a small calculator that handles {ph0}both + and × correctly.{ph1}"
|
||
msgstr "Xây dựng một máy tính nhỏ xử lý {ph0}cả + và × chính xác.{ph1}"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/index.html:811
|
||
#, 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 ""
|
||
"Nút tương tự sử dụng {ph0}các quy tắc khác nhau sau + và ×.{ph1} Chúng tôi "
|
||
"kiểm tra ứng dụng đã cài đặt để tìm số phần trăm được áp dụng."
|
||
|
||
#: website/public/index.html:820
|
||
msgctxt "page:index.html"
|
||
msgid "Try the calculation"
|
||
msgstr "Hãy thử tính toán"
|
||
|
||
#: website/public/index.html:864
|
||
msgctxt "page:index.html"
|
||
msgid "Reset"
|
||
msgstr "Đặt lại"
|
||
|
||
#: website/public/index.html:872
|
||
msgctxt "page:index.html"
|
||
msgid "10% of 200 = 20. Then 200 + 20 = 220."
|
||
msgstr "10% của 200 = 20. Sau đó, 200 + 20 = 220."
|
||
|
||
#: website/public/index.html:875
|
||
msgctxt "page:index.html"
|
||
msgid "Interactive illustration of the inspected percentage rule."
|
||
msgstr "Minh họa tương tác của quy tắc phần trăm được kiểm tra."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/index.html:882
|
||
#, 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}Một nhánh chia cho 100. Người kia cũng nhân với số đầu tiên.{ph1} Tác "
|
||
"nhân sử dụng cả hai để tạo lại nút%."
|
||
|
||
#. {ph0}: <code>previous = 200</code>
|
||
#. {ph1}: <code>current = 10</code>
|
||
#: website/public/index.html:890
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "For this example, {ph0} and {ph1}."
|
||
msgstr "Đối với ví dụ này, {ph0} và {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:896
|
||
#, 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}Ví dụ nhắc · Xây dựng lại nút %"
|
||
|
||
#. {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:910
|
||
#, 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}SỬ dụng REA để kiểm tra NÚT % CỦA MÁY TÍNH Windows. Khôi "
|
||
"phục các quy tắc sau + và ×, sau đó xây dựng một máy tính nhỏ sử dụng cả "
|
||
"hai.{ph3}{ph4}{ph5}"
|
||
|
||
#: website/public/index.html:931
|
||
msgctxt "page:index.html"
|
||
msgid "With +"
|
||
msgstr "Với +"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong >
|
||
#. {ph2}: <code>10% of 200 = 20 → 200 + 20 = 220</code>
|
||
#: website/public/index.html:932
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Take 10% of the first number.{ph1}{ph2}"
|
||
msgstr "{ph0}Lấy 10% số đầu tiên.{ph1}{ph2}"
|
||
|
||
#: website/public/index.html:938
|
||
msgctxt "page:index.html"
|
||
msgid "With ×"
|
||
msgstr "Với ×"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong >
|
||
#. {ph2}: <code>200 × 0.1 = 20</code>
|
||
#: website/public/index.html:939
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}Turn 10% into 0.1.{ph1}{ph2}"
|
||
msgstr "{ph0}Biến 10% thành 0,1.{ph1}{ph2}"
|
||
|
||
#: website/public/index.html:948
|
||
msgctxt "page:index.html"
|
||
msgid "From the installed app to a working % button"
|
||
msgstr "Từ ứng dụng đã cài đặt đến nút % hoạt động"
|
||
|
||
#. {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:961
|
||
#, 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 đọc thư viện{ph1}{ph2}Trả lại mã % handler{ph3}{ph4}Hàm kiểm "
|
||
"tra toán tử và sử dụng hằng số {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:969
|
||
#, 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 * đại Lý của Bạn giải thích nó{ph1}{ph2}Giải thích và tái tạo các "
|
||
"quy tắc{ph3}{ph4}Kiểm tra chéo nhánh với Nguồn Của Microsoft, sau đó thử + "
|
||
"và × ở trên.{ph5}"
|
||
|
||
#: website/public/index.html:980
|
||
msgctxt "page:index.html"
|
||
msgid "See the real code and how the answer was checked"
|
||
msgstr "Xem mã thực và câu trả lời đã được kiểm tra như thế nào"
|
||
|
||
#: website/public/index.html:1006
|
||
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 ""
|
||
"KIỂM tra VỚI REA 4.1.0: Windows Máy tính 11.2508.4.0, x64. Tóm tắt có thể "
|
||
"đọc được sử dụng tên từ Nguồn công Khai Của Microsoft để giải thích chi "
|
||
"nhánh đã khôi phục."
|
||
|
||
#. {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:1011
|
||
#, 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}Thực hiện tỷ lệ phần trăm{ph1} · {ph2}Trường hợp thử nghiệm của "
|
||
"Microsoft{ph3} · {ph4}Hướng dẫn thiết lập gốc{ph5}"
|
||
|
||
#: website/public/index.html:1030
|
||
msgctxt "page:index.html"
|
||
msgid "Your first investigation"
|
||
msgstr "Cuộc điều tra đầu tiên của bạn"
|
||
|
||
#: website/public/index.html:1031
|
||
msgctxt "page:index.html"
|
||
msgid "Try REA on a small app."
|
||
msgstr "Hãy thử REA trên một ứng dụng nhỏ."
|
||
|
||
#: website/public/index.html:1032
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Download our Notes example, trace its CSV export, and check one changed "
|
||
"input."
|
||
msgstr ""
|
||
"Tải Xuống Ví Dụ Ghi Chú của chúng tôi, theo dõi XUẤT CSV của NÓ và kiểm tra "
|
||
"một đầu vào đã thay đổi."
|
||
|
||
#: website/public/index.html:1037
|
||
msgctxt "page:index.html"
|
||
msgid "Try the guided example"
|
||
msgstr "Hãy thử ví dụ hướng dẫn"
|
||
|
||
#: website/public/index.html:1046
|
||
msgctxt "page:index.html"
|
||
msgid "Want to go deeper?"
|
||
msgstr "Muốn tìm hiểu sâu hơn?"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <strong>
|
||
#. {ph3}: </strong>
|
||
#: website/public/index.html:1047
|
||
#, 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 ""
|
||
"Nói với agent của bạn những gì bạn muốn hiểu hoặc xây dựng. VỚI REA, bạn có "
|
||
"thể làm việc cùng nhau trên bất cứ điều gì từ {ph0}nhân bản trang web "
|
||
"này{ph1} để {ph2}xây dựng lại một trò chơi từ thực thi của nó.{ph3}"
|
||
|
||
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
|
||
#. {ph1}: <i>
|
||
#. {ph2}: </i>
|
||
#. {ph3}: <i>
|
||
#. {ph4}: </i>
|
||
#. {ph5}: <i>
|
||
#. {ph6}: </i>
|
||
#. {ph7}: </span >
|
||
#: website/public/index.html:1058
|
||
#, 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}Ví dụ nhắc * Trang Web"
|
||
|
||
#: website/public/index.html:1081
|
||
msgctxt "page:index.html"
|
||
msgid "Yes, this one."
|
||
msgstr "Vâng, cái này."
|
||
|
||
#. {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:1086
|
||
#, 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}Ví dụ nhắc · Tái Thiết Trò chơi"
|
||
|
||
#. {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:1100
|
||
#, 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}SỬ dụng REA để xây dựng lại trò chơi này từ thực thi của nó."
|
||
" Khôi phục logic trò chơi Trong C và kiểm tra nó so với bản "
|
||
"gốc.{ph3}{ph4}{ph5}"
|
||
|
||
#. {ph0}: <a href="showcase/dx-ball/">
|
||
#. {ph1}: </a>
|
||
#: website/public/index.html:1109
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "{ph0}See the DX-Ball case study →{ph1}"
|
||
msgstr "{ph0}Xem nghiên cứu điển hình DX-Ball →{ph1}"
|
||
|
||
#: website/public/index.html:1114
|
||
msgctxt "page:index.html"
|
||
msgid "For setup and analysis steps, choose your target:"
|
||
msgstr "Đối với các bước thiết lập và phân tích, hãy chọn mục tiêu của bạn:"
|
||
|
||
#: website/public/index.html:1119
|
||
msgctxt "page:index.html"
|
||
msgid "Native binaries"
|
||
msgstr "Chương trình mã máy"
|
||
|
||
#: website/public/index.html:1120
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Inspect functions, strings, references and call relationships in executables"
|
||
" and libraries."
|
||
msgstr ""
|
||
"Kiểm tra các hàm, chuỗi, tham chiếu và mối quan hệ gọi hàm trong tệp thực "
|
||
"thi và thư viện."
|
||
|
||
#: website/public/index.html:1124
|
||
msgctxt "page:index.html"
|
||
msgid "Native analysis guide"
|
||
msgstr "Phân tích hướng dẫn chương trình mã máy"
|
||
|
||
#: website/public/index.html:1127
|
||
msgctxt "page:index.html"
|
||
msgid "JavaScript & Electron"
|
||
msgstr "JavaScript & Electron"
|
||
|
||
#: website/public/index.html:1128
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Map modules, routes, IPC and native dependencies from an application folder "
|
||
"or ASAR archive."
|
||
msgstr ""
|
||
"Các mô-đun bản đồ, tuyến ĐƯỜNG, IPC và các phụ thuộc gốc từ thư mục ứng dụng"
|
||
" hoặc KHO LƯU trữ ASAR."
|
||
|
||
#: website/public/index.html:1132
|
||
msgctxt "page:index.html"
|
||
msgid "Application workflows"
|
||
msgstr "Quy trình làm việc ứng dụng"
|
||
|
||
#: website/public/index.html:1135
|
||
msgctxt "page:index.html"
|
||
msgid "Browser & runtime activity"
|
||
msgstr "Hoạt động trình duyệt và thời gian chạy"
|
||
|
||
#: website/public/index.html:1136
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Capture selected browser or process activity, then compare the results "
|
||
"across runs."
|
||
msgstr ""
|
||
"Nắm bắt các trình duyệt được lựa chọn hoặc quá trình hoạt động, sau đó so "
|
||
"sánh các kết quả trên chạy."
|
||
|
||
#: website/public/index.html:1140
|
||
msgctxt "page:index.html"
|
||
msgid "Browser observation guide"
|
||
msgstr "Hướng dẫn quan sát trình duyệt"
|
||
|
||
#: website/public/index.html:1147
|
||
msgctxt "page:index.html"
|
||
msgid "Any questions?"
|
||
msgstr "Bạn có câu hỏi?"
|
||
|
||
#. {ph0}: <a href="faq/">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="https://discord.gg/GkcryMnJDM">
|
||
#. {ph3}: </a>
|
||
#. {ph4}: <a href="https://github.com/morluto/rea/issues/new/choose" >
|
||
#. {ph5}: </a >
|
||
#: website/public/index.html:1148
|
||
#, 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}Đọc CÂU hỏi THƯỜNG gặp{ph1}, {ph2}trò chuyện VỚI CHÚNG TÔI TRÊN Discord"
|
||
" {ph3}, hoặc {ph4}mở sự cố GitHub{ph5} đối với lỗi và yêu cầu tính năng."
|
||
|
||
#: website/public/index.html:1161 website/public/index.html:1167
|
||
msgctxt "page:index.html"
|
||
msgid "Join the community"
|
||
msgstr "Tham gia cộng đồng"
|
||
|
||
#: website/public/index.html:1162
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Share investigations and get help from other REA users on Discord. Follow "
|
||
"REA on X for project updates."
|
||
msgstr ""
|
||
"Chia sẻ điều tra và nhận trợ giúp từ NHỮNG NGƯỜI dùng REA khác TRÊN Discord "
|
||
". Theo DÕI REA Trên X để cập nhật dự án."
|
||
|
||
#: website/public/index.html:6
|
||
msgctxt "page:index.html"
|
||
msgid "REA — Reverse Engineering for Your Coding Agent"
|
||
msgstr "REA-Kỹ Thuật Đảo ngược Cho Đại Lý Mã Hóa Của Bạn"
|
||
|
||
#: website/public/index.html:7
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Reverse engineer apps, binaries and browser behavior with your coding agent."
|
||
" Follow clear guides and try interactive examples with REA."
|
||
msgstr ""
|
||
"Ứng dụng kỹ sư đảo ngược, nhị phân và hành vi trình duyệt với tác nhân mã "
|
||
"hóa của bạn. Làm theo hướng dẫn rõ ràng và thử các ví dụ tương tác VỚI REA ."
|
||
|
||
#: website/public/index.html:260
|
||
msgctxt "page:index.html"
|
||
msgid "Copy REA installation prompt"
|
||
msgstr "Sao CHÉP lời nhắc cài ĐẶT REA"
|
||
|
||
#: website/public/index.html:282
|
||
msgctxt "page:index.html"
|
||
msgid "Copy setup command"
|
||
msgstr "Sao chép lệnh thiết lập"
|
||
|
||
#: website/public/index.html:334
|
||
msgctxt "page:index.html"
|
||
msgid "Follow the manual Calculator analysis"
|
||
msgstr "Thực hiện theo phân tích máy tính thủ công"
|
||
|
||
#: website/public/index.html:497
|
||
msgctxt "page:index.html"
|
||
msgid "Copy Calculator percentage question"
|
||
msgstr "Sao chép câu hỏi tỷ lệ phần Trăm máy Tính"
|
||
|
||
#: website/public/index.html:604
|
||
msgctxt "page:index.html"
|
||
msgid ""
|
||
"Dinosaur mini-game. Use the Jump button or press Space while the game is "
|
||
"focused."
|
||
msgstr ""
|
||
"Khủng long mini-game. Sử dụng Nút Nhảy hoặc Nhấn Không gian trong khi trò "
|
||
"chơi được tập trung."
|
||
|
||
#: website/public/index.html:665
|
||
msgctxt "page:index.html"
|
||
msgid "Copy dinosaur analysis prompt"
|
||
msgstr "Sao chép dấu nhắc phân tích khủng long"
|
||
|
||
#: website/public/index.html:821
|
||
msgctxt "page:index.html"
|
||
msgid "Choose the calculation"
|
||
msgstr "Chọn tính toán"
|
||
|
||
#: website/public/index.html:901
|
||
msgctxt "page:index.html"
|
||
msgid "Copy Calculator analysis prompt"
|
||
msgstr "Sao chép lời nhắc phân tích máy tính"
|
||
|
||
#: website/public/index.html:1063
|
||
msgctxt "page:index.html"
|
||
msgid "Copy website project prompt"
|
||
msgstr "Sao chép lời nhắc dự án trang web"
|
||
|
||
#: website/public/index.html:1091
|
||
msgctxt "page:index.html"
|
||
msgid "Copy game reconstruction prompt"
|
||
msgstr "Sao chép lời nhắc tái thiết trò chơi"
|
||
|
||
#: website/public/index.html:1191
|
||
msgctxt "page:index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/showcase/aegis/index.html:104
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/showcase/aegis/index.html:195
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Android"
|
||
msgstr "{ph0}Nhà{ph1} / {ph2}Giới thiệu{ph3} / Android"
|
||
|
||
#: website/public/showcase/aegis/index.html:198
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Case study · Aegis Authenticator"
|
||
msgstr "Nghiên cứu trường hợp * Aegis Authenticator"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/showcase/aegis/index.html:199
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "How does an authenticator{ph0}generate a login code?"
|
||
msgstr "Làm thế nào để một authenticator{ph0}tạo mã đăng nhập?"
|
||
|
||
#: website/public/showcase/aegis/index.html:200
|
||
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 ""
|
||
"Một mã gồm sáu chữ số thay đổi sau mỗi 30 giây. SỬ DỤNG REA để tìm phép tính"
|
||
" Trong ANDROID APK , sau đó xây dựng lại nó bằng đồng hồ bạn có thể điều "
|
||
"khiển."
|
||
|
||
#: website/public/showcase/aegis/index.html:205
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Aegis 3.4.3 · Android · Official release APK · 6.9 MB"
|
||
msgstr "Aegis 3.4.3 * Android * PHÁT HÀNH CHÍNH THỨC APK * 6.9 MB"
|
||
|
||
#: website/public/showcase/aegis/index.html:208
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "View Aegis on GitHub"
|
||
msgstr "Xem Aegis TRÊN GitHub"
|
||
|
||
#: website/public/showcase/aegis/index.html:214
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "From an APK to a code you can reproduce"
|
||
msgstr "TỪ APK đến mã bạn có thể sao chép"
|
||
|
||
#. {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:216
|
||
#, 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 * Xác định vị trí các tính năng{ph1}{ph2}3.077 lớp → phương pháp "
|
||
"tạo{ph3}{ph4} REA tìm kiếm gói và theo dõi mã được sử dụng bởi các hành động"
|
||
" hiển thị và sao chép.{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:225
|
||
#, 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 * Đọc tính Toán{ph1}{ph2}Thời gian + khóa tài khoản → sáu chữ "
|
||
"số{ph3}{ph4} REA trả về các phương thức và mặc định. Các agent giải thích "
|
||
"cách họ phù hợp với nhau.{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:233
|
||
#, 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 * Xây dựng lại và kiểm tra{ph1}{ph2}Thay đổi đồng hồ. Xem "
|
||
"mã.{ph3}{ph4}Một bản demo trình duyệt mới tái tạo quy tắc và kiểm tra nó đối"
|
||
" với các trường hợp tham chiếu công khai.{ph5}"
|
||
|
||
#: website/public/showcase/aegis/index.html:246
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "In this case study"
|
||
msgstr "Trong trường hợp này nghiên cứu"
|
||
|
||
#. {ph0}: <a href="#ask">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/aegis/index.html:248
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}Ask your agent{ph1}"
|
||
msgstr "{ph0}Hỏi agent của bạn{ph1}"
|
||
|
||
#. {ph0}: <a href="#demo">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/aegis/index.html:249
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}Try the code generator{ph1}"
|
||
msgstr "{ph0}Hãy thử trình tạo mã{ph1}"
|
||
|
||
#. {ph0}: <a href="#find">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/aegis/index.html:250
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}Find the code with REA{ph1}"
|
||
msgstr "{ph0}Tìm mã VỚI REA {ph1}"
|
||
|
||
#. {ph0}: <a href="#calculation">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/aegis/index.html:251
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}Read the calculation{ph1}"
|
||
msgstr "{ph0}Đọc tính toán{ph1}"
|
||
|
||
#. {ph0}: <a href="#verify">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/aegis/index.html:252
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}Check the reconstruction{ph1}"
|
||
msgstr "{ph0}Kiểm tra việc tái thiết{ph1}"
|
||
|
||
#. {ph0}: <a href="#try">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/aegis/index.html:253
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}Inspect the APK yourself{ph1}"
|
||
msgstr "{ph0}Tự kiểm tra APK{ph1}"
|
||
|
||
#: website/public/showcase/aegis/index.html:258
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Ask your agent"
|
||
msgstr "Hỏi agent của bạn"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/showcase/aegis/index.html:259
|
||
#, 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 ""
|
||
"Ứng dụng hiển thị mã đăng nhập thay đổi. Chúng tôi muốn tìm {ph0}điều gì làm"
|
||
" cho nó thay đổi{ph1} và tái tạo hành vi đó."
|
||
|
||
#. {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:265
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/showcase/aegis/index.html:269
|
||
#: website/public/showcase/aegis/index.html:732
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#. {ph0}: <a href="#try">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/aegis/index.html:289
|
||
#, 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 ""
|
||
"Một lời nhắc ví dụ cho APK đã tải xuống , VỚI PHÂN tích Android CỦA REA được"
|
||
" định cấu hình. {ph0}Nhận APK và thiết lập phân tích nhúng vào trang web "
|
||
"hoặc blog của bạn ↓{ph1}"
|
||
|
||
#: website/public/showcase/aegis/index.html:297
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Try the code generator"
|
||
msgstr "Hãy thử trình tạo mã"
|
||
|
||
#. {ph0}: <mark class="prose-highlight">
|
||
#. {ph1}: </mark>
|
||
#: website/public/showcase/aegis/index.html:298
|
||
#, 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 ""
|
||
"Các nhóm ứng dụng thời gian vào {ph0}Khối 30 giây.{ph1} Nó kết hợp số khối "
|
||
"với khóa tài khoản để tạo mã. Cùng một khóa và khối tạo ra cùng một mã."
|
||
|
||
#: website/public/showcase/aegis/index.html:305
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Move the clock across 60 seconds"
|
||
msgstr "Di chuyển đồng hồ qua 60 giây"
|
||
|
||
#: website/public/showcase/aegis/index.html:308
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Time"
|
||
msgstr "Thời gian"
|
||
|
||
#: website/public/showcase/aegis/index.html:310
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "seconds"
|
||
msgstr "giây"
|
||
|
||
#: website/public/showcase/aegis/index.html:311
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Our adjustable example clock"
|
||
msgstr "Đồng hồ ví dụ có thể điều chỉnh của chúng tôi"
|
||
|
||
#: website/public/showcase/aegis/index.html:314
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "30-second block"
|
||
msgstr "Khối 30 giây"
|
||
|
||
#: website/public/showcase/aegis/index.html:316
|
||
#: website/public/showcase/aegis/index.html:643
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Block"
|
||
msgstr "Khối"
|
||
|
||
#. {ph0}: <code data-aegis-division>floor(59 / 30)</code>
|
||
#. {ph1}: <br />
|
||
#. {ph2}: <span data-aegis-window >
|
||
#. {ph3}: </span >
|
||
#: website/public/showcase/aegis/index.html:317
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}{ph1}{ph2}30–59 seconds{ph3}"
|
||
msgstr "{ph0}{ph1}{ph2}30-59 giây{ph3}"
|
||
|
||
#: website/public/showcase/aegis/index.html:325
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Generated code"
|
||
msgstr "Mã được tạo"
|
||
|
||
#: website/public/showcase/aegis/index.html:333
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Account key + block → six digits"
|
||
msgstr "Khóa tài khoản + khối → sáu chữ số"
|
||
|
||
#: website/public/showcase/aegis/index.html:339
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Example time, in seconds"
|
||
msgstr "Thời gian ví dụ, tính bằng giây"
|
||
|
||
#: website/public/showcase/aegis/index.html:354
|
||
#: website/public/showcase/aegis/index.html:654
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "59 seconds"
|
||
msgstr "59 giây"
|
||
|
||
#: website/public/showcase/aegis/index.html:361
|
||
#: website/public/showcase/aegis/index.html:659
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "60 seconds"
|
||
msgstr "60 giây"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <strong>
|
||
#. {ph3}: </strong>
|
||
#: website/public/showcase/aegis/index.html:370
|
||
#, 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 ""
|
||
"Lúc 59 giây: {ph0}287082.{ph1} Lúc 60 giây: {ph2}359152.{ph3} Di chuyển "
|
||
"trong một khối không thay đổi mã."
|
||
|
||
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
|
||
#. {ph1}: </a >
|
||
#: website/public/showcase/aegis/index.html:377
|
||
#, 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 ""
|
||
"Chìa khóa là cố định, công khai {ph0}Dữ liệu thử NGHIỆM rfc 6238{ph1}. Bản "
|
||
"demo thực hiện tính toán được khôi phục từ APK ."
|
||
|
||
#: website/public/showcase/aegis/index.html:384
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid ""
|
||
"The diagram shows the result at 59 seconds. Enable JavaScript to change the "
|
||
"clock."
|
||
msgstr "Sơ đồ hiển thị kết quả ở 59 giây. Bật JavaScript để thay đổi đồng hồ."
|
||
|
||
#: website/public/showcase/aegis/index.html:393
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Find the code with REA"
|
||
msgstr "Tìm mã VỚI REA"
|
||
|
||
#: website/public/showcase/aegis/index.html:396
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Narrow the APK to three classes"
|
||
msgstr "Thu HẸP APK đến ba lớp"
|
||
|
||
#. {ph0}: <code>TotpInfo</code>
|
||
#: website/public/showcase/aegis/index.html:421
|
||
#, 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} là ứng cử viên tính toán; hai người còn lại liên quan đến thanh tiến "
|
||
"trình và tài khoản nhập khẩu. TOTP có nghĩa là mật khẩu một lần dựa trên "
|
||
"thời gian."
|
||
|
||
#: website/public/showcase/aegis/index.html:428
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Connect the generator to the app's display"
|
||
msgstr "Kết nối máy phát điện với màn hình của ứng dụng"
|
||
|
||
#. {ph0}: <code>EntryHolder.getOtp</code>
|
||
#. {ph1}: <code>TotpInfo.getOtp(timestamp)</code>
|
||
#: website/public/showcase/aegis/index.html:456
|
||
#, 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 xác định quá tải dấu thời gian và tìm hàm gọi của phương thức cơ sở. "
|
||
"Kiểm tra {ph0} sau đó hiển thị cuộc gọi hiển thị {ph1}."
|
||
|
||
#. {ph0}: <code>com.beemdevelopment.aegis</code>
|
||
#: website/public/showcase/aegis/index.html:464
|
||
#, 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 ""
|
||
"Yêu cầu hiển thị một đường dẫn đầu vào rút gọn. Tên lớp kết quả bỏ qua điểm "
|
||
"chung {ph0} tiền tố."
|
||
|
||
#: website/public/showcase/aegis/index.html:471
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Read the calculation"
|
||
msgstr "Đọc tính toán"
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/showcase/aegis/index.html:472
|
||
#, 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 trả về {ph0}chuyển đổi đồng hồ, cài đặt mặc định và phương pháp "
|
||
"tạo.{ph1} Các hàm tạo đặt khoảng thời gian 30 giây và sáu chữ số; phương "
|
||
"thức dấu thời gian biến giây thành số khối."
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/aegis/index.html:487
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}01{ph1} Time block"
|
||
msgstr "{ph0}01{ph1} Khối thời gian"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/aegis/index.html:495
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}02{ph1} Key + block"
|
||
msgstr "{ph0}02{ph1} Phím + khối"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/aegis/index.html:503
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}03{ph1} Six digits"
|
||
msgstr "{ph0}03{ph1} Sáu chữ số"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/showcase/aegis/index.html:562
|
||
#, 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}Thời gian chọn khối.{ph1} Giây 30 đến 59 tất cả cho khối 1. Ở 60 giây, "
|
||
"khối trở thành 2."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/showcase/aegis/index.html:568
|
||
#, 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}Các vấn đề chính quá.{ph1} Trình tạo kết hợp khóa tài khoản với khối. "
|
||
"Một tài khoản có khóa khác có thể hiển thị một mã khác cùng một lúc."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/showcase/aegis/index.html:575
|
||
#, 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}Giữ sáu chữ số.{ph1} Phần còn lại sau khi chia cho 1.000.000 được đệm "
|
||
"bằng số không khi cần, vì vậy mã có thể bắt đầu bằng 0."
|
||
|
||
#. {ph0}: <a
|
||
#. href="https://github.com/beemdevelopment/Aegis/blob/d6f4e5925a97e4e91593f1542085eae03432a759/LICENSE"
|
||
#. >
|
||
#. {ph1}: </a >
|
||
#: website/public/showcase/aegis/index.html:582
|
||
#, 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 ""
|
||
"Trích đoạn từ một số phương pháp được kiểm tra, với gói dòng để hiển thị. "
|
||
"Bảng điều khiển bên phải là một bản tóm tắt giải thích. {ph0} MÃ Aegis LÀ "
|
||
"GPL-3.0.{ph1}"
|
||
|
||
#: website/public/showcase/aegis/index.html:591
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Inside the generator"
|
||
msgstr "Bên trong máy phát điện"
|
||
|
||
#. {ph0}: <code>generateOTP</code>
|
||
#. {ph1}: <code>kotlin.ExceptionsKt</code>
|
||
#. {ph2}: <code>TotpInfo</code>
|
||
#. {ph3}: <code>HOTP</code>
|
||
#: website/public/showcase/aegis/index.html:592
|
||
#, 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 phát hành đặt {ph0} trong {ph1}. REA thực hiện cuộc gọi từ {ph2} và trả"
|
||
" về cơ thể này; nguồn gốc gọi người trợ giúp {ph3}."
|
||
|
||
#: website/public/showcase/aegis/index.html:614
|
||
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 ""
|
||
"Byte băm cuối cùng chọn một vị trí. Bốn byte ở vị trí đó cung cấp số 31 bit "
|
||
"dương; định dạng giảm nó xuống số chữ số được yêu cầu. Đối số cuối cùng của "
|
||
"hàm tạo chọn nhánh định dạng mã được giới thiệu bằng cách biên dịch."
|
||
|
||
#. {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:621
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}Compare with the matching release source{ph1}."
|
||
msgstr "{ph0}So sánh với nguồn phát hành phù hợp{ph1}."
|
||
|
||
#: website/public/showcase/aegis/index.html:631
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Check the reconstruction"
|
||
msgstr "Kiểm tra việc tái thiết"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/showcase/aegis/index.html:632
|
||
#, 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 ""
|
||
"Chúng tôi đã lắp ráp CÁC phương thức Java được chọn REA-returned trong một "
|
||
"chương trình thử nghiệm nhỏ. Đầu ra của họ phù hợp với một tái thiết độc lập"
|
||
" trên {ph0}133 trường hợp thử nghiệm{ph1}, bao gồm ranh giới khối thời gian "
|
||
"và mã bắt đầu bằng không."
|
||
|
||
#: website/public/showcase/aegis/index.html:642
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Example time"
|
||
msgstr "Thời gian ví dụ"
|
||
|
||
#: website/public/showcase/aegis/index.html:644
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Six-digit code"
|
||
msgstr "Mã sáu chữ số"
|
||
|
||
#: website/public/showcase/aegis/index.html:649
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "30 seconds"
|
||
msgstr "30 giây"
|
||
|
||
#: website/public/showcase/aegis/index.html:664
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "1,111,111,109 seconds"
|
||
msgstr "1,111,111,109 giây"
|
||
|
||
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
|
||
#. {ph1}: </a >
|
||
#: website/public/showcase/aegis/index.html:671
|
||
#, 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 ""
|
||
"Trình tạo cũng khớp với sáu trường hợp tham chiếu SHA-1 đã xuất bản trong "
|
||
"{ph0}RFC 6238{ph1}. Kiểm tra việc triển khai trình duyệt chống lại chúng:"
|
||
|
||
#: website/public/showcase/aegis/index.html:679
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Run reference checks"
|
||
msgstr "Chạy kiểm tra tham chiếu"
|
||
|
||
#: website/public/showcase/aegis/index.html:686
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Read the demo's calculation"
|
||
msgstr "Đọc tính toán của bản demo"
|
||
|
||
#: website/public/showcase/aegis/index.html:690
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid ""
|
||
"The reference cases use eight digits. The check also verifies their six-"
|
||
"digit results."
|
||
msgstr ""
|
||
"Các trường hợp tham chiếu sử dụng tám chữ số. Kiểm tra cũng xác minh kết quả"
|
||
" sáu chữ số của họ."
|
||
|
||
#: website/public/showcase/aegis/index.html:699
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid ""
|
||
"Verification runs extracted Java methods and the new demo. The Android APK "
|
||
"was inspected statically."
|
||
msgstr ""
|
||
"Xác minh chạy các phương thức Java được trích xuất và bản demo mới. Android "
|
||
"APK đã được kiểm tra tĩnh."
|
||
|
||
#: website/public/showcase/aegis/index.html:706
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Inspect the APK yourself"
|
||
msgstr "Tự kiểm tra APK"
|
||
|
||
#. {ph0}: <a href="../../get-started/">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/aegis/index.html:707
|
||
#, 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}Thiết LẬP REA {ph1} TRÊN macOS hoặc Linux, sau đó tải hai tệp này vào "
|
||
"cùng một thư mục. TRÊN Windows, sử dụng MÔI trường Linux như WSL."
|
||
|
||
#. {ph0}: <code>JAVA_HOME</code>
|
||
#. {ph1}: <code>PATH</code>
|
||
#: website/public/showcase/aegis/index.html:712
|
||
#, 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 ""
|
||
"Phân tích Android cần MỘT jdk 17 đầy đủ hoặc mới hơn. Chọn nó với {ph0} hoặc"
|
||
" {ph1}. Trường hợp này sử DỤNG JDK 21."
|
||
|
||
#: website/public/showcase/aegis/index.html:728
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Point REA at the provider file and inspect the APK:"
|
||
msgstr "Điểm REA tại tệp nhà cung cấp và kiểm TRA APK :"
|
||
|
||
#: website/public/showcase/aegis/index.html:731
|
||
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:745
|
||
#, 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 ""
|
||
"Agent của bạn có thể tiếp tục THÔNG qua REA 'S CLI bằng cách sử dụng lời "
|
||
"nhắc ở trên. ĐỐI VỚI MCP, thêm {ph0} ĐẾN MÔI trường CỦA MÁY chủ REA và kết "
|
||
"nối lại nó."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/showcase/aegis/index.html:750
|
||
#, 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 ""
|
||
"Một câu hỏi tiếp theo: {ph0}điều gì xảy ra khi một tài khoản sử dụng tám chữ"
|
||
" số hoặc một khoảng thời gian khác nhau?{ph1}"
|
||
|
||
#: website/public/showcase/aegis/index.html:760
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Sources"
|
||
msgstr "Nguồn"
|
||
|
||
#. {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:762
|
||
#, 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}PHÁT HÀNH CHÍNH THỨC Aegis 3.4.3{ph1} · {ph2}Cam kết nguồn phù hợp{ph3}"
|
||
" · {ph4}Giấy phép GPL-3.0{ph5}"
|
||
|
||
#. {ph0}: <a href="https://www.rfc-editor.org/rfc/rfc6238.html#appendix-B" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <a href="test-vectors.json">
|
||
#. {ph3}: </a>
|
||
#: website/public/showcase/aegis/index.html:778
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "{ph0}RFC 6238 reference cases{ph1} · {ph2}Demo test data{ph3}"
|
||
msgstr ""
|
||
"{ph0}Rfc 6238 trường hợp tham khảo{ph1} · {ph2}Dữ liệu thử nghiệm Demo{ph3}"
|
||
|
||
#: website/public/showcase/aegis/index.html:785
|
||
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 ""
|
||
"KIỂM tra VỚI REA 6.1.0 vào ngày 9 tháng 10 năm 2026. Các đoạn trích dịch "
|
||
"ngược được ghi có VÀO Aegis ; sơ đồ, tóm tắt có thể đọc được và tái tạo "
|
||
"trình duyệt là tài liệu giảng dạy mới."
|
||
|
||
#: website/public/showcase/aegis/index.html:6
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Aegis APK Reverse Engineering: Login Codes — REA"
|
||
msgstr "Aegis APK Kỹ Thuật Đảo Ngược: Mã Đăng nhập-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 ""
|
||
"Kiểm tra Aegis ANDROID APK VỚI REA , khôi phục tính toán mã đăng nhập gồm "
|
||
"sáu chữ số của NÓ và thử tái tạo với đồng hồ có thể điều chỉnh."
|
||
|
||
#: website/public/showcase/aegis/index.html:245
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/showcase/aegis/index.html:256
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Aegis APK case study"
|
||
msgstr "Aegis APK trường hợp nghiên cứu"
|
||
|
||
#: website/public/showcase/aegis/index.html:269
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Copy Aegis example prompt"
|
||
msgstr "Sao CHÉP DẤU nhắc VÍ DỤ Aegis"
|
||
|
||
#: website/public/showcase/aegis/index.html:482
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Follow the login-code calculation"
|
||
msgstr "Thực hiện theo tính toán mã đăng nhập"
|
||
|
||
#: website/public/showcase/aegis/index.html:732
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Copy APK inspection command"
|
||
msgstr "Sao CHÉP lệnh kiểm TRA APK"
|
||
|
||
#: website/public/showcase/aegis/index.html:808
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/showcase/ctf/index.html:103
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/showcase/ctf/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / CTF"
|
||
msgstr "{ph0}Nhà{ph1} / {ph2}Giới thiệu{ph3} / CTF"
|
||
|
||
#: website/public/showcase/ctf/index.html:197
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Case study · DownUnderCTF 2023"
|
||
msgstr "Nghiên cứu điển hình * DownUnderCTF 2023"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/showcase/ctf/index.html:198
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Find the flag in{ph0}a CTF binary."
|
||
msgstr "Tìm cờ trong{ph0}MỘT NHỊ phân CTF."
|
||
|
||
#. {ph0}: <code>Correct!</code>
|
||
#: website/public/showcase/ctf/index.html:199
|
||
#, 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 ""
|
||
"SỬ DỤNG REA để kiểm tra một trình kiểm tra cờ nhỏ, biến các quy tắc của nó "
|
||
"thành các phương trình và tìm một đầu vào làm cho chương trình gốc in {ph0}."
|
||
|
||
#: website/public/showcase/ctf/index.html:204
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "masked squares flag checker · Easy · Linux x86-64"
|
||
msgstr "mặt nạ hình vuông cờ checker * Dễ dàng * Linux x86-64"
|
||
|
||
#: website/public/showcase/ctf/index.html:207
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "View the original challenge"
|
||
msgstr "Xem thử thách ban đầu"
|
||
|
||
#: website/public/showcase/ctf/index.html:215
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "From a binary to a checked answer"
|
||
msgstr "Từ nhị phân đến câu trả lời đã kiểm tra"
|
||
|
||
#. {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:217
|
||
#, 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 * Tìm séc{ph1}{ph2}Chuỗi → kiểm tra chức năng{ph3}{ph4} REA tìm lời "
|
||
"nhắc, tham chiếu của NÓ và mã chấp nhận hoặc từ chối đầu vào.{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:225
|
||
#, 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 · Trích xuất các quy tắc{ph1}{ph2}36 ký tự · 26 tổng{ph3}{ph4} REA "
|
||
"trả về các hướng dẫn và dữ liệu đằng sau mỗi lần kiểm tra. Tác nhân biến "
|
||
"chúng thành phương trình.{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:233
|
||
#, 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 * Giải Quyết và chạy{ph1}{ph2}Cờ phục hồi → Đúng!{ph3}{ph4}Một kịch "
|
||
"bản Python giải quyết các phương trình. REA chụp chương trình ban đầu chấp "
|
||
"nhận kết quả.{ph5}"
|
||
|
||
#: website/public/showcase/ctf/index.html:242
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid ""
|
||
"The challenge is by joseph, published in DownUnderCTF's official repository."
|
||
msgstr ""
|
||
"Thử thách là của joseph, được xuất bản trong Kho lưu trữ chính thức Của "
|
||
"DownUnderCTF."
|
||
|
||
#: website/public/showcase/ctf/index.html:250
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "In this case study"
|
||
msgstr "Trong trường hợp này nghiên cứu"
|
||
|
||
#. {ph0}: <a href="#find">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/ctf/index.html:252
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}Find the checking code{ph1}"
|
||
msgstr "{ph0}Tìm mã kiểm tra{ph1}"
|
||
|
||
#. {ph0}: <a href="#mask">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/ctf/index.html:253
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}Read one mask{ph1}"
|
||
msgstr "{ph0}Đọc một mặt nạ{ph1}"
|
||
|
||
#. {ph0}: <a href="#code">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/ctf/index.html:254
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}Assembly to readable code{ph1}"
|
||
msgstr "{ph0}Lắp ráp để mã có thể đọc được{ph1}"
|
||
|
||
#. {ph0}: <a href="#solve">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/ctf/index.html:255
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}Solve the equations{ph1}"
|
||
msgstr "{ph0}Giải các phương trình{ph1}"
|
||
|
||
#. {ph0}: <a href="#verify">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/ctf/index.html:256
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}Check the answer{ph1}"
|
||
msgstr "{ph0}Kiểm tra câu trả lời{ph1}"
|
||
|
||
#. {ph0}: <a href="#try">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/ctf/index.html:257
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}Try it yourself{ph1}"
|
||
msgstr "{ph0}Hãy thử nó cho mình{ph1}"
|
||
|
||
#: website/public/showcase/ctf/index.html:262
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Find the checking code"
|
||
msgstr "Tìm mã kiểm tra"
|
||
|
||
#. {ph0}: <code>Correct!</code>
|
||
#. {ph1}: <code>Incorrect!</code>
|
||
#: website/public/showcase/ctf/index.html:263
|
||
#, 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 ""
|
||
"Bản phát hành là một TỆP thực thi 15 KB. Nó yêu cầu một lá cờ, sau đó in "
|
||
"{ph0} hoặc {ph1}. Bắt đầu với một yêu cầu đơn giản cho agent của bạn."
|
||
|
||
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
|
||
#. {ph1}: <i>
|
||
#. {ph2}: </i>
|
||
#. {ph3}: <i>
|
||
#. {ph4}: </i>
|
||
#. {ph5}: <i>
|
||
#. {ph6}: </i>
|
||
#. {ph7}: </span >
|
||
#: website/public/showcase/ctf/index.html:270
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/showcase/ctf/index.html:275
|
||
#: website/public/showcase/ctf/index.html:494
|
||
#: website/public/showcase/ctf/index.html:518
|
||
#: website/public/showcase/ctf/index.html:588
|
||
#: website/public/showcase/ctf/index.html:735
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#. {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:284
|
||
#, 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}SỬ dụng REA để phân tích ms_flag_checker và tìm cờ. Giải "
|
||
"thích cách kiểm tra hoạt động, sau đó xác minh câu trả lời với chương trình "
|
||
"gốc.{ph3}{ph4}{ph5}"
|
||
|
||
#: website/public/showcase/ctf/index.html:293
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid ""
|
||
"An example prompt, with the downloaded challenge available locally and a "
|
||
"native analysis provider connected."
|
||
msgstr ""
|
||
"Một lời nhắc ví dụ, với thử thách đã tải xuống có sẵn tại địa phương và phân"
|
||
" tích nhà cung cấp chương trình mã máy được kết nối."
|
||
|
||
#: website/public/showcase/ctf/index.html:299
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Follow the input prompt to its function"
|
||
msgstr "Thực hiện theo lời nhắc đầu vào cho chức năng của nó"
|
||
|
||
#: website/public/showcase/ctf/index.html:328
|
||
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 ""
|
||
"Tham chiếu cung cấp cho tác nhân một nơi để điều tra, mặc dù tên hàm ban đầu"
|
||
" của tệp thực thi đã bị xóa."
|
||
|
||
#: website/public/showcase/ctf/index.html:335
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Read the checker and its two helpers"
|
||
msgstr "Đọc trình kiểm tra và hai người trợ giúp của nó"
|
||
|
||
#. {ph0}: <code>0x18</code>
|
||
#. {ph1}: <code>0x270</code>
|
||
#: website/public/showcase/ctf/index.html:363
|
||
#, 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 ""
|
||
"Vòng lặp đầu tiên sao chép 36 mã ký tự. Vòng kiểm tra giải mã mặt nạ, tổng "
|
||
"hợp các mã đã chọn và so sánh kết quả với một số được lưu trữ. Của nó {ph0}-"
|
||
" byte bước qua {ph1} byte cho 26 mặt nạ."
|
||
|
||
#: website/public/showcase/ctf/index.html:371
|
||
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 ""
|
||
"Đây là những kết quả được chọn từ một phân tích REA mới. Đường dẫn mục tiêu "
|
||
"cục bộ được rút ngắn để hiển thị; địa chỉ tham khảo HÌNH ẢNH ĐÃ nhập CỦA "
|
||
"REA."
|
||
|
||
#: website/public/showcase/ctf/index.html:379
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "One check reveals one character"
|
||
msgstr "Một kiểm tra cho thấy một nhân vật"
|
||
|
||
#: website/public/showcase/ctf/index.html:380
|
||
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 ""
|
||
"Trình kiểm tra sắp xếp đầu vào trong lưới 6×6. Mặt nạ chọn ô nào đóng góp "
|
||
"vào tổng. Mã hóa nhỏ gọn của nó sử dụng số âm để bỏ qua các ô và số dương để"
|
||
" chọn chúng."
|
||
|
||
#. {ph0}: <a href="../../assets/figures/ctf-mask-equation.svg" >
|
||
#. {ph1}: </a >
|
||
#: website/public/showcase/ctf/index.html:400
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "The seventh check selects just one position. {ph0}Open figure{ph1}."
|
||
msgstr "Kiểm tra thứ bảy chỉ chọn một vị trí. {ph0}Hình mở{ph1}."
|
||
|
||
#: website/public/showcase/ctf/index.html:407
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Read the mask and its target from the binary"
|
||
msgstr "Đọc mặt nạ và mục tiêu của nó từ nhị phân"
|
||
|
||
#. {ph0}: <code>MOVSX</code>
|
||
#. {ph1}: <code>eb</code>
|
||
#. {ph2}: <code>code[21] = 55</code>
|
||
#. {ph3}: <code>7</code>
|
||
#: website/public/showcase/ctf/index.html:429
|
||
#, 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 ""
|
||
"Hướng dẫn {ph0} đọc các byte mặt nạ dưới dạng các giá trị đã ký. Đây là lý "
|
||
"do tại sao {ph1} có nghĩa là -21. Mục tiêu là một số nguyên cuối nhỏ. Cùng "
|
||
"với nhau, các byte này cho agent biết rằng {ph2}, vì vậy nhân vật đó là "
|
||
"{ph3}."
|
||
|
||
#: website/public/showcase/ctf/index.html:438
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "From instructions to a readable check"
|
||
msgstr "Từ hướng dẫn đến kiểm tra có thể đọc được"
|
||
|
||
#: website/public/showcase/ctf/index.html:439
|
||
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 ""
|
||
"Chọn một bước để kết Nối trình trợ giúp tổng hợp và hàm gọi của nó với cùng "
|
||
"một quy Tắc Trong C."
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/ctf/index.html:449
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}01{ph1} Start"
|
||
msgstr "{ph0}01{ph1} Bắt đầu"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/ctf/index.html:457
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}02{ph1} Select"
|
||
msgstr "{ph0}02{ph1} Chọn"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/ctf/index.html:465
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}03{ph1} Add"
|
||
msgstr "{ph0}03{ph1} Thêm"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/ctf/index.html:473
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}04{ph1} Advance"
|
||
msgstr "{ph0}04{ph1} Tiến lên"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/ctf/index.html:481
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}05{ph1} Compare"
|
||
msgstr "{ph0}05{ph1} So sánh"
|
||
|
||
#: website/public/showcase/ctf/index.html:493
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "REA · selected original instructions"
|
||
msgstr "REA * hướng dẫn ban đầu được chọn"
|
||
|
||
#: website/public/showcase/ctf/index.html:517
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Readable C · one-check summary"
|
||
msgstr "Có Thể đọc Được C * tóm tắt một lần kiểm tra"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>ECX</code>
|
||
#: website/public/showcase/ctf/index.html:546
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "{ph0}01 · Start at zero.{ph1} {ph2} holds the running sum."
|
||
msgstr "{ph0}01 * Bắt đầu từ số không · {ph1} {ph2} giữ số tiền đang chạy."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/showcase/ctf/index.html:550
|
||
#, 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 * Kiểm tra ô mặt nạ.{ph1} Một giá trị bằng không bỏ qua ký tự; một "
|
||
"giá trị khác không bao gồm nó."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/showcase/ctf/index.html:554
|
||
#, 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 * Thêm mã ký tự.{ph1} Số nguyên của đầu vào ở cùng độ lệch được thêm"
|
||
" vào tổng."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/showcase/ctf/index.html:558
|
||
#, 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 * Di chuyển đến ô tiếp theo.{ph1} Vòng lặp ban đầu tiến bốn byte "
|
||
"trên mỗi số nguyên và truy cập sáu hàng sáu ô."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>EAX</code>
|
||
#. {ph3}: <code>Incorrect!</code>
|
||
#: website/public/showcase/ctf/index.html:563
|
||
#, 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 * So sánh với mục tiêu được lưu trữ.{ph1} Người gọi nhận được số "
|
||
"tiền trong {ph2}. Một sự không phù hợp nhảy đến {ph3}."
|
||
|
||
#: website/public/showcase/ctf/index.html:570
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid ""
|
||
"The instructions come from the summing helper and its caller. The C is an "
|
||
"explanatory summary with descriptive names and a flattened 36-cell loop."
|
||
msgstr ""
|
||
"Các hướng dẫn đến từ người trợ giúp tổng hợp và hàm gọi của nó. C Là một bản"
|
||
" tóm tắt giải thích với tên mô tả và một vòng lặp 36 ô phẳng."
|
||
|
||
#: website/public/showcase/ctf/index.html:578
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Solve the 26 equations"
|
||
msgstr "Giải 26 phương trình"
|
||
|
||
#: website/public/showcase/ctf/index.html:579
|
||
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 ""
|
||
"Hầu hết các mặt nạ chọn một số ô. Ví dụ: kiểm tra đầu tiên thêm 16 mã ký tự "
|
||
"và yêu cầu tổng cộng 1441. Các lựa chọn chồng chéo cung cấp các phương trình"
|
||
" mà một tập Lệnh Python nhỏ có thể giải quyết cùng nhau."
|
||
|
||
#: website/public/showcase/ctf/index.html:587
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Python · solver excerpt"
|
||
msgstr "Python * giải đoạn trích"
|
||
|
||
#. {ph0}: <code>DUCTF{…}</code>
|
||
#: website/public/showcase/ctf/index.html:615
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid ""
|
||
"Z3 is a solver that finds values satisfying these equations. This excerpt "
|
||
"uses the extracted checks and assumes a {ph0} flag with letters, digits, "
|
||
"underscores and braces. The complete download includes all 26 masks and "
|
||
"targets."
|
||
msgstr ""
|
||
"Z3 là một bộ giải tìm các giá trị thỏa mãn các phương trình này. Đoạn trích "
|
||
"này sử dụng các kiểm tra được trích xuất và giả định một {ph0} cờ có chữ "
|
||
"cái, chữ số, dấu gạch dưới và dấu ngoặc nhọn. Quá trình tải xuống hoàn chỉnh"
|
||
" bao gồm tất cả 26 mặt nạ và mục tiêu."
|
||
|
||
#: website/public/showcase/ctf/index.html:621
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Download the complete solver"
|
||
msgstr "Tải xuống trình giải hoàn chỉnh"
|
||
|
||
#: website/public/showcase/ctf/index.html:627
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Check the answer with the original program"
|
||
msgstr "Kiểm tra câu trả lời với chương trình gốc"
|
||
|
||
#. {ph0}: <code>z</code>
|
||
#. {ph1}: <code>y</code>
|
||
#: website/public/showcase/ctf/index.html:628
|
||
#, 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 ' s quá trình chụp ghi lại các thực thi ban đầu chấp nhận cờ giải quyết."
|
||
" Thay đổi một ký tự đã chọn từ {ph0} để {ph1} tạo tổng đầu tiên 1440 thay vì"
|
||
" 1441 và chương trình từ chối nó."
|
||
|
||
#: website/public/showcase/ctf/index.html:638
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Input"
|
||
msgstr "Đầu vào"
|
||
|
||
#: website/public/showcase/ctf/index.html:639
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Observed output"
|
||
msgstr "Đầu ra quan sát"
|
||
|
||
#: website/public/showcase/ctf/index.html:640
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Exit code"
|
||
msgstr "Mã thoát"
|
||
|
||
#: website/public/showcase/ctf/index.html:645
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Solver's flag"
|
||
msgstr "Cờ của người giải"
|
||
|
||
#: website/public/showcase/ctf/index.html:650
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "One character changed"
|
||
msgstr "Một nhân vật đã thay đổi"
|
||
|
||
#: website/public/showcase/ctf/index.html:658
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Show the recovered flag and captured output"
|
||
msgstr "Hiển thị cờ đã khôi phục và đầu ra đã chụp"
|
||
|
||
#: website/public/showcase/ctf/index.html:661
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "REA · original program output"
|
||
msgstr "REA * đầu ra chương trình gốc"
|
||
|
||
#: website/public/showcase/ctf/index.html:662
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Copy flag"
|
||
msgstr "Sao chép cờ"
|
||
|
||
#: website/public/showcase/ctf/index.html:674
|
||
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 ""
|
||
"Giá trị được khôi phục cũng khớp với cờ trong siêu dữ liệu thử thách đã xuất"
|
||
" bản của ban tổ chức, được kiểm tra sau khi giải nhị phân."
|
||
|
||
#: website/public/showcase/ctf/index.html:680
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Source, target identity and analysis details"
|
||
msgstr "Nguồn, danh tính mục tiêu và chi tiết phân tích"
|
||
|
||
#: website/public/showcase/ctf/index.html:681
|
||
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 ""
|
||
"Phân tích mới và hai quá trình chụp vào ngày 8 tháng 10 năm 2026, sử dụng "
|
||
"REA 4.1.0 với Ghidra 12.1.4 TRÊN Linux x64. Nhị phân là MỘT ELF x86-64 bị "
|
||
"tước, 15.248 byte."
|
||
|
||
#: website/public/showcase/ctf/index.html:692
|
||
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 ""
|
||
"Các tham chiếu chuỗi, hàm và hằng số đã được kiểm tra trước khi đọc nguồn "
|
||
"hoặc giải pháp của ban tổ chức. Bộ giải Python và sơ đồ được xây dựng từ CÁC"
|
||
" KẾT quả 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:697
|
||
#, 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}So sánh với nguồn của ban tổ chức{ph1} · {ph2}Thách thức siêu dữ liệu "
|
||
"và cờ{ph3} · {ph4} REA ghi chú bằng chứng{ph5}"
|
||
|
||
#: website/public/showcase/ctf/index.html:717
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Try it yourself"
|
||
msgstr "Hãy thử nó cho mình"
|
||
|
||
#: website/public/showcase/ctf/index.html:718
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid ""
|
||
"Download the original challenge and the solver into one folder. Use the "
|
||
"prompt above to investigate with your agent, or run the included script."
|
||
msgstr ""
|
||
"Tải xuống thử thách ban đầu và người giải quyết vào một thư mục. Sử dụng lời"
|
||
" nhắc ở trên để điều tra với agent của bạn hoặc chạy tập lệnh đi kèm."
|
||
|
||
#: website/public/showcase/ctf/index.html:734
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Terminal · solve and run"
|
||
msgstr "Thiết bị đầu cuối * giải quyết và chạy"
|
||
|
||
#. {ph0}: <code>z3-solver</code>
|
||
#: website/public/showcase/ctf/index.html:751
|
||
#, 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 ""
|
||
"Tập lệnh in cờ ứng cử viên; dán nó theo lời nhắc của chương trình. Giải "
|
||
"quyết Nhu cầu Python và {ph0}. Chạy các nhu CẦU thực thi BAN ĐẦU Linux "
|
||
"x86-64."
|
||
|
||
#: website/public/showcase/ctf/index.html:756
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Set up REA with your coding agent"
|
||
msgstr "Thiết LẬP REA với agent mã hóa của bạn"
|
||
|
||
#: website/public/showcase/ctf/index.html:6
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "CTF Reverse Engineering: DownUnderCTF Flag Checker — REA"
|
||
msgstr "CTF Kỹ Thuật Đảo Ngược: DownUnderCTF Cờ Checker-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 ""
|
||
"SỬ dụng REA để giải Quyết DownUnderCTF của masked squares cờ checker. Tìm "
|
||
"các chức năng kiểm tra, trích xuất mặt nạ và so sánh cờ đã khôi phục với "
|
||
"chương trình gốc."
|
||
|
||
#: website/public/showcase/ctf/index.html:249
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/showcase/ctf/index.html:260
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "CTF flag-checker case study"
|
||
msgstr "CTF cờ - kiểm tra trường hợp nghiên cứu"
|
||
|
||
#: website/public/showcase/ctf/index.html:275
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Copy CTF example prompt"
|
||
msgstr "Sao CHÉP dấu nhắc VÍ DỤ CTF"
|
||
|
||
#: website/public/showcase/ctf/index.html:386
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "CTF mask equation; scroll horizontally on smaller screens"
|
||
msgstr "PHƯƠNG trình mặt NẠ CTF; cuộn theo chiều ngang trên màn hình nhỏ hơn"
|
||
|
||
#: website/public/showcase/ctf/index.html:392
|
||
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 ""
|
||
"Mặt nạ thứ bảy bỏ qua 21 ô, chọn vị trí 21, sau đó bỏ qua 14. Chỉ có tế bào "
|
||
"đó đóng góp vào tổng. Mã ký tự bắt buộc của nó là 55, có nghĩa là ký tự là "
|
||
"7."
|
||
|
||
#: website/public/showcase/ctf/index.html:444
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Follow the CTF check"
|
||
msgstr "Thực hiện theo kiểm TRA CTF"
|
||
|
||
#: website/public/showcase/ctf/index.html:494
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Copy CTF assembly"
|
||
msgstr "Sao chép ctf hội"
|
||
|
||
#: website/public/showcase/ctf/index.html:518
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Copy readable CTF check"
|
||
msgstr "Sao chép KIỂM tra CTF có thể đọc được"
|
||
|
||
#: website/public/showcase/ctf/index.html:588
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Copy CTF solver excerpt"
|
||
msgstr "Sao CHÉP CTF giải đoạn trích"
|
||
|
||
#: website/public/showcase/ctf/index.html:662
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Copy recovered flag"
|
||
msgstr "Sao chép cờ phục hồi"
|
||
|
||
#: website/public/showcase/ctf/index.html:735
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Copy CTF solver commands"
|
||
msgstr "Sao CHÉP LỆNH CTF solver"
|
||
|
||
#: website/public/showcase/ctf/index.html:777
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:103
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/showcase/dx-ball/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / DX-Ball"
|
||
msgstr "{ph0}Nhà{ph1} / {ph2}Giới thiệu{ph3} / DX-Ball"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:197
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Case study · DX-Ball 1.07"
|
||
msgstr "Nghiên cứu trường hợp * DX-Ball 1.07"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/showcase/dx-ball/index.html:198
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Rebuilding DX-Ball{ph0}from its executable."
|
||
msgstr "XÂY DỰNG LẠI DX-Ball {ph0}từ thực thi của nó."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:199
|
||
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 ""
|
||
"Mục tiêu là một phiên bản C có thể bảo trì của TRÒ chơi Windows NĂM 1996. "
|
||
"REA giúp các agent kiểm tra bản gốc, một chức năng tại một thời điểm."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:203
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Windows i386 · C · REA"
|
||
msgstr "Windows i386 * C * REA"
|
||
|
||
#. {ph0}: <a href="../../assets/figures/dx-ball-sound-pan-investigation.svg" >
|
||
#. {ph1}: </a >
|
||
#: website/public/showcase/dx-ball/index.html:220
|
||
#, 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 ""
|
||
"Một chức năng, từ thực thi đến Kiểm tra C. REA cung cấp các hướng dẫn, hàm "
|
||
"gọi và dữ liệu đọc; dự án tái thiết thực hiện và kiểm tra kết quả. {ph0}Hình"
|
||
" mở{ph1}"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:231
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "In this case study"
|
||
msgstr "Trong trường hợp này nghiên cứu"
|
||
|
||
#. {ph0}: <a href="#progress">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/dx-ball/index.html:233
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}The project{ph1}"
|
||
msgstr "{ph0}Dự án{ph1}"
|
||
|
||
#. {ph0}: <a href="#sound-pan">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/dx-ball/index.html:234
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}Sound pan{ph1}"
|
||
msgstr "{ph0}Âm thanh pan{ph1}"
|
||
|
||
#. {ph0}: <a href="#checking">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/dx-ball/index.html:235
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}Checking the result{ph1}"
|
||
msgstr "{ph0}Kiểm tra kết quả{ph1}"
|
||
|
||
#. {ph0}: <a href="#continue">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/dx-ball/index.html:236
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}Continue the work{ph1}"
|
||
msgstr "{ph0}Tiếp tục công việc{ph1}"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:244
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "maintained C functions"
|
||
msgstr "duy Trì Chức Năng C"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:248
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "comparisons with original code"
|
||
msgstr "so sánh với mã gốc"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:252
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "functions with matching compiled bytes"
|
||
msgstr "các hàm với các byte được biên dịch phù hợp"
|
||
|
||
#. {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:255
|
||
#, 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 ""
|
||
"Trạm kiểm soát dự án: 7 tháng 10 năm 2026. {ph0}Sổ cái tiến độ{ph1} · "
|
||
"{ph2}Bảo hiểm kiểm tra{ph3}"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:267
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "The project so far"
|
||
msgstr "Dự án cho đến nay"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:268
|
||
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 ""
|
||
"Các mã phục hồi bao gồm hội đồng quản trị và xử lý tài nguyên, gạch hits, "
|
||
"hình ảnh động, hạt và sản xuất tiền thưởng. Các bản dựng hiện tại cung cấp "
|
||
"các tiện ích kiểm tra và thư viện phân tích. Làm việc trên trò chơi có thể "
|
||
"chơi được tiếp tục với vật lý bóng và mái chèo, xử lý tăng sức mạnh và TÍCH "
|
||
"hợp Windows."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:278
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Finding the sound-pan calculation"
|
||
msgstr "Tìm tính toán vị trí âm thanh trái/phải"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:279
|
||
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 ""
|
||
"Khi một viên gạch bị trúng, vị trí nằm ngang của nó được chuyển đến mã âm "
|
||
"thanh. Cuộc điều tra cần thiết để khôi phục cách tọa độ màn hình đó trở "
|
||
"thành giá trị xoay trái/phải."
|
||
|
||
#. {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:286
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:290
|
||
#: website/public/showcase/dx-ball/index.html:481
|
||
#: website/public/showcase/dx-ball/index.html:502
|
||
#: website/public/showcase/dx-ball/index.html:573
|
||
#: website/public/showcase/dx-ball/index.html:727
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#. {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:299
|
||
#, 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}SỬ dụng REA để tìm CÁCH DX-Ball tính toán định vị âm thanh "
|
||
"nổi. Giải thích tính toán và hiển thị mã.{ph3}{ph4}{ph5}"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:307
|
||
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 ""
|
||
"Một lời nhắc ví dụ cho tác nhân mã hóa của bạn, với tệp thực thi cục bộ có "
|
||
"sẵn. Cuộc điều tra dưới đây cho THẤY CÁC truy vấn REA và bằng chứng đằng sau"
|
||
" câu trả lời."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:312
|
||
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 ""
|
||
"Tác nhân đã sử dụng REA để kiểm tra chức năng, theo dõi hàm gọi gạch của nó "
|
||
"và đọc các hằng số từ tệp thực thi. Những kết quả đó cung cấp đầu vào và số "
|
||
"học cần thiết để viết hàm C bên dưới."
|
||
|
||
#. {ph0}: <code>0x406400</code>
|
||
#. {ph1}: <code>FUN_00406400(void)</code>
|
||
#. {ph2}: <code>__ftol()</code>
|
||
#: website/public/showcase/dx-ball/index.html:318
|
||
#, 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 ""
|
||
"Kết quả chức năng đầu tiên cho {ph0} bao gồm khai báo mã giả {ph1} và gọi "
|
||
"{ph2}. Chế độ xem hướng dẫn của nó cho thấy một đầu vào ngăn xếp và các hoạt"
|
||
" động dấu phẩy động. Sự khác biệt đó đã cho agent một lý do cụ thể để tiếp "
|
||
"tục điều tra."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:326
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "The first decompiler view"
|
||
msgstr "Chế độ xem dịch ngược đầu tiên"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:339
|
||
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 ""
|
||
"Đầu ra hiển thị một cuộc gọi chuyển đổi. Đọc các hướng dẫn dưới đây cho thấy"
|
||
" đầu vào và tính toán cho ăn cuộc gọi đó."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:345
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Three questions answered through REA"
|
||
msgstr "Ba câu HỎI được trả lời THÔNG QUA REA"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:348
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Recover the missing input"
|
||
msgstr "Khôi phục đầu vào bị thiếu"
|
||
|
||
#. {ph0}: <code>[EBP+8]</code>
|
||
#: website/public/showcase/dx-ball/index.html:365
|
||
#, 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 ""
|
||
"Kết quả chức năng bao gồm các hướng dẫn cùng với mã giả và hàm gọi. Đây, "
|
||
"{ph0} hiển thị đầu vào số nguyên bị thiếu từ chế độ xem trình dịch ngược."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:372
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Follow the caller to understand the input"
|
||
msgstr "Theo dõi hàm gọi để hiểu đầu vào"
|
||
|
||
#. {ph0}: <code>tile_x</code>
|
||
#. {ph1}: <code>20 + 30 × tile_x</code>
|
||
#: website/public/showcase/dx-ball/index.html:389
|
||
#, 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 đã xác định hàm gọi này trong kết quả đầu tiên. Quy mô hướng dẫn trước "
|
||
"của nó {ph0} bằng 30; thêm 20 cho tọa độ màn hình của gạch, {ph1}."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:396
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Read the values behind the memory addresses"
|
||
msgstr "Đọc các giá trị đằng sau địa chỉ bộ nhớ"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:417
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid ""
|
||
"The returned bytes establish the two arithmetic constants and initial pan "
|
||
"scale. The agent now has the values needed for the C expression."
|
||
msgstr ""
|
||
"Các byte được trả về thiết lập hai hằng số học và thang đo pan ban đầu. Tác "
|
||
"nhân bây giờ có các giá trị cần thiết cho biểu Thức C."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:425
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "From REA's findings to C"
|
||
msgstr "TỪ NHỮNG phát Hiện CỦA REA Đến C"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:426
|
||
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 ""
|
||
"Làm theo năm bước dưới đây. Mỗi lựa chọn làm nổi bật các hướng dẫn ban đầu "
|
||
"và Các dòng C mà họ thông báo."
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/dx-ball/index.html:436
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}01{ph1} Input"
|
||
msgstr "{ph0}01{ph1} Đầu vào"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/dx-ball/index.html:444
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}02{ph1} Multiply"
|
||
msgstr "{ph0}02{ph1} Nhân"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/dx-ball/index.html:452
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}03{ph1} Subtract"
|
||
msgstr "{ph0}03{ph1} Trừ"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/dx-ball/index.html:460
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}04{ph1} Scale"
|
||
msgstr "{ph0}04{ph1} Quy mô"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/dx-ball/index.html:468
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}05{ph1} Return"
|
||
msgstr "{ph0}05{ph1} Quay trở lại"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:480
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Original x86 · excerpt"
|
||
msgstr "Bản gốc x86 * trích đoạn"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:501
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Reconstructed C"
|
||
msgstr "Tái Tạo C"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>[EBP+8]</code>
|
||
#. {ph3}: <code>FILD</code>
|
||
#. {ph4}: <code>x</code>
|
||
#: website/public/showcase/dx-ball/index.html:528
|
||
#, 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 * Đọc đầu vào.{ph1} Chế độ xem hướng dẫn TRONG REA kết quả chức năng"
|
||
" của đọc {ph2} và sử dụng {ph3} để tải số nguyên. Theo hàm gọi của NÓ thông "
|
||
"QUA REA thiết lập ý nghĩa tọa độ màn hình Của tham Số C {ph4}."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>FMUL</code>
|
||
#. {ph3}: <code>0x420068</code>
|
||
#. {ph4}: <code>read_bytes</code>
|
||
#. {ph5}: <code>1.5625</code>
|
||
#: website/public/showcase/dx-ball/index.html:535
|
||
#, 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 * Nhân với 1,5625 · {ph1} {ph2} đọc đôi tại {ph3}. Các byte được trả"
|
||
" về BỞI REA ' s {ph4} giải mã thành {ph5}; C sử dụng cùng một hằng số."
|
||
|
||
#. {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:541
|
||
#, 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 * Trừ 500.0 · {ph1} {ph2} đọc đôi tại {ph3}. REA ' s byte kết quả "
|
||
"giải mã để {ph4}, chuyển trung tâm tính toán sang tọa độ màn hình {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:547
|
||
#, 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 * Áp dụng thang đo được lưu trữ.{ph1} Thứ hai {ph2} đọc {ph3}. Toàn "
|
||
"cầu đó được đặt tên {ph4} trong nguồn duy trì. Đọc byte THỨ hai của REA "
|
||
"thiết lập giá trị ban đầu của nó là {ph5}."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>0x406430</code>
|
||
#. {ph3}: <code>__ftol</code>
|
||
#. {ph4}: <code>DxBallInt</code>
|
||
#: website/public/showcase/dx-ball/index.html:554
|
||
#, 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 * Trả về một số nguyên.{ph1} Cuộc gọi tại {ph2} đạt {ph3}, được xác "
|
||
"định TRONG REA 's callee kết quả. C đúc kết quả để {ph4}; so sánh "
|
||
"original-x86 kiểm tra giá trị trả về."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:563
|
||
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 ""
|
||
"Đoạn trích lắp ráp chọn các hướng dẫn đầu vào, số học và trả về. Danh sách "
|
||
"đầy đủ dưới đây cũng bao gồm các cửa hàng can thiệp và thiết lập chức năng "
|
||
"và dọn dẹp."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:569
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Full assembly and supporting evidence"
|
||
msgstr "Lắp ráp đầy đủ và bằng chứng hỗ trợ"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:572
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "REA result · 0x406400–0x40643e"
|
||
msgstr "REA kết quả · 0x406400-0x40643e"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:606
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "What the caller supplies"
|
||
msgstr "Những gì hàm gọi cung cấp"
|
||
|
||
#. {ph0}: <code>0x411f40</code>
|
||
#: website/public/showcase/dx-ball/index.html:607
|
||
#, 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 ""
|
||
"Chức năng gạch-hit tại {ph0} cân tọa độ gạch của nó thêm 30, thêm 20, sau đó"
|
||
" đẩy nó trước cuộc gọi:"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:621
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "What the data reads establish"
|
||
msgstr "Những gì dữ liệu đọc thiết lập"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:624
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "REA byte reads, decoded as little-endian doubles"
|
||
msgstr "REA byte đọc, giải mã như đôi endian ít"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:629
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Address"
|
||
msgstr "Địa chỉ"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:630
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Value"
|
||
msgstr "Giá trị"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:631
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Used for"
|
||
msgstr "Được sử dụng cho"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:638
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "First multiplication"
|
||
msgstr "Phép nhân đầu tiên"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:643
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Subtraction"
|
||
msgstr "Phép trừ"
|
||
|
||
#. {ph0}: <code>1.0</code>
|
||
#: website/public/showcase/dx-ball/index.html:647
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0} initially"
|
||
msgstr "{ph0} ban đầu"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:648
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Stored pan scale"
|
||
msgstr "Quy mô chảo được lưu trữ"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:653
|
||
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 ""
|
||
"Được ghi LẠI VỚI REA 4.1.0 cho mục tiêu DX-Ball 1.07 được ghim băm. Các ghi "
|
||
"chú điều tra liên quan giữ Lại Id Bằng chứng."
|
||
|
||
#. {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:658
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid ""
|
||
"{ph0}Maintained source{ph1} · {ph2}Investigation notes and evidence "
|
||
"references{ph3}"
|
||
msgstr ""
|
||
"{ph0}Nguồn duy trì{ph1} · {ph2}Ghi chú điều tra và tài liệu tham khảo bằng "
|
||
"chứng{ph3}"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:672
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Checking the recovered function"
|
||
msgstr "Kiểm tra chức năng phục hồi"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:673
|
||
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 ""
|
||
"Hàm được khôi phục vượt qua hai lần kiểm tra: các giá trị trả về của nó khớp"
|
||
" với bản gốc và các byte được biên dịch của nó khớp với tệp thực thi."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:679
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "3,205 behavior cases"
|
||
msgstr "3.205 trường hợp hành vi"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:680
|
||
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 ""
|
||
"Các thử nghiệm thực thi hàm x86 ban đầu và so sánh giá trị trả về của nó với"
|
||
" c. Chúng bao phủ mọi vị trí nguyên từ 0 đến 640 ở năm thang pan: 0, 0,5, 1,"
|
||
" 20 và -1."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:688
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "63 matching bytes"
|
||
msgstr "63 byte phù hợp"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:689
|
||
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 ""
|
||
"Hàm C được biên dịch với chuỗi CÔNG cụ vc4.0 được ghim. Phát lại trình biên "
|
||
"dịch khớp với chức năng hoàn chỉnh sau khi áp dụng các lần di dời đã xem xét"
|
||
" và kiểm tra các hằng số được tham chiếu."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:697
|
||
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 ""
|
||
"Ở tỷ lệ 1, phép tính được phục hồi trả về -500 ở cạnh trái, 0 ở giữa và 500 "
|
||
"ở cạnh phải. Phần tiếp theo của công việc âm thanh là tích hợp giá trị đó "
|
||
"với phần phụ trợ âm thanh của trò chơi."
|
||
|
||
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-
|
||
#. ball/blob/a55dca27ec0a07018c1b2c95ae2be027f7d8c3c4/docs/BUILD_MATCHING.md"
|
||
#. >
|
||
#. {ph1}: </a >
|
||
#: website/public/showcase/dx-ball/index.html:703
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "{ph0}Read the compiler replay details{ph1}"
|
||
msgstr "{ph0}Đọc chi tiết phát lại trình biên dịch{ph1}"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:712
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Continue the investigation"
|
||
msgstr "Tiếp tục điều tra"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:713
|
||
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 ""
|
||
"Cách tiếp cận tương tự đang được sử dụng để cập nhật hạt, hàng đợi nổ và tạo"
|
||
" tiền thưởng: kiểm tra các chức năng có liên quan, khôi phục trạng thái và "
|
||
"phụ thuộc của chúng, sau đó so sánh việc triển khai với bản gốc."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:719
|
||
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 ""
|
||
"Để tự kiểm tra chức năng sound-pan, hãy làm theo HƯỚNG dẫn thiết lập CỦA DỰ "
|
||
"án DX-Ball và cung cấp mục tiêu ban đầu phù hợp. Sau đó chạy:"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:726
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "In the DX-Ball checkout"
|
||
msgstr "TRONG thanh TOÁN DX-Ball"
|
||
|
||
#. {ph0}: <a href="https://github.com/N0zoM1z0/dx-ball" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span>
|
||
#. {ph3}: </span>
|
||
#: website/public/showcase/dx-ball/index.html:740
|
||
#, 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} KHO LƯU TRỮ DX-Ball{ph1}{ph2}Nguồn hiện tại, tiến độ và thiết lập cục "
|
||
"bộ.{ph3}"
|
||
|
||
#. {ph0}: <a href="../../guides/native/">
|
||
#. {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}REA analysis workflow{ph1}{ph2}Follow the calculation, then use the "
|
||
"same approach with your own binary.{ph3}"
|
||
msgstr ""
|
||
"{ph0} QUY trình phân tích REA{ph1}{ph2}Thực hiện theo các tính toán, sau đó "
|
||
"sử dụng cách tiếp cận tương tự với nhị phân của riêng bạn.{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:752
|
||
#, 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}Hạt và sản xuất tiền thưởng{ph1}{ph2}Một cuộc điều tra lớn hơn về trạng"
|
||
" thái, hàng đợi và pixel viết.{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 Kỹ Thuật Đảo Ngược: Âm Thanh Panning-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 ""
|
||
"Thực hiện theo CẤU TRÚC LẠI DX-Ball từ phân tích nhị phân thông qua REA để "
|
||
"duy trì Các bài kiểm tra C, original-x86 và các byte hàm được biên dịch phù "
|
||
"hợp."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:206
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid ""
|
||
"DX-Ball sound-pan investigation; scroll horizontally on smaller screens"
|
||
msgstr ""
|
||
"DX-Ball sound-pan điều tra; di chuyển theo chiều ngang trên màn hình nhỏ hơn"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:212
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid ""
|
||
"DXBALL.EXE function 0x00406400 is inspected with REA. A brick-hit caller "
|
||
"supplies 20 plus 30 times tile_x. Instructions load x, multiply by 1.5625, "
|
||
"subtract 500.0, apply pan_scale and return an integer. The maintained C is "
|
||
"checked independently against the original x86 in 3,205 cases and by VC4.0 "
|
||
"compiler replay matching 63 bytes."
|
||
msgstr ""
|
||
"DXBALL.EXE chức năng 0x00406400 được kiểm tra VỚI REA . Một hàm gọi gạch-hit"
|
||
" cung cấp 20 cộng với 30 lần tile_x. Hướng dẫn tải x, nhân với 1.5625, trừ "
|
||
"500.0, áp dụng pan_scale và trả về một số nguyên. C được duy trì được kiểm "
|
||
"tra độc lập so với x86 ban đầu trong 3.205 trường hợp và bằng cách phát lại "
|
||
"trình biên dịch vc4.0 khớp với 63 byte."
|
||
|
||
#: website/public/showcase/dx-ball/index.html:230
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:239
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "DX-Ball reconstruction case study"
|
||
msgstr "Nghiên cứu trường HỢP tái THIẾT DX-Ball"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:290
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Copy example prompt"
|
||
msgstr "Sao chép ví dụ dấu nhắc"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:431
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Follow the sound-pan calculation"
|
||
msgstr "Thực hiện theo các tính toán của trái/phải vị trí âm thanh"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:481
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Copy original assembly excerpt"
|
||
msgstr "Sao chép đoạn trích lắp ráp ban đầu"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:502
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Copy sound-pan function"
|
||
msgstr "Sao chép chức năng sound-pan"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:573
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Copy complete sound-pan assembly"
|
||
msgstr "Sao chép hoàn chỉnh âm thanh-pan lắp ráp"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:727
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Copy DX-Ball analysis command"
|
||
msgstr "Sao CHÉP lệnh PHÂN tích DX-Ball"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:785
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/showcase/index.html:103
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "{ph0}Home{ph1} / Showcases"
|
||
msgstr "{ph0}Nhà{ph1} / Trưng bày"
|
||
|
||
#: website/public/showcase/index.html:195
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "REA case studies."
|
||
msgstr "REA nghiên cứu trường hợp."
|
||
|
||
#: website/public/showcase/index.html:196
|
||
msgctxt "page:showcase/index.html"
|
||
msgid ""
|
||
"Android, games, Electron and a CTF challenge, with code, figures and checked"
|
||
" results."
|
||
msgstr ""
|
||
"Android, trò chơi, Electron và MỘT THÁCH thức CTF, với mã, số liệu và kết "
|
||
"quả kiểm tra."
|
||
|
||
#: website/public/showcase/index.html:203
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Android · APK analysis"
|
||
msgstr "Android * PHÂN tích APK"
|
||
|
||
#: website/public/showcase/index.html:205
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "How an authenticator generates a login code"
|
||
msgstr "Cách trình xác thực tạo mã đăng nhập"
|
||
|
||
#: website/public/showcase/index.html:206
|
||
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 ""
|
||
"Tìm Aegis ' s tính mã sáu chữ số TRONG APK đã phát hành . Theo dõi các "
|
||
"phương thức tạo BẰNG REA , sau đó di chuyển đồng hồ demo để xem lý do tại "
|
||
"sao mã thay đổi sau mỗi 30 giây."
|
||
|
||
#: website/public/showcase/index.html:217
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Read the Android case study"
|
||
msgstr "Đọc nghiên Cứu điển Hình Android"
|
||
|
||
#: website/public/showcase/index.html:221
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "CTF · Native analysis"
|
||
msgstr "CTF * Phân tích các chương trình mã máy"
|
||
|
||
#: website/public/showcase/index.html:223
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Solve a CTF flag checker"
|
||
msgstr "Giải QUYẾT MỘT TRÌNH kiểm tra cờ CTF"
|
||
|
||
#: website/public/showcase/index.html:224
|
||
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 ""
|
||
"Kiểm tra một Thách Thức DownUnderCTF dễ DÀNG VỚI REA . Tìm các hàm kiểm tra "
|
||
"của nó, biến mặt nạ và tổng thành phương trình, sau đó xác minh cờ đã giải "
|
||
"với chương trình gốc."
|
||
|
||
#: website/public/showcase/index.html:235
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Read the CTF case study"
|
||
msgstr "Đọc nghiên CỨU trường hợp CTF"
|
||
|
||
#: website/public/showcase/index.html:239
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Native · Reconstruction"
|
||
msgstr "Bản Địa · Tái Thiết"
|
||
|
||
#: website/public/showcase/index.html:241
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "DX-Ball's sound-pan calculation"
|
||
msgstr "DX-Ball ' s tính toán vị trí âm thanh trái/phải"
|
||
|
||
#: website/public/showcase/index.html:242
|
||
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 ""
|
||
"Khôi phục tính toán vị trí âm thanh trái/phải từ TRÒ chơi Windows năm 1996."
|
||
" REA ' s hướng dẫn, tham chiếu hàm gọi và hằng số dẫn đến một hàm c nhỏ, "
|
||
"được kiểm tra đối với hành vi ban đầu và tất cả 63 byte được biên dịch."
|
||
|
||
#: website/public/showcase/index.html:254
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Read the DX-Ball case study"
|
||
msgstr "Đọc nghiên CỨU điển HÌNH DX-Ball"
|
||
|
||
#: website/public/showcase/index.html:258
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Electron · Feature tracing"
|
||
msgstr "Electron * Tính năng truy tìm"
|
||
|
||
#: website/public/showcase/index.html:260
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "How Notion copies text and HTML"
|
||
msgstr "Notion sao chép văn bản và HTML như thế nào"
|
||
|
||
#: website/public/showcase/index.html:261
|
||
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 ""
|
||
"Theo DÕI API hướng trang thông qua Notion ' S JavaScript đóng gói . Thực "
|
||
"HIỆN THEO CÁC TRÌNH bao BỌC IPC của NÓ vào khay nhớ tạm của hệ thống, sau đó"
|
||
" xem cách một điểm đánh dấu HTML nhỏ giữ dữ liệu khối phong phú được kết nối"
|
||
" với một bản sao."
|
||
|
||
#: website/public/showcase/index.html:272
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Read the Notion case study"
|
||
msgstr "Đọc nghiên CỨU điển HÌNH Notion"
|
||
|
||
#: website/public/showcase/index.html:276
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "PC-98 DOS · Reconstruction"
|
||
msgstr "PC-98 DOS * Tái thiết"
|
||
|
||
#: website/public/showcase/index.html:278
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "How TH04 aims a ring of bullets"
|
||
msgstr "TH04 nhắm vào một viên đạn như thế nào"
|
||
|
||
#: website/public/showcase/index.html:279
|
||
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 ""
|
||
"Kiểm tra trình trợ giúp góc 16 bit ban đầu VỚI REA . Khớp các phép toán "
|
||
"nhân, chia và phối hợp của nó với C++ có thể đọc được, sau đó xem cách chúng"
|
||
" tạo ra một vòng nhắm vào người chơi."
|
||
|
||
#: website/public/showcase/index.html:290
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Read the TH04 case study"
|
||
msgstr "Đọc nghiên CỨU điển HÌNH TH04"
|
||
|
||
#: website/public/showcase/index.html:295
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Step-by-step guides"
|
||
msgstr "Hướng dẫn từng bước"
|
||
|
||
#: website/public/showcase/index.html:296
|
||
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 ""
|
||
"Các hướng dẫn đi qua tính toán gốc, xuất Electron và yêu cầu trình duyệt. "
|
||
"Mỗi bắt đầu với một dấu nhắc và một mục tiêu cụ thể."
|
||
|
||
#: website/public/showcase/index.html:300
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Read the guides"
|
||
msgstr "Đọc hướng dẫn"
|
||
|
||
#: website/public/showcase/index.html:6
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Reverse Engineering Case Studies — REA"
|
||
msgstr "Nghiên cứu Trường hợp kỹ thuật đảo ngược-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 ""
|
||
"Theo DÕI CÁC cuộc điều tra REA thông qua mã, số liệu và bản demo: Trình xác "
|
||
"thực Android, DX-Ball , Notion , TH04 và Trình kiểm tra cờ DownUnderCTF."
|
||
|
||
#: website/public/showcase/index.html:317
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/showcase/notion/index.html:103
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/showcase/notion/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / Notion"
|
||
msgstr "{ph0}Nhà{ph1} / {ph2}Giới thiệu{ph3} / Notion"
|
||
|
||
#: website/public/showcase/notion/index.html:197
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Case study · Electron"
|
||
msgstr "Nghiên cứu trường hợp * Electron"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/showcase/notion/index.html:198
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "How Notion copies{ph0}text and HTML."
|
||
msgstr "Notion sao CHÉP như THẾ NÀO{ph0}văn bản VÀ HTML."
|
||
|
||
#: website/public/showcase/notion/index.html:199
|
||
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 ""
|
||
"Theo dõi cuộc gọi clipboard TỪ API trang CỦA Notion, thông qua quá trình tải"
|
||
" trước và quy trình chính, ĐẾN TRÌNH ghi clipboard CỦA Electron."
|
||
|
||
#: website/public/showcase/notion/index.html:203
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Notion Desktop 7.6.1 · JavaScript · REA"
|
||
msgstr "Notion Máy tính để bàn 7.6.1 * JavaScript * REA"
|
||
|
||
#: website/public/showcase/notion/index.html:207
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "The bridge inside Notion's desktop package"
|
||
msgstr "Cây cầu BÊN TRONG GÓI máy TÍNH ĐỂ BÀN CỦA 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:209
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid ""
|
||
"{ph0}01 · Page-facing API{ph1} {ph2}{ph3}{ph4} {ph5}The preload exposes a "
|
||
"callable method.{ph6}"
|
||
msgstr ""
|
||
"{ph0}01 * Api Hướng Trang{ph1} {ph2}{ph3}{ph4} {ph5}Tải trước hiển thị một "
|
||
"phương thức có thể gọi được.{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:216
|
||
#, 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 * tải trước wrapper{ph1} {ph2}{ph3}{ph4} {ph5}Trình bao bọc gửi kênh"
|
||
" và đối số.{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:223
|
||
#, 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 · Xử lý quy Trình Chính{ph1} {ph2}{ph3}{ph4} {ph5}Người nhận kiểm "
|
||
"tra trang nào đã gửi nó.{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:230
|
||
#, 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 * Hệ thống clipboard{ph1} {ph2}{ph3}{ph4} {ph5} Electron viết văn "
|
||
"bản và HTML được cung cấp.{ph6}"
|
||
|
||
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
|
||
#: website/public/showcase/notion/index.html:238
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "One channel joins the two sides: {ph0}"
|
||
msgstr "Một kênh nối hai bên: {ph0}"
|
||
|
||
#: website/public/showcase/notion/index.html:242
|
||
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 ""
|
||
"Mã đóng gói sử dụng cùng một kênh trong quá trình tải trước và chính. Giải "
|
||
"quyết các trình bao bọc cho thấy CÁC cuộc gọi Electron đằng sau những tên "
|
||
"đó."
|
||
|
||
#: website/public/showcase/notion/index.html:251
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "In this case study"
|
||
msgstr "Trong trường hợp này nghiên cứu"
|
||
|
||
#. {ph0}: <a href="#clipboard">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/notion/index.html:253
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "{ph0}Follow the clipboard bridge{ph1}"
|
||
msgstr "{ph0}Theo cầu clipboard{ph1}"
|
||
|
||
#. {ph0}: <a href="#rich-clipboard">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/notion/index.html:254
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "{ph0}Keeping a block's structure{ph1}"
|
||
msgstr "{ph0}Giữ cấu trúc của một khối{ph1}"
|
||
|
||
#. {ph0}: <a href="#continue">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/notion/index.html:255
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "{ph0}More examples and sources{ph1}"
|
||
msgstr "{ph0}Thêm ví dụ và nguồn{ph1}"
|
||
|
||
#: website/public/showcase/notion/index.html:260
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Where does the copy operation go?"
|
||
msgstr "Thao tác sao chép đi đâu?"
|
||
|
||
#. {ph0}: <code>clipboard.write</code>
|
||
#: website/public/showcase/notion/index.html:261
|
||
#, 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 ""
|
||
"Trang thấy một phương thức được gọi là {ph0}. Việc triển khai nó trong tải "
|
||
"trước là một trình bao bọc. Câu hỏi hữu ích là những gì trình bao bọc đó gửi"
|
||
" và mã nào nhận được nó."
|
||
|
||
#. {ph0}: <span class="terminal-dots" aria-hidden="true" >
|
||
#. {ph1}: <i>
|
||
#. {ph2}: </i>
|
||
#. {ph3}: <i>
|
||
#. {ph4}: </i>
|
||
#. {ph5}: <i>
|
||
#. {ph6}: </i>
|
||
#. {ph7}: </span >
|
||
#: website/public/showcase/notion/index.html:268
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/showcase/notion/index.html:272
|
||
#: website/public/showcase/notion/index.html:345
|
||
#: website/public/showcase/notion/index.html:374
|
||
#: website/public/showcase/notion/index.html:405
|
||
#: website/public/showcase/notion/index.html:433
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#. {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:281
|
||
#, 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}SỬ DỤNG REA để theo dõi CÁCH Notion sao chép văn bản và HTML"
|
||
" vào bảng tạm hệ thống. Hiển thị mã ở mỗi bước.{ph3}{ph4}{ph5}"
|
||
|
||
#: website/public/showcase/notion/index.html:289
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid ""
|
||
"An example prompt with Notion's local application package available to your "
|
||
"coding agent."
|
||
msgstr ""
|
||
"Một lời nhắc ví dụ VỚI GÓI ứng dụng CỤC BỘ CỦA Notion có sẵn cho agent mã "
|
||
"hóa của bạn."
|
||
|
||
#: website/public/showcase/notion/index.html:294
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "REA finds where to start reading"
|
||
msgstr "REA tìm nơi bắt đầu đọc"
|
||
|
||
#: website/public/showcase/notion/index.html:295
|
||
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 ""
|
||
"Phân tích tab tải trước VỚI REA định vị API tiếp xúc với trang và cuộc gọi "
|
||
"gửi yêu cầu IPC. Cả hai phát hiện đều đi kèm với phạm vi nguồn trong gói thu"
|
||
" nhỏ:"
|
||
|
||
#: website/public/showcase/notion/index.html:301
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "REA findings → two places to open"
|
||
msgstr "REA phát hiện → hai nơi để mở"
|
||
|
||
#. {ph0}: <code>analyze_javascript_application</code>
|
||
#: website/public/showcase/notion/index.html:316
|
||
#, 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 ""
|
||
"Các lĩnh vực được lựa chọn từ một tươi {ph0} kết quả TRÊN Notion 's tab tải "
|
||
"trước, ghi LẠI VỚI REA 4.1.0. Các vị trí sử dụng dòng của gói ban đầu và cột"
|
||
" không dựa trên."
|
||
|
||
#. {ph0}: <code>invokerInMain</code>
|
||
#. {ph1}: <code class="notion-channel">notion:clipboard:write</code>
|
||
#: website/public/showcase/notion/index.html:323
|
||
#, 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 ""
|
||
"Tác nhân mở các vị trí đó, tìm thành viên clipboard trong API được lắp ráp "
|
||
"và đọc {ph0}. Nguồn cung cấp trang web cuộc gọi của nó {ph1}. Tên đó cung "
|
||
"cấp cho tác nhân một cái gì đó chính xác để tìm kiếm trong gói chính. Bốn "
|
||
"đoạn trích dưới đây cho thấy tuyến đường mà nó kết nối."
|
||
|
||
#: website/public/showcase/notion/index.html:332
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Four short pieces of code"
|
||
msgstr "Bốn đoạn mã ngắn"
|
||
|
||
#: website/public/showcase/notion/index.html:333
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid ""
|
||
"Simplified from the packaged JavaScript, with readable variable names. "
|
||
"Unrelated members are omitted."
|
||
msgstr ""
|
||
"Đơn giản hóa TỪ JavaScript đóng gói , với tên biến có thể đọc được. Các "
|
||
"thành viên không liên quan bị bỏ qua."
|
||
|
||
#: website/public/showcase/notion/index.html:339
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Start at the API exposed to the page"
|
||
msgstr "Bắt đầu TẠI API tiếp xúc với trang"
|
||
|
||
#. {ph0}: <code>invokerInMain</code>
|
||
#: website/public/showcase/notion/index.html:361
|
||
#, 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 ""
|
||
"Thành viên này cung cấp tên kênh. Việc thực hiện {ph0} cho chúng tôi biết "
|
||
"cách yêu cầu rời khỏi quy trình của trang."
|
||
|
||
#: website/public/showcase/notion/index.html:368
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Resolve the preload's wrapper"
|
||
msgstr "Giải quyết trình bao bọc tải trước"
|
||
|
||
#. {ph0}: <code class="notion-channel">notion:clipboard:write</code>
|
||
#: website/public/showcase/notion/index.html:391
|
||
#, 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 ""
|
||
"Hàm trả về chuyển tiếp các đối số thông qua IPC YÊU cầu và phản hồi CỦA "
|
||
"Electron. Bây giờ chúng ta có thể tìm kiếm {ph0} về phía chính-quá trình."
|
||
|
||
#: website/public/showcase/notion/index.html:399
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Check how the receiver is registered"
|
||
msgstr "Kiểm tra cách người nhận được đăng ký"
|
||
|
||
#. {ph0}: <code>addListener</code>
|
||
#. {ph1}: <code>ipcMain.handle</code>
|
||
#: website/public/showcase/notion/index.html:420
|
||
#, 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 ""
|
||
"Quá trình chính sử dụng một trình bao bọc khác. Của nó {ph0} phương pháp "
|
||
"đăng ký một {ph1} người nhận cho kênh đó."
|
||
|
||
#: website/public/showcase/notion/index.html:427
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Find the write and its sender check"
|
||
msgstr "Tìm ghi và kiểm tra người gửi của nó"
|
||
|
||
#: website/public/showcase/notion/index.html:450
|
||
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 ""
|
||
"Đây là điểm đến. Sau khi kiểm tra người gửi, trình xử lý chuyển dữ liệu được"
|
||
" cung cấp cho API clipboard CỦA Electron. Kênh và hai trình bao bọc được "
|
||
"giải quyết kết nối phương thức tiếp xúc với cuộc gọi này."
|
||
|
||
#: website/public/showcase/notion/index.html:461
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "How does a copied block keep its structure?"
|
||
msgstr "Làm thế nào để một khối được sao chép giữ cấu trúc của nó?"
|
||
|
||
#. {ph0}: <code>electronApi.clipboard.write</code>
|
||
#: website/public/showcase/notion/index.html:462
|
||
#, 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 ' s web editor gửi văn bản VÀ HTML thông qua {ph0}. Nó giữ dữ liệu "
|
||
"khối cục bộ và ĐẶT ID vào HTML đã sao chép để kết nối chúng."
|
||
|
||
#: website/public/showcase/notion/index.html:468
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "HTML links to saved block data"
|
||
msgstr "LIÊN KẾT HTML để lưu dữ liệu khối"
|
||
|
||
#: website/public/showcase/notion/index.html:492
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Read the HTML ID"
|
||
msgstr "Đọc ID HTML"
|
||
|
||
#: website/public/showcase/notion/index.html:493
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Find the same local ID"
|
||
msgstr "Tìm CÙNG MỘT ID cục BỘ"
|
||
|
||
#: website/public/showcase/notion/index.html:494
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Restore Notion block data"
|
||
msgstr "Khôi phục DỮ LIỆU KHỐI Notion"
|
||
|
||
#: website/public/showcase/notion/index.html:496
|
||
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 ""
|
||
"Văn BẢN minh họa VÀ ID. Kiểm tra mô-đun được ghi sẽ khôi phục dữ liệu khối "
|
||
"khi id khớp; một mục cũ chỉ trả về văn bản và HTML."
|
||
|
||
#: website/public/showcase/notion/index.html:502
|
||
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 ""
|
||
"Khi dán, Notion tìm ID HTML và kiểm tra NÓ với bản sao đã lưu. Id phù hợp "
|
||
"khôi phục dữ liệu khối."
|
||
|
||
#: website/public/showcase/notion/index.html:506
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Clipboard format recorded from web assets cached on July 13, 2026."
|
||
msgstr ""
|
||
"Định dạng Clipboard được ghi lại từ tài sản web được lưu trong bộ nhớ cache "
|
||
"vào ngày 13 tháng 7 năm 2026."
|
||
|
||
#: website/public/showcase/notion/index.html:512
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "More examples and sources"
|
||
msgstr "Thêm ví dụ và nguồn"
|
||
|
||
#: website/public/showcase/notion/index.html:514
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Another example: Markdown tables"
|
||
msgstr "Một ví dụ khác: Bảng Markdown"
|
||
|
||
#: website/public/showcase/notion/index.html:515
|
||
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 phân Tích Markdown thành dữ liệu khối. Ví dụ này cho thấy cách một "
|
||
"bảng trở thành tiêu đề và các hàng dữ liệu."
|
||
|
||
#: website/public/showcase/notion/index.html:520
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "A table through Notion's Markdown parser"
|
||
msgstr "Một bảng thông QUA TRÌNH phân tích Cú pháp Markdown CỦA Notion"
|
||
|
||
#: website/public/showcase/notion/index.html:541
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid ""
|
||
"Recorded output from an extracted Markdown parser. The table becomes rows "
|
||
"and cells."
|
||
msgstr ""
|
||
"Ghi lại đầu ra từ Một Trình phân tích Cú pháp Markdown trích xuất. Bảng trở "
|
||
"thành hàng và ô."
|
||
|
||
#: website/public/showcase/notion/index.html:548
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Another path: the offline SQLite connection"
|
||
msgstr "Một đường dẫn khác: kết nối sqlite ngoại tuyến"
|
||
|
||
#. {ph0}: <code>getSqliteMeta</code>
|
||
#: website/public/showcase/notion/index.html:549
|
||
#, 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 ""
|
||
"YÊU CẦU trình kết xuất CỦA Notion {ph0} THÔNG QUA IPC. Quá trình chính tạo "
|
||
"kênh tin nhắn và cung cấp một cổng cho trình kết xuất và cổng kia cho quy "
|
||
"trình tiện ích SQLite. Các lô tuyên bố tiếp theo và kết quả đi qua cổng đó."
|
||
|
||
#: website/public/showcase/notion/index.html:555
|
||
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 ""
|
||
"Sau đó, handoff giải thích nơi công việc cơ sở dữ liệu chạy và tại sao chỉ "
|
||
"truy tìm yêu cầu IPC ban đầu bỏ lỡ cuộc trò chuyện sau này."
|
||
|
||
#: website/public/showcase/notion/index.html:562
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Sources and how to read the excerpts"
|
||
msgstr "Nguồn và cách đọc các đoạn trích"
|
||
|
||
#. {ph0}: <code>app.asar</code>
|
||
#. {ph1}: <code>main/index.js</code>
|
||
#. {ph2}: <code>isNotionWebContents</code>
|
||
#: website/public/showcase/notion/index.html:563
|
||
#, 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 ""
|
||
"Cầu clipboard đến TỪ Notion Desktop 7.6.1 {ph0}: tab tải trước và {ph1}. Các"
|
||
" đoạn trích mở rộng tên biến được thu nhỏ và bỏ qua mã không liên quan; "
|
||
"trình trợ giúp kiểm tra người gửi được hiển thị với phần bên dưới của nó "
|
||
"{ph2} gọi."
|
||
|
||
#. {ph0}: <code>747001</code>
|
||
#. {ph1}: <code>58169</code>
|
||
#. {ph2}: <code>736810</code>
|
||
#. {ph3}: <code>422457</code>
|
||
#: website/public/showcase/notion/index.html:571
|
||
#, 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 ""
|
||
"Các ví dụ về clipboard và Markdown ảo đến từ các tài sản web được lưu trong "
|
||
"bộ nhớ cache vào ngày 13 tháng 7 năm 2026, bao gồm các mô-đun {ph0}, {ph1}, "
|
||
"{ph2} và {ph3}. Những tài sản đó có phiên bản riêng. Các đầu dò đã lưu thực "
|
||
"thi các mô-đun được trích xuất và các dây nịt nhỏ; đầu ra của chúng mô tả "
|
||
"các đầu dò đó thay vì một phiên GIAO diện người dùng máy tính để bàn bị bắt."
|
||
|
||
#: website/public/showcase/notion/index.html:579
|
||
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 ""
|
||
"KẾT quả REA được hiển thị ở đây là phân tích tập trung của tab đã lưu tải "
|
||
"trước, được ghi lại với gói REA 4.1.0 đã xuất bản. Nó định vị API và gọi "
|
||
"hoạt động. Thành viên clipboard và bộ thu phù hợp được kết nối bằng cách đọc"
|
||
" các triển khai trình bao bọc của chúng trong gói."
|
||
|
||
#. {ph0}: <code>422457</code>
|
||
#: website/public/showcase/notion/index.html:586
|
||
#, 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 ""
|
||
"Ví Dụ Markdown sử dụng mô đun trình phân tích cú pháp {ph0}. Các bài kiểm "
|
||
"tra mô-đun đã lưu cho thấy cả bộ lọc trang và trò chuyện đều giữ nguyên bảng"
|
||
" này. Các trình phân tích cú pháp dán/nhập, Đánh dấu Có cấu trúc và ai/trò "
|
||
"chuyện có các điểm nhập và định dạng trung gian riêng biệt."
|
||
|
||
#. {ph0}: <a href="../../guides/javascript/" >
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span >
|
||
#. {ph3}: </span >
|
||
#: website/public/showcase/notion/index.html:594
|
||
#, 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 hướng dẫn ứng DỤNG{ph1}{ph2}Thực hiện theo tính năng xuất "
|
||
"của ỨNG dụng Electron nhỏ.{ph3}"
|
||
|
||
#. {ph0}: <a href="../dx-ball/">
|
||
#. {ph1}: </a >
|
||
#. {ph2}: <span >
|
||
#. {ph3}: </span >
|
||
#: website/public/showcase/notion/index.html:601
|
||
#, 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} TÁI THIẾT DX-Ball{ph1}{ph2}Thực hiện theo hướng dẫn bản địa đến một "
|
||
"chức năng C kiểm tra.{ph3}"
|
||
|
||
#: website/public/showcase/notion/index.html:6
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Notion Electron Reverse Engineering: Clipboard — REA"
|
||
msgstr "Notion Electron Kỹ Thuật Đảo Ngược: Clipboard-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 ""
|
||
"Thực HIỆN THEO Notion ' S CLIPBOARD API thông QUA Electron 's preload, IPC "
|
||
"wrappers và quy trình chính, với đoạn trích mã ngắn và xem xét định dạng "
|
||
"clipboard phong phú của NÓ."
|
||
|
||
#: website/public/showcase/notion/index.html:250
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/showcase/notion/index.html:258
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Notion Electron case study"
|
||
msgstr "Notion Electron trường hợp nghiên cứu"
|
||
|
||
#: website/public/showcase/notion/index.html:272
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Copy Notion analysis prompt"
|
||
msgstr "Sao CHÉP DẤU NHẮC PHÂN TÍCH Notion"
|
||
|
||
#: website/public/showcase/notion/index.html:345
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Copy Notion preload excerpt"
|
||
msgstr "Sao CHÉP Notion tải trước đoạn trích"
|
||
|
||
#: website/public/showcase/notion/index.html:374
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Copy Notion invoke wrapper excerpt"
|
||
msgstr "Sao CHÉP Notion gọi wrapper đoạn trích"
|
||
|
||
#: website/public/showcase/notion/index.html:405
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Copy Notion handler wrapper excerpt"
|
||
msgstr "Sao CHÉP Notion handler wrapper đoạn trích"
|
||
|
||
#: website/public/showcase/notion/index.html:433
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Copy Notion clipboard receiver excerpt"
|
||
msgstr "Sao CHÉP Notion clipboard receiver đoạn trích"
|
||
|
||
#: website/public/showcase/notion/index.html:488
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Restoring rich clipboard data on paste"
|
||
msgstr "Khôi phục dữ liệu clipboard phong phú trên dán"
|
||
|
||
#: website/public/showcase/notion/index.html:631
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/showcase/th04/index.html:103
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/showcase/th04/index.html:194
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}Home{ph1} / {ph2}Showcases{ph3} / TH04"
|
||
msgstr "{ph0}Nhà{ph1} / {ph2}Giới thiệu{ph3} / TH04"
|
||
|
||
#: website/public/showcase/th04/index.html:197
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Case study · Touhou 4: Lotus Land Story"
|
||
msgstr "Nghiên cứu điển hình * Touhou 4: Lotus Land Story"
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/showcase/th04/index.html:198
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Reconstructing TH04's{ph0}bullet patterns."
|
||
msgstr "XÂY DỰNG LẠI TH04 ' s{ph0}mẫu đạn."
|
||
|
||
#: website/public/showcase/th04/index.html:199
|
||
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 ""
|
||
"Một vòng đạn bắt đầu bằng một phép tính góc ngắn. SỬ DỤNG REA để kiểm tra "
|
||
"chức năng dos ban đầu, sau đó làm theo hướng dẫn của NÓ vào C++có thể đọc "
|
||
"được."
|
||
|
||
#: website/public/showcase/th04/index.html:204
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "PC-98 · 16-bit DOS · C++ and assembly"
|
||
msgstr "PC-98 * 16-bit DOS * c++ và lắp ráp"
|
||
|
||
#: website/public/showcase/th04/index.html:205
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "View the TH04 reconstruction"
|
||
msgstr "Xem TÁI THIẾT TH04"
|
||
|
||
#: website/public/showcase/th04/index.html:211
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "From original instructions to checked source"
|
||
msgstr "Từ hướng dẫn ban đầu để kiểm tra nguồn"
|
||
|
||
#. {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:213
|
||
#, 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 * Trò Chơi Gốc{ph1}{ph2}CHÍNH.EXE{ph3}{ph4}TỆP THỰC thi PC-98 và "
|
||
"trình trợ giúp góc đạn của NÓ.{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:220
|
||
#, 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 * Kiểm tra VỚI REA {ph1}{ph2}Hướng dẫn + tài liệu tham "
|
||
"khảo{ph3}{ph4}Xác minh mã DOS đã tải và đọc phép tính góc từ tệp thực "
|
||
"thi.{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:228
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid ""
|
||
"{ph0}03 · Read the C++{ph1}{ph2}Space → aim → rotate{ph3}{ph4}Connect each "
|
||
"operation to the maintained reconstruction.{ph5}"
|
||
msgstr ""
|
||
"{ph0}03 * Đọc C C{ph1}{ph2}Không gian → mục tiêu → xoay{ph3}{ph4}Kết nối "
|
||
"từng hoạt động với việc tái thiết được duy trì.{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:235
|
||
#, 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 * Kiểm tra nguồn{ph1}{ph2}2,139 byte phù hợp{ph3}{ph4}Kiểm tra trình"
|
||
" biên dịch đã ghi bao gồm mã tạo đạn có chứa trình trợ giúp này.{ph5}"
|
||
|
||
#: website/public/showcase/th04/index.html:244
|
||
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 trả về mã gốc và bằng chứng phân tích của nó. DỰ án TH04 cung cấp các "
|
||
"kiểm tra nguồn và trình biên dịch được duy trì."
|
||
|
||
#: website/public/showcase/th04/index.html:252
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "In this case study"
|
||
msgstr "Trong trường hợp này nghiên cứu"
|
||
|
||
#. {ph0}: <a href="#ring">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/th04/index.html:254
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}The bullet ring{ph1}"
|
||
msgstr "{ph0}Vòng đạn{ph1}"
|
||
|
||
#. {ph0}: <a href="#rea">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/th04/index.html:255
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}What REA returns{ph1}"
|
||
msgstr "{ph0}REA trả về gì{ph1}"
|
||
|
||
#. {ph0}: <a href="#source">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/th04/index.html:256
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}Assembly to C++{ph1}"
|
||
msgstr "{ph0}Lắp Ráp Để C C{ph1}"
|
||
|
||
#. {ph0}: <a href="#checking">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/th04/index.html:257
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}Checking the source{ph1}"
|
||
msgstr "{ph0}Kiểm tra nguồn{ph1}"
|
||
|
||
#. {ph0}: <a href="#project">
|
||
#. {ph1}: </a>
|
||
#: website/public/showcase/th04/index.html:258
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}The full project{ph1}"
|
||
msgstr "{ph0}Dự án đầy đủ{ph1}"
|
||
|
||
#: website/public/showcase/th04/index.html:263
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "How a ring aims at the player"
|
||
msgstr "Làm thế nào một chiếc nhẫn nhắm vào người chơi"
|
||
|
||
#: website/public/showcase/th04/index.html:264
|
||
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 ""
|
||
"Cuộc tấn công của Elly yêu cầu một chiếc nhẫn nhắm với số lượng ban đầu là "
|
||
"16. Một người trợ giúp tính toán hướng của mỗi viên đạn. Cùng một vòng có "
|
||
"thể đối mặt với một hướng cố định hoặc quay về phía người chơi."
|
||
|
||
#. {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:271
|
||
#, 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}Agent mã hóa của bạn"
|
||
|
||
#: website/public/showcase/th04/index.html:276
|
||
#: website/public/showcase/th04/index.html:332
|
||
#: website/public/showcase/th04/index.html:509
|
||
#: website/public/showcase/th04/index.html:543
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Copy"
|
||
msgstr "Sao chép"
|
||
|
||
#. {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:285
|
||
#, 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}SỬ DỤNG REA để tìm CÁCH TH04 tạo ra một vòng đạn và nhắm vào"
|
||
" người chơi. Giải thích tính toán và hiển thị mã.{ph3}{ph4}{ph5}"
|
||
|
||
#: website/public/showcase/th04/index.html:294
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid ""
|
||
"An example prompt, with the original executable and reconstruction checkout "
|
||
"available locally."
|
||
msgstr ""
|
||
"Một lời nhắc ví dụ, với thanh toán thực thi và tái thiết ban đầu có sẵn tại "
|
||
"địa phương."
|
||
|
||
#. {ph0}: <code>0, 16, 32, …, 240</code>
|
||
#: website/public/showcase/th04/index.html:298
|
||
#, 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 lưu trữ một lượt theo chiều kim đồng hồ đầy đủ trong 256 đơn vị góc. "
|
||
"Đối với 16 viên đạn, mỗi chỉ số thêm 16 đơn vị: {ph0}. Thêm hướng của người "
|
||
"chơi xoay các vị trí đó lại với nhau."
|
||
|
||
#. {ph0}: <a href="../../assets/figures/th04-bullet-ring.svg" >
|
||
#. {ph1}: </a >
|
||
#: website/public/showcase/th04/index.html:318
|
||
#, 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 ""
|
||
"Một minh họa của toán học góc phục hồi cho đếm 16, hướng máy nghe nhạc 40 và"
|
||
" mẫu xoay 0. {ph0}Hình mở{ph1}"
|
||
|
||
#: website/public/showcase/th04/index.html:326
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "The firing template in the recovered source"
|
||
msgstr "Mẫu bắn trong nguồn được phục hồi"
|
||
|
||
#: website/public/showcase/th04/index.html:331
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Elly's ring attack · source excerpt"
|
||
msgstr "Elly ' s ring attack * đoạn trích nguồn"
|
||
|
||
#. {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:346
|
||
#, 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 ""
|
||
"Những dòng này chọn mẫu trước khi điều chỉnh độ khó và hiệu suất. {ph0}Đọc "
|
||
"nguồn của cuộc tấn công{ph1}."
|
||
|
||
#: website/public/showcase/th04/index.html:357
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "What REA returns"
|
||
msgstr "REA trả về gì"
|
||
|
||
#. {ph0}: <code>bullet_velocity_and_angle_set()</code>
|
||
#: website/public/showcase/th04/index.html:358
|
||
#, 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 ""
|
||
"Chúng tôi kiểm tra {ph0}, chức năng đặt vận tốc và góc của mỗi viên đạn. "
|
||
"REA trả về hướng dẫn, mã giả và tài liệu tham khảo. Ba phần của kết quả đó "
|
||
"giải thích mô hình."
|
||
|
||
#: website/public/showcase/th04/index.html:366
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Check the DOS image before reading its code"
|
||
msgstr "Kiểm tra hình ẢNH DOS trước khi đọc mã của nó"
|
||
|
||
#: website/public/showcase/th04/index.html:387
|
||
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 ""
|
||
"Việc kiểm tra liên kết mã đã tải và các bản ghi di dời đến tệp thực thi được"
|
||
" cung cấp. Đường dẫn trên được rút ngắn để hiển thị."
|
||
|
||
#: website/public/showcase/th04/index.html:393
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Read the ring's multiply and divide"
|
||
msgstr "Đọc nhân và chia của chiếc nhẫn"
|
||
|
||
#. {ph0}: <code>SI</code>
|
||
#. {ph1}: <code>DS:53AF</code>
|
||
#. {ph2}: <code>bullet_template.count</code>
|
||
#: website/public/showcase/th04/index.html:411
|
||
#, 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} giữ chỉ số đạn. Sự thay đổi nhân nó với 256, sau đó phép chia sử dụng "
|
||
"số đếm đọc từ {ph1}. Tên nguồn duy trì trường đó {ph2}. Trình tự hoàn chỉnh "
|
||
"xuất hiện bên dưới."
|
||
|
||
#: website/public/showcase/th04/index.html:420
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Find where the pattern turns toward the player"
|
||
msgstr "Tìm nơi mẫu quay về phía người chơi"
|
||
|
||
#: website/public/showcase/th04/index.html:441
|
||
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 ""
|
||
"Các toán hạng hướng dẫn phơi bày hai sự khác biệt tọa độ và một trợ giúp "
|
||
"hướng. Giá trị trả về của nó được thêm vào góc vòng tương đối. Tên nguồn làm"
|
||
" cho các địa chỉ đó có thể đọc được; REA cho phép tác nhân kiểm tra các hoạt"
|
||
" động ban đầu đằng sau chúng."
|
||
|
||
#: website/public/showcase/th04/index.html:452
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "From assembly to readable C++"
|
||
msgstr "Từ lắp Ráp Đến có Thể đọc Được c C"
|
||
|
||
#: website/public/showcase/th04/index.html:453
|
||
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 ""
|
||
"Chọn một bước để khớp các hướng dẫn ban đầu với phép tính góc. Bản tóm tắt "
|
||
"này theo đường dẫn vòng nhắm; nguồn đầy đủ cũng xử lý chênh lệch, ngăn xếp "
|
||
"và các mẫu ngẫu nhiên."
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/th04/index.html:464
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}01{ph1} Index"
|
||
msgstr "{ph0}01{ph1} Chỉ số"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/th04/index.html:472
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}02{ph1} Space"
|
||
msgstr "{ph0}02{ph1} Không gian"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/th04/index.html:480
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}03{ph1} Aim"
|
||
msgstr "{ph0}03{ph1} Mục tiêu"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/th04/index.html:488
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}04{ph1} Rotate"
|
||
msgstr "{ph0}04{ph1} Xoay"
|
||
|
||
#. {ph0}: <span>
|
||
#. {ph1}: </span>
|
||
#: website/public/showcase/th04/index.html:496
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}05{ph1} Store"
|
||
msgstr "{ph0}05{ph1} Cửa hàng"
|
||
|
||
#: website/public/showcase/th04/index.html:508
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "REA · original 16-bit instructions"
|
||
msgstr "REA * hướng dẫn 16-bit gốc"
|
||
|
||
#: website/public/showcase/th04/index.html:542
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Readable C++ · aimed-ring summary"
|
||
msgstr "Có thể đọc Được C++ * tóm tắt vòng nhắm"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>SI</code>
|
||
#: website/public/showcase/th04/index.html:571
|
||
#, 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 * Đọc chỉ số đạn.{ph1} Đối số ngăn xếp được tải vào {ph2}. Trong "
|
||
"vòng 16 viên đạn, chỉ số thành viên này chạy từ 0 đến 15."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>SHL AX,8</code>
|
||
#. {ph3}: <code>IDIV</code>
|
||
#: website/public/showcase/th04/index.html:576
|
||
#, 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 * Không Gian hướng dẫn xung quanh một lượt đầy đủ.{ph1} {ph2} nhân "
|
||
"với 256. Số đếm bằng không-được mở rộng thành một từ, sau đó {ph3} chia sản "
|
||
"phẩm cho số đó. Đối với đếm 16, mỗi chỉ số tiến 16 đơn vị góc."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>AX</code>
|
||
#: website/public/showcase/th04/index.html:583
|
||
#, 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 * Thêm hướng người chơi.{ph1} Hai phép trừ tạo thành tọa độ người "
|
||
"chơi-trừ-gốc. Người trợ giúp hướng trả về một góc trong {ph2}; thêm nó biến "
|
||
"toàn bộ vòng về phía người chơi."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>ADD AL,[0x53ad]</code>
|
||
#: website/public/showcase/th04/index.html:589
|
||
#, 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 * Thêm vòng quay của mẫu.{ph1} {ph2} thêm góc mẫu. Mẫu ban đầu của "
|
||
"Elly đặt nó thành số không; các mẫu khác có thể sử dụng cùng một trình trợ "
|
||
"giúp với một vòng quay."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#. {ph2}: <code>AL</code>
|
||
#: website/public/showcase/th04/index.html:595
|
||
#, 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 * Giữ góc cuối cùng trong một byte · {ph1} Cửa hàng viết {ph2} đến "
|
||
"trường góc đẻ trứng. Các giá trị bọc sau 255, giống như cast byte không dấu."
|
||
" Nguồn xung quanh cũng chuyển đổi góc và tốc độ này thành vận tốc."
|
||
|
||
#: website/public/showcase/th04/index.html:604
|
||
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 ""
|
||
"Việc lắp ráp chọn nhánh vòng nhắm, tính toán mục tiêu và cửa hàng cuối cùng."
|
||
" C++ ở trên là một bản tóm tắt có thể đọc được. Kiểm tra trình biên dịch bên"
|
||
" dưới áp dụng cho nguồn được duy trì trong dự án được liên kết."
|
||
|
||
#: website/public/showcase/th04/index.html:610
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Read the maintained ring and aim source"
|
||
msgstr "Đọc vòng duy trì và mục tiêu nguồn"
|
||
|
||
#. {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:639
|
||
#, 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}Vòng macro{ph1} · {ph2}Mục tiêu và vận tốc nguồn{ph3} · {ph4}Biểu diễn "
|
||
"góc{ph5}"
|
||
|
||
#: website/public/showcase/th04/index.html:659
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Checking the maintained source"
|
||
msgstr "Kiểm tra nguồn duy trì"
|
||
|
||
#: website/public/showcase/th04/index.html:660
|
||
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 ""
|
||
"CÁC kiểm tra được ghi LẠI CỦA DỰ án TH04 biên dịch mã tạo đạn, bao gồm cả "
|
||
"trình trợ giúp này, với chuỗi công cụ Turbo C 4 4.0 J được ghim."
|
||
|
||
#: website/public/showcase/th04/index.html:667
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "2,139 matching bytes"
|
||
msgstr "2,139 byte phù hợp"
|
||
|
||
#: website/public/showcase/th04/index.html:668
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid ""
|
||
"The compiled bullet-generation code matches a 2,139-byte section of the "
|
||
"original executable."
|
||
msgstr ""
|
||
"Mã tạo đạn được biên dịch khớp với phần 2.139 byte của tệp thực thi ban đầu."
|
||
|
||
#: website/public/showcase/th04/index.html:674
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Two clean builds"
|
||
msgstr "Hai tòa nhà sạch sẽ"
|
||
|
||
#: website/public/showcase/th04/index.html:675
|
||
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 ""
|
||
"Hai bản dựng riêng biệt tạo ra cùng một byte phù hợp. Các băm đầu vào được "
|
||
"ghi lại khớp với nguồn được duy trì được hiển thị ở đây."
|
||
|
||
#. {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:681
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Recorded on 3 October 2026. {ph0}Read the compiler checks{ph1}."
|
||
msgstr ""
|
||
"Thu âm vào ngày 3 tháng 10 năm 2026. {ph0}Đọc kiểm tra trình biên dịch{ph1}."
|
||
|
||
#: website/public/showcase/th04/index.html:689
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Target identity and analysis scope"
|
||
msgstr "Phạm vi phân tích và nhận dạng mục tiêu"
|
||
|
||
#: website/public/showcase/th04/index.html:694
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Original target"
|
||
msgstr "Mục tiêu ban đầu"
|
||
|
||
#. {ph0}: <code>MAIN.EXE</code>
|
||
#: website/public/showcase/th04/index.html:695
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}, 156,258 bytes, DOS MZ"
|
||
msgstr "{ph0}, 156,258 byte, DOS MZ"
|
||
|
||
#: website/public/showcase/th04/index.html:698
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Helper entry"
|
||
msgstr "Mục trợ giúp"
|
||
|
||
#. {ph0}: <code>0x2cfc8</code>
|
||
#: website/public/showcase/th04/index.html:699
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0} in REA's loaded image"
|
||
msgstr "{ph0} TRONG HÌNH ẢNH ĐƯỢC tải CỦA REA"
|
||
|
||
#: website/public/showcase/th04/index.html:702
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Original file offset"
|
||
msgstr "Tập tin ban đầu bù đắp"
|
||
|
||
#. {ph0}: <code>0x1e7c8</code>
|
||
#. {ph1}: <code>address_to_file_offset</code>
|
||
#: website/public/showcase/th04/index.html:703
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}, returned by {ph1}"
|
||
msgstr "{ph0}, trả lại bởi {ph1}"
|
||
|
||
#: website/public/showcase/th04/index.html:709
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Recorded code inspection"
|
||
msgstr "Kiểm tra mã được ghi lại"
|
||
|
||
#: website/public/showcase/th04/index.html:710
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "REA 4.1.0 · 7 October 2026"
|
||
msgstr "REA 4.1.0 * 7 tháng mười 2026"
|
||
|
||
#: website/public/showcase/th04/index.html:715
|
||
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 ""
|
||
"Kiểm tra trình biên dịch bao gồm phần bullet-add code hoàn chỉnh, bao gồm cả"
|
||
" trình trợ giúp này. Họ cũng so sánh ĐÓNG góp BẢN đồ của nó và di dời chồng "
|
||
"chéo."
|
||
|
||
#. {ph0}: <code>0x1000</code>
|
||
#: website/public/showcase/th04/index.html:720
|
||
#, 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 đã xác minh hình ảnh tải DOS tĩnh ở phân đoạn tải {ph0}. Địa chỉ của nó "
|
||
"mô tả hình ảnh phân tích đó. Kết quả hàm báo cáo 503 byte cơ thể trong hai "
|
||
"phạm vi trong khoảng 517 byte; các hướng dẫn được chọn ở trên nằm trong các "
|
||
"phạm vi được báo cáo đó."
|
||
|
||
#. {ph0}: <code>0d72e980</code>
|
||
#: website/public/showcase/th04/index.html:727
|
||
#, 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 ""
|
||
"Tên nguồn và kiểm tra trình biên dịch đến từ TRẠM KIỂM SOÁT TH04 {ph0}. Các "
|
||
"quan sát tái thiết trước đó đã sử dụng các kịch bản phân tích riêng của dự "
|
||
"án; trang này thêm một kiểm tra REA mới của cùng một mục tiêu ban đầu. Danh "
|
||
"tính của trò chơi được cung cấp được ghim bởi biểu hiện kho lưu trữ của nó, "
|
||
"với nguồn gốc tự đổ nguyên sơ độc lập vẫn còn mở."
|
||
|
||
#: website/public/showcase/th04/index.html:735
|
||
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 ""
|
||
"Hình minh họa tính toán góc. Điều khiển đầy đủ trò chơi, thời gian VÀ HÀNH "
|
||
"vi PHẦN CỨNG PC-98 có kiểm tra thời gian chạy riêng biệt trong dự án tái "
|
||
"thiết."
|
||
|
||
#: website/public/showcase/th04/index.html:744
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "The full TH04 reconstruction"
|
||
msgstr "VIỆC TÁI THIẾT TH04 đầy đủ"
|
||
|
||
#: website/public/showcase/th04/index.html:745
|
||
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 ""
|
||
"Dự án xây dựng bốn sản phẩm dos của trò chơi từ C++ và lắp ráp được duy trì."
|
||
" Ngoài bullet generation, nguồn bao gồm các giai đoạn, ông chủ, kết xuất, "
|
||
"đầu vào, menu, kết thúc và xử lý điểm."
|
||
|
||
#. {ph0}: <a class="text-link" href="https://github.com/N0zoM1z0/th04" >
|
||
#. {ph1}: </a >
|
||
#: website/public/showcase/th04/index.html:751
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "{ph0}Explore the TH04 repository{ph1}"
|
||
msgstr "{ph0}Khám PHÁ KHO LƯU TRỮ 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:757
|
||
#, 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}Nguồn tạo đạn{ph1}{ph2}Người trợ giúp hoàn chỉnh, các loại mẫu khác và "
|
||
"điều chỉnh mẫu.{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:766
|
||
#, 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}Hướng dẫn xây dựng và chạy dos{ph1}{ph2}Xây dựng nguồn và kiểm tra nó "
|
||
"trong QUY trình làm việc GIẢ lập PC-98 của dự án.{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:775
|
||
#, 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}Trạng thái dự án hiện tại{ph1}{ph2}Xác minh DOS và cổng x64 gốc riêng "
|
||
"biệt.{ph3}"
|
||
|
||
#: website/public/showcase/th04/index.html:6
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "TH04 Reverse Engineering: DOS Bullet Patterns — REA"
|
||
msgstr "TH04 Kỹ Thuật Đảo ngược: Dos Bullet Patterns-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 ""
|
||
"KIỂM tra MÃ DOS 16 bit gốc CỦA TH04 VỚI REA . Thực hiện theo lắp Ráp Và phục"
|
||
" Hồi C++ để xem cách một vòng đạn được đặt cách nhau và nhắm vào người chơi."
|
||
|
||
#: website/public/showcase/th04/index.html:251
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/showcase/th04/index.html:261
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "TH04 bullet-pattern case study"
|
||
msgstr "TH04 bullet-nghiên cứu trường hợp mẫu"
|
||
|
||
#: website/public/showcase/th04/index.html:276
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Copy TH04 example prompt"
|
||
msgstr "Sao CHÉP DẤU nhắc VÍ DỤ TH04"
|
||
|
||
#: website/public/showcase/th04/index.html:304
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid ""
|
||
"TH04 fixed and aimed bullet rings; scroll horizontally on smaller screens"
|
||
msgstr ""
|
||
"TH04 cố định và nhằm mục đích đạn nhẫn; di chuyển theo chiều ngang trên màn "
|
||
"hình nhỏ hơn"
|
||
|
||
#: website/public/showcase/th04/index.html:310
|
||
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 ""
|
||
"Hai sơ đồ của một vòng 16 viên đạn. Vòng cố định bắt đầu ở góc không. Thêm "
|
||
"một hướng chơi của 40 xoay mỗi hướng bằng cùng một số tiền; các điểm đạn đầu"
|
||
" tiên được đánh dấu về phía người chơi. Cả hai đều giữ khoảng cách 16 đơn vị"
|
||
" góc hoặc 22,5 độ."
|
||
|
||
#: website/public/showcase/th04/index.html:332
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Copy TH04 firing template"
|
||
msgstr "Sao CHÉP TH04 bắn mẫu"
|
||
|
||
#: website/public/showcase/th04/index.html:459
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Follow the TH04 aimed-ring calculation"
|
||
msgstr "Thực HIỆN THEO CÁC TH04 nhằm mục đích tính vòng"
|
||
|
||
#: website/public/showcase/th04/index.html:509
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Copy TH04 assembly excerpt"
|
||
msgstr "Sao CHÉP TH04 lắp ráp đoạn trích"
|
||
|
||
#: website/public/showcase/th04/index.html:543
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Copy readable aimed-ring calculation"
|
||
msgstr "Sao chép có thể đọc được nhằm mục đích-tính toán vòng"
|
||
|
||
#: website/public/showcase/th04/index.html:800
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#: website/public/assets/main.js:21
|
||
msgctxt "runtime"
|
||
msgid "Copied"
|
||
msgstr "Sao chép"
|
||
|
||
#: website/public/assets/main.js:32
|
||
msgctxt "runtime"
|
||
msgid "Selected"
|
||
msgstr "Đã chọn"
|
||
|
||
#: website/public/assets/main.js:23
|
||
msgctxt "runtime"
|
||
msgid "Code copied to clipboard."
|
||
msgstr "Mã sao chép vào clipboard."
|
||
|
||
#: website/public/assets/main.js:34
|
||
msgctxt "runtime"
|
||
msgid "Code selected. Use your keyboard to copy it."
|
||
msgstr "Mã được chọn. Sử dụng bàn phím của bạn để sao chép nó."
|
||
|
||
#: website/public/assets/main.js:148
|
||
#, python-brace-format
|
||
msgctxt "runtime"
|
||
msgid "REA on GitHub ({count})"
|
||
msgstr "REA TRÊN GitHub ({count})"
|
||
|
||
#: website/public/assets/dino-demo.js:77
|
||
#, python-brace-format
|
||
msgctxt "runtime"
|
||
msgid "Distance {distance}"
|
||
msgstr "Khoảng cách {distance}"
|
||
|
||
#: website/public/assets/dino-demo.js:87
|
||
msgctxt "runtime"
|
||
msgid "Hit a cactus. Try another speed."
|
||
msgstr "Đánh một cây xương rồng. Hãy thử một tốc độ khác."
|
||
|
||
#: website/public/assets/dino-demo.js:87
|
||
msgctxt "runtime"
|
||
msgid "Space or Jump ↑"
|
||
msgstr "Không gian hoặc Nhảy ↑"
|
||
|
||
#: website/public/assets/dino-demo.js:97
|
||
msgctxt "runtime"
|
||
msgid "Play again"
|
||
msgstr "Chơi lại"
|
||
|
||
#: website/public/assets/dino-demo.js:97
|
||
#: website/public/assets/dino-demo.js:111
|
||
msgctxt "runtime"
|
||
msgid "Play"
|
||
msgstr "Chơi"
|
||
|
||
#: website/public/assets/dino-demo.js:171
|
||
msgctxt "runtime"
|
||
msgid "Pause"
|
||
msgstr "Tạm dừng"
|
||
|
||
#: website/public/assets/dino-demo.js:112
|
||
msgctxt "runtime"
|
||
msgid "Press Play, then jump over the cactus."
|
||
msgstr "Nhấn Play, sau đó nhảy qua cây xương rồng."
|
||
|
||
#: website/public/assets/dino-demo.js:147
|
||
msgctxt "runtime"
|
||
msgid "Hit a cactus. Press Play again, or change the speed and restart."
|
||
msgstr ""
|
||
"Đánh một cây xương rồng. Nhấn Play một lần nữa, hoặc thay đổi tốc độ và khởi"
|
||
" động lại."
|
||
|
||
#: website/public/assets/dino-demo.js:172
|
||
msgctxt "runtime"
|
||
msgid "Running. Space or Jump clears a cactus."
|
||
msgstr "Chạy. Không gian Hoặc Nhảy xóa một cây xương rồng."
|
||
|
||
#: 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 "Dừng lại. Nhấn Play để tiếp tục."
|
||
|
||
#: website/public/assets/dino-demo.js:203
|
||
#, python-brace-format
|
||
msgctxt "runtime"
|
||
msgid "Fixed speed: {speed}. Space or Jump clears a cactus."
|
||
msgstr "Tốc độ cố định: {speed}. Không gian Hoặc Nhảy xóa một cây xương rồng."
|
||
|
||
#: website/public/assets/dino-demo.js:206
|
||
#, python-brace-format
|
||
msgctxt "runtime"
|
||
msgid "Fixed speed: {speed}. Press Play to try it."
|
||
msgstr "Tốc độ cố định: {speed}. Nhấn Play để thử nó."
|
||
|
||
#: website/public/assets/dino-demo.js:215
|
||
msgctxt "runtime"
|
||
msgid "Recovered rule: start at 6, then increase toward 13."
|
||
msgstr "Quy tắc phục hồi: bắt đầu từ 6, sau đó tăng lên 13."
|
||
|
||
#: website/public/assets/dino-demo.js:216
|
||
#, python-brace-format
|
||
msgctxt "runtime"
|
||
msgid "Fixed speed: {speed}."
|
||
msgstr "Tốc độ cố định: {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 ""
|
||
"Phát lại quy tắc phục hồi. Tất cả bốn giá trị phù hợp với kiểm tra trò chơi "
|
||
"gốc được kiểm soát khi được làm tròn thành ba số thập phân."
|
||
|
||
#: 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 ""
|
||
"Việc phát lại khác với các giá trị trò chơi gốc được ghi lại. So sánh quy "
|
||
"tắc tốc độ và cài đặt ở trên."
|
||
|
||
#: website/public/assets/aegis-demo.js:22
|
||
#, python-brace-format
|
||
msgctxt "runtime"
|
||
msgid "{start}–{end} seconds"
|
||
msgstr "{start}–{end} giây"
|
||
|
||
#: website/public/assets/aegis-demo.js:29
|
||
#, python-brace-format
|
||
msgctxt "runtime"
|
||
msgid "{seconds} seconds, time block {block}"
|
||
msgstr "{seconds} giây, khối thời gian {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 ""
|
||
"Tính toán tương tác không có sẵn trong trình duyệt này. Ví dụ hiển thị mã ở "
|
||
"59 giây."
|
||
|
||
#: website/public/assets/aegis-demo.js:62
|
||
msgctxt "runtime"
|
||
msgid "Checking…"
|
||
msgstr "Kiểm tra…"
|
||
|
||
#: 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} kiểm tra được thông qua (sáu trường hợp tham chiếu, ở sáu"
|
||
" và tám chữ số)."
|
||
|
||
#: website/public/assets/aegis-demo.js:81
|
||
msgctxt "runtime"
|
||
msgid "Could not run the reference checks. Try again."
|
||
msgstr "Không thể chạy kiểm tra tham chiếu. Thử lại."
|
||
|
||
#: website/public/assets/figures/analyst-thinking.svg:2
|
||
msgctxt "figure:analyst-thinking.svg"
|
||
msgid "An analyst thinking at a computer"
|
||
msgstr "Một nhà phân tích suy nghĩ tại một máy tính"
|
||
|
||
#: 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 "Một kiểm tra cho thấy một nhân vật"
|
||
|
||
#: 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 ""
|
||
"Mặt nạ thứ bảy chỉ chọn vị trí 21 trong lưới đầu vào sáu x sáu. Mã ký tự của"
|
||
" nó phải bằng 55, vì vậy ký tự là 7. Các mặt nạ khác chọn các vị trí khác "
|
||
"nhau và đưa ra các phương trình tiếp theo."
|
||
|
||
#: 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 "Kiểm tra thứ bảy. Nhãn ô là vị trí đầu vào, bắt đầu từ 0."
|
||
|
||
#: website/public/assets/figures/ctf-mask-equation.svg:27
|
||
msgctxt "figure:ctf-mask-equation.svg"
|
||
msgid "Encoded mask: −21, +1, −14, 0"
|
||
msgstr "Mặt nạ được mã hóa: -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 "Bỏ qua 21 ô. Chọn 1. Bỏ qua 14. Dừng lại ở 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 "Chỉ có một ô đóng góp vào tổng này"
|
||
|
||
#: 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 "Vị trí 21 trong lá cờ phải chứa 7."
|
||
|
||
#: website/public/assets/figures/ctf-mask-equation.svg:37
|
||
msgctxt "figure:ctf-mask-equation.svg"
|
||
msgid "Selected: one cell"
|
||
msgstr "Chọn: một ô"
|
||
|
||
#: website/public/assets/figures/ctf-mask-equation.svg:38
|
||
msgctxt "figure:ctf-mask-equation.svg"
|
||
msgid "26 masks give 26 equations."
|
||
msgstr "26 mặt nạ cho 26 phương trình."
|
||
|
||
#: website/public/assets/figures/ctf-mask-equation.svg:39
|
||
msgctxt "figure:ctf-mask-equation.svg"
|
||
msgid "Solve them together to find the flag."
|
||
msgstr "Giải quyết chúng với nhau để tìm cờ."
|
||
|
||
#: 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 âm thanh-pan điều tra"
|
||
|
||
#: 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 cung cấp hướng dẫn, hàm gọi và byte-đọc bằng chứng cho một CHỨC năng DX-"
|
||
"Ball. Đầu vào ngăn xếp được nhân với 1.5625, được bù bằng 500, chia tỷ lệ và"
|
||
" chuyển đổi thành số nguyên. Duy Trì C được kiểm tra trong 3.205 trường hợp "
|
||
"gốc-x86 và phát lại trình biên dịch 63 byte riêng biệt."
|
||
|
||
# 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 "Ngăn xếp"
|
||
|
||
# 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 "vào 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 "trả về"
|
||
|
||
# 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 "Hàm khôi phục"
|
||
|
||
# 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 "Mã C bảo trì"
|
||
|
||
# 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 "Gọi khi va chạm"
|
||
|
||
#: 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 "Mã gốc"
|
||
|
||
# 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 "so sánh"
|
||
|
||
# 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 ca thử"
|
||
|
||
# Reviewed for technical meaning and concise diagram labels.
|
||
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:53
|
||
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
|
||
msgid "VC4.0 build"
|
||
msgstr "Build VC4.0"
|
||
|
||
# Reviewed for technical meaning and concise diagram labels.
|
||
#: website/public/assets/figures/dx-ball-sound-pan-investigation.svg:55
|
||
msgctxt "figure:dx-ball-sound-pan-investigation.svg"
|
||
msgid "63 matching bytes"
|
||
msgstr "63 byte khớp"
|
||
|
||
#: 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 dòng điều tra"
|
||
|
||
#: 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 ""
|
||
"Đặt câu hỏi về một mục tiêu địa phương. REA kiểm tra và theo dõi thông qua "
|
||
"các bộ điều hợp phân tích cục bộ, trả về bằng chứng và hỗ trợ các câu hỏi "
|
||
"tiếp theo như agent của bạn giải thích, thực hiện và kiểm tra."
|
||
|
||
# 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. Hỏi"
|
||
|
||
# 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 "Agent + tệp cục bộ"
|
||
|
||
# Reviewed for technical meaning and concise diagram labels.
|
||
#: website/public/assets/figures/rea-investigation-flow.svg:33
|
||
msgctxt "figure:rea-investigation-flow.svg"
|
||
msgid "App / binary / browser"
|
||
msgstr "App / tệp / trình duyệt"
|
||
|
||
# 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. Phân tích"
|
||
|
||
#: 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. Đọc bằng chứng"
|
||
|
||
# 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 "Mã / tham chiếu /"
|
||
|
||
# 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 "điểm chưa rõ"
|
||
|
||
# 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. Áp dụng"
|
||
|
||
# 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 "Agent của bạn"
|
||
|
||
# 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 "Giải thích / viết / kiểm tra"
|
||
|
||
# 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 "Công cụ phân tích"
|
||
|
||
# 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 "Bộ phân tích cục bộ"
|
||
|
||
# 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 "Câu hỏi tiếp theo"
|
||
|
||
#: 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 : khoảng cách và nhắm một vòng đạn"
|
||
|
||
#: 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 ""
|
||
"Một lượt theo chiều kim đồng hồ đầy đủ có 256 đơn vị góc. Mười sáu viên đạn "
|
||
"bắt đầu ở góc số không, mười sáu, ba mươi hai, đến 240. Thêm một hướng người"
|
||
" chơi ví dụ bốn mươi lượt tất cả mười sáu hướng với nhau; các điểm đạn đầu "
|
||
"tiên tại người chơi. Mẫu xoay bằng không."
|
||
|
||
#: website/public/assets/figures/th04-bullet-ring.svg:24
|
||
msgctxt "figure:th04-bullet-ring.svg"
|
||
msgid "Fixed ring"
|
||
msgstr "Vòng cố định"
|
||
|
||
#: website/public/assets/figures/th04-bullet-ring.svg:25
|
||
msgctxt "figure:th04-bullet-ring.svg"
|
||
msgid "First bullet: angle 0"
|
||
msgstr "Viên đạn đầu tiên: góc 0"
|
||
|
||
#: website/public/assets/figures/th04-bullet-ring.svg:26
|
||
msgctxt "figure:th04-bullet-ring.svg"
|
||
msgid "Aimed ring"
|
||
msgstr "Vòng nhắm"
|
||
|
||
#: website/public/assets/figures/th04-bullet-ring.svg:27
|
||
msgctxt "figure:th04-bullet-ring.svg"
|
||
msgid "First bullet: player direction"
|
||
msgstr "Viên đạn đầu tiên: hướng người chơi"
|
||
|
||
# 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 "Tâm"
|
||
|
||
#: website/public/assets/figures/th04-bullet-ring.svg:105
|
||
msgctxt "figure:th04-bullet-ring.svg"
|
||
msgid "Player"
|
||
msgstr "Người chơi"
|
||
|
||
#: 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 "Khoảng cách tương tự: 256 ÷ 16 = 16 đơn vị góc = 22,5°"
|
||
|
||
#: website/public/blog/index.html:114
|
||
#: website/public/blog/reverse-engineering-models/index.html:114
|
||
#: website/public/blog/touhou-reconstruction/index.html:114
|
||
#: website/public/examples/dino-lab/index.html:115
|
||
#: website/public/faq/index.html:114
|
||
#: website/public/first-investigation/index.html:114
|
||
#: website/public/get-started/index.html:114
|
||
#: website/public/guides/browser/index.html:114
|
||
#: website/public/guides/index.html:114
|
||
#: website/public/guides/javascript/index.html:114
|
||
#: website/public/guides/native/index.html:114 website/public/index.html:116
|
||
#: website/public/showcase/aegis/index.html:115
|
||
#: website/public/showcase/ctf/index.html:114
|
||
#: website/public/showcase/dx-ball/index.html:114
|
||
#: website/public/showcase/index.html:114
|
||
#: website/public/showcase/notion/index.html:114
|
||
#: website/public/showcase/th04/index.html:114
|
||
msgctxt "shared"
|
||
msgid "Showcases"
|
||
msgstr "Ví dụ thực tế"
|
||
|
||
#: website/public/blog/index.html:115
|
||
#: website/public/blog/reverse-engineering-models/index.html:115
|
||
#: website/public/blog/touhou-reconstruction/index.html:115
|
||
#: website/public/examples/dino-lab/index.html:116
|
||
#: website/public/faq/index.html:115
|
||
#: website/public/first-investigation/index.html:115
|
||
#: website/public/get-started/index.html:115
|
||
#: website/public/guides/browser/index.html:115
|
||
#: website/public/guides/index.html:115
|
||
#: website/public/guides/javascript/index.html:115
|
||
#: website/public/guides/native/index.html:115 website/public/index.html:117
|
||
#: website/public/showcase/aegis/index.html:116
|
||
#: website/public/showcase/ctf/index.html:115
|
||
#: website/public/showcase/dx-ball/index.html:115
|
||
#: website/public/showcase/index.html:115
|
||
#: website/public/showcase/notion/index.html:115
|
||
#: website/public/showcase/th04/index.html:115
|
||
msgctxt "shared"
|
||
msgid "Blog"
|
||
msgstr "Blog"
|
||
|
||
#: website/public/blog/index.html:113
|
||
#: website/public/blog/reverse-engineering-models/index.html:113
|
||
#: website/public/blog/touhou-reconstruction/index.html:113
|
||
#: website/public/examples/dino-lab/index.html:114
|
||
#: website/public/faq/index.html:113
|
||
#: website/public/first-investigation/index.html:113
|
||
#: website/public/get-started/index.html:113
|
||
#: website/public/guides/browser/index.html:113
|
||
#: website/public/guides/index.html:113
|
||
#: website/public/guides/javascript/index.html:113
|
||
#: website/public/guides/native/index.html:113 website/public/index.html:115
|
||
#: website/public/showcase/aegis/index.html:114
|
||
#: website/public/showcase/ctf/index.html:113
|
||
#: website/public/showcase/dx-ball/index.html:113
|
||
#: website/public/showcase/index.html:113
|
||
#: website/public/showcase/notion/index.html:113
|
||
#: website/public/showcase/th04/index.html:113
|
||
msgctxt "shared"
|
||
msgid "Get started"
|
||
msgstr "Bắt đầu"
|
||
|
||
#: 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/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 "Guides"
|
||
msgstr "Hướng dẫn"
|
||
|
||
#: website/public/blog/index.html:236
|
||
#: website/public/blog/reverse-engineering-models/index.html:875
|
||
#: website/public/blog/touhou-reconstruction/index.html:1072
|
||
#: website/public/examples/dino-lab/index.html:467
|
||
#: website/public/faq/index.html:565
|
||
#: website/public/first-investigation/index.html:515
|
||
#: website/public/get-started/index.html:874
|
||
#: website/public/guides/browser/index.html:499
|
||
#: website/public/guides/index.html:274
|
||
#: website/public/guides/javascript/index.html:495
|
||
#: website/public/guides/native/index.html:501 website/public/index.html:1183
|
||
#: website/public/showcase/aegis/index.html:800
|
||
#: website/public/showcase/ctf/index.html:769
|
||
#: website/public/showcase/dx-ball/index.html:777
|
||
#: website/public/showcase/index.html:309
|
||
#: website/public/showcase/notion/index.html:623
|
||
#: website/public/showcase/th04/index.html:792
|
||
msgctxt "shared"
|
||
msgid "Source"
|
||
msgstr "Mã nguồn"
|
||
|
||
#: website/public/blog/index.html:237
|
||
#: website/public/blog/reverse-engineering-models/index.html:876
|
||
#: website/public/blog/touhou-reconstruction/index.html:1073
|
||
#: website/public/examples/dino-lab/index.html:468
|
||
#: website/public/faq/index.html:566
|
||
#: website/public/first-investigation/index.html:516
|
||
#: website/public/get-started/index.html:875
|
||
#: website/public/guides/browser/index.html:500
|
||
#: website/public/guides/index.html:275
|
||
#: website/public/guides/javascript/index.html:496
|
||
#: website/public/guides/native/index.html:502 website/public/index.html:1184
|
||
#: website/public/showcase/aegis/index.html:801
|
||
#: website/public/showcase/ctf/index.html:770
|
||
#: website/public/showcase/dx-ball/index.html:778
|
||
#: website/public/showcase/index.html:310
|
||
#: website/public/showcase/notion/index.html:624
|
||
#: website/public/showcase/th04/index.html:793
|
||
msgctxt "shared"
|
||
msgid "MIT license"
|
||
msgstr "Giấy phép MIT"
|
||
|
||
#: website/public/blog/index.html:238
|
||
#: website/public/blog/reverse-engineering-models/index.html:877
|
||
#: website/public/blog/touhou-reconstruction/index.html:1074
|
||
#: website/public/examples/dino-lab/index.html:469
|
||
#: website/public/faq/index.html:567
|
||
#: website/public/first-investigation/index.html:517
|
||
#: website/public/get-started/index.html:876
|
||
#: website/public/guides/browser/index.html:501
|
||
#: website/public/guides/index.html:276
|
||
#: website/public/guides/javascript/index.html:497
|
||
#: website/public/guides/native/index.html:503 website/public/index.html:1185
|
||
#: website/public/showcase/aegis/index.html:802
|
||
#: website/public/showcase/ctf/index.html:771
|
||
#: website/public/showcase/dx-ball/index.html:779
|
||
#: website/public/showcase/index.html:311
|
||
#: website/public/showcase/notion/index.html:625
|
||
#: website/public/showcase/th04/index.html:794
|
||
msgctxt "shared"
|
||
msgid "Join the community"
|
||
msgstr "Tham gia cộng đồng"
|
||
|
||
#: website/public/blog/index.html:239
|
||
#: website/public/blog/reverse-engineering-models/index.html:878
|
||
#: website/public/blog/touhou-reconstruction/index.html:1075
|
||
#: website/public/examples/dino-lab/index.html:470
|
||
#: website/public/faq/index.html:568
|
||
#: website/public/first-investigation/index.html:518
|
||
#: website/public/get-started/index.html:877
|
||
#: website/public/guides/browser/index.html:502
|
||
#: website/public/guides/index.html:277
|
||
#: website/public/guides/javascript/index.html:498
|
||
#: website/public/guides/native/index.html:504 website/public/index.html:1186
|
||
#: website/public/showcase/aegis/index.html:803
|
||
#: website/public/showcase/ctf/index.html:772
|
||
#: website/public/showcase/dx-ball/index.html:780
|
||
#: website/public/showcase/index.html:312
|
||
#: website/public/showcase/notion/index.html:626
|
||
#: website/public/showcase/th04/index.html:795
|
||
msgctxt "shared"
|
||
msgid "Follow us on X"
|
||
msgstr "Theo dõi trên X"
|
||
|
||
#: website/public/examples/dino-lab/index.html:306
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "REA · selected script source"
|
||
msgstr "REA * nguồn tập lệnh đã chọn"
|
||
|
||
#: website/public/first-investigation/index.html:374
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Source"
|
||
msgstr "Mã nguồn"
|
||
|
||
#: website/public/first-investigation/index.html:428
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "Expected formatter output"
|
||
msgstr "Đầu ra định dạng dự kiến"
|
||
|
||
#: website/public/guides/index.html:219
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Instructions"
|
||
msgstr "Hướng dẫn"
|
||
|
||
#: website/public/guides/index.html:220
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Caller"
|
||
msgstr "Người gọi"
|
||
|
||
#: website/public/guides/index.html:221
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Constants"
|
||
msgstr "Hằng số"
|
||
|
||
#: website/public/guides/index.html:222
|
||
msgctxt "page:guides/index.html"
|
||
msgid "C function"
|
||
msgstr "Chức năng C"
|
||
|
||
#: website/public/guides/index.html:237
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Button"
|
||
msgstr "Nút"
|
||
|
||
#: website/public/guides/index.html:238
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Preload API"
|
||
msgstr "TẢI TRƯỚC API"
|
||
|
||
#: website/public/guides/index.html:239
|
||
msgctxt "page:guides/index.html"
|
||
msgid "IPC"
|
||
msgstr "IPC"
|
||
|
||
#: website/public/guides/index.html:239
|
||
msgctxt "page:guides/index.html"
|
||
msgid "CSV file"
|
||
msgstr "CSV tập tin"
|
||
|
||
#: website/public/guides/index.html:259
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Your click"
|
||
msgstr "Nhấp chuột của bạn"
|
||
|
||
#: website/public/guides/index.html:260
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Captured request"
|
||
msgstr "Yêu cầu bị bắt"
|
||
|
||
#: website/public/guides/index.html:261
|
||
msgctxt "page:guides/index.html"
|
||
msgid "Export script"
|
||
msgstr "Xuất tập lệnh"
|
||
|
||
#: website/public/guides/javascript/index.html:357
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "REA result · summary.ipc excerpt"
|
||
msgstr "KẾT quả REA · tóm tắt.trích đoạn ipc"
|
||
|
||
#: website/public/guides/native/index.html:384
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "REA instruction excerpt · 0x406409"
|
||
msgstr "TRÍCH ĐOẠN HƯỚNG dẫn REA · 0x406409"
|
||
|
||
#: website/public/guides/native/index.html:398
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "REA caller excerpt · 0x411f5b"
|
||
msgstr "REA hàm gọi trích đoạn * 0x411f5b"
|
||
|
||
#: website/public/guides/native/index.html:412
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "REA byte results · interpreted as little-endian doubles"
|
||
msgstr "KẾT quả byte REA * được hiểu là đôi endian nhỏ"
|
||
|
||
#: website/public/guides/native/index.html:429
|
||
msgctxt "page:guides/native/index.html"
|
||
msgid "Recovered C · excerpt"
|
||
msgstr "Phục Hồi C · trích Đoạn"
|
||
|
||
#: website/public/index.html:232
|
||
msgctxt "page:index.html"
|
||
msgid "See how REA works ↓"
|
||
msgstr "Xem REA hoạt động thế nào ↓"
|
||
|
||
#: website/public/index.html:239
|
||
msgctxt "page:index.html"
|
||
msgid "Showcases →"
|
||
msgstr "Giới thiệu →"
|
||
|
||
#: website/public/index.html:749
|
||
msgctxt "page:index.html"
|
||
msgid "Selected settings from the inspected script"
|
||
msgstr "Cài đặt đã chọn từ tập lệnh được kiểm tra"
|
||
|
||
#: website/public/index.html:921
|
||
msgctxt "page:index.html"
|
||
msgid "Readable summary of the % handler"
|
||
msgstr "Tóm tắt có thể đọc được của trình xử lý %"
|
||
|
||
#: website/public/index.html:985
|
||
msgctxt "page:index.html"
|
||
msgid "REA · selected original instructions"
|
||
msgstr "REA * hướng dẫn ban đầu được chọn"
|
||
|
||
#: website/public/index.html:996
|
||
msgctxt "page:index.html"
|
||
msgid "Operator IDs · Microsoft’s source"
|
||
msgstr "Id nhà điều Hành * Nguồn Của Microsoft"
|
||
|
||
#: website/public/index.html:1170
|
||
msgctxt "page:index.html"
|
||
msgid "Follow @reatools on X"
|
||
msgstr "Theo dõi @ reatools Trên X"
|
||
|
||
#: website/public/showcase/aegis/index.html:399
|
||
#: website/public/showcase/aegis/index.html:431
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Agent → REA"
|
||
msgstr "Agent → REA"
|
||
|
||
#: website/public/showcase/aegis/index.html:409
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "REA → agent · selected results"
|
||
msgstr "REA → agent · kết quả đã chọn"
|
||
|
||
#: website/public/showcase/aegis/index.html:445
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "REA → agent · methods and callers"
|
||
msgstr "REA → agent · phương pháp và hàm gọi"
|
||
|
||
#: website/public/showcase/aegis/index.html:515
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "REA · selected decompiled Java"
|
||
msgstr "REA * Đã chọn Java dịch ngược"
|
||
|
||
#: website/public/showcase/aegis/index.html:545
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Readable summary · agent's interpretation"
|
||
msgstr "Tóm tắt có thể đọc được · giải thích của agent"
|
||
|
||
#: website/public/showcase/aegis/index.html:600
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "REA · generateOTP, complete body"
|
||
msgstr "REA * generateOTP · cơ thể hoàn chỉnh"
|
||
|
||
#: website/public/showcase/aegis/index.html:718
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Download Aegis APK"
|
||
msgstr "Tải XUỐNG Aegis APK"
|
||
|
||
#: website/public/showcase/aegis/index.html:722
|
||
msgctxt "page:showcase/aegis/index.html"
|
||
msgid "Download Android analysis provider"
|
||
msgstr "Tải Xuống Nhà cung Cấp Phân Tích Android"
|
||
|
||
#: website/public/showcase/ctf/index.html:302
|
||
#: website/public/showcase/ctf/index.html:338
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Agent → REA"
|
||
msgstr "Agent → REA"
|
||
|
||
#: website/public/showcase/ctf/index.html:318
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "REA → agent · selected results"
|
||
msgstr "REA → agent · kết quả đã chọn"
|
||
|
||
#: website/public/showcase/ctf/index.html:350
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "REA → agent · selected instructions"
|
||
msgstr "REA → agent · hướng dẫn đã chọn"
|
||
|
||
#: website/public/showcase/ctf/index.html:413
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Agent → REA · read_bytes"
|
||
msgstr "Agent → REA * read_bytes"
|
||
|
||
#: website/public/showcase/ctf/index.html:420
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "REA → agent · seventh entries"
|
||
msgstr "REA → agent · mục thứ bảy"
|
||
|
||
#: website/public/showcase/ctf/index.html:688
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Original executable · SHA-256"
|
||
msgstr "Thực thi ban đầu * SHA-256"
|
||
|
||
#: website/public/showcase/ctf/index.html:724
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Download the original challenge"
|
||
msgstr "Tải xuống thử thách ban đầu"
|
||
|
||
#: website/public/showcase/ctf/index.html:728
|
||
msgctxt "page:showcase/ctf/index.html"
|
||
msgid "Download solver"
|
||
msgstr "Tải về người giải quyết"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:329
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "REA result · pseudocode excerpt"
|
||
msgstr "KẾT quả REA · đoạn trích mã giả"
|
||
|
||
#. {ph0}: <code>analyze_function</code>
|
||
#: website/public/showcase/dx-ball/index.html:352
|
||
#: website/public/showcase/dx-ball/index.html:376
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Agent → REA · {ph0}"
|
||
msgstr "Agent → REA · {ph0}"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:358
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "REA → agent · instruction excerpt"
|
||
msgstr "REA → agent · trích đoạn hướng dẫn"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:382
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "REA → agent · caller excerpt"
|
||
msgstr "REA → agent · hàm gọi trích đoạn"
|
||
|
||
#. {ph0}: <code>read_bytes</code>
|
||
#: website/public/showcase/dx-ball/index.html:400
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Agent → REA · two {ph0} requests"
|
||
msgstr "Agent → REA * hai {ph0} yêu cầu"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:410
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "REA byte results · decoded as doubles"
|
||
msgstr "REA byte kết quả * giải mã như đôi"
|
||
|
||
#: website/public/showcase/dx-ball/index.html:763
|
||
msgctxt "page:showcase/dx-ball/index.html"
|
||
msgid "Start with your own target"
|
||
msgstr "Bắt đầu với mục tiêu của riêng bạn"
|
||
|
||
#: website/public/showcase/index.html:212
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "APK"
|
||
msgstr "APK"
|
||
|
||
#: website/public/showcase/index.html:213
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Generating code"
|
||
msgstr "Tạo mã"
|
||
|
||
#: website/public/showcase/index.html:214
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Recovered rule"
|
||
msgstr "Quy tắc phục hồi"
|
||
|
||
#: website/public/showcase/index.html:215
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Adjustable clock"
|
||
msgstr "Đồng hồ có thể điều chỉnh"
|
||
|
||
#: website/public/showcase/index.html:230
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Binary"
|
||
msgstr "Nhị phân"
|
||
|
||
#: website/public/showcase/index.html:231
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Checking code"
|
||
msgstr "Kiểm tra mã"
|
||
|
||
#: website/public/showcase/index.html:232
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Equations"
|
||
msgstr "Phương trình"
|
||
|
||
#: website/public/showcase/index.html:233
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Correct!"
|
||
msgstr "Đúng!"
|
||
|
||
#: website/public/showcase/index.html:249
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Executable"
|
||
msgstr "Thực thi"
|
||
|
||
#: website/public/showcase/index.html:250
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "REA findings"
|
||
msgstr "PHÁT HIỆN REA"
|
||
|
||
#: website/public/showcase/index.html:251
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Recovered C"
|
||
msgstr "Phục Hồi C"
|
||
|
||
#: website/public/showcase/index.html:252
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Validation"
|
||
msgstr "Xác nhận"
|
||
|
||
#: website/public/showcase/index.html:267
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Packaged app"
|
||
msgstr "Ứng dụng đóng gói"
|
||
|
||
#: website/public/showcase/index.html:268
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Exposed API"
|
||
msgstr "Api tiếp xúc"
|
||
|
||
#: website/public/showcase/index.html:269
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "IPC wrappers"
|
||
msgstr "GIẤY GÓI IPC"
|
||
|
||
#: website/public/showcase/index.html:270
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Clipboard"
|
||
msgstr "Clipboard"
|
||
|
||
#: website/public/showcase/index.html:285
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Original DOS code"
|
||
msgstr "Mã DOS gốc"
|
||
|
||
#: website/public/showcase/index.html:286
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "REA instructions"
|
||
msgstr "REA hướng dẫn"
|
||
|
||
#: website/public/showcase/index.html:287
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Angle calculation"
|
||
msgstr "Tính toán góc"
|
||
|
||
#: website/public/showcase/index.html:288
|
||
msgctxt "page:showcase/index.html"
|
||
msgid "Bullet ring"
|
||
msgstr "Vòng đạn"
|
||
|
||
#: website/public/showcase/notion/index.html:304
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Exposed page API"
|
||
msgstr "Api trang tiếp xúc"
|
||
|
||
#: website/public/showcase/notion/index.html:310
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Renderer IPC call"
|
||
msgstr "Trình kết XUẤT CUỘC GỌI IPC"
|
||
|
||
#: website/public/showcase/notion/index.html:472
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Sent to the system clipboard"
|
||
msgstr "Gửi đến clipboard hệ thống"
|
||
|
||
#: website/public/showcase/notion/index.html:480
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Saved locally by Notion"
|
||
msgstr "Lưu cục BỘ BỞI Notion"
|
||
|
||
#: website/public/showcase/notion/index.html:525
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Markdown input"
|
||
msgstr "Đầu vào đánh dấu"
|
||
|
||
#: website/public/showcase/notion/index.html:532
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Structured parser output · excerpt"
|
||
msgstr "Đầu ra trình phân tích cú pháp có cấu trúc · đoạn trích"
|
||
|
||
#: website/public/showcase/notion/index.html:609
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "Analyze your own app"
|
||
msgstr "Phân tích ứng dụng của riêng bạn"
|
||
|
||
#: website/public/showcase/th04/index.html:369
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Agent → REA"
|
||
msgstr "Agent → REA"
|
||
|
||
#: website/public/showcase/th04/index.html:378
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "REA → agent · selected fields"
|
||
msgstr "REA → agent * các trường được chọn"
|
||
|
||
#. {ph0}: <code>analyze_function</code>
|
||
#: website/public/showcase/th04/index.html:397
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Agent → REA · {ph0}"
|
||
msgstr "Agent → REA · {ph0}"
|
||
|
||
#: website/public/showcase/th04/index.html:403
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "REA → agent · instruction excerpt"
|
||
msgstr "REA → agent · trích đoạn hướng dẫn"
|
||
|
||
#: website/public/showcase/th04/index.html:424
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Same function result · aim excerpt"
|
||
msgstr "Kết quả chức năng tương tự * aim trích đoạn"
|
||
|
||
#: website/public/showcase/th04/index.html:433
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Corresponding maintained C++"
|
||
msgstr "Tương Ứng Duy Trì C C"
|
||
|
||
#: website/public/showcase/th04/index.html:613
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Ring macro · TH04 branch, excerpt"
|
||
msgstr "Vòng macro * chi NHÁNH TH04, đoạn trích"
|
||
|
||
#: website/public/showcase/th04/index.html:623
|
||
msgctxt "page:showcase/th04/index.html"
|
||
msgid "Angle and velocity · source excerpt"
|
||
msgstr "Góc và vận tốc * trích đoạn nguồn"
|
||
|
||
#: website/public/assets/home.js:29
|
||
msgctxt "runtime"
|
||
msgid "Press % to see what happens to 10."
|
||
msgstr "Nhấn % để xem điều gì xảy ra với 10."
|
||
|
||
#: website/public/assets/home.js:32
|
||
msgctxt "runtime"
|
||
msgid "10% of 200 is 20. Press = to add it."
|
||
msgstr "10% của 200 là 20. Nhấn = để thêm nó."
|
||
|
||
#: website/public/assets/home.js:33
|
||
msgctxt "runtime"
|
||
msgid "For multiplication, 10 becomes 0.1. Press = to multiply."
|
||
msgstr "Đối với phép nhân, 10 trở thành 0,1. Nhấn = để nhân."
|
||
|
||
#: scripts/website_i18n.py
|
||
msgctxt "runtime"
|
||
msgid "Translation is being updated. Read this page in English for now."
|
||
msgstr ""
|
||
"Bản dịch đang được cập nhật. Đọc trang này bằng tiếng anh ngay bây giờ."
|
||
|
||
#. {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:425
|
||
#, 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}SỬ DỤNG REA để phân tích {ph3} và giải thích cách nó xuất dữ"
|
||
" liệu. Hiển thị mã và vị trí nguồn có liên quan.{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:243
|
||
#, 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}Cài đặt REA và kết nối với trợ lý lập trình này bằng {ph3}. "
|
||
"Trước tiên, cho tôi xem kế hoạch và chờ tôi chấp thuận. Sau đó, kiểm tra kết"
|
||
" quả cài đặt.{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:293
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid ""
|
||
"{ph0}›{ph1}{ph2}Download {ph3} into a new example folder and unpack it. Use "
|
||
"REA to find what happens when I click Export notes. Show where {ph4} is "
|
||
"written, which fields it contains, and the relevant files and "
|
||
"lines.{ph5}{ph6}{ph7}"
|
||
msgstr ""
|
||
"{ph0}›{ph1}{ph2}Tải về {ph3} vào một thư mục ví dụ mới và giải nén nó. Sử "
|
||
"dụng REA để tìm những gì xảy ra khi tôi nhấp Vào xuất ghi chú. Hiển thị ở "
|
||
"đâu {ph4} được viết, trường nào chứa và các tệp và dòng có liên "
|
||
"quan.{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:432
|
||
#, 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}Cài đặt REA và kết nối với trợ lý lập trình này bằng {ph3}. "
|
||
"Trước tiên, cho tôi xem kế hoạch và chờ tôi chấp thuận. Sau đó, kiểm tra kết"
|
||
" quả cài đặt.{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:269
|
||
#, 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}Cài đặt REA và kết nối với trợ lý lập trình này bằng {ph3}. "
|
||
"Trước tiên, cho tôi xem kế hoạch và chờ tôi chấp thuận. Sau đó, kiểm tra kết"
|
||
" quả cài đặt.{ph4}{ph5}{ph6}"
|
||
|
||
#. {ph0}: <span class="prompt-symbol" aria-hidden="true">
|
||
#. {ph1}: </span >
|
||
#. {ph2}: <span id="website-project-prompt" >
|
||
#. {ph3}: <span translate="no">https://rea.tools/</span>
|
||
#. {ph4}: </span >
|
||
#. {ph5}: <span class="terminal-cursor" aria-hidden="true">
|
||
#. {ph6}: </span>
|
||
#: website/public/index.html:1072
|
||
#, 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}SỬ DỤNG REA để kiểm tra {ph3}. Sao chép trang web này cho "
|
||
"tôi.{ph4}{ph5}{ph6}"
|
||
|
||
#. {ph0}: <span translate="no">dino-speed.js</span>
|
||
#: website/public/examples/dino-lab/index.html:320
|
||
#, python-brace-format
|
||
msgctxt "page:examples/dino-lab/index.html"
|
||
msgid "Reconstruction · {ph0}"
|
||
msgstr "Tái thiết · {ph0}"
|
||
|
||
#. {ph0}: <span translate="no">Node.js</span>
|
||
#: website/public/faq/index.html:218
|
||
#, 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 ""
|
||
"Với {ph0} và npm có sẵn, chạy thiết lập, chọn agent mã hóa của bạn và xem "
|
||
"xét các thay đổi được đề xuất."
|
||
|
||
#. {ph0}: <span translate="no">Node.js</span>
|
||
#: website/public/first-investigation/index.html:202
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "A supplied example · {ph0} and npm · Your coding agent"
|
||
msgstr "Một ví dụ được cung cấp · {ph0} và npm * Agent mã hóa của bạn"
|
||
|
||
#. {ph0}: <span translate="no">Node.js</span>
|
||
#. {ph1}: <a href="../get-started/">
|
||
#. {ph2}: </a >
|
||
#: website/public/first-investigation/index.html:221
|
||
#, 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 ""
|
||
"Sử dụng một tác nhân mã hóa như Claude Code, Codex hoặc Cursor. Bạn sẽ cần "
|
||
"{ph0} và npm; các {ph1}danh sách hướng dẫn thiết lập các phiên bản được hỗ "
|
||
"trợ{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:339
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0}Page · {ph1}{ph2}{ph3}Export notes{ph4}{ph5}Calls {ph6}.{ph7}"
|
||
msgstr ""
|
||
"{ph0}Trang · {ph1}{ph2}{ph3}Xuất ghi chú{ph4}{ph5}Cuộc gọi {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:347
|
||
#, 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}Cầu · {ph1}{ph2}{ph3}{ph4}{ph5}{ph6}Gửi một tin nhắn có tên đến quy "
|
||
"trình chính.{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:355
|
||
#, 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}Xử lý · {ph1}{ph2}{ph3}Viết {ph4}{ph5}{ph6}Gọi bộ định dạng trong {ph7}"
|
||
" và viết tập tin.{ph8}"
|
||
|
||
#. {ph0}: <span translate="no">main.js</span>
|
||
#: website/public/first-investigation/index.html:373
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0} · lines 8–12"
|
||
msgstr "{ph0} * dòng 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:415
|
||
#, 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}Dự ĐOÁN CSV cho một lưu ý với id 1 và tiêu đề {ph3}. Sau đó "
|
||
"chạy ví dụ {ph4} định dạng với {ph5} để kiểm tra nó. Hiển thị dự đoán và đầu"
|
||
" ra thực tế.{ph6}{ph7}{ph8}"
|
||
|
||
#. {ph0}: <span translate="no">Node.js</span>
|
||
#: website/public/first-investigation/index.html:433
|
||
#, 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 ""
|
||
"Tiêu đề nằm trong một trường được trích dẫn; mỗi dấu ngoặc kép được nhân "
|
||
"đôi. Điều này kiểm tra trực tiếp bộ định dạng với {ph0}."
|
||
|
||
#. {ph0}: <span translate="no">Node.js</span>
|
||
#: website/public/first-investigation/index.html:446
|
||
#, python-brace-format
|
||
msgctxt "page:first-investigation/index.html"
|
||
msgid "{ph0} · CSV formatter"
|
||
msgstr "{ph0} · CSV định dạng"
|
||
|
||
#. {ph0}: <span translate="no">Node.js</span>
|
||
#. {ph1}: <span translate="no">Node.js</span>
|
||
#: website/public/get-started/index.html:200
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"You'll need {ph0} 22 (22.19+), 24 (24.11+) or 26+. npm comes with {ph1}."
|
||
msgstr ""
|
||
"Bạn sẽ cần {ph0} 22 (22.19+), 24 (24.11+) hoặc 26+. npm đi kèm với {ph1}."
|
||
|
||
#. {ph0}: <span translate="no">Node.js</span>
|
||
#: website/public/get-started/index.html:205
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid "Don't have {ph0}, or not sure?"
|
||
msgstr "Không có {ph0}, hay không chắc chắn?"
|
||
|
||
#. {ph0}: <code>node -v</code>
|
||
#. {ph1}: <span translate="no">Node.js</span>
|
||
#: website/public/get-started/index.html:224
|
||
#, python-brace-format
|
||
msgctxt "page:get-started/index.html"
|
||
msgid ""
|
||
"If {ph0} prints v22.19+, v24.11+ or v26+, you're ready. If it prints an "
|
||
"older version or \"not recognized\" / \"command not found\", install {ph1} "
|
||
"24 LTS:"
|
||
msgstr ""
|
||
"Nếu {ph0} bản in v22.19+, v24.11+ hoặc v26+, bạn đã sẵn sàng. Nếu nó in "
|
||
"phiên bản cũ hơn hoặc \"không được nhận dạng\" / \"không tìm thấy lệnh\", "
|
||
"hãy cài đặt {ph1} 24 KG:"
|
||
|
||
#. {ph0}: <span translate="no">export.js</span>
|
||
#: website/public/guides/browser/index.html:441
|
||
#, python-brace-format
|
||
msgctxt "page:guides/browser/index.html"
|
||
msgid "{ph0} · example source excerpt"
|
||
msgstr "{ph0} * trích đoạn nguồn ví dụ"
|
||
|
||
#. {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:459
|
||
#, 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}Mở ví dụ{ph1} · {ph2}Tải về {ph3}{ph4} · {ph5}Tải về {ph6}{ph7}"
|
||
|
||
#. {ph0}: <span translate="no">renderer.js</span>
|
||
#: website/public/guides/javascript/index.html:309
|
||
#: website/public/guides/javascript/index.html:325
|
||
#: website/public/guides/javascript/index.html:340
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid "{ph0} · example source"
|
||
msgstr "{ph0} * nguồn ví dụ"
|
||
|
||
#. {ph0}: <code>notes-example</code>
|
||
#. {ph1}: <span translate="no">Node.js</span>
|
||
#: website/public/guides/javascript/index.html:374
|
||
#, python-brace-format
|
||
msgctxt "page:guides/javascript/index.html"
|
||
msgid ""
|
||
"Download the example and unzip it. The archive contains the complete {ph0} "
|
||
"folder. Analyze it with {ph1} and npm; Electron is not needed for this "
|
||
"example."
|
||
msgstr ""
|
||
"Tải xuống ví dụ và giải nén nó. Kho lưu trữ chứa đầy đủ {ph0} thư mục. Phân "
|
||
"tích nó với {ph1} và npm; Electron không cần thiết cho ví dụ này."
|
||
|
||
#. {ph0}: <span translate="no">Node.js</span>
|
||
#. {ph1}: <a href="get-started/">
|
||
#. {ph2}: </a>
|
||
#: website/public/index.html:294
|
||
#, 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 ""
|
||
"Lần đầu tiên, hoặc mất tích {ph0} hoặc một agent mã hóa? {ph1}Làm theo hướng"
|
||
" dẫn thiết lập từng bước →{ph2}"
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: <span translate="no">200 + 10%</span>
|
||
#. {ph2}: </strong >
|
||
#: website/public/index.html:318
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "One question: {ph0}why does Calculator give 220 for {ph1}?{ph2}"
|
||
msgstr "Ví dụ: {ph0}vì sao Máy tính cho kết quả 220 khi tính {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:506
|
||
#, 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}Sử dụng REA để kiểm tra Windows Máy tính. Tại sao {ph3} cho "
|
||
"220?{ph4}{ph5}{ph6}"
|
||
|
||
#. {ph0}: <span translate="no">index.js</span>
|
||
#: website/public/index.html:691
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "REA · loaded {ph0} · selected lines"
|
||
msgstr "REA · đã tải {ph0} * các dòng đã chọn"
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: <span translate="no">200 + 10%</span>
|
||
#. {ph2}: </strong>
|
||
#: website/public/index.html:795
|
||
#, 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 ""
|
||
"Chúng tôi đã thấy tại sao {ph0}{ph1} cho 220.{ph2} Bây giờ chúng ta hãy khôi"
|
||
" phục các quy tắc cho cả + và ×, và thử chúng."
|
||
|
||
#. {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:952
|
||
#, 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 đọc {ph1}{ph2}{ph3}Nó khởi chạy ứng dụng Máy Tính{ph4}{ph5}Mã "
|
||
"mở ra {ph6}. Sau đó, tác nhân chọn thư viện của ứng dụng đã cài đặt.{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:278
|
||
#, 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}Dùng REA phân tích {ph3}. Giải thích cách tạo mã đăng nhập "
|
||
"gồm sáu chữ số và vì sao mã thay đổi mỗi 30 giây. Tạo một bản demo nhỏ cho "
|
||
"phép tôi thay đổi thời gian.{ph4}{ph5}{ph6}"
|
||
|
||
#. {ph0}: <span translate="no">preload.js</span>
|
||
#: website/public/showcase/notion/index.html:342
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "tab_browser_view/{ph0} · API member"
|
||
msgstr "tab_browser_view/{ph0} * THÀNH VIÊN API"
|
||
|
||
#. {ph0}: <span translate="no">preload.js</span>
|
||
#: website/public/showcase/notion/index.html:371
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "tab_browser_view/{ph0} · IPC helper"
|
||
msgstr "tab_browser_view/{ph0} * TRỢ GIÚP IPC"
|
||
|
||
#. {ph0}: <span translate="no">index.js</span>
|
||
#: website/public/showcase/notion/index.html:402
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "main/{ph0} · handler helper"
|
||
msgstr "chính/{ph0} * trình trợ giúp xử lý"
|
||
|
||
#. {ph0}: <span translate="no">index.js</span>
|
||
#: website/public/showcase/notion/index.html:430
|
||
#, python-brace-format
|
||
msgctxt "page:showcase/notion/index.html"
|
||
msgid "main/{ph0} · clipboard receiver"
|
||
msgstr "chính/{ph0} * bộ thu clipboard"
|
||
|
||
# Use the same label as the Get started navigation link. The arrow is
|
||
# decorative.
|
||
#. {ph0}: <span class="button-arrow" aria-hidden="true" data-i18n-skip
|
||
#. >→</span >
|
||
#: website/public/index.html:233
|
||
#, python-brace-format
|
||
msgctxt "page:index.html"
|
||
msgid "Get started {ph0}"
|
||
msgstr "Bắt đầu {ph0}"
|
||
|
||
#: website/public/assets/theme.js:52
|
||
msgctxt "runtime"
|
||
msgid "Switch to light mode"
|
||
msgstr "Chuyển sang giao diện sáng"
|
||
|
||
#: website/public/assets/theme.js:53
|
||
msgctxt "runtime"
|
||
msgid "Switch to dark mode"
|
||
msgstr "Chuyển sang giao diện tối"
|
||
|
||
#. {ph0}: <a
|
||
#. href="https://github.com/morluto/rea/blob/main/docs/guides/web/web-network-
|
||
#. captures.md" >
|
||
#. {ph1}: </a >
|
||
#: website/public/guides/browser/index.html:480
|
||
#, 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 ""
|
||
"Để kiểm tra phần thân yêu cầu và phản hồi HTTP, hãy dùng {ph0}Fiddler "
|
||
"Everywhere: bản ghi SAZ, MCP và kỹ năng công khai{ph1}. Xuất SAZ ho?c HAR "
|
||
"1.2 để lấy Evidence từ bản ghi trong REA ngoại tuyến, hoặc kết nối máy chủ "
|
||
"MCP của Everywhere để kiểm tra lưu lượng đã ghi cùng trợ lý của bạn."
|
||
|
||
#. {ph0}: <br />
|
||
#: website/public/blog/index.html:200
|
||
#, python-brace-format
|
||
msgctxt "page:blog/index.html"
|
||
msgid "Model specialization{ph0}Essay"
|
||
msgstr "Mô hình chuyên biệt{ph0}Bài viết"
|
||
|
||
#: website/public/blog/index.html:202
|
||
msgctxt "page:blog/index.html"
|
||
msgid "Does reverse engineering need a bigger model?"
|
||
msgstr "Kỹ thuật đảo ngược có cần mô hình lớn hơn không?"
|
||
|
||
#: website/public/blog/index.html:203
|
||
msgctxt "page:blog/index.html"
|
||
msgid ""
|
||
"What Touhou reconstruction suggests about general models, specialist models "
|
||
"and learning from compiler feedback."
|
||
msgstr ""
|
||
"Những suy nghĩ từ việc tái dựng Touhou về mô hình tổng quát, mô hình chuyên "
|
||
"biệt và cách học từ phản hồi của trình biên dịch."
|
||
|
||
#: website/public/blog/index.html:210
|
||
msgctxt "page:blog/index.html"
|
||
msgid "By N0zoM1z0 · 13 October 2026"
|
||
msgstr "Bởi N0zoM1z0 · 13 tháng 10 năm 2026"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:103
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Skip to content"
|
||
msgstr "Bỏ qua nội dung"
|
||
|
||
#. {ph0}: <a href="../../">
|
||
#. {ph1}: </a>
|
||
#. {ph2}: <a href="../">
|
||
#. {ph3}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:194
|
||
#, 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} / Mô hình và kỹ thuật đảo ngược"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:197
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Essay"
|
||
msgstr "Tiểu luận"
|
||
|
||
# Reviewed for technical meaning and readability; preserve the distinction
|
||
# between historical evidence and proposed experiments.
|
||
#: website/public/blog/reverse-engineering-models/index.html:198
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Does reverse engineering need a bigger model?"
|
||
msgstr "Kỹ thuật đảo ngược có cần một mô hình lớn hơn không?"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:199
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "By N0zoM1z0 · 13 October 2026"
|
||
msgstr "Bởi N0zoM1z0 · 13 tháng 10 năm 2026"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:201
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Takeaway"
|
||
msgstr "Điểm chính"
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:203
|
||
#, 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}Khả năng của mô hình ảnh hưởng đến những giả thuyết mà tác nhân AI có "
|
||
"thể đề xuất.{ph1} Các phiên sau đã giải quyết các vấn đề mà công việc trước "
|
||
"đó chưa được giải quyết."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:211
|
||
#, 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}Một trình biên dịch quen thuộc cung cấp các mẫu cụ thể để một mô hình "
|
||
"chuyên biệt học.{ph1} Một số kết quả khớp mã máy chính xác phụ thuộc vào các"
|
||
" mẫu mã nguồn cụ thể, có thể tái sử dụng."
|
||
|
||
#. {ph0}: <strong>
|
||
#. {ph1}: </strong>
|
||
#: website/public/blog/reverse-engineering-models/index.html:218
|
||
#, 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}Bao gồm kiến thức kho lưu trữ trong một so sánh công bằng.{ph1} Một mô "
|
||
"hình nhỏ hơn với khả năng truy xuất kiến thức tốt có thể đã có đủ thông tin "
|
||
"để đạt được tiến bộ."
|
||
|
||
#. {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}Train the next useful experiment, and test its oracle.{ph1} The value "
|
||
"of feedback depends on what the checker actually verifies."
|
||
msgstr ""
|
||
"{ph0}Huấn luyện mô hình để chọn thử nghiệm hữu ích tiếp theo và kiểm tra "
|
||
"công cụ xác minh của nó.{ph1} Phản hồi chỉ hữu ích trong phạm vi công cụ xác"
|
||
" minh những điều đúng."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:230
|
||
#, 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}Đánh giá kết quả tái thiết đã được xác minh cùng với thời gian và chi "
|
||
"phí.{ph1} Đó là những gì tôi muốn đo lường cho quy trình làm việc hoàn chỉnh"
|
||
" của tác nhân AI."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:241
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "In this article"
|
||
msgstr "Trong bài viết này"
|
||
|
||
#. {ph0}: <a href="#model-capability">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:243
|
||
#, python-brace-format
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "{ph0}What better models changed{ph1}"
|
||
msgstr "{ph0}Mô hình mạnh hơn đã thay đổi điều gì?{ph1}"
|
||
|
||
#. {ph0}: <a href="#specialization">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:244
|
||
#, python-brace-format
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "{ph0}Why specialize?{ph1}"
|
||
msgstr "{ph0}Tại sao nên chuyên môn hóa?{ph1}"
|
||
|
||
#. {ph0}: <a href="#repository-knowledge">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:245
|
||
#, python-brace-format
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "{ph0}Where experience lives{ph1}"
|
||
msgstr "{ph0}Kinh nghiệm này nên được lưu trữ ở đâu?{ph1}"
|
||
|
||
#. {ph0}: <a href="#learning-search">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:246
|
||
#, python-brace-format
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "{ph0}Learning the next experiment{ph1}"
|
||
msgstr "{ph0}Học thí nghiệm hữu ích tiếp theo{ph1}"
|
||
|
||
#. {ph0}: <a href="#re-and-rl">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:247
|
||
#, python-brace-format
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "{ph0}RE and reinforcement learning{ph1}"
|
||
msgstr "{ph0}Học kỹ thuật đảo ngược và tăng cường{ph1}"
|
||
|
||
#. {ph0}: <a href="#oracle">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:248
|
||
#, python-brace-format
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "{ph0}When the oracle is wrong{ph1}"
|
||
msgstr "{ph0}Khi công cụ xác minh sai{ph1}"
|
||
|
||
#. {ph0}: <a href="#comparison">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:249
|
||
#, python-brace-format
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "{ph0}A comparison worth running{ph1}"
|
||
msgstr "{ph0}Một so sánh đáng chạy{ph1}"
|
||
|
||
#. {ph0}: <a href="#future-agent">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:250
|
||
#, python-brace-format
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "{ph0}What kind of agent?{ph1}"
|
||
msgstr "{ph0}Điều này gợi ý loại tác nhân AI nào?{ph1}"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:258
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "What better models changed"
|
||
msgstr "Mô hình mạnh hơn đã thay đổi điều gì?"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:259
|
||
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 ""
|
||
"Kể từ tháng 8 năm 2026, tôi đã khám phá mức độ kỹ thuật đảo ngược mà một tác"
|
||
" nhân có thể thực hiện khi có quyền truy cập vào một chương trình và cách "
|
||
"kiểm tra công việc của nó. Phần lớn kinh nghiệm của tôi đến từ việc xây dựng"
|
||
" lại trò chơi, đặc biệt là Touhou. Khi tôi thay đổi mô hình, các kho lưu trữ"
|
||
" đã lưu giữ một bản ghi về những gì mỗi phiên đã khôi phục được."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:267
|
||
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 ""
|
||
"Phần lớn công việc hướng tới tái dựng chính xác: biên dịch mã nguồn đang "
|
||
"được duy trì bằng chuỗi công cụ lịch sử có phiên bản cố định, rồi kiểm tra "
|
||
"xem nó có tái tạo hàm đích hay không. Khi mô hình sau giải quyết được điểm "
|
||
"mà công việc trước bị mắc kẹt, thay đổi trong mã nguồn cho thấy điều gì đã "
|
||
"giúp tiến triển."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:274
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "The temporary values had to stay alive together"
|
||
msgstr "Các biến tạm thời cần có thời gian tồn tại chồng chéo"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:275
|
||
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 ""
|
||
"Phần lớn logic của hàm tấn công TH09 đã được xây dựng lại, nhưng trình biên "
|
||
"dịch vẫn lưu trữ các kết quả tạm thời khác với kết quả ban đầu. Vấn đề còn "
|
||
"lại là những kết quả đó cần tồn tại trong bao lâu và khi nào bộ nhớ của "
|
||
"chúng có thể được sử dụng lại."
|
||
|
||
#. {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:282
|
||
#, 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 ""
|
||
"Bản ghi phiên {ph0}GPT-6-Sol{ph1} đã báo cáo sự không khớp này sau khi kiểm "
|
||
"tra một số cách sắp xếp mã nguồn thông thường. Khi {ph2}GPT-6.1-Sol kiểm tra"
|
||
" lại vấn đề{ph3}, nó đã đề xuất một giả thuyết hữu ích về thời gian tồn tại "
|
||
"của các biến tạm thời này."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:296
|
||
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 ""
|
||
"Hàm này tạo ra các kết quả tạm thời và sao chép chúng vào các vị trí hoạt "
|
||
"ảnh. Trong C++, kết quả tạm thời vẫn tồn tại cho đến khi biểu thức sử dụng "
|
||
"nó kết thúc. Việc nhóm các hoạt động thực tế thành một biểu thức giúp giữ "
|
||
"cho các kết quả đó tồn tại cùng nhau, do đó trình biên dịch không thể sử "
|
||
"dụng lại cùng một bộ lưu trữ cho tất cả chúng nữa."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:303
|
||
#, 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 ""
|
||
"Một kết quả vẫn được chia sẻ bộ nhớ với giá trị được sử dụng sau này để kiểm"
|
||
" tra xung đột. Việc đưa ra giá trị đó trong thời gian tồn tại của chính nó "
|
||
"đã giải quyết được sự chồng chéo còn lại. Sau một số thử nghiệm có mục tiêu,"
|
||
" {ph0}việc biên dịch lại rõ ràng từ nguồn đã xác nhận rằng hàm đầy đủ khớp "
|
||
"với{ph1}."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:312
|
||
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 ""
|
||
"Tôi quan tâm đến việc khám phá và thử nghiệm hỗ trợ lẫn nhau như thế nào. "
|
||
"Giả thuyết về thời gian tồn tại của đối tượng tạm thời đã mang lại cho tác "
|
||
"nhân AI một hướng đi mới. Phản hồi của trình biên dịch đã giúp nó tinh chỉnh"
|
||
" giả thuyết đó thành một cách sắp xếp mã nguồn phù hợp."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:318
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "A different control-flow graph"
|
||
msgstr "Biểu đồ luồng điều khiển khác"
|
||
|
||
#. {ph0}: <a
|
||
#. href="https://github.com/N0zoM1z0/th09/commit/f8d12d72aaf02212ee1b585a8f3f86d7ed000269"
|
||
#. >
|
||
#. {ph1}: </a >
|
||
#: website/public/blog/reverse-engineering-models/index.html:319
|
||
#, 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 ""
|
||
"Hàm TH09 thứ hai cho biết tại sao hướng đi mới đó lại quan trọng. Ở đây, trở"
|
||
" ngại là làm thế nào một số chi nhánh chia sẻ công việc cuối cùng của họ. "
|
||
"Công việc trước đó của {ph0}GPT-6.1-Sol{ph1} có các phần của hàm khớp với "
|
||
"nhau, nhưng các nhánh vẫn được nối với nhau khác với ban đầu."
|
||
|
||
#. {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:330
|
||
#, 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 đã thay đổi biểu đồ luồng điều khiển xung quanh{ph1}. Các "
|
||
"đường dẫn chính hiện đã dẫn đến bản cập nhật cuối cùng được chia sẻ và quay "
|
||
"trở lại. Trong cấu trúc nguồn đó, trình biên dịch kết hợp các nhánh giống "
|
||
"như bản gốc. Chức năng hoàn chỉnh đã khớp và một cuộc kiểm tra xây dựng lại "
|
||
"riêng biệt {ph2} đã xác nhận điều đó{ph3}."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:342
|
||
#, 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}Việc thay đổi cách biểu diễn đã mở ra một không gian tìm kiếm hiệu quả "
|
||
"hơn.{ph1} Cả hai trường hợp đều cho tôi lý do để xem xét nghiêm túc khả năng"
|
||
" của mô hình chung: một tác nhân có thể tiếp tục thử các biến thể cục bộ "
|
||
"trong một thời gian dài trước khi tìm ra cách tốt hơn để thể hiện công việc "
|
||
"xung quanh."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:351
|
||
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 ""
|
||
"Đồng thời, các phiên sau bắt đầu với nguồn trước đó và ghi lại lỗi. Công "
|
||
"việc tích lũy đó là một phần lợi thế của họ. Lịch sử cho phép chúng ta kiểm "
|
||
"tra những khám phá và kiểm tra chúng; một so sánh có kiểm soát sẽ giúp tách "
|
||
"biệt tác động của mô hình khỏi trải nghiệm mà nó kế thừa."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:358
|
||
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 ""
|
||
"Đây là điều làm cho câu hỏi trở nên thú vị đối với tôi. Một số tiến bộ đến "
|
||
"từ việc tìm kiếm một đại diện mới. Phần lớn công việc còn lại liên quan đến "
|
||
"việc kiểm tra các cách sắp xếp mã nguồn khác nhau dựa trên một trình biên "
|
||
"dịch quen thuộc. Bao nhiêu trong số này đòi hỏi khả năng suy luận rộng? Một "
|
||
"mô hình có thể học được bao nhiêu khi làm việc liên tục với trình biên dịch "
|
||
"và mã đó?"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:368
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Why might a specialist do well?"
|
||
msgstr "Tại sao một mô hình AI chuyên biệt có thể hoạt động tốt?"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:369
|
||
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 cho chúng ta lý do cụ thể để mong đợi trải nghiệm đó sẽ hữu ích. Phần"
|
||
" lớn mã trò chơi đều đến từ cùng một tác giả, ZUN, vì vậy những thói quen "
|
||
"lặp đi lặp lại là một giả định khởi đầu hợp lý. Các kho lưu trữ hỗ trợ điều "
|
||
"đó bằng các ví dụ hữu ích: các vòng lặp liên quan và cách sắp xếp trợ giúp "
|
||
"đã cung cấp các giả thuyết cho các trò chơi."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:376
|
||
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 ""
|
||
"Các mẫu nguồn đó trở nên cụ thể hơn khi chúng tôi đưa trình biên dịch vào. "
|
||
"Trong một phiên bản và tập hợp các tùy chọn cụ thể, những thay đổi nhỏ về "
|
||
"nguồn có thể tạo ra những khác biệt lặp lại trong mã máy. Một số trong những"
|
||
" khác biệt đó mơ hồ một cách đáng ngạc nhiên."
|
||
|
||
#. {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:382
|
||
#, 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 ""
|
||
"Ví dụ: trong TH095, {ph0}ngay cả tên biến cục bộ cũng có thể ảnh hưởng đến "
|
||
"vị trí VC7.1 lưu trữ nó{ph1}. Việc di chuyển khai báo của nó không giải "
|
||
"quyết được bố cục lưu trữ. Tuy nhiên, hàm nền trước đó đã tiết lộ kiểu đặt "
|
||
"tên ảnh hưởng đến sự lựa chọn của trình biên dịch. Điều đó gợi ý một giả "
|
||
"thuyết hứa hẹn hơn cho việc {ph2}tái tạo {ph3}{ph4}."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:396
|
||
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 ""
|
||
"Việc sử dụng lại mẫu đó cho biến kích thước tệp sẽ tạo ra bố cục cần thiết "
|
||
"mà không cần thêm bộ nhớ. Các chức năng đầy đủ sau đó phù hợp."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:401
|
||
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 ""
|
||
"Đây là một chi tiết rất cụ thể mà một mô hình AI đa năng có thể không biết "
|
||
"khi lần đầu gặp sự cố. Một mô hình chuyên dụng cho trình biên dịch này có "
|
||
"thể xem nhiều trường hợp như vậy và tìm hiểu xem biến thể mã nguồn nào đáng "
|
||
"để thử nghiệm trước tiên."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:407
|
||
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 ""
|
||
"Cơ hội đặc biệt rõ ràng trong các bài toán so khớp cuối cùng khi chúng ta đã"
|
||
" hiểu rõ hành vi. Sau đó, chúng tôi sẽ hỏi trình biên dịch này sẽ chuyển sự "
|
||
"sắp xếp mã nguồn thông thường nào thành các lệnh máy được quan sát. Sự "
|
||
"chuyên môn hóa có thể giúp mô hình đề xuất các hình thức đó hiệu quả hơn, "
|
||
"trong khi mục tiêu vẫn xác định giả thuyết nào tồn tại."
|
||
|
||
#. {ph0}: <a
|
||
#. href="https://github.com/N0zoM1z0/th04/commit/6dce0a79d5b931f0e2a08475b90e0c33d2321b98"
|
||
#. >
|
||
#. {ph1}: </a >
|
||
#: website/public/blog/reverse-engineering-models/index.html:415
|
||
#, 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 ""
|
||
"Các mẫu hữu ích phải đi kèm bối cảnh áp dụng. TH08 dùng phiên bản Visual C++"
|
||
" cũ hơn TH095 và TH09. TH04 dùng một trình biên dịch khác thuộc thời DOS. "
|
||
"{ph0}Việc tái dựng mã điều khiển người chơi{ph1} cần những giả thuyết khác "
|
||
"về cách viết mã và cách liên kết thành tệp thực thi. Cùng tác giả là một giả"
|
||
" định ban đầu; từng mục tiêu cho biết giả định đó có phù hợp không. Mô hình "
|
||
"chuyên biệt cần học cách phân biệt các bối cảnh này."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:431
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Where should that experience live?"
|
||
msgstr "Kinh nghiệm này nên được lưu trữ ở đâu?"
|
||
|
||
#. {ph0}: <a href="../touhou-reconstruction/">
|
||
#. {ph1}: </a>
|
||
#: website/public/blog/reverse-engineering-models/index.html:432
|
||
#, 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 ""
|
||
"Trước khi quyết định dạy những mẫu đó thông qua đào tạo mô hình, tôi sẽ xem "
|
||
"xét kiến thức mà chúng tôi đã lưu giữ trong kho. Trong {ph0}bài luận "
|
||
"trước{ph1}, tôi đã viết về việc nó trở thành bộ nhớ làm việc của dự án. Bộ "
|
||
"nhớ đó bao gồm các bài học về trình biên dịch, cùng với nguồn và các thử "
|
||
"nghiệm thất bại khiến chúng trở nên hữu ích."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:441
|
||
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 ""
|
||
"Bằng cách truy xuất bản ghi đó, nhân viên hỗ trợ có thể bắt đầu với kết quả "
|
||
"đã biết và kiểm tra cách chúng tôi đạt được kết quả đó. Nó cũng có thể tránh"
|
||
" được những lựa chọn thay thế đã thất bại trong cùng bối cảnh. Điểm bắt đầu "
|
||
"được cải thiện mà không thay đổi các tham số đã huấn luyện của mô hình."
|
||
|
||
#. {ph0}: <a
|
||
#. href="https://github.com/N0zoM1z0/th09/commit/1eb843383941d00065622a9e353146c4bb96979e"
|
||
#. >
|
||
#. {ph1}: </a >
|
||
#: website/public/blog/reverse-engineering-models/index.html:447
|
||
#, 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 ""
|
||
"Trong khi xây dựng lại chức năng tạo kẻ thù của TH09, phiên {ph0}GPT-6-Luna-"
|
||
"max{ph1} đã lấy một giả thuyết từ mã nguồn TH08 có liên quan. Mã trước đó đã"
|
||
" đề xuất cách tổ chức vòng lặp và xử lý các lỗi bên trong nó. Bằng chứng "
|
||
"riêng của TH09 đã cung cấp chi tiết cụ thể về trò chơi. Việc xây dựng lại từ"
|
||
" nguồn đã xác nhận rằng toàn bộ hàm khớp với bản gốc."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:458
|
||
#, 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}\"Mô hình không biết lỗi của trình biên dịch\" và \"mô hình không thể "
|
||
"sử dụng nó\" là các vấn đề khác nhau.{ph1} Việc truy xuất có thể giải quyết "
|
||
"được vấn đề đầu tiên, nhưng việc biến thực tế đó thành một mã ứng viên hữu "
|
||
"ích vẫn cần nhiều công sức. Và nếu mã nguồn mã ứng viên không thành công, mô"
|
||
" hình phải quyết định kết quả có ý nghĩa gì cho lần thử tiếp theo. Biết mẫu "
|
||
"có liên quan chỉ là bước khởi đầu của quá trình đó."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:468
|
||
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 ""
|
||
"Vì lý do đó, tôi sẽ đưa vào một mô hình AI có mục đích chung nhỏ hơn với khả"
|
||
" năng truy xuất tốt trong mọi so sánh. Cung cấp cho nó cùng một thư viện "
|
||
"kinh nghiệm sẽ giúp chúng tôi xác định nội dung đào tạo bổ sung: tạo ứng "
|
||
"viên tốt hơn, đưa ra quyết định tốt hơn sau khi phản hồi hoặc cả hai."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:476
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Learning the next useful experiment"
|
||
msgstr "Học thí nghiệm hữu ích tiếp theo"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:477
|
||
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 ""
|
||
"Những quyết định sau khi được phản hồi là điều tôi muốn nghiên cứu nhất. "
|
||
"Trong tái cấu trúc tác nhân, mô hình đề xuất một lời giải thích và kiểm tra "
|
||
"nó dựa trên chương trình. Ngay cả khi mã nguồn ứng viên không thành công, "
|
||
"kết quả có thể thu hẹp các khả năng còn lại và đề xuất thử nghiệm tiếp theo "
|
||
"hữu ích hơn."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:484
|
||
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 ""
|
||
"Hãy xem xét lại ví dụ về kết quả tạm thời. Nguồn cuối cùng của nó cho thấy "
|
||
"sự sắp xếp đã có hiệu quả nhưng đường dẫn đến nguồn đó chứa nhiều thông tin "
|
||
"hơn. Mỗi thử nghiệm sau đây đã giúp xác định những gì vẫn cần thay đổi."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:497
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Experiment"
|
||
msgstr "Thử nghiệm"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:498
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "What its result taught us"
|
||
msgstr "Kết quả của nó đã dạy chúng ta điều gì"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:503
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Try a different way to copy the results"
|
||
msgstr "Hãy thử một cách khác để sao chép kết quả"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:504
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "The copy code changes, but the function still differs."
|
||
msgstr "Mã sao chép thay đổi nhưng chức năng vẫn khác."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:509
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Use the returned values directly"
|
||
msgstr "Sử dụng trực tiếp các giá trị được trả về"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:510
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid ""
|
||
"Copying follows the original pattern, but temporary storage still differs."
|
||
msgstr "Sao chép theo mẫu ban đầu, nhưng lưu trữ tạm thời vẫn khác."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:516
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Keep the temporary results alive together"
|
||
msgstr "Giữ tất cả các biến tạm thời hợp lệ cùng một lúc"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:517
|
||
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 ""
|
||
"Chúng có bộ lưu trữ riêng biệt, nhưng một bộ vẫn chồng lên một giá trị được "
|
||
"sử dụng sau này để kiểm tra va chạm."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:523
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Keep the collision-check value separate"
|
||
msgstr "Giữ riêng giá trị kiểm tra va chạm"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:524
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "A clean rebuild confirms the complete match."
|
||
msgstr ""
|
||
"Việc biên dịch lại rõ ràng từ nguồn xác nhận sự trùng khớp hoàn chỉnh."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:529
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid ""
|
||
"Selected experiments from the attack-function reconstruction above, grouped "
|
||
"by what they taught us."
|
||
msgstr ""
|
||
"Các thử nghiệm được chọn từ quá trình tái cấu trúc chức năng tấn công ở "
|
||
"trên, được nhóm theo những gì chúng đã dạy chúng ta."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:533
|
||
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 ""
|
||
"Một bản ghi huấn luyện lưu giữ trình tự này có thể dạy nhiều hơn chỉ riêng "
|
||
"nguồn cuối cùng. Nó kết nối từng thay đổi được đề xuất với kết quả được quan"
|
||
" sát và quyết định tiếp theo. Việc giữ lại các biến thể không hiệu quả cũng "
|
||
"rất quan trọng: chúng cho tác nhân sau này biết những giả thuyết nào đã được"
|
||
" kiểm tra trong bối cảnh đó."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:540
|
||
#, 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}Tôi muốn mô hình học cách sử dụng phản hồi.{ph1} Kết quả trung lập là "
|
||
"lý do để xem xét lại biến thể; sự không phù hợp đã thay đổi có thể chỉ ra "
|
||
"một nguyên nhân khác. Khi các chỉnh sửa cục bộ không còn mang tính thông "
|
||
"tin, nhân viên sẽ có thể xem lại phần trình bày nguồn hoặc kiểm tra lại bằng"
|
||
" chứng."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:549
|
||
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 ""
|
||
"Học cách đưa ra những lựa chọn đó đòi hỏi sự tự chủ. Đôi khi, bước tiếp theo"
|
||
" hữu ích là kiểm tra người gọi khác thay vì biên dịch một bản chỉnh sửa "
|
||
"khác. Một chuỗi các lần viết lại bắt buộc một cách cứng nhắc sẽ loại bỏ lựa "
|
||
"chọn đó, cùng với một phần hành vi mà chúng ta muốn mô hình học."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:558
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Why RE is interesting for reinforcement learning"
|
||
msgstr "Tại sao kỹ thuật đảo ngược lại thú vị cho việc học tăng cường"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:559
|
||
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 ""
|
||
"Tái dựng trong phạm vi xác định là môi trường thực tế để nghiên cứu các lựa "
|
||
"chọn này. Khi phiên bản của mục tiêu và trình biên dịch được cố định, nhiều "
|
||
"thử nghiệm mã nguồn cho phản hồi nhanh và có thể lặp lại. Tác nhân có thể "
|
||
"biên dịch mã ứng viên, xem khác biệt rồi chọn bước tiếp theo."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:566
|
||
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 ""
|
||
"Học tăng cường có thể rèn luyện quá trình ra quyết định đó thông qua phản "
|
||
"hồi mà nó nhận được. Một mã ứng viên được chấp nhận bởi một cuộc kiểm tra "
|
||
"xác định sẽ cho chúng ta một kết quả cụ thể, trong khi trình tự các lần thử "
|
||
"cho phép chúng ta quan sát xem cần bao nhiêu công sức để đạt được kết quả "
|
||
"đó."
|
||
|
||
#. {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:572
|
||
#, 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 ""
|
||
"Đã có nghiên cứu hỗ trợ hướng này. {ph0}LLM4Decompile{ph1} nghiên cứu các mô"
|
||
" hình chuyên dùng cho việc dịch ngược. {ph2}AutoDecompiler{ph3} đào tạo sàng"
|
||
" lọc nhiều lượt bằng cách sử dụng phản hồi của trình biên dịch và thực thi. "
|
||
"Nghiên cứu của họ tập trung vào phục hồi chức năng. Đối với công việc này, "
|
||
"tôi sẽ sử dụng chúng làm điểm khởi đầu cho nhiệm vụ liên quan là tìm nguồn "
|
||
"phù hợp với đầu ra của trình biên dịch lịch sử."
|
||
|
||
#. {ph0}: <a
|
||
#. href="https://github.com/N0zoM1z0/th08/commit/af9cb1d3e839b15a78b47ac1701506083cc82847"
|
||
#. >
|
||
#. {ph1}: </a >
|
||
#: website/public/blog/reverse-engineering-models/index.html:584
|
||
#, 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 ""
|
||
"Tuy nhiên, để đạt được nhiệm vụ được xác định rõ ràng như vậy, trước tiên "
|
||
"chúng ta có thể cần thiết lập tài nguyên nào mà hàm sở hữu hoặc nghĩ ra cách"
|
||
" mới để quan sát hành vi của chương trình khi chạy. Ví dụ: trong TH08, sự "
|
||
"khác biệt về va chạm {ph0} dẫn đến cách chương trình ban đầu xử lý các phép "
|
||
"tính dấu phẩy động{ph1}. Trước khi tác nhân có thể kiểm tra một sự điều "
|
||
"chỉnh hữu ích, nó phải tìm ra những gì cần đo lường."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:595
|
||
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 ""
|
||
"Điều này gợi ý một vai trò khác của một mô hình có khả năng rộng rãi: giúp "
|
||
"làm cho vấn đề có thể được kiểm tra ngay từ đầu. Khi kiểm tra đó tồn tại, "
|
||
"chúng tôi có thể điều tra xem chính sách tìm kiếm đã học có thể đi được bao "
|
||
"xa."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:603
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "When the oracle is wrong"
|
||
msgstr "Khi công cụ xác minh sai"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:604
|
||
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 ""
|
||
"Khi dùng một phép kiểm tra để huấn luyện, phạm vi kiểm tra cũng trở thành "
|
||
"một phần của môi trường học. Tôi gọi chuẩn tham chiếu hoặc công cụ kiểm tra "
|
||
"đó là oracle. Ngay cả câu trả lời lặp lại được cũng cần được hiểu theo những"
|
||
" gì nó thực sự xác minh."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:610
|
||
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 cho thấy vấn đề có thể ẩn ngoài phạm vi kiểm tra. Một số hàm tái dựng "
|
||
"dùng hằng số dấu phẩy động sai nhưng vẫn vượt qua so sánh chính xác. Bộ so "
|
||
"sánh điều chỉnh địa chỉ tái định vị trước khi kiểm tra lệnh máy, nhưng chỉ "
|
||
"kiểm tra giá trị tại các địa chỉ đó nếu chúng đã được ghi nhận rõ ràng để "
|
||
"xác minh. Những tham chiếu hằng số khác có thể vượt qua mà không được kiểm "
|
||
"tra giá trị."
|
||
|
||
#. {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:619
|
||
#, 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 ""
|
||
"Để giải quyết khoảng trống này, {ph0}kiểm tra rộng hơn{ph1} đã tìm thấy các "
|
||
"hằng số không chính xác trong các hàm đã vượt qua quá trình xác minh. Trong "
|
||
"một phép tính, mã nguồn được xây dựng lại đã thêm {ph2}, trong khi mã nguồn "
|
||
"ban đầu được thêm {ph3}."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:629
|
||
#, 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}Mô hình được khen thưởng bằng kiểm tra xác minh cũ có thể học cách tạo "
|
||
"ra bản dựng lại không chính xác.{ph1} Chúng tôi không đào tạo mô hình RL "
|
||
"bằng trình kiểm tra đó. Sự thất bại mà chúng tôi quan sát thấy nằm ở chính "
|
||
"việc kiểm tra. Nhưng nếu chúng ta sử dụng nó như một phần thưởng thì điểm mù"
|
||
" đó sẽ trở thành một phần của môi trường học tập."
|
||
|
||
#. {ph0}: <a href="https://arxiv.org/html/2609.05370v1" >
|
||
#. {ph1}: </a >
|
||
#: website/public/blog/reverse-engineering-models/index.html:639
|
||
#, 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 ""
|
||
"Một bài kiểm tra chức năng có thể có điểm mù tương tự. {ph0}Nghiên cứu sử "
|
||
"dụng tính năng làm mờ vi phân trên bộ giải mã LLM{ph1} đã tìm thấy những "
|
||
"khác biệt về hành vi bên ngoài các thử nghiệm được cung cấp. Do đó, chúng ta"
|
||
" cần hiểu một bài kiểm tra đạt theo các trường hợp mà nó thực hiện. Tương "
|
||
"tự, một lệnh khớp phải được hiểu theo byte và dữ liệu mà nó xác minh."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:649
|
||
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 ""
|
||
"Trước khi sử dụng một trong hai loại kiểm tra xác minh làm phần thưởng, tôi "
|
||
"sẽ kiểm tra nó với kết quả cố tình sai. Tôi cũng sẽ tách biệt sự chấp nhận "
|
||
"cuối cùng với mã nguồn mà tác nhân AI có thể chỉnh sửa. Mô hình phải vượt "
|
||
"qua quá trình xác minh bằng cách xây dựng lại chương trình một cách chính "
|
||
"xác. Mặt khác, chỉ cần sao chép một mảng byte từ mục tiêu có thể đánh lừa "
|
||
"một hệ thống tính điểm ngây thơ mà không khôi phục được mã nguồn hữu ích."
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:657
|
||
#, 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}Cải thiện mô hình học và cải thiện công cụ xác minh là hai phần của "
|
||
"cùng một vấn đề nghiên cứu.{ph1} Mô hình càng giỏi tối ưu phản hồi được cung"
|
||
" cấp, chúng ta càng cần hiểu chính phản hồi đó."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:667
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "A comparison worth running"
|
||
msgstr "Một so sánh đáng chạy"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:668
|
||
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 ""
|
||
"Với những bước kiểm tra đó, tôi sẽ bắt đầu so sánh trên nhóm nhiệm vụ VC7.1 "
|
||
"cố định. Đầu tiên, tôi sẽ thiết lập các đường cơ sở cho một mô hình AI có "
|
||
"mục đích chung mạnh mẽ và một mô hình nhỏ hơn. Việc bổ sung kiến thức về "
|
||
"kho lưu trữ vào mô hình nhỏ hơn sẽ cho thấy những thay đổi trong quá trình "
|
||
"truy xuất. Từ đó, chuyên môn hóa được giám sát và phiên bản được đào tạo RL "
|
||
"sẽ cho phép chúng tôi kiểm tra nội dung đào tạo bổ sung."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:676
|
||
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 ""
|
||
"Để làm cho những so sánh đó trở nên hữu ích, mỗi mô hình sẽ nhận được các "
|
||
"bằng chứng và công cụ mục tiêu giống nhau. Đối với các so sánh dành riêng "
|
||
"cho đào tạo, tôi cũng sẽ giữ nguyên mô hình cơ sở và kiến thức có sẵn. Các"
|
||
" thử nghiệm lặp đi lặp lại sẽ giúp phân biệt một chiến lược tìm kiếm đáng "
|
||
"tin cậy với một giải pháp ứng viên tình cờ thành công."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:683
|
||
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 ""
|
||
"Sau đó, tôi sẽ tách hai điều kiện bắt đầu: xây dựng lại một hàm từ các lệnh "
|
||
"máy của nó và đóng một số khác biệt cuối cùng trong nguồn được duy trì. Một "
|
||
"mô hình AI chuyên dụng có thể thực hiện xuất sắc nhiệm vụ thứ hai trong khi "
|
||
"một mô hình AI có mục đích chung thực hiện phần lớn công việc cần thiết để "
|
||
"đạt được nhiệm vụ đó. Việc đo lường chúng một cách riêng biệt sẽ tiết lộ sự "
|
||
"phân chia công việc đó."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:691
|
||
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 ""
|
||
"Cả hai nhiệm vụ đều cần loại trừ các mẫu thử nghiệm khỏi quá trình đào tạo "
|
||
"và truy xuất. Trò chơi Touhou liên quan chia sẻ mã công cụ. Việc loại trừ "
|
||
"một trò chơi khỏi quá trình huấn luyện vẫn có thể để lại các chức năng gần "
|
||
"như giống hệt nhau trong tập huấn luyện. Thay vào đó, tôi sẽ loại trừ toàn "
|
||
"bộ các nhóm mã nguồn có liên quan và loại bỏ các câu trả lời đã được xác "
|
||
"minh của chúng khỏi cả dữ liệu huấn luyện và thư viện truy xuất."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:698
|
||
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 ""
|
||
"Kết quả cần đo là các lần khớp hoàn chỉnh, được xác minh độc lập. Giới hạn "
|
||
"số mã ứng viên hoặc số lần biên dịch bằng nhau giúp so sánh chất lượng tìm "
|
||
"kiếm. Đo tổng thời gian và chi phí, kể cả biên dịch, cho biết chất lượng đó "
|
||
"có tạo ra quy trình hiệu quả không. Chi phí huấn luyện cần tính riêng."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:706
|
||
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 ""
|
||
"Cả hai phép đo đều quan trọng. Một đề xuất rẻ tiền có thể dẫn đến một quy "
|
||
"trình làm việc tốn kém nếu nó tạo ra nhiều lần biên dịch không cung cấp "
|
||
"thông tin hữu ích. Ngược lại, một mô hình chậm hơn có thể tiết kiệm hơn nếu "
|
||
"nó tìm thấy một thử nghiệm hữu ích sớm hơn. Việc so sánh nên bao gồm những "
|
||
"chi phí này."
|
||
|
||
#. {ph0}: <a
|
||
#. href="https://github.com/N0zoM1z0/th09/commit/ab72fd77728293fc0beacfc656ca701b0e266016"
|
||
#. >
|
||
#. {ph1}: </a >
|
||
#: website/public/blog/reverse-engineering-models/index.html:712
|
||
#, 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 ""
|
||
"Việc đếm các kết quả được chấp nhận cũng giúp duy trì tiến độ trung gian. "
|
||
"Một TH09 {ph0}mã ứng viên lưu lại phát lại{ph1} có vẻ đầy hứa hẹn vì hàm "
|
||
"được biên dịch có kích thước như mong đợi nhưng so sánh đầy đủ vẫn tìm thấy "
|
||
"những khác biệt đáng kể. Những thay đổi trong cách trình biên dịch sắp xếp "
|
||
"các lệnh máy cũng có thể khiến mã ứng viên có vẻ gần hơn mà không giải quyết"
|
||
" được vấn đề cơ bản. Chẩn đoán như vậy có thể hướng dẫn thử nghiệm tiếp "
|
||
"theo, nhưng tôi sẽ xác thực bất kỳ phần thưởng nào cho việc \"tiến gần hơn\""
|
||
" so với kiểm tra chấp nhận hoàn toàn."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:727
|
||
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 ""
|
||
"Tôi sẽ quan tâm đến mô hình trên các kết quả này. Nếu một mô hình AI chuyên "
|
||
"dụng hoạt động tốt trong dòng trình biên dịch quen thuộc, liệu lợi thế đó có"
|
||
" tồn tại được khi thay đổi chuỗi công cụ không? Và một khi cả hai mô hình AI"
|
||
" đều có khả năng truy xuất tốt thì việc đào tạo vẫn bổ sung thêm bao nhiêu? "
|
||
"Câu trả lời sẽ giúp chúng ta quyết định xem mỗi loại mô hình sẽ hữu ích nhất"
|
||
" ở đâu."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:736
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "What kind of agent does this suggest?"
|
||
msgstr "Điều này gợi ý loại tác nhân AI nào?"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:737
|
||
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 ""
|
||
"Nếu các mô hình tỏ ra hữu ích ở các giai đoạn khác nhau, thì sự sắp xếp hữu "
|
||
"ích có thể là một tác nhân rộng rãi có quyền truy cập vào một mô hình AI "
|
||
"chuyên dụng. Khi một nhiệm vụ trở thành một công cụ tìm kiếm trình biên dịch"
|
||
" quen thuộc, nó có thể yêu cầu mô hình AI chuyên biệt dành cho ứng viên. Nếu"
|
||
" kết quả không còn có ý nghĩa nữa, tác nhân rộng hơn có thể quay lại bằng "
|
||
"chứng mục tiêu hoặc tự điều tra phép đo."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:745
|
||
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 ""
|
||
"Trong sự sắp xếp đó, sự chuyên môn hóa trở thành một công cụ mà đặc vụ có "
|
||
"thể lựa chọn khi cuộc điều tra phát triển. Người đại diện có quyền tự do "
|
||
"thay đổi hướng đi để có thể đạt được những đột phá trước đó."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:750
|
||
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 ""
|
||
"Điều này diễn ra một cách tự nhiên từ sự chuyển dịch công nghiệp mà tôi đã "
|
||
"mô tả trong bài viết trước. Việc có thể chạy nhiều thử nghiệm hơn sẽ thay "
|
||
"đổi cách chúng ta tổ chức công việc. Nó cũng cho chúng ta lý do để hỏi những"
|
||
" quyết định nào cần được đánh giá rộng rãi và quyết định nào được cải thiện "
|
||
"thông qua kinh nghiệm lặp đi lặp lại với một nghề cụ thể."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:757
|
||
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 ""
|
||
"Hiện tại, mô hình tổng quát mạnh nhất đã có chỗ đứng trong quy trình của tôi"
|
||
" vì giải quyết được những vấn đề trước đó còn bỏ ngỏ. Những thành công này "
|
||
"khiến tôi muốn xem kỹ quá trình: bao nhiêu phần phụ thuộc vào năng lực rộng "
|
||
"của mô hình, và bao nhiêu phần có thể giao cho một mô hình được huấn luyện "
|
||
"riêng cho kiểu tái dựng này?"
|
||
|
||
#. {ph0}: <strong >
|
||
#. {ph1}: </strong >
|
||
#: website/public/blog/reverse-engineering-models/index.html:765
|
||
#, 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}Các kho lưu trữ cung cấp cho chúng tôi một cách để kiểm tra câu "
|
||
"hỏi.{ph1} Tôi muốn sử dụng hồ sơ đó để xây dựng sự so sánh và xem những gì "
|
||
"chúng tôi học được."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:775
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Evidence and model attribution"
|
||
msgstr "Bằng chứng và quy kết mô hình"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:783
|
||
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 ""
|
||
"Các ví dụ mô tả các so sánh cấp độ chức năng lịch sử được ghi lại trong các "
|
||
"cam kết được liên kết. Kiểm tra thời gian chạy toàn bộ trò chơi là các cột "
|
||
"mốc riêng biệt. Nguồn và hồ sơ trùng khớp đã được xem xét vào ngày 13 tháng "
|
||
"10 năm 2026."
|
||
|
||
#. {ph0}: <code>gpt-dots</code>
|
||
#. {ph1}: <code>gpt-web</code>
|
||
#: website/public/blog/reverse-engineering-models/index.html:789
|
||
#, 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 ""
|
||
"Nhãn TH09 {ph0} có nghĩa là GPT-6-Astra. Mô hình được liên kết với {ph1} đã "
|
||
"thay đổi theo thời gian, do đó, riêng nhãn đó không thể xác định được mô "
|
||
"hình được sử dụng trong một lần chạy cụ thể. Tên mô hình rõ ràng trong các "
|
||
"cam kết được trích dẫn khác cung cấp thông tin ghi nhận. Những lịch sử này "
|
||
"không bao gồm các phép đo nhất quán về chi phí hoặc nỗ lực cho mỗi lần chạy."
|
||
|
||
#. {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:798
|
||
#, 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 thời gian tồn tại của đối tượng tạm thời:{ph1} {ph2}xem xét ngữ "
|
||
"cảnh trước đó{ph3} và {ph4} việc xây dựng lại hoàn chỉnh được xác minh bằng "
|
||
"cách biên dịch lại rõ ràng từ nguồn{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:810
|
||
#, 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}Callback Front của TH09:{ph1} {ph2}các vùng chẩn đoán chưa khớp{ph3}, "
|
||
"{ph4}đồ thị luồng điều khiển mới của Astra{ph5} và {ph6}phép kiểm tra biên "
|
||
"dịch lại đã được chấp nhận{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:826
|
||
#, 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}Kiến thức về trình biên dịch:{ph1} {ph2}TH095 tái sử dụng hành vi của "
|
||
"nhóm nhận dạng{ph3}, {ph4}TH04 mã nguồn người chơi và thứ tự trình liên "
|
||
"kết{ph5} và {ph6}Luna tái thiết hoàn toàn chức năng tạo kẻ thù của "
|
||
"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:842
|
||
#, 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}Kiểm tra và chẩn đoán:{ph1} {ph2}kiểm tra hằng số dấu phẩy động của "
|
||
"TH08{ph3}, {ph4}điều tra số học của TH08{ph5} và {ph6}tái dựng chức năng lưu"
|
||
" replay của TH09{ph7}."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:859
|
||
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 ""
|
||
"Những so sánh được đề xuất giữa các mô hình chuyên dụng và chương trình đào "
|
||
"tạo RL là những thử nghiệm trong tương lai. Lịch sử dự án thúc đẩy họ. Không"
|
||
" có mô hình chuyên ngành được đào tạo nào được đánh giá cho bài tiểu luận "
|
||
"này."
|
||
|
||
#: 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 "Kỹ thuật đảo ngược có cần một mô hình lớn hơn không? | 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 ""
|
||
"Việc tái xây dựng Touhou đã dạy tôi điều gì về các mô hình chung, mô hình "
|
||
"chuyên biệt và việc học cách đề xuất các giả thuyết tốt hơn từ phản hồi của "
|
||
"trình biên dịch."
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:240
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "On this page"
|
||
msgstr "Trên trang này"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:253
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Models and reverse engineering essay"
|
||
msgstr "Mô hình và tiểu luận kỹ thuật đảo ngược"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:491
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Selected reconstruction experiments"
|
||
msgstr "Các thí nghiệm tái thiết được chọn"
|
||
|
||
#: website/public/blog/reverse-engineering-models/index.html:883
|
||
msgctxt "page:blog/reverse-engineering-models/index.html"
|
||
msgid "Back to top"
|
||
msgstr "Về đầu trang"
|
||
|
||
#. {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:776
|
||
#, 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}Ghi chú bằng chứng chi tiết{ph1} bao gồm các kết quả so sánh và bối "
|
||
"cảnh thử nghiệm."
|
||
|
||
#~ msgctxt "page:blog/index.html"
|
||
#~ msgid "By N0zoM1z0 · 13 October 2026 · Draft for review"
|
||
#~ msgstr "N0zoM1z0 · 13 tháng 10 năm 2026 · Bản nháp để góp ý"
|
||
|
||
#~ msgctxt "page:index.html"
|
||
#~ msgid "Setup guide"
|
||
#~ msgstr "Hướng dẫn cài đặt"
|
||
|
||
#~ 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 "Sao chép"
|
||
|
||
#~ 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 "Tái thiết * dino-tốc độ.sk"
|
||
|
||
#~ msgctxt "page:faq/index.html"
|
||
#~ msgid ""
|
||
#~ "With Node.js and npm available, run setup, choose your coding agent and "
|
||
#~ "review the proposed changes."
|
||
#~ msgstr ""
|
||
#~ "Với Node.js và npm có sẵn, chạy thiết lập, chọn đại lý mã hóa của bạn và xem"
|
||
#~ " xét các thay đổi được đề xuất."
|
||
|
||
#~ msgctxt "page:first-investigation/index.html"
|
||
#~ msgid "A supplied example · Node.js and npm · Your coding agent"
|
||
#~ msgstr "Một ví dụ được cung cấp · Node.js và npm * Đại lý mã hóa của bạn"
|
||
|
||
#, python-brace-format
|
||
#~ msgctxt "page:first-investigation/index.html"
|
||
#~ msgid ""
|
||
#~ "Use a coding agent such as Claude Code, Codex or Cursor. You’ll need Node.js"
|
||
#~ " and npm; the {ph0}setup guide lists supported versions{ph1}."
|
||
#~ msgstr ""
|
||
#~ "Sử dụng một tác nhân mã hóa như Claude Code, Codex hoặc Cursor. Bạn sẽ cần "
|
||
#~ "Node.js và npm; các {ph0}danh sách hướng dẫn thiết lập các phiên bản được hỗ"
|
||
#~ " trợ{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}Trang * trình kết xuất.sk{ph1}{ph2}Xuất ghi chú{ph3}{ph4}Cuộc gọi "
|
||
#~ "{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}Cầu * tải trước · sk{ph1}{ph2}{ph3}{ph4}{ph5}Gửi một tin nhắn có tên "
|
||
#~ "đến quy trình chính.{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}Xử lý * chính.sk{ph1}{ph2}Viết ghi chú.csv{ph3}{ph4}Gọi bộ định dạng "
|
||
#~ "trong {ph5} và viết tập tin.{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}Dự đoán CSV đối với một lưu ý với id 1 và tiêu đề Xin Chào, "
|
||
#~ "\"REA\". Sau đó chạy trình định dạng tocsv của ví dụ với Node.js để kiểm tra"
|
||
#~ " nó. Hiển thị dự đoán và đầu ra thực tế.{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 ""
|
||
#~ "Tiêu đề nằm trong một trường được trích dẫn; mỗi dấu ngoặc kép được nhân "
|
||
#~ "đôi. Điều này kiểm tra trực tiếp bộ định dạng với Node.js."
|
||
|
||
#~ msgctxt "page:first-investigation/index.html"
|
||
#~ msgid "Node.js · CSV formatter"
|
||
#~ msgstr "Node.js · CSV định dạng"
|
||
|
||
#~ 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 ""
|
||
#~ "Bạn sẽ cần Node.js 22 (22.19+), 24 (24.11+) hoặc 26+. npm đi kèm với "
|
||
#~ "Node.js."
|
||
|
||
#~ msgctxt "page:get-started/index.html"
|
||
#~ msgid "Don't have Node.js, or not sure?"
|
||
#~ msgstr "Không có Node.js, hay không chắc chắn?"
|
||
|
||
#, 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 ""
|
||
#~ "Nếu {ph0} bản in v22.19+, v24.11+ hoặc v26+, bạn đã sẵn sàng. Nếu nó in "
|
||
#~ "phiên bản cũ hơn hoặc \"không được nhận dạng\" / \"không tìm thấy lệnh\", "
|
||
#~ "hãy cài đặt Node.js 24 KG:"
|
||
|
||
#, 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}Mở ví dụ{ph1} · {ph2}Tải về xuất khẩu.sk{ph3} · {ph4}Tải xuống ghi "
|
||
#~ "chú.jk{ph5}"
|
||
|
||
#, python-brace-format
|
||
#~ msgctxt "page:guides/javascript/index.html"
|
||
#~ msgid ""
|
||
#~ "Download the example and unzip it. The archive contains the complete {ph0} "
|
||
#~ "folder. Analyze it with Node.js and npm; Electron is not needed for this "
|
||
#~ "example."
|
||
#~ msgstr ""
|
||
#~ "Tải xuống ví dụ và giải nén nó. Kho lưu trữ chứa đầy đủ {ph0} thư mục. Phân "
|
||
#~ "tích nó với Node.js và npm; Electron không cần thiết cho ví dụ này."
|
||
|
||
#, 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 ""
|
||
#~ "Lần đầu tiên, hoặc mất tích Node.js hoặc một đại lý mã hóa? {ph0}Làm theo "
|
||
#~ "hướng dẫn thiết lập từng bước →{ph1}"
|
||
|
||
#, python-brace-format
|
||
#~ msgctxt "page:index.html"
|
||
#~ msgid "One question: {ph0}why does Calculator give 220 for 200 + 10%?{ph1}"
|
||
#~ msgstr "Ví dụ: {ph0}vì sao Máy tính cho kết quả 220 khi tính 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}Sử dụng REA để kiểm tra Windows Máy tính. Tại sao 200 + 10% "
|
||
#~ "cho 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 ""
|
||
#~ "Chúng tôi đã thấy tại sao {ph0}200 + 10% cho 220.{ph1} Bây giờ chúng ta hãy "
|
||
#~ "khôi phục các quy tắc cho cả + và ×, và thử chúng."
|
||
|
||
#, 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 đọc calc.exe{ph1}{ph2}Nó khởi chạy ứng dụng Máy "
|
||
#~ "Tính{ph3}{ph4}Mã mở ra {ph5}. Sau đó, tác nhân chọn thư viện của ứng dụng đã"
|
||
#~ " cài đặt.{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}Sử dụng REA để kiểm tra aegis-v3. 4. 3.apk. Tìm cách nó tạo "
|
||
#~ "mã đăng nhập gồm sáu chữ số, giải thích lý do tại sao nó thay đổi sau mỗi 30"
|
||
#~ " giây và xây dựng lại một bản demo nhỏ nơi tôi có thể thay đổi thời "
|
||
#~ "gian.{ph3}{ph4}{ph5}"
|
||
|
||
#~ msgctxt "page:showcase/notion/index.html"
|
||
#~ msgid "tab_browser_view/preload.js · API member"
|
||
#~ msgstr "tab_browser_view/tải trước.js * THÀNH VIÊN API"
|
||
|
||
#~ msgctxt "page:showcase/notion/index.html"
|
||
#~ msgid "tab_browser_view/preload.js · IPC helper"
|
||
#~ msgstr "tab_browser_view/tải trước.js * IPC trợ GIÚP"
|
||
|
||
#~ msgctxt "page:showcase/notion/index.html"
|
||
#~ msgid "main/index.js · handler helper"
|
||
#~ msgstr "chính / chỉ số.js * trình trợ giúp xử lý"
|
||
|
||
#~ msgctxt "page:showcase/notion/index.html"
|
||
#~ msgid "main/index.js · clipboard receiver"
|
||
#~ msgstr "chính / chỉ số.js * bộ thu clipboard"
|
||
|
||
#~ msgctxt "page:first-investigation/index.html"
|
||
#~ msgid "main.js · lines 8–12"
|
||
#~ msgstr "chính.js * dòng 8-12"
|
||
|
||
#~ msgctxt "page:guides/browser/index.html"
|
||
#~ msgid "export.js · example source excerpt"
|
||
#~ msgstr "xuất khẩu.js * trích đoạn nguồn ví dụ"
|
||
|
||
#~ msgctxt "page:guides/javascript/index.html"
|
||
#~ msgid "renderer.js · example source"
|
||
#~ msgstr "trình kết xuất.js * nguồn ví dụ"
|
||
|
||
#~ msgctxt "page:guides/javascript/index.html"
|
||
#~ msgid "preload.js · example source"
|
||
#~ msgstr "tải trước.js * nguồn ví dụ"
|
||
|
||
#~ msgctxt "page:guides/javascript/index.html"
|
||
#~ msgid "main.js · example source"
|
||
#~ msgstr "chính.js * nguồn ví dụ"
|
||
|
||
#~ msgctxt "page:index.html"
|
||
#~ msgid "REA · loaded index.js · selected lines"
|
||
#~ msgstr "REA * chỉ số nạp.js * các dòng đã chọn"
|
||
|
||
#, 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}Sử dụng REA để phân tích /absolute/path/to/app và giải thích"
|
||
#~ " cách nó xuất dữ liệu. Hiển thị mã và vị trí nguồn có liên "
|
||
#~ "quan.{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}Cài đặt REA và kết nối nó với tác nhân mã hóa này bằng cách "
|
||
#~ "sử dụng npx rea-agents@thiết lập mới nhất. Chỉ cho tôi kế hoạch thiết lập để"
|
||
#~ " phê duyệt, sau đó xác minh cài đặt.{ph3}{ph4}{ph5}"
|
||
|
||
#, python-brace-format
|
||
#~ msgctxt "page:first-investigation/index.html"
|
||
#~ msgid ""
|
||
#~ "{ph0}›{ph1}{ph2}Download https://rea.tools/examples/notes-example.zip into a"
|
||
#~ " new example folder and unpack it. Use REA to find what happens when I click"
|
||
#~ " Export notes. Show where notes.csv is written, which fields it contains, "
|
||
#~ "and the relevant files and lines.{ph3}{ph4}{ph5}"
|
||
#~ msgstr ""
|
||
#~ "{ph0}›{ph1}{ph2}Tải về https://rea.tools/examples/notes-example.zip vào một "
|
||
#~ "thư mục ví dụ mới và giải nén nó. Sử dụng REA để tìm những gì xảy ra khi tôi"
|
||
#~ " nhấp Vào xuất ghi chú. Hiển thị nơi ghi chú.csv được viết, trường nào chứa "
|
||
#~ "và các tệp và dòng có liên quan.{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}Cài đặt REA và kết nối nó với tác nhân mã hóa này bằng cách "
|
||
#~ "sử dụng npx rea-agents@thiết lập mới nhất. Chỉ cho tôi kế hoạch thiết lập để"
|
||
#~ " phê duyệt, sau đó xác minh cài đặt.{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}Cài đặt REA và kết nối nó với tác nhân mã hóa này bằng cách "
|
||
#~ "sử dụng npx rea-agents@thiết lập mới nhất. Chỉ cho tôi kế hoạch thiết lập để"
|
||
#~ " phê duyệt, sau đó xác minh cài đặt.{ph3}{ph4}{ph5}"
|
||
|
||
#~ msgctxt "page:index.html"
|
||
#~ msgid "0x5b"
|
||
#~ msgstr "0x5b"
|
||
|
||
#~ msgctxt "page:index.html"
|
||
#~ msgid "0x5c"
|
||
#~ msgstr "0x5c"
|
||
|
||
#~ msgctxt "page:index.html"
|
||
#~ msgid "0x64"
|
||
#~ msgstr "0x64"
|
||
|
||
#, python-brace-format
|
||
#~ msgctxt "page:index.html"
|
||
#~ msgid ""
|
||
#~ "{ph0}›{ph1}{ph2}Use REA to inspect https://rea.tools/. Clone this website "
|
||
#~ "for me.{ph3}{ph4}{ph5}"
|
||
#~ msgstr ""
|
||
#~ "{ph0}›{ph1}{ph2}Sử dụng REA để kiểm tra https://rea.tools/. Sao chép trang "
|
||
#~ "web này cho tôi.{ph3}{ph4}{ph5}"
|
||
|
||
#~ msgctxt "figure:ctf-mask-equation.svg"
|
||
#~ msgid "code[21] = 55"
|
||
#~ msgstr "mã[21] = 55"
|
||
|
||
#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
|
||
#~ msgid "0x00406400"
|
||
#~ msgstr "0x00406400"
|
||
|
||
#~ msgctxt "figure:dx-ball-sound-pan-investigation.svg"
|
||
#~ msgid "× pan_scale"
|
||
#~ msgstr "× pan_scale"
|
||
|
||
#, python-brace-format
|
||
#~ msgctxt "shared"
|
||
#~ msgid "{ph0}REA{ph1}{ph2}Reverse Engineer Anything{ph3}"
|
||
#~ msgstr "{ph0}REA{ph1}{ph2}Kỹ Sư Đảo Ngược Bất Cứ Điều Gì{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 ""
|