@opencode-ai/ui 1.18.12 → 1.18.13
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/context/i18n.d.ts +10 -1
- package/dist/context/marked-parser.d.ts +2 -0
- package/dist/context/marked-theme-register.d.ts +1 -0
- package/dist/context/marked-theme.d.ts +2 -0
- package/dist/context/marked.d.ts +2 -9
- package/dist/i18n/ar.d.ts +38 -0
- package/dist/i18n/az.d.ts +1 -0
- package/dist/i18n/br.d.ts +26 -0
- package/dist/i18n/bs.d.ts +26 -0
- package/dist/i18n/da.d.ts +22 -0
- package/dist/i18n/de.d.ts +22 -0
- package/dist/i18n/es.d.ts +26 -0
- package/dist/i18n/fi.d.ts +1 -0
- package/dist/i18n/fr.d.ts +26 -0
- package/dist/i18n/hi.d.ts +1 -0
- package/dist/i18n/id.d.ts +1 -0
- package/dist/i18n/it.d.ts +1 -0
- package/dist/i18n/ja.d.ts +22 -0
- package/dist/i18n/ko.d.ts +22 -0
- package/dist/i18n/nl.d.ts +1 -0
- package/dist/i18n/pa.d.ts +1 -0
- package/dist/i18n/pl.d.ts +30 -0
- package/dist/i18n/ru.d.ts +30 -0
- package/dist/i18n/sv.d.ts +1 -0
- package/dist/i18n/th.d.ts +22 -0
- package/dist/i18n/tr.d.ts +22 -0
- package/dist/i18n/ur.d.ts +1 -0
- package/dist/i18n/vi.d.ts +1 -0
- package/dist/i18n/zh.d.ts +22 -0
- package/dist/i18n/zht.d.ts +22 -0
- package/package.json +2 -3
- package/src/components/diff-changes.css +2 -0
- package/src/components/dropdown-menu.css +2 -2
- package/src/components/icon.css +5 -0
- package/src/components/icon.tsx +12 -1
- package/src/components/resize-handle.css +14 -2
- package/src/components/resize-handle.tsx +5 -1
- package/src/components/scroll-view.css +1 -1
- package/src/components/select.css +5 -3
- package/src/components/switch.css +4 -0
- package/src/components/tabs.css +54 -26
- package/src/components/tabs.tsx +1 -0
- package/src/components/text-field.css +2 -2
- package/src/components/toast.css +1 -1
- package/src/context/i18n.tsx +38 -2
- package/src/context/marked-parser.tsx +68 -0
- package/src/context/marked-theme-register.tsx +10 -0
- package/src/context/marked-theme.tsx +372 -0
- package/src/context/marked.tsx +20 -562
- package/src/i18n/ar.ts +62 -22
- package/src/i18n/az.ts +197 -0
- package/src/i18n/br.ts +34 -6
- package/src/i18n/bs.ts +51 -23
- package/src/i18n/da.ts +36 -12
- package/src/i18n/de.ts +58 -36
- package/src/i18n/en.ts +24 -0
- package/src/i18n/es.ts +45 -17
- package/src/i18n/fi.ts +197 -0
- package/src/i18n/fr.ts +51 -21
- package/src/i18n/hi.ts +199 -0
- package/src/i18n/id.ts +219 -0
- package/src/i18n/it.ts +202 -0
- package/src/i18n/ja.ts +29 -5
- package/src/i18n/ko.ts +36 -12
- package/src/i18n/nl.ts +197 -0
- package/src/i18n/no.ts +47 -23
- package/src/i18n/pa.ts +198 -0
- package/src/i18n/pl.ts +57 -24
- package/src/i18n/ru.ts +55 -23
- package/src/i18n/sv.ts +197 -0
- package/src/i18n/th.ts +44 -21
- package/src/i18n/tr.ts +49 -25
- package/src/i18n/uk.ts +47 -15
- package/src/i18n/ur.ts +198 -0
- package/src/i18n/vi.ts +197 -0
- package/src/i18n/zh.ts +52 -29
- package/src/i18n/zht.ts +45 -22
- package/src/v2/components/dialog-v2.css +2 -2
- package/src/v2/components/dialog-v2.tsx +3 -1
- package/src/v2/components/diff-changes-v2.css +2 -0
- package/src/v2/components/file-tree-v2.css +6 -2
- package/src/v2/components/inline-input-v2.tsx +3 -1
- package/src/v2/components/line-comment-v2.css +1 -1
- package/src/v2/components/line-comment-v2.tsx +6 -4
- package/src/v2/components/select-v2.css +16 -5
- package/src/v2/components/switch-v2.css +8 -0
- package/src/v2/components/tabs-v2.css +4 -4
- package/src/v2/components/tabs-v2.tsx +4 -2
- package/src/v2/components/text-input-v2.css +7 -5
- package/src/v2/components/text-input-v2.tsx +7 -1
- package/src/v2/components/toast-v2.tsx +8 -4
- package/dist/context/marked-code-span.d.ts +0 -10
- package/src/context/marked-code-span.ts +0 -17
package/src/i18n/zh.ts
CHANGED
|
@@ -7,8 +7,8 @@ export const dict = {
|
|
|
7
7
|
"ui.sessionReview.title.git": "Git 变更",
|
|
8
8
|
"ui.sessionReview.title.branch": "分支变更",
|
|
9
9
|
"ui.sessionReview.title.lastTurn": "上一轮变更",
|
|
10
|
-
"ui.sessionReview.diffStyle.unified": "
|
|
11
|
-
"ui.sessionReview.diffStyle.split": "
|
|
10
|
+
"ui.sessionReview.diffStyle.unified": "统一视图",
|
|
11
|
+
"ui.sessionReview.diffStyle.split": "并排视图",
|
|
12
12
|
"ui.sessionReview.openFile": "打开文件",
|
|
13
13
|
"ui.sessionReview.selection.line": "第 {{line}} 行",
|
|
14
14
|
"ui.sessionReview.selection.lines": "第 {{start}}-{{end}} 行",
|
|
@@ -26,9 +26,9 @@ export const dict = {
|
|
|
26
26
|
"ui.sessionReviewV2.filterFiles": "筛选文件",
|
|
27
27
|
"ui.sessionReviewV2.toggleSidebar": "切换文件树",
|
|
28
28
|
"ui.sessionReviewV2.showAllLines": "显示所有行",
|
|
29
|
-
"ui.sessionReviewV2.hideNonDiffLines": "
|
|
30
|
-
"ui.sessionReviewV2.unifiedDiff": "
|
|
31
|
-
"ui.sessionReviewV2.splitDiff": "
|
|
29
|
+
"ui.sessionReviewV2.hideNonDiffLines": "隐藏未更改的行",
|
|
30
|
+
"ui.sessionReviewV2.unifiedDiff": "统一格式差异",
|
|
31
|
+
"ui.sessionReviewV2.splitDiff": "并排差异",
|
|
32
32
|
"ui.sessionReviewV2.previousFile": "上一个文件",
|
|
33
33
|
"ui.sessionReviewV2.nextFile": "下一个文件",
|
|
34
34
|
"ui.sessionReviewV2.diffView": "差异视图",
|
|
@@ -48,38 +48,38 @@ export const dict = {
|
|
|
48
48
|
"ui.fileMedia.binary.description.path": "无法显示 {{path}},因为它是二进制文件。",
|
|
49
49
|
"ui.fileMedia.binary.description.default": "无法显示此文件,因为它是二进制文件。",
|
|
50
50
|
|
|
51
|
-
"ui.lineComment.label.prefix": "评论
|
|
51
|
+
"ui.lineComment.label.prefix": "评论",
|
|
52
52
|
"ui.lineComment.label.suffix": "",
|
|
53
|
-
"ui.lineComment.editorLabel.prefix": "正在评论
|
|
53
|
+
"ui.lineComment.editorLabel.prefix": "正在评论",
|
|
54
54
|
"ui.lineComment.editorLabel.suffix": "",
|
|
55
55
|
"ui.lineComment.placeholder": "添加评论",
|
|
56
|
-
"ui.lineComment.
|
|
56
|
+
"ui.lineComment.contextPlaceholder": "添加此更改的上下文",
|
|
57
|
+
"ui.lineComment.submit": "发布评论",
|
|
57
58
|
"ui.lineComment.cancel": "取消",
|
|
58
59
|
|
|
59
60
|
"ui.sessionTurn.steps.show": "显示步骤",
|
|
60
61
|
"ui.sessionTurn.steps.hide": "隐藏步骤",
|
|
61
62
|
"ui.sessionTurn.summary.response": "回复",
|
|
62
63
|
"ui.sessionTurn.diff.showMore": "显示更多更改({{count}})",
|
|
63
|
-
"ui.sessionTurn.diffs.changed.one": "
|
|
64
|
-
"ui.sessionTurn.diffs.changed.other": "
|
|
64
|
+
"ui.sessionTurn.diffs.changed.one": "{{count}} 个文件已更改",
|
|
65
|
+
"ui.sessionTurn.diffs.changed.other": "{{count}} 个文件已更改",
|
|
65
66
|
"ui.sessionTurn.diffs.showAll": "全部显示",
|
|
66
67
|
"ui.sessionTurn.diffs.showLess": "收起",
|
|
67
68
|
"ui.sessionTurn.diffs.more": "+{{count}} 个文件",
|
|
68
69
|
|
|
69
70
|
"ui.sessionTurn.retry.retrying": "重试中",
|
|
70
71
|
"ui.sessionTurn.retry.inSeconds": "{{seconds}} 秒后",
|
|
71
|
-
"ui.sessionTurn.retry.attempt": "第 {{attempt}}
|
|
72
|
-
"ui.sessionTurn.retry.attemptLine": "{{line}} - 第 {{attempt}}
|
|
73
|
-
"ui.sessionTurn.retry.geminiHot": "
|
|
72
|
+
"ui.sessionTurn.retry.attempt": "第 {{attempt}} 次尝试",
|
|
73
|
+
"ui.sessionTurn.retry.attemptLine": "{{line}} - 第 {{attempt}} 次尝试",
|
|
74
|
+
"ui.sessionTurn.retry.geminiHot": "Gemini 当前负载过高",
|
|
74
75
|
"ui.sessionTurn.error.freeUsageExceeded": "免费使用额度已用完",
|
|
75
|
-
"ui.sessionTurn.error.addCredits": "
|
|
76
|
+
"ui.sessionTurn.error.addCredits": "充值",
|
|
76
77
|
|
|
77
78
|
"dialog.usageExceeded.freeTier.title": "免费额度已用完",
|
|
78
79
|
"dialog.usageExceeded.freeTier.description": "订阅 OpenCode Go,可靠地使用最佳开源模型,每月 $5 起。",
|
|
79
80
|
"dialog.usageExceeded.freeTier.actionLabel": "订阅",
|
|
80
81
|
"dialog.usageExceeded.accountRateLimit.title": "Go 额度已用完",
|
|
81
|
-
"dialog.usageExceeded.accountRateLimit.description":
|
|
82
|
-
"使用额度已达上限。如需现在继续使用此模型,请从可用余额中启用使用",
|
|
82
|
+
"dialog.usageExceeded.accountRateLimit.description": "使用额度已达上限。如需立即继续使用此模型,请启用余额付费",
|
|
83
83
|
"dialog.usageExceeded.accountRateLimit.actionLabel": "打开设置",
|
|
84
84
|
|
|
85
85
|
"ui.sessionTurn.status.delegating": "正在委派工作",
|
|
@@ -101,13 +101,13 @@ export const dict = {
|
|
|
101
101
|
"ui.messagePart.context.read.other": "{{count}} 次读取",
|
|
102
102
|
"ui.messagePart.context.search.one": "{{count}} 次搜索",
|
|
103
103
|
"ui.messagePart.context.search.other": "{{count}} 次搜索",
|
|
104
|
-
"ui.messagePart.context.list.one": "{{count}}
|
|
105
|
-
"ui.messagePart.context.list.other": "{{count}}
|
|
104
|
+
"ui.messagePart.context.list.one": "列出 {{count}} 次",
|
|
105
|
+
"ui.messagePart.context.list.other": "列出 {{count}} 次",
|
|
106
106
|
"ui.messagePart.diagnostic.error": "错误",
|
|
107
107
|
"ui.messagePart.title.edit": "编辑",
|
|
108
108
|
"ui.messagePart.title.write": "写入",
|
|
109
109
|
"ui.messagePart.option.typeOwnAnswer": "输入自己的答案",
|
|
110
|
-
"ui.messagePart.review.title": "
|
|
110
|
+
"ui.messagePart.review.title": "检查你的回答",
|
|
111
111
|
|
|
112
112
|
"ui.list.loading": "加载中",
|
|
113
113
|
"ui.list.empty": "无结果",
|
|
@@ -117,6 +117,25 @@ export const dict = {
|
|
|
117
117
|
|
|
118
118
|
"ui.messageNav.newMessage": "新消息",
|
|
119
119
|
|
|
120
|
+
"ui.promptInput.noMatchingItems": "没有匹配项",
|
|
121
|
+
"ui.promptInput.commands": "命令",
|
|
122
|
+
"ui.promptInput.dropFiles": "拖放文件以添加附件",
|
|
123
|
+
"ui.promptInput.removeAttachment": "移除附件",
|
|
124
|
+
"ui.promptInput.label": "提示词",
|
|
125
|
+
"ui.promptInput.placeholder.shell": "输入 shell 命令...",
|
|
126
|
+
"ui.promptInput.placeholder.normal": "随便问点什么, {{slash}} 可查看命令, {{at}} 可添加上下文...",
|
|
127
|
+
"ui.promptInput.add": "添加图片和文件",
|
|
128
|
+
"ui.promptInput.attachments": "图片和文件",
|
|
129
|
+
"ui.promptInput.context": "上下文",
|
|
130
|
+
"ui.promptInput.shell": "Shell 命令",
|
|
131
|
+
"ui.promptInput.chooseAgent": "选择智能体",
|
|
132
|
+
"ui.promptInput.chooseModel": "选择模型",
|
|
133
|
+
"ui.promptInput.chooseVariant": "选择模型变体",
|
|
134
|
+
"ui.promptInput.send": "发送",
|
|
135
|
+
"ui.promptInput.stop": "停止",
|
|
136
|
+
|
|
137
|
+
"ui.tabs.close": "关闭标签页",
|
|
138
|
+
|
|
120
139
|
"ui.textField.copyToClipboard": "复制到剪贴板",
|
|
121
140
|
"ui.textField.copyLink": "复制链接",
|
|
122
141
|
"ui.textField.copied": "已复制",
|
|
@@ -126,16 +145,18 @@ export const dict = {
|
|
|
126
145
|
|
|
127
146
|
"ui.tool.read": "读取",
|
|
128
147
|
"ui.tool.loaded": "已加载",
|
|
129
|
-
"ui.tool.list": "
|
|
148
|
+
"ui.tool.list": "列出文件",
|
|
130
149
|
"ui.tool.glob": "Glob",
|
|
131
150
|
"ui.tool.grep": "Grep",
|
|
132
151
|
"ui.tool.webfetch": "Webfetch",
|
|
133
|
-
"ui.tool.websearch": "
|
|
152
|
+
"ui.tool.websearch": "网页搜索",
|
|
153
|
+
"ui.tool.websearch.provider": "{{provider}} 网页搜索",
|
|
134
154
|
"ui.tool.shell": "Shell",
|
|
135
155
|
"ui.tool.patch": "补丁",
|
|
136
156
|
"ui.tool.todos": "待办",
|
|
137
157
|
"ui.tool.todos.read": "读取待办",
|
|
138
158
|
"ui.tool.questions": "问题",
|
|
159
|
+
"ui.tool.questions.numbered": "问题 {{number}}",
|
|
139
160
|
"ui.tool.agent": "{{type}} 智能体",
|
|
140
161
|
"ui.tool.agent.default": "智能体",
|
|
141
162
|
|
|
@@ -145,6 +166,8 @@ export const dict = {
|
|
|
145
166
|
"ui.common.question.other": "个问题",
|
|
146
167
|
|
|
147
168
|
"ui.common.add": "添加",
|
|
169
|
+
"ui.common.clear": "清除",
|
|
170
|
+
"ui.common.file": "文件",
|
|
148
171
|
"ui.common.back": "返回",
|
|
149
172
|
"ui.common.cancel": "取消",
|
|
150
173
|
"ui.common.confirm": "确认",
|
|
@@ -162,8 +185,8 @@ export const dict = {
|
|
|
162
185
|
"ui.message.collapse": "收起消息",
|
|
163
186
|
"ui.message.copy": "复制",
|
|
164
187
|
"ui.message.copyMessage": "复制消息",
|
|
165
|
-
"ui.message.forkMessage": "
|
|
166
|
-
"ui.message.revertMessage": "
|
|
188
|
+
"ui.message.forkMessage": "从此消息创建新会话",
|
|
189
|
+
"ui.message.revertMessage": "撤销此消息",
|
|
167
190
|
"ui.message.copyResponse": "复制回复",
|
|
168
191
|
"ui.message.copied": "已复制!",
|
|
169
192
|
"ui.message.interrupted": "已中断",
|
|
@@ -175,10 +198,10 @@ export const dict = {
|
|
|
175
198
|
"ui.patch.action.moved": "已移动",
|
|
176
199
|
"ui.patch.action.patched": "已应用补丁",
|
|
177
200
|
|
|
178
|
-
"ui.question.subtitle.answered": "{{count}}
|
|
179
|
-
"ui.question.answer.none": "
|
|
180
|
-
"ui.question.review.notAnswered": "
|
|
181
|
-
"ui.question.multiHint": "
|
|
201
|
+
"ui.question.subtitle.answered": "已回答 {{count}} 个",
|
|
202
|
+
"ui.question.answer.none": "(无答案)",
|
|
203
|
+
"ui.question.review.notAnswered": "(未回答)",
|
|
204
|
+
"ui.question.multiHint": "选择所有适用的答案",
|
|
182
205
|
"ui.question.singleHint": "选择一个答案",
|
|
183
206
|
"ui.question.custom.placeholder": "输入你的答案...",
|
|
184
207
|
|
|
@@ -191,6 +214,6 @@ export const dict = {
|
|
|
191
214
|
"ui.basicTool.called": "调用了 `{{tool}}`",
|
|
192
215
|
"ui.toolErrorCard.failed": "失败",
|
|
193
216
|
"ui.toolErrorCard.copyError": "复制错误",
|
|
194
|
-
"ui.message.duration.seconds": "{{count}}秒",
|
|
195
|
-
"ui.message.duration.minutesSeconds": "{{minutes}}
|
|
217
|
+
"ui.message.duration.seconds": "{{count}} 秒",
|
|
218
|
+
"ui.message.duration.minutesSeconds": "{{minutes}} 分钟 {{seconds}} 秒",
|
|
196
219
|
} satisfies Partial<Record<Keys, string>>
|
package/src/i18n/zht.ts
CHANGED
|
@@ -7,8 +7,8 @@ export const dict = {
|
|
|
7
7
|
"ui.sessionReview.title.git": "Git 變更",
|
|
8
8
|
"ui.sessionReview.title.branch": "分支變更",
|
|
9
9
|
"ui.sessionReview.title.lastTurn": "上一輪變更",
|
|
10
|
-
"ui.sessionReview.diffStyle.unified": "
|
|
11
|
-
"ui.sessionReview.diffStyle.split": "
|
|
10
|
+
"ui.sessionReview.diffStyle.unified": "統一",
|
|
11
|
+
"ui.sessionReview.diffStyle.split": "並排",
|
|
12
12
|
"ui.sessionReview.openFile": "開啟檔案",
|
|
13
13
|
"ui.sessionReview.selection.line": "第 {{line}} 行",
|
|
14
14
|
"ui.sessionReview.selection.lines": "第 {{start}}-{{end}} 行",
|
|
@@ -19,16 +19,16 @@ export const dict = {
|
|
|
19
19
|
"ui.sessionReview.change.modified": "已修改",
|
|
20
20
|
"ui.sessionReview.image.loading": "載入中...",
|
|
21
21
|
"ui.sessionReview.image.placeholder": "圖片",
|
|
22
|
-
"ui.sessionReview.largeDiff.title": "
|
|
22
|
+
"ui.sessionReview.largeDiff.title": "差異過大,無法顯示",
|
|
23
23
|
"ui.sessionReview.largeDiff.meta": "限制:{{limit}} 行變更。目前:{{current}} 行變更。",
|
|
24
|
-
"ui.sessionReview.largeDiff.renderAnyway": "
|
|
24
|
+
"ui.sessionReview.largeDiff.renderAnyway": "仍要顯示",
|
|
25
25
|
"ui.sessionReviewV2.expandMode": "展開或收合差異",
|
|
26
26
|
"ui.sessionReviewV2.filterFiles": "篩選檔案",
|
|
27
27
|
"ui.sessionReviewV2.toggleSidebar": "切換檔案樹",
|
|
28
28
|
"ui.sessionReviewV2.showAllLines": "顯示所有行",
|
|
29
29
|
"ui.sessionReviewV2.hideNonDiffLines": "隱藏無差異的行",
|
|
30
|
-
"ui.sessionReviewV2.unifiedDiff": "
|
|
31
|
-
"ui.sessionReviewV2.splitDiff": "
|
|
30
|
+
"ui.sessionReviewV2.unifiedDiff": "統一格式差異",
|
|
31
|
+
"ui.sessionReviewV2.splitDiff": "並排差異",
|
|
32
32
|
"ui.sessionReviewV2.previousFile": "上一個檔案",
|
|
33
33
|
"ui.sessionReviewV2.nextFile": "下一個檔案",
|
|
34
34
|
"ui.sessionReviewV2.diffView": "差異檢視",
|
|
@@ -48,18 +48,19 @@ export const dict = {
|
|
|
48
48
|
"ui.fileMedia.binary.description.path": "無法顯示 {{path}},因為它是二進位檔案。",
|
|
49
49
|
"ui.fileMedia.binary.description.default": "無法顯示此檔案,因為它是二進位檔案。",
|
|
50
50
|
|
|
51
|
-
"ui.lineComment.label.prefix": "
|
|
51
|
+
"ui.lineComment.label.prefix": "留言於 ",
|
|
52
52
|
"ui.lineComment.label.suffix": "",
|
|
53
|
-
"ui.lineComment.editorLabel.prefix": "
|
|
53
|
+
"ui.lineComment.editorLabel.prefix": "正在留言於 ",
|
|
54
54
|
"ui.lineComment.editorLabel.suffix": "",
|
|
55
|
-
"ui.lineComment.placeholder": "
|
|
56
|
-
"ui.lineComment.
|
|
55
|
+
"ui.lineComment.placeholder": "新增留言",
|
|
56
|
+
"ui.lineComment.contextPlaceholder": "新增此變更的相關資訊",
|
|
57
|
+
"ui.lineComment.submit": "留言",
|
|
57
58
|
"ui.lineComment.cancel": "取消",
|
|
58
59
|
|
|
59
60
|
"ui.sessionTurn.steps.show": "顯示步驟",
|
|
60
61
|
"ui.sessionTurn.steps.hide": "隱藏步驟",
|
|
61
62
|
"ui.sessionTurn.summary.response": "回覆",
|
|
62
|
-
"ui.sessionTurn.diff.showMore": "
|
|
63
|
+
"ui.sessionTurn.diff.showMore": "顯示更多變更({{count}})",
|
|
63
64
|
"ui.sessionTurn.diffs.changed.one": "已變更檔案:{{count}} 個",
|
|
64
65
|
"ui.sessionTurn.diffs.changed.other": "已變更檔案:{{count}} 個",
|
|
65
66
|
"ui.sessionTurn.diffs.showAll": "全部顯示",
|
|
@@ -70,7 +71,7 @@ export const dict = {
|
|
|
70
71
|
"ui.sessionTurn.retry.inSeconds": "{{seconds}} 秒後",
|
|
71
72
|
"ui.sessionTurn.retry.attempt": "第 {{attempt}} 次",
|
|
72
73
|
"ui.sessionTurn.retry.attemptLine": "{{line}} - 第 {{attempt}} 次",
|
|
73
|
-
"ui.sessionTurn.retry.geminiHot": "
|
|
74
|
+
"ui.sessionTurn.retry.geminiHot": "Gemini 目前負載過高",
|
|
74
75
|
"ui.sessionTurn.error.freeUsageExceeded": "免費使用額度已用完",
|
|
75
76
|
"ui.sessionTurn.error.addCredits": "新增點數",
|
|
76
77
|
|
|
@@ -78,8 +79,7 @@ export const dict = {
|
|
|
78
79
|
"dialog.usageExceeded.freeTier.description": "訂閱 OpenCode Go,可靠地使用最佳開源模型,每月 $5 起。",
|
|
79
80
|
"dialog.usageExceeded.freeTier.actionLabel": "訂閱",
|
|
80
81
|
"dialog.usageExceeded.accountRateLimit.title": "已達 Go 額度上限",
|
|
81
|
-
"dialog.usageExceeded.accountRateLimit.description":
|
|
82
|
-
"已達使用額度上限。若要現在繼續使用此模型,請從可用餘額中啟用使用",
|
|
82
|
+
"dialog.usageExceeded.accountRateLimit.description": "已達使用額度上限。若要立即繼續使用此模型,請啟用可用餘額計費",
|
|
83
83
|
"dialog.usageExceeded.accountRateLimit.actionLabel": "開啟設定",
|
|
84
84
|
|
|
85
85
|
"ui.sessionTurn.status.delegating": "正在委派工作",
|
|
@@ -101,13 +101,13 @@ export const dict = {
|
|
|
101
101
|
"ui.messagePart.context.read.other": "{{count}} 次讀取",
|
|
102
102
|
"ui.messagePart.context.search.one": "{{count}} 次搜尋",
|
|
103
103
|
"ui.messagePart.context.search.other": "{{count}} 次搜尋",
|
|
104
|
-
"ui.messagePart.context.list.one": "{{count}}
|
|
105
|
-
"ui.messagePart.context.list.other": "{{count}}
|
|
104
|
+
"ui.messagePart.context.list.one": "列出 {{count}} 次",
|
|
105
|
+
"ui.messagePart.context.list.other": "列出 {{count}} 次",
|
|
106
106
|
"ui.messagePart.diagnostic.error": "錯誤",
|
|
107
107
|
"ui.messagePart.title.edit": "編輯",
|
|
108
108
|
"ui.messagePart.title.write": "寫入",
|
|
109
109
|
"ui.messagePart.option.typeOwnAnswer": "輸入自己的答案",
|
|
110
|
-
"ui.messagePart.review.title": "
|
|
110
|
+
"ui.messagePart.review.title": "檢閱你的答案",
|
|
111
111
|
|
|
112
112
|
"ui.list.loading": "載入中",
|
|
113
113
|
"ui.list.empty": "無結果",
|
|
@@ -117,6 +117,25 @@ export const dict = {
|
|
|
117
117
|
|
|
118
118
|
"ui.messageNav.newMessage": "新訊息",
|
|
119
119
|
|
|
120
|
+
"ui.promptInput.noMatchingItems": "沒有符合的項目",
|
|
121
|
+
"ui.promptInput.commands": "命令",
|
|
122
|
+
"ui.promptInput.dropFiles": "拖放檔案以附加",
|
|
123
|
+
"ui.promptInput.removeAttachment": "移除附件",
|
|
124
|
+
"ui.promptInput.label": "提示詞",
|
|
125
|
+
"ui.promptInput.placeholder.shell": "輸入 shell 命令...",
|
|
126
|
+
"ui.promptInput.placeholder.normal": "想問什麼都可以, {{slash}} 可使用命令, {{at}} 可加入上下文...",
|
|
127
|
+
"ui.promptInput.add": "新增圖片和檔案",
|
|
128
|
+
"ui.promptInput.attachments": "圖片和檔案",
|
|
129
|
+
"ui.promptInput.context": "上下文",
|
|
130
|
+
"ui.promptInput.shell": "shell 命令",
|
|
131
|
+
"ui.promptInput.chooseAgent": "選擇代理程式",
|
|
132
|
+
"ui.promptInput.chooseModel": "選擇模型",
|
|
133
|
+
"ui.promptInput.chooseVariant": "選擇模型變體",
|
|
134
|
+
"ui.promptInput.send": "傳送",
|
|
135
|
+
"ui.promptInput.stop": "停止",
|
|
136
|
+
|
|
137
|
+
"ui.tabs.close": "關閉分頁",
|
|
138
|
+
|
|
120
139
|
"ui.textField.copyToClipboard": "複製到剪貼簿",
|
|
121
140
|
"ui.textField.copyLink": "複製連結",
|
|
122
141
|
"ui.textField.copied": "已複製",
|
|
@@ -126,16 +145,18 @@ export const dict = {
|
|
|
126
145
|
|
|
127
146
|
"ui.tool.read": "讀取",
|
|
128
147
|
"ui.tool.loaded": "已載入",
|
|
129
|
-
"ui.tool.list": "
|
|
148
|
+
"ui.tool.list": "列出",
|
|
130
149
|
"ui.tool.glob": "Glob",
|
|
131
150
|
"ui.tool.grep": "Grep",
|
|
132
151
|
"ui.tool.webfetch": "Webfetch",
|
|
133
152
|
"ui.tool.websearch": "網頁搜尋",
|
|
153
|
+
"ui.tool.websearch.provider": "{{provider}} 網頁搜尋",
|
|
134
154
|
"ui.tool.shell": "Shell",
|
|
135
155
|
"ui.tool.patch": "修補",
|
|
136
156
|
"ui.tool.todos": "待辦",
|
|
137
157
|
"ui.tool.todos.read": "讀取待辦",
|
|
138
158
|
"ui.tool.questions": "問題",
|
|
159
|
+
"ui.tool.questions.numbered": "問題 {{number}}",
|
|
139
160
|
"ui.tool.agent": "{{type}} 代理程式",
|
|
140
161
|
"ui.tool.agent.default": "代理程式",
|
|
141
162
|
|
|
@@ -145,6 +166,8 @@ export const dict = {
|
|
|
145
166
|
"ui.common.question.other": "個問題",
|
|
146
167
|
|
|
147
168
|
"ui.common.add": "新增",
|
|
169
|
+
"ui.common.clear": "清除",
|
|
170
|
+
"ui.common.file": "檔案",
|
|
148
171
|
"ui.common.back": "返回",
|
|
149
172
|
"ui.common.cancel": "取消",
|
|
150
173
|
"ui.common.confirm": "確認",
|
|
@@ -167,7 +190,7 @@ export const dict = {
|
|
|
167
190
|
"ui.message.copyResponse": "複製回覆",
|
|
168
191
|
"ui.message.copied": "已複製!",
|
|
169
192
|
"ui.message.interrupted": "已中斷",
|
|
170
|
-
"ui.message.queued": "
|
|
193
|
+
"ui.message.queued": "已加入佇列",
|
|
171
194
|
"ui.message.attachment.alt": "附件",
|
|
172
195
|
|
|
173
196
|
"ui.patch.action.deleted": "已刪除",
|
|
@@ -175,9 +198,9 @@ export const dict = {
|
|
|
175
198
|
"ui.patch.action.moved": "已移動",
|
|
176
199
|
"ui.patch.action.patched": "已套用修補",
|
|
177
200
|
|
|
178
|
-
"ui.question.subtitle.answered": "{{count}}
|
|
179
|
-
"ui.question.answer.none": "
|
|
180
|
-
"ui.question.review.notAnswered": "
|
|
201
|
+
"ui.question.subtitle.answered": "已回答 {{count}} 題",
|
|
202
|
+
"ui.question.answer.none": "(無答案)",
|
|
203
|
+
"ui.question.review.notAnswered": "(未回答)",
|
|
181
204
|
"ui.question.multiHint": "可多選",
|
|
182
205
|
"ui.question.singleHint": "選擇一個答案",
|
|
183
206
|
"ui.question.custom.placeholder": "輸入你的答案...",
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Dialog as Kobalte } from "@kobalte/core/dialog"
|
|
2
2
|
import { type ComponentProps, type JSXElement, type ParentProps, Show, children, splitProps } from "solid-js"
|
|
3
|
+
import { useI18n } from "../../context/i18n"
|
|
3
4
|
import "./dialog-v2.css"
|
|
4
5
|
|
|
5
6
|
export interface DialogProps extends ParentProps {
|
|
@@ -51,6 +52,7 @@ export function DialogTitleGroup(props: DialogTitleGroupProps) {
|
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
export function DialogHeader(props: DialogHeaderProps) {
|
|
55
|
+
const i18n = useI18n()
|
|
54
56
|
const [local] = splitProps(props, ["closeLabel", "hideClose", "children"])
|
|
55
57
|
const hideClose = () => local.hideClose === true
|
|
56
58
|
|
|
@@ -58,7 +60,7 @@ export function DialogHeader(props: DialogHeaderProps) {
|
|
|
58
60
|
<div data-slot="dialog-header" data-hide-close={hideClose() ? "" : undefined}>
|
|
59
61
|
{local.children}
|
|
60
62
|
{!hideClose() && (
|
|
61
|
-
<Kobalte.CloseButton data-slot="dialog-close-button" aria-label={local.closeLabel ?? "
|
|
63
|
+
<Kobalte.CloseButton data-slot="dialog-close-button" aria-label={local.closeLabel ?? i18n.t("ui.common.close")}>
|
|
62
64
|
<svg
|
|
63
65
|
width="16"
|
|
64
66
|
height="16"
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
align-items: center;
|
|
14
14
|
justify-content: flex-start;
|
|
15
15
|
gap: 6px;
|
|
16
|
-
padding-
|
|
16
|
+
padding-inline-end: 8px;
|
|
17
17
|
overflow: visible;
|
|
18
18
|
border: none;
|
|
19
19
|
border-radius: 6px;
|
|
20
20
|
background-color: transparent;
|
|
21
21
|
color: var(--v2-text-text-muted);
|
|
22
|
-
text-align:
|
|
22
|
+
text-align: start;
|
|
23
23
|
cursor: pointer;
|
|
24
24
|
scroll-margin-block: 8px;
|
|
25
25
|
transition:
|
|
@@ -87,6 +87,10 @@
|
|
|
87
87
|
transform: rotate(-90deg);
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
[data-component="file-tree-v2"]:dir(rtl) [data-slot="file-tree-v2-chevron"]:not([data-expanded]) svg {
|
|
91
|
+
transform: rotate(90deg);
|
|
92
|
+
}
|
|
93
|
+
|
|
90
94
|
[data-component="file-tree-v2"] [data-slot="file-tree-v2-row"][data-selected] [data-slot="file-tree-v2-chevron"] {
|
|
91
95
|
color: var(--v2-text-text-base);
|
|
92
96
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type ComponentProps, type JSX, Show, splitProps } from "solid-js"
|
|
2
2
|
import { Icon } from "./icon"
|
|
3
|
+
import { useI18n } from "../../context/i18n"
|
|
3
4
|
import "./inline-input-v2.css"
|
|
4
5
|
|
|
5
6
|
export interface InlineInputV2Props extends Omit<ComponentProps<"input">, "type" | "prefix"> {
|
|
@@ -22,6 +23,7 @@ export interface InlineInputV2Props extends Omit<ComponentProps<"input">, "type"
|
|
|
22
23
|
}
|
|
23
24
|
|
|
24
25
|
export function InlineInputV2(props: InlineInputV2Props) {
|
|
26
|
+
const i18n = useI18n()
|
|
25
27
|
const [local, inputProps] = splitProps(props, [
|
|
26
28
|
"class",
|
|
27
29
|
"classList",
|
|
@@ -92,7 +94,7 @@ export function InlineInputV2(props: InlineInputV2Props) {
|
|
|
92
94
|
<button
|
|
93
95
|
type="button"
|
|
94
96
|
data-slot="inline-input-v2-icon-button"
|
|
95
|
-
aria-label={local.copyLabel ?? "
|
|
97
|
+
aria-label={local.copyLabel ?? i18n.t("ui.message.copy")}
|
|
96
98
|
disabled={local.disabled}
|
|
97
99
|
onClick={local.onCopyClick}
|
|
98
100
|
>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { For, Show, createSignal, onMount, splitProps, type ComponentProps, type JSX } from "solid-js"
|
|
2
2
|
import { FileIcon } from "../../components/file-icon"
|
|
3
|
+
import { useI18n } from "../../context/i18n"
|
|
3
4
|
import { useFilteredList } from "../../hooks"
|
|
4
5
|
import { ButtonV2 } from "./button-v2"
|
|
5
6
|
import "./line-comment-v2.css"
|
|
@@ -86,6 +87,7 @@ function pathDirectory(path: string) {
|
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
export function LineCommentEditorV2(props: LineCommentEditorV2Props) {
|
|
90
|
+
const i18n = useI18n()
|
|
89
91
|
let textareaRef: HTMLTextAreaElement | undefined
|
|
90
92
|
const [mentionOpen, setMentionOpen] = createSignal(false)
|
|
91
93
|
|
|
@@ -106,7 +108,7 @@ export function LineCommentEditorV2(props: LineCommentEditorV2Props) {
|
|
|
106
108
|
"classList",
|
|
107
109
|
])
|
|
108
110
|
|
|
109
|
-
const heading = () => local.heading ?? "
|
|
111
|
+
const heading = () => local.heading ?? i18n.t("ui.lineComment.submit")
|
|
110
112
|
const canSubmit = () => local.value.trim().length > 0
|
|
111
113
|
|
|
112
114
|
const closeMention = () => {
|
|
@@ -211,7 +213,7 @@ export function LineCommentEditorV2(props: LineCommentEditorV2Props) {
|
|
|
211
213
|
}}
|
|
212
214
|
data-slot="line-comment-v2-textarea"
|
|
213
215
|
rows={local.rows ?? 3}
|
|
214
|
-
placeholder={local.placeholder ?? "
|
|
216
|
+
placeholder={local.placeholder ?? i18n.t("ui.lineComment.contextPlaceholder")}
|
|
215
217
|
value={local.value}
|
|
216
218
|
onInput={(e) => {
|
|
217
219
|
local.onInput(e.currentTarget.value)
|
|
@@ -291,10 +293,10 @@ export function LineCommentEditorV2(props: LineCommentEditorV2Props) {
|
|
|
291
293
|
<div data-slot="line-comment-v2-footer-meta">{local.selection}</div>
|
|
292
294
|
<div data-slot="line-comment-v2-footer-actions">
|
|
293
295
|
<ButtonV2 type="button" size="normal" variant="neutral" onClick={() => local.onCancel()}>
|
|
294
|
-
{local.cancelLabel ?? "
|
|
296
|
+
{local.cancelLabel ?? i18n.t("ui.lineComment.cancel")}
|
|
295
297
|
</ButtonV2>
|
|
296
298
|
<ButtonV2 type="button" size="normal" variant="contrast" disabled={!canSubmit()} onClick={submit}>
|
|
297
|
-
{local.submitLabel ?? "
|
|
299
|
+
{local.submitLabel ?? i18n.t("ui.lineComment.submit")}
|
|
298
300
|
</ButtonV2>
|
|
299
301
|
</div>
|
|
300
302
|
</div>
|
|
@@ -52,7 +52,8 @@
|
|
|
52
52
|
display: flex;
|
|
53
53
|
flex-direction: row;
|
|
54
54
|
align-items: stretch;
|
|
55
|
-
padding: 0
|
|
55
|
+
padding-block: 0;
|
|
56
|
+
padding-inline: 0 6px;
|
|
56
57
|
gap: 8px;
|
|
57
58
|
width: 280px;
|
|
58
59
|
height: 28px;
|
|
@@ -74,7 +75,8 @@
|
|
|
74
75
|
|
|
75
76
|
[data-component="select-v2"][data-appearance="large"] {
|
|
76
77
|
height: 32px;
|
|
77
|
-
padding: 0
|
|
78
|
+
padding-block: 0;
|
|
79
|
+
padding-inline: 0 8px;
|
|
78
80
|
}
|
|
79
81
|
|
|
80
82
|
[data-component="select-v2"]:where(:hover):not([data-disabled], [data-invalid]):not(:focus-within):not(
|
|
@@ -126,12 +128,13 @@
|
|
|
126
128
|
overflow: hidden;
|
|
127
129
|
text-overflow: ellipsis;
|
|
128
130
|
white-space: nowrap;
|
|
129
|
-
padding: 0
|
|
131
|
+
padding-block: 0;
|
|
132
|
+
padding-inline: 8px 0;
|
|
130
133
|
margin: 0;
|
|
131
134
|
border: 0;
|
|
132
135
|
background: transparent;
|
|
133
136
|
outline: none;
|
|
134
|
-
text-align:
|
|
137
|
+
text-align: start;
|
|
135
138
|
font-style: normal;
|
|
136
139
|
font-weight: 440;
|
|
137
140
|
font-size: 13px;
|
|
@@ -188,7 +191,8 @@
|
|
|
188
191
|
width: fit-content;
|
|
189
192
|
max-width: 100%;
|
|
190
193
|
height: 24px;
|
|
191
|
-
padding: 4px
|
|
194
|
+
padding-block: 4px;
|
|
195
|
+
padding-inline: 8px 4px;
|
|
192
196
|
gap: 4px;
|
|
193
197
|
border-radius: 4px;
|
|
194
198
|
background: transparent;
|
|
@@ -278,6 +282,13 @@
|
|
|
278
282
|
color: var(--menu-v2-accent);
|
|
279
283
|
}
|
|
280
284
|
|
|
285
|
+
[data-slot="select-v2-listbox"]
|
|
286
|
+
[data-component="menu-v2-item"][data-selected]
|
|
287
|
+
[data-slot="menu-v2-item-indicator"]
|
|
288
|
+
svg {
|
|
289
|
+
visibility: visible;
|
|
290
|
+
}
|
|
291
|
+
|
|
281
292
|
[data-slot="select-v2-listbox"]
|
|
282
293
|
[data-component="menu-v2-item"]:not([data-selected])
|
|
283
294
|
[data-slot="menu-v2-item-indicator"]
|
|
@@ -121,6 +121,10 @@
|
|
|
121
121
|
var(--v2-grey-300);
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
+
&:dir(rtl)[data-checked] [data-slot="switch-thumb"] {
|
|
125
|
+
transform: translateX(-8px);
|
|
126
|
+
}
|
|
127
|
+
|
|
124
128
|
&[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-control"] {
|
|
125
129
|
background:
|
|
126
130
|
linear-gradient(
|
|
@@ -135,6 +139,10 @@
|
|
|
135
139
|
transform: translateX(7px);
|
|
136
140
|
}
|
|
137
141
|
|
|
142
|
+
&:dir(rtl)[data-checked]:hover:not([data-disabled], [data-readonly]) [data-slot="switch-thumb"] {
|
|
143
|
+
transform: translateX(-7px);
|
|
144
|
+
}
|
|
145
|
+
|
|
138
146
|
&[data-disabled] {
|
|
139
147
|
cursor: not-allowed;
|
|
140
148
|
}
|
|
@@ -71,7 +71,7 @@
|
|
|
71
71
|
[data-component="tabs-v2"] [data-slot="tabs-v2-close-button"] {
|
|
72
72
|
width: 20px;
|
|
73
73
|
height: 20px;
|
|
74
|
-
margin-
|
|
74
|
+
margin-inline-start: -5px;
|
|
75
75
|
flex: none;
|
|
76
76
|
display: flex;
|
|
77
77
|
align-items: center;
|
|
@@ -109,7 +109,7 @@
|
|
|
109
109
|
background-color: var(--v2-border-border-base);
|
|
110
110
|
position: absolute;
|
|
111
111
|
bottom: 0px;
|
|
112
|
-
|
|
112
|
+
inset-inline-start: -8px;
|
|
113
113
|
}
|
|
114
114
|
|
|
115
115
|
[data-component="tabs-v2"][data-variant="pill"][data-orientation="horizontal"] [data-slot="tabs-v2-list"] {
|
|
@@ -183,12 +183,12 @@
|
|
|
183
183
|
padding: 12px;
|
|
184
184
|
gap: 4px;
|
|
185
185
|
overflow-y: auto;
|
|
186
|
-
border-
|
|
186
|
+
border-inline-end: 1px solid var(--v2-border-border-base);
|
|
187
187
|
}
|
|
188
188
|
|
|
189
189
|
[data-component="tabs-v2"][data-variant="settings"][data-orientation="vertical"] [data-slot="tabs-v2-section-title"] {
|
|
190
190
|
width: 100%;
|
|
191
|
-
padding-
|
|
191
|
+
padding-inline-start: 4px;
|
|
192
192
|
color: var(--v2-text-text-muted);
|
|
193
193
|
font-size: 12px;
|
|
194
194
|
font-weight: 500;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Tabs as Kobalte } from "@kobalte/core/tabs"
|
|
2
2
|
import { Show, splitProps, type JSX } from "solid-js"
|
|
3
3
|
import type { ComponentProps, ParentProps, Component } from "solid-js"
|
|
4
|
+
import { useI18n } from "../../context/i18n"
|
|
4
5
|
import "./tabs-v2.css"
|
|
5
6
|
|
|
6
7
|
export interface TabsV2Props extends ComponentProps<typeof Kobalte> {
|
|
@@ -74,7 +75,7 @@ function TabsV2Trigger(props: ParentProps<TabsV2TriggerProps>) {
|
|
|
74
75
|
{split.children}
|
|
75
76
|
<Show when={split.subtext}>
|
|
76
77
|
{(subtext) => (
|
|
77
|
-
<span data-slot="tabs-v2-subtext" class="
|
|
78
|
+
<span data-slot="tabs-v2-subtext" class="ms-2 text-xs text-text-weak">
|
|
78
79
|
{subtext()}
|
|
79
80
|
</span>
|
|
80
81
|
)}
|
|
@@ -86,12 +87,13 @@ function TabsV2Trigger(props: ParentProps<TabsV2TriggerProps>) {
|
|
|
86
87
|
}
|
|
87
88
|
|
|
88
89
|
function TabsV2CloseButton(props: TabsV2CloseButtonProps) {
|
|
90
|
+
const i18n = useI18n()
|
|
89
91
|
const [split, rest] = splitProps(props, ["class", "classList", "onClick"])
|
|
90
92
|
return (
|
|
91
93
|
<div
|
|
92
94
|
role="button"
|
|
93
95
|
tabindex={0}
|
|
94
|
-
aria-label="
|
|
96
|
+
aria-label={i18n.t("ui.tabs.close")}
|
|
95
97
|
data-slot="tabs-v2-close-button"
|
|
96
98
|
{...rest}
|
|
97
99
|
classList={{
|