9f9dc979fb
* sptool: Initial structure * sptool: Port lotus-miner actor withdraw * sptool: Make cli docsgen happy * actors are done * info * proving * sptool the rest * fixed gitignore * lints * oops * 2 * terminate * fixes * curio new-miner setup * reword doc section * fix curio flags * fix gen * change repetitive prompt * add miner to base * add config test * fix config compare, add tests * go mod tidy * fix itest in GA * fix comparer function * fix compare value match --------- Co-authored-by: Łukasz Magiera <magik6k@gmail.com> Co-authored-by: Andrew Jackson (Ajax) <snadrus@gmail.com>
1052 lines
40 KiB
JSON
1052 lines
40 KiB
JSON
{
|
||
"language": "zh",
|
||
"messages": [
|
||
{
|
||
"id": "This interactive tool will walk you through migration of Curio.\nPress Ctrl+C to exit at any time.",
|
||
"message": "This interactive tool will walk you through migration of Curio.\nPress Ctrl+C to exit at any time.",
|
||
"translation": "此互动工具将引导您完成Curio的迁移。\n随时按Ctrl+C退出。"
|
||
},
|
||
{
|
||
"id": "This tool confirms each action it does.",
|
||
"message": "This tool confirms each action it does.",
|
||
"translation": "此工具确认其执行的每个操作。"
|
||
},
|
||
{
|
||
"id": "Ctrl+C pressed in Terminal",
|
||
"message": "Ctrl+C pressed in Terminal",
|
||
"translation": "在终端中按下Ctrl+C"
|
||
},
|
||
{
|
||
"id": "Verifying Sectors exist in Yugabyte.",
|
||
"message": "Verifying Sectors exist in Yugabyte.",
|
||
"translation": "正在验证Yugabyte中的扇区是否存在。"
|
||
},
|
||
{
|
||
"id": "Error verifying sectors: {Error}",
|
||
"message": "Error verifying sectors: {Error}",
|
||
"translation": "验证扇区时出错:{Error}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Error",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "err.Error()"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Sectors verified. {I} sectors found.",
|
||
"message": "Sectors verified. {I} sectors found.",
|
||
"translation": "已验证扇区。找到了{I}个扇区。",
|
||
"placeholders": [
|
||
{
|
||
"id": "I",
|
||
"string": "%[1]d",
|
||
"type": "[]int",
|
||
"underlyingType": "[]int",
|
||
"argNum": 1,
|
||
"expr": "i"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Never remove the database info from the config.toml for lotus-miner as it avoids double PoSt.",
|
||
"message": "Never remove the database info from the config.toml for lotus-miner as it avoids double PoSt.",
|
||
"translation": "从config.toml中永远不要删除lotus-miner的数据库信息,因为它避免了双PoSt。"
|
||
},
|
||
{
|
||
"id": "Enter the info to connect to your Yugabyte database installation (https://download.yugabyte.com/)",
|
||
"message": "Enter the info to connect to your Yugabyte database installation (https://download.yugabyte.com/)",
|
||
"translation": "输入连接到您的Yugabyte数据库安装的信息(https://download.yugabyte.com/)"
|
||
},
|
||
{
|
||
"id": "Host: {Hosts_}",
|
||
"message": "Host: {Hosts_}",
|
||
"translation": "主机:{Hosts_}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Hosts_",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "strings.Join(harmonycfg.Hosts, \",\")"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Port: {Port}",
|
||
"message": "Port: {Port}",
|
||
"translation": "端口:{Port}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Port",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "harmonycfg.Port"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Username: {Username}",
|
||
"message": "Username: {Username}",
|
||
"translation": "用户名:{Username}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Username",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "harmonycfg.Username"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Password: {Password}",
|
||
"message": "Password: {Password}",
|
||
"translation": "密码:{Password}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Password",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "harmonycfg.Password"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Database: {Database}",
|
||
"message": "Database: {Database}",
|
||
"translation": "数据库:{Database}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Database",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "harmonycfg.Database"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Continue to connect and update schema.",
|
||
"message": "Continue to connect and update schema.",
|
||
"translation": "继续连接和更新架构。"
|
||
},
|
||
{
|
||
"id": "Database config error occurred, abandoning migration: {Error}",
|
||
"message": "Database config error occurred, abandoning migration: {Error}",
|
||
"translation": "发生数据库配置错误,放弃迁移:{Error}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Error",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "err.Error()"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Enter the Yugabyte database host(s)",
|
||
"message": "Enter the Yugabyte database host(s)",
|
||
"translation": "输入Yugabyte数据库主机(S)"
|
||
},
|
||
{
|
||
"id": "No host provided",
|
||
"message": "No host provided",
|
||
"translation": "未提供主机"
|
||
},
|
||
{
|
||
"id": "Enter the Yugabyte database {Stringport_username_password_databasei_1}",
|
||
"message": "Enter the Yugabyte database {Stringport_username_password_databasei_1}",
|
||
"translation": "输入Yugabyte数据库 {Stringport_username_password_databasei_1}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Stringport_username_password_databasei_1",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "[]string{\"port\", \"username\", \"password\", \"database\"}[i-1]"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "No value provided",
|
||
"message": "No value provided",
|
||
"translation": "未提供值"
|
||
},
|
||
{
|
||
"id": "Error connecting to Yugabyte database: {Error}",
|
||
"message": "Error connecting to Yugabyte database: {Error}",
|
||
"translation": "连接到Yugabyte数据库时出错:{Error}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Error",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "err.Error()"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Connected to Yugabyte. Schema is current.",
|
||
"message": "Connected to Yugabyte. Schema is current.",
|
||
"translation": "已连接到Yugabyte。模式是当前的。"
|
||
},
|
||
{
|
||
"id": "Error encoding config.toml: {Error}",
|
||
"message": "Error encoding config.toml: {Error}",
|
||
"translation": "编码config.toml时出错:{Error}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Error",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "err.Error()"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Error reading filemode of config.toml: {Error}",
|
||
"message": "Error reading filemode of config.toml: {Error}",
|
||
"translation": "读取config.toml文件模式时出错:{Error}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Error",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "err.Error()"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Error writing config.toml: {Error}",
|
||
"message": "Error writing config.toml: {Error}",
|
||
"translation": "写入config.toml时出错:{Error}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Error",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "err.Error()"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Restart Lotus Miner.",
|
||
"message": "Restart Lotus Miner.",
|
||
"translation": "重新启动Lotus Miner。"
|
||
},
|
||
{
|
||
"id": "Connected to Yugabyte",
|
||
"message": "Connected to Yugabyte",
|
||
"translation": "已连接到Yugabyte"
|
||
},
|
||
{
|
||
"id": "Select the location of your lotus-miner config directory?",
|
||
"message": "Select the location of your lotus-miner config directory?",
|
||
"translation": "选择您的lotus-miner配置目录的位置?"
|
||
},
|
||
{
|
||
"id": "Other",
|
||
"message": "Other",
|
||
"translation": "其他"
|
||
},
|
||
{
|
||
"id": "Enter the path to the configuration directory used by lotus-miner",
|
||
"message": "Enter the path to the configuration directory used by lotus-miner",
|
||
"translation": "输入lotus-miner使用的配置目录的路径"
|
||
},
|
||
{
|
||
"id": "No path provided, abandoning migration",
|
||
"message": "No path provided, abandoning migration",
|
||
"translation": "未提供路径,放弃迁移"
|
||
},
|
||
{
|
||
"id": "Cannot read the config.toml file in the provided directory, Error: {Error}",
|
||
"message": "Cannot read the config.toml file in the provided directory, Error: {Error}",
|
||
"translation": "无法读取提供的目录中的config.toml文件,错误:{Error}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Error",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "err.Error()"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "Read Miner Config",
|
||
"message": "Read Miner Config",
|
||
"translation": "读取矿工配置"
|
||
},
|
||
{
|
||
"id": "Completed Step: {Step}",
|
||
"message": "Completed Step: {Step}",
|
||
"translation": "完成步骤:{Step}",
|
||
"placeholders": [
|
||
{
|
||
"id": "Step",
|
||
"string": "%[1]s",
|
||
"type": "string",
|
||
"underlyingType": "string",
|
||
"argNum": 1,
|
||
"expr": "step"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": "This interactive tool migrates lotus-miner to Curio in 5 minutes.",
|
||
"translation": "这个交互式工具可以在5分钟内将lotus-miner迁移到Curio。",
|
||
"message": "This interactive tool migrates lotus-miner to Curio in 5 minutes.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Each step needs your confirmation and can be reversed. Press Ctrl+C to exit at any time.",
|
||
"translation": "每一步都需要您的确认,并且可以撤销。随时按Ctrl+C退出。",
|
||
"message": "Each step needs your confirmation and can be reversed. Press Ctrl+C to exit at any time.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Use the arrow keys to navigate: ↓ ↑ → ←",
|
||
"translation": "使用箭头键进行导航:↓ ↑ → ←",
|
||
"message": "Use the arrow keys to navigate: ↓ ↑ → ←",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Lotus-Miner to Curio Migration.",
|
||
"translation": "Lotus-Miner到Curio迁移。",
|
||
"message": "Lotus-Miner to Curio Migration.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Try the web interface with for further guided improvements.",
|
||
"translation": "尝试使用网页界面进行进一步的指导改进。",
|
||
"message": "Try the web interface with for further guided improvements.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "You can now migrate your market node ({Boost}), if applicable.",
|
||
"translation": "如果适用,您现在可以迁移您的市场节点({Boost})。",
|
||
"message": "You can now migrate your market node ({Boost}), if applicable.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Migrating config.toml to database.",
|
||
"translation": "正在将config.toml迁移到数据库。",
|
||
"message": "Migrating config.toml to database.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error reading from database: {Error}. Aborting Migration.",
|
||
"translation": "读取数据库时出错:{Error}。正在中止迁移。",
|
||
"message": "Error reading from database: {Error}. Aborting Migration.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "cannot read API: {Error}. Aborting Migration",
|
||
"translation": "无法读取API:{Error}。正在中止迁移",
|
||
"message": "cannot read API: {Error}. Aborting Migration",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error saving config to layer: {Error}. Aborting Migration",
|
||
"translation": "保存配置到层时出错:{Error}。正在中止迁移",
|
||
"message": "Error saving config to layer: {Error}. Aborting Migration",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Protocol Labs wants to improve the software you use. Tell the team you're using Curio.",
|
||
"translation": "Protocol Labs希望改进您使用的软件。告诉团队您正在使用Curio。",
|
||
"message": "Protocol Labs wants to improve the software you use. Tell the team you're using Curio.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Select what you want to share with the Curio team.",
|
||
"translation": "选择您想与Curio团队分享的内容。",
|
||
"message": "Select what you want to share with the Curio team.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Individual Data: Miner ID, Curio version, net ({Mainnet} or {Testnet}). Signed.",
|
||
"translation": "个人数据:矿工ID、Curio版本、网络({Mainnet}或{Testnet})。已签名。",
|
||
"message": "Individual Data: Miner ID, Curio version, net ({Mainnet} or {Testnet}). Signed.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Aggregate-Anonymous: version, net, and Miner power (bucketed).",
|
||
"translation": "聚合-匿名:版本、网络和矿工功率(分桶)。",
|
||
"message": "Aggregate-Anonymous: version, net, and Miner power (bucketed).",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Hint: I am someone running Curio on net.",
|
||
"translation": "提示:我是在网络上运行Curio的人。",
|
||
"message": "Hint: I am someone running Curio on net.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Nothing.",
|
||
"translation": "没有。",
|
||
"message": "Nothing.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Aborting remaining steps.",
|
||
"translation": "中止剩余步骤。",
|
||
"message": "Aborting remaining steps.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error connecting to lotus node: {Error}",
|
||
"translation": "连接到莲花节点时出错:{Error}",
|
||
"message": "Error connecting to lotus node: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error getting miner power: {Error}",
|
||
"translation": "获取矿工功率时出错:{Error}",
|
||
"message": "Error getting miner power: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error marshalling message: {Error}",
|
||
"translation": "整理消息时出错:{Error}",
|
||
"message": "Error marshalling message: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error getting miner info: {Error}",
|
||
"translation": "获取矿工信息时出错:{Error}",
|
||
"message": "Error getting miner info: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error signing message: {Error}",
|
||
"translation": "签署消息时出错:{Error}",
|
||
"message": "Error signing message: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error sending message: {Error}",
|
||
"translation": "发送消息时出错:{Error}",
|
||
"message": "Error sending message: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error sending message: Status {Status}, Message:",
|
||
"translation": "发送消息时出错:状态{Status},消息:",
|
||
"message": "Error sending message: Status {Status}, Message:",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Message sent.",
|
||
"translation": "消息已发送。",
|
||
"message": "Message sent.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Documentation:",
|
||
"translation": "文档:",
|
||
"message": "Documentation:",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "The '{Base}' layer stores common configuration. All curio instances can include it in their {__layers} argument.",
|
||
"translation": "'{Base}'层存储通用配置。所有Curio实例都可以在其{__layers}参数中包含它。",
|
||
"message": "The '{Base}' layer stores common configuration. All curio instances can include it in their {__layers} argument.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "You can add other layers for per-machine configuration changes.",
|
||
"translation": "您可以添加其他层进行每台机器的配置更改。",
|
||
"message": "You can add other layers for per-machine configuration changes.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Join {Fil_curio_help} in Filecoin {Slack} for help.",
|
||
"translation": "加入Filecoin {Slack}中的{Fil_curio_help}寻求帮助。",
|
||
"message": "Join {Fil_curio_help} in Filecoin {Slack} for help.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Join {Fil_curio_dev} in Filecoin {Slack} to follow development and feedback!",
|
||
"translation": "加入Filecoin {Slack}中的{Fil_curio_dev}来跟踪开发和反馈!",
|
||
"message": "Join {Fil_curio_dev} in Filecoin {Slack} to follow development and feedback!",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Want PoST redundancy? Run many Curio instances with the '{Post}' layer.",
|
||
"translation": "需要PoST冗余?使用'{Post}'层运行多个Curio实例。",
|
||
"message": "Want PoST redundancy? Run many Curio instances with the '{Post}' layer.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Point your browser to your web GUI to complete setup with {Boost} and advanced featues.",
|
||
"translation": "将您的浏览器指向您的网络GUI,以使用{Boost}和高级功能完成设置。",
|
||
"message": "Point your browser to your web GUI to complete setup with {Boost} and advanced featues.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "For SPs with multiple Miner IDs, run 1 migration per lotus-miner all to the same 1 database. The cluster will serve all Miner IDs.",
|
||
"translation": "对于具有多个矿工ID的SP,针对所有lotus-miner运行1次迁移到同一个数据库。集群将服务所有矿工ID。",
|
||
"message": "For SPs with multiple Miner IDs, run 1 migration per lotus-miner all to the same 1 database. The cluster will serve all Miner IDs.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Please start {Lotus_miner} now that database credentials are in {Toml}.",
|
||
"translation": "现在数据库凭证在{Toml}中,请启动{Lotus_miner}。",
|
||
"message": "Please start {Lotus_miner} now that database credentials are in {Toml}.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Waiting for {Lotus_miner} to write sectors into Yugabyte.",
|
||
"translation": "等待{Lotus_miner}将扇区写入Yugabyte。",
|
||
"message": "Waiting for {Lotus_miner} to write sectors into Yugabyte.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "The sectors are in the database. The database is ready for {Curio}.",
|
||
"translation": "扇区在数据库中。数据库已准备好用于{Curio}。",
|
||
"message": "The sectors are in the database. The database is ready for {Curio}.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Now shut down lotus-miner and move the systems to {Curio}.",
|
||
"translation": "现在关闭lotus-miner并将系统移至{Curio}。",
|
||
"message": "Now shut down lotus-miner and move the systems to {Curio}.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Press return to continue",
|
||
"translation": "按回车继续",
|
||
"message": "Press return to continue",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Aborting migration.",
|
||
"translation": "中止迁移。",
|
||
"message": "Aborting migration.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Sectors verified. {I} sector locations found.",
|
||
"translation": "扇区已验证。发现了{I}个扇区位置。",
|
||
"message": "Sectors verified. {I} sector locations found.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Press return to update {Toml} with Yugabyte info. Backup the file now.",
|
||
"translation": "按回车更新{Toml}以获取Yugabyte信息。现在备份文件。",
|
||
"message": "Press return to update {Toml} with Yugabyte info. Backup the file now.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "To start, ensure your sealing pipeline is drained and shut-down lotus-miner.",
|
||
"translation": "开始之前,请确保您的密封管道已排空并关闭lotus-miner。",
|
||
"message": "To start, ensure your sealing pipeline is drained and shut-down lotus-miner.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Enter the path to the configuration directory used by {Lotus_miner}",
|
||
"translation": "输入{Lotus_miner}使用的配置目录的路径",
|
||
"message": "Enter the path to the configuration directory used by {Lotus_miner}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Step Complete: {Step}",
|
||
"translation": "步骤完成:{Step}",
|
||
"message": "Step Complete: {Step}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Configuration 'base' was updated to include this miner's address and its wallet setup.",
|
||
"translation": "配置'base'已更新,包含了这个矿工的地址和其钱包设置。",
|
||
"message": "Configuration 'base' was updated to include this miner's address and its wallet setup.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Compare the configurations {Base} to {MinerAddresses0}. Changes between the miner IDs other than wallet addreses should be a new, minimal layer for runners that need it.",
|
||
"translation": "比较配置{Base}和{MinerAddresses0}。矿工ID之间除了钱包地址的变化应该是需要的运行者的一个新的、最小的层。",
|
||
"message": "Compare the configurations {Base} to {MinerAddresses0}. Changes between the miner IDs other than wallet addreses should be a new, minimal layer for runners that need it.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Configuration 'base' was created to include this miner's address and its wallet setup.",
|
||
"translation": "配置'base'已创建,包括了这个矿工的地址和其钱包设置。",
|
||
"message": "Configuration 'base' was created to include this miner's address and its wallet setup.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Layer {LayerName} created.",
|
||
"translation": "层{LayerName}已创建。",
|
||
"message": "Layer {LayerName} created.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "To work with the config: \\n",
|
||
"translation": "要使用配置:\\n",
|
||
"message": "To work with the config: \\n",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "To run Curio: With machine or cgroup isolation, use the command (with example layer selection):",
|
||
"translation": "运行Curio:使用机器或cgroup隔离,使用命令(附带示例层选择):",
|
||
"message": "To run Curio: With machine or cgroup isolation, use the command (with example layer selection):",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Try the web interface with {__layersgui} for further guided improvements.",
|
||
"translation": "尝试使用{__layersgui}的Web界面进行进一步引导式改进。",
|
||
"message": "Try the web interface with {__layersgui} for further guided improvements.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error connecting to lotus node: {Error} {Error_1}",
|
||
"translation": "连接到lotus节点时出错:{Error} {Error_1}",
|
||
"message": "Error connecting to lotus node: {Error} {Error_1}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "could not get API info for FullNode: {Err}",
|
||
"translation": "无法获取FullNode的API信息:{Err}",
|
||
"message": "could not get API info for FullNode: {Err}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error getting token: {Error}",
|
||
"translation": "获取令牌时出错:{Error}",
|
||
"message": "Error getting token: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Filecoin {Slack} channels: {Fil_curio_help} and {Fil_curio_dev}",
|
||
"translation": "Filecoin {Slack} 频道:{Fil_curio_help} 和 {Fil_curio_dev}",
|
||
"message": "Filecoin {Slack} channels: {Fil_curio_help} and {Fil_curio_dev}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Start multiple Curio instances with the '{Post}' layer to redundancy.",
|
||
"translation": "使用'{Post}'层启动多个Curio实例以实现冗余。",
|
||
"message": "Start multiple Curio instances with the '{Post}' layer to redundancy.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "One database can serve multiple miner IDs: Run a migration for each lotus-miner.",
|
||
"translation": "一个数据库可以服务多个矿工ID:为每个lotus-miner运行迁移。",
|
||
"message": "One database can serve multiple miner IDs: Run a migration for each lotus-miner.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Please start (or restart) {Lotus_miner} now that database credentials are in {Toml}.",
|
||
"translation": "请立即启动(或重新启动){Lotus_miner},因为数据库凭据已在{Toml}中。",
|
||
"message": "Please start (or restart) {Lotus_miner} now that database credentials are in {Toml}.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error interpreting miner ID: {Error}: ID: {String}",
|
||
"translation": "解释矿工ID时出错:{Error}:ID:{String}",
|
||
"message": "Error interpreting miner ID: {Error}: ID: {String}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Enabling Sector Indexing in the database.",
|
||
"translation": "在数据库中启用扇区索引。",
|
||
"message": "Enabling Sector Indexing in the database.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error expanding path: {Error}",
|
||
"translation": "扩展路径时出错:{Error}",
|
||
"message": "Error expanding path: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Could not create repo from directory: {Error}. Aborting migration",
|
||
"translation": "无法从目录创建repo:{Error}。 中止迁移",
|
||
"message": "Could not create repo from directory: {Error}. Aborting migration",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Could not lock miner repo. Your miner must be stopped: {Error}\n Aborting migration",
|
||
"translation": "无法锁定矿工repo。 您的矿工必须停止:{Error}\n 中止迁移",
|
||
"message": "Could not lock miner repo. Your miner must be stopped: {Error}\n Aborting migration",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "To work with the config:",
|
||
"translation": "要使用配置:",
|
||
"message": "To work with the config:",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "This interactive tool creates a new miner actor and creates the basic configuration layer for it.",
|
||
"translation": "此交互式工具将创建一个新的矿工角色,并为其创建基本配置层。",
|
||
"message": "This interactive tool creates a new miner actor and creates the basic configuration layer for it.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "This process is partially idempotent. Once a new miner actor has been created and subsequent steps fail, the user need to run 'curio config new-cluster {Arg_1}' to finish the configuration.",
|
||
"translation": "此过程在某种程度上是幂等的。一旦创建了新的矿工角色,并且后续步骤失败,用户需要运行'curio config new-cluster {Arg_1}'来完成配置。",
|
||
"message": "This process is partially idempotent. Once a new miner actor has been created and subsequent steps fail, the user need to run 'curio config new-cluster {Arg_1}' to finish the configuration.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Choose if you with to create a new miner or migrate from existing Lotus-Miner",
|
||
"translation": "选择您是否要创建新矿工或从现有的 Lotus-Miner 迁移",
|
||
"message": "Choose if you with to create a new miner or migrate from existing Lotus-Miner",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Migrate from existing Lotus-Miner",
|
||
"translation": "从现有的 Lotus-Miner 迁移",
|
||
"message": "Migrate from existing Lotus-Miner",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Create a new miner",
|
||
"translation": "创建一个新的矿工",
|
||
"message": "Create a new miner",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "New Miner initialization complete.",
|
||
"translation": "新矿工初始化完成。",
|
||
"message": "New Miner initialization complete.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Migrating lotus-miner config.toml to Curio in-database configuration.",
|
||
"translation": "将 lotus-miner config.toml 迁移到 Curio 的数据库配置中。",
|
||
"message": "Migrating lotus-miner config.toml to Curio in-database configuration.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error getting API: {Error}",
|
||
"translation": "获取 API 时出错:{Error}",
|
||
"message": "Error getting API: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "The Curio team wants to improve the software you use. Tell the team you're using `{Curio}`.",
|
||
"translation": "Curio 团队希望改进您使用的软件。告诉团队您正在使用 `{Curio}`。",
|
||
"message": "The Curio team wants to improve the software you use. Tell the team you're using `{Curio}`.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Individual Data: Miner ID, Curio version, chain ({Mainnet} or {Calibration}). Signed.",
|
||
"translation": "个人数据:矿工 ID,Curio 版本,链({Mainnet} 或 {Calibration})。签名。",
|
||
"message": "Individual Data: Miner ID, Curio version, chain ({Mainnet} or {Calibration}). Signed.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Aggregate-Anonymous: version, chain, and Miner power (bucketed).",
|
||
"translation": "聚合-匿名:版本,链和矿工算力(分桶)。",
|
||
"message": "Aggregate-Anonymous: version, chain, and Miner power (bucketed).",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Hint: I am someone running Curio on whichever chain.",
|
||
"translation": "提示:我是在任何链上运行 Curio 的人。",
|
||
"message": "Hint: I am someone running Curio on whichever chain.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Press return to update {Toml} with Yugabyte info. A Backup file will be written to that folder before changes are made.",
|
||
"translation": "按回车键更新 {Toml} 以包含 Yugabyte 信息。在进行更改之前,将在该文件夹中写入备份文件。",
|
||
"message": "Press return to update {Toml} with Yugabyte info. A Backup file will be written to that folder before changes are made.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error creating backup file: {Error}",
|
||
"translation": "创建备份文件时出错:{Error}",
|
||
"message": "Error creating backup file: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error reading config.toml: {Error}",
|
||
"translation": "读取 config.toml 时出错:{Error}",
|
||
"message": "Error reading config.toml: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error writing backup file: {Error}",
|
||
"translation": "写入备份文件时出错:{Error}",
|
||
"message": "Error writing backup file: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error closing backup file: {Error}",
|
||
"translation": "关闭备份文件时出错:{Error}",
|
||
"message": "Error closing backup file: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Initializing a new miner actor.",
|
||
"translation": "初始化新的矿工角色。",
|
||
"message": "Initializing a new miner actor.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Enter the info to create a new miner",
|
||
"translation": "输入创建新矿工所需的信息",
|
||
"message": "Enter the info to create a new miner",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Owner Address: {String}",
|
||
"translation": "所有者地址:{String}",
|
||
"message": "Owner Address: {String}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Worker Address: {String}",
|
||
"translation": "工作地址:{String}",
|
||
"message": "Worker Address: {String}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Sender Address: {String}",
|
||
"translation": "发送者地址:{String}",
|
||
"message": "Sender Address: {String}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Sector Size: {Ssize}",
|
||
"translation": "扇区大小: {Ssize}",
|
||
"message": "Sector Size: {Ssize}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Confidence epochs: {Confidence}",
|
||
"translation": "置信度时期: {Confidence}",
|
||
"message": "Confidence epochs: {Confidence}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Continue to verify the addresses and create a new miner actor.",
|
||
"translation": "继续验证地址并创建新的矿工角色。",
|
||
"message": "Continue to verify the addresses and create a new miner actor.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Miner creation error occurred: {Error}",
|
||
"translation": "矿工创建错误发生: {Error}",
|
||
"message": "Miner creation error occurred: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Enter the owner address",
|
||
"translation": "输入所有者地址",
|
||
"message": "Enter the owner address",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "No address provided",
|
||
"translation": "未提供地址",
|
||
"message": "No address provided",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to parse the address: {Error}",
|
||
"translation": "解析地址失败: {Error}",
|
||
"message": "Failed to parse the address: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Enter {Stringworker_senderi_1} address",
|
||
"translation": "输入 {Stringworker_senderi_1} 地址",
|
||
"message": "Enter {Stringworker_senderi_1} address",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Enter the sector size",
|
||
"translation": "输入扇区大小",
|
||
"message": "Enter the sector size",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to parse sector size: {Error}",
|
||
"translation": "解析扇区大小失败: {Error}",
|
||
"message": "Failed to parse sector size: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Enter the confidence",
|
||
"translation": "输入置信度",
|
||
"message": "Enter the confidence",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to parse confidence: {Error}",
|
||
"translation": "解析置信度失败: {Error}",
|
||
"message": "Failed to parse confidence: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to create the miner actor: {Error}",
|
||
"translation": "创建矿工角色失败: {Error}",
|
||
"message": "Failed to create the miner actor: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Miner {String} created successfully",
|
||
"translation": "矿工 {String} 创建成功",
|
||
"message": "Miner {String} created successfully",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Cannot reach the DB: {Error}",
|
||
"translation": "无法访问数据库: {Error}",
|
||
"message": "Cannot reach the DB: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Error connecting to full node API: {Error}",
|
||
"translation": "连接到完整节点 API 时发生错误: {Error}",
|
||
"message": "Error connecting to full node API: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Pre-initialization steps complete",
|
||
"translation": "预初始化步骤完成",
|
||
"message": "Pre-initialization steps complete",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to generate random bytes for secret: {Error}",
|
||
"translation": "生成密码的随机字节失败: {Error}",
|
||
"message": "Failed to generate random bytes for secret: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Please do not run guided-setup again as miner creation is not idempotent. You need to run 'curio config new-cluster {String}' to finish the configuration",
|
||
"translation": "请不要再次运行引导设置,因为矿工创建不是幂等的。 您需要运行 'curio config new-cluster {String}' 来完成配置。",
|
||
"message": "Please do not run guided-setup again as miner creation is not idempotent. You need to run 'curio config new-cluster {String}' to finish the configuration",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to get API info for FullNode: {Err}",
|
||
"translation": "无法获取 FullNode 的 API 信息: {Err}",
|
||
"message": "Failed to get API info for FullNode: {Err}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to verify the auth token from daemon node: {Error}",
|
||
"translation": "无法验证来自守护进程节点的授权令牌: {Error}",
|
||
"message": "Failed to verify the auth token from daemon node: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to encode the config: {Error}",
|
||
"translation": "无法编码配置: {Error}",
|
||
"message": "Failed to encode the config: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to generate default config: {Error}",
|
||
"translation": "无法生成默认配置: {Error}",
|
||
"message": "Failed to generate default config: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to insert 'base' config layer in database: {Error}",
|
||
"translation": "无法将 'base' 配置层插入数据库: {Error}",
|
||
"message": "Failed to insert 'base' config layer in database: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to insert '{String}' config layer in database: {Error}",
|
||
"translation": "无法将 '{String}' 配置层插入数据库: {Error}",
|
||
"message": "Failed to insert '{String}' config layer in database: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "New Curio configuration layer '{String}' created",
|
||
"translation": "新的 Curio 配置层 '{String}' 已创建",
|
||
"message": "New Curio configuration layer '{String}' created",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "This process is partially idempotent. Once a new miner actor has been created and subsequent steps fail, the user need to run 'curio config new-cluster \u003c miner ID \u003e' to finish the configuration.",
|
||
"translation": "该过程部分幂等。一旦创建了新的矿工角色,并且随后的步骤失败,用户需要运行 'curio config new-cluster \u003c 矿工 ID \u003e' 来完成配置。",
|
||
"message": "This process is partially idempotent. Once a new miner actor has been created and subsequent steps fail, the user need to run 'curio config new-cluster \u003c miner ID \u003e' to finish the configuration.",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Confidence epochs",
|
||
"translation": "置信度时期",
|
||
"message": "Confidence epochs",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Increase reliability using redundancy: start multiple machines with at-least the post layer: 'curio run --layers=post'",
|
||
"translation": "通过冗余增加可靠性:使用至少后层启动多台机器:'curio run --layers=post'",
|
||
"message": "Increase reliability using redundancy: start multiple machines with at-least the post layer: 'curio run --layers=post'",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "I want to:",
|
||
"translation": "我想要:",
|
||
"message": "I want to:",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Configuration 'base' was updated to include this miner's address",
|
||
"translation": "配置 'base' 已更新以包含此矿工的地址",
|
||
"message": "Configuration 'base' was updated to include this miner's address",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Cannot load base config: {Error}",
|
||
"translation": "无法加载基本配置: {Error}",
|
||
"message": "Cannot load base config: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to load base config: {Error}",
|
||
"translation": "加载基本配置失败: {Error}",
|
||
"message": "Failed to load base config: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to regenerate base config: {Error}",
|
||
"translation": "重新生成基本配置失败: {Error}",
|
||
"message": "Failed to regenerate base config: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to load base config from database: {Error}",
|
||
"translation": "从数据库加载基本配置失败:{Error}",
|
||
"message": "Failed to load base config from database: {Error}",
|
||
"placeholder": null
|
||
},
|
||
{
|
||
"id": "Failed to parse base config: {Error}",
|
||
"translation": "解析基本配置失败:{Error}",
|
||
"message": "Failed to parse base config: {Error}",
|
||
"placeholder": null
|
||
}
|
||
]
|
||
} |