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

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


The following commit(s) were added to refs/heads/release_1.1.0 by this push:
     new 0e25aa82c6 Sync zh compiler guide for 1.1.0
0e25aa82c6 is described below

commit 0e25aa82c68c283d2e2283933b2441b8ac5981e3
Author: 慕白 <[email protected]>
AuthorDate: Sun May 31 23:12:21 2026 +0800

    Sync zh compiler guide for 1.1.0
---
 .../current/compiler/compiler-guide.md             | 413 +++++++++++++--------
 1 file changed, 268 insertions(+), 145 deletions(-)

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 7144ab23f4..a9e14644e7 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,7 +19,7 @@ license: |
   limitations under the License.
 ---
 
-本指南介绍 Fory IDL 编译器的安装、命令行使用方式以及构建系统集成方案。
+本指南介绍 Fory IDL 编译器的安装、使用方式和集成方法。
 
 ## 安装
 
@@ -52,52 +52,64 @@ foryc --scan-generated [OPTIONS]
 
 编译选项:
 
-| 选项                                  | 说明                                     
        | 默认值        |
-| ------------------------------------- | 
------------------------------------------------ | ------------- |
-| `--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`               
      | (无)        |
-| `--javascript_out=DST_DIR`            | 将 JavaScript 代码输出到 `DST_DIR`         
      | (无)        |
-| `--swift_out=DST_DIR`                 | 将 Swift 代码输出到 `DST_DIR`              
      | (无)        |
-| `--dart_out=DST_DIR`                  | 将 Dart 代码输出到 `DST_DIR`               
      | (无)        |
-| `--go_nested_type_style`              | Go 嵌套类型命名风格:`camelcase` 或 
`underscore` | schema/默认值 |
-| `--swift_namespace_style`             | Swift 命名空间风格:`enum` 或 `flatten`      
    | `enum`        |
-| `--emit-fdl`                          | 对非 `.fdl` 输入打印转换后的 Fory IDL          
  | `false`       |
-| `--emit-fdl-path`                     | 将转换后的 Fory IDL 写入文件或目录               
| (stdout)    |
+| 选项                                  | 说明                                     
          | 默认值        |
+| ------------------------------------- | 
-------------------------------------------------- | ------------- |
+| `--lang`                              | 目标语言列表,使用逗号分隔                        
 | `all`         |
+| `--output`, `-o`                      | 输出目录                                 
          | `./generated` |
+| `-I`, `--proto_path`, `--import_path` | 添加 import 搜索路径(可重复指定)                
 | (无)        |
+| `--java_out=DST_DIR`                  | 在 DST_DIR 中生成 Java 代码                
        | (无)        |
+| `--python_out=DST_DIR`                | 在 DST_DIR 中生成 Python 代码              
        | (无)        |
+| `--cpp_out=DST_DIR`                   | 在 DST_DIR 中生成 C++ 代码                 
        | (无)        |
+| `--go_out=DST_DIR`                    | 在 DST_DIR 中生成 Go 代码                  
        | (无)        |
+| `--rust_out=DST_DIR`                  | 在 DST_DIR 中生成 Rust 代码                
        | (无)        |
+| `--csharp_out=DST_DIR`                | 在 DST_DIR 中生成 C# 代码                  
        | (无)        |
+| `--javascript_out=DST_DIR`            | 在 DST_DIR 中生成 JavaScript/TypeScript 
代码       | (无)        |
+| `--swift_out=DST_DIR`                 | 在 DST_DIR 中生成 Swift 代码               
        | (无)        |
+| `--dart_out=DST_DIR`                  | 在 DST_DIR 中生成 Dart 代码                
        | (无)        |
+| `--scala_out=DST_DIR`                 | 在 DST_DIR 中生成 Scala 3 代码             
        | (无)        |
+| `--kotlin_out=DST_DIR`                | 在 DST_DIR 中生成 Kotlin 代码              
        | (无)        |
+| `--go_nested_type_style`              | Go 嵌套类型命名方式:`camelcase` 或 
`underscore`   | `underscore`  |
+| `--swift_namespace_style`             | Swift 命名空间方式:`enum` 或 `flatten`      
      | `enum`        |
+| `--emit-fdl`                          | 输出转换后的 FDL(用于非 FDL 输入)               
 | `false`       |
