Skip to content

Commit

Permalink
fix(docs): links in Chinese translation
Browse files Browse the repository at this point in the history
  • Loading branch information
novusnota committed Dec 18, 2024
1 parent 92ea286 commit 7eb9056
Show file tree
Hide file tree
Showing 47 changed files with 569 additions and 569 deletions.
2 changes: 1 addition & 1 deletion docs/src/content/docs/zh-cn/book/bounced.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ contract MyContract {
}
```

要手动处理被退回的信息,您可以使用回退定义,直接处理原始的 [`Slice{:tact}`](/book/cells#slices)。请注意,这样的接收器将获得由您的合约产生的**所有**被退回的信息:
要手动处理被退回的信息,您可以使用回退定义,直接处理原始的 [`Slice{:tact}`](/zh-cn/book/cells#slices)。请注意,这样的接收器将获得由您的合约产生的**所有**被退回的信息:

```tact /rawMsg: Slice/
contract MyContract {
Expand Down
98 changes: 49 additions & 49 deletions docs/src/content/docs/zh-cn/book/cells.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ title: 细胞、建造者和切片

### Kinds {#cells-kinds}

虽然 [TVM][tvm] 类型 [`单元格{:tact}`](#cells)指的是所有单元格,但有不同的单元格类型,其内存布局也各不相同。 前面描述的单元格(#cells)通常被称为_ordinary_(或 simple)单元格--这是最简单、最常用的单元格,只能包含数据。 绝大多数关于细胞及其用法的描述、指南和[参考文献](/ref/core-cells)都假定细胞是普通的。
虽然 [TVM][tvm] 类型 [`单元格{:tact}`](#cells)指的是所有单元格,但有不同的单元格类型,其内存布局也各不相同。 前面描述的单元格(#cells)通常被称为_ordinary_(或 simple)单元格--这是最简单、最常用的单元格,只能包含数据。 绝大多数关于细胞及其用法的描述、指南和[参考文献](/zh-cn/ref/core-cells)都假定细胞是普通的。

其他类型的细胞统称为_外来细胞_(或特殊细胞)。 它们有时会出现在 TON 区块链上的区块和其他数据结构的实际表示中。 它们的内存布局和用途与普通电池大不相同。

Expand All @@ -21,7 +21,7 @@ title: 细胞、建造者和切片
[TVM][tvm]目前支持以下奇异细胞子类型:

- [剪枝单元格][c-pruned],子类型编码为 $1$ - 它们代表删除的单元格子树。
- [图书馆引用单元][c-library],子类型编码为 $2$ - 它们用于存储图书馆,通常在[masterchain](/book/masterchain)上下文中使用。
- [图书馆引用单元][c-library],子类型编码为 $2$ - 它们用于存储图书馆,通常在[masterchain](/zh-cn/book/masterchain)上下文中使用。
- [梅克尔证明单元][c-mproof],子类型编码为 $3$ - 它们用于验证其他单元的树数据的某些部分是否属于完整树。
- [梅克尔更新单元][c-mupdate],子类型编码为 $4$ - 它们总是有两个引用,对这两个引用的行为类似于[梅克尔证明][mproof]

Expand Down Expand Up @@ -63,7 +63,7 @@ title: 细胞、建造者和切片

最后,为每个参考单元存储其标准表示的[SHA-256][sha-2] 哈希值,每个参考单元占用 $32$ 字节,并递归重复上述算法。 请注意,不允许循环引用单元格,因此递归总是以定义明确的方式结束。

如果我们要计算这个单元格的标准表示的哈希值,就需要将上述步骤中的所有字节连接在一起,然后使用 [SHA-256][sha-2] 哈希值进行散列。 这是[TVM][tvm][`HASHCU``HASHSU`指令](https://docs.ton.org/learn/tvm-instructions/instructions)以及 Tact 的[`Cell.hash(){:tact}`](/ref/core-cells#cellhash)[`Slice.hash(){:tact}`](/ref/core-cells#slicehash)函数背后的算法。
如果我们要计算这个单元格的标准表示的哈希值,就需要将上述步骤中的所有字节连接在一起,然后使用 [SHA-256][sha-2] 哈希值进行散列。 这是[TVM][tvm][`HASHCU``HASHSU`指令](https://docs.ton.org/learn/tvm-instructions/instructions)以及 Tact 的[`Cell.hash(){:tact}`](/zh-cn/ref/core-cells#cellhash)[`Slice.hash(){:tact}`](/zh-cn/ref/core-cells#slicehash)函数背后的算法。

#### Bag of Cells {#cells-boc}

Expand Down Expand Up @@ -122,10 +122,10 @@ title: 细胞、建造者和切片

## Serialization types

[`Int{:tact}`](/book/integers)类型的序列化选项类似,`Cell{:tact}``Builder{:tact}``Slice{:tact}` 在以下情况下也有不同的值编码方式:
[`Int{:tact}`](/zh-cn/book/integers)类型的序列化选项类似,`Cell{:tact}``Builder{:tact}``Slice{:tact}` 在以下情况下也有不同的值编码方式:

- 作为 [contracts](/book/contracts)[traits](/book/types#traits)[storage variables](/book/contracts#variables)
- 以及 [Structs](/book/structs and-messages#structs) 和 [Messages](/book/structs and-messages#messages) 的字段。
- 作为 [contracts](/zh-cn/book/contracts)[traits](/zh-cn/book/types#traits)[storage variables](/zh-cn/book/contracts#variables)
- 以及 [Structs](/zh-cn/book/structs and-messages#structs) 和 [Messages](/zh-cn/book/structs and-messages#messages) 的字段。

```tact {2-3}
contract SerializationExample {
Expand Down Expand Up @@ -201,9 +201,9 @@ receive(msg: JettonTransferNotification) {

:::note

注意,通过 `as remaining{:tact}` 序列化的单元格不能是 [可选](/book/optionals)。 也就是说,指定类似 `Cell? as remaining{:tact}`, `Builder? 作为剩余{:tact}``切片? 剩余的{:tact}` 会导致编译错误。
注意,通过 `as remaining{:tact}` 序列化的单元格不能是 [可选](/zh-cn/book/optionals)。 也就是说,指定类似 `Cell? as remaining{:tact}`, `Builder? 作为剩余{:tact}``切片? 剩余的{:tact}` 会导致编译错误。

另外请注意,将 `Cell{:tact}` 指定为[map](/book/maps) 值类型的 `remaining{:tact}` 会被视为错误,无法编译。
另外请注意,将 `Cell{:tact}` 指定为[map](/zh-cn/book/maps) 值类型的 `remaining{:tact}` 会被视为错误,无法编译。

:::

Expand All @@ -229,7 +229,7 @@ receive(msg: JettonTransferNotification) {

在 Tact 中,至少有两种构建和解析单元格的方法:

- [手动](#cnp-manually),其中涉及积极使用[`Builder{:tact}`](#builders)[`Slice{:tact}`](#slices)[相关方法](/ref/core-cells)
- [手动](#cnp-manually),其中涉及积极使用[`Builder{:tact}`](#builders)[`Slice{:tact}`](#slices)[相关方法](/zh-cn/ref/core-cells)
- [使用结构体](#cnp-structs),这是一种值得推荐且更加方便的方法。

#### Manually {#cnp-manually}
Expand All @@ -246,30 +246,30 @@ receive(msg: JettonTransferNotification) {
| [`.storeRef(cell){:tact}`][b-8] | [`Slice.loadRef(){:tact}`][s-8] |
| [`.endCell(){:tact}`][b-9] | [`Slice.endParse(){:tact}`][s-9] |

[b-1]: /ref/core-cells#begincell
[b-2]: /ref/core-cells#builderstoreuint
[b-3]: /ref/core-cells#builderstoreint
[b-4]: /ref/core-cells#builderstorebool
[b-5]: /ref/core-cells#builderstoreslice
[b-6]: /ref/core-cells#builderstorecoins
[b-7]: /ref/core-cells#builderstoreaddress
[b-8]: /ref/core-cells#builderstoreref
[b-9]: /ref/core-cells#builderendcell
[s-1]: /ref/core-cells#cellbeginparse
[s-2]: /ref/core-cells#sliceloaduint
[s-3]: /ref/core-cells#sliceloadint
[s-4]: /ref/core-cells#sliceloadbool
[s-5]: /ref/core-cells#sliceloadbits
[s-6]: /ref/core-cells#sliceloadcoins
[s-7]: /ref/core-cells#sliceloadaddress
[s-8]: /ref/core-cells#sliceloadref
[s-9]: /ref/core-cells#sliceendparse
[b-1]: /zh-cn/ref/core-cells#begincell
[b-2]: /zh-cn/ref/core-cells#builderstoreuint
[b-3]: /zh-cn/ref/core-cells#builderstoreint
[b-4]: /zh-cn/ref/core-cells#builderstorebool
[b-5]: /zh-cn/ref/core-cells#builderstoreslice
[b-6]: /zh-cn/ref/core-cells#builderstorecoins
[b-7]: /zh-cn/ref/core-cells#builderstoreaddress
[b-8]: /zh-cn/ref/core-cells#builderstoreref
[b-9]: /zh-cn/ref/core-cells#builderendcell
[s-1]: /zh-cn/ref/core-cells#cellbeginparse
[s-2]: /zh-cn/ref/core-cells#sliceloaduint
[s-3]: /zh-cn/ref/core-cells#sliceloadint
[s-4]: /zh-cn/ref/core-cells#sliceloadbool
[s-5]: /zh-cn/ref/core-cells#sliceloadbits
[s-6]: /zh-cn/ref/core-cells#sliceloadcoins
[s-7]: /zh-cn/ref/core-cells#sliceloadaddress
[s-8]: /zh-cn/ref/core-cells#sliceloadref
[s-9]: /zh-cn/ref/core-cells#sliceendparse

#### Using Structs {#cnp-structs}

[结构][struct][消息][messages]几乎就是活生生的[TL-B 模式][tlb]。 也就是说,它们本质上是用可维护、可验证和用户友好的 Tact 代码表达的[TL-B 模式][tlb]

强烈建议使用它们及其 [方法](/book/functions#extension-function),如 [`Struct.toCell(){:tact}`][st-tc][`Struct.fromCell(){:tact}`][st-fc],而不是手动构造和解析单元格,因为这样可以得到更多声明性和不言自明的合约。
强烈建议使用它们及其 [方法](/zh-cn/book/functions#extension-function),如 [`Struct.toCell(){:tact}`][st-tc][`Struct.fromCell(){:tact}`][st-fc],而不是手动构造和解析单元格,因为这样可以得到更多声明性和不言自明的合约。

[上文](#cnp-manually)的手动解析示例可以使用[Structs][struct]重新编写,如果愿意,还可以使用字段的描述性名称:

Expand Down Expand Up @@ -313,7 +313,7 @@ fun example() {

:::note[Useful links:]

[Convert serialization](/book/func#convert-serialization)
[Convert serialization](/zh-cn/book/func#convert-serialization)
[`Struct.toCell(){:tact}` 在核心库中][st-tc]
[`Struct.fromCell(){:tact}` 在核心库中][st-fc]
[`Struct.fromSlice(){:tact}` 在核心库中][st-fs]
Expand All @@ -323,20 +323,20 @@ fun example() {

:::

[st-tc]: /ref/core-cells#structtocell
[st-fc]: /ref/core-cells#structfromcell
[st-fs]: /ref/core-cells#structfromslice
[msg-tc]: /ref/core-cells#messagetocell
[msg-fc]: /ref/core-cells#messagefromcell
[msg-fs]: /ref/core-cells#messagefromslice
[st-tc]: /zh-cn/ref/core-cells#structtocell
[st-fc]: /zh-cn/ref/core-cells#structfromcell
[st-fs]: /zh-cn/ref/core-cells#structfromslice
[msg-tc]: /zh-cn/ref/core-cells#messagetocell
[msg-fc]: /zh-cn/ref/core-cells#messagefromcell
[msg-fs]: /zh-cn/ref/core-cells#messagefromslice

### Check if empty {#operations-empty}

[`Cell{:tact}`](#cells)[`Builder{:tact}`](#builders)都不能直接检查空性,需要先将它们转换为[`Slice{:tact}`](#slices)

要检查是否有任何位,请使用[`Slice.dataEmpty(){:tact}`][s-de]。要检查是否存在引用,请使用[`Slice.refsEmpty(){:tact}`][s-re]。要同时检查这两项,请使用[`Slice.empty(){:tact}`][s-e]

如果[`Slice{:tact}`](#slices)不完全为空,也要抛出[exit code 9](/book/exit-codes#9),请使用[`Slice.endParse(){:tact}`][s-ep]
如果[`Slice{:tact}`](#slices)不完全为空,也要抛出[exit code 9](/zh-cn/book/exit-codes#9),请使用[`Slice.endParse(){:tact}`][s-ep]

```tact
// 准备工作
Expand Down Expand Up @@ -370,19 +370,19 @@ try {

:::note[Useful links:]

[`Cell.asSlice(){:tact}` 在核心库中](/ref/core-cells#cellasslice)\
[`Builder.asSlice(){:tact}` 在核心库中](/ref/core-cells#builderasslice)\
[`Cell.asSlice(){:tact}` 在核心库中](/zh-cn/ref/core-cells#cellasslice)\
[`Builder.asSlice(){:tact}` 在核心库中](/zh-cn/ref/core-cells#builderasslice)\
[`Slice.dataEmpty(){:tact}` 在核心库中][s-de]\
[`Slice.refsEmpty(){:tact}` 在核心库中][s-re]\
[`Slice.empty(){:tact}` 在核心库中][s-e]\
[`Slice.endParse(){:tact}` 在核心库中][s-ep]

:::

[咝--咝]: /ref/core-cells#slicedataempty
[re]: /ref/core-cells#slicerefsempty
[s-e]: /ref/core-cells#sliceempty
[s-ep]: /ref/core-cells#sliceendparse
[咝--咝]: /zh-cn/ref/core-cells#slicedataempty
[re]: /zh-cn/ref/core-cells#slicerefsempty
[s-e]: /zh-cn/ref/core-cells#sliceempty
[s-ep]: /zh-cn/ref/core-cells#sliceendparse

### Check if equal {#operations-equal}

Expand Down Expand Up @@ -424,21 +424,21 @@ let areSlicesNotEqual = aSlice.hash() != bSlice.hash(); // false

:::note[Useful links:]

[核心库中的 `Cell.hash(){:tact}`](/ref/core-cells#cellhash)/
[核心库中的 `Slice.hash(){:tact}`](/ref/core-cells#slicehash)/
[核心库中的 `Cell.hash(){:tact}`](/zh-cn/ref/core-cells#cellhash)/
[核心库中的 `Slice.hash(){:tact}`](/zh-cn/ref/core-cells#slicehash)/
[`=={:tact}``!={:tact}`][bin-eq]

:::

[p]: /book/types#primitive-types
[struct]: /book/structs-and-messages#structs
[message]: /book/structs-and-messages#messages
[recv]: /book/contracts#receiver-functions
[p]: /zh-cn/book/types#primitive-types
[struct]: /zh-cn/book/structs-and-messages#structs
[message]: /zh-cn/book/structs-and-messages#messages
[recv]: /zh-cn/book/contracts#receiver-functions

[tvm]: https://docs.ton.org/learn/tvm-instructions/tvm-overview
[tlb]: https://docs.ton.org/develop/data-formats/tl-b-language
[jetton]: https://docs.ton.org/develop/dapps/asset-processing/jettons
[sha-2]: https://en.wikipedia.org/wiki/SHA-2#Hash_standard

[quadtree]: https://en.wikipedia.org/wiki/Quadtree
[bin-eq]: /book/operators#binary-equality
[bin-eq]: /zh-cn/book/operators#binary-equality
16 changes: 8 additions & 8 deletions docs/src/content/docs/zh-cn/book/config.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -144,15 +144,15 @@ title: 配置

:::note

更多信息,请访问专用页面:[调试](/book/debug)
更多信息,请访问专用页面:[调试](/zh-cn/book/debug)

:::

#### `masterchain` {#options-masterchain}

默认为 `false{:json}`

如果设置为 `true{:json}`,则启用 [masterchain](/book/masterchain) 支持。
如果设置为 `true{:json}`,则启用 [masterchain](/zh-cn/book/masterchain) 支持。

```json filename="tact.config.json" {8,14}
{
Expand All @@ -177,15 +177,15 @@ title: 配置

:::note

更多信息,请访问专用页面:[大师链](/book/masterchain)
更多信息,请访问专用页面:[大师链](/zh-cn/book/masterchain)

:::

#### `external` {#options-external}

默认为 `false{:json}`

如果设置为 `true{:json}`,则启用对 [external](/book/external) 消息接收器的支持。
如果设置为 `true{:json}`,则启用对 [external](/zh-cn/book/external) 消息接收器的支持。

```json filename="tact.config.json" {8,14}
{
Expand All @@ -210,15 +210,15 @@ title: 配置

:::note

更多信息,请访问专用页面:[外部信息](/book/external)
更多信息,请访问专用页面:[外部信息](/zh-cn/book/external)

:::

#### `ipfsAbiGetter` {#options-ipfsabigetter}

默认为 `false{:json}`

如果设置为 `true{:json}`,则可生成带有描述合同 ABI 的 IPFS 链接的[getter](/book/contracts#getter-functions)
如果设置为 `true{:json}`,则可生成带有描述合同 ABI 的 IPFS 链接的[getter](/zh-cn/book/contracts#getter-functions)

```json filename="tact.config.json" {8,14}
{
Expand All @@ -243,7 +243,7 @@ title: 配置

:::note

在专用网页上阅读更多信息:[OTP-003:自我 ABI 报告](/ref/evolution/otp-003)
在专用网页上阅读更多信息:[OTP-003:自我 ABI 报告](/zh-cn/ref/evolution/otp-003)

:::

Expand Down Expand Up @@ -276,7 +276,7 @@ title: 配置

:::note

了解更多信息:[支持的接口](/book/contracts#interfaces)
了解更多信息:[支持的接口](/zh-cn/book/contracts#interfaces)

:::

Expand Down
2 changes: 1 addition & 1 deletion docs/src/content/docs/zh-cn/book/constants.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ contract MyContract {
}
```

## 虚拟常量和抽象常量
## 虚拟常量和抽象常量 {#virtual-and-abstract-constants}

虚拟常量是可以在特质中定义但在合约中改变的常量。 当您需要在编译时配置某些特征时,它非常有用。 让我们定义一个虚拟常量和一个抽象常量:

Expand Down
Loading

0 comments on commit 7eb9056

Please sign in to comment.