From 186f5e1f718fffba523227eac513c38c219423a0 Mon Sep 17 00:00:00 2001 From: tigercosmos Date: Fri, 8 May 2026 20:36:36 +0200 Subject: [PATCH 1/3] translation: add AI sync contract and refresh zh-TW / kor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add translation/ai_translation_prompt.md: a contract any AI agent (Claude, Codex, Gemini, GPT, etc.) follows to verify and sync the translated READMEs against the canonical English README. Defines triggers, a structural verification matrix, GitHub anchor-slug rules, badge alt-text and HTML-embed policies, and a mandatory "synced using AI" caution that must appear at the top of every translated file. - Refresh translation/README-zh-tw.md to match the current English README: add Cisco HDLC at L2 #1 and renumber L2-L7 (50 -> 56 protocols); add 5 missing L7 entries (Cryptographic key decoders, DoIP, Modbus, PEM, X509); fix broken TOC anchors and Homebrew case; localize stale inline anchors (#download, #provide-feedback); align L6 heading text with the TOC; correct code-fence info strings for vcpkg/conan blocks; add the "synced using AI" caution at top. - Refresh translation/README-kor.md to match the current English README: add Cisco HDLC and the 5 missing L7 entries; renumber L2-L7; add the missing TLS Fingerprinting bullet to Feature Overview; fix TOC anchors and section/heading mismatches (#download, 라이센스, 기여, 성능 벤치마크); add the "synced using AI" caution at top. Co-Authored-By: Claude Opus 4.7 (1M context) --- translation/README-kor.md | 119 ++++++++-------- translation/README-zh-tw.md | 129 +++++++++-------- translation/ai_translation_prompt.md | 200 +++++++++++++++++++++++++++ 3 files changed, 332 insertions(+), 116 deletions(-) create mode 100644 translation/ai_translation_prompt.md diff --git a/translation/README-kor.md b/translation/README-kor.md index 92cebd5784..4fb32915ea 100644 --- a/translation/README-kor.md +++ b/translation/README-kor.md @@ -1,3 +1,5 @@ +> ⚠️ **참고:** 이 번역은 AI를 사용하여 유지·동기화되며, 최신 영어 버전과 차이가 있을 수 있습니다. 부정확한 내용을 발견하시면 GitHub 이슈를 등록하거나 PR을 제출해 주세요. +
[![PcapPlusPlus 로고](https://pcapplusplus.github.io/img/logo/logo_color.png)](https://pcapplusplus.github.io) @@ -43,8 +45,8 @@ PcapPlusPlus는 다양한 네트워크 프로토콜을 디코딩하고 생성할 - [DPDK 및 PF_RING 지원](#dpdk-및-pf_ring-지원) - [벤치마크](#벤치마크) - [피드백 제공](#피드백-제공) -- [기여](#기여) -- [라이센스](#라이센스) +- [기여하기](#기여하기) +- [라이선스](#라이선스) ## 다운로드 @@ -121,6 +123,7 @@ gh attestation verify <패키지 파일 경로> --repository seladb/PcapPlusPlus - __멀티 플랫폼 지원__: Linux, MacOS, Windows, Android 및 FreeBSD에서 완전 지원 - __패킷 재조합__: __TCP 재조합__ 및 __IP 단편화와 재조합__ [[더 알아보기](https://pcapplusplus.github.io/docs/features#packet-reassembly)] - __패킷 필터링__: libpcap의 BPF 필터를 더 간편하게 사용 [[더 알아보기](https://pcapplusplus.github.io/docs/features#packet-filtering)] +- __TLS 핑거프린팅__: [JA3 및 JA3S](https://github.com/salesforce/ja3) TLS 핑거프린팅의 C++ 구현 [[더 알아보기](https://pcapplusplus.github.io/docs/features#tls-fingerprinting)] ## 시작하기 @@ -185,7 +188,7 @@ PcapPlusPlus 웹사이트의 [API 문서 섹션](https://pcapplusplus.github.io/ ## 멀티 플랫폼 지원 -PcapPlusPlus는 현재 __Windows__, __Linux__, __MacOS__, __Android__, __FreeBSD__에서 지원됩니다. PcapPlusPlus 웹사이트에서 [지원 플랫폼](https://pcapplusplus.github.io/docs/platforms) 전체 목록을 확인할 수 있으며, [다운로드](#download) 섹션을 참조하여 해당 플랫폼에서 PcapPlusPlus를 시작하세요. +PcapPlusPlus는 현재 __Windows__, __Linux__, __MacOS__, __Android__, __FreeBSD__에서 지원됩니다. PcapPlusPlus 웹사이트에서 [지원 플랫폼](https://pcapplusplus.github.io/docs/platforms) 전체 목록을 확인할 수 있으며, [다운로드](#다운로드) 섹션을 참조하여 해당 플랫폼에서 PcapPlusPlus를 시작하세요. ## 지원되는 네트워크 프로토콜 @@ -193,77 +196,83 @@ PcapPlusPlus는 현재 다음 프로토콜의 패킷을 파싱, 편집 및 생 ### 데이터 링크 계층 (L2) -1. Ethernet II -2. IEEE 802.3 Ethernet -3. LLC (BPDU만 지원) -4. Null/Loopback -5. Packet trailer (패킷 패딩) -6. PPPoE -7. SLL (Linux cooked capture) -8. SLL2 (Linux cooked capture v2) -9. STP -10. VLAN -11. VXLAN -12. Wake on LAN (WoL) -13. NFLOG (Linux Netfilter NFLOG) - 파싱만 가능 (편집 불가) +1. Cisco HDLC +2. Ethernet II +3. IEEE 802.3 Ethernet +4. LLC (BPDU만 지원) +5. Null/Loopback +6. Packet trailer (패킷 패딩) +7. PPPoE +8. SLL (Linux cooked capture) +9. SLL2 (Linux cooked capture v2) +10. STP +11. VLAN +12. VXLAN +13. Wake on LAN (WoL) +14. NFLOG (Linux Netfilter NFLOG) - 파싱만 가능 (편집 불가) ### 네트워크 계층 (L3) -14. ARP -15. GRE -16. ICMP -17. ICMPv6 -18. IGMP (IGMPv1, IGMPv2, IGMPv3 지원) -19. IPv4 -20. IPv6 -21. MPLS -22. NDP -23. Raw IP (IPv4 & IPv6) -24. VRRP (IPv4 & IPv6) -25. WireGuard +15. ARP +16. GRE +17. ICMP +18. ICMPv6 +19. IGMP (IGMPv1, IGMPv2, IGMPv3 지원) +20. IPv4 +21. IPv6 +22. MPLS +23. NDP +24. Raw IP (IPv4 & IPv6) +25. VRRP (IPv4 & IPv6) +26. WireGuard ### 전송 계층 (L4) -26. COTP -27. GTP (v1 & v2) -28. IPSec AH & ESP - 파싱만 가능 (편집 불가) -29. TCP -30. TPKT -31. UDP +27. COTP +28. GTP (v1 & v2) +29. IPSec AH & ESP - 파싱만 가능 (편집 불가) +30. TCP +31. TPKT +32. UDP ### 세션 계층 (L5) -32. SDP -33. SIP +33. SDP +34. SIP -### 표현 계층 (L6) +### 프레젠테이션 계층 (L6) -34. SSL/TLS - 파싱만 가능 (편집 불가) +35. SSL/TLS - 파싱만 가능 (편집 불가) ### 응용 계층 (L7) -35. ASN.1 인코더 및 디코더 -36. BGP (v4) -37. DHCP -38. DHCPv6 -39. DNS -40. FTP -41. HTTP 헤더 (요청 및 응답) -42. LDAP -43. NTP (v3, v4) -44. Radius -45. S7 Communication (S7comm) -46. SMTP -47. SOME/IP -48. SSH - 파싱만 가능 (편집 불가) -49. Telnet - 파싱만 가능 (편집 불가) -50. 일반 페이로드 +36. ASN.1 인코더 및 디코더 +37. BGP (v4) +38. 암호화 키 디코더 +39. DHCP +40. DHCPv6 +41. DNS +42. DoIP +43. FTP +44. HTTP 헤더 (요청 및 응답) +45. LDAP +46. Modbus +47. NTP (v3, v4) +48. PEM 인코더 및 디코더 +49. Radius +50. S7 Communication (S7comm) +51. SMTP +52. SOME/IP +53. SSH - 파싱만 가능 (편집 불가) +54. Telnet - 파싱만 가능 (편집 불가) +55. X509 인증서 - 파싱만 가능 (편집 불가) +56. 일반 페이로드 ## DPDK 및 PF_RING 지원 [DPDK](https://www.dpdk.org/)는 빠른 패킷 처리를 위한 데이터 플레인 라이브러리 세트이며, [PF_RING™](https://www.ntop.org/products/packet-capture/pf_ring/)은 패킷 캡처 속도를 대폭 향상시키는 새로운 유형의 네트워크 소켓입니다. PcapPlusPlus는 DPDK 및 PF_RING에 대한 C++ 추상화 계층을 제공합니다. 자세한 내용은 PcapPlusPlus 웹사이트의 [DPDK](https://pcapplusplus.github.io/docs/dpdk) 및 [PF_RING](https://pcapplusplus.github.io/docs/features#pf_ring-support) 지원 페이지에서 확인하세요. -## 성능 벤치마크 +## 벤치마크 PcapPlusPlus는 다른 C++ 라이브러리(`libtins`, `libcrafter` 등)와 성능을 비교하기 위해 Matias Fontanini의 [packet-capture-benchmarks](https://github.com/mfontanini/packet-capture-benchmarks) 프로젝트를 사용했습니다. 성능 결과는 PcapPlusPlus 웹사이트의 [벤치마크](https://pcapplusplus.github.io/docs/benchmark) 페이지에서 확인할 수 있습니다. diff --git a/translation/README-zh-tw.md b/translation/README-zh-tw.md index ba49a92f0d..31a8d6b2f1 100644 --- a/translation/README-zh-tw.md +++ b/translation/README-zh-tw.md @@ -1,3 +1,5 @@ +> ⚠️ **注意:** 本翻譯由 AI 協助維護與同步,可能與最新的英文版本存在差異。若您發現任何錯誤,歡迎開立 GitHub issue 或提交 PR。 +
[![PcapPlusPlus 標誌](https://pcapplusplus.github.io/img/logo/logo_color.png)](https://pcapplusplus.github.io) @@ -24,23 +26,23 @@ PcapPlusPlus 支援對多種網路協議進行解析和建構,並對常見的 - [目錄](#目錄) - [下載](#下載) - [GitHub 發佈頁面](#github-發佈頁面) - - [Homebrew](#Homebrew) + - [Homebrew](#homebrew) - [Vcpkg](#vcpkg) - [Conan](#conan) - - [自行建置](#自行建置]) + - [自行建置](#自行建置) - [驗證您的套件](#驗證您的套件) - [功能概述](#功能概述) - [快速入門](#快速入門) - [API 文件](#api-文件) - [跨平台支援](#跨平台支援) - [支援的網路協定](#支援的網路協定) - - [資料連接層 (L2)](#資料鏈路層-l2) + - [資料連接層 (L2)](#資料連接層-l2) - [網路層 (L3)](#網路層-l3) - [傳輸層 (L4)](#傳輸層-l4) - [對話層 (L5)](#對話層-l5) - - [表現層 (L6)](#表現層-l6) + - [表示層 (L6)](#表示層-l6) - [應用層 (L7)](#應用層-l7) -- [DPDK 與 PF_RING 支援](#dpdk-和-pf_ring-支援) +- [DPDK 和 PF_RING 支援](#dpdk-和-pf_ring-支援) - [基準測試](#基準測試) - [提供回饋](#提供回饋) - [貢獻](#貢獻) @@ -68,22 +70,21 @@ Homebrew 套件頁面: Windows: -```shell +```text .\vcpkg install pcapplusplus ``` MacOS/Linux: -```shell +```text vcpkg install pcapplusplus ``` Vcpkg 套件頁面: - ### Conan -```shell +```text conan install "pcapplusplus/[>0]@" -u ``` @@ -183,7 +184,7 @@ PcapPlusPlus 包含三個函式庫: 2. __Pcap++__ - 用於攔截和發送封包、提供網路和網卡資訊、統計等功能的函式庫。實際上是對封包擷取引擎(如 libpcap、WinPcap、Npcap、DPDK 和 PF_RING)的 C++ 封裝 3. __Common++__ - 包含 Packet++ 和 Pcap++ 共用的一些通用程式碼工具函式庫 -您可以在 PcapPlusPlus 網站的 [API 文件區](https://pcapplusplus.github.io/docs/api) 找到詳細的 API 文件。如果您發現有任何遺漏的資料,請[聯繫我們](#provide-feedback)。 +您可以在 PcapPlusPlus 網站的 [API 文件區](https://pcapplusplus.github.io/docs/api) 找到詳細的 API 文件。如果您發現有任何遺漏的資料,請[聯繫我們](#提供回饋)。 ## 跨平台支援 @@ -208,7 +209,7 @@ __FreeBSD__ 。 -請訪問 PcapPlusPlus 網站查看所有[支援的平台](https://pcapplusplus.github.io/docs/platforms),並參考[下載](#download)區開始在您的平台上使用 PcapPlusPlus。 +請訪問 PcapPlusPlus 網站查看所有[支援的平台](https://pcapplusplus.github.io/docs/platforms),並參考[下載](#下載)區開始在您的平台上使用 PcapPlusPlus。 ## 支援的網路協定 @@ -216,71 +217,77 @@ PcapPlusPlus 目前支援解析、編輯和建構以下網路協定的封包: ### 資料連接層 (L2) -1. Ethernet II -2. IEEE 802.3 Ethernet -3. LLC(僅支援 BPDU) -4. Null/Loopback -5. Packet trailer(又稱 footer 或 padding) -6. PPPoE -7. SLL(Linux 擷取協定) -8. SLL2(Linux 擷取協定 v2) -9. STP -10. VLAN -11. VXLAN -12. Wake on LAN (WoL) -13. NFLOG(Linux Netfilter NFLOG)- 僅支援解析(不支援編輯) +1. Cisco HDLC +2. Ethernet II +3. IEEE 802.3 Ethernet +4. LLC(僅支援 BPDU) +5. Null/Loopback +6. Packet trailer(又稱 footer 或 padding) +7. PPPoE +8. SLL(Linux 擷取協定) +9. SLL2(Linux 擷取協定 v2) +10. STP +11. VLAN +12. VXLAN +13. Wake on LAN (WoL) +14. NFLOG(Linux Netfilter NFLOG)- 僅支援解析(不支援編輯) ### 網路層 (L3) -14. ARP -15. GRE -16. ICMP -17. ICMPv6 -18. IGMP(支援 IGMPv1、IGMPv2 和 IGMPv3) -19. IPv4 -20. IPv6 -21. MPLS -22. NDP -23. Raw IP(IPv4 和 IPv6) -24. VRRP(IPv4 和 IPv6) -25. WireGuard +15. ARP +16. GRE +17. ICMP +18. ICMPv6 +19. IGMP(支援 IGMPv1、IGMPv2 和 IGMPv3) +20. IPv4 +21. IPv6 +22. MPLS +23. NDP +24. Raw IP(IPv4 和 IPv6) +25. VRRP(IPv4 和 IPv6) +26. WireGuard ### 傳輸層 (L4) -26. COTP -27. GTP (v1 & v2) -28. IPSec AH 和 ESP - 僅支援解析(不支援編輯) -29. TCP -30. TPKT -31. UDP +27. COTP +28. GTP (v1 & v2) +29. IPSec AH 和 ESP - 僅支援解析(不支援編輯) +30. TCP +31. TPKT +32. UDP ### 對話層 (L5) -32. SDP -33. SIP +33. SDP +34. SIP ### 表示層 (L6) -34. SSL/TLS - 僅支援解析(不支援編輯) +35. SSL/TLS - 僅支援解析(不支援編輯) ### 應用層 (L7) -35. ASN.1 編碼器與解碼器 -36. BGP (v4) -37. DHCP -38. DHCPv6 -39. DNS -40. FTP -41. HTTP 標頭(請求和響應) -42. LDAP -43. NTP (v3, v4) -44. Radius -45. S7 通訊(S7comm) -46. SMTP -47. SOME/IP -48. SSH - 僅支援解析(不支援編輯) -49. Telnet - 僅支援解析(不支援編輯) -50. 通用酬載(Generic Payload) +36. ASN.1 編碼器與解碼器 +37. BGP (v4) +38. 加密金鑰解碼器 +39. DHCP +40. DHCPv6 +41. DNS +42. DoIP +43. FTP +44. HTTP 標頭(請求和響應) +45. LDAP +46. Modbus +47. NTP (v3, v4) +48. PEM 編碼器與解碼器 +49. Radius +50. S7 通訊(S7comm) +51. SMTP +52. SOME/IP +53. SSH - 僅支援解析(不支援編輯) +54. Telnet - 僅支援解析(不支援編輯) +55. X509 憑證 - 僅支援解析(不支援編輯) +56. 通用酬載(Generic Payload) ## DPDK 和 PF_RING 支援 diff --git a/translation/ai_translation_prompt.md b/translation/ai_translation_prompt.md new file mode 100644 index 0000000000..0bb814a981 --- /dev/null +++ b/translation/ai_translation_prompt.md @@ -0,0 +1,200 @@ +# AI Translation Sync Instructions + +This document is the canonical instruction set for any AI agent (Claude, Codex, Gemini, GPT, or any other automated assistant) tasked with keeping the translated README files under `translation/` in sync with the authoritative English [`README.md`](../README.md) at the repository root. + +Treat this file as a contract: follow every step, do not skip any verification, and do not deviate from the rules below. + +## 1. Scope and Source of Truth + +- **Single source of truth:** `/README.md` at the repository root (English) is the only canonical version. All files under `/translation/` are derivative translations of it. +- **Translated files in scope** (auto-discover; do not hard-code): + - Any file matching `translation/README-*.md` (no other suffix patterns). + - This file (`translation/ai_translation_prompt.md`) is itself **out of scope** — it is an instruction document, not a translation. + - At the time of writing this includes: + - `translation/README-zh-tw.md` — 正體中文 (Traditional Chinese) + - `translation/README-kor.md` — 한국어 (Korean) +- For each discovered file, validate that it is a real translation by confirming **both**: + 1. The English `README.md` `Translations:` line links to it (or — for legacy files such as `README-kor.md` whose suffix doesn't match a standard locale code — that the file's own `Translations:` line and at least one sibling translation's `Translations:` line reference it consistently). + 2. The file contains a `Translations:` line that lists the same set of sibling files as the English source. +- If new `translation/README-*.md` files are added in the future, they automatically fall under this instruction and must be checked the same way. Adding a new translation requires updating the `Translations:` line in **every** existing README (English and all sibling translations) in the same change. + +### 1.1 Mandatory "Synced using AI" caution + +Every translated file under `translation/` (every `README-*.md`) **must** begin with a localized caution stating the file is maintained and synchronized using AI. This notice does **not** appear in the English `README.md` — it is intentionally only present in the translations. + +- **Placement:** the notice is the **very first content** in the file, before the `
` badges block, separated from the rest of the file by a blank line. +- **Format:** a single Markdown blockquote line beginning with `> ⚠️` (warning emoji), followed by **bold** text containing the literal phrase "using AI" (or its faithful translation), and a short instruction telling readers where to report inaccuracies (open a GitHub issue / PR). +- **Language:** localized into the language of the file. The phrase "using AI" itself may be rendered in the target language (e.g. `AI 協助`, `AI를 사용하여`, `mediante IA`) as long as the meaning is preserved and "AI" remains uppercase Latin. +- **Update on every sync run:** if the notice is missing, malformed, or has drifted from the canonical wording in any sibling translation, restore it as part of Step 5. + +Reference snippets (canonical at the time of writing — match tone, do not reword unless the existing translation already uses different phrasing): + +```markdown +> ⚠️ **注意:** 本翻譯由 AI 協助維護與同步,可能與最新的英文版本存在差異。若您發現任何錯誤,歡迎開立 GitHub issue 或提交 PR。 +``` + +```markdown +> ⚠️ **참고:** 이 번역은 AI를 사용하여 유지·동기화되며, 최신 영어 버전과 차이가 있을 수 있습니다. 부정확한 내용을 발견하시면 GitHub 이슈를 등록하거나 PR을 제출해 주세요. +``` + +For any future language without a reference snippet here, follow the same template: warning emoji + bold lead-in containing the localized "using AI" + one short sentence pointing readers at GitHub for corrections. + +## 2. Trigger — When to Run This Procedure + +Run the full sync procedure whenever **any** of the following is true: + +1. The user asks to "update translations", "sync translations", "check translations", or anything semantically equivalent. +2. The English `README.md` has any uncommitted modification in the working tree, **or** has been modified in the current branch relative to the PR base branch (when running on a PR) or the repo's default branch (when no explicit base is given). +3. A new translated README is added under `translation/`, or any existing `translation/README-*.md` file is modified. +4. This contract file (`translation/ai_translation_prompt.md`) is modified — re-verify all translations under the new rules. +5. A periodic / scheduled translation audit is triggered. + +If unsure whether a run is needed, run it. False positives are cheap; stale translations are not. + +If `git` state is inconclusive (detached HEAD, no remote, fetch failure), fall back to comparing the working-tree `README.md` against each translation directly — never silently skip the run. + +## 3. Required Workflow + +Follow these steps **in order**. Do not skip steps even if you believe a translation is already up to date. + +### Step 1 — Read the English source in full + +1. Read `README.md` from the repository root, top to bottom, with no truncation. +2. Build an internal section-by-section outline of: + - Title and badges block + - Intro paragraphs + - Translations link line (`Translations: ...`) + - Table of Contents + - Every `##` and `###` section, in order + - Every numbered list item (especially in "Supported Network Protocols") + - Every code block (verbatim — code must NOT be translated) + - Every link, image, and shield URL + - Footer / License section + +### Step 2 — Enumerate all translated files + +1. List every file matching `translation/README-*.md`. +2. For each translated file, record its target language (inferred from the filename suffix and the `Translations:` line). + +### Step 3 — Diff each translation against English + +For **each** translated file, perform a structural and semantic diff against the English source. The translation is considered **in sync** only if **all** of the following hold: + +| Check | Requirement | +|-------|-------------| +| AI sync caution | The file begins with the mandatory "Synced using AI" notice described in Section 1.1, in the correct language and format, before the badges block. | +| Section structure | Every `##` / `###` heading in English has a corresponding heading in the translation, in the same order. | +| Table of Contents | TOC entries match the section headings present in the translated file, and every TOC anchor resolves to a heading **in the same file**. See "Anchor handling" below for the exact slug rules. | +| Numbered lists | Counts match exactly (e.g. the protocol list must have the same number of items, in the same order, with the same numbering). | +| Code blocks | Identifiers, type names, function names, namespaces, file paths, CLI commands, shell flags, library calls, and import statements are **identical** to English (untranslated). Fence info strings (` ```cpp `, ` ```shell `, ` ```text `) are also identical. Code **comments** and human-readable demo strings (e.g. `std::cerr << "..."` example output) MAY be translated, provided the choice is applied consistently across the file. Compiler diagnostics, tool output that the reader will literally see (e.g. `✓ Verification succeeded!`), and exact reproduction strings must remain in English. | +| External URLs | Every external URL (links to docs, GitHub, shields.io image URLs, badge destination URLs, image `src`) is **byte-identical** to English. | +| Internal Markdown anchors | Same-file anchors (`#section`) point to the **translated** heading slug, regenerated using GitHub's slug rules (see "Anchor handling" below). Anchors that point into other files (e.g. `../README.md#download`) keep the English slug. | +| HTML embeds | All raw HTML elements (`
`, ``, ``, ``, `
`, etc.) match English in element order, nesting, and non-prose attributes (`src`, `srcset`, `media`, `width`, `height`, `style`). The `alt` attribute MAY be translated (see "Badge alt text" below); all other attributes must be byte-identical. | +| Inline technical terms | Library names, protocol names (TCP, IPv4, DPDK, PF_RING, eBPF AF_XDP, JA3, etc.), product names, file names, and API names are kept in English / original casing. | +| Semantic content | Every paragraph in English has a corresponding translated paragraph conveying the same meaning. No content added, removed, or silently reordered. | +| Badges block | Every shields.io / badge image line in English has a corresponding line in the translation, in the same order, with byte-identical image URL and destination URL. Alt / label text inside the badge `[...]` may be localized (see "Badge alt text" below). | +| Markdown structure | Tables (column counts, alignment markers), blockquotes, emphasis (`*`/`_`), strong (`**`/`__`), horizontal rules (`---`), nested list indentation, and link reference definitions all match English structurally. | +| `Translations:` line | Lists the same set of languages as English, with the current language shown as plain text (not a link) and the others as relative links to the correct sibling files. | +| Trailing whitespace / final newline | File ends with a single trailing newline, matching repo style. | + +If any check fails, the translation is **out of sync** and must be updated. + +#### Anchor handling + +GitHub renders Markdown anchors using a deterministic slug algorithm. A translated heading produces a different slug than its English counterpart, so TOC anchors **must be regenerated per file**: + +- Lowercase all ASCII letters; non-ASCII characters (CJK, Hangul, Hiragana, accented Latin) are kept as-is, **not** transliterated. +- Strip punctuation that GitHub strips: `` ` ``, `'`, `"`, `,`, `.`, `:`, `;`, `!`, `?`, `(`, `)`, `[`, `]`, `{`, `}`, `<`, `>`, `/`, `\`, `|`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `+`, `=`, `~`. Keep `-` and `_`. +- Replace each run of whitespace with a single `-`. +- If the same heading text appears more than once in a file, append `-1`, `-2`, ... to the second and subsequent occurrences (matching GitHub's duplicate-suffix rule). +- Do **not** percent-encode Unicode in the anchor source — write the raw Unicode (e.g. `#資料連接層-l2`); GitHub does the encoding at render time. + +Concretely: an English `## Download` heading becomes `#download`, but the Traditional Chinese `## 下載` heading becomes `#下載`, and the Korean `## 다운로드` heading becomes `#다운로드`. The TOC in each translated file must use the localized slug. + +Anchors that target a heading in another file (`../README.md#feature-overview`) are external references and keep the English slug — do not localize them. + +#### Badge alt text + +Shields.io badges have the form `[![alt](image-url)](destination-url)`. + +- `image-url` and `destination-url` must be byte-identical to English. +- The `alt` text inside `[...]` may be translated for accessibility (e.g. `[![GitHub 貢獻者](...)](...)`), provided the translation is consistent across the file and matches existing tone in that translated README. +- The same rule applies to `alt=` attributes on raw `` tags. + +### Step 4 — Report findings before editing + +Before making any edits, produce a short report to the user containing, per translated file: + +- ✅ in sync, or ❌ out of sync +- If out of sync: a bulleted list of concrete discrepancies (e.g. "missing section `## Benchmarks`", "protocol list has 54 items, English has 56", "code block on line 140 has been translated and must be reverted"). + +Do not begin editing until the user has seen this report — unless the user has explicitly pre-authorized autonomous updates in the same request. + +### Step 5 — Update out-of-sync translations + +When updating: + +1. Edit only the translated files. **Never edit the English `README.md`** as part of a sync run. +2. Preserve the file's existing translation style, terminology, and tone. Read the surrounding paragraphs to match voice before introducing new translated text. +3. Translate **prose only**. Do **not** translate: + - Inline code (anything inside `` ` ``). + - Identifiers, type names, function names, file paths, CLI flags, shell commands, namespaces, import statements. + - Fence info strings (the language tag right after ` ``` `). + - Protocol names, library names, product names, brand names. + - External URLs, badge image URLs, badge destination URLs, and any anchor that targets another file. + - HTML attributes other than `alt` (see "HTML embeds" and "Badge alt text" in Step 3). + - Verbatim tool output the reader will literally see (e.g. `✓ Verification succeeded!`). +4. **May** be translated — apply consistently across the file: + - Prose, headings, list item text (the human-readable parts). + - The `alt` text inside Markdown images / shields.io badges and the `alt=` attribute on raw `` tags. + - Same-file Markdown anchor slugs in the TOC, regenerated from the translated heading via the slug rules in Step 3. + - Comments inside code blocks (`// ...`, `# ...`, `/* ... */`). + - Human-readable demo string literals in code blocks (e.g. the message in `std::cerr << "Error opening the pcap file"`) — translate or keep, but do not mix within a single file. +5. Keep all Markdown structure identical to English: same heading levels, same list ordering and numbering, same table layouts, same blockquote usage, same horizontal rules, same emphasis/strong markers. +6. Update anchors in the Table of Contents so that they match the translated heading slugs in that file's language. Anchors that point into other files keep the English slug. +7. Maintain the `Translations:` line so the current file's language appears as plain text and all sibling languages appear as working relative links. +8. Do not introduce new sections, remove existing ones, or reorder them unless the English source did so first. + +### Step 6 — Re-verify after editing + +After edits, repeat Step 3 against the updated file. The run is complete only when every translated file passes every check. + +### Step 7 — Summarize the diff to the user + +Produce a final concise summary listing, per file: + +- Whether it was already in sync or was updated. +- A one-line description of what changed (e.g. "added new `### Cryptographic key decoders` entry, refreshed protocol list 36–56"). + +## 4. Hard Rules (Do / Don't) + +**Do:** + +- Read the entire English `README.md` every run. Do not rely on memory or cached summaries. +- Auto-discover translation files via `translation/README-*.md` glob. +- Preserve all Markdown, HTML (``, ``, ``, `
`), and badge syntax verbatim. +- Keep numbered list counts and ordering aligned with English. +- Match the tone and terminology already established in each translated file. + +**Don't:** + +- Don't translate code, identifiers, external URLs, protocol names, or brand names. +- Don't edit `README.md` as part of a translation sync. +- Don't add disclaimers, footers, or new sections that don't exist in English — **except** the mandatory "Synced using AI" caution required by Section 1.1, which is the only allowed translation-only addition and must appear at the top of every translated file. +- Don't reorder sections or list items. +- Don't change badge image URLs or destination URLs, and don't change cross-file anchor targets (e.g. links into the docs site or `../README.md`). +- Don't drop the `Translations:` line or break its sibling links. +- Don't silently fix typos or stylistic issues in English while doing a translation pass — raise them separately. +- Don't reuse English anchor slugs for same-file TOC links — regenerate them from the translated heading. + +## 5. How to Invoke This Instruction + +Any AI agent (Claude, Codex, Gemini, GPT, or other) can be pointed at this file and told: + +> "Follow `translation/ai_translation_prompt.md` to verify and, if needed, update every file under `translation/` against the latest `README.md`." + +The agent must then execute Sections 3.1 through 3.7 in order and produce the reports described in Steps 4 and 7. + +## 6. Maintenance of This File + +If the structure of `README.md` changes in a way that affects how translations should be verified (for example, a new top-level convention is added, or a new file pattern is introduced under `translation/`), update Sections 1 and 3 of this document **in the same change** so future agents see the new rules. From d62bc50cbeba85b1b0f5ae7f06e069f2a88ba81b Mon Sep 17 00:00:00 2001 From: tigercosmos Date: Fri, 8 May 2026 20:44:35 +0200 Subject: [PATCH 2/3] translation: sync zh-TW / kor with new upstream README content After rebasing onto upstream/master, propagate the changes that landed in README.md: - Add WinDivert link in the intro paragraph, the Feature Overview "Packet capture" bullet, and the API Documentation Pcap++ engine list (also adds AF_XDP to the Pcap++ list). - Add the two new L7 protocol entries (MySQL #47, PostgreSQL Wire Protocol (PGWire) #50) and renumber L7 from 47 onward, taking the protocol list from 56 to 58 entries. Co-Authored-By: Claude Opus 4.7 (1M context) --- translation/README-kor.md | 28 +++++++++++++++------------- translation/README-zh-tw.md | 28 +++++++++++++++------------- 2 files changed, 30 insertions(+), 26 deletions(-) diff --git a/translation/README-kor.md b/translation/README-kor.md index 4fb32915ea..d9ebdd762a 100644 --- a/translation/README-kor.md +++ b/translation/README-kor.md @@ -17,7 +17,7 @@ [PcapPlusPlus](https://pcapplusplus.github.io/)는 네트워크 패킷을 캡처, 분석 및 생성하기 위한 멀티 플랫폼 C++ 라이브러리입니다. 이 라이브러리는 효율적이고 강력하며 사용이 용이하도록 설계되었습니다. -PcapPlusPlus는 다양한 네트워크 프로토콜을 디코딩하고 생성할 수 있는 기능을 제공하며, [libpcap](https://www.tcpdump.org/), [WinPcap](https://www.winpcap.org/), [Npcap](https://nmap.org/npcap/), [DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html), [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) 등과 같은 유용한 패킷 처리 엔진을 위한 손쉬운 C++ 래퍼를 지원합니다. +PcapPlusPlus는 다양한 네트워크 프로토콜을 디코딩하고 생성할 수 있는 기능을 제공하며, [libpcap](https://www.tcpdump.org/), [WinPcap](https://www.winpcap.org/), [Npcap](https://nmap.org/npcap/), [DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html), [WinDivert](https://reqrypt.org/windivert.html), [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) 등과 같은 유용한 패킷 처리 엔진을 위한 손쉬운 C++ 래퍼를 지원합니다. 번역: [English](../README.md) · [正體中文](./README-zh-tw.md) · 한국어 @@ -116,7 +116,7 @@ gh attestation verify <패키지 파일 경로> --repository seladb/PcapPlusPlus ## 기능 개요 -- __패킷 캡처__: [libpcap](https://www.tcpdump.org/), [WinPcap](https://www.winpcap.org/), [Npcap](https://nmap.org/npcap/), [Intel DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html), [ntop의 PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) 및 [raw 소켓](https://en.wikipedia.org/wiki/Network_socket#Raw_socket)을 위한 손쉬운 C++ 래퍼를 통한 패킷 캡처 [[더 알아보기](https://pcapplusplus.github.io/docs/features#packet-capture)] +- __패킷 캡처__: [libpcap](https://www.tcpdump.org/), [WinPcap](https://www.winpcap.org/), [Npcap](https://nmap.org/npcap/), [Intel DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html), [WinDivert](https://reqrypt.org/windivert.html), [ntop의 PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) 및 [raw 소켓](https://en.wikipedia.org/wiki/Network_socket#Raw_socket)을 위한 손쉬운 C++ 래퍼를 통한 패킷 캡처 [[더 알아보기](https://pcapplusplus.github.io/docs/features#packet-capture)] - __패킷 분석 및 생성__: 다양한 [네트워크 프로토콜](https://pcapplusplus.github.io/docs/features#supported-network-protocols)에 대한 분석, 생성 및 편집을 지원 [[더 알아보기](https://pcapplusplus.github.io/docs/features#packet-parsing-and-crafting)] - __파일로 패킷 읽기 및 쓰기__: __PCAP__ 및 __PCAPNG__ 형식의 파일을 지원 [[더 알아보기](https://pcapplusplus.github.io/docs/features#read-and-write-packets-fromto-files)] - __라인 속도에서의 패킷 처리__: [DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html), [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/)을 위한 효율적이고 쉬운 C++ 래퍼 [[더 알아보기](https://pcapplusplus.github.io/docs/features#dpdk-support)] @@ -181,7 +181,7 @@ int main(int argc, char* argv[]) PcapPlusPlus는 다음의 세 가지 라이브러리로 구성됩니다: 1. __Packet++__ - 네트워크 패킷을 파싱하고 생성 및 편집하는 라이브러리 -2. __Pcap++__ - 패킷을 캡처하고 전송하며 네트워크 및 NIC 정보, 통계를 제공하는 라이브러리 (libpcap, WinPcap, Npcap, DPDK, PF_RING 등과 같은 패킷 캡처 엔진을 위한 C++ 래퍼) +2. __Pcap++__ - 패킷을 캡처하고 전송하며 네트워크 및 NIC 정보, 통계를 제공하는 라이브러리 (libpcap, WinPcap, Npcap, DPDK, AF_XDP, WinDivert, PF_RING 등과 같은 패킷 캡처 엔진을 위한 C++ 래퍼) 3. __Common++__ - Packet++ 및 Pcap++에서 사용하는 일반적인 코드 유틸리티를 포함한 라이브러리 PcapPlusPlus 웹사이트의 [API 문서 섹션](https://pcapplusplus.github.io/docs/api)에서 자세한 API 문서를 확인할 수 있습니다. @@ -257,16 +257,18 @@ PcapPlusPlus는 현재 다음 프로토콜의 패킷을 파싱, 편집 및 생 44. HTTP 헤더 (요청 및 응답) 45. LDAP 46. Modbus -47. NTP (v3, v4) -48. PEM 인코더 및 디코더 -49. Radius -50. S7 Communication (S7comm) -51. SMTP -52. SOME/IP -53. SSH - 파싱만 가능 (편집 불가) -54. Telnet - 파싱만 가능 (편집 불가) -55. X509 인증서 - 파싱만 가능 (편집 불가) -56. 일반 페이로드 +47. MySQL - 파싱만 가능 (편집 불가) +48. NTP (v3, v4) +49. PEM 인코더 및 디코더 +50. PostgreSQL Wire Protocol (PGWire) - 파싱만 가능 (편집 불가) +51. Radius +52. S7 Communication (S7comm) +53. SMTP +54. SOME/IP +55. SSH - 파싱만 가능 (편집 불가) +56. Telnet - 파싱만 가능 (편집 불가) +57. X509 인증서 - 파싱만 가능 (편집 불가) +58. 일반 페이로드 ## DPDK 및 PF_RING 지원 diff --git a/translation/README-zh-tw.md b/translation/README-zh-tw.md index 31a8d6b2f1..8586b15165 100644 --- a/translation/README-zh-tw.md +++ b/translation/README-zh-tw.md @@ -17,7 +17,7 @@ [PcapPlusPlus](https://pcapplusplus.github.io/) 是一個跨平台的 C++ 函式庫,提供高效、強大且易於使用的功能,來進行網路封包的擷取、解析和生成。 -PcapPlusPlus 支援對多種網路協議進行解析和建構,並對常見的封包處理函式庫(如 [libpcap](https://www.tcpdump.org/)、[WinPcap](https://www.winpcap.org/)、[Npcap](https://nmap.org/npcap/)、[DPDK](https://www.dpdk.org/)、[eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html) 和 [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/))提供 C++ 的封裝函式。 +PcapPlusPlus 支援對多種網路協議進行解析和建構,並對常見的封包處理函式庫(如 [libpcap](https://www.tcpdump.org/)、[WinPcap](https://www.winpcap.org/)、[Npcap](https://nmap.org/npcap/)、[DPDK](https://www.dpdk.org/)、[eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html)、[WinDivert](https://reqrypt.org/windivert.html) 和 [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/))提供 C++ 的封裝函式。 翻譯: [English](../README.md) · 正體中文 · [한국어](./README-kor.md) @@ -116,7 +116,7 @@ gh attestation verify --repository seladb/PcapPlusPlus ## 功能概述 -- __封包捕獲__:提供簡單易用的 C++ 封裝函式來使用常見的封包捕獲引擎,如 [libpcap](https://www.tcpdump.org/)、[WinPcap](https://www.winpcap.org/)、[Npcap](https://nmap.org/npcap/)、[Intel DPDK](https://www.dpdk.org/)、[eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html)、[ntop 的 PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) 以及 [raw sockets](https://en.wikipedia.org/wiki/Network_socket#Raw_socket) [[了解更多](https://pcapplusplus.github.io/docs/features#packet-capture)] +- __封包捕獲__:提供簡單易用的 C++ 封裝函式來使用常見的封包捕獲引擎,如 [libpcap](https://www.tcpdump.org/)、[WinPcap](https://www.winpcap.org/)、[Npcap](https://nmap.org/npcap/)、[Intel DPDK](https://www.dpdk.org/)、[eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html)、[WinDivert](https://reqrypt.org/windivert.html)、[ntop 的 PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) 以及 [raw sockets](https://en.wikipedia.org/wiki/Network_socket#Raw_socket) [[了解更多](https://pcapplusplus.github.io/docs/features#packet-capture)] - __解析與建構__:包含網路協定解析、網路封包建構與編輯,支援各種類型的 [網路協定](https://pcapplusplus.github.io/docs/features#supported-network-protocols) [[了解更多](https://pcapplusplus.github.io/docs/features#packet-parsing-and-crafting)] - __從檔案讀寫封包__:支援 __PCAP__ 和 __PCAPNG__ 格式 [[了解更多](https://pcapplusplus.github.io/docs/features#read-and-write-packets-fromto-files)] - __封包處理__:以線性速度提供高效且易用的 C++ 封裝函式來使用 [DPDK](https://www.dpdk.org/)、[eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html) 和 [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/) [[了解更多](https://pcapplusplus.github.io/docs/features#dpdk-support)] @@ -181,7 +181,7 @@ int main(int argc, char* argv[]) PcapPlusPlus 包含三個函式庫: 1. __Packet++__ - 用於解析、創建和編輯網路封包的函式庫 -2. __Pcap++__ - 用於攔截和發送封包、提供網路和網卡資訊、統計等功能的函式庫。實際上是對封包擷取引擎(如 libpcap、WinPcap、Npcap、DPDK 和 PF_RING)的 C++ 封裝 +2. __Pcap++__ - 用於攔截和發送封包、提供網路和網卡資訊、統計等功能的函式庫。實際上是對封包擷取引擎(如 libpcap、WinPcap、Npcap、DPDK、AF_XDP、WinDivert 和 PF_RING)的 C++ 封裝 3. __Common++__ - 包含 Packet++ 和 Pcap++ 共用的一些通用程式碼工具函式庫 您可以在 PcapPlusPlus 網站的 [API 文件區](https://pcapplusplus.github.io/docs/api) 找到詳細的 API 文件。如果您發現有任何遺漏的資料,請[聯繫我們](#提供回饋)。 @@ -278,16 +278,18 @@ PcapPlusPlus 目前支援解析、編輯和建構以下網路協定的封包: 44. HTTP 標頭(請求和響應) 45. LDAP 46. Modbus -47. NTP (v3, v4) -48. PEM 編碼器與解碼器 -49. Radius -50. S7 通訊(S7comm) -51. SMTP -52. SOME/IP -53. SSH - 僅支援解析(不支援編輯) -54. Telnet - 僅支援解析(不支援編輯) -55. X509 憑證 - 僅支援解析(不支援編輯) -56. 通用酬載(Generic Payload) +47. MySQL - 僅支援解析(不支援編輯) +48. NTP (v3, v4) +49. PEM 編碼器與解碼器 +50. PostgreSQL Wire Protocol (PGWire) - 僅支援解析(不支援編輯) +51. Radius +52. S7 通訊(S7comm) +53. SMTP +54. SOME/IP +55. SSH - 僅支援解析(不支援編輯) +56. Telnet - 僅支援解析(不支援編輯) +57. X509 憑證 - 僅支援解析(不支援編輯) +58. 通用酬載(Generic Payload) ## DPDK 和 PF_RING 支援 From 27ca07906b239fa470b116f806afc9f0ddd2418e Mon Sep 17 00:00:00 2001 From: tigercosmos Date: Fri, 8 May 2026 21:05:17 +0200 Subject: [PATCH 3/3] =?UTF-8?q?translation:=20address=20Codex=20review=20?= =?UTF-8?q?=E2=80=94=20fix=20kor=201:1=20sync=20and=20prompt=20slug=20rule?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Contract (translation/ai_translation_prompt.md): - Anchor handling: rewrite the GitHub slug rules to faithfully describe github-slugger's algorithm — per-character whitespace replacement (not per-run), case folding via toLowerCase that also affects accented Latin, explicit punctuation-stripping notes for CJK, and a worked-examples table covering A&B, multi-space, accented Latin, CJK, and existing TW/Korean headings. - Section 1.1 caution format: clarify that the bold lead-in is a localized label (注意:/참고:/Note:) and the AI mention sits in the prose, not inside the bold span — matching the canonical reference snippets and the existing translated files. translation/README-kor.md (1:1 sync gaps Codex flagged): - Restore placeholder in the gh attestation shell command (was wrongly localized). - Expand the Packet reassembly Feature Overview bullet to fully cover TCP retransmission, out-of-order, missing data, and IPv4/IPv6 fragment creation/reassembly (was abridged to one phrase). - Restore the missing "If you see any missing data please contact us" sentence under API Documentation, with the localized #피드백-제공 same-file anchor. - Restore the raw // Multi Platform Support block matching the English HTML structure (was collapsed to a single sentence with no embeds). - Split the DPDK And PF_RING Support section back into its 4 English paragraphs and reinstate the "routers, firewalls, load balancers" and boilerplate-removal details that had been collapsed away. - Split the Benchmarks section back into 2 paragraphs to match English structure. Co-Authored-By: Claude Opus 4.7 (1M context) --- translation/README-kor.md | 39 ++++++++++++++++++++++++---- translation/ai_translation_prompt.md | 36 ++++++++++++++++++------- 2 files changed, 60 insertions(+), 15 deletions(-) diff --git a/translation/README-kor.md b/translation/README-kor.md index d9ebdd762a..c89bf321b4 100644 --- a/translation/README-kor.md +++ b/translation/README-kor.md @@ -105,7 +105,7 @@ PcapPlusPlus 웹사이트의 [소스에서 빌드](https://pcapplusplus.github.i v23.09 이상의 PcapPlusPlus 릴리스는 GitHub 증명을 통해 서명됩니다. 모든 증명은 [여기](https://github.com/seladb/PcapPlusPlus/attestations)에서 확인할 수 있습니다. GitHub CLI를 통해 이러한 패키지의 증명을 검증할 수 있습니다. 패키지 검증을 위해 다음 명령어를 사용할 수 있습니다: ```shell -gh attestation verify <패키지 파일 경로> --repository seladb/PcapPlusPlus +gh attestation verify --repository seladb/PcapPlusPlus ``` 터미널에 다음과 같은 출력이 나타납니다: @@ -121,7 +121,7 @@ gh attestation verify <패키지 파일 경로> --repository seladb/PcapPlusPlus - __파일로 패킷 읽기 및 쓰기__: __PCAP__ 및 __PCAPNG__ 형식의 파일을 지원 [[더 알아보기](https://pcapplusplus.github.io/docs/features#read-and-write-packets-fromto-files)] - __라인 속도에서의 패킷 처리__: [DPDK](https://www.dpdk.org/), [eBPF AF_XDP](https://www.kernel.org/doc/html/next/networking/af_xdp.html), [PF_RING](https://www.ntop.org/products/packet-capture/pf_ring/)을 위한 효율적이고 쉬운 C++ 래퍼 [[더 알아보기](https://pcapplusplus.github.io/docs/features#dpdk-support)] - __멀티 플랫폼 지원__: Linux, MacOS, Windows, Android 및 FreeBSD에서 완전 지원 -- __패킷 재조합__: __TCP 재조합__ 및 __IP 단편화와 재조합__ [[더 알아보기](https://pcapplusplus.github.io/docs/features#packet-reassembly)] +- __패킷 재조합__: TCP 재전송, 순서가 뒤바뀐 TCP 패킷, 누락된 TCP 데이터를 처리하는 독자적인 __TCP 재조합__ 구현과, IPv4 및 IPv6 단편을 생성·재조합하는 __IP 단편화 및 재조합__ 지원 [[더 알아보기](https://pcapplusplus.github.io/docs/features#packet-reassembly)] - __패킷 필터링__: libpcap의 BPF 필터를 더 간편하게 사용 [[더 알아보기](https://pcapplusplus.github.io/docs/features#packet-filtering)] - __TLS 핑거프린팅__: [JA3 및 JA3S](https://github.com/salesforce/ja3) TLS 핑거프린팅의 C++ 구현 [[더 알아보기](https://pcapplusplus.github.io/docs/features#tls-fingerprinting)] @@ -185,10 +185,32 @@ PcapPlusPlus는 다음의 세 가지 라이브러리로 구성됩니다: 3. __Common++__ - Packet++ 및 Pcap++에서 사용하는 일반적인 코드 유틸리티를 포함한 라이브러리 PcapPlusPlus 웹사이트의 [API 문서 섹션](https://pcapplusplus.github.io/docs/api)에서 자세한 API 문서를 확인할 수 있습니다. +누락된 내용이 있다면 [문의해 주세요](#피드백-제공). ## 멀티 플랫폼 지원 -PcapPlusPlus는 현재 __Windows__, __Linux__, __MacOS__, __Android__, __FreeBSD__에서 지원됩니다. PcapPlusPlus 웹사이트에서 [지원 플랫폼](https://pcapplusplus.github.io/docs/platforms) 전체 목록을 확인할 수 있으며, [다운로드](#다운로드) 섹션을 참조하여 해당 플랫폼에서 PcapPlusPlus를 시작하세요. +PcapPlusPlus는 현재 +__Windows__ + + +, +__Linux__ + + +, +__MacOS__ + + +, +__Android__ + + + 및 +__FreeBSD__ + + +에서 지원됩니다. +PcapPlusPlus 웹사이트의 [지원 플랫폼](https://pcapplusplus.github.io/docs/platforms) 전체 목록을 확인하시고, [다운로드](#다운로드) 섹션을 참조하여 해당 플랫폼에서 PcapPlusPlus를 시작하세요. ## 지원되는 네트워크 프로토콜 @@ -272,11 +294,18 @@ PcapPlusPlus는 현재 다음 프로토콜의 패킷을 파싱, 편집 및 생 ## DPDK 및 PF_RING 지원 -[DPDK](https://www.dpdk.org/)는 빠른 패킷 처리를 위한 데이터 플레인 라이브러리 세트이며, [PF_RING™](https://www.ntop.org/products/packet-capture/pf_ring/)은 패킷 캡처 속도를 대폭 향상시키는 새로운 유형의 네트워크 소켓입니다. PcapPlusPlus는 DPDK 및 PF_RING에 대한 C++ 추상화 계층을 제공합니다. 자세한 내용은 PcapPlusPlus 웹사이트의 [DPDK](https://pcapplusplus.github.io/docs/dpdk) 및 [PF_RING](https://pcapplusplus.github.io/docs/features#pf_ring-support) 지원 페이지에서 확인하세요. +[Data Plane Development Kit (DPDK)](https://www.dpdk.org/)는 빠른 패킷 처리를 위한 데이터 플레인 라이브러리와 네트워크 인터페이스 컨트롤러 드라이버 모음입니다. + +[PF_RING™](https://www.ntop.org/products/packet-capture/pf_ring/)은 패킷 캡처 속도를 획기적으로 향상시키는 새로운 유형의 네트워크 소켓입니다. + +두 프레임워크 모두 매우 빠른 패킷 처리(라인 속도까지)를 제공하며, 라우터, 방화벽, 로드 밸런서 등 다양한 네트워크 애플리케이션에서 사용됩니다. +PcapPlusPlus는 DPDK 및 PF_RING 위에 C++ 추상화 계층을 제공합니다. 이 추상화 계층은 두 프레임워크를 사용할 때 발생하는 많은 보일러플레이트 코드를 제거하여 사용하기 쉬운 인터페이스를 제공합니다. 자세한 내용은 PcapPlusPlus 웹사이트의 [DPDK](https://pcapplusplus.github.io/docs/dpdk) 및 [PF_RING](https://pcapplusplus.github.io/docs/features#pf_ring-support) 지원 페이지에서 확인하세요. ## 벤치마크 -PcapPlusPlus는 다른 C++ 라이브러리(`libtins`, `libcrafter` 등)와 성능을 비교하기 위해 Matias Fontanini의 [packet-capture-benchmarks](https://github.com/mfontanini/packet-capture-benchmarks) 프로젝트를 사용했습니다. 성능 결과는 PcapPlusPlus 웹사이트의 [벤치마크](https://pcapplusplus.github.io/docs/benchmark) 페이지에서 확인할 수 있습니다. +Matias Fontanini의 [packet-capture-benchmarks](https://github.com/mfontanini/packet-capture-benchmarks) 프로젝트를 사용하여 PcapPlusPlus와 다른 유사한 C++ 라이브러리(`libtins`, `libcrafter` 등)의 성능을 비교했습니다. + +결과는 PcapPlusPlus 웹사이트의 [벤치마크](https://pcapplusplus.github.io/docs/benchmark) 페이지에서 확인할 수 있습니다. ## 피드백 제공 diff --git a/translation/ai_translation_prompt.md b/translation/ai_translation_prompt.md index 0bb814a981..e5faf5d9e7 100644 --- a/translation/ai_translation_prompt.md +++ b/translation/ai_translation_prompt.md @@ -23,8 +23,8 @@ Treat this file as a contract: follow every step, do not skip any verification, Every translated file under `translation/` (every `README-*.md`) **must** begin with a localized caution stating the file is maintained and synchronized using AI. This notice does **not** appear in the English `README.md` — it is intentionally only present in the translations. - **Placement:** the notice is the **very first content** in the file, before the `
` badges block, separated from the rest of the file by a blank line. -- **Format:** a single Markdown blockquote line beginning with `> ⚠️` (warning emoji), followed by **bold** text containing the literal phrase "using AI" (or its faithful translation), and a short instruction telling readers where to report inaccuracies (open a GitHub issue / PR). -- **Language:** localized into the language of the file. The phrase "using AI" itself may be rendered in the target language (e.g. `AI 協助`, `AI를 사용하여`, `mediante IA`) as long as the meaning is preserved and "AI" remains uppercase Latin. +- **Format:** a single Markdown blockquote line beginning with `> ⚠️` (warning emoji), followed by a **bold** localized lead-in label (e.g. `**注意:**`, `**참고:**`, `**Note:**`), then plain prose that explicitly states the file is maintained / synchronized using AI and points readers at GitHub for corrections. The literal token `AI` must appear in the prose (uppercase Latin), but does not need to be inside the bold lead-in. +- **Language:** localized into the language of the file. The phrase that conveys "using AI" may be rendered in the target language (e.g. `AI 協助`, `AI를 사용하여`, `mediante IA`) as long as the meaning is preserved and the token `AI` remains uppercase Latin. - **Update on every sync run:** if the notice is missing, malformed, or has drifted from the canonical wording in any sibling translation, restore it as part of Step 5. Reference snippets (canonical at the time of writing — match tone, do not reword unless the existing translation already uses different phrasing): @@ -101,17 +101,33 @@ If any check fails, the translation is **out of sync** and must be updated. #### Anchor handling -GitHub renders Markdown anchors using a deterministic slug algorithm. A translated heading produces a different slug than its English counterpart, so TOC anchors **must be regenerated per file**: +GitHub renders Markdown anchors using the [github-slugger](https://github.com/Flet/github-slugger) algorithm. A translated heading produces a different slug than its English counterpart, so TOC anchors **must be regenerated per file**. -- Lowercase all ASCII letters; non-ASCII characters (CJK, Hangul, Hiragana, accented Latin) are kept as-is, **not** transliterated. -- Strip punctuation that GitHub strips: `` ` ``, `'`, `"`, `,`, `.`, `:`, `;`, `!`, `?`, `(`, `)`, `[`, `]`, `{`, `}`, `<`, `>`, `/`, `\`, `|`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `+`, `=`, `~`. Keep `-` and `_`. -- Replace each run of whitespace with a single `-`. -- If the same heading text appears more than once in a file, append `-1`, `-2`, ... to the second and subsequent occurrences (matching GitHub's duplicate-suffix rule). -- Do **not** percent-encode Unicode in the anchor source — write the raw Unicode (e.g. `#資料連接層-l2`); GitHub does the encoding at render time. +The algorithm, in order: -Concretely: an English `## Download` heading becomes `#download`, but the Traditional Chinese `## 下載` heading becomes `#下載`, and the Korean `## 다운로드` heading becomes `#다운로드`. The TOC in each translated file must use the localized slug. +1. **Lowercase via `String.prototype.toLowerCase()`** — this lowercases ASCII Latin **and** accented Latin (so `É` → `é`). CJK, Hangul, Hiragana, Katakana, Cyrillic without case, etc. are preserved unchanged. +2. **Strip punctuation** — remove ASCII punctuation that has no semantic role in URLs, including: `` ` ``, `'`, `"`, `,`, `.`, `:`, `;`, `!`, `?`, `(`, `)`, `[`, `]`, `{`, `}`, `<`, `>`, `/`, `\`, `|`, `@`, `#`, `$`, `%`, `^`, `&`, `*`, `+`, `=`, `~`. **Keep** `-` and `_` and word characters. CJK / Hangul punctuation (`、`, `。`, `「」`, `()`, etc.) is **also stripped** by github-slugger when it falls outside the kept-character set — when in doubt, drop it. +3. **Replace each whitespace character with a single `-`** — this is per-character, not per-run, so `A B` (3 spaces) becomes `a---b` (3 hyphens). Existing `-` sequences are **not** collapsed. +4. **Duplicate suffix** — if the resulting slug already appears earlier in the same file, append `-1`, `-2`, ... in order of occurrence. +5. **No percent-encoding in the source** — write the raw Unicode (e.g. `#資料連接層-l2`); GitHub does the encoding at render time. -Anchors that target a heading in another file (`../README.md#feature-overview`) are external references and keep the English slug — do not localize them. +Worked examples: + +| Heading | Slug | +|---------|------| +| `## Download` | `#download` | +| `## 下載` | `#下載` | +| `## 다운로드` | `#다운로드` | +| `### Homebrew` | `#homebrew` | +| `## DPDK And PF_RING Support` | `#dpdk-and-pf_ring-support` | +| `### 資料連接層 (L2)` | `#資料連接層-l2` | +| `## Q&A` | `#qa` | +| `## A & B` | `#a--b` (note the **double** hyphen — `&` is stripped, the two surrounding spaces each become `-`) | +| `## Café` | `#café` (`É` is lowercased; the diacritic is preserved) | + +Anchors that target a heading in another file (`../README.md#feature-overview`) are external references and keep the **English** slug — do not localize them. + +If a heading contains characters not covered by the table above (e.g. emoji, unusual punctuation), reproduce github-slugger's output rather than guessing — when uncertain, run it through the library or simplify the heading. #### Badge alt text