+| `--emit-fdl-path`                     | 将转换后的 FDL 写入此路径(文件或目录)            | 
(stdout)    |
+| `--grpc`                              | 为 Java 和 Python 生成 gRPC service 
companion 代码 | `false`       |
+
+支持 schema 级文件选项,用于控制特定语言的生成行为。
+对于 `go_nested_type_style` 和 `swift_namespace_style`,当 CLI 标志和
+schema 选项同时存在时,CLI 标志优先生效。Rust temporal 代码生成没有 CLI 标志:
+需要在 schema 中设置 `option rust_use_chrono_temporal_types = true;`,以生成
+`chrono::NaiveDate`、`chrono::NaiveDateTime` 和 `chrono::Duration`,而不是默认的
+`fory::Date`、`fory::Timestamp` 和 `fory::Duration`。编译基于 chrono 的 Rust
+生成代码的 crate 必须依赖 `chrono`,并启用 Fory 的 `chrono` feature。
 
 扫描选项(配合 `--scan-generated`):
 
 | 选项         | 说明                   | 默认值  |
 | ------------ | ---------------------- | ------- |
-| `--root`     | 扫描根目录             | `.`     |
-| `--relative` | 以相对路径输出         | `false` |
-| `--delete`   | 删除匹配到的生成文件   | `false` |
-| `--dry-run`  | 仅扫描输出,不执行删除 | `false` |
+| `--root`     | 要扫描的根目录         | `.`     |
+| `--relative` | 输出相对于根目录的路径 | `false` |
+| `--delete`   | 删除匹配的生成文件     | `false` |
+| `--dry-run`  | 仅扫描/打印,不删除    | `false` |
 
 ### 扫描生成文件
 
-使用 `--scan-generated` 可以定位 `foryc` 生成的文件。扫描器会递归遍历目录树,跳过 `build/`、`target/` 
和隐藏目录,并输出找到的每个生成文件。
+使用 `--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(仅扫描与输出)
+# Dry-run (scan and print only)
 foryc --scan-generated --root ./src --dry-run
 ```
 
@@ -109,10 +121,10 @@ foryc --scan-generated --root ./src --dry-run
 foryc schema.fdl
 ```
 
-**为指定语言编译:**
+**为选定的一组语言编译:**
 
 ```bash
-foryc schema.fdl --lang java,python,csharp,javascript,swift,dart
+foryc schema.fdl --lang java,python,csharp,javascript,swift,dart,kotlin
 ```
 
 **指定输出目录:**
@@ -121,92 +133,103 @@ foryc schema.fdl --lang 
java,python,csharp,javascript,swift,dart
 foryc schema.fdl --output ./src/generated
 ```
 
-**覆盖 package:**
+**编译多个文件:**
 
 ```bash
-foryc schema.fdl --package com.myapp.models
+foryc user.fdl order.fdl product.fdl --output ./generated
 ```
 
-**编译多个文件:**
+**编译包含 service 定义的简单 schema(Java + Python 模型):**
 
 ```bash
-foryc user.fdl order.fdl product.fdl --output ./generated
+foryc compiler/examples/service.fdl --java_out=./generated/java 
--python_out=./generated/python
 ```
 
-**编译包含 service 定义的简单 schema(生成 Java + Python 模型):**
+**生成 Java 和 Python gRPC service companion 代码:**
 
 ```bash
-foryc compiler/examples/service.fdl --java_out=./generated/java 
--python_out=./generated/python
+foryc compiler/examples/service.fdl --java_out=./generated/java 
--python_out=./generated/python --grpc
 ```
 
+生成的 gRPC service 代码使用 Fory 序列化请求和响应载荷。Java 输出会导入
+grpc-java API,Python 输出会导入 `grpc`;编译或运行这些生成 service 文件的
+应用需要自行提供 gRPC 依赖。Fory 的 Java 和 Python 运行时包不会为此功能加入
+强制 gRPC 依赖。
+
 **使用 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/
 
-# --proto_path(protoc 兼容别名)
+# Using --proto_path (protoc-compatible alias)
 foryc src/main.fdl --proto_path=libs/common
 
-# 混合写法
+# Mix all styles
 foryc src/main.fdl -I libs/common,libs/types --proto_path third_party/
 ```
 
-**语言定向输出目录(protoc 风格):**
+**语言专属输出目录(protoc 风格):**
 
 ```bash
