You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fory.apache.org by ch...@apache.org on 2026/02/10 07:43:23 UTC

(fory-site) branch main updated: Fix translate (#412)

This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory-site.git


The following commit(s) were added to refs/heads/main by this push:
     new 07b4aadadb Fix translate (#412)
07b4aadadb is described below

commit 07b4aadadb9e511c9b0b3ef59e813f461ace16fd
Author: Shawn Yang <sh...@gmail.com>
AuthorDate: Tue Feb 10 15:43:19 2026 +0800

    Fix translate (#412)
---
 AGENTS.md                                          |  140 +++
 .../docusaurus-plugin-content-docs/current.json    |   16 +
 .../current/benchmarks/go/benchmark_report.md      |   72 +-
 .../current/compiler/_category_.json               |    6 +
 .../current/compiler/compiler-guide.md             |  282 +++--
 .../current/compiler/flatbuffers-idl.md            |  147 +--
 .../current/compiler/generated-code.md             |  178 ++-
 .../current/compiler/index.md                      |  125 +-
 .../current/compiler/protobuf-idl.md               |  255 ++--
 .../current/compiler/schema-idl.md                 | 1315 +++++---------------
 .../current/guide/cpp/field-configuration.md       |  225 ++--
 .../current/guide/cpp/schema-evolution.md          |    2 +-
 .../current/guide/go/configuration.md              |   12 +-
 .../current/guide/go/index.md                      |   26 +-
 .../current/guide/go/struct-tags.md                |  163 ++-
 .../current/guide/java/field-configuration.md      |  373 +++---
 .../current/guide/python/field-configuration.md    |  319 +++--
 .../version-0.13/introduction/overview.md          |   44 +-
 .../version-0.14/guide/cpp/schema-evolution.md     |    2 +-
 .../version-0.15.json                              |   22 +
 .../version-0.15/benchmarks/go/benchmark_report.md |   72 +-
 .../version-0.15/compiler/_category_.json          |    6 +
 .../version-0.15/compiler/compiler-guide.md        |  282 +++--
 .../version-0.15/compiler/flatbuffers-idl.md       |  147 +--
 .../version-0.15/compiler/generated-code.md        |  178 ++-
 .../version-0.15/compiler/index.md                 |  125 +-
 .../version-0.15/compiler/protobuf-idl.md          |  255 ++--
 .../version-0.15/compiler/schema-idl.md            | 1315 +++++---------------
 .../version-0.15/guide/cpp/field-configuration.md  |  225 ++--
 .../version-0.15/guide/cpp/schema-evolution.md     |    2 +-
 .../version-0.15/guide/go/configuration.md         |   12 +-
 .../version-0.15/guide/go/index.md                 |   26 +-
 .../version-0.15/guide/go/struct-tags.md           |  163 ++-
 .../version-0.15/guide/java/field-configuration.md |  373 +++---
 .../guide/python/field-configuration.md            |  319 +++--
 skills/translate-docs-zh/SKILL.md                  |  158 +++
 skills/translate-docs-zh/references/terminology.md |   53 +
 src/pages/download/index.md                        |    4 +-
 .../version-0.13/introduction/overview.md          |   26 +-
 39 files changed, 3203 insertions(+), 4262 deletions(-)

diff --git a/AGENTS.md b/AGENTS.md
new file mode 100644
index 0000000000..7cd142405d
--- /dev/null
+++ b/AGENTS.md
@@ -0,0 +1,140 @@
+# Apache Fory Site: System Understanding (Agent View)
+
+## 1. Project Positioning
+
+This repository contains the Apache Fory website and documentation site source (Docusaurus).  
+It is not the Fory core serialization library itself.
+
+Primary responsibilities:
+
+- Official homepage and marketing content (`src/pages` + custom components)
+- Documentation (multi-version, multi-language)
+- Blog
+- Community, download, and related pages
+
+Core objective: stable static site publishing plus high-quality documentation and Chinese localization maintenance.
+
+## 2. Tech Stack and Runtime
+
+- Framework: Docusaurus 3 (React 18 + TypeScript)
+- Styling and motion: CSS Modules, Tailwind (partial usage), AOS, Framer Motion
+- Search: `docusaurus-lunr-search`
+- Node requirement: `>=18`
+
+Common commands (`package.json`):
+
+- `npm run start` / `npm run start-en` / `npm run start-zh`
+- `npm run build` (runs `prebuild` first)
+- `npm run docusaurus docs:version <ver>` (wrapped command with i18n version copy support)
+- `npm run typecheck`
+
+## 3. Information Architecture and Directory Responsibilities
+
+Key directories:
+
+- `docs/`: current docs (current/dev)
+- `versioned_docs/version-*/`: historical docs by version
+- `versioned_sidebars/`: sidebars for versioned docs
+- `i18n/zh-CN/docusaurus-plugin-content-docs/`: Chinese docs (`current` + `version-*`)
+- `blog/`: blog content
+- `src/pages/`: homepage, users page, download page, security page, etc.
+- `src/theme/`: Docusaurus theme overrides (notably blog rendering behavior)
+- `src/plugin/redirect.js`: site redirect logic
+- `scripts/`: docs versioning and i18n helper scripts
+- `.github/workflows/`: CI/CD pipelines
+
+Current docs footprint (rough file count):
+
+- `docs/`: 158
+- `versioned_docs/`: 333
+- `i18n/zh-CN/docusaurus-plugin-content-docs/`: 500
+
+## 4. Docs Versioning Strategy
+
+- `versions.json` currently includes: `0.15, 0.14, 0.13, 0.12, 0.11, 0.10`
+- In `docusaurus.config.ts`, `docs.lastVersion = "0.15"`
+- The current docs label is `dev` (`current`)
+
+Recommended versioning entry point:
+
+- Use `npm run docusaurus docs:version <ver>`
+- This invokes `scripts/docusaurus-with-i18n.sh`
+- After native Docusaurus versioning, the wrapper copies each locale’s `current/` to `version-<ver>/`
+
+## 5. Internationalization (i18n) Mechanism
+
+Enabled locales:
+
+- `en-US` (default)
+- `zh-CN`
+
+Chinese docs paths:
+
+- `i18n/zh-CN/docusaurus-plugin-content-docs/current/`
+- `i18n/zh-CN/docusaurus-plugin-content-docs/version-*/`
+
+Chinese top-level sidebar labels are managed in:
+
+- `i18n/zh-CN/docusaurus-plugin-content-docs/current.json`
+
+Prebuild step:
+
+- `scripts/copy-i18n-fallback.sh`
+- It fills missing Chinese files for `specification` and `benchmarks` from English sources (`rsync --ignore-existing`) to prevent broken links
+
+This means Chinese docs may be a mix of translated content and English fallback files.
+
+## 6. Site Customization (vs. Default Docusaurus Behavior)
+
+- The homepage is composed of custom sections (Hero, Features, language cards, code carousel)
+- `src/plugin/redirect.js` has built-in redirects:
+  - `fury.apache.org` -> `fory.apache.org`
+  - Old routes `/docs/.../docs/{guide|introduction|start}` -> cleaned routes
+- Blog theme overrides:
+  - List pages prefer frontmatter `description` as summary
+  - Post detail pages remove the global blog sidebar for a focused reading layout
+
+## 7. CI/CD and Quality Gates
+
+### CI
+
+- `lint.yml`
+  - Markdown lint (`markdownlint-cli`)
+  - YAML lint (`yamllint`)
+- `link-check.yml`
+  - Workflow exists, but link-check steps are currently commented out (not effectively running)
+
+### CD
+
+- `deploy.yml`
+  - Runs on push to `main` and on pull requests
+  - Calls `scripts/unified-docs/script.py`
+  - Runs `npm run download-avatars` + `npm run build`
+  - Publishes to `deploy` branch for non-PR events (`peaceiris/actions-gh-pages`)
+
+## 8. Key Repository Caveats
+
+- `CONTRIBUTING.md` states that `docs/guide` and `docs/specification` are mainly synced from `apache/fory`.  
+  For those sections, confirm whether changes should go to the main `apache/fory` repo instead.
+- `scripts/unified-docs/script.py` uses `i18n/eu-US/...` paths (not `en-US`); treat this as existing behavior and validate intent before changing.
+- Since link-check is not effectively active, external link regressions may pass PR checks.
+- The repo has substantial versioned/mirrored docs; avoid accidental bulk edits in `versioned_docs` and `i18n/version-*`.
+
+## 9. Recommended Agent Workflow
+
+- Before editing docs, scope the target explicitly:
+  - `docs/current`
+  - `versioned_docs/version-*`
+  - `i18n/zh-CN/current`
+  - `i18n/zh-CN/version-*`
+- For Chinese translation tasks:
+  - Follow `skills/translate-docs-zh/SKILL.md`
+  - Use terminology from `skills/translate-docs-zh/references/terminology.md`
+  - Do not use external translation tools/APIs/websites
+- When changing top-level sidebar categories (Introduction/Start/Schema IDL & Compiler/Guide):
+  - Update `sidebars.ts`
+  - Update `i18n/zh-CN/docusaurus-plugin-content-docs/current.json` (and version JSON files if needed)
+- Minimum pre-commit validation:
+  - `npm run build`
+  - `npm run typecheck`
+  - Manually verify critical routes: `/`, `/docs`, `/zh-CN/docs`, `/blog`
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
index a3936023b9..ac5312509b 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current.json
@@ -2,5 +2,21 @@
   "version.label": {
     "message": "dev",
     "description": "The label for version current"
+  },
+  "sidebar.docsSidebar.category.Introduction": {
+    "message": "Apache Fory 介绍",
+    "description": "The label for category Introduction in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Start": {
+    "message": "快速开始",
+    "description": "The label for category Start in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Schema IDL & Compiler": {
+    "message": "Schema IDL 与编译器",
+    "description": "The label for category Schema IDL & Compiler in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Guide": {
+    "message": "用户指南",
+    "description": "The label for category Guide in sidebar docsSidebar"
   }
 }
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/go/benchmark_report.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/go/benchmark_report.md
index a1c3d635f2..f73aacf0a2 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/go/benchmark_report.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/benchmarks/go/benchmark_report.md
@@ -10,48 +10,48 @@
 
 ## 性能摘要
 
-| 数据类型 | 操作 | Fory (ops/s) | Protobuf (ops/s) | Msgpack (ops/s) | Fory vs PB | Fory vs MP |
-|---------|------|--------------|------------------|-----------------|------------|------------|
-| Struct | 序列化 | 15.16M | 10.23M | 5.41M | 1.48x | 2.80x |
-| Struct | 反序列化 | 12.10M | 11.01M | 3.23M | 1.10x | 3.75x |
-| Structlist | 序列化 | 1.58M | 561K | 299K | 2.82x | 5.28x |
-| Structlist | 反序列化 | 1.10M | 529K | 175K | 2.09x | 6.30x |
-| Sample | 序列化 | 7.28M | 2.72M | 670K | 2.68x | 10.87x |
-| Sample | 反序列化 | 3.79M | 2.37M | 376K | 1.60x | 10.09x |
-| Samplelist | 序列化 | 510K | 141K | 38K | 3.61x | 13.34x |
-| Samplelist | 反序列化 | 236K | 107K | 19K | 2.20x | 12.66x |
-| Mediacontent | 序列化 | 3.72M | 2.12M | 1.29M | 1.75x | 2.88x |
-| Mediacontent | 反序列化 | 2.34M | 1.81M | 698K | 1.30x | 3.35x |
-| Mediacontentlist | 序列化 | 268K | 110K | 72K | 2.44x | 3.72x |
-| Mediacontentlist | 反序列化 | 138K | 87K | 36K | 1.58x | 3.86x |
+| 数据类型         | 操作     | Fory (ops/s) | Protobuf (ops/s) | Msgpack (ops/s) | Fory vs PB | Fory vs MP |
+| ---------------- | -------- | ------------ | ---------------- | --------------- | ---------- | ---------- |
+| Struct           | 序列化   | 15.16M       | 10.23M           | 5.41M           | 1.48x      | 2.80x      |
+| Struct           | 反序列化 | 12.10M       | 11.01M           | 3.23M           | 1.10x      | 3.75x      |
+| Structlist       | 序列化   | 1.58M        | 561K             | 299K            | 2.82x      | 5.28x      |
+| Structlist       | 反序列化 | 1.10M        | 529K             | 175K            | 2.09x      | 6.30x      |
+| Sample           | 序列化   | 7.28M        | 2.72M            | 670K            | 2.68x      | 10.87x     |
+| Sample           | 反序列化 | 3.79M        | 2.37M            | 376K            | 1.60x      | 10.09x     |
+| Samplelist       | 序列化   | 510K         | 141K             | 38K             | 3.61x      | 13.34x     |
+| Samplelist       | 反序列化 | 236K         | 107K             | 19K             | 2.20x      | 12.66x     |
+| Mediacontent     | 序列化   | 3.72M        | 2.12M            | 1.29M           | 1.75x      | 2.88x      |
+| Mediacontent     | 反序列化 | 2.34M        | 1.81M            | 698K            | 1.30x      | 3.35x      |
+| Mediacontentlist | 序列化   | 268K         | 110K             | 72K             | 2.44x      | 3.72x      |
+| Mediacontentlist | 反序列化 | 138K         | 87K              | 36K             | 1.58x      | 3.86x      |
 
 ## 详细耗时(ns/op)
 
-| 数据类型 | 操作 | Fory | Protobuf | Msgpack |
-|---------|------|------|----------|---------|
-| Struct | 序列化 | 66.0 | 97.8 | 184.9 |
-| Struct | 反序列化 | 82.7 | 90.9 | 309.6 |
-| Structlist | 序列化 | 632.8 | 1783.0 | 3340.0 |
-| Structlist | 反序列化 | 906.4 | 1891.0 | 5709.0 |
-| Sample | 序列化 | 137.3 | 367.3 | 1492.0 |
-| Sample | 反序列化 | 263.6 | 422.2 | 2661.0 |
-| Samplelist | 序列化 | 1962.0 | 7087.0 | 26169.0 |
-| Samplelist | 反序列化 | 4234.0 | 9321.0 | 53615.0 |
-| Mediacontent | 序列化 | 268.8 | 471.1 | 773.7 |
-| Mediacontent | 反序列化 | 426.9 | 553.1 | 1432.0 |
-| Mediacontentlist | 序列化 | 3736.0 | 9107.0 | 13911.0 |
-| Mediacontentlist | 反序列化 | 7247.0 | 11435.0 | 27975.0 |
+| 数据类型         | 操作     | Fory   | Protobuf | Msgpack |
+| ---------------- | -------- | ------ | -------- | ------- |
+| Struct           | 序列化   | 66.0   | 97.8     | 184.9   |
+| Struct           | 反序列化 | 82.7   | 90.9     | 309.6   |
+| Structlist       | 序列化   | 632.8  | 1783.0   | 3340.0  |
+| Structlist       | 反序列化 | 906.4  | 1891.0   | 5709.0  |
+| Sample           | 序列化   | 137.3  | 367.3    | 1492.0  |
+| Sample           | 反序列化 | 263.6  | 422.2    | 2661.0  |
+| Samplelist       | 序列化   | 1962.0 | 7087.0   | 26169.0 |
+| Samplelist       | 反序列化 | 4234.0 | 9321.0   | 53615.0 |
+| Mediacontent     | 序列化   | 268.8  | 471.1    | 773.7   |
+| Mediacontent     | 反序列化 | 426.9  | 553.1    | 1432.0  |
+| Mediacontentlist | 序列化   | 3736.0 | 9107.0   | 13911.0 |
+| Mediacontentlist | 反序列化 | 7247.0 | 11435.0  | 27975.0 |
 
 ### 序列化后数据大小(字节)
 
-| 数据类型 | Fory | Protobuf | Msgpack |
-|---------|------|----------|---------|
-| Struct | 58 | 61 | 57 |
-| Sample | 446 | 375 | 524 |
-| MediaContent | 342 | 301 | 400 |
-| StructList | 560 | 1260 | 1146 |
-| SampleList | 7600 | 7560 | 10486 |
-| MediaContentList | 5776 | 6080 | 8006 |
+| 数据类型         | Fory | Protobuf | Msgpack |
+| ---------------- | ---- | -------- | ------- |
+| Struct           | 58   | 61       | 57      |
+| Sample           | 446  | 375      | 524     |
+| MediaContent     | 342  | 301      | 400     |
+| StructList       | 560  | 1260     | 1146    |
+| SampleList       | 7600 | 7560     | 10486   |
+| MediaContentList | 5776 | 6080     | 8006    |
 
 ## 性能图表
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/_category_.json
new file mode 100644
index 0000000000..abf19e9fcb
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 3,
+  "label": "Schema IDL 与编译器",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/compiler-guide.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/compiler-guide.md
index 1c8184bfda..0046cbcd3b 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/compiler-guide.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/compiler-guide.md
@@ -19,9 +19,7 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
-本指南介绍 Fory IDL 编译器的安装、使用与集成。
+本指南介绍 Fory IDL 编译器的安装、命令行使用方式以及构建系统集成方案。
 
 ## 安装
 
@@ -52,155 +50,153 @@ foryc --scan-generated [OPTIONS]
 
 ### 选项
 
-Compile options:
-
-| Option                                | Description                                           | Default             |
-| ------------------------------------- | ----------------------------------------------------- | ------------------- |
-| `--lang`                              | Comma-separated target languages                      | `all`               |
-| `--output`, `-o`                      | Output directory                                      | `./generated`       |
-| `--package`                           | Override package name from Fory IDL file              | (from file)         |
-| `-I`, `--proto_path`, `--import_path` | Add directory to import search path (can be repeated) | (none)              |
-| `--java_out=DST_DIR`                  | Generate Java code in DST_DIR                         | (none)              |
-| `--python_out=DST_DIR`                | Generate Python code in DST_DIR                       | (none)              |
-| `--cpp_out=DST_DIR`                   | Generate C++ code in DST_DIR                          | (none)              |
-| `--go_out=DST_DIR`                    | Generate Go code in DST_DIR                           | (none)              |
-| `--rust_out=DST_DIR`                  | Generate Rust code in DST_DIR                         | (none)              |
-| `--go_nested_type_style`              | Go nested type naming: `camelcase` or `underscore`    | from schema/default |
-| `--emit-fdl`                          | Print translated Fory IDL for non-`.fdl` inputs       | `false`             |
-| `--emit-fdl-path`                     | Write translated Fory IDL to a file or directory      | (stdout)            |
-
-Scan options (with `--scan-generated`):
-
-| Option       | Description                    | Default |
-| ------------ | ------------------------------ | ------- |
-| `--root`     | Root directory to scan         | `.`     |
-| `--relative` | Print paths relative to root   | `false` |
-| `--delete`   | Delete matched generated files | `false` |
-| `--dry-run`  | Scan/print only, do not delete | `false` |
-
-### Scan Generated Files
-
-Use `--scan-generated` to find files produced by `foryc`. The scanner walks
-the tree recursively, skips `build/`, `target/`, and hidden directories, and prints
-each generated file as it is found.
+编译选项:
+
+| 选项                                  | 说明                                             | 默认值        |
+| ------------------------------------- | ------------------------------------------------ | ------------- |
+| `--lang`                              | 目标语言列表(逗号分隔)                         | `all`         |
+| `--output`, `-o`                      | 输出目录                                         | `./generated` |
+| `--package`                           | 覆盖 Fory IDL 文件中的 package                   | (来自文件)  |
+| `-I`, `--proto_path`, `--import_path` | 添加 import 搜索路径(可重复)                   | (无)        |
+| `--java_out=DST_DIR`                  | 将 Java 代码输出到 `DST_DIR`                     | (无)        |
+| `--python_out=DST_DIR`                | 将 Python 代码输出到 `DST_DIR`                   | (无)        |
+| `--cpp_out=DST_DIR`                   | 将 C++ 代码输出到 `DST_DIR`                      | (无)        |
+| `--go_out=DST_DIR`                    | 将 Go 代码输出到 `DST_DIR`                       | (无)        |
+| `--rust_out=DST_DIR`                  | 将 Rust 代码输出到 `DST_DIR`                     | (无)        |
+| `--go_nested_type_style`              | Go 嵌套类型命名风格:`camelcase` 或 `underscore` | schema/默认值 |
+| `--emit-fdl`                          | 对非 `.fdl` 输入打印转换后的 Fory IDL            | `false`       |
+| `--emit-fdl-path`                     | 将转换后的 Fory IDL 写入文件或目录               | (stdout)    |
+
+扫描选项(配合 `--scan-generated`):
+
+| 选项         | 说明                   | 默认值  |
+| ------------ | ---------------------- | ------- |
+| `--root`     | 扫描根目录             | `.`     |
+| `--relative` | 以相对路径输出         | `false` |
+| `--delete`   | 删除匹配到的生成文件   | `false` |
+| `--dry-run`  | 仅扫描输出,不执行删除 | `false` |
+
+### 扫描生成文件
+
+使用 `--scan-generated` 可以定位 `foryc` 生成的文件。扫描器会递归遍历目录树,跳过 `build/`、`target/` 和隐藏目录,并输出找到的每个生成文件。
 
 ```bash
-# Scan current directory
+# 扫描当前目录
 foryc --scan-generated
 
-# Scan a specific root
+# 扫描指定根目录
 foryc --scan-generated --root ./src
 
-# Print paths relative to the scan root
+# 输出相对路径
 foryc --scan-generated --root ./src --relative
 
-# Delete scanned generated files
+# 删除扫描到的生成文件
 foryc --scan-generated --root ./src --delete
 
-# Dry-run (scan and print only)
+# Dry-run(仅扫描与输出)
 foryc --scan-generated --root ./src --dry-run
 ```
 
-### Examples
+### 示例
 
-**Compile for all languages:**
+**为所有语言编译:**
 
 ```bash
 foryc schema.fdl
 ```
 
-**Compile for specific languages:**
+**为指定语言编译:**
 
 ```bash
 foryc schema.fdl --lang java,python
 ```
 
-**Specify output directory:**
+**指定输出目录:**
 
 ```bash
 foryc schema.fdl --output ./src/generated
 ```
 
-**Override package name:**
+**覆盖 package:**
 
 ```bash
 foryc schema.fdl --package com.myapp.models
 ```
 
-**Compile multiple files:**
+**编译多个文件:**
 
 ```bash
 foryc user.fdl order.fdl product.fdl --output ./generated
 ```
 
-**Use import search paths:**
+**使用 import 搜索路径:**
 
 ```bash
-# Add a single import path
+# 单个路径
 foryc src/main.fdl -I libs/common
 
-# Add multiple import paths (repeated option)
+# 多个路径(重复参数)
 foryc src/main.fdl -I libs/common -I libs/types
 
-# Add multiple import paths (comma-separated)
+# 多个路径(逗号分隔)
 foryc src/main.fdl -I libs/common,libs/types,third_party/
 
-# Using --proto_path (protoc-compatible alias)
+# --proto_path(protoc 兼容别名)
 foryc src/main.fdl --proto_path=libs/common
 
-# Mix all styles
+# 混合写法
 foryc src/main.fdl -I libs/common,libs/types --proto_path third_party/
 ```
 
-**Language-specific output directories (protoc-style):**
+**语言定向输出目录(protoc 风格):**
 
 ```bash
-# Generate only Java code to a specific directory
+# 仅生成 Java
 foryc schema.fdl --java_out=./src/main/java
 
-# Generate multiple languages to different directories
+# 多语言分别输出到不同目录
 foryc schema.fdl --java_out=./java/gen --python_out=./python/src --go_out=./go/gen
 
-# Combine with import paths
+# 结合 import 路径
 foryc schema.fdl --java_out=./gen/java -I proto/ -I common/
 ```
 
-When using `--{lang}_out` options:
+使用 `--{lang}_out` 时:
 
-- Only the specified languages are generated (not all languages)
-- The compiler writes under the specified directory (language-specific generators may still create package/module subdirectories)
-- This is compatible with protoc-style workflows
+- 只生成显式指定的语言(不会生成全部语言)
+- 输出写入指定目录(语言生成器可能继续按包/模块分层)
+- 兼容 protoc 风格工作流
 
-**Inspect translated Fory IDL from proto/fbs input:**
+**查看 proto/fbs 输入转换后的 Fory IDL:**
 
 ```bash
-# Print translated Fory IDL to stdout
+# 输出到 stdout
 foryc schema.proto --emit-fdl
 
-# Write translated Fory IDL to a directory
+# 输出到目录
 foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
 ```
 
-## Import Path Resolution
+## Import 路径解析
 
-When compiling Fory IDL files with imports, the compiler searches for imported files in this order:
+编译含 import 的 Fory IDL 文件时,导入文件按以下顺序查找:
 
-1. **Relative to the importing file (default)** - The directory containing the file with the import statement is always searched first, automatically. No `-I` flag needed for same-directory imports.
-2. **Each `-I` path in order** - Additional search paths specified on the command line
+1. **相对于导入者文件目录(默认)**:始终优先查找,无需 `-I`
+2. **按顺序遍历每个 `-I` 路径**
 
-**Same-directory imports work automatically:**
+**同目录 import 可直接生效:**
 
 ```protobuf
 // main.fdl
-import "common.fdl";  // Found if common.fdl is in the same directory
+import "common.fdl";  // 若 common.fdl 在同目录,将自动找到
 ```
 
 ```bash
-# No -I needed for same-directory imports
+# 同目录导入无需 -I
 foryc main.fdl
 ```
 
-**Example project structure:**
+**示例目录结构:**
 
 ```
 project/
@@ -210,7 +206,7 @@ project/
     └── common.fdl
 ```
 
-**Without `-I` (fails):**
+**不加 `-I`(失败):**
 
 ```bash
 $ foryc src/main.fdl
@@ -218,7 +214,7 @@ Import error: Import not found: common.fdl
   Searched in: /project/src
 ```
 
-**With `-I` (succeeds):**
+**加 `-I`(成功):**
 
 ```bash
 $ foryc src/main.fdl -I libs/
@@ -226,17 +222,17 @@ Compiling src/main.fdl...
   Resolved 1 import(s)
 ```
 
-## Supported Languages
+## 支持语言
 
-| Language | Flag     | Output Extension | Description                 |
-| -------- | -------- | ---------------- | --------------------------- |
-| Java     | `java`   | `.java`          | POJOs with Fory annotations |
-| Python   | `python` | `.py`            | Dataclasses with type hints |
-| Go       | `go`     | `.go`            | Structs with struct tags    |
-| Rust     | `rust`   | `.rs`            | Structs with derive macros  |
-| C++      | `cpp`    | `.h`             | Structs with FORY macros    |
+| 语言   | 标记     | 输出后缀 | 说明                   |
+| ------ | -------- | -------- | ---------------------- |
+| Java   | `java`   | `.java`  | 带 Fory 注解的 POJO    |
+| Python | `python` | `.py`    | 带类型提示的 dataclass |
+| Go     | `go`     | `.go`    | 带 struct tag 的结构体 |
+| Rust   | `rust`   | `.rs`    | 带 derive 宏的结构体   |
+| C++    | `cpp`    | `.h`     | 带 FORY 宏的结构体     |
 
-## Output Structure
+## 输出结构
 
 ### Java
 
@@ -251,9 +247,9 @@ generated/
             └── ExampleForyRegistration.java
 ```
 
-- One file per type (enum or message)
-- Package structure matches Fory IDL package
-- Registration helper class generated
+- 每个类型(enum/message)单独一个文件
+- 包路径与 Fory IDL package 一致
+- 会生成注册辅助类
 
 ### Python
 
@@ -263,9 +259,9 @@ generated/
     └── example.py
 ```
 
-- Single module with all types
-- Module name derived from package
-- Registration function included
+- 所有类型位于单模块
+- 模块名由 package 派生
+- 包含注册函数
 
 ### Go
 
@@ -276,9 +272,9 @@ generated/
         └── example.go
 ```
 
-- Single file with all types
-- Directory and package name are derived from `go_package` or the Fory IDL package
-- Registration function included
+- 所有类型在单文件中
+- 目录名与包名来自 `go_package` 或 Fory IDL package
+- 包含注册函数
 
 ### Rust
 
@@ -288,9 +284,9 @@ generated/
     └── example.rs
 ```
 
-- Single module with all types
-- Module name derived from package
-- Registration function included
+- 所有类型位于单模块
+- 模块名由 package 派生
+- 包含注册函数
 
 ### C++
 
@@ -300,15 +296,15 @@ generated/
     └── example.h
 ```
 
-- Single header file
-- Namespace matches package (dots to `::`)
-- Header guards and forward declarations
+- 单头文件输出
+- 命名空间与 package 对齐(点号转换为 `::`)
+- 自动包含 header guard 与前向声明
 
-## Build Integration
+## 构建系统集成
 
 ### Maven (Java)
 
-Add to your `pom.xml`:
+在 `pom.xml` 中添加:
 
 ```xml
 <build>
@@ -339,7 +335,7 @@ Add to your `pom.xml`:
 </build>
 ```
 
-Add generated sources:
+添加生成源码目录:
 
 ```xml
 <build>
@@ -368,7 +364,7 @@ Add generated sources:
 
 ### Gradle (Java/Kotlin)
 
-Add to `build.gradle`:
+在 `build.gradle` 中添加:
 
 ```groovy
 task generateForyTypes(type: Exec) {
@@ -390,7 +386,7 @@ sourceSets {
 
 ### Python (setuptools)
 
-Add to `setup.py` or `pyproject.toml`:
+在 `setup.py` 或 `pyproject.toml` 中加入生成步骤:
 
 ```python
 # setup.py
@@ -413,24 +409,24 @@ setup(
 )
 ```
 
-### Go (go generate)
+### Go (`go generate`)
 
-Add to your Go file:
+在 Go 文件中添加:
 
 ```go
 //go:generate foryc ../schema.fdl --lang go --output .
 package models
 ```
 
-Run:
+执行:
 
 ```bash
 go generate ./...
 ```
 
-### Rust (build.rs)
+### Rust (`build.rs`)
 
-Add to `build.rs`:
+在 `build.rs` 中添加:
 
 ```rust
 use std::process::Command;
@@ -451,7 +447,7 @@ fn main() {
 
 ### CMake (C++)
 
-Add to `CMakeLists.txt`:
+在 `CMakeLists.txt` 中添加:
 
 ```cmake
 find_program(FORY_COMPILER foryc)
@@ -474,7 +470,7 @@ target_include_directories(mylib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/generated)
 
 ### Bazel
 
-Create a rule in `BUILD`:
+在 `BUILD` 中添加规则:
 
 ```python
 genrule(
@@ -492,51 +488,51 @@ cc_library(
 )
 ```
 
-## Error Handling
+## 错误处理
 
-### Syntax Errors
+### 语法错误
 
 ```
 Error: Line 5, Column 12: Expected ';' after field declaration
 ```
 
-Fix: Check the indicated line for missing semicolons or syntax issues.
+修复方式:检查对应行是否缺少分号或存在语法问题。
 
-### Duplicate Type Names
+### 类型名重复
 
 ```
 Error: Duplicate type name: User
 ```
 
-Fix: Ensure each enum and message has a unique name within the file.
+修复方式:确保同一文件内每个 enum/message 名称唯一。
 
-### Duplicate Type IDs
+### 类型 ID 重复
 
 ```
 Error: Duplicate type ID 100: User and Order
 ```
 
-Fix: Assign unique type IDs to each type.
+修复方式:为每个类型分配唯一 ID。
 
-### Unknown Type References
+### 未知类型引用
 
 ```
 Error: Unknown type 'Address' in Customer.address
 ```
 
-Fix: Define the referenced type before using it, or check for typos.
+修复方式:先定义被引用类型,或检查类型名拼写。
 
-### Duplicate Field Numbers
+### 字段号重复
 
 ```
 Error: Duplicate field number 1 in User: name and id
 ```
 
-Fix: Assign unique field numbers within each message.
+修复方式:确保同一 message 内字段号唯一。
 
-## Best Practices
+## 最佳实践
 
-### Project Structure
+### 项目结构
 
 ```
 project/
@@ -549,12 +545,12 @@ project/
 └── build.gradle
 ```
 
-### Version Control
+### 版本控制
 
-- **Track**: Fory IDL schema files
-- **Ignore**: Generated code (can be regenerated)
+- **纳入版本控制**:Fory IDL schema 文件
+- **忽略生成代码**:可在构建时再生成
 
-Add to `.gitignore`:
+在 `.gitignore` 中加入:
 
 ```
 # Generated Fory IDL code
@@ -562,12 +558,12 @@ src/generated/
 generated/
 ```
 
-### CI/CD Integration
+### CI/CD 集成
 
-Always regenerate during builds:
+在构建流程中始终重新生成代码:
 
 ```yaml
-# GitHub Actions example
+# GitHub Actions 示例
 steps:
   - name: Install Fory IDL Compiler
     run: pip install ./compiler
@@ -579,14 +575,14 @@ steps:
     run: ./gradlew build
 ```
 
-### Schema Evolution
+### Schema 演进
 
-When modifying schemas:
+修改 schema 时建议遵循:
 
-1. **Never reuse field numbers** - Mark as reserved instead
-2. **Never change type IDs** - They're part of the binary format
-3. **Add new fields** - Use new field numbers
-4. **Use `optional`** - For backward compatibility
+1. **不要复用字段号**:删除字段后应保留/预留
+2. **不要改动类型 ID**:类型 ID 属于二进制协议的一部分
+3. **新增字段使用新字段号**
+4. **优先使用 `optional`**:保持向后兼容
 
 ```protobuf
 message User [id=100] {
@@ -597,7 +593,7 @@ message User [id=100] {
 }
 ```
 
-## Troubleshooting
+## 故障排查
 
 ### Command Not Found
 
@@ -605,7 +601,7 @@ message User [id=100] {
 foryc: command not found
 ```
 
-**Solution:** Ensure the compiler is installed and in your PATH:
+**解决:** 确认编译器已安装且在 PATH 中:
 
 ```bash
 pip install -e ./compiler
@@ -619,15 +615,15 @@ export PATH=$PATH:~/.local/bin
 Permission denied: ./generated
 ```
 
-**Solution:** Ensure write permissions on the output directory:
+**解决:** 确保输出目录具备写权限:
 
 ```bash
 chmod -R u+w ./generated
 ```
 
-### Import Errors in Generated Code
+### 生成代码 import 错误
 
-**Java:** Ensure Fory dependency is in your project:
+**Java:** 确保项目包含 Fory 依赖:
 
 ```xml
 <dependency>
@@ -637,23 +633,23 @@ chmod -R u+w ./generated
 </dependency>
 ```
 
-**Python:** Ensure pyfory is installed:
+**Python:** 确保安装 `pyfory`:
 
 ```bash
 pip install pyfory
 ```
 
-**Go:** Ensure fory module is available:
+**Go:** 确保可获取 fory 模块:
 
 ```bash
 go get github.com/apache/fory/go/fory
 ```
 
-**Rust:** Ensure fory crate is in `Cargo.toml`:
+**Rust:** 确保 `Cargo.toml` 中包含 fory crate:
 
 ```toml
 [dependencies]
 fory = "x.y.z"
 ```
 
-**C++:** Ensure Fory headers are in include path.
+**C++:** 确保编译器 include 路径可找到 Fory 头文件。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/flatbuffers-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/flatbuffers-idl.md
index 579ac6c3fc..6a2bfd2885 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/flatbuffers-idl.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/flatbuffers-idl.md
@@ -19,59 +19,49 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
 本页说明 Apache Fory 如何读取 FlatBuffers schema(`.fbs`)并将其转换为 Fory IR 以生成代码。
 
 ## 本页内容
 
-- When to use FlatBuffers input with Fory
-- Exact FlatBuffers to Fory mapping behavior
-- Supported Fory-specific attributes in `.fbs`
-- Migration notes and generated-code differences
+- 何时应在 Fory 中使用 FlatBuffers 输入
+- FlatBuffers 到 Fory 的精确映射行为
+- `.fbs` 中支持的 Fory 扩展属性
+- 迁移注意事项与生成代码差异
 
 ## 为什么使用 Apache Fory
 
-- Idiomatic generated code: Fory generates language-idiomatic classes/structs
-  that can be used directly as domain objects.
-- Java performance: In Java object-serialization workloads, Fory is faster than
-  FlatBuffers in Fory benchmarks.
-- Other languages: serialization performance is generally in a similar range.
-- Deserialization in practice: FlatBuffers does not perform native-object deserialization and is
-  faster by default, but if your application needs native objects, it requires
-  conversion and that conversion step can dominate read cost. In those cases,
-  Fory deserialization is often faster end-to-end.
-- Easier APIs: Fory uses direct native objects, so you do not need to
-  reverse-build tables or manually manage offsets.
-- Better graph modeling: Shared and circular references are first-class features
-  in Fory.
+- **生成代码更符合语言习惯**:Fory 会生成各语言常用风格的类/结构体,可直接作为领域对象使用。
+- **Java 性能更优**:在 Fory 的 Java 对象序列化基准中,Fory 通常快于 FlatBuffers。
+- **其他语言性能相近**:序列化性能通常处于同一量级。
+- **实际反序列化链路更高效**:FlatBuffers 默认并不做原生对象反序列化,因此看起来更快;但当业务需要原生对象时,还需额外转换,这一步往往成为主要开销。在这种场景下,Fory 端到端反序列化通常更快。
+- **API 更简单**:Fory 直接操作原生对象,无需反向构建 table 或手动管理 offset。
+- **对象图建模能力更强**:Fory 原生支持共享引用和循环引用。
 
 ## 快速决策指南
 
-| Situation                                                          | Recommended Path       |
-| ------------------------------------------------------------------ | ---------------------- |
-| You already have `.fbs` schemas and want Fory runtime/codegen      | Use FlatBuffers input  |
-| You are starting new schema work and want full Fory syntax control | Use native Fory IDL    |
-| You need FlatBuffers wire compatibility at runtime                 | Keep FlatBuffers stack |
-| You need Fory object-graph semantics (`ref`, weak refs, etc.)      | Use Fory               |
+| 场景                                            | 建议路径                |
+| ----------------------------------------------- | ----------------------- |
+| 已有 `.fbs` schema,想接入 Fory 运行时/代码生成 | 使用 FlatBuffers 输入   |
+| 新建 schema,希望完整使用 Fory 语法能力         | 使用原生 Fory IDL       |
+| 运行时必须保持 FlatBuffers 线格式兼容           | 继续使用 FlatBuffers 栈 |
+| 需要 Fory 对象图语义(`ref`、弱引用等)         | 使用 Fory               |
 
 ## FlatBuffers 到 Fory 的映射
 
-### Schema-Level Rules
+### Schema 级规则
 
-- `namespace` maps to Fory package namespace.
-- `include` entries map to Fory imports.
-- `table` is translated as `evolving=true`.
-- `struct` is translated as `evolving=false`.
-- `root_type` is parsed but ignored by Fory runtime/codegen.
-- `file_identifier` and `file_extension` are parsed but not used by Fory codegen.
+- `namespace` 映射为 Fory package 命名空间。
+- `include` 映射为 Fory import。
+- `table` 会被翻译为 `evolving=true`。
+- `struct` 会被翻译为 `evolving=false`。
+- `root_type` 会被解析,但 Fory 运行时/代码生成不会使用。
+- `file_identifier` 与 `file_extension` 会被解析,但 Fory 代码生成不会使用。
 
-### Field Numbering
+### 字段编号
 
-FlatBuffers fields do not have explicit field IDs. Fory assigns field numbers by
-source declaration order, starting at `1`.
+FlatBuffers 字段没有显式 field ID。Fory 会按源码声明顺序分配字段号,从 `1` 开始。
 
-### Scalar Type Mapping
+### 标量类型映射
 
 | FlatBuffers | Fory Type |
 | ----------- | --------- |
@@ -88,14 +78,14 @@ source declaration order, starting at `1`.
 | `bool`      | `bool`    |
 | `string`    | `string`  |
 
-Vectors (`[T]`) map to Fory lists.
+向量(`[T]`)映射为 Fory 列表类型。
 
-### Unions
+### 联合类型
 
-FlatBuffers unions map to Fory unions.
+FlatBuffers union 映射为 Fory union。
 
-- Case IDs are assigned by declaration order, starting at `1`.
-- Case names are derived from type names using snake_case field naming.
+- case ID 按声明顺序分配,从 `1` 开始。
+- case 名称由类型名转换为 snake_case 字段名。
 
 **FlatBuffers**
 
@@ -110,7 +100,7 @@ table Container {
 }
 ```
 
-**Fory shape after translation**
+**转换后的 Fory 结构**
 
 ```protobuf
 union Payload {
@@ -123,33 +113,31 @@ message Container {
 }
 ```
 
-### Defaults and Metadata
+### 默认值与元数据
 
-- FlatBuffers default values are parsed but not applied as Fory runtime defaults.
-- Non-Fory metadata attributes are preserved as generic options in IR and may be
-  consumed by downstream tooling.
+- FlatBuffers 默认值会被解析,但不会作为 Fory 运行时默认值生效。
+- 非 Fory 的 metadata 属性会作为通用 option 保留在 IR 中,供下游工具按需消费。
 
-## Fory-Specific Attributes in FlatBuffers
+## FlatBuffers 中的 Fory 扩展属性
 
-FlatBuffers metadata attributes use `key:value`. For Fory-specific options, use
-`fory_` (or `fory.`) prefix in `.fbs`; the prefix is removed during parsing.
+FlatBuffers metadata 属性写法为 `key:value`。对于 Fory 扩展选项,在 `.fbs` 中使用 `fory_`(或 `fory.`)前缀;解析时会去掉该前缀。
 
-### Supported Field Attributes
+### 支持的字段属性
 
-| FlatBuffers Attribute            | Effect in Fory                                        |
-| -------------------------------- | ----------------------------------------------------- |
-| `fory_ref:true`                  | Enable reference tracking for the field               |
-| `fory_nullable:true`             | Mark field optional/nullable                          |
-| `fory_weak_ref:true`             | Enable weak reference semantics and implies `ref`     |
-| `fory_thread_safe_pointer:false` | For ref fields, select non-thread-safe pointer flavor |
+| FlatBuffers Attribute            | 在 Fory 中的效果                  |
+| -------------------------------- | --------------------------------- |
+| `fory_ref:true`                  | 为字段启用引用跟踪                |
+| `fory_nullable:true`             | 将字段标记为 optional/nullable    |
+| `fory_weak_ref:true`             | 启用弱引用语义,并隐含开启 `ref`  |
+| `fory_thread_safe_pointer:false` | 对 ref 字段选择非线程安全指针类型 |
 
-Semantics:
+语义说明:
 
-- `fory_weak_ref:true` implies `ref`.
-- `fory_thread_safe_pointer` only takes effect when the field is ref-tracked.
-- For list fields, `fory_ref:true` applies to list elements.
+- `fory_weak_ref:true` 隐含 `ref`。
+- `fory_thread_safe_pointer` 仅在字段启用 ref 跟踪时生效。
+- 对列表字段,`fory_ref:true` 作用于列表元素。
 
-Example:
+示例:
 
 ```fbs
 table Node {
@@ -159,42 +147,37 @@ table Node {
 }
 ```
 
-## Generated Code Differences
+## 生成代码差异
 
-Using `.fbs` as input to Fory still produces normal Fory-generated code, not
-FlatBuffers `ByteBuffer`-style APIs.
+即使用 `.fbs` 作为 Fory 输入,生成的依然是标准 Fory 代码,而不是 FlatBuffers 的 `ByteBuffer` 风格 API。
 
-- Java: POJOs/records with Fory metadata
-- Python: dataclasses plus registration helpers
-- Go/Rust/C++: native structs and Fory metadata
+- Java:带 Fory 元数据的 POJO/record
+- Python:dataclass 与注册辅助代码
+- Go/Rust/C++:原生结构体与 Fory 元数据
 
-The serialization format is Fory binary protocol, not FlatBuffers wire format.
+最终序列化格式是 Fory 二进制协议,而不是 FlatBuffers 线格式。
 
-## Usage
+## 用法
 
-Compile a FlatBuffers schema directly:
+直接编译 FlatBuffers schema:
 
 ```bash
 foryc schema.fbs --lang java,python --output ./generated
 ```
 
-Inspect translated schema syntax for debugging:
+输出转换后的 Fory schema 语法以便调试:
 
 ```bash
 foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
 ```
 
-## Migration Notes
+## 迁移注意事项
 
-1. Keep existing `namespace` values stable to keep type registration stable.
-2. Review fields that relied on FlatBuffers default literals and set explicit
-   defaults in application code if needed.
-3. Add `fory_ref`/`fory_weak_ref` where object-graph semantics are required.
-4. Validate generated model behavior with roundtrip tests before replacing
-   existing serialization paths.
+1. 保持现有 `namespace` 稳定,以保证类型注册稳定。
+2. 检查依赖 FlatBuffers 字面量默认值的字段,并在业务代码中补充显式默认值。
+3. 在需要对象图语义的字段上添加 `fory_ref`/`fory_weak_ref`。
+4. 替换现有序列化路径前,先用 roundtrip 测试验证生成模型行为。
 
-## Summary
+## 总结
 
-FlatBuffers input lets you reuse existing `.fbs` schemas while moving to Fory's
-runtime and code generation model. This is useful for incremental migration,
-while preserving schema investment and adopting Fory-native object APIs.
+FlatBuffers 输入模式可让你复用现有 `.fbs` schema,同时迁移到 Fory 运行时与代码生成模型。它适合渐进式迁移场景:既保留既有 schema 投入,又能采用 Fory 原生对象 API。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/generated-code.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/generated-code.md
index ce33bac1e9..cadf241ab8 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/generated-code.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/generated-code.md
@@ -19,20 +19,18 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
+本文档说明各目标语言的代码生成结果与结构。
 
-本文档说明各目标语言的生成代码结构。
+Fory IDL 生成的类型遵循宿主语言习惯,可直接作为领域对象使用。生成代码同时包含 `to/from bytes` 辅助方法和类型注册辅助逻辑。
 
-Fory IDL generated types are idiomatic in host languages and can be used directly as domain objects. Generated types also include `to/from bytes` helpers and registration helpers.
+## 参考 Schema
 
-## Reference Schemas
+下面示例基于两个真实 schema:
 
-The examples below use two real schemas:
+1. `addressbook.fdl`(显式类型 ID)
+2. `auto_id.fdl`(未显式声明类型 ID)
 
-1. `addressbook.fdl` (explicit type IDs)
-2. `auto_id.fdl` (no explicit type IDs)
-
-### `addressbook.fdl` (excerpt)
+### `addressbook.fdl`(节选)
 
 ```protobuf
 package addressbook;
@@ -79,7 +77,7 @@ message AddressBook [id=103] {
 }
 ```
 
-### `auto_id.fdl` (excerpt)
+### `auto_id.fdl`(节选)
 
 ```protobuf
 package auto_id;
@@ -114,17 +112,17 @@ union Wrapper {
 
 ## Java
 
-### Output Layout
+### 输出布局
 
-For `package addressbook`, Java output is generated under:
+对于 `package addressbook`,Java 输出通常位于:
 
 - `<java_out>/addressbook/`
-- Type files: `AddressBook.java`, `Person.java`, `Dog.java`, `Cat.java`, `Animal.java`
-- Registration helper: `AddressbookForyRegistration.java`
+- 类型文件:`AddressBook.java`、`Person.java`、`Dog.java`、`Cat.java`、`Animal.java`
+- 注册辅助类:`AddressbookForyRegistration.java`
 
-### Type Generation
+### 类型生成
 
-Messages generate Java classes with `@ForyField`, default constructors, getters/setters, and byte helpers:
+message 会生成带 `@ForyField`、默认构造器、getter/setter 以及字节辅助方法的 Java 类:
 
 ```java
 public class Person {
@@ -156,7 +154,7 @@ public class Person {
 }
 ```
 
-Unions generate classes extending `org.apache.fory.type.union.Union`:
+union 会生成继承 `org.apache.fory.type.union.Union` 的类:
 
 ```java
 public final class Animal extends Union {
@@ -177,9 +175,9 @@ public final class Animal extends Union {
 }
 ```
 
-### Registration
+### 注册
 
-Generated registration helper:
+生成的注册辅助方法:
 
 ```java
 public static void register(Fory fory) {
@@ -194,7 +192,7 @@ public static void register(Fory fory) {
 }
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs (for example from `auto_id.fdl`):
+对于未显式 `[id=...]` 的 schema,注册代码会使用计算得到的数值 ID(例如 `auto_id.fdl`):
 
 ```java
 resolver.register(Status.class, 1124725126L);
@@ -204,7 +202,7 @@ resolver.registerUnion(Envelope.Detail.class, 1609214087L, new org.apache.fory.s
 resolver.register(Envelope.Payload.class, 2862577837L);
 ```
 
-If `option enable_auto_type_id = false;` is set, registration uses namespace and type name:
+若设置 `option enable_auto_type_id = false;`,则按命名空间与类型名注册:
 
 ```java
 resolver.register(Config.class, "myapp.models", "Config");
@@ -215,7 +213,7 @@ resolver.registerUnion(
     new org.apache.fory.serializer.UnionSerializer(fory, Holder.class));
 ```
 
-### Usage
+### 使用示例
 
 ```java
 Person person = new Person();
@@ -228,15 +226,15 @@ Person restored = Person.fromBytes(data);
 
 ## Python
 
-### Output Layout
+### 输出布局
 
-Python output is one module per schema file, for example:
+Python 每个 schema 文件生成一个模块,例如:
 
 - `<python_out>/addressbook.py`
 
-### Type Generation
+### 类型生成
 
-Unions generate a case enum plus a `Union` subclass with typed helpers:
+union 生成 case 枚举与 `Union` 子类,并提供类型化辅助方法:
 
 ```python
 class AnimalCase(Enum):
@@ -255,7 +253,7 @@ class Animal(Union):
     def set_dog(self, v: Dog) -> None: ...
 ```
 
-Messages generate `@pyfory.dataclass` types, and nested types stay nested:
+message 生成 `@pyfory.dataclass` 类型,嵌套类型保持嵌套:
 
 ```python
 @pyfory.dataclass
@@ -279,9 +277,9 @@ class Person:
     def from_bytes(cls, data: bytes) -> "Person": ...
 ```
 
-### Registration
+### 注册
 
-Generated registration function:
+生成注册函数:
 
 ```python
 def register_addressbook_types(fory: pyfory.Fory):
@@ -294,7 +292,7 @@ def register_addressbook_types(fory: pyfory.Fory):
     fory.register_type(AddressBook, type_id=103)
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs:
+未显式 `[id=...]` 时,注册代码使用计算得到的数值 ID:
 
 ```python
 fory.register_type(Status, type_id=1124725126)
@@ -304,7 +302,7 @@ fory.register_union(Envelope.Detail, type_id=1609214087, serializer=Envelope.Det
 fory.register_type(Envelope.Payload, type_id=2862577837)
 ```
 
-If `option enable_auto_type_id = false;` is set:
+若设置 `option enable_auto_type_id = false;`:
 
 ```python
 fory.register_type(Config, namespace="myapp.models", typename="Config")
@@ -316,7 +314,7 @@ fory.register_union(
 )
 ```
 
-### Usage
+### 使用示例
 
 ```python
 person = Person(name="Alice", pet=Animal.dog(Dog(name="Rex", bark_volume=10)))
@@ -327,15 +325,15 @@ restored = Person.from_bytes(data)
 
 ## Rust
 
-### Output Layout
+### 输出布局
 
-Rust output is one module file per schema, for example:
+Rust 每个 schema 生成一个模块文件,例如:
 
 - `<rust_out>/addressbook.rs`
 
-### Type Generation
+### 类型生成
 
-Unions map to Rust enums with `#[fory(id = ...)]` case attributes:
+union 映射为 Rust enum,并用 `#[fory(id = ...)]` 声明 case ID:
 
 ```rust
 #[derive(ForyObject, Debug, Clone, PartialEq)]
@@ -347,7 +345,7 @@ pub enum Animal {
 }
 ```
 
-Nested types generate nested modules:
+嵌套类型生成嵌套 module:
 
 ```rust
 pub mod person {
@@ -370,7 +368,7 @@ pub mod person {
 }
 ```
 
-Messages derive `ForyObject` and include `to_bytes`/`from_bytes` helpers:
+message 会 `derive(ForyObject)` 并生成 `to_bytes`/`from_bytes`:
 
 ```rust
 #[derive(ForyObject, Debug, Clone, PartialEq, Default)]
@@ -384,9 +382,9 @@ pub struct Person {
 }
 ```
 
-### Registration
+### 注册
 
-Generated registration function:
+生成注册函数:
 
 ```rust
 pub fn register_types(fory: &mut Fory) -> Result<(), fory::Error> {
@@ -401,7 +399,7 @@ pub fn register_types(fory: &mut Fory) -> Result<(), fory::Error> {
 }
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs:
+未显式 `[id=...]` 时,注册代码使用计算得到的数值 ID:
 
 ```rust
 fory.register::<Status>(1124725126)?;
@@ -411,14 +409,14 @@ fory.register_union::<envelope::Detail>(1609214087)?;
 fory.register::<envelope::Payload>(2862577837)?;
 ```
 
-If `option enable_auto_type_id = false;` is set:
+若设置 `option enable_auto_type_id = false;`:
 
 ```rust
 fory.register_by_namespace::<Config>("myapp.models", "Config")?;
 fory.register_union_by_namespace::<Holder>("myapp.models", "Holder")?;
 ```
 
-### Usage
+### 使用示例
 
 ```rust
 let person = Person {
@@ -433,15 +431,15 @@ let restored = Person::from_bytes(&bytes)?;
 
 ## C++
 
-### Output Layout
+### 输出布局
 
-C++ output is one header per schema file, for example:
+C++ 每个 schema 文件生成一个头文件,例如:
 
 - `<cpp_out>/addressbook.h`
 
-### Type Generation
+### 类型生成
 
-Messages generate `final` classes with typed accessors and byte helpers:
+message 会生成 `final` 类,并包含类型化访问器与字节辅助方法:
 
 ```cpp
 class Person final {
@@ -467,7 +465,7 @@ class Person final {
 };
 ```
 
-Optional message fields generate `has_xxx`, `mutable_xxx`, and `clear_xxx` APIs:
+可选 message 字段会生成 `has_xxx`、`mutable_xxx`、`clear_xxx` API:
 
 ```cpp
 class Envelope final {
@@ -487,7 +485,7 @@ class Envelope final {
 };
 ```
 
-Unions generate `std::variant` wrappers:
+union 会生成基于 `std::variant` 的封装:
 
 ```cpp
 class Animal final {
@@ -517,11 +515,11 @@ class Animal final {
 };
 ```
 
-Generated headers also include `FORY_UNION`, `FORY_FIELD_CONFIG`, `FORY_ENUM`, and `FORY_STRUCT` macros for serialization metadata.
+生成头文件还会包含 `FORY_UNION`、`FORY_FIELD_CONFIG`、`FORY_ENUM`、`FORY_STRUCT` 等序列化元信息宏。
 
-### Registration
+### 注册
 
-Generated registration function:
+生成注册函数:
 
 ```cpp
 inline void register_types(fory::serialization::BaseFory& fory) {
@@ -535,7 +533,7 @@ inline void register_types(fory::serialization::BaseFory& fory) {
 }
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs:
+未显式 `[id=...]` 时,注册代码使用计算得到的数值 ID:
 
 ```cpp
 fory.register_enum<Status>(1124725126);
@@ -545,14 +543,14 @@ fory.register_union<Envelope::Detail>(1609214087);
 fory.register_struct<Envelope::Payload>(2862577837);
 ```
 
-If `option enable_auto_type_id = false;` is set:
+若设置 `option enable_auto_type_id = false;`:
 
 ```cpp
 fory.register_struct<Config>("myapp.models", "Config");
 fory.register_union<Holder>("myapp.models", "Holder");
 ```
 
-### Usage
+### 使用示例
 
 ```cpp
 addressbook::Person person;
@@ -565,17 +563,17 @@ auto restored = addressbook::Person::from_bytes(bytes.value());
 
 ## Go
 
-### Output Layout
+### 输出布局
 
-Go output path depends on schema options and `--go_out`.
+Go 输出路径受 schema 选项与 `--go_out` 共同影响。
 
-For `addressbook.fdl`, `go_package` is configured and generated output follows the configured import path/package (for example under your `--go_out` root).
+对于 `addressbook.fdl`,若配置了 `go_package`,生成结果会遵循对应 import path/package(位于 `--go_out` 根目录下)。
 
-Without `go_package`, output uses the requested `--go_out` directory and package-derived file naming.
+若未配置 `go_package`,则使用 `--go_out` 指定目录,并按 package 规则生成文件名与包名。
 
-### Type Generation
+### 类型生成
 
-Nested types use underscore naming by default (`Person_PhoneType`, `Person_PhoneNumber`):
+嵌套类型默认使用下划线命名(`Person_PhoneType`、`Person_PhoneNumber`):
 
 ```go
 type Person_PhoneType int32
@@ -592,7 +590,7 @@ type Person_PhoneNumber struct {
 }
 ```
 
-Messages generate structs with `fory` tags and byte helpers:
+message 会生成带 `fory` tag 的 struct 与字节辅助方法:
 
 ```go
 type Person struct {
@@ -606,7 +604,7 @@ func (m *Person) ToBytes() ([]byte, error) { ... }
 func (m *Person) FromBytes(data []byte) error { ... }
 ```
 
-Unions generate typed case structs with constructors/accessors/visitor APIs:
+union 会生成 case struct,并提供构造器/访问器/visitor API:
 
 ```go
 type AnimalCase uint32
@@ -624,9 +622,9 @@ func (u Animal) AsDog() (*Dog, bool) { ... }
 func (u Animal) Visit(visitor AnimalVisitor) error { ... }
 ```
 
-### Registration
+### 注册
 
-Generated registration function:
+生成注册函数:
 
 ```go
 func RegisterTypes(f *fory.Fory) error {
@@ -646,7 +644,7 @@ func RegisterTypes(f *fory.Fory) error {
 }
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs:
+未显式 `[id=...]` 时,注册代码使用计算得到的数值 ID:
 
 ```go
 if err := f.RegisterEnum(Status(0), 1124725126); err != nil { ... }
@@ -656,20 +654,20 @@ if err := f.RegisterUnion(Envelope_Detail{}, 1609214087, fory.NewUnionSerializer
 if err := f.RegisterStruct(Envelope_Payload{}, 2862577837); err != nil { ... }
 ```
 
-If `option enable_auto_type_id = false;` is set:
+若设置 `option enable_auto_type_id = false;`:
 
 ```go
 if err := f.RegisterNamedStruct(Config{}, "myapp.models.Config"); err != nil { ... }
 if err := f.RegisterNamedUnion(Holder{}, "myapp.models.Holder", fory.NewUnionSerializer(...)); err != nil { ... }
 ```
 
-`go_nested_type_style` controls nested type naming:
+`go_nested_type_style` 可控制嵌套类型命名风格:
 
 ```protobuf
 option go_nested_type_style = "camelcase";
 ```
 
-### Usage
+### 使用示例
 
 ```go
 person := &Person{
@@ -687,30 +685,30 @@ if err := restored.FromBytes(data); err != nil {
 }
 ```
 
-## Cross-Language Notes
+## 跨语言说明
 
-### Type ID Behavior
+### 类型 ID 行为
 
-- Explicit `[id=...]` values are used directly in generated registration.
-- When type IDs are omitted, generated code uses computed numeric IDs (see `auto_id.*` outputs).
-- If `option enable_auto_type_id = false;` is set, generated registration uses namespace/type-name APIs instead of numeric IDs.
+- 显式 `[id=...]` 会直接用于生成注册代码。
+- 未声明类型 ID 时,生成代码会使用计算得到的数值 ID(参见 `auto_id.*` 输出)。
+- 若设置 `option enable_auto_type_id = false;`,则生成代码改为使用 namespace/type-name 注册 API,而非数值 ID。
 
-### Nested Type Shape
+### 嵌套类型形态
 
-| Language | Nested type form               |
-| -------- | ------------------------------ |
-| Java     | `Person.PhoneNumber`           |
-| Python   | `Person.PhoneNumber`           |
-| Rust     | `person::PhoneNumber`          |
-| C++      | `Person::PhoneNumber`          |
-| Go       | `Person_PhoneNumber` (default) |
+| 语言   | 嵌套类型形式                 |
+| ------ | ---------------------------- |
+| Java   | `Person.PhoneNumber`         |
+| Python | `Person.PhoneNumber`         |
+| Rust   | `person::PhoneNumber`        |
+| C++    | `Person::PhoneNumber`        |
+| Go     | `Person_PhoneNumber`(默认) |
 
-### Byte Helper Naming
+### 字节辅助方法命名
 
-| Language | Helpers                   |
-| -------- | ------------------------- |
-| Java     | `toBytes` / `fromBytes`   |
-| Python   | `to_bytes` / `from_bytes` |
-| Rust     | `to_bytes` / `from_bytes` |
-| C++      | `to_bytes` / `from_bytes` |
-| Go       | `ToBytes` / `FromBytes`   |
+| 语言   | 辅助方法名称              |
+| ------ | ------------------------- |
+| Java   | `toBytes` / `fromBytes`   |
+| Python | `to_bytes` / `from_bytes` |
+| Rust   | `to_bytes` / `from_bytes` |
+| C++    | `to_bytes` / `from_bytes` |
+| Go     | `ToBytes` / `FromBytes`   |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/index.md
index 58a4817492..8e26cdd387 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/index.md
@@ -19,15 +19,12 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
-Fory IDL is a schema definition language for Apache Fory that enables type-safe
-cross-language serialization. Define your data structures once and generate
-native data structure code for Java, Python, Go, Rust, and C++.
+Fory IDL 是 Apache Fory 的 Schema 定义语言,可实现类型安全的跨语言序列化。
+你只需定义一次数据结构,即可为 Java、Python、Go、Rust 和 C++ 生成原生数据结构代码。
 
 ## 示例 Schema
 
-Fory IDL provides a simple, intuitive syntax for defining cross-language data structures:
+Fory IDL 提供了简单直观的语法来定义跨语言数据结构:
 
 ```protobuf
 package example;
@@ -73,54 +70,54 @@ union Animal [id=106] {
 }
 ```
 
-## Why Fory IDL?
+## 为什么选择 Fory IDL?
 
-### Schema-First Development
+### Schema 优先开发
 
-Define your data model once in Fory IDL and generate consistent, type-safe code across all languages. This ensures:
+在 Fory IDL 中一次定义数据模型,即可在所有语言中生成一致且类型安全的代码。这样可以确保:
 
-- **Type Safety**: Catch type errors at compile time, not runtime
-- **Consistency**: All languages use the same field names, types, and structures
-- **Documentation**: Schema serves as living documentation
-- **Evolution**: Managed schema changes across all implementations
+- **类型安全**:在编译期而不是运行期发现类型错误
+- **一致性**:各语言使用相同字段名、类型和结构
+- **文档性**:Schema 本身就是可持续演进的文档
+- **可演进性**:可在所有实现中受控地进行 Schema 变更
 
-### Fory-Native Features
+### Fory 原生能力
 
-Unlike generic IDLs, Fory IDL is designed specifically for Fory serialization:
+与通用 IDL 不同,Fory IDL 专门为 Fory 序列化设计:
 
-- **Reference Tracking**: First-class support for shared and circular references via `ref`
-- **Nullable Fields**: Explicit `optional` modifier for nullable types
-- **Type Registration**: Built-in support for both numeric IDs and namespace-based registration
-- **Native Code Generation**: Generates idiomatic code with Fory annotations/macros
+- **引用跟踪**:通过 `ref` 一等支持共享引用和循环引用
+- **可空字段**:通过 `optional` 显式声明可空类型
+- **类型注册**:内置支持数值 ID 与基于命名空间的注册
+- **原生代码生成**:生成带 Fory 注解/宏的语言惯用代码
 
-### Low Integration Overhead
+### 集成开销低
 
-Generated code uses native language constructs:
+生成代码直接使用各语言原生构造:
 
-- Java: Plain POJOs with `@ForyField` annotations
-- Python: Dataclasses with type hints
-- Go: Structs with struct tags
-- Rust: Structs with `#[derive(ForyObject)]`
-- C++: Structs with `FORY_STRUCT` macros
+- Java:带 `@ForyField` 注解的普通 POJO
+- Python:带类型提示的 dataclass
+- Go:带 struct tag 的结构体
+- Rust:带 `#[derive(ForyObject)]` 的结构体
+- C++:带 `FORY_STRUCT` 宏的结构体
 
-## Quick Start
+## 快速开始
 
-### 1. Install the Compiler
+### 1. 安装编译器
 
 ```bash
 pip install fory-compiler
 ```
 
-Or install from source:
+或从源码安装:
 
 ```bash
 cd compiler
 pip install -e .
 ```
 
-### 2. Write Your Schema
+### 2. 编写 Schema
 
-Create `example.fdl`:
+创建 `example.fdl`:
 
 ```protobuf
 package example;
@@ -132,19 +129,19 @@ message Person {
 }
 ```
 
-### 3. Generate Code
+### 3. 生成代码
 
 ```bash
-# Generate for all languages
+# 为所有语言生成
 foryc example.fdl --output ./generated
 
-# Generate for specific languages
+# 为指定语言生成
 foryc example.fdl --lang java,python --output ./generated
 ```
 
-### 4. Use Generated Code
+### 4. 使用生成代码
 
-**Java:**
+**Java:**
 
 ```java
 Person person = new Person();
@@ -153,34 +150,34 @@ person.setAge(30);
 byte[] data = person.toBytes();
 ```
 
-**Python:**
+**Python:**
 
 ```python
 import pyfory
 from example import Person
 
 person = Person(name="Alice", age=30)
-data = bytes(person) # or `person.to_bytes()`
+data = bytes(person) # 或 `person.to_bytes()`
 ```
 
-## Documentation
+## 文档导航
 
-| Document                                        | Description                                       |
-| ----------------------------------------------- | ------------------------------------------------- |
-| [Fory IDL Syntax](schema-idl.md)                | Complete language syntax and grammar              |
-| [Type System](schema-idl.md#type-system)        | Primitive types, collections, and type rules      |
-| [Compiler Guide](compiler-guide.md)             | CLI options and build integration                 |
-| [Generated Code](generated-code.md)             | Output format for each target language            |
-| [Protocol Buffers IDL Support](protobuf-idl.md) | Comparison with protobuf and migration guide      |
-| [FlatBuffers IDL Support](flatbuffers-idl.md)   | FlatBuffers mapping rules and codegen differences |
+| 文档                                         | 说明                               |
+| -------------------------------------------- | ---------------------------------- |
+| [Fory IDL 语法](schema-idl.md)               | 完整语言语法与文法                 |
+| [类型系统](schema-idl.md#type-system)        | 基础类型、集合类型与类型规则       |
+| [编译器指南](compiler-guide.md)              | CLI 选项与构建集成                 |
+| [生成代码](generated-code.md)                | 各目标语言的输出格式               |
+| [Protocol Buffers IDL 支持](protobuf-idl.md) | 与 protobuf 的对比及迁移指南       |
+| [FlatBuffers IDL 支持](flatbuffers-idl.md)   | FlatBuffers 映射规则与代码生成差异 |
 
-## Key Concepts
+## 核心概念
 
-### Field Modifiers
+### 字段修饰符
 
-- **`optional`**: Field can be null/None
-- **`ref`**: Enable reference tracking for shared/circular references
-- **`list`**: Field is a list/array (alias: `repeated`)
+- **`optional`**:字段可为 null/None
+- **`ref`**:为共享/循环引用启用引用跟踪
+- **`list`**:字段为列表/数组(别名:`repeated`)
 
 ```protobuf
 message Example {
@@ -190,26 +187,26 @@ message Example {
 }
 ```
 
-### Cross-Language Compatibility
+### 跨语言兼容
 
-Fory IDL types map to native types in each language:
+Fory IDL 类型会映射为各语言原生类型:
 
-| Fory IDL Type | Java      | Python         | Go       | Rust     | C++           |
+| Fory IDL 类型 | Java      | Python         | Go       | Rust     | C++           |
 | ------------- | --------- | -------------- | -------- | -------- | ------------- |
 | `int32`       | `int`     | `pyfory.int32` | `int32`  | `i32`    | `int32_t`     |
 | `string`      | `String`  | `str`          | `string` | `String` | `std::string` |
 | `bool`        | `boolean` | `bool`         | `bool`   | `bool`   | `bool`        |
 
-See [Type System](schema-idl.md#type-system) for complete mappings.
+完整映射请参见 [类型系统](schema-idl.md#type-system)。
 
-## Best Practices
+## 最佳实践
 
-1. **Use meaningful package names**: Group related types together
-2. **Assign type IDs for performance**: Numeric IDs are faster than name-based registration
-3. **Reserve ID ranges**: Leave gaps for future additions (e.g., 100-199 for users, 200-299 for orders)
-4. **Use `optional` explicitly**: Make nullability clear in the schema
-5. **Use `ref` for shared objects**: Enable reference tracking when objects are shared
+1. **使用有意义的 package 名称**:将相关类型分组管理
+2. **为性能分配类型 ID**:数值 ID 比基于名称的注册更高效
+3. **预留 ID 范围**:为后续扩展保留空隙(例如用户 100-199,订单 200-299)
+4. **显式使用 `optional`**:清晰表达可空语义
+5. **共享对象使用 `ref`**:对象可能被多处引用时开启引用跟踪
 
-## Examples
+## 示例
 
-See the [examples](https://github.com/apache/fory/tree/main/compiler/examples) directory for complete working examples.
+完整可运行示例见 [examples](https://github.com/apache/fory/tree/main/compiler/examples) 目录。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/protobuf-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/protobuf-idl.md
index 2a6865d1e2..d5bb1d8791 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/protobuf-idl.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/protobuf-idl.md
@@ -19,56 +19,50 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
 本页说明 Apache Fory 如何处理 Protocol Buffers(`.proto`)schema、protobuf 概念如何映射到 Fory,以及 protobuf 专用 Fory 扩展选项的使用方式。
 
 ## 本页内容
 
-- Choosing protobuf vs Fory for your use case
-- Syntax and semantic differences that matter during migration
-- Supported Fory extension options in protobuf files
-- Practical migration patterns from protobuf to Fory
+- 如何在具体场景下选择 protobuf 或 Fory
+- 迁移时需要关注的语法与语义差异
+- `.proto` 文件中支持的 Fory 扩展选项
+- 从 protobuf 迁移到 Fory 的实践路径
 
 ## 快速决策指南
 
-| Situation                                                     | Recommended Format |
-| ------------------------------------------------------------- | ------------------ |
-| You are building gRPC APIs and rely on protobuf tooling       | Protocol Buffers   |
-| You need maximum object-graph performance and ref tracking    | Fory               |
-| You need circular/shared references in serialized data        | Fory               |
-| You need strong unknown-field behavior for wire compatibility | Protocol Buffers   |
-| You need native structs/classes instead of protobuf wrappers  | Fory               |
+| 场景                                                  | 建议格式         |
+| ----------------------------------------------------- | ---------------- |
+| 主要构建 gRPC API,依赖 protobuf 工具链               | Protocol Buffers |
+| 需要极致对象图性能与引用跟踪                          | Fory             |
+| 需要在序列化数据中表达循环/共享引用                   | Fory             |
+| 需要强 unknown-field 语义保证线格式兼容               | Protocol Buffers |
+| 希望直接使用原生 struct/class,而非 protobuf 包装类型 | Fory             |
 
 ## Protobuf 与 Fory 对比
 
-| Aspect             | Protocol Buffers              | Fory                                  |
-| ------------------ | ----------------------------- | ------------------------------------- |
-| Primary purpose    | RPC/message contracts         | High-performance object serialization |
-| Encoding model     | Tag-length-value              | Fory binary protocol                  |
-| Reference tracking | Not built-in                  | First-class (`ref`)                   |
-| Circular refs      | Not supported                 | Supported                             |
-| Unknown fields     | Preserved                     | Not preserved                         |
-| Generated types    | Protobuf-specific model types | Native language constructs            |
-| gRPC ecosystem     | Native                        | In progress (active development)      |
+| 维度      | Protocol Buffers      | Fory                   |
+| --------- | --------------------- | ---------------------- |
+| 主要目标  | RPC/消息契约          | 高性能对象序列化       |
+| 编码模型  | Tag-Length-Value      | Fory 二进制协议        |
+| 引用跟踪  | 非内建                | 一等支持(`ref`)      |
+| 循环引用  | 不支持                | 支持                   |
+| 未知字段  | 保留                  | 不保留                 |
+| 生成类型  | protobuf 专用模型类型 | 语言原生构造           |
+| gRPC 生态 | 原生成熟              | 持续建设中(活跃开发) |
 
-Fory gRPC support is under active development. For production gRPC
-workflows today, protobuf remains the mature/default choice.
+Fory 的 gRPC 支持仍在持续开发中。当前生产级 gRPC 工作流里,protobuf 仍是更成熟的默认选择。
 
 ## 为什么使用 Apache Fory
 
-- Idiomatic generated code: Fory IDL generates language-idiomatic classes and
-  structs that can be used directly as domain objects.
-- Faster serialization: In Fory benchmarks, Fory can be around 10x faster than
-  protobuf for object serialization workloads.
-- Better graph modeling: Shared and circular references are first-class features
-  instead of application-level ID-link workarounds.
+- **代码更贴近语言习惯**:Fory IDL 生成的类和结构体可直接作为业务领域对象使用。
+- **序列化性能更高**:在 Fory 基准中,Fory 在对象序列化场景中可显著快于 protobuf。
+- **对象图表达更自然**:共享引用和循环引用是内建能力,无需通过业务层 ID 关联绕过。
 
-See benchmark details under [Performance References](#performance-references).
+性能细节请参见 [性能参考](#性能参考)。
 
-## Syntax and Semantic Mapping
+## 语法与语义映射
 
-### Package and File Options
+### Package 与文件级选项
 
 **Protocol Buffers**
 
@@ -85,10 +79,9 @@ option go_package = "example.com/models";
 package example.models;
 ```
 
-Fory uses one package namespace for cross-language registration. Language-specific
-package placement is still configurable in code generation.
+Fory 使用统一 package 命名空间做跨语言注册。语言特定的包路径仍可在代码生成阶段单独配置。
 
-### Message and Enum Definitions
+### Message 与 Enum 定义
 
 **Protocol Buffers**
 
@@ -126,16 +119,15 @@ enum Status [id=102] {
 }
 ```
 
-Key differences:
+关键差异:
 
-- Fory can assign stable type IDs directly (`[id=...]`).
-- Fory uses `list<T>` (with `repeated T` as alias).
-- Enum naming conventions are language-driven instead of protobuf prefix style.
+- Fory 可直接分配稳定类型 ID(`[id=...]`)。
+- Fory 使用 `list<T>`(`repeated T` 为兼容别名)。
+- 枚举命名更偏向语言习惯,而非 protobuf 前缀风格。
 
-### `oneof` to `union`
+### `oneof` 到 `union`
 
-Protobuf `oneof` is translated to a nested Fory `union` plus an optional field
-referencing that union.
+protobuf 的 `oneof` 会被翻译为嵌套 Fory `union`,并增加一个可选字段指向该 union。
 
 **Protocol Buffers**
 
@@ -148,7 +140,7 @@ message Event {
 }
 ```
 
-**Fory-style shape after translation**
+**转换后的 Fory 结构**
 
 ```protobuf
 message Event {
@@ -160,42 +152,42 @@ message Event {
 }
 ```
 
-Notes:
+说明:
 
-- Union case IDs are derived from the original `oneof` field numbers.
-- The synthetic union field uses the smallest `oneof` case number.
+- union case ID 来自原 `oneof` 字段号。
+- 自动生成的 union 引用字段使用 `oneof` 中最小字段号。
 
-### Imports and Well-Known Types
+### Import 与 Well-Known Types
 
-Protobuf imports are supported. Common well-known types map directly:
+支持 protobuf import。常见 well-known types 会直接映射:
 
 - `google.protobuf.Timestamp` -> `timestamp`
 - `google.protobuf.Duration` -> `duration`
 - `google.protobuf.Any` -> `any`
 
-## 类型映射 Highlights
-
-| Protobuf Type                            | Fory Mapping                             |
-| ---------------------------------------- | ---------------------------------------- |
-| `bool`                                   | `bool`                                   |
-| `int32`, `uint32`                        | variable-length 32-bit integer kinds     |
-| `sint32`                                 | zigzag 32-bit integer                    |
-| `int64`, `uint64`                        | variable-length 64-bit integer kinds     |
-| `sint64`                                 | zigzag 64-bit integer                    |
-| `fixed32`, `fixed64`                     | fixed-width unsigned integer kinds       |
-| `sfixed32`, `sfixed64`                   | fixed-width signed integer kinds         |
-| `float`, `double`                        | `float32`, `float64`                     |
-| `string`, `bytes`                        | `string`, `bytes`                        |
-| `repeated T`                             | `list<T>`                                |
-| `map<K, V>`                              | `map<K, V>`                              |
-| `optional T`                             | `optional T`                             |
-| `oneof`                                  | `union` + optional union reference field |
-| `int64 [(fory).type = "tagged_int64"]`   | `tagged_int64` encoding                  |
-| `uint64 [(fory).type = "tagged_uint64"]` | `tagged_uint64` encoding                 |
-
-## Fory Extension Options (Protobuf)
-
-Fory-specific options in `.proto` use the `(fory).` prefix.
+## 类型映射要点
+
+| Protobuf Type                            | Fory 映射                     |
+| ---------------------------------------- | ----------------------------- |
+| `bool`                                   | `bool`                        |
+| `int32`, `uint32`                        | 可变长 32 位整型家族          |
+| `sint32`                                 | zigzag 32 位整型              |
+| `int64`, `uint64`                        | 可变长 64 位整型家族          |
+| `sint64`                                 | zigzag 64 位整型              |
+| `fixed32`, `fixed64`                     | 定长无符号整型家族            |
+| `sfixed32`, `sfixed64`                   | 定长有符号整型家族            |
+| `float`, `double`                        | `float32`, `float64`          |
+| `string`, `bytes`                        | `string`, `bytes`             |
+| `repeated T`                             | `list<T>`                     |
+| `map<K, V>`                              | `map<K, V>`                   |
+| `optional T`                             | `optional T`                  |
+| `oneof`                                  | `union` + 可选 union 引用字段 |
+| `int64 [(fory).type = "tagged_int64"]`   | `tagged_int64` 编码           |
+| `uint64 [(fory).type = "tagged_uint64"]` | `tagged_uint64` 编码          |
+
+## Fory 扩展选项(Protobuf)
+
+`.proto` 文件中的 Fory 专用选项使用 `(fory).` 前缀。
 
 ```protobuf
 option (fory).enable_auto_type_id = true;
@@ -206,46 +198,46 @@ message TreeNode {
 }
 ```
 
-### File-Level Options
+### 文件级选项
 
-| Option                               | Type   | Description                                                    |
-| ------------------------------------ | ------ | -------------------------------------------------------------- |
-| `(fory).use_record_for_java_message` | bool   | Generate Java records for all messages in this file            |
-| `(fory).polymorphism`                | bool   | Enable polymorphic serialization metadata by default           |
-| `(fory).enable_auto_type_id`         | bool   | Auto-generate type IDs when omitted (compiler default is true) |
-| `(fory).evolving`                    | bool   | Default schema-evolution behavior for messages                 |
-| `(fory).go_nested_type_style`        | string | Go nested naming style: `underscore` (default) or `camelcase`  |
+| 选项                                 | 类型   | 说明                                                |
+| ------------------------------------ | ------ | --------------------------------------------------- |
+| `(fory).use_record_for_java_message` | bool   | 对该文件所有 message 生成 Java record               |
+| `(fory).polymorphism`                | bool   | 默认开启多态序列化元信息                            |
+| `(fory).enable_auto_type_id`         | bool   | 缺失时自动生成类型 ID(编译器默认 true)            |
+| `(fory).evolving`                    | bool   | message 的默认 schema 演进行为                      |
+| `(fory).go_nested_type_style`        | string | Go 嵌套命名风格:`underscore`(默认)或 `camelcase` |
 
-### Message and Enum Options
+### Message 与 Enum 级选项
 
-| Option                       | Applies To    | Type   | Description                              |
-| ---------------------------- | ------------- | ------ | ---------------------------------------- |
-| `(fory).id`                  | message, enum | int    | Explicit type ID for registration        |
-| `(fory).alias`               | message, enum | string | Alternate name used for auto-ID hashing  |
-| `(fory).evolving`            | message       | bool   | Override file-level evolution setting    |
-| `(fory).use_record_for_java` | message       | bool   | Generate Java record for this message    |
-| `(fory).deprecated`          | message, enum | bool   | Mark type as deprecated                  |
-| `(fory).namespace`           | message       | string | Override default package-based namespace |
+| 选项                         | 作用对象      | 类型   | 说明                          |
+| ---------------------------- | ------------- | ------ | ----------------------------- |
+| `(fory).id`                  | message, enum | int    | 显式类型 ID(用于注册)       |
+| `(fory).alias`               | message, enum | string | 自动 ID 哈希使用的别名        |
+| `(fory).evolving`            | message       | bool   | 覆盖文件级演进设置            |
+| `(fory).use_record_for_java` | message       | bool   | 为该 message 生成 Java record |
+| `(fory).deprecated`          | message, enum | bool   | 标记类型为弃用                |
+| `(fory).namespace`           | message       | string | 覆盖默认 package 命名空间     |
 
-### Field-Level Options
+### 字段级选项
 
-| Option                       | Type   | Description                                                  |
-| ---------------------------- | ------ | ------------------------------------------------------------ |
-| `(fory).ref`                 | bool   | Enable reference tracking for this field                     |
-| `(fory).nullable`            | bool   | Treat field as nullable (`optional`)                         |
-| `(fory).weak_ref`            | bool   | Generate weak pointer semantics (C++/Rust codegen)           |
-| `(fory).thread_safe_pointer` | bool   | Rust pointer flavor for ref fields (`Arc` vs `Rc`)           |
-| `(fory).deprecated`          | bool   | Mark field as deprecated                                     |
-| `(fory).type`                | string | Primitive override, currently `tagged_int64`/`tagged_uint64` |
+| 选项                         | 类型   | 说明                                                  |
+| ---------------------------- | ------ | ----------------------------------------------------- |
+| `(fory).ref`                 | bool   | 为该字段启用引用跟踪                                  |
+| `(fory).nullable`            | bool   | 将字段视为可空(`optional`)                          |
+| `(fory).weak_ref`            | bool   | 生成弱指针语义(C++/Rust 代码生成)                   |
+| `(fory).thread_safe_pointer` | bool   | ref 字段在 Rust 中的指针类型(`Arc` vs `Rc`)         |
+| `(fory).deprecated`          | bool   | 标记字段为弃用                                        |
+| `(fory).type`                | string | 基础类型覆盖,目前支持 `tagged_int64`/`tagged_uint64` |
 
-Reference option behavior:
+引用相关行为:
 
-- `weak_ref = true` implies ref tracking.
-- For `repeated` fields, `(fory).ref = true` applies to list elements.
-- For `map<K, V>` fields, `(fory).ref = true` applies to map values.
-- `weak_ref` and `thread_safe_pointer` are codegen hints for C++/Rust.
+- `weak_ref = true` 隐含开启 ref 跟踪。
+- 对 `repeated` 字段,`(fory).ref = true` 作用于列表元素。
+- 对 `map<K, V>` 字段,`(fory).ref = true` 作用于 map value。
+- `weak_ref` 与 `thread_safe_pointer` 是 C++/Rust 代码生成提示。
 
-### Option Examples by Shape
+### 典型选项组合示例
 
 ```protobuf
 message Graph {
@@ -256,12 +248,11 @@ message Graph {
 }
 ```
 
-## Reference Tracking vs Protobuf IDs
+## 引用跟踪 vs Protobuf ID 关联
 
-Protobuf itself does not preserve shared/cyclic object graphs. With Fory
-protobuf extensions, you can opt into graph semantics.
+protobuf 本身不保留共享/循环对象图。借助 Fory protobuf 扩展,可以显式启用对象图语义。
 
-**Without Fory ref options (protobuf-style IDs):**
+**不使用 Fory ref 选项(protobuf 风格 ID 关联):**
 
 ```protobuf
 message TreeNode {
@@ -271,7 +262,7 @@ message TreeNode {
 }
 ```
 
-**With Fory ref options (object graph):**
+**使用 Fory ref 选项(对象图语义):**
 
 ```protobuf
 message TreeNode {
@@ -280,37 +271,34 @@ message TreeNode {
 }
 ```
 
-## Migration Guide: Protobuf to Fory
+## 迁移指南:Protobuf 到 Fory
 
-### Step 1: Translate Schema Syntax
+### 第 1 步:转换 schema 语法
 
-- Keep package names stable.
-- Replace `repeated T` with `list<T>` (or keep `repeated` alias).
-- Add explicit `[id=...]` where you need stable numeric registration.
+- 保持 package 名称稳定。
+- 将 `repeated T` 改为 `list<T>`(或保留 `repeated` 别名)。
+- 在需要稳定数值注册的位置添加显式 `[id=...]`。
 
-### Step 2: Convert `oneof` and Special Types
+### 第 2 步:处理 `oneof` 与特殊类型
 
-- `oneof` -> `union` + optional union field.
-- Map protobuf well-known types to Fory primitives (`timestamp`, `duration`, `any`).
+- `oneof` -> `union` + 可选 union 字段。
+- 将 protobuf well-known types 映射到 Fory 基础类型(`timestamp`、`duration`、`any`)。
 
-### Step 3: Replace Protobuf Workarounds with `ref`
+### 第 3 步:用 `ref` 替换 protobuf 的对象图绕过方案
 
-Where protobuf used manual ID links for object graphs, switch to Fory `ref`
-modifiers (and optional `ref(weak=true)` where needed).
+若 protobuf 里通过手工 ID 关联表达对象图,迁移到 Fory 后应改用 `ref` 修饰符(必要时使用 `ref(weak=true)`)。
 
-### Step 4: Update Build/Codegen
+### 第 4 步:更新构建与代码生成
 
-Replace protobuf generation steps with the Fory compiler invocation for target
-languages.
+将 protobuf 代码生成步骤替换为 Fory 编译器针对目标语言的生成命令。
 
-### Step 5: Run Compatibility Checks
+### 第 5 步:执行兼容性验证
 
-For staged migrations, keep both formats in parallel and verify payload-level
-parity with integration tests.
+分阶段迁移时,可并行保留两种格式,并通过集成测试验证 payload 级一致性。
 
-## Coexistence Strategy
+## 共存策略
 
-You can run protobuf and Fory in parallel during migration:
+迁移期间可以并行运行 protobuf 与 Fory:
 
 ```java
 public byte[] serialize(Object obj, Format format) {
@@ -321,16 +309,13 @@ public byte[] serialize(Object obj, Format format) {
 }
 ```
 
-Use translators at service boundaries while internal object-graph heavy paths
-migrate first.
+可在服务边界设置转换层,并优先迁移内部对象图较重的链路。
 
-## Performance References
+## 性能参考
 
 - Benchmarks: https://fory.apache.org/docs/introduction/benchmark
 - Benchmark code: https://github.com/apache/fory/tree/main/benchmarks
 
-## Summary
+## 总结
 
-Use protobuf when your primary concern is API contracts and gRPC ecosystem
-integration. Use Fory when object-graph performance, native models, and
-reference semantics are the primary concern.
+当主要关注 API 契约与 gRPC 生态时,建议使用 protobuf。若主要关注对象图性能、原生数据模型与引用语义,建议使用 Fory。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/schema-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/schema-idl.md
index ee420bd790..be6d5c6b2a 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/schema-idl.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compiler/schema-idl.md
@@ -19,37 +19,19 @@ license: |
   limitations under the License.
 ---
 
-## 中文章节导读
+本文档给出 Fory IDL 的语法与语义参考,覆盖文件结构、类型系统、字段规则、选项与类型注册策略。
 
-本文描述 Fory IDL 的语法与语义规则,覆盖文件结构、声明、类型定义、字段约束、注解与扩展选项。它是编译器前端解析与代码生成的基础约束文档。
-
-阅读时可重点关注:
-
-1. **文件级结构**:package、option、import 与类型声明顺序。
-2. **类型系统语法**:enum/message/union 及字段声明规则。
-3. **字段标签与属性**:字段 ID、可空、引用、默认值与兼容性约束。
-4. **命名与作用域**:类型可见性、嵌套声明与名称解析。
-5. **与 protobuf/flatbuffers 的映射关系**:迁移与互操作规则。
-
-为保证编译行为一致,语法关键字、示例 schema 与标识符保持英文;说明性段落使用中文。
-
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
-本文档提供 Fory IDL 的语法与语义参考。
-
-For compiler usage and build integration, see
-[Compiler Guide](compiler-guide.md). For protobuf/FlatBuffers frontend mapping
-rules, see [Protocol Buffers IDL Support](protobuf-idl.md) and
-[FlatBuffers IDL Support](flatbuffers-idl.md).
+编译器使用方式与构建集成请参见 [Compiler Guide](compiler-guide.md)。
+protobuf/FlatBuffers 前端映射请参见 [Protocol Buffers IDL Support](protobuf-idl.md) 与 [FlatBuffers IDL Support](flatbuffers-idl.md)。
 
 ## 文件结构
 
-An Fory IDL file typically consists of:
+一个 Fory IDL 文件通常包含:
 
-1. Optional package declaration
-2. Optional file-level options
-3. Optional import statements
-4. Type definitions (enums, messages, and unions)
+1. 可选 `package` 声明
+2. 可选文件级 `option`
+3. 可选 `import` 语句
+4. 类型定义(`enum`、`message`、`union`)
 
 ```protobuf
 // Optional package declaration
@@ -70,7 +52,7 @@ union Event [id=103] { ... }
 
 ## 注释
 
-Fory IDL supports both single-line and block comments:
+支持单行注释与块注释:
 
 ```protobuf
 // This is a single-line comment
@@ -85,51 +67,51 @@ message Example {
 }
 ```
 
-## Package Declaration
+## Package 声明
 
-The package declaration defines the namespace for all types in the file.
+`package` 定义文件中所有类型的命名空间。
 
 ```protobuf
 package com.example.models;
 ```
 
-You can optionally specify a package alias used for auto-generated type IDs:
+也可以配置 alias(用于自动类型 ID 计算):
 
 ```protobuf
 package com.example.models alias models_v1;
 ```
 
-**Rules:**
+规则:
 
-- Optional but recommended
-- Must appear before any type definitions
-- Only one package declaration per file
-- Used for namespace-based type registration
-- Package alias is used for auto-ID hashing
+- 可选但推荐
+- 必须位于任何类型定义之前
+- 每个文件最多一个 `package`
+- 用于命名空间注册
+- `alias` 会参与 auto-ID 哈希
 
-**Language Mapping:**
+语言映射:
 
-| Language | Package Usage                     |
-| -------- | --------------------------------- |
-| Java     | Java package                      |
-| Python   | Module name (dots to underscores) |
-| Go       | Package name (last component)     |
-| Rust     | Module name (dots to underscores) |
-| C++      | Namespace (dots to `::`)          |
+| 语言   | package 用法            |
+| ------ | ----------------------- |
+| Java   | Java package            |
+| Python | 模块名(`.` 转 `_`)    |
+| Go     | 包名(通常取最后一段)  |
+| Rust   | 模块名(`.` 转 `_`)    |
+| C++    | 命名空间(`.` 转 `::`) |
 
-## File-Level Options
+## 文件级选项
 
-Options can be specified at file level to control language-specific code generation.
+文件级选项用于控制语言定制代码生成。
 
-### Syntax
+### 语法
 
 ```protobuf
 option option_name = value;
 ```
 
-### Java Package Option
+### Java Package 选项
 
-Override the Java package for generated code:
+通过 `java_package` 覆盖 Java 输出包名:
 
 ```protobuf
 package payment;
@@ -140,15 +122,15 @@ message Payment {
 }
 ```
 
-**Effect:**
+效果:
 
-- Generated Java files will be in `com/mycorp/payment/v1/` directory
-- Java package declaration will be `package com.mycorp.payment.v1;`
-- Type registration still uses the Fory IDL package (`payment`) for cross-language compatibility
+- Java 文件输出到 `com/mycorp/payment/v1/`
+- Java `package` 声明使用该值
+- 跨语言类型注册仍以 Fory package(如 `payment`)为准
 
-### Go Package Option
+### Go Package 选项
 
-Specify the Go import path and package name:
+通过 `go_package` 指定 Go import path 与包名:
 
 ```protobuf
 package payment;
@@ -159,17 +141,11 @@ message Payment {
 }
 ```
 
-**Format:** `"import/path;package_name"` or just `"import/path"` (last segment used as package name)
-
-**Effect:**
-
-- Generated Go files will have `package paymentv1`
-- The import path can be used in other Go code
-- Type registration still uses the Fory IDL package (`payment`) for cross-language compatibility
+格式:`"import/path;package_name"` 或仅 `"import/path"`(包名取最后一段)。
 
-### Java Outer Classname Option
+### Java Outer Classname 选项
 
-Generate all types as inner classes of a single outer wrapper class:
+将多个类型包装到一个外层类:
 
 ```protobuf
 package payment;
@@ -186,49 +162,11 @@ message Payment {
 }
 ```
 
-**Effect:**
-
-- Generates a single file `DescriptorProtos.java` instead of separate files
-- All enums and messages become `public static` inner classes
-- The outer class is `public final` with a private constructor
-- Useful for grouping related types together
-
-**Generated structure:**
-
-```java
-public final class DescriptorProtos {
-    private DescriptorProtos() {}
-
-    public static enum Status {
-        UNKNOWN,
-        ACTIVE;
-    }
-
-    public static class Payment {
-        private String id;
-        private Status status;
-        // ...
-    }
-}
-```
-
-**Combined with java_package:**
+默认会生成单文件,枚举与消息作为静态内部类型。
 
-```protobuf
-package payment;
-option java_package = "com.example.proto";
-option java_outer_classname = "PaymentProtos";
+### Java Multiple Files 选项
 
-message Payment {
-    string id = 1;
-}
-```
-
-This generates `com/example/proto/PaymentProtos.java` with all types as inner classes.
-
-### Java Multiple Files Option
-
-Control whether types are generated in separate files or as inner classes:
+控制 Java 是否拆分多文件:
 
 ```protobuf
 package payment;
@@ -244,1171 +182,556 @@ message Receipt {
 }
 ```
 
-**Behavior:**
-
-| `java_outer_classname` | `java_multiple_files` | Result                                      |
-| ---------------------- | --------------------- | ------------------------------------------- |
-| Not set                | Any                   | Separate files (one per type)               |
-| Set                    | `false` (default)     | Single file with all types as inner classes |
-| Set                    | `true`                | Separate files (overrides outer class)      |
+行为:
 
-**Effect of `java_multiple_files = true`:**
+| `java_outer_classname` | `java_multiple_files` | 结果             |
+| ---------------------- | --------------------- | ---------------- |
+| 未设置                 | 任意                  | 每个类型一个文件 |
+| 已设置                 | `false`(默认)       | 单文件 + 内部类  |
+| 已设置                 | `true`                | 强制拆分为多文件 |
 
-- Each top-level enum and message gets its own `.java` file
-- Overrides `java_outer_classname` behavior
-- Useful when you want separate files but still specify an outer class name for other purposes
-
-**Example without java_multiple_files (default):**
-
-```protobuf
-option java_outer_classname = "PaymentProtos";
-// Generates: PaymentProtos.java containing Payment and Receipt as inner classes
-```
-
-**Example with java_multiple_files = true:**
-
-```protobuf
-option java_outer_classname = "PaymentProtos";
-option java_multiple_files = true;
-// Generates: Payment.java, Receipt.java (separate files)
-```
-
-### Multiple Options
-
-Multiple options can be specified:
+### 多个选项组合
 
 ```protobuf
 package payment;
 option java_package = "com.mycorp.payment.v1";
 option go_package = "github.com/mycorp/apis/gen/payment/v1;paymentv1";
 option deprecated = true;
-
-message Payment {
-    string id = 1;
-}
 ```
 
-### Protobuf Extension Syntax
+### Protobuf 扩展语法说明
 
-In `.fdl` files, use native Fory IDL syntax only (for example, `[id=100]`, `ref`,
-`optional`, `nullable=true`).
+在 `.fdl` 中请使用 Fory 原生语法(如 `[id=100]`、`ref`、`optional`、`nullable=true`)。
+`(fory).xxx` 形式仅用于 `.proto`(protobuf 前端)。
 
-Protobuf extension syntax with `(fory).` is for `.proto` files and the protobuf
-frontend only.
+### 选项优先级
 
-For protobuf extension options, see
-[Protocol Buffers IDL Support](protobuf-idl.md#fory-extension-options-protobuf).
+语言包路径优先级:
 
-### Option Priority
+1. 命令行覆盖(最高)
+2. 语言选项(`java_package`、`go_package`)
+3. Fory IDL `package`(兜底)
 
-For language-specific packages:
+### 跨语言类型注册
 
-1. Command-line package override (highest priority)
-2. Language-specific option (`java_package`, `go_package`)
-3. Fory IDL package declaration (fallback)
-
-**Example:**
-
-```protobuf
-package myapp.models;
-option java_package = "com.example.generated";
-```
+默认情况下,注册名由 `package + type name`(或类型 ID)确定。建议长期保持 `package` 稳定,以避免跨版本注册不一致。
 
-| Scenario                  | Java Package Used         |
-| ------------------------- | ------------------------- |
-| No override               | `com.example.generated`   |
-| CLI: `--package=override` | `override`                |
-| No java_package option    | `myapp.models` (fallback) |
+## Import 语句
 
-### Cross-Language Type Registration
-
-Language-specific options only affect where code is generated, not the type namespace used for serialization. This ensures cross-language compatibility:
-
-```protobuf
-package myapp.models;
-option java_package = "com.mycorp.generated";
-option go_package = "github.com/mycorp/gen;genmodels";
-
-message User {
-    string name = 1;
-}
-```
-
-All languages will register `User` with namespace `myapp.models`, enabling:
-
-- Java serialized data → Go deserialization
-- Go serialized data → Java deserialization
-- Any language combination works seamlessly
-
-## Import Statement
-
-Import statements allow you to use types defined in other Fory IDL files.
-
-### Basic Syntax
+### 基本语法
 
 ```protobuf
-import "path/to/file.fdl";
+import "common/types.fdl";
 ```
 
-### Multiple Imports
+### 多个导入
 
 ```protobuf
 import "common/types.fdl";
-import "common/enums.fdl";
-import "models/address.fdl";
+import "domain/user.fdl";
+import "domain/order.fdl";
 ```
 
-### Path Resolution
+### 路径解析
 
-Import paths are resolved relative to the importing file:
+导入解析顺序:
 
-```
-project/
-├── common/
-│   └── types.fdl
-├── models/
-│   ├── user.fdl      # import "../common/types.fdl"
-│   └── order.fdl     # import "../common/types.fdl"
-└── main.fdl          # import "common/types.fdl"
-```
+1. 导入者文件所在目录
+2. 命令行 `-I/--proto_path/--import_path` 指定目录(按给定顺序)
 
-**Rules:**
-
-- Import paths are quoted strings (double or single quotes)
-- Paths are resolved relative to the importing file's directory
-- Imported types become available as if defined in the current file
-- Circular imports are detected and reported as errors
-- Transitive imports work (if A imports B and B imports C, A has access to C's types)
-
-### Complete Example
-
-**common/types.fdl:**
+### 完整示例
 
 ```protobuf
-package common;
+// src/main.fdl
+package app;
 
-enum Status [id=100] {
-    PENDING = 0;
-    ACTIVE = 1;
-    COMPLETED = 2;
-}
+import "common.fdl";
+import "models/user.fdl";
 
-message Address [id=101] {
-    string street = 1;
-    string city = 2;
-    string country = 3;
+message Main {
+    common.Meta meta = 1;
+    models.User user = 2;
 }
 ```
 
-**models/user.fdl:**
-
-```protobuf
-package models;
-import "../common/types.fdl";
-
-message User [id=200] {
-    string id = 1;
-    string name = 2;
-    Address home_address = 3;  // Uses imported type
-    Status status = 4;          // Uses imported enum
-}
-```
-
-### Unsupported Import Syntax
-
-The following protobuf import modifiers are **not supported**:
-
-```protobuf
-// NOT SUPPORTED - will produce an error
-import public "other.fdl";
-import weak "other.fdl";
-```
+### 不支持的 import 写法
 
-**`import public`**: Fory IDL uses a simpler import model. All imported types are available to the importing file only. Re-exporting is not supported. Import each file directly where needed.
+- URL 形式(如 `https://...`)
+- 绝对路径依赖(不推荐,会破坏可移植性)
 
-**`import weak`**: Fory IDL requires all imports to be present at compile time. Optional dependencies are not supported.
+### import 错误
 
-### Import Errors
+典型错误:
 
-The compiler reports errors for:
+- 文件不存在
+- 搜索路径未包含依赖目录
+- 同名文件冲突导致解析到错误版本
 
-- **File not found**: The imported file doesn't exist
-- **Circular import**: A imports B which imports A (directly or indirectly)
-- **Parse errors**: Syntax errors in imported files
-- **Unsupported syntax**: `import public` or `import weak`
+## Enum 定义
 
-## Enum Definition
-
-Enums define a set of named integer constants.
-
-### Basic Syntax
+### 基本语法
 
 ```protobuf
 enum Status {
-    PENDING = 0;
+    UNKNOWN = 0;
     ACTIVE = 1;
-    COMPLETED = 2;
+    DISABLED = 2;
 }
 ```
 
-### With Explicit Type ID
+### 显式类型 ID
 
 ```protobuf
-enum Status [id=100] {
-    PENDING = 0;
+enum Status [id=101] {
+    UNKNOWN = 0;
     ACTIVE = 1;
-    COMPLETED = 2;
+    DISABLED = 2;
 }
 ```
 
-### Reserved Values
-
-Reserve field numbers or names to prevent reuse:
+### 预留值
 
 ```protobuf
 enum Status {
-    reserved 2, 15, 9 to 11, 40 to max;  // Reserved numbers
-    reserved "OLD_STATUS", "DEPRECATED"; // Reserved names
-    PENDING = 0;
-    ACTIVE = 1;
-    COMPLETED = 3;
-}
-```
-
-### Enum Type Options
-
-Enum-level options are declared inline in `[]` after the enum name:
-
-```protobuf
-enum Status [deprecated=true] {
-    PENDING = 0;
+    UNKNOWN = 0;
     ACTIVE = 1;
+    reserved 2, 3;
+    reserved 10 to 20;
 }
 ```
 
-FDL does not support `option ...;` statements inside enum bodies.
-
-**Unsupported:**
-
-- `allow_alias` is **not supported**. Each enum value must have a unique integer.
-
-### Language Mapping
-
-| Language | Implementation                         |
-| -------- | -------------------------------------- |
-| Java     | `enum Status { UNKNOWN, ACTIVE, ... }` |
-| Python   | `class Status(IntEnum): UNKNOWN = 0`   |
-| Go       | `type Status int32` with constants     |
-| Rust     | `#[repr(i32)] enum Status { Unknown }` |
-| C++      | `enum class Status : int32_t { ... }`  |
-
-### Enum Prefix Stripping
-
-When enum values use a protobuf-style prefix (enum name in UPPER_SNAKE_CASE), the compiler automatically strips the prefix for languages with scoped enums:
-
-```protobuf
-// Input with prefix
-enum DeviceTier {
-    DEVICE_TIER_UNKNOWN = 0;
-    DEVICE_TIER_TIER1 = 1;
-    DEVICE_TIER_TIER2 = 2;
-}
-```
-
-**Generated code:**
+### enum 类型选项
 
-| Language | Output                                    | Style          |
-| -------- | ----------------------------------------- | -------------- |
-| Java     | `UNKNOWN, TIER1, TIER2`                   | Scoped enum    |
-| Rust     | `Unknown, Tier1, Tier2`                   | Scoped enum    |
-| C++      | `UNKNOWN, TIER1, TIER2`                   | Scoped enum    |
-| Python   | `UNKNOWN, TIER1, TIER2`                   | Scoped IntEnum |
-| Go       | `DeviceTierUnknown, DeviceTierTier1, ...` | Unscoped const |
+常见:`id`、`alias`、`deprecated`。
 
-**Note:** The prefix is only stripped if the remainder is a valid identifier. For example, `DEVICE_TIER_1` is kept unchanged because `1` is not a valid identifier name.
+### 语言映射
 
-**Grammar:**
+- Java:`enum`
+- Python:`IntEnum`
+- Go:`type + const`
+- Rust:`repr(i32)` 枚举
+- C++:`enum class`
 
-```
-enum_def     := 'enum' IDENTIFIER [type_options] '{' enum_body '}'
-type_options := '[' type_option (',' type_option)* ']'
-type_option  := IDENTIFIER '=' option_value
-enum_body    := (reserved_stmt | enum_value)*
-reserved_stmt := 'reserved' reserved_items ';'
-enum_value   := IDENTIFIER '=' INTEGER ';'
-```
-
-**Rules:**
-
-- Enum names must be unique within the file
-- Enum values must have explicit integer assignments
-- Value integers must be unique within the enum (no aliases)
-- Type ID (`[id=100]`) is optional for enums but recommended for cross-language use
-
-**Example with All Features:**
-
-```protobuf
-// HTTP status code categories
-enum HttpCategory [id=200] {
-    reserved 10 to 20;           // Reserved for future use
-    reserved "UNKNOWN";          // Reserved name
-    INFORMATIONAL = 1;
-    SUCCESS = 2;
-    REDIRECTION = 3;
-    CLIENT_ERROR = 4;
-    SERVER_ERROR = 5;
-}
-```
+### 枚举前缀处理
 
-## Message Definition
+针对 protobuf 风格 `TYPE_NAME_VALUE`,生成器通常会按语言习惯去除冗余前缀,使 API 更自然。
 
-Messages define structured data types with typed fields.
+## Message 定义
 
-### Basic Syntax
+### 基本语法
 
 ```protobuf
-message Person {
-    string name = 1;
-    int32 age = 2;
-}
-```
-
-### With Explicit Type ID
-
-```protobuf
-message Person [id=101] {
+message User {
     string name = 1;
     int32 age = 2;
 }
 ```
 
-### Without Explicit Type ID
+### 显式类型 ID
 
 ```protobuf
-message Person {  // Auto-generated when enable_auto_type_id = true
+message User [id=100] {
     string name = 1;
     int32 age = 2;
 }
 ```
 
-### Language Mapping
+### 无显式类型 ID
 
-| Language | Implementation                      |
-| -------- | ----------------------------------- |
-| Java     | POJO class with getters/setters     |
-| Python   | `@dataclass` class                  |
-| Go       | Struct with exported fields         |
-| Rust     | Struct with `#[derive(ForyObject)]` |
-| C++      | Struct with `FORY_STRUCT` macro     |
+未声明 `[id=...]` 时,编译器可按配置自动生成类型 ID,或使用 namespace/name 注册。
 
-Type IDs control cross-language registration for messages, unions, and enums. See
-[Type IDs](#type-ids) for auto-generation, aliases, and collision handling.
+### 语言映射
 
-### Reserved Fields
+- Java:类 / record(按选项)
+- Python:dataclass
+- Go:struct
+- Rust:struct
+- C++:class/struct + 宏元信息
 
-Reserve field numbers or names to prevent reuse after removing fields:
+### 预留字段
 
 ```protobuf
 message User {
-    reserved 2, 15, 9 to 11;       // Reserved field numbers
-    reserved "old_field", "temp";  // Reserved field names
-    string id = 1;
-    string name = 3;
-}
-```
-
-### Message Type Options
-
-Message-level options are declared inline in `[]` after the message name:
-
-```protobuf
-message User [deprecated=true] {
-    string id = 1;
-    string name = 2;
+    string name = 1;
+    reserved 2, 3;
+    reserved 10 to 20;
 }
 ```
 
-FDL does not support `option ...;` statements inside message or enum bodies.
-
-**Grammar:**
-
-```
-message_def  := 'message' IDENTIFIER [type_options] '{' message_body '}'
-type_options := '[' type_option (',' type_option)* ']'
-type_option  := IDENTIFIER '=' option_value
-message_body := (reserved_stmt | nested_type | field_def)*
-nested_type  := enum_def | message_def | union_def
-```
-
-**Rules:**
-
-- Type IDs follow the rules in [Type IDs](#type-ids).
+### message 类型选项
 
-## Nested Types
+常见选项:`id`、`alias`、`evolving`、`deprecated`、`namespace`、`use_record_for_java`。
 
-Messages can contain nested message, enum, and union definitions. This is useful for defining types that are closely related to their parent message.
+## 嵌套类型
 
-### Nested Messages
+### 嵌套 message
 
 ```protobuf
-message SearchResponse {
-    message Result {
-        string url = 1;
-        string title = 2;
-        list<string> snippets = 3;
-    }
-    list<Result> results = 1;
-}
-```
-
-### Nested Enums
-
-```protobuf
-message Container {
-    enum Status {
-        STATUS_UNKNOWN = 0;
-        STATUS_ACTIVE = 1;
-        STATUS_INACTIVE = 2;
+message Person {
+    message PhoneNumber {
+        string number = 1;
     }
-    Status status = 1;
+    PhoneNumber phone = 1;
 }
 ```
 
-### Qualified Type Names
-
-Nested types can be referenced from other messages using qualified names (Parent.Child):
+### 嵌套 enum
 
 ```protobuf
-message SearchResponse {
-    message Result {
-        string url = 1;
-        string title = 2;
+message Person {
+    enum PhoneType {
+        MOBILE = 0;
+        HOME = 1;
     }
-}
-
-message SearchResultCache {
-    // Reference nested type with qualified name
-    SearchResponse.Result cached_result = 1;
-    list<SearchResponse.Result> all_results = 2;
+    PhoneType type = 1;
 }
 ```
 
-### Deeply Nested Types
+### 限定类型名
 
-Nesting can be multiple levels deep:
+可使用完整限定名引用嵌套类型,例如 `Person.PhoneNumber`。
 
-```protobuf
-message Outer {
-    message Middle {
-        message Inner {
-            string value = 1;
-        }
-        Inner inner = 1;
-    }
-    Middle middle = 1;
-}
-
-message OtherMessage {
-    // Reference deeply nested type
-    Outer.Middle.Inner deep_ref = 1;
-}
-```
+### 深层嵌套类型
 
-### Language-Specific Generation
+支持多层嵌套,但建议控制层级,避免可读性下降。
 
-| Language | Nested Type Generation                                                            |
-| -------- | --------------------------------------------------------------------------------- |
-| Java     | Static inner classes (`SearchResponse.Result`)                                    |
-| Python   | Nested classes within dataclass                                                   |
-| Go       | Flat structs with underscore (`SearchResponse_Result`, configurable to camelcase) |
-| Rust     | Nested modules (`search_response::Result`)                                        |
-| C++      | Nested classes (`SearchResponse::Result`)                                         |
+### 各语言生成形态
 
-**Note:** Go defaults to underscore-separated nested names; set `option go_nested_type_style = "camelcase";` to use concatenated names. Rust emits nested modules for nested types.
+| 语言   | 嵌套类型形态          |
+| ------ | --------------------- |
+| Java   | `Outer.Inner`         |
+| Python | `Outer.Inner`         |
+| Rust   | `outer::Inner`        |
+| C++    | `Outer::Inner`        |
+| Go     | `Outer_Inner`(默认) |
 
-### Nested Type Rules
+### 嵌套规则
 
-- Nested type names must be unique within their parent message
-- Nested types can have their own type IDs
-- Numeric type IDs must be globally unique (including nested types); see [Type IDs](#type-ids)
-  for auto-generation and collision handling
-- Within a message, you can reference nested types by simple name
-- From outside, use the qualified name (Parent.Child)
+- 嵌套类型名在其父作用域内必须唯一
+- 可被同文件后续类型引用
+- 可通过 import + 限定名跨文件引用
 
-## Union Definition
+## Union 定义
 
-Unions define a value that can hold exactly one of several case types.
-
-### Basic Syntax
+### 基本语法
 
 ```protobuf
-union Animal [id=106] {
+union Animal {
     Dog dog = 1;
     Cat cat = 2;
 }
 ```
 
-### Using a Union in a Message
+### 在 message 中使用 union
 
 ```protobuf
-message Person [id=100] {
+message Person {
     Animal pet = 1;
-    optional Animal favorite_pet = 2;
 }
 ```
 
-### Rules
-
-- Case IDs must be unique within the union
-- Cases cannot be `optional` or `ref`
-- Union cases do not support field options
-- Case types can be primitives, enums, messages, or other named types
-- Union type IDs follow the rules in [Type IDs](#type-ids).
-
-**Grammar:**
+### 规则
 
-```
-union_def  := 'union' IDENTIFIER [type_options] '{' union_field* '}'
-union_field := field_type IDENTIFIER '=' INTEGER ';'
-```
+- case 字段号必须唯一
+- case 类型通常为消息类型或可序列化复合类型
+- 各语言会生成带 case 判别和访问器的 union 表达
 
-## Field Definition
+## 字段定义
 
-Fields define the properties of a message.
-
-### Basic Syntax
+### 基本语法
 
 ```protobuf
-field_type field_name = field_number;
+string name = 1;
 ```
 
-### With Modifiers
+### 带修饰符语法
 
 ```protobuf
-optional list<string> tags = 1;  // Nullable list
-list<optional string> tags = 2;  // Elements may be null
-ref list<Node> nodes = 3;        // Collection tracked as a reference
-list<ref Node> nodes = 4;        // Elements tracked as references
+optional string nickname = 2;
+ref Node parent = 3;
+list<int32> scores = 4;
 ```
 
-**Grammar:**
-
-```
-field_def    := [modifiers] field_type IDENTIFIER '=' INTEGER ';'
-modifiers    := { 'optional' | 'ref' }
-field_type   := primitive_type | named_type | list_type | map_type
-list_type    := 'list' '<' { 'optional' | 'ref' } field_type '>'
-```
-
-Modifiers apply to the field/collection. Use `list<...>` to describe element
-modifiers. `repeated` is accepted as an alias for `list`.
-
-### Field Modifiers
+### 字段修饰符
 
 #### `optional`
 
-Marks the field as nullable:
+声明字段可为空(null/None):
 
 ```protobuf
 message User {
-    string name = 1;           // Required, non-null
-    optional string email = 2; // Nullable
+    optional string email = 1;
 }
 ```
 
-**Generated Code:**
-
-| Language | Non-optional       | Optional                                        |
-| -------- | ------------------ | ----------------------------------------------- |
-| Java     | `String name`      | `String email` with `@ForyField(nullable=true)` |
-| Python   | `name: str`        | `name: Optional[str]`                           |
-| Go       | `Name string`      | `Name *string`                                  |
-| Rust     | `name: String`     | `name: Option<String>`                          |
-| C++      | `std::string name` | `std::optional<std::string> name`               |
-
-**Default Values:**
-
-| Type               | Default Value       |
-| ------------------ | ------------------- |
-| Non-optional types | Language default    |
-| Optional types     | `null`/`None`/`nil` |
+建议在跨语言场景显式使用,以避免默认值差异。
 
 #### `ref`
 
-Enables reference tracking for shared/circular references:
+开启引用跟踪,用于共享对象与循环结构:
 
 ```protobuf
 message Node {
-    string value = 1;
-    ref Node parent = 2;     // Can point to shared object
+    string name = 1;
+    ref Node parent = 2;
     list<ref Node> children = 3;
 }
 ```
 
-**Use Cases:**
-
-- Shared objects (same object referenced multiple times)
-- Circular references (object graphs with cycles)
-- Tree structures with parent pointers
-
-**Generated Code:**
-
-| Language | Without `ref`  | With `ref`                                |
-| -------- | -------------- | ----------------------------------------- |
-| Java     | `Node parent`  | `Node parent` with `@ForyField(ref=true)` |
-| Python   | `parent: Node` | `parent: Node = pyfory.field(ref=True)`   |
-| Go       | `Parent Node`  | `Parent *Node` with `fory:"ref"`          |
-| Rust     | `parent: Node` | `parent: Arc<Node>`                       |
-| C++      | `Node parent`  | `std::shared_ptr<Node> parent`            |
-
-Rust uses `Arc` by default; use `ref(thread_safe=false)` or `ref(weak=true)`
-to customize pointer types. For protobuf option syntax, see
-[Protocol Buffers IDL Support](protobuf-idl.md#field-level-options).
+当运行时全局 ref tracking 开启时,字段级 `ref` 才会生效。
 
 #### `list`
 
-Marks the field as a list/array:
+列表字段(`repeated` 为等价别名):
 
 ```protobuf
-message Document {
+message Group {
     list<string> tags = 1;
-    list<User> authors = 2;
 }
 ```
 
-**Generated Code:**
-
-| Language | Type                       |
-| -------- | -------------------------- |
-| Java     | `List<String>`             |
-| Python   | `List[str]`                |
-| Go       | `[]string`                 |
-| Rust     | `Vec<String>`              |
-| C++      | `std::vector<std::string>` |
+### 组合修饰符
 
-### Combining Modifiers
-
-Modifiers can be combined:
-
-```fdl
-message Example {
-    optional list<string> tags = 1;  // Nullable list
-    list<optional string> aliases = 2; // Elements may be null
-    ref list<Node> nodes = 3;          // Collection tracked as a reference
-    list<ref Node> children = 4;       // Elements tracked as references
-    optional ref User owner = 5;          // Nullable tracked reference
-}
-```
-
-Modifiers before `list` apply to the field/collection. Modifiers after `list`
-apply to elements. `repeated` is accepted as an alias for `list`.
-
-**List modifier mapping:**
-
-| Fory IDL                | Java                                           | Python                                  | Go                      | Rust                  | C++                                       |
-| ----------------------- | ---------------------------------------------- | --------------------------------------- | ----------------------- | --------------------- | ----------------------------------------- |
-| `optional list<string>` | `List<String>` + `@ForyField(nullable = true)` | `Optional[List[str]]`                   | `[]string` + `nullable` | `Option<Vec<String>>` | `std::optional<std::vector<std::string>>` |
-| `list<optional string>` | `List<String>` (nullable elements)             | `List[Optional[str]]`                   | `[]*string`             | `Vec<Option<String>>` | `std::vector<std::optional<std::string>>` |
-| `ref list<User>`        | `List<User>` + `@ForyField(ref = true)`        | `List[User]` + `pyfory.field(ref=True)` | `[]User` + `ref`        | `Arc<Vec<User>>`      | `std::shared_ptr<std::vector<User>>`      |
-| `list<ref User>`        | `List<User>`                                   | `List[User]`                            | `[]*User` + `ref=false` | `Vec<Arc<User>>`      | `std::vector<std::shared_ptr<User>>`      |
-
-Use `ref(thread_safe=false)` in Fory IDL (or `[(fory).thread_safe_pointer = false]` in protobuf)
-to generate `Rc` instead of `Arc` in Rust.
-
-## Field Numbers
-
-Each field must have a unique positive integer identifier:
+可组合使用:
 
 ```protobuf
-message Example {
-    string first = 1;
-    string second = 2;
-    string third = 3;
+message Graph {
+    optional ref Node root = 1;
+    list<ref Node> nodes = 2;
 }
 ```
 
-**Rules and best practices:**
+## 字段号
 
-- Numbers must be unique within a message.
-- Numbers must be positive integers.
-- Gaps are allowed and are useful when fields are removed.
-- Prefer sequential numbering from `1`.
-- Never reuse a removed field number for a different field.
+字段号规则:
 
-## Type System
+- 同一 message 内必须唯一
+- 必须为正整数
+- 不应复用已删除字段号(建议使用 `reserved`)
+- 建议预留编号区间以便演进
 
-Fory IDL provides a cross-language type system for primitives, named types, and
-collections. Field modifiers (`optional`, `list`, `ref`) control nullability,
-collection behavior, and reference tracking (see
-[Field Modifiers](#field-modifiers)).
+## Type System {#type-system}
+
+Fory IDL 类型系统包括基础类型、命名类型和集合类型。
 
 ### Primitive Types
 
-| Type            | Description                               | Size     |
-| --------------- | ----------------------------------------- | -------- |
-| `bool`          | Boolean value                             | 1 byte   |
-| `int8`          | Signed 8-bit integer                      | 1 byte   |
-| `int16`         | Signed 16-bit integer                     | 2 bytes  |
-| `int32`         | Signed 32-bit integer (varint encoding)   | 4 bytes  |
-| `int64`         | Signed 64-bit integer (varint encoding)   | 8 bytes  |
-| `uint8`         | Unsigned 8-bit integer                    | 1 byte   |
-| `uint16`        | Unsigned 16-bit integer                   | 2 bytes  |
-| `uint32`        | Unsigned 32-bit integer (varint encoding) | 4 bytes  |
-| `uint64`        | Unsigned 64-bit integer (varint encoding) | 8 bytes  |
-| `fixed_int32`   | Signed 32-bit integer (fixed encoding)    | 4 bytes  |
-| `fixed_int64`   | Signed 64-bit integer (fixed encoding)    | 8 bytes  |
-| `fixed_uint32`  | Unsigned 32-bit integer (fixed encoding)  | 4 bytes  |
-| `fixed_uint64`  | Unsigned 64-bit integer (fixed encoding)  | 8 bytes  |
-| `tagged_int64`  | Signed 64-bit integer (tagged encoding)   | 8 bytes  |
-| `tagged_uint64` | Unsigned 64-bit integer (tagged encoding) | 8 bytes  |
-| `float32`       | 32-bit floating point                     | 4 bytes  |
-| `float64`       | 64-bit floating point                     | 8 bytes  |
-| `string`        | UTF-8 string                              | Variable |
-| `bytes`         | Binary data                               | Variable |
-| `date`          | Calendar date                             | Variable |
-| `timestamp`     | Date and time with timezone               | Variable |
-| `duration`      | Duration                                  | Variable |
-| `decimal`       | Decimal value                             | Variable |
-| `any`           | Dynamic value (runtime type)              | Variable |
+| 类型族   | 示例                              |
+| -------- | --------------------------------- |
+| 布尔     | `bool`                            |
+| 整数     | `int8/int16/int32/int64`、`uint*` |
+| 浮点     | `float32`、`float64`              |
+| 字符串   | `string`                          |
+| 字节数组 | `bytes`                           |
+| 时间     | `date`、`timestamp`、`duration`   |
+| 动态类型 | `any`                             |
 
 #### Boolean
 
-| Language | Type                  | Notes              |
-| -------- | --------------------- | ------------------ |
-| Java     | `boolean` / `Boolean` | Primitive or boxed |
-| Python   | `bool`                |                    |
-| Go       | `bool`                |                    |
-| Rust     | `bool`                |                    |
-| C++      | `bool`                |                    |
+`bool` 表示布尔值。
 
 #### Integer Types
 
-Fory IDL provides fixed-width signed integers (varint encoding for 32/64-bit by default):
-
-| Fory IDL Type | Size   | Range             |
-| ------------- | ------ | ----------------- |
-| `int8`        | 8-bit  | -128 to 127       |
-| `int16`       | 16-bit | -32,768 to 32,767 |
-| `int32`       | 32-bit | -2^31 to 2^31 - 1 |
-| `int64`       | 64-bit | -2^63 to 2^63 - 1 |
-
-**Language Mapping (Signed):**
-
-| Fory IDL | Java    | Python         | Go      | Rust  | C++       |
-| -------- | ------- | -------------- | ------- | ----- | --------- |
-| `int8`   | `byte`  | `pyfory.int8`  | `int8`  | `i8`  | `int8_t`  |
-| `int16`  | `short` | `pyfory.int16` | `int16` | `i16` | `int16_t` |
-| `int32`  | `int`   | `pyfory.int32` | `int32` | `i32` | `int32_t` |
-| `int64`  | `long`  | `pyfory.int64` | `int64` | `i64` | `int64_t` |
-
-Fory IDL provides fixed-width unsigned integers (varint encoding for 32/64-bit by default):
-
-| Fory IDL | Size   | Range         |
-| -------- | ------ | ------------- |
-| `uint8`  | 8-bit  | 0 to 255      |
-| `uint16` | 16-bit | 0 to 65,535   |
-| `uint32` | 32-bit | 0 to 2^32 - 1 |
-| `uint64` | 64-bit | 0 to 2^64 - 1 |
-
-**Language Mapping (Unsigned):**
-
-| Fory IDL | Java    | Python          | Go       | Rust  | C++        |
-| -------- | ------- | --------------- | -------- | ----- | ---------- |
-| `uint8`  | `short` | `pyfory.uint8`  | `uint8`  | `u8`  | `uint8_t`  |
-| `uint16` | `int`   | `pyfory.uint16` | `uint16` | `u16` | `uint16_t` |
-| `uint32` | `long`  | `pyfory.uint32` | `uint32` | `u32` | `uint32_t` |
-| `uint64` | `long`  | `pyfory.uint64` | `uint64` | `u64` | `uint64_t` |
+支持有符号/无符号与不同位宽。跨语言场景建议明确编码策略并保持字段语义稳定。
 
 #### Integer Encoding Variants
 
-For 32/64-bit integers, Fory IDL uses varint encoding by default. Use explicit types when
-you need fixed-width or tagged encoding:
+常见编码:
 
-| Fory IDL Type   | Encoding | Notes                    |
-| --------------- | -------- | ------------------------ |
-| `fixed_int32`   | fixed    | Signed 32-bit            |
-| `fixed_int64`   | fixed    | Signed 64-bit            |
-| `fixed_uint32`  | fixed    | Unsigned 32-bit          |
-| `fixed_uint64`  | fixed    | Unsigned 64-bit          |
-| `tagged_int64`  | tagged   | Signed 64-bit (hybrid)   |
-| `tagged_uint64` | tagged   | Unsigned 64-bit (hybrid) |
+- `varint`:小值更省空间
+- `fixed`:固定长度,性能稳定
+- `tagged`:混合编码(特定类型可用)
 
 #### Floating-Point Types
 
-| Fory IDL Type | Size   | Precision     |
-| ------------- | ------ | ------------- |
-| `float32`     | 32-bit | ~7 digits     |
-| `float64`     | 64-bit | ~15-16 digits |
-
-**Language Mapping:**
-
-| Fory IDL  | Java     | Python           | Go        | Rust  | C++      |
-| --------- | -------- | ---------------- | --------- | ----- | -------- |
-| `float32` | `float`  | `pyfory.float32` | `float32` | `f32` | `float`  |
-| `float64` | `double` | `pyfory.float64` | `float64` | `f64` | `double` |
+- `float32`
+- `float64`
 
 #### String Type
 
-| Language | Type          | Notes                 |
-| -------- | ------------- | --------------------- |
-| Java     | `String`      | Immutable             |
-| Python   | `str`         |                       |
-| Go       | `string`      | Immutable             |
-| Rust     | `String`      | Owned, heap-allocated |
-| C++      | `std::string` |                       |
+`string` 使用 UTF-8 文本语义。
 
 #### Bytes Type
 
-| Language | Type                   | Notes     |
-| -------- | ---------------------- | --------- |
-| Java     | `byte[]`               |           |
-| Python   | `bytes`                | Immutable |
-| Go       | `[]byte`               |           |
-| Rust     | `Vec<u8>`              |           |
-| C++      | `std::vector<uint8_t>` |           |
+`bytes` 用于原始二进制载荷。
 
 #### Temporal Types
 
 ##### Date
 
-| Language | Type                        | Notes                   |
-| -------- | --------------------------- | ----------------------- |
-| Java     | `java.time.LocalDate`       |                         |
-| Python   | `datetime.date`             |                         |
-| Go       | `time.Time`                 | Time portion ignored    |
-| Rust     | `chrono::NaiveDate`         | Requires `chrono` crate |
-| C++      | `fory::serialization::Date` |                         |
+`date` 表示日期(不含时区时间部分)。
 
 ##### Timestamp
 
-| Language | Type                             | Notes                   |
-| -------- | -------------------------------- | ----------------------- |
-| Java     | `java.time.Instant`              | UTC-based               |
-| Python   | `datetime.datetime`              |                         |
-| Go       | `time.Time`                      |                         |
-| Rust     | `chrono::NaiveDateTime`          | Requires `chrono` crate |
-| C++      | `fory::serialization::Timestamp` |                         |
+`timestamp` 表示时间点(跨语言应统一时间语义与精度预期)。
 
 #### Any
 
-| Language | Type           | Notes                |
-| -------- | -------------- | -------------------- |
-| Java     | `Object`       | Runtime type written |
-| Python   | `Any`          | Runtime type written |
-| Go       | `any`          | Runtime type written |
-| Rust     | `Box<dyn Any>` | Runtime type written |
-| C++      | `std::any`     | Runtime type written |
-
-**Example:**
-
-```protobuf
-enum EventType [id=120] {
-    CREATED = 0;
-    DELETED = 1;
-}
-
-message UserCreated [id=121] {
-    string user_id = 1;
-}
-
-message Envelope [id=122] {
-    EventType type = 1;
-    any payload = 2;
-}
-```
-
-**Generated Code (`Envelope.payload`):**
-
-| Language | Generated Field Type    |
-| -------- | ----------------------- |
-| Java     | `Object payload`        |
-| Python   | `payload: Any`          |
-| Go       | `Payload any`           |
-| Rust     | `payload: Box<dyn Any>` |
-| C++      | `std::any payload`      |
-
-**Notes:**
-
-- `any` always writes a null flag (same as `nullable`) because values may be empty.
-- Allowed runtime values are limited to `bool`, `string`, `enum`, `message`, and `union`.
-  Other primitives (numeric, bytes, date/time) and list/map are not supported; wrap them in a
-  message or use explicit fields instead.
-- `ref` is not allowed on `any` fields (including list/map values). Wrap `any` in a message
-  if you need reference tracking.
-- The runtime type must be registered in the target language schema/IDL registration; unknown
-  types fail to deserialize.
+`any` 允许存储动态类型值。使用 `any` 时建议配合清晰的业务约束,避免滥用导致模型不稳定。
 
 ### Named Types
 
-Reference other messages, enums, or unions by name:
+命名类型包括:
 
-```protobuf
-enum Status { ... }
-message User { ... }
+- `enum`
+- `message`
+- `union`
 
-message Order {
-    User customer = 1;    // Reference to User message
-    Status status = 2;    // Reference to Status enum
-}
-```
+支持跨文件 import 和限定名引用。
 
 ### Collection Types
 
 #### List (`list`)
 
-Use the `list<...>` type for list fields. `repeated` is accepted as an alias. See [Field Modifiers](#field-modifiers) for
-modifier combinations and language mapping.
+```protobuf
+list<T>
+```
 
-Nested collection types are not supported. Use a message wrapper if you need
-`list<list<...>>`, `list<map<...>>`, or `map<..., list<...>>`.
+等价别名:`repeated T`。
 
 #### Map
 
-Maps with typed keys and values:
-
 ```protobuf
-message Config {
-    map<string, string> properties = 1;
-    map<string, int32> counts = 2;
-    map<int32, User> users = 3;
-}
+map<K, V>
 ```
 
-**Language Mapping:**
-
-| Fory IDL             | Java                   | Python            | Go                 | Rust                    | C++                              |
-| -------------------- | ---------------------- | ----------------- | ------------------ | ----------------------- | -------------------------------- |
-| `map<string, int32>` | `Map<String, Integer>` | `Dict[str, int]`  | `map[string]int32` | `HashMap<String, i32>`  | `std::map<std::string, int32_t>` |
-| `map<string, User>`  | `Map<String, User>`    | `Dict[str, User]` | `map[string]User`  | `HashMap<String, User>` | `std::map<std::string, User>`    |
-
-**Key Type Restrictions:**
+约束:
 
-- `string` (most common)
-- Integer types (`int8`, `int16`, `int32`, `int64`)
-- `bool`
-
-Avoid using messages or complex types as keys.
+- `K` 一般应为可稳定比较的标量类型
+- `V` 可为任意支持类型
 
 ### Type Compatibility Matrix
 
-This matrix shows which type conversions are safe across languages:
-
-| From -> To | bool | int8 | int16 | int32 | int64 | float32 | float64 | string |
-| ---------- | ---- | ---- | ----- | ----- | ----- | ------- | ------- | ------ |
-| bool       | Y    | Y    | Y     | Y     | Y     | -       | -       | -      |
-| int8       | -    | Y    | Y     | Y     | Y     | Y       | Y       | -      |
-| int16      | -    | -    | Y     | Y     | Y     | Y       | Y       | -      |
-| int32      | -    | -    | -     | Y     | Y     | -       | Y       | -      |
-| int64      | -    | -    | -     | -     | Y     | -       | -       | -      |
-| float32    | -    | -    | -     | -     | -     | Y       | Y       | -      |
-| float64    | -    | -    | -     | -     | -     | -       | Y       | -      |
-| string     | -    | -    | -     | -     | -     | -       | -       | Y      |
+跨语言建议:
 
-Y = Safe conversion, - = Not recommended
+- 使用各语言都稳定支持的公共子集
+- 尽量避免平台相关宽度/语义差异
+- 对整数编码与可空语义显式声明
 
 ### Best Practices
 
-- Use `int32` as the default for most integers; use `int64` for large values.
-- Use `string` for text data (UTF-8) and `bytes` for binary data.
-- Use `optional` only when the field may legitimately be absent.
-- Use `ref` only when needed for shared or circular references.
-- Prefer `list` for ordered sequences and `map` for key-value lookups.
+1. 优先使用显式字段号与稳定命名
+2. 需要可空就显式 `optional`
+3. 存在共享/循环关系时使用 `ref`
+4. 降低 `any` 使用范围,优先强类型建模
+5. 预留字段号与枚举值区间
 
 ## Type IDs
 
-Type IDs enable efficient cross-language serialization and are used for
-messages, unions, and enums. When `enable_auto_type_id = true` (default) and
-`id` is omitted, the compiler auto-generates one using
-`MurmurHash3(utf8(package.type_name))` (32-bit) and annotates it in generated
-code. When `enable_auto_type_id = false`, types without explicit IDs are
-registered by namespace and name instead. Collisions are detected at
-compile-time across the current file and all imports; when a collision occurs,
-the compiler raises an error and asks for an explicit `id` or an `alias`.
-
-```protobuf
-enum Color [id=100] { ... }
-message User [id=101] { ... }
-union Event [id=102] { ... }
-```
-
-Enum type IDs remain optional; if omitted they are auto-generated using the same
-hash when `enable_auto_type_id = true`.
+类型 ID 用于跨语言快速注册与解码匹配。
 
-### With Explicit Type ID
+### 显式类型 ID
 
 ```protobuf
-message User [id=101] { ... }
-message User [id=101, deprecated=true] { ... }  // Multiple options
+message User [id=100] {
+    string name = 1;
+}
 ```
 
-### Without Explicit Type ID
+### 无显式类型 ID
 
-```protobuf
-message Config { ... }  // Auto-generated when enable_auto_type_id = true
-```
+未显式声明时可:
 
-You can set `[alias="..."]` to change the hash source without renaming the type.
+- 自动生成数值 ID(默认配置)
+- 禁用自动 ID,改用 namespace/type-name 注册
 
-### Practical Notes
+### 实践说明
 
-- If a type omits `id` and `enable_auto_type_id = true`, Fory generates an ID
-  with `MurmurHash3(utf8(package.type_name))` (32-bit).
-- Package alias and type alias change the hash input and can be used to resolve
-  hash collisions without renaming public types.
-- Manual IDs in the small varint range (`0-127`) are compact on the wire; auto
-  IDs are typically larger and usually consume 4-5 bytes.
+- 类型 ID 在协议层面应视为稳定标识
+- 一经发布,不建议更改
+- 建议按域规划 ID 段(如 100-199 用户域)
 
-### ID Assignment Strategy
+### ID 分配策略
 
-```protobuf
-// Enums: 100-199
-enum Status [id=100] { ... }
-enum Priority [id=101] { ... }
+- 核心高频模型优先分配固定 ID
+- 团队统一管理 ID 区间与分配规范
+- 在 CI 中增加 ID 冲突检查
 
-// User domain: 200-299
-message User [id=200] { ... }
-message UserProfile [id=201] { ... }
+## 完整示例
 
-// Order domain: 300-399
-message Order [id=300] { ... }
-message OrderItem [id=301] { ... }
-```
+```protobuf
+package demo.order;
 
-## Complete Example
+option java_package = "com.example.demo.order";
+option go_package = "github.com/example/demo/gen/order;order";
 
-```protobuf
-// E-commerce domain model
-package com.shop.models;
-
-// Enums with type IDs
-enum OrderStatus [id=100] {
-    PENDING = 0;
-    CONFIRMED = 1;
-    SHIPPED = 2;
-    DELIVERED = 3;
-    CANCELLED = 4;
-}
+import "demo/common.fdl";
 
-enum PaymentMethod [id=101] {
-    CREDIT_CARD = 0;
-    DEBIT_CARD = 1;
-    PAYPAL = 2;
-    BANK_TRANSFER = 3;
+enum Status [id=200] {
+    UNKNOWN = 0;
+    CREATED = 1;
+    PAID = 2;
+    SHIPPED = 3;
 }
 
-// Messages with type IDs
-message Address [id=200] {
-    string street = 1;
-    string city = 2;
-    string state = 3;
-    string country = 4;
-    string postal_code = 5;
+message Item [id=201] {
+    string sku = 1;
+    int32 quantity = 2;
 }
 
-message Customer [id=201] {
+message User [id=202] {
     string id = 1;
     string name = 2;
     optional string email = 3;
-    optional string phone = 4;
-    optional Address billing_address = 5;
-    optional Address shipping_address = 6;
 }
 
-message Product [id=202] {
-    string sku = 1;
-    string name = 2;
-    string description = 3;
-    float64 price = 4;
-    int32 stock = 5;
-    list<string> categories = 6;
-    map<string, string> attributes = 7;
+union Animal [id=203] {
+    Dog dog = 1;
+    Cat cat = 2;
 }
 
-message OrderItem [id=203] {
-    ref Product product = 1;  // Track reference to avoid duplication
-    int32 quantity = 2;
-    float64 unit_price = 3;
+message Dog [id=204] {
+    string name = 1;
 }
 
-message Order [id=204] {
-    string id = 1;
-    ref Customer customer = 2;
-    list<OrderItem> items = 3;
-    OrderStatus status = 4;
-    PaymentMethod payment_method = 5;
-    float64 total = 6;
-    optional string notes = 7;
-    timestamp created_at = 8;
-    optional timestamp shipped_at = 9;
+message Cat [id=205] {
+    string name = 1;
 }
 
-// Config without explicit type ID (auto-generated when enable_auto_type_id = true)
-message ShopConfig {
-    string store_name = 1;
-    string currency = 2;
-    float64 tax_rate = 3;
-    list<string> supported_countries = 4;
+message Order [id=206] {
+    string id = 1;
+    ref User buyer = 2;
+    list<Item> items = 3;
+    Status status = 4;
+    map<string, string> metadata = 5;
+    optional Animal pet = 6;
 }
 ```
 
-For protobuf-specific extension options and `(fory).` syntax, see
-[Protocol Buffers IDL Support](protobuf-idl.md#fory-extension-options-protobuf).
+## 语法摘要
 
-## Grammar Summary
+以下为简化文法(便于快速查阅,具体以编译器实现为准):
 
+```ebnf
+file            = [packageDecl] {optionDecl} {importDecl} {typeDecl} ;
+
+packageDecl     = "package" qualifiedName ["alias" identifier] ";" ;
+optionDecl      = "option" identifier "=" optionValue ";" ;
+importDecl      = "import" stringLiteral ";" ;
+
+typeDecl        = enumDecl | messageDecl | unionDecl ;
+
+enumDecl        = "enum" identifier [typeOptions] "{" {enumField | reservedDecl} "}" ;
+enumField       = identifier "=" intLiteral ";" ;
+
+messageDecl     = "message" identifier [typeOptions] "{" {fieldDecl | nestedTypeDecl | reservedDecl} "}" ;
+unionDecl       = "union" identifier [typeOptions] "{" {unionCaseDecl} "}" ;
+
+fieldDecl       = [fieldModifier] typeRef identifier "=" intLiteral [fieldOptions] ";" ;
+unionCaseDecl   = typeRef identifier "=" intLiteral [fieldOptions] ";" ;
+
+fieldModifier   = "optional" | "ref" | "list" ;
+
+typeRef         = primitiveType | qualifiedName | listType | mapType ;
+listType        = "list" "<" typeRef ">" ;
+mapType         = "map" "<" typeRef "," typeRef ">" ;
+
+typeOptions     = "[" optionPair {"," optionPair} "]" ;
+fieldOptions    = "[" optionPair {"," optionPair} "]" ;
+optionPair      = identifier "=" optionValue ;
+
+reservedDecl    = "reserved" reservedItem {"," reservedItem} ";" ;
+reservedItem    = intLiteral | intLiteral "to" intLiteral | stringLiteral ;
 ```
-file         := [package_decl] file_option* import_decl* type_def*
-
-package_decl := 'package' package_name ['alias' package_name] ';'
-package_name := IDENTIFIER ('.' IDENTIFIER)*
-
-file_option  := 'option' option_name '=' option_value ';'
-option_name  := IDENTIFIER
-
-import_decl  := 'import' STRING ';'
-
-type_def     := enum_def | message_def | union_def
-
-enum_def     := 'enum' IDENTIFIER [type_options] '{' enum_body '}'
-enum_body    := (reserved_stmt | enum_value)*
-enum_value   := IDENTIFIER '=' INTEGER ';'
-
-message_def  := 'message' IDENTIFIER [type_options] '{' message_body '}'
-message_body := (reserved_stmt | nested_type | field_def)*
-nested_type  := enum_def | message_def | union_def
-field_def    := [modifiers] field_type IDENTIFIER '=' INTEGER [field_options] ';'
-
-union_def    := 'union' IDENTIFIER [type_options] '{' union_field* '}'
-union_field  := ['repeated'] field_type IDENTIFIER '=' INTEGER [field_options] ';'
-option_value := 'true' | 'false' | IDENTIFIER | INTEGER | STRING
-
-reserved_stmt := 'reserved' reserved_items ';'
-reserved_items := reserved_item (',' reserved_item)*
-reserved_item := INTEGER | INTEGER 'to' INTEGER | INTEGER 'to' 'max' | STRING
-
-modifiers    := { 'optional' | 'ref' | 'repeated' }
-
-field_type   := primitive_type | named_type | list_type | map_type
-primitive_type := 'bool'
-               | 'int8' | 'int16' | 'int32' | 'int64'
-               | 'uint8' | 'uint16' | 'uint32' | 'uint64'
-               | 'fixed_int32' | 'fixed_int64' | 'fixed_uint32' | 'fixed_uint64'
-               | 'tagged_int64' | 'tagged_uint64'
-               | 'float32' | 'float64'
-               | 'string' | 'bytes'
-               | 'date' | 'timestamp' | 'duration' | 'decimal'
-               | 'any'
-named_type   := qualified_name
-qualified_name := IDENTIFIER ('.' IDENTIFIER)*   // e.g., Parent.Child
-list_type    := 'list' '<' { 'optional' | 'ref' } field_type '>'
-map_type     := 'map' '<' field_type ',' field_type '>'
-
-type_options := '[' type_option (',' type_option)* ']'
-type_option  := IDENTIFIER '=' option_value         // e.g., id=100, deprecated=true
-field_options := '[' field_option (',' field_option)* ']'
-field_option := IDENTIFIER '=' option_value         // e.g., deprecated=true, ref=true
-
-STRING       := '"' [^"\n]* '"' | "'" [^'\n]* "'"
-IDENTIFIER   := [a-zA-Z_][a-zA-Z0-9_]*
-INTEGER      := '-'? [0-9]+
-```
+
+实现建议:如需严谨验证,请以编译器语法解析器和测试用例为准。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/cpp/field-configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/cpp/field-configuration.md
index 0c18e125ce..4dd404c290 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/cpp/field-configuration.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/cpp/field-configuration.md
@@ -19,25 +19,22 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本页介绍字段级序列化配置,包括字段 ID、可空控制、引用跟踪、忽略字段与动态类型控制等。
-> 建议在跨语言和兼容模式场景中优先显式配置字段 ID,并在需要时开启 ref/nullable 以保证行为一致。
-
-本页说明如何配置序列化的字段级元信息。
+本页说明如何在 C++ 中配置序列化字段级元信息。
 
 ## 概述
 
-Apache Fory™ provides two ways to specify field-level metadata at compile time:
+Apache Fory™ 在编译期提供两种字段元信息配置方式:
 
-1. **`fory::field<>` template** - Inline metadata in struct definition
-2. **`FORY_FIELD_TAGS` macro** - Non-invasive metadata added separately
+1. **`fory::field<>` 模板**:在 struct 定义中内联声明元信息
+2. **`FORY_FIELD_TAGS` 宏**:在 struct 外部附加元信息(非侵入)
 
-These enable:
+这些机制可用于:
 
-- **Tag IDs**: Assign compact numeric IDs for schema evolution
-- **Nullability**: Mark pointer fields as nullable
-- **Reference Tracking**: Enable reference tracking for shared pointers
+- **Tag ID**:为 schema 演进分配紧凑数值 ID
+- **可空控制**:将指针字段标记为可空
+- **引用跟踪**:为共享指针启用引用跟踪
 
-## fory::field 模板
+## `fory::field` 模板
 
 ```cpp
 template <typename T, int16_t Id, typename... Options>
@@ -46,11 +43,11 @@ class field;
 
 ### 模板参数
 
-| Parameter | Description                                      |
-| --------- | ------------------------------------------------ |
-| `T`       | The underlying field type                        |
-| `Id`      | Field tag ID (int16_t) for compact serialization |
-| `Options` | Optional tags: `fory::nullable`, `fory::ref`     |
+| 参数      | 说明                                       |
+| --------- | ------------------------------------------ |
+| `T`       | 底层字段类型                               |
+| `Id`      | 字段 tag ID(`int16_t`),用于紧凑序列化   |
+| `Options` | 可选标签:`fory::nullable`、`fory::ref` 等 |
 
 ### 基本用法
 
@@ -67,7 +64,7 @@ struct Person {
 FORY_STRUCT(Person, name, age, nickname);
 ```
 
-The `fory::field<>` wrapper is transparent - you can use it like the underlying type:
+`fory::field<>` 是透明包装,可像底层类型一样使用:
 
 ```cpp
 Person person;
@@ -79,9 +76,9 @@ int a = person.age.get();        // Explicit get()
 
 ## 标签类型
 
-### fory::nullable
+### `fory::nullable`
 
-Marks a smart pointer field as nullable (can be `nullptr`):
+将智能指针字段标记为可空(可为 `nullptr`):
 
 ```cpp
 struct Node {
@@ -91,9 +88,9 @@ struct Node {
 FORY_STRUCT(Node, name, next);
 ```
 
-**Valid for:** `std::shared_ptr<T>`, `std::unique_ptr<T>`
+**适用类型:** `std::shared_ptr<T>`、`std::unique_ptr<T>`
 
-**Note:** For nullable primitives or strings, use `std::optional<T>` instead:
+**说明:** 对原生值类型或字符串的可空语义,请使用 `std::optional<T>`:
 
 ```cpp
 // Correct: use std::optional for nullable primitives
@@ -103,19 +100,19 @@ fory::field<std::optional<int32_t>, 0> optional_value;
 // fory::field<int32_t, 0, fory::nullable> value;  // Compile error!
 ```
 
-### fory::not_null
+### `fory::not_null`
 
-Explicitly marks a pointer field as non-nullable. This is the default for smart pointers, but can be used for documentation:
+显式声明指针字段不可空。虽然这是智能指针的默认行为,但可用于增强可读性:
 
 ```cpp
 fory::field<std::shared_ptr<Data>, 0, fory::not_null> data;  // Must not be nullptr
 ```
 
-**Valid for:** `std::shared_ptr<T>`, `std::unique_ptr<T>`
+**适用类型:** `std::shared_ptr<T>`、`std::unique_ptr<T>`
 
-### fory::ref
+### `fory::ref`
 
-Enables reference tracking for shared pointer fields. When multiple fields reference the same object, it will be serialized once and shared:
+为共享指针字段启用引用跟踪。多个字段引用同一对象时,仅序列化一次并保持共享关系:
 
 ```cpp
 struct Graph {
@@ -126,27 +123,27 @@ struct Graph {
 FORY_STRUCT(Graph, name, left, right);
 ```
 
-**Valid for:** `std::shared_ptr<T>` only (requires shared ownership)
+**适用类型:** 仅 `std::shared_ptr<T>`(需要共享所有权)
 
-### Combining Tags
+### 组合标签
 
-Multiple tags can be combined for shared pointers:
+共享指针可组合多个标签:
 
 ```cpp
 // Nullable + ref tracking
 fory::field<std::shared_ptr<Node>, 0, fory::nullable, fory::ref> link;
 ```
 
-## Type Rules
+## 类型规则
 
-| Type                 | Allowed Options   | Nullability                        |
-| -------------------- | ----------------- | ---------------------------------- |
-| Primitives, strings  | None              | Use `std::optional<T>` if nullable |
-| `std::optional<T>`   | None              | Inherently nullable                |
-| `std::shared_ptr<T>` | `nullable`, `ref` | Non-null by default                |
-| `std::unique_ptr<T>` | `nullable`        | Non-null by default                |
+| 类型                 | 可用选项          | 可空语义                          |
+| -------------------- | ----------------- | --------------------------------- |
+| 原生类型、字符串     | 无                | 若需可空请使用 `std::optional<T>` |
+| `std::optional<T>`   | 无                | 天然可空                          |
+| `std::shared_ptr<T>` | `nullable`、`ref` | 默认不可空                        |
+| `std::unique_ptr<T>` | `nullable`        | 默认不可空                        |
 
-## Complete Example
+## 完整示例
 
 ```cpp
 #include "fory/serialization/fory.h"
@@ -191,9 +188,9 @@ int main() {
 }
 ```
 
-## Compile-Time Validation
+## 编译期校验
 
-Invalid configurations are caught at compile time:
+非法配置会在编译期报错:
 
 ```cpp
 // Error: nullable and not_null are mutually exclusive
@@ -209,9 +206,9 @@ fory::field<std::unique_ptr<int>, 0, fory::ref> bad3;
 fory::field<std::optional<int>, 0, fory::nullable> bad4;
 ```
 
-## Backwards Compatibility
+## 向后兼容
 
-Existing structs without `fory::field<>` wrappers continue to work:
+未使用 `fory::field<>` 包装的旧 struct 仍可正常工作:
 
 ```cpp
 // Old style - still works
@@ -229,15 +226,15 @@ struct ModernPerson {
 FORY_STRUCT(ModernPerson, name, age);
 ```
 
-## FORY_FIELD_TAGS Macro
+## `FORY_FIELD_TAGS` 宏
 
-The `FORY_FIELD_TAGS` macro provides a non-invasive way to add field metadata without modifying struct definitions. This is useful for:
+`FORY_FIELD_TAGS` 提供了一种非侵入式方案:无需修改 struct 定义即可附加字段元信息。适用场景:
 
-- **Third-party types**: Add metadata to types you don't own
-- **Clean structs**: Keep struct definitions as pure C++
-- **Isolated dependencies**: Confine Fory headers to serialization config files
+- **第三方类型**:为非自有类型添加元信息
+- **纯净结构定义**:保持 struct 仅包含标准 C++ 类型
+- **依赖隔离**:将 Fory 头文件限制在序列化配置文件中
 
-### Usage
+### 用法
 
 ```cpp
 // user_types.h - NO fory headers needed!
@@ -268,33 +265,33 @@ FORY_FIELD_TAGS(Document,
 )
 ```
 
-### FORY_FIELD_TAGS Options
+### `FORY_FIELD_TAGS` 选项
 
-| Field Type           | Valid Combinations                                                                       |
+| 字段类型             | 合法组合                                                                                 |
 | -------------------- | ---------------------------------------------------------------------------------------- |
-| Primitives, strings  | `(field, id)` only                                                                       |
-| `std::optional<T>`   | `(field, id)` only                                                                       |
-| `std::shared_ptr<T>` | `(field, id)`, `(field, id, nullable)`, `(field, id, ref)`, `(field, id, nullable, ref)` |
-| `std::unique_ptr<T>` | `(field, id)`, `(field, id, nullable)`                                                   |
+| 原生类型、字符串     | 仅 `(field, id)`                                                                         |
+| `std::optional<T>`   | 仅 `(field, id)`                                                                         |
+| `std::shared_ptr<T>` | `(field, id)`、`(field, id, nullable)`、`(field, id, ref)`、`(field, id, nullable, ref)` |
+| `std::unique_ptr<T>` | `(field, id)`、`(field, id, nullable)`                                                   |
 
-### API Comparison
+### API 对比
 
-| Aspect                  | `fory::field<>` Wrapper  | `FORY_FIELD_TAGS` Macro |
-| ----------------------- | ------------------------ | ----------------------- |
-| **Struct definition**   | Modified (wrapped types) | Unchanged (pure C++)    |
-| **IDE support**         | Template noise           | Excellent (clean types) |
-| **Third-party classes** | Not supported            | Supported               |
-| **Header dependencies** | Required everywhere      | Isolated to config      |
-| **Migration effort**    | High (change all fields) | Low (add one macro)     |
+| 维度           | `fory::field<>` 包装     | `FORY_FIELD_TAGS` 宏   |
+| -------------- | ------------------------ | ---------------------- |
+| **结构定义**   | 需要改动(包装字段类型) | 无需改动(保持纯 C++) |
+| **IDE 体验**   | 有模板噪音               | 更清晰(原生字段类型) |
+| **第三方类型** | 不支持                   | 支持                   |
+| **头文件依赖** | 各处都需要               | 可集中在配置文件       |
+| **迁移成本**   | 高(修改全部字段)       | 低(新增一个宏)       |
 
-## FORY_FIELD_CONFIG Macro
+## `FORY_FIELD_CONFIG` 宏
 
-The `FORY_FIELD_CONFIG` macro is the most powerful and flexible way to configure field-level serialization. It provides:
+`FORY_FIELD_CONFIG` 是更强、更灵活的字段配置方式,提供:
 
-- **Builder pattern API**: Fluent, chainable configuration with `F(id).option1().option2()`
-- **Encoding control**: Specify how unsigned integers are encoded (varint, fixed, tagged)
-- **Compile-time verification**: Field names are verified against member pointers
-- **Cross-language compatibility**: Configure encoding to match other languages (Java, Rust, etc.)
+- **Builder 风格 API**:链式配置 `F(id).option1().option2()`
+- **编码控制**:指定无符号整数编码(varint、fixed、tagged)
+- **编译期校验**:通过成员指针校验字段名
+- **跨语言兼容**:按 Java、Rust 等语言期望配置编码
 
 ### 基本语法
 
@@ -308,9 +305,9 @@ FORY_FIELD_CONFIG(StructType,
 );
 ```
 
-### The F() Builder
+### `F()` Builder
 
-The `fory::F(id)` factory creates a `FieldMeta` object that supports method chaining:
+`fory::F(id)` 工厂函数会创建支持链式调用的 `FieldMeta` 对象:
 
 ```cpp
 fory::F(0)                    // Create with field ID 0
@@ -323,7 +320,7 @@ fory::F(0)                    // Create with field ID 0
     .compress(false)          // Disable compression
 ```
 
-**Tip:** To use `F()` without the `fory::` prefix, add a using declaration:
+**提示:** 若希望省略 `fory::` 前缀,可添加 `using` 声明:
 
 ```cpp
 using fory::F;
@@ -334,19 +331,19 @@ FORY_FIELD_CONFIG(MyStruct,
 );
 ```
 
-### Encoding Options for Unsigned Integers
+### 无符号整数编码选项
 
-For `uint32_t` and `uint64_t` fields, you can specify the wire encoding:
+对于 `uint32_t` 与 `uint64_t` 字段,可显式指定线格式编码:
 
-| Method      | Type ID       | Description                                    | Use Case                              |
-| ----------- | ------------- | ---------------------------------------------- | ------------------------------------- |
-| `.varint()` | VAR_UINT32/64 | Variable-length encoding (1-5 or 1-10 bytes)   | Values typically small                |
-| `.fixed()`  | UINT32/64     | Fixed-size encoding (always 4 or 8 bytes)      | Values uniformly distributed          |
-| `.tagged()` | TAGGED_UINT64 | Tagged hybrid encoding with size hint (uint64) | Mixed small and large values (uint64) |
+| 方法        | Type ID       | 说明                              | 适用场景                 |
+| ----------- | ------------- | --------------------------------- | ------------------------ |
+| `.varint()` | VAR_UINT32/64 | 变长编码(1-5 或 1-10 字节)      | 数值通常较小             |
+| `.fixed()`  | UINT32/64     | 定长编码(固定 4 或 8 字节)      | 数值分布较均匀           |
+| `.tagged()` | TAGGED_UINT64 | 带大小提示的混合编码(仅 uint64) | 小值与大值混合(uint64) |
 
-**Note:** `uint8_t` and `uint16_t` always use fixed encoding (UINT8, UINT16).
+**说明:** `uint8_t` 与 `uint16_t` 始终使用定长编码(UINT8、UINT16)。
 
-### Complete Example
+### 完整示例
 
 ```cpp
 #include "fory/serialization/fory.h"
@@ -411,11 +408,11 @@ int main() {
 }
 ```
 
-### Cross-Language Compatibility
+### 跨语言兼容
 
-When serializing data to be read by other languages, use `FORY_FIELD_CONFIG` to match their encoding expectations:
+当序列化数据会被其他语言读取时,建议通过 `FORY_FIELD_CONFIG` 显式匹配目标语言编码约定。
 
-**Java Compatibility:**
+**Java 兼容示例:**
 
 ```cpp
 // Java uses these type IDs for unsigned integers:
@@ -446,9 +443,9 @@ FORY_FIELD_CONFIG(JavaCompatible,
 );
 ```
 
-### Schema Evolution with FORY_FIELD_CONFIG
+### 使用 `FORY_FIELD_CONFIG` 做 Schema 演进
 
-In compatible mode, fields can have different nullability between sender and receiver:
+在兼容模式下,发送端和接收端可以对字段使用不同可空策略:
 
 ```cpp
 // Version 1: All fields non-nullable
@@ -476,32 +473,32 @@ FORY_FIELD_CONFIG(DataV2,
 );
 ```
 
-### FORY_FIELD_CONFIG Options Reference
-
-| Method           | Description                                 | Valid For                  |
-| ---------------- | ------------------------------------------- | -------------------------- |
-| `.nullable()`    | Mark field as nullable                      | Smart pointers, primitives |
-| `.ref()`         | Enable reference tracking                   | `std::shared_ptr` only     |
-| `.monomorphic()` | Mark pointer as always pointing to one type | Smart pointers             |
-| `.varint()`      | Use variable-length encoding                | `uint32_t`, `uint64_t`     |
-| `.fixed()`       | Use fixed-size encoding                     | `uint32_t`, `uint64_t`     |
-| `.tagged()`      | Use tagged hybrid encoding                  | `uint64_t` only            |
-| `.compress(v)`   | Enable/disable field compression            | All types                  |
-
-### Comparing Field Configuration Macros
-
-| Feature                 | `fory::field<>`       | `FORY_FIELD_TAGS` | `FORY_FIELD_CONFIG`       |
-| ----------------------- | --------------------- | ----------------- | ------------------------- |
-| **Struct modification** | Required (wrap types) | None              | None                      |
-| **Encoding control**    | No                    | No                | Yes (varint/fixed/tagged) |
-| **Builder pattern**     | No                    | No                | Yes                       |
-| **Compile-time verify** | Yes                   | Limited           | Yes (member pointers)     |
-| **Cross-lang compat**   | Limited               | Limited           | Full                      |
-| **Recommended for**     | Simple structs        | Third-party types | Complex/xlang structs     |
-
-## Related Topics
-
-- [Type Registration](type-registration.md) - Registering types with FORY_STRUCT
-- [Schema Evolution](schema-evolution.md) - Using tag IDs for schema evolution
-- [Configuration](configuration.md) - Enabling reference tracking globally
-- [Cross-Language](cross-language.md) - Interoperability with Java, Rust, Python
+### `FORY_FIELD_CONFIG` 选项速查
+
+| 方法             | 说明                     | 适用范围               |
+| ---------------- | ------------------------ | ---------------------- |
+| `.nullable()`    | 将字段标记为可空         | 智能指针、可空值类型   |
+| `.ref()`         | 启用引用跟踪             | 仅 `std::shared_ptr`   |
+| `.monomorphic()` | 标记指针始终指向单一类型 | 智能指针               |
+| `.varint()`      | 变长编码                 | `uint32_t`、`uint64_t` |
+| `.fixed()`       | 定长编码                 | `uint32_t`、`uint64_t` |
+| `.tagged()`      | tagged 混合编码          | 仅 `uint64_t`          |
+| `.compress(v)`   | 启用/禁用字段压缩        | 所有类型               |
+
+### 字段配置方案对比
+
+| 特性                | `fory::field<>`    | `FORY_FIELD_TAGS` | `FORY_FIELD_CONFIG`       |
+| ------------------- | ------------------ | ----------------- | ------------------------- |
+| **需要修改 struct** | 是(包装字段类型) | 否                | 否                        |
+| **编码控制**        | 否                 | 否                | 是(varint/fixed/tagged) |
+| **Builder 风格**    | 否                 | 否                | 是                        |
+| **编译期校验**      | 是                 | 有限              | 是(成员指针校验)        |
+| **跨语言兼容能力**  | 有限               | 有限              | 完整                      |
+| **推荐场景**        | 简单结构体         | 第三方类型        | 复杂/跨语言结构体         |
+
+## 相关主题
+
+- [类型注册](type-registration.md) - 使用 FORY_STRUCT 注册类型
+- [Schema 演进](schema-evolution.md) - 基于 tag ID 的演进策略
+- [配置](configuration.md) - 全局启用引用跟踪等选项
+- [跨语言](cross-language.md) - 与 Java、Rust、Python 的互操作
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/cpp/schema-evolution.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/cpp/schema-evolution.md
index 3f89d97aad..fd8c7bfcad 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/cpp/schema-evolution.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/cpp/schema-evolution.md
@@ -85,7 +85,7 @@ Compatible 模式支持以下 schema 变更:
 | 添加新字段   | ✅   | 缺失字段使用默认值           |
 | 删除字段     | ✅   | 额外字段被跳过               |
 | 重排字段顺序 | ✅   | 按名称匹配字段,而非位置     |
-| 更改可空性   | ✅   | `T` ↔ `std::optional<T>`    |
+| 更改可空性   | ✅   | `T` ↔ `std::optional<T>`     |
 | 更改字段类型 | ❌   | 类型必须兼容                 |
 | 重命名字段   | ❌   | 字段名必须匹配(区分大小写) |
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/configuration.md
index ca1a0e0b24..770e5a1022 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/configuration.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/configuration.md
@@ -33,12 +33,12 @@ f := fory.New()
 
 默认设置:
 
-| Option     | Default | Description                    |
-| ---------- | ------- | ------------------------------ |
-| TrackRef   | false   | 关闭引用跟踪                   |
-| MaxDepth   | 20      | 最大嵌套深度                   |
-| IsXlang    | false   | 关闭跨语言模式                 |
-| Compatible | false   | 关闭 Schema 演进兼容模式       |
+| Option     | Default | Description              |
+| ---------- | ------- | ------------------------ |
+| TrackRef   | false   | 关闭引用跟踪             |
+| MaxDepth   | 20      | 最大嵌套深度             |
+| IsXlang    | false   | 关闭跨语言模式           |
+| Compatible | false   | 关闭 Schema 演进兼容模式 |
 
 ### 通过选项配置
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/index.md
index 4e695875ac..a161c83606 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/index.md
@@ -143,19 +143,19 @@ data, _ := f.Serialize(&User{ID: 1, Name: "Alice"})
 
 ## 文档导航
 
-| 主题                                         | 说明                                   |
-| -------------------------------------------- | -------------------------------------- |
-| [配置](configuration.md)                     | 配置项与运行参数                       |
-| [基本序列化](basic-serialization.md)         | 核心 API 与使用模式                    |
-| [类型注册](type-registration.md)             | 序列化前的类型注册                     |
-| [支持类型](supported-types.md)               | 完整类型支持说明                       |
-| [引用](references.md)                        | 循环引用与共享对象                     |
-| [Struct 标签](struct-tags.md)                | 字段级配置                             |
-| [Schema 演进](schema-evolution.md)           | 前向/后向兼容策略                      |
-| [跨语言](cross-language.md)                  | 多语言序列化                           |
-| [代码生成](codegen.md)                       | 实验性的 AOT 代码生成                  |
-| [线程安全](thread-safety.md)                 | 并发使用模式                           |
-| [故障排查](troubleshooting.md)               | 常见问题与解决方案                     |
+| 主题                                 | 说明                  |
+| ------------------------------------ | --------------------- |
+| [配置](configuration.md)             | 配置项与运行参数      |
+| [基本序列化](basic-serialization.md) | 核心 API 与使用模式   |
+| [类型注册](type-registration.md)     | 序列化前的类型注册    |
+| [支持类型](supported-types.md)       | 完整类型支持说明      |
+| [引用](references.md)                | 循环引用与共享对象    |
+| [Struct 标签](struct-tags.md)        | 字段级配置            |
+| [Schema 演进](schema-evolution.md)   | 前向/后向兼容策略     |
+| [跨语言](cross-language.md)          | 多语言序列化          |
+| [代码生成](codegen.md)               | 实验性的 AOT 代码生成 |
+| [线程安全](thread-safety.md)         | 并发使用模式          |
+| [故障排查](troubleshooting.md)       | 常见问题与解决方案    |
 
 ## 相关资源
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/struct-tags.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/struct-tags.md
index 4579a1d744..a62b32770a 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/struct-tags.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/go/struct-tags.md
@@ -19,14 +19,11 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本页介绍字段级序列化配置,包括字段 ID、可空控制、引用跟踪、忽略字段与动态类型控制等。
-> 建议在跨语言和兼容模式场景中优先显式配置字段 ID,并在需要时开启 ref/nullable 以保证行为一致。
-
-Fory Go uses struct tags to customize field-level serialization behavior. This allows fine-grained control over how individual fields are serialized.
+Fory Go 通过 struct tag 自定义字段级序列化行为,从而精细控制每个字段如何序列化。
 
 ## 标签语法
 
-The general syntax for Fory struct tags:
+Fory struct tag 的通用格式如下:
 
 ```go
 type MyStruct struct {
@@ -34,13 +31,13 @@ type MyStruct struct {
 }
 ```
 
-Multiple options are separated by commas (`,`).
+多个选项使用逗号(`,`)分隔。
 
 ## 可用标签
 
 ### 字段 ID
 
-Use `id=N` to assign a numeric ID to a field for compact encoding:
+使用 `id=N` 为字段分配数值 ID,以获得更紧凑编码:
 
 ```go
 type User struct {
@@ -50,21 +47,21 @@ type User struct {
 }
 ```
 
-**Benefits**:
+**收益:**
 
-- Smaller serialized size (numeric IDs vs field names)
-- Faster serialization/deserialization
-- Required for optimal cross-language compatibility
+- 序列化体积更小(数值 ID 替代字段名)
+- 序列化/反序列化更快
+- 跨语言兼容场景下更推荐
 
-**Notes**:
+**注意:**
 
-- IDs must be unique within a struct
-- IDs must be >= 0
-- If not specified, field name is used (larger payload)
+- 同一 struct 内 ID 必须唯一
+- ID 必须 `>= 0`
+- 未指定时使用字段名(payload 更大)
 
 ### 忽略字段
 
-Use `-` to exclude a field from serialization:
+使用 `-` 将字段排除在序列化之外:
 
 ```go
 type User struct {
@@ -74,11 +71,11 @@ type User struct {
 }
 ```
 
-The `Password` field will not be included in serialized output and will remain at its zero value after deserialization.
+`Password` 不会进入序列化结果,反序列化后将保持该类型零值。
 
 ### 可空控制
 
-Use `nullable` to control whether null flags are written for pointer fields:
+使用 `nullable` 控制是否为指针字段写入 null 标记:
 
 ```go
 type Record struct {
@@ -90,15 +87,15 @@ type Record struct {
 }
 ```
 
-**Notes**:
+**注意:**
 
-- Only applies to pointer, slice, and map fields
-- When `nullable=false`, serializing a nil value will cause an error
-- Default is `false` (no null flag written)
+- 仅适用于指针、slice、map 字段
+- `nullable=false` 时,序列化 nil 会报错
+- 默认是 `false`(不写 null 标记)
 
 ### 引用跟踪
 
-Control per-field reference tracking for slices, maps, or pointer to struct fields:
+可为 slice、map、或“指向 struct 的指针字段”设置字段级引用跟踪:
 
 ```go
 type Container struct {
@@ -110,22 +107,22 @@ type Container struct {
 }
 ```
 
-**Notes**:
+**注意:**
 
-- Applies to slices, maps, and pointer to struct fields
-- Pointer to primitive types (e.g., `*int`, `*string`) cannot use this tag
-- Default is `ref=false` (no reference tracking)
-- When global `WithTrackRef(false)` is set, field ref tags are ignored
-- When global `WithTrackRef(true)` is set, use `ref=false` to disable for specific fields
+- 适用于 slice、map 与“指向 struct 的指针字段”
+- 指向原生类型的指针(如 `*int`、`*string`)不能使用该标签
+- 默认 `ref=false`(不开启引用跟踪)
+- 全局 `WithTrackRef(false)` 时,字段级 ref 标签会被忽略
+- 全局 `WithTrackRef(true)` 时,可用 `ref=false` 对单字段禁用
 
-**Use cases**:
+**适用场景:**
 
-- Enable for fields that may be circular or shared
-- Disable for fields that are always unique (optimization)
+- 可能出现共享或循环引用的字段
+- 可明确唯一的字段可禁用(性能优化)
 
-### Encoding
+### 编码控制
 
-Use `encoding` to control how numeric fields are encoded:
+使用 `encoding` 控制数值字段编码方式:
 
 ```go
 type Metrics struct {
@@ -140,24 +137,24 @@ type Metrics struct {
 }
 ```
 
-**Supported encodings**:
+**支持编码:**
 
-| Type     | Options                     | Default  |
+| 类型     | 可选值                      | 默认值   |
 | -------- | --------------------------- | -------- |
-| `int32`  | `varint`, `fixed`           | `varint` |
-| `uint32` | `varint`, `fixed`           | `varint` |
-| `int64`  | `varint`, `fixed`, `tagged` | `varint` |
-| `uint64` | `varint`, `fixed`, `tagged` | `varint` |
+| `int32`  | `varint`、`fixed`           | `varint` |
+| `uint32` | `varint`、`fixed`           | `varint` |
+| `int64`  | `varint`、`fixed`、`tagged` | `varint` |
+| `uint64` | `varint`、`fixed`、`tagged` | `varint` |
 
-**When to use**:
+**何时使用:**
 
-- `varint`: Best for values that are often small (default)
-- `fixed`: Best for values that use full range (e.g., timestamps, hashes)
-- `tagged`: When type information needs to be preserved
+- `varint`:适合小值居多(默认)
+- `fixed`:适合接近全值域分布(如时间戳、哈希)
+- `tagged`:适合需保留类型信息的场景
 
-**Shorthand for int32/uint32**:
+**int32/uint32 简写:**
 
-Use `compress` as a convenience tag for int32/uint32 fields:
+对 int32/uint32 字段可使用 `compress` 作为便捷标签:
 
 ```go
 type Data struct {
@@ -166,9 +163,9 @@ type Data struct {
 }
 ```
 
-## Combining Tags
+## 组合标签
 
-Multiple tags can be combined using comma separator:
+多个标签可使用逗号组合:
 
 ```go
 type Document struct {
@@ -178,9 +175,9 @@ type Document struct {
 }
 ```
 
-## Integration with Other Tags
+## 与其他标签共存
 
-Fory tags coexist with other struct tags:
+Fory 标签可与其他 struct tag 并存:
 
 ```go
 type User struct {
@@ -190,11 +187,11 @@ type User struct {
 }
 ```
 
-Each tag namespace is independent.
+各标签命名空间互不影响。
 
-## Field Visibility
+## 字段可见性
 
-Only **exported fields** (starting with uppercase) are considered:
+仅处理**导出字段**(首字母大写):
 
 ```go
 type User struct {
@@ -204,26 +201,26 @@ type User struct {
 }
 ```
 
-Unexported fields are always ignored, regardless of tags.
+未导出字段始终忽略,与是否配置 tag 无关。
 
-## Field Ordering
+## 字段顺序
 
-Fields are serialized in a consistent order based on:
+字段会按稳定顺序序列化,依据:
 
-1. Field name (alphabetically in snake_case)
-2. Field type
+1. 字段名(snake_case 字典序)
+2. 字段类型
 
-This ensures cross-language compatibility where field order matters.
+这可保证跨语言场景下的字段顺序一致性。
 
-## Struct Hash
+## Struct 哈希
 
-Fory computes a hash of struct fields for version checking:
+Fory 会基于 struct 字段计算哈希用于版本校验:
 
-- Hash includes field names and types
-- Hash is written to serialized data
-- Mismatch triggers `ErrKindHashMismatch`
+- 哈希包含字段名与字段类型
+- 哈希会写入序列化数据
+- 不匹配会触发 `ErrKindHashMismatch`
 
-Struct field changes affect the hash:
+结构字段变更会影响哈希:
 
 ```go
 // These produce different hashes
@@ -236,9 +233,9 @@ type V2 struct {
 }
 ```
 
-## Examples
+## 示例
 
-### API Response Struct
+### API 响应结构
 
 ```go
 type APIResponse struct {
@@ -249,7 +246,7 @@ type APIResponse struct {
 }
 ```
 
-### Caching with Shared References
+### 带共享引用的缓存结构
 
 ```go
 type CacheEntry struct {
@@ -260,7 +257,7 @@ type CacheEntry struct {
 }
 ```
 
-### Document with Circular References
+### 带循环引用的文档结构
 
 ```go
 type Document struct {
@@ -271,9 +268,9 @@ type Document struct {
 }
 ```
 
-## Tag Parsing Errors
+## 标签解析错误
 
-Invalid tags produce errors during registration:
+注册阶段若标签非法会报错:
 
 ```go
 type BadStruct struct {
@@ -287,15 +284,15 @@ err := f.RegisterStruct(BadStruct{}, 1)
 
 ## 最佳实践
 
-1. **Use `-` for sensitive data**: Passwords, tokens, internal state
-2. **Enable ref tracking for shared objects**: When the same pointer appears multiple times
-3. **Disable ref tracking for simple fields**: Optimization when you know the field is unique
-4. **Keep names consistent**: Cross-language names should match
-5. **Document tag usage**: Especially for non-obvious configurations
+1. **敏感字段使用 `-`**:如密码、令牌、内部状态
+2. **共享对象启用 ref**:同一指针可能多次出现时开启
+3. **简单唯一字段禁用 ref**:可做性能优化
+4. **保持命名一致**:跨语言字段名应保持稳定
+5. **记录标签意图**:非显式配置建议补充注释说明
 
-## Common Patterns
+## 常见模式
 
-### Ignoring Computed Fields
+### 忽略计算字段
 
 ```go
 type Rectangle struct {
@@ -309,7 +306,7 @@ func (r *Rectangle) ComputeArea() {
 }
 ```
 
-### Circular Structure with Parent
+### 带父指针的循环结构
 
 ```go
 type TreeNode struct {
@@ -319,7 +316,7 @@ type TreeNode struct {
 }
 ```
 
-### Mixed Serialization Needs
+### 混合序列化需求
 
 ```go
 type Session struct {
@@ -333,6 +330,6 @@ type Session struct {
 
 ## 相关主题
 
-- [References](references.md)
-- [Basic Serialization](basic-serialization.md)
-- [Schema Evolution](schema-evolution.md)
+- [引用](references.md)
+- [基础序列化](basic-serialization.md)
+- [Schema 演进](schema-evolution.md)
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/java/field-configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/java/field-configuration.md
index 0182eeb129..2f21ab6c69 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/java/field-configuration.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/java/field-configuration.md
@@ -19,31 +19,28 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本页介绍字段级序列化配置,包括字段 ID、可空控制、引用跟踪、忽略字段与动态类型控制等。
-> 建议在跨语言和兼容模式场景中优先显式配置字段 ID,并在需要时开启 ref/nullable 以保证行为一致。
-
 本页说明如何在 Java 中配置序列化字段级元信息。
 
 ## 概述
 
 Apache ForyTM 通过注解提供字段级配置:
 
-- **`@ForyField`**: Configure field metadata (id, nullable, ref, dynamic)
-- **`@Ignore`**: Exclude fields from serialization
-- **Integer type annotations**: Control integer encoding (varint, fixed, tagged, unsigned)
+- **`@ForyField`**:配置字段元信息(id、nullable、ref、dynamic)
+- **`@Ignore`**:将字段排除在序列化之外
+- **整数类型注解**:控制整数编码方式(varint、fixed、tagged、unsigned)
 
-This enables:
+这些能力可用于:
 
-- **Tag IDs**: Assign compact numeric IDs to reduce struct field meta size overhead for compatible mode
-- **Nullability**: Control whether fields can be null
-- **Reference Tracking**: Enable reference tracking for shared objects
-- **Field Skipping**: Exclude fields from serialization
-- **Encoding Control**: Specify how integers are encoded
-- **Polymorphism Control**: Control type info writing for struct fields
+- **Tag ID**:为兼容模式分配紧凑数值 ID,降低 struct 字段元信息开销
+- **可空控制**:声明字段是否允许为 null
+- **引用跟踪**:为共享对象开启引用跟踪
+- **字段跳过**:显式排除不需要序列化的字段
+- **编码控制**:指定整数序列化编码策略
+- **多态控制**:控制 struct 字段是否写入运行时类型信息
 
 ## 基本语法
 
-Use annotations on fields:
+在字段上使用注解:
 
 ```java
 import org.apache.fory.annotation.ForyField;
@@ -60,9 +57,9 @@ public class Person {
 }
 ```
 
-## The `@ForyField` Annotation
+## `@ForyField` 注解
 
-Use `@ForyField` to configure field-level metadata:
+使用 `@ForyField` 配置字段级元信息:
 
 ```java
 public class User {
@@ -85,16 +82,16 @@ public class User {
 
 ### 参数
 
-| Parameter  | Type      | Default | Description                            |
+| 参数       | 类型      | 默认值  | 说明                                   |
 | ---------- | --------- | ------- | -------------------------------------- |
-| `id`       | `int`     | `-1`    | Field tag ID (-1 = use field name)     |
-| `nullable` | `boolean` | `false` | Whether the field can be null          |
-| `ref`      | `boolean` | `false` | Enable reference tracking              |
-| `dynamic`  | `Dynamic` | `AUTO`  | Control polymorphism for struct fields |
+| `id`       | `int`     | `-1`    | 字段 tag ID(`-1` 表示使用字段名编码) |
+| `nullable` | `boolean` | `false` | 字段是否可为 null                      |
+| `ref`      | `boolean` | `false` | 是否开启引用跟踪                       |
+| `dynamic`  | `Dynamic` | `AUTO`  | 控制 struct 字段多态行为               |
 
-## Field ID (`id`)
+## 字段 ID(`id`)
 
-Assigns a numeric ID to a field to minimize struct field meta size overhead for compatible mode:
+通过为字段分配数值 ID,可降低兼容模式下 struct 字段元信息开销:
 
 ```java
 public class User {
@@ -109,21 +106,21 @@ public class User {
 }
 ```
 
-**Benefits**:
+**收益:**
 
-- Smaller serialized size (numeric IDs vs field names in metadata)
-- Reduced struct field meta overhead
-- Allows renaming fields without breaking binary compatibility
+- 序列化体积更小(元信息里用数值 ID 而不是字段名)
+- struct 字段元信息开销更低
+- 可在不破坏二进制兼容性的前提下重命名字段
 
-**Recommendation**: It is recommended to configure field IDs for compatible mode since it reduces serialization cost.
+**建议:** 兼容模式下建议配置字段 ID,以降低序列化成本。
 
-**Notes**:
+**注意:**
 
-- IDs must be unique within a class
-- IDs must be >= 0 (use -1 to use field name encoding, which is the default)
-- If not specified, field name is used in metadata (larger overhead)
+- 同一个类内 ID 必须唯一
+- ID 必须 `>= 0`(`-1` 表示使用字段名编码,也是默认行为)
+- 未指定时,元信息将写字段名(开销更大)
 
-**Without field IDs** (field names used in metadata):
+**不配置字段 ID**(元信息使用字段名)示例:
 
 ```java
 public class User {
@@ -132,39 +129,39 @@ public class User {
 }
 ```
 
-## Nullable Fields (`nullable`)
+## 可空字段(`nullable`)
 
-Use `nullable = true` for fields that can be `null`:
+对可能为 `null` 的字段使用 `nullable = true`:
 
 ```java
 public class Record {
-    // Nullable string field
+    // 可空字符串字段
     @ForyField(id = 0, nullable = true)
     private String optionalName;
 
-    // Nullable Integer field (boxed type)
+    // 可空 Integer 字段(装箱类型)
     @ForyField(id = 1, nullable = true)
     private Integer optionalCount;
 
-    // Non-nullable field (default)
+    // 非可空字段(默认)
     @ForyField(id = 2)
     private String requiredName;
 }
 ```
 
-**Notes**:
+**注意:**
 
-- Default is `nullable = false` (non-nullable)
-- When `nullable = false`, Fory skips writing the null flag (saves 1 byte)
-- Boxed types (`Integer`, `Long`, etc.) that can be null should use `nullable = true`
+- 默认是 `nullable = false`(不可空)
+- `nullable = false` 时,Fory 会省略 null 标记写入(节省 1 字节)
+- 可能为 null 的装箱类型(`Integer`、`Long` 等)建议显式设为 `nullable = true`
 
-## Reference Tracking (`ref`)
+## 引用跟踪(`ref`)
 
-Enable reference tracking for fields that may be shared or circular:
+对于可能共享或循环引用的字段,启用引用跟踪:
 
 ```java
 public class RefOuter {
-    // Both fields may point to the same inner object
+    // 两个字段可能指向同一个内部对象
     @ForyField(id = 0, ref = true, nullable = true)
     private RefInner inner1;
 
@@ -176,56 +173,56 @@ public class CircularRef {
     @ForyField(id = 0)
     private String name;
 
-    // Self-referencing field for circular references
+    // 自引用字段,用于循环引用
     @ForyField(id = 1, ref = true, nullable = true)
     private CircularRef selfRef;
 }
 ```
 
-**Use Cases**:
+**适用场景:**
 
-- Enable for fields that may be circular or shared
-- When the same object is referenced from multiple fields
+- 字段可能形成循环或共享关系
+- 同一对象被多个字段引用
 
-**Notes**:
+**注意:**
 
-- Default is `ref = false` (no reference tracking)
-- When `ref = false`, avoids IdentityMap overhead and skips ref tracking flag
-- Reference tracking only takes effect when global ref tracking is enabled
+- 默认是 `ref = false`(不跟踪引用)
+- `ref = false` 可避免 IdentityMap 开销,也会跳过引用跟踪标记
+- 仅在全局启用 ref tracking 时,字段级 ref 才生效
 
-## Dynamic (Polymorphism Control)
+## Dynamic(多态控制)
 
-Controls polymorphism behavior for struct fields in cross-language serialization:
+控制跨语言序列化时 struct 字段的多态行为:
 
 ```java
 public class Container {
-    // AUTO: Interface/abstract types are dynamic, concrete types are not
+    // AUTO:接口/抽象类型动态,具体类型非动态
     @ForyField(id = 0, dynamic = ForyField.Dynamic.AUTO)
-    private Animal animal;  // Interface - type info written
+    private Animal animal;  // 接口类型,写入类型信息
 
-    // FALSE: No type info written, uses declared type's serializer
+    // FALSE:不写类型信息,直接按声明类型序列化
     @ForyField(id = 1, dynamic = ForyField.Dynamic.FALSE)
-    private Dog dog;  // Concrete - no type info
+    private Dog dog;  // 具体类型,不写类型信息
 
-    // TRUE: Type info written to support runtime subtypes
+    // TRUE:写类型信息,支持运行时子类型
     @ForyField(id = 2, dynamic = ForyField.Dynamic.TRUE)
-    private Object data;  // Force polymorphic
+    private Object data;  // 强制多态
 }
 ```
 
-**Options**:
+**取值:**
 
-| Value   | Description                                                         |
-| ------- | ------------------------------------------------------------------- |
-| `AUTO`  | Auto-detect: interface/abstract are dynamic, concrete types are not |
-| `FALSE` | No type info written, uses declared type's serializer directly      |
-| `TRUE`  | Type info written to support subtypes at runtime                    |
+| 值      | 说明                                        |
+| ------- | ------------------------------------------- |
+| `AUTO`  | 自动判断:接口/抽象类型动态,具体类型非动态 |
+| `FALSE` | 不写类型信息,直接使用声明类型的序列化器    |
+| `TRUE`  | 写入类型信息,以支持运行时子类型            |
 
-## Skipping Fields
+## 跳过字段
 
-### Using `@Ignore`
+### 使用 `@Ignore`
 
-Exclude fields from serialization:
+将字段排除在序列化之外:
 
 ```java
 import org.apache.fory.annotation.Ignore;
@@ -238,69 +235,69 @@ public class User {
     private String name;
 
     @Ignore
-    private String password;  // Not serialized
+    private String password;  // 不序列化
 
     @Ignore
-    private Object internalState;  // Not serialized
+    private Object internalState;  // 不序列化
 }
 ```
 
-### Using `transient`
+### 使用 `transient`
 
-Java's `transient` keyword also excludes fields:
+Java 的 `transient` 关键字同样会排除字段:
 
 ```java
 public class User {
     @ForyField(id = 0)
     private long id;
 
-    private transient String password;  // Not serialized
-    private transient Object cache;     // Not serialized
+    private transient String password;  // 不序列化
+    private transient Object cache;     // 不序列化
 }
 ```
 
-## Integer Type Annotations
+## 整数类型注解
 
-Fory provides annotations to control integer encoding for cross-language compatibility.
+Fory 提供整数注解,用于在跨语言场景中控制编码方式。
 
-### Signed 32-bit Integer (`@Int32Type`)
+### 有符号 32 位整数(`@Int32Type`)
 
 ```java
 import org.apache.fory.annotation.Int32Type;
 
 public class MyStruct {
-    // Variable-length encoding (default) - compact for small values
+    // 变长编码(默认),小值更紧凑
     @Int32Type(compress = true)
     private int compactId;
 
-    // Fixed 4-byte encoding - consistent size
+    // 固定 4 字节编码,长度稳定
     @Int32Type(compress = false)
     private int fixedId;
 }
 ```
 
-### Signed 64-bit Integer (`@Int64Type`)
+### 有符号 64 位整数(`@Int64Type`)
 
 ```java
 import org.apache.fory.annotation.Int64Type;
 import org.apache.fory.config.LongEncoding;
 
 public class MyStruct {
-    // Variable-length encoding (default)
+    // 变长编码(默认)
     @Int64Type(encoding = LongEncoding.VARINT)
     private long compactId;
 
-    // Fixed 8-byte encoding
+    // 固定 8 字节编码
     @Int64Type(encoding = LongEncoding.FIXED)
     private long fixedTimestamp;
 
-    // Tagged encoding (4 bytes for small values, 9 bytes otherwise)
+    // tagged 编码(小值 4 字节,否则 9 字节)
     @Int64Type(encoding = LongEncoding.TAGGED)
     private long taggedValue;
 }
 ```
 
-### Unsigned Integers
+### 无符号整数
 
 ```java
 import org.apache.fory.annotation.Uint8Type;
@@ -310,23 +307,23 @@ import org.apache.fory.annotation.Uint64Type;
 import org.apache.fory.config.LongEncoding;
 
 public class UnsignedStruct {
-    // Unsigned 8-bit [0, 255]
+    // 无符号 8 位 [0, 255]
     @Uint8Type
     private short flags;
 
-    // Unsigned 16-bit [0, 65535]
+    // 无符号 16 位 [0, 65535]
     @Uint16Type
     private int port;
 
-    // Unsigned 32-bit with varint encoding (default)
+    // 无符号 32 位,varint 编码(默认)
     @Uint32Type(compress = true)
     private long compactCount;
 
-    // Unsigned 32-bit with fixed encoding
+    // 无符号 32 位,fixed 编码
     @Uint32Type(compress = false)
     private long fixedCount;
 
-    // Unsigned 64-bit with various encodings
+    // 无符号 64 位,多种编码
     @Uint64Type(encoding = LongEncoding.VARINT)
     private long varintU64;
 
@@ -338,31 +335,31 @@ public class UnsignedStruct {
 }
 ```
 
-### Encoding Summary
+### 编码汇总
 
-| Annotation                       | Type ID | Encoding | Size         |
-| -------------------------------- | ------- | -------- | ------------ |
-| `@Int32Type(compress = true)`    | 5       | varint   | 1-5 bytes    |
-| `@Int32Type(compress = false)`   | 4       | fixed    | 4 bytes      |
-| `@Int64Type(encoding = VARINT)`  | 7       | varint   | 1-10 bytes   |
-| `@Int64Type(encoding = FIXED)`   | 6       | fixed    | 8 bytes      |
-| `@Int64Type(encoding = TAGGED)`  | 8       | tagged   | 4 or 9 bytes |
-| `@Uint8Type`                     | 9       | fixed    | 1 byte       |
-| `@Uint16Type`                    | 10      | fixed    | 2 bytes      |
-| `@Uint32Type(compress = true)`   | 12      | varint   | 1-5 bytes    |
-| `@Uint32Type(compress = false)`  | 11      | fixed    | 4 bytes      |
-| `@Uint64Type(encoding = VARINT)` | 14      | varint   | 1-10 bytes   |
-| `@Uint64Type(encoding = FIXED)`  | 13      | fixed    | 8 bytes      |
-| `@Uint64Type(encoding = TAGGED)` | 15      | tagged   | 4 or 9 bytes |
+| 注解                             | Type ID | 编码   | 大小        |
+| -------------------------------- | ------- | ------ | ----------- |
+| `@Int32Type(compress = true)`    | 5       | varint | 1-5 字节    |
+| `@Int32Type(compress = false)`   | 4       | fixed  | 4 字节      |
+| `@Int64Type(encoding = VARINT)`  | 7       | varint | 1-10 字节   |
+| `@Int64Type(encoding = FIXED)`   | 6       | fixed  | 8 字节      |
+| `@Int64Type(encoding = TAGGED)`  | 8       | tagged | 4 或 9 字节 |
+| `@Uint8Type`                     | 9       | fixed  | 1 字节      |
+| `@Uint16Type`                    | 10      | fixed  | 2 字节      |
+| `@Uint32Type(compress = true)`   | 12      | varint | 1-5 字节    |
+| `@Uint32Type(compress = false)`  | 11      | fixed  | 4 字节      |
+| `@Uint64Type(encoding = VARINT)` | 14      | varint | 1-10 字节   |
+| `@Uint64Type(encoding = FIXED)`  | 13      | fixed  | 8 字节      |
+| `@Uint64Type(encoding = TAGGED)` | 15      | tagged | 4 或 9 字节 |
 
-**When to Use**:
+**何时使用:**
 
-- `varint`: Best for values that are often small (default)
-- `fixed`: Best for values that use full range (e.g., timestamps, hashes)
-- `tagged`: Good balance between size and performance
-- Unsigned types: For cross-language compatibility with Rust, Go, C++
+- `varint`:数值通常较小时最优(默认)
+- `fixed`:数值分布接近全范围时更稳定(如时间戳、哈希)
+- `tagged`:在体积与性能间平衡较好
+- 无符号类型:适合与 Rust/Go/C++ 等语言进行无符号整数互操作
 
-## Complete Example
+## 完整示例
 
 ```java
 import org.apache.fory.Fory;
@@ -377,18 +374,18 @@ import java.util.Map;
 import java.util.Set;
 
 public class Document {
-    // Fields with tag IDs (recommended for compatible mode)
+    // 带 tag ID 的字段(兼容模式推荐)
     @ForyField(id = 0)
     private String title;
 
     @ForyField(id = 1)
     private int version;
 
-    // Nullable field
+    // 可空字段
     @ForyField(id = 2, nullable = true)
     private String description;
 
-    // Collection fields
+    // 集合字段
     @ForyField(id = 3)
     private List<String> tags;
 
@@ -398,24 +395,24 @@ public class Document {
     @ForyField(id = 5)
     private Set<String> categories;
 
-    // Integer with different encodings
+    // 不同编码方式的整数
     @ForyField(id = 6)
     @Uint64Type(encoding = LongEncoding.VARINT)
-    private long viewCount;  // varint encoding
+    private long viewCount;  // varint 编码
 
     @ForyField(id = 7)
     @Uint64Type(encoding = LongEncoding.FIXED)
-    private long fileSize;   // fixed encoding
+    private long fileSize;   // fixed 编码
 
     @ForyField(id = 8)
     @Uint64Type(encoding = LongEncoding.TAGGED)
-    private long checksum;   // tagged encoding
+    private long checksum;   // tagged 编码
 
-    // Reference-tracked field for shared/circular references
+    // 共享/循环引用字段
     @ForyField(id = 9, ref = true, nullable = true)
     private Document parent;
 
-    // Ignored field (not serialized)
+    // 忽略字段(不序列化)
     private transient Object cache;
 
     // Getters and setters...
@@ -446,13 +443,13 @@ public class Main {
 }
 ```
 
-## Cross-Language Compatibility
+## 跨语言兼容
 
-When serializing data to be read by other languages (Python, Rust, C++, Go), use field IDs and matching type annotations:
+当数据需要被其他语言(Python、Rust、C++、Go)读取时,建议使用字段 ID 并配套类型注解:
 
 ```java
 public class CrossLangData {
-    // Use field IDs for cross-language compatibility
+    // 使用字段 ID 保证跨语言兼容
     @ForyField(id = 0)
     @Int32Type(compress = true)
     private int intVar;
@@ -470,9 +467,9 @@ public class CrossLangData {
 }
 ```
 
-## Schema Evolution
+## Schema 演进
 
-Compatible mode supports schema evolution. It is recommended to configure field IDs to reduce serialization cost:
+兼容模式支持 Schema 演进。建议配置字段 ID 以降低序列化成本:
 
 ```java
 // Version 1
@@ -497,9 +494,9 @@ public class DataV2 {
 }
 ```
 
-Data serialized with V1 can be deserialized with V2 (new field will be `null`).
+V1 写入的数据可由 V2 读取(新增字段会是 `null`)。
 
-Alternatively, field IDs can be omitted (field names will be used in metadata with larger overhead):
+也可以不配置字段 ID(元信息会使用字段名,开销更大):
 
 ```java
 public class Data {
@@ -508,23 +505,23 @@ public class Data {
 }
 ```
 
-## Native Mode vs Xlang Mode
+## Native 模式与 Xlang 模式
 
-Field configuration behaves differently depending on the serialization mode:
+字段配置在不同序列化模式下的默认行为不同。
 
-### Native Mode (Java-only)
+### Native 模式(仅 Java)
 
-Native mode has **relaxed default values** for maximum compatibility:
+Native 模式以最大兼容性为目标,默认值更宽松:
 
-- **Nullable**: Reference types are nullable by default
-- **Ref tracking**: Enabled by default for object references (except `String`, boxed types, and time types)
-- **Polymorphism**: All non-final classes support polymorphism by default
+- **Nullable**:引用类型默认可空
+- **Ref tracking**:对象引用默认开启(`String`、装箱类型、时间类型除外)
+- **Polymorphism**:所有非 final 类默认支持多态
 
-In native mode, you typically **don't need to configure field annotations** unless you want to:
+在 Native 模式下,通常**不需要额外字段注解**,除非你希望:
 
-- Reduce serialized size by using field IDs
-- Optimize performance by disabling unnecessary ref tracking
-- Control integer encoding for specific fields
+- 用字段 ID 降低体积
+- 关闭不必要的 ref 跟踪以优化性能
+- 对特定字段精确控制整数编码
 
 ```java
 // Native mode: works without any annotations
@@ -535,20 +532,20 @@ public class User {
 }
 ```
 
-### Xlang Mode (Cross-language)
+### Xlang 模式(跨语言)
 
-Xlang mode has **stricter default values** due to type system differences between languages:
+由于不同语言类型系统差异,Xlang 模式默认值更严格:
 
-- **Nullable**: Fields are non-nullable by default (`nullable = false`)
-- **Ref tracking**: Disabled by default (`ref = false`)
-- **Polymorphism**: Concrete types are non-polymorphic by default
+- **Nullable**:字段默认不可空(`nullable = false`)
+- **Ref tracking**:默认关闭(`ref = false`)
+- **Polymorphism**:具体类型默认不写多态类型信息
 
-In xlang mode, you **need to configure fields** when:
+在 Xlang 模式下,以下情况需要显式配置:
 
-- A field can be null (use `nullable = true`)
-- A field needs reference tracking for shared/circular objects (use `ref = true`)
-- Integer types need specific encoding for cross-language compatibility
-- You want to reduce metadata size (use field IDs)
+- 字段可能为 null(使用 `nullable = true`)
+- 字段需要共享/循环引用语义(使用 `ref = true`)
+- 整数类型需要为跨语言兼容指定编码
+- 你希望减少元信息大小(使用字段 ID)
 
 ```java
 // Xlang mode: explicit configuration required for nullable/ref fields
@@ -567,42 +564,42 @@ public class User {
 }
 ```
 
-### Default Values Summary
-
-| Option     | Native Mode Default      | Xlang Mode Default                |
-| ---------- | ------------------------ | --------------------------------- |
-| `nullable` | `true` (reference types) | `false`                           |
-| `ref`      | `true`                   | `false`                           |
-| `dynamic`  | `true` (non-final)       | `AUTO` (concrete types are final) |
-
-## Best Practices
-
-1. **Configure field IDs**: Recommended for compatible mode to reduce serialization cost
-2. **Use `nullable = true` for nullable fields**: Required for fields that can be null
-3. **Enable ref tracking for shared objects**: Use `ref = true` when objects are shared or circular
-4. **Use `@Ignore` or `transient` for sensitive data**: Passwords, tokens, internal state
-5. **Choose appropriate encoding**: `varint` for small values, `fixed` for full-range values
-6. **Keep IDs stable**: Once assigned, don't change field IDs
-7. **Configure unsigned types for cross-language compatibility**: When interoperating with unsigned numbers in Rust, Go, C++
-
-## Annotations Reference
-
-| Annotation                    | Description                            |
-| ----------------------------- | -------------------------------------- |
-| `@ForyField(id = N)`          | Field tag ID to reduce metadata size   |
-| `@ForyField(nullable = true)` | Mark field as nullable                 |
-| `@ForyField(ref = true)`      | Enable reference tracking              |
-| `@ForyField(dynamic = ...)`   | Control polymorphism for struct fields |
-| `@Ignore`                     | Exclude field from serialization       |
-| `@Int32Type(compress = ...)`  | 32-bit signed integer encoding         |
-| `@Int64Type(encoding = ...)`  | 64-bit signed integer encoding         |
-| `@Uint8Type`                  | Unsigned 8-bit integer                 |
-| `@Uint16Type`                 | Unsigned 16-bit integer                |
-| `@Uint32Type(compress = ...)` | Unsigned 32-bit integer encoding       |
-| `@Uint64Type(encoding = ...)` | Unsigned 64-bit integer encoding       |
-
-## Related Topics
-
-- [Basic Serialization](basic_serialization) - Getting started with Fory serialization
-- [Schema Evolution](schema_evolution) - Compatible mode and schema evolution
-- [Cross-Language](cross_language) - Interoperability with Python, Rust, C++, Go
+### 默认值汇总
+
+| 选项       | Native 模式默认值     | Xlang 模式默认值                   |
+| ---------- | --------------------- | ---------------------------------- |
+| `nullable` | `true`(引用类型)    | `false`                            |
+| `ref`      | `true`                | `false`                            |
+| `dynamic`  | `true`(非 final 类) | `AUTO`(具体类型通常按非动态处理) |
+
+## 最佳实践
+
+1. **配置字段 ID**:兼容模式下建议配置,降低序列化成本
+2. **可空字段使用 `nullable = true`**:对可为 null 的字段必须显式声明
+3. **共享对象开启 `ref`**:对象共享或循环时使用 `ref = true`
+4. **敏感字段用 `@Ignore` 或 `transient`**:如密码、令牌、内部状态
+5. **选择合适编码**:小值用 `varint`,全范围值用 `fixed`
+6. **保持 ID 稳定**:一旦分配,不要随意改动字段 ID
+7. **跨语言场景显式无符号类型**:与 Rust、Go、C++ 互操作时尤其重要
+
+## 注解速查
+
+| 注解                          | 说明                            |
+| ----------------------------- | ------------------------------- |
+| `@ForyField(id = N)`          | 配置字段 tag ID,减少元信息开销 |
+| `@ForyField(nullable = true)` | 将字段标记为可空                |
+| `@ForyField(ref = true)`      | 为字段启用引用跟踪              |
+| `@ForyField(dynamic = ...)`   | 控制 struct 字段多态行为        |
+| `@Ignore`                     | 将字段排除在序列化之外          |
+| `@Int32Type(compress = ...)`  | 32 位有符号整数编码             |
+| `@Int64Type(encoding = ...)`  | 64 位有符号整数编码             |
+| `@Uint8Type`                  | 8 位无符号整数                  |
+| `@Uint16Type`                 | 16 位无符号整数                 |
+| `@Uint32Type(compress = ...)` | 32 位无符号整数编码             |
+| `@Uint64Type(encoding = ...)` | 64 位无符号整数编码             |
+
+## 相关主题
+
+- [基础序列化](basic_serialization) - 快速上手 Fory 序列化
+- [Schema 演进](schema_evolution) - 兼容模式与 schema 演进
+- [跨语言](cross_language) - 与 Python、Rust、C++、Go 互操作
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/python/field-configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/python/field-configuration.md
index fb489d283b..65d7b04281 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/python/field-configuration.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/guide/python/field-configuration.md
@@ -19,31 +19,28 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本页介绍字段级序列化配置,包括字段 ID、可空控制、引用跟踪、忽略字段与动态类型控制等。
-> 建议在跨语言和兼容模式场景中优先显式配置字段 ID,并在需要时开启 ref/nullable 以保证行为一致。
-
 本页说明如何在 Python 中配置序列化字段级元信息。
 
 ## 概述
 
-Apache ForyTM 通过以下方式提供字段级配置:
+Apache ForyTM 通过以下机制提供字段级配置:
 
-- **`pyfory.field()`**: Configure field metadata (id, nullable, ref, ignore, dynamic)
-- **Type annotations**: Control integer encoding (varint, fixed, tagged)
-- **`Optional[T]`**: Mark fields as nullable
+- **`pyfory.field()`**:配置字段元信息(id、nullable、ref、ignore、dynamic)
+- **类型注解**:控制整数编码(varint、fixed、tagged)
+- **`Optional[T]`**:标记字段可空
 
-This enables:
+这些能力可用于:
 
-- **Tag IDs**: Assign compact numeric IDs to reduce struct field meta size overhead
-- **Nullability**: Control whether fields can be null
-- **Reference Tracking**: Enable reference tracking for shared objects
-- **Field Skipping**: Exclude fields from serialization
-- **Encoding Control**: Specify how integers are encoded (varint, fixed, tagged)
-- **Polymorphism**: Control whether type info is written for struct fields
+- **Tag ID**:分配紧凑数值 ID,降低 struct 字段元信息开销
+- **可空控制**:声明字段是否可为 null/None
+- **引用跟踪**:为共享对象启用引用跟踪
+- **字段跳过**:从序列化中排除字段
+- **编码控制**:指定整数编码方式(varint、fixed、tagged)
+- **多态控制**:控制 struct 字段是否写入类型信息
 
 ## 基本语法
 
-Use `@dataclass` decorator with type annotations and `pyfory.field()`:
+结合 `@dataclass`、类型注解与 `pyfory.field()`:
 
 ```python
 from dataclasses import dataclass
@@ -59,7 +56,7 @@ class Person:
 
 ## `pyfory.field()` 函数
 
-Use `pyfory.field()` to configure field-level metadata:
+使用 `pyfory.field()` 配置字段级元信息:
 
 ```python
 @dataclass
@@ -73,19 +70,19 @@ class User:
 
 ### 参数
 
-| Parameter         | Type     | Default   | Description                          |
-| ----------------- | -------- | --------- | ------------------------------------ |
-| `id`              | `int`    | `-1`      | Field tag ID (-1 = use field name)   |
-| `nullable`        | `bool`   | `False`   | Whether the field can be null        |
-| `ref`             | `bool`   | `False`   | Enable reference tracking            |
-| `ignore`          | `bool`   | `False`   | Exclude field from serialization     |
-| `dynamic`         | `bool`   | `None`    | Control whether type info is written |
-| `default`         | Any      | `MISSING` | Default value for the field          |
-| `default_factory` | Callable | `MISSING` | Factory function for default value   |
+| 参数              | 类型     | 默认值    | 说明                               |
+| ----------------- | -------- | --------- | ---------------------------------- |
+| `id`              | `int`    | `-1`      | 字段 tag ID(`-1` 表示使用字段名) |
+| `nullable`        | `bool`   | `False`   | 字段是否可为 null/None             |
+| `ref`             | `bool`   | `False`   | 是否启用引用跟踪                   |
+| `ignore`          | `bool`   | `False`   | 是否从序列化中排除                 |
+| `dynamic`         | `bool`   | `None`    | 控制是否写入类型信息               |
+| `default`         | Any      | `MISSING` | 字段默认值                         |
+| `default_factory` | Callable | `MISSING` | 默认值工厂函数                     |
 
-## Field ID (`id`)
+## 字段 ID(`id`)
 
-Assigns a numeric ID to a field to minimize struct field meta size overhead:
+通过给字段分配数值 ID,可减少 struct 字段元信息开销:
 
 ```python
 @dataclass
@@ -95,21 +92,21 @@ class User:
     age: pyfory.int32 = pyfory.field(id=2, default=0)
 ```
 
-**Benefits**:
+**收益:**
 
-- Smaller serialized size (numeric IDs vs field names in metadata)
-- Reduced struct field meta overhead
-- Allows renaming fields without breaking binary compatibility
+- 序列化体积更小(元信息中数值 ID 替代字段名)
+- struct 字段元信息开销更低
+- 字段重命名时可保持二进制兼容
 
-**Recommendation**: It is recommended to configure field IDs for compatible mode since it reduces serialization cost.
+**建议:** 兼容模式下建议配置字段 ID,以降低序列化成本。
 
-**Notes**:
+**注意:**
 
-- IDs must be unique within a class
-- IDs must be >= 0 (use -1 to use field name encoding, which is the default)
-- If not specified, field name is used in metadata (larger overhead)
+- 同一类内 ID 必须唯一
+- ID 必须 `>= 0`(`-1` 表示使用字段名编码,默认行为)
+- 未指定时会使用字段名写入元信息(开销更大)
 
-**Without field IDs** (field names used in metadata):
+**不配置字段 ID**(元信息使用字段名)示例:
 
 ```python
 @dataclass
@@ -118,35 +115,35 @@ class User:
     name: str = ""
 ```
 
-## Nullable Fields (`nullable`)
+## 可空字段(`nullable`)
 
-Use `nullable=True` for fields that can be `None`:
+对可能为 `None` 的字段使用 `nullable=True`:
 
 ```python
 from typing import Optional
 
 @dataclass
 class Record:
-    # Nullable string field
+    # 可空字符串字段
     optional_name: Optional[str] = pyfory.field(id=0, nullable=True, default=None)
 
-    # Nullable integer field
+    # 可空整数字段
     optional_count: Optional[pyfory.int32] = pyfory.field(id=1, nullable=True, default=None)
 ```
 
-**Notes**:
+**注意:**
 
-- `Optional[T]` fields must have `nullable=True`
-- Non-optional fields default to `nullable=False`
+- `Optional[T]` 字段应配合 `nullable=True`
+- 非 Optional 字段默认 `nullable=False`
 
-## Reference Tracking (`ref`)
+## 引用跟踪(`ref`)
 
-Enable reference tracking for fields that may be shared or circular:
+对于可能共享或循环引用的字段启用引用跟踪:
 
 ```python
 @dataclass
 class RefOuter:
-    # Both fields may point to the same inner object
+    # 两个字段可能指向同一个内部对象
     inner1: Optional[RefInner] = pyfory.field(id=0, ref=True, nullable=True, default=None)
     inner2: Optional[RefInner] = pyfory.field(id=1, ref=True, nullable=True, default=None)
 
@@ -154,37 +151,37 @@ class RefOuter:
 @dataclass
 class CircularRef:
     name: str = pyfory.field(id=0, default="")
-    # Self-referencing field for circular references
+    # 自引用字段,用于循环引用
     self_ref: Optional["CircularRef"] = pyfory.field(id=1, ref=True, nullable=True, default=None)
 ```
 
-**Use Cases**:
+**适用场景:**
 
-- Enable for fields that may be circular or shared
-- When the same object is referenced from multiple fields
+- 字段可能形成循环或共享关系
+- 同一对象被多个字段引用
 
-**Notes**:
+**注意:**
 
-- Reference tracking only takes effect when `Fory(ref=True)` is set globally
-- Field-level `ref=True` AND global `ref=True` must both be enabled
+- 只有全局设置 `Fory(ref=True)` 时,引用跟踪才生效
+- 字段级 `ref=True` 与全局 `ref=True` 必须同时开启
 
-## Skipping Fields (`ignore`)
+## 跳过字段(`ignore`)
 
-Exclude fields from serialization:
+将字段排除在序列化之外:
 
 ```python
 @dataclass
 class User:
     id: pyfory.int64 = pyfory.field(id=0, default=0)
     name: str = pyfory.field(id=1, default="")
-    # Not serialized
+    # 不序列化
     _cache: dict = pyfory.field(ignore=True, default_factory=dict)
     _internal_state: str = pyfory.field(ignore=True, default="")
 ```
 
-## Dynamic Fields (`dynamic`)
+## Dynamic 字段(`dynamic`)
 
-Control whether type information is written for struct fields. This is essential for polymorphism support:
+控制 struct 字段是否写入类型信息,这是支持多态的关键:
 
 ```python
 from abc import ABC, abstractmethod
@@ -203,36 +200,36 @@ class Circle(Shape):
 
 @dataclass
 class Container:
-    # Abstract class: dynamic is always True (type info written)
+    # 抽象类:dynamic 总为 True(写类型信息)
     shape: Shape = pyfory.field(id=0)
 
-    # Force type info for concrete type (support runtime subtypes)
+    # 对具体类型强制写类型信息(支持运行时子类)
     circle: Circle = pyfory.field(id=1, dynamic=True)
 
-    # Skip type info for concrete type (use declared type directly)
+    # 对具体类型跳过类型信息(按声明类型处理)
     fixed_circle: Circle = pyfory.field(id=2, dynamic=False)
 ```
 
-**Default Behavior**:
+**默认行为:**
 
-| Mode        | Abstract Class | Concrete Object Types | Numeric/str/time Types |
-| ----------- | -------------- | --------------------- | ---------------------- |
-| Native mode | `True`         | `True`                | `False`                |
-| Xlang mode  | `True`         | `False`               | `False`                |
+| 模式        | 抽象类 | 具体对象类型 | 数值/str/time 类型 |
+| ----------- | ------ | ------------ | ------------------ |
+| Native 模式 | `True` | `True`       | `False`            |
+| Xlang 模式  | `True` | `False`      | `False`            |
 
-**Notes**:
+**注意:**
 
-- **Abstract classes**: `dynamic` is always `True` (type info must be written)
-- **Native mode**: `dynamic` defaults to `True` for object types, `False` for numeric/str/time types
-- **Xlang mode**: `dynamic` defaults to `False` for concrete types
-- Use `dynamic=True` when a concrete field may hold subclass instances
-- Use `dynamic=False` for performance optimization when type is known
+- **抽象类**:`dynamic` 始终为 `True`(必须写类型信息)
+- **Native 模式**:对象类型默认 `dynamic=True`;数值/str/time 默认 `False`
+- **Xlang 模式**:具体类型默认 `dynamic=False`
+- 当具体字段可能持有子类实例时,使用 `dynamic=True`
+- 当类型固定且追求性能时,可使用 `dynamic=False`
 
-## Integer Type Annotations
+## 整数类型注解
 
-Fory provides type annotations to control integer encoding:
+Fory 提供类型注解来控制整数编码。
 
-### Signed Integers
+### 有符号整数
 
 ```python
 @dataclass
@@ -243,7 +240,7 @@ class SignedIntegers:
     long_val: pyfory.int64 = 0     # 64-bit signed (varint encoding)
 ```
 
-### Unsigned Integers
+### 无符号整数
 
 ```python
 @dataclass
@@ -264,7 +261,7 @@ class UnsignedIntegers:
     u64_tagged: pyfory.tagged_uint64 = 0  # 64-bit unsigned (tagged)
 ```
 
-### Floating Point
+### 浮点数
 
 ```python
 @dataclass
@@ -273,31 +270,31 @@ class FloatingPoint:
     double_val: pyfory.float64 = 0.0  # 64-bit double
 ```
 
-### Encoding Summary
+### 编码汇总
 
-| Type                   | Encoding | Size       |
-| ---------------------- | -------- | ---------- |
-| `pyfory.int8`          | fixed    | 1 byte     |
-| `pyfory.int16`         | fixed    | 2 bytes    |
-| `pyfory.int32`         | varint   | 1-5 bytes  |
-| `pyfory.int64`         | varint   | 1-10 bytes |
-| `pyfory.uint8`         | fixed    | 1 byte     |
-| `pyfory.uint16`        | fixed    | 2 bytes    |
-| `pyfory.uint32`        | varint   | 1-5 bytes  |
-| `pyfory.uint64`        | varint   | 1-10 bytes |
-| `pyfory.fixed_uint32`  | fixed    | 4 bytes    |
-| `pyfory.fixed_uint64`  | fixed    | 8 bytes    |
-| `pyfory.tagged_uint64` | tagged   | 1-9 bytes  |
-| `pyfory.float32`       | fixed    | 4 bytes    |
-| `pyfory.float64`       | fixed    | 8 bytes    |
+| 类型                   | 编码   | 大小      |
+| ---------------------- | ------ | --------- |
+| `pyfory.int8`          | fixed  | 1 字节    |
+| `pyfory.int16`         | fixed  | 2 字节    |
+| `pyfory.int32`         | varint | 1-5 字节  |
+| `pyfory.int64`         | varint | 1-10 字节 |
+| `pyfory.uint8`         | fixed  | 1 字节    |
+| `pyfory.uint16`        | fixed  | 2 字节    |
+| `pyfory.uint32`        | varint | 1-5 字节  |
+| `pyfory.uint64`        | varint | 1-10 字节 |
+| `pyfory.fixed_uint32`  | fixed  | 4 字节    |
+| `pyfory.fixed_uint64`  | fixed  | 8 字节    |
+| `pyfory.tagged_uint64` | tagged | 1-9 字节  |
+| `pyfory.float32`       | fixed  | 4 字节    |
+| `pyfory.float64`       | fixed  | 8 字节    |
 
-**When to Use**:
+**何时使用:**
 
-- `varint`: Best for values that are often small (default for int32/int64/uint32/uint64)
-- `fixed`: Best for values that use full range (e.g., timestamps, hashes)
-- `tagged`: When type information needs to be preserved (uint64 only)
+- `varint`:适合小值占多数的场景(int32/int64/uint32/uint64 默认)
+- `fixed`:适合覆盖全值域的场景(例如时间戳、哈希)
+- `tagged`:适合需要保留类型信息的场景(仅 uint64)
 
-## Complete Example
+## 完整示例
 
 ```python
 from dataclasses import dataclass
@@ -361,9 +358,9 @@ if __name__ == "__main__":
     main()
 ```
 
-## Cross-Language Compatibility
+## 跨语言兼容
 
-When serializing data to be read by other languages (Java, Rust, C++, Go), use field IDs and matching type annotations:
+当序列化数据将被其他语言(Java、Rust、C++、Go)读取时,建议使用字段 ID 并配套类型注解:
 
 ```python
 @dataclass
@@ -375,9 +372,9 @@ class CrossLangData:
     optional_value: Optional[str] = pyfory.field(id=3, nullable=True, default=None)
 ```
 
-## Schema Evolution
+## Schema 演进
 
-Compatible mode supports schema evolution. It is recommended to configure field IDs to reduce serialization cost:
+兼容模式支持 Schema 演进。建议通过字段 ID 降低序列化成本:
 
 ```python
 # Version 1
@@ -395,9 +392,9 @@ class DataV2:
     email: Optional[str] = pyfory.field(id=2, nullable=True, default=None)  # New field
 ```
 
-Data serialized with V1 can be deserialized with V2 (new field will be `None`).
+V1 写出的数据可由 V2 读取(新增字段将为 `None`)。
 
-Alternatively, field IDs can be omitted (field names will be used in metadata with larger overhead):
+也可以不配置字段 ID(此时元信息使用字段名,开销更大):
 
 ```python
 @dataclass
@@ -406,21 +403,21 @@ class Data:
     name: str = ""
 ```
 
-## Native Mode vs Xlang Mode
+## Native 模式与 Xlang 模式
 
-Field configuration behaves differently depending on the serialization mode:
+字段配置会随序列化模式不同而变化。
 
-### Native Mode (Python-only)
+### Native 模式(仅 Python)
 
-Native mode has **relaxed default values** for maximum compatibility:
+Native 模式默认值更宽松,以获得更高兼容性:
 
-- **Nullable**: `str` and numeric types are non-nullable by default unless `Optional` is used
-- **Ref tracking**: Enabled by default for object references (except `str` and numeric types)
+- **Nullable**:`str` 和数值类型默认不可空,除非使用 `Optional`
+- **Ref tracking**:对象引用默认开启(`str` 与数值类型除外)
 
-In native mode, you typically **don't need to configure field annotations** unless you want to:
+在 Native 模式中,通常**不需要显式字段配置**,除非你希望:
 
-- Reduce serialized size by using field IDs
-- Optimize performance by disabling unnecessary ref tracking
+- 通过字段 ID 降低序列化体积
+- 关闭不必要的 ref 跟踪以优化性能
 
 ```python
 # Native mode: works without field configuration
@@ -431,19 +428,19 @@ class User:
     tags: List[str] = None
 ```
 
-### Xlang Mode (Cross-language)
+### Xlang 模式(跨语言)
 
-Xlang mode has **stricter default values** due to type system differences between languages:
+由于语言间类型系统差异,Xlang 模式默认值更严格:
 
-- **Nullable**: Fields are non-nullable by default (`nullable=False`)
-- **Ref tracking**: Disabled by default (`ref=False`)
+- **Nullable**:默认不可空(`nullable=False`)
+- **Ref tracking**:默认关闭(`ref=False`)
 
-In xlang mode, you **need to configure fields** when:
+在 Xlang 模式中,以下情况需要显式配置:
 
-- A field can be None (use `Optional[T]` with `nullable=True`)
-- A field needs reference tracking for shared/circular objects (use `ref=True`)
-- Integer types need specific encoding for cross-language compatibility
-- You want to reduce metadata size (use field IDs)
+- 字段可能为 None(`Optional[T]` + `nullable=True`)
+- 字段需要共享/循环引用语义(`ref=True`)
+- 整数类型需要指定跨语言编码
+- 需要减少元信息开销(字段 ID)
 
 ```python
 # Xlang mode: explicit configuration required for nullable/ref fields
@@ -455,41 +452,41 @@ class User:
     friend: Optional["User"] = pyfory.field(id=3, ref=True, nullable=True, default=None)  # Must declare ref
 ```
 
-### Default Values Summary
-
-| Option     | Native Mode Default                                   | Xlang Mode Default |
-| ---------- | ----------------------------------------------------- | ------------------ |
-| `nullable` | `False` for `str`/numeric; others nullable by default | `False`            |
-| `ref`      | `True` (except `str` and numeric types)               | `False`            |
-| `dynamic`  | `True` (except numeric/str/time types)                | `False` (concrete) |
-
-## Best Practices
-
-1. **Configure field IDs**: Recommended for compatible mode to reduce serialization cost
-2. **Use `Optional[T]` with `nullable=True`**: Required for nullable fields in xlang mode
-3. **Enable ref tracking for shared objects**: Use `ref=True` when objects are shared or circular
-4. **Use `ignore=True` for sensitive data**: Passwords, tokens, internal state
-5. **Choose appropriate encoding**: `varint` for small values, `fixed` for full-range values
-6. **Keep IDs stable**: Once assigned, don't change field IDs
-
-## Options Reference
-
-| Configuration                                | Description                          |
-| -------------------------------------------- | ------------------------------------ |
-| `pyfory.field(id=N)`                         | Field tag ID to reduce metadata size |
-| `pyfory.field(nullable=True)`                | Mark field as nullable               |
-| `pyfory.field(ref=True)`                     | Enable reference tracking            |
-| `pyfory.field(ignore=True)`                  | Exclude field from serialization     |
-| `pyfory.field(dynamic=True)`                 | Force type info to be written        |
-| `pyfory.field(dynamic=False)`                | Skip type info (use declared type)   |
-| `Optional[T]`                                | Type hint for nullable fields        |
-| `pyfory.int32`, `pyfory.int64`               | Signed integers (varint encoding)    |
-| `pyfory.uint32`, `pyfory.uint64`             | Unsigned integers (varint encoding)  |
-| `pyfory.fixed_uint32`, `pyfory.fixed_uint64` | Fixed-size unsigned                  |
-| `pyfory.tagged_uint64`                       | Tagged encoding for uint64           |
-
-## Related Topics
-
-- [Basic Serialization](basic_serialization) - Getting started with Fory serialization
-- [Schema Evolution](schema_evolution) - Compatible mode and schema evolution
-- [Cross-Language](cross_language) - Interoperability with Java, Rust, C++, Go
+### 默认值汇总
+
+| 选项       | Native 模式默认值                          | Xlang 模式默认值    |
+| ---------- | ------------------------------------------ | ------------------- |
+| `nullable` | `str`/数值类型为 `False`,其余对象通常可空 | `False`             |
+| `ref`      | `True`(`str` 和数值类型除外)             | `False`             |
+| `dynamic`  | `True`(数值/str/time 类型除外)           | `False`(具体类型) |
+
+## 最佳实践
+
+1. **配置字段 ID**:兼容模式下建议配置,降低序列化成本
+2. **`Optional[T]` 配合 `nullable=True`**:xlang 下可空字段需要显式声明
+3. **共享对象启用 ref**:共享或循环关系使用 `ref=True`
+4. **敏感字段使用 `ignore=True`**:例如密码、令牌、内部状态
+5. **选择合适编码**:小值用 `varint`,全范围值用 `fixed`
+6. **保持 ID 稳定**:分配后不要更改字段 ID
+
+## 选项速查
+
+| 配置                                         | 说明                           |
+| -------------------------------------------- | ------------------------------ |
+| `pyfory.field(id=N)`                         | 字段 tag ID,减少元信息开销    |
+| `pyfory.field(nullable=True)`                | 标记字段可空                   |
+| `pyfory.field(ref=True)`                     | 启用引用跟踪                   |
+| `pyfory.field(ignore=True)`                  | 将字段排除在序列化之外         |
+| `pyfory.field(dynamic=True)`                 | 强制写入类型信息               |
+| `pyfory.field(dynamic=False)`                | 跳过类型信息(按声明类型处理) |
+| `Optional[T]`                                | 可空字段类型提示               |
+| `pyfory.int32`, `pyfory.int64`               | 有符号整数(varint 编码)      |
+| `pyfory.uint32`, `pyfory.uint64`             | 无符号整数(varint 编码)      |
+| `pyfory.fixed_uint32`, `pyfory.fixed_uint64` | 定长无符号整数                 |
+| `pyfory.tagged_uint64`                       | uint64 的 tagged 编码          |
+
+## 相关主题
+
+- [基础序列化](basic_serialization) - 快速上手 Fory 序列化
+- [Schema 演进](schema_evolution) - 兼容模式与 schema 演进
+- [跨语言](cross_language) - 与 Java、Rust、C++、Go 互操作
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.13/introduction/overview.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.13/introduction/overview.md
index 7a5a2a685c..28831ecb10 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.13/introduction/overview.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.13/introduction/overview.md
@@ -55,12 +55,12 @@ Apache Fory™ 通过先进的优化技术提供卓越性能:
 
 Apache Fory™ 实现了针对不同场景优化的多个二进制协议:
 
-| 协议                                                                      | 使用场景               | 核心特性                                     |
-| ------------------------------------------------------------------------- | ---------------------- | -------------------------------------------- |
-| **[跨语言序列化](../specification/xlang_serialization_spec.md)**        | 跨语言对象交换         | 自动序列化、引用、多态                       |
-| **[Java 序列化](../specification/java_serialization_spec.md)**          | 高性能 Java 专用       | JDK 序列化的直接替代,快 100 倍              |
-| **[行格式](../specification/row_format_spec.md)**                       | 分析和数据处理         | 零拷贝随机访问、Arrow 兼容                   |
-| **Python 原生**                                                           | Python 专用序列化      | Pickle/cloudpickle 替代,性能更好            |
+| 协议                                                             | 使用场景          | 核心特性                          |
+| ---------------------------------------------------------------- | ----------------- | --------------------------------- |
+| **[跨语言序列化](../specification/xlang_serialization_spec.md)** | 跨语言对象交换    | 自动序列化、引用、多态            |
+| **[Java 序列化](../specification/java_serialization_spec.md)**   | 高性能 Java 专用  | JDK 序列化的直接替代,快 100 倍   |
+| **[行格式](../specification/row_format_spec.md)**                | 分析和数据处理    | 零拷贝随机访问、Arrow 兼容        |
+| **Python 原生**                                                  | Python 专用序列化 | Pickle/cloudpickle 替代,性能更好 |
 
 所有协议共享相同的优化代码库,一个协议的改进可以惠及其他协议。
 
@@ -68,25 +68,25 @@ Apache Fory™ 实现了针对不同场景优化的多个二进制协议:
 
 ### 用户指南
 
-| 指南                   | 描述                              | 源文件                                                          | 网站                                                                                |
-| ---------------------- | --------------------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
-| **Java 序列化**        | Java 序列化综合指南               | [java_serialization_guide.md](../guide/java_serialization_guide.md)                             | [📖 查看](https://fory.apache.org/docs/guide/java_serialization)                                  |
-| **跨语言序列化**       | 多语言对象交换                    | [xlang_serialization_guide.md](../guide/xlang_serialization_guide.md)                           | [📖 查看](https://fory.apache.org/docs/specification/fory_xlang_serialization_spec)                                 |
-| **行格式**             | 零拷贝随机访问格式                | [row_format_guide.md](../guide/row_format_guide.md)                      | [📖 查看](https://fory.apache.org/docs/specification/fory_row_format_spec)                       |
-| **Python**             | Python 特定功能和用法             | [python_guide.md](../guide/python_guide.md)                         | [📖 查看](https://fory.apache.org/docs/guide/python_serialization)                                |
-| **Rust**               | Rust 实现和模式                   | [rust_guide.md](../guide/rust_guide.md)                             | [📖 查看](https://fory.apache.org/docs/guide/rust_serialization)                                  |
-| **Scala**              | Scala 集成和最佳实践              | [scala_guide.md](../guide/scala_guide.md)                           | [📖 查看](https://fory.apache.org/docs/guide/scala_serialization)                                 |
-| **GraalVM**            | 原生镜像支持和 AOT 编译           | [graalvm_guide.md](../guide/graalvm_guide.md)                       | [📖 查看](https://fory.apache.org/docs/guide/graalvm_serialization)                         |
-| **开发**               | 构建和贡献 Fory                   | [DEVELOPMENT.md](../guide/DEVELOPMENT.md)                             | [📖 查看](https://fory.apache.org/docs/guide/development)                           |
+| 指南             | 描述                    | 源文件                                                                | 网站                                                                                |
+| ---------------- | ----------------------- | --------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
+| **Java 序列化**  | Java 序列化综合指南     | [java_serialization_guide.md](../guide/java_serialization_guide.md)   | [📖 查看](https://fory.apache.org/docs/guide/java_serialization)                    |
+| **跨语言序列化** | 多语言对象交换          | [xlang_serialization_guide.md](../guide/xlang_serialization_guide.md) | [📖 查看](https://fory.apache.org/docs/specification/fory_xlang_serialization_spec) |
+| **行格式**       | 零拷贝随机访问格式      | [row_format_guide.md](../guide/row_format_guide.md)                   | [📖 查看](https://fory.apache.org/docs/specification/fory_row_format_spec)          |
+| **Python**       | Python 特定功能和用法   | [python_guide.md](../guide/python_guide.md)                           | [📖 查看](https://fory.apache.org/docs/guide/python_serialization)                  |
+| **Rust**         | Rust 实现和模式         | [rust_guide.md](../guide/rust_guide.md)                               | [📖 查看](https://fory.apache.org/docs/guide/rust_serialization)                    |
+| **Scala**        | Scala 集成和最佳实践    | [scala_guide.md](../guide/scala_guide.md)                             | [📖 查看](https://fory.apache.org/docs/guide/scala_serialization)                   |
+| **GraalVM**      | 原生镜像支持和 AOT 编译 | [graalvm_guide.md](../guide/graalvm_guide.md)                         | [📖 查看](https://fory.apache.org/docs/guide/graalvm_serialization)                 |
+| **开发**         | 构建和贡献 Fory         | [DEVELOPMENT.md](../guide/DEVELOPMENT.md)                             | [📖 查看](https://fory.apache.org/docs/guide/development)                           |
 
 ### 协议规范
 
-| 规范                   | 描述                     | 源文件                                                                        | 网站                                                                                |
-| ---------------------- | ------------------------ | ----------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
-| **跨语言序列化**       | 跨语言二进制协议         | [xlang_serialization_spec.md](../specification/xlang_serialization_spec.md) | [📖 查看](https://fory.apache.org/docs/specification/fory_xlang_serialization_spec) |
-| **Java 序列化**        | Java 优化协议            | [java_serialization_spec.md](../specification/java_serialization_spec.md)   | [📖 查看](https://fory.apache.org/docs/specification/fory_java_serialization_spec)  |
-| **行格式**             | 基于行的二进制格式       | [row_format_spec.md](../specification/row_format_spec.md)                   | [📖 查看](https://fory.apache.org/docs/specification/fory_row_format_spec)          |
-| **类型映射**           | 跨语言类型转换           | [xlang_type_mapping.md](../specification/xlang_type_mapping.md)             | [📖 查看](https://fory.apache.org/docs/specification/fory_xlang_serialization_spec) |
+| 规范             | 描述               | 源文件                                                                      | 网站                                                                                |
+| ---------------- | ------------------ | --------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
+| **跨语言序列化** | 跨语言二进制协议   | [xlang_serialization_spec.md](../specification/xlang_serialization_spec.md) | [📖 查看](https://fory.apache.org/docs/specification/fory_xlang_serialization_spec) |
+| **Java 序列化**  | Java 优化协议      | [java_serialization_spec.md](../specification/java_serialization_spec.md)   | [📖 查看](https://fory.apache.org/docs/specification/fory_java_serialization_spec)  |
+| **行格式**       | 基于行的二进制格式 | [row_format_spec.md](../specification/row_format_spec.md)                   | [📖 查看](https://fory.apache.org/docs/specification/fory_row_format_spec)          |
+| **类型映射**     | 跨语言类型转换     | [xlang_type_mapping.md](../specification/xlang_type_mapping.md)             | [📖 查看](https://fory.apache.org/docs/specification/fory_xlang_serialization_spec) |
 
 ## 兼容性
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.14/guide/cpp/schema-evolution.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.14/guide/cpp/schema-evolution.md
index 3f89d97aad..fd8c7bfcad 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.14/guide/cpp/schema-evolution.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.14/guide/cpp/schema-evolution.md
@@ -85,7 +85,7 @@ Compatible 模式支持以下 schema 变更:
 | 添加新字段   | ✅   | 缺失字段使用默认值           |
 | 删除字段     | ✅   | 额外字段被跳过               |
 | 重排字段顺序 | ✅   | 按名称匹配字段,而非位置     |
-| 更改可空性   | ✅   | `T` ↔ `std::optional<T>`    |
+| 更改可空性   | ✅   | `T` ↔ `std::optional<T>`     |
 | 更改字段类型 | ❌   | 类型必须兼容                 |
 | 重命名字段   | ❌   | 字段名必须匹配(区分大小写) |
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15.json
new file mode 100644
index 0000000000..5134c6519e
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15.json
@@ -0,0 +1,22 @@
+{
+  "version.label": {
+    "message": "0.15",
+    "description": "The label for version 0.15"
+  },
+  "sidebar.docsSidebar.category.Introduction": {
+    "message": "Apache Fory 介绍",
+    "description": "The label for category Introduction in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Start": {
+    "message": "快速开始",
+    "description": "The label for category Start in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Schema IDL & Compiler": {
+    "message": "Schema IDL 与编译器",
+    "description": "The label for category Schema IDL & Compiler in sidebar docsSidebar"
+  },
+  "sidebar.docsSidebar.category.Guide": {
+    "message": "用户指南",
+    "description": "The label for category Guide in sidebar docsSidebar"
+  }
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/benchmarks/go/benchmark_report.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/benchmarks/go/benchmark_report.md
index a1c3d635f2..f73aacf0a2 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/benchmarks/go/benchmark_report.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/benchmarks/go/benchmark_report.md
@@ -10,48 +10,48 @@
 
 ## 性能摘要
 
-| 数据类型 | 操作 | Fory (ops/s) | Protobuf (ops/s) | Msgpack (ops/s) | Fory vs PB | Fory vs MP |
-|---------|------|--------------|------------------|-----------------|------------|------------|
-| Struct | 序列化 | 15.16M | 10.23M | 5.41M | 1.48x | 2.80x |
-| Struct | 反序列化 | 12.10M | 11.01M | 3.23M | 1.10x | 3.75x |
-| Structlist | 序列化 | 1.58M | 561K | 299K | 2.82x | 5.28x |
-| Structlist | 反序列化 | 1.10M | 529K | 175K | 2.09x | 6.30x |
-| Sample | 序列化 | 7.28M | 2.72M | 670K | 2.68x | 10.87x |
-| Sample | 反序列化 | 3.79M | 2.37M | 376K | 1.60x | 10.09x |
-| Samplelist | 序列化 | 510K | 141K | 38K | 3.61x | 13.34x |
-| Samplelist | 反序列化 | 236K | 107K | 19K | 2.20x | 12.66x |
-| Mediacontent | 序列化 | 3.72M | 2.12M | 1.29M | 1.75x | 2.88x |
-| Mediacontent | 反序列化 | 2.34M | 1.81M | 698K | 1.30x | 3.35x |
-| Mediacontentlist | 序列化 | 268K | 110K | 72K | 2.44x | 3.72x |
-| Mediacontentlist | 反序列化 | 138K | 87K | 36K | 1.58x | 3.86x |
+| 数据类型         | 操作     | Fory (ops/s) | Protobuf (ops/s) | Msgpack (ops/s) | Fory vs PB | Fory vs MP |
+| ---------------- | -------- | ------------ | ---------------- | --------------- | ---------- | ---------- |
+| Struct           | 序列化   | 15.16M       | 10.23M           | 5.41M           | 1.48x      | 2.80x      |
+| Struct           | 反序列化 | 12.10M       | 11.01M           | 3.23M           | 1.10x      | 3.75x      |
+| Structlist       | 序列化   | 1.58M        | 561K             | 299K            | 2.82x      | 5.28x      |
+| Structlist       | 反序列化 | 1.10M        | 529K             | 175K            | 2.09x      | 6.30x      |
+| Sample           | 序列化   | 7.28M        | 2.72M            | 670K            | 2.68x      | 10.87x     |
+| Sample           | 反序列化 | 3.79M        | 2.37M            | 376K            | 1.60x      | 10.09x     |
+| Samplelist       | 序列化   | 510K         | 141K             | 38K             | 3.61x      | 13.34x     |
+| Samplelist       | 反序列化 | 236K         | 107K             | 19K             | 2.20x      | 12.66x     |
+| Mediacontent     | 序列化   | 3.72M        | 2.12M            | 1.29M           | 1.75x      | 2.88x      |
+| Mediacontent     | 反序列化 | 2.34M        | 1.81M            | 698K            | 1.30x      | 3.35x      |
+| Mediacontentlist | 序列化   | 268K         | 110K             | 72K             | 2.44x      | 3.72x      |
+| Mediacontentlist | 反序列化 | 138K         | 87K              | 36K             | 1.58x      | 3.86x      |
 
 ## 详细耗时(ns/op)
 
-| 数据类型 | 操作 | Fory | Protobuf | Msgpack |
-|---------|------|------|----------|---------|
-| Struct | 序列化 | 66.0 | 97.8 | 184.9 |
-| Struct | 反序列化 | 82.7 | 90.9 | 309.6 |
-| Structlist | 序列化 | 632.8 | 1783.0 | 3340.0 |
-| Structlist | 反序列化 | 906.4 | 1891.0 | 5709.0 |
-| Sample | 序列化 | 137.3 | 367.3 | 1492.0 |
-| Sample | 反序列化 | 263.6 | 422.2 | 2661.0 |
-| Samplelist | 序列化 | 1962.0 | 7087.0 | 26169.0 |
-| Samplelist | 反序列化 | 4234.0 | 9321.0 | 53615.0 |
-| Mediacontent | 序列化 | 268.8 | 471.1 | 773.7 |
-| Mediacontent | 反序列化 | 426.9 | 553.1 | 1432.0 |
-| Mediacontentlist | 序列化 | 3736.0 | 9107.0 | 13911.0 |
-| Mediacontentlist | 反序列化 | 7247.0 | 11435.0 | 27975.0 |
+| 数据类型         | 操作     | Fory   | Protobuf | Msgpack |
+| ---------------- | -------- | ------ | -------- | ------- |
+| Struct           | 序列化   | 66.0   | 97.8     | 184.9   |
+| Struct           | 反序列化 | 82.7   | 90.9     | 309.6   |
+| Structlist       | 序列化   | 632.8  | 1783.0   | 3340.0  |
+| Structlist       | 反序列化 | 906.4  | 1891.0   | 5709.0  |
+| Sample           | 序列化   | 137.3  | 367.3    | 1492.0  |
+| Sample           | 反序列化 | 263.6  | 422.2    | 2661.0  |
+| Samplelist       | 序列化   | 1962.0 | 7087.0   | 26169.0 |
+| Samplelist       | 反序列化 | 4234.0 | 9321.0   | 53615.0 |
+| Mediacontent     | 序列化   | 268.8  | 471.1    | 773.7   |
+| Mediacontent     | 反序列化 | 426.9  | 553.1    | 1432.0  |
+| Mediacontentlist | 序列化   | 3736.0 | 9107.0   | 13911.0 |
+| Mediacontentlist | 反序列化 | 7247.0 | 11435.0  | 27975.0 |
 
 ### 序列化后数据大小(字节)
 
-| 数据类型 | Fory | Protobuf | Msgpack |
-|---------|------|----------|---------|
-| Struct | 58 | 61 | 57 |
-| Sample | 446 | 375 | 524 |
-| MediaContent | 342 | 301 | 400 |
-| StructList | 560 | 1260 | 1146 |
-| SampleList | 7600 | 7560 | 10486 |
-| MediaContentList | 5776 | 6080 | 8006 |
+| 数据类型         | Fory | Protobuf | Msgpack |
+| ---------------- | ---- | -------- | ------- |
+| Struct           | 58   | 61       | 57      |
+| Sample           | 446  | 375      | 524     |
+| MediaContent     | 342  | 301      | 400     |
+| StructList       | 560  | 1260     | 1146    |
+| SampleList       | 7600 | 7560     | 10486   |
+| MediaContentList | 5776 | 6080     | 8006    |
 
 ## 性能图表
 
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/_category_.json b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/_category_.json
new file mode 100644
index 0000000000..abf19e9fcb
--- /dev/null
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/_category_.json
@@ -0,0 +1,6 @@
+{
+  "position": 3,
+  "label": "Schema IDL 与编译器",
+  "collapsible": true,
+  "collapsed": true
+}
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/compiler-guide.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/compiler-guide.md
index 1c8184bfda..0046cbcd3b 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/compiler-guide.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/compiler-guide.md
@@ -19,9 +19,7 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
-本指南介绍 Fory IDL 编译器的安装、使用与集成。
+本指南介绍 Fory IDL 编译器的安装、命令行使用方式以及构建系统集成方案。
 
 ## 安装
 
@@ -52,155 +50,153 @@ foryc --scan-generated [OPTIONS]
 
 ### 选项
 
-Compile options:
-
-| Option                                | Description                                           | Default             |
-| ------------------------------------- | ----------------------------------------------------- | ------------------- |
-| `--lang`                              | Comma-separated target languages                      | `all`               |
-| `--output`, `-o`                      | Output directory                                      | `./generated`       |
-| `--package`                           | Override package name from Fory IDL file              | (from file)         |
-| `-I`, `--proto_path`, `--import_path` | Add directory to import search path (can be repeated) | (none)              |
-| `--java_out=DST_DIR`                  | Generate Java code in DST_DIR                         | (none)              |
-| `--python_out=DST_DIR`                | Generate Python code in DST_DIR                       | (none)              |
-| `--cpp_out=DST_DIR`                   | Generate C++ code in DST_DIR                          | (none)              |
-| `--go_out=DST_DIR`                    | Generate Go code in DST_DIR                           | (none)              |
-| `--rust_out=DST_DIR`                  | Generate Rust code in DST_DIR                         | (none)              |
-| `--go_nested_type_style`              | Go nested type naming: `camelcase` or `underscore`    | from schema/default |
-| `--emit-fdl`                          | Print translated Fory IDL for non-`.fdl` inputs       | `false`             |
-| `--emit-fdl-path`                     | Write translated Fory IDL to a file or directory      | (stdout)            |
-
-Scan options (with `--scan-generated`):
-
-| Option       | Description                    | Default |
-| ------------ | ------------------------------ | ------- |
-| `--root`     | Root directory to scan         | `.`     |
-| `--relative` | Print paths relative to root   | `false` |
-| `--delete`   | Delete matched generated files | `false` |
-| `--dry-run`  | Scan/print only, do not delete | `false` |
-
-### Scan Generated Files
-
-Use `--scan-generated` to find files produced by `foryc`. The scanner walks
-the tree recursively, skips `build/`, `target/`, and hidden directories, and prints
-each generated file as it is found.
+编译选项:
+
+| 选项                                  | 说明                                             | 默认值        |
+| ------------------------------------- | ------------------------------------------------ | ------------- |
+| `--lang`                              | 目标语言列表(逗号分隔)                         | `all`         |
+| `--output`, `-o`                      | 输出目录                                         | `./generated` |
+| `--package`                           | 覆盖 Fory IDL 文件中的 package                   | (来自文件)  |
+| `-I`, `--proto_path`, `--import_path` | 添加 import 搜索路径(可重复)                   | (无)        |
+| `--java_out=DST_DIR`                  | 将 Java 代码输出到 `DST_DIR`                     | (无)        |
+| `--python_out=DST_DIR`                | 将 Python 代码输出到 `DST_DIR`                   | (无)        |
+| `--cpp_out=DST_DIR`                   | 将 C++ 代码输出到 `DST_DIR`                      | (无)        |
+| `--go_out=DST_DIR`                    | 将 Go 代码输出到 `DST_DIR`                       | (无)        |
+| `--rust_out=DST_DIR`                  | 将 Rust 代码输出到 `DST_DIR`                     | (无)        |
+| `--go_nested_type_style`              | Go 嵌套类型命名风格:`camelcase` 或 `underscore` | schema/默认值 |
+| `--emit-fdl`                          | 对非 `.fdl` 输入打印转换后的 Fory IDL            | `false`       |
+| `--emit-fdl-path`                     | 将转换后的 Fory IDL 写入文件或目录               | (stdout)    |
+
+扫描选项(配合 `--scan-generated`):
+
+| 选项         | 说明                   | 默认值  |
+| ------------ | ---------------------- | ------- |
+| `--root`     | 扫描根目录             | `.`     |
+| `--relative` | 以相对路径输出         | `false` |
+| `--delete`   | 删除匹配到的生成文件   | `false` |
+| `--dry-run`  | 仅扫描输出,不执行删除 | `false` |
+
+### 扫描生成文件
+
+使用 `--scan-generated` 可以定位 `foryc` 生成的文件。扫描器会递归遍历目录树,跳过 `build/`、`target/` 和隐藏目录,并输出找到的每个生成文件。
 
 ```bash
-# Scan current directory
+# 扫描当前目录
 foryc --scan-generated
 
-# Scan a specific root
+# 扫描指定根目录
 foryc --scan-generated --root ./src
 
-# Print paths relative to the scan root
+# 输出相对路径
 foryc --scan-generated --root ./src --relative
 
-# Delete scanned generated files
+# 删除扫描到的生成文件
 foryc --scan-generated --root ./src --delete
 
-# Dry-run (scan and print only)
+# Dry-run(仅扫描与输出)
 foryc --scan-generated --root ./src --dry-run
 ```
 
-### Examples
+### 示例
 
-**Compile for all languages:**
+**为所有语言编译:**
 
 ```bash
 foryc schema.fdl
 ```
 
-**Compile for specific languages:**
+**为指定语言编译:**
 
 ```bash
 foryc schema.fdl --lang java,python
 ```
 
-**Specify output directory:**
+**指定输出目录:**
 
 ```bash
 foryc schema.fdl --output ./src/generated
 ```
 
-**Override package name:**
+**覆盖 package:**
 
 ```bash
 foryc schema.fdl --package com.myapp.models
 ```
 
-**Compile multiple files:**
+**编译多个文件:**
 
 ```bash
 foryc user.fdl order.fdl product.fdl --output ./generated
 ```
 
-**Use import search paths:**
+**使用 import 搜索路径:**
 
 ```bash
-# Add a single import path
+# 单个路径
 foryc src/main.fdl -I libs/common
 
-# Add multiple import paths (repeated option)
+# 多个路径(重复参数)
 foryc src/main.fdl -I libs/common -I libs/types
 
-# Add multiple import paths (comma-separated)
+# 多个路径(逗号分隔)
 foryc src/main.fdl -I libs/common,libs/types,third_party/
 
-# Using --proto_path (protoc-compatible alias)
+# --proto_path(protoc 兼容别名)
 foryc src/main.fdl --proto_path=libs/common
 
-# Mix all styles
+# 混合写法
 foryc src/main.fdl -I libs/common,libs/types --proto_path third_party/
 ```
 
-**Language-specific output directories (protoc-style):**
+**语言定向输出目录(protoc 风格):**
 
 ```bash
-# Generate only Java code to a specific directory
+# 仅生成 Java
 foryc schema.fdl --java_out=./src/main/java
 
-# Generate multiple languages to different directories
+# 多语言分别输出到不同目录
 foryc schema.fdl --java_out=./java/gen --python_out=./python/src --go_out=./go/gen
 
-# Combine with import paths
+# 结合 import 路径
 foryc schema.fdl --java_out=./gen/java -I proto/ -I common/
 ```
 
-When using `--{lang}_out` options:
+使用 `--{lang}_out` 时:
 
-- Only the specified languages are generated (not all languages)
-- The compiler writes under the specified directory (language-specific generators may still create package/module subdirectories)
-- This is compatible with protoc-style workflows
+- 只生成显式指定的语言(不会生成全部语言)
+- 输出写入指定目录(语言生成器可能继续按包/模块分层)
+- 兼容 protoc 风格工作流
 
-**Inspect translated Fory IDL from proto/fbs input:**
+**查看 proto/fbs 输入转换后的 Fory IDL:**
 
 ```bash
-# Print translated Fory IDL to stdout
+# 输出到 stdout
 foryc schema.proto --emit-fdl
 
-# Write translated Fory IDL to a directory
+# 输出到目录
 foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
 ```
 
-## Import Path Resolution
+## Import 路径解析
 
-When compiling Fory IDL files with imports, the compiler searches for imported files in this order:
+编译含 import 的 Fory IDL 文件时,导入文件按以下顺序查找:
 
-1. **Relative to the importing file (default)** - The directory containing the file with the import statement is always searched first, automatically. No `-I` flag needed for same-directory imports.
-2. **Each `-I` path in order** - Additional search paths specified on the command line
+1. **相对于导入者文件目录(默认)**:始终优先查找,无需 `-I`
+2. **按顺序遍历每个 `-I` 路径**
 
-**Same-directory imports work automatically:**
+**同目录 import 可直接生效:**
 
 ```protobuf
 // main.fdl
-import "common.fdl";  // Found if common.fdl is in the same directory
+import "common.fdl";  // 若 common.fdl 在同目录,将自动找到
 ```
 
 ```bash
-# No -I needed for same-directory imports
+# 同目录导入无需 -I
 foryc main.fdl
 ```
 
-**Example project structure:**
+**示例目录结构:**
 
 ```
 project/
@@ -210,7 +206,7 @@ project/
     └── common.fdl
 ```
 
-**Without `-I` (fails):**
+**不加 `-I`(失败):**
 
 ```bash
 $ foryc src/main.fdl
@@ -218,7 +214,7 @@ Import error: Import not found: common.fdl
   Searched in: /project/src
 ```
 
-**With `-I` (succeeds):**
+**加 `-I`(成功):**
 
 ```bash
 $ foryc src/main.fdl -I libs/
@@ -226,17 +222,17 @@ Compiling src/main.fdl...
   Resolved 1 import(s)
 ```
 
-## Supported Languages
+## 支持语言
 
-| Language | Flag     | Output Extension | Description                 |
-| -------- | -------- | ---------------- | --------------------------- |
-| Java     | `java`   | `.java`          | POJOs with Fory annotations |
-| Python   | `python` | `.py`            | Dataclasses with type hints |
-| Go       | `go`     | `.go`            | Structs with struct tags    |
-| Rust     | `rust`   | `.rs`            | Structs with derive macros  |
-| C++      | `cpp`    | `.h`             | Structs with FORY macros    |
+| 语言   | 标记     | 输出后缀 | 说明                   |
+| ------ | -------- | -------- | ---------------------- |
+| Java   | `java`   | `.java`  | 带 Fory 注解的 POJO    |
+| Python | `python` | `.py`    | 带类型提示的 dataclass |
+| Go     | `go`     | `.go`    | 带 struct tag 的结构体 |
+| Rust   | `rust`   | `.rs`    | 带 derive 宏的结构体   |
+| C++    | `cpp`    | `.h`     | 带 FORY 宏的结构体     |
 
-## Output Structure
+## 输出结构
 
 ### Java
 
@@ -251,9 +247,9 @@ generated/
             └── ExampleForyRegistration.java
 ```
 
-- One file per type (enum or message)
-- Package structure matches Fory IDL package
-- Registration helper class generated
+- 每个类型(enum/message)单独一个文件
+- 包路径与 Fory IDL package 一致
+- 会生成注册辅助类
 
 ### Python
 
@@ -263,9 +259,9 @@ generated/
     └── example.py
 ```
 
-- Single module with all types
-- Module name derived from package
-- Registration function included
+- 所有类型位于单模块
+- 模块名由 package 派生
+- 包含注册函数
 
 ### Go
 
@@ -276,9 +272,9 @@ generated/
         └── example.go
 ```
 
-- Single file with all types
-- Directory and package name are derived from `go_package` or the Fory IDL package
-- Registration function included
+- 所有类型在单文件中
+- 目录名与包名来自 `go_package` 或 Fory IDL package
+- 包含注册函数
 
 ### Rust
 
@@ -288,9 +284,9 @@ generated/
     └── example.rs
 ```
 
-- Single module with all types
-- Module name derived from package
-- Registration function included
+- 所有类型位于单模块
+- 模块名由 package 派生
+- 包含注册函数
 
 ### C++
 
@@ -300,15 +296,15 @@ generated/
     └── example.h
 ```
 
-- Single header file
-- Namespace matches package (dots to `::`)
-- Header guards and forward declarations
+- 单头文件输出
+- 命名空间与 package 对齐(点号转换为 `::`)
+- 自动包含 header guard 与前向声明
 
-## Build Integration
+## 构建系统集成
 
 ### Maven (Java)
 
-Add to your `pom.xml`:
+在 `pom.xml` 中添加:
 
 ```xml
 <build>
@@ -339,7 +335,7 @@ Add to your `pom.xml`:
 </build>
 ```
 
-Add generated sources:
+添加生成源码目录:
 
 ```xml
 <build>
@@ -368,7 +364,7 @@ Add generated sources:
 
 ### Gradle (Java/Kotlin)
 
-Add to `build.gradle`:
+在 `build.gradle` 中添加:
 
 ```groovy
 task generateForyTypes(type: Exec) {
@@ -390,7 +386,7 @@ sourceSets {
 
 ### Python (setuptools)
 
-Add to `setup.py` or `pyproject.toml`:
+在 `setup.py` 或 `pyproject.toml` 中加入生成步骤:
 
 ```python
 # setup.py
@@ -413,24 +409,24 @@ setup(
 )
 ```
 
-### Go (go generate)
+### Go (`go generate`)
 
-Add to your Go file:
+在 Go 文件中添加:
 
 ```go
 //go:generate foryc ../schema.fdl --lang go --output .
 package models
 ```
 
-Run:
+执行:
 
 ```bash
 go generate ./...
 ```
 
-### Rust (build.rs)
+### Rust (`build.rs`)
 
-Add to `build.rs`:
+在 `build.rs` 中添加:
 
 ```rust
 use std::process::Command;
@@ -451,7 +447,7 @@ fn main() {
 
 ### CMake (C++)
 
-Add to `CMakeLists.txt`:
+在 `CMakeLists.txt` 中添加:
 
 ```cmake
 find_program(FORY_COMPILER foryc)
@@ -474,7 +470,7 @@ target_include_directories(mylib PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/generated)
 
 ### Bazel
 
-Create a rule in `BUILD`:
+在 `BUILD` 中添加规则:
 
 ```python
 genrule(
@@ -492,51 +488,51 @@ cc_library(
 )
 ```
 
-## Error Handling
+## 错误处理
 
-### Syntax Errors
+### 语法错误
 
 ```
 Error: Line 5, Column 12: Expected ';' after field declaration
 ```
 
-Fix: Check the indicated line for missing semicolons or syntax issues.
+修复方式:检查对应行是否缺少分号或存在语法问题。
 
-### Duplicate Type Names
+### 类型名重复
 
 ```
 Error: Duplicate type name: User
 ```
 
-Fix: Ensure each enum and message has a unique name within the file.
+修复方式:确保同一文件内每个 enum/message 名称唯一。
 
-### Duplicate Type IDs
+### 类型 ID 重复
 
 ```
 Error: Duplicate type ID 100: User and Order
 ```
 
-Fix: Assign unique type IDs to each type.
+修复方式:为每个类型分配唯一 ID。
 
-### Unknown Type References
+### 未知类型引用
 
 ```
 Error: Unknown type 'Address' in Customer.address
 ```
 
-Fix: Define the referenced type before using it, or check for typos.
+修复方式:先定义被引用类型,或检查类型名拼写。
 
-### Duplicate Field Numbers
+### 字段号重复
 
 ```
 Error: Duplicate field number 1 in User: name and id
 ```
 
-Fix: Assign unique field numbers within each message.
+修复方式:确保同一 message 内字段号唯一。
 
-## Best Practices
+## 最佳实践
 
-### Project Structure
+### 项目结构
 
 ```
 project/
@@ -549,12 +545,12 @@ project/
 └── build.gradle
 ```
 
-### Version Control
+### 版本控制
 
-- **Track**: Fory IDL schema files
-- **Ignore**: Generated code (can be regenerated)
+- **纳入版本控制**:Fory IDL schema 文件
+- **忽略生成代码**:可在构建时再生成
 
-Add to `.gitignore`:
+在 `.gitignore` 中加入:
 
 ```
 # Generated Fory IDL code
@@ -562,12 +558,12 @@ src/generated/
 generated/
 ```
 
-### CI/CD Integration
+### CI/CD 集成
 
-Always regenerate during builds:
+在构建流程中始终重新生成代码:
 
 ```yaml
-# GitHub Actions example
+# GitHub Actions 示例
 steps:
   - name: Install Fory IDL Compiler
     run: pip install ./compiler
@@ -579,14 +575,14 @@ steps:
     run: ./gradlew build
 ```
 
-### Schema Evolution
+### Schema 演进
 
-When modifying schemas:
+修改 schema 时建议遵循:
 
-1. **Never reuse field numbers** - Mark as reserved instead
-2. **Never change type IDs** - They're part of the binary format
-3. **Add new fields** - Use new field numbers
-4. **Use `optional`** - For backward compatibility
+1. **不要复用字段号**:删除字段后应保留/预留
+2. **不要改动类型 ID**:类型 ID 属于二进制协议的一部分
+3. **新增字段使用新字段号**
+4. **优先使用 `optional`**:保持向后兼容
 
 ```protobuf
 message User [id=100] {
@@ -597,7 +593,7 @@ message User [id=100] {
 }
 ```
 
-## Troubleshooting
+## 故障排查
 
 ### Command Not Found
 
@@ -605,7 +601,7 @@ message User [id=100] {
 foryc: command not found
 ```
 
-**Solution:** Ensure the compiler is installed and in your PATH:
+**解决:** 确认编译器已安装且在 PATH 中:
 
 ```bash
 pip install -e ./compiler
@@ -619,15 +615,15 @@ export PATH=$PATH:~/.local/bin
 Permission denied: ./generated
 ```
 
-**Solution:** Ensure write permissions on the output directory:
+**解决:** 确保输出目录具备写权限:
 
 ```bash
 chmod -R u+w ./generated
 ```
 
-### Import Errors in Generated Code
+### 生成代码 import 错误
 
-**Java:** Ensure Fory dependency is in your project:
+**Java:** 确保项目包含 Fory 依赖:
 
 ```xml
 <dependency>
@@ -637,23 +633,23 @@ chmod -R u+w ./generated
 </dependency>
 ```
 
-**Python:** Ensure pyfory is installed:
+**Python:** 确保安装 `pyfory`:
 
 ```bash
 pip install pyfory
 ```
 
-**Go:** Ensure fory module is available:
+**Go:** 确保可获取 fory 模块:
 
 ```bash
 go get github.com/apache/fory/go/fory
 ```
 
-**Rust:** Ensure fory crate is in `Cargo.toml`:
+**Rust:** 确保 `Cargo.toml` 中包含 fory crate:
 
 ```toml
 [dependencies]
 fory = "x.y.z"
 ```
 
-**C++:** Ensure Fory headers are in include path.
+**C++:** 确保编译器 include 路径可找到 Fory 头文件。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/flatbuffers-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/flatbuffers-idl.md
index 579ac6c3fc..6a2bfd2885 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/flatbuffers-idl.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/flatbuffers-idl.md
@@ -19,59 +19,49 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
 本页说明 Apache Fory 如何读取 FlatBuffers schema(`.fbs`)并将其转换为 Fory IR 以生成代码。
 
 ## 本页内容
 
-- When to use FlatBuffers input with Fory
-- Exact FlatBuffers to Fory mapping behavior
-- Supported Fory-specific attributes in `.fbs`
-- Migration notes and generated-code differences
+- 何时应在 Fory 中使用 FlatBuffers 输入
+- FlatBuffers 到 Fory 的精确映射行为
+- `.fbs` 中支持的 Fory 扩展属性
+- 迁移注意事项与生成代码差异
 
 ## 为什么使用 Apache Fory
 
-- Idiomatic generated code: Fory generates language-idiomatic classes/structs
-  that can be used directly as domain objects.
-- Java performance: In Java object-serialization workloads, Fory is faster than
-  FlatBuffers in Fory benchmarks.
-- Other languages: serialization performance is generally in a similar range.
-- Deserialization in practice: FlatBuffers does not perform native-object deserialization and is
-  faster by default, but if your application needs native objects, it requires
-  conversion and that conversion step can dominate read cost. In those cases,
-  Fory deserialization is often faster end-to-end.
-- Easier APIs: Fory uses direct native objects, so you do not need to
-  reverse-build tables or manually manage offsets.
-- Better graph modeling: Shared and circular references are first-class features
-  in Fory.
+- **生成代码更符合语言习惯**:Fory 会生成各语言常用风格的类/结构体,可直接作为领域对象使用。
+- **Java 性能更优**:在 Fory 的 Java 对象序列化基准中,Fory 通常快于 FlatBuffers。
+- **其他语言性能相近**:序列化性能通常处于同一量级。
+- **实际反序列化链路更高效**:FlatBuffers 默认并不做原生对象反序列化,因此看起来更快;但当业务需要原生对象时,还需额外转换,这一步往往成为主要开销。在这种场景下,Fory 端到端反序列化通常更快。
+- **API 更简单**:Fory 直接操作原生对象,无需反向构建 table 或手动管理 offset。
+- **对象图建模能力更强**:Fory 原生支持共享引用和循环引用。
 
 ## 快速决策指南
 
-| Situation                                                          | Recommended Path       |
-| ------------------------------------------------------------------ | ---------------------- |
-| You already have `.fbs` schemas and want Fory runtime/codegen      | Use FlatBuffers input  |
-| You are starting new schema work and want full Fory syntax control | Use native Fory IDL    |
-| You need FlatBuffers wire compatibility at runtime                 | Keep FlatBuffers stack |
-| You need Fory object-graph semantics (`ref`, weak refs, etc.)      | Use Fory               |
+| 场景                                            | 建议路径                |
+| ----------------------------------------------- | ----------------------- |
+| 已有 `.fbs` schema,想接入 Fory 运行时/代码生成 | 使用 FlatBuffers 输入   |
+| 新建 schema,希望完整使用 Fory 语法能力         | 使用原生 Fory IDL       |
+| 运行时必须保持 FlatBuffers 线格式兼容           | 继续使用 FlatBuffers 栈 |
+| 需要 Fory 对象图语义(`ref`、弱引用等)         | 使用 Fory               |
 
 ## FlatBuffers 到 Fory 的映射
 
-### Schema-Level Rules
+### Schema 级规则
 
-- `namespace` maps to Fory package namespace.
-- `include` entries map to Fory imports.
-- `table` is translated as `evolving=true`.
-- `struct` is translated as `evolving=false`.
-- `root_type` is parsed but ignored by Fory runtime/codegen.
-- `file_identifier` and `file_extension` are parsed but not used by Fory codegen.
+- `namespace` 映射为 Fory package 命名空间。
+- `include` 映射为 Fory import。
+- `table` 会被翻译为 `evolving=true`。
+- `struct` 会被翻译为 `evolving=false`。
+- `root_type` 会被解析,但 Fory 运行时/代码生成不会使用。
+- `file_identifier` 与 `file_extension` 会被解析,但 Fory 代码生成不会使用。
 
-### Field Numbering
+### 字段编号
 
-FlatBuffers fields do not have explicit field IDs. Fory assigns field numbers by
-source declaration order, starting at `1`.
+FlatBuffers 字段没有显式 field ID。Fory 会按源码声明顺序分配字段号,从 `1` 开始。
 
-### Scalar Type Mapping
+### 标量类型映射
 
 | FlatBuffers | Fory Type |
 | ----------- | --------- |
@@ -88,14 +78,14 @@ source declaration order, starting at `1`.
 | `bool`      | `bool`    |
 | `string`    | `string`  |
 
-Vectors (`[T]`) map to Fory lists.
+向量(`[T]`)映射为 Fory 列表类型。
 
-### Unions
+### 联合类型
 
-FlatBuffers unions map to Fory unions.
+FlatBuffers union 映射为 Fory union。
 
-- Case IDs are assigned by declaration order, starting at `1`.
-- Case names are derived from type names using snake_case field naming.
+- case ID 按声明顺序分配,从 `1` 开始。
+- case 名称由类型名转换为 snake_case 字段名。
 
 **FlatBuffers**
 
@@ -110,7 +100,7 @@ table Container {
 }
 ```
 
-**Fory shape after translation**
+**转换后的 Fory 结构**
 
 ```protobuf
 union Payload {
@@ -123,33 +113,31 @@ message Container {
 }
 ```
 
-### Defaults and Metadata
+### 默认值与元数据
 
-- FlatBuffers default values are parsed but not applied as Fory runtime defaults.
-- Non-Fory metadata attributes are preserved as generic options in IR and may be
-  consumed by downstream tooling.
+- FlatBuffers 默认值会被解析,但不会作为 Fory 运行时默认值生效。
+- 非 Fory 的 metadata 属性会作为通用 option 保留在 IR 中,供下游工具按需消费。
 
-## Fory-Specific Attributes in FlatBuffers
+## FlatBuffers 中的 Fory 扩展属性
 
-FlatBuffers metadata attributes use `key:value`. For Fory-specific options, use
-`fory_` (or `fory.`) prefix in `.fbs`; the prefix is removed during parsing.
+FlatBuffers metadata 属性写法为 `key:value`。对于 Fory 扩展选项,在 `.fbs` 中使用 `fory_`(或 `fory.`)前缀;解析时会去掉该前缀。
 
-### Supported Field Attributes
+### 支持的字段属性
 
-| FlatBuffers Attribute            | Effect in Fory                                        |
-| -------------------------------- | ----------------------------------------------------- |
-| `fory_ref:true`                  | Enable reference tracking for the field               |
-| `fory_nullable:true`             | Mark field optional/nullable                          |
-| `fory_weak_ref:true`             | Enable weak reference semantics and implies `ref`     |
-| `fory_thread_safe_pointer:false` | For ref fields, select non-thread-safe pointer flavor |
+| FlatBuffers Attribute            | 在 Fory 中的效果                  |
+| -------------------------------- | --------------------------------- |
+| `fory_ref:true`                  | 为字段启用引用跟踪                |
+| `fory_nullable:true`             | 将字段标记为 optional/nullable    |
+| `fory_weak_ref:true`             | 启用弱引用语义,并隐含开启 `ref`  |
+| `fory_thread_safe_pointer:false` | 对 ref 字段选择非线程安全指针类型 |
 
-Semantics:
+语义说明:
 
-- `fory_weak_ref:true` implies `ref`.
-- `fory_thread_safe_pointer` only takes effect when the field is ref-tracked.
-- For list fields, `fory_ref:true` applies to list elements.
+- `fory_weak_ref:true` 隐含 `ref`。
+- `fory_thread_safe_pointer` 仅在字段启用 ref 跟踪时生效。
+- 对列表字段,`fory_ref:true` 作用于列表元素。
 
-Example:
+示例:
 
 ```fbs
 table Node {
@@ -159,42 +147,37 @@ table Node {
 }
 ```
 
-## Generated Code Differences
+## 生成代码差异
 
-Using `.fbs` as input to Fory still produces normal Fory-generated code, not
-FlatBuffers `ByteBuffer`-style APIs.
+即使用 `.fbs` 作为 Fory 输入,生成的依然是标准 Fory 代码,而不是 FlatBuffers 的 `ByteBuffer` 风格 API。
 
-- Java: POJOs/records with Fory metadata
-- Python: dataclasses plus registration helpers
-- Go/Rust/C++: native structs and Fory metadata
+- Java:带 Fory 元数据的 POJO/record
+- Python:dataclass 与注册辅助代码
+- Go/Rust/C++:原生结构体与 Fory 元数据
 
-The serialization format is Fory binary protocol, not FlatBuffers wire format.
+最终序列化格式是 Fory 二进制协议,而不是 FlatBuffers 线格式。
 
-## Usage
+## 用法
 
-Compile a FlatBuffers schema directly:
+直接编译 FlatBuffers schema:
 
 ```bash
 foryc schema.fbs --lang java,python --output ./generated
 ```
 
-Inspect translated schema syntax for debugging:
+输出转换后的 Fory schema 语法以便调试:
 
 ```bash
 foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
 ```
 
-## Migration Notes
+## 迁移注意事项
 
-1. Keep existing `namespace` values stable to keep type registration stable.
-2. Review fields that relied on FlatBuffers default literals and set explicit
-   defaults in application code if needed.
-3. Add `fory_ref`/`fory_weak_ref` where object-graph semantics are required.
-4. Validate generated model behavior with roundtrip tests before replacing
-   existing serialization paths.
+1. 保持现有 `namespace` 稳定,以保证类型注册稳定。
+2. 检查依赖 FlatBuffers 字面量默认值的字段,并在业务代码中补充显式默认值。
+3. 在需要对象图语义的字段上添加 `fory_ref`/`fory_weak_ref`。
+4. 替换现有序列化路径前,先用 roundtrip 测试验证生成模型行为。
 
-## Summary
+## 总结
 
-FlatBuffers input lets you reuse existing `.fbs` schemas while moving to Fory's
-runtime and code generation model. This is useful for incremental migration,
-while preserving schema investment and adopting Fory-native object APIs.
+FlatBuffers 输入模式可让你复用现有 `.fbs` schema,同时迁移到 Fory 运行时与代码生成模型。它适合渐进式迁移场景:既保留既有 schema 投入,又能采用 Fory 原生对象 API。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/generated-code.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/generated-code.md
index ce33bac1e9..cadf241ab8 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/generated-code.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/generated-code.md
@@ -19,20 +19,18 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
+本文档说明各目标语言的代码生成结果与结构。
 
-本文档说明各目标语言的生成代码结构。
+Fory IDL 生成的类型遵循宿主语言习惯,可直接作为领域对象使用。生成代码同时包含 `to/from bytes` 辅助方法和类型注册辅助逻辑。
 
-Fory IDL generated types are idiomatic in host languages and can be used directly as domain objects. Generated types also include `to/from bytes` helpers and registration helpers.
+## 参考 Schema
 
-## Reference Schemas
+下面示例基于两个真实 schema:
 
-The examples below use two real schemas:
+1. `addressbook.fdl`(显式类型 ID)
+2. `auto_id.fdl`(未显式声明类型 ID)
 
-1. `addressbook.fdl` (explicit type IDs)
-2. `auto_id.fdl` (no explicit type IDs)
-
-### `addressbook.fdl` (excerpt)
+### `addressbook.fdl`(节选)
 
 ```protobuf
 package addressbook;
@@ -79,7 +77,7 @@ message AddressBook [id=103] {
 }
 ```
 
-### `auto_id.fdl` (excerpt)
+### `auto_id.fdl`(节选)
 
 ```protobuf
 package auto_id;
@@ -114,17 +112,17 @@ union Wrapper {
 
 ## Java
 
-### Output Layout
+### 输出布局
 
-For `package addressbook`, Java output is generated under:
+对于 `package addressbook`,Java 输出通常位于:
 
 - `<java_out>/addressbook/`
-- Type files: `AddressBook.java`, `Person.java`, `Dog.java`, `Cat.java`, `Animal.java`
-- Registration helper: `AddressbookForyRegistration.java`
+- 类型文件:`AddressBook.java`、`Person.java`、`Dog.java`、`Cat.java`、`Animal.java`
+- 注册辅助类:`AddressbookForyRegistration.java`
 
-### Type Generation
+### 类型生成
 
-Messages generate Java classes with `@ForyField`, default constructors, getters/setters, and byte helpers:
+message 会生成带 `@ForyField`、默认构造器、getter/setter 以及字节辅助方法的 Java 类:
 
 ```java
 public class Person {
@@ -156,7 +154,7 @@ public class Person {
 }
 ```
 
-Unions generate classes extending `org.apache.fory.type.union.Union`:
+union 会生成继承 `org.apache.fory.type.union.Union` 的类:
 
 ```java
 public final class Animal extends Union {
@@ -177,9 +175,9 @@ public final class Animal extends Union {
 }
 ```
 
-### Registration
+### 注册
 
-Generated registration helper:
+生成的注册辅助方法:
 
 ```java
 public static void register(Fory fory) {
@@ -194,7 +192,7 @@ public static void register(Fory fory) {
 }
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs (for example from `auto_id.fdl`):
+对于未显式 `[id=...]` 的 schema,注册代码会使用计算得到的数值 ID(例如 `auto_id.fdl`):
 
 ```java
 resolver.register(Status.class, 1124725126L);
@@ -204,7 +202,7 @@ resolver.registerUnion(Envelope.Detail.class, 1609214087L, new org.apache.fory.s
 resolver.register(Envelope.Payload.class, 2862577837L);
 ```
 
-If `option enable_auto_type_id = false;` is set, registration uses namespace and type name:
+若设置 `option enable_auto_type_id = false;`,则按命名空间与类型名注册:
 
 ```java
 resolver.register(Config.class, "myapp.models", "Config");
@@ -215,7 +213,7 @@ resolver.registerUnion(
     new org.apache.fory.serializer.UnionSerializer(fory, Holder.class));
 ```
 
-### Usage
+### 使用示例
 
 ```java
 Person person = new Person();
@@ -228,15 +226,15 @@ Person restored = Person.fromBytes(data);
 
 ## Python
 
-### Output Layout
+### 输出布局
 
-Python output is one module per schema file, for example:
+Python 每个 schema 文件生成一个模块,例如:
 
 - `<python_out>/addressbook.py`
 
-### Type Generation
+### 类型生成
 
-Unions generate a case enum plus a `Union` subclass with typed helpers:
+union 生成 case 枚举与 `Union` 子类,并提供类型化辅助方法:
 
 ```python
 class AnimalCase(Enum):
@@ -255,7 +253,7 @@ class Animal(Union):
     def set_dog(self, v: Dog) -> None: ...
 ```
 
-Messages generate `@pyfory.dataclass` types, and nested types stay nested:
+message 生成 `@pyfory.dataclass` 类型,嵌套类型保持嵌套:
 
 ```python
 @pyfory.dataclass
@@ -279,9 +277,9 @@ class Person:
     def from_bytes(cls, data: bytes) -> "Person": ...
 ```
 
-### Registration
+### 注册
 
-Generated registration function:
+生成注册函数:
 
 ```python
 def register_addressbook_types(fory: pyfory.Fory):
@@ -294,7 +292,7 @@ def register_addressbook_types(fory: pyfory.Fory):
     fory.register_type(AddressBook, type_id=103)
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs:
+未显式 `[id=...]` 时,注册代码使用计算得到的数值 ID:
 
 ```python
 fory.register_type(Status, type_id=1124725126)
@@ -304,7 +302,7 @@ fory.register_union(Envelope.Detail, type_id=1609214087, serializer=Envelope.Det
 fory.register_type(Envelope.Payload, type_id=2862577837)
 ```
 
-If `option enable_auto_type_id = false;` is set:
+若设置 `option enable_auto_type_id = false;`:
 
 ```python
 fory.register_type(Config, namespace="myapp.models", typename="Config")
@@ -316,7 +314,7 @@ fory.register_union(
 )
 ```
 
-### Usage
+### 使用示例
 
 ```python
 person = Person(name="Alice", pet=Animal.dog(Dog(name="Rex", bark_volume=10)))
@@ -327,15 +325,15 @@ restored = Person.from_bytes(data)
 
 ## Rust
 
-### Output Layout
+### 输出布局
 
-Rust output is one module file per schema, for example:
+Rust 每个 schema 生成一个模块文件,例如:
 
 - `<rust_out>/addressbook.rs`
 
-### Type Generation
+### 类型生成
 
-Unions map to Rust enums with `#[fory(id = ...)]` case attributes:
+union 映射为 Rust enum,并用 `#[fory(id = ...)]` 声明 case ID:
 
 ```rust
 #[derive(ForyObject, Debug, Clone, PartialEq)]
@@ -347,7 +345,7 @@ pub enum Animal {
 }
 ```
 
-Nested types generate nested modules:
+嵌套类型生成嵌套 module:
 
 ```rust
 pub mod person {
@@ -370,7 +368,7 @@ pub mod person {
 }
 ```
 
-Messages derive `ForyObject` and include `to_bytes`/`from_bytes` helpers:
+message 会 `derive(ForyObject)` 并生成 `to_bytes`/`from_bytes`:
 
 ```rust
 #[derive(ForyObject, Debug, Clone, PartialEq, Default)]
@@ -384,9 +382,9 @@ pub struct Person {
 }
 ```
 
-### Registration
+### 注册
 
-Generated registration function:
+生成注册函数:
 
 ```rust
 pub fn register_types(fory: &mut Fory) -> Result<(), fory::Error> {
@@ -401,7 +399,7 @@ pub fn register_types(fory: &mut Fory) -> Result<(), fory::Error> {
 }
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs:
+未显式 `[id=...]` 时,注册代码使用计算得到的数值 ID:
 
 ```rust
 fory.register::<Status>(1124725126)?;
@@ -411,14 +409,14 @@ fory.register_union::<envelope::Detail>(1609214087)?;
 fory.register::<envelope::Payload>(2862577837)?;
 ```
 
-If `option enable_auto_type_id = false;` is set:
+若设置 `option enable_auto_type_id = false;`:
 
 ```rust
 fory.register_by_namespace::<Config>("myapp.models", "Config")?;
 fory.register_union_by_namespace::<Holder>("myapp.models", "Holder")?;
 ```
 
-### Usage
+### 使用示例
 
 ```rust
 let person = Person {
@@ -433,15 +431,15 @@ let restored = Person::from_bytes(&bytes)?;
 
 ## C++
 
-### Output Layout
+### 输出布局
 
-C++ output is one header per schema file, for example:
+C++ 每个 schema 文件生成一个头文件,例如:
 
 - `<cpp_out>/addressbook.h`
 
-### Type Generation
+### 类型生成
 
-Messages generate `final` classes with typed accessors and byte helpers:
+message 会生成 `final` 类,并包含类型化访问器与字节辅助方法:
 
 ```cpp
 class Person final {
@@ -467,7 +465,7 @@ class Person final {
 };
 ```
 
-Optional message fields generate `has_xxx`, `mutable_xxx`, and `clear_xxx` APIs:
+可选 message 字段会生成 `has_xxx`、`mutable_xxx`、`clear_xxx` API:
 
 ```cpp
 class Envelope final {
@@ -487,7 +485,7 @@ class Envelope final {
 };
 ```
 
-Unions generate `std::variant` wrappers:
+union 会生成基于 `std::variant` 的封装:
 
 ```cpp
 class Animal final {
@@ -517,11 +515,11 @@ class Animal final {
 };
 ```
 
-Generated headers also include `FORY_UNION`, `FORY_FIELD_CONFIG`, `FORY_ENUM`, and `FORY_STRUCT` macros for serialization metadata.
+生成头文件还会包含 `FORY_UNION`、`FORY_FIELD_CONFIG`、`FORY_ENUM`、`FORY_STRUCT` 等序列化元信息宏。
 
-### Registration
+### 注册
 
-Generated registration function:
+生成注册函数:
 
 ```cpp
 inline void register_types(fory::serialization::BaseFory& fory) {
@@ -535,7 +533,7 @@ inline void register_types(fory::serialization::BaseFory& fory) {
 }
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs:
+未显式 `[id=...]` 时,注册代码使用计算得到的数值 ID:
 
 ```cpp
 fory.register_enum<Status>(1124725126);
@@ -545,14 +543,14 @@ fory.register_union<Envelope::Detail>(1609214087);
 fory.register_struct<Envelope::Payload>(2862577837);
 ```
 
-If `option enable_auto_type_id = false;` is set:
+若设置 `option enable_auto_type_id = false;`:
 
 ```cpp
 fory.register_struct<Config>("myapp.models", "Config");
 fory.register_union<Holder>("myapp.models", "Holder");
 ```
 
-### Usage
+### 使用示例
 
 ```cpp
 addressbook::Person person;
@@ -565,17 +563,17 @@ auto restored = addressbook::Person::from_bytes(bytes.value());
 
 ## Go
 
-### Output Layout
+### 输出布局
 
-Go output path depends on schema options and `--go_out`.
+Go 输出路径受 schema 选项与 `--go_out` 共同影响。
 
-For `addressbook.fdl`, `go_package` is configured and generated output follows the configured import path/package (for example under your `--go_out` root).
+对于 `addressbook.fdl`,若配置了 `go_package`,生成结果会遵循对应 import path/package(位于 `--go_out` 根目录下)。
 
-Without `go_package`, output uses the requested `--go_out` directory and package-derived file naming.
+若未配置 `go_package`,则使用 `--go_out` 指定目录,并按 package 规则生成文件名与包名。
 
-### Type Generation
+### 类型生成
 
-Nested types use underscore naming by default (`Person_PhoneType`, `Person_PhoneNumber`):
+嵌套类型默认使用下划线命名(`Person_PhoneType`、`Person_PhoneNumber`):
 
 ```go
 type Person_PhoneType int32
@@ -592,7 +590,7 @@ type Person_PhoneNumber struct {
 }
 ```
 
-Messages generate structs with `fory` tags and byte helpers:
+message 会生成带 `fory` tag 的 struct 与字节辅助方法:
 
 ```go
 type Person struct {
@@ -606,7 +604,7 @@ func (m *Person) ToBytes() ([]byte, error) { ... }
 func (m *Person) FromBytes(data []byte) error { ... }
 ```
 
-Unions generate typed case structs with constructors/accessors/visitor APIs:
+union 会生成 case struct,并提供构造器/访问器/visitor API:
 
 ```go
 type AnimalCase uint32
@@ -624,9 +622,9 @@ func (u Animal) AsDog() (*Dog, bool) { ... }
 func (u Animal) Visit(visitor AnimalVisitor) error { ... }
 ```
 
-### Registration
+### 注册
 
-Generated registration function:
+生成注册函数:
 
 ```go
 func RegisterTypes(f *fory.Fory) error {
@@ -646,7 +644,7 @@ func RegisterTypes(f *fory.Fory) error {
 }
 ```
 
-For schemas without explicit `[id=...]`, generated registration uses computed numeric IDs:
+未显式 `[id=...]` 时,注册代码使用计算得到的数值 ID:
 
 ```go
 if err := f.RegisterEnum(Status(0), 1124725126); err != nil { ... }
@@ -656,20 +654,20 @@ if err := f.RegisterUnion(Envelope_Detail{}, 1609214087, fory.NewUnionSerializer
 if err := f.RegisterStruct(Envelope_Payload{}, 2862577837); err != nil { ... }
 ```
 
-If `option enable_auto_type_id = false;` is set:
+若设置 `option enable_auto_type_id = false;`:
 
 ```go
 if err := f.RegisterNamedStruct(Config{}, "myapp.models.Config"); err != nil { ... }
 if err := f.RegisterNamedUnion(Holder{}, "myapp.models.Holder", fory.NewUnionSerializer(...)); err != nil { ... }
 ```
 
-`go_nested_type_style` controls nested type naming:
+`go_nested_type_style` 可控制嵌套类型命名风格:
 
 ```protobuf
 option go_nested_type_style = "camelcase";
 ```
 
-### Usage
+### 使用示例
 
 ```go
 person := &Person{
@@ -687,30 +685,30 @@ if err := restored.FromBytes(data); err != nil {
 }
 ```
 
-## Cross-Language Notes
+## 跨语言说明
 
-### Type ID Behavior
+### 类型 ID 行为
 
-- Explicit `[id=...]` values are used directly in generated registration.
-- When type IDs are omitted, generated code uses computed numeric IDs (see `auto_id.*` outputs).
-- If `option enable_auto_type_id = false;` is set, generated registration uses namespace/type-name APIs instead of numeric IDs.
+- 显式 `[id=...]` 会直接用于生成注册代码。
+- 未声明类型 ID 时,生成代码会使用计算得到的数值 ID(参见 `auto_id.*` 输出)。
+- 若设置 `option enable_auto_type_id = false;`,则生成代码改为使用 namespace/type-name 注册 API,而非数值 ID。
 
-### Nested Type Shape
+### 嵌套类型形态
 
-| Language | Nested type form               |
-| -------- | ------------------------------ |
-| Java     | `Person.PhoneNumber`           |
-| Python   | `Person.PhoneNumber`           |
-| Rust     | `person::PhoneNumber`          |
-| C++      | `Person::PhoneNumber`          |
-| Go       | `Person_PhoneNumber` (default) |
+| 语言   | 嵌套类型形式                 |
+| ------ | ---------------------------- |
+| Java   | `Person.PhoneNumber`         |
+| Python | `Person.PhoneNumber`         |
+| Rust   | `person::PhoneNumber`        |
+| C++    | `Person::PhoneNumber`        |
+| Go     | `Person_PhoneNumber`(默认) |
 
-### Byte Helper Naming
+### 字节辅助方法命名
 
-| Language | Helpers                   |
-| -------- | ------------------------- |
-| Java     | `toBytes` / `fromBytes`   |
-| Python   | `to_bytes` / `from_bytes` |
-| Rust     | `to_bytes` / `from_bytes` |
-| C++      | `to_bytes` / `from_bytes` |
-| Go       | `ToBytes` / `FromBytes`   |
+| 语言   | 辅助方法名称              |
+| ------ | ------------------------- |
+| Java   | `toBytes` / `fromBytes`   |
+| Python | `to_bytes` / `from_bytes` |
+| Rust   | `to_bytes` / `from_bytes` |
+| C++    | `to_bytes` / `from_bytes` |
+| Go     | `ToBytes` / `FromBytes`   |
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/index.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/index.md
index 58a4817492..8e26cdd387 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/index.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/index.md
@@ -19,15 +19,12 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
-Fory IDL is a schema definition language for Apache Fory that enables type-safe
-cross-language serialization. Define your data structures once and generate
-native data structure code for Java, Python, Go, Rust, and C++.
+Fory IDL 是 Apache Fory 的 Schema 定义语言,可实现类型安全的跨语言序列化。
+你只需定义一次数据结构,即可为 Java、Python、Go、Rust 和 C++ 生成原生数据结构代码。
 
 ## 示例 Schema
 
-Fory IDL provides a simple, intuitive syntax for defining cross-language data structures:
+Fory IDL 提供了简单直观的语法来定义跨语言数据结构:
 
 ```protobuf
 package example;
@@ -73,54 +70,54 @@ union Animal [id=106] {
 }
 ```
 
-## Why Fory IDL?
+## 为什么选择 Fory IDL?
 
-### Schema-First Development
+### Schema 优先开发
 
-Define your data model once in Fory IDL and generate consistent, type-safe code across all languages. This ensures:
+在 Fory IDL 中一次定义数据模型,即可在所有语言中生成一致且类型安全的代码。这样可以确保:
 
-- **Type Safety**: Catch type errors at compile time, not runtime
-- **Consistency**: All languages use the same field names, types, and structures
-- **Documentation**: Schema serves as living documentation
-- **Evolution**: Managed schema changes across all implementations
+- **类型安全**:在编译期而不是运行期发现类型错误
+- **一致性**:各语言使用相同字段名、类型和结构
+- **文档性**:Schema 本身就是可持续演进的文档
+- **可演进性**:可在所有实现中受控地进行 Schema 变更
 
-### Fory-Native Features
+### Fory 原生能力
 
-Unlike generic IDLs, Fory IDL is designed specifically for Fory serialization:
+与通用 IDL 不同,Fory IDL 专门为 Fory 序列化设计:
 
-- **Reference Tracking**: First-class support for shared and circular references via `ref`
-- **Nullable Fields**: Explicit `optional` modifier for nullable types
-- **Type Registration**: Built-in support for both numeric IDs and namespace-based registration
-- **Native Code Generation**: Generates idiomatic code with Fory annotations/macros
+- **引用跟踪**:通过 `ref` 一等支持共享引用和循环引用
+- **可空字段**:通过 `optional` 显式声明可空类型
+- **类型注册**:内置支持数值 ID 与基于命名空间的注册
+- **原生代码生成**:生成带 Fory 注解/宏的语言惯用代码
 
-### Low Integration Overhead
+### 集成开销低
 
-Generated code uses native language constructs:
+生成代码直接使用各语言原生构造:
 
-- Java: Plain POJOs with `@ForyField` annotations
-- Python: Dataclasses with type hints
-- Go: Structs with struct tags
-- Rust: Structs with `#[derive(ForyObject)]`
-- C++: Structs with `FORY_STRUCT` macros
+- Java:带 `@ForyField` 注解的普通 POJO
+- Python:带类型提示的 dataclass
+- Go:带 struct tag 的结构体
+- Rust:带 `#[derive(ForyObject)]` 的结构体
+- C++:带 `FORY_STRUCT` 宏的结构体
 
-## Quick Start
+## 快速开始
 
-### 1. Install the Compiler
+### 1. 安装编译器
 
 ```bash
 pip install fory-compiler
 ```
 
-Or install from source:
+或从源码安装:
 
 ```bash
 cd compiler
 pip install -e .
 ```
 
-### 2. Write Your Schema
+### 2. 编写 Schema
 
-Create `example.fdl`:
+创建 `example.fdl`:
 
 ```protobuf
 package example;
@@ -132,19 +129,19 @@ message Person {
 }
 ```
 
-### 3. Generate Code
+### 3. 生成代码
 
 ```bash
-# Generate for all languages
+# 为所有语言生成
 foryc example.fdl --output ./generated
 
-# Generate for specific languages
+# 为指定语言生成
 foryc example.fdl --lang java,python --output ./generated
 ```
 
-### 4. Use Generated Code
+### 4. 使用生成代码
 
-**Java:**
+**Java:**
 
 ```java
 Person person = new Person();
@@ -153,34 +150,34 @@ person.setAge(30);
 byte[] data = person.toBytes();
 ```
 
-**Python:**
+**Python:**
 
 ```python
 import pyfory
 from example import Person
 
 person = Person(name="Alice", age=30)
-data = bytes(person) # or `person.to_bytes()`
+data = bytes(person) # 或 `person.to_bytes()`
 ```
 
-## Documentation
+## 文档导航
 
-| Document                                        | Description                                       |
-| ----------------------------------------------- | ------------------------------------------------- |
-| [Fory IDL Syntax](schema-idl.md)                | Complete language syntax and grammar              |
-| [Type System](schema-idl.md#type-system)        | Primitive types, collections, and type rules      |
-| [Compiler Guide](compiler-guide.md)             | CLI options and build integration                 |
-| [Generated Code](generated-code.md)             | Output format for each target language            |
-| [Protocol Buffers IDL Support](protobuf-idl.md) | Comparison with protobuf and migration guide      |
-| [FlatBuffers IDL Support](flatbuffers-idl.md)   | FlatBuffers mapping rules and codegen differences |
+| 文档                                         | 说明                               |
+| -------------------------------------------- | ---------------------------------- |
+| [Fory IDL 语法](schema-idl.md)               | 完整语言语法与文法                 |
+| [类型系统](schema-idl.md#type-system)        | 基础类型、集合类型与类型规则       |
+| [编译器指南](compiler-guide.md)              | CLI 选项与构建集成                 |
+| [生成代码](generated-code.md)                | 各目标语言的输出格式               |
+| [Protocol Buffers IDL 支持](protobuf-idl.md) | 与 protobuf 的对比及迁移指南       |
+| [FlatBuffers IDL 支持](flatbuffers-idl.md)   | FlatBuffers 映射规则与代码生成差异 |
 
-## Key Concepts
+## 核心概念
 
-### Field Modifiers
+### 字段修饰符
 
-- **`optional`**: Field can be null/None
-- **`ref`**: Enable reference tracking for shared/circular references
-- **`list`**: Field is a list/array (alias: `repeated`)
+- **`optional`**:字段可为 null/None
+- **`ref`**:为共享/循环引用启用引用跟踪
+- **`list`**:字段为列表/数组(别名:`repeated`)
 
 ```protobuf
 message Example {
@@ -190,26 +187,26 @@ message Example {
 }
 ```
 
-### Cross-Language Compatibility
+### 跨语言兼容
 
-Fory IDL types map to native types in each language:
+Fory IDL 类型会映射为各语言原生类型:
 
-| Fory IDL Type | Java      | Python         | Go       | Rust     | C++           |
+| Fory IDL 类型 | Java      | Python         | Go       | Rust     | C++           |
 | ------------- | --------- | -------------- | -------- | -------- | ------------- |
 | `int32`       | `int`     | `pyfory.int32` | `int32`  | `i32`    | `int32_t`     |
 | `string`      | `String`  | `str`          | `string` | `String` | `std::string` |
 | `bool`        | `boolean` | `bool`         | `bool`   | `bool`   | `bool`        |
 
-See [Type System](schema-idl.md#type-system) for complete mappings.
+完整映射请参见 [类型系统](schema-idl.md#type-system)。
 
-## Best Practices
+## 最佳实践
 
-1. **Use meaningful package names**: Group related types together
-2. **Assign type IDs for performance**: Numeric IDs are faster than name-based registration
-3. **Reserve ID ranges**: Leave gaps for future additions (e.g., 100-199 for users, 200-299 for orders)
-4. **Use `optional` explicitly**: Make nullability clear in the schema
-5. **Use `ref` for shared objects**: Enable reference tracking when objects are shared
+1. **使用有意义的 package 名称**:将相关类型分组管理
+2. **为性能分配类型 ID**:数值 ID 比基于名称的注册更高效
+3. **预留 ID 范围**:为后续扩展保留空隙(例如用户 100-199,订单 200-299)
+4. **显式使用 `optional`**:清晰表达可空语义
+5. **共享对象使用 `ref`**:对象可能被多处引用时开启引用跟踪
 
-## Examples
+## 示例
 
-See the [examples](https://github.com/apache/fory/tree/main/compiler/examples) directory for complete working examples.
+完整可运行示例见 [examples](https://github.com/apache/fory/tree/main/compiler/examples) 目录。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/protobuf-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/protobuf-idl.md
index 2a6865d1e2..d5bb1d8791 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/protobuf-idl.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/protobuf-idl.md
@@ -19,56 +19,50 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
 本页说明 Apache Fory 如何处理 Protocol Buffers(`.proto`)schema、protobuf 概念如何映射到 Fory,以及 protobuf 专用 Fory 扩展选项的使用方式。
 
 ## 本页内容
 
-- Choosing protobuf vs Fory for your use case
-- Syntax and semantic differences that matter during migration
-- Supported Fory extension options in protobuf files
-- Practical migration patterns from protobuf to Fory
+- 如何在具体场景下选择 protobuf 或 Fory
+- 迁移时需要关注的语法与语义差异
+- `.proto` 文件中支持的 Fory 扩展选项
+- 从 protobuf 迁移到 Fory 的实践路径
 
 ## 快速决策指南
 
-| Situation                                                     | Recommended Format |
-| ------------------------------------------------------------- | ------------------ |
-| You are building gRPC APIs and rely on protobuf tooling       | Protocol Buffers   |
-| You need maximum object-graph performance and ref tracking    | Fory               |
-| You need circular/shared references in serialized data        | Fory               |
-| You need strong unknown-field behavior for wire compatibility | Protocol Buffers   |
-| You need native structs/classes instead of protobuf wrappers  | Fory               |
+| 场景                                                  | 建议格式         |
+| ----------------------------------------------------- | ---------------- |
+| 主要构建 gRPC API,依赖 protobuf 工具链               | Protocol Buffers |
+| 需要极致对象图性能与引用跟踪                          | Fory             |
+| 需要在序列化数据中表达循环/共享引用                   | Fory             |
+| 需要强 unknown-field 语义保证线格式兼容               | Protocol Buffers |
+| 希望直接使用原生 struct/class,而非 protobuf 包装类型 | Fory             |
 
 ## Protobuf 与 Fory 对比
 
-| Aspect             | Protocol Buffers              | Fory                                  |
-| ------------------ | ----------------------------- | ------------------------------------- |
-| Primary purpose    | RPC/message contracts         | High-performance object serialization |
-| Encoding model     | Tag-length-value              | Fory binary protocol                  |
-| Reference tracking | Not built-in                  | First-class (`ref`)                   |
-| Circular refs      | Not supported                 | Supported                             |
-| Unknown fields     | Preserved                     | Not preserved                         |
-| Generated types    | Protobuf-specific model types | Native language constructs            |
-| gRPC ecosystem     | Native                        | In progress (active development)      |
+| 维度      | Protocol Buffers      | Fory                   |
+| --------- | --------------------- | ---------------------- |
+| 主要目标  | RPC/消息契约          | 高性能对象序列化       |
+| 编码模型  | Tag-Length-Value      | Fory 二进制协议        |
+| 引用跟踪  | 非内建                | 一等支持(`ref`)      |
+| 循环引用  | 不支持                | 支持                   |
+| 未知字段  | 保留                  | 不保留                 |
+| 生成类型  | protobuf 专用模型类型 | 语言原生构造           |
+| gRPC 生态 | 原生成熟              | 持续建设中(活跃开发) |
 
-Fory gRPC support is under active development. For production gRPC
-workflows today, protobuf remains the mature/default choice.
+Fory 的 gRPC 支持仍在持续开发中。当前生产级 gRPC 工作流里,protobuf 仍是更成熟的默认选择。
 
 ## 为什么使用 Apache Fory
 
-- Idiomatic generated code: Fory IDL generates language-idiomatic classes and
-  structs that can be used directly as domain objects.
-- Faster serialization: In Fory benchmarks, Fory can be around 10x faster than
-  protobuf for object serialization workloads.
-- Better graph modeling: Shared and circular references are first-class features
-  instead of application-level ID-link workarounds.
+- **代码更贴近语言习惯**:Fory IDL 生成的类和结构体可直接作为业务领域对象使用。
+- **序列化性能更高**:在 Fory 基准中,Fory 在对象序列化场景中可显著快于 protobuf。
+- **对象图表达更自然**:共享引用和循环引用是内建能力,无需通过业务层 ID 关联绕过。
 
-See benchmark details under [Performance References](#performance-references).
+性能细节请参见 [性能参考](#性能参考)。
 
-## Syntax and Semantic Mapping
+## 语法与语义映射
 
-### Package and File Options
+### Package 与文件级选项
 
 **Protocol Buffers**
 
@@ -85,10 +79,9 @@ option go_package = "example.com/models";
 package example.models;
 ```
 
-Fory uses one package namespace for cross-language registration. Language-specific
-package placement is still configurable in code generation.
+Fory 使用统一 package 命名空间做跨语言注册。语言特定的包路径仍可在代码生成阶段单独配置。
 
-### Message and Enum Definitions
+### Message 与 Enum 定义
 
 **Protocol Buffers**
 
@@ -126,16 +119,15 @@ enum Status [id=102] {
 }
 ```
 
-Key differences:
+关键差异:
 
-- Fory can assign stable type IDs directly (`[id=...]`).
-- Fory uses `list<T>` (with `repeated T` as alias).
-- Enum naming conventions are language-driven instead of protobuf prefix style.
+- Fory 可直接分配稳定类型 ID(`[id=...]`)。
+- Fory 使用 `list<T>`(`repeated T` 为兼容别名)。
+- 枚举命名更偏向语言习惯,而非 protobuf 前缀风格。
 
-### `oneof` to `union`
+### `oneof` 到 `union`
 
-Protobuf `oneof` is translated to a nested Fory `union` plus an optional field
-referencing that union.
+protobuf 的 `oneof` 会被翻译为嵌套 Fory `union`,并增加一个可选字段指向该 union。
 
 **Protocol Buffers**
 
@@ -148,7 +140,7 @@ message Event {
 }
 ```
 
-**Fory-style shape after translation**
+**转换后的 Fory 结构**
 
 ```protobuf
 message Event {
@@ -160,42 +152,42 @@ message Event {
 }
 ```
 
-Notes:
+说明:
 
-- Union case IDs are derived from the original `oneof` field numbers.
-- The synthetic union field uses the smallest `oneof` case number.
+- union case ID 来自原 `oneof` 字段号。
+- 自动生成的 union 引用字段使用 `oneof` 中最小字段号。
 
-### Imports and Well-Known Types
+### Import 与 Well-Known Types
 
-Protobuf imports are supported. Common well-known types map directly:
+支持 protobuf import。常见 well-known types 会直接映射:
 
 - `google.protobuf.Timestamp` -> `timestamp`
 - `google.protobuf.Duration` -> `duration`
 - `google.protobuf.Any` -> `any`
 
-## 类型映射 Highlights
-
-| Protobuf Type                            | Fory Mapping                             |
-| ---------------------------------------- | ---------------------------------------- |
-| `bool`                                   | `bool`                                   |
-| `int32`, `uint32`                        | variable-length 32-bit integer kinds     |
-| `sint32`                                 | zigzag 32-bit integer                    |
-| `int64`, `uint64`                        | variable-length 64-bit integer kinds     |
-| `sint64`                                 | zigzag 64-bit integer                    |
-| `fixed32`, `fixed64`                     | fixed-width unsigned integer kinds       |
-| `sfixed32`, `sfixed64`                   | fixed-width signed integer kinds         |
-| `float`, `double`                        | `float32`, `float64`                     |
-| `string`, `bytes`                        | `string`, `bytes`                        |
-| `repeated T`                             | `list<T>`                                |
-| `map<K, V>`                              | `map<K, V>`                              |
-| `optional T`                             | `optional T`                             |
-| `oneof`                                  | `union` + optional union reference field |
-| `int64 [(fory).type = "tagged_int64"]`   | `tagged_int64` encoding                  |
-| `uint64 [(fory).type = "tagged_uint64"]` | `tagged_uint64` encoding                 |
-
-## Fory Extension Options (Protobuf)
-
-Fory-specific options in `.proto` use the `(fory).` prefix.
+## 类型映射要点
+
+| Protobuf Type                            | Fory 映射                     |
+| ---------------------------------------- | ----------------------------- |
+| `bool`                                   | `bool`                        |
+| `int32`, `uint32`                        | 可变长 32 位整型家族          |
+| `sint32`                                 | zigzag 32 位整型              |
+| `int64`, `uint64`                        | 可变长 64 位整型家族          |
+| `sint64`                                 | zigzag 64 位整型              |
+| `fixed32`, `fixed64`                     | 定长无符号整型家族            |
+| `sfixed32`, `sfixed64`                   | 定长有符号整型家族            |
+| `float`, `double`                        | `float32`, `float64`          |
+| `string`, `bytes`                        | `string`, `bytes`             |
+| `repeated T`                             | `list<T>`                     |
+| `map<K, V>`                              | `map<K, V>`                   |
+| `optional T`                             | `optional T`                  |
+| `oneof`                                  | `union` + 可选 union 引用字段 |
+| `int64 [(fory).type = "tagged_int64"]`   | `tagged_int64` 编码           |
+| `uint64 [(fory).type = "tagged_uint64"]` | `tagged_uint64` 编码          |
+
+## Fory 扩展选项(Protobuf)
+
+`.proto` 文件中的 Fory 专用选项使用 `(fory).` 前缀。
 
 ```protobuf
 option (fory).enable_auto_type_id = true;
@@ -206,46 +198,46 @@ message TreeNode {
 }
 ```
 
-### File-Level Options
+### 文件级选项
 
-| Option                               | Type   | Description                                                    |
-| ------------------------------------ | ------ | -------------------------------------------------------------- |
-| `(fory).use_record_for_java_message` | bool   | Generate Java records for all messages in this file            |
-| `(fory).polymorphism`                | bool   | Enable polymorphic serialization metadata by default           |
-| `(fory).enable_auto_type_id`         | bool   | Auto-generate type IDs when omitted (compiler default is true) |
-| `(fory).evolving`                    | bool   | Default schema-evolution behavior for messages                 |
-| `(fory).go_nested_type_style`        | string | Go nested naming style: `underscore` (default) or `camelcase`  |
+| 选项                                 | 类型   | 说明                                                |
+| ------------------------------------ | ------ | --------------------------------------------------- |
+| `(fory).use_record_for_java_message` | bool   | 对该文件所有 message 生成 Java record               |
+| `(fory).polymorphism`                | bool   | 默认开启多态序列化元信息                            |
+| `(fory).enable_auto_type_id`         | bool   | 缺失时自动生成类型 ID(编译器默认 true)            |
+| `(fory).evolving`                    | bool   | message 的默认 schema 演进行为                      |
+| `(fory).go_nested_type_style`        | string | Go 嵌套命名风格:`underscore`(默认)或 `camelcase` |
 
-### Message and Enum Options
+### Message 与 Enum 级选项
 
-| Option                       | Applies To    | Type   | Description                              |
-| ---------------------------- | ------------- | ------ | ---------------------------------------- |
-| `(fory).id`                  | message, enum | int    | Explicit type ID for registration        |
-| `(fory).alias`               | message, enum | string | Alternate name used for auto-ID hashing  |
-| `(fory).evolving`            | message       | bool   | Override file-level evolution setting    |
-| `(fory).use_record_for_java` | message       | bool   | Generate Java record for this message    |
-| `(fory).deprecated`          | message, enum | bool   | Mark type as deprecated                  |
-| `(fory).namespace`           | message       | string | Override default package-based namespace |
+| 选项                         | 作用对象      | 类型   | 说明                          |
+| ---------------------------- | ------------- | ------ | ----------------------------- |
+| `(fory).id`                  | message, enum | int    | 显式类型 ID(用于注册)       |
+| `(fory).alias`               | message, enum | string | 自动 ID 哈希使用的别名        |
+| `(fory).evolving`            | message       | bool   | 覆盖文件级演进设置            |
+| `(fory).use_record_for_java` | message       | bool   | 为该 message 生成 Java record |
+| `(fory).deprecated`          | message, enum | bool   | 标记类型为弃用                |
+| `(fory).namespace`           | message       | string | 覆盖默认 package 命名空间     |
 
-### Field-Level Options
+### 字段级选项
 
-| Option                       | Type   | Description                                                  |
-| ---------------------------- | ------ | ------------------------------------------------------------ |
-| `(fory).ref`                 | bool   | Enable reference tracking for this field                     |
-| `(fory).nullable`            | bool   | Treat field as nullable (`optional`)                         |
-| `(fory).weak_ref`            | bool   | Generate weak pointer semantics (C++/Rust codegen)           |
-| `(fory).thread_safe_pointer` | bool   | Rust pointer flavor for ref fields (`Arc` vs `Rc`)           |
-| `(fory).deprecated`          | bool   | Mark field as deprecated                                     |
-| `(fory).type`                | string | Primitive override, currently `tagged_int64`/`tagged_uint64` |
+| 选项                         | 类型   | 说明                                                  |
+| ---------------------------- | ------ | ----------------------------------------------------- |
+| `(fory).ref`                 | bool   | 为该字段启用引用跟踪                                  |
+| `(fory).nullable`            | bool   | 将字段视为可空(`optional`)                          |
+| `(fory).weak_ref`            | bool   | 生成弱指针语义(C++/Rust 代码生成)                   |
+| `(fory).thread_safe_pointer` | bool   | ref 字段在 Rust 中的指针类型(`Arc` vs `Rc`)         |
+| `(fory).deprecated`          | bool   | 标记字段为弃用                                        |
+| `(fory).type`                | string | 基础类型覆盖,目前支持 `tagged_int64`/`tagged_uint64` |
 
-Reference option behavior:
+引用相关行为:
 
-- `weak_ref = true` implies ref tracking.
-- For `repeated` fields, `(fory).ref = true` applies to list elements.
-- For `map<K, V>` fields, `(fory).ref = true` applies to map values.
-- `weak_ref` and `thread_safe_pointer` are codegen hints for C++/Rust.
+- `weak_ref = true` 隐含开启 ref 跟踪。
+- 对 `repeated` 字段,`(fory).ref = true` 作用于列表元素。
+- 对 `map<K, V>` 字段,`(fory).ref = true` 作用于 map value。
+- `weak_ref` 与 `thread_safe_pointer` 是 C++/Rust 代码生成提示。
 
-### Option Examples by Shape
+### 典型选项组合示例
 
 ```protobuf
 message Graph {
@@ -256,12 +248,11 @@ message Graph {
 }
 ```
 
-## Reference Tracking vs Protobuf IDs
+## 引用跟踪 vs Protobuf ID 关联
 
-Protobuf itself does not preserve shared/cyclic object graphs. With Fory
-protobuf extensions, you can opt into graph semantics.
+protobuf 本身不保留共享/循环对象图。借助 Fory protobuf 扩展,可以显式启用对象图语义。
 
-**Without Fory ref options (protobuf-style IDs):**
+**不使用 Fory ref 选项(protobuf 风格 ID 关联):**
 
 ```protobuf
 message TreeNode {
@@ -271,7 +262,7 @@ message TreeNode {
 }
 ```
 
-**With Fory ref options (object graph):**
+**使用 Fory ref 选项(对象图语义):**
 
 ```protobuf
 message TreeNode {
@@ -280,37 +271,34 @@ message TreeNode {
 }
 ```
 
-## Migration Guide: Protobuf to Fory
+## 迁移指南:Protobuf 到 Fory
 
-### Step 1: Translate Schema Syntax
+### 第 1 步:转换 schema 语法
 
-- Keep package names stable.
-- Replace `repeated T` with `list<T>` (or keep `repeated` alias).
-- Add explicit `[id=...]` where you need stable numeric registration.
+- 保持 package 名称稳定。
+- 将 `repeated T` 改为 `list<T>`(或保留 `repeated` 别名)。
+- 在需要稳定数值注册的位置添加显式 `[id=...]`。
 
-### Step 2: Convert `oneof` and Special Types
+### 第 2 步:处理 `oneof` 与特殊类型
 
-- `oneof` -> `union` + optional union field.
-- Map protobuf well-known types to Fory primitives (`timestamp`, `duration`, `any`).
+- `oneof` -> `union` + 可选 union 字段。
+- 将 protobuf well-known types 映射到 Fory 基础类型(`timestamp`、`duration`、`any`)。
 
-### Step 3: Replace Protobuf Workarounds with `ref`
+### 第 3 步:用 `ref` 替换 protobuf 的对象图绕过方案
 
-Where protobuf used manual ID links for object graphs, switch to Fory `ref`
-modifiers (and optional `ref(weak=true)` where needed).
+若 protobuf 里通过手工 ID 关联表达对象图,迁移到 Fory 后应改用 `ref` 修饰符(必要时使用 `ref(weak=true)`)。
 
-### Step 4: Update Build/Codegen
+### 第 4 步:更新构建与代码生成
 
-Replace protobuf generation steps with the Fory compiler invocation for target
-languages.
+将 protobuf 代码生成步骤替换为 Fory 编译器针对目标语言的生成命令。
 
-### Step 5: Run Compatibility Checks
+### 第 5 步:执行兼容性验证
 
-For staged migrations, keep both formats in parallel and verify payload-level
-parity with integration tests.
+分阶段迁移时,可并行保留两种格式,并通过集成测试验证 payload 级一致性。
 
-## Coexistence Strategy
+## 共存策略
 
-You can run protobuf and Fory in parallel during migration:
+迁移期间可以并行运行 protobuf 与 Fory:
 
 ```java
 public byte[] serialize(Object obj, Format format) {
@@ -321,16 +309,13 @@ public byte[] serialize(Object obj, Format format) {
 }
 ```
 
-Use translators at service boundaries while internal object-graph heavy paths
-migrate first.
+可在服务边界设置转换层,并优先迁移内部对象图较重的链路。
 
-## Performance References
+## 性能参考
 
 - Benchmarks: https://fory.apache.org/docs/introduction/benchmark
 - Benchmark code: https://github.com/apache/fory/tree/main/benchmarks
 
-## Summary
+## 总结
 
-Use protobuf when your primary concern is API contracts and gRPC ecosystem
-integration. Use Fory when object-graph performance, native models, and
-reference semantics are the primary concern.
+当主要关注 API 契约与 gRPC 生态时,建议使用 protobuf。若主要关注对象图性能、原生数据模型与引用语义,建议使用 Fory。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/schema-idl.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/schema-idl.md
index ee420bd790..be6d5c6b2a 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/schema-idl.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/compiler/schema-idl.md
@@ -19,37 +19,19 @@ license: |
   limitations under the License.
 ---
 
-## 中文章节导读
+本文档给出 Fory IDL 的语法与语义参考,覆盖文件结构、类型系统、字段规则、选项与类型注册策略。
 
-本文描述 Fory IDL 的语法与语义规则,覆盖文件结构、声明、类型定义、字段约束、注解与扩展选项。它是编译器前端解析与代码生成的基础约束文档。
-
-阅读时可重点关注:
-
-1. **文件级结构**:package、option、import 与类型声明顺序。
-2. **类型系统语法**:enum/message/union 及字段声明规则。
-3. **字段标签与属性**:字段 ID、可空、引用、默认值与兼容性约束。
-4. **命名与作用域**:类型可见性、嵌套声明与名称解析。
-5. **与 protobuf/flatbuffers 的映射关系**:迁移与互操作规则。
-
-为保证编译行为一致,语法关键字、示例 schema 与标识符保持英文;说明性段落使用中文。
-
-> 中文导读:本文档为 Fory 编译器/协议规范文档的中文译稿。为避免改变规范语义,代码片段、类型名、协议字段名保持英文,说明性文字优先翻译为中文。
-
-本文档提供 Fory IDL 的语法与语义参考。
-
-For compiler usage and build integration, see
-[Compiler Guide](compiler-guide.md). For protobuf/FlatBuffers frontend mapping
-rules, see [Protocol Buffers IDL Support](protobuf-idl.md) and
-[FlatBuffers IDL Support](flatbuffers-idl.md).
+编译器使用方式与构建集成请参见 [Compiler Guide](compiler-guide.md)。
+protobuf/FlatBuffers 前端映射请参见 [Protocol Buffers IDL Support](protobuf-idl.md) 与 [FlatBuffers IDL Support](flatbuffers-idl.md)。
 
 ## 文件结构
 
-An Fory IDL file typically consists of:
+一个 Fory IDL 文件通常包含:
 
-1. Optional package declaration
-2. Optional file-level options
-3. Optional import statements
-4. Type definitions (enums, messages, and unions)
+1. 可选 `package` 声明
+2. 可选文件级 `option`
+3. 可选 `import` 语句
+4. 类型定义(`enum`、`message`、`union`)
 
 ```protobuf
 // Optional package declaration
@@ -70,7 +52,7 @@ union Event [id=103] { ... }
 
 ## 注释
 
-Fory IDL supports both single-line and block comments:
+支持单行注释与块注释:
 
 ```protobuf
 // This is a single-line comment
@@ -85,51 +67,51 @@ message Example {
 }
 ```
 
-## Package Declaration
+## Package 声明
 
-The package declaration defines the namespace for all types in the file.
+`package` 定义文件中所有类型的命名空间。
 
 ```protobuf
 package com.example.models;
 ```
 
-You can optionally specify a package alias used for auto-generated type IDs:
+也可以配置 alias(用于自动类型 ID 计算):
 
 ```protobuf
 package com.example.models alias models_v1;
 ```
 
-**Rules:**
+规则:
 
-- Optional but recommended
-- Must appear before any type definitions
-- Only one package declaration per file
-- Used for namespace-based type registration
-- Package alias is used for auto-ID hashing
+- 可选但推荐
+- 必须位于任何类型定义之前
+- 每个文件最多一个 `package`
+- 用于命名空间注册
+- `alias` 会参与 auto-ID 哈希
 
-**Language Mapping:**
+语言映射:
 
-| Language | Package Usage                     |
-| -------- | --------------------------------- |
-| Java     | Java package                      |
-| Python   | Module name (dots to underscores) |
-| Go       | Package name (last component)     |
-| Rust     | Module name (dots to underscores) |
-| C++      | Namespace (dots to `::`)          |
+| 语言   | package 用法            |
+| ------ | ----------------------- |
+| Java   | Java package            |
+| Python | 模块名(`.` 转 `_`)    |
+| Go     | 包名(通常取最后一段)  |
+| Rust   | 模块名(`.` 转 `_`)    |
+| C++    | 命名空间(`.` 转 `::`) |
 
-## File-Level Options
+## 文件级选项
 
-Options can be specified at file level to control language-specific code generation.
+文件级选项用于控制语言定制代码生成。
 
-### Syntax
+### 语法
 
 ```protobuf
 option option_name = value;
 ```
 
-### Java Package Option
+### Java Package 选项
 
-Override the Java package for generated code:
+通过 `java_package` 覆盖 Java 输出包名:
 
 ```protobuf
 package payment;
@@ -140,15 +122,15 @@ message Payment {
 }
 ```
 
-**Effect:**
+效果:
 
-- Generated Java files will be in `com/mycorp/payment/v1/` directory
-- Java package declaration will be `package com.mycorp.payment.v1;`
-- Type registration still uses the Fory IDL package (`payment`) for cross-language compatibility
+- Java 文件输出到 `com/mycorp/payment/v1/`
+- Java `package` 声明使用该值
+- 跨语言类型注册仍以 Fory package(如 `payment`)为准
 
-### Go Package Option
+### Go Package 选项
 
-Specify the Go import path and package name:
+通过 `go_package` 指定 Go import path 与包名:
 
 ```protobuf
 package payment;
@@ -159,17 +141,11 @@ message Payment {
 }
 ```
 
-**Format:** `"import/path;package_name"` or just `"import/path"` (last segment used as package name)
-
-**Effect:**
-
-- Generated Go files will have `package paymentv1`
-- The import path can be used in other Go code
-- Type registration still uses the Fory IDL package (`payment`) for cross-language compatibility
+格式:`"import/path;package_name"` 或仅 `"import/path"`(包名取最后一段)。
 
-### Java Outer Classname Option
+### Java Outer Classname 选项
 
-Generate all types as inner classes of a single outer wrapper class:
+将多个类型包装到一个外层类:
 
 ```protobuf
 package payment;
@@ -186,49 +162,11 @@ message Payment {
 }
 ```
 
-**Effect:**
-
-- Generates a single file `DescriptorProtos.java` instead of separate files
-- All enums and messages become `public static` inner classes
-- The outer class is `public final` with a private constructor
-- Useful for grouping related types together
-
-**Generated structure:**
-
-```java
-public final class DescriptorProtos {
-    private DescriptorProtos() {}
-
-    public static enum Status {
-        UNKNOWN,
-        ACTIVE;
-    }
-
-    public static class Payment {
-        private String id;
-        private Status status;
-        // ...
-    }
-}
-```
-
-**Combined with java_package:**
+默认会生成单文件,枚举与消息作为静态内部类型。
 
-```protobuf
-package payment;
-option java_package = "com.example.proto";
-option java_outer_classname = "PaymentProtos";
+### Java Multiple Files 选项
 
-message Payment {
-    string id = 1;
-}
-```
-
-This generates `com/example/proto/PaymentProtos.java` with all types as inner classes.
-
-### Java Multiple Files Option
-
-Control whether types are generated in separate files or as inner classes:
+控制 Java 是否拆分多文件:
 
 ```protobuf
 package payment;
@@ -244,1171 +182,556 @@ message Receipt {
 }
 ```
 
-**Behavior:**
-
-| `java_outer_classname` | `java_multiple_files` | Result                                      |
-| ---------------------- | --------------------- | ------------------------------------------- |
-| Not set                | Any                   | Separate files (one per type)               |
-| Set                    | `false` (default)     | Single file with all types as inner classes |
-| Set                    | `true`                | Separate files (overrides outer class)      |
+行为:
 
-**Effect of `java_multiple_files = true`:**
+| `java_outer_classname` | `java_multiple_files` | 结果             |
+| ---------------------- | --------------------- | ---------------- |
+| 未设置                 | 任意                  | 每个类型一个文件 |
+| 已设置                 | `false`(默认)       | 单文件 + 内部类  |
+| 已设置                 | `true`                | 强制拆分为多文件 |
 
-- Each top-level enum and message gets its own `.java` file
-- Overrides `java_outer_classname` behavior
-- Useful when you want separate files but still specify an outer class name for other purposes
-
-**Example without java_multiple_files (default):**
-
-```protobuf
-option java_outer_classname = "PaymentProtos";
-// Generates: PaymentProtos.java containing Payment and Receipt as inner classes
-```
-
-**Example with java_multiple_files = true:**
-
-```protobuf
-option java_outer_classname = "PaymentProtos";
-option java_multiple_files = true;
-// Generates: Payment.java, Receipt.java (separate files)
-```
-
-### Multiple Options
-
-Multiple options can be specified:
+### 多个选项组合
 
 ```protobuf
 package payment;
 option java_package = "com.mycorp.payment.v1";
 option go_package = "github.com/mycorp/apis/gen/payment/v1;paymentv1";
 option deprecated = true;
-
-message Payment {
-    string id = 1;
-}
 ```
 
-### Protobuf Extension Syntax
+### Protobuf 扩展语法说明
 
-In `.fdl` files, use native Fory IDL syntax only (for example, `[id=100]`, `ref`,
-`optional`, `nullable=true`).
+在 `.fdl` 中请使用 Fory 原生语法(如 `[id=100]`、`ref`、`optional`、`nullable=true`)。
+`(fory).xxx` 形式仅用于 `.proto`(protobuf 前端)。
 
-Protobuf extension syntax with `(fory).` is for `.proto` files and the protobuf
-frontend only.
+### 选项优先级
 
-For protobuf extension options, see
-[Protocol Buffers IDL Support](protobuf-idl.md#fory-extension-options-protobuf).
+语言包路径优先级:
 
-### Option Priority
+1. 命令行覆盖(最高)
+2. 语言选项(`java_package`、`go_package`)
+3. Fory IDL `package`(兜底)
 
-For language-specific packages:
+### 跨语言类型注册
 
-1. Command-line package override (highest priority)
-2. Language-specific option (`java_package`, `go_package`)
-3. Fory IDL package declaration (fallback)
-
-**Example:**
-
-```protobuf
-package myapp.models;
-option java_package = "com.example.generated";
-```
+默认情况下,注册名由 `package + type name`(或类型 ID)确定。建议长期保持 `package` 稳定,以避免跨版本注册不一致。
 
-| Scenario                  | Java Package Used         |
-| ------------------------- | ------------------------- |
-| No override               | `com.example.generated`   |
-| CLI: `--package=override` | `override`                |
-| No java_package option    | `myapp.models` (fallback) |
+## Import 语句
 
-### Cross-Language Type Registration
-
-Language-specific options only affect where code is generated, not the type namespace used for serialization. This ensures cross-language compatibility:
-
-```protobuf
-package myapp.models;
-option java_package = "com.mycorp.generated";
-option go_package = "github.com/mycorp/gen;genmodels";
-
-message User {
-    string name = 1;
-}
-```
-
-All languages will register `User` with namespace `myapp.models`, enabling:
-
-- Java serialized data → Go deserialization
-- Go serialized data → Java deserialization
-- Any language combination works seamlessly
-
-## Import Statement
-
-Import statements allow you to use types defined in other Fory IDL files.
-
-### Basic Syntax
+### 基本语法
 
 ```protobuf
-import "path/to/file.fdl";
+import "common/types.fdl";
 ```
 
-### Multiple Imports
+### 多个导入
 
 ```protobuf
 import "common/types.fdl";
-import "common/enums.fdl";
-import "models/address.fdl";
+import "domain/user.fdl";
+import "domain/order.fdl";
 ```
 
-### Path Resolution
+### 路径解析
 
-Import paths are resolved relative to the importing file:
+导入解析顺序:
 
-```
-project/
-├── common/
-│   └── types.fdl
-├── models/
-│   ├── user.fdl      # import "../common/types.fdl"
-│   └── order.fdl     # import "../common/types.fdl"
-└── main.fdl          # import "common/types.fdl"
-```
+1. 导入者文件所在目录
+2. 命令行 `-I/--proto_path/--import_path` 指定目录(按给定顺序)
 
-**Rules:**
-
-- Import paths are quoted strings (double or single quotes)
-- Paths are resolved relative to the importing file's directory
-- Imported types become available as if defined in the current file
-- Circular imports are detected and reported as errors
-- Transitive imports work (if A imports B and B imports C, A has access to C's types)
-
-### Complete Example
-
-**common/types.fdl:**
+### 完整示例
 
 ```protobuf
-package common;
+// src/main.fdl
+package app;
 
-enum Status [id=100] {
-    PENDING = 0;
-    ACTIVE = 1;
-    COMPLETED = 2;
-}
+import "common.fdl";
+import "models/user.fdl";
 
-message Address [id=101] {
-    string street = 1;
-    string city = 2;
-    string country = 3;
+message Main {
+    common.Meta meta = 1;
+    models.User user = 2;
 }
 ```
 
-**models/user.fdl:**
-
-```protobuf
-package models;
-import "../common/types.fdl";
-
-message User [id=200] {
-    string id = 1;
-    string name = 2;
-    Address home_address = 3;  // Uses imported type
-    Status status = 4;          // Uses imported enum
-}
-```
-
-### Unsupported Import Syntax
-
-The following protobuf import modifiers are **not supported**:
-
-```protobuf
-// NOT SUPPORTED - will produce an error
-import public "other.fdl";
-import weak "other.fdl";
-```
+### 不支持的 import 写法
 
-**`import public`**: Fory IDL uses a simpler import model. All imported types are available to the importing file only. Re-exporting is not supported. Import each file directly where needed.
+- URL 形式(如 `https://...`)
+- 绝对路径依赖(不推荐,会破坏可移植性)
 
-**`import weak`**: Fory IDL requires all imports to be present at compile time. Optional dependencies are not supported.
+### import 错误
 
-### Import Errors
+典型错误:
 
-The compiler reports errors for:
+- 文件不存在
+- 搜索路径未包含依赖目录
+- 同名文件冲突导致解析到错误版本
 
-- **File not found**: The imported file doesn't exist
-- **Circular import**: A imports B which imports A (directly or indirectly)
-- **Parse errors**: Syntax errors in imported files
-- **Unsupported syntax**: `import public` or `import weak`
+## Enum 定义
 
-## Enum Definition
-
-Enums define a set of named integer constants.
-
-### Basic Syntax
+### 基本语法
 
 ```protobuf
 enum Status {
-    PENDING = 0;
+    UNKNOWN = 0;
     ACTIVE = 1;
-    COMPLETED = 2;
+    DISABLED = 2;
 }
 ```
 
-### With Explicit Type ID
+### 显式类型 ID
 
 ```protobuf
-enum Status [id=100] {
-    PENDING = 0;
+enum Status [id=101] {
+    UNKNOWN = 0;
     ACTIVE = 1;
-    COMPLETED = 2;
+    DISABLED = 2;
 }
 ```
 
-### Reserved Values
-
-Reserve field numbers or names to prevent reuse:
+### 预留值
 
 ```protobuf
 enum Status {
-    reserved 2, 15, 9 to 11, 40 to max;  // Reserved numbers
-    reserved "OLD_STATUS", "DEPRECATED"; // Reserved names
-    PENDING = 0;
-    ACTIVE = 1;
-    COMPLETED = 3;
-}
-```
-
-### Enum Type Options
-
-Enum-level options are declared inline in `[]` after the enum name:
-
-```protobuf
-enum Status [deprecated=true] {
-    PENDING = 0;
+    UNKNOWN = 0;
     ACTIVE = 1;
+    reserved 2, 3;
+    reserved 10 to 20;
 }
 ```
 
-FDL does not support `option ...;` statements inside enum bodies.
-
-**Unsupported:**
-
-- `allow_alias` is **not supported**. Each enum value must have a unique integer.
-
-### Language Mapping
-
-| Language | Implementation                         |
-| -------- | -------------------------------------- |
-| Java     | `enum Status { UNKNOWN, ACTIVE, ... }` |
-| Python   | `class Status(IntEnum): UNKNOWN = 0`   |
-| Go       | `type Status int32` with constants     |
-| Rust     | `#[repr(i32)] enum Status { Unknown }` |
-| C++      | `enum class Status : int32_t { ... }`  |
-
-### Enum Prefix Stripping
-
-When enum values use a protobuf-style prefix (enum name in UPPER_SNAKE_CASE), the compiler automatically strips the prefix for languages with scoped enums:
-
-```protobuf
-// Input with prefix
-enum DeviceTier {
-    DEVICE_TIER_UNKNOWN = 0;
-    DEVICE_TIER_TIER1 = 1;
-    DEVICE_TIER_TIER2 = 2;
-}
-```
-
-**Generated code:**
+### enum 类型选项
 
-| Language | Output                                    | Style          |
-| -------- | ----------------------------------------- | -------------- |
-| Java     | `UNKNOWN, TIER1, TIER2`                   | Scoped enum    |
-| Rust     | `Unknown, Tier1, Tier2`                   | Scoped enum    |
-| C++      | `UNKNOWN, TIER1, TIER2`                   | Scoped enum    |
-| Python   | `UNKNOWN, TIER1, TIER2`                   | Scoped IntEnum |
-| Go       | `DeviceTierUnknown, DeviceTierTier1, ...` | Unscoped const |
+常见:`id`、`alias`、`deprecated`。
 
-**Note:** The prefix is only stripped if the remainder is a valid identifier. For example, `DEVICE_TIER_1` is kept unchanged because `1` is not a valid identifier name.
+### 语言映射
 
-**Grammar:**
+- Java:`enum`
+- Python:`IntEnum`
+- Go:`type + const`
+- Rust:`repr(i32)` 枚举
+- C++:`enum class`
 
-```
-enum_def     := 'enum' IDENTIFIER [type_options] '{' enum_body '}'
-type_options := '[' type_option (',' type_option)* ']'
-type_option  := IDENTIFIER '=' option_value
-enum_body    := (reserved_stmt | enum_value)*
-reserved_stmt := 'reserved' reserved_items ';'
-enum_value   := IDENTIFIER '=' INTEGER ';'
-```
-
-**Rules:**
-
-- Enum names must be unique within the file
-- Enum values must have explicit integer assignments
-- Value integers must be unique within the enum (no aliases)
-- Type ID (`[id=100]`) is optional for enums but recommended for cross-language use
-
-**Example with All Features:**
-
-```protobuf
-// HTTP status code categories
-enum HttpCategory [id=200] {
-    reserved 10 to 20;           // Reserved for future use
-    reserved "UNKNOWN";          // Reserved name
-    INFORMATIONAL = 1;
-    SUCCESS = 2;
-    REDIRECTION = 3;
-    CLIENT_ERROR = 4;
-    SERVER_ERROR = 5;
-}
-```
+### 枚举前缀处理
 
-## Message Definition
+针对 protobuf 风格 `TYPE_NAME_VALUE`,生成器通常会按语言习惯去除冗余前缀,使 API 更自然。
 
-Messages define structured data types with typed fields.
+## Message 定义
 
-### Basic Syntax
+### 基本语法
 
 ```protobuf
-message Person {
-    string name = 1;
-    int32 age = 2;
-}
-```
-
-### With Explicit Type ID
-
-```protobuf
-message Person [id=101] {
+message User {
     string name = 1;
     int32 age = 2;
 }
 ```
 
-### Without Explicit Type ID
+### 显式类型 ID
 
 ```protobuf
-message Person {  // Auto-generated when enable_auto_type_id = true
+message User [id=100] {
     string name = 1;
     int32 age = 2;
 }
 ```
 
-### Language Mapping
+### 无显式类型 ID
 
-| Language | Implementation                      |
-| -------- | ----------------------------------- |
-| Java     | POJO class with getters/setters     |
-| Python   | `@dataclass` class                  |
-| Go       | Struct with exported fields         |
-| Rust     | Struct with `#[derive(ForyObject)]` |
-| C++      | Struct with `FORY_STRUCT` macro     |
+未声明 `[id=...]` 时,编译器可按配置自动生成类型 ID,或使用 namespace/name 注册。
 
-Type IDs control cross-language registration for messages, unions, and enums. See
-[Type IDs](#type-ids) for auto-generation, aliases, and collision handling.
+### 语言映射
 
-### Reserved Fields
+- Java:类 / record(按选项)
+- Python:dataclass
+- Go:struct
+- Rust:struct
+- C++:class/struct + 宏元信息
 
-Reserve field numbers or names to prevent reuse after removing fields:
+### 预留字段
 
 ```protobuf
 message User {
-    reserved 2, 15, 9 to 11;       // Reserved field numbers
-    reserved "old_field", "temp";  // Reserved field names
-    string id = 1;
-    string name = 3;
-}
-```
-
-### Message Type Options
-
-Message-level options are declared inline in `[]` after the message name:
-
-```protobuf
-message User [deprecated=true] {
-    string id = 1;
-    string name = 2;
+    string name = 1;
+    reserved 2, 3;
+    reserved 10 to 20;
 }
 ```
 
-FDL does not support `option ...;` statements inside message or enum bodies.
-
-**Grammar:**
-
-```
-message_def  := 'message' IDENTIFIER [type_options] '{' message_body '}'
-type_options := '[' type_option (',' type_option)* ']'
-type_option  := IDENTIFIER '=' option_value
-message_body := (reserved_stmt | nested_type | field_def)*
-nested_type  := enum_def | message_def | union_def
-```
-
-**Rules:**
-
-- Type IDs follow the rules in [Type IDs](#type-ids).
+### message 类型选项
 
-## Nested Types
+常见选项:`id`、`alias`、`evolving`、`deprecated`、`namespace`、`use_record_for_java`。
 
-Messages can contain nested message, enum, and union definitions. This is useful for defining types that are closely related to their parent message.
+## 嵌套类型
 
-### Nested Messages
+### 嵌套 message
 
 ```protobuf
-message SearchResponse {
-    message Result {
-        string url = 1;
-        string title = 2;
-        list<string> snippets = 3;
-    }
-    list<Result> results = 1;
-}
-```
-
-### Nested Enums
-
-```protobuf
-message Container {
-    enum Status {
-        STATUS_UNKNOWN = 0;
-        STATUS_ACTIVE = 1;
-        STATUS_INACTIVE = 2;
+message Person {
+    message PhoneNumber {
+        string number = 1;
     }
-    Status status = 1;
+    PhoneNumber phone = 1;
 }
 ```
 
-### Qualified Type Names
-
-Nested types can be referenced from other messages using qualified names (Parent.Child):
+### 嵌套 enum
 
 ```protobuf
-message SearchResponse {
-    message Result {
-        string url = 1;
-        string title = 2;
+message Person {
+    enum PhoneType {
+        MOBILE = 0;
+        HOME = 1;
     }
-}
-
-message SearchResultCache {
-    // Reference nested type with qualified name
-    SearchResponse.Result cached_result = 1;
-    list<SearchResponse.Result> all_results = 2;
+    PhoneType type = 1;
 }
 ```
 
-### Deeply Nested Types
+### 限定类型名
 
-Nesting can be multiple levels deep:
+可使用完整限定名引用嵌套类型,例如 `Person.PhoneNumber`。
 
-```protobuf
-message Outer {
-    message Middle {
-        message Inner {
-            string value = 1;
-        }
-        Inner inner = 1;
-    }
-    Middle middle = 1;
-}
-
-message OtherMessage {
-    // Reference deeply nested type
-    Outer.Middle.Inner deep_ref = 1;
-}
-```
+### 深层嵌套类型
 
-### Language-Specific Generation
+支持多层嵌套,但建议控制层级,避免可读性下降。
 
-| Language | Nested Type Generation                                                            |
-| -------- | --------------------------------------------------------------------------------- |
-| Java     | Static inner classes (`SearchResponse.Result`)                                    |
-| Python   | Nested classes within dataclass                                                   |
-| Go       | Flat structs with underscore (`SearchResponse_Result`, configurable to camelcase) |
-| Rust     | Nested modules (`search_response::Result`)                                        |
-| C++      | Nested classes (`SearchResponse::Result`)                                         |
+### 各语言生成形态
 
-**Note:** Go defaults to underscore-separated nested names; set `option go_nested_type_style = "camelcase";` to use concatenated names. Rust emits nested modules for nested types.
+| 语言   | 嵌套类型形态          |
+| ------ | --------------------- |
+| Java   | `Outer.Inner`         |
+| Python | `Outer.Inner`         |
+| Rust   | `outer::Inner`        |
+| C++    | `Outer::Inner`        |
+| Go     | `Outer_Inner`(默认) |
 
-### Nested Type Rules
+### 嵌套规则
 
-- Nested type names must be unique within their parent message
-- Nested types can have their own type IDs
-- Numeric type IDs must be globally unique (including nested types); see [Type IDs](#type-ids)
-  for auto-generation and collision handling
-- Within a message, you can reference nested types by simple name
-- From outside, use the qualified name (Parent.Child)
+- 嵌套类型名在其父作用域内必须唯一
+- 可被同文件后续类型引用
+- 可通过 import + 限定名跨文件引用
 
-## Union Definition
+## Union 定义
 
-Unions define a value that can hold exactly one of several case types.
-
-### Basic Syntax
+### 基本语法
 
 ```protobuf
-union Animal [id=106] {
+union Animal {
     Dog dog = 1;
     Cat cat = 2;
 }
 ```
 
-### Using a Union in a Message
+### 在 message 中使用 union
 
 ```protobuf
-message Person [id=100] {
+message Person {
     Animal pet = 1;
-    optional Animal favorite_pet = 2;
 }
 ```
 
-### Rules
-
-- Case IDs must be unique within the union
-- Cases cannot be `optional` or `ref`
-- Union cases do not support field options
-- Case types can be primitives, enums, messages, or other named types
-- Union type IDs follow the rules in [Type IDs](#type-ids).
-
-**Grammar:**
+### 规则
 
-```
-union_def  := 'union' IDENTIFIER [type_options] '{' union_field* '}'
-union_field := field_type IDENTIFIER '=' INTEGER ';'
-```
+- case 字段号必须唯一
+- case 类型通常为消息类型或可序列化复合类型
+- 各语言会生成带 case 判别和访问器的 union 表达
 
-## Field Definition
+## 字段定义
 
-Fields define the properties of a message.
-
-### Basic Syntax
+### 基本语法
 
 ```protobuf
-field_type field_name = field_number;
+string name = 1;
 ```
 
-### With Modifiers
+### 带修饰符语法
 
 ```protobuf
-optional list<string> tags = 1;  // Nullable list
-list<optional string> tags = 2;  // Elements may be null
-ref list<Node> nodes = 3;        // Collection tracked as a reference
-list<ref Node> nodes = 4;        // Elements tracked as references
+optional string nickname = 2;
+ref Node parent = 3;
+list<int32> scores = 4;
 ```
 
-**Grammar:**
-
-```
-field_def    := [modifiers] field_type IDENTIFIER '=' INTEGER ';'
-modifiers    := { 'optional' | 'ref' }
-field_type   := primitive_type | named_type | list_type | map_type
-list_type    := 'list' '<' { 'optional' | 'ref' } field_type '>'
-```
-
-Modifiers apply to the field/collection. Use `list<...>` to describe element
-modifiers. `repeated` is accepted as an alias for `list`.
-
-### Field Modifiers
+### 字段修饰符
 
 #### `optional`
 
-Marks the field as nullable:
+声明字段可为空(null/None):
 
 ```protobuf
 message User {
-    string name = 1;           // Required, non-null
-    optional string email = 2; // Nullable
+    optional string email = 1;
 }
 ```
 
-**Generated Code:**
-
-| Language | Non-optional       | Optional                                        |
-| -------- | ------------------ | ----------------------------------------------- |
-| Java     | `String name`      | `String email` with `@ForyField(nullable=true)` |
-| Python   | `name: str`        | `name: Optional[str]`                           |
-| Go       | `Name string`      | `Name *string`                                  |
-| Rust     | `name: String`     | `name: Option<String>`                          |
-| C++      | `std::string name` | `std::optional<std::string> name`               |
-
-**Default Values:**
-
-| Type               | Default Value       |
-| ------------------ | ------------------- |
-| Non-optional types | Language default    |
-| Optional types     | `null`/`None`/`nil` |
+建议在跨语言场景显式使用,以避免默认值差异。
 
 #### `ref`
 
-Enables reference tracking for shared/circular references:
+开启引用跟踪,用于共享对象与循环结构:
 
 ```protobuf
 message Node {
-    string value = 1;
-    ref Node parent = 2;     // Can point to shared object
+    string name = 1;
+    ref Node parent = 2;
     list<ref Node> children = 3;
 }
 ```
 
-**Use Cases:**
-
-- Shared objects (same object referenced multiple times)
-- Circular references (object graphs with cycles)
-- Tree structures with parent pointers
-
-**Generated Code:**
-
-| Language | Without `ref`  | With `ref`                                |
-| -------- | -------------- | ----------------------------------------- |
-| Java     | `Node parent`  | `Node parent` with `@ForyField(ref=true)` |
-| Python   | `parent: Node` | `parent: Node = pyfory.field(ref=True)`   |
-| Go       | `Parent Node`  | `Parent *Node` with `fory:"ref"`          |
-| Rust     | `parent: Node` | `parent: Arc<Node>`                       |
-| C++      | `Node parent`  | `std::shared_ptr<Node> parent`            |
-
-Rust uses `Arc` by default; use `ref(thread_safe=false)` or `ref(weak=true)`
-to customize pointer types. For protobuf option syntax, see
-[Protocol Buffers IDL Support](protobuf-idl.md#field-level-options).
+当运行时全局 ref tracking 开启时,字段级 `ref` 才会生效。
 
 #### `list`
 
-Marks the field as a list/array:
+列表字段(`repeated` 为等价别名):
 
 ```protobuf
-message Document {
+message Group {
     list<string> tags = 1;
-    list<User> authors = 2;
 }
 ```
 
-**Generated Code:**
-
-| Language | Type                       |
-| -------- | -------------------------- |
-| Java     | `List<String>`             |
-| Python   | `List[str]`                |
-| Go       | `[]string`                 |
-| Rust     | `Vec<String>`              |
-| C++      | `std::vector<std::string>` |
+### 组合修饰符
 
-### Combining Modifiers
-
-Modifiers can be combined:
-
-```fdl
-message Example {
-    optional list<string> tags = 1;  // Nullable list
-    list<optional string> aliases = 2; // Elements may be null
-    ref list<Node> nodes = 3;          // Collection tracked as a reference
-    list<ref Node> children = 4;       // Elements tracked as references
-    optional ref User owner = 5;          // Nullable tracked reference
-}
-```
-
-Modifiers before `list` apply to the field/collection. Modifiers after `list`
-apply to elements. `repeated` is accepted as an alias for `list`.
-
-**List modifier mapping:**
-
-| Fory IDL                | Java                                           | Python                                  | Go                      | Rust                  | C++                                       |
-| ----------------------- | ---------------------------------------------- | --------------------------------------- | ----------------------- | --------------------- | ----------------------------------------- |
-| `optional list<string>` | `List<String>` + `@ForyField(nullable = true)` | `Optional[List[str]]`                   | `[]string` + `nullable` | `Option<Vec<String>>` | `std::optional<std::vector<std::string>>` |
-| `list<optional string>` | `List<String>` (nullable elements)             | `List[Optional[str]]`                   | `[]*string`             | `Vec<Option<String>>` | `std::vector<std::optional<std::string>>` |
-| `ref list<User>`        | `List<User>` + `@ForyField(ref = true)`        | `List[User]` + `pyfory.field(ref=True)` | `[]User` + `ref`        | `Arc<Vec<User>>`      | `std::shared_ptr<std::vector<User>>`      |
-| `list<ref User>`        | `List<User>`                                   | `List[User]`                            | `[]*User` + `ref=false` | `Vec<Arc<User>>`      | `std::vector<std::shared_ptr<User>>`      |
-
-Use `ref(thread_safe=false)` in Fory IDL (or `[(fory).thread_safe_pointer = false]` in protobuf)
-to generate `Rc` instead of `Arc` in Rust.
-
-## Field Numbers
-
-Each field must have a unique positive integer identifier:
+可组合使用:
 
 ```protobuf
-message Example {
-    string first = 1;
-    string second = 2;
-    string third = 3;
+message Graph {
+    optional ref Node root = 1;
+    list<ref Node> nodes = 2;
 }
 ```
 
-**Rules and best practices:**
+## 字段号
 
-- Numbers must be unique within a message.
-- Numbers must be positive integers.
-- Gaps are allowed and are useful when fields are removed.
-- Prefer sequential numbering from `1`.
-- Never reuse a removed field number for a different field.
+字段号规则:
 
-## Type System
+- 同一 message 内必须唯一
+- 必须为正整数
+- 不应复用已删除字段号(建议使用 `reserved`)
+- 建议预留编号区间以便演进
 
-Fory IDL provides a cross-language type system for primitives, named types, and
-collections. Field modifiers (`optional`, `list`, `ref`) control nullability,
-collection behavior, and reference tracking (see
-[Field Modifiers](#field-modifiers)).
+## Type System {#type-system}
+
+Fory IDL 类型系统包括基础类型、命名类型和集合类型。
 
 ### Primitive Types
 
-| Type            | Description                               | Size     |
-| --------------- | ----------------------------------------- | -------- |
-| `bool`          | Boolean value                             | 1 byte   |
-| `int8`          | Signed 8-bit integer                      | 1 byte   |
-| `int16`         | Signed 16-bit integer                     | 2 bytes  |
-| `int32`         | Signed 32-bit integer (varint encoding)   | 4 bytes  |
-| `int64`         | Signed 64-bit integer (varint encoding)   | 8 bytes  |
-| `uint8`         | Unsigned 8-bit integer                    | 1 byte   |
-| `uint16`        | Unsigned 16-bit integer                   | 2 bytes  |
-| `uint32`        | Unsigned 32-bit integer (varint encoding) | 4 bytes  |
-| `uint64`        | Unsigned 64-bit integer (varint encoding) | 8 bytes  |
-| `fixed_int32`   | Signed 32-bit integer (fixed encoding)    | 4 bytes  |
-| `fixed_int64`   | Signed 64-bit integer (fixed encoding)    | 8 bytes  |
-| `fixed_uint32`  | Unsigned 32-bit integer (fixed encoding)  | 4 bytes  |
-| `fixed_uint64`  | Unsigned 64-bit integer (fixed encoding)  | 8 bytes  |
-| `tagged_int64`  | Signed 64-bit integer (tagged encoding)   | 8 bytes  |
-| `tagged_uint64` | Unsigned 64-bit integer (tagged encoding) | 8 bytes  |
-| `float32`       | 32-bit floating point                     | 4 bytes  |
-| `float64`       | 64-bit floating point                     | 8 bytes  |
-| `string`        | UTF-8 string                              | Variable |
-| `bytes`         | Binary data                               | Variable |
-| `date`          | Calendar date                             | Variable |
-| `timestamp`     | Date and time with timezone               | Variable |
-| `duration`      | Duration                                  | Variable |
-| `decimal`       | Decimal value                             | Variable |
-| `any`           | Dynamic value (runtime type)              | Variable |
+| 类型族   | 示例                              |
+| -------- | --------------------------------- |
+| 布尔     | `bool`                            |
+| 整数     | `int8/int16/int32/int64`、`uint*` |
+| 浮点     | `float32`、`float64`              |
+| 字符串   | `string`                          |
+| 字节数组 | `bytes`                           |
+| 时间     | `date`、`timestamp`、`duration`   |
+| 动态类型 | `any`                             |
 
 #### Boolean
 
-| Language | Type                  | Notes              |
-| -------- | --------------------- | ------------------ |
-| Java     | `boolean` / `Boolean` | Primitive or boxed |
-| Python   | `bool`                |                    |
-| Go       | `bool`                |                    |
-| Rust     | `bool`                |                    |
-| C++      | `bool`                |                    |
+`bool` 表示布尔值。
 
 #### Integer Types
 
-Fory IDL provides fixed-width signed integers (varint encoding for 32/64-bit by default):
-
-| Fory IDL Type | Size   | Range             |
-| ------------- | ------ | ----------------- |
-| `int8`        | 8-bit  | -128 to 127       |
-| `int16`       | 16-bit | -32,768 to 32,767 |
-| `int32`       | 32-bit | -2^31 to 2^31 - 1 |
-| `int64`       | 64-bit | -2^63 to 2^63 - 1 |
-
-**Language Mapping (Signed):**
-
-| Fory IDL | Java    | Python         | Go      | Rust  | C++       |
-| -------- | ------- | -------------- | ------- | ----- | --------- |
-| `int8`   | `byte`  | `pyfory.int8`  | `int8`  | `i8`  | `int8_t`  |
-| `int16`  | `short` | `pyfory.int16` | `int16` | `i16` | `int16_t` |
-| `int32`  | `int`   | `pyfory.int32` | `int32` | `i32` | `int32_t` |
-| `int64`  | `long`  | `pyfory.int64` | `int64` | `i64` | `int64_t` |
-
-Fory IDL provides fixed-width unsigned integers (varint encoding for 32/64-bit by default):
-
-| Fory IDL | Size   | Range         |
-| -------- | ------ | ------------- |
-| `uint8`  | 8-bit  | 0 to 255      |
-| `uint16` | 16-bit | 0 to 65,535   |
-| `uint32` | 32-bit | 0 to 2^32 - 1 |
-| `uint64` | 64-bit | 0 to 2^64 - 1 |
-
-**Language Mapping (Unsigned):**
-
-| Fory IDL | Java    | Python          | Go       | Rust  | C++        |
-| -------- | ------- | --------------- | -------- | ----- | ---------- |
-| `uint8`  | `short` | `pyfory.uint8`  | `uint8`  | `u8`  | `uint8_t`  |
-| `uint16` | `int`   | `pyfory.uint16` | `uint16` | `u16` | `uint16_t` |
-| `uint32` | `long`  | `pyfory.uint32` | `uint32` | `u32` | `uint32_t` |
-| `uint64` | `long`  | `pyfory.uint64` | `uint64` | `u64` | `uint64_t` |
+支持有符号/无符号与不同位宽。跨语言场景建议明确编码策略并保持字段语义稳定。
 
 #### Integer Encoding Variants
 
-For 32/64-bit integers, Fory IDL uses varint encoding by default. Use explicit types when
-you need fixed-width or tagged encoding:
+常见编码:
 
-| Fory IDL Type   | Encoding | Notes                    |
-| --------------- | -------- | ------------------------ |
-| `fixed_int32`   | fixed    | Signed 32-bit            |
-| `fixed_int64`   | fixed    | Signed 64-bit            |
-| `fixed_uint32`  | fixed    | Unsigned 32-bit          |
-| `fixed_uint64`  | fixed    | Unsigned 64-bit          |
-| `tagged_int64`  | tagged   | Signed 64-bit (hybrid)   |
-| `tagged_uint64` | tagged   | Unsigned 64-bit (hybrid) |
+- `varint`:小值更省空间
+- `fixed`:固定长度,性能稳定
+- `tagged`:混合编码(特定类型可用)
 
 #### Floating-Point Types
 
-| Fory IDL Type | Size   | Precision     |
-| ------------- | ------ | ------------- |
-| `float32`     | 32-bit | ~7 digits     |
-| `float64`     | 64-bit | ~15-16 digits |
-
-**Language Mapping:**
-
-| Fory IDL  | Java     | Python           | Go        | Rust  | C++      |
-| --------- | -------- | ---------------- | --------- | ----- | -------- |
-| `float32` | `float`  | `pyfory.float32` | `float32` | `f32` | `float`  |
-| `float64` | `double` | `pyfory.float64` | `float64` | `f64` | `double` |
+- `float32`
+- `float64`
 
 #### String Type
 
-| Language | Type          | Notes                 |
-| -------- | ------------- | --------------------- |
-| Java     | `String`      | Immutable             |
-| Python   | `str`         |                       |
-| Go       | `string`      | Immutable             |
-| Rust     | `String`      | Owned, heap-allocated |
-| C++      | `std::string` |                       |
+`string` 使用 UTF-8 文本语义。
 
 #### Bytes Type
 
-| Language | Type                   | Notes     |
-| -------- | ---------------------- | --------- |
-| Java     | `byte[]`               |           |
-| Python   | `bytes`                | Immutable |
-| Go       | `[]byte`               |           |
-| Rust     | `Vec<u8>`              |           |
-| C++      | `std::vector<uint8_t>` |           |
+`bytes` 用于原始二进制载荷。
 
 #### Temporal Types
 
 ##### Date
 
-| Language | Type                        | Notes                   |
-| -------- | --------------------------- | ----------------------- |
-| Java     | `java.time.LocalDate`       |                         |
-| Python   | `datetime.date`             |                         |
-| Go       | `time.Time`                 | Time portion ignored    |
-| Rust     | `chrono::NaiveDate`         | Requires `chrono` crate |
-| C++      | `fory::serialization::Date` |                         |
+`date` 表示日期(不含时区时间部分)。
 
 ##### Timestamp
 
-| Language | Type                             | Notes                   |
-| -------- | -------------------------------- | ----------------------- |
-| Java     | `java.time.Instant`              | UTC-based               |
-| Python   | `datetime.datetime`              |                         |
-| Go       | `time.Time`                      |                         |
-| Rust     | `chrono::NaiveDateTime`          | Requires `chrono` crate |
-| C++      | `fory::serialization::Timestamp` |                         |
+`timestamp` 表示时间点(跨语言应统一时间语义与精度预期)。
 
 #### Any
 
-| Language | Type           | Notes                |
-| -------- | -------------- | -------------------- |
-| Java     | `Object`       | Runtime type written |
-| Python   | `Any`          | Runtime type written |
-| Go       | `any`          | Runtime type written |
-| Rust     | `Box<dyn Any>` | Runtime type written |
-| C++      | `std::any`     | Runtime type written |
-
-**Example:**
-
-```protobuf
-enum EventType [id=120] {
-    CREATED = 0;
-    DELETED = 1;
-}
-
-message UserCreated [id=121] {
-    string user_id = 1;
-}
-
-message Envelope [id=122] {
-    EventType type = 1;
-    any payload = 2;
-}
-```
-
-**Generated Code (`Envelope.payload`):**
-
-| Language | Generated Field Type    |
-| -------- | ----------------------- |
-| Java     | `Object payload`        |
-| Python   | `payload: Any`          |
-| Go       | `Payload any`           |
-| Rust     | `payload: Box<dyn Any>` |
-| C++      | `std::any payload`      |
-
-**Notes:**
-
-- `any` always writes a null flag (same as `nullable`) because values may be empty.
-- Allowed runtime values are limited to `bool`, `string`, `enum`, `message`, and `union`.
-  Other primitives (numeric, bytes, date/time) and list/map are not supported; wrap them in a
-  message or use explicit fields instead.
-- `ref` is not allowed on `any` fields (including list/map values). Wrap `any` in a message
-  if you need reference tracking.
-- The runtime type must be registered in the target language schema/IDL registration; unknown
-  types fail to deserialize.
+`any` 允许存储动态类型值。使用 `any` 时建议配合清晰的业务约束,避免滥用导致模型不稳定。
 
 ### Named Types
 
-Reference other messages, enums, or unions by name:
+命名类型包括:
 
-```protobuf
-enum Status { ... }
-message User { ... }
+- `enum`
+- `message`
+- `union`
 
-message Order {
-    User customer = 1;    // Reference to User message
-    Status status = 2;    // Reference to Status enum
-}
-```
+支持跨文件 import 和限定名引用。
 
 ### Collection Types
 
 #### List (`list`)
 
-Use the `list<...>` type for list fields. `repeated` is accepted as an alias. See [Field Modifiers](#field-modifiers) for
-modifier combinations and language mapping.
+```protobuf
+list<T>
+```
 
-Nested collection types are not supported. Use a message wrapper if you need
-`list<list<...>>`, `list<map<...>>`, or `map<..., list<...>>`.
+等价别名:`repeated T`。
 
 #### Map
 
-Maps with typed keys and values:
-
 ```protobuf
-message Config {
-    map<string, string> properties = 1;
-    map<string, int32> counts = 2;
-    map<int32, User> users = 3;
-}
+map<K, V>
 ```
 
-**Language Mapping:**
-
-| Fory IDL             | Java                   | Python            | Go                 | Rust                    | C++                              |
-| -------------------- | ---------------------- | ----------------- | ------------------ | ----------------------- | -------------------------------- |
-| `map<string, int32>` | `Map<String, Integer>` | `Dict[str, int]`  | `map[string]int32` | `HashMap<String, i32>`  | `std::map<std::string, int32_t>` |
-| `map<string, User>`  | `Map<String, User>`    | `Dict[str, User]` | `map[string]User`  | `HashMap<String, User>` | `std::map<std::string, User>`    |
-
-**Key Type Restrictions:**
+约束:
 
-- `string` (most common)
-- Integer types (`int8`, `int16`, `int32`, `int64`)
-- `bool`
-
-Avoid using messages or complex types as keys.
+- `K` 一般应为可稳定比较的标量类型
+- `V` 可为任意支持类型
 
 ### Type Compatibility Matrix
 
-This matrix shows which type conversions are safe across languages:
-
-| From -> To | bool | int8 | int16 | int32 | int64 | float32 | float64 | string |
-| ---------- | ---- | ---- | ----- | ----- | ----- | ------- | ------- | ------ |
-| bool       | Y    | Y    | Y     | Y     | Y     | -       | -       | -      |
-| int8       | -    | Y    | Y     | Y     | Y     | Y       | Y       | -      |
-| int16      | -    | -    | Y     | Y     | Y     | Y       | Y       | -      |
-| int32      | -    | -    | -     | Y     | Y     | -       | Y       | -      |
-| int64      | -    | -    | -     | -     | Y     | -       | -       | -      |
-| float32    | -    | -    | -     | -     | -     | Y       | Y       | -      |
-| float64    | -    | -    | -     | -     | -     | -       | Y       | -      |
-| string     | -    | -    | -     | -     | -     | -       | -       | Y      |
+跨语言建议:
 
-Y = Safe conversion, - = Not recommended
+- 使用各语言都稳定支持的公共子集
+- 尽量避免平台相关宽度/语义差异
+- 对整数编码与可空语义显式声明
 
 ### Best Practices
 
-- Use `int32` as the default for most integers; use `int64` for large values.
-- Use `string` for text data (UTF-8) and `bytes` for binary data.
-- Use `optional` only when the field may legitimately be absent.
-- Use `ref` only when needed for shared or circular references.
-- Prefer `list` for ordered sequences and `map` for key-value lookups.
+1. 优先使用显式字段号与稳定命名
+2. 需要可空就显式 `optional`
+3. 存在共享/循环关系时使用 `ref`
+4. 降低 `any` 使用范围,优先强类型建模
+5. 预留字段号与枚举值区间
 
 ## Type IDs
 
-Type IDs enable efficient cross-language serialization and are used for
-messages, unions, and enums. When `enable_auto_type_id = true` (default) and
-`id` is omitted, the compiler auto-generates one using
-`MurmurHash3(utf8(package.type_name))` (32-bit) and annotates it in generated
-code. When `enable_auto_type_id = false`, types without explicit IDs are
-registered by namespace and name instead. Collisions are detected at
-compile-time across the current file and all imports; when a collision occurs,
-the compiler raises an error and asks for an explicit `id` or an `alias`.
-
-```protobuf
-enum Color [id=100] { ... }
-message User [id=101] { ... }
-union Event [id=102] { ... }
-```
-
-Enum type IDs remain optional; if omitted they are auto-generated using the same
-hash when `enable_auto_type_id = true`.
+类型 ID 用于跨语言快速注册与解码匹配。
 
-### With Explicit Type ID
+### 显式类型 ID
 
 ```protobuf
-message User [id=101] { ... }
-message User [id=101, deprecated=true] { ... }  // Multiple options
+message User [id=100] {
+    string name = 1;
+}
 ```
 
-### Without Explicit Type ID
+### 无显式类型 ID
 
-```protobuf
-message Config { ... }  // Auto-generated when enable_auto_type_id = true
-```
+未显式声明时可:
 
-You can set `[alias="..."]` to change the hash source without renaming the type.
+- 自动生成数值 ID(默认配置)
+- 禁用自动 ID,改用 namespace/type-name 注册
 
-### Practical Notes
+### 实践说明
 
-- If a type omits `id` and `enable_auto_type_id = true`, Fory generates an ID
-  with `MurmurHash3(utf8(package.type_name))` (32-bit).
-- Package alias and type alias change the hash input and can be used to resolve
-  hash collisions without renaming public types.
-- Manual IDs in the small varint range (`0-127`) are compact on the wire; auto
-  IDs are typically larger and usually consume 4-5 bytes.
+- 类型 ID 在协议层面应视为稳定标识
+- 一经发布,不建议更改
+- 建议按域规划 ID 段(如 100-199 用户域)
 
-### ID Assignment Strategy
+### ID 分配策略
 
-```protobuf
-// Enums: 100-199
-enum Status [id=100] { ... }
-enum Priority [id=101] { ... }
+- 核心高频模型优先分配固定 ID
+- 团队统一管理 ID 区间与分配规范
+- 在 CI 中增加 ID 冲突检查
 
-// User domain: 200-299
-message User [id=200] { ... }
-message UserProfile [id=201] { ... }
+## 完整示例
 
-// Order domain: 300-399
-message Order [id=300] { ... }
-message OrderItem [id=301] { ... }
-```
+```protobuf
+package demo.order;
 
-## Complete Example
+option java_package = "com.example.demo.order";
+option go_package = "github.com/example/demo/gen/order;order";
 
-```protobuf
-// E-commerce domain model
-package com.shop.models;
-
-// Enums with type IDs
-enum OrderStatus [id=100] {
-    PENDING = 0;
-    CONFIRMED = 1;
-    SHIPPED = 2;
-    DELIVERED = 3;
-    CANCELLED = 4;
-}
+import "demo/common.fdl";
 
-enum PaymentMethod [id=101] {
-    CREDIT_CARD = 0;
-    DEBIT_CARD = 1;
-    PAYPAL = 2;
-    BANK_TRANSFER = 3;
+enum Status [id=200] {
+    UNKNOWN = 0;
+    CREATED = 1;
+    PAID = 2;
+    SHIPPED = 3;
 }
 
-// Messages with type IDs
-message Address [id=200] {
-    string street = 1;
-    string city = 2;
-    string state = 3;
-    string country = 4;
-    string postal_code = 5;
+message Item [id=201] {
+    string sku = 1;
+    int32 quantity = 2;
 }
 
-message Customer [id=201] {
+message User [id=202] {
     string id = 1;
     string name = 2;
     optional string email = 3;
-    optional string phone = 4;
-    optional Address billing_address = 5;
-    optional Address shipping_address = 6;
 }
 
-message Product [id=202] {
-    string sku = 1;
-    string name = 2;
-    string description = 3;
-    float64 price = 4;
-    int32 stock = 5;
-    list<string> categories = 6;
-    map<string, string> attributes = 7;
+union Animal [id=203] {
+    Dog dog = 1;
+    Cat cat = 2;
 }
 
-message OrderItem [id=203] {
-    ref Product product = 1;  // Track reference to avoid duplication
-    int32 quantity = 2;
-    float64 unit_price = 3;
+message Dog [id=204] {
+    string name = 1;
 }
 
-message Order [id=204] {
-    string id = 1;
-    ref Customer customer = 2;
-    list<OrderItem> items = 3;
-    OrderStatus status = 4;
-    PaymentMethod payment_method = 5;
-    float64 total = 6;
-    optional string notes = 7;
-    timestamp created_at = 8;
-    optional timestamp shipped_at = 9;
+message Cat [id=205] {
+    string name = 1;
 }
 
-// Config without explicit type ID (auto-generated when enable_auto_type_id = true)
-message ShopConfig {
-    string store_name = 1;
-    string currency = 2;
-    float64 tax_rate = 3;
-    list<string> supported_countries = 4;
+message Order [id=206] {
+    string id = 1;
+    ref User buyer = 2;
+    list<Item> items = 3;
+    Status status = 4;
+    map<string, string> metadata = 5;
+    optional Animal pet = 6;
 }
 ```
 
-For protobuf-specific extension options and `(fory).` syntax, see
-[Protocol Buffers IDL Support](protobuf-idl.md#fory-extension-options-protobuf).
+## 语法摘要
 
-## Grammar Summary
+以下为简化文法(便于快速查阅,具体以编译器实现为准):
 
+```ebnf
+file            = [packageDecl] {optionDecl} {importDecl} {typeDecl} ;
+
+packageDecl     = "package" qualifiedName ["alias" identifier] ";" ;
+optionDecl      = "option" identifier "=" optionValue ";" ;
+importDecl      = "import" stringLiteral ";" ;
+
+typeDecl        = enumDecl | messageDecl | unionDecl ;
+
+enumDecl        = "enum" identifier [typeOptions] "{" {enumField | reservedDecl} "}" ;
+enumField       = identifier "=" intLiteral ";" ;
+
+messageDecl     = "message" identifier [typeOptions] "{" {fieldDecl | nestedTypeDecl | reservedDecl} "}" ;
+unionDecl       = "union" identifier [typeOptions] "{" {unionCaseDecl} "}" ;
+
+fieldDecl       = [fieldModifier] typeRef identifier "=" intLiteral [fieldOptions] ";" ;
+unionCaseDecl   = typeRef identifier "=" intLiteral [fieldOptions] ";" ;
+
+fieldModifier   = "optional" | "ref" | "list" ;
+
+typeRef         = primitiveType | qualifiedName | listType | mapType ;
+listType        = "list" "<" typeRef ">" ;
+mapType         = "map" "<" typeRef "," typeRef ">" ;
+
+typeOptions     = "[" optionPair {"," optionPair} "]" ;
+fieldOptions    = "[" optionPair {"," optionPair} "]" ;
+optionPair      = identifier "=" optionValue ;
+
+reservedDecl    = "reserved" reservedItem {"," reservedItem} ";" ;
+reservedItem    = intLiteral | intLiteral "to" intLiteral | stringLiteral ;
 ```
-file         := [package_decl] file_option* import_decl* type_def*
-
-package_decl := 'package' package_name ['alias' package_name] ';'
-package_name := IDENTIFIER ('.' IDENTIFIER)*
-
-file_option  := 'option' option_name '=' option_value ';'
-option_name  := IDENTIFIER
-
-import_decl  := 'import' STRING ';'
-
-type_def     := enum_def | message_def | union_def
-
-enum_def     := 'enum' IDENTIFIER [type_options] '{' enum_body '}'
-enum_body    := (reserved_stmt | enum_value)*
-enum_value   := IDENTIFIER '=' INTEGER ';'
-
-message_def  := 'message' IDENTIFIER [type_options] '{' message_body '}'
-message_body := (reserved_stmt | nested_type | field_def)*
-nested_type  := enum_def | message_def | union_def
-field_def    := [modifiers] field_type IDENTIFIER '=' INTEGER [field_options] ';'
-
-union_def    := 'union' IDENTIFIER [type_options] '{' union_field* '}'
-union_field  := ['repeated'] field_type IDENTIFIER '=' INTEGER [field_options] ';'
-option_value := 'true' | 'false' | IDENTIFIER | INTEGER | STRING
-
-reserved_stmt := 'reserved' reserved_items ';'
-reserved_items := reserved_item (',' reserved_item)*
-reserved_item := INTEGER | INTEGER 'to' INTEGER | INTEGER 'to' 'max' | STRING
-
-modifiers    := { 'optional' | 'ref' | 'repeated' }
-
-field_type   := primitive_type | named_type | list_type | map_type
-primitive_type := 'bool'
-               | 'int8' | 'int16' | 'int32' | 'int64'
-               | 'uint8' | 'uint16' | 'uint32' | 'uint64'
-               | 'fixed_int32' | 'fixed_int64' | 'fixed_uint32' | 'fixed_uint64'
-               | 'tagged_int64' | 'tagged_uint64'
-               | 'float32' | 'float64'
-               | 'string' | 'bytes'
-               | 'date' | 'timestamp' | 'duration' | 'decimal'
-               | 'any'
-named_type   := qualified_name
-qualified_name := IDENTIFIER ('.' IDENTIFIER)*   // e.g., Parent.Child
-list_type    := 'list' '<' { 'optional' | 'ref' } field_type '>'
-map_type     := 'map' '<' field_type ',' field_type '>'
-
-type_options := '[' type_option (',' type_option)* ']'
-type_option  := IDENTIFIER '=' option_value         // e.g., id=100, deprecated=true
-field_options := '[' field_option (',' field_option)* ']'
-field_option := IDENTIFIER '=' option_value         // e.g., deprecated=true, ref=true
-
-STRING       := '"' [^"\n]* '"' | "'" [^'\n]* "'"
-IDENTIFIER   := [a-zA-Z_][a-zA-Z0-9_]*
-INTEGER      := '-'? [0-9]+
-```
+
+实现建议:如需严谨验证,请以编译器语法解析器和测试用例为准。
diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/guide/cpp/field-configuration.md b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/guide/cpp/field-configuration.md
index 0c18e125ce..4dd404c290 100644
--- a/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/guide/cpp/field-configuration.md
+++ b/i18n/zh-CN/docusaurus-plugin-content-docs/version-0.15/guide/cpp/field-configuration.md
@@ -19,25 +19,22 @@ license: |
   limitations under the License.
 ---
 
-> 中文导读:本页介绍字段级序列化配置,包括字段 ID、可空控制、引用跟踪、忽略字段与动态类型控制等。
-> 建议在跨语言和兼容模式场景中优先显式配置字段 ID,并在需要时开启 ref/nullable 以保证行为一致。
-
-本页说明如何配置序列化的字段级元信息。
+本页说明如何在 C++ 中配置序列化字段级元信息。
 
 ## 概述
 
-Apache Fory™ provides two ways to specify field-level metadata at compile time:
+Apache Fory™ 在编译期提供两种字段元信息配置方式:
 
-1. **`fory::field<>` template** - Inline metadata in struct definition
-2. **`FORY_FIELD_TAGS` macro** - Non-invasive metadata added separately
+1. **`fory::field<>` 模板**:在 struct 定义中内联声明元信息
+2. **`FORY_FIELD_TAGS` 宏**:在 struct 外部附加元信息(非侵入)
 
-These enable:
+这些机制可用于:
 
-- **Tag IDs**: Assign compact numeric IDs for schema evolution
-- **Nullability**: Mark pointer fields as nullable
-- **Reference Tracking**: Enable reference tracking for shared pointers
+- **Tag ID**:为 schema 演进分配紧凑数值 ID
+- **可空控制**:将指针字段标记为可空
+- **引用跟踪**:为共享指针启用引用跟踪
 
-## fory::field 模板
+## `fory::field` 模板
 
 ```cpp
 template <typename T, int16_t Id, typename... Options>
@@ -46,11 +43,11 @@ class field;
 
 ### 模板参数
 
-| Parameter | Description                                      |
-| --------- | ------------------------------------------------ |
-| `T`       | The underlying field type                        |
-| `Id`      | Field tag ID (int16_t) for compact serialization |
-| `Options` | Optional tags: `fory::nullable`, `fory::ref`     |
+| 参数      | 说明                                       |
+| --------- | ------------------------------------------ |
+| `T`       | 底层字段类型                               |
+| `Id`      | 字段 tag ID(`int16_t`),用于紧凑序列化   |
+| `Options` | 可选标签:`fory::nullable`、`fory::ref` 等 |
 
 ### 基本用法
 
@@ -67,7 +64,7 @@ struct Person {
 FORY_STRUCT(Person, name, age, nickname);
 ```
 
-The `fory::field<>` wrapper is transparent - you can use it like the underlying type:
+`fory::field<>` 是透明包装,可像底层类型一样使用:
 
 ```cpp
 Person person;
@@ -79,9 +76,9 @@ int a = person.age.get();        // Explicit get()
 
 ## 标签类型
 
-### fory::nullable
+### `fory::nullable`
 
-Marks a smart pointer field as nullable (can be `nullptr`):
+将智能指针字段标记为可空(可为 `nullptr`):
 
 ```cpp
 struct Node {
@@ -91,9 +88,9 @@ struct Node {
 FORY_STRUCT(Node, name, next);
 ```
 
-**Valid for:** `std::shared_ptr<T>`, `std::unique_ptr<T>`
+**适用类型:** `std::shared_ptr<T>`、`std::unique_ptr<T>`
 
-**Note:** For nullable primitives or strings, use `std::optional<T>` instead:
+**说明:** 对原生值类型或字符串的可空语义,请使用 `std::optional<T>`:
 
 ```cpp
 // Correct: use std::optional for nullable primitives
@@ -103,19 +100,19 @@ fory::field<std::optional<int32_t>, 0> optional_value;
 // fory::field<int32_t, 0, fory::nullable> value;  // Compile error!
 ```
 
-### fory::not_null
+### `fory::not_null`
 
-Explicitly marks a pointer field as non-nullable. This is the default for smart pointers, but can be used for documentation:
+显式声明指针字段不可空。虽然这是智能指针的默认行为,但可用于增强可读性:
 
 ```cpp
 fory::field<std::shared_ptr<Data>, 0, fory::not_null> data;  // Must not be nullptr
 ```
 
-**Valid for:** `std::shared_ptr<T>`, `std::unique_ptr<T>`
+**适用类型:** `std::shared_ptr<T>`、`std::unique_ptr<T>`
 
-### fory::ref
+### `fory::ref`
 
-Enables reference tracking for shared pointer fields. When multiple fields reference the same object, it will be serialized once and shared:
+为共享指针字段启用引用跟踪。多个字段引用同一对象时,仅序列化一次并保持共享关系:
 
 ```cpp
 struct Graph {
@@ -126,27 +123,27 @@ struct Graph {
 FORY_STRUCT(Graph, name, left, right);
 ```
 
-**Valid for:** `std::shared_ptr<T>` only (requires shared ownership)
+**适用类型:** 仅 `std::shared_ptr<T>`(需要共享所有权)
 
-### Combining Tags
+### 组合标签
 
-Multiple tags can be combined for shared pointers:
+共享指针可组合多个标签:
 
 ```cpp
 // Nullable + ref tracking
 fory::field<std::shared_ptr<Node>, 0, fory::nullable, fory::ref> link;
 ```
 
-## Type Rules
+## 类型规则
 
-| Type                 | Allowed Options   | Nullability                        |
-| -------------------- | ----------------- | ---------------------------------- |
-| Primitives, strings  | None              | Use `std::optional<T>` if nullable |
-| `std::optional<T>`   | None              | Inherently nullable                |
-| `std::shared_ptr<T>` | `nullable`, `ref` | Non-null by default                |
-| `std::unique_ptr<T>` | `nullable`        | Non-null by default                |
+| 类型                 | 可用选项          | 可空语义                          |
+| -------------------- | ----------------- | --------------------------------- |
+| 原生类型、字符串     | 无                | 若需可空请使用 `std::optional<T>` |
+| `std::optional<T>`   | 无                | 天然可空                          |
+| `std::shared_ptr<T>` | `nullable`、`ref` | 默认不可空                        |
+| `std::unique_ptr<T>` | `nullable`        | 默认不可空                        |
 
-## Complete Example
+## 完整示例
 
 ```cpp
 #include "fory/serialization/fory.h"
@@ -191,9 +188,9 @@ int main() {
 }
 ```
 
-## Compile-Time Validation
+## 编译期校验
 
-Invalid configurations are caught at compile time:
+非法配置会在编译期报错:
 
 ```cpp
 // Error: nullable and not_null are mutually exclusive
@@ -209,9 +206,9 @@ fory::field<std::unique_ptr<int>, 0, fory::ref> bad3;
 fory::field<std::optional<int>, 0, fory::nullable> bad4;
 ```
 
-## Backwards Compatibility
+## 向后兼容
 
-Existing structs without `fory::field<>` wrappers continue to work:
+未使用 `fory::field<>` 包装的旧 struct 仍可正常工作:
 
 ```cpp
 // Old style - still works
@@ -229,15 +226,15 @@ struct ModernPerson {
 FORY_STRUCT(ModernPerson, name, age);
 ```
 
-## FORY_FIELD_TAGS Macro
+## `FORY_FIELD_TAGS` 宏
 
-The `FORY_FIELD_TAGS` macro provides a non-invasive way to add field metadata without modifying struct definitions. This is useful for:
+`FORY_FIELD_TAGS` 提供了一种非侵入式方案:无需修改 struct 定义即可附加字段元信息。适用场景:
 
-- **Third-party types**: Add metadata to types you don't own
-- **Clean structs**: Keep struct definitions as pure C++
-- **Isolated dependencies**: Confine Fory headers to serialization config files
+- **第三方类型**:为非自有类型添加元信息
+- **纯净结构定义**:保持 struct 仅包含标准 C++ 类型
+- **依赖隔离**:将 Fory 头文件限制在序列化配置文件中
 
-### Usage
+### 用法
 
 ```cpp
 // user_types.h - NO fory headers needed!
@@ -268,33 +265,33 @@ FORY_FIELD_TAGS(Document,
 )
 ```
 
-### FORY_FIELD_TAGS Options
+### `FORY_FIELD_TAGS` 选项
 
-| Field Type           | Valid Combinations                                                                       |
+| 字段类型             | 合法组合                                                                                 |
 | -------------------- | ---------------------------------------------------------------------------------------- |
-| Primitives, strings  | `(field, id)` only                                                                       |
-| `std::optional<T>`   | `(field, id)` only                                                                       |
-| `std::shared_ptr<T>` | `(field, id)`, `(field, id, nullable)`, `(field, id, ref)`, `(field, id, nullable, ref)` |
-| `std::unique_ptr<T>` | `(field, id)`, `(field, id, nullable)`                                                   |
+| 原生类型、字符串     | 仅 `(field, id)`                                                                         |
+| `std::optional<T>`   | 仅 `(field, id)`                                                                         |
+| `std::shared_ptr<T>` | `(field, id)`、`(field, id, nullable)`、`(field, id, ref)`、`(field, id, nullable, ref)` |
+| `std::unique_ptr<T>` | `(field, id)`、`(field, id, nullable)`                                                   |
 
-### API Comparison
+### API 对比
 
-| Aspect                  | `fory::field<>` Wrapper  | `FORY_FIELD_TAGS` Macro |
-| ----------------------- | ------------------------ | ----------------------- |
-| **Struct definition**   | Modified (wrapped types) | Unchanged (pure C++)    |
-| **IDE support**         | Template noise           | Excellent (clean types) |
-| **Third-party classes** | Not supported            | Supported               |
-| **Header dependencies** | Required everywhere      | Isolated to config      |
-| **Migration effort**    | High (change all fields) | Low (add one macro)     |
+| 维度           | `fory::field<>` 包装     | `FORY_FIELD_TAGS` 宏   |
+| -------------- | ------------------------ | ---------------------- |
+| **结构定义**   | 需要改动(包装字段类型) | 无需改动(保持纯 C++) |
+| **IDE 体验**   | 有模板噪音               | 更清晰(原生字段类型) |
+| **第三方类型** | 不支持                   | 支持                   |
+| **头文件依赖** | 各处都需要               | 可集中在配置文件       |
+| **迁移成本**   | 高(修改全部字段)       | 低(新增一个宏)       |
 
-## FORY_FIELD_CONFIG Macro
+## `FORY_FIELD_CONFIG` 宏
 
-The `FORY_FIELD_CONFIG` macro is the most powerful and flexible way to configure field-level serialization. It provides:
+`FORY_FIELD_CONFIG` 是更强、更灵活的字段配置方式,提供:
 
-- **Builder pattern API**: Fluent, chainable configuration with `F(id).option1().option2()`
-- **Encoding control**: Specify how unsigned integers are encoded (varint, fixed, tagged)
-- **Compile-time verification**: Field names are verified against member pointers
-- **Cross-language compatibility**: Configure encoding to match other languages (Java, Rust, etc.)
+- **Builder 风格 API**:链式配置 `F(id).option1().option2()`
+- **编码控制**:指定无符号整数编码(varint、fixed、tagged)
+- **编译期校验**:通过成员指针校验字段名
+- **跨语言兼容**:按 Java、Rust 等语言期望配置编码
 
 ### 基本语法
 
@@ -308,9 +305,9 @@ FORY_FIELD_CONFIG(StructType,
 );
 ```
 
-### The F() Builder
+### `F()` Builder
 
-The `fory::F(id)` factory creates a `FieldMeta` object that supports method chaining:
+`fory::F(id)` 工厂函数会创建支持链式调用的 `FieldMeta` 对象:
 
 ```cpp
 fory::F(0)                    // Create with field ID 0
@@ -323,7 +320,7 @@ fory::F(0)                    // Create with field ID 0
     .compress(false)          // Disable compression
 ```
 
-**Tip:** To use `F()` without the `fory::` prefix, add a using declaration:
+**提示:** 若希望省略 `fory::` 前缀,可添加 `using` 声明:
 
 ```cpp
 using fory::F;
@@ -334,19 +331,19 @@ FORY_FIELD_CONFIG(MyStruct,
 );
 ```
 
-### Encoding Options for Unsigned Integers
+### 无符号整数编码选项
 
-For `uint32_t` and `uint64_t` fields, you can specify the wire encoding:
+对于 `uint32_t` 与 `uint64_t` 字段,可显式指定线格式编码:
 
-| Method      | Type ID       | Description                                    | Use Case                              |
-| ----------- | ------------- | ---------------------------------------------- | ------------------------------------- |
-| `.varint()` | VAR_UINT32/64 | Variable-length encoding (1-5 or 1-10 bytes)   | Values typically small                |
-| `.fixed()`  | UINT32/64     | Fixed-size encoding (always 4 or 8 bytes)      | Values uniformly distributed          |
-| `.tagged()` | TAGGED_UINT64 | Tagged hybrid encoding with size hint (uint64) | Mixed small and large values (uint64) |
+| 方法        | Type ID       | 说明                              | 适用场景                 |
+| ----------- | ------------- | --------------------------------- | ------------------------ |
+| `.varint()` | VAR_UINT32/64 | 变长编码(1-5 或 1-10 字节)      | 数值通常较小             |
+| `.fixed()`  | UINT32/64     | 定长编码(固定 4 或 8 字节)      | 数值分布较均匀           |
... 1983 lines suppressed ...


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@fory.apache.org
For additional commands, e-mail: commits-help@fory.apache.org