@jonsoc/app 1.1.34
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/AGENTS.md +30 -0
- package/README.md +51 -0
- package/bunfig.toml +2 -0
- package/e2e/context.spec.ts +45 -0
- package/e2e/file-open.spec.ts +23 -0
- package/e2e/file-viewer.spec.ts +35 -0
- package/e2e/fixtures.ts +40 -0
- package/e2e/home.spec.ts +21 -0
- package/e2e/model-picker.spec.ts +43 -0
- package/e2e/navigation.spec.ts +9 -0
- package/e2e/palette.spec.ts +15 -0
- package/e2e/prompt-mention.spec.ts +26 -0
- package/e2e/prompt-slash-open.spec.ts +22 -0
- package/e2e/prompt.spec.ts +62 -0
- package/e2e/session.spec.ts +21 -0
- package/e2e/settings.spec.ts +44 -0
- package/e2e/sidebar.spec.ts +21 -0
- package/e2e/terminal-init.spec.ts +25 -0
- package/e2e/terminal.spec.ts +16 -0
- package/e2e/tsconfig.json +8 -0
- package/e2e/utils.ts +38 -0
- package/happydom.ts +75 -0
- package/index.html +23 -0
- package/package.json +72 -0
- package/playwright.config.ts +43 -0
- package/public/_headers +17 -0
- package/public/apple-touch-icon-v3.png +1 -0
- package/public/apple-touch-icon.png +1 -0
- package/public/favicon-96x96-v3.png +1 -0
- package/public/favicon-96x96.png +1 -0
- package/public/favicon-v3.ico +1 -0
- package/public/favicon-v3.svg +1 -0
- package/public/favicon.ico +1 -0
- package/public/favicon.svg +1 -0
- package/public/oc-theme-preload.js +28 -0
- package/public/site.webmanifest +1 -0
- package/public/social-share-zen.png +1 -0
- package/public/social-share.png +1 -0
- package/public/web-app-manifest-192x192.png +1 -0
- package/public/web-app-manifest-512x512.png +1 -0
- package/script/e2e-local.ts +143 -0
- package/src/addons/serialize.test.ts +319 -0
- package/src/addons/serialize.ts +591 -0
- package/src/app.tsx +150 -0
- package/src/components/dialog-connect-provider.tsx +428 -0
- package/src/components/dialog-edit-project.tsx +259 -0
- package/src/components/dialog-fork.tsx +104 -0
- package/src/components/dialog-manage-models.tsx +59 -0
- package/src/components/dialog-select-directory.tsx +208 -0
- package/src/components/dialog-select-file.tsx +196 -0
- package/src/components/dialog-select-mcp.tsx +96 -0
- package/src/components/dialog-select-model-unpaid.tsx +130 -0
- package/src/components/dialog-select-model.tsx +162 -0
- package/src/components/dialog-select-provider.tsx +70 -0
- package/src/components/dialog-select-server.tsx +249 -0
- package/src/components/dialog-settings.tsx +112 -0
- package/src/components/file-tree.tsx +112 -0
- package/src/components/link.tsx +17 -0
- package/src/components/model-tooltip.tsx +91 -0
- package/src/components/prompt-input.tsx +2076 -0
- package/src/components/session/index.ts +5 -0
- package/src/components/session/session-context-tab.tsx +428 -0
- package/src/components/session/session-header.tsx +343 -0
- package/src/components/session/session-new-view.tsx +93 -0
- package/src/components/session/session-sortable-tab.tsx +56 -0
- package/src/components/session/session-sortable-terminal-tab.tsx +187 -0
- package/src/components/session-context-usage.tsx +113 -0
- package/src/components/session-lsp-indicator.tsx +42 -0
- package/src/components/session-mcp-indicator.tsx +34 -0
- package/src/components/settings-agents.tsx +15 -0
- package/src/components/settings-commands.tsx +15 -0
- package/src/components/settings-general.tsx +306 -0
- package/src/components/settings-keybinds.tsx +437 -0
- package/src/components/settings-mcp.tsx +15 -0
- package/src/components/settings-models.tsx +15 -0
- package/src/components/settings-permissions.tsx +234 -0
- package/src/components/settings-providers.tsx +15 -0
- package/src/components/terminal.tsx +315 -0
- package/src/components/titlebar.tsx +156 -0
- package/src/context/command.tsx +308 -0
- package/src/context/comments.tsx +140 -0
- package/src/context/file.tsx +409 -0
- package/src/context/global-sdk.tsx +106 -0
- package/src/context/global-sync.tsx +898 -0
- package/src/context/language.tsx +161 -0
- package/src/context/layout-scroll.test.ts +73 -0
- package/src/context/layout-scroll.ts +118 -0
- package/src/context/layout.tsx +648 -0
- package/src/context/local.tsx +578 -0
- package/src/context/notification.tsx +173 -0
- package/src/context/permission.tsx +167 -0
- package/src/context/platform.tsx +59 -0
- package/src/context/prompt.tsx +245 -0
- package/src/context/sdk.tsx +48 -0
- package/src/context/server.tsx +214 -0
- package/src/context/settings.tsx +166 -0
- package/src/context/sync.tsx +320 -0
- package/src/context/terminal.tsx +267 -0
- package/src/custom-elements.d.ts +17 -0
- package/src/entry.tsx +76 -0
- package/src/env.d.ts +8 -0
- package/src/hooks/use-providers.ts +31 -0
- package/src/i18n/ar.ts +656 -0
- package/src/i18n/br.ts +667 -0
- package/src/i18n/da.ts +582 -0
- package/src/i18n/de.ts +591 -0
- package/src/i18n/en.ts +665 -0
- package/src/i18n/es.ts +585 -0
- package/src/i18n/fr.ts +592 -0
- package/src/i18n/ja.ts +579 -0
- package/src/i18n/ko.ts +580 -0
- package/src/i18n/no.ts +602 -0
- package/src/i18n/pl.ts +661 -0
- package/src/i18n/ru.ts +664 -0
- package/src/i18n/zh.ts +574 -0
- package/src/i18n/zht.ts +570 -0
- package/src/index.css +57 -0
- package/src/index.ts +2 -0
- package/src/pages/directory-layout.tsx +57 -0
- package/src/pages/error.tsx +290 -0
- package/src/pages/home.tsx +125 -0
- package/src/pages/layout.tsx +2599 -0
- package/src/pages/session.tsx +2505 -0
- package/src/sst-env.d.ts +10 -0
- package/src/utils/dom.ts +51 -0
- package/src/utils/id.ts +99 -0
- package/src/utils/index.ts +1 -0
- package/src/utils/perf.ts +135 -0
- package/src/utils/persist.ts +377 -0
- package/src/utils/prompt.ts +203 -0
- package/src/utils/same.ts +6 -0
- package/src/utils/solid-dnd.tsx +55 -0
- package/src/utils/sound.ts +110 -0
- package/src/utils/speech.ts +302 -0
- package/src/utils/worktree.ts +58 -0
- package/sst-env.d.ts +9 -0
- package/tsconfig.json +26 -0
- package/vite.config.ts +15 -0
- package/vite.js +26 -0
package/src/i18n/zh.ts
ADDED
|
@@ -0,0 +1,574 @@
|
|
|
1
|
+
import { dict as en } from "./en"
|
|
2
|
+
|
|
3
|
+
type Keys = keyof typeof en
|
|
4
|
+
|
|
5
|
+
export const dict = {
|
|
6
|
+
"command.category.suggested": "建议",
|
|
7
|
+
"command.category.view": "视图",
|
|
8
|
+
"command.category.project": "项目",
|
|
9
|
+
"command.category.provider": "提供商",
|
|
10
|
+
"command.category.server": "服务器",
|
|
11
|
+
"command.category.session": "会话",
|
|
12
|
+
"command.category.theme": "主题",
|
|
13
|
+
"command.category.language": "语言",
|
|
14
|
+
"command.category.file": "文件",
|
|
15
|
+
"command.category.terminal": "终端",
|
|
16
|
+
"command.category.model": "模型",
|
|
17
|
+
"command.category.mcp": "MCP",
|
|
18
|
+
"command.category.agent": "智能体",
|
|
19
|
+
"command.category.permissions": "权限",
|
|
20
|
+
"command.category.workspace": "工作区",
|
|
21
|
+
|
|
22
|
+
"theme.scheme.system": "系统",
|
|
23
|
+
"theme.scheme.light": "浅色",
|
|
24
|
+
"theme.scheme.dark": "深色",
|
|
25
|
+
|
|
26
|
+
"command.sidebar.toggle": "切换侧边栏",
|
|
27
|
+
"command.project.open": "打开项目",
|
|
28
|
+
"command.provider.connect": "连接提供商",
|
|
29
|
+
"command.server.switch": "切换服务器",
|
|
30
|
+
"command.session.previous": "上一个会话",
|
|
31
|
+
"command.session.next": "下一个会话",
|
|
32
|
+
"command.session.archive": "归档会话",
|
|
33
|
+
|
|
34
|
+
"command.palette": "命令面板",
|
|
35
|
+
|
|
36
|
+
"command.theme.cycle": "切换主题",
|
|
37
|
+
"command.theme.set": "使用主题: {{theme}}",
|
|
38
|
+
"command.theme.scheme.cycle": "切换配色方案",
|
|
39
|
+
"command.theme.scheme.set": "使用配色方案: {{scheme}}",
|
|
40
|
+
|
|
41
|
+
"command.language.cycle": "切换语言",
|
|
42
|
+
"command.language.set": "使用语言: {{language}}",
|
|
43
|
+
|
|
44
|
+
"command.session.new": "新建会话",
|
|
45
|
+
"command.file.open": "打开文件",
|
|
46
|
+
"command.file.open.description": "搜索文件和命令",
|
|
47
|
+
"command.terminal.toggle": "切换终端",
|
|
48
|
+
"command.review.toggle": "切换审查",
|
|
49
|
+
"command.terminal.new": "新建终端",
|
|
50
|
+
"command.terminal.new.description": "创建新的终端标签页",
|
|
51
|
+
"command.steps.toggle": "切换步骤",
|
|
52
|
+
"command.steps.toggle.description": "显示或隐藏当前消息的步骤",
|
|
53
|
+
"command.message.previous": "上一条消息",
|
|
54
|
+
"command.message.previous.description": "跳转到上一条用户消息",
|
|
55
|
+
"command.message.next": "下一条消息",
|
|
56
|
+
"command.message.next.description": "跳转到下一条用户消息",
|
|
57
|
+
"command.model.choose": "选择模型",
|
|
58
|
+
"command.model.choose.description": "选择不同的模型",
|
|
59
|
+
"command.mcp.toggle": "切换 MCPs",
|
|
60
|
+
"command.mcp.toggle.description": "切换 MCPs",
|
|
61
|
+
"command.agent.cycle": "切换智能体",
|
|
62
|
+
"command.agent.cycle.description": "切换到下一个智能体",
|
|
63
|
+
"command.agent.cycle.reverse": "反向切换智能体",
|
|
64
|
+
"command.agent.cycle.reverse.description": "切换到上一个智能体",
|
|
65
|
+
"command.model.variant.cycle": "切换思考强度",
|
|
66
|
+
"command.model.variant.cycle.description": "切换到下一个强度等级",
|
|
67
|
+
"command.permissions.autoaccept.enable": "自动接受编辑",
|
|
68
|
+
"command.permissions.autoaccept.disable": "停止自动接受编辑",
|
|
69
|
+
"command.session.undo": "撤销",
|
|
70
|
+
"command.session.undo.description": "撤销上一条消息",
|
|
71
|
+
"command.session.redo": "重做",
|
|
72
|
+
"command.session.redo.description": "重做上一条撤销的消息",
|
|
73
|
+
"command.session.compact": "精简会话",
|
|
74
|
+
"command.session.compact.description": "总结会话以减少上下文大小",
|
|
75
|
+
"command.session.fork": "从消息分叉",
|
|
76
|
+
"command.session.fork.description": "从之前的消息创建新会话",
|
|
77
|
+
"command.session.share": "分享会话",
|
|
78
|
+
"command.session.share.description": "分享此会话并将链接复制到剪贴板",
|
|
79
|
+
"command.session.unshare": "取消分享会话",
|
|
80
|
+
"command.session.unshare.description": "停止分享此会话",
|
|
81
|
+
|
|
82
|
+
"palette.search.placeholder": "搜索文件和命令",
|
|
83
|
+
"palette.empty": "未找到结果",
|
|
84
|
+
"palette.group.commands": "命令",
|
|
85
|
+
"palette.group.files": "文件",
|
|
86
|
+
|
|
87
|
+
"dialog.provider.search.placeholder": "搜索提供商",
|
|
88
|
+
"dialog.provider.empty": "未找到提供商",
|
|
89
|
+
"dialog.provider.group.popular": "热门",
|
|
90
|
+
"dialog.provider.group.other": "其他",
|
|
91
|
+
"dialog.provider.tag.recommended": "推荐",
|
|
92
|
+
"dialog.provider.anthropic.note": "使用 Claude Pro/Max 或 API 密钥连接",
|
|
93
|
+
"dialog.provider.openai.note": "使用 ChatGPT Pro/Plus 或 API 密钥连接",
|
|
94
|
+
"dialog.provider.copilot.note": "使用 Copilot 或 API 密钥连接",
|
|
95
|
+
|
|
96
|
+
"dialog.model.select.title": "选择模型",
|
|
97
|
+
"dialog.model.search.placeholder": "搜索模型",
|
|
98
|
+
"dialog.model.empty": "未找到模型",
|
|
99
|
+
"dialog.model.manage": "管理模型",
|
|
100
|
+
"dialog.model.manage.description": "自定义模型选择器中显示的模型。",
|
|
101
|
+
|
|
102
|
+
"dialog.model.unpaid.freeModels.title": "JonsOC 提供的免费模型",
|
|
103
|
+
"dialog.model.unpaid.addMore.title": "从热门提供商添加更多模型",
|
|
104
|
+
|
|
105
|
+
"dialog.provider.viewAll": "查看全部提供商",
|
|
106
|
+
|
|
107
|
+
"provider.connect.title": "连接 {{provider}}",
|
|
108
|
+
"provider.connect.title.anthropicProMax": "使用 Claude Pro/Max 登录",
|
|
109
|
+
"provider.connect.selectMethod": "选择 {{provider}} 的登录方式。",
|
|
110
|
+
"provider.connect.method.apiKey": "API 密钥",
|
|
111
|
+
"provider.connect.status.inProgress": "正在授权...",
|
|
112
|
+
"provider.connect.status.waiting": "等待授权...",
|
|
113
|
+
"provider.connect.status.failed": "授权失败: {{error}}",
|
|
114
|
+
"provider.connect.apiKey.description":
|
|
115
|
+
"输入你的 {{provider}} API 密钥以连接帐户,并在 JonsOC 中使用 {{provider}} 模型。",
|
|
116
|
+
"provider.connect.apiKey.label": "{{provider}} API 密钥",
|
|
117
|
+
"provider.connect.apiKey.placeholder": "API 密钥",
|
|
118
|
+
"provider.connect.apiKey.required": "API 密钥为必填项",
|
|
119
|
+
"provider.connect.jonsocZen.line1": "JonsOC Zen 为你提供一组精选的可靠优化模型,用于代码智能体。",
|
|
120
|
+
"provider.connect.jonsocZen.line2": "只需一个 API 密钥,你就能使用 Claude、GPT、Gemini、GLM 等模型。",
|
|
121
|
+
"provider.connect.jonsocZen.visit.prefix": "访问 ",
|
|
122
|
+
"provider.connect.jonsocZen.visit.suffix": " 获取你的 API 密钥。",
|
|
123
|
+
"provider.connect.oauth.code.visit.prefix": "访问 ",
|
|
124
|
+
"provider.connect.oauth.code.visit.link": "此链接",
|
|
125
|
+
"provider.connect.oauth.code.visit.suffix": " 获取授权码,以连接你的帐户并在 JonsOC 中使用 {{provider}} 模型。",
|
|
126
|
+
"provider.connect.oauth.code.label": "{{method}} 授权码",
|
|
127
|
+
"provider.connect.oauth.code.placeholder": "授权码",
|
|
128
|
+
"provider.connect.oauth.code.required": "授权码为必填项",
|
|
129
|
+
"provider.connect.oauth.code.invalid": "授权码无效",
|
|
130
|
+
"provider.connect.oauth.auto.visit.prefix": "访问 ",
|
|
131
|
+
"provider.connect.oauth.auto.visit.link": "此链接",
|
|
132
|
+
"provider.connect.oauth.auto.visit.suffix": " 并输入以下代码,以连接你的帐户并在 JonsOC 中使用 {{provider}} 模型。",
|
|
133
|
+
"provider.connect.oauth.auto.confirmationCode": "确认码",
|
|
134
|
+
"provider.connect.toast.connected.title": "{{provider}} 已连接",
|
|
135
|
+
"provider.connect.toast.connected.description": "现在可以使用 {{provider}} 模型了。",
|
|
136
|
+
|
|
137
|
+
"model.tag.free": "免费",
|
|
138
|
+
"model.tag.latest": "最新",
|
|
139
|
+
|
|
140
|
+
"common.search.placeholder": "搜索",
|
|
141
|
+
"common.goBack": "返回",
|
|
142
|
+
"common.loading": "加载中",
|
|
143
|
+
"common.cancel": "取消",
|
|
144
|
+
"common.submit": "提交",
|
|
145
|
+
"common.save": "保存",
|
|
146
|
+
"common.saving": "保存中...",
|
|
147
|
+
"common.default": "默认",
|
|
148
|
+
"common.attachment": "附件",
|
|
149
|
+
|
|
150
|
+
"prompt.placeholder.shell": "输入 shell 命令...",
|
|
151
|
+
"prompt.placeholder.normal": '随便问点什么... "{{example}}"',
|
|
152
|
+
"prompt.mode.shell": "Shell",
|
|
153
|
+
"prompt.mode.shell.exit": "按 esc 退出",
|
|
154
|
+
|
|
155
|
+
"prompt.example.1": "修复代码库中的一个 TODO",
|
|
156
|
+
"prompt.example.2": "这个项目的技术栈是什么?",
|
|
157
|
+
"prompt.example.3": "修复失败的测试",
|
|
158
|
+
"prompt.example.4": "解释认证是如何工作的",
|
|
159
|
+
"prompt.example.5": "查找并修复安全漏洞",
|
|
160
|
+
"prompt.example.6": "为用户服务添加单元测试",
|
|
161
|
+
"prompt.example.7": "重构这个函数,让它更易读",
|
|
162
|
+
"prompt.example.8": "这个错误是什么意思?",
|
|
163
|
+
"prompt.example.9": "帮我调试这个问题",
|
|
164
|
+
"prompt.example.10": "生成 API 文档",
|
|
165
|
+
"prompt.example.11": "优化数据库查询",
|
|
166
|
+
"prompt.example.12": "添加输入校验",
|
|
167
|
+
"prompt.example.13": "创建一个新的组件用于...",
|
|
168
|
+
"prompt.example.14": "我该如何部署这个项目?",
|
|
169
|
+
"prompt.example.15": "审查我的代码并给出最佳实践建议",
|
|
170
|
+
"prompt.example.16": "为这个函数添加错误处理",
|
|
171
|
+
"prompt.example.17": "解释这个正则表达式",
|
|
172
|
+
"prompt.example.18": "把它转换成 TypeScript",
|
|
173
|
+
"prompt.example.19": "在整个代码库中添加日志",
|
|
174
|
+
"prompt.example.20": "哪些依赖已经过期?",
|
|
175
|
+
"prompt.example.21": "帮我写一个迁移脚本",
|
|
176
|
+
"prompt.example.22": "为这个接口实现缓存",
|
|
177
|
+
"prompt.example.23": "给这个列表添加分页",
|
|
178
|
+
"prompt.example.24": "创建一个 CLI 命令用于...",
|
|
179
|
+
"prompt.example.25": "这里的环境变量是怎么工作的?",
|
|
180
|
+
|
|
181
|
+
"prompt.popover.emptyResults": "没有匹配的结果",
|
|
182
|
+
"prompt.popover.emptyCommands": "没有匹配的命令",
|
|
183
|
+
"prompt.dropzone.label": "将图片或 PDF 拖到这里",
|
|
184
|
+
"prompt.slash.badge.custom": "自定义",
|
|
185
|
+
"prompt.context.active": "当前",
|
|
186
|
+
"prompt.context.includeActiveFile": "包含当前文件",
|
|
187
|
+
"prompt.context.removeActiveFile": "从上下文移除活动文件",
|
|
188
|
+
"prompt.context.removeFile": "从上下文移除文件",
|
|
189
|
+
"prompt.action.attachFile": "附加文件",
|
|
190
|
+
"prompt.attachment.remove": "移除附件",
|
|
191
|
+
"prompt.action.send": "发送",
|
|
192
|
+
"prompt.action.stop": "停止",
|
|
193
|
+
|
|
194
|
+
"prompt.toast.pasteUnsupported.title": "不支持的粘贴",
|
|
195
|
+
"prompt.toast.pasteUnsupported.description": "这里只能粘贴图片或 PDF 文件。",
|
|
196
|
+
"prompt.toast.modelAgentRequired.title": "请选择智能体和模型",
|
|
197
|
+
"prompt.toast.modelAgentRequired.description": "发送提示前请先选择智能体和模型。",
|
|
198
|
+
"prompt.toast.worktreeCreateFailed.title": "创建工作树失败",
|
|
199
|
+
"prompt.toast.sessionCreateFailed.title": "创建会话失败",
|
|
200
|
+
"prompt.toast.shellSendFailed.title": "发送 shell 命令失败",
|
|
201
|
+
"prompt.toast.commandSendFailed.title": "发送命令失败",
|
|
202
|
+
"prompt.toast.promptSendFailed.title": "发送提示失败",
|
|
203
|
+
|
|
204
|
+
"dialog.mcp.title": "MCPs",
|
|
205
|
+
"dialog.mcp.description": "已启用 {{enabled}} / {{total}}",
|
|
206
|
+
"dialog.mcp.empty": "未配置 MCPs",
|
|
207
|
+
|
|
208
|
+
"mcp.status.connected": "已连接",
|
|
209
|
+
"mcp.status.failed": "失败",
|
|
210
|
+
"mcp.status.needs_auth": "需要授权",
|
|
211
|
+
"mcp.status.disabled": "已禁用",
|
|
212
|
+
|
|
213
|
+
"dialog.fork.empty": "没有可用于分叉的消息",
|
|
214
|
+
|
|
215
|
+
"dialog.directory.search.placeholder": "搜索文件夹",
|
|
216
|
+
"dialog.directory.empty": "未找到文件夹",
|
|
217
|
+
|
|
218
|
+
"dialog.server.title": "服务器",
|
|
219
|
+
"dialog.server.description": "切换此应用连接的 JonsOC 服务器。",
|
|
220
|
+
"dialog.server.search.placeholder": "搜索服务器",
|
|
221
|
+
"dialog.server.empty": "暂无服务器",
|
|
222
|
+
"dialog.server.add.title": "添加服务器",
|
|
223
|
+
"dialog.server.add.url": "服务器 URL",
|
|
224
|
+
"dialog.server.add.placeholder": "http://localhost:4096",
|
|
225
|
+
"dialog.server.add.error": "无法连接到服务器",
|
|
226
|
+
"dialog.server.add.checking": "检查中...",
|
|
227
|
+
"dialog.server.add.button": "添加",
|
|
228
|
+
"dialog.server.default.title": "默认服务器",
|
|
229
|
+
"dialog.server.default.description": "应用启动时连接此服务器,而不是启动本地服务器。需要重启。",
|
|
230
|
+
"dialog.server.default.none": "未选择服务器",
|
|
231
|
+
"dialog.server.default.set": "将当前服务器设为默认",
|
|
232
|
+
"dialog.server.default.clear": "清除",
|
|
233
|
+
"dialog.server.action.remove": "移除服务器",
|
|
234
|
+
|
|
235
|
+
"dialog.project.edit.title": "编辑项目",
|
|
236
|
+
"dialog.project.edit.name": "名称",
|
|
237
|
+
"dialog.project.edit.icon": "图标",
|
|
238
|
+
"dialog.project.edit.icon.alt": "项目图标",
|
|
239
|
+
"dialog.project.edit.icon.hint": "点击或拖拽图片",
|
|
240
|
+
"dialog.project.edit.icon.recommended": "建议:128x128px",
|
|
241
|
+
"dialog.project.edit.color": "颜色",
|
|
242
|
+
"dialog.project.edit.color.select": "选择{{color}}颜色",
|
|
243
|
+
|
|
244
|
+
"context.breakdown.title": "上下文拆分",
|
|
245
|
+
"context.breakdown.note": "输入 token 的大致拆分。“其他”包含工具定义和开销。",
|
|
246
|
+
"context.breakdown.system": "系统",
|
|
247
|
+
"context.breakdown.user": "用户",
|
|
248
|
+
"context.breakdown.assistant": "助手",
|
|
249
|
+
"context.breakdown.tool": "工具调用",
|
|
250
|
+
"context.breakdown.other": "其他",
|
|
251
|
+
|
|
252
|
+
"context.systemPrompt.title": "系统提示词",
|
|
253
|
+
"context.rawMessages.title": "原始消息",
|
|
254
|
+
|
|
255
|
+
"context.stats.session": "会话",
|
|
256
|
+
"context.stats.messages": "消息数",
|
|
257
|
+
"context.stats.provider": "提供商",
|
|
258
|
+
"context.stats.model": "模型",
|
|
259
|
+
"context.stats.limit": "上下文限制",
|
|
260
|
+
"context.stats.totalTokens": "总 token",
|
|
261
|
+
"context.stats.usage": "使用率",
|
|
262
|
+
"context.stats.inputTokens": "输入 token",
|
|
263
|
+
"context.stats.outputTokens": "输出 token",
|
|
264
|
+
"context.stats.reasoningTokens": "推理 token",
|
|
265
|
+
"context.stats.cacheTokens": "缓存 token(读/写)",
|
|
266
|
+
"context.stats.userMessages": "用户消息",
|
|
267
|
+
"context.stats.assistantMessages": "助手消息",
|
|
268
|
+
"context.stats.totalCost": "总成本",
|
|
269
|
+
"context.stats.sessionCreated": "创建时间",
|
|
270
|
+
"context.stats.lastActivity": "最后活动",
|
|
271
|
+
|
|
272
|
+
"context.usage.tokens": "Token",
|
|
273
|
+
"context.usage.usage": "使用率",
|
|
274
|
+
"context.usage.cost": "成本",
|
|
275
|
+
"context.usage.clickToView": "点击查看上下文",
|
|
276
|
+
"context.usage.view": "查看上下文用量",
|
|
277
|
+
|
|
278
|
+
"language.en": "英语",
|
|
279
|
+
"language.zh": "简体中文",
|
|
280
|
+
"language.zht": "繁体中文",
|
|
281
|
+
"language.ko": "韩语",
|
|
282
|
+
"language.de": "德语",
|
|
283
|
+
"language.es": "西班牙语",
|
|
284
|
+
"language.fr": "法语",
|
|
285
|
+
"language.ja": "日语",
|
|
286
|
+
"language.da": "丹麦语",
|
|
287
|
+
"language.ru": "俄语",
|
|
288
|
+
"language.pl": "波兰语",
|
|
289
|
+
"language.ar": "阿拉伯语",
|
|
290
|
+
"language.no": "挪威语",
|
|
291
|
+
"language.br": "葡萄牙语(巴西)",
|
|
292
|
+
|
|
293
|
+
"toast.language.title": "语言",
|
|
294
|
+
"toast.language.description": "已切换到{{language}}",
|
|
295
|
+
|
|
296
|
+
"toast.theme.title": "主题已切换",
|
|
297
|
+
"toast.scheme.title": "配色方案",
|
|
298
|
+
|
|
299
|
+
"toast.permissions.autoaccept.on.title": "自动接受编辑",
|
|
300
|
+
"toast.permissions.autoaccept.on.description": "编辑和写入权限将自动获批",
|
|
301
|
+
"toast.permissions.autoaccept.off.title": "已停止自动接受编辑",
|
|
302
|
+
"toast.permissions.autoaccept.off.description": "编辑和写入权限将需要手动批准",
|
|
303
|
+
|
|
304
|
+
"toast.model.none.title": "未选择模型",
|
|
305
|
+
"toast.model.none.description": "请先连接提供商以总结此会话",
|
|
306
|
+
|
|
307
|
+
"toast.file.loadFailed.title": "加载文件失败",
|
|
308
|
+
|
|
309
|
+
"toast.session.share.copyFailed.title": "无法复制链接到剪贴板",
|
|
310
|
+
"toast.session.share.success.title": "会话已分享",
|
|
311
|
+
"toast.session.share.success.description": "分享链接已复制到剪贴板",
|
|
312
|
+
"toast.session.share.failed.title": "分享会话失败",
|
|
313
|
+
"toast.session.share.failed.description": "分享会话时发生错误",
|
|
314
|
+
|
|
315
|
+
"toast.session.unshare.success.title": "已取消分享会话",
|
|
316
|
+
"toast.session.unshare.success.description": "会话已成功取消分享",
|
|
317
|
+
"toast.session.unshare.failed.title": "取消分享失败",
|
|
318
|
+
"toast.session.unshare.failed.description": "取消分享会话时发生错误",
|
|
319
|
+
|
|
320
|
+
"toast.session.listFailed.title": "无法加载 {{project}} 的会话",
|
|
321
|
+
|
|
322
|
+
"toast.update.title": "有可用更新",
|
|
323
|
+
"toast.update.description": "JonsOC 有新版本 ({{version}}) 可安装。",
|
|
324
|
+
"toast.update.action.installRestart": "安装并重启",
|
|
325
|
+
"toast.update.action.notYet": "稍后",
|
|
326
|
+
|
|
327
|
+
"error.page.title": "出了点问题",
|
|
328
|
+
"error.page.description": "加载应用程序时发生错误。",
|
|
329
|
+
"error.page.details.label": "错误详情",
|
|
330
|
+
"error.page.action.restart": "重启",
|
|
331
|
+
"error.page.action.checking": "检查中...",
|
|
332
|
+
"error.page.action.checkUpdates": "检查更新",
|
|
333
|
+
"error.page.action.updateTo": "更新到 {{version}}",
|
|
334
|
+
"error.page.report.prefix": "请将此错误报告给 JonsOC 团队",
|
|
335
|
+
"error.page.report.discord": "在 Discord 上",
|
|
336
|
+
"error.page.version": "版本: {{version}}",
|
|
337
|
+
|
|
338
|
+
"error.dev.rootNotFound": "未找到根元素。你是不是忘了把它添加到 index.html? 或者 id 属性拼写错了?",
|
|
339
|
+
|
|
340
|
+
"error.globalSync.connectFailed": "无法连接到服务器。是否有服务器正在 `{{url}}` 运行?",
|
|
341
|
+
|
|
342
|
+
"error.chain.unknown": "未知错误",
|
|
343
|
+
"error.chain.causedBy": "原因:",
|
|
344
|
+
"error.chain.apiError": "API 错误",
|
|
345
|
+
"error.chain.status": "状态: {{status}}",
|
|
346
|
+
"error.chain.retryable": "可重试: {{retryable}}",
|
|
347
|
+
"error.chain.responseBody": "响应内容:\n{{body}}",
|
|
348
|
+
"error.chain.didYouMean": "你是不是想输入: {{suggestions}}",
|
|
349
|
+
"error.chain.modelNotFound": "未找到模型: {{provider}}/{{model}}",
|
|
350
|
+
"error.chain.checkConfig": "请检查你的配置 (jonsoc.json) 中的 provider/model 名称",
|
|
351
|
+
"error.chain.mcpFailed": 'MCP 服务器 "{{name}}" 启动失败。注意: JonsOC 暂不支持 MCP 认证。',
|
|
352
|
+
"error.chain.providerAuthFailed": "提供商认证失败 ({{provider}}): {{message}}",
|
|
353
|
+
"error.chain.providerInitFailed": '无法初始化提供商 "{{provider}}"。请检查凭据和配置。',
|
|
354
|
+
"error.chain.configJsonInvalid": "配置文件 {{path}} 不是有效的 JSON(C)",
|
|
355
|
+
"error.chain.configJsonInvalidWithMessage": "配置文件 {{path}} 不是有效的 JSON(C): {{message}}",
|
|
356
|
+
"error.chain.configDirectoryTypo":
|
|
357
|
+
'{{path}} 中的目录 "{{dir}}" 无效。请将目录重命名为 "{{suggestion}}" 或移除它。这是一个常见拼写错误。',
|
|
358
|
+
"error.chain.configFrontmatterError": "无法解析 {{path}} 中的 frontmatter:\n{{message}}",
|
|
359
|
+
"error.chain.configInvalid": "配置文件 {{path}} 无效",
|
|
360
|
+
"error.chain.configInvalidWithMessage": "配置文件 {{path}} 无效: {{message}}",
|
|
361
|
+
|
|
362
|
+
"notification.permission.title": "需要权限",
|
|
363
|
+
"notification.permission.description": "{{sessionTitle}}({{projectName}})需要权限",
|
|
364
|
+
"notification.question.title": "问题",
|
|
365
|
+
"notification.question.description": "{{sessionTitle}}({{projectName}})有一个问题",
|
|
366
|
+
"notification.action.goToSession": "前往会话",
|
|
367
|
+
|
|
368
|
+
"notification.session.responseReady.title": "回复已就绪",
|
|
369
|
+
"notification.session.error.title": "会话错误",
|
|
370
|
+
"notification.session.error.fallbackDescription": "发生错误",
|
|
371
|
+
|
|
372
|
+
"home.recentProjects": "最近项目",
|
|
373
|
+
"home.empty.title": "没有最近项目",
|
|
374
|
+
"home.empty.description": "通过打开本地项目开始使用",
|
|
375
|
+
|
|
376
|
+
"session.tab.session": "会话",
|
|
377
|
+
"session.tab.review": "审查",
|
|
378
|
+
"session.tab.context": "上下文",
|
|
379
|
+
"session.panel.reviewAndFiles": "审查和文件",
|
|
380
|
+
"session.review.filesChanged": "{{count}} 个文件变更",
|
|
381
|
+
"session.review.loadingChanges": "正在加载更改...",
|
|
382
|
+
"session.review.empty": "此会话暂无更改",
|
|
383
|
+
"session.messages.renderEarlier": "显示更早的消息",
|
|
384
|
+
"session.messages.loadingEarlier": "正在加载更早的消息...",
|
|
385
|
+
"session.messages.loadEarlier": "加载更早的消息",
|
|
386
|
+
"session.messages.loading": "正在加载消息...",
|
|
387
|
+
|
|
388
|
+
"session.context.addToContext": "将 {{selection}} 添加到上下文",
|
|
389
|
+
|
|
390
|
+
"session.new.worktree.main": "主分支",
|
|
391
|
+
"session.new.worktree.mainWithBranch": "主分支 ({{branch}})",
|
|
392
|
+
"session.new.worktree.create": "创建新的 worktree",
|
|
393
|
+
"session.new.lastModified": "最后修改",
|
|
394
|
+
|
|
395
|
+
"session.header.search.placeholder": "搜索 {{project}}",
|
|
396
|
+
"session.header.searchFiles": "搜索文件",
|
|
397
|
+
|
|
398
|
+
"session.share.popover.title": "发布到网页",
|
|
399
|
+
"session.share.popover.description.shared": "此会话已在网页上公开。任何拥有链接的人都可以访问。",
|
|
400
|
+
"session.share.popover.description.unshared": "在网页上公开分享此会话。任何拥有链接的人都可以访问。",
|
|
401
|
+
"session.share.action.share": "分享",
|
|
402
|
+
"session.share.action.publish": "发布",
|
|
403
|
+
"session.share.action.publishing": "正在发布...",
|
|
404
|
+
"session.share.action.unpublish": "取消发布",
|
|
405
|
+
"session.share.action.unpublishing": "正在取消发布...",
|
|
406
|
+
"session.share.action.view": "查看",
|
|
407
|
+
"session.share.copy.copied": "已复制",
|
|
408
|
+
"session.share.copy.copyLink": "复制链接",
|
|
409
|
+
|
|
410
|
+
"lsp.tooltip.none": "没有 LSP 服务器",
|
|
411
|
+
"lsp.label.connected": "{{count}} LSP",
|
|
412
|
+
|
|
413
|
+
"prompt.loading": "正在加载提示...",
|
|
414
|
+
"terminal.loading": "正在加载终端...",
|
|
415
|
+
"terminal.title": "终端",
|
|
416
|
+
"terminal.title.numbered": "终端 {{number}}",
|
|
417
|
+
"terminal.close": "关闭终端",
|
|
418
|
+
|
|
419
|
+
"common.closeTab": "关闭标签页",
|
|
420
|
+
"common.dismiss": "忽略",
|
|
421
|
+
"common.requestFailed": "请求失败",
|
|
422
|
+
"common.moreOptions": "更多选项",
|
|
423
|
+
"common.learnMore": "了解更多",
|
|
424
|
+
"common.rename": "重命名",
|
|
425
|
+
"common.reset": "重置",
|
|
426
|
+
"common.archive": "归档",
|
|
427
|
+
"common.delete": "删除",
|
|
428
|
+
"common.close": "关闭",
|
|
429
|
+
"common.edit": "编辑",
|
|
430
|
+
"common.loadMore": "加载更多",
|
|
431
|
+
|
|
432
|
+
"sidebar.nav.projectsAndSessions": "项目和会话",
|
|
433
|
+
"sidebar.settings": "设置",
|
|
434
|
+
"sidebar.help": "帮助",
|
|
435
|
+
"sidebar.workspaces.enable": "启用工作区",
|
|
436
|
+
"sidebar.workspaces.disable": "禁用工作区",
|
|
437
|
+
"sidebar.gettingStarted.title": "入门",
|
|
438
|
+
"sidebar.gettingStarted.line1": "JonsOC 提供免费模型,你可以立即开始使用。",
|
|
439
|
+
"sidebar.gettingStarted.line2": "连接任意提供商即可使用更多模型,如 Claude、GPT、Gemini 等。",
|
|
440
|
+
"sidebar.project.recentSessions": "最近会话",
|
|
441
|
+
"sidebar.project.viewAllSessions": "查看全部会话",
|
|
442
|
+
|
|
443
|
+
"settings.section.desktop": "桌面",
|
|
444
|
+
"settings.tab.general": "通用",
|
|
445
|
+
"settings.tab.shortcuts": "快捷键",
|
|
446
|
+
|
|
447
|
+
"settings.general.section.appearance": "外观",
|
|
448
|
+
"settings.general.section.notifications": "系统通知",
|
|
449
|
+
"settings.general.section.sounds": "音效",
|
|
450
|
+
|
|
451
|
+
"settings.general.row.language.title": "语言",
|
|
452
|
+
"settings.general.row.language.description": "更改 JonsOC 的显示语言",
|
|
453
|
+
"settings.general.row.appearance.title": "外观",
|
|
454
|
+
"settings.general.row.appearance.description": "自定义 JonsOC 在你的设备上的外观",
|
|
455
|
+
"settings.general.row.theme.title": "主题",
|
|
456
|
+
"settings.general.row.theme.description": "自定义 JonsOC 的主题。",
|
|
457
|
+
"settings.general.row.font.title": "字体",
|
|
458
|
+
"settings.general.row.font.description": "自定义代码块使用的等宽字体",
|
|
459
|
+
|
|
460
|
+
"settings.general.notifications.agent.title": "智能体",
|
|
461
|
+
"settings.general.notifications.agent.description": "当智能体完成或需要注意时显示系统通知",
|
|
462
|
+
"settings.general.notifications.permissions.title": "权限",
|
|
463
|
+
"settings.general.notifications.permissions.description": "当需要权限时显示系统通知",
|
|
464
|
+
"settings.general.notifications.errors.title": "错误",
|
|
465
|
+
"settings.general.notifications.errors.description": "发生错误时显示系统通知",
|
|
466
|
+
|
|
467
|
+
"settings.general.sounds.agent.title": "智能体",
|
|
468
|
+
"settings.general.sounds.agent.description": "当智能体完成或需要注意时播放声音",
|
|
469
|
+
"settings.general.sounds.permissions.title": "权限",
|
|
470
|
+
"settings.general.sounds.permissions.description": "当需要权限时播放声音",
|
|
471
|
+
"settings.general.sounds.errors.title": "错误",
|
|
472
|
+
"settings.general.sounds.errors.description": "发生错误时播放声音",
|
|
473
|
+
|
|
474
|
+
"settings.shortcuts.title": "键盘快捷键",
|
|
475
|
+
"settings.shortcuts.reset.button": "重置为默认值",
|
|
476
|
+
"settings.shortcuts.reset.toast.title": "快捷键已重置",
|
|
477
|
+
"settings.shortcuts.reset.toast.description": "键盘快捷键已重置为默认设置。",
|
|
478
|
+
"settings.shortcuts.conflict.title": "快捷键已被占用",
|
|
479
|
+
"settings.shortcuts.conflict.description": "{{keybind}} 已分配给 {{titles}}。",
|
|
480
|
+
"settings.shortcuts.unassigned": "未设置",
|
|
481
|
+
"settings.shortcuts.pressKeys": "按下按键",
|
|
482
|
+
"settings.shortcuts.search.placeholder": "搜索快捷键",
|
|
483
|
+
"settings.shortcuts.search.empty": "未找到快捷键",
|
|
484
|
+
|
|
485
|
+
"settings.shortcuts.group.general": "通用",
|
|
486
|
+
"settings.shortcuts.group.session": "会话",
|
|
487
|
+
"settings.shortcuts.group.navigation": "导航",
|
|
488
|
+
"settings.shortcuts.group.modelAndAgent": "模型与智能体",
|
|
489
|
+
"settings.shortcuts.group.terminal": "终端",
|
|
490
|
+
"settings.shortcuts.group.prompt": "提示",
|
|
491
|
+
|
|
492
|
+
"settings.providers.title": "提供商",
|
|
493
|
+
"settings.providers.description": "提供商设置将在此处可配置。",
|
|
494
|
+
"settings.models.title": "模型",
|
|
495
|
+
"settings.models.description": "模型设置将在此处可配置。",
|
|
496
|
+
"settings.agents.title": "智能体",
|
|
497
|
+
"settings.agents.description": "智能体设置将在此处可配置。",
|
|
498
|
+
"settings.commands.title": "命令",
|
|
499
|
+
"settings.commands.description": "命令设置将在此处可配置。",
|
|
500
|
+
"settings.mcp.title": "MCP",
|
|
501
|
+
"settings.mcp.description": "MCP 设置将在此处可配置。",
|
|
502
|
+
|
|
503
|
+
"settings.permissions.title": "权限",
|
|
504
|
+
"settings.permissions.description": "控制服务器默认可以使用哪些工具。",
|
|
505
|
+
"settings.permissions.section.tools": "工具",
|
|
506
|
+
"settings.permissions.toast.updateFailed.title": "更新权限失败",
|
|
507
|
+
|
|
508
|
+
"settings.permissions.action.allow": "允许",
|
|
509
|
+
"settings.permissions.action.ask": "询问",
|
|
510
|
+
"settings.permissions.action.deny": "拒绝",
|
|
511
|
+
|
|
512
|
+
"settings.permissions.tool.read.title": "读取",
|
|
513
|
+
"settings.permissions.tool.read.description": "读取文件(匹配文件路径)",
|
|
514
|
+
"settings.permissions.tool.edit.title": "编辑",
|
|
515
|
+
"settings.permissions.tool.edit.description": "修改文件,包括编辑、写入、补丁和多重编辑",
|
|
516
|
+
"settings.permissions.tool.glob.title": "Glob",
|
|
517
|
+
"settings.permissions.tool.glob.description": "使用 glob 模式匹配文件",
|
|
518
|
+
"settings.permissions.tool.grep.title": "Grep",
|
|
519
|
+
"settings.permissions.tool.grep.description": "使用正则表达式搜索文件内容",
|
|
520
|
+
"settings.permissions.tool.list.title": "列表",
|
|
521
|
+
"settings.permissions.tool.list.description": "列出目录中的文件",
|
|
522
|
+
"settings.permissions.tool.bash.title": "Bash",
|
|
523
|
+
"settings.permissions.tool.bash.description": "运行 shell 命令",
|
|
524
|
+
"settings.permissions.tool.task.title": "Task",
|
|
525
|
+
"settings.permissions.tool.task.description": "启动子智能体",
|
|
526
|
+
"settings.permissions.tool.skill.title": "Skill",
|
|
527
|
+
"settings.permissions.tool.skill.description": "按名称加载技能",
|
|
528
|
+
"settings.permissions.tool.lsp.title": "LSP",
|
|
529
|
+
"settings.permissions.tool.lsp.description": "运行语言服务器查询",
|
|
530
|
+
"settings.permissions.tool.todoread.title": "读取待办",
|
|
531
|
+
"settings.permissions.tool.todoread.description": "读取待办列表",
|
|
532
|
+
"settings.permissions.tool.todowrite.title": "更新待办",
|
|
533
|
+
"settings.permissions.tool.todowrite.description": "更新待办列表",
|
|
534
|
+
"settings.permissions.tool.webfetch.title": "Web Fetch",
|
|
535
|
+
"settings.permissions.tool.webfetch.description": "从 URL 获取内容",
|
|
536
|
+
"settings.permissions.tool.websearch.title": "Web Search",
|
|
537
|
+
"settings.permissions.tool.websearch.description": "搜索网页",
|
|
538
|
+
"settings.permissions.tool.codesearch.title": "Code Search",
|
|
539
|
+
"settings.permissions.tool.codesearch.description": "在网上搜索代码",
|
|
540
|
+
"settings.permissions.tool.external_directory.title": "外部目录",
|
|
541
|
+
"settings.permissions.tool.external_directory.description": "访问项目目录之外的文件",
|
|
542
|
+
"settings.permissions.tool.doom_loop.title": "Doom Loop",
|
|
543
|
+
"settings.permissions.tool.doom_loop.description": "检测具有相同输入的重复工具调用",
|
|
544
|
+
|
|
545
|
+
"session.delete.failed.title": "删除会话失败",
|
|
546
|
+
"session.delete.title": "删除会话",
|
|
547
|
+
"session.delete.confirm": '删除会话 "{{name}}"?',
|
|
548
|
+
"session.delete.button": "删除会话",
|
|
549
|
+
|
|
550
|
+
"workspace.new": "新建工作区",
|
|
551
|
+
"workspace.type.local": "本地",
|
|
552
|
+
"workspace.type.sandbox": "沙盒",
|
|
553
|
+
"workspace.create.failed.title": "创建工作区失败",
|
|
554
|
+
"workspace.delete.failed.title": "删除工作区失败",
|
|
555
|
+
"workspace.resetting.title": "正在重置工作区",
|
|
556
|
+
"workspace.resetting.description": "这可能需要一点时间。",
|
|
557
|
+
"workspace.reset.failed.title": "重置工作区失败",
|
|
558
|
+
"workspace.reset.success.title": "工作区已重置",
|
|
559
|
+
"workspace.reset.success.description": "工作区已与默认分支保持一致。",
|
|
560
|
+
"workspace.status.checking": "正在检查未合并的更改...",
|
|
561
|
+
"workspace.status.error": "无法验证 git 状态。",
|
|
562
|
+
"workspace.status.clean": "未检测到未合并的更改。",
|
|
563
|
+
"workspace.status.dirty": "检测到未合并的更改。",
|
|
564
|
+
"workspace.delete.title": "删除工作区",
|
|
565
|
+
"workspace.delete.confirm": '删除工作区 "{{name}}"?',
|
|
566
|
+
"workspace.delete.button": "删除工作区",
|
|
567
|
+
"workspace.reset.title": "重置工作区",
|
|
568
|
+
"workspace.reset.confirm": '重置工作区 "{{name}}"?',
|
|
569
|
+
"workspace.reset.button": "重置工作区",
|
|
570
|
+
"workspace.reset.archived.none": "不会归档任何活跃会话。",
|
|
571
|
+
"workspace.reset.archived.one": "将归档 1 个会话。",
|
|
572
|
+
"workspace.reset.archived.many": "将归档 {{count}} 个会话。",
|
|
573
|
+
"workspace.reset.note": "这将把工作区重置为与默认分支一致。",
|
|
574
|
+
} satisfies Partial<Record<Keys, string>>
|