diff --git a/.circleci/config.yml b/.circleci/config.yml
index 94a4c16..85b3608 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -17,7 +17,7 @@ version: 2.1
setup: true
orbs:
- path-filtering: circleci/path-filtering@1.0.0
+ path-filtering: circleci/path-filtering@1.2.0
continuation: circleci/continuation@1.0.0
parameters:
@@ -44,6 +44,7 @@ workflows:
- path-filtering/filter:
base-revision: main
config-path: .circleci/continue-config.yml
+ tag: "3.9"
mapping: |
requirements.txt base true
dev-requirements.txt base true
diff --git a/.circleci/continue-config.yml b/.circleci/continue-config.yml
index 5ba3622..a524c4c 100644
--- a/.circleci/continue-config.yml
+++ b/.circleci/continue-config.yml
@@ -96,6 +96,7 @@ jobs:
parameters:
resource_class:
type: string
+ default: medium
executor:
name: linux_executor
resource_class: << parameters.resource_class >>
diff --git a/docs/_static/ecosystem.svg b/docs/_static/ecosystem.svg
index ea0672a..138097d 100644
--- a/docs/_static/ecosystem.svg
+++ b/docs/_static/ecosystem.svg
@@ -1,3 +1,4 @@
+
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/docs/index.rst b/docs/index.rst
index b93a059..c2a9705 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -15,7 +15,8 @@ SecretFlow Open Specification are used by SecretFlow ecosystem, including:
- SecretFlow: a unified framework for privacy-preserving data analysis and machine learning
- Kuscia: a K8s-based privacy-preserving computing task orchestration framework.
- SecretPad: a privacy-preserving computing web platform based on the Kuscia framework, designed to provide easy access to privacy-preserving data intelligence and machine learning functions.
-- SCQL and TEE engine will also use SecretFlow Open Specification in future.
+- SCQL: Secure Collaborative Query Language (SCQL) is a system that translates SQL statements into a hybrid MPC-plaintext execution graph and executes them on a federation of database systems.
+- TrustFlow: A zero-trust computing system based on TEE(Trusted Execution Environments).
.. image:: _static/ecosystem.svg
:width: 800
diff --git a/docs/locale/zh_CN/LC_MESSAGES/index.po b/docs/locale/zh_CN/LC_MESSAGES/index.po
index 4b958ea..77646a1 100644
--- a/docs/locale/zh_CN/LC_MESSAGES/index.po
+++ b/docs/locale/zh_CN/LC_MESSAGES/index.po
@@ -4,27 +4,29 @@
# package.
# FIRST AUTHOR , 2023.
#
+
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: Open Secretflow \n"
+"Project-Id-Version: Open Secretflow\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-10-10 15:29+0800\n"
-"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
-"Last-Translator: FULL NAME \n"
-"Language: zh_CN\n"
+"POT-Creation-Date: 2025-08-06 15:58+0800\n"
+"PO-Revision-Date: 2025-08-06 16:04+0800\n"
+"Last-Translator: \n"
"Language-Team: zh_CN \n"
-"Plural-Forms: nplurals=1; plural=0;\n"
+"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+"Generated-By: Babel 2.17.0\n"
+"X-Generator: Poedit 3.6\n"
-#: ../../index.rst:23
+#: ../../index.rst:24
msgid "Specification"
msgstr "标准文本"
-#: ../../index.rst:23
+#: ../../index.rst:24
msgid "Introduction"
msgstr "标准介绍"
@@ -33,16 +35,11 @@ msgid "Welcome to SecretFlow Open Specification"
msgstr "欢迎访问隐语开放标准"
#: ../../index.rst:9
-msgid ""
-"SecretFlow Open Specification is a protocol stack designed for privacy-"
-"preserving applications."
+msgid "SecretFlow Open Specification is a protocol stack designed for privacy-preserving applications."
msgstr "隐语开放标准是为隐私保护应用设计的协议栈。"
#: ../../index.rst:11
-msgid ""
-"At this moment, SecretFlow Open Specification consists of Data, Component"
-" and Node Evaluation protocols. We are going to introduce Workflow "
-"protocol soon."
+msgid "At this moment, SecretFlow Open Specification consists of Data, Component and Node Evaluation protocols. We are going to introduce Workflow protocol soon."
msgstr "目前,隐语开放标准包括数据、组件和节点评估协议。我们将很快引入工作流程协议。"
#: ../../index.rst:13
@@ -50,47 +47,54 @@ msgid "SecretFlow Open Specification are used by SecretFlow ecosystem, including
msgstr "隐语开放标准被隐语生态系统使用,包括:"
#: ../../index.rst:15
-msgid ""
-"SecretFlow: a unified framework for privacy-preserving data analysis and "
-"machine learning"
-msgstr "SecretFlow:用于隐私保护数据分析和机器学习的统一框架。"
+msgid "SecretFlow: a unified framework for privacy-preserving data analysis and machine learning"
+msgstr "SecretFlow:用于隐私保护数据分析和机器学习的统一框架"
#: ../../index.rst:16
-msgid ""
-"Kuscia: a K8s-based privacy-preserving computing task orchestration "
-"framework."
+msgid "Kuscia: a K8s-based privacy-preserving computing task orchestration framework."
msgstr "Kuscia:基于 K8s 的隐私保护计算任务编排框架。"
#: ../../index.rst:17
-msgid ""
-"SecretPad: a privacy-preserving computing web platform based on the "
-"Kuscia framework, designed to provide easy access to privacy-preserving "
-"data intelligence and machine learning functions."
+msgid "SecretPad: a privacy-preserving computing web platform based on the Kuscia framework, designed to provide easy access to privacy-preserving data intelligence and machine learning functions."
msgstr "SecretPad:基于 Kuscia 框架的隐私保护计算 Web 平台,旨在为隐私保护数据智能和机器学习功能提供便捷访问。"
#: ../../index.rst:18
-msgid "SCQL and TEE engine will also use SecretFlow Open Specification in future."
-msgstr "SCQL 和 TEE 引擎将来也将使用隐语开放标准。"
+msgid "SCQL: Secure Collaborative Query Language (SCQL) is a system that translates SQL statements into a hybrid MPC-plaintext execution graph and executes them on a federation of database systems."
+msgstr "SCQL:联合数据分析,实现将 SQL 语句转换为明密文混合执行图,并在联合数据库系统上执行。"
+
+#: ../../index.rst:19
+msgid "TrustFlow: A zero-trust computing system based on TEE(Trusted Execution Environments)."
+msgstr "TrustFlow:基于可信硬件的隐私保护引擎。"
-#: ../../index.rst:32
+#: ../../index.rst:33
msgid "Announcement"
msgstr "公告"
-#: ../../index.rst:35
+#: ../../index.rst:36
msgid "Oct, 2023"
msgstr "2023 年 10 月"
-#: ../../index.rst:37
+#: ../../index.rst:38
msgid "SecretFlow Open Specification v1.0 is launched."
msgstr "已发布隐语开放标准 v1.0。"
-#: ../../index.rst:40
+#: ../../index.rst:41
msgid "July, 2023"
msgstr "2023 年 7 月"
-#: ../../index.rst:42
-msgid ""
-"We officially launch the first version of Specification with SecretFlow "
-"1.0.0."
+#: ../../index.rst:43
+msgid "We officially launch the first version of Specification with SecretFlow 1.0.0."
msgstr "我们伴随 SecretFlow 1.0.0 发布了第一个版本。"
+#~ msgid ""
+#~ "SecretPad: a privacy-preserving computing "
+#~ "web platform based on the Kuscia "
+#~ "framework, designed to provide easy "
+#~ "access to privacy-preserving data "
+#~ "intelligence and machine learning functions."
+#~ msgstr "SecretPad:基于 Kuscia 框架的隐私保护计算 Web 平台,旨在为隐私保护数据智能和机器学习功能提供便捷访问。"
+
+#~ msgid ""
+#~ "SCQL and TEE engine will also use"
+#~ " SecretFlow Open Specification in future."
+#~ msgstr "SCQL 和 TEE 引擎将来也将使用隐语开放标准。"
diff --git a/docs/locale/zh_CN/LC_MESSAGES/intro.po b/docs/locale/zh_CN/LC_MESSAGES/intro.po
index 45c1071..d2aa78b 100644
--- a/docs/locale/zh_CN/LC_MESSAGES/intro.po
+++ b/docs/locale/zh_CN/LC_MESSAGES/intro.po
@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Open Secretflow \n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2023-09-29 15:43+0800\n"
+"POT-Creation-Date: 2025-08-06 15:28+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language: zh_CN\n"
@@ -18,7 +18,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.12.1\n"
+"Generated-By: Babel 2.17.0\n"
#: ../../intro.md:1
msgid "Introduction to SecretFlow Open Specification"
@@ -38,7 +38,7 @@ msgid "At this moment, we don't have an official protocol for Workflow."
msgstr "目前我们没有官方的工作流协议。"
#: ../../intro.md:13
-msgid "[Data]((spec.md#data))"
+msgid "[Data](spec.md#data)"
msgstr ""
#: ../../intro.md:15
@@ -60,9 +60,7 @@ msgid ""
"In privacy-preserving applications, a data is \"distributed\" since it is"
" owned by multiple parties like MPC models or vertical-partitioned "
"tables."
-msgstr ""
-"在隐私保护应用程序中,一个数据可能是"分布式",因为它由多方拥有,例如MPC模型或者"
-"垂直分区的表格。"
+msgstr "在隐私保护应用程序中,一个数据可能是\"分布式\",因为它由多方拥有,例如MPC模型或者垂直分区的表格。"
#: ../../intro.md:25
msgid ""
@@ -71,35 +69,27 @@ msgid ""
" different machines is quite common. However, there are no owner "
"enforcements on partitions, which means which machine is selected to "
"place a partition is random."
-msgstr ""
-"不要将其与数据库系统中的数据分区搞混了。在这种系统中,将大型数据集划分为放置在"
-"不同机器上的几个小分区是很常见的。但是,对分区没有所有者的强制执行,这意味着选择"
-"哪个机器来放置分区是随机的。"
+msgstr "不要将其与数据库系统中的数据分区搞混了。在这种系统中,将大型数据集划分为放置在不同机器上的几个小分区是很常见的。但是,对分区没有所有者的强制执行,这意味着选择哪个机器来放置分区是随机的。"
#: ../../intro.md:30
msgid "DistData consists of two parts:"
-msgstr ""
-"DistData包含两个部分:"
+msgstr "DistData包含两个部分:"
#: ../../intro.md:31
msgid "Public data, which is acesssible to everyone."
-msgstr ""
-"公共数据,每个人都可以访问。"
+msgstr "公共数据,每个人都可以访问。"
#: ../../intro.md:32
msgid "Private data, which is accessible to owner."
-msgstr ""
-"私有数据,只有所有者可以访问。"
+msgstr "私有数据,只有所有者可以访问。"
#: ../../intro.md:34
msgid "Public data"
-msgstr ""
-"公共数据"
+msgstr "公共数据"
#: ../../intro.md:36
msgid "Public data includes:"
-msgstr ""
-"公共数据包括:"
+msgstr "公共数据包括:"
#: ../../intro.md:37
msgid "name"
@@ -107,8 +97,7 @@ msgstr "名称"
#: ../../intro.md:38
msgid "type, instructs privacy-preserving applications to process data"
-msgstr ""
-"type ,指导隐私保护应用程序处理数据的方式"
+msgstr "type ,指导隐私保护应用程序处理数据的方式"
#: ../../intro.md:39
msgid "system_info"
@@ -116,8 +105,7 @@ msgstr ""
#: ../../intro.md:40
msgid "meta, anything else should be public."
-msgstr ""
-"meta ,任何其他可以公共的数据。
+msgstr "meta ,任何其他可以公共的数据"
#: ../../intro.md:42
msgid "[SystemInfo](spec.md#systeminfo)"
@@ -127,8 +115,7 @@ msgstr ""
msgid ""
"For input data, **SystemInfo** describes the application and environment "
"which could consume the data."
-msgstr ""
-"对于输入数据,SystemInfo描述了可能使用数据的应用程序和环境。"
+msgstr "对于输入数据,SystemInfo描述了可能使用数据的应用程序和环境。"
#: ../../intro.md:46
msgid "Private data"
@@ -140,16 +127,13 @@ msgid ""
"private data is referred by a DataRef. DataRef is public in DistData. "
"Don't put anything private in uri of DataRef since every party gets "
"exactly the same DataRef."
-msgstr ""
-"DistData可能包含多个私有数据片段。每个私有数据片段由DataRef引用。DataRef是DistData中的公共字段,"
-"不要在DataRef的uri中放置任何私有信息,因为每个方都获得完全相同的DataRef。"
+msgstr "DistData可能包含多个私有数据片段。每个私有数据片段由DataRef引用。DataRef是DistData中的公共字段,不要在DataRef的uri中放置任何私有信息,因为每个方都获得完全相同的DataRef。"
#: ../../intro.md:51
msgid ""
"DataRef only contains a uri. In order to retrieve the remote data, the "
"owner has to utilize their own StorageConfig."
-msgstr ""
-"DataRef只包含一个uri。为了获取远程数据,所有者必须使用自己的StorageConfig。"
+msgstr "DataRef只包含一个uri。为了获取远程数据,所有者必须使用自己的StorageConfig。"
#: ../../intro.md:53
msgid ""
@@ -168,16 +152,13 @@ msgid ""
"A **DataRef** is a pointer to a single file belongs to one party. **uri**"
" is the relative path to storage root of its owner. **DataRef** is public"
" and open to all parties."
-msgstr ""
-"DataRef是指向一个属于一方的单个文件的指针。uri是相对于其所有者的存储根目录的路径。"
-"DataRef是公开的,所有方都可以访问。"
+msgstr "DataRef是指向一个属于一方的单个文件的指针。uri是相对于其所有者的存储根目录的路径。DataRef是公开的,所有方都可以访问。"
#: ../../intro.md:65
msgid ""
"Don't try to store any secret with uris. You need to protect the files "
"pointed by uris instead."
-msgstr ""
-"不要试图将任何机密信息存储在uri中。你应该保护的是由uri指向的文件。"
+msgstr "不要试图将任何机密信息存储在uri中。你应该保护的是由uri指向的文件。"
#: ../../intro.md:70
msgid "[StorageConfig](spec.md#storageconfig)"
@@ -187,8 +168,7 @@ msgstr ""
msgid ""
"**StorageConfig** specifies the storage root of a party. It could be a "
"local file path, a database table or an OSS bucket."
-msgstr ""
-"StorageConfig指定了一方的存储根目录。它可以是本地文件路径、数据库表格或 OSS 存储桶。"
+msgstr "StorageConfig指定了一方的存储根目录。它可以是本地文件路径、数据库表格或 OSS 存储桶。"
#: ../../intro.md:74
msgid "At this moment, we only support *local_fs*."
@@ -212,9 +192,7 @@ msgid ""
" single item in data_refs field of DistData. **IndividualTable** should "
"be packed into **meta** field of DistData which includes **schema** and "
"**line_count**."
-msgstr ""
-"IndividualTable是由一方拥有的表格,这意味着DistData的data_refs字段中只有一个项。"
-"IndividualTable应该打包到DistData的meta字段中,该字段包括schema和line_count。"
+msgstr "IndividualTable是由一方拥有的表格,这意味着DistData的data_refs字段中只有一个项。IndividualTable应该打包到DistData的meta字段中,该字段包括schema和line_count。"
#: ../../intro.md:87
msgid "In SecretFlow, the type str for IndividualTable is *sf.table.individual*."
@@ -231,14 +209,13 @@ msgid ""
" there should be multiple data_refs in DistData. **VerticalTable** should"
" be packed into **meta** field of DistData."
msgstr ""
-"VerticalTable 是多个方拥有的垂直分区表。VerticalTable 包含多个schema。"
-"相应地,DistData中应该有多个data_refs。VerticalTable 应该打包到DistData的"
-"meta字段中。"
+"VerticalTable 是多个方拥有的垂直分区表。VerticalTable "
+"包含多个schema。相应地,DistData中应该有多个data_refs。VerticalTable "
+"应该打包到DistData的meta字段中。"
#: ../../intro.md:96
msgid "In SecretFlow, the type str for IndividualTable is *sf.table.vertical*."
-msgstr ""
-"在SecretFlow中,IndividualTable的类型为 sf.table.vertical。"
+msgstr "在SecretFlow中,IndividualTable的类型为 sf.table.vertical。"
#: ../../intro.md:98
msgid "[Component](spec.md#COMPONENT)"
@@ -246,15 +223,13 @@ msgstr ""
#: ../../intro.md:100
msgid "Component is the most complicated protocol in OpenSecretflow Spec."
-msgstr ""
-"Component是隐语开放标准中最复杂的协议。"
+msgstr "Component是隐语开放标准中最复杂的协议。"
#: ../../intro.md:102
msgid ""
"A component represent a piece of application which could be integrated "
"into workflows."
-msgstr ""
-"组件表示可以集成到工作流中的一份应用程序。"
+msgstr "组件表示可以集成到工作流中的一份应用程序。"
#: ../../intro.md:104
msgid "[ComponentDef](spec.md#componentdef)"
@@ -262,44 +237,37 @@ msgstr ""
#: ../../intro.md:106
msgid "You could use ComponentDef to define a component:"
-msgstr ""
-"你可以使用ComponentDef来定义一个组件:"
+msgstr "你可以使用ComponentDef来定义一个组件:"
#: ../../intro.md:108
msgid ""
"domain: namespace of component. You could use this field to group "
"components. e.g. In SecretFlow, we have 'ml.train', 'feature', etc."
-msgstr ""
-"domain: 组件的命名空间。可以使用此字段对组件进行分组。例如,在SecretFlow中,我们有 'ml.train','feature'等。"
+msgstr "domain: 组件的命名空间。可以使用此字段对组件进行分组。例如,在SecretFlow中,我们有 'ml.train','feature'等。"
#: ../../intro.md:109
msgid ""
"name: should be unique among the domain. However you could have "
"components with the same name while in different domains."
-msgstr ""
-"name: 在命名空间中必须是唯一的。但是,在不同的命名空间中,可以具有相同名称的组件。"
+msgstr "name: 在命名空间中必须是唯一的。但是,在不同的命名空间中,可以具有相同名称的组件。"
#: ../../intro.md:110
msgid "version: the version of component."
-msgstr ""
-"version: 组件的版本。"
+msgstr "version: 组件的版本。"
#: ../../intro.md:111
msgid "attributes. Please check AttributeDef part below."
-msgstr ""
-"attributes: 请查看下面的AttributeDef部分。"
+msgstr "attributes: 请查看下面的AttributeDef部分。"
#: ../../intro.md:112
msgid "inputs and outputs. Please check IoDef part below."
-msgstr ""
-"inputs 和 outputs: 请查看下面的IoDef部分。"
+msgstr "inputs 和 outputs: 请查看下面的IoDef部分。"
#: ../../intro.md:114
msgid ""
"With a tuple of domain, name and version, user could locate a unqiue "
"component in your system."
-msgstr ""
-"通过域、名称和版本的组合,用户可以在系统中定位到一个唯一的组件。"
+msgstr "通过域、名称和版本的组合,用户可以在系统中定位到一个唯一的组件。"
#: ../../intro.md:116
msgid "[AttributeDef](spec.md#attributedef)"
@@ -307,8 +275,7 @@ msgstr ""
#: ../../intro.md:118
msgid "We organize all attributes of a component as attribute trees."
-msgstr ""
-"我们将组件的所有属性组织成属性树。"
+msgstr "我们将组件的所有属性组织成属性树。"
#: ../../intro.md:120 ../../intro.md:259
msgid ""
@@ -323,54 +290,48 @@ msgid ""
"The leaves of the tree are called **Atomic Attributes**, which represent "
"solid fields for users to fill-in e.g. bucket size or learning rate. e.g."
" \"a/b\", \"a/c/e/i\", \"a/c/f/j\" in the graph."
-msgstr ""
-"树的叶子节点称为原子属性,表示用户需要填写的固定字段,例如桶大小或学习率,在图中表示为"a/b","a/c/e/i","a/c/f/j"。"
+msgstr "树的叶子节点称为原子属性,表示用户需要填写的固定字段,例如桶大小或学习率,在图中表示为\"a/b\",\"a/c/e/i\",\"a/c/f/j\"。"
#: ../../intro.md:125
msgid ""
"The non-leaf nodes of the tree are called **Attribute Group**. There are "
"two kind of Attribute Groups:"
-msgstr ""
-"树的非叶子节点称为属性组。有两种类型的属性组:"
+msgstr "树的非叶子节点称为属性组。有两种类型的属性组:"
#: ../../intro.md:128
msgid ""
"**Struct Attribute Group** : all children of the group need to fill-in "
"together. e.g. \"a/c/f\", \"a/d\", \"a/d/g\" in the graph."
msgstr ""
-"**Struct Attribute Group** :组内的所有子节点都需要一起填写。例如,在图中"a/c/f","a/d","a/d/g"。"
+"**Struct Attribute Group** "
+":组内的所有子节点都需要一起填写。例如,在图中\"a/c/f\",\"a/d\",\"a/d/g\"。"
#: ../../intro.md:129
msgid ""
"**Union Attribute Group** : user must select one child of the group to "
"fill-in. e.g. \"a/c\" and \"a/d/h\" in the graph."
-msgstr ""
-"**Union Attribute Group** :用户必须选择组内的一个子节点进行填写。例如,在图中"a/c"和"a/d/h"。"
+msgstr "**Union Attribute Group** :用户必须选择组内的一个子节点进行填写。例如,在图中\"a/c\"和\"a/d/h\"。"
#: ../../intro.md:131
msgid "The child of an Attribute Group could be another Attribute Group."
-msgstr ""
-"属性组的子节点可以是另一个属性组。"
+msgstr "属性组的子节点可以是另一个属性组。"
#: ../../intro.md:133
msgid "A **AttributeDef** represents a node of a component attribute tree."
-msgstr ""
-"AttributeDef 表示组件属性树的一个节点。"
+msgstr "AttributeDef 表示组件属性树的一个节点。"
#: ../../intro.md:138
msgid ""
"**Attribute Groups** are advanced usage in Component Attribute "
"declaration. Only a small part of audiences may utilize this feature one "
"day. You may check **Attribute Groups** later."
-msgstr ""
-"属性组 是组件属性声明中的高级用法。只有一小部分用户可能会在某一天使用此功能。您可以稍后查看属性组。"
+msgstr "属性组 是组件属性声明中的高级用法。只有一小部分用户可能会在某一天使用此功能。您可以稍后查看属性组。"
#: ../../intro.md:143
msgid ""
"Let's go through **Atomic Attributes**, **Struct Attribute Group** and "
"**Union Attribute Group** respectively."
-msgstr ""
-"让我们分别介绍原子属性、结构属性组和联合属性组。"
+msgstr "让我们分别介绍原子属性、结构属性组和联合属性组。"
#: ../../intro.md:145
msgid "[Atomic Attributes](spec.md#attributedefatomicattrdesc)"
@@ -380,13 +341,11 @@ msgstr ""
msgid ""
"For **Atomic Attributes**, first you should indicate with \"type\" field "
"in [AttributeDef](spec.md#attributedef)."
-msgstr ""
-"对于原子属性,首先需要在 [AttributeDef](spec.md#attributedef) 中使用"type"字段进行指定。"
+msgstr "对于原子属性,首先需要在 [AttributeDef](spec.md#attributedef) 中使用\"type\"字段进行指定。"
#: ../../intro.md:149
msgid "At this moment, we support the following scalar types:"
-msgstr ""
-"在目前的版本中,我们支持以下标量类型:"
+msgstr "在目前的版本中,我们支持以下标量类型:"
#: ../../intro.md:150
msgid "AT_FLOAT"
@@ -404,8 +363,7 @@ msgstr ""
msgid ""
"AT_BOOL And corresponding scalar list types. You may check "
"[AttrType](spec.md#attrtype) as well."
-msgstr ""
-"AT_BOOL 和相应的标量列表类型。您也可以查看 [AttrType](spec.md#attrtype) 。"
+msgstr "AT_BOOL 和相应的标量列表类型。您也可以查看 [AttrType](spec.md#attrtype) 。"
#: ../../intro.md:156
msgid ""
@@ -415,43 +373,38 @@ msgstr "之后,您应该使用 AtomicAttrDesc 来进一步描述原子属性
#: ../../intro.md:158
msgid "For lists only:"
-msgstr ""
-"仅适用于列表:"
+msgstr "仅适用于列表:"
#: ../../intro.md:159
msgid ""
"Use list_min_length_inclusive and list_max_length_inclusive to limit the "
"length of list."
-msgstr ""
-"使用 list_min_length_inclusive 和 list_max_length_inclusive 来限制列表的长度。"
+msgstr "使用 list_min_length_inclusive 和 list_max_length_inclusive 来限制列表的长度。"
#: ../../intro.md:161
msgid "For float, int, float list, int float:"
-msgstr ""
-"对于浮点数、整数、浮点数列表和整数列表:"
+msgstr "对于浮点数、整数、浮点数列表和整数列表:"
#: ../../intro.md:162
msgid ""
"Use lower_bound_enabled/upper_bound_enabled, lower_bound/upper_bound, "
"lower_bound_inclusive/upper_bound_inclusive to limit the value."
msgstr ""
-"使用 lower_bound_enabled/upper_bound_enabled,lower_bound/upper_bound,"
-"lower_bound_inclusive/upper_bound_inclusive 来限制值。"
+"使用 "
+"lower_bound_enabled/upper_bound_enabled,lower_bound/upper_bound,lower_bound_inclusive/upper_bound_inclusive"
+" 来限制值。"
#: ../../intro.md:164
msgid "For all atomic attribue:"
-msgstr ""
-"对于所有的原子属性:"
+msgstr "对于所有的原子属性:"
#: ../../intro.md:165
msgid "Use is_optional to indicate if a user answer must be provided."
-msgstr ""
-"使用 is_optional 来指示是否必须提供用户答案。"
+msgstr "使用 is_optional 来指示是否必须提供用户答案。"
#: ../../intro.md:166
msgid "If is_optional is true, default_value must be provided."
-msgstr ""
-"如果 is_optional 为 true,则必须提供 default_value。"
+msgstr "如果 is_optional 为 true,则必须提供 default_value。"
#: ../../intro.md:168
msgid "Struct Attribute Group"
@@ -465,15 +418,15 @@ msgid ""
"\"a/c/f/k/q\" are logically grouped together in this case and should be "
"filled together."
msgstr ""
-"Struct Attribute Group 代表一组应该一起填写的属性。例如,在图中"a/c/f/k" 是一个 Struct Attribute Group ,"
-"它的子节点是 "a/c/f/k/p" 和 "a/c/f/k/q"。在这种情况下,"a/c/f/k/p" 和 "a/c/f/k/q" 是逻辑上一起分组的,并且应该一起填写。"
+"Struct Attribute Group 代表一组应该一起填写的属性。例如,在图中\"a/c/f/k\" 是一个 Struct "
+"Attribute Group ,它的子节点是 \"a/c/f/k/p\" 和 "
+"\"a/c/f/k/q\"。在这种情况下,\"a/c/f/k/p\" 和 \"a/c/f/k/q\" 是逻辑上一起分组的,并且应该一起填写。"
#: ../../intro.md:172
msgid ""
"To define a Struct Attribute Group, you should indicate with \"type\" "
"field in [AttributeDef](spec.md#attributedef) with AT_STRUCT_GROUP."
-msgstr ""
-"要定义一个Struct Attribute Group ,在AttributeDef中使用"type"字段指定为AT_STRUCT_GROUP。"
+msgstr "要定义一个Struct Attribute Group ,在AttributeDef中使用\"type\"字段指定为AT_STRUCT_GROUP。"
#: ../../intro.md:174
msgid "Union Attribute Group"
@@ -487,9 +440,9 @@ msgid ""
"\"a/d/h/o\" are children. User must choose \"a/d/h/n\" or \"a/d/h/o\" to "
"fill."
msgstr ""
-"Union Attribute Group 与 Stuct Attribute group 类似,因为它们都有子节点。然而,用户只能选择一个子节点进行填写。例如,"
-""a/d/h" 是一个 Union Attribute Group ,它的子节点是 "a/d/h/n" 和 "a/d/h/o"。用户必须选择 "a/d/h/n" "
-"或者 "a/d/h/o" 进行填写。"
+"Union Attribute Group 与 Stuct Attribute group "
+"类似,因为它们都有子节点。然而,用户只能选择一个子节点进行填写。例如,\"a/d/h\" 是一个 Union Attribute Group "
+",它的子节点是 \"a/d/h/n\" 和 \"a/d/h/o\"。用户必须选择 \"a/d/h/n\" 或者 \"a/d/h/o\" 进行填写。"
#: ../../intro.md:178
msgid ""
@@ -499,7 +452,8 @@ msgid ""
"[UnionAttrGroupDesc](spec.md#attributedefunionattrgroupdesc) to specify "
"the default selection of children."
msgstr ""
-"定义一个 Union Attribute Group ,您需要在AttributeDef的"type"字段中使用AT_UNION_GROUP进行指示。然后,您可以使用UnionAttrGroupDesc来指定子属性的默认选择。"
+"定义一个 Union Attribute Group "
+",您需要在AttributeDef的\"type\"字段中使用AT_UNION_GROUP进行指示。然后,您可以使用UnionAttrGroupDesc来指定子属性的默认选择。"
#: ../../intro.md:184
msgid ""
@@ -507,7 +461,8 @@ msgid ""
"the attribute tree node. The prefixes for root attributes is an empty "
"list. e.g. Prefixed of \"a/d/h\" is [\"a\", \"d\", \"h\"]."
msgstr ""
-"对于任何属性,您可以使用 **prefixes** 来指示属性树节点的所有祖先。根属性的前缀列表为空列表。例如,"a/d/h"的 **prefixes** 是["a", "d", "h"]。"
+"对于任何属性,您可以使用 **prefixes** 来指示属性树节点的所有祖先。根属性的前缀列表为空列表。例如,\"a/d/h\"的 "
+"**prefixes** 是[\"a\", \"d\", \"h\"]。"
#: ../../intro.md:186
msgid ""
@@ -516,7 +471,8 @@ msgid ""
"questions given to survey takers. Union Attribute Group is to descibe "
"such cases."
msgstr ""
-"为什么需要 Union Attribute Group ? 组件的属性类似于调查问卷。有时问题的答案可能会影响给调查对象提出的后续问题。Union Attribute Group 用于描述这种情况。"
+"为什么需要 Union Attribute Group ? 组件的属性类似于调查问卷。有时问题的答案可能会影响给调查对象提出的后续问题。Union"
+" Attribute Group 用于描述这种情况。"
#: ../../intro.md:188
msgid ""
@@ -524,7 +480,8 @@ msgid ""
"are used with Union Attribute Groups to express a complicated attribute "
"tree."
msgstr ""
-"为什么需要 Struct Attribute Group ? 在大多数情况下,Struct Attribute Group 与 Union Attribute Group 一起用于表示复杂的属性树。"
+"为什么需要 Struct Attribute Group ? 在大多数情况下,Struct Attribute Group 与 Union "
+"Attribute Group 一起用于表示复杂的属性树。"
#: ../../intro.md:193
msgid "[IoDef](spec.md#iodef)"
@@ -535,8 +492,7 @@ msgid ""
"IoDef is to specify the requirement of an input or output of the "
"component. You should use **types** to declare accepted types of "
"[DistData](spec.md#distdata)."
-msgstr ""
-"IoDef用于指定组件的输入或输出要求。您应该使用types来声明接受的 [DistData](spec.md#distdata) 的类型。"
+msgstr "IoDef用于指定组件的输入或输出要求。您应该使用types来声明接受的 [DistData](spec.md#distdata) 的类型。"
#: ../../intro.md:197
msgid "[TableAttrDef](spec.md#TableAttrDef)"
@@ -547,52 +503,44 @@ msgid ""
"If **types** of an IoDef is *sf.table.individual* and/or "
"*sf.table.vertical*. You may further indicates columns of table to use in"
" apllications with TableAttrDef."
-msgstr ""
-"如果IoDef的types是sf.table.individual和/或sf.table.vertical,您可以使用TableAttrDef进一步指示在应用程序中使用的表的列。"
+msgstr "如果IoDef的types是sf.table.individual和/或sf.table.vertical,您可以使用TableAttrDef进一步指示在应用程序中使用的表的列。"
#: ../../intro.md:201
msgid ""
"e.g. We may ask users to provide a table as an input/output, then select "
"some columns as features, and fillin other attributes for each selected "
"columns."
-msgstr ""
-"例如,我们可能要求用户提供一个表作为输入/输出,然后选择某些列作为特征,并为每个选定的列填写其他属性。"
+msgstr "例如,我们可能要求用户提供一个表作为输入/输出,然后选择某些列作为特征,并为每个选定的列填写其他属性。"
#: ../../intro.md:203
msgid ""
"*name* is the name of columns, e.g. \"label\", \"key\", \"features\". It "
"should unique among all TableAttrDefs of one input."
-msgstr ""
-"name是列的名称,例如"label"、"key"、"features"。它应该在一个输入的所有TableAttrDefs中是唯一的。"
+msgstr "name是列的名称,例如\"label\"、\"key\"、\"features\"。它应该在一个输入的所有TableAttrDefs中是唯一的。"
#: ../../intro.md:204
msgid "*desc* indicates what the selected columns for to users."
-msgstr ""
-"desc指示用户所选列的含义。"
+msgstr "desc指示用户所选列的含义。"
#: ../../intro.md:205
msgid "types indicates type restrictions for selected columns."
-msgstr ""
-"types指示所选列的类型限制。"
+msgstr "types指示所选列的类型限制。"
#: ../../intro.md:206
msgid ""
"*col_min_cnt_inclusive* and *col_max_cnt_inclusive* indicates how many "
"columns should be selected for *name*."
-msgstr ""
-"col_min_cnt_inclusive和col_max_cnt_inclusive指示应选择多少列作为name。"
+msgstr "col_min_cnt_inclusive和col_max_cnt_inclusive指示应选择多少列作为name。"
#: ../../intro.md:207
msgid "*extra_attrs* are extra attributes for each selected columns."
-msgstr ""
-"extra_attrs是每个选定列的额外属性。"
+msgstr "extra_attrs是每个选定列的额外属性。"
#: ../../intro.md:213
msgid ""
"Again, you could leave **TableAttrDef** alone at this moment since it is "
"unusual to use."
-msgstr ""
-"同样,您可以暂时不用担心TableAttrDef,因为它很少使用。"
+msgstr "同样,您可以暂时不用担心TableAttrDef,因为它很少使用。"
#: ../../intro.md:217
msgid "[CompListDef](spec.md#complistdef)"
@@ -602,8 +550,7 @@ msgstr ""
msgid ""
"A group of a components could be organized by a **CompListDef**. Each "
"privacy-preserving application must provide a CompList."
-msgstr ""
-"一组组件可以通过CompListDef进行组织。每个隐私保护应用程序必须提供一个CompList。"
+msgstr "一组组件可以通过CompListDef进行组织。每个隐私保护应用程序必须提供一个CompList。"
#: ../../intro.md:221
msgid ""
@@ -611,7 +558,9 @@ msgid ""
"[link](https://github.com/secretflow/secretflow/blob/main/docker/comp_list.json)"
" is the comp list of secretflow."
msgstr ""
-"例如,这个 [链接](https://github.com/secretflow/secretflow/blob/main/docker/comp_list.json) 是secretflow的组件列表。"
+"例如,这个 "
+"[链接](https://github.com/secretflow/secretflow/blob/main/docker/comp_list.json)"
+" 是secretflow的组件列表。"
#: ../../intro.md:224
msgid "[Node Evalution](spec.md#EVALUATION)"
@@ -629,15 +578,13 @@ msgstr "如何评估一个节点?"
msgid ""
"A runtime instance of a component is called a Node. To evaluate a "
"component of an apllication, you must provide:"
-msgstr ""
-"组件的运行时实例称为节点。要评估一个应用程序的组件,您必须提供以下内容:"
+msgstr "组件的运行时实例称为节点。要评估一个应用程序的组件,您必须提供以下内容:"
#: ../../intro.md:229
msgid ""
"StorageConfig, you must provide it to let application to get the remote "
"data pointed by DataRef."
-msgstr ""
-"StorageConfig,您必须提供它以让应用程序获取由DataRef指定的远程数据。"
+msgstr "StorageConfig,您必须提供它以让应用程序获取由DataRef指定的远程数据。"
#: ../../intro.md:230
msgid "NodeEvalParam, all fields required by ComponentDef."
@@ -659,23 +606,19 @@ msgstr "它包含:"
msgid ""
"domain, name, version: to locate a component from the comp list of "
"application."
-msgstr ""
-"domain,name,version:用于从应用程序的组件列表中定位一个组件。"
+msgstr "domain,name,version:用于从应用程序的组件列表中定位一个组件。"
#: ../../intro.md:239
msgid "attr_paths, attrs: Attributes of the component. Will be discussed further."
-msgstr ""
-"attr_paths,attrs:组件的属性。稍后将进一步讨论。"
+msgstr "attr_paths,attrs:组件的属性。稍后将进一步讨论。"
#: ../../intro.md:240
msgid "inputs: Inputs of the component, should be DistData."
-msgstr ""
-"inputs:组件的输入,类型是DistData。"
+msgstr "inputs:组件的输入,类型是DistData。"
#: ../../intro.md:241
msgid "output_uris: Output uris for each output. Will be discussed further."
-msgstr ""
-"output_uris:每个输出的URI。稍后将进一步讨论。"
+msgstr "output_uris:每个输出的URI。稍后将进一步讨论。"
#: ../../intro.md:246
msgid ""
@@ -684,23 +627,21 @@ msgid ""
"this output DistData. It looks weird since we may give each party a "
"different uri. However, this is not a good idea:"
msgstr ""
-"**为什么每个输出只有一个URI?** 对于每个输出,只提供一个URI。它将由所有参与方用于生成该输出DistData的所有data_ref。"
-"这看起来很奇怪,因为我们可能会给每个参与方一个不同的URI。然而,这不是一个好主意:"
+"**为什么每个输出只有一个URI?** "
+"对于每个输出,只提供一个URI。它将由所有参与方用于生成该输出DistData的所有data_ref。这看起来很奇怪,因为我们可能会给每个参与方一个不同的URI。然而,这不是一个好主意:"
#: ../../intro.md:250
msgid ""
"When we have multiple parties, the list of output uris would be extremely"
" long."
-msgstr ""
-"当我们有多个参与方时,输出URI列表会变得非常长。"
+msgstr "当我们有多个参与方时,输出URI列表会变得非常长。"
#: ../../intro.md:251
msgid ""
"Each party has the full control of the storage root and they could move "
"the files afterwards. We hope to keep our system simple and don't invest "
"any effort in file system management."
-msgstr ""
-"每个参与方都完全控制存储根目录,并且他们之后可以移动文件。我们希望保持我们的系统简单,不在文件系统管理上投入任何精力。"
+msgstr "每个参与方都完全控制存储根目录,并且他们之后可以移动文件。我们希望保持我们的系统简单,不在文件系统管理上投入任何精力。"
#: ../../intro.md:255
msgid "Attributes"
@@ -712,15 +653,13 @@ msgstr "我们复制了上面相同的属性树。"
#: ../../intro.md:261
msgid "We use attr_paths and attrs to answer attributes defined in components."
-msgstr ""
-"我们使用attr_paths和attrs来回答组件中定义的属性。"
+msgstr "我们使用attr_paths和attrs来回答组件中定义的属性。"
#: ../../intro.md:263
msgid ""
"The length of attr_paths and attrs must be the same. They should obey the"
" same order. e.g. if the n-th attr is the value of n-th attr_path."
-msgstr ""
-"attr_paths和attrs的长度必须相同。它们应该遵守相同的顺序。例如,第n个attr是第n个attr_path的值。"
+msgstr "attr_paths和attrs的长度必须相同。它们应该遵守相同的顺序。例如,第n个attr是第n个attr_path的值。"
#: ../../intro.md:265
msgid "**Atomic Attribute**"
@@ -730,25 +669,21 @@ msgstr ""
msgid ""
"The attr_path of an atmoic attribute is the full path of an attribute "
"tree node. e.g."
-msgstr ""
-"原子属性的attr_path是属性树节点的完整路径。例如"
+msgstr "原子属性的attr_path是属性树节点的完整路径。例如"
#: ../../intro.md:269
msgid "attr_path of attribute node named *q* is \"a/c/f/k/q\""
-msgstr ""
-"属性节点名为q的attr_path是"a/c/f/k/q""
+msgstr "属性节点名为q的attr_path是\"a/c/f/k/q\""
#: ../../intro.md:270
msgid "attr_path of attribute node named *j* is \"a/c/f/j\""
-msgstr ""
-"属性节点名为j的attr_path是"a/c/f/k/j""
+msgstr "属性节点名为j的attr_path是\"a/c/f/k/j\""
#: ../../intro.md:272
msgid ""
"[Attribute](spec.md#attribute) is used to express the value of an "
"attribute. Please use *is_na* to indicate the value is *n/a* explicitly."
-msgstr ""
-"[Attribute](spec.md#attribute) 用于表示属性的值。请使用is_na来明确表示值为n/a。"
+msgstr "[Attribute](spec.md#attribute) 用于表示属性的值。请使用is_na来明确表示值为n/a。"
#: ../../intro.md:274
msgid "**Struct Attribute Group**"
@@ -756,8 +691,7 @@ msgstr ""
#: ../../intro.md:276
msgid "You don't need fill-in anything for Struct Attribute Group."
-msgstr ""
-"对于 Struct Attribute Group ,您不需要填写任何内容。"
+msgstr "对于 Struct Attribute Group ,您不需要填写任何内容。"
#: ../../intro.md:278
msgid "**Union Attribute Group**"
@@ -767,30 +701,24 @@ msgstr ""
msgid ""
"For union attribute group, you must provide a pair of attr_path and attr "
"to indicate your choice of children explicitly."
-msgstr ""
-"对于 union attribute group ,您必须提供一对attr_path和attr,以明确指示您选择的子节点。"
+msgstr "对于 union attribute group ,您必须提供一对attr_path和attr,以明确指示您选择的子节点。"
#: ../../intro.md:282
msgid "e.g. for union attribute group named c, the attr_path is \"a/c\""
-msgstr ""
-"例如,对于名为c的联合属性组,attr_path是"a/c""
+msgstr "例如,对于名为c的联合属性组,attr_path是\"a/c\""
#: ../../intro.md:284
msgid ""
"If you choose children named e, the attr is a "
"[Attribute](spec.md#attribute) with *s* field is e, i.e. children "
"selection is a string."
-msgstr ""
-"如果您选择名为e的子元素,则attr是一个"
-"[Attribute](spec.md#attribute) ,其中s字段为e,即子元素选择是一个字符串。"
+msgstr "如果您选择名为e的子元素,则attr是一个[Attribute](spec.md#attribute) ,其中s字段为e,即子元素选择是一个字符串。"
#: ../../intro.md:285
msgid ""
"If you choose children named f, the attr is a "
"[Attribute](spec.md#attribute) with *s* field is f."
-msgstr ""
-"如果您选择名为f的子元素,则attr是一个"
-"[Attribute](spec.md#attribute) ,其中s字段为f。"
+msgstr "如果您选择名为f的子元素,则attr是一个[Attribute](spec.md#attribute) ,其中s字段为f。"
#: ../../intro.md:288
msgid "**TableAttrDef**"
@@ -798,8 +726,7 @@ msgstr ""
#: ../../intro.md:290
msgid "Fill-ining TableAttrDef is quite complicated."
-msgstr ""
-"填写TableAttrDef非常复杂。"
+msgstr "填写TableAttrDef非常复杂。"
#: ../../intro.md:292
msgid ""
@@ -807,70 +734,58 @@ msgid ""
"name)(/(column name)(/(extra attributes))?)?* for select columns and "
"extra attributes."
msgstr ""
-"attr_path是"
-" *(input|output)/(IoDef name)/(TableAttrDef name)(/(column name)(/(extra attributes))?)?* "
-",用于选择列和额外属性。"
+"attr_path是 *(input|output)/(IoDef name)/(TableAttrDef name)(/(column "
+"name)(/(extra attributes))?)?* ,用于选择列和额外属性。"
#: ../../intro.md:294
msgid ""
"First, you should answer the selected columns. The attr_path consists of "
"three parts:"
-msgstr ""
-"首先,您应该回答选择的列。attr_path由三个部分组成:"
+msgstr "首先,您应该回答选择的列。attr_path由三个部分组成:"
#: ../../intro.md:295
msgid ""
"\"input\" or \"output\" indicates whether IoDef of TableAttrDef is from "
"input or output of ComponentDef."
-msgstr ""
-""input"或"output"表示TableAttrDef的IoDef是来自组件定义的输入还是输出。"
+msgstr "\"input\"或\"output\"表示TableAttrDef的IoDef是来自组件定义的输入还是输出。"
#: ../../intro.md:296
msgid "IoDef name"
-msgstr ""
-"IoDef名"
+msgstr "IoDef名"
#: ../../intro.md:297
msgid "TableAttrDef name"
-msgstr ""
-"TableAttrDef名"
+msgstr "TableAttrDef名"
#: ../../intro.md:299
msgid ""
"e.g. A typical attr_path for selected columns id "
"\"input/train_dataset/features\""
-msgstr ""
-"例如,选择列id的典型attr_path为"input/train_dataset/features""
+msgstr "例如,选择列id的典型attr_path为\"input/train_dataset/features\""
#: ../../intro.md:301
msgid ""
"You should use *ss* field of [Attribute](spec.md#attribute) to list "
"selected columns."
-msgstr ""
-"您应该使用 [Attribute](spec.md#attribute) 的ss字段列出所选列。"
-
+msgstr "您应该使用 [Attribute](spec.md#attribute) 的ss字段列出所选列。"
#: ../../intro.md:303
msgid ""
"Then, if TableAttrDef contains *extra_attrs*, you should continue to "
"answer it. The attr_path contains five parts:"
-msgstr ""
-"然后,如果TableAttrDef包含extra_attrs,则应继续回答它。attr_path包含五个部分:"
+msgstr "然后,如果TableAttrDef包含extra_attrs,则应继续回答它。attr_path包含五个部分:"
#: ../../intro.md:304
msgid "\"input\" or \"output\". The same as selected columns."
-msgstr ""
-""input"或"output"。与所选列相同。"
+msgstr "\"input\"或\"output\"。与所选列相同。"
#: ../../intro.md:305
msgid "IoDef name. The same as selected columns."
-msgstr ""
-"IoDef名称。与所选列相同。"
+msgstr "IoDef名称。与所选列相同。"
#: ../../intro.md:306
msgid "TableAttrDef name. The same as selected columns."
-msgstr ""
-"TableAttrDef名称。与所选列相同。"
+msgstr "TableAttrDef名称。与所选列相同。"
#: ../../intro.md:307
msgid "Column name."
@@ -884,7 +799,7 @@ msgstr "额外属性。规则与属性节点相同。"
msgid ""
"e.g. A typical attr_path for extra_attrs of a selected columns is "
"\"input/train_dataset/features/x_1/a/b/c\""
-msgstr "例如,选择列的额外属性的典型attr_path为"input/train_dataset/features/x_1/a/b/c""
+msgstr "例如,选择列的额外属性的典型attr_path为\"input/train_dataset/features/x_1/a/b/c\""
#: ../../intro.md:312
msgid "Outputs"
@@ -921,38 +836,34 @@ msgstr "与报告相关的 proto 是:"
#: ../../intro.md:328
msgid "Descriptions: Displays multiple read-only fields in groups."
-msgstr ""
-"Descriptions:以组的形式显示多个只读字段。"
+msgstr "Descriptions:以组的形式显示多个只读字段。"
#: ../../intro.md:329
msgid "Table: Displays rows of data."
-msgstr ""
-"Table:显示数据的行。"
+msgstr "Table:显示数据的行。"
#: ../../intro.md:330
msgid ""
"Div: A division or a section of a page, consists of Descriptions, Tables "
"or Divs."
-msgstr ""
-"Div:页面的一个部分或节,由Descriptions、Tables或Divs组成。"
+msgstr "Div:页面的一个部分或节,由Descriptions、Tables或Divs组成。"
#: ../../intro.md:331
msgid "Tab: A page of a report, consists of Divs."
-msgstr ""
-"Tab:报告的一个页面,由Divs组成。"
+msgstr "Tab:报告的一个页面,由Divs组成。"
#: ../../intro.md:332
msgid "Report: The top-level of a report, consists of Tabs."
-msgstr ""
-"Report:报告的顶级,由Tabs组成。"
+msgstr "Report:报告的顶级,由Tabs组成。"
#: ../../intro.md:334
msgid "**Report** should be packed into **meta** field of DistData."
-msgstr ""
-"Report应该被打包到DistData的meta字段中。"
+msgstr "Report应该被打包到DistData的meta字段中。"
#: ../../intro.md:336
msgid "In SecretFlow, the type str for Report is *sf.report*."
-msgstr ""
-"在SecretFlow中,Report的类型为 *sf.report* 。"
+msgstr "在SecretFlow中,Report的类型为 *sf.report* 。"
+
+#~ msgid "[Data]((spec.md#data))"
+#~ msgstr ""