@nac3/forge-cli 1.0.77 → 1.0.79
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chat/ingest_session.d.ts +16 -0
- package/dist/chat/ingest_session.d.ts.map +1 -1
- package/dist/chat/ingest_session.js +34 -0
- package/dist/chat/ingest_session.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +238 -34
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +21 -1
- package/dist/chat/server.js.map +1 -1
- package/dist/core/file_tree.d.ts +2 -0
- package/dist/core/file_tree.d.ts.map +1 -1
- package/dist/core/file_tree.js +4 -2
- package/dist/core/file_tree.js.map +1 -1
- package/dist/core/forge_embed.d.ts.map +1 -1
- package/dist/core/forge_embed.js +7 -0
- package/dist/core/forge_embed.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
- package/src/i18n/catalogs/ar.json +533 -525
- package/src/i18n/catalogs/de.json +533 -525
- package/src/i18n/catalogs/en.json +533 -525
- package/src/i18n/catalogs/es.json +533 -525
- package/src/i18n/catalogs/fr.json +533 -525
- package/src/i18n/catalogs/hi.json +533 -525
- package/src/i18n/catalogs/it.json +533 -525
- package/src/i18n/catalogs/ja.json +533 -525
- package/src/i18n/catalogs/pt.json +533 -525
- package/src/i18n/catalogs/zh.json +533 -525
|
@@ -1,527 +1,535 @@
|
|
|
1
|
-
{
|
|
2
|
-
"panel.brand": "Yujin Forge",
|
|
3
|
-
"panel.brand.kanji": "侑",
|
|
4
|
-
"panel.tagline": "语音优先开发助手",
|
|
5
|
-
"panel.input.placeholder": "向Yujin提问",
|
|
6
|
-
"panel.button.send": "发送",
|
|
7
|
-
"panel.button.mic": "讲话(按住)",
|
|
8
|
-
"panel.button.mic.recording": "按下以停止录音",
|
|
9
|
-
"panel.button.tts": "语音已开启",
|
|
10
|
-
"panel.button.keys": "密钥",
|
|
11
|
-
"panel.button.minimise": "缩小",
|
|
12
|
-
"panel.button.maximise": "最大化",
|
|
13
|
-
"panel.button.close": "关闭",
|
|
14
|
-
"panel.button.language": "语言",
|
|
15
|
-
"panel.trace.title": "操作记录",
|
|
16
|
-
"panel.trace.count.one": "{n}次工具调用",
|
|
17
|
-
"panel.trace.count.other": "{n}次工具调用",
|
|
18
|
-
"panel.trace.empty.kanji": "空",
|
|
19
|
-
"panel.trace.empty.body": "Yujin Forge会在此显示它为回答你而调用的每个工具:读取清单、搜索SPEC、编辑组件、读取文档。请提一个需要查阅这些的问题。",
|
|
20
|
-
"panel.trace.badge.tool": "工具",
|
|
21
|
-
"panel.trace.badge.voice": "语音",
|
|
22
|
-
"panel.trace.badge.error": "错误",
|
|
23
|
-
"panel.stream.empty.kanji": "侑仁",
|
|
24
|
-
"panel.stream.empty.body": "Yujin Forge 已上线。请求修改项目。",
|
|
25
|
-
"panel.status.no_audio": "未捕获音频。麦克风可能没有接收到任何内容。",
|
|
26
|
-
"panel.status.did_not_catch": "我没听清。请再试一次。",
|
|
27
|
-
"panel.status.mic_denied": "麦克风权限被拒绝或不可用:{error}",
|
|
28
|
-
"panel.status.voice_failed": "语音失败:{error}",
|
|
29
|
-
"panel.status.voice_reply_failed": "无法播放回复:{error}",
|
|
30
|
-
"panel.status.audio_play_error": "无法播放音频:{error}",
|
|
31
|
-
"panel.status.reading": "正在读取{filename}...",
|
|
32
|
-
"panel.status.ingest_failed": "导入失败:{error}",
|
|
33
|
-
"panel.status.read_failed": "无法读取规范:{error}",
|
|
34
|
-
"panel.drop.title": "在此处放置规范",
|
|
35
|
-
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
36
|
-
"panel.ingest.spec_attached": "已附加规范:{filename},{kb} KB",
|
|
37
|
-
"panel.ingest.read_label": "已读取。",
|
|
38
|
-
"panel.ingest.title_label": "标题:{title}",
|
|
39
|
-
"panel.ingest.no_title": "(无标题)",
|
|
40
|
-
"panel.ingest.format_label": "格式:{format} / {sections}个章节 / {kb} KB",
|
|
41
|
-
"panel.ingest.first_lines": "开头几行:",
|
|
42
|
-
"panel.ingest.action_done": "操作{tool}已完成。",
|
|
43
|
-
"vault.modal.title": "凭据(保险库)",
|
|
44
|
-
"vault.modal.aria.close": "关闭凭据模态框",
|
|
45
|
-
"vault.tab.list": "已加载的插槽",
|
|
46
|
-
"vault.tab.add": "添加",
|
|
47
|
-
"vault.list.loading": "加载中...",
|
|
48
|
-
"vault.list.empty": "你还没有加载任何密钥。点击\"添加\"开始。",
|
|
49
|
-
"vault.add.slot_label": "插槽名称",
|
|
50
|
-
"vault.add.slot_hint": "小写字母、数字、下划线、连字符。必须以字母开头。",
|
|
51
|
-
"vault.add.value_label": "明文值(已掩码)",
|
|
52
|
-
"vault.add.value_hint": "仅在保存时显示一次。之后只能替换,无法再次读取。",
|
|
53
|
-
"vault.add.button_save": "保存",
|
|
54
|
-
"vault.add.button_cancel": "取消",
|
|
55
|
-
"vault.add.success": "已保存插槽{slot}。",
|
|
56
|
-
"vault.add.overwrite": "已覆盖插槽{slot}。",
|
|
57
|
-
"manual.intro": "Yujin Forge -- 用户手册",
|
|
58
|
-
"manual.section.welcome": "欢迎",
|
|
59
|
-
"manual.section.install": "安装",
|
|
60
|
-
"manual.section.first_run": "首次运行",
|
|
61
|
-
"manual.section.voice": "语音命令",
|
|
62
|
-
"manual.section.spec_ingest": "规范导入",
|
|
63
|
-
"manual.section.troubleshooting": "故障排除",
|
|
64
|
-
"manual.section.support": "支持",
|
|
65
|
-
"lang.name.es": "西班牙语",
|
|
66
|
-
"lang.name.en": "英语",
|
|
67
|
-
"lang.name.pt": "葡萄牙语",
|
|
68
|
-
"lang.name.fr": "法语",
|
|
69
|
-
"lang.name.ja": "日语",
|
|
70
|
-
"lang.name.zh": "中文",
|
|
71
|
-
"lang.name.hi": "印地语",
|
|
72
|
-
"lang.name.ar": "阿拉伯语",
|
|
73
|
-
"lang.name.de": "德语",
|
|
74
|
-
"lang.name.it": "意大利语",
|
|
75
|
-
"recap.fallback_period": "。",
|
|
76
|
-
"recap.empty": "暂时没有可以回顾的内容。",
|
|
77
|
-
"error_ui.severity.info": "信息",
|
|
78
|
-
"error_ui.severity.warning": "警告",
|
|
79
|
-
"error_ui.severity.error": "错误",
|
|
80
|
-
"error_ui.severity.fatal": "致命",
|
|
81
|
-
"error_ui.label.what": "发生了什么",
|
|
82
|
-
"error_ui.label.why": "原因",
|
|
83
|
-
"error_ui.label.fix": "如何解决",
|
|
84
|
-
"error_ui.label.cmd": "命令",
|
|
85
|
-
"error_ui.label.docs": "本地文档",
|
|
86
|
-
"error_ui.label.retry": "稍后重试",
|
|
87
|
-
"error_ui.copy_btn": "复制命令",
|
|
88
|
-
"error_ui.unknown.what": "Forge遇到内部错误(未知代码)。",
|
|
89
|
-
"error_ui.unknown.why": "代码 {code} 不在目录中。这是一个bug。",
|
|
90
|
-
"error_ui.unknown.fix": "请在 https://github.com/yujinapp/yujin-forge/issues 提交issue,附上代码和traceback。",
|
|
91
|
-
"error.cap_frontier_exhausted.what": "frontier层级(大模型)月度令牌上限已用完。",
|
|
92
|
-
"error.cap_frontier_exhausted.why": "您的方案 {plan} 在frontier上允许每月最多 {cap} 令牌。您已使用 {used}。下个UTC月初重置。",
|
|
93
|
-
"error.cap_frontier_exhausted.fix": "切换到直接的Anthropic BYOK: 绕过worker月度上限。您的成本将变为Anthropic直接收费。",
|
|
94
|
-
"error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
|
|
95
|
-
"error.cap_eco_exhausted.what": "eco层级(小模型)月度令牌上限已用完。",
|
|
96
|
-
"error.cap_eco_exhausted.why": "您的方案 {plan} 在eco上允许每月最多 {cap} 令牌。您已使用 {used}。下个UTC月初重置。",
|
|
97
|
-
"error.cap_eco_exhausted.fix": "切换到直接BYOK或升级方案。BYOK绕过worker上限。",
|
|
98
|
-
"error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
|
|
99
|
-
"error.tier_not_in_plan.what": "您的方案未启用层级 {tier}。",
|
|
100
|
-
"error.tier_not_in_plan.why": "您的方案 {plan} 不包含 {tier} 层级。您可能在free-public或您的许可证已过期。",
|
|
101
|
-
"error.tier_not_in_plan.fix": "激活付费许可证,或切换到直接BYOK(您的成本,无worker上限)。",
|
|
102
|
-
"error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
|
|
103
|
-
"error.response_truncated.what": "模型响应在结束前被截断。",
|
|
104
|
-
"error.response_truncated.why": "managed_max_tokens_per_turn = {limit} 令牌限制在轮次中途达到。模型停止生成。",
|
|
105
|
-
"error.response_truncated.fix": "通过 yf limits 提高限制。下一轮生效,无需重启chat。",
|
|
106
|
-
"error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
|
|
107
|
-
"error.response_truncated.banner": "[响应被 max_tokens={max} 截断。请提高限制: yf limits set managed_max_tokens_per_turn {suggested}]",
|
|
108
|
-
"error.modal_trace_stale.what": "审批模态框已过期或孤立。",
|
|
109
|
-
"error.modal_trace_stale.why": "trace_id {trace_id} 在dispatcher中没有待处理的审批。可能是invoke和panel状态之间的竞争条件,或之前的取消使trace成为僵尸。",
|
|
110
|
-
"error.modal_trace_stale.fix": "从chat重新调用verb: 启动一个干净的新trace。如果持续,运行 yf doctor 检查panel。",
|
|
111
|
-
"error.modal_trace_stale.cmd": "yf doctor",
|
|
112
|
-
"error.byok_key_missing.what": "缺少提供商 {provider} 的API密钥。",
|
|
113
|
-
"error.byok_key_missing.why": "您将 {provider} 配置为 {tier} 层级的提供商,但插槽 byok_{slot} 不在加密的Vault中。",
|
|
114
|
-
"error.byok_key_missing.fix": "使用 yf keys set 配置密钥(原子,mode 0600,从不记录日志)。",
|
|
115
|
-
"error.byok_key_missing.cmd": "yf keys set {slot}",
|
|
116
|
-
"error.worker_unreachable.what": "无法连接到yujin.app worker。",
|
|
117
|
-
"error.worker_unreachable.why": "网络超时或worker宕机 (HTTP {status})。已重试 {attempts} 次。",
|
|
118
|
-
"error.worker_unreachable.fix": "检查您的互联网。如果正常,临时切换到直接BYOK以避免worker依赖。",
|
|
119
|
-
"error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
|
|
120
|
-
"error.vault_decrypt_failed.what": "无法解密Vault中的密钥。",
|
|
121
|
-
"error.vault_decrypt_failed.why": "主密钥不正确或Vault文件已损坏。如果您在机器之间移动配置而没有迁移主密钥,或由于磁盘错误,可能会发生。",
|
|
122
|
-
"error.vault_decrypt_failed.fix": "如果您有服务器备份激活,拉取服务器副本(用您的本地主密钥重新加密)。",
|
|
123
|
-
"error.vault_decrypt_failed.cmd": "yf keys setup --pull",
|
|
124
|
-
"error.shell_exec_rejected.what": "您拒绝了 yujin.shell.exec 的R8模态框。",
|
|
125
|
-
"error.shell_exec_rejected.why": "命令 {command} 被分类为 {classification}。shell.exec 始终出于安全考虑请求审批,即使命令是只读的。",
|
|
126
|
-
"error.shell_exec_rejected.fix": "如果命令是只读的 (yf projects active, git status, ls),请使用等效的原生verb。如果是必要的而您错误地拒绝了,请重新调用。",
|
|
127
|
-
"error.project_not_registered.what": "没有注册的adopter项目。",
|
|
128
|
-
"error.project_not_registered.why": "调用的verb需要活动的project root,但 ~/.yujin-forge/projects.json 没有条目。",
|
|
129
|
-
"error.project_not_registered.fix": "用 yujin.project.init 创建一个或用 yf projects add 注册一个现有的。",
|
|
130
|
-
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
-
"panel.button.agents": "智能体",
|
|
132
|
-
"panel.agents.title": "智能体",
|
|
133
|
-
"panel.agents.subtitle": "本项目已注册的总监和子智能体",
|
|
134
|
-
"panel.agents.empty.title": "尚无智能体",
|
|
135
|
-
"panel.agents.empty.body": "运行 `yf agent install --defaults` 来注册总监和4个子智能体(分析师、编码器、测试员、脚手架)。",
|
|
136
|
-
"panel.agents.legend.eco": "经济",
|
|
137
|
-
"panel.agents.legend.managed": "托管",
|
|
138
|
-
"panel.agents.legend.frontier": "前沿",
|
|
139
|
-
"panel.agents.status.disabled": "智能体运行时未启动",
|
|
140
|
-
"panel.agents.event.running": "运行中",
|
|
141
|
-
"panel.agents.event.idle": "空闲",
|
|
142
|
-
"panel.agents.tick.live": "已连接",
|
|
143
|
-
"panel.agents.tick.lost": "连接已断",
|
|
144
|
-
"workflow.phase.i": "分类与意图",
|
|
145
|
-
"workflow.phase.ii": "澄清(功能 + 4项NFR + 区块计划)",
|
|
146
|
-
"workflow.phase.iii": "规范(RFP + 架构 + 设计 + 审批)",
|
|
147
|
-
"workflow.phase.iv": "初始化",
|
|
148
|
-
"workflow.phase.v": "区块开发",
|
|
149
|
-
"workflow.phase.vi": "部署与发布后",
|
|
150
|
-
"wizard.title": "欢迎使用 Yujin Forge",
|
|
151
|
-
"wizard.close": "关闭",
|
|
152
|
-
"wizard.intro": "开始之前,请选择 Forge 如何连接到您的 AI 模型。稍后可在 Settings 中更改。",
|
|
153
|
-
"wizard.back": "返回",
|
|
154
|
-
"wizard.start": "开始",
|
|
155
|
-
"wizard.plan.badge": "推荐",
|
|
156
|
-
"wizard.plan.title": "Claude 套餐",
|
|
157
|
-
"wizard.plan.desc": "Claude 月度订阅。持续使用最经济的选项。Forge 使用您的 claude -p 会话。",
|
|
158
|
-
"wizard.plan.price": "固定月费 (套餐)",
|
|
159
|
-
"wizard.plan.step.title": "连接您的 Claude 套餐",
|
|
160
|
-
"wizard.plan.step.1": "打开新终端。",
|
|
161
|
-
"wizard.plan.step.2": "运行命令 claude (无参数) 并在浏览器中完成登录。",
|
|
162
|
-
"wizard.plan.step.3": "返回此处点击 已登录 进行验证。",
|
|
163
|
-
"wizard.plan.done": "已登录",
|
|
164
|
-
"wizard.byok.title": "你自己的 API 密钥(BYOK)",
|
|
165
|
-
"wizard.byok.desc": "任意提供商(Anthropic、OpenAI、Google、DeepSeek…)的自有密钥。按用量在你的账户计费。",
|
|
166
|
-
"wizard.byok.price": "按用量付费 (Console)",
|
|
167
|
-
"wizard.byok.step.title": "选择你的提供商并粘贴 API 密钥",
|
|
168
|
-
"wizard.byok.step.intro": "从菜单选择提供商并粘贴其 API 密钥。Forge 会加密存储在本地 Vault 中,绝不离开你的机器。",
|
|
169
|
-
"wizard.byok.test": "验证并保存",
|
|
170
|
-
"wizard.skip.title": "我已配置好",
|
|
171
|
-
"wizard.skip.desc": "跳过向导。稍后可在 Settings 中重新打开。",
|
|
172
|
-
"wizard.done.kanji": "完",
|
|
173
|
-
"wizard.done.title": "完成",
|
|
174
|
-
"wizard.done.msg": "Forge 已配置。开始聊天吧。",
|
|
175
|
-
"pizarron.button.read": "朗读",
|
|
176
|
-
"pizarron.button.copy": "复制",
|
|
177
|
-
"pizarron.button.edit": "编辑",
|
|
178
|
-
"pizarron.graph.refresh": "刷新",
|
|
179
|
-
"pizarron.graph.regenerating": "重新生成中...",
|
|
180
|
-
"pizarron.graph.detail.hint": "点击节点查看详情。",
|
|
181
|
-
"pizarron.graph.detail.empty": "该节点没有详情。",
|
|
1
|
+
{
|
|
2
|
+
"panel.brand": "Yujin Forge",
|
|
3
|
+
"panel.brand.kanji": "侑",
|
|
4
|
+
"panel.tagline": "语音优先开发助手",
|
|
5
|
+
"panel.input.placeholder": "向Yujin提问",
|
|
6
|
+
"panel.button.send": "发送",
|
|
7
|
+
"panel.button.mic": "讲话(按住)",
|
|
8
|
+
"panel.button.mic.recording": "按下以停止录音",
|
|
9
|
+
"panel.button.tts": "语音已开启",
|
|
10
|
+
"panel.button.keys": "密钥",
|
|
11
|
+
"panel.button.minimise": "缩小",
|
|
12
|
+
"panel.button.maximise": "最大化",
|
|
13
|
+
"panel.button.close": "关闭",
|
|
14
|
+
"panel.button.language": "语言",
|
|
15
|
+
"panel.trace.title": "操作记录",
|
|
16
|
+
"panel.trace.count.one": "{n}次工具调用",
|
|
17
|
+
"panel.trace.count.other": "{n}次工具调用",
|
|
18
|
+
"panel.trace.empty.kanji": "空",
|
|
19
|
+
"panel.trace.empty.body": "Yujin Forge会在此显示它为回答你而调用的每个工具:读取清单、搜索SPEC、编辑组件、读取文档。请提一个需要查阅这些的问题。",
|
|
20
|
+
"panel.trace.badge.tool": "工具",
|
|
21
|
+
"panel.trace.badge.voice": "语音",
|
|
22
|
+
"panel.trace.badge.error": "错误",
|
|
23
|
+
"panel.stream.empty.kanji": "侑仁",
|
|
24
|
+
"panel.stream.empty.body": "Yujin Forge 已上线。请求修改项目。",
|
|
25
|
+
"panel.status.no_audio": "未捕获音频。麦克风可能没有接收到任何内容。",
|
|
26
|
+
"panel.status.did_not_catch": "我没听清。请再试一次。",
|
|
27
|
+
"panel.status.mic_denied": "麦克风权限被拒绝或不可用:{error}",
|
|
28
|
+
"panel.status.voice_failed": "语音失败:{error}",
|
|
29
|
+
"panel.status.voice_reply_failed": "无法播放回复:{error}",
|
|
30
|
+
"panel.status.audio_play_error": "无法播放音频:{error}",
|
|
31
|
+
"panel.status.reading": "正在读取{filename}...",
|
|
32
|
+
"panel.status.ingest_failed": "导入失败:{error}",
|
|
33
|
+
"panel.status.read_failed": "无法读取规范:{error}",
|
|
34
|
+
"panel.drop.title": "在此处放置规范",
|
|
35
|
+
"panel.drop.hint": "PDF, DOCX, HTML, MD, RTF, EPUB, CSV, XLSX, TXT",
|
|
36
|
+
"panel.ingest.spec_attached": "已附加规范:{filename},{kb} KB",
|
|
37
|
+
"panel.ingest.read_label": "已读取。",
|
|
38
|
+
"panel.ingest.title_label": "标题:{title}",
|
|
39
|
+
"panel.ingest.no_title": "(无标题)",
|
|
40
|
+
"panel.ingest.format_label": "格式:{format} / {sections}个章节 / {kb} KB",
|
|
41
|
+
"panel.ingest.first_lines": "开头几行:",
|
|
42
|
+
"panel.ingest.action_done": "操作{tool}已完成。",
|
|
43
|
+
"vault.modal.title": "凭据(保险库)",
|
|
44
|
+
"vault.modal.aria.close": "关闭凭据模态框",
|
|
45
|
+
"vault.tab.list": "已加载的插槽",
|
|
46
|
+
"vault.tab.add": "添加",
|
|
47
|
+
"vault.list.loading": "加载中...",
|
|
48
|
+
"vault.list.empty": "你还没有加载任何密钥。点击\"添加\"开始。",
|
|
49
|
+
"vault.add.slot_label": "插槽名称",
|
|
50
|
+
"vault.add.slot_hint": "小写字母、数字、下划线、连字符。必须以字母开头。",
|
|
51
|
+
"vault.add.value_label": "明文值(已掩码)",
|
|
52
|
+
"vault.add.value_hint": "仅在保存时显示一次。之后只能替换,无法再次读取。",
|
|
53
|
+
"vault.add.button_save": "保存",
|
|
54
|
+
"vault.add.button_cancel": "取消",
|
|
55
|
+
"vault.add.success": "已保存插槽{slot}。",
|
|
56
|
+
"vault.add.overwrite": "已覆盖插槽{slot}。",
|
|
57
|
+
"manual.intro": "Yujin Forge -- 用户手册",
|
|
58
|
+
"manual.section.welcome": "欢迎",
|
|
59
|
+
"manual.section.install": "安装",
|
|
60
|
+
"manual.section.first_run": "首次运行",
|
|
61
|
+
"manual.section.voice": "语音命令",
|
|
62
|
+
"manual.section.spec_ingest": "规范导入",
|
|
63
|
+
"manual.section.troubleshooting": "故障排除",
|
|
64
|
+
"manual.section.support": "支持",
|
|
65
|
+
"lang.name.es": "西班牙语",
|
|
66
|
+
"lang.name.en": "英语",
|
|
67
|
+
"lang.name.pt": "葡萄牙语",
|
|
68
|
+
"lang.name.fr": "法语",
|
|
69
|
+
"lang.name.ja": "日语",
|
|
70
|
+
"lang.name.zh": "中文",
|
|
71
|
+
"lang.name.hi": "印地语",
|
|
72
|
+
"lang.name.ar": "阿拉伯语",
|
|
73
|
+
"lang.name.de": "德语",
|
|
74
|
+
"lang.name.it": "意大利语",
|
|
75
|
+
"recap.fallback_period": "。",
|
|
76
|
+
"recap.empty": "暂时没有可以回顾的内容。",
|
|
77
|
+
"error_ui.severity.info": "信息",
|
|
78
|
+
"error_ui.severity.warning": "警告",
|
|
79
|
+
"error_ui.severity.error": "错误",
|
|
80
|
+
"error_ui.severity.fatal": "致命",
|
|
81
|
+
"error_ui.label.what": "发生了什么",
|
|
82
|
+
"error_ui.label.why": "原因",
|
|
83
|
+
"error_ui.label.fix": "如何解决",
|
|
84
|
+
"error_ui.label.cmd": "命令",
|
|
85
|
+
"error_ui.label.docs": "本地文档",
|
|
86
|
+
"error_ui.label.retry": "稍后重试",
|
|
87
|
+
"error_ui.copy_btn": "复制命令",
|
|
88
|
+
"error_ui.unknown.what": "Forge遇到内部错误(未知代码)。",
|
|
89
|
+
"error_ui.unknown.why": "代码 {code} 不在目录中。这是一个bug。",
|
|
90
|
+
"error_ui.unknown.fix": "请在 https://github.com/yujinapp/yujin-forge/issues 提交issue,附上代码和traceback。",
|
|
91
|
+
"error.cap_frontier_exhausted.what": "frontier层级(大模型)月度令牌上限已用完。",
|
|
92
|
+
"error.cap_frontier_exhausted.why": "您的方案 {plan} 在frontier上允许每月最多 {cap} 令牌。您已使用 {used}。下个UTC月初重置。",
|
|
93
|
+
"error.cap_frontier_exhausted.fix": "切换到直接的Anthropic BYOK: 绕过worker月度上限。您的成本将变为Anthropic直接收费。",
|
|
94
|
+
"error.cap_frontier_exhausted.cmd": "yf brain config --frontier-provider anthropic --frontier-model claude-opus-4-7",
|
|
95
|
+
"error.cap_eco_exhausted.what": "eco层级(小模型)月度令牌上限已用完。",
|
|
96
|
+
"error.cap_eco_exhausted.why": "您的方案 {plan} 在eco上允许每月最多 {cap} 令牌。您已使用 {used}。下个UTC月初重置。",
|
|
97
|
+
"error.cap_eco_exhausted.fix": "切换到直接BYOK或升级方案。BYOK绕过worker上限。",
|
|
98
|
+
"error.cap_eco_exhausted.cmd": "yf brain config --eco-provider google_ai --eco-model gemini-2.5-flash-lite",
|
|
99
|
+
"error.tier_not_in_plan.what": "您的方案未启用层级 {tier}。",
|
|
100
|
+
"error.tier_not_in_plan.why": "您的方案 {plan} 不包含 {tier} 层级。您可能在free-public或您的许可证已过期。",
|
|
101
|
+
"error.tier_not_in_plan.fix": "激活付费许可证,或切换到直接BYOK(您的成本,无worker上限)。",
|
|
102
|
+
"error.tier_not_in_plan.cmd": "yf license activate --key <jwt>",
|
|
103
|
+
"error.response_truncated.what": "模型响应在结束前被截断。",
|
|
104
|
+
"error.response_truncated.why": "managed_max_tokens_per_turn = {limit} 令牌限制在轮次中途达到。模型停止生成。",
|
|
105
|
+
"error.response_truncated.fix": "通过 yf limits 提高限制。下一轮生效,无需重启chat。",
|
|
106
|
+
"error.response_truncated.cmd": "yf limits set managed_max_tokens_per_turn 16384",
|
|
107
|
+
"error.response_truncated.banner": "[响应被 max_tokens={max} 截断。请提高限制: yf limits set managed_max_tokens_per_turn {suggested}]",
|
|
108
|
+
"error.modal_trace_stale.what": "审批模态框已过期或孤立。",
|
|
109
|
+
"error.modal_trace_stale.why": "trace_id {trace_id} 在dispatcher中没有待处理的审批。可能是invoke和panel状态之间的竞争条件,或之前的取消使trace成为僵尸。",
|
|
110
|
+
"error.modal_trace_stale.fix": "从chat重新调用verb: 启动一个干净的新trace。如果持续,运行 yf doctor 检查panel。",
|
|
111
|
+
"error.modal_trace_stale.cmd": "yf doctor",
|
|
112
|
+
"error.byok_key_missing.what": "缺少提供商 {provider} 的API密钥。",
|
|
113
|
+
"error.byok_key_missing.why": "您将 {provider} 配置为 {tier} 层级的提供商,但插槽 byok_{slot} 不在加密的Vault中。",
|
|
114
|
+
"error.byok_key_missing.fix": "使用 yf keys set 配置密钥(原子,mode 0600,从不记录日志)。",
|
|
115
|
+
"error.byok_key_missing.cmd": "yf keys set {slot}",
|
|
116
|
+
"error.worker_unreachable.what": "无法连接到yujin.app worker。",
|
|
117
|
+
"error.worker_unreachable.why": "网络超时或worker宕机 (HTTP {status})。已重试 {attempts} 次。",
|
|
118
|
+
"error.worker_unreachable.fix": "检查您的互联网。如果正常,临时切换到直接BYOK以避免worker依赖。",
|
|
119
|
+
"error.worker_unreachable.cmd": "yf brain config --frontier-provider anthropic",
|
|
120
|
+
"error.vault_decrypt_failed.what": "无法解密Vault中的密钥。",
|
|
121
|
+
"error.vault_decrypt_failed.why": "主密钥不正确或Vault文件已损坏。如果您在机器之间移动配置而没有迁移主密钥,或由于磁盘错误,可能会发生。",
|
|
122
|
+
"error.vault_decrypt_failed.fix": "如果您有服务器备份激活,拉取服务器副本(用您的本地主密钥重新加密)。",
|
|
123
|
+
"error.vault_decrypt_failed.cmd": "yf keys setup --pull",
|
|
124
|
+
"error.shell_exec_rejected.what": "您拒绝了 yujin.shell.exec 的R8模态框。",
|
|
125
|
+
"error.shell_exec_rejected.why": "命令 {command} 被分类为 {classification}。shell.exec 始终出于安全考虑请求审批,即使命令是只读的。",
|
|
126
|
+
"error.shell_exec_rejected.fix": "如果命令是只读的 (yf projects active, git status, ls),请使用等效的原生verb。如果是必要的而您错误地拒绝了,请重新调用。",
|
|
127
|
+
"error.project_not_registered.what": "没有注册的adopter项目。",
|
|
128
|
+
"error.project_not_registered.why": "调用的verb需要活动的project root,但 ~/.yujin-forge/projects.json 没有条目。",
|
|
129
|
+
"error.project_not_registered.fix": "用 yujin.project.init 创建一个或用 yf projects add 注册一个现有的。",
|
|
130
|
+
"error.project_not_registered.cmd": "yf projects scan",
|
|
131
|
+
"panel.button.agents": "智能体",
|
|
132
|
+
"panel.agents.title": "智能体",
|
|
133
|
+
"panel.agents.subtitle": "本项目已注册的总监和子智能体",
|
|
134
|
+
"panel.agents.empty.title": "尚无智能体",
|
|
135
|
+
"panel.agents.empty.body": "运行 `yf agent install --defaults` 来注册总监和4个子智能体(分析师、编码器、测试员、脚手架)。",
|
|
136
|
+
"panel.agents.legend.eco": "经济",
|
|
137
|
+
"panel.agents.legend.managed": "托管",
|
|
138
|
+
"panel.agents.legend.frontier": "前沿",
|
|
139
|
+
"panel.agents.status.disabled": "智能体运行时未启动",
|
|
140
|
+
"panel.agents.event.running": "运行中",
|
|
141
|
+
"panel.agents.event.idle": "空闲",
|
|
142
|
+
"panel.agents.tick.live": "已连接",
|
|
143
|
+
"panel.agents.tick.lost": "连接已断",
|
|
144
|
+
"workflow.phase.i": "分类与意图",
|
|
145
|
+
"workflow.phase.ii": "澄清(功能 + 4项NFR + 区块计划)",
|
|
146
|
+
"workflow.phase.iii": "规范(RFP + 架构 + 设计 + 审批)",
|
|
147
|
+
"workflow.phase.iv": "初始化",
|
|
148
|
+
"workflow.phase.v": "区块开发",
|
|
149
|
+
"workflow.phase.vi": "部署与发布后",
|
|
150
|
+
"wizard.title": "欢迎使用 Yujin Forge",
|
|
151
|
+
"wizard.close": "关闭",
|
|
152
|
+
"wizard.intro": "开始之前,请选择 Forge 如何连接到您的 AI 模型。稍后可在 Settings 中更改。",
|
|
153
|
+
"wizard.back": "返回",
|
|
154
|
+
"wizard.start": "开始",
|
|
155
|
+
"wizard.plan.badge": "推荐",
|
|
156
|
+
"wizard.plan.title": "Claude 套餐",
|
|
157
|
+
"wizard.plan.desc": "Claude 月度订阅。持续使用最经济的选项。Forge 使用您的 claude -p 会话。",
|
|
158
|
+
"wizard.plan.price": "固定月费 (套餐)",
|
|
159
|
+
"wizard.plan.step.title": "连接您的 Claude 套餐",
|
|
160
|
+
"wizard.plan.step.1": "打开新终端。",
|
|
161
|
+
"wizard.plan.step.2": "运行命令 claude (无参数) 并在浏览器中完成登录。",
|
|
162
|
+
"wizard.plan.step.3": "返回此处点击 已登录 进行验证。",
|
|
163
|
+
"wizard.plan.done": "已登录",
|
|
164
|
+
"wizard.byok.title": "你自己的 API 密钥(BYOK)",
|
|
165
|
+
"wizard.byok.desc": "任意提供商(Anthropic、OpenAI、Google、DeepSeek…)的自有密钥。按用量在你的账户计费。",
|
|
166
|
+
"wizard.byok.price": "按用量付费 (Console)",
|
|
167
|
+
"wizard.byok.step.title": "选择你的提供商并粘贴 API 密钥",
|
|
168
|
+
"wizard.byok.step.intro": "从菜单选择提供商并粘贴其 API 密钥。Forge 会加密存储在本地 Vault 中,绝不离开你的机器。",
|
|
169
|
+
"wizard.byok.test": "验证并保存",
|
|
170
|
+
"wizard.skip.title": "我已配置好",
|
|
171
|
+
"wizard.skip.desc": "跳过向导。稍后可在 Settings 中重新打开。",
|
|
172
|
+
"wizard.done.kanji": "完",
|
|
173
|
+
"wizard.done.title": "完成",
|
|
174
|
+
"wizard.done.msg": "Forge 已配置。开始聊天吧。",
|
|
175
|
+
"pizarron.button.read": "朗读",
|
|
176
|
+
"pizarron.button.copy": "复制",
|
|
177
|
+
"pizarron.button.edit": "编辑",
|
|
178
|
+
"pizarron.graph.refresh": "刷新",
|
|
179
|
+
"pizarron.graph.regenerating": "重新生成中...",
|
|
180
|
+
"pizarron.graph.detail.hint": "点击节点查看详情。",
|
|
181
|
+
"pizarron.graph.detail.empty": "该节点没有详情。",
|
|
182
182
|
"pizarron.graph.detail.weight": "权重",
|
|
183
183
|
"pizarron.graph.orbit": "轨道",
|
|
184
|
-
"pizarron.graph.orbit.speed": "轨道速度",
|
|
185
|
-
"startup.tab.graph": "可视化图",
|
|
186
|
-
"startup.tab.graphSem": "语义图",
|
|
187
|
-
"startup.tab.pendings": "待办",
|
|
188
|
-
"startup.tab.workflow": "工作流",
|
|
189
|
-
"settings.startupTabs": "启动时的标签页(图、待办、工作流)",
|
|
190
|
-
"graph.term.nodes": "节点",
|
|
191
|
-
"graph.term.edges": "边",
|
|
192
|
-
"coding.read": "正在读取 {x}",
|
|
193
|
-
"coding.read_bare": "正在读取文件",
|
|
194
|
-
"coding.edit": "正在编辑 {x}",
|
|
195
|
-
"coding.edit_bare": "正在编辑文件",
|
|
196
|
-
"coding.write": "正在写入 {x}",
|
|
197
|
-
"coding.write_bare": "正在写入文件",
|
|
198
|
-
"coding.notebook_bare": "正在编辑笔记本",
|
|
199
|
-
"coding.bash": "正在执行: {x}",
|
|
200
|
-
"coding.bash_bare": "正在执行命令",
|
|
201
|
-
"coding.grep": "正在搜索 \"{x}\"",
|
|
202
|
-
"coding.grep_bare": "正在搜索代码",
|
|
203
|
-
"coding.glob": "正在列出 {x}",
|
|
204
|
-
"coding.glob_bare": "正在列出文件",
|
|
205
|
-
"coding.web_bare": "正在读取网页",
|
|
206
|
-
"coding.websearch": "网页搜索: {x}",
|
|
207
|
-
"coding.websearch_bare": "正在搜索网页",
|
|
208
|
-
"coding.task": "子代理: {x}",
|
|
209
|
-
"coding.task_bare": "正在启动子代理",
|
|
210
|
-
"coding.todo": "正在更新任务列表",
|
|
211
|
-
"coding.verb_bare": "正在执行 yujin 动作",
|
|
212
|
-
"panel.button.stop": "停止",
|
|
213
|
-
"panel.status.stopping": "正在停止...",
|
|
214
|
-
"panel.status.noActiveTurn": "没有正在进行的回合。",
|
|
215
|
-
"panel.status.interruptFailed": "无法发送中断。",
|
|
216
|
-
"panel.status.turnInterrupted": "回合已中断。",
|
|
217
|
-
"panel.label.interrupted": "(已中断)",
|
|
218
|
-
"panel.queue.label": "队列中",
|
|
219
|
-
"panel.queue.remove": "从队列中移除",
|
|
220
|
-
"panel.project.switchHint": "切换项目",
|
|
221
|
-
"panel.project.title": "项目",
|
|
222
|
-
"panel.project.add": "添加项目...",
|
|
223
|
-
"panel.project.addPrompt": "要添加的项目的绝对路径:",
|
|
224
|
-
"panel.project.switching": "正在切换项目...",
|
|
225
|
-
"startup.tab.files": "文件",
|
|
226
|
-
"panel.project.remove": "从列表中移除",
|
|
227
|
-
"panel.project.removeConfirm": "从列表中移除此项目?(不会删除磁盘上的文件)",
|
|
228
|
-
"panel.project.removed": "已从列表中移除项目",
|
|
229
|
-
"panel.files.refresh": "刷新",
|
|
230
|
-
"panel.files.loading": "加载中...",
|
|
231
|
-
"panel.files.error": "无法读取文件。",
|
|
232
|
-
"panel.files.empty": "(无文件)",
|
|
233
|
-
"panel.files.truncated": "(列表已截断)",
|
|
234
|
-
"panel.files.opened": "已打开",
|
|
235
|
-
"panel.files.openFailed": "无法打开文件。",
|
|
236
|
-
"
|
|
237
|
-
"
|
|
238
|
-
"
|
|
239
|
-
"
|
|
240
|
-
"
|
|
241
|
-
"
|
|
242
|
-
"
|
|
243
|
-
"
|
|
244
|
-
"
|
|
245
|
-
"settings.
|
|
246
|
-
"settings.
|
|
247
|
-
"settings.
|
|
248
|
-
"settings.
|
|
249
|
-
"settings.
|
|
250
|
-
"settings.
|
|
251
|
-
"settings.
|
|
252
|
-
"settings.
|
|
253
|
-
"settings.
|
|
254
|
-
"settings.
|
|
255
|
-
"settings.
|
|
256
|
-
"settings.vad.
|
|
257
|
-
"settings.vad.
|
|
258
|
-
"settings.vad.
|
|
259
|
-
"settings.vad.
|
|
260
|
-
"settings.vad.
|
|
261
|
-
"settings.vad.
|
|
262
|
-
"settings.vad.
|
|
263
|
-
"settings.vad.
|
|
264
|
-
"settings.
|
|
265
|
-
"settings.
|
|
266
|
-
"settings.
|
|
267
|
-
"settings.
|
|
268
|
-
"settings.
|
|
269
|
-
"settings.
|
|
270
|
-
"settings.
|
|
271
|
-
"settings.
|
|
272
|
-
"settings.brain.
|
|
273
|
-
"settings.brain.
|
|
274
|
-
"settings.brain.
|
|
275
|
-
"settings.brain.
|
|
276
|
-
"settings.brain.
|
|
277
|
-
"settings.brain.
|
|
278
|
-
"settings.
|
|
279
|
-
"settings.
|
|
280
|
-
"settings.
|
|
281
|
-
"settings.
|
|
282
|
-
"settings.
|
|
283
|
-
"settings.
|
|
284
|
-
"settings.
|
|
285
|
-
"settings.
|
|
286
|
-
"settings.federation.
|
|
287
|
-
"settings.federation.
|
|
288
|
-
"settings.federation.
|
|
289
|
-
"settings.federation.
|
|
290
|
-
"settings.federation.
|
|
291
|
-
"settings.federation.
|
|
292
|
-
"settings.
|
|
293
|
-
"settings.
|
|
294
|
-
"settings.
|
|
295
|
-
"settings.
|
|
296
|
-
"settings.
|
|
297
|
-
"settings.
|
|
298
|
-
"settings.
|
|
299
|
-
"settings.
|
|
300
|
-
"settings.keys.
|
|
301
|
-
"settings.keys.
|
|
302
|
-
"settings.keys.
|
|
303
|
-
"settings.keys.
|
|
304
|
-
"settings.keys.
|
|
305
|
-
"settings.keys.
|
|
306
|
-
"settings.
|
|
307
|
-
"settings.
|
|
308
|
-
"settings.
|
|
309
|
-
"settings.
|
|
310
|
-
"settings.
|
|
311
|
-
"settings.
|
|
312
|
-
"settings.
|
|
313
|
-
"settings.
|
|
314
|
-
"settings.
|
|
315
|
-
"settings.
|
|
316
|
-
"settings.
|
|
317
|
-
"settings.
|
|
318
|
-
"settings.
|
|
319
|
-
"settings.
|
|
320
|
-
"settings.
|
|
321
|
-
"settings.
|
|
322
|
-
"settings.
|
|
323
|
-
"settings.
|
|
324
|
-
"settings.
|
|
325
|
-
"settings.
|
|
326
|
-
"settings.
|
|
327
|
-
"settings.
|
|
328
|
-
"settings.
|
|
329
|
-
"settings.
|
|
330
|
-
"settings.
|
|
331
|
-
"settings.
|
|
332
|
-
"settings.
|
|
333
|
-
"settings.
|
|
334
|
-
"settings.
|
|
335
|
-
"settings.
|
|
336
|
-
"settings.
|
|
337
|
-
"settings.
|
|
338
|
-
"settings.
|
|
339
|
-
"settings.
|
|
340
|
-
"settings.
|
|
341
|
-
"settings.
|
|
342
|
-
"settings.
|
|
343
|
-
"settings.
|
|
344
|
-
"settings.
|
|
345
|
-
"settings.audit.
|
|
346
|
-
"settings.
|
|
347
|
-
"
|
|
348
|
-
"
|
|
349
|
-
"
|
|
350
|
-
"
|
|
351
|
-
"
|
|
352
|
-
"
|
|
353
|
-
"
|
|
354
|
-
"
|
|
355
|
-
"panel.status.
|
|
356
|
-
"panel.status.
|
|
357
|
-
"panel.status.
|
|
358
|
-
"panel.status.
|
|
359
|
-
"panel.status.
|
|
360
|
-
"panel.status.
|
|
361
|
-
"panel.status.
|
|
362
|
-
"panel.status.
|
|
363
|
-
"panel.status.
|
|
364
|
-
"panel.status.
|
|
365
|
-
"panel.status.
|
|
366
|
-
"panel.status.
|
|
367
|
-
"panel.status.
|
|
368
|
-
"panel.
|
|
369
|
-
"panel.
|
|
370
|
-
"panel.
|
|
371
|
-
"panel.
|
|
372
|
-
"panel.
|
|
373
|
-
"panel.
|
|
374
|
-
"panel.
|
|
375
|
-
"panel.
|
|
376
|
-
"panel.
|
|
377
|
-
"panel.
|
|
378
|
-
"panel.
|
|
379
|
-
"panel.
|
|
380
|
-
"panel.
|
|
381
|
-
"panel.
|
|
382
|
-
"panel.voice.
|
|
383
|
-
"panel.voice.
|
|
384
|
-
"panel.voice.
|
|
385
|
-
"panel.voice.
|
|
386
|
-
"panel.voice.
|
|
387
|
-
"panel.voice.
|
|
388
|
-
"panel.voice.
|
|
389
|
-
"panel.voice.
|
|
390
|
-
"panel.voice.
|
|
391
|
-
"panel.voice.
|
|
392
|
-
"panel.voice.
|
|
393
|
-
"panel.voice.
|
|
394
|
-
"panel.voice.
|
|
395
|
-
"panel.voice.
|
|
396
|
-
"panel.voice.
|
|
397
|
-
"panel.voice.
|
|
398
|
-
"panel.
|
|
399
|
-
"panel.
|
|
400
|
-
"panel.
|
|
401
|
-
"panel.
|
|
402
|
-
"panel.
|
|
403
|
-
"panel.
|
|
404
|
-
"panel.
|
|
405
|
-
"panel.
|
|
406
|
-
"panel.
|
|
407
|
-
"panel.
|
|
408
|
-
"panel.
|
|
409
|
-
"panel.tip.
|
|
410
|
-
"panel.tip.
|
|
411
|
-
"panel.tip.
|
|
412
|
-
"panel.tip.
|
|
413
|
-
"panel.tip.
|
|
414
|
-
"panel.tip.
|
|
415
|
-
"panel.tip.
|
|
416
|
-
"panel.tip.
|
|
417
|
-
"panel.tip.
|
|
418
|
-
"panel.tip.
|
|
419
|
-
"panel.tip.
|
|
420
|
-
"panel.tip.
|
|
421
|
-
"panel.tip.
|
|
422
|
-
"panel.tip.
|
|
423
|
-
"panel.
|
|
424
|
-
"panel.
|
|
425
|
-
"panel.
|
|
426
|
-
"panel.
|
|
427
|
-
"panel.
|
|
428
|
-
"panel.
|
|
429
|
-
"panel.
|
|
430
|
-
"panel.
|
|
431
|
-
"panel.
|
|
432
|
-
"panel.
|
|
433
|
-
"panel.
|
|
434
|
-
"panel.
|
|
435
|
-
"panel.
|
|
436
|
-
"panel.
|
|
437
|
-
"panel.
|
|
438
|
-
"panel.
|
|
439
|
-
"panel.
|
|
440
|
-
"panel.
|
|
441
|
-
"panel.
|
|
442
|
-
"panel.
|
|
443
|
-
"panel.
|
|
444
|
-
"panel.
|
|
445
|
-
"panel.
|
|
446
|
-
"panel.
|
|
447
|
-
"panel.
|
|
448
|
-
"panel.
|
|
449
|
-
"panel.feedback.
|
|
450
|
-
"panel.
|
|
451
|
-
"panel.
|
|
452
|
-
"panel.
|
|
453
|
-
"panel.
|
|
454
|
-
"panel.
|
|
455
|
-
"panel.
|
|
456
|
-
"panel.
|
|
457
|
-
"panel.
|
|
458
|
-
"panel.
|
|
459
|
-
"panel.
|
|
460
|
-
"panel.
|
|
461
|
-
"panel.
|
|
462
|
-
"panel.
|
|
463
|
-
"panel.
|
|
464
|
-
"panel.
|
|
465
|
-
"panel.
|
|
466
|
-
"panel.
|
|
467
|
-
"panel.
|
|
468
|
-
"panel.
|
|
469
|
-
"panel.
|
|
470
|
-
"panel.
|
|
471
|
-
"panel.
|
|
472
|
-
"panel.
|
|
473
|
-
"panel.
|
|
474
|
-
"panel.
|
|
475
|
-
"panel.
|
|
476
|
-
"panel.
|
|
477
|
-
"panel.
|
|
478
|
-
"panel.
|
|
479
|
-
"panel.
|
|
480
|
-
"panel.license.
|
|
481
|
-
"panel.license.
|
|
482
|
-
"panel.license.
|
|
483
|
-
"panel.license.
|
|
484
|
-
"panel.license.
|
|
485
|
-
"panel.license.
|
|
486
|
-
"panel.
|
|
487
|
-
"panel.
|
|
488
|
-
"panel.
|
|
489
|
-
"panel.
|
|
490
|
-
"panel.
|
|
491
|
-
"panel.
|
|
492
|
-
"panel.
|
|
493
|
-
"panel.
|
|
494
|
-
"panel.
|
|
495
|
-
"panel.
|
|
496
|
-
"panel.
|
|
497
|
-
"panel.
|
|
498
|
-
"panel.
|
|
499
|
-
"panel.
|
|
500
|
-
"panel.
|
|
501
|
-
"panel.
|
|
502
|
-
"panel.
|
|
503
|
-
"panel.
|
|
504
|
-
"panel.
|
|
505
|
-
"panel.
|
|
506
|
-
"panel.
|
|
507
|
-
"panel.
|
|
508
|
-
"panel.
|
|
509
|
-
"panel.
|
|
510
|
-
"panel.
|
|
511
|
-
"panel.
|
|
512
|
-
"panel.
|
|
513
|
-
"panel.
|
|
514
|
-
"panel.
|
|
515
|
-
"panel.
|
|
516
|
-
"panel.
|
|
517
|
-
"panel.
|
|
518
|
-
"panel.
|
|
519
|
-
"panel.
|
|
520
|
-
"panel.
|
|
521
|
-
"panel.
|
|
522
|
-
"panel.
|
|
523
|
-
"panel.
|
|
524
|
-
"panel.
|
|
525
|
-
"panel.
|
|
526
|
-
"panel.
|
|
527
|
-
|
|
184
|
+
"pizarron.graph.orbit.speed": "轨道速度",
|
|
185
|
+
"startup.tab.graph": "可视化图",
|
|
186
|
+
"startup.tab.graphSem": "语义图",
|
|
187
|
+
"startup.tab.pendings": "待办",
|
|
188
|
+
"startup.tab.workflow": "工作流",
|
|
189
|
+
"settings.startupTabs": "启动时的标签页(图、待办、工作流)",
|
|
190
|
+
"graph.term.nodes": "节点",
|
|
191
|
+
"graph.term.edges": "边",
|
|
192
|
+
"coding.read": "正在读取 {x}",
|
|
193
|
+
"coding.read_bare": "正在读取文件",
|
|
194
|
+
"coding.edit": "正在编辑 {x}",
|
|
195
|
+
"coding.edit_bare": "正在编辑文件",
|
|
196
|
+
"coding.write": "正在写入 {x}",
|
|
197
|
+
"coding.write_bare": "正在写入文件",
|
|
198
|
+
"coding.notebook_bare": "正在编辑笔记本",
|
|
199
|
+
"coding.bash": "正在执行: {x}",
|
|
200
|
+
"coding.bash_bare": "正在执行命令",
|
|
201
|
+
"coding.grep": "正在搜索 \"{x}\"",
|
|
202
|
+
"coding.grep_bare": "正在搜索代码",
|
|
203
|
+
"coding.glob": "正在列出 {x}",
|
|
204
|
+
"coding.glob_bare": "正在列出文件",
|
|
205
|
+
"coding.web_bare": "正在读取网页",
|
|
206
|
+
"coding.websearch": "网页搜索: {x}",
|
|
207
|
+
"coding.websearch_bare": "正在搜索网页",
|
|
208
|
+
"coding.task": "子代理: {x}",
|
|
209
|
+
"coding.task_bare": "正在启动子代理",
|
|
210
|
+
"coding.todo": "正在更新任务列表",
|
|
211
|
+
"coding.verb_bare": "正在执行 yujin 动作",
|
|
212
|
+
"panel.button.stop": "停止",
|
|
213
|
+
"panel.status.stopping": "正在停止...",
|
|
214
|
+
"panel.status.noActiveTurn": "没有正在进行的回合。",
|
|
215
|
+
"panel.status.interruptFailed": "无法发送中断。",
|
|
216
|
+
"panel.status.turnInterrupted": "回合已中断。",
|
|
217
|
+
"panel.label.interrupted": "(已中断)",
|
|
218
|
+
"panel.queue.label": "队列中",
|
|
219
|
+
"panel.queue.remove": "从队列中移除",
|
|
220
|
+
"panel.project.switchHint": "切换项目",
|
|
221
|
+
"panel.project.title": "项目",
|
|
222
|
+
"panel.project.add": "添加项目...",
|
|
223
|
+
"panel.project.addPrompt": "要添加的项目的绝对路径:",
|
|
224
|
+
"panel.project.switching": "正在切换项目...",
|
|
225
|
+
"startup.tab.files": "文件",
|
|
226
|
+
"panel.project.remove": "从列表中移除",
|
|
227
|
+
"panel.project.removeConfirm": "从列表中移除此项目?(不会删除磁盘上的文件)",
|
|
228
|
+
"panel.project.removed": "已从列表中移除项目",
|
|
229
|
+
"panel.files.refresh": "刷新",
|
|
230
|
+
"panel.files.loading": "加载中...",
|
|
231
|
+
"panel.files.error": "无法读取文件。",
|
|
232
|
+
"panel.files.empty": "(无文件)",
|
|
233
|
+
"panel.files.truncated": "(列表已截断)",
|
|
234
|
+
"panel.files.opened": "已打开",
|
|
235
|
+
"panel.files.openFailed": "无法打开文件。",
|
|
236
|
+
"panel.files.searchName": "按名称筛选",
|
|
237
|
+
"panel.files.searchType": "类型 (如 ts, png)",
|
|
238
|
+
"panel.files.matches": "{n} 个匹配",
|
|
239
|
+
"panel.files.noMatches": "无匹配",
|
|
240
|
+
"panel.files.sortBy": "排序方式",
|
|
241
|
+
"panel.files.sortName": "名称",
|
|
242
|
+
"panel.files.sortSize": "大小",
|
|
243
|
+
"panel.files.sortType": "类型",
|
|
244
|
+
"startup.tab.tasks": "任务",
|
|
245
|
+
"settings.bridge.title": "实例间协调",
|
|
246
|
+
"settings.bridge.accept": "接受其他实例的定向消息(作为聊天注入)",
|
|
247
|
+
"settings.bridge.composePlaceholder": "发送给其他实例的消息...",
|
|
248
|
+
"settings.voice.title": "语音",
|
|
249
|
+
"settings.voice.mode": "模式",
|
|
250
|
+
"settings.voice.modeMic": "麦克风模式",
|
|
251
|
+
"settings.voice.stt": "STT",
|
|
252
|
+
"settings.voice.sttBrowser": "STT 浏览器",
|
|
253
|
+
"settings.voice.ttsEngine": "TTS 引擎",
|
|
254
|
+
"settings.voice.ttsBrowser": "TTS 浏览器",
|
|
255
|
+
"settings.voice.ttsVoice": "TTS 语音(仅 Google)",
|
|
256
|
+
"settings.vad.title": "VAD(静音检测)",
|
|
257
|
+
"settings.vad.resetDefaults": "恢复默认",
|
|
258
|
+
"settings.vad.engine": "引擎",
|
|
259
|
+
"settings.vad.engineAmplitude": "振幅(RMS)",
|
|
260
|
+
"settings.vad.engineBand": "频带 80-400Hz",
|
|
261
|
+
"settings.vad.baselineWindow": "基线窗口",
|
|
262
|
+
"settings.vad.thresholdMult": "阈值倍数(基线 x N)",
|
|
263
|
+
"settings.vad.thresholdMin": "最小阈值",
|
|
264
|
+
"settings.vad.thresholdMax": "最大阈值",
|
|
265
|
+
"settings.vad.silence": "关闭所需静音",
|
|
266
|
+
"settings.vad.minVoiced": "最小语音(防误触)",
|
|
267
|
+
"settings.vad.tick": "VAD 周期",
|
|
268
|
+
"settings.vad.bandLow": "语音频带:低 (Hz)",
|
|
269
|
+
"settings.vad.bandHigh": "语音频带:高 (Hz)",
|
|
270
|
+
"settings.vad.showOverlay": "显示实时叠加",
|
|
271
|
+
"settings.vad.logStats": "按会话记录统计",
|
|
272
|
+
"settings.brain.anthropicMode": "Anthropic:模式",
|
|
273
|
+
"settings.brain.modePlan": "Plan(Claude 订阅)",
|
|
274
|
+
"settings.brain.modeConsole": "Console(API key)",
|
|
275
|
+
"settings.brain.modeNote": "重新打开面板时生效。",
|
|
276
|
+
"settings.brain.ecoEnabled": "启用 eco 模式",
|
|
277
|
+
"settings.brain.ecoHint": "关闭 = 始终 frontier",
|
|
278
|
+
"settings.brain.modelEco": "eco 模型",
|
|
279
|
+
"settings.brain.modelFrontier": "frontier 模型",
|
|
280
|
+
"settings.brain.modelMultimodal": "multimodal 模型",
|
|
281
|
+
"settings.brain.multimodalClearTitle": "移除专用 multimodal brain(恢复自动视觉路由)",
|
|
282
|
+
"settings.brain.auto": "自动",
|
|
283
|
+
"settings.brain.multimodalHint": "用于带图像回合的专用 brain。自动 = 自动视觉路由(frontier 能看则用它,否则提示)。",
|
|
284
|
+
"settings.brain.geminiCache": "Gemini 显式缓存(CachedContent)",
|
|
285
|
+
"settings.brain.geminiCacheHint": "可选启用。在使用 Gemini Pro 的长会话中有用;短会话中 2.5 的免费隐式缓存已足够。",
|
|
286
|
+
"settings.federation.title": "brain 联邦",
|
|
287
|
+
"settings.federation.intro": "使用另一个 Forge 的 brain(其 key 永不离开其机器)或出借你的。你的代码在本地运行;只有推理会传输。",
|
|
288
|
+
"settings.federation.connectedTo": "已连接到",
|
|
289
|
+
"settings.federation.disconnect": "断开连接",
|
|
290
|
+
"settings.federation.connectMe": "连接我",
|
|
291
|
+
"settings.federation.tokenPlaceholder": "粘贴联邦代码",
|
|
292
|
+
"settings.federation.connect": "连接",
|
|
293
|
+
"settings.federation.lendBrain": "出借我的 brain",
|
|
294
|
+
"settings.federation.generateCode": "生成代码",
|
|
295
|
+
"settings.federation.host": "托管(响应子节点)",
|
|
296
|
+
"settings.federation.fedBrain": "联邦 brain",
|
|
297
|
+
"settings.federation.fedBrainNote": "响应子节点的那个。直接 API(默认 DeepSeek)。Claude Plan 无法托管;需要有余额的 key。",
|
|
298
|
+
"settings.federation.codeOnce": "代码(一次性)",
|
|
299
|
+
"settings.federation.copy": "复制",
|
|
300
|
+
"settings.keys.title": "API keys(BYOK)",
|
|
301
|
+
"settings.keys.configure": "配置",
|
|
302
|
+
"settings.keys.remove": "移除",
|
|
303
|
+
"settings.keys.brainAnthropic": "Brain(Anthropic)",
|
|
304
|
+
"settings.keys.brainOpenai": "Brain(OpenAI)",
|
|
305
|
+
"settings.keys.brainGoogle": "Brain(Google AI)",
|
|
306
|
+
"settings.keys.brainDeepseek": "Brain(DeepSeek)",
|
|
307
|
+
"settings.keys.brainXai": "Brain(xAI / Grok)",
|
|
308
|
+
"settings.keys.brainMistral": "Brain(Mistral)",
|
|
309
|
+
"settings.keys.brainCohere": "Brain(Cohere)",
|
|
310
|
+
"settings.keys.sttGoogle": "STT Google",
|
|
311
|
+
"settings.keys.ttsGoogle": "TTS Google",
|
|
312
|
+
"settings.keys.ttsElevenlabs": "TTS ElevenLabs",
|
|
313
|
+
"settings.keys.sttWhisper": "STT Whisper",
|
|
314
|
+
"settings.lang.title": "语言",
|
|
315
|
+
"settings.lang.panelVoice": "面板 + 语音",
|
|
316
|
+
"settings.lang.changeButton": "更改语言",
|
|
317
|
+
"settings.vault.title": "Vault(加密)",
|
|
318
|
+
"settings.vault.slots": "槽位",
|
|
319
|
+
"settings.vault.open": "打开 vault",
|
|
320
|
+
"settings.license.email": "电子邮件",
|
|
321
|
+
"settings.license.validated": "已验证",
|
|
322
|
+
"settings.license.connectHint": "连接你的 Polar 账户。输入你付款时使用的电子邮件,我们会自动同步你的 plan。",
|
|
323
|
+
"settings.license.emailPlaceholder": "email@example.com",
|
|
324
|
+
"settings.license.connect": "连接",
|
|
325
|
+
"settings.license.sync": "与 Polar 同步",
|
|
326
|
+
"settings.license.buy": "购买 / 激活 plan",
|
|
327
|
+
"settings.budget.title": "本月预算",
|
|
328
|
+
"settings.budget.renews": "续期",
|
|
329
|
+
"settings.budget.tokensEco": "eco tokens",
|
|
330
|
+
"settings.budget.tokensFrontier": "frontier tokens",
|
|
331
|
+
"settings.budget.buyExtension": "购买 token 扩展包",
|
|
332
|
+
"settings.limits.title": "限制(高级)",
|
|
333
|
+
"settings.limits.editHint": "编辑任意值 + tab/blur 即保存。",
|
|
334
|
+
"settings.limits.reset": "重置为默认",
|
|
335
|
+
"settings.bookmarks.title": "Reader 书签",
|
|
336
|
+
"settings.graph.title": "项目知识图谱",
|
|
337
|
+
"settings.pair.title": "关联手机",
|
|
338
|
+
"settings.pair.hint": "打开 Forge Mobile,点击\"关联\"并扫描此 QR。完成。",
|
|
339
|
+
"settings.pair.generateQr": "生成 QR",
|
|
340
|
+
"settings.pair.cantRead": "相机无法读取 QR?复制此代码并粘贴到 Forge Mobile:",
|
|
341
|
+
"settings.audit.viewFull": "查看完整",
|
|
342
|
+
"settings.audit.close": "关闭",
|
|
343
|
+
"settings.audit.allKinds": "所有 kind",
|
|
344
|
+
"settings.audit.allModes": "所有 mode",
|
|
345
|
+
"settings.audit.copyJson": "复制 JSON",
|
|
346
|
+
"settings.audit.closeDetail": "关闭详情",
|
|
347
|
+
"settings.about.title": "关于",
|
|
348
|
+
"settings.danger.title": "危险区域",
|
|
349
|
+
"settings.danger.warning": "开启时,Yujin 将不经确认执行每一个操作(包括 shell.exec、rm、git push --force 等)。速度优先于安全。一切都记录在 audit log 中。",
|
|
350
|
+
"settings.keyEditor.placeholder": "在此粘贴你的 API key",
|
|
351
|
+
"settings.license.title": "许可证",
|
|
352
|
+
"settings.plan": "套餐",
|
|
353
|
+
"settings.audit.title": "审计日志",
|
|
354
|
+
"settings.legal.title": "法律",
|
|
355
|
+
"panel.status.projectSwitchFail": "无法切换项目。",
|
|
356
|
+
"panel.status.projectRemoveFail": "无法移除项目。",
|
|
357
|
+
"panel.status.projectAddFail": "无法添加项目。",
|
|
358
|
+
"panel.status.cancelFail": "无法取消:{reason}",
|
|
359
|
+
"panel.status.cancelNetError": "取消 shell 时发生网络错误。",
|
|
360
|
+
"panel.status.notEditable": "此类内容不可编辑。",
|
|
361
|
+
"panel.status.savedAsPicker": "已另存为:{name}(保存到你在对话框中选择的路径)。",
|
|
362
|
+
"panel.status.saveAsFail": "另存为出错:{error} -- 使用后备方案。",
|
|
363
|
+
"panel.status.saveFail": "保存出错:{error}",
|
|
364
|
+
"panel.status.savedAs": "已另存为:{path}({bytes} 字节)",
|
|
365
|
+
"panel.status.netError": "网络错误:{error}",
|
|
366
|
+
"panel.status.savedTabOnly": "更改已保存在标签页中(未保存到磁盘 -- 无 file_path)。",
|
|
367
|
+
"panel.status.saved": "已保存:{path}({bytes} 字节)",
|
|
368
|
+
"panel.status.copied": "已复制到剪贴板。",
|
|
369
|
+
"panel.status.copyFail": "无法复制。",
|
|
370
|
+
"panel.status.modeAvailable": "可用模式:didactico, tecnico。用法:/modo tecnico",
|
|
371
|
+
"panel.status.modeChangeFail": "无法更改模式:{error}",
|
|
372
|
+
"panel.status.modeChanged": "模式已更改为 {target}。下一轮已使用此模式。",
|
|
373
|
+
"panel.status.genericError": "错误:{error}",
|
|
374
|
+
"panel.status.brainTierAuto": "Brain tier 恢复为 auto(router 根据 verb / phase 决定)。",
|
|
375
|
+
"panel.status.brainTierForced": "本会话的 Brain tier 已固定为 \"{target}\"。/auto 可返回 router。",
|
|
376
|
+
"panel.confirm.tabUnsaved": "标签页 \"{title}\" 有未保存的更改。仍要关闭吗?",
|
|
377
|
+
"panel.confirm.tabsUnsaved": "有标签页存在未保存的更改。仍要全部关闭吗?",
|
|
378
|
+
"panel.confirm.discardChanges": "放弃未保存的更改?",
|
|
379
|
+
"panel.confirm.removeSlot": "移除 slot \"{slot}\"?此操作无法撤销。",
|
|
380
|
+
"panel.confirm.removeKey": "移除 {slot} 的 key?",
|
|
381
|
+
"panel.prompt.saveAs": "另存为(相对于项目的路径):",
|
|
382
|
+
"panel.voice.sttFallback": "浏览器 STT 不可用;使用服务器端后备方案。",
|
|
383
|
+
"panel.voice.noMicSupport": "你的浏览器不支持麦克风访问。",
|
|
384
|
+
"panel.voice.recordingCountdown": "录音中... {n}秒后自动停止",
|
|
385
|
+
"panel.voice.autoStopped": "录音在 55 秒时自动停止(Google STT 1 分钟限制)。请尝试更短的内容。",
|
|
386
|
+
"panel.voice.noAudio": "未捕获到音频。请重试。",
|
|
387
|
+
"panel.voice.audioTooLong": "音频过长(>1 分钟)。Google STT 同步限制。请尝试更短的内容。",
|
|
388
|
+
"panel.voice.ttsUnavailable": "浏览器 TTS 不可用;请在设置中切换回 Google。",
|
|
389
|
+
"panel.voice.micClosedHalfDuplex": "Yujin 说话时麦克风已关闭(半双工)。",
|
|
390
|
+
"panel.voice.micBlocked": "麦克风被阻止。请在浏览器设置中允许此应用使用麦克风,然后重试。",
|
|
391
|
+
"panel.voice.noMicDevice": "此设备未检测到麦克风。",
|
|
392
|
+
"panel.voice.micOpenFail": "无法打开麦克风:{error}",
|
|
393
|
+
"panel.voice.micOpenListening": "麦克风已开启,正在聆听...",
|
|
394
|
+
"panel.voice.listening": "我在听...",
|
|
395
|
+
"panel.voice.listeningInterim": "我在听... {text}",
|
|
396
|
+
"panel.voice.micBlockedBrowser": "麦克风被浏览器阻止。点击地址栏中的锁形图标并允许麦克风,然后重新加载页面。或者如果你有 API key,在设置中将 STT 切换为 \"google\" / \"whisper\"。",
|
|
397
|
+
"panel.voice.noMicPhysical": "未检测到物理麦克风。请连接一个,或在设置中将 STT 切换为 \"google\" / \"whisper\"。",
|
|
398
|
+
"panel.voice.networkRequired": "Web Speech 需要互联网连接(Chrome 在后台使用 Google)。请在连接稳定时尝试,或者如果你有 API key,将 STT 切换为 \"whisper\"。",
|
|
399
|
+
"panel.voice.langNotSupported": "你的浏览器不支持此语言的 STT。请将面板语言更改为受支持的语言(en、es、pt),或将 STT 切换为 \"google\" / \"whisper\"。",
|
|
400
|
+
"panel.voice.micError": "麦克风错误:{error}",
|
|
401
|
+
"panel.voice.noAudioToRecognizer": "没有音频到达识别器:浏览器的听写在此应用中未捕获。",
|
|
402
|
+
"panel.voice.micOpenNoVoice": "麦克风已开启但未检测到语音。请靠近麦克风并说大声些;若仍如此,免费听写在此 PWA 中无法工作。",
|
|
403
|
+
"panel.voice.voiceNoText": "检测到语音但浏览器未返回文本(此 PWA 中无免费 STT)。",
|
|
404
|
+
"panel.voice.startingDictation": "正在开始听写...",
|
|
405
|
+
"panel.voice.couldNotStartMic": "无法启动麦克风:{error}",
|
|
406
|
+
"panel.status.imageTooLarge": "图片过大(>6MB):{name}",
|
|
407
|
+
"panel.status.imageReady": "图片已准备好发送:{name}",
|
|
408
|
+
"panel.status.imageReadFail": "无法读取图片:{error}",
|
|
409
|
+
"panel.tip.attachFile": "附加文件",
|
|
410
|
+
"panel.tip.refreshDiscovery": "刷新发现",
|
|
411
|
+
"panel.tip.refreshNow": "立即刷新",
|
|
412
|
+
"panel.tip.filterByProject": "按项目筛选",
|
|
413
|
+
"panel.tip.concurrentRuns": "并发运行:全局 / 每项目上限",
|
|
414
|
+
"panel.tip.mcpBridges": "MCP 桥接 (F101)",
|
|
415
|
+
"panel.tip.activity": "智能体活动 + 桥接检查器 + 每个智能体的聊天",
|
|
416
|
+
"panel.tip.settings": "设置(语音模式、STT、TTS、密钥、语言)",
|
|
417
|
+
"panel.tip.zoomOut": "缩小 (Ctrl -)",
|
|
418
|
+
"panel.tip.zoomReset": "重置缩放 (Ctrl 0)",
|
|
419
|
+
"panel.tip.zoomIn": "放大 (Ctrl +)",
|
|
420
|
+
"panel.tip.maximize": "最大化 / 还原(全屏)",
|
|
421
|
+
"panel.tip.closeBoard": "关闭整个白板",
|
|
422
|
+
"panel.tip.openInEditor": "在我的编辑器中打开",
|
|
423
|
+
"panel.tip.open": "打开",
|
|
424
|
+
"panel.tip.saveAs": "另存为 -- 选择新路径(相对于项目)",
|
|
425
|
+
"panel.tip.codeModeDetail": "详细:实时显示文件、差异和命令",
|
|
426
|
+
"panel.tip.codeModeZen": "Sumi-e:偶尔配文字的艺术",
|
|
427
|
+
"panel.tip.cancelShell": "取消 shell 命令",
|
|
428
|
+
"panel.tip.closeTab": "关闭标签页",
|
|
429
|
+
"panel.tip.reopenNativeTabs": "重新打开已关闭的原生标签页",
|
|
430
|
+
"panel.tip.notTestedYet": "尚未测试",
|
|
431
|
+
"panel.aria.activity": "活动",
|
|
432
|
+
"panel.aria.settings": "设置",
|
|
433
|
+
"panel.aria.zoomOut": "缩小",
|
|
434
|
+
"panel.aria.zoomIn": "放大",
|
|
435
|
+
"panel.aria.maximize": "最大化",
|
|
436
|
+
"panel.aria.closeBoard": "全部关闭",
|
|
437
|
+
"panel.aria.thinking": "思考中",
|
|
438
|
+
"panel.hint.boardEmpty": "结构化内容显示在这里:代码、表格、文档。让 Yujin 写或编辑一些内容。",
|
|
439
|
+
"panel.hint.planMode": "您处于 Plan 模式(订阅)。当 brain 以 API 模式运行时才会绘制白板:在 <strong>设置 > Brain > Anthropic:模式 > Console</strong> 中更改并重新打开面板。",
|
|
440
|
+
"panel.hint.bookmarksEmpty": "没有书签。阅读文档时让 Yujin \"把这一点标记为 ...\"。",
|
|
441
|
+
"panel.voice.replyFailed": "语音回复失败:{err}",
|
|
442
|
+
"panel.voice.replyError": "语音回复错误:{err}",
|
|
443
|
+
"panel.status.languageSwitchFailed": "语言切换失败:{err}",
|
|
444
|
+
"panel.status.languageListFailed": "无法加载语言列表",
|
|
445
|
+
"panel.legal.loading": "加载中...",
|
|
446
|
+
"panel.legal.loadError": "加载文档时出错 {status}。",
|
|
447
|
+
"panel.legal.networkError": "网络错误:{err}",
|
|
448
|
+
"panel.legal.defaultTitle": "法律信息",
|
|
449
|
+
"panel.feedback.copied": "已复制",
|
|
450
|
+
"panel.feedback.copyFailed": "复制失败",
|
|
451
|
+
"panel.feedback.clipboardUnavailable": "剪贴板不可用",
|
|
452
|
+
"panel.feedback.saving": "保存中...",
|
|
453
|
+
"panel.feedback.saved": "已保存。",
|
|
454
|
+
"panel.feedback.saveError": "保存出错",
|
|
455
|
+
"panel.feedback.netError": "网络错误",
|
|
456
|
+
"panel.feedback.netErrorSaving": "保存时网络错误",
|
|
457
|
+
"panel.feedback.errorPrefix": "错误:{detail}",
|
|
458
|
+
"panel.pair.generating": "生成中...",
|
|
459
|
+
"panel.pair.generateQr": "生成二维码",
|
|
460
|
+
"panel.pair.copy": "复制",
|
|
461
|
+
"panel.pair.expiry": "约 {mins} 分钟后过期。如果过期请重新生成。",
|
|
462
|
+
"panel.pair.qrNetError": "生成二维码时网络错误。",
|
|
463
|
+
"panel.audit.copyJson": "复制 JSON",
|
|
464
|
+
"panel.limits.resetApplied": "已重置为默认值",
|
|
465
|
+
"panel.nac3.effects": "影响:{list}",
|
|
466
|
+
"panel.nac3.effectsUnknown": "未知",
|
|
467
|
+
"panel.nac3.cancel": "取消",
|
|
468
|
+
"panel.nac3.reject": "拒绝",
|
|
469
|
+
"panel.nac3.approve": "批准",
|
|
470
|
+
"panel.nac3.approveDestructive": "批准(破坏性)",
|
|
471
|
+
"panel.nac3.executing": "执行中...",
|
|
472
|
+
"panel.tts.providerBrowser": "TTS 浏览器",
|
|
473
|
+
"panel.tts.providerGoogle": "TTS Google",
|
|
474
|
+
"panel.tts.providerTitle": "点击以在浏览器(原生 SpeechSynthesis,操作系统语音)和 Google Cloud TTS(服务器端)之间切换。",
|
|
475
|
+
"panel.stt.providerBrowser": "STT 浏览器",
|
|
476
|
+
"panel.stt.providerGoogle": "STT Google",
|
|
477
|
+
"panel.stt.providerWhisper": "STT Whisper",
|
|
478
|
+
"panel.stt.providerTitle": "点击以在浏览器(快速 + 原生 es-AR + 免费)、Google Cloud STT(服务器端,BYOK)或 Whisper(服务器端,BYOK)之间切换。",
|
|
479
|
+
"panel.tts.voiceTitle": "当前语音:{id} / {persona} ({gender}) -- {style}。点击循环切换。Studio = 清晰发出 s;Neural2 = 自然西班牙语(弱化词尾 s)。",
|
|
480
|
+
"panel.license.lendNeedsLicense": "激活许可证以借出您的 brain",
|
|
481
|
+
"panel.license.emailInvalid": "请输入有效的电子邮件(含 @)。",
|
|
482
|
+
"panel.license.connecting": "连接中...",
|
|
483
|
+
"panel.license.savingEmail": "保存电子邮件 + 与 Polar 同步中...",
|
|
484
|
+
"panel.license.syncFailedRetry": "电子邮件已保存,但同步失败:{err}{http}。如果您刚付款,请等待 1-2 分钟,然后点击\"与 Polar 同步\"。",
|
|
485
|
+
"panel.license.planOk": "OK -- 套餐:{plan}。",
|
|
486
|
+
"panel.license.netError": "网络错误:{err}",
|
|
487
|
+
"panel.license.syncing": "同步中...",
|
|
488
|
+
"panel.license.querying": "正在查询服务器...",
|
|
489
|
+
"panel.license.syncError": "同步错误:{err}{http}",
|
|
490
|
+
"panel.license.planUnchanged": "套餐未更改:{plan}",
|
|
491
|
+
"panel.license.planUpdated": "套餐已更新:{before} -> {after}",
|
|
492
|
+
"panel.license.syncWithPolar": "与 Polar 同步",
|
|
493
|
+
"panel.license.errorWithCode": "错误:{code}",
|
|
494
|
+
"panel.keyEditor.keyTooShort": "密钥太短(至少 8 个字符)。",
|
|
495
|
+
"panel.bridge.coordUnavailable": "协调不可用。",
|
|
496
|
+
"panel.bridge.statusUnavailable": "不可用",
|
|
497
|
+
"panel.mcp.loadingBridges": "加载桥接中...",
|
|
498
|
+
"panel.tools.loading": "加载工具中...",
|
|
499
|
+
"panel.agentsChat.backPairs": "< 配对",
|
|
500
|
+
"panel.agentsChat.noMessages": "此配对中没有消息。",
|
|
501
|
+
"panel.agentsChat.noAgents": "无智能体",
|
|
502
|
+
"panel.agentsChat.pickAgent": "发送前请选择一个智能体并输入文本。",
|
|
503
|
+
"panel.agentsChat.sending": "发送中...",
|
|
504
|
+
"panel.agentsChat.errorGeneric": "错误:{err}",
|
|
505
|
+
"panel.whatsNew.dismiss": "关闭",
|
|
506
|
+
"panel.alert.noEditor": "PATH 中没有编辑器。复制路径:{path}",
|
|
507
|
+
"panel.alert.pathRelative": "路径必须相对于项目(不能以 \"/\" 开头或包含 \"..\")。",
|
|
508
|
+
"panel.tip.saveTo": "保存到 {path}",
|
|
509
|
+
"panel.tip.saveToMemory": "(内存)",
|
|
510
|
+
"panel.button.saveAs": "另存为...",
|
|
511
|
+
"panel.aria.concurrentRuns": "并发运行",
|
|
512
|
+
"panel.activity.allProjects": "所有项目",
|
|
513
|
+
"panel.activity.loadingFeed": "加载动态中...",
|
|
514
|
+
"panel.feedback.savedShort": "已保存",
|
|
515
|
+
"panel.pair.qrFailed": "无法生成二维码。",
|
|
516
|
+
"panel.brain.modePlan": "Plan(订阅)",
|
|
517
|
+
"panel.brain.modeConsole": "Console(API 密钥)",
|
|
518
|
+
"panel.brain.applying": "正在应用 {mode}...",
|
|
519
|
+
"panel.brain.applied": "已应用 {mode}。下一轮已使用此模式。",
|
|
520
|
+
"panel.brain.reopenHint": "重新打开面板时生效。",
|
|
521
|
+
"panel.brain.active": "{mode} 已激活",
|
|
522
|
+
"panel.bridge.roleHost": "主机",
|
|
523
|
+
"panel.bridge.roleClient": "客户端",
|
|
524
|
+
"panel.bridge.instanceOne": "实例",
|
|
525
|
+
"panel.bridge.instanceMany": "实例",
|
|
526
|
+
"panel.bridge.you": "你",
|
|
527
|
+
"panel.tip.deleteTask": "删除任务",
|
|
528
|
+
"panel.tasks.cmdPlaceholder": "命令(例如:pnpm install)...",
|
|
529
|
+
"panel.readAloud.code": "代码",
|
|
530
|
+
"panel.readAloud.codeLang": "{lang} 代码",
|
|
531
|
+
"panel.readAloud.file": "文件 {file}",
|
|
532
|
+
"panel.readAloud.content": "内容:{content}",
|
|
533
|
+
"panel.pizarron.tabOne": "标签页",
|
|
534
|
+
"panel.pizarron.tabMany": "标签页"
|
|
535
|
+
}
|