-# 仅生成 Java
+# Generate only Java code to a specific directory
 foryc schema.fdl --java_out=./src/main/java
 
-# 多语言分别输出到不同目录
-foryc schema.fdl --java_out=./java/gen --python_out=./python/src 
--go_out=./go/gen --csharp_out=./csharp/gen --javascript_out=./javascript/src 
--swift_out=./swift/gen --dart_out=./dart/gen
+# Generate multiple languages to different directories
+foryc schema.fdl --java_out=./java/gen --python_out=./python/src 
--cpp_out=./cpp/gen --go_out=./go/gen --rust_out=./rust/gen 
--csharp_out=./csharp/gen --javascript_out=./javascript/src 
--swift_out=./swift/gen --dart_out=./dart/gen --scala_out=./scala/gen 
--kotlin_out=./kotlin/gen
 
-# 结合 import 路径
+# Combine with import paths
 foryc schema.fdl --java_out=./gen/java -I proto/ -I common/
+
+# Generate Scala 3 code to a specific directory
+foryc schema.fdl --scala_out=./src/main/scala
+
+# Generate Kotlin code to a specific directory
+foryc schema.fdl --kotlin_out=./src/main/kotlin
 ```
 
-使用 `--{lang}_out` 时:
+使用 `--{lang}_out` 选项时:
 
 - 只生成显式指定的语言(不会生成全部语言)
-- 输出写入指定目录(语言生成器可能继续按包/模块分层)
+- 编译器会写入指定目录(特定语言的生成器仍可能创建 package/module 子目录)
 - 兼容 protoc 风格工作流
 
-**查看 proto/fbs 输入转换后的 Fory IDL:**
+**查看从 proto/fbs 输入转换后的 Fory IDL:**
 
 ```bash
-# 输出到 stdout
+# Print translated Fory IDL to stdout
 foryc schema.proto --emit-fdl
 
-# 输出到目录
+# Write translated Fory IDL to a directory
 foryc schema.fbs --emit-fdl --emit-fdl-path ./translated
 ```
 
 ## Import 路径解析
 
-编译含 import 的 Fory IDL 文件时,导入文件按以下顺序查找:
+编译带有 import 的 Fory IDL 文件时,编译器按以下顺序查找被导入文件:
 
-1. **相对于导入者文件目录(默认)**:始终优先查找,无需 `-I`
-2. **按顺序遍历每个 `-I` 路径**
+1. **相对于导入者文件(默认)** - 始终会首先自动搜索包含 import 语句的文件所在目录。同目录 import 不需要 `-I` 标志。
+2. **每个 `-I` 路径的顺序** - 命令行上指定的额外搜索路径
 
-**同目录 import 可直接生效:**
+**同目录 import 会自动生效:**
 
 ```protobuf
 // main.fdl
-import "common.fdl";  // 若 common.fdl 在同目录,将自动找到
+import "common.fdl";  // Found if common.fdl is in the same directory
 ```
 
 ```bash
-# 同目录导入无需 -I
+# No -I needed for same-directory imports
 foryc main.fdl
 ```
 
-**示例目录结构:**
+**示例项目结构:**
 
 ```
 project/
@@ -216,7 +239,7 @@ project/
     └── common.fdl
 ```
 
-**不加 `-I`(失败):**
+**不使用 `-I`(失败):**
 
 ```bash
 $ foryc src/main.fdl
@@ -224,7 +247,7 @@ Import error: Import not found: common.fdl
   Searched in: /project/src
 ```
 
-**加 `-I`(成功):**
+**使用 `-I`(成功):**
 
 ```bash
 $ foryc src/main.fdl -I libs/
@@ -234,16 +257,19 @@ Compiling src/main.fdl...
 
 ## 支持语言
 
