clauderipple 0.8.3 → 0.8.4
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/CHANGELOG.md +14 -0
- package/README.es.md +623 -0
- package/README.ja.md +367 -0
- package/README.ko.md +3 -3
- package/README.md +6 -6
- package/README.pt-BR.md +608 -0
- package/README.zh-CN.md +368 -0
- package/dist/app/dist/main.js +307 -1
- package/dist/app/package.json +1 -1
- package/dist/router/src/version.js +1 -1
- package/dist/ui/app.js +10 -4
- package/dist/ui/i18n.js +1544 -8
- package/dist/ui/index.html +1 -1
- package/dist/ui/style.css +2 -1
- package/package.json +6 -2
package/dist/ui/i18n.js
CHANGED
|
@@ -4,7 +4,7 @@ const I18N = {
|
|
|
4
4
|
ko: {
|
|
5
5
|
"brand": "ClaudeRipple",
|
|
6
6
|
"nav.health": "상태", "nav.slots": "모델 매핑", "nav.providers": "프로바이더", "nav.clients": "클라이언트", "nav.logs": "로그", "nav.about": "정보",
|
|
7
|
-
"lang.
|
|
7
|
+
"lang.label": "언어",
|
|
8
8
|
"common.save": "저장", "common.saved": "저장했습니다.", "common.saveFailed": "저장하지 못했습니다.", "common.loadFailed": "불러오지 못했습니다.", "common.actionFailed": "처리하지 못했습니다.", "common.cancel": "취소", "common.edit": "수정", "common.remove": "삭제", "common.show": "보기", "common.hide": "숨기기", "common.advanced": "고급", "common.notAvailable": "—",
|
|
9
9
|
"health.title": "상태", "health.subtitle": "Claude Desktop 연결, 프로바이더, 모델 피커 상태를 5초마다 확인합니다.", "health.desktop": "Claude Desktop 연결", "health.connection": "연결 상태", "health.connected": "연결됨", "health.notConnected": "연결 안 됨", "health.disconnected": "연결 안 됨", "health.connectedHelp": "Claude Desktop의 Code 탭 요청이 ClaudeRipple을 거쳐 나갑니다.", "health.notConnectedHelp": "Claude Desktop이 ClaudeRipple을 거치지 않습니다. 메뉴 막대 앱에서 라우터를 시작하거나 터미널에서 clauderipple install을 실행하세요.", "health.requests": "요청 (라우터 시작 후)", "health.requestCount": "요청 수", "health.requestsFmt": "완료 {completed} · 실패 {failed} · 진행 중 {inFlight}", "health.providers": "프로바이더", "health.noProviders": "연결한 프로바이더가 없습니다. 프로바이더 메뉴에서 추가하세요.", "health.quota": "사용량 {percent}%{reset}", "health.resetsIn": " · {hours}시간 뒤 초기화", "health.details": "자세히", "health.version": "버전", "health.runtime": "라우터 실행 파일 · 시작 시각", "health.routes": "매핑 수", "health.cli": "Claude Code 버전",
|
|
10
10
|
"update.check": "업데이트 확인", "update.checking": "확인 중…", "update.latest": "최신 버전입니다.", "update.install": "{latest}(으)로 업데이트", "update.download": "{latest} 받기", "update.checkout": "{latest}이(가) 나왔습니다. 소스 체크아웃이라 git pull로 업데이트하세요.", "update.running": "업데이트 중…", "update.checkFailed": "업데이트를 확인하지 못했습니다.", "update.confirm": "ClaudeRipple {current} → {latest}로 업데이트할까요? 진행 중인 요청이 끝나면 라우터가 새 버전으로 다시 시작하고, 이 창은 저절로 새로고침됩니다.", "update.started": "업데이트를 시작했습니다. 라우터가 새 버전으로 다시 시작하면 이 창이 새로고침됩니다. 진행 기록은 ~/.clauderipple/logs/update.log에 있습니다.", "update.failed": "업데이트를 시작하지 못했습니다.",
|
|
@@ -79,7 +79,7 @@ const I18N = {
|
|
|
79
79
|
en: {
|
|
80
80
|
"brand": "ClaudeRipple",
|
|
81
81
|
"nav.health": "Status", "nav.slots": "Model mapping", "nav.providers": "Providers", "nav.clients": "Clients", "nav.logs": "Logs", "nav.about": "About",
|
|
82
|
-
"lang.
|
|
82
|
+
"lang.label": "Language",
|
|
83
83
|
"common.save": "Save", "common.saved": "Saved.", "common.saveFailed": "Could not save.", "common.loadFailed": "Could not load.", "common.actionFailed": "Could not complete that action.", "common.cancel": "Cancel", "common.edit": "Edit", "common.remove": "Remove", "common.show": "Show", "common.hide": "Hide", "common.advanced": "Advanced", "common.notAvailable": "—",
|
|
84
84
|
"health.title": "Status", "health.subtitle": "Claude Desktop connection, providers and the model picker, refreshed every 5s.", "health.desktop": "Claude Desktop connection", "health.connection": "Connection", "health.connected": "Connected", "health.notConnected": "Not connected", "health.disconnected": "Not connected", "health.connectedHelp": "Claude Desktop's Code tab requests go through ClaudeRipple.", "health.notConnectedHelp": "Claude Desktop is not going through ClaudeRipple. Start the router from the menu-bar app or run clauderipple install.", "health.requests": "Requests (since router start)", "health.requestCount": "Request count", "health.requestsFmt": "{completed} done · {failed} failed · {inFlight} in progress", "health.providers": "Providers", "health.noProviders": "No providers connected. Add one under Providers.", "health.quota": "{percent}% used{reset}", "health.resetsIn": " · resets in {hours}h", "health.details": "Details", "health.version": "Version", "health.runtime": "Router files · started", "health.routes": "Mappings", "health.cli": "Claude Code version",
|
|
85
85
|
"update.check": "Check for updates", "update.checking": "Checking…", "update.latest": "This is the latest version.", "update.install": "Update to {latest}", "update.download": "Get {latest}", "update.checkout": "{latest} is out. This is a source checkout; update it with git pull.", "update.running": "Updating…", "update.checkFailed": "Could not check for updates.", "update.confirm": "Update ClaudeRipple {current} → {latest}? The router restarts on the new version once requests in flight have finished, and this window reloads by itself.", "update.started": "The update has started. This window reloads when the router is back on the new version. Its output is in ~/.clauderipple/logs/update.log.", "update.failed": "Could not start the update.",
|
|
@@ -151,21 +151,1557 @@ const I18N = {
|
|
|
151
151
|
"slots.saving": "Saving…",
|
|
152
152
|
"slots.saved": "Saved · applies immediately",
|
|
153
153
|
},
|
|
154
|
+
zh: {
|
|
155
|
+
"brand": "ClaudeRipple",
|
|
156
|
+
"nav.health": "状态",
|
|
157
|
+
"nav.slots": "模型映射",
|
|
158
|
+
"nav.providers": "供应商",
|
|
159
|
+
"nav.clients": "客户端",
|
|
160
|
+
"nav.logs": "日志",
|
|
161
|
+
"nav.about": "关于",
|
|
162
|
+
"lang.label": "语言",
|
|
163
|
+
"common.save": "保存",
|
|
164
|
+
"common.saved": "已保存。",
|
|
165
|
+
"common.saveFailed": "保存失败。",
|
|
166
|
+
"common.loadFailed": "加载失败。",
|
|
167
|
+
"common.actionFailed": "操作未能完成。",
|
|
168
|
+
"common.cancel": "取消",
|
|
169
|
+
"common.edit": "编辑",
|
|
170
|
+
"common.remove": "移除",
|
|
171
|
+
"common.show": "显示",
|
|
172
|
+
"common.hide": "隐藏",
|
|
173
|
+
"common.advanced": "高级",
|
|
174
|
+
"common.notAvailable": "—",
|
|
175
|
+
"health.title": "状态",
|
|
176
|
+
"health.subtitle": "Claude Desktop 连接、供应商和模型选择器的状态,每 5 秒刷新一次。",
|
|
177
|
+
"health.desktop": "Claude Desktop 连接",
|
|
178
|
+
"health.connection": "连接",
|
|
179
|
+
"health.connected": "已连接",
|
|
180
|
+
"health.notConnected": "未连接",
|
|
181
|
+
"health.disconnected": "未连接",
|
|
182
|
+
"health.connectedHelp": "Claude Desktop 的 Code 标签页请求正经由 ClaudeRipple 转发。",
|
|
183
|
+
"health.notConnectedHelp": "Claude Desktop 没有经过 ClaudeRipple。请在菜单栏应用中启动路由服务,或运行 clauderipple install。",
|
|
184
|
+
"health.requests": "请求(自路由服务启动以来)",
|
|
185
|
+
"health.requestCount": "请求数",
|
|
186
|
+
"health.requestsFmt": "完成 {completed} · 失败 {failed} · 进行中 {inFlight}",
|
|
187
|
+
"health.providers": "供应商",
|
|
188
|
+
"health.noProviders": "尚未连接任何供应商。请在“供应商”页面添加。",
|
|
189
|
+
"health.quota": "已用 {percent}%{reset}",
|
|
190
|
+
"health.resetsIn": " · {hours} 小时后重置",
|
|
191
|
+
"health.details": "详细信息",
|
|
192
|
+
"health.version": "版本",
|
|
193
|
+
"health.runtime": "路由服务文件 · 启动时间",
|
|
194
|
+
"health.routes": "映射",
|
|
195
|
+
"health.cli": "Claude Code 版本",
|
|
196
|
+
"update.check": "检查更新",
|
|
197
|
+
"update.checking": "正在检查…",
|
|
198
|
+
"update.latest": "已是最新版本。",
|
|
199
|
+
"update.install": "更新到 {latest}",
|
|
200
|
+
"update.download": "获取 {latest}",
|
|
201
|
+
"update.checkout": "{latest} 已发布。当前是从仓库检出的源码版本,请用 git pull 更新。",
|
|
202
|
+
"update.running": "正在更新…",
|
|
203
|
+
"update.checkFailed": "无法检查更新。",
|
|
204
|
+
"update.confirm": "将 ClaudeRipple 从 {current} 更新到 {latest}?进行中的请求处理完毕后,路由服务会以新版本重启,此窗口也会自动重新加载。",
|
|
205
|
+
"update.started": "更新已开始。路由服务以新版本恢复运行后,此窗口会重新加载。更新输出见 ~/.clauderipple/logs/update.log。",
|
|
206
|
+
"update.failed": "无法启动更新。",
|
|
207
|
+
"picker.title": "模型选择器",
|
|
208
|
+
"picker.statusHelp": "开启:供应商的模型以真实名称出现在 Claude Desktop 的模型选择器中。关闭:按映射借用 Claude 模型名作答。",
|
|
209
|
+
"picker.state": "状态",
|
|
210
|
+
"picker.on": "开启",
|
|
211
|
+
"picker.off": "关闭",
|
|
212
|
+
"picker.turnOn": "开启选择器",
|
|
213
|
+
"picker.turnOff": "关闭选择器",
|
|
214
|
+
"picker.last": "最近一次显示了 {count} 个模型。",
|
|
215
|
+
"picker.restartHelp": "开启后,请完全退出 Claude Desktop 再重新打开。",
|
|
216
|
+
"picker.confirmOn": "操作系统会要求你确认信任该证书(macOS 会要求输入登录密码,Windows 会弹出证书对话框)。ClaudeRipple 永远不会看到你的密码。是否继续?",
|
|
217
|
+
"picker.working": "正在处理。",
|
|
218
|
+
"picker.doneOn": "已开启。请完全退出 Claude Desktop 再重新打开。",
|
|
219
|
+
"picker.doneOff": "已关闭。请完全退出 Claude Desktop 再重新打开。",
|
|
220
|
+
"slots.title": "模型映射",
|
|
221
|
+
"slots.subtitle": "决定在应用中选择某个 Claude 模型时,实际由哪个模型作答。更改会自动保存。",
|
|
222
|
+
"slots.pickerHelp": "开启:供应商的模型以真实名称出现在 Claude Desktop 的模型选择器中。关闭:按上方的映射借用 Claude 模型名作答。",
|
|
223
|
+
"slots.pickerModels": "选择器中的模型",
|
|
224
|
+
"slots.pickerModelsHelp": "勾选的模型会出现在 Claude Desktop 的模型选择器中,选中后由该模型直接作答。新添加的模型从下一个会话起可选(正在运行的会话沿用启动时的列表)。",
|
|
225
|
+
"slots.add": "+ 添加映射",
|
|
226
|
+
"slots.th.claude": "在 Claude 应用中选择",
|
|
227
|
+
"slots.th.target": "实际作答模型",
|
|
228
|
+
"slots.th.effort": "推理强度",
|
|
229
|
+
"slots.passthrough": "照常由 Claude 作答",
|
|
230
|
+
"slots.noProviderModels": "请先连接供应商并选择其模型。",
|
|
231
|
+
"slots.noChanges": "暂无映射,所有模型均由 Claude 作答。",
|
|
232
|
+
"slots.duplicate": "每个 Claude 模型只能映射一次。",
|
|
233
|
+
"slots.effortHint": "如果应用中选择的推理强度不受该模型支持,ClaudeRipple 会改用最接近的档位。(例如:xhigh → high)",
|
|
234
|
+
"slots.noEffort": "该模型不支持推理强度设置",
|
|
235
|
+
"pool.ready": "使用中",
|
|
236
|
+
"pool.cooling": "{seconds} 秒后恢复",
|
|
237
|
+
"pool.quarantined": "已被拒绝 — 请检查密钥",
|
|
238
|
+
"slots.modelSlots": "Claude Code 自带的模型槽位",
|
|
239
|
+
"slots.modelSlotsHelp": "Claude Code 在请求产生前就已选定这些模型,因此模型映射对它们不起作用。留空时由 Claude 作答,并消耗 Claude 额度。网页搜索尤其如此:它使用小型快速模型,因此即使会话已路由到其他模型,在更改该槽位前,搜索仍会消耗 Claude 额度。更改会在安装时写入 settings.json。",
|
|
240
|
+
"slots.noWebSearch": "此处不支持网页搜索",
|
|
241
|
+
"slots.noWebSearchWarn": "已保存,但在该模型上网页搜索会失败——ClaudeRipple 无法通过它执行搜索。模型本身或许可以;保持默认则由 Claude 负责搜索。",
|
|
242
|
+
"slots.slotDefault": "默认(Claude)",
|
|
243
|
+
"slots.slot.smallFast": "小型快速模型",
|
|
244
|
+
"slots.slot.subagent": "子代理",
|
|
245
|
+
"slots.slot.main": "会话默认模型",
|
|
246
|
+
"slots.slotHelp.smallFast": "网页搜索、标题、分类器",
|
|
247
|
+
"slots.slotHelp.subagent": "未自行指定模型的子代理",
|
|
248
|
+
"slots.slotHelp.main": "会话启动时使用的模型",
|
|
249
|
+
"slots.slotSaved": "模型槽位已保存,在新会话中生效。",
|
|
250
|
+
"slots.windowGlobal": "默认",
|
|
251
|
+
"slots.windowHelp": "该模型的上下文窗口,单位为 token。经路由服务转发的模型不共用上下文窗口,而是各自使用自己的窗口。留空时采用供应商报告的值,若未报告则使用全局默认值。请填写模型的实际窗口大小,而不是压缩触发点。",
|
|
252
|
+
"providers.title": "供应商",
|
|
253
|
+
"providers.subtitle": "在一处管理已连接的服务和账号。选择一个供应商即可打开它的设置和账号。",
|
|
254
|
+
"providers.search": "搜索供应商…",
|
|
255
|
+
"providers.overview": "概览",
|
|
256
|
+
"providers.accounts": "账号",
|
|
257
|
+
"providers.settings": "设置",
|
|
258
|
+
"providers.modelsTab": "模型",
|
|
259
|
+
"providers.selectedModels": "已选模型",
|
|
260
|
+
"providers.modelsCountShort": "{count} 个模型",
|
|
261
|
+
"providers.noSelection": "请在左侧选择一个供应商。",
|
|
262
|
+
"providers.rotationOn": "轮换已开启",
|
|
263
|
+
"providers.rotationOff": "轮换已关闭",
|
|
264
|
+
"providers.rotationSaving": "正在保存轮换设置…",
|
|
265
|
+
"providers.rotationSaved": "账号轮换设置已保存。",
|
|
266
|
+
"providers.accountCount": "已连接 {count} 个账号",
|
|
267
|
+
"providers.accountCountHelp": "包括当前的 Claude 登录和添加到 ClaudeRipple 的账号。",
|
|
268
|
+
"providers.accountPoolTitle": "Claude 账号",
|
|
269
|
+
"providers.accountPoolSubtitle": "同一对话始终使用同一个账号。只有在输出开始前额度或认证失败时,ClaudeRipple 才会切换账号。",
|
|
270
|
+
"providers.addClaudeAccount": "+ 添加 Claude 账号",
|
|
271
|
+
"providers.currentAccountHelp": "Claude Code 或 Claude Desktop 当前使用的外部登录。ClaudeRipple 无法移除它。",
|
|
272
|
+
"providers.addedAccountHelp": "ClaudeRipple 将此 OAuth 授权保存在本机,并自动刷新。",
|
|
273
|
+
"providers.reauthAction": "重新登录",
|
|
274
|
+
"providers.dangerZone": "管理已添加的账号",
|
|
275
|
+
"providers.saveSettings": "保存设置",
|
|
276
|
+
"providers.connection": "连接",
|
|
277
|
+
"providers.authentication": "认证",
|
|
278
|
+
"providers.rotationRequired": "只有开启账号轮换后,已添加的账号才会用于 Claude 应用和 Claude Code 的请求。",
|
|
279
|
+
"providers.anthropic": "Claude (Anthropic)",
|
|
280
|
+
"providers.anthropicHelp": "轮换使用多个 Claude 订阅账号,或向 Codex 等 OpenAI 风格的工具提供 Claude 模型。",
|
|
281
|
+
"providers.anthropicIngressOnly": "账号轮换关闭时,此处选择的模型只提供给 Codex 等 OpenAI 风格的工具,不会出现在 Claude 应用的映射中。",
|
|
282
|
+
"providers.anthropicPoolRouting": "账号轮换开启时,Claude 应用和 Claude Code 的请求在每个对话中固定使用一个账号,以保留提示缓存。如果在响应开始前遇到 429 或认证被拒,该请求会转到下一个账号。使用多个订阅可能受 Anthropic 条款和账号限制的约束;请仅使用你本人拥有且获得授权的账号。",
|
|
283
|
+
"providers.anthropicLoginReuse": "复用登录",
|
|
284
|
+
"providers.anthropicPoolOn": "账号轮换",
|
|
285
|
+
"providers.anthropicPool": "自动轮换 Claude 账号",
|
|
286
|
+
"providers.anthropicPoolHelp": "使用当前的 Claude 登录以及下方添加的账号。除非额度或认证失败,同一对话始终留在原账号上。",
|
|
287
|
+
"providers.anthropicCurrent": "当前登录",
|
|
288
|
+
"providers.anthropicReauth": "重新登录",
|
|
289
|
+
"providers.anthropicNoAccounts": "尚未向 ClaudeRipple 添加任何账号。",
|
|
290
|
+
"providers.anthropicRenamePrompt": "此账号的显示名称",
|
|
291
|
+
"providers.anthropicRemoveConfirm": "从 ClaudeRipple 中移除 Claude 账号 {name}?",
|
|
292
|
+
"providers.anthropicLogoutAll": "移除所有已添加的账号",
|
|
293
|
+
"providers.anthropicLogoutAllConfirm": "移除添加到 ClaudeRipple 的所有 Claude 账号?当前 Claude Code 和 Claude Desktop 的登录不会改变。",
|
|
294
|
+
"providers.anthropicAuthClaudeCode": "复用 Claude Code 登录(自动)",
|
|
295
|
+
"providers.anthropicAuthApiKey": "API 密钥",
|
|
296
|
+
"providers.anthropicCredentialsHelp": "选择 Claude Code 登录或 Anthropic API 密钥。",
|
|
297
|
+
"providers.anthropicSourceObserved": "从 Claude Desktop 会话中检测到",
|
|
298
|
+
"providers.anthropicSourceClaudeCode": "终端 Claude 登录",
|
|
299
|
+
"providers.anthropicSourceTokenFile": "ClaudeRipple token",
|
|
300
|
+
"providers.anthropicSourceMissing": "无 — 请在下方连接",
|
|
301
|
+
"providers.anthropicLogin": "+ 添加 Claude 账号",
|
|
302
|
+
"providers.anthropicOAuthTitle": "添加 Claude 账号",
|
|
303
|
+
"providers.anthropicOAuthWarning": "通过第三方代理使用 Claude 订阅 OAuth 并非 Anthropic 支持的集成方式,可能受条款或账号限制的约束。请仅将你本人的账号用于获得授权的用途。",
|
|
304
|
+
"providers.anthropicOAuthAccept": "我了解风险,并希望继续使用 OAuth。",
|
|
305
|
+
"providers.anthropicOAuthContinue": "继续使用 OAuth",
|
|
306
|
+
"providers.anthropicLogout": "断开连接",
|
|
307
|
+
"providers.anthropicLoginDone": "Claude 订阅已连接。",
|
|
308
|
+
"providers.anthropicSignInBrowser": "请在浏览器中登录 Claude。如果没有弹出窗口,请使用下面的链接。",
|
|
309
|
+
"providers.anthropicSignInLink": "打开登录页面",
|
|
310
|
+
"providers.anthropicSignInPaste": "登录后,将页面上显示的授权码粘贴到这里。",
|
|
311
|
+
"providers.anthropicSignInSubmit": "提交授权码",
|
|
312
|
+
"providers.anthropicSignInManual": "粘贴授权码重试",
|
|
313
|
+
"providers.anthropicSignInWaiting": "正在等待浏览器…(最长 5 分钟)",
|
|
314
|
+
"providers.anthropicSignInFailed": "登录失败",
|
|
315
|
+
"providers.anthropicSignedInActive": "正在使用 ClaudeRipple 的登录。",
|
|
316
|
+
"providers.anthropicSignedInStandby": "另外还保存了一个 ClaudeRipple 登录,上述来源失效时会自动接替。",
|
|
317
|
+
"providers.add": "+ 添加供应商",
|
|
318
|
+
"providers.refresh": "全部测试",
|
|
319
|
+
"providers.check": "测试连接",
|
|
320
|
+
"providers.checking": "正在检查",
|
|
321
|
+
"providers.empty": "尚未连接任何供应商。请用上方的按钮添加。",
|
|
322
|
+
"providers.modelsCount": "正在使用 {count} 个模型:{names}",
|
|
323
|
+
"providers.noModels": "尚未选择模型。请在“编辑”中选择。",
|
|
324
|
+
"providers.removeConfirm": "移除供应商 {name}?使用它的模型映射也会一并移除。",
|
|
325
|
+
"providers.choose": "添加供应商",
|
|
326
|
+
"providers.chooseHelp": "选择要连接的服务。",
|
|
327
|
+
"providers.chatgpt": "ChatGPT 订阅",
|
|
328
|
+
"providers.chatgptHelp": "通过 ChatGPT Plus/Pro 订阅使用 GPT 模型。只需登录,无需 API 密钥。",
|
|
329
|
+
"providers.presetHelp": "粘贴 API 密钥即可完成。",
|
|
330
|
+
"providers.openaiGroup": "OpenAI 兼容",
|
|
331
|
+
"providers.openaiGroupHelp": "ClaudeRipple 会将请求转换为 OpenAI API 格式。",
|
|
332
|
+
"providers.verified": "已对照官方文档验证",
|
|
333
|
+
"providers.custom": "手动填写",
|
|
334
|
+
"providers.customName": "新供应商",
|
|
335
|
+
"providers.customHelp": "通过 URL 和密钥接入任意 Anthropic 兼容 API。",
|
|
336
|
+
"providers.addTitle": "添加供应商",
|
|
337
|
+
"providers.edit": "编辑供应商",
|
|
338
|
+
"providers.name": "名称",
|
|
339
|
+
"providers.nameHelp": "该供应商在列表和映射中显示的名称。",
|
|
340
|
+
"providers.nameRequired": "请输入名称。",
|
|
341
|
+
"providers.apiKey": "API 密钥",
|
|
342
|
+
"providers.keyHelp": "在供应商网站上获取的 API 密钥。仅保存在本机的配置文件中。",
|
|
343
|
+
"providers.keyPlaceholder": "粘贴你的 API 密钥",
|
|
344
|
+
"providers.keySaved": "将继续使用已保存的密钥。粘贴新密钥即可替换。",
|
|
345
|
+
"providers.url": "API 基础 URL",
|
|
346
|
+
"providers.urlHelp": "Anthropic 兼容端点的基础 URL。仅当服务文档另有说明时才需修改。",
|
|
347
|
+
"providers.openaiUrlHelp": "OpenAI 兼容 API 的基础 URL。请求会被转换后发往它的 Chat Completions 或 Responses 端点。",
|
|
348
|
+
"providers.wire": "API 协议格式",
|
|
349
|
+
"providers.wireHelp": "大多数供应商请使用 Chat Completions。仅当供应商支持无状态的 Responses API 时才选择 Responses。",
|
|
350
|
+
"providers.urlRequired": "请输入有效的 URL。",
|
|
351
|
+
"providers.keyType": "认证请求头",
|
|
352
|
+
"providers.keyTypeHelp": "通常为 x-api-key。仅当服务文档要求时才选择 Authorization: Bearer。",
|
|
353
|
+
"providers.extraHeaders": "额外 HTTP 请求头",
|
|
354
|
+
"providers.extraHeadersHelp": "只填写服务要求的请求头,每行一个,格式为 'name: value'。",
|
|
355
|
+
"providers.models": "要使用的模型",
|
|
356
|
+
"providers.modelsHelp": "勾选的模型会出现在“模型映射”列表中。",
|
|
357
|
+
"providers.modelsFound": "供应商报告的模型列表。",
|
|
358
|
+
"providers.modelsFallback": "无法获取列表,显示已知的默认模型。",
|
|
359
|
+
"measure.running": "正在测量模型能力…({done}/{total})",
|
|
360
|
+
"measure.help": "检查每个模型支持哪种 API 协议格式和哪些推理强度——公开模型目录(models.dev)收录了该模型时以目录为准,否则直接向模型询问。",
|
|
361
|
+
"measure.done": "测量结果:{summary}",
|
|
362
|
+
"measure.nothing": "未测量到任何结果:没有模型应答。",
|
|
363
|
+
"measure.notEntitled": "{models}:只能在供应商自家的应用中使用,在这里勾选也无法使用。",
|
|
364
|
+
"measure.failed": "无法测量模型能力。",
|
|
365
|
+
"measure.authFailed": "API 密钥被拒绝,因此无法进行任何测量。",
|
|
366
|
+
"providers.probeNotEntitled": "密钥已被接受,但套餐拒绝了请求。",
|
|
367
|
+
"providerStatus.notEntitled": "套餐拒绝请求",
|
|
368
|
+
"providers.probeOk": "已连接。",
|
|
369
|
+
"providers.probeFailed": "无法连接。",
|
|
370
|
+
"providers.apiSoon": "请稍后再试。",
|
|
371
|
+
"providers.showInPicker": "同时以真实名称显示在 Claude 应用的模型选择器中",
|
|
372
|
+
"providers.pickerOffHint": "选择器模式当前已关闭,所以勾选后暂时不会显示。保存时会询问你是否开启。",
|
|
373
|
+
"providers.pickerOffPrompt": "选择器模式已关闭,因此这些模型暂时不会出现在 Claude Desktop 的模型选择器中。现在开启吗?操作系统会要求你确认信任证书。",
|
|
374
|
+
"providers.credentials": "登录来源",
|
|
375
|
+
"providers.credentialsHelp": "ChatGPT 账号 token 的来源。",
|
|
376
|
+
"providers.authAuto": "自动(优先使用 ClaudeRipple 登录,否则复用 Codex CLI 登录)",
|
|
377
|
+
"providers.authOwn": "使用 ClaudeRipple 登录",
|
|
378
|
+
"providers.authBorrow": "复用 Codex CLI 登录(~/.codex/auth.json)",
|
|
379
|
+
"providers.login": "登录方式",
|
|
380
|
+
"providers.loginHelp": "在菜单栏应用中选择“登录 ChatGPT…”,或在终端运行 clauderipple login,都会打开浏览器登录。token 只保存在本机。",
|
|
381
|
+
"providers.loginHint": "请在菜单栏应用中选择“登录 ChatGPT…”,或在终端运行 clauderipple login。",
|
|
382
|
+
"providers.chatgptLogin": "登录 ChatGPT",
|
|
383
|
+
"providers.chatgptLoginWaiting": "请在浏览器中完成登录。完成后这里会自动更新。",
|
|
384
|
+
"providers.chatgptLoginDone": "ChatGPT 登录完成。",
|
|
385
|
+
"providers.chatgptAccountsTitle": "ChatGPT 账号",
|
|
386
|
+
"providers.chatgptAccountsSubtitle": "有多个账号时,一个账号达到用量上限后,由下一个账号接手同一请求。同一对话始终留在作答的账号上,以保留缓存。账号按列表顺序使用。",
|
|
387
|
+
"providers.addChatgptAccount": "+ 添加 ChatGPT 账号",
|
|
388
|
+
"providers.chatgptAddWaiting": "请在浏览器中用要添加的账号登录。如果显示的是已添加过的账号,请换一个。",
|
|
389
|
+
"providers.chatgptAdded": "已添加 ChatGPT 账号。",
|
|
390
|
+
"providers.chatgptNoAccounts": "尚未登录任何 ChatGPT 账号。",
|
|
391
|
+
"providers.chatgptAccountCount": "{count} 个账号",
|
|
392
|
+
"providers.chatgptCodexHelp": "Codex CLI 自己的登录。ClaudeRipple 只读取、从不刷新,并且排在最后使用。",
|
|
393
|
+
"providers.chatgptOwnHelp": "ClaudeRipple 将此登录保存在只有你的系统用户账号能读取的文件中,并自动刷新。",
|
|
394
|
+
"providers.chatgptInUse": "当前使用中",
|
|
395
|
+
"providers.chatgptStandby": "待命",
|
|
396
|
+
"providers.chatgptPause": "暂停",
|
|
397
|
+
"providers.chatgptResume": "恢复",
|
|
398
|
+
"providers.chatgptPaused": "已暂停",
|
|
399
|
+
"providers.chatgptClearCooldown": "立即使用",
|
|
400
|
+
"providers.chatgptRemoveConfirm": "从 ClaudeRipple 中移除 ChatGPT 账号 {name}?",
|
|
401
|
+
"providers.chatgptReauthHelp": "此登录已过期或被拒绝。用同一账号重新登录即可原地恢复。",
|
|
402
|
+
"pool.coolingFor": "{duration}后恢复",
|
|
403
|
+
"time.hoursMinutes": "{h} 小时 {m} 分钟",
|
|
404
|
+
"time.minutes": "{m} 分钟",
|
|
405
|
+
"time.seconds": "{s} 秒",
|
|
406
|
+
"quota.window5h": "5 小时",
|
|
407
|
+
"quota.windowWeek": "每周",
|
|
408
|
+
"quota.windowHours": "{hours} 小时",
|
|
409
|
+
"quota.line": "{window} {percent}%",
|
|
410
|
+
"quota.resetAt": "{time} 重置",
|
|
411
|
+
"providers.effortLevels": "推理强度:{levels}",
|
|
412
|
+
"providers.effortNone": "不支持推理强度设置",
|
|
413
|
+
"providers.modelEffort": "推理强度",
|
|
414
|
+
"providers.modelNoEffort": "不支持强度设置",
|
|
415
|
+
"providers.defaultEffort": "默认推理强度",
|
|
416
|
+
"providers.defaultEffortHelp": "映射和应用都未设置推理强度时使用。",
|
|
417
|
+
"providers.identity": "告知模型身份",
|
|
418
|
+
"providers.append": "系统提示词附加内容",
|
|
419
|
+
"providers.appendHelp": "固定追加到每个请求系统提示词末尾的文本。修改此内容往往会破坏提示缓存,增加费用。",
|
|
420
|
+
"providerStatus.connected": "已连接",
|
|
421
|
+
"providerStatus.keyNeeded": "需要密钥",
|
|
422
|
+
"providerStatus.loginNeeded": "需要登录",
|
|
423
|
+
"providerStatus.disconnected": "未连接",
|
|
424
|
+
"providerStatus.checking": "正在检查",
|
|
425
|
+
"clients.title": "客户端",
|
|
426
|
+
"clients.subtitle": "设置使用 ClaudeRipple 的应用。",
|
|
427
|
+
"clients.desktop.title": "Claude Desktop",
|
|
428
|
+
"clients.desktop.help": "选择是否让供应商的模型以真实名称出现在模型选择器中。",
|
|
429
|
+
"clients.codex.title": "Codex(应用和 CLI)",
|
|
430
|
+
"clients.codex.help": "将 ClaudeRipple 作为供应商添加到 Codex 配置(~/.codex/config.toml)中。终端:`codex --profile clauderipple -m <model>`;Codex 应用:在该配置中将 clauderipple 设为默认供应商。",
|
|
431
|
+
"clients.codex.note": "开启后,Codex 的 GPT 请求也会经过 ClaudeRipple。Codex 保留自己的登录;如果添加了多个 ChatGPT 账号,一个账号达到上限时由下一个接手,无需退出登录。下方列表是 Codex 因此新增的 Claude 及 Anthropic 兼容模型。",
|
|
432
|
+
"clients.codex.turnOn": "在 Codex 中使用 ClaudeRipple",
|
|
433
|
+
"clients.codex.turnOff": "断开 Codex",
|
|
434
|
+
"clients.claudeCode.title": "终端 Claude Code",
|
|
435
|
+
"clients.claudeCode.help": "终端中的 `claude` 使用同一个路由服务。用 `/model <name>` 选择模型。",
|
|
436
|
+
"logs.title": "日志",
|
|
437
|
+
"logs.requests": "请求",
|
|
438
|
+
"logs.raw": "原始日志",
|
|
439
|
+
"logs.lastHour": "最近一小时",
|
|
440
|
+
"logs.autoscroll": "自动滚动",
|
|
441
|
+
"logs.polling": "每 3 秒更新",
|
|
442
|
+
"logs.rawPolling": "每 3 秒更新 · 最后 200 行",
|
|
443
|
+
"logs.provider": "供应商",
|
|
444
|
+
"logs.all": "全部",
|
|
445
|
+
"logs.showCountTokens": "显示 token 数",
|
|
446
|
+
"logs.empty": "暂无请求。",
|
|
447
|
+
"logs.summary.requests": "请求",
|
|
448
|
+
"logs.summary.success": "成功 / 失败",
|
|
449
|
+
"logs.summary.input": "输入 token",
|
|
450
|
+
"logs.summary.output": "输出 token",
|
|
451
|
+
"logs.summary.duration": "平均响应时间",
|
|
452
|
+
"logs.cacheHit": "缓存 {percent}%",
|
|
453
|
+
"logs.th.time": "时间",
|
|
454
|
+
"logs.th.models": "模型",
|
|
455
|
+
"logs.th.effort": "推理强度",
|
|
456
|
+
"logs.th.input": "输入",
|
|
457
|
+
"logs.th.output": "输出",
|
|
458
|
+
"logs.th.duration": "耗时",
|
|
459
|
+
"logs.th.status": "状态",
|
|
460
|
+
"logs.status.ok": "成功",
|
|
461
|
+
"logs.status.error": "错误",
|
|
462
|
+
"logs.detail.id": "请求 ID",
|
|
463
|
+
"logs.detail.kind": "类型",
|
|
464
|
+
"logs.detail.stop": "停止原因",
|
|
465
|
+
"logs.detail.uncached": "未缓存输入",
|
|
466
|
+
"logs.detail.cacheRead": "缓存读取",
|
|
467
|
+
"logs.detail.cacheWrite": "缓存写入",
|
|
468
|
+
"logs.detail.note": "备注",
|
|
469
|
+
"logs.none": "无",
|
|
470
|
+
"logs.seconds": "{value} 秒",
|
|
471
|
+
"about.title": "关于",
|
|
472
|
+
"about.body": "ClaudeRipple 是一个独立的开源项目,与 Anthropic 和 OpenAI 均无关联。Claude 和 Claude Code 是 Anthropic, PBC 的商标。",
|
|
473
|
+
"about.license": "许可证:GPL-3.0",
|
|
474
|
+
"providers.identityHelp": "在系统提示词开头加上 'You are <model>, answering through Claude Code'。关闭时,模型可能会以为自己是 Claude。",
|
|
475
|
+
"picker.models": "选择器中的 {count} 个模型:{names}",
|
|
476
|
+
"picker.lastAt": "Claude Desktop 最后一次获取列表的时间:{at}",
|
|
477
|
+
"picker.never": "Claude Desktop 尚未获取过列表。请完全退出后重新打开。",
|
|
478
|
+
"agentTitle.title": "子代理名称标签",
|
|
479
|
+
"agentTitle.help": "在后台任务面板的子代理标题前加上实际模型和推理强度(例如 Terra·high · Review)。通过 Claude Code 钩子实现,对新建的子代理生效。",
|
|
480
|
+
"agentTitle.on": "开启",
|
|
481
|
+
"agentTitle.off": "关闭",
|
|
482
|
+
"agentTitle.turnOn": "开启",
|
|
483
|
+
"agentTitle.turnOff": "关闭",
|
|
484
|
+
"statusMod.title": "路由状态行与请求日志",
|
|
485
|
+
"statusMod.help": "在 Claude Code 输入框上方显示上一个请求的去向(模型、供应商、缓存命中率、耗时),并可通过 Log 按钮或 /ripple-log 在侧边窗格中打开请求日志。× 或 /ripple-bar 可隐藏或重新显示这一行。当 Agent 调用指定了其他模型时,worker 仍会使用自己的模型;它的 [[ripple: name@level]] 标记无论位于提示词何处都会被读取。通过 Claude Code mod 实现,对此后打开的会话生效。",
|
|
486
|
+
"statusMod.turnOn": "开启",
|
|
487
|
+
"statusMod.turnOff": "关闭",
|
|
488
|
+
"statusMod.saved": "已保存。对此后打开的 Claude Code 会话生效。",
|
|
489
|
+
"workerTools.title": "Worker 工具",
|
|
490
|
+
"workerTools.help": "让 ClaudeRipple 生成的 worker 只获得读取、编辑、运行、搜索和技能工具。会话的 MCP 服务器和插件工具不再随每个 worker 请求一起发送,输入量大幅减少,但这些 worker 将无法使用浏览器或 iOS 模拟器。需要这些工具的 worker 应使用你在 ~/.claude/agents 中自行编写的代理文件,ClaudeRipple 从不改动这些文件。对新会话生效。",
|
|
491
|
+
"workerTools.on": "开启",
|
|
492
|
+
"workerTools.off": "关闭(继承会话的全部工具)",
|
|
493
|
+
"workerTools.turnOn": "限制工具",
|
|
494
|
+
"workerTools.turnOff": "取消限制",
|
|
495
|
+
"providers.probeNoCredits": "密钥有效,但该账号没有余额,因此没有返回回答。请到供应商网站充值。",
|
|
496
|
+
"providers.probeBadKey": "API 密钥被拒绝,请检查密钥。",
|
|
497
|
+
"providers.searchModels": "搜索模型(名称或 ID)",
|
|
498
|
+
"providers.customModelPlaceholder": "输入模型 ID(例如 abliterated-model)",
|
|
499
|
+
"providers.customModelAdd": "添加",
|
|
500
|
+
"providers.customModelHint": "该供应商没有列出它的模型。请在下方输入供应商文档中的模型 ID 来添加。",
|
|
501
|
+
"providers.google": "Google Gemini",
|
|
502
|
+
"providers.googleHelp": "通过 Google AI Studio API 密钥或 Google 账号(Antigravity)使用 Gemini 模型。",
|
|
503
|
+
"providers.googleKeyHelp": "在 aistudio.google.com/apikey 创建。使用免费层级时,Google 可能会用你的输入来改进其产品,处理敏感代码请使用付费密钥。",
|
|
504
|
+
"providers.googleAntigravity": "Antigravity 登录",
|
|
505
|
+
"providers.googleAuthApiKey": "AI Studio API 密钥",
|
|
506
|
+
"providers.googleAuthHelp": "API 密钥是 Google 支持的方式。Antigravity 登录使用的是 Google 账号的订阅,这种用法为 Google 条款所禁止。",
|
|
507
|
+
"providers.googleLogin": "Google 账号",
|
|
508
|
+
"providers.addGoogleAccount": "+ 使用 Google 登录",
|
|
509
|
+
"providers.googleWarning": "Google 的 Antigravity 条款(第 6 节)和 Gemini CLI FAQ 均明确将在 Google 自家应用以外的任何程序中使用这些凭据列为违规。2026 年 2 月,Google 停用了大量以这种方式使用的账号,并表示再次违规将永久停用。ClaudeRipple 与 Google 无关联。\n\n建议使用备用账号。确定要登录并承担此风险吗?",
|
|
510
|
+
"providers.googleWarningShort": "Google 的条款禁止这种用法,已有账号因此被停用。建议使用备用账号。",
|
|
511
|
+
"providers.googleOpenManually": "浏览器未能打开,请手动打开此地址。",
|
|
512
|
+
"providers.googleAdded": "已添加 Google 账号。",
|
|
513
|
+
"providers.googleSignInFirst": "尚未登录任何 Google 账号,请先登录。",
|
|
514
|
+
"providers.googleRemoveConfirm": "从 ClaudeRipple 中移除 {name}?Google 账号本身不受影响。",
|
|
515
|
+
"providers.googleProject": "项目 {id}",
|
|
516
|
+
"providers.googleOwnHelp": "ClaudeRipple 将此登录保存在只有你的系统用户账号能读取的文件中,并自动刷新。",
|
|
517
|
+
"providers.googleVerifyNeeded": "需要 Google 验证",
|
|
518
|
+
"providers.googleVerifyAction": "前往 Google 验证",
|
|
519
|
+
"providers.googleRecheck": "重新检查",
|
|
520
|
+
"providers.googleVerified": "已验证,此账号恢复可用。",
|
|
521
|
+
"providers.googleStillUnverified": "Google 仍要求验证。请确认已完成页面上的所有步骤。",
|
|
522
|
+
"providers.googleVerifyUnknown": "暂时无法检查;下一个请求会自动检查。",
|
|
523
|
+
"providers.googleVerifyHelp": "Google 要求先验证此账号才能使用。请在已登录该账号的浏览器中打开页面并完成步骤;下一个请求会照常应答。",
|
|
524
|
+
"providers.googleNoAccounts": "尚未登录任何 Google 账号。",
|
|
525
|
+
"providers.googleAccountsTitle": "Google 账号",
|
|
526
|
+
"providers.googleAccountsSubtitle": "同一对话始终使用同一个账号;达到上限时,会在开始应答前切换到下一个账号。",
|
|
527
|
+
"providers.googleLoginWaiting": "正在等待浏览器中的 Google 登录…",
|
|
528
|
+
"providers.modelsSummary": "已选 {selected} / 共 {total}",
|
|
529
|
+
"providers.modelsHidden": "还有 {hidden} 个 — 可通过搜索找到",
|
|
530
|
+
"providers.modelsFoundMany": "供应商报告的列表。列表较长:请搜索并只勾选要用的模型。",
|
|
531
|
+
"providers.modelsFoundLive": "已从 ChatGPT 目录获取 {n} 个模型。新出现的模型默认不勾选。",
|
|
532
|
+
"slots.saving": "正在保存…",
|
|
533
|
+
"slots.saved": "已保存 · 立即生效",
|
|
534
|
+
},
|
|
535
|
+
ja: {
|
|
536
|
+
"brand": "ClaudeRipple",
|
|
537
|
+
"nav.health": "ステータス",
|
|
538
|
+
"nav.slots": "モデルマッピング",
|
|
539
|
+
"nav.providers": "プロバイダー",
|
|
540
|
+
"nav.clients": "クライアント",
|
|
541
|
+
"nav.logs": "ログ",
|
|
542
|
+
"nav.about": "このアプリについて",
|
|
543
|
+
"lang.label": "言語",
|
|
544
|
+
"common.save": "保存",
|
|
545
|
+
"common.saved": "保存しました",
|
|
546
|
+
"common.saveFailed": "保存できませんでした",
|
|
547
|
+
"common.loadFailed": "読み込めませんでした",
|
|
548
|
+
"common.actionFailed": "操作を完了できませんでした",
|
|
549
|
+
"common.cancel": "キャンセル",
|
|
550
|
+
"common.edit": "編集",
|
|
551
|
+
"common.remove": "削除",
|
|
552
|
+
"common.show": "表示",
|
|
553
|
+
"common.hide": "非表示",
|
|
554
|
+
"common.advanced": "詳細設定",
|
|
555
|
+
"common.notAvailable": "—",
|
|
556
|
+
"health.title": "ステータス",
|
|
557
|
+
"health.subtitle": "Claude Desktopとの接続、プロバイダー、モデルピッカーの状態です。5秒ごとに更新されます。",
|
|
558
|
+
"health.desktop": "Claude Desktopとの接続",
|
|
559
|
+
"health.connection": "接続",
|
|
560
|
+
"health.connected": "接続済み",
|
|
561
|
+
"health.notConnected": "未接続",
|
|
562
|
+
"health.disconnected": "未接続",
|
|
563
|
+
"health.connectedHelp": "Claude DesktopのCodeタブからのリクエストはClaudeRippleを経由しています。",
|
|
564
|
+
"health.notConnectedHelp": "Claude DesktopがClaudeRippleを経由していません。メニューバーアプリからルーターを起動するか、clauderipple installを実行してください。",
|
|
565
|
+
"health.requests": "リクエスト(ルーター起動以降)",
|
|
566
|
+
"health.requestCount": "リクエスト数",
|
|
567
|
+
"health.requestsFmt": "完了 {completed} · 失敗 {failed} · 処理中 {inFlight}",
|
|
568
|
+
"health.providers": "プロバイダー",
|
|
569
|
+
"health.noProviders": "接続済みのプロバイダーはありません。「プロバイダー」から追加してください。",
|
|
570
|
+
"health.quota": "{percent}% 使用{reset}",
|
|
571
|
+
"health.resetsIn": " · {hours}時間後にリセット",
|
|
572
|
+
"health.details": "詳細",
|
|
573
|
+
"health.version": "バージョン",
|
|
574
|
+
"health.runtime": "ルーターのファイル · 起動日時",
|
|
575
|
+
"health.routes": "マッピング",
|
|
576
|
+
"health.cli": "Claude Codeのバージョン",
|
|
577
|
+
"update.check": "アップデートを確認",
|
|
578
|
+
"update.checking": "確認中…",
|
|
579
|
+
"update.latest": "最新バージョンです",
|
|
580
|
+
"update.install": "{latest} にアップデート",
|
|
581
|
+
"update.download": "{latest} を入手",
|
|
582
|
+
"update.checkout": "{latest} が公開されています。これはソースから実行している環境なので、git pullで更新してください。",
|
|
583
|
+
"update.running": "アップデート中…",
|
|
584
|
+
"update.checkFailed": "アップデートを確認できませんでした",
|
|
585
|
+
"update.confirm": "ClaudeRippleを {current} → {latest} にアップデートしますか?処理中のリクエストが終わり次第、ルーターは新しいバージョンで再起動し、このウィンドウも自動で再読み込みされます。",
|
|
586
|
+
"update.started": "アップデートを開始しました。ルーターが新しいバージョンで再開すると、このウィンドウは再読み込みされます。出力は ~/.clauderipple/logs/update.log にあります。",
|
|
587
|
+
"update.failed": "アップデートを開始できませんでした",
|
|
588
|
+
"picker.title": "モデルピッカー",
|
|
589
|
+
"picker.statusHelp": "オン:Claude Desktopのピッカーに、プロバイダーのモデルが実際の名前で表示されます。オフ:マッピングに従い、Claudeのモデル名でそれらのモデルが応答します。",
|
|
590
|
+
"picker.state": "状態",
|
|
591
|
+
"picker.on": "オン",
|
|
592
|
+
"picker.off": "オフ",
|
|
593
|
+
"picker.turnOn": "ピッカーをオンにする",
|
|
594
|
+
"picker.turnOff": "ピッカーをオフにする",
|
|
595
|
+
"picker.last": "直近では {count} 個のモデルを表示しました。",
|
|
596
|
+
"picker.restartHelp": "オンにしたら、Claude Desktopを完全に終了してから開き直してください。",
|
|
597
|
+
"picker.confirmOn": "証明書を信頼するかどうか、OSから確認を求められます(macOSではログインパスワードの入力、Windowsでは証明書のダイアログが表示されます)。ClaudeRippleがパスワードを見ることはありません。続けますか?",
|
|
598
|
+
"picker.working": "処理中",
|
|
599
|
+
"picker.doneOn": "オンにしました。Claude Desktopを完全に終了してから開き直してください。",
|
|
600
|
+
"picker.doneOff": "オフにしました。Claude Desktopを完全に終了してから開き直してください。",
|
|
601
|
+
"slots.title": "モデルマッピング",
|
|
602
|
+
"slots.subtitle": "アプリでClaudeのモデルを選んだとき、実際にどのモデルが応答するかを決めます。変更は自動で保存されます。",
|
|
603
|
+
"slots.pickerHelp": "オン:Claude Desktopのピッカーに、プロバイダーのモデルが実際の名前で表示されます。オフ:上のマッピングに従い、Claudeのモデル名でそれらのモデルが応答します。",
|
|
604
|
+
"slots.pickerModels": "ピッカーに表示するモデル",
|
|
605
|
+
"slots.pickerModelsHelp": "チェックしたモデルはClaude Desktopのピッカーに表示され、選ぶとそのモデルが直接応答します。新しく追加したモデルは次のセッションから選べます(実行中のセッションは開始時のリストのままです)。",
|
|
606
|
+
"slots.add": "+ マッピングを追加",
|
|
607
|
+
"slots.th.claude": "Claudeアプリで選ぶモデル",
|
|
608
|
+
"slots.th.target": "実際に応答するモデル",
|
|
609
|
+
"slots.th.effort": "推論強度",
|
|
610
|
+
"slots.passthrough": "通常どおりClaudeが応答",
|
|
611
|
+
"slots.noProviderModels": "先にプロバイダーを接続して、使うモデルを選んでください。",
|
|
612
|
+
"slots.noChanges": "マッピングはありません。すべてのモデルにClaudeが応答します。",
|
|
613
|
+
"slots.duplicate": "Claudeのモデルは1回しかマッピングできません。",
|
|
614
|
+
"slots.effortHint": "アプリで選んだ推論強度にモデルが対応していない場合、ClaudeRippleは最も近いレベルを代わりに送ります(例:xhigh → high)",
|
|
615
|
+
"slots.noEffort": "このモデルは推論強度を受け付けません",
|
|
616
|
+
"pool.ready": "使用中",
|
|
617
|
+
"pool.cooling": "{seconds}秒後に復帰",
|
|
618
|
+
"pool.quarantined": "拒否されました — キーを確認してください",
|
|
619
|
+
"slots.modelSlots": "Claude Code自身のモデルスロット",
|
|
620
|
+
"slots.modelSlotsHelp": "これらはリクエストが作られる前にClaude Codeが決めるため、マッピングでは変更できません。空欄のままだとClaudeが応答し、Claudeのクォータを消費します。特にWeb検索は小型・高速モデルで動くため、そのスロットを移さない限り、ルーティング済みのセッションでも検索はClaudeのクォータで行われます。変更はインストール時にsettings.jsonへ書き込まれます。",
|
|
621
|
+
"slots.noWebSearch": "Web検索は使えません",
|
|
622
|
+
"slots.noWebSearchWarn": "保存しましたが、このモデルではWeb検索が失敗します。ClaudeRippleはこのモデル経由で検索を実行できません。モデル自体は検索できる場合もあります。デフォルトのままにしておけば、Claudeが検索します。",
|
|
623
|
+
"slots.slotDefault": "デフォルト(Claude)",
|
|
624
|
+
"slots.slot.smallFast": "小型・高速モデル",
|
|
625
|
+
"slots.slot.subagent": "サブエージェント",
|
|
626
|
+
"slots.slot.main": "セッションのデフォルト",
|
|
627
|
+
"slots.slotHelp.smallFast": "Web検索、タイトル生成、分類",
|
|
628
|
+
"slots.slotHelp.subagent": "モデルを指定していないサブエージェント",
|
|
629
|
+
"slots.slotHelp.main": "セッション開始時のモデル",
|
|
630
|
+
"slots.slotSaved": "モデルスロットを保存しました。新しいセッションから有効になります。",
|
|
631
|
+
"slots.windowGlobal": "デフォルト",
|
|
632
|
+
"slots.windowHelp": "このモデルのコンテキストウィンドウ(トークン数)。ルーティングされるモデルはそれぞれ異なるため、モデルごとに持ちます。空欄の場合はプロバイダーが報告した値、それもなければ全体のデフォルト値を使います。コンパクションが始まる位置ではなく、モデル本来のウィンドウサイズを入力してください。",
|
|
633
|
+
"providers.title": "プロバイダー",
|
|
634
|
+
"providers.subtitle": "接続済みのサービスとアカウントをまとめて管理します。プロバイダーを選ぶと、その設定とアカウントが開きます。",
|
|
635
|
+
"providers.search": "プロバイダーを検索…",
|
|
636
|
+
"providers.overview": "概要",
|
|
637
|
+
"providers.accounts": "アカウント",
|
|
638
|
+
"providers.settings": "設定",
|
|
639
|
+
"providers.modelsTab": "モデル",
|
|
640
|
+
"providers.selectedModels": "選択中のモデル",
|
|
641
|
+
"providers.modelsCountShort": "{count} 個のモデル",
|
|
642
|
+
"providers.noSelection": "左の一覧からプロバイダーを選んでください。",
|
|
643
|
+
"providers.rotationOn": "ローテーション オン",
|
|
644
|
+
"providers.rotationOff": "ローテーション オフ",
|
|
645
|
+
"providers.rotationSaving": "ローテーション設定を保存中…",
|
|
646
|
+
"providers.rotationSaved": "アカウントローテーション設定を保存しました",
|
|
647
|
+
"providers.accountCount": "接続済みアカウント {count} 件",
|
|
648
|
+
"providers.accountCountHelp": "現在のClaudeのログインと、ClaudeRippleに追加したアカウントを含みます。",
|
|
649
|
+
"providers.accountPoolTitle": "Claudeアカウント",
|
|
650
|
+
"providers.accountPoolSubtitle": "1つの会話は1つのアカウントで続きます。アカウントを切り替えるのは、出力が始まる前にクォータ超過や認証エラーが起きた場合だけです。",
|
|
651
|
+
"providers.addClaudeAccount": "+ Claudeアカウントを追加",
|
|
652
|
+
"providers.currentAccountHelp": "Claude CodeまたはClaude Desktopが現在使っている外部のログインです。ClaudeRippleからは削除できません。",
|
|
653
|
+
"providers.addedAccountHelp": "ClaudeRippleがこのOAuthグラントをこのコンピューターに保存し、自動で更新します。",
|
|
654
|
+
"providers.reauthAction": "再ログイン",
|
|
655
|
+
"providers.dangerZone": "追加したアカウントの管理",
|
|
656
|
+
"providers.saveSettings": "設定を保存",
|
|
657
|
+
"providers.connection": "接続",
|
|
658
|
+
"providers.authentication": "認証",
|
|
659
|
+
"providers.rotationRequired": "追加したアカウントがClaudeアプリとClaude Codeのリクエストに使われるのは、アカウントローテーションがオンのときだけです。",
|
|
660
|
+
"providers.anthropic": "Claude (Anthropic)",
|
|
661
|
+
"providers.anthropicHelp": "Claudeのサブスクリプションアカウントをローテーションしたり、CodexなどのOpenAI形式のツールにClaudeモデルを提供したりします。",
|
|
662
|
+
"providers.anthropicIngressOnly": "アカウントローテーションがオフの場合、ここで選んだモデルはCodexなどのOpenAI形式のツールにのみ提供され、Claudeアプリのマッピングには表示されません。",
|
|
663
|
+
"providers.anthropicPoolRouting": "アカウントローテーションがオンの場合、プロンプトキャッシュを保つため、ClaudeアプリとClaude Codeのリクエストは会話ごとに1つのアカウントで処理されます。応答が始まる前に429または認証拒否が返ると、リクエストは次のアカウントに移ります。複数のサブスクリプションの利用は、Anthropicの規約やアカウント制限の対象となる場合があります。正当な権限を持つ自分のアカウントだけを使ってください。",
|
|
664
|
+
"providers.anthropicLoginReuse": "ログインを再利用",
|
|
665
|
+
"providers.anthropicPoolOn": "アカウントローテーション",
|
|
666
|
+
"providers.anthropicPool": "Claudeアカウントを自動でローテーション",
|
|
667
|
+
"providers.anthropicPoolHelp": "現在のClaudeのログインに加え、下の追加アカウントを使います。クォータ超過や認証エラーがない限り、会話は同じアカウントで続きます。",
|
|
668
|
+
"providers.anthropicCurrent": "現在のログイン",
|
|
669
|
+
"providers.anthropicReauth": "再ログイン",
|
|
670
|
+
"providers.anthropicNoAccounts": "ClaudeRippleに追加されたアカウントはありません。",
|
|
671
|
+
"providers.anthropicRenamePrompt": "このアカウントの表示名",
|
|
672
|
+
"providers.anthropicRemoveConfirm": "Claudeアカウント {name} をClaudeRippleから削除しますか?",
|
|
673
|
+
"providers.anthropicLogoutAll": "追加したアカウントをすべて削除",
|
|
674
|
+
"providers.anthropicLogoutAllConfirm": "ClaudeRippleに追加したClaudeアカウントをすべて削除しますか?Claude CodeとClaude Desktopの現在のログインは変更されません。",
|
|
675
|
+
"providers.anthropicAuthClaudeCode": "Claude Codeのログインを再利用(自動)",
|
|
676
|
+
"providers.anthropicAuthApiKey": "APIキー",
|
|
677
|
+
"providers.anthropicCredentialsHelp": "Claude CodeのログインかAnthropicのAPIキーを選んでください。",
|
|
678
|
+
"providers.anthropicSourceObserved": "Claude Desktopのセッションから検出",
|
|
679
|
+
"providers.anthropicSourceClaudeCode": "ターミナルのClaudeログイン",
|
|
680
|
+
"providers.anthropicSourceTokenFile": "ClaudeRippleのトークン",
|
|
681
|
+
"providers.anthropicSourceMissing": "なし — 下から接続してください",
|
|
682
|
+
"providers.anthropicLogin": "+ Claudeアカウントを追加",
|
|
683
|
+
"providers.anthropicOAuthTitle": "Claudeアカウントを追加",
|
|
684
|
+
"providers.anthropicOAuthWarning": "サードパーティのプロキシ経由でClaudeサブスクリプションのOAuthを使うことは、Anthropicがサポートする連携方法ではなく、規約やアカウント制限の対象となる場合があります。自分のアカウントだけを、許可された目的にのみ使ってください。",
|
|
685
|
+
"providers.anthropicOAuthAccept": "リスクを理解し、OAuthでの続行を希望します",
|
|
686
|
+
"providers.anthropicOAuthContinue": "OAuthで続行",
|
|
687
|
+
"providers.anthropicLogout": "接続を解除",
|
|
688
|
+
"providers.anthropicLoginDone": "Claudeサブスクリプションを接続しました",
|
|
689
|
+
"providers.anthropicSignInBrowser": "ブラウザでClaudeにログインしてください。ウィンドウが開かない場合は、下のリンクを使ってください。",
|
|
690
|
+
"providers.anthropicSignInLink": "ログインページを開く",
|
|
691
|
+
"providers.anthropicSignInPaste": "ログイン後、ページに表示されたコードをここに貼り付けてください。",
|
|
692
|
+
"providers.anthropicSignInSubmit": "コードを送信",
|
|
693
|
+
"providers.anthropicSignInManual": "コードを貼り付けてやり直す",
|
|
694
|
+
"providers.anthropicSignInWaiting": "ブラウザでの操作を待っています…(最大5分)",
|
|
695
|
+
"providers.anthropicSignInFailed": "ログインに失敗しました",
|
|
696
|
+
"providers.anthropicSignedInActive": "ClaudeRippleのログインを使用中です。",
|
|
697
|
+
"providers.anthropicSignedInStandby": "ClaudeRippleのログインも保存されています。上のソースが使えなくなった場合は、こちらに切り替わります。",
|
|
698
|
+
"providers.add": "+ プロバイダーを追加",
|
|
699
|
+
"providers.refresh": "すべてテスト",
|
|
700
|
+
"providers.check": "接続をテスト",
|
|
701
|
+
"providers.checking": "確認中",
|
|
702
|
+
"providers.empty": "接続済みのプロバイダーはまだありません。上のボタンから追加してください。",
|
|
703
|
+
"providers.modelsCount": "使用中のモデル {count} 個:{names}",
|
|
704
|
+
"providers.noModels": "モデルが選ばれていません。「編集」から選んでください。",
|
|
705
|
+
"providers.removeConfirm": "プロバイダー {name} を削除しますか?このプロバイダーを使うモデルマッピングも削除されます。",
|
|
706
|
+
"providers.choose": "プロバイダーを追加",
|
|
707
|
+
"providers.chooseHelp": "接続するサービスを選んでください。",
|
|
708
|
+
"providers.chatgpt": "ChatGPTサブスクリプション",
|
|
709
|
+
"providers.chatgptHelp": "ChatGPT Plus/ProのサブスクリプションでGPTモデルを使います。ログインだけで使え、APIキーは不要です。",
|
|
710
|
+
"providers.presetHelp": "APIキーを貼り付けるだけで完了です。",
|
|
711
|
+
"providers.openaiGroup": "OpenAI互換",
|
|
712
|
+
"providers.openaiGroupHelp": "ClaudeRippleがリクエストをOpenAI APIの形式に変換します。",
|
|
713
|
+
"providers.verified": "公式ドキュメントで確認済み",
|
|
714
|
+
"providers.custom": "手動で入力",
|
|
715
|
+
"providers.customName": "新しいプロバイダー",
|
|
716
|
+
"providers.customHelp": "Anthropic互換のAPIなら、URLとキーで何でも接続できます。",
|
|
717
|
+
"providers.addTitle": "プロバイダーを追加",
|
|
718
|
+
"providers.edit": "プロバイダーを編集",
|
|
719
|
+
"providers.name": "名前",
|
|
720
|
+
"providers.nameHelp": "一覧やマッピングでこのプロバイダーを表す名前です。",
|
|
721
|
+
"providers.nameRequired": "名前を入力してください。",
|
|
722
|
+
"providers.apiKey": "APIキー",
|
|
723
|
+
"providers.keyHelp": "プロバイダーのサイトで発行されたAPIキーです。このコンピューターの設定ファイルにのみ保存されます。",
|
|
724
|
+
"providers.keyPlaceholder": "APIキーを貼り付け",
|
|
725
|
+
"providers.keySaved": "保存済みのキーをそのまま使います。置き換える場合は新しいキーを貼り付けてください。",
|
|
726
|
+
"providers.url": "APIベースURL",
|
|
727
|
+
"providers.urlHelp": "Anthropic互換エンドポイントのベースURLです。サービスのドキュメントと異なる場合だけ変更してください。",
|
|
728
|
+
"providers.openaiUrlHelp": "OpenAI互換APIのベースURLです。リクエストはChat CompletionsまたはResponsesエンドポイント向けに変換されます。",
|
|
729
|
+
"providers.wire": "APIの通信形式",
|
|
730
|
+
"providers.wireHelp": "ほとんどのプロバイダーではChat Completionsを使います。Responsesは、プロバイダーがステートレスなResponses APIに対応している場合だけ選んでください。",
|
|
731
|
+
"providers.urlRequired": "有効なURLを入力してください。",
|
|
732
|
+
"providers.keyType": "認証ヘッダー",
|
|
733
|
+
"providers.keyTypeHelp": "通常はx-api-keyです。Authorization: Bearerは、サービスのドキュメントで指定されている場合だけ選んでください。",
|
|
734
|
+
"providers.extraHeaders": "追加のHTTPヘッダー",
|
|
735
|
+
"providers.extraHeadersHelp": "サービスが必要とするヘッダーだけを、1行に1つ「name: value」の形式で入力します。",
|
|
736
|
+
"providers.models": "使用するモデル",
|
|
737
|
+
"providers.modelsHelp": "チェックしたモデルが「モデルマッピング」の一覧に表示されます。",
|
|
738
|
+
"providers.modelsFound": "プロバイダーが返したモデル一覧です。",
|
|
739
|
+
"providers.modelsFallback": "一覧を取得できなかったため、既知のデフォルトモデルを表示しています。",
|
|
740
|
+
"measure.running": "モデルの対応機能を測定中…({done}/{total})",
|
|
741
|
+
"measure.help": "各モデルがどの通信形式で応答し、どの推論強度を受け付けるかを調べます。公開モデルカタログ(models.dev)に載っていればそこから、なければモデルに直接問い合わせます。",
|
|
742
|
+
"measure.done": "測定結果:{summary}",
|
|
743
|
+
"measure.nothing": "応答したモデルがなかったため、何も測定できませんでした。",
|
|
744
|
+
"measure.notEntitled": "{models}:プロバイダー自身のアプリからしか使えません。ここでチェックしても動作しません。",
|
|
745
|
+
"measure.failed": "モデルの対応機能を測定できませんでした",
|
|
746
|
+
"measure.authFailed": "APIキーが拒否されたため、何も測定できませんでした。",
|
|
747
|
+
"providers.probeNotEntitled": "キーは受け付けられましたが、プランで拒否されました。",
|
|
748
|
+
"providerStatus.notEntitled": "プランで拒否",
|
|
749
|
+
"providers.probeOk": "接続しました",
|
|
750
|
+
"providers.probeFailed": "接続できませんでした",
|
|
751
|
+
"providers.apiSoon": "しばらくしてからもう一度お試しください。",
|
|
752
|
+
"providers.showInPicker": "Claudeアプリのピッカーにも実際の名前で表示",
|
|
753
|
+
"providers.pickerOffHint": "現在ピッカーモードがオフのため、チェックしてもまだ表示されません。保存時にオンにするか確認されます。",
|
|
754
|
+
"providers.pickerOffPrompt": "ピッカーモードがオフのため、これらのモデルはまだClaude Desktopのピッカーに表示されません。今すぐオンにしますか?証明書を信頼するかどうか、OSから確認を求められます。",
|
|
755
|
+
"providers.credentials": "ログイン情報の取得元",
|
|
756
|
+
"providers.credentialsHelp": "ChatGPTアカウントのトークンをどこから取得するかを選びます。",
|
|
757
|
+
"providers.authAuto": "自動(ClaudeRippleのログインを優先、なければCodex CLI)",
|
|
758
|
+
"providers.authOwn": "ClaudeRippleでログイン",
|
|
759
|
+
"providers.authBorrow": "Codex CLIのログインを再利用(~/.codex/auth.json)",
|
|
760
|
+
"providers.login": "ログイン方法",
|
|
761
|
+
"providers.loginHelp": "メニューバーアプリの「ChatGPTにログイン…」か、ターミナルでclauderipple loginを実行すると、ブラウザでのログインが開きます。トークンはこのコンピューターから外に出ません。",
|
|
762
|
+
"providers.loginHint": "メニューバーアプリの「ChatGPTにログイン…」を使うか、ターミナルでclauderipple loginを実行してください。",
|
|
763
|
+
"providers.chatgptLogin": "ChatGPTにログイン",
|
|
764
|
+
"providers.chatgptLoginWaiting": "ブラウザでログインを完了してください。完了すると、ここに反映されます。",
|
|
765
|
+
"providers.chatgptLoginDone": "ChatGPTへのログインが完了しました",
|
|
766
|
+
"providers.chatgptAccountsTitle": "ChatGPTアカウント",
|
|
767
|
+
"providers.chatgptAccountsSubtitle": "複数のアカウントがある場合、1つが上限に達すると、同じリクエストを次のアカウントが引き継ぎます。キャッシュを保つため、会話は応答したアカウントで続きます。アカウントは一覧の順に使われます。",
|
|
768
|
+
"providers.addChatgptAccount": "+ ChatGPTアカウントを追加",
|
|
769
|
+
"providers.chatgptAddWaiting": "追加するアカウントでブラウザからログインしてください。追加済みのアカウントが表示された場合は、別のアカウントを選んでください。",
|
|
770
|
+
"providers.chatgptAdded": "ChatGPTアカウントを追加しました",
|
|
771
|
+
"providers.chatgptNoAccounts": "ログイン済みのChatGPTアカウントはありません。",
|
|
772
|
+
"providers.chatgptAccountCount": "{count} 件のアカウント",
|
|
773
|
+
"providers.chatgptCodexHelp": "Codex CLI自身のログインです。ClaudeRippleは読み取るだけで更新はせず、最後に使います。",
|
|
774
|
+
"providers.chatgptOwnHelp": "ClaudeRippleがこのログインを自分のユーザーだけが読めるファイルに保存し、自動で更新します。",
|
|
775
|
+
"providers.chatgptInUse": "使用中",
|
|
776
|
+
"providers.chatgptStandby": "待機中",
|
|
777
|
+
"providers.chatgptPause": "一時停止",
|
|
778
|
+
"providers.chatgptResume": "再開",
|
|
779
|
+
"providers.chatgptPaused": "一時停止中",
|
|
780
|
+
"providers.chatgptClearCooldown": "今すぐ使う",
|
|
781
|
+
"providers.chatgptRemoveConfirm": "ChatGPTアカウント {name} をClaudeRippleから削除しますか?",
|
|
782
|
+
"providers.chatgptReauthHelp": "このログインは期限切れか、拒否されました。同じアカウントで再ログインすると、そのまま元に戻ります。",
|
|
783
|
+
"pool.coolingFor": "{duration}後に復帰",
|
|
784
|
+
"time.hoursMinutes": "{h}時間{m}分",
|
|
785
|
+
"time.minutes": "{m}分",
|
|
786
|
+
"time.seconds": "{s}秒",
|
|
787
|
+
"quota.window5h": "5時間",
|
|
788
|
+
"quota.windowWeek": "週間",
|
|
789
|
+
"quota.windowHours": "{hours}時間",
|
|
790
|
+
"quota.line": "{window} {percent}%",
|
|
791
|
+
"quota.resetAt": "{time}にリセット",
|
|
792
|
+
"providers.effortLevels": "推論強度:{levels}",
|
|
793
|
+
"providers.effortNone": "推論強度を受け付けません",
|
|
794
|
+
"providers.modelEffort": "強度",
|
|
795
|
+
"providers.modelNoEffort": "強度なし",
|
|
796
|
+
"providers.defaultEffort": "デフォルトの推論強度",
|
|
797
|
+
"providers.defaultEffortHelp": "マッピングでもアプリでも推論強度が指定されていないときに使います。",
|
|
798
|
+
"providers.identity": "モデルに自身の情報を伝える(アイデンティティ)",
|
|
799
|
+
"providers.append": "システムプロンプトへの追記",
|
|
800
|
+
"providers.appendHelp": "すべてのリクエストのシステムプロンプトに追加される固定テキストです。頻繁に変えるとプロンプトキャッシュが効かなくなり、コストが上がります。",
|
|
801
|
+
"providerStatus.connected": "接続済み",
|
|
802
|
+
"providerStatus.keyNeeded": "キーが必要",
|
|
803
|
+
"providerStatus.loginNeeded": "ログインが必要",
|
|
804
|
+
"providerStatus.disconnected": "未接続",
|
|
805
|
+
"providerStatus.checking": "確認中",
|
|
806
|
+
"clients.title": "クライアント",
|
|
807
|
+
"clients.subtitle": "ClaudeRippleを使うアプリを設定します。",
|
|
808
|
+
"clients.desktop.title": "Claude Desktop",
|
|
809
|
+
"clients.desktop.help": "モデルピッカーにプロバイダーのモデルを実際の名前で表示するかどうかを選びます。",
|
|
810
|
+
"clients.codex.title": "Codex(アプリとCLI)",
|
|
811
|
+
"clients.codex.help": "Codexの設定(~/.codex/config.toml)にClaudeRippleをプロバイダーとして追加します。ターミナル:`codex --profile clauderipple -m <model>`、Codexアプリ:その設定でclauderippleをデフォルトのプロバイダーにします。",
|
|
812
|
+
"clients.codex.note": "オンにすると、CodexのGPTリクエストもClaudeRippleを経由します。Codexは自身のログインを保ったまま、複数のChatGPTアカウントを追加していれば、1つが上限に達したときに次のアカウントが引き継ぎます。ログアウトは不要です。下の一覧は、Codexで使えるようになるClaudeモデルとAnthropic互換モデルです。",
|
|
813
|
+
"clients.codex.turnOn": "CodexでClaudeRippleを使う",
|
|
814
|
+
"clients.codex.turnOff": "Codexとの接続を解除",
|
|
815
|
+
"clients.claudeCode.title": "ターミナルのClaude Code",
|
|
816
|
+
"clients.claudeCode.help": "ターミナルの`claude`も同じルーターを使います。`/model <name>`で選んでください。",
|
|
817
|
+
"logs.title": "ログ",
|
|
818
|
+
"logs.requests": "リクエスト",
|
|
819
|
+
"logs.raw": "生ログ",
|
|
820
|
+
"logs.lastHour": "直近1時間",
|
|
821
|
+
"logs.autoscroll": "自動スクロール",
|
|
822
|
+
"logs.polling": "3秒ごとに更新",
|
|
823
|
+
"logs.rawPolling": "3秒ごとに更新 · 最新200行",
|
|
824
|
+
"logs.provider": "プロバイダー",
|
|
825
|
+
"logs.all": "すべて",
|
|
826
|
+
"logs.showCountTokens": "トークン数を表示",
|
|
827
|
+
"logs.empty": "リクエストはまだありません。",
|
|
828
|
+
"logs.summary.requests": "リクエスト",
|
|
829
|
+
"logs.summary.success": "成功 / 失敗",
|
|
830
|
+
"logs.summary.input": "入力トークン",
|
|
831
|
+
"logs.summary.output": "出力トークン",
|
|
832
|
+
"logs.summary.duration": "平均応答時間",
|
|
833
|
+
"logs.cacheHit": "キャッシュ {percent}%",
|
|
834
|
+
"logs.th.time": "時刻",
|
|
835
|
+
"logs.th.models": "モデル",
|
|
836
|
+
"logs.th.effort": "強度",
|
|
837
|
+
"logs.th.input": "入力",
|
|
838
|
+
"logs.th.output": "出力",
|
|
839
|
+
"logs.th.duration": "所要時間",
|
|
840
|
+
"logs.th.status": "ステータス",
|
|
841
|
+
"logs.status.ok": "成功",
|
|
842
|
+
"logs.status.error": "エラー",
|
|
843
|
+
"logs.detail.id": "リクエストID",
|
|
844
|
+
"logs.detail.kind": "種類",
|
|
845
|
+
"logs.detail.stop": "停止理由",
|
|
846
|
+
"logs.detail.uncached": "キャッシュなしの入力",
|
|
847
|
+
"logs.detail.cacheRead": "キャッシュ読み取り",
|
|
848
|
+
"logs.detail.cacheWrite": "キャッシュ書き込み",
|
|
849
|
+
"logs.detail.note": "備考",
|
|
850
|
+
"logs.none": "なし",
|
|
851
|
+
"logs.seconds": "{value}秒",
|
|
852
|
+
"about.title": "このアプリについて",
|
|
853
|
+
"about.body": "ClaudeRippleは独立したオープンソースプロジェクトであり、AnthropicおよびOpenAIとは提携関係にありません。ClaudeおよびClaude Codeは、Anthropic, PBCの商標です。",
|
|
854
|
+
"about.license": "ライセンス:GPL-3.0",
|
|
855
|
+
"providers.identityHelp": "システムプロンプトの先頭に「You are <model>, answering through Claude Code」を追加します。オフの場合、モデルが自分をClaudeだと思い込むことがあります。",
|
|
856
|
+
"picker.models": "ピッカーのモデル {count} 個:{names}",
|
|
857
|
+
"picker.lastAt": "Claude Desktopが最後に一覧を取得した日時:{at}",
|
|
858
|
+
"picker.never": "Claude Desktopはまだ一覧を取得していません。完全に終了してから開き直してください。",
|
|
859
|
+
"agentTitle.title": "サブエージェントの名前タグ",
|
|
860
|
+
"agentTitle.help": "バックグラウンドタスクパネルのサブエージェントのタイトルの先頭に、実際のモデルと推論強度を付けます(例:Terra·high · Review)。Claude Codeのフックで動作し、新しいサブエージェントから適用されます。",
|
|
861
|
+
"agentTitle.on": "オン",
|
|
862
|
+
"agentTitle.off": "オフ",
|
|
863
|
+
"agentTitle.turnOn": "オンにする",
|
|
864
|
+
"agentTitle.turnOff": "オフにする",
|
|
865
|
+
"statusMod.title": "ルート表示とリクエストログ",
|
|
866
|
+
"statusMod.help": "Claude Codeのプロンプトの上に、直前のリクエストの行き先(モデル、プロバイダー、キャッシュヒット率、時間)を表示します。Logボタンか/ripple-logで、リクエストログをサイドペインに開きます。×か/ripple-barで、この行を隠したり戻したりできます。また、Agent呼び出しで別のモデルが指定されてもワーカーは自分のモデルで動き、[[ripple: name@level]]マーカーはプロンプト内のどこにあっても読み取られます。Claude Codeのmodで動作し、今後開くセッションから適用されます。",
|
|
867
|
+
"statusMod.turnOn": "オンにする",
|
|
868
|
+
"statusMod.turnOff": "オフにする",
|
|
869
|
+
"statusMod.saved": "保存しました。今後開くClaude Codeのセッションから適用されます。",
|
|
870
|
+
"workerTools.title": "ワーカーツール",
|
|
871
|
+
"workerTools.help": "ClaudeRippleが生成するワーカーに、読み取り・編集・実行・検索・スキルのツールだけを渡します。セッションのMCPサーバーやプラグインのツールがワーカーのリクエストごとに含まれなくなり、入力が大きく減りますが、そのワーカーはブラウザやiOSシミュレーターを使えません。それらが必要なワーカーには、~/.claude/agentsに自分でエージェントファイルを用意してください。ClaudeRippleがそのファイルに触れることはありません。新しいセッションから適用されます。",
|
|
872
|
+
"workerTools.on": "オン",
|
|
873
|
+
"workerTools.off": "オフ(セッションのツールをすべて継承)",
|
|
874
|
+
"workerTools.turnOn": "ツールを制限",
|
|
875
|
+
"workerTools.turnOff": "制限を解除",
|
|
876
|
+
"providers.probeNoCredits": "キーは有効ですが、このアカウントにクレジットがないため応答がありませんでした。プロバイダーのサイトでチャージしてください。",
|
|
877
|
+
"providers.probeBadKey": "APIキーが拒否されました。キーを確認してください。",
|
|
878
|
+
"providers.searchModels": "モデルを検索(名前またはID)",
|
|
879
|
+
"providers.customModelPlaceholder": "モデルIDを入力(例:abliterated-model)",
|
|
880
|
+
"providers.customModelAdd": "追加",
|
|
881
|
+
"providers.customModelHint": "このプロバイダーはモデル一覧を返しませんでした。プロバイダーのドキュメントにあるモデルIDを下に入力して追加してください。",
|
|
882
|
+
"providers.google": "Google Gemini",
|
|
883
|
+
"providers.googleHelp": "Google AI StudioのAPIキー、またはGoogleアカウント(Antigravity)でGeminiモデルを使います。",
|
|
884
|
+
"providers.googleKeyHelp": "aistudio.google.com/apikeyで作成できます。無料枠では、Googleが入力内容を自社製品の改善に使う場合があるため、機密性の高いコードには有料のキーを使ってください。",
|
|
885
|
+
"providers.googleAntigravity": "Antigravityログイン",
|
|
886
|
+
"providers.googleAuthApiKey": "AI Studio APIキー",
|
|
887
|
+
"providers.googleAuthHelp": "APIキーはGoogleがサポートする方法です。Antigravityログインは、Googleの規約で禁止されている方法でGoogleアカウントのサブスクリプションを使います。",
|
|
888
|
+
"providers.googleLogin": "Googleアカウント",
|
|
889
|
+
"providers.addGoogleAccount": "+ Googleでログイン",
|
|
890
|
+
"providers.googleWarning": "GoogleのAntigravity利用規約(第6条)とGemini CLIのFAQは、これらの認証情報をGoogle自身のアプリ以外から使うことを違反と明記しています。Googleは2026年2月、この方法で使われていた多数のアカウントを停止し、再び違反した場合は永久停止になると表明しました。ClaudeRippleはGoogleと提携関係にありません。\n\nサブアカウントの使用をおすすめします。このリスクを受け入れてログインしますか?",
|
|
891
|
+
"providers.googleWarningShort": "Googleの規約はこの使い方を禁止しており、実際にアカウントが停止された例があります。サブアカウントの使用をおすすめします。",
|
|
892
|
+
"providers.googleOpenManually": "ブラウザが開きませんでした。このアドレスを手動で開いてください。",
|
|
893
|
+
"providers.googleAdded": "Googleアカウントを追加しました",
|
|
894
|
+
"providers.googleSignInFirst": "ログイン済みのGoogleアカウントがありません。先にログインしてください。",
|
|
895
|
+
"providers.googleRemoveConfirm": "{name} をClaudeRippleから削除しますか?Googleアカウント自体には影響しません。",
|
|
896
|
+
"providers.googleProject": "プロジェクト {id}",
|
|
897
|
+
"providers.googleOwnHelp": "ClaudeRippleがこのログインを自分のユーザーだけが読めるファイルに保存し、自動で更新します。",
|
|
898
|
+
"providers.googleVerifyNeeded": "Googleによる確認が必要",
|
|
899
|
+
"providers.googleVerifyAction": "Googleで確認",
|
|
900
|
+
"providers.googleRecheck": "再確認",
|
|
901
|
+
"providers.googleVerified": "確認できました。このアカウントは再び応答します。",
|
|
902
|
+
"providers.googleStillUnverified": "Googleはまだ確認を求めています。ページの手順を最後まで済ませたか確かめてください。",
|
|
903
|
+
"providers.googleVerifyUnknown": "今は確認できませんでした。次のリクエスト時に確認します。",
|
|
904
|
+
"providers.googleVerifyHelp": "Googleは、このアカウントを使う前に確認を求めています。このアカウントでログインしたブラウザでページを開き、手順を済ませてください。次のリクエストからは通常どおり応答します。",
|
|
905
|
+
"providers.googleNoAccounts": "ログイン済みのGoogleアカウントはありません。",
|
|
906
|
+
"providers.googleAccountsTitle": "Googleアカウント",
|
|
907
|
+
"providers.googleAccountsSubtitle": "1つの会話は1つのアカウントで続きます。上限に達した場合は、応答が始まる前に次のアカウントへ移ります。",
|
|
908
|
+
"providers.googleLoginWaiting": "ブラウザでのGoogleログインを待っています…",
|
|
909
|
+
"providers.modelsSummary": "{total} 個中 {selected} 個を選択",
|
|
910
|
+
"providers.modelsHidden": "ほかに {hidden} 個 — 検索して探してください",
|
|
911
|
+
"providers.modelsFoundMany": "プロバイダーが返した一覧です。数が多いので、検索して使うものだけにチェックしてください。",
|
|
912
|
+
"providers.modelsFoundLive": "ChatGPTのカタログから {n} 個のモデルを取得しました。新しいモデルはチェックなしで追加されます。",
|
|
913
|
+
"slots.saving": "保存中…",
|
|
914
|
+
"slots.saved": "保存しました · すぐに反映されます",
|
|
915
|
+
},
|
|
916
|
+
es: {
|
|
917
|
+
"brand": "ClaudeRipple",
|
|
918
|
+
"nav.health": "Estado",
|
|
919
|
+
"nav.slots": "Asignación de modelos",
|
|
920
|
+
"nav.providers": "Proveedores",
|
|
921
|
+
"nav.clients": "Clientes",
|
|
922
|
+
"nav.logs": "Registros",
|
|
923
|
+
"nav.about": "Acerca de",
|
|
924
|
+
"lang.label": "Idioma",
|
|
925
|
+
"common.save": "Guardar",
|
|
926
|
+
"common.saved": "Guardado.",
|
|
927
|
+
"common.saveFailed": "No se pudo guardar.",
|
|
928
|
+
"common.loadFailed": "No se pudo cargar.",
|
|
929
|
+
"common.actionFailed": "No se pudo completar la acción.",
|
|
930
|
+
"common.cancel": "Cancelar",
|
|
931
|
+
"common.edit": "Editar",
|
|
932
|
+
"common.remove": "Quitar",
|
|
933
|
+
"common.show": "Mostrar",
|
|
934
|
+
"common.hide": "Ocultar",
|
|
935
|
+
"common.advanced": "Avanzado",
|
|
936
|
+
"common.notAvailable": "—",
|
|
937
|
+
"health.title": "Estado",
|
|
938
|
+
"health.subtitle": "Conexión de Claude Desktop, proveedores y selector de modelos; se actualiza cada 5 s.",
|
|
939
|
+
"health.desktop": "Conexión de Claude Desktop",
|
|
940
|
+
"health.connection": "Conexión",
|
|
941
|
+
"health.connected": "Conectado",
|
|
942
|
+
"health.notConnected": "No conectado",
|
|
943
|
+
"health.disconnected": "No conectado",
|
|
944
|
+
"health.connectedHelp": "Las solicitudes de la pestaña Code de Claude Desktop pasan por ClaudeRipple.",
|
|
945
|
+
"health.notConnectedHelp": "Claude Desktop no está pasando por ClaudeRipple. Inicia el router desde la app de la barra de menús o ejecuta clauderipple install.",
|
|
946
|
+
"health.requests": "Solicitudes (desde que se inició el router)",
|
|
947
|
+
"health.requestCount": "Número de solicitudes",
|
|
948
|
+
"health.requestsFmt": "{completed} completadas · {failed} fallidas · {inFlight} en curso",
|
|
949
|
+
"health.providers": "Proveedores",
|
|
950
|
+
"health.noProviders": "No hay proveedores conectados. Añade uno en Proveedores.",
|
|
951
|
+
"health.quota": "{percent}% usado{reset}",
|
|
952
|
+
"health.resetsIn": " · se restablece en {hours} h",
|
|
953
|
+
"health.details": "Detalles",
|
|
954
|
+
"health.version": "Versión",
|
|
955
|
+
"health.runtime": "Archivos del router · iniciado",
|
|
956
|
+
"health.routes": "Asignaciones",
|
|
957
|
+
"health.cli": "Versión de Claude Code CLI",
|
|
958
|
+
"update.check": "Buscar actualizaciones",
|
|
959
|
+
"update.checking": "Comprobando…",
|
|
960
|
+
"update.latest": "Tienes la última versión.",
|
|
961
|
+
"update.install": "Actualizar a {latest}",
|
|
962
|
+
"update.download": "Descargar {latest}",
|
|
963
|
+
"update.checkout": "Ya está disponible {latest}. Esta es una copia del código fuente; actualízala con git pull.",
|
|
964
|
+
"update.running": "Actualizando…",
|
|
965
|
+
"update.checkFailed": "No se pudo comprobar si hay actualizaciones.",
|
|
966
|
+
"update.confirm": "¿Actualizar ClaudeRipple {current} → {latest}? El router se reinicia con la nueva versión cuando terminan las solicitudes en curso, y esta ventana se recarga sola.",
|
|
967
|
+
"update.started": "La actualización ha comenzado. Esta ventana se recargará cuando el router vuelva a funcionar con la nueva versión. La salida queda en ~/.clauderipple/logs/update.log.",
|
|
968
|
+
"update.failed": "No se pudo iniciar la actualización.",
|
|
969
|
+
"picker.title": "Selector de modelos",
|
|
970
|
+
"picker.statusHelp": "Activado: los modelos de los proveedores aparecen con su nombre real en el selector de Claude Desktop. Desactivado: responden bajo nombres de Claude según la asignación.",
|
|
971
|
+
"picker.state": "Estado",
|
|
972
|
+
"picker.on": "Activado",
|
|
973
|
+
"picker.off": "Desactivado",
|
|
974
|
+
"picker.turnOn": "Activar el selector",
|
|
975
|
+
"picker.turnOff": "Desactivar el selector",
|
|
976
|
+
"picker.last": "La última vez mostró {count} modelos.",
|
|
977
|
+
"picker.restartHelp": "Después de activarlo, cierra Claude Desktop por completo y vuelve a abrirlo.",
|
|
978
|
+
"picker.confirmOn": "Tu sistema operativo te pedirá que confirmes que confías en el certificado (macOS pide tu contraseña de inicio de sesión; Windows muestra un cuadro de diálogo del certificado). ClaudeRipple nunca ve tu contraseña. ¿Continuar?",
|
|
979
|
+
"picker.working": "Procesando.",
|
|
980
|
+
"picker.doneOn": "Activado. Cierra Claude Desktop por completo y vuelve a abrirlo.",
|
|
981
|
+
"picker.doneOff": "Desactivado. Cierra Claude Desktop por completo y vuelve a abrirlo.",
|
|
982
|
+
"slots.title": "Asignación de modelos",
|
|
983
|
+
"slots.subtitle": "Decide qué modelo responde realmente cuando eliges un modelo de Claude en la app. Los cambios se guardan automáticamente.",
|
|
984
|
+
"slots.pickerHelp": "Activado: los modelos de los proveedores aparecen con su nombre real en el selector de Claude Desktop. Desactivado: responden bajo nombres de Claude según la asignación de arriba.",
|
|
985
|
+
"slots.pickerModels": "Modelos que se muestran en el selector",
|
|
986
|
+
"slots.pickerModelsHelp": "Los modelos marcados aparecen en el selector de Claude Desktop; si eliges uno, responde directamente. Los modelos recién añadidos se pueden elegir a partir de la siguiente sesión (una sesión en curso conserva la lista con la que empezó).",
|
|
987
|
+
"slots.add": "+ Añadir asignación",
|
|
988
|
+
"slots.th.claude": "Seleccionado en la app de Claude",
|
|
989
|
+
"slots.th.target": "Modelo que responde",
|
|
990
|
+
"slots.th.effort": "Esfuerzo de razonamiento",
|
|
991
|
+
"slots.passthrough": "Claude responde como siempre",
|
|
992
|
+
"slots.noProviderModels": "Primero conecta un proveedor y elige sus modelos.",
|
|
993
|
+
"slots.noChanges": "No hay asignaciones. Todos los modelos responden como Claude.",
|
|
994
|
+
"slots.duplicate": "Un modelo de Claude solo se puede asignar una vez.",
|
|
995
|
+
"slots.effortHint": "Si el modelo no admite el esfuerzo elegido en la app, ClaudeRipple envía el nivel más cercano. (Por ejemplo: xhigh → high)",
|
|
996
|
+
"slots.noEffort": "Este modelo no admite esfuerzo de razonamiento",
|
|
997
|
+
"pool.ready": "en uso",
|
|
998
|
+
"pool.cooling": "vuelve en {seconds} s",
|
|
999
|
+
"pool.quarantined": "rechazada — revisa la clave",
|
|
1000
|
+
"slots.modelSlots": "Slots de modelos de Claude Code",
|
|
1001
|
+
"slots.modelSlotsHelp": "Claude Code selecciona estos modelos antes de crear la solicitud, así que las asignaciones no se aplican a ellos. Si los slots se dejan vacíos, responde Claude y se consume su cuota. En particular, la búsqueda web usa el modelo pequeño y rápido, así que una sesión redirigida sigue consumiendo cuota de Claude al buscar hasta que se cambie ese slot. Los cambios se escriben en settings.json durante la instalación.",
|
|
1002
|
+
"slots.noWebSearch": "sin búsqueda web aquí",
|
|
1003
|
+
"slots.noWebSearchWarn": "Guardado, pero la búsqueda web fallará con este modelo: ClaudeRipple no puede hacer búsquedas a través de él. Puede que el propio modelo sí pueda; si lo dejas en el valor predeterminado, Claude se encarga de buscar.",
|
|
1004
|
+
"slots.slotDefault": "predeterminado (Claude)",
|
|
1005
|
+
"slots.slot.smallFast": "Modelo pequeño y rápido",
|
|
1006
|
+
"slots.slot.subagent": "Subagentes",
|
|
1007
|
+
"slots.slot.main": "Predeterminado de la sesión",
|
|
1008
|
+
"slots.slotHelp.smallFast": "búsqueda web, títulos, clasificadores",
|
|
1009
|
+
"slots.slotHelp.subagent": "un subagente que no indica un modelo propio",
|
|
1010
|
+
"slots.slotHelp.main": "con el que empieza una sesión",
|
|
1011
|
+
"slots.slotSaved": "Slots de modelos guardados. Se aplican en una sesión nueva.",
|
|
1012
|
+
"slots.windowGlobal": "predeterminado",
|
|
1013
|
+
"slots.windowHelp": "La ventana de contexto de este modelo, en tokens. Los modelos redirigidos no comparten una, así que cada uno tiene la suya. Si se deja en blanco, se usa la que indicó el proveedor o, si no la indicó, el valor predeterminado global. Introduce la ventana real del modelo, no un punto de compactación.",
|
|
1014
|
+
"providers.title": "Proveedores",
|
|
1015
|
+
"providers.subtitle": "Gestiona en un solo lugar los servicios y las cuentas conectados. Elige un proveedor para abrir su configuración y sus cuentas.",
|
|
1016
|
+
"providers.search": "Buscar proveedores…",
|
|
1017
|
+
"providers.overview": "Resumen",
|
|
1018
|
+
"providers.accounts": "Cuentas",
|
|
1019
|
+
"providers.settings": "Configuración",
|
|
1020
|
+
"providers.modelsTab": "Modelos",
|
|
1021
|
+
"providers.selectedModels": "Modelos seleccionados",
|
|
1022
|
+
"providers.modelsCountShort": "{count} modelos",
|
|
1023
|
+
"providers.noSelection": "Selecciona un proveedor a la izquierda.",
|
|
1024
|
+
"providers.rotationOn": "Rotación activada",
|
|
1025
|
+
"providers.rotationOff": "Rotación desactivada",
|
|
1026
|
+
"providers.rotationSaving": "Guardando la rotación…",
|
|
1027
|
+
"providers.rotationSaved": "Rotación de cuentas guardada.",
|
|
1028
|
+
"providers.accountCount": "{count} cuentas conectadas",
|
|
1029
|
+
"providers.accountCountHelp": "Incluye la sesión actual de Claude y las cuentas añadidas a ClaudeRipple.",
|
|
1030
|
+
"providers.accountPoolTitle": "Cuentas de Claude",
|
|
1031
|
+
"providers.accountPoolSubtitle": "Una conversación se mantiene en una sola cuenta. ClaudeRipple solo cambia de cuenta si la cuota o la autenticación fallan antes de que empiece la respuesta.",
|
|
1032
|
+
"providers.addClaudeAccount": "+ Añadir cuenta de Claude",
|
|
1033
|
+
"providers.currentAccountHelp": "El inicio de sesión externo que usan ahora Claude Code o Claude Desktop. ClaudeRipple no puede quitarlo.",
|
|
1034
|
+
"providers.addedAccountHelp": "ClaudeRipple guarda esta autorización OAuth en este equipo y la renueva automáticamente.",
|
|
1035
|
+
"providers.reauthAction": "Volver a iniciar sesión",
|
|
1036
|
+
"providers.dangerZone": "Gestión de cuentas añadidas",
|
|
1037
|
+
"providers.saveSettings": "Guardar configuración",
|
|
1038
|
+
"providers.connection": "Conexión",
|
|
1039
|
+
"providers.authentication": "Autenticación",
|
|
1040
|
+
"providers.rotationRequired": "Las cuentas añadidas solo se usan para las solicitudes de la app de Claude y de Claude Code si la rotación de cuentas está activada.",
|
|
1041
|
+
"providers.anthropic": "Claude (Anthropic)",
|
|
1042
|
+
"providers.anthropicHelp": "Rota cuentas de suscripción de Claude o sirve modelos de Claude a herramientas de estilo OpenAI, como Codex.",
|
|
1043
|
+
"providers.anthropicIngressOnly": "Con la rotación de cuentas desactivada, los modelos elegidos aquí solo se sirven a herramientas de estilo OpenAI, como Codex, y no aparecen en las asignaciones de la app de Claude.",
|
|
1044
|
+
"providers.anthropicPoolRouting": "Con la rotación de cuentas activada, las solicitudes de la app de Claude y de Claude Code se mantienen en una cuenta por conversación para conservar la caché de prompts. Un 429 o un rechazo de autenticación antes de que empiece la respuesta pasa la solicitud a la siguiente cuenta. Usar varias suscripciones puede estar sujeto a los términos de Anthropic y a restricciones de cuenta; usa solo tus propias cuentas autorizadas.",
|
|
1045
|
+
"providers.anthropicLoginReuse": "Reutilizar inicio de sesión",
|
|
1046
|
+
"providers.anthropicPoolOn": "Rotación de cuentas",
|
|
1047
|
+
"providers.anthropicPool": "Rotar cuentas de Claude automáticamente",
|
|
1048
|
+
"providers.anthropicPoolHelp": "Usa la sesión actual de Claude más las cuentas adicionales de abajo. Una conversación se mantiene en su cuenta salvo que falle la cuota o la autenticación.",
|
|
1049
|
+
"providers.anthropicCurrent": "Sesión actual",
|
|
1050
|
+
"providers.anthropicReauth": "Volver a iniciar sesión",
|
|
1051
|
+
"providers.anthropicNoAccounts": "No se ha añadido ninguna cuenta a ClaudeRipple.",
|
|
1052
|
+
"providers.anthropicRenamePrompt": "Nombre visible de esta cuenta",
|
|
1053
|
+
"providers.anthropicRemoveConfirm": "¿Quitar la cuenta de Claude {name} de ClaudeRipple?",
|
|
1054
|
+
"providers.anthropicLogoutAll": "Quitar todas las cuentas añadidas",
|
|
1055
|
+
"providers.anthropicLogoutAllConfirm": "¿Quitar todas las cuentas de Claude añadidas a ClaudeRipple? La sesión actual de Claude Code y Claude Desktop no cambia.",
|
|
1056
|
+
"providers.anthropicAuthClaudeCode": "Reutilizar la sesión de Claude Code (automático)",
|
|
1057
|
+
"providers.anthropicAuthApiKey": "Clave de API",
|
|
1058
|
+
"providers.anthropicCredentialsHelp": "Elige tu inicio de sesión de Claude Code o una clave de API de Anthropic.",
|
|
1059
|
+
"providers.anthropicSourceObserved": "Detectado en una sesión de Claude Desktop",
|
|
1060
|
+
"providers.anthropicSourceClaudeCode": "Inicio de sesión de Claude en la terminal",
|
|
1061
|
+
"providers.anthropicSourceTokenFile": "Token de ClaudeRipple",
|
|
1062
|
+
"providers.anthropicSourceMissing": "Ninguno — conéctate abajo",
|
|
1063
|
+
"providers.anthropicLogin": "+ Añadir cuenta de Claude",
|
|
1064
|
+
"providers.anthropicOAuthTitle": "Añadir cuenta de Claude",
|
|
1065
|
+
"providers.anthropicOAuthWarning": "Usar el OAuth de una suscripción de Claude a través de un proxy de terceros no es una integración admitida por Anthropic y puede estar sujeto a términos o restricciones de cuenta. Usa solo tus propias cuentas y con fines autorizados.",
|
|
1066
|
+
"providers.anthropicOAuthAccept": "Entiendo el riesgo y quiero continuar con OAuth.",
|
|
1067
|
+
"providers.anthropicOAuthContinue": "Continuar con OAuth",
|
|
1068
|
+
"providers.anthropicLogout": "Desconectar",
|
|
1069
|
+
"providers.anthropicLoginDone": "Suscripción de Claude conectada.",
|
|
1070
|
+
"providers.anthropicSignInBrowser": "Inicia sesión en Claude en tu navegador. Si no se abrió ninguna ventana, usa el enlace de abajo.",
|
|
1071
|
+
"providers.anthropicSignInLink": "Abrir la página de inicio de sesión",
|
|
1072
|
+
"providers.anthropicSignInPaste": "Después de iniciar sesión, pega aquí el código que muestra la página.",
|
|
1073
|
+
"providers.anthropicSignInSubmit": "Enviar código",
|
|
1074
|
+
"providers.anthropicSignInManual": "Reintentar pegando un código",
|
|
1075
|
+
"providers.anthropicSignInWaiting": "Esperando al navegador… (hasta 5 minutos)",
|
|
1076
|
+
"providers.anthropicSignInFailed": "No se pudo iniciar sesión",
|
|
1077
|
+
"providers.anthropicSignedInActive": "Se está usando el inicio de sesión de ClaudeRipple.",
|
|
1078
|
+
"providers.anthropicSignedInStandby": "También hay guardado un inicio de sesión de ClaudeRipple, que toma el relevo si la fuente de arriba desaparece.",
|
|
1079
|
+
"providers.add": "+ Añadir proveedor",
|
|
1080
|
+
"providers.refresh": "Probar todos",
|
|
1081
|
+
"providers.check": "Probar conexión",
|
|
1082
|
+
"providers.checking": "Comprobando",
|
|
1083
|
+
"providers.empty": "Aún no hay proveedores conectados. Añade uno con el botón de arriba.",
|
|
1084
|
+
"providers.modelsCount": "{count} modelos en uso: {names}",
|
|
1085
|
+
"providers.noModels": "No hay modelos elegidos. Elige algunos en Editar.",
|
|
1086
|
+
"providers.removeConfirm": "¿Quitar el proveedor {name}? También se quitan las asignaciones de modelos que lo usan.",
|
|
1087
|
+
"providers.choose": "Añadir proveedor",
|
|
1088
|
+
"providers.chooseHelp": "Elige el servicio que quieres conectar.",
|
|
1089
|
+
"providers.chatgpt": "Suscripción de ChatGPT",
|
|
1090
|
+
"providers.chatgptHelp": "Usa modelos GPT con una suscripción ChatGPT Plus/Pro. Solo inicio de sesión, sin clave de API.",
|
|
1091
|
+
"providers.presetHelp": "Pega una clave de API y listo.",
|
|
1092
|
+
"providers.openaiGroup": "Compatible con OpenAI",
|
|
1093
|
+
"providers.openaiGroupHelp": "ClaudeRipple traduce las solicitudes al formato de la API de OpenAI.",
|
|
1094
|
+
"providers.verified": "Verificado con la documentación oficial",
|
|
1095
|
+
"providers.custom": "Introducir manualmente",
|
|
1096
|
+
"providers.customName": "Proveedor nuevo",
|
|
1097
|
+
"providers.customHelp": "Conecta cualquier API compatible con Anthropic mediante URL y clave.",
|
|
1098
|
+
"providers.addTitle": "Añadir proveedor",
|
|
1099
|
+
"providers.edit": "Editar proveedor",
|
|
1100
|
+
"providers.name": "Nombre",
|
|
1101
|
+
"providers.nameHelp": "Cómo se llama este proveedor en las listas y las asignaciones.",
|
|
1102
|
+
"providers.nameRequired": "Introduce un nombre.",
|
|
1103
|
+
"providers.apiKey": "Clave de API",
|
|
1104
|
+
"providers.keyHelp": "La clave de API emitida en el sitio del proveedor. Solo se guarda en el archivo de configuración de este equipo.",
|
|
1105
|
+
"providers.keyPlaceholder": "Pega tu clave de API",
|
|
1106
|
+
"providers.keySaved": "Se sigue usando la clave guardada. Pega una nueva para reemplazarla.",
|
|
1107
|
+
"providers.url": "URL base de la API",
|
|
1108
|
+
"providers.urlHelp": "URL base del endpoint compatible con Anthropic. Cámbiala solo si la documentación del servicio indica otra.",
|
|
1109
|
+
"providers.openaiUrlHelp": "URL base de la API compatible con OpenAI. Las solicitudes se traducen a su endpoint de Chat Completions o Responses.",
|
|
1110
|
+
"providers.wire": "Formato de la API",
|
|
1111
|
+
"providers.wireHelp": "Usa Chat Completions para la mayoría de los proveedores. Elige Responses solo si el proveedor admite la API Responses sin estado.",
|
|
1112
|
+
"providers.urlRequired": "Introduce una URL válida.",
|
|
1113
|
+
"providers.keyType": "Cabecera de autenticación",
|
|
1114
|
+
"providers.keyTypeHelp": "Normalmente x-api-key. Elige Authorization: Bearer solo si lo indica la documentación del servicio.",
|
|
1115
|
+
"providers.extraHeaders": "Cabeceras HTTP adicionales",
|
|
1116
|
+
"providers.extraHeadersHelp": "Solo las cabeceras que exija el servicio, una por línea con el formato 'nombre: valor'.",
|
|
1117
|
+
"providers.models": "Modelos que se usarán",
|
|
1118
|
+
"providers.modelsHelp": "Los modelos marcados aparecen en la lista de Asignación de modelos.",
|
|
1119
|
+
"providers.modelsFound": "Lista de modelos proporcionada por el proveedor.",
|
|
1120
|
+
"providers.modelsFallback": "No se pudo obtener la lista; se muestran los modelos predeterminados conocidos.",
|
|
1121
|
+
"measure.running": "Midiendo las capacidades de los modelos… ({done}/{total})",
|
|
1122
|
+
"measure.help": "Comprueba en qué formato responde cada modelo y qué esfuerzos de razonamiento admite: según el catálogo público de modelos (models.dev) si incluye el modelo y, si no, preguntándole al propio modelo.",
|
|
1123
|
+
"measure.done": "Medido: {summary}",
|
|
1124
|
+
"measure.nothing": "No se midió nada: ningún modelo respondió.",
|
|
1125
|
+
"measure.notEntitled": "{models}: solo disponibles en la app del propio proveedor. Marcarlos aquí no hará que funcionen.",
|
|
1126
|
+
"measure.failed": "No se pudieron medir las capacidades de los modelos.",
|
|
1127
|
+
"measure.authFailed": "La clave de API fue rechazada, así que no se pudo medir nada.",
|
|
1128
|
+
"providers.probeNotEntitled": "La clave se aceptó, pero el plan no permite el acceso.",
|
|
1129
|
+
"providerStatus.notEntitled": "Rechazado por el plan",
|
|
1130
|
+
"providers.probeOk": "Conectado.",
|
|
1131
|
+
"providers.probeFailed": "No se pudo conectar.",
|
|
1132
|
+
"providers.apiSoon": "Vuelve a intentarlo en un momento.",
|
|
1133
|
+
"providers.showInPicker": "Mostrar también con su nombre real en el selector de la app de Claude",
|
|
1134
|
+
"providers.pickerOffHint": "El modo selector está desactivado, así que marcar esto todavía no los muestra. Al guardar, se te pedirá que lo actives.",
|
|
1135
|
+
"providers.pickerOffPrompt": "El modo selector está desactivado, así que estos modelos aún no aparecerán en el selector de Claude Desktop. ¿Activarlo ahora? Tu sistema operativo te pedirá que confirmes que confías en el certificado.",
|
|
1136
|
+
"providers.credentials": "Origen del inicio de sesión",
|
|
1137
|
+
"providers.credentialsHelp": "De dónde sale el token de la cuenta de ChatGPT.",
|
|
1138
|
+
"providers.authAuto": "Automático (inicio de sesión propio si existe; si no, el de Codex CLI)",
|
|
1139
|
+
"providers.authOwn": "Iniciar sesión con ClaudeRipple",
|
|
1140
|
+
"providers.authBorrow": "Reutilizar la sesión de Codex CLI (~/.codex/auth.json)",
|
|
1141
|
+
"providers.login": "Cómo iniciar sesión",
|
|
1142
|
+
"providers.loginHelp": "'Iniciar sesión en ChatGPT…' en la app de la barra de menús o clauderipple login en una terminal abren el inicio de sesión en el navegador. Los tokens se quedan en este equipo.",
|
|
1143
|
+
"providers.loginHint": "Usa 'Iniciar sesión en ChatGPT…' en la app de la barra de menús o ejecuta clauderipple login en una terminal.",
|
|
1144
|
+
"providers.chatgptLogin": "Iniciar sesión en ChatGPT",
|
|
1145
|
+
"providers.chatgptLoginWaiting": "Termina de iniciar sesión en tu navegador. Esto se actualizará cuando acabes.",
|
|
1146
|
+
"providers.chatgptLoginDone": "Inicio de sesión en ChatGPT completado.",
|
|
1147
|
+
"providers.chatgptAccountsTitle": "Cuentas de ChatGPT",
|
|
1148
|
+
"providers.chatgptAccountsSubtitle": "Con varias cuentas, cuando una alcanza su límite, la siguiente toma el relevo en la misma solicitud. Una conversación se mantiene en la cuenta que respondió, para conservar su caché. Las cuentas se usan en el orden de la lista.",
|
|
1149
|
+
"providers.addChatgptAccount": "+ Añadir cuenta de ChatGPT",
|
|
1150
|
+
"providers.chatgptAddWaiting": "Inicia sesión en tu navegador con la cuenta que quieres añadir. Si muestra una cuenta que ya añadiste, elige otra.",
|
|
1151
|
+
"providers.chatgptAdded": "Cuenta de ChatGPT añadida.",
|
|
1152
|
+
"providers.chatgptNoAccounts": "No hay ninguna cuenta de ChatGPT con sesión iniciada.",
|
|
1153
|
+
"providers.chatgptAccountCount": "{count} cuentas",
|
|
1154
|
+
"providers.chatgptCodexHelp": "El inicio de sesión propio de Codex CLI. ClaudeRipple solo lo lee, nunca lo renueva y lo usa en último lugar.",
|
|
1155
|
+
"providers.chatgptOwnHelp": "ClaudeRipple guarda este inicio de sesión en un archivo que solo tu usuario puede leer y lo renueva automáticamente.",
|
|
1156
|
+
"providers.chatgptInUse": "en uso ahora",
|
|
1157
|
+
"providers.chatgptStandby": "en espera",
|
|
1158
|
+
"providers.chatgptPause": "Pausar",
|
|
1159
|
+
"providers.chatgptResume": "Reanudar",
|
|
1160
|
+
"providers.chatgptPaused": "en pausa",
|
|
1161
|
+
"providers.chatgptClearCooldown": "Usar ahora",
|
|
1162
|
+
"providers.chatgptRemoveConfirm": "¿Quitar la cuenta de ChatGPT {name} de ClaudeRipple?",
|
|
1163
|
+
"providers.chatgptReauthHelp": "Este inicio de sesión caducó o fue rechazado. Si vuelves a iniciar sesión con la misma cuenta, se restaura en su sitio.",
|
|
1164
|
+
"pool.coolingFor": "vuelve en {duration}",
|
|
1165
|
+
"time.hoursMinutes": "{h} h {m} min",
|
|
1166
|
+
"time.minutes": "{m} min",
|
|
1167
|
+
"time.seconds": "{s} s",
|
|
1168
|
+
"quota.window5h": "5 h",
|
|
1169
|
+
"quota.windowWeek": "semanal",
|
|
1170
|
+
"quota.windowHours": "{hours} h",
|
|
1171
|
+
"quota.line": "{window} {percent}%",
|
|
1172
|
+
"quota.resetAt": "se restablece el {time}",
|
|
1173
|
+
"providers.effortLevels": "Esfuerzo de razonamiento: {levels}",
|
|
1174
|
+
"providers.effortNone": "No admite esfuerzo de razonamiento",
|
|
1175
|
+
"providers.modelEffort": "esfuerzo",
|
|
1176
|
+
"providers.modelNoEffort": "sin esfuerzo",
|
|
1177
|
+
"providers.defaultEffort": "Esfuerzo de razonamiento predeterminado",
|
|
1178
|
+
"providers.defaultEffortHelp": "Se usa cuando ni la asignación ni la app indican un esfuerzo.",
|
|
1179
|
+
"providers.identity": "Decirle al modelo quién es (identidad)",
|
|
1180
|
+
"providers.append": "Añadido al prompt del sistema",
|
|
1181
|
+
"providers.appendHelp": "Texto fijo que se añade al final del prompt del sistema en cada solicitud. Cambiarlo a menudo rompe la caché de prompts y encarece el uso.",
|
|
1182
|
+
"providerStatus.connected": "Conectado",
|
|
1183
|
+
"providerStatus.keyNeeded": "Falta la clave",
|
|
1184
|
+
"providerStatus.loginNeeded": "Falta iniciar sesión",
|
|
1185
|
+
"providerStatus.disconnected": "No conectado",
|
|
1186
|
+
"providerStatus.checking": "Comprobando",
|
|
1187
|
+
"clients.title": "Clientes",
|
|
1188
|
+
"clients.subtitle": "Configura las apps que usan ClaudeRipple.",
|
|
1189
|
+
"clients.desktop.title": "Claude Desktop",
|
|
1190
|
+
"clients.desktop.help": "Elige si los modelos de los proveedores aparecen con su nombre real en el selector de modelos.",
|
|
1191
|
+
"clients.codex.title": "Codex (app y CLI)",
|
|
1192
|
+
"clients.codex.help": "Añade ClaudeRipple como proveedor a la configuración de Codex (~/.codex/config.toml). Terminal: `codex --profile clauderipple -m <model>`; app de Codex: haz de clauderipple el proveedor predeterminado en esa configuración.",
|
|
1193
|
+
"clients.codex.note": "Si está activado, las solicitudes GPT de Codex también pasan por ClaudeRipple. Codex conserva su propio inicio de sesión y, con varias cuentas de ChatGPT añadidas, cuando una alcanza su límite la siguiente toma el relevo, sin cerrar sesión. La lista de abajo muestra los modelos de Claude y compatibles con Anthropic que se suman a Codex.",
|
|
1194
|
+
"clients.codex.turnOn": "Usar ClaudeRipple en Codex",
|
|
1195
|
+
"clients.codex.turnOff": "Desconectar Codex",
|
|
1196
|
+
"clients.claudeCode.title": "Claude Code en la terminal",
|
|
1197
|
+
"clients.claudeCode.help": "`claude` en la terminal usa el mismo router. Elige el modelo con `/model <name>`.",
|
|
1198
|
+
"logs.title": "Registros",
|
|
1199
|
+
"logs.requests": "Solicitudes",
|
|
1200
|
+
"logs.raw": "Registros sin procesar",
|
|
1201
|
+
"logs.lastHour": "Última hora",
|
|
1202
|
+
"logs.autoscroll": "Desplazamiento automático",
|
|
1203
|
+
"logs.polling": "Se actualiza cada 3 s",
|
|
1204
|
+
"logs.rawPolling": "Se actualiza cada 3 s · últimas 200 líneas",
|
|
1205
|
+
"logs.provider": "Proveedor",
|
|
1206
|
+
"logs.all": "Todos",
|
|
1207
|
+
"logs.showCountTokens": "Mostrar número de tokens",
|
|
1208
|
+
"logs.empty": "Aún no hay solicitudes.",
|
|
1209
|
+
"logs.summary.requests": "Solicitudes",
|
|
1210
|
+
"logs.summary.success": "Correctas / fallidas",
|
|
1211
|
+
"logs.summary.input": "Tokens de entrada",
|
|
1212
|
+
"logs.summary.output": "Tokens de salida",
|
|
1213
|
+
"logs.summary.duration": "Tiempo medio de respuesta",
|
|
1214
|
+
"logs.cacheHit": "Caché {percent}%",
|
|
1215
|
+
"logs.th.time": "Hora",
|
|
1216
|
+
"logs.th.models": "Modelo",
|
|
1217
|
+
"logs.th.effort": "esfuerzo",
|
|
1218
|
+
"logs.th.input": "Entrada",
|
|
1219
|
+
"logs.th.output": "Salida",
|
|
1220
|
+
"logs.th.duration": "Duración",
|
|
1221
|
+
"logs.th.status": "Estado",
|
|
1222
|
+
"logs.status.ok": "ok",
|
|
1223
|
+
"logs.status.error": "error",
|
|
1224
|
+
"logs.detail.id": "ID de solicitud",
|
|
1225
|
+
"logs.detail.kind": "Tipo",
|
|
1226
|
+
"logs.detail.stop": "Motivo de finalización",
|
|
1227
|
+
"logs.detail.uncached": "Entrada sin caché",
|
|
1228
|
+
"logs.detail.cacheRead": "Lectura de caché",
|
|
1229
|
+
"logs.detail.cacheWrite": "Escritura de caché",
|
|
1230
|
+
"logs.detail.note": "Nota",
|
|
1231
|
+
"logs.none": "Ninguno",
|
|
1232
|
+
"logs.seconds": "{value} s",
|
|
1233
|
+
"about.title": "Acerca de",
|
|
1234
|
+
"about.body": "ClaudeRipple es un proyecto independiente de código abierto, sin afiliación con Anthropic ni con OpenAI. Claude y Claude Code son marcas comerciales de Anthropic, PBC.",
|
|
1235
|
+
"about.license": "Licencia: GPL-3.0",
|
|
1236
|
+
"providers.identityHelp": "Antepone 'You are <model>, answering through Claude Code' al prompt del sistema. Si está desactivado, el modelo puede creer que es Claude.",
|
|
1237
|
+
"picker.models": "{count} modelos en el selector: {names}",
|
|
1238
|
+
"picker.lastAt": "Claude Desktop obtuvo la lista por última vez el {at}",
|
|
1239
|
+
"picker.never": "Claude Desktop aún no ha obtenido la lista. Ciérralo por completo y vuelve a abrirlo.",
|
|
1240
|
+
"agentTitle.title": "Etiquetas de subagentes",
|
|
1241
|
+
"agentTitle.help": "Antepone el modelo real y el esfuerzo a los títulos de los subagentes en el panel de tareas en segundo plano (p. ej., Terra·high · Review). Funciona mediante un hook de Claude Code; se aplica a los subagentes nuevos.",
|
|
1242
|
+
"agentTitle.on": "Activado",
|
|
1243
|
+
"agentTitle.off": "Desactivado",
|
|
1244
|
+
"agentTitle.turnOn": "Activar",
|
|
1245
|
+
"agentTitle.turnOff": "Desactivar",
|
|
1246
|
+
"statusMod.title": "Línea de ruta y registro de solicitudes",
|
|
1247
|
+
"statusMod.help": "Muestra encima del prompt de Claude Code adónde fue la última solicitud (modelo, proveedor, acierto de caché, tiempo) y abre el registro de solicitudes en un panel lateral con el botón Log o /ripple-log. × o /ripple-bar oculta la línea o la vuelve a mostrar. Además, un worker se mantiene en su propio modelo aunque la llamada a Agent indique otro, y su marcador [[ripple: name@level]] se lee esté donde esté en el prompt. Funciona mediante un mod de Claude Code; se aplica a las sesiones que se abran a partir de ahora.",
|
|
1248
|
+
"statusMod.turnOn": "Activar",
|
|
1249
|
+
"statusMod.turnOff": "Desactivar",
|
|
1250
|
+
"statusMod.saved": "Guardado. Se aplica a las sesiones de Claude Code que se abran a partir de ahora.",
|
|
1251
|
+
"workerTools.title": "Herramientas de los workers",
|
|
1252
|
+
"workerTools.help": "Da a los workers que genera ClaudeRipple solo las herramientas de lectura, edición, ejecución, búsqueda y skills. Los servidores MCP y las herramientas de plugins de la sesión dejan de acompañar cada solicitud de un worker, lo que reduce mucho la entrada, pero esos workers no pueden usar un navegador ni el simulador de iOS. Un worker que los necesite debe ir en un archivo de agente propio en ~/.claude/agents, que ClaudeRipple nunca toca. Se aplica a las sesiones nuevas.",
|
|
1253
|
+
"workerTools.on": "Activado",
|
|
1254
|
+
"workerTools.off": "Desactivado (hereda todas las herramientas de la sesión)",
|
|
1255
|
+
"workerTools.turnOn": "Limitar herramientas",
|
|
1256
|
+
"workerTools.turnOff": "Dejar de limitar",
|
|
1257
|
+
"providers.probeNoCredits": "La clave es válida, pero esta cuenta no tiene créditos, así que no llegó ninguna respuesta. Recarga saldo en el sitio del proveedor.",
|
|
1258
|
+
"providers.probeBadKey": "La clave de API fue rechazada. Revisa la clave.",
|
|
1259
|
+
"providers.searchModels": "Buscar modelos (nombre o ID)",
|
|
1260
|
+
"providers.customModelPlaceholder": "Escribe un ID de modelo (p. ej., abliterated-model)",
|
|
1261
|
+
"providers.customModelAdd": "Añadir",
|
|
1262
|
+
"providers.customModelHint": "Este proveedor no publicó su lista de modelos. Escribe abajo el ID del modelo que indica su documentación para añadirlo.",
|
|
1263
|
+
"providers.google": "Google Gemini",
|
|
1264
|
+
"providers.googleHelp": "Modelos Gemini con una clave de API de Google AI Studio o una cuenta de Google (Antigravity).",
|
|
1265
|
+
"providers.googleKeyHelp": "Crea una en aistudio.google.com/apikey. En el nivel gratuito, Google puede usar tus entradas para mejorar sus productos, así que usa una clave de pago para código sensible.",
|
|
1266
|
+
"providers.googleAntigravity": "Inicio de sesión de Antigravity",
|
|
1267
|
+
"providers.googleAuthApiKey": "Clave de API de AI Studio",
|
|
1268
|
+
"providers.googleAuthHelp": "La clave de API es la vía que Google admite. El inicio de sesión de Antigravity usa la suscripción de una cuenta de Google de una forma que los términos de Google prohíben.",
|
|
1269
|
+
"providers.googleLogin": "Cuenta de Google",
|
|
1270
|
+
"providers.addGoogleAccount": "+ Iniciar sesión con Google",
|
|
1271
|
+
"providers.googleWarning": "Los términos de Antigravity de Google (sección 6) y las preguntas frecuentes de Gemini CLI califican de incumplimiento usar estas credenciales desde cualquier programa que no sea una app de la propia Google. En febrero de 2026, Google suspendió una gran cantidad de cuentas usadas de esta forma e indicó que una reincidencia supone la suspensión permanente. ClaudeRipple no está afiliado a Google.\n\nSe recomienda usar una cuenta secundaria. ¿Iniciar sesión y aceptar este riesgo?",
|
|
1272
|
+
"providers.googleWarningShort": "Los términos de Google prohíben este uso y se han suspendido cuentas por ello. Se recomienda una cuenta secundaria.",
|
|
1273
|
+
"providers.googleOpenManually": "El navegador no se abrió. Abre esta dirección manualmente.",
|
|
1274
|
+
"providers.googleAdded": "Cuenta de Google añadida.",
|
|
1275
|
+
"providers.googleSignInFirst": "No hay ninguna cuenta de Google con sesión iniciada. Inicia sesión primero.",
|
|
1276
|
+
"providers.googleRemoveConfirm": "¿Quitar {name} de ClaudeRipple? La cuenta de Google en sí no se modifica.",
|
|
1277
|
+
"providers.googleProject": "proyecto {id}",
|
|
1278
|
+
"providers.googleOwnHelp": "ClaudeRipple guarda este inicio de sesión en un archivo que solo tu usuario puede leer y lo renueva automáticamente.",
|
|
1279
|
+
"providers.googleVerifyNeeded": "Google pide verificación",
|
|
1280
|
+
"providers.googleVerifyAction": "Verificar con Google",
|
|
1281
|
+
"providers.googleRecheck": "Volver a comprobar",
|
|
1282
|
+
"providers.googleVerified": "Verificada. Esta cuenta vuelve a responder.",
|
|
1283
|
+
"providers.googleStillUnverified": "Google sigue pidiendo verificación. Asegúrate de haber completado los pasos de la página.",
|
|
1284
|
+
"providers.googleVerifyUnknown": "No se pudo comprobar ahora; lo hará la siguiente solicitud.",
|
|
1285
|
+
"providers.googleVerifyHelp": "Google quiere comprobar esta cuenta antes de que se pueda usar. Abre la página en un navegador con la sesión de esta cuenta iniciada y completa los pasos; la siguiente solicitud se responderá con normalidad.",
|
|
1286
|
+
"providers.googleNoAccounts": "No hay ninguna cuenta de Google con sesión iniciada.",
|
|
1287
|
+
"providers.googleAccountsTitle": "Cuentas de Google",
|
|
1288
|
+
"providers.googleAccountsSubtitle": "Una conversación se mantiene en una sola cuenta; al llegar a un límite, pasa a la siguiente antes de que empiece cualquier respuesta.",
|
|
1289
|
+
"providers.googleLoginWaiting": "Esperando el inicio de sesión de Google en tu navegador…",
|
|
1290
|
+
"providers.modelsSummary": "{selected} seleccionados de {total}",
|
|
1291
|
+
"providers.modelsHidden": "{hidden} más — usa la búsqueda para verlos",
|
|
1292
|
+
"providers.modelsFoundMany": "Lista proporcionada por el proveedor. Es larga: busca y marca solo lo que vayas a usar.",
|
|
1293
|
+
"providers.modelsFoundLive": "Se obtuvieron {n} modelos del catálogo de ChatGPT. Los nuevos se añaden sin marcar.",
|
|
1294
|
+
"slots.saving": "Guardando…",
|
|
1295
|
+
"slots.saved": "Guardado · se aplica de inmediato",
|
|
1296
|
+
},
|
|
1297
|
+
pt: {
|
|
1298
|
+
"brand": "ClaudeRipple",
|
|
1299
|
+
"nav.health": "Status",
|
|
1300
|
+
"nav.slots": "Mapeamento de modelos",
|
|
1301
|
+
"nav.providers": "Provedores",
|
|
1302
|
+
"nav.clients": "Clientes",
|
|
1303
|
+
"nav.logs": "Logs",
|
|
1304
|
+
"nav.about": "Sobre",
|
|
1305
|
+
"lang.label": "Idioma",
|
|
1306
|
+
"common.save": "Salvar",
|
|
1307
|
+
"common.saved": "Salvo.",
|
|
1308
|
+
"common.saveFailed": "Não foi possível salvar.",
|
|
1309
|
+
"common.loadFailed": "Não foi possível carregar.",
|
|
1310
|
+
"common.actionFailed": "Não foi possível concluir a ação.",
|
|
1311
|
+
"common.cancel": "Cancelar",
|
|
1312
|
+
"common.edit": "Editar",
|
|
1313
|
+
"common.remove": "Remover",
|
|
1314
|
+
"common.show": "Mostrar",
|
|
1315
|
+
"common.hide": "Ocultar",
|
|
1316
|
+
"common.advanced": "Avançado",
|
|
1317
|
+
"common.notAvailable": "—",
|
|
1318
|
+
"health.title": "Status",
|
|
1319
|
+
"health.subtitle": "Conexão do Claude Desktop, provedores e seletor de modelos, atualizados a cada 5s.",
|
|
1320
|
+
"health.desktop": "Conexão do Claude Desktop",
|
|
1321
|
+
"health.connection": "Conexão",
|
|
1322
|
+
"health.connected": "Conectado",
|
|
1323
|
+
"health.notConnected": "Não conectado",
|
|
1324
|
+
"health.disconnected": "Não conectado",
|
|
1325
|
+
"health.connectedHelp": "As requisições da aba Code do Claude Desktop passam pelo ClaudeRipple.",
|
|
1326
|
+
"health.notConnectedHelp": "O Claude Desktop não está passando pelo ClaudeRipple. Inicie o roteador pelo app da barra de menus ou rode clauderipple install.",
|
|
1327
|
+
"health.requests": "Requisições (desde o início do roteador)",
|
|
1328
|
+
"health.requestCount": "Número de requisições",
|
|
1329
|
+
"health.requestsFmt": "{completed} concluídas · {failed} com falha · {inFlight} em andamento",
|
|
1330
|
+
"health.providers": "Provedores",
|
|
1331
|
+
"health.noProviders": "Nenhum provedor conectado. Adicione um em Provedores.",
|
|
1332
|
+
"health.quota": "{percent}% usado{reset}",
|
|
1333
|
+
"health.resetsIn": " · renova em {hours}h",
|
|
1334
|
+
"health.details": "Detalhes",
|
|
1335
|
+
"health.version": "Versão",
|
|
1336
|
+
"health.runtime": "Arquivos do roteador · iniciado",
|
|
1337
|
+
"health.routes": "Mapeamentos",
|
|
1338
|
+
"health.cli": "Versão do Claude Code",
|
|
1339
|
+
"update.check": "Verificar atualizações",
|
|
1340
|
+
"update.checking": "Verificando…",
|
|
1341
|
+
"update.latest": "Esta é a versão mais recente.",
|
|
1342
|
+
"update.install": "Atualizar para {latest}",
|
|
1343
|
+
"update.download": "Baixar {latest}",
|
|
1344
|
+
"update.checkout": "A {latest} já saiu. Isto é um checkout do código-fonte; atualize com git pull.",
|
|
1345
|
+
"update.running": "Atualizando…",
|
|
1346
|
+
"update.checkFailed": "Não foi possível verificar atualizações.",
|
|
1347
|
+
"update.confirm": "Atualizar o ClaudeRipple {current} → {latest}? O roteador reinicia na nova versão assim que as requisições em andamento terminarem, e esta janela recarrega sozinha.",
|
|
1348
|
+
"update.started": "A atualização começou. Esta janela recarrega quando o roteador voltar na nova versão. A saída fica em ~/.clauderipple/logs/update.log.",
|
|
1349
|
+
"update.failed": "Não foi possível iniciar a atualização.",
|
|
1350
|
+
"picker.title": "Seletor de modelos",
|
|
1351
|
+
"picker.statusHelp": "Ativado: os modelos dos provedores aparecem com os nomes reais no seletor do Claude Desktop. Desativado: eles respondem por trás dos nomes do Claude, conforme o mapeamento.",
|
|
1352
|
+
"picker.state": "Estado",
|
|
1353
|
+
"picker.on": "Ativado",
|
|
1354
|
+
"picker.off": "Desativado",
|
|
1355
|
+
"picker.turnOn": "Ativar seletor",
|
|
1356
|
+
"picker.turnOff": "Desativar seletor",
|
|
1357
|
+
"picker.last": "Na última vez, mostrou {count} modelos.",
|
|
1358
|
+
"picker.restartHelp": "Depois de ativar, encerre o Claude Desktop por completo e abra-o de novo.",
|
|
1359
|
+
"picker.confirmOn": "Seu sistema operacional vai pedir confirmação para confiar no certificado (o macOS pede sua senha de login; o Windows mostra uma caixa de diálogo do certificado). O ClaudeRipple nunca vê sua senha. Continuar?",
|
|
1360
|
+
"picker.working": "Processando.",
|
|
1361
|
+
"picker.doneOn": "Ativado. Encerre o Claude Desktop por completo e abra-o de novo.",
|
|
1362
|
+
"picker.doneOff": "Desativado. Encerre o Claude Desktop por completo e abra-o de novo.",
|
|
1363
|
+
"slots.title": "Mapeamento de modelos",
|
|
1364
|
+
"slots.subtitle": "Defina qual modelo responde de fato quando você escolhe um modelo Claude no app. As alterações são salvas automaticamente.",
|
|
1365
|
+
"slots.pickerHelp": "Ativado: os modelos dos provedores aparecem com os nomes reais no seletor do Claude Desktop. Desativado: eles respondem por trás dos nomes do Claude, conforme o mapeamento acima.",
|
|
1366
|
+
"slots.pickerModels": "Modelos a exibir no seletor",
|
|
1367
|
+
"slots.pickerModelsHelp": "Os modelos marcados aparecem no seletor do Claude Desktop; ao escolher um, é ele quem responde diretamente. Modelos recém-adicionados ficam disponíveis a partir da próxima sessão (uma sessão em andamento mantém a lista com que começou).",
|
|
1368
|
+
"slots.add": "+ Adicionar mapeamento",
|
|
1369
|
+
"slots.th.claude": "Escolhido no app Claude",
|
|
1370
|
+
"slots.th.target": "Quem responde de fato",
|
|
1371
|
+
"slots.th.effort": "Esforço de raciocínio",
|
|
1372
|
+
"slots.passthrough": "O Claude responde normalmente",
|
|
1373
|
+
"slots.noProviderModels": "Conecte um provedor e escolha os modelos dele primeiro.",
|
|
1374
|
+
"slots.noChanges": "Nenhum mapeamento. Todos os modelos respondem como Claude.",
|
|
1375
|
+
"slots.duplicate": "Cada modelo Claude só pode ser mapeado uma vez.",
|
|
1376
|
+
"slots.effortHint": "Se o modelo não suportar o esforço escolhido no app, o ClaudeRipple envia o nível mais próximo. (Por exemplo: xhigh → high)",
|
|
1377
|
+
"slots.noEffort": "Este modelo não aceita esforço de raciocínio",
|
|
1378
|
+
"pool.ready": "em uso",
|
|
1379
|
+
"pool.cooling": "volta em {seconds}s",
|
|
1380
|
+
"pool.quarantined": "recusado — verifique a chave",
|
|
1381
|
+
"slots.modelSlots": "Slots de modelo do próprio Claude Code",
|
|
1382
|
+
"slots.modelSlotsHelp": "O Claude Code escolhe estes modelos antes de existir uma requisição, então um mapeamento não os alcança. Se ficarem vazios, o Claude responde por eles e eles consomem cota do Claude. A busca na web, em especial, roda no modelo pequeno e rápido, então uma sessão roteada continua buscando com cota do Claude até que esse slot seja trocado. As alterações são gravadas no settings.json na instalação.",
|
|
1383
|
+
"slots.noWebSearch": "sem busca na web aqui",
|
|
1384
|
+
"slots.noWebSearchWarn": "Salvo, mas a busca na web vai falhar neste modelo — o ClaudeRipple não consegue fazer uma busca por ele. O modelo em si talvez consiga; deixar este slot no padrão faz o Claude buscar.",
|
|
1385
|
+
"slots.slotDefault": "padrão (Claude)",
|
|
1386
|
+
"slots.slot.smallFast": "Modelo pequeno e rápido",
|
|
1387
|
+
"slots.slot.subagent": "Subagentes",
|
|
1388
|
+
"slots.slot.main": "Padrão da sessão",
|
|
1389
|
+
"slots.slotHelp.smallFast": "busca na web, títulos, classificadores",
|
|
1390
|
+
"slots.slotHelp.subagent": "subagente que não define um modelo próprio",
|
|
1391
|
+
"slots.slotHelp.main": "o modelo com que a sessão começa",
|
|
1392
|
+
"slots.slotSaved": "Slots de modelo salvos. Valem a partir de uma nova sessão.",
|
|
1393
|
+
"slots.windowGlobal": "padrão",
|
|
1394
|
+
"slots.windowHelp": "A janela de contexto deste modelo, em tokens. Modelos roteados não compartilham uma janela, então cada um tem a sua. Em branco, usa o valor informado pelo provedor e, na falta dele, o padrão global. Informe a janela real do modelo, não um ponto de compactação.",
|
|
1395
|
+
"providers.title": "Provedores",
|
|
1396
|
+
"providers.subtitle": "Gerencie serviços e contas conectados em um só lugar. Escolha um provedor para abrir as configurações e contas dele.",
|
|
1397
|
+
"providers.search": "Buscar provedores…",
|
|
1398
|
+
"providers.overview": "Visão geral",
|
|
1399
|
+
"providers.accounts": "Contas",
|
|
1400
|
+
"providers.settings": "Configurações",
|
|
1401
|
+
"providers.modelsTab": "Modelos",
|
|
1402
|
+
"providers.selectedModels": "Modelos selecionados",
|
|
1403
|
+
"providers.modelsCountShort": "{count} modelos",
|
|
1404
|
+
"providers.noSelection": "Selecione um provedor à esquerda.",
|
|
1405
|
+
"providers.rotationOn": "Rodízio ativado",
|
|
1406
|
+
"providers.rotationOff": "Rodízio desativado",
|
|
1407
|
+
"providers.rotationSaving": "Salvando rodízio…",
|
|
1408
|
+
"providers.rotationSaved": "Rodízio de contas salvo.",
|
|
1409
|
+
"providers.accountCount": "{count} contas conectadas",
|
|
1410
|
+
"providers.accountCountHelp": "Inclui o login atual do Claude e as contas adicionadas ao ClaudeRipple.",
|
|
1411
|
+
"providers.accountPoolTitle": "Contas do Claude",
|
|
1412
|
+
"providers.accountPoolSubtitle": "Uma conversa fica em uma só conta. O ClaudeRipple só troca quando há falha de cota ou de autenticação antes de a resposta começar.",
|
|
1413
|
+
"providers.addClaudeAccount": "+ Adicionar conta do Claude",
|
|
1414
|
+
"providers.currentAccountHelp": "O login externo usado no momento pelo Claude Code ou pelo Claude Desktop. O ClaudeRipple não pode removê-lo.",
|
|
1415
|
+
"providers.addedAccountHelp": "O ClaudeRipple guarda esta autorização OAuth neste computador e a renova automaticamente.",
|
|
1416
|
+
"providers.reauthAction": "Entrar novamente",
|
|
1417
|
+
"providers.dangerZone": "Gerenciar contas adicionadas",
|
|
1418
|
+
"providers.saveSettings": "Salvar configurações",
|
|
1419
|
+
"providers.connection": "Conexão",
|
|
1420
|
+
"providers.authentication": "Autenticação",
|
|
1421
|
+
"providers.rotationRequired": "As contas adicionadas só são usadas nas requisições do app Claude e do Claude Code quando o rodízio de contas está ativado.",
|
|
1422
|
+
"providers.anthropic": "Claude (Anthropic)",
|
|
1423
|
+
"providers.anthropicHelp": "Faça rodízio de contas de assinatura do Claude ou sirva modelos Claude a ferramentas no estilo OpenAI, como o Codex.",
|
|
1424
|
+
"providers.anthropicIngressOnly": "Com o rodízio de contas desativado, os modelos escolhidos aqui são servidos apenas a ferramentas no estilo OpenAI, como o Codex, e não aparecem nos mapeamentos do app Claude.",
|
|
1425
|
+
"providers.anthropicPoolRouting": "Com o rodízio de contas ativado, as requisições do app Claude e do Claude Code ficam em uma conta por conversa, para preservar o cache de prompt. Um 429 ou uma recusa de autenticação antes de a resposta começar passa a requisição para a próxima conta. O uso de várias assinaturas pode estar sujeito aos termos e às restrições de conta da Anthropic; use apenas suas próprias contas autorizadas.",
|
|
1426
|
+
"providers.anthropicLoginReuse": "Reaproveitar login",
|
|
1427
|
+
"providers.anthropicPoolOn": "Rodízio de contas",
|
|
1428
|
+
"providers.anthropicPool": "Fazer rodízio automático de contas do Claude",
|
|
1429
|
+
"providers.anthropicPoolHelp": "Usa o login atual do Claude mais as contas adicionais abaixo. Uma conversa permanece na mesma conta, a menos que haja falha de cota ou de autenticação.",
|
|
1430
|
+
"providers.anthropicCurrent": "Login atual",
|
|
1431
|
+
"providers.anthropicReauth": "Entrar novamente",
|
|
1432
|
+
"providers.anthropicNoAccounts": "Nenhuma conta foi adicionada ao ClaudeRipple.",
|
|
1433
|
+
"providers.anthropicRenamePrompt": "Nome de exibição desta conta",
|
|
1434
|
+
"providers.anthropicRemoveConfirm": "Remover a conta do Claude {name} do ClaudeRipple?",
|
|
1435
|
+
"providers.anthropicLogoutAll": "Remover todas as contas adicionadas",
|
|
1436
|
+
"providers.anthropicLogoutAllConfirm": "Remover todas as contas do Claude adicionadas ao ClaudeRipple? O login atual do Claude Code e do Claude Desktop não muda.",
|
|
1437
|
+
"providers.anthropicAuthClaudeCode": "Reaproveitar o login do Claude Code (automático)",
|
|
1438
|
+
"providers.anthropicAuthApiKey": "Chave de API",
|
|
1439
|
+
"providers.anthropicCredentialsHelp": "Escolha seu login do Claude Code ou uma chave de API da Anthropic.",
|
|
1440
|
+
"providers.anthropicSourceObserved": "Detectado em uma sessão do Claude Desktop",
|
|
1441
|
+
"providers.anthropicSourceClaudeCode": "Login do Claude no terminal",
|
|
1442
|
+
"providers.anthropicSourceTokenFile": "Token do ClaudeRipple",
|
|
1443
|
+
"providers.anthropicSourceMissing": "Nenhum — conecte abaixo",
|
|
1444
|
+
"providers.anthropicLogin": "+ Adicionar conta do Claude",
|
|
1445
|
+
"providers.anthropicOAuthTitle": "Adicionar conta do Claude",
|
|
1446
|
+
"providers.anthropicOAuthWarning": "Usar o OAuth de uma assinatura do Claude por meio de um proxy de terceiros não é uma integração suportada pela Anthropic e pode estar sujeito a termos ou a restrições de conta. Use apenas suas próprias contas, para fins autorizados.",
|
|
1447
|
+
"providers.anthropicOAuthAccept": "Entendo o risco e quero continuar com o OAuth.",
|
|
1448
|
+
"providers.anthropicOAuthContinue": "Continuar com OAuth",
|
|
1449
|
+
"providers.anthropicLogout": "Desconectar",
|
|
1450
|
+
"providers.anthropicLoginDone": "Assinatura do Claude conectada.",
|
|
1451
|
+
"providers.anthropicSignInBrowser": "Entre no Claude pelo navegador. Se nenhuma janela abriu, use o link abaixo.",
|
|
1452
|
+
"providers.anthropicSignInLink": "Abrir a página de login",
|
|
1453
|
+
"providers.anthropicSignInPaste": "Depois de entrar, cole aqui o código que a página mostrar.",
|
|
1454
|
+
"providers.anthropicSignInSubmit": "Enviar código",
|
|
1455
|
+
"providers.anthropicSignInManual": "Tentar de novo colando um código",
|
|
1456
|
+
"providers.anthropicSignInWaiting": "Aguardando o navegador… (até 5 minutos)",
|
|
1457
|
+
"providers.anthropicSignInFailed": "Falha no login",
|
|
1458
|
+
"providers.anthropicSignedInActive": "Usando o login do ClaudeRipple.",
|
|
1459
|
+
"providers.anthropicSignedInStandby": "Também há um login do ClaudeRipple guardado, que assume se a origem acima deixar de existir.",
|
|
1460
|
+
"providers.add": "+ Adicionar provedor",
|
|
1461
|
+
"providers.refresh": "Testar todos",
|
|
1462
|
+
"providers.check": "Testar conexão",
|
|
1463
|
+
"providers.checking": "Verificando",
|
|
1464
|
+
"providers.empty": "Nenhum provedor conectado ainda. Adicione um com o botão acima.",
|
|
1465
|
+
"providers.modelsCount": "{count} modelos em uso: {names}",
|
|
1466
|
+
"providers.noModels": "Nenhum modelo escolhido. Escolha alguns em Editar.",
|
|
1467
|
+
"providers.removeConfirm": "Remover o provedor {name}? Os mapeamentos de modelos que o usam também são removidos.",
|
|
1468
|
+
"providers.choose": "Adicionar provedor",
|
|
1469
|
+
"providers.chooseHelp": "Escolha o serviço a conectar.",
|
|
1470
|
+
"providers.chatgpt": "Assinatura do ChatGPT",
|
|
1471
|
+
"providers.chatgptHelp": "Use modelos GPT por uma assinatura ChatGPT Plus/Pro. Só login, sem chave de API.",
|
|
1472
|
+
"providers.presetHelp": "Cole uma chave de API e pronto.",
|
|
1473
|
+
"providers.openaiGroup": "Compatível com OpenAI",
|
|
1474
|
+
"providers.openaiGroupHelp": "O ClaudeRipple traduz as requisições para o formato da API da OpenAI.",
|
|
1475
|
+
"providers.verified": "Conferido com a documentação oficial",
|
|
1476
|
+
"providers.custom": "Inserir manualmente",
|
|
1477
|
+
"providers.customName": "Novo provedor",
|
|
1478
|
+
"providers.customHelp": "Conecte qualquer API compatível com Anthropic por URL e chave.",
|
|
1479
|
+
"providers.addTitle": "Adicionar provedor",
|
|
1480
|
+
"providers.edit": "Editar provedor",
|
|
1481
|
+
"providers.name": "Nome",
|
|
1482
|
+
"providers.nameHelp": "Como este provedor aparece em listas e mapeamentos.",
|
|
1483
|
+
"providers.nameRequired": "Informe um nome.",
|
|
1484
|
+
"providers.apiKey": "Chave de API",
|
|
1485
|
+
"providers.keyHelp": "A chave de API emitida no site do provedor. Fica guardada apenas no arquivo de configuração deste computador.",
|
|
1486
|
+
"providers.keyPlaceholder": "Cole sua chave de API",
|
|
1487
|
+
"providers.keySaved": "A chave salva continua em uso. Cole uma nova chave para substituí-la.",
|
|
1488
|
+
"providers.url": "URL base da API",
|
|
1489
|
+
"providers.urlHelp": "URL base do endpoint compatível com Anthropic. Altere só se a documentação do serviço indicar outra.",
|
|
1490
|
+
"providers.openaiUrlHelp": "URL base da API compatível com OpenAI. As requisições são traduzidas para o endpoint Chat Completions ou Responses dela.",
|
|
1491
|
+
"providers.wire": "Formato da API",
|
|
1492
|
+
"providers.wireHelp": "Use Chat Completions para a maioria dos provedores. Selecione Responses só quando o provedor suportar a Responses API sem estado.",
|
|
1493
|
+
"providers.urlRequired": "Informe uma URL válida.",
|
|
1494
|
+
"providers.keyType": "Cabeçalho de autenticação",
|
|
1495
|
+
"providers.keyTypeHelp": "Em geral, x-api-key. Escolha Authorization: Bearer só se a documentação do serviço pedir.",
|
|
1496
|
+
"providers.extraHeaders": "Cabeçalhos HTTP extras",
|
|
1497
|
+
"providers.extraHeadersHelp": "Só os cabeçalhos que o serviço exige, um 'nome: valor' por linha.",
|
|
1498
|
+
"providers.models": "Modelos a usar",
|
|
1499
|
+
"providers.modelsHelp": "Os modelos marcados aparecem na lista de Mapeamento de modelos.",
|
|
1500
|
+
"providers.modelsFound": "Lista de modelos informada pelo provedor.",
|
|
1501
|
+
"providers.modelsFallback": "Não foi possível obter a lista; mostrando os modelos padrão conhecidos.",
|
|
1502
|
+
"measure.running": "Medindo as capacidades dos modelos… ({done}/{total})",
|
|
1503
|
+
"measure.help": "Verifica em qual formato de API cada modelo responde e quais níveis de esforço de raciocínio aceita — pelo catálogo público de modelos (models.dev) quando o modelo consta nele; caso contrário, perguntando ao próprio modelo.",
|
|
1504
|
+
"measure.done": "Medido: {summary}",
|
|
1505
|
+
"measure.nothing": "Nada foi medido: nenhum modelo respondeu.",
|
|
1506
|
+
"measure.notEntitled": "{models}: uso restrito ao app do próprio provedor. Marcar aqui não vai fazer funcionar.",
|
|
1507
|
+
"measure.failed": "Não foi possível medir as capacidades dos modelos.",
|
|
1508
|
+
"measure.authFailed": "A chave de API foi recusada, então nada pôde ser medido.",
|
|
1509
|
+
"providers.probeNotEntitled": "A chave foi aceita; o plano recusou.",
|
|
1510
|
+
"providerStatus.notEntitled": "Recusado pelo plano",
|
|
1511
|
+
"providers.probeOk": "Conectado.",
|
|
1512
|
+
"providers.probeFailed": "Não foi possível conectar.",
|
|
1513
|
+
"providers.apiSoon": "Tente de novo em instantes.",
|
|
1514
|
+
"providers.showInPicker": "Mostrar também com o nome real no seletor do app Claude",
|
|
1515
|
+
"providers.pickerOffHint": "O modo seletor está desativado agora, então marcar isto ainda não os exibe. Ao salvar, vamos perguntar se você quer ativá-lo.",
|
|
1516
|
+
"providers.pickerOffPrompt": "O modo seletor está desativado, então estes modelos ainda não vão aparecer no seletor do Claude Desktop. Ativar agora? Seu sistema operacional vai pedir confirmação para confiar no certificado.",
|
|
1517
|
+
"providers.credentials": "Origem do login",
|
|
1518
|
+
"providers.credentialsHelp": "De onde vem o token da conta do ChatGPT.",
|
|
1519
|
+
"providers.authAuto": "Automático (login do ClaudeRipple ou, na falta dele, do Codex CLI)",
|
|
1520
|
+
"providers.authOwn": "Entrar com o ClaudeRipple",
|
|
1521
|
+
"providers.authBorrow": "Reaproveitar o login do Codex CLI (~/.codex/auth.json)",
|
|
1522
|
+
"providers.login": "Como entrar",
|
|
1523
|
+
"providers.loginHelp": "'Entrar no ChatGPT…' no app da barra de menus ou clauderipple login em um terminal abre o login pelo navegador. Os tokens ficam neste computador.",
|
|
1524
|
+
"providers.loginHint": "Use 'Entrar no ChatGPT…' no app da barra de menus ou rode clauderipple login em um terminal.",
|
|
1525
|
+
"providers.chatgptLogin": "Entrar no ChatGPT",
|
|
1526
|
+
"providers.chatgptLoginWaiting": "Conclua o login no navegador. Esta tela se atualiza quando terminar.",
|
|
1527
|
+
"providers.chatgptLoginDone": "Login no ChatGPT concluído.",
|
|
1528
|
+
"providers.chatgptAccountsTitle": "Contas do ChatGPT",
|
|
1529
|
+
"providers.chatgptAccountsSubtitle": "Com várias contas, quando uma atinge o limite, a próxima assume a mesma requisição. Uma conversa fica na conta que respondeu, para manter o cache. As contas são usadas na ordem da lista.",
|
|
1530
|
+
"providers.addChatgptAccount": "+ Adicionar conta do ChatGPT",
|
|
1531
|
+
"providers.chatgptAddWaiting": "No navegador, entre com a conta que você quer adicionar. Se aparecer uma conta que você já adicionou, escolha outra.",
|
|
1532
|
+
"providers.chatgptAdded": "Conta do ChatGPT adicionada.",
|
|
1533
|
+
"providers.chatgptNoAccounts": "Nenhuma conta do ChatGPT conectada.",
|
|
1534
|
+
"providers.chatgptAccountCount": "{count} contas",
|
|
1535
|
+
"providers.chatgptCodexHelp": "O login do próprio Codex CLI. O ClaudeRipple só o lê, nunca o renova e o usa por último.",
|
|
1536
|
+
"providers.chatgptOwnHelp": "O ClaudeRipple guarda este login em um arquivo que só o seu usuário pode ler e o renova automaticamente.",
|
|
1537
|
+
"providers.chatgptInUse": "em uso agora",
|
|
1538
|
+
"providers.chatgptStandby": "em espera",
|
|
1539
|
+
"providers.chatgptPause": "Pausar",
|
|
1540
|
+
"providers.chatgptResume": "Retomar",
|
|
1541
|
+
"providers.chatgptPaused": "pausada",
|
|
1542
|
+
"providers.chatgptClearCooldown": "Usar agora",
|
|
1543
|
+
"providers.chatgptRemoveConfirm": "Remover a conta do ChatGPT {name} do ClaudeRipple?",
|
|
1544
|
+
"providers.chatgptReauthHelp": "Este login expirou ou foi recusado. Entrar novamente com a mesma conta o restaura no mesmo lugar.",
|
|
1545
|
+
"pool.coolingFor": "volta em {duration}",
|
|
1546
|
+
"time.hoursMinutes": "{h}h {m}min",
|
|
1547
|
+
"time.minutes": "{m}min",
|
|
1548
|
+
"time.seconds": "{s}s",
|
|
1549
|
+
"quota.window5h": "5h",
|
|
1550
|
+
"quota.windowWeek": "semanal",
|
|
1551
|
+
"quota.windowHours": "{hours}h",
|
|
1552
|
+
"quota.line": "{window} {percent}%",
|
|
1553
|
+
"quota.resetAt": "renova em {time}",
|
|
1554
|
+
"providers.effortLevels": "Esforço de raciocínio: {levels}",
|
|
1555
|
+
"providers.effortNone": "Não aceita esforço de raciocínio",
|
|
1556
|
+
"providers.modelEffort": "esforço",
|
|
1557
|
+
"providers.modelNoEffort": "sem esforço",
|
|
1558
|
+
"providers.defaultEffort": "Esforço de raciocínio padrão",
|
|
1559
|
+
"providers.defaultEffortHelp": "Usado quando nem o mapeamento nem o app definem um esforço.",
|
|
1560
|
+
"providers.identity": "Dizer ao modelo quem ele é (identidade)",
|
|
1561
|
+
"providers.append": "Adendo ao prompt de sistema",
|
|
1562
|
+
"providers.appendHelp": "Texto fixo acrescentado ao prompt de sistema de toda requisição. Alterá-lo com frequência quebra o cache de prompt e aumenta o custo.",
|
|
1563
|
+
"providerStatus.connected": "Conectado",
|
|
1564
|
+
"providerStatus.keyNeeded": "Requer chave",
|
|
1565
|
+
"providerStatus.loginNeeded": "Requer login",
|
|
1566
|
+
"providerStatus.disconnected": "Não conectado",
|
|
1567
|
+
"providerStatus.checking": "Verificando",
|
|
1568
|
+
"clients.title": "Clientes",
|
|
1569
|
+
"clients.subtitle": "Configure os apps que usam o ClaudeRipple.",
|
|
1570
|
+
"clients.desktop.title": "Claude Desktop",
|
|
1571
|
+
"clients.desktop.help": "Escolha se os modelos dos provedores aparecem com o nome real no seletor de modelos.",
|
|
1572
|
+
"clients.codex.title": "Codex (app e CLI)",
|
|
1573
|
+
"clients.codex.help": "Adiciona o ClaudeRipple como provedor na configuração do Codex (~/.codex/config.toml). Terminal: `codex --profile clauderipple -m <model>`; app Codex: defina clauderipple como provedor padrão nessa configuração.",
|
|
1574
|
+
"clients.codex.note": "Quando ativado, as requisições GPT do Codex também passam pelo ClaudeRipple. O Codex mantém o próprio login e, com várias contas do ChatGPT adicionadas, a próxima assume quando uma atinge o limite — sem sair da conta. A lista abaixo mostra os modelos Claude e compatíveis com Anthropic que o Codex ganha.",
|
|
1575
|
+
"clients.codex.turnOn": "Usar o ClaudeRipple no Codex",
|
|
1576
|
+
"clients.codex.turnOff": "Desconectar o Codex",
|
|
1577
|
+
"clients.claudeCode.title": "Claude Code no terminal",
|
|
1578
|
+
"clients.claudeCode.help": "O `claude` do terminal usa o mesmo roteador. Escolha com `/model <name>`.",
|
|
1579
|
+
"logs.title": "Logs",
|
|
1580
|
+
"logs.requests": "Requisições",
|
|
1581
|
+
"logs.raw": "Logs brutos",
|
|
1582
|
+
"logs.lastHour": "Última hora",
|
|
1583
|
+
"logs.autoscroll": "Rolagem automática",
|
|
1584
|
+
"logs.polling": "Atualiza a cada 3s",
|
|
1585
|
+
"logs.rawPolling": "Atualiza a cada 3s · últimas 200 linhas",
|
|
1586
|
+
"logs.provider": "Provedor",
|
|
1587
|
+
"logs.all": "Todos",
|
|
1588
|
+
"logs.showCountTokens": "Mostrar contagens de tokens",
|
|
1589
|
+
"logs.empty": "Nenhuma requisição ainda.",
|
|
1590
|
+
"logs.summary.requests": "Requisições",
|
|
1591
|
+
"logs.summary.success": "Sucesso / falha",
|
|
1592
|
+
"logs.summary.input": "Tokens de entrada",
|
|
1593
|
+
"logs.summary.output": "Tokens de saída",
|
|
1594
|
+
"logs.summary.duration": "Resposta média",
|
|
1595
|
+
"logs.cacheHit": "Cache {percent}%",
|
|
1596
|
+
"logs.th.time": "Hora",
|
|
1597
|
+
"logs.th.models": "Modelo",
|
|
1598
|
+
"logs.th.effort": "esforço",
|
|
1599
|
+
"logs.th.input": "Entrada",
|
|
1600
|
+
"logs.th.output": "Saída",
|
|
1601
|
+
"logs.th.duration": "Duração",
|
|
1602
|
+
"logs.th.status": "Status",
|
|
1603
|
+
"logs.status.ok": "ok",
|
|
1604
|
+
"logs.status.error": "erro",
|
|
1605
|
+
"logs.detail.id": "ID da requisição",
|
|
1606
|
+
"logs.detail.kind": "Tipo",
|
|
1607
|
+
"logs.detail.stop": "Motivo da parada",
|
|
1608
|
+
"logs.detail.uncached": "Entrada fora do cache",
|
|
1609
|
+
"logs.detail.cacheRead": "Leitura do cache",
|
|
1610
|
+
"logs.detail.cacheWrite": "Gravação no cache",
|
|
1611
|
+
"logs.detail.note": "Observação",
|
|
1612
|
+
"logs.none": "Nenhum",
|
|
1613
|
+
"logs.seconds": "{value}s",
|
|
1614
|
+
"about.title": "Sobre",
|
|
1615
|
+
"about.body": "O ClaudeRipple é um projeto open source independente, sem afiliação com a Anthropic ou a OpenAI. Claude e Claude Code são marcas comerciais da Anthropic, PBC.",
|
|
1616
|
+
"about.license": "Licença: GPL-3.0",
|
|
1617
|
+
"providers.identityHelp": "Insere 'You are <model>, answering through Claude Code' no início do prompt de sistema. Desativado, o modelo pode achar que é o Claude.",
|
|
1618
|
+
"picker.models": "{count} modelos no seletor: {names}",
|
|
1619
|
+
"picker.lastAt": "O Claude Desktop buscou a lista pela última vez em {at}",
|
|
1620
|
+
"picker.never": "O Claude Desktop ainda não buscou a lista. Encerre-o por completo e abra-o de novo.",
|
|
1621
|
+
"agentTitle.title": "Identificação dos subagentes",
|
|
1622
|
+
"agentTitle.help": "Coloca o modelo real e o esforço no início do título dos subagentes no painel de tarefas em segundo plano (ex.: Terra·high · Review). Funciona por meio de um hook do Claude Code; vale para novos subagentes.",
|
|
1623
|
+
"agentTitle.on": "Ativado",
|
|
1624
|
+
"agentTitle.off": "Desativado",
|
|
1625
|
+
"agentTitle.turnOn": "Ativar",
|
|
1626
|
+
"agentTitle.turnOff": "Desativar",
|
|
1627
|
+
"statusMod.title": "Linha de rota e log de requisições",
|
|
1628
|
+
"statusMod.help": "Mostra acima do prompt do Claude Code para onde foi a última requisição (modelo, provedor, acerto de cache, tempo) e abre o log de requisições em um painel lateral com o botão Log ou /ripple-log. × ou /ripple-bar oculta ou traz de volta a linha. Um worker também fica no próprio modelo quando a chamada do Agent indica outro, e o marcador [[ripple: name@level]] dele é lido onde quer que esteja no prompt. Funciona por meio de um mod do Claude Code; vale para as sessões abertas daqui em diante.",
|
|
1629
|
+
"statusMod.turnOn": "Ativar",
|
|
1630
|
+
"statusMod.turnOff": "Desativar",
|
|
1631
|
+
"statusMod.saved": "Salvo. Vale para as sessões do Claude Code abertas daqui em diante.",
|
|
1632
|
+
"workerTools.title": "Ferramentas dos workers",
|
|
1633
|
+
"workerTools.help": "Dá aos workers que o ClaudeRipple gera só as ferramentas de leitura, edição, execução, busca e skills. Os servidores MCP e as ferramentas de plugins da sessão deixam de ser incluídos em toda requisição de worker, o que reduz bastante a entrada, mas esses workers não conseguem usar um navegador nem o iOS Simulator. Um worker que precise deles deve ser definido em um arquivo de agente seu em ~/.claude/agents, que o ClaudeRipple nunca toca. Vale para novas sessões.",
|
|
1634
|
+
"workerTools.on": "Ativado",
|
|
1635
|
+
"workerTools.off": "Desativado (herda todas as ferramentas da sessão)",
|
|
1636
|
+
"workerTools.turnOn": "Limitar ferramentas",
|
|
1637
|
+
"workerTools.turnOff": "Parar de limitar",
|
|
1638
|
+
"providers.probeNoCredits": "A chave é válida, mas esta conta não tem créditos, então nenhuma resposta voltou. Adicione créditos no site do provedor.",
|
|
1639
|
+
"providers.probeBadKey": "A chave de API foi rejeitada. Verifique a chave.",
|
|
1640
|
+
"providers.searchModels": "Buscar modelos (nome ou id)",
|
|
1641
|
+
"providers.customModelPlaceholder": "Digite um ID de modelo (ex.: abliterated-model)",
|
|
1642
|
+
"providers.customModelAdd": "Adicionar",
|
|
1643
|
+
"providers.customModelHint": "Este provedor não listou os modelos dele. Digite abaixo o ID do modelo que consta na documentação do provedor para adicioná-lo.",
|
|
1644
|
+
"providers.google": "Google Gemini",
|
|
1645
|
+
"providers.googleHelp": "Modelos Gemini com uma chave de API do Google AI Studio ou uma conta do Google (Antigravity).",
|
|
1646
|
+
"providers.googleKeyHelp": "Crie uma em aistudio.google.com/apikey. No nível gratuito, o Google pode usar suas entradas para melhorar os produtos dele, então use uma chave paga para código sensível.",
|
|
1647
|
+
"providers.googleAntigravity": "Login do Antigravity",
|
|
1648
|
+
"providers.googleAuthApiKey": "Chave de API do AI Studio",
|
|
1649
|
+
"providers.googleAuthHelp": "Uma chave de API é a opção com suporte do Google. O login do Antigravity usa a assinatura de uma conta do Google de uma forma que os termos do Google proíbem.",
|
|
1650
|
+
"providers.googleLogin": "Conta do Google",
|
|
1651
|
+
"providers.addGoogleAccount": "+ Entrar com o Google",
|
|
1652
|
+
"providers.googleWarning": "Os termos do Antigravity do Google (seção 6) e o FAQ do Gemini CLI classificam como violação o uso destas credenciais fora dos próprios apps do Google. Em fevereiro de 2026, o Google suspendeu um grande número de contas usadas dessa forma e afirmou que, em caso de reincidência, a suspensão é permanente. O ClaudeRipple não tem afiliação com o Google.\n\nRecomenda-se usar uma conta secundária. Entrar e aceitar este risco?",
|
|
1653
|
+
"providers.googleWarningShort": "Os termos do Google proíbem este uso, e contas já foram suspensas por isso. Recomenda-se usar uma conta secundária.",
|
|
1654
|
+
"providers.googleOpenManually": "O navegador não abriu. Abra este endereço manualmente.",
|
|
1655
|
+
"providers.googleAdded": "Conta do Google adicionada.",
|
|
1656
|
+
"providers.googleSignInFirst": "Nenhuma conta do Google conectada. Entre primeiro.",
|
|
1657
|
+
"providers.googleRemoveConfirm": "Remover {name} do ClaudeRipple? A conta do Google em si não é afetada.",
|
|
1658
|
+
"providers.googleProject": "projeto {id}",
|
|
1659
|
+
"providers.googleOwnHelp": "O ClaudeRipple guarda este login em um arquivo que só o seu usuário pode ler e o renova automaticamente.",
|
|
1660
|
+
"providers.googleVerifyNeeded": "Verificação do Google necessária",
|
|
1661
|
+
"providers.googleVerifyAction": "Verificar com o Google",
|
|
1662
|
+
"providers.googleRecheck": "Verificar novamente",
|
|
1663
|
+
"providers.googleVerified": "Verificado. Esta conta voltou a responder.",
|
|
1664
|
+
"providers.googleStillUnverified": "O Google ainda pede verificação. Confira se você concluiu as etapas da página.",
|
|
1665
|
+
"providers.googleVerifyUnknown": "Não foi possível verificar agora; a próxima requisição vai verificar.",
|
|
1666
|
+
"providers.googleVerifyHelp": "O Google quer verificar esta conta antes que ela possa ser usada. Abra a página em um navegador em que você esteja logado nessa conta e conclua as etapas; a próxima requisição é respondida normalmente.",
|
|
1667
|
+
"providers.googleNoAccounts": "Nenhuma conta do Google conectada.",
|
|
1668
|
+
"providers.googleAccountsTitle": "Contas do Google",
|
|
1669
|
+
"providers.googleAccountsSubtitle": "Uma conversa fica em uma só conta; ao atingir um limite, ela passa para a próxima antes de qualquer resposta começar.",
|
|
1670
|
+
"providers.googleLoginWaiting": "Aguardando o login do Google no navegador…",
|
|
1671
|
+
"providers.modelsSummary": "{selected} de {total} selecionados",
|
|
1672
|
+
"providers.modelsHidden": "Mais {hidden} — busque para encontrá-los",
|
|
1673
|
+
"providers.modelsFoundMany": "Lista informada pelo provedor. Ela é longa: busque e marque só o que você vai usar.",
|
|
1674
|
+
"providers.modelsFoundLive": "{n} modelos obtidos do catálogo do ChatGPT. Os novos são adicionados desmarcados.",
|
|
1675
|
+
"slots.saving": "Salvando…",
|
|
1676
|
+
"slots.saved": "Salvo · vale imediatamente",
|
|
1677
|
+
},
|
|
154
1678
|
};
|
|
155
1679
|
|
|
156
|
-
|
|
1680
|
+
/** The languages offered, each named in itself, in the order the selector lists them. */
|
|
1681
|
+
const LANGUAGES = [
|
|
1682
|
+
["en", "English"], ["ko", "한국어"], ["zh", "简体中文"], ["ja", "日本語"], ["es", "Español"], ["pt", "Português (BR)"],
|
|
1683
|
+
];
|
|
1684
|
+
|
|
1685
|
+
/** A BCP 47 tag ("zh-Hans-CN", "pt-PT", "ko") as one of ours, or null. Every Chinese locale gets the
|
|
1686
|
+
* Simplified text and every Portuguese one the Brazilian text: closer than English for each. */
|
|
1687
|
+
function langOf(tag) {
|
|
1688
|
+
const base = String(tag || "").toLowerCase().split(/[-_]/)[0];
|
|
1689
|
+
return LANGUAGES.some(([code]) => code === base) ? base : null;
|
|
1690
|
+
}
|
|
1691
|
+
|
|
1692
|
+
// A language the user picked in the selector wins; then ?lang= (the tray app passes the OS
|
|
157
1693
|
// language there, because navigator.language is Chromium's app locale and read "en" on a Korean
|
|
158
1694
|
// Windows); then the browser's own language.
|
|
159
1695
|
function detectLang() {
|
|
160
1696
|
try {
|
|
161
|
-
const stored = localStorage.getItem("clauderipple_lang");
|
|
162
|
-
if (stored
|
|
1697
|
+
const stored = langOf(localStorage.getItem("clauderipple_lang"));
|
|
1698
|
+
if (stored) return stored;
|
|
163
1699
|
} catch { /* storage unavailable */ }
|
|
164
1700
|
try {
|
|
165
|
-
const q = new URLSearchParams(location.search).get("lang");
|
|
166
|
-
if (q
|
|
1701
|
+
const q = langOf(new URLSearchParams(location.search).get("lang"));
|
|
1702
|
+
if (q) return q;
|
|
167
1703
|
} catch { /* no location */ }
|
|
168
|
-
return navigator.language
|
|
1704
|
+
return langOf(navigator.language) || "en";
|
|
169
1705
|
}
|
|
170
1706
|
const CURRENT_LANG = detectLang();
|
|
171
1707
|
function t(key, vars) {
|