-| 语言       | 标记         | 输出后缀 | 说明                      |
-| ---------- | ------------ | -------- | ------------------------- |
-| Java       | `java`       | `.java`  | 带 Fory 注解的 POJO       |
-| Python     | `python`     | `.py`    | 带类型提示的 dataclass    |
-| Go         | `go`         | `.go`    | 带 struct tag 的结构体    |
-| Rust       | `rust`       | `.rs`    | 带 derive 宏的结构体      |
-| C++        | `cpp`        | `.h`     | 带 FORY 宏的结构体        |
-| JavaScript | `javascript` | `.ts`    | 带注册函数的接口          |
-| Swift      | `swift`      | `.swift` | `@ForyObject` Swift 模型  |
-| Dart       | `dart`       | `.dart`  | 带注解的 `@ForyStruct` 类 |
+| 语言                  | 标志         | 输出后缀 | 说明                                 
|
+| --------------------- | ------------ | -------- | 
------------------------------------ |
+| Java                  | `java`       | `.java`  | 带 Fory 注解的 POJO            
      |
+| Python                | `python`     | `.py`    | 带类型提示的 dataclass           
    |
+| Go                    | `go`         | `.go`    | 带 struct tag 的结构体          
     |
+| Rust                  | `rust`       | `.rs`    | 带 derive 宏的结构体             
    |
+| C++                   | `cpp`        | `.h`     | 带 FORY 宏的结构体               
    |
+| C#                    | `csharp`     | `.cs`    | 带 Fory attribute 的类        
       |
+| JavaScript/TypeScript | `javascript` | `.ts`    | 带注册函数的 interface           
    |
+| Swift                 | `swift`      | `.swift` | Fory Swift 模型宏             
       |
+| Dart                  | `dart`       | `.dart`  | 带注解的 `@ForyStruct` 类       
     |
+| Scala                 | `scala`      | `.scala` | 使用宏派生的 Scala 3 模型          
  |
+| Kotlin                | `kotlin`     | `.kt`    | 使用 KSP serializer 的 Kotlin 
模型   |
 
 ## 输出结构
 
@@ -257,12 +283,12 @@ generated/
             ├── User.java
             ├── Order.java
             ├── Status.java
-            └── ExampleForyRegistration.java
+            └── ExampleForyModule.java
 ```
 
-- 每个类型(enum/message)单独一个文件
-- 包路径与 Fory IDL package 一致
-- 会生成注册辅助类
+- 每个类型(enum 或 message)一个文件
+- Package 结构与 Fory IDL package 一致
+- 生成 schema module 类
 
 ### Python
 
@@ -272,8 +298,8 @@ generated/
     └── example.py
 ```
 
-- 所有类型位于单模块
-- 模块名由 package 派生
+- 所有类型位于单个 module
+- Module 名称由 package 派生
 - 包含注册函数
 
 ### Go
@@ -285,8 +311,8 @@ generated/
         └── example.go
 ```
 
-- 所有类型在单文件中
-- 目录名与包名来自 `go_package` 或 Fory IDL package
+- 所有类型位于单个文件
+- 目录名和 package 名称由 `go_package` 或 Fory IDL package 派生
 - 包含注册函数
 
 ### Rust
@@ -297,8 +323,8 @@ generated/
     └── example.rs
 ```
 
-- 所有类型位于单模块
-- 模块名由 package 派生
+- 所有类型位于单个 module
+- Module 名称由 package 派生
 - 包含注册函数
 
 ### C++
@@ -309,23 +335,53 @@ generated/
     └── example.h
 ```
 
-- 单头文件输出
-- 命名空间与 package 对齐(点号转换为 `::`)
-- 自动包含 header guard 与前向声明
+- 单个头文件
+- Namespace 与 package 匹配(点号转换为 `::`)
+- Header guard 和前向声明
 
-### JavaScript
+### JavaScript/TypeScript
 
 ```
 generated/
 └── javascript/
-    └── example.ts
+  └── example.ts
 ```
 
-- 每个 schema 生成一个 `.ts` 文件
-- message 生成为 `export interface`
-- enum 生成为 `export enum`
+- 每个 schema 生成单个 `.ts` 文件
+- message 生成为 `export interface` 声明
+- enum 生成为 `export enum` 声明
 - union 生成为带 case enum 的判别联合
-- 文件内包含注册辅助函数
+- 包含注册辅助函数
+
+### C\#
+
+```
+generated/
+└── csharp/
+    └── example/
+        └── example.cs
+```
+
+- 每个 schema 生成单个 `.cs` 文件
+- Namespace 使用 `csharp_namespace`(如已设置)或 Fory IDL package
+- 包含以源文件为前缀的 `XXXForyModule` 安装 helper,以及 `ToBytes`/`FromBytes` 方法
+- 被导入的 schema 会由生成的 helper 传递安装(例如 `root.idl` 导入 `addressbook.fdl` 和 
`tree.fdl`)
+
+### Swift
+
+```
+generated/
+└── swift/
+    └── addressbook/
+        └── addressbook.swift
+```
+
+- 每个 schema 生成单个 `.swift` 文件
+- Package 片段会映射为嵌套 Swift enum(例如 `addressbook.*` -> `Addressbook.*`)
+- 生成的 message 使用 `@ForyStruct`,enum 使用 `@ForyEnum`,union 使用 
`@ForyUnion`/`@ForyCase`
+- Union 类型生成为带关联载荷值的 tagged enum
+- 每个 schema 都包含 schema 文件 module owner 和 `toBytes`/`fromBytes` helper
+- 被导入的 schema 会由生成的 module helper 传递安装
 
 ### Dart
 
@@ -337,16 +393,91 @@ generated/
         └── package.fory.dart
 ```
 
-- 每个 schema 生成两个文件:带注解类型的主 `.dart` 文件,以及带序列化器的 `.fory.dart` part 文件
-- package 各段映射为目录层级(例如 `demo.foo` -> `demo/foo/`)
-- 注册辅助类位于 part 文件中
-- 非可空、非 `ref` 的基础类型列表会使用类型化数组(例如 `Int32List`)
+- 每个 schema 生成两个文件:包含带注解类型的主 `.dart` 文件,以及包含生成 serializer 的 `.fory.dart` part 
文件
+- Package 片段映射为目录(例如 `demo.foo` → `demo/foo/`)
+- IDL module 类包含在主文件中;生成的 serializer 元数据包含在 part 文件中
+- 非可选、非 `ref` 的 primitive list 使用类型化数组(例如 `Int32List`)
+
+### Scala
+
+```
+generated/
+└── scala/
+    └── example/
+        ├── User.scala
+        ├── Status.scala
+        ├── Animal.scala
+        └── ExampleForyModule.scala
+```
+
+- 每个生成类型一个 Scala 3 源文件
+- Package 结构与 Fory IDL package 一致
+- Message 派生 `org.apache.fory.scala.ForySerializer`
+- `optional T` 字段使用 `Option[T]`
+- Enum 使用 Scala 3 `enum`
+- Union 使用 Scala 3 ADT `enum`,并带 `@ForyUnion`、`@ForyCase` 和一个 `Unknown`
+- 包含 schema module object
+
+### Kotlin
+
+```
+generated/
+└── kotlin/
+    └── example/
+        ├── User.kt
+        ├── Status.kt
+        ├── Animal.kt
+        └── ExampleForyModule.kt
+```
+
+- 每个生成类型一个 Kotlin 源文件
+- Package 结构在设置 `kotlin_package` 时使用该选项,否则使用 Fory IDL package
+- Message 使用 `@ForyStruct` 和 KSP 生成的 serializer
+- Enum 使用稳定的 Fory enum ID
+- Union 使用 sealed class,并带 `@ForyUnion`、`@ForyCase` 和 unknown-case carrier
+- 包含 schema module object
+
+### C# IDL 矩阵验证
+
+运行端到端 C# IDL 矩阵(FDL/IDL/Proto/FBS 生成以及 roundtrip 测试):
+
+```bash
+cd integration_tests/idl_tests
+./run_csharp_tests.sh
+```
+
+此 runner 会执行以下场景的 schema-consistent 和 compatible roundtrip:
+
+- `addressbook`、`auto_id`、`complex_pb` primitives
+- `collection` 和 union/list 变体
+- `optional_types`
+- `any_example`(`.fdl`)和 `any_example`(`.proto`)
+- `tree` 和 `graph` 引用跟踪场景
+- `monster.fbs` 和 `complex_fbs.fbs`
+- `root.idl` 跨 package import 覆盖
+- 演进 schema 兼容性场景
+
+### Swift IDL 矩阵验证
+
+运行端到端 Swift IDL 矩阵(FDL/IDL/Proto/FBS 生成以及 roundtrip 测试):
+
+```bash
+cd integration_tests/idl_tests
+./run_swift_tests.sh
+```
+
+此脚本会运行:
 
-## 构建系统集成
+- compatible 和 schema-consistent 模式下的本地 Swift IDL roundtrip 测试
+- 使用 `IDL_PEER_LANG=swift` 的 Java 驱动 peer roundtrip 验证
+
+脚本还会设置 `DATA_FILE*` 变量,以便覆盖基于文件的 roundtrip 路径。
+
+## 构建集成
 
 ### Maven (Java)
 
-在 `pom.xml` 中添加:
+添加到 `pom.xml`:
 
 ```xml
 <build>
@@ -377,7 +508,7 @@ generated/
 </build>
 ```
 
-添加生成源码目录:
+添加生成源码:
 
 ```xml
 <build>
@@ -406,7 +537,7 @@ generated/
 
 ### Gradle (Java/Kotlin)
 
-在 `build.gradle` 中添加:
+添加到 `build.gradle`:
 
 ```groovy
 task generateForyTypes(type: Exec) {
@@ -428,7 +559,7 @@ sourceSets {
 
 ### Python (setuptools)
 
-在 `setup.py` 或 `pyproject.toml` 中加入生成步骤:
+添加到 `setup.py` 或 `pyproject.toml`:
 
 ```python
 # setup.py
@@ -451,24 +582,24 @@ setup(
 )
 ```
 
-### Go (`go generate`)
+### Go (go generate)
 
-在 Go 文件中添加:
+添加到你的 Go 文件:
 
 ```go
 //go:generate foryc ../schema.fdl --lang go --output .
 package models
 ```
 
-执行:
+运行:
 
 ```bash
 go generate ./...
 ```
 
-### Rust (`build.rs`)
+### Rust (build.rs)
 
-在 `build.rs` 中添加:
+添加到 `build.rs`:
 
 ```rust
 use std::process::Command;
@@ -489,7 +620,7 @@ fn main() {
 
 ### CMake (C++)
 
-在 `CMakeLists.txt` 中添加:
+添加到 `CMakeLists.txt`:
 
 ```cmake
 find_program(FORY_COMPILER foryc)
@@ -512,7 +643,7 @@ target_include_directories(mylib PRIVATE 
${CMAKE_CURRENT_SOURCE_DIR}/generated)
 
 ### Bazel
 
-在 `BUILD` 中添加规则:
+在 `BUILD` 中创建规则:
 
 ```python
 genrule(
@@ -532,23 +663,23 @@ cc_library(
 
 ### Dart / Flutter
 
-在 `pubspec.yaml` 中加入 Fory 依赖:
+在 `pubspec.yaml` 中添加 Fory 依赖:
 
 ```yaml
 dependencies:
-  fory: ^1.0.0
+  fory: ^1.1.0
 
 dev_dependencies:
   build_runner: ^2.4.0
 ```
 
-用编译器生成 schema 类型:
+使用编译器生成 schema 类型:
 
 ```bash
 foryc schema.fdl --dart_out=lib/generated
 ```
 
-随后运行 `build_runner` 生成序列化器:
+然后运行 `build_runner` 生成 serializer:
 
 ```bash
 dart run build_runner build
@@ -562,19 +693,7 @@ dart run build_runner build
 Error: Line 5, Column 12: Expected ';' after field declaration
 ```
 
-### 未知类型引用
-
-```
-Error: Unknown type 'Address' in Customer.address
-```
-
-修复方式:先定义被引用的类型,或检查拼写是否正确。
-
-service RPC 的请求和响应类型也按同样规则校验。例如
-`rpc SayHello (HelloRequest) returns (HelloReply);`
-中的类型必须已定义;否则校验器会在 RPC 所在行报出 `Unknown type '...'` 错误。
-
-修复方式:检查对应行是否缺少分号或存在语法问题。
+修复方式:检查提示的行是否缺少分号或存在语法问题。
 
 ### 类型名重复
 
@@ -582,7 +701,7 @@ service RPC 的请求和响应类型也按同样规则校验。例如
 Error: Duplicate type name: User
 ```
 
-修复方式:确保同一文件内每个 enum/message 名称唯一。
+修复方式:确保同一文件中的每个 enum 和 message 名称唯一。
 
 ### 类型 ID 重复
 
@@ -590,7 +709,7 @@ Error: Duplicate type name: User
 Error: Duplicate type ID 100: User and Order
 ```
 
-修复方式:为每个类型分配唯一 ID。
+修复方式:为每个类型分配唯一类型 ID。
 
 ### 未知类型引用
 
@@ -598,7 +717,11 @@ Error: Duplicate type ID 100: User and Order
 Error: Unknown type 'Address' in Customer.address
 ```
 
-修复方式:先定义被引用类型,或检查类型名拼写。
+修复方式:先定义被引用的类型,或检查是否存在拼写错误。
+
+Service RPC 的请求和响应类型也按相同方式校验:像
+`rpc SayHello (HelloRequest) returns (HelloReply);` 这样的 RPC 必须引用已定义的
+message 类型,否则校验器会在 RPC 所在行报告 `Unknown type '...'` 错误。
 
 ### 字段号重复
 
@@ -606,7 +729,7 @@ Error: Unknown type 'Address' in Customer.address
 Error: Duplicate field number 1 in User: name and id
 ```
 
-修复方式:确保同一 message 内字段号唯一。
+修复方式:在每个 message 内分配唯一字段号。
 
 ## 最佳实践
 
@@ -626,9 +749,9 @@ project/
 ### 版本控制
 
 - **纳入版本控制**:Fory IDL schema 文件
-- **忽略生成代码**:可在构建时再生成
+- **忽略**:生成代码(可重新生成)
 
-在 `.gitignore` 中加入:
+添加到 `.gitignore`:
 
 ```
 # Generated Fory IDL code
@@ -638,10 +761,10 @@ generated/
 
 ### CI/CD 集成
 
-在构建流程中始终重新生成代码:
+构建时始终重新生成:
 
 ```yaml
-# GitHub Actions 示例
+# GitHub Actions example
 steps:
   - name: Install Fory IDL Compiler
     run: pip install ./compiler
@@ -655,12 +778,12 @@ steps:
 
 ### Schema 演进
 
-修改 schema 时建议遵循:
+修改 schema 时:
 
-1. **不要复用字段号**:删除字段后应保留/预留
-2. **不要改动类型 ID**:类型 ID 属于二进制协议的一部分
-3. **新增字段使用新字段号**
-4. **优先使用 `optional`**:保持向后兼容
+1. **不要复用字段号** - 改为标记为 reserved
+2. **不要修改类型 ID** - 它们是二进制格式的一部分
+3. **新增字段** - 使用新的字段号
+4. **使用 `optional`** - 保持向后兼容
 
 ```protobuf
 message User [id=100] {
@@ -679,7 +802,7 @@ message User [id=100] {
 foryc: command not found
 ```
 
-**解决:** 确认编译器已安装且在 PATH 中:
+**解决方式:** 确保编译器已安装且在 PATH 中:
 
 ```bash
 pip install -e ./compiler
@@ -693,15 +816,15 @@ export PATH=$PATH:~/.local/bin
 Permission denied: ./generated
 ```
 
-**解决:** 确保输出目录具备写权限:
+**解决方式:** 确保输出目录具备写权限:
 
 ```bash
 chmod -R u+w ./generated
 ```
 
-### 生成代码 import 错误
+### 生成代码中的 Import 错误
 
-**Java:** 确保项目包含 Fory 依赖:
+**Java:** 确保项目中包含 Fory 依赖:
 
 ```xml
 <dependency>
@@ -711,13 +834,13 @@ chmod -R u+w ./generated
 </dependency>
 ```
 
-**Python:** 确保安装 `pyfory`:
+**Python:** 确保已安装 pyfory:
 
 ```bash
 pip install pyfory
 ```
 
-**Go:** 确保可获取 fory 模块:
+**Go:** 确保 fory module 可用:
 
 ```bash
 go get github.com/apache/fory/go/fory
@@ -730,11 +853,11 @@ go get github.com/apache/fory/go/fory
 fory = "x.y.z"
 ```
 
-**C++:** 确保编译器 include 路径可找到 Fory 头文件。
+**C++:** 确保 Fory 头文件位于 include path 中。
 
-**Dart:** 确保 `pubspec.yaml` 中包含 fory 依赖:
+**Dart:** 确保 `pubspec.yaml` 中包含 fory package:
 
 ```yaml
 dependencies:
-  fory: ^1.0.0
+  fory: ^1.1.0
 ```


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to