clauderipple 0.8.9 → 0.9.0
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 +62 -0
- package/README.es.md +0 -4
- package/README.ja.md +0 -4
- package/README.ko.md +5 -1
- package/README.md +5 -1
- package/README.pt-BR.md +0 -4
- package/README.zh-CN.md +0 -4
- package/dist/app/dist/main.js +23 -3
- package/dist/app/package.json +1 -1
- package/dist/cli/src/codex.js +3 -1
- package/dist/cli/src/index.js +1 -1
- package/dist/cli/src/settings.js +5 -2
- package/dist/cli/src/tray.js +41 -5
- package/dist/mod/.claude-plugin/plugin.json +9 -1
- package/dist/mod/hooks/cache.ts +60 -0
- package/dist/mod/hooks/compact.ts +40 -0
- package/dist/mod/hooks/handoff.ts +43 -0
- package/dist/mod/hooks/i18n.ts +2716 -0
- package/dist/mod/hooks/judge.ts +226 -0
- package/dist/mod/hooks/ladder.js +179 -0
- package/dist/mod/hooks/ladder.ts +174 -0
- package/dist/mod/hooks/modes.ts +93 -0
- package/dist/mod/hooks/register.tsx +1458 -256
- package/dist/mod/hooks/session.ts +62 -0
- package/dist/mod/hooks/settings.js +342 -0
- package/dist/mod/hooks/settings.ts +321 -0
- package/dist/mod/hooks/stats.ts +59 -0
- package/dist/mod/hooks/ui/agents.tsx +138 -0
- package/dist/mod/hooks/ui/alerts.tsx +370 -0
- package/dist/mod/hooks/ui/art.ts +628 -0
- package/dist/mod/hooks/ui/band.tsx +836 -0
- package/dist/mod/hooks/ui/kit.tsx +258 -0
- package/dist/mod/hooks/ui/log.tsx +109 -0
- package/dist/mod/hooks/ui/parts.tsx +217 -0
- package/dist/mod/hooks/ui/ripple.ts +614 -0
- package/dist/mod/hooks/ui/settings.tsx +376 -0
- package/dist/mod/hooks/ui/setup.tsx +148 -0
- package/dist/mod/hooks/ui/theme.ts +217 -0
- package/dist/mod/hooks/ui/view.ts +371 -0
- package/dist/mod/hooks/worker.ts +1 -1
- package/dist/mod/hooks/workers.ts +217 -0
- package/dist/mod/tests/register.test.tsx +1730 -0
- package/dist/mod/tests/ui.test.tsx +853 -0
- package/dist/mod/tsconfig.json +2 -1
- package/dist/mod/types/index.d.ts +320 -1
- package/dist/router/src/admin.js +195 -53
- package/dist/router/src/agents.js +24 -5
- package/dist/router/src/bootstrap.js +4 -2
- package/dist/router/src/compat.js +10 -2
- package/dist/router/src/config.js +3 -0
- package/dist/router/src/health.js +33 -0
- package/dist/router/src/index.js +1 -0
- package/dist/router/src/ingress/models.js +4 -1
- package/dist/router/src/mod-settings.js +119 -0
- package/dist/router/src/model-policy.js +6 -0
- package/dist/router/src/model-scores.js +159 -0
- package/dist/router/src/picker.js +7 -0
- package/dist/router/src/providers/anthropic-account-pool.js +10 -4
- package/dist/router/src/providers/anthropic-accounts.js +26 -1
- package/dist/router/src/providers/chatgpt/catalog.js +45 -14
- package/dist/router/src/providers/chatgpt/index.js +9 -3
- package/dist/router/src/providers/chatgpt/translate.js +9 -5
- package/dist/router/src/providers/google/index.js +6 -2
- package/dist/router/src/providers/openai/index.js +4 -1
- package/dist/router/src/providers/openai/translate.js +1 -1
- package/dist/router/src/proxy.js +14 -3
- package/dist/router/src/version.js +1 -1
- package/dist/ui/app.js +932 -209
- package/dist/ui/favicon-32.png +0 -0
- package/dist/ui/favicon.svg +12 -0
- package/dist/ui/i18n.js +923 -237
- package/dist/ui/index.html +159 -87
- package/dist/ui/style.css +789 -408
- package/docs/ARCHITECTURE.md +134 -2
- package/package.json +7 -3
package/dist/ui/i18n.js
CHANGED
|
@@ -6,111 +6,229 @@ const I18N = {
|
|
|
6
6
|
"nav.health": "상태", "nav.slots": "모델 매핑", "nav.providers": "프로바이더", "nav.clients": "클라이언트", "nav.logs": "로그", "nav.about": "정보",
|
|
7
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
|
-
"health.title": "상태", "health.subtitle": "Claude Desktop 연결, 프로바이더, 모델 피커 상태를 5초마다 확인합니다.", "health.desktop": "Claude Desktop 연결", "health.connection": "연결 상태", "health.connected": "연결됨", "health.notConnected": "연결 안 됨", "health.disconnected": "연결
|
|
10
|
-
"update.check": "업데이트 확인", "update.checking": "확인 중…", "update.latest": "최신 버전입니다.", "update.install": "{latest}(으)로 업데이트", "update.download": "{latest}
|
|
11
|
-
"picker.title": "모델 피커","picker.
|
|
12
|
-
"slots.title": "모델 매핑", "slots.subtitle": "Claude 앱에서
|
|
13
|
-
"providers.title": "프로바이더", "providers.subtitle": "연결된 서비스와 계정을 한곳에서 관리합니다. 프로바이더를
|
|
14
|
-
"providerStatus.connected": "연결됨", "providerStatus.keyNeeded": "키 확인 필요", "providerStatus.loginNeeded": "로그인 필요", "providerStatus.disconnected": "연결 안 됨", "providerStatus.checking": "확인 중",
|
|
15
|
-
"clients.title": "클라이언트", "clients.subtitle": "ClaudeRipple을
|
|
16
|
-
"logs.title": "로그", "logs.requests": "요청", "logs.raw": "원본 로그", "logs.lastHour": "최근 1시간", "logs.autoscroll": "자동 스크롤", "logs.polling": "3초마다 갱신", "logs.rawPolling": "3초마다 갱신 · 최근 200줄", "logs.provider": "프로바이더", "logs.all": "전체",
|
|
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.version": "버전", "health.runtime": "라우터 실행 파일 · 시작 시각", "health.routes": "매핑 수", "health.cli": "Claude Code 버전",
|
|
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": "업데이트를 시작하지 못했습니다.",
|
|
11
|
+
"picker.title": "모델 피커","picker.restartHelp": "활성화 후 Claude Desktop을 완전히 종료하고 다시 시작하세요.", "picker.confirmOn": "인증서 신뢰를 위해 운영체제 확인 창이 표시됩니다(macOS: 로그인 암호 입력, Windows: 인증서 확인). ClaudeRipple은 암호를 수집하거나 확인하지 않습니다. 계속 진행하시겠습니까?", "picker.working": "처리 중입니다.", "picker.doneOn": "활성화되었습니다. Claude Desktop을 완전히 종료하고 다시 시작하세요.", "picker.doneOff": "비활성화되었습니다. Claude Desktop을 완전히 종료하고 다시 시작하세요.",
|
|
12
|
+
"slots.title": "모델 매핑", "slots.subtitle": "Claude 앱에서 선택한 모델의 요청을 실제로 처리할 모델을 지정합니다. 변경 사항은 자동으로 저장됩니다.","slots.pickerModels": "피커 표시 모델", "slots.pickerModelsHelp": "선택한 모델이 Claude Desktop 피커에 표시되며, 선택 시 해당 모델이 바로 응답합니다. 새로 추가한 모델은 새 세션부터 선택할 수 있습니다(진행 중인 세션은 시작 시점의 목록 유지).", "slots.add": "+ 매핑 추가", "slots.th.claude": "Claude 앱 선택 모델", "slots.th.target": "실제 처리 모델", "slots.th.effort": "추론 강도 (effort)", "slots.passthrough": "기본 Claude 처리", "slots.noProviderModels": "먼저 프로바이더를 연결하고 사용할 모델을 선택하세요.", "slots.noChanges": "설정된 매핑이 없습니다. 모든 요청을 Claude가 기본 처리합니다.", "slots.duplicate": "동일한 Claude 모델을 중복 매핑할 수 없습니다.", "slots.effortHint": "앱에서 선택한 강도를 모델이 지원하지 않으면 가장 가까운 단계로 변환하여 전송합니다. (예: xhigh → high)", "slots.noEffort": "이 모델은 추론 강도를 지원하지 않습니다.", "pool.ready": "사용 중", "pool.cooling": "{seconds}초 후 재사용", "pool.quarantined": "인증 실패 — API 키 확인 필요", "slots.modelSlots": "Claude Code 자체 모델 슬롯", "slots.modelSlotsHelp": "Claude Code가 요청 생성 전에 내부적으로 결정하는 슬롯이므로 일반 모델 매핑이 적용되지 않습니다. 비워 두면 Claude가 기본 처리하며 Claude 사용량을 소진합니다. 특히 웹 검색은 '작고 빠른 모델' 슬롯에서 실행되므로, 이 슬롯을 변경하지 않으면 라우팅된 세션도 검색 시 Claude 한도를 사용합니다. 변경 시 settings.json에 반영됩니다.", "slots.noWebSearch": "웹 검색 미지원 모델", "slots.noWebSearchWarn": "저장되었습니다. 단, 이 모델에서는 ClaudeRipple을 통한 웹 검색이 지원되지 않아 검색이 실패합니다. (모델 자체의 기능 제한이 아닐 수 있으며, 기본값으로 설정하면 Claude가 정상적으로 검색합니다.)", "slots.slotDefault": "기본값 (Claude)", "slots.slot.smallFast": "작고 빠른 모델", "slots.slot.subagent": "서브에이전트", "slots.slot.main": "세션 기본 모델", "slots.slotHelp.smallFast": "웹 검색, 제목 생성, 분류", "slots.slotHelp.subagent": "모델을 별도 지정하지 않은 서브에이전트", "slots.slotHelp.main": "세션 시작 시 기본 모델", "slots.slotSaved": "모델 슬롯을 저장했습니다. 새 세션부터 적용됩니다.", "slots.windowGlobal": "기본값", "slots.windowHelp": "이 모델의 컨텍스트 창 크기(토큰 단위)입니다. 모델마다 지원 범위가 다르므로 개별 설정합니다. 비워 두면 프로바이더 제공 값을 사용하며, 제공 값이 없으면 시스템 기본값을 적용합니다. 압축 기준 시점이 아닌 모델의 실제 수용 용량을 입력하세요.",
|
|
13
|
+
"providers.title": "프로바이더", "providers.subtitle": "연결된 서비스와 계정을 한곳에서 관리합니다. 프로바이더를 선택하면 우측에 세부 설정과 계정 목록이 표시됩니다.", "providers.search": "프로바이더 검색…", "providers.overview": "개요", "providers.accounts": "계정","providers.modelsTab": "모델", "providers.selectedModels": "선택한 모델", "providers.modelsCountShort": "모델 {count}개", "providers.noSelection": "왼쪽에서 프로바이더를 선택하세요.", "providers.rotationOn": "자동 전환 켜짐", "providers.rotationOff": "자동 전환 꺼짐", "providers.rotationSaving": "자동 전환 설정 저장 중…", "providers.rotationSaved": "자동 전환 설정을 저장했습니다.", "providers.accountCount": "연결된 계정 {count}개", "providers.accountCountHelp": "현재 Claude 로그인 계정과 ClaudeRipple에 추가된 계정의 총합입니다.", "providers.accountPoolTitle": "Claude 계정", "providers.accountPoolSubtitle": "대화는 한 계정에 고정됩니다. 응답 시작 전 사용량 한도 초과나 인증 오류가 발생할 때만 다음 계정으로 전환합니다.", "providers.addClaudeAccount": "+ Claude 계정 추가", "providers.currentAccountHelp": "Claude Code 또는 Claude Desktop에서 현재 사용 중인 로그인 계정입니다. ClaudeRipple에서는 삭제할 수 없습니다.", "providers.addedAccountHelp": "ClaudeRipple이 로컬 사용자 전용 파일에 OAuth 로그인 정보를 안전하게 저장하고 자동으로 갱신합니다.", "providers.reauthAction": "다시 로그인", "providers.preferBadge": "1순위", "providers.preferAction": "1순위 지정", "providers.preferHelp": "새 대화는 목록 최상단의 1순위 계정부터 사용합니다. 한도 도달 시 다음 계정으로 전환되며, 한도가 초기화되면 새 대화부터 다시 1순위 계정을 사용합니다. 진행 중인 대화는 프롬프트 캐시 유지를 위해 기존 계정에 유지됩니다.","providers.dangerZone": "추가 계정 관리","providers.connection": "연결 상태","providers.rotationRequired": "계정을 여러 개 등록하더라도 자동 전환이 켜져 있어야 Claude 앱 및 Claude Code 요청에 사용됩니다.", "providers.anthropic": "Claude (Anthropic)", "providers.anthropicHelp": "Claude 구독 계정을 자동 전환하거나, Codex 등 OpenAI 호환 도구에 Claude 모델을 제공합니다.", "providers.anthropicIngressOnly": "자동 전환을 끄면 선택한 모델이 Codex 등 OpenAI 호환 도구에만 제공되며, Claude 앱의 모델 매핑에는 표시되지 않습니다.", "providers.anthropicPoolRouting": "자동 전환을 켜면 Claude 앱 및 Claude Code 요청을 대화 단위로 단일 계정에 고정하여 프롬프트 캐시를 보존합니다. 응답 생성 전 429 한도 초과나 인증 거부가 수신되면 다음 계정으로 전환합니다. 복수 구독 계정 사용은 Anthropic 이용약관에 따라 제한될 수 있으므로 본인 소유 계정 및 허용된 용도로만 사용하세요.","providers.anthropicPool": "Claude 계정 자동 전환","providers.anthropicCurrent": "현재 로그인", "providers.anthropicReauth": "재로그인 필요", "providers.anthropicNoAccounts": "ClaudeRipple에 추가된 계정이 없습니다.", "providers.anthropicRenamePrompt": "이 계정의 표시 이름", "providers.anthropicRemoveConfirm": "Claude 계정 {name}을(를) ClaudeRipple에서 삭제하시겠습니까?", "providers.anthropicLogoutAll": "추가 계정 전체 삭제", "providers.anthropicLogoutAllConfirm": "ClaudeRipple에 추가된 Claude 계정을 모두 삭제하시겠습니까? Claude Code 및 Claude Desktop의 현재 로그인 상태는 유지됩니다.", "providers.anthropicAuthClaudeCode": "Claude Code 로그인 재사용 (자동)", "providers.anthropicAuthApiKey": "API 키", "providers.anthropicCredentialsHelp": "Claude Code 로그인 재사용 또는 Anthropic API 키 중 인증 방식을 선택하세요.", "providers.anthropicSourceObserved": "Claude Desktop 세션에서 감지됨", "providers.anthropicSourceClaudeCode": "터미널 claude 로그인", "providers.anthropicSourceTokenFile": "ClaudeRipple 토큰", "providers.anthropicSourceMissing": "없음 — 아래 버튼으로 연결","providers.anthropicOAuthTitle": "Claude 계정 추가", "providers.anthropicOAuthWarning": "Claude 구독 OAuth를 타사 프록시에서 사용하는 방식은 Anthropic 공식 지원 기능이 아니며, 약관 위반 또는 계정 제재 대상이 될 수 있습니다. 반드시 본인 계정과 허용된 용도로만 사용하세요.", "providers.anthropicOAuthAccept": "위험을 확인하였으며 OAuth로 계속 진행합니다.", "providers.anthropicOAuthContinue": "OAuth로 계속","providers.anthropicLoginDone": "Claude 구독을 연결했습니다.", "providers.anthropicSignInBrowser": "브라우저에서 Claude에 로그인하세요. 창이 열리지 않으면 아래 링크를 여세요.", "providers.anthropicSignInLink": "로그인 페이지 열기", "providers.anthropicSignInPaste": "브라우저에서 로그인한 뒤 표시되는 코드를 여기에 붙여넣으세요.", "providers.anthropicSignInSubmit": "코드 제출", "providers.anthropicSignInManual": "코드 붙여넣기로 다시 시도", "providers.anthropicSignInWaiting": "브라우저 승인을 기다리는 중… (최대 5분)", "providers.anthropicSignInFailed": "로그인에 실패했습니다.","providers.add": "+ 프로바이더 추가", "providers.refresh": "전체 연결 확인", "providers.check": "연결 확인", "providers.checking": "확인 중", "providers.empty": "아직 연결된 프로바이더가 없습니다. 상단 버튼으로 추가하세요.","providers.noModels": "선택한 모델이 없습니다. 수정 메뉴에서 모델을 선택하세요.", "providers.removeConfirm": "프로바이더 {name}을(를) 삭제하시겠습니까? 해당 프로바이더를 사용하는 모델 매핑도 함께 삭제됩니다.", "providers.choose": "프로바이더 추가", "providers.chooseHelp": "연결할 서비스를 선택하세요.", "providers.chatgpt": "ChatGPT 구독", "providers.chatgptHelp": "Codex가 포함된 ChatGPT 플랜(Plus, Pro, Business 등)을 통해 GPT 모델을 사용합니다. API 키 없이 로그인만으로 연동됩니다.", "providers.presetHelp": "API 키만 입력하면 즉시 연결됩니다.", "providers.openaiGroup": "OpenAI 호환", "providers.openaiGroupHelp": "ClaudeRipple이 요청을 OpenAI API 규격으로 변환하여 전송합니다.","providers.custom": "직접 입력", "providers.customName": "새 프로바이더", "providers.customHelp": "목록에 없는 Anthropic 호환 또는 OpenAI 호환 API를 엔드포인트 URL과 키로 직접 연결합니다.", "providers.formatHelp": "서비스 문서에 명시된 형식을 선택하세요. 엔드포인트 주소가 /chat/completions로 끝나는 서비스는 OpenAI Chat Completions 규격입니다.", "providers.addTitle": "프로바이더 추가", "providers.edit": "프로바이더 수정", "providers.name": "이름", "providers.nameHelp": "목록과 매핑에서 표시될 프로바이더 이름입니다.", "providers.nameRequired": "이름을 입력하세요.", "providers.apiKey": "API 키", "providers.keyHelp": "프로바이더에서 발급받은 API 키입니다. 로컬 컴퓨터의 설정 파일에만 저장됩니다.", "providers.keyPlaceholder": "API 키를 붙여넣으세요", "providers.keySaved": "저장된 키를 사용 중입니다. 변경하려면 새 키를 입력하세요.", "providers.url": "API 기본 주소 (URL)", "providers.urlHelp": "Anthropic 호환 엔드포인트의 기본 URL입니다. 서비스 문서와 다른 경우에만 변경하세요.", "providers.openaiUrlHelp": "OpenAI 호환 API의 기본 URL입니다. 요청은 Chat Completions 또는 Responses 엔드포인트로 변환됩니다.", "providers.wire": "API 규격", "providers.wireHelp": "대부분 Chat Completions를 사용합니다. 공급자가 상태 비저장 Responses API를 지원하는 경우에만 Responses를 선택하세요.", "providers.urlRequired": "올바른 URL을 입력하세요.", "providers.keyType": "인증 헤더", "providers.keyTypeHelp": "일반적으로 x-api-key입니다. 서비스 문서에서 Authorization: Bearer 방식을 요구하면 해당 항목을 선택하세요.", "providers.extraHeaders": "추가 HTTP 헤더", "providers.extraHeadersHelp": "서비스에서 요구하는 추가 헤더를 '이름: 값' 형식으로 한 줄씩 입력하세요.", "providers.models": "사용할 모델", "providers.modelsHelp": "선택한 모델이 모델 매핑 선택 목록에 표시됩니다.", "providers.modelsFound": "프로바이더에서 조회한 모델 목록입니다.", "providers.modelsFallback": "모델 목록을 받아오지 못해 알려진 기본 모델 목록을 표시합니다.", "measure.running": "모델 지원 기능 검사 중… ({done}/{total})", "measure.help": "각 모델의 지원 API 규격과 추론 강도 지원 여부를 검사합니다. 공개 모델 카탈로그(models.dev)에 정보가 있으면 참조하고, 없으면 모델에 직접 질의합니다.", "measure.done": "모델 지원 기능 검사 완료: {summary}", "measure.nothing": "확인된 모델 정보가 없습니다. 모델이 응답하지 않았습니다.", "measure.notEntitled": "{models}: 해당 프로바이더 자체 앱에서만 지원되는 모델입니다. 이곳에서 선택하더라도 사용할 수 없습니다.", "measure.failed": "모델 지원 기능을 확인하지 못했습니다.", "measure.authFailed": "API 키 인증이 거부되어 모델 지원 기능을 확인하지 못했습니다.", "providers.probeNotEntitled": "API 키는 인증되었으나 요금제 제한으로 거부되었습니다.", "providerStatus.notEntitled": "요금제 제한", "providers.probeOk": "연결되었습니다.", "providers.probeFailed": "연결하지 못했습니다.", "providers.apiSoon": "잠시 후 다시 시도하세요.", "providers.showInPicker": "Claude 앱 피커에 실제 이름으로 표시", "providers.pickerOffHint": "현재 피커 모드가 꺼져 있어 선택해도 피커에 표시되지 않습니다. 저장 시 활성화 여부를 확인합니다.", "providers.pickerOffPrompt": "피커 모드가 꺼져 있어 해당 모델이 Claude Desktop 피커에 표시되지 않습니다. 지금 활성화하시겠습니까? 인증서 신뢰 설정을 위해 운영체제 확인 창이 표시됩니다.", "providers.credentials": "로그인 방식", "providers.credentialsHelp": "ChatGPT 계정 토큰을 가져올 출처를 설정합니다.", "providers.authAuto": "자동 (직접 로그인 우선, 없으면 Codex CLI 로그인 사용)", "providers.authOwn": "ClaudeRipple 직접 로그인", "providers.authBorrow": "Codex CLI 로그인 재사용 (~/.codex/auth.json)", "providers.login": "ChatGPT 로그인 안내", "providers.loginHelp": "메뉴 막대 앱의 'ChatGPT 로그인…' 또는 터미널의 clauderipple login 명령어로 브라우저 로그인 창을 엽니다. 토큰은 로컬 컴퓨터에만 저장됩니다.","providers.chatgptLogin": "ChatGPT 로그인", "providers.chatgptLoginWaiting": "브라우저에서 로그인을 완료하세요. 완료 시 화면이 자동으로 갱신됩니다.", "providers.chatgptLoginDone": "ChatGPT 로그인을 완료했습니다.", "providers.chatgptAccountsTitle": "ChatGPT 계정", "providers.chatgptAccountsSubtitle": "계정을 여러 개 등록하면 한 계정이 한도에 도달했을 때 다음 계정이 동일한 요청을 이어받습니다. 대화는 응답한 계정에 고정되어 프롬프트 캐시를 유지합니다. 순서는 목록 순서를 따릅니다.", "providers.addChatgptAccount": "+ ChatGPT 계정 추가", "providers.chatgptAddWaiting": "브라우저에서 추가할 계정으로 로그인하세요. 이미 로그인된 계정이 표시되면 다른 계정을 선택하세요.", "providers.chatgptAdded": "ChatGPT 계정을 추가했습니다.", "providers.chatgptNoAccounts": "로그인된 ChatGPT 계정이 없습니다.", "providers.chatgptAccountCount": "계정 {count}개", "providers.chatgptCodexHelp": "Codex CLI의 로그인 계정입니다. ClaudeRipple은 읽기 전용으로 참조하며 자동 갱신하지 않고, 전환 순서는 가장 마지막입니다.", "providers.chatgptOwnHelp": "ClaudeRipple이 로컬 사용자 전용 파일에 계정 정보를 저장하고 자동으로 갱신합니다.", "providers.chatgptInUse": "현재 사용 중", "providers.chatgptStandby": "대기", "providers.chatgptPause": "일시 중지", "providers.chatgptResume": "사용 재개", "providers.chatgptPaused": "일시 중지됨", "providers.chatgptClearCooldown": "대기 해제", "providers.chatgptRemoveConfirm": "ChatGPT 계정 {name}을(를) ClaudeRipple에서 삭제하시겠습니까?", "providers.chatgptReauthHelp": "로그인이 만료되었거나 거부되었습니다. 동일한 계정으로 다시 로그인하면 정상 복구됩니다.", "pool.coolingFor": "{duration} 후 복귀", "time.hoursMinutes": "{h}시간 {m}분", "time.minutes": "{m}분", "time.seconds": "{s}초", "quota.window5h": "5시간", "quota.windowWeek": "주간", "quota.windowHours": "{hours}시간", "quota.line": "{window} {percent}%", "quota.resetAt": "{time} 초기화", "providers.effortLevels": "추론 강도: {levels}", "providers.effortNone": "미지원", "providers.modelEffort": "추론 강도 설정", "providers.modelNoEffort": "추론 강도 미지원", "providers.defaultEffort": "기본 추론 강도 (effort)", "providers.defaultEffortHelp": "매핑이나 앱에서 추론 강도를 별도 지정하지 않은 요청에 적용할 기본값입니다.", "providers.identity": "모델 자기 정체성 전달 (identity)", "providers.append": "시스템 프롬프트 추가 문구", "providers.appendHelp": "모든 요청의 시스템 프롬프트 끝에 추가되는 고정 문구입니다. 자주 변경하면 프롬프트 캐시가 무효화되어 비용이 증가할 수 있습니다.",
|
|
14
|
+
"providerStatus.connected": "연결됨", "providerStatus.keyNeeded": "API 키 확인 필요", "providerStatus.loginNeeded": "로그인 필요", "providerStatus.disconnected": "연결 안 됨", "providerStatus.checking": "확인 중",
|
|
15
|
+
"clients.title": "클라이언트", "clients.subtitle": "ClaudeRipple을 사용하는 애플리케이션을 설정합니다.", "clients.desktop.title": "Claude Desktop", "clients.desktop.help": "모델 피커에 프로바이더 모델을 실제 이름으로 표시할지 설정합니다.", "clients.codex.title": "Codex (앱 및 CLI)", "clients.codex.help": "Codex 설정(~/.codex/config.toml)에 ClaudeRipple 프로바이더를 추가합니다. 터미널은 `codex --profile clauderipple -m <모델>`, Codex 앱은 설정에서 clauderipple 프로바이더를 기본값으로 선택하세요.", "clients.codex.note": "활성화하면 Codex의 GPT 요청도 ClaudeRipple을 경유합니다. Codex 자체 로그인은 유지되며, ChatGPT 계정을 여러 개 추가해 두면 한 계정이 한도에 걸릴 때 로그아웃 없이 다음 계정이 이어받습니다. 아래 목록은 Codex에서 추가로 사용할 수 있는 Claude 및 Anthropic 호환 모델입니다.", "clients.codex.turnOn": "Codex에서 ClaudeRipple 사용","clients.claudeCode.title": "터미널 Claude Code", "clients.claudeCode.help": "터미널 `claude`도 동일한 라우터를 사용합니다. `/model <이름>` 명령어로 선택하세요.",
|
|
16
|
+
"logs.title": "로그", "logs.requests": "요청", "logs.raw": "원본 로그", "logs.lastHour": "최근 1시간", "logs.autoscroll": "자동 스크롤", "logs.polling": "3초마다 갱신", "logs.rawPolling": "3초마다 갱신 · 최근 200줄", "logs.provider": "프로바이더", "logs.all": "전체","logs.empty": "아직 요청이 없습니다.", "logs.summary.requests": "요청 수", "logs.summary.success": "성공 / 실패", "logs.summary.input": "입력 토큰", "logs.summary.output": "출력 토큰", "logs.summary.duration": "평균 응답 시간", "logs.cacheHit": "캐시 {percent}%", "logs.th.time": "시간", "logs.th.models": "모델", "logs.th.effort": "effort", "logs.th.input": "입력", "logs.th.output": "출력", "logs.th.duration": "소요", "logs.th.status": "상태", "logs.status.ok": "성공", "logs.status.error": "오류", "logs.status.resent": "재전송", "logs.status.resentHelp": "오류가 아닙니다. 클라이언트가 해당 요청을 자체적으로 재전송했습니다.", "logs.detail.id": "요청 ID", "logs.detail.kind": "종류", "logs.detail.stop": "종료 사유", "logs.detail.uncached": "미캐시 입력", "logs.detail.cacheRead": "캐시 읽기", "logs.detail.cacheWrite": "캐시 기록", "logs.detail.note": "메모", "logs.none": "없음", "logs.seconds": "{value}초",
|
|
17
17
|
"about.title": "정보", "about.body": "ClaudeRipple은 독립 오픈소스 프로젝트이며 Anthropic·OpenAI와 제휴·보증·후원 관계가 없습니다. Claude와 Claude Code는 Anthropic, PBC의 상표입니다.", "about.license": "라이선스: GPL-3.0",
|
|
18
|
-
"providers.identityHelp": "시스템 프롬프트
|
|
19
|
-
"picker.models": "
|
|
20
|
-
"picker.lastAt": "Claude Desktop
|
|
21
|
-
"picker.never": "아직 Claude Desktop이 목록을
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"statusMod.help": "Claude Code 입력창 위에 마지막 요청이 어느 모델·프로바이더로 갔는지(캐시 적중률·시간 포함) 한 줄로 보여 주고, Log 버튼이나 /ripple-log로 요청 로그를 옆 패널에 띄웁니다. × 또는 /ripple-bar로 줄을 숨기거나 다시 켭니다. 워커 호출에 다른 모델이 붙어도 워커 자신의 모델로 돌리고, [[ripple: 이름@강도]] 표식을 프롬프트 어디에 두든 읽습니다. Claude Code mod로 동작하며 새로 여는 세션부터 적용됩니다.",
|
|
30
|
-
"statusMod.turnOn": "켜기",
|
|
31
|
-
"statusMod.turnOff": "끄기",
|
|
32
|
-
"statusMod.saved": "저장했습니다. 새로 여는 Claude Code 세션부터 적용됩니다.",
|
|
33
|
-
"workerTools.title": "워커 도구 제한",
|
|
34
|
-
"workerTools.help": "ClaudeRipple이 만든 워커에 읽기·편집·명령 실행·검색·스킬 도구만 줍니다. 세션의 MCP 서버·플러그인 도구가 워커 요청마다 실리지 않아 입력이 크게 줄지만, 브라우저·iOS 시뮬레이터 같은 도구는 쓸 수 없습니다. 그런 도구가 필요한 워커는 ~/.claude/agents에 직접 만든 에이전트 파일로 두세요(ClaudeRipple은 그 파일을 건드리지 않습니다). 새 세션부터 적용됩니다.",
|
|
35
|
-
"workerTools.on": "켜짐",
|
|
36
|
-
"workerTools.off": "꺼짐 (세션 도구 전부 상속)",
|
|
37
|
-
"workerTools.turnOn": "제한 켜기",
|
|
38
|
-
"workerTools.turnOff": "제한 끄기",
|
|
39
|
-
"providers.probeNoCredits": "키는 맞습니다. 다만 이 계정에 크레딧(잔액)이 없어 응답은 받지 못합니다. 프로바이더 사이트에서 충전하세요.",
|
|
40
|
-
"providers.probeBadKey": "API 키가 거부됐습니다. 키를 다시 확인하세요.",
|
|
41
|
-
"providers.searchModels": "모델 검색 (이름 또는 id)",
|
|
18
|
+
"providers.identityHelp": "시스템 프롬프트 시작 부분에 '너는 <모델명>이고 Claude Code를 통해 답한다'를 추가합니다. 비활성화하면 모델이 자신을 Claude로 인식할 수 있습니다.",
|
|
19
|
+
"picker.models": "피커 등록 모델 {count}개: {names}",
|
|
20
|
+
"picker.lastAt": "Claude Desktop 최근 목록 수신 시각: {at}",
|
|
21
|
+
"picker.never": "아직 Claude Desktop이 목록을 수신하지 않았습니다. 앱을 완전히 종료한 후 다시 실행하세요.",
|
|
22
|
+
"statusMod.title": "ClaudeRipple 모드",
|
|
23
|
+
"statusMod.help": "Claude Code 입력창 상단에 ClaudeRipple 상태 바를 표시합니다. 프롬프트마다 추론 강도를 결정하고, ripple:auto로 위임된 작업에 알맞은 워커와 강도를 지정하며, 캐시 유지를 지원합니다. 컨텍스트 사용량, 캐시 남은 시간, 요금제 한도 및 최근 라우팅 경로를 표시하고 Log 메뉴로 요청 로그를 확인합니다. 설정은 상태 바의 ⚙ 아이콘 또는 /ripple 명령어로 변경하며, 새로 시작하는 세션부터 적용됩니다.",
|
|
24
|
+
"statusMod.saved": "저장되었습니다. 새로 시작하는 Claude Code 세션부터 적용됩니다.",
|
|
25
|
+
"workerTools.help": "ClaudeRipple이 생성한 워커에 파일 읽기·편집·명령 실행·검색·스킬 도구만 부여합니다. 세션의 MCP 서버 및 플러그인 도구가 워커 요청마다 포함되지 않아 토큰 입력이 대폭 감소하지만, 브라우저나 iOS 시뮬레이터 등은 사용할 수 없습니다. 해당 도구가 필요한 워커는 ~/.claude/agents에 사용자 정의 에이전트 파일로 배치하세요(ClaudeRipple은 해당 파일을 수정하지 않습니다). 새 세션부터 적용됩니다.",
|
|
26
|
+
"providers.probeNoCredits": "API 키는 정상이나 계정 잔액(크레딧)이 부족하여 응답을 받지 못했습니다. 프로바이더 웹사이트에서 충전 후 사용하세요.",
|
|
27
|
+
"providers.probeBadKey": "API 키 인증이 거부되었습니다. 키를 다시 확인하세요.",
|
|
28
|
+
"providers.searchModels": "모델 검색 (이름 또는 ID)",
|
|
42
29
|
"providers.customModelPlaceholder": "모델 ID 직접 입력 (예: abliterated-model)",
|
|
43
30
|
"providers.customModelAdd": "추가",
|
|
44
|
-
"providers.customModelHint": "이 프로바이더는 모델
|
|
31
|
+
"providers.customModelHint": "이 프로바이더는 모델 목록 API를 제공하지 않습니다. 서비스 문서에 명시된 모델 ID를 아래에 직접 입력하여 추가하세요.",
|
|
45
32
|
"providers.google": "Google Gemini",
|
|
46
|
-
"providers.googleHelp": "Google AI Studio API 키 또는 Google 계정(Antigravity)으로 Gemini 모델을
|
|
47
|
-
"providers.googleKeyHelp": "aistudio.google.com/apikey
|
|
33
|
+
"providers.googleHelp": "Google AI Studio API 키 또는 Google 계정(Antigravity)으로 Gemini 모델을 사용합니다.",
|
|
34
|
+
"providers.googleKeyHelp": "aistudio.google.com/apikey에서 발급받을 수 있습니다. 무료 등급은 입력 데이터가 제품 개선에 사용될 수 있으므로 민감한 코드에는 유료 키를 권장합니다.",
|
|
48
35
|
"providers.googleAntigravity": "Antigravity 로그인",
|
|
49
36
|
"providers.googleAuthApiKey": "AI Studio API 키",
|
|
50
|
-
"providers.googleAuthHelp": "API 키는 Google이 공식 지원하는 방식입니다. Antigravity 로그인은 Google 계정 구독을
|
|
37
|
+
"providers.googleAuthHelp": "API 키는 Google이 공식 지원하는 연동 방식입니다. Antigravity 로그인은 Google 계정 구독을 활용하지만 Google 이용약관에서 금지하는 방식입니다.",
|
|
51
38
|
"providers.googleLogin": "Google 계정",
|
|
52
39
|
"providers.addGoogleAccount": "+ Google 계정 로그인",
|
|
53
|
-
"providers.googleWarning": "Google Antigravity
|
|
54
|
-
"providers.googleWarningShort": "Google
|
|
55
|
-
"providers.googleOpenManually": "브라우저가 열리지 않았습니다.
|
|
40
|
+
"providers.googleWarning": "Google Antigravity 이용약관(제6조) 및 Gemini CLI FAQ에서는 공식 앱 이외의 프로그램에서 해당 로그인 인증 정보를 사용하는 것을 명시적으로 금지합니다. Google은 2026년 2월 해당 용도로 사용된 계정을 대규모 제재하였으며, 재적발 시 영구 정지 처리된다고 밝혔습니다. ClaudeRipple은 Google과 제휴 관계가 없습니다.\n\n주 계정이 아닌 보조 계정 사용을 권장합니다. 해당 위험을 확인하였으며 로그인을 계속 진행하시겠습니까?",
|
|
41
|
+
"providers.googleWarningShort": "Google 이용약관에서 해당 사용을 금지하고 있으며 계정 정지 사례가 있습니다. 주 계정 대신 보조 계정 사용을 권장합니다.",
|
|
42
|
+
"providers.googleOpenManually": "브라우저가 열리지 않았습니다. 아래 주소를 직접 여세요.",
|
|
56
43
|
"providers.googleAdded": "Google 계정을 추가했습니다.",
|
|
57
|
-
"providers.googleSignInFirst": "로그인된 Google 계정이 없습니다. 먼저
|
|
58
|
-
"providers.googleRemoveConfirm": "{name}
|
|
44
|
+
"providers.googleSignInFirst": "로그인된 Google 계정이 없습니다. 먼저 로그인해 주세요.",
|
|
45
|
+
"providers.googleRemoveConfirm": "Google 계정 {name}을(를) ClaudeRipple에서 삭제하시겠습니까? 실제 Google 계정은 삭제되지 않습니다.",
|
|
59
46
|
"providers.googleProject": "프로젝트 {id}",
|
|
60
|
-
"providers.googleOwnHelp": "ClaudeRipple이
|
|
47
|
+
"providers.googleOwnHelp": "ClaudeRipple이 로컬 사용자 전용 파일에 로그인 정보를 안전하게 저장하고 자동으로 갱신합니다.",
|
|
61
48
|
"providers.googleVerifyNeeded": "Google 인증 필요",
|
|
62
|
-
"providers.googleVerifyAction": "Google
|
|
49
|
+
"providers.googleVerifyAction": "Google 인증 진행",
|
|
63
50
|
"providers.googleRecheck": "다시 확인",
|
|
64
|
-
"providers.googleVerified": "인증이
|
|
65
|
-
"providers.googleStillUnverified": "Google
|
|
66
|
-
"providers.googleVerifyUnknown": "
|
|
67
|
-
"providers.googleVerifyHelp": "Google
|
|
51
|
+
"providers.googleVerified": "인증이 확인되었습니다. 이 계정으로 다시 요청을 처리합니다.",
|
|
52
|
+
"providers.googleStillUnverified": "Google에서 여전히 본인 인증을 요구하고 있습니다. 인증 페이지의 절차를 완료했는지 확인하세요.",
|
|
53
|
+
"providers.googleVerifyUnknown": "현재 상태를 확인하지 못했습니다. 다음 요청 시 다시 확인합니다.",
|
|
54
|
+
"providers.googleVerifyHelp": "Google에서 해당 계정 사용 전 본인 확인을 요구하고 있습니다. 버튼을 클릭하여 해당 계정으로 로그인된 브라우저에서 절차를 완료하면 다음 요청부터 정상 처리됩니다.",
|
|
68
55
|
"providers.googleNoAccounts": "로그인된 Google 계정이 없습니다.",
|
|
69
56
|
"providers.googleAccountsTitle": "Google 계정",
|
|
70
|
-
"providers.googleAccountsSubtitle": "대화는
|
|
57
|
+
"providers.googleAccountsSubtitle": "대화는 단일 계정에 고정되며, 사용량 한도 초과 시 응답 시작 전 다음 계정으로 전환됩니다.",
|
|
71
58
|
"providers.googleLoginWaiting": "브라우저에서 Google 로그인을 기다리는 중입니다…",
|
|
72
59
|
"providers.modelsSummary": "선택 {selected}개 / 전체 {total}개",
|
|
73
|
-
"providers.modelsHidden": "{hidden}
|
|
74
|
-
"providers.modelsFoundMany": "
|
|
75
|
-
"providers.modelsFoundLive": "ChatGPT 카탈로그에서 {n}개 모델을
|
|
60
|
+
"providers.modelsHidden": "검색을 통해 추가 {hidden}개 확인 가능",
|
|
61
|
+
"providers.modelsFoundMany": "프로바이더에서 제공한 모델 목록입니다. 검색을 통해 사용할 모델만 선택하세요.",
|
|
62
|
+
"providers.modelsFoundLive": "ChatGPT 카탈로그에서 {n}개 모델을 수신했습니다. 새로 추가된 모델은 선택 해제 상태로 등록됩니다.",
|
|
76
63
|
"slots.saving": "저장 중…",
|
|
77
|
-
"slots.saved": "저장됨 ·
|
|
64
|
+
"slots.saved": "저장됨 · 즉시 적용됩니다",
|
|
65
|
+
"common.close": "닫기",
|
|
66
|
+
"clients.claudeCode.extras": "Claude Code 부가 기능",
|
|
67
|
+
"workerTools.switch": "워커 도구 제한",
|
|
68
|
+
"providers.remove": "프로바이더 삭제",
|
|
69
|
+
"providers.subscriptionGroup": "계정 및 구독",
|
|
70
|
+
"providers.anthropicGroup": "Anthropic 호환",
|
|
71
|
+
"providers.usage": "사용량",
|
|
72
|
+
"mod.effort": "추론 강도",
|
|
73
|
+
"mod.effortBlurb": "전송하는 프롬프트마다 추론 강도를 자동으로 선택합니다.",
|
|
74
|
+
"mod.auto": "자동",
|
|
75
|
+
"mod.autoHint": "프롬프트마다 자동 선택하며, 직접 변경 시 비활성화됩니다.",
|
|
76
|
+
"mod.lean": "성향",
|
|
77
|
+
"mod.leanHint": "판단이 모호할 때만 적용",
|
|
78
|
+
"mod.cheaper": "저렴하게",
|
|
79
|
+
"mod.smarter": "똑똑하게",
|
|
80
|
+
"mod.floor": "최저 강도",
|
|
81
|
+
"mod.ceiling": "최고 강도",
|
|
82
|
+
"mod.floorWins": "최저 강도 미만이므로 최저 강도를 적용합니다.",
|
|
83
|
+
"mod.effort.low": "낮음",
|
|
84
|
+
"mod.effort.medium": "중간",
|
|
85
|
+
"mod.effort.high": "높음",
|
|
86
|
+
"mod.effort.xhigh": "매우 높음",
|
|
87
|
+
"mod.effort.max": "최대",
|
|
88
|
+
"mod.off": "비활성화",
|
|
89
|
+
"mod.workers": "워커",
|
|
90
|
+
"mod.takesOver": "적용 대상",
|
|
91
|
+
"mod.allSpawns": "모든 서브에이전트",
|
|
92
|
+
"mod.unavailable": " (사용 불가)",
|
|
93
|
+
"mod.judge": "판정 모델",
|
|
94
|
+
"mod.judgeBlurb": "프롬프트의 추론 강도와 작업 분야 및 등급을 결정하는 모델입니다.",
|
|
95
|
+
"mod.haiku": "Haiku",
|
|
96
|
+
"mod.jev": "Jev",
|
|
97
|
+
"mod.routerModel": "라우터 모델",
|
|
98
|
+
"mod.haikuHint": "Claude 로그인으로 Haiku 5.5 사용 · 프롬프트당 약 1초",
|
|
99
|
+
"mod.jevSource": "Jev 제공처",
|
|
100
|
+
"mod.typesafe": "TypeSafe",
|
|
101
|
+
"mod.zen": "OpenCode Zen",
|
|
102
|
+
"mod.zenKey": "ClaudeRipple의 OpenCode Zen 키 사용",
|
|
103
|
+
"mod.zenMissing": "ClaudeRipple 설정에 OpenCode Zen 인증 키가 없습니다.",
|
|
104
|
+
"mod.noModels": "표시할 라우터 모델이 없습니다.",
|
|
105
|
+
"mod.haikuFallback": "실패 시 Haiku로 대체",
|
|
106
|
+
"mod.model": "모델",
|
|
107
|
+
"mod.cache": "캐시",
|
|
108
|
+
"mod.cacheBlurb": "자리를 비운 동안에도 프롬프트 캐시를 유지합니다.",
|
|
109
|
+
"mod.keepWarm": "캐시 유지",
|
|
110
|
+
"mod.keepWarmHint": "만료 직전에 캐시 핑 전송",
|
|
111
|
+
"mod.for": "유지 시간",
|
|
112
|
+
"mod.afterReply": "마지막 응답 기준",
|
|
113
|
+
"mod.chatsFrom": "대상 대화",
|
|
114
|
+
"mod.tokens": "토큰 이상",
|
|
115
|
+
"mod.warmCost": "핑을 보낼 때마다 캐시에서 대화 전체를 다시 읽습니다. 입력 비용의 약 1/10이며, 요금제 한도도 동일 비율로 소진합니다.",
|
|
116
|
+
"mod.hours": "{n}시간",
|
|
117
|
+
"mod.handoff": "압축·인수인계",
|
|
118
|
+
"mod.handoffBlurb": "컨텍스트가 큰 대화를 압축하거나 새 대화로 인수인계합니다.",
|
|
119
|
+
"mod.compactWith": "압축 담당 모델",
|
|
120
|
+
"mod.sessionCompactor": "세션 기본",
|
|
121
|
+
"mod.afterHandoff": "인수인계 후 동작",
|
|
122
|
+
"mod.handoffButton": "인수인계 버튼 표시",
|
|
123
|
+
"mod.whenAdvised": "권장 시",
|
|
124
|
+
"mod.always": "항상",
|
|
125
|
+
"mod.fullHandoff": "전체 인수인계",
|
|
126
|
+
"mod.noSkill": "스킬 없음: 1턴의 대화로 HANDOFF.md 작성",
|
|
127
|
+
"mod.heavyAt": "대화 압축 기준",
|
|
128
|
+
"mod.context": "컨텍스트",
|
|
129
|
+
"mod.continue": "새 세션에서 바로",
|
|
130
|
+
"mod.confirm": "확인 후 이동",
|
|
131
|
+
"mod.copy": "복사만",
|
|
132
|
+
"mod.look": "화면 표시",
|
|
133
|
+
"mod.lookBlurb": "상태 바에 표시할 항목과 형태를 설정합니다.",
|
|
134
|
+
"mod.layout": "레이아웃",
|
|
135
|
+
"mod.dashboard": "대시보드",
|
|
136
|
+
"mod.minimal": "최소화",
|
|
137
|
+
"mod.footerHint": "하단 한 줄 표시",
|
|
138
|
+
"mod.appearance": "테마",
|
|
139
|
+
"mod.dark": "다크",
|
|
140
|
+
"mod.lightAppearance": "라이트",
|
|
141
|
+
"mod.language": "언어",
|
|
142
|
+
"mod.show": "표시 항목",
|
|
143
|
+
"mod.part.timer": "캐시 타이머",
|
|
144
|
+
"mod.part.context": "컨텍스트",
|
|
145
|
+
"mod.part.route": "로그",
|
|
146
|
+
"mod.part.limits": "한도",
|
|
147
|
+
"nav.mod": "ClaudeRipple 모드",
|
|
148
|
+
"nav.modShort": "모드",
|
|
149
|
+
"mod.subtitle": "Claude Code의 ClaudeRipple 상태 바가 추론 강도를 설정하고 작업을 워커에 위임하며 캐시를 유지하는 방식을 설정합니다. 변경 즉시 저장되며 상태 바의 ⚙ 패널에도 동일한 설정이 표시됩니다.",
|
|
150
|
+
"mod.saved": "저장됨",
|
|
151
|
+
"mod.conflict": "다른 곳에서 설정이 변경되었습니다. 최신 설정을 불러왔으니 다시 변경해 주세요.",
|
|
152
|
+
"mod.offNotice": "모드가 꺼져 있어 {clients}에서 활성화할 때까지 이 설정은 적용되지 않습니다.",
|
|
153
|
+
"mod.openSettings": "ClaudeRipple 모드 설정",
|
|
154
|
+
"mod.takesOverHelp": "작업 규모가 크면 Claude는 독립 보조 AI인 서브에이전트에게 작업을 분담합니다. 별도로 지정하지 않으면 Claude Code 기본 범용 서브에이전트(general-purpose)가 맡으며, 현재 대화와 동일한 모델로 실행되어 사용량을 소진합니다.",
|
|
155
|
+
"mod.takesOverHelp2": "'ripple:auto'를 선택하면 Claude가 ripple:auto에 맡긴 작업에만 ClaudeRipple이 모델을 지정합니다. '모든 서브에이전트'를 선택하면 범용 서브에이전트에 맡긴 작업까지 적절한 모델과 추론 강도로 전환해 실행합니다. 모델이 직접 지정된 작업은 유지됩니다. 확실하지 않으면 '모든 서브에이전트'를 선택하세요.",
|
|
156
|
+
"mod.notUsable": "로그아웃 상태 또는 한도 소진",
|
|
157
|
+
"mod.jevKeyNote": "TypeSafe 키는 이곳에 저장하지 않습니다. Claude Code 상태 바의 ⚙ 패널, TYPESAFE_API_KEY 환경 변수 또는 ~/.config/jev/.env에서 설정하세요.",
|
|
158
|
+
"mod.zenAdd": "프로바이더 메뉴에서 jev 모델을 지원하는 OpenCode Zen을 추가하세요.",
|
|
159
|
+
"mod.workersBlurb": "위임된 작업은 ClaudeRipple을 경유하는 워커 모델이 처리합니다. 메인 대화는 작업을 넘기기만 하고, 난이도(low · medium · high · max)는 ClaudeRipple이 판단해 그 워커에 지정된 모델과 추론 강도로 실행합니다.",
|
|
160
|
+
"mod.models": "사용할 모델",
|
|
161
|
+
"mod.modelsHelp": "선택한 모델만 4개 워커에서 사용합니다. 모델이 지정되지 않은 워커는 선택된 모델 중에서 자동으로 배정됩니다.",
|
|
162
|
+
"mod.fourWorkers": "4개 워커",
|
|
163
|
+
"mod.retired": "분야별 설정과 자동(실험) 기능은 종료되었으며, 4개 워커 체계로 통합되었습니다.",
|
|
164
|
+
"mod.rung.light": "로우 워커",
|
|
165
|
+
"mod.rung.standard": "미디움 워커",
|
|
166
|
+
"mod.rung.hard": "하이 워커",
|
|
167
|
+
"mod.rung.plan": "맥스 워커",
|
|
168
|
+
"mod.rungHint.light": "파일 검색, 단건 조회, 로그 검토, 기계적 수정",
|
|
169
|
+
"mod.rungHint.standard": "명세 기반 구현, 리팩터링, 요약, 초안 작성",
|
|
170
|
+
"mod.rungHint.hard": "고난도 디버깅, 다중 파일 변경, 독립적 검토 및 반박",
|
|
171
|
+
"mod.rungHint.plan": "최상의 품질: 기획, 설계, 아키텍처 수립, 심층 의견 제시",
|
|
172
|
+
"mod.ladderHelp": "워커의 모델을 사용할 수 없는 경우(로그아웃, 한도 소진, 선택 해제 시) 바로 상위 워커의 모델이, 상위 모델도 불가능하면 세션 모델이 처리합니다. 하위 워커로는 전환되지 않습니다.",
|
|
173
|
+
"mod.sessionModel": "세션 기본 모델",
|
|
174
|
+
"mod.unavailableNow": " (현재 사용 불가)",
|
|
175
|
+
"mod.rungUnusable": "현재 사용할 수 없어 상위 워커가 대신 처리합니다",
|
|
176
|
+
"mod.billing.free": "무료",
|
|
177
|
+
"mod.billing.payg": "종량제",
|
|
178
|
+
"mod.billing.subscription": "구독",
|
|
179
|
+
"mod.optionsFailed": "에이전트 및 모델 목록을 불러오지 못해 저장된 설정만 표시합니다.",
|
|
180
|
+
"mod.modes": "모드",
|
|
181
|
+
"mod.modeActive": "활성 모드",
|
|
182
|
+
"mod.modeNone": "기본",
|
|
183
|
+
"mod.modeOn": "켜짐",
|
|
184
|
+
"mod.modeAdd": "+ 새 모드",
|
|
185
|
+
"mod.modeAddTitle": "새 모드",
|
|
186
|
+
"mod.modeName": "이름",
|
|
187
|
+
"mod.modeNameHelp": "기본 워커 목록을 복사해 시작합니다. 이름은 Claude Code 상태 바에도 표시됩니다.",
|
|
188
|
+
"mod.modeDelegation": "위임 강도",
|
|
189
|
+
"mod.modeNormal": "보통",
|
|
190
|
+
"mod.modeEager": "적극 — 메인 대화는 지휘만",
|
|
191
|
+
"mod.modeUntil": "종료 시점",
|
|
192
|
+
"mod.modeUntilNone": "끄기 전까지",
|
|
193
|
+
"mod.modeUntilTime": "시각 지정",
|
|
194
|
+
"mod.modeUntilResetChoice": "한도 초기화 때",
|
|
195
|
+
"mod.modeUntilResetOf": "{provider} 한도 초기화 때",
|
|
196
|
+
"mod.modeResetProvider": "한도 초기화 기준 프로바이더",
|
|
197
|
+
"mod.modeResetHelp": "모드를 켠 뒤 {provider} 한도가 처음 초기화될 때 꺼집니다.",
|
|
198
|
+
"mod.modeResetUnknown": "초기화 시각을 아는 프로바이더(ChatGPT·Claude)가 없습니다.",
|
|
199
|
+
"mod.modeTurnOn": "이 모드 켜기",
|
|
200
|
+
"mod.modeTurnOff": "이 모드 끄기",
|
|
201
|
+
"mod.modeUseBase": "기본으로 돌아가기",
|
|
202
|
+
"mod.modeMoveUp": "우선순위 올리기",
|
|
203
|
+
"mod.modeMoveDown": "우선순위 내리기",
|
|
204
|
+
"mod.modeAddModel": "+ 모델 추가",
|
|
205
|
+
"mod.modeOrderHelp": "위에서부터 실행 가능한 모델을 사용합니다. 목록 전체를 사용할 수 없으면 한 단계 위 워커, 그다음 세션 모델을 사용합니다.",
|
|
206
|
+
"mod.modeNameRequired": "모드 이름을 입력하세요.",
|
|
207
|
+
"mod.modeTimePast": "종료 시각은 현재 시각 이후여야 합니다.",
|
|
208
|
+
"mod.modeRemoveConfirm": "‘{name}’ 모드를 삭제하시겠습니까?",
|
|
78
209
|
},
|
|
79
210
|
en: {
|
|
80
211
|
"brand": "ClaudeRipple",
|
|
81
212
|
"nav.health": "Status", "nav.slots": "Model mapping", "nav.providers": "Providers", "nav.clients": "Clients", "nav.logs": "Logs", "nav.about": "About",
|
|
82
213
|
"lang.label": "Language",
|
|
83
214
|
"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
|
-
"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}",
|
|
215
|
+
"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.version": "Version", "health.runtime": "Router files · started", "health.routes": "Mappings", "health.cli": "Claude Code version",
|
|
85
216
|
"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.",
|
|
86
|
-
"picker.title": "Model picker","picker.
|
|
87
|
-
"slots.title": "Model mapping", "slots.subtitle": "Decide which model actually answers when you pick a Claude model in the app. Changes save automatically.",
|
|
88
|
-
"providers.title": "Providers", "providers.subtitle": "Manage connected services and accounts in one place. Pick a provider to open its settings and accounts.", "providers.search": "Search providers…", "providers.overview": "Overview", "providers.accounts": "Accounts", "providers.settings": "Settings", "providers.modelsTab": "Models", "providers.selectedModels": "Selected models", "providers.modelsCountShort": "{count} models", "providers.noSelection": "Select a provider on the left.", "providers.rotationOn": "Rotation on", "providers.rotationOff": "Rotation off", "providers.rotationSaving": "Saving rotation…", "providers.rotationSaved": "Account rotation saved.", "providers.accountCount": "{count} connected accounts", "providers.accountCountHelp": "Includes the current Claude login and accounts added to ClaudeRipple.", "providers.accountPoolTitle": "Claude accounts", "providers.accountPoolSubtitle": "A conversation stays on one account. ClaudeRipple switches only when quota or authentication fails before output starts.", "providers.addClaudeAccount": "+ Add Claude account", "providers.currentAccountHelp": "The external sign-in currently used by Claude Code or Claude Desktop. ClaudeRipple cannot remove it.", "providers.addedAccountHelp": "ClaudeRipple stores this OAuth grant on this computer and refreshes it automatically.", "providers.reauthAction": "Sign in again", "providers.dangerZone": "Added account management", "providers.saveSettings": "Save settings", "providers.connection": "Connection", "providers.authentication": "Authentication", "providers.rotationRequired": "Added accounts are used for Claude app and Claude Code requests only when account rotation is on.", "providers.anthropic": "Claude (Anthropic)", "providers.anthropicHelp": "Rotate Claude subscription accounts, or serve Claude models to OpenAI-style tools such as Codex.", "providers.anthropicIngressOnly": "With account rotation off, the models chosen here are served only to OpenAI-style tools such as Codex and do not appear in Claude app mappings.", "providers.anthropicPoolRouting": "With account rotation on, Claude app and Claude Code requests stay on one account per conversation to preserve the prompt cache. A 429 or authentication refusal before the response starts moves the request to the next account. Using multiple subscriptions may be subject to Anthropic's terms and account restrictions; use only your own authorized accounts.", "providers.anthropicLoginReuse": "Reuse sign-in", "providers.anthropicPoolOn": "Account rotation", "providers.anthropicPool": "Rotate Claude accounts automatically", "providers.anthropicPoolHelp": "Uses the current Claude login plus the additional accounts below. A conversation stays on its account unless quota or authentication fails.", "providers.anthropicCurrent": "Current login", "providers.anthropicReauth": "Sign in again", "providers.anthropicNoAccounts": "No accounts have been added to ClaudeRipple.", "providers.anthropicRenamePrompt": "Display name for this account", "providers.anthropicRemoveConfirm": "Remove Claude account {name} from ClaudeRipple?", "providers.anthropicLogoutAll": "Remove all added accounts", "providers.anthropicLogoutAllConfirm": "Remove every Claude account added to ClaudeRipple? The current Claude Code and Claude Desktop login is not changed.", "providers.anthropicAuthClaudeCode": "Reuse Claude Code sign-in (automatic)", "providers.anthropicAuthApiKey": "API key", "providers.anthropicCredentialsHelp": "Choose your Claude Code sign-in or an Anthropic API key.", "providers.anthropicSourceObserved": "Detected from a Claude Desktop session", "providers.anthropicSourceClaudeCode": "Terminal Claude sign-in", "providers.anthropicSourceTokenFile": "ClaudeRipple token", "providers.anthropicSourceMissing": "None — connect below", "providers.anthropicLogin": "+ Add Claude account", "providers.anthropicOAuthTitle": "Add Claude account", "providers.anthropicOAuthWarning": "Using Claude subscription OAuth through a third-party proxy is not an Anthropic-supported integration and may be subject to terms or account restrictions. Use only your own accounts for authorized purposes.", "providers.anthropicOAuthAccept": "I understand the risk and want to continue with OAuth.", "providers.anthropicOAuthContinue": "Continue with OAuth", "providers.anthropicLogout": "Disconnect", "providers.anthropicLoginDone": "Claude subscription connected.", "providers.anthropicSignInBrowser": "Sign in to Claude in your browser. If no window opened, use the link below.", "providers.anthropicSignInLink": "Open the sign-in page", "providers.anthropicSignInPaste": "After signing in, paste the code the page shows here.", "providers.anthropicSignInSubmit": "Submit code", "providers.anthropicSignInManual": "Try again by pasting a code", "providers.anthropicSignInWaiting": "Waiting for the browser… (up to 5 minutes)", "providers.anthropicSignInFailed": "Sign-in failed", "providers.anthropicSignedInActive": "Using the ClaudeRipple sign-in.", "providers.anthropicSignedInStandby": "A ClaudeRipple sign-in is stored too, and takes over if the source above goes away.", "providers.add": "+ Add provider", "providers.refresh": "Test all", "providers.check": "Test connection", "providers.checking": "Checking", "providers.empty": "No providers connected yet. Add one with the button above.", "providers.modelsCount": "{count} models in use: {names}", "providers.noModels": "No models chosen. Pick some under Edit.", "providers.removeConfirm": "Remove provider {name}? Model mappings that use it are removed too.", "providers.choose": "Add provider", "providers.chooseHelp": "Pick the service to connect.", "providers.chatgpt": "ChatGPT subscription", "providers.chatgptHelp": "Use GPT models through any ChatGPT plan that includes Codex (Plus, Pro, Business…). Sign-in only, no API key.", "providers.presetHelp": "Paste an API key and you are done.", "providers.openaiGroup": "OpenAI-compatible", "providers.openaiGroupHelp": "ClaudeRipple translates requests into the OpenAI API format.", "providers.verified": "Verified against official docs", "providers.custom": "Enter manually", "providers.customName": "New provider", "providers.customHelp": "Connect any Anthropic- or OpenAI-compatible API by URL and key.", "providers.formatHelp": "Pick the format the service docs name. A service whose endpoint ends in /chat/completions is OpenAI Chat Completions.", "providers.addTitle": "Add provider", "providers.edit": "Edit provider", "providers.name": "Name", "providers.nameHelp": "How this provider is called in lists and mappings.", "providers.nameRequired": "Enter a name.", "providers.apiKey": "API key", "providers.keyHelp": "The API key issued on the provider's site. Stored only in this computer's config file.", "providers.keyPlaceholder": "Paste your API key", "providers.keySaved": "The saved key stays in use. Paste a new key to replace it.", "providers.url": "API base URL", "providers.urlHelp": "Base URL of the Anthropic-compatible endpoint. Change only if the service docs differ.", "providers.openaiUrlHelp": "Base URL of the OpenAI-compatible API. Requests are translated to its Chat Completions or Responses endpoint.", "providers.wire": "API wire format", "providers.wireHelp": "Use Chat Completions for most providers. Select Responses only when the provider supports the stateless Responses API.", "providers.urlRequired": "Enter a valid URL.", "providers.keyType": "Auth header", "providers.keyTypeHelp": "Usually x-api-key. Pick Authorization: Bearer only if the service docs say so.", "providers.extraHeaders": "Extra HTTP headers", "providers.extraHeadersHelp": "Only headers the service requires, one 'name: value' per line.", "providers.models": "Models to use", "providers.modelsHelp": "Checked models appear in the Model mapping list.", "providers.modelsFound": "Model list reported by the provider.", "providers.modelsFallback": "Could not fetch the list; showing known default models.", "measure.running": "Measuring model capabilities… ({done}/{total})", "measure.help": "Checks which wire each model answers on and which reasoning efforts it takes — from the public model catalogue (models.dev) when it lists the model, otherwise by asking the model.", "measure.done": "Measured: {summary}", "measure.nothing": "Nothing was measured: no model answered.", "measure.notEntitled": "{models}: usable only from the provider\u2019s own app. Ticking it here will not make it work.", "measure.failed": "Could not measure model capabilities.", "measure.authFailed": "The API key was refused, so nothing could be measured.", "providers.probeNotEntitled": "The key was accepted; the plan refused.", "providerStatus.notEntitled": "Plan refused", "providers.probeOk": "Connected.", "providers.probeFailed": "Could not connect.", "providers.apiSoon": "Please try again shortly.", "providers.showInPicker": "Also show by real name in the Claude app picker", "providers.pickerOffHint": "Picker mode is off right now, so ticking this does not show them yet. You will be asked to turn it on when you save.", "providers.pickerOffPrompt": "Picker mode is off, so these models will not appear in the Claude Desktop picker yet. Turn it on now? Your operating system will ask you to confirm trusting the certificate.", "providers.credentials": "Sign-in source", "providers.credentialsHelp": "Where the ChatGPT account token comes from.", "providers.authAuto": "Auto (own sign-in if present, else Codex CLI's)", "providers.authOwn": "Sign in with ClaudeRipple", "providers.authBorrow": "Reuse Codex CLI sign-in (~/.codex/auth.json)", "providers.login": "How to sign in", "providers.loginHelp": "'Sign in to ChatGPT…' in the menu-bar app or clauderipple login in a terminal opens the browser sign-in. Tokens stay on this computer.", "providers.loginHint": "Use 'Sign in to ChatGPT…' in the menu-bar app or run clauderipple login in a terminal.", "providers.chatgptLogin": "Sign in to ChatGPT", "providers.chatgptLoginWaiting": "Finish signing in in your browser. This will update when it is done.", "providers.chatgptLoginDone": "ChatGPT sign-in complete.", "providers.chatgptAccountsTitle": "ChatGPT accounts", "providers.chatgptAccountsSubtitle": "With several accounts, when one hits its limit the next one takes over the same request. A conversation stays on the account that answered, to keep its cache. Accounts are used in list order.", "providers.addChatgptAccount": "+ Add ChatGPT account", "providers.chatgptAddWaiting": "Sign in with the account to add in your browser. If it shows an account you already added, pick another.", "providers.chatgptAdded": "ChatGPT account added.", "providers.chatgptNoAccounts": "No ChatGPT account is signed in.", "providers.chatgptAccountCount": "{count} accounts", "providers.chatgptCodexHelp": "The Codex CLI's own login. ClaudeRipple only reads it, never refreshes it, and uses it last.", "providers.chatgptOwnHelp": "ClaudeRipple stores this login in a file only your user can read and refreshes it automatically.", "providers.chatgptInUse": "in use now", "providers.chatgptStandby": "standby", "providers.chatgptPause": "Pause", "providers.chatgptResume": "Resume", "providers.chatgptPaused": "paused", "providers.chatgptClearCooldown": "Use now", "providers.chatgptRemoveConfirm": "Remove ChatGPT account {name} from ClaudeRipple?", "providers.chatgptReauthHelp": "This login expired or was refused. Signing in again with the same account restores it in place.", "pool.coolingFor": "back in {duration}", "time.hoursMinutes": "{h}h {m}m", "time.minutes": "{m}m", "time.seconds": "{s}s", "quota.window5h": "5h", "quota.windowWeek": "weekly", "quota.windowHours": "{hours}h", "quota.line": "{window} {percent}%", "quota.resetAt": "resets {time}", "providers.effortLevels": "Reasoning effort: {levels}", "providers.effortNone": "Does not take reasoning effort", "providers.modelEffort": "effort", "providers.modelNoEffort": "no effort", "providers.defaultEffort": "Default reasoning effort", "providers.defaultEffortHelp": "Used when neither the mapping nor the app sets an effort.", "providers.identity": "Tell the model what it is (identity)", "providers.append": "System prompt addendum", "providers.appendHelp": "Fixed text appended to every request's system prompt. Changing it often breaks the prompt cache and raises cost.",
|
|
217
|
+
"picker.title": "Model picker","picker.restartHelp": "After turning it on, quit Claude Desktop completely and open it again.", "picker.confirmOn": "Your operating system will ask you to confirm trusting the certificate (macOS asks for your login password, Windows shows a certificate dialog). ClaudeRipple never sees your password. Continue?", "picker.working": "Working.", "picker.doneOn": "Turned on. Quit Claude Desktop completely and open it again.", "picker.doneOff": "Turned off. Quit Claude Desktop completely and open it again.",
|
|
218
|
+
"slots.title": "Model mapping", "slots.subtitle": "Decide which model actually answers when you pick a Claude model in the app. Changes save automatically.","slots.pickerModels": "Models to put in the picker", "slots.pickerModelsHelp": "Checked models appear in the Claude Desktop picker; picking one makes it answer directly. Newly added models are selectable from the next session (a running session keeps the list it started with).", "slots.add": "+ Add mapping", "slots.th.claude": "Picked in the Claude app", "slots.th.target": "Actually answered by", "slots.th.effort": "Reasoning effort", "slots.passthrough": "Claude answers as usual", "slots.noProviderModels": "Connect a provider and choose its models first.", "slots.noChanges": "No mappings. Every model answers as Claude.", "slots.duplicate": "A Claude model can be mapped only once.", "slots.effortHint": "If the effort chosen in the app is unsupported by the model, ClaudeRipple sends the nearest level instead. (For example: xhigh → high)", "slots.noEffort": "This model does not take a reasoning effort", "pool.ready": "in use", "pool.cooling": "back in {seconds}s", "pool.quarantined": "rejected — check the key", "slots.modelSlots": "Claude Code's own model slots", "slots.modelSlotsHelp": "Claude Code chooses these before a request exists, so a mapping cannot reach them. Left empty, Claude answers them and they cost Claude quota. Web search in particular runs on the small, fast model, so a routed session still searches on Claude quota until that one is moved. Changes are written to settings.json on install.", "slots.noWebSearch": "no web search here", "slots.noWebSearchWarn": "Saved, but web search will fail on this model — ClaudeRipple cannot run a search through it. The model itself may be able to; leaving this on the default lets Claude search.", "slots.slotDefault": "default (Claude)", "slots.slot.smallFast": "Small, fast model", "slots.slot.subagent": "Subagents", "slots.slot.main": "Session default", "slots.slotHelp.smallFast": "web search, titles, classifiers", "slots.slotHelp.subagent": "a subagent that names no model of its own", "slots.slotHelp.main": "what a session starts on", "slots.slotSaved": "Model slots saved. They take effect in a new session.", "slots.windowGlobal": "default", "slots.windowHelp": "This model's context window, in tokens. Routed models do not share one, so each carries its own. Left blank it takes what the provider reported, and otherwise the global default. Enter the model's real window, not a compaction point.",
|
|
219
|
+
"providers.title": "Providers", "providers.subtitle": "Manage connected services and accounts in one place. Pick a provider to open its settings and accounts.", "providers.search": "Search providers…", "providers.overview": "Overview", "providers.accounts": "Accounts","providers.modelsTab": "Models", "providers.selectedModels": "Selected models", "providers.modelsCountShort": "{count} models", "providers.noSelection": "Select a provider on the left.", "providers.rotationOn": "Rotation on", "providers.rotationOff": "Rotation off", "providers.rotationSaving": "Saving rotation…", "providers.rotationSaved": "Account rotation saved.", "providers.accountCount": "{count} connected accounts", "providers.accountCountHelp": "Includes the current Claude login and accounts added to ClaudeRipple.", "providers.accountPoolTitle": "Claude accounts", "providers.accountPoolSubtitle": "A conversation stays on one account. ClaudeRipple switches only when quota or authentication fails before output starts.", "providers.addClaudeAccount": "+ Add Claude account", "providers.currentAccountHelp": "The external sign-in currently used by Claude Code or Claude Desktop. ClaudeRipple cannot remove it.", "providers.addedAccountHelp": "ClaudeRipple stores this OAuth grant on this computer and refreshes it automatically.", "providers.reauthAction": "Sign in again", "providers.preferBadge": "First", "providers.preferAction": "Use first", "providers.preferHelp": "New conversations start on the account at the top. When it hits its limit they move to the next one, and once it resets new conversations go back to it. A conversation already running stays on its account to keep its cache.","providers.dangerZone": "Added account management","providers.connection": "Connection","providers.rotationRequired": "Added accounts are used for Claude app and Claude Code requests only when account rotation is on.", "providers.anthropic": "Claude (Anthropic)", "providers.anthropicHelp": "Rotate Claude subscription accounts, or serve Claude models to OpenAI-style tools such as Codex.", "providers.anthropicIngressOnly": "With account rotation off, the models chosen here are served only to OpenAI-style tools such as Codex and do not appear in Claude app mappings.", "providers.anthropicPoolRouting": "With account rotation on, Claude app and Claude Code requests stay on one account per conversation to preserve the prompt cache. A 429 or authentication refusal before the response starts moves the request to the next account. Using multiple subscriptions may be subject to Anthropic's terms and account restrictions; use only your own authorized accounts.","providers.anthropicPool": "Rotate Claude accounts automatically","providers.anthropicCurrent": "Current login", "providers.anthropicReauth": "Sign in again", "providers.anthropicNoAccounts": "No accounts have been added to ClaudeRipple.", "providers.anthropicRenamePrompt": "Display name for this account", "providers.anthropicRemoveConfirm": "Remove Claude account {name} from ClaudeRipple?", "providers.anthropicLogoutAll": "Remove all added accounts", "providers.anthropicLogoutAllConfirm": "Remove every Claude account added to ClaudeRipple? The current Claude Code and Claude Desktop login is not changed.", "providers.anthropicAuthClaudeCode": "Reuse Claude Code sign-in (automatic)", "providers.anthropicAuthApiKey": "API key", "providers.anthropicCredentialsHelp": "Choose your Claude Code sign-in or an Anthropic API key.", "providers.anthropicSourceObserved": "Detected from a Claude Desktop session", "providers.anthropicSourceClaudeCode": "Terminal Claude sign-in", "providers.anthropicSourceTokenFile": "ClaudeRipple token", "providers.anthropicSourceMissing": "None — connect below","providers.anthropicOAuthTitle": "Add Claude account", "providers.anthropicOAuthWarning": "Using Claude subscription OAuth through a third-party proxy is not an Anthropic-supported integration and may be subject to terms or account restrictions. Use only your own accounts for authorized purposes.", "providers.anthropicOAuthAccept": "I understand the risk and want to continue with OAuth.", "providers.anthropicOAuthContinue": "Continue with OAuth","providers.anthropicLoginDone": "Claude subscription connected.", "providers.anthropicSignInBrowser": "Sign in to Claude in your browser. If no window opened, use the link below.", "providers.anthropicSignInLink": "Open the sign-in page", "providers.anthropicSignInPaste": "After signing in, paste the code the page shows here.", "providers.anthropicSignInSubmit": "Submit code", "providers.anthropicSignInManual": "Try again by pasting a code", "providers.anthropicSignInWaiting": "Waiting for the browser… (up to 5 minutes)", "providers.anthropicSignInFailed": "Sign-in failed","providers.add": "+ Add provider", "providers.refresh": "Test all", "providers.check": "Test connection", "providers.checking": "Checking", "providers.empty": "No providers connected yet. Add one with the button above.","providers.noModels": "No models chosen. Pick some under Edit.", "providers.removeConfirm": "Remove provider {name}? Model mappings that use it are removed too.", "providers.choose": "Add provider", "providers.chooseHelp": "Pick the service to connect.", "providers.chatgpt": "ChatGPT subscription", "providers.chatgptHelp": "Use GPT models through any ChatGPT plan that includes Codex (Plus, Pro, Business…). Sign-in only, no API key.", "providers.presetHelp": "Paste an API key and you are done.", "providers.openaiGroup": "OpenAI-compatible", "providers.openaiGroupHelp": "ClaudeRipple translates requests into the OpenAI API format.","providers.custom": "Enter manually", "providers.customName": "New provider", "providers.customHelp": "Connect any Anthropic- or OpenAI-compatible API by URL and key.", "providers.formatHelp": "Pick the format the service docs name. A service whose endpoint ends in /chat/completions is OpenAI Chat Completions.", "providers.addTitle": "Add provider", "providers.edit": "Edit provider", "providers.name": "Name", "providers.nameHelp": "How this provider is called in lists and mappings.", "providers.nameRequired": "Enter a name.", "providers.apiKey": "API key", "providers.keyHelp": "The API key issued on the provider's site. Stored only in this computer's config file.", "providers.keyPlaceholder": "Paste your API key", "providers.keySaved": "The saved key stays in use. Paste a new key to replace it.", "providers.url": "API base URL", "providers.urlHelp": "Base URL of the Anthropic-compatible endpoint. Change only if the service docs differ.", "providers.openaiUrlHelp": "Base URL of the OpenAI-compatible API. Requests are translated to its Chat Completions or Responses endpoint.", "providers.wire": "API format", "providers.wireHelp": "Use Chat Completions for most providers. Select Responses only when the provider supports the stateless Responses API.", "providers.urlRequired": "Enter a valid URL.", "providers.keyType": "Auth header", "providers.keyTypeHelp": "Usually x-api-key. Pick Authorization: Bearer only if the service docs say so.", "providers.extraHeaders": "Extra HTTP headers", "providers.extraHeadersHelp": "Only headers the service requires, one 'name: value' per line.", "providers.models": "Models to use", "providers.modelsHelp": "Checked models appear in the Model mapping list.", "providers.modelsFound": "Model list reported by the provider.", "providers.modelsFallback": "Could not fetch the list; showing known default models.", "measure.running": "Measuring model capabilities… ({done}/{total})", "measure.help": "Checks which API format each model answers in and which reasoning efforts it takes — from the public model catalogue (models.dev) when it lists the model, otherwise by asking the model.", "measure.done": "Measured: {summary}", "measure.nothing": "Nothing was measured: no model answered.", "measure.notEntitled": "{models}: usable only from the provider\u2019s own app. Ticking it here will not make it work.", "measure.failed": "Could not measure model capabilities.", "measure.authFailed": "The API key was refused, so nothing could be measured.", "providers.probeNotEntitled": "The key was accepted; the plan refused.", "providerStatus.notEntitled": "Plan refused", "providers.probeOk": "Connected.", "providers.probeFailed": "Could not connect.", "providers.apiSoon": "Please try again shortly.", "providers.showInPicker": "Also show by real name in the Claude app picker", "providers.pickerOffHint": "Picker mode is off right now, so ticking this does not show them yet. You will be asked to turn it on when you save.", "providers.pickerOffPrompt": "Picker mode is off, so these models will not appear in the Claude Desktop picker yet. Turn it on now? Your operating system will ask you to confirm trusting the certificate.", "providers.credentials": "Sign-in source", "providers.credentialsHelp": "Where the ChatGPT account token comes from.", "providers.authAuto": "Auto (own sign-in if present, else Codex CLI's)", "providers.authOwn": "Sign in with ClaudeRipple", "providers.authBorrow": "Reuse Codex CLI sign-in (~/.codex/auth.json)", "providers.login": "How to sign in", "providers.loginHelp": "'Sign in to ChatGPT…' in the menu-bar app or clauderipple login in a terminal opens the browser sign-in. Tokens stay on this computer.","providers.chatgptLogin": "Sign in to ChatGPT", "providers.chatgptLoginWaiting": "Finish signing in in your browser. This will update when it is done.", "providers.chatgptLoginDone": "ChatGPT sign-in complete.", "providers.chatgptAccountsTitle": "ChatGPT accounts", "providers.chatgptAccountsSubtitle": "With several accounts, when one hits its limit the next one takes over the same request. A conversation stays on the account that answered, to keep its cache. Accounts are used in list order.", "providers.addChatgptAccount": "+ Add ChatGPT account", "providers.chatgptAddWaiting": "Sign in with the account to add in your browser. If it shows an account you already added, pick another.", "providers.chatgptAdded": "ChatGPT account added.", "providers.chatgptNoAccounts": "No ChatGPT account is signed in.", "providers.chatgptAccountCount": "{count} accounts", "providers.chatgptCodexHelp": "The Codex CLI's own login. ClaudeRipple only reads it, never refreshes it, and uses it last.", "providers.chatgptOwnHelp": "ClaudeRipple stores this login in a file only your user can read and refreshes it automatically.", "providers.chatgptInUse": "in use now", "providers.chatgptStandby": "standby", "providers.chatgptPause": "Pause", "providers.chatgptResume": "Resume", "providers.chatgptPaused": "paused", "providers.chatgptClearCooldown": "Use now", "providers.chatgptRemoveConfirm": "Remove ChatGPT account {name} from ClaudeRipple?", "providers.chatgptReauthHelp": "This login expired or was refused. Signing in again with the same account restores it in place.", "pool.coolingFor": "back in {duration}", "time.hoursMinutes": "{h}h {m}m", "time.minutes": "{m}m", "time.seconds": "{s}s", "quota.window5h": "5h", "quota.windowWeek": "weekly", "quota.windowHours": "{hours}h", "quota.line": "{window} {percent}%", "quota.resetAt": "resets {time}", "providers.effortLevels": "Reasoning effort: {levels}", "providers.effortNone": "Does not take reasoning effort", "providers.modelEffort": "effort", "providers.modelNoEffort": "no effort", "providers.defaultEffort": "Default reasoning effort", "providers.defaultEffortHelp": "Used when neither the mapping nor the app sets an effort.", "providers.identity": "Tell the model what it is (identity)", "providers.append": "System prompt addendum", "providers.appendHelp": "Fixed text appended to every request's system prompt. Changing it often breaks the prompt cache and raises cost.",
|
|
89
220
|
"providerStatus.connected": "Connected", "providerStatus.keyNeeded": "Key needed", "providerStatus.loginNeeded": "Sign-in needed", "providerStatus.disconnected": "Not connected", "providerStatus.checking": "Checking",
|
|
90
|
-
"clients.title": "Clients", "clients.subtitle": "Set up the apps that use ClaudeRipple.", "clients.desktop.title": "Claude Desktop", "clients.desktop.help": "Choose whether provider models appear by real name in the model picker.", "clients.codex.title": "Codex (app and CLI)", "clients.codex.help": "Adds ClaudeRipple as a provider to Codex's config (~/.codex/config.toml). Terminal: `codex --profile clauderipple -m <model>`; Codex app: make clauderipple the default provider in that config.", "clients.codex.note": "When on, Codex's GPT requests go through ClaudeRipple too. Codex keeps its own sign-in, and with several ChatGPT accounts added, the next one takes over when one hits its limit — no sign-out. The list below is the Claude and Anthropic-compatible models Codex gains.", "clients.codex.turnOn": "Use ClaudeRipple in Codex",
|
|
91
|
-
"logs.title": "Logs", "logs.requests": "Requests", "logs.raw": "Raw logs", "logs.lastHour": "Last hour", "logs.autoscroll": "Auto-scroll", "logs.polling": "Updates every 3s", "logs.rawPolling": "Updates every 3s · last 200 lines", "logs.provider": "Provider", "logs.all": "All",
|
|
221
|
+
"clients.title": "Clients", "clients.subtitle": "Set up the apps that use ClaudeRipple.", "clients.desktop.title": "Claude Desktop", "clients.desktop.help": "Choose whether provider models appear by real name in the model picker.", "clients.codex.title": "Codex (app and CLI)", "clients.codex.help": "Adds ClaudeRipple as a provider to Codex's config (~/.codex/config.toml). Terminal: `codex --profile clauderipple -m <model>`; Codex app: make clauderipple the default provider in that config.", "clients.codex.note": "When on, Codex's GPT requests go through ClaudeRipple too. Codex keeps its own sign-in, and with several ChatGPT accounts added, the next one takes over when one hits its limit — no sign-out. The list below is the Claude and Anthropic-compatible models Codex gains.", "clients.codex.turnOn": "Use ClaudeRipple in Codex","clients.claudeCode.title": "Terminal Claude Code", "clients.claudeCode.help": "Terminal `claude` uses the same router. Choose with `/model <name>`.",
|
|
222
|
+
"logs.title": "Logs", "logs.requests": "Requests", "logs.raw": "Raw logs", "logs.lastHour": "Last hour", "logs.autoscroll": "Auto-scroll", "logs.polling": "Updates every 3s", "logs.rawPolling": "Updates every 3s · last 200 lines", "logs.provider": "Provider", "logs.all": "All","logs.empty": "No requests yet.", "logs.summary.requests": "Requests", "logs.summary.success": "Succeeded / failed", "logs.summary.input": "Input tokens", "logs.summary.output": "Output tokens", "logs.summary.duration": "Average response", "logs.cacheHit": "Cache {percent}%", "logs.th.time": "Time", "logs.th.models": "Model", "logs.th.effort": "effort", "logs.th.input": "Input", "logs.th.output": "Output", "logs.th.duration": "Duration", "logs.th.status": "Status", "logs.status.ok": "ok", "logs.status.error": "error", "logs.status.resent": "resent", "logs.status.resentHelp": "Not a failure: the client sent this request again on its own.", "logs.detail.id": "Request ID", "logs.detail.kind": "Kind", "logs.detail.stop": "Stop reason", "logs.detail.uncached": "Uncached input", "logs.detail.cacheRead": "Cache read", "logs.detail.cacheWrite": "Cache write", "logs.detail.note": "Note", "logs.none": "None", "logs.seconds": "{value}s",
|
|
92
223
|
"about.title": "About", "about.body": "ClaudeRipple is an independent open-source project, not affiliated with Anthropic or OpenAI. Claude and Claude Code are trademarks of Anthropic, PBC.", "about.license": "License: GPL-3.0",
|
|
93
224
|
"providers.identityHelp": "Prepends 'You are <model>, answering through Claude Code' to the system prompt. Off, the model may believe it is Claude.",
|
|
94
225
|
"picker.models": "{count} models in the picker: {names}",
|
|
95
226
|
"picker.lastAt": "Claude Desktop last fetched the list at {at}",
|
|
96
227
|
"picker.never": "Claude Desktop has not fetched the list yet. Quit it completely and open it again.",
|
|
97
|
-
"
|
|
98
|
-
"
|
|
99
|
-
"agentTitle.on": "On",
|
|
100
|
-
"agentTitle.off": "Off",
|
|
101
|
-
"agentTitle.turnOn": "Turn on",
|
|
102
|
-
"agentTitle.turnOff": "Turn off",
|
|
103
|
-
"statusMod.title": "Route line and request log",
|
|
104
|
-
"statusMod.help": "Shows above the Claude Code prompt where the last request went (model, provider, cache hit, time), and opens the request log in a side pane with the Log button or /ripple-log. × or /ripple-bar hides or brings back the line. A worker also stays on its own model when the Agent call names another, and its [[ripple: name@level]] marker is read wherever it sits in the prompt. Works through a Claude Code mod; applies to sessions opened from now on.",
|
|
105
|
-
"statusMod.turnOn": "Turn on",
|
|
106
|
-
"statusMod.turnOff": "Turn off",
|
|
228
|
+
"statusMod.title": "ClaudeRipple mod",
|
|
229
|
+
"statusMod.help": "Adds the ClaudeRipple bar above the Claude Code prompt. It picks the reasoning effort for each prompt, picks the worker and effort for tasks sent to ripple:auto, and can keep the prompt cache warm. It shows context, cache time left, plan limits and where the last request went, and Log opens the request log. Change it from the bar's gear or /ripple. Applies to sessions opened after this.",
|
|
107
230
|
"statusMod.saved": "Saved. Applies to Claude Code sessions opened from now on.",
|
|
108
|
-
"workerTools.title": "Worker tools",
|
|
109
231
|
"workerTools.help": "Gives the workers ClaudeRipple generates only the read, edit, run, search and skill tools. The session's MCP servers and plugin tools no longer ride along on every worker request, which cuts input sharply, but those workers cannot use a browser or the iOS Simulator. A worker that needs them belongs in an agent file of your own in ~/.claude/agents, which ClaudeRipple never touches. Applies to new sessions.",
|
|
110
|
-
"workerTools.on": "On",
|
|
111
|
-
"workerTools.off": "Off (inherits every session tool)",
|
|
112
|
-
"workerTools.turnOn": "Limit tools",
|
|
113
|
-
"workerTools.turnOff": "Stop limiting",
|
|
114
232
|
"providers.probeNoCredits": "The key is valid, but this account has no credits, so no answer came back. Top up on the provider site.",
|
|
115
233
|
"providers.probeBadKey": "The API key was rejected. Check the key.",
|
|
116
234
|
"providers.searchModels": "Search models (name or id)",
|
|
@@ -150,6 +268,150 @@ const I18N = {
|
|
|
150
268
|
"providers.modelsFoundLive": "Fetched {n} models from the ChatGPT catalog. New ones are added unticked.",
|
|
151
269
|
"slots.saving": "Saving…",
|
|
152
270
|
"slots.saved": "Saved · applies immediately",
|
|
271
|
+
"common.close": "Close",
|
|
272
|
+
"clients.claudeCode.extras": "Claude Code extras",
|
|
273
|
+
"workerTools.switch": "Limit worker tools",
|
|
274
|
+
"providers.remove": "Remove provider",
|
|
275
|
+
"providers.subscriptionGroup": "Accounts and subscriptions",
|
|
276
|
+
"providers.anthropicGroup": "Anthropic-compatible",
|
|
277
|
+
"providers.usage": "Usage",
|
|
278
|
+
"mod.effort": "Effort",
|
|
279
|
+
"mod.effortBlurb": "How Auto picks the effort for each prompt you send.",
|
|
280
|
+
"mod.auto": "Auto",
|
|
281
|
+
"mod.autoHint": "picks per prompt; your own pick turns it off",
|
|
282
|
+
"mod.lean": "Lean",
|
|
283
|
+
"mod.leanHint": "tips close calls only",
|
|
284
|
+
"mod.cheaper": "Cheaper",
|
|
285
|
+
"mod.smarter": "Smarter",
|
|
286
|
+
"mod.floor": "Never below",
|
|
287
|
+
"mod.ceiling": "Never above",
|
|
288
|
+
"mod.floorWins": "below the floor: the floor wins",
|
|
289
|
+
"mod.effort.low": "Low",
|
|
290
|
+
"mod.effort.medium": "Medium",
|
|
291
|
+
"mod.effort.high": "High",
|
|
292
|
+
"mod.effort.xhigh": "X-High",
|
|
293
|
+
"mod.effort.max": "Max",
|
|
294
|
+
"mod.off": "Off",
|
|
295
|
+
"mod.workers": "Workers",
|
|
296
|
+
"mod.takesOver": "Takes over",
|
|
297
|
+
"mod.allSpawns": "All spawns",
|
|
298
|
+
"mod.unavailable": " (unavailable)",
|
|
299
|
+
"mod.judge": "Judge",
|
|
300
|
+
"mod.judgeBlurb": "Who decides: effort for prompts, domain and level for tasks.",
|
|
301
|
+
"mod.haiku": "Haiku",
|
|
302
|
+
"mod.jev": "Jev",
|
|
303
|
+
"mod.routerModel": "Router model",
|
|
304
|
+
"mod.haikuHint": "Haiku 5.5 on your Claude login · about a second a prompt",
|
|
305
|
+
"mod.jevSource": "Jev source",
|
|
306
|
+
"mod.typesafe": "TypeSafe",
|
|
307
|
+
"mod.zen": "OpenCode Zen",
|
|
308
|
+
"mod.zenKey": "uses your OpenCode Zen key from ClaudeRipple",
|
|
309
|
+
"mod.zenMissing": "No OpenCode Zen authorization key in ClaudeRipple config",
|
|
310
|
+
"mod.noModels": "no router models listed",
|
|
311
|
+
"mod.haikuFallback": "falls back to Haiku",
|
|
312
|
+
"mod.model": "Model",
|
|
313
|
+
"mod.cache": "Cache",
|
|
314
|
+
"mod.cacheBlurb": "Keep the prompt cache warm while you step away.",
|
|
315
|
+
"mod.keepWarm": "Keep warm",
|
|
316
|
+
"mod.keepWarmHint": "pings the cache just before it expires",
|
|
317
|
+
"mod.for": "For",
|
|
318
|
+
"mod.afterReply": "after the last reply",
|
|
319
|
+
"mod.chatsFrom": "Chats from",
|
|
320
|
+
"mod.tokens": "tokens",
|
|
321
|
+
"mod.warmCost": "Each ping re-reads the whole chat from cache: about a tenth of its input price, and the same share of plan limits.",
|
|
322
|
+
"mod.hours": "{n}h",
|
|
323
|
+
"mod.handoff": "Compact & Handoff",
|
|
324
|
+
"mod.handoffBlurb": "How a heavy chat is compacted or handed to a fresh one.",
|
|
325
|
+
"mod.compactWith": "Compact with",
|
|
326
|
+
"mod.sessionCompactor": "The session’s own",
|
|
327
|
+
"mod.afterHandoff": "After handoff",
|
|
328
|
+
"mod.handoffButton": "Handoff button",
|
|
329
|
+
"mod.whenAdvised": "When advised",
|
|
330
|
+
"mod.always": "Always",
|
|
331
|
+
"mod.fullHandoff": "Full handoff",
|
|
332
|
+
"mod.noSkill": "None: a turn writes HANDOFF.md",
|
|
333
|
+
"mod.heavyAt": "Heavy at",
|
|
334
|
+
"mod.context": "context",
|
|
335
|
+
"mod.continue": "New session now",
|
|
336
|
+
"mod.confirm": "Ask first",
|
|
337
|
+
"mod.copy": "Copy only",
|
|
338
|
+
"mod.look": "Look",
|
|
339
|
+
"mod.lookBlurb": "What the band shows and how.",
|
|
340
|
+
"mod.layout": "Layout",
|
|
341
|
+
"mod.dashboard": "Dashboard",
|
|
342
|
+
"mod.minimal": "Minimal",
|
|
343
|
+
"mod.footerHint": "one line in the footer",
|
|
344
|
+
"mod.appearance": "Appearance",
|
|
345
|
+
"mod.dark": "Dark",
|
|
346
|
+
"mod.lightAppearance": "Light",
|
|
347
|
+
"mod.language": "Language",
|
|
348
|
+
"mod.show": "Show",
|
|
349
|
+
"mod.part.timer": "Cache timer",
|
|
350
|
+
"mod.part.context": "Context",
|
|
351
|
+
"mod.part.route": "Log",
|
|
352
|
+
"mod.part.limits": "Limits",
|
|
353
|
+
"nav.mod": "ClaudeRipple mod",
|
|
354
|
+
"nav.modShort": "Mod",
|
|
355
|
+
"mod.subtitle": "How the ClaudeRipple bar in Claude Code sets effort, hands tasks to workers, keeps the cache and looks. Changes save as you make them; the ⚙ panel in the bar shows the same settings.",
|
|
356
|
+
"mod.saved": "Saved",
|
|
357
|
+
"mod.conflict": "These settings were changed elsewhere. The latest are shown; make your change again.",
|
|
358
|
+
"mod.offNotice": "The mod is off, so these settings wait until it is turned on in {clients}.",
|
|
359
|
+
"mod.openSettings": "ClaudeRipple mod settings",
|
|
360
|
+
"mod.takesOverHelp": "When a job is big, Claude hands parts of it to subagents: helper AIs that work on their own. Unless told otherwise it uses the general-purpose subagent built into Claude Code, which runs on the same model as your chat and uses your plan just as much.",
|
|
361
|
+
"mod.takesOverHelp2": "With ‘ripple:auto’, ClaudeRipple picks the model only for tasks Claude sends to ripple:auto. With ‘All spawns’, tasks given to the general-purpose subagent also run on a fitting model and effort. Tasks that name a model are left alone. If unsure, choose ‘All spawns’.",
|
|
362
|
+
"mod.notUsable": "Signed out or out of quota",
|
|
363
|
+
"mod.jevKeyNote": "The TypeSafe key is not kept here. Set it in the ⚙ panel of the bar in Claude Code, with TYPESAFE_API_KEY, or in ~/.config/jev/.env.",
|
|
364
|
+
"mod.zenAdd": "Add OpenCode Zen with a jev model in Providers.",
|
|
365
|
+
"mod.workersBlurb": "Tasks you delegate run on workers: other models reached through ClaudeRipple. The main chat only hands work over; ClaudeRipple judges the difficulty (low, medium, high or max) and runs it on the model and effort set for that worker.",
|
|
366
|
+
"mod.models": "Models to use",
|
|
367
|
+
"mod.modelsHelp": "The four workers use only the ticked models. A worker with no model set is filled from the ticked ones.",
|
|
368
|
+
"mod.fourWorkers": "The four workers",
|
|
369
|
+
"mod.retired": "Field settings and Auto (experimental) are gone. They are now four workers.",
|
|
370
|
+
"mod.rung.light": "Low worker",
|
|
371
|
+
"mod.rung.standard": "Medium worker",
|
|
372
|
+
"mod.rung.hard": "High worker",
|
|
373
|
+
"mod.rung.plan": "Max worker",
|
|
374
|
+
"mod.rungHint.light": "Finding files, quick lookups, skimming logs, mechanical edits",
|
|
375
|
+
"mod.rungHint.standard": "Specified implementation, refactors, summaries, drafts",
|
|
376
|
+
"mod.rungHint.hard": "Hard debugging, multi-file changes, independent review and rebuttal",
|
|
377
|
+
"mod.rungHint.plan": "Best result available: planning, design, architecture, opinions",
|
|
378
|
+
"mod.ladderHelp": "If a worker's model can't run (signed out, out of quota, unticked), the next worker up takes over, then the session's model — never one below.",
|
|
379
|
+
"mod.sessionModel": "The session's own model",
|
|
380
|
+
"mod.unavailableNow": " (unavailable now)",
|
|
381
|
+
"mod.rungUnusable": "Unavailable now: the worker above takes over",
|
|
382
|
+
"mod.billing.free": "Free",
|
|
383
|
+
"mod.billing.payg": "Pay per token",
|
|
384
|
+
"mod.billing.subscription": "Subscription",
|
|
385
|
+
"mod.optionsFailed": "Couldn't load the lists of agents and models; the menus show only what is saved.",
|
|
386
|
+
"mod.modes": "Modes",
|
|
387
|
+
"mod.modeActive": "Active mode",
|
|
388
|
+
"mod.modeNone": "Base",
|
|
389
|
+
"mod.modeOn": "On",
|
|
390
|
+
"mod.modeAdd": "+ New mode",
|
|
391
|
+
"mod.modeAddTitle": "New mode",
|
|
392
|
+
"mod.modeName": "Name",
|
|
393
|
+
"mod.modeNameHelp": "Starts with a copy of the base workers. This name also appears in the Claude Code bar.",
|
|
394
|
+
"mod.modeDelegation": "Delegation",
|
|
395
|
+
"mod.modeNormal": "Normal",
|
|
396
|
+
"mod.modeEager": "Eager — main chat only directs",
|
|
397
|
+
"mod.modeUntil": "End",
|
|
398
|
+
"mod.modeUntilNone": "Until turned off",
|
|
399
|
+
"mod.modeUntilTime": "At a time",
|
|
400
|
+
"mod.modeUntilResetChoice": "At quota reset",
|
|
401
|
+
"mod.modeUntilResetOf": "At {provider} quota reset",
|
|
402
|
+
"mod.modeResetProvider": "Quota reset provider",
|
|
403
|
+
"mod.modeResetHelp": "Ends at the first {provider} quota reset after the mode is turned on.",
|
|
404
|
+
"mod.modeResetUnknown": "No provider (ChatGPT, Claude) has a known reset time.",
|
|
405
|
+
"mod.modeTurnOn": "Turn this mode on",
|
|
406
|
+
"mod.modeTurnOff": "Turn this mode off",
|
|
407
|
+
"mod.modeUseBase": "Return to base",
|
|
408
|
+
"mod.modeMoveUp": "Move earlier",
|
|
409
|
+
"mod.modeMoveDown": "Move later",
|
|
410
|
+
"mod.modeAddModel": "+ Add model",
|
|
411
|
+
"mod.modeOrderHelp": "Use the first available model in order. If the entire list fails, try one worker tier up, then the session model.",
|
|
412
|
+
"mod.modeNameRequired": "Enter a name for the mode.",
|
|
413
|
+
"mod.modeTimePast": "The end time must be later than now.",
|
|
414
|
+
"mod.modeRemoveConfirm": "Delete the mode “{name}”?",
|
|
153
415
|
},
|
|
154
416
|
zh: {
|
|
155
417
|
"brand": "ClaudeRipple",
|
|
@@ -187,8 +449,6 @@ const I18N = {
|
|
|
187
449
|
"health.providers": "供应商",
|
|
188
450
|
"health.noProviders": "尚未连接任何供应商。请在“供应商”页面添加。",
|
|
189
451
|
"health.quota": "已用 {percent}%{reset}",
|
|
190
|
-
"health.resetsIn": " · {hours} 小时后重置",
|
|
191
|
-
"health.details": "详细信息",
|
|
192
452
|
"health.version": "版本",
|
|
193
453
|
"health.runtime": "路由服务文件 · 启动时间",
|
|
194
454
|
"health.routes": "映射",
|
|
@@ -205,13 +465,6 @@ const I18N = {
|
|
|
205
465
|
"update.started": "更新已开始。路由服务以新版本恢复运行后,此窗口会重新加载。更新输出见 ~/.clauderipple/logs/update.log。",
|
|
206
466
|
"update.failed": "无法启动更新。",
|
|
207
467
|
"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
468
|
"picker.restartHelp": "开启后,请完全退出 Claude Desktop 再重新打开。",
|
|
216
469
|
"picker.confirmOn": "操作系统会要求你确认信任该证书(macOS 会要求输入登录密码,Windows 会弹出证书对话框)。ClaudeRipple 永远不会看到你的密码。是否继续?",
|
|
217
470
|
"picker.working": "正在处理。",
|
|
@@ -219,7 +472,6 @@ const I18N = {
|
|
|
219
472
|
"picker.doneOff": "已关闭。请完全退出 Claude Desktop 再重新打开。",
|
|
220
473
|
"slots.title": "模型映射",
|
|
221
474
|
"slots.subtitle": "决定在应用中选择某个 Claude 模型时,实际由哪个模型作答。更改会自动保存。",
|
|
222
|
-
"slots.pickerHelp": "开启:供应商的模型以真实名称出现在 Claude Desktop 的模型选择器中。关闭:按上方的映射借用 Claude 模型名作答。",
|
|
223
475
|
"slots.pickerModels": "选择器中的模型",
|
|
224
476
|
"slots.pickerModelsHelp": "勾选的模型会出现在 Claude Desktop 的模型选择器中,选中后由该模型直接作答。新添加的模型从下一个会话起可选(正在运行的会话沿用启动时的列表)。",
|
|
225
477
|
"slots.add": "+ 添加映射",
|
|
@@ -254,7 +506,6 @@ const I18N = {
|
|
|
254
506
|
"providers.search": "搜索供应商…",
|
|
255
507
|
"providers.overview": "概览",
|
|
256
508
|
"providers.accounts": "账号",
|
|
257
|
-
"providers.settings": "设置",
|
|
258
509
|
"providers.modelsTab": "模型",
|
|
259
510
|
"providers.selectedModels": "已选模型",
|
|
260
511
|
"providers.modelsCountShort": "{count} 个模型",
|
|
@@ -270,20 +521,15 @@ const I18N = {
|
|
|
270
521
|
"providers.addClaudeAccount": "+ 添加 Claude 账号",
|
|
271
522
|
"providers.currentAccountHelp": "Claude Code 或 Claude Desktop 当前使用的外部登录。ClaudeRipple 无法移除它。",
|
|
272
523
|
"providers.addedAccountHelp": "ClaudeRipple 将此 OAuth 授权保存在本机,并自动刷新。",
|
|
273
|
-
"providers.reauthAction": "重新登录",
|
|
524
|
+
"providers.reauthAction": "重新登录", "providers.preferBadge": "优先", "providers.preferAction": "设为优先", "providers.preferHelp": "新对话从最上面的优先账号开始。它达到限额时切换到下一个账号,限额重置后新对话会回到它。进行中的对话为保留缓存,继续使用原来的账号。",
|
|
274
525
|
"providers.dangerZone": "管理已添加的账号",
|
|
275
|
-
"providers.saveSettings": "保存设置",
|
|
276
526
|
"providers.connection": "连接",
|
|
277
|
-
"providers.authentication": "认证",
|
|
278
527
|
"providers.rotationRequired": "只有开启账号轮换后,已添加的账号才会用于 Claude 应用和 Claude Code 的请求。",
|
|
279
528
|
"providers.anthropic": "Claude (Anthropic)",
|
|
280
529
|
"providers.anthropicHelp": "轮换使用多个 Claude 订阅账号,或向 Codex 等 OpenAI 风格的工具提供 Claude 模型。",
|
|
281
530
|
"providers.anthropicIngressOnly": "账号轮换关闭时,此处选择的模型只提供给 Codex 等 OpenAI 风格的工具,不会出现在 Claude 应用的映射中。",
|
|
282
531
|
"providers.anthropicPoolRouting": "账号轮换开启时,Claude 应用和 Claude Code 的请求在每个对话中固定使用一个账号,以保留提示缓存。如果在响应开始前遇到 429 或认证被拒,该请求会转到下一个账号。使用多个订阅可能受 Anthropic 条款和账号限制的约束;请仅使用你本人拥有且获得授权的账号。",
|
|
283
|
-
"providers.anthropicLoginReuse": "复用登录",
|
|
284
|
-
"providers.anthropicPoolOn": "账号轮换",
|
|
285
532
|
"providers.anthropicPool": "自动轮换 Claude 账号",
|
|
286
|
-
"providers.anthropicPoolHelp": "使用当前的 Claude 登录以及下方添加的账号。除非额度或认证失败,同一对话始终留在原账号上。",
|
|
287
533
|
"providers.anthropicCurrent": "当前登录",
|
|
288
534
|
"providers.anthropicReauth": "重新登录",
|
|
289
535
|
"providers.anthropicNoAccounts": "尚未向 ClaudeRipple 添加任何账号。",
|
|
@@ -298,12 +544,10 @@ const I18N = {
|
|
|
298
544
|
"providers.anthropicSourceClaudeCode": "终端 Claude 登录",
|
|
299
545
|
"providers.anthropicSourceTokenFile": "ClaudeRipple token",
|
|
300
546
|
"providers.anthropicSourceMissing": "无 — 请在下方连接",
|
|
301
|
-
"providers.anthropicLogin": "+ 添加 Claude 账号",
|
|
302
547
|
"providers.anthropicOAuthTitle": "添加 Claude 账号",
|
|
303
548
|
"providers.anthropicOAuthWarning": "通过第三方代理使用 Claude 订阅 OAuth 并非 Anthropic 支持的集成方式,可能受条款或账号限制的约束。请仅将你本人的账号用于获得授权的用途。",
|
|
304
549
|
"providers.anthropicOAuthAccept": "我了解风险,并希望继续使用 OAuth。",
|
|
305
550
|
"providers.anthropicOAuthContinue": "继续使用 OAuth",
|
|
306
|
-
"providers.anthropicLogout": "断开连接",
|
|
307
551
|
"providers.anthropicLoginDone": "Claude 订阅已连接。",
|
|
308
552
|
"providers.anthropicSignInBrowser": "请在浏览器中登录 Claude。如果没有弹出窗口,请使用下面的链接。",
|
|
309
553
|
"providers.anthropicSignInLink": "打开登录页面",
|
|
@@ -312,14 +556,11 @@ const I18N = {
|
|
|
312
556
|
"providers.anthropicSignInManual": "粘贴授权码重试",
|
|
313
557
|
"providers.anthropicSignInWaiting": "正在等待浏览器…(最长 5 分钟)",
|
|
314
558
|
"providers.anthropicSignInFailed": "登录失败",
|
|
315
|
-
"providers.anthropicSignedInActive": "正在使用 ClaudeRipple 的登录。",
|
|
316
|
-
"providers.anthropicSignedInStandby": "另外还保存了一个 ClaudeRipple 登录,上述来源失效时会自动接替。",
|
|
317
559
|
"providers.add": "+ 添加供应商",
|
|
318
560
|
"providers.refresh": "全部测试",
|
|
319
561
|
"providers.check": "测试连接",
|
|
320
562
|
"providers.checking": "正在检查",
|
|
321
563
|
"providers.empty": "尚未连接任何供应商。请用上方的按钮添加。",
|
|
322
|
-
"providers.modelsCount": "正在使用 {count} 个模型:{names}",
|
|
323
564
|
"providers.noModels": "尚未选择模型。请在“编辑”中选择。",
|
|
324
565
|
"providers.removeConfirm": "移除供应商 {name}?使用它的模型映射也会一并移除。",
|
|
325
566
|
"providers.choose": "添加供应商",
|
|
@@ -329,7 +570,6 @@ const I18N = {
|
|
|
329
570
|
"providers.presetHelp": "粘贴 API 密钥即可完成。",
|
|
330
571
|
"providers.openaiGroup": "OpenAI 兼容",
|
|
331
572
|
"providers.openaiGroupHelp": "ClaudeRipple 会将请求转换为 OpenAI API 格式。",
|
|
332
|
-
"providers.verified": "已对照官方文档验证",
|
|
333
573
|
"providers.custom": "手动填写",
|
|
334
574
|
"providers.customName": "新供应商",
|
|
335
575
|
"providers.customHelp": "通过 URL 和密钥接入任意 Anthropic 兼容或 OpenAI 兼容 API。",
|
|
@@ -379,7 +619,6 @@ const I18N = {
|
|
|
379
619
|
"providers.authBorrow": "复用 Codex CLI 登录(~/.codex/auth.json)",
|
|
380
620
|
"providers.login": "登录方式",
|
|
381
621
|
"providers.loginHelp": "在菜单栏应用中选择“登录 ChatGPT…”,或在终端运行 clauderipple login,都会打开浏览器登录。token 只保存在本机。",
|
|
382
|
-
"providers.loginHint": "请在菜单栏应用中选择“登录 ChatGPT…”,或在终端运行 clauderipple login。",
|
|
383
622
|
"providers.chatgptLogin": "登录 ChatGPT",
|
|
384
623
|
"providers.chatgptLoginWaiting": "请在浏览器中完成登录。完成后这里会自动更新。",
|
|
385
624
|
"providers.chatgptLoginDone": "ChatGPT 登录完成。",
|
|
@@ -431,7 +670,6 @@ const I18N = {
|
|
|
431
670
|
"clients.codex.help": "将 ClaudeRipple 作为供应商添加到 Codex 配置(~/.codex/config.toml)中。终端:`codex --profile clauderipple -m <model>`;Codex 应用:在该配置中将 clauderipple 设为默认供应商。",
|
|
432
671
|
"clients.codex.note": "开启后,Codex 的 GPT 请求也会经过 ClaudeRipple。Codex 保留自己的登录;如果添加了多个 ChatGPT 账号,一个账号达到上限时由下一个接手,无需退出登录。下方列表是 Codex 因此新增的 Claude 及 Anthropic 兼容模型。",
|
|
433
672
|
"clients.codex.turnOn": "在 Codex 中使用 ClaudeRipple",
|
|
434
|
-
"clients.codex.turnOff": "断开 Codex",
|
|
435
673
|
"clients.claudeCode.title": "终端 Claude Code",
|
|
436
674
|
"clients.claudeCode.help": "终端中的 `claude` 使用同一个路由服务。用 `/model <name>` 选择模型。",
|
|
437
675
|
"logs.title": "日志",
|
|
@@ -443,7 +681,6 @@ const I18N = {
|
|
|
443
681
|
"logs.rawPolling": "每 3 秒更新 · 最后 200 行",
|
|
444
682
|
"logs.provider": "供应商",
|
|
445
683
|
"logs.all": "全部",
|
|
446
|
-
"logs.showCountTokens": "显示 token 数",
|
|
447
684
|
"logs.empty": "暂无请求。",
|
|
448
685
|
"logs.summary.requests": "请求",
|
|
449
686
|
"logs.summary.success": "成功 / 失败",
|
|
@@ -478,23 +715,10 @@ const I18N = {
|
|
|
478
715
|
"picker.models": "选择器中的 {count} 个模型:{names}",
|
|
479
716
|
"picker.lastAt": "Claude Desktop 最后一次获取列表的时间:{at}",
|
|
480
717
|
"picker.never": "Claude Desktop 尚未获取过列表。请完全退出后重新打开。",
|
|
481
|
-
"
|
|
482
|
-
"
|
|
483
|
-
"agentTitle.on": "开启",
|
|
484
|
-
"agentTitle.off": "关闭",
|
|
485
|
-
"agentTitle.turnOn": "开启",
|
|
486
|
-
"agentTitle.turnOff": "关闭",
|
|
487
|
-
"statusMod.title": "路由状态行与请求日志",
|
|
488
|
-
"statusMod.help": "在 Claude Code 输入框上方显示上一个请求的去向(模型、供应商、缓存命中率、耗时),并可通过 Log 按钮或 /ripple-log 在侧边窗格中打开请求日志。× 或 /ripple-bar 可隐藏或重新显示这一行。当 Agent 调用指定了其他模型时,worker 仍会使用自己的模型;它的 [[ripple: name@level]] 标记无论位于提示词何处都会被读取。通过 Claude Code mod 实现,对此后打开的会话生效。",
|
|
489
|
-
"statusMod.turnOn": "开启",
|
|
490
|
-
"statusMod.turnOff": "关闭",
|
|
718
|
+
"statusMod.title": "ClaudeRipple 模组",
|
|
719
|
+
"statusMod.help": "在 Claude Code 输入框上方显示 ClaudeRipple 栏。它为每条提示选择推理强度,为交给 ripple:auto 的任务选择合适的工作模型和强度,并可保持提示缓存不过期。栏中显示上下文、缓存剩余时间、套餐用量和上一个请求的去向,Log 可打开请求日志。在栏的齿轮或 /ripple 中修改设置。对之后新开的会话生效。",
|
|
491
720
|
"statusMod.saved": "已保存。对此后打开的 Claude Code 会话生效。",
|
|
492
|
-
"workerTools.title": "Worker 工具",
|
|
493
721
|
"workerTools.help": "让 ClaudeRipple 生成的 worker 只获得读取、编辑、运行、搜索和技能工具。会话的 MCP 服务器和插件工具不再随每个 worker 请求一起发送,输入量大幅减少,但这些 worker 将无法使用浏览器或 iOS 模拟器。需要这些工具的 worker 应使用你在 ~/.claude/agents 中自行编写的代理文件,ClaudeRipple 从不改动这些文件。对新会话生效。",
|
|
494
|
-
"workerTools.on": "开启",
|
|
495
|
-
"workerTools.off": "关闭(继承会话的全部工具)",
|
|
496
|
-
"workerTools.turnOn": "限制工具",
|
|
497
|
-
"workerTools.turnOff": "取消限制",
|
|
498
722
|
"providers.probeNoCredits": "密钥有效,但该账号没有余额,因此没有返回回答。请到供应商网站充值。",
|
|
499
723
|
"providers.probeBadKey": "API 密钥被拒绝,请检查密钥。",
|
|
500
724
|
"providers.searchModels": "搜索模型(名称或 ID)",
|
|
@@ -534,6 +758,150 @@ const I18N = {
|
|
|
534
758
|
"providers.modelsFoundLive": "已从 ChatGPT 目录获取 {n} 个模型。新出现的模型默认不勾选。",
|
|
535
759
|
"slots.saving": "正在保存…",
|
|
536
760
|
"slots.saved": "已保存 · 立即生效",
|
|
761
|
+
"common.close": "关闭",
|
|
762
|
+
"clients.claudeCode.extras": "Claude Code 附加功能",
|
|
763
|
+
"workerTools.switch": "限制 Worker 工具",
|
|
764
|
+
"providers.remove": "删除供应商",
|
|
765
|
+
"providers.subscriptionGroup": "账号与订阅",
|
|
766
|
+
"providers.anthropicGroup": "Anthropic 兼容",
|
|
767
|
+
"providers.usage": "用量",
|
|
768
|
+
"mod.effort": "推理强度",
|
|
769
|
+
"mod.effortBlurb": "自动模式如何为你发送的每条提示词选择推理强度。",
|
|
770
|
+
"mod.auto": "自动",
|
|
771
|
+
"mod.autoHint": "按提示词选择;你手动选择后即关闭",
|
|
772
|
+
"mod.lean": "倾向",
|
|
773
|
+
"mod.leanHint": "只影响难分的情况",
|
|
774
|
+
"mod.cheaper": "更省",
|
|
775
|
+
"mod.smarter": "更聪明",
|
|
776
|
+
"mod.floor": "不低于",
|
|
777
|
+
"mod.ceiling": "不高于",
|
|
778
|
+
"mod.floorWins": "低于下限:以下限为准",
|
|
779
|
+
"mod.effort.low": "低",
|
|
780
|
+
"mod.effort.medium": "中",
|
|
781
|
+
"mod.effort.high": "高",
|
|
782
|
+
"mod.effort.xhigh": "超高",
|
|
783
|
+
"mod.effort.max": "最高",
|
|
784
|
+
"mod.off": "关闭",
|
|
785
|
+
"mod.workers": "Worker",
|
|
786
|
+
"mod.takesOver": "接管范围",
|
|
787
|
+
"mod.allSpawns": "所有子代理",
|
|
788
|
+
"mod.unavailable": " (不可用)",
|
|
789
|
+
"mod.judge": "判定",
|
|
790
|
+
"mod.judgeBlurb": "由谁决定:提示词的推理强度、任务的领域和等级。",
|
|
791
|
+
"mod.haiku": "Haiku",
|
|
792
|
+
"mod.jev": "Jev",
|
|
793
|
+
"mod.routerModel": "路由模型",
|
|
794
|
+
"mod.haikuHint": "使用你的 Claude 登录运行 Haiku 5.5 · 每条提示词约 1 秒",
|
|
795
|
+
"mod.jevSource": "Jev 来源",
|
|
796
|
+
"mod.typesafe": "TypeSafe",
|
|
797
|
+
"mod.zen": "OpenCode Zen",
|
|
798
|
+
"mod.zenKey": "使用 ClaudeRipple 中的 OpenCode Zen 密钥",
|
|
799
|
+
"mod.zenMissing": "ClaudeRipple 配置中没有 OpenCode Zen 授权密钥",
|
|
800
|
+
"mod.noModels": "路由服务未列出任何模型",
|
|
801
|
+
"mod.haikuFallback": "失败时回退到 Haiku",
|
|
802
|
+
"mod.model": "模型",
|
|
803
|
+
"mod.cache": "缓存",
|
|
804
|
+
"mod.cacheBlurb": "离开时让提示词缓存保持有效。",
|
|
805
|
+
"mod.keepWarm": "缓存保温",
|
|
806
|
+
"mod.keepWarmHint": "在缓存过期前 ping 一次",
|
|
807
|
+
"mod.for": "持续",
|
|
808
|
+
"mod.afterReply": "自最后一次回复起",
|
|
809
|
+
"mod.chatsFrom": "对话规模",
|
|
810
|
+
"mod.tokens": "token 起",
|
|
811
|
+
"mod.warmCost": "每次 ping 都会从缓存重新读取整个对话:约为其输入价格的十分之一,并按同样比例占用套餐限额。",
|
|
812
|
+
"mod.hours": "{n}小时",
|
|
813
|
+
"mod.handoff": "压缩与交接",
|
|
814
|
+
"mod.handoffBlurb": "较重的对话如何压缩或交接到新对话。",
|
|
815
|
+
"mod.compactWith": "压缩方式",
|
|
816
|
+
"mod.sessionCompactor": "会话自带",
|
|
817
|
+
"mod.afterHandoff": "交接之后",
|
|
818
|
+
"mod.handoffButton": "交接按钮",
|
|
819
|
+
"mod.whenAdvised": "建议时",
|
|
820
|
+
"mod.always": "始终",
|
|
821
|
+
"mod.fullHandoff": "完整交接",
|
|
822
|
+
"mod.noSkill": "无:由一轮对话写入 HANDOFF.md",
|
|
823
|
+
"mod.heavyAt": "使用率阈值",
|
|
824
|
+
"mod.context": "上下文",
|
|
825
|
+
"mod.continue": "立即开新会话",
|
|
826
|
+
"mod.confirm": "先问我",
|
|
827
|
+
"mod.copy": "仅复制",
|
|
828
|
+
"mod.look": "显示",
|
|
829
|
+
"mod.lookBlurb": "状态栏显示什么、如何显示。",
|
|
830
|
+
"mod.layout": "布局",
|
|
831
|
+
"mod.dashboard": "仪表盘",
|
|
832
|
+
"mod.minimal": "极简",
|
|
833
|
+
"mod.footerHint": "在底栏显示一行",
|
|
834
|
+
"mod.appearance": "外观",
|
|
835
|
+
"mod.dark": "深色",
|
|
836
|
+
"mod.lightAppearance": "浅色",
|
|
837
|
+
"mod.language": "语言",
|
|
838
|
+
"mod.show": "显示",
|
|
839
|
+
"mod.part.timer": "缓存计时",
|
|
840
|
+
"mod.part.context": "上下文",
|
|
841
|
+
"mod.part.route": "日志",
|
|
842
|
+
"mod.part.limits": "限额",
|
|
843
|
+
"nav.mod": "ClaudeRipple 模组",
|
|
844
|
+
"nav.modShort": "模组",
|
|
845
|
+
"mod.subtitle": "Claude Code 中的 ClaudeRipple 栏如何决定推理强度、把任务交给 Worker、保持缓存以及如何显示。更改会立即保存;栏中的 ⚙ 面板显示相同的设置。",
|
|
846
|
+
"mod.saved": "已保存",
|
|
847
|
+
"mod.conflict": "设置已在别处更改。已显示最新设置,请重新修改。",
|
|
848
|
+
"mod.offNotice": "模组已关闭;在“{clients}”中打开后这些设置才会生效。",
|
|
849
|
+
"mod.openSettings": "ClaudeRipple 模组设置",
|
|
850
|
+
"mod.takesOverHelp": "任务较大时,Claude 会把其中一部分交给子代理,也就是独立工作的辅助 AI。如果没有另行指定,就由 Claude Code 内置的通用子代理(general-purpose)执行,它使用和当前对话相同的模型,用量也照样计算。",
|
|
851
|
+
"mod.takesOverHelp2": "选择“ripple:auto”时,ClaudeRipple 只为 Claude 交给 ripple:auto 的任务挑选模型。选择“所有子代理”时,交给通用子代理的任务也会换成合适的模型和推理强度。已指定模型的任务保持不变。拿不准就选“所有子代理”。",
|
|
852
|
+
"mod.notUsable": "未登录或额度已用尽",
|
|
853
|
+
"mod.jevKeyNote": "TypeSafe 密钥不保存在这里。请在 Claude Code 栏的 ⚙ 面板、TYPESAFE_API_KEY 或 ~/.config/jev/.env 中设置。",
|
|
854
|
+
"mod.zenAdd": "请在“供应商”中添加带有 jev 模型的 OpenCode Zen。",
|
|
855
|
+
"mod.workersBlurb": "委派的任务由 Worker(经由 ClaudeRipple 的其他模型)执行。主对话只负责交出任务;由 ClaudeRipple 判断难度(low、medium、high 或 max),并用你为该 Worker 设定的模型和推理强度运行。",
|
|
856
|
+
"mod.models": "要使用的模型",
|
|
857
|
+
"mod.modelsHelp": "四个 Worker 只使用勾选的模型。尚未设定模型的 Worker 会从勾选的模型中自动填充。",
|
|
858
|
+
"mod.fourWorkers": "四个 Worker",
|
|
859
|
+
"mod.retired": "分领域设置和自动(实验)已取消,现已整理为四个 Worker。",
|
|
860
|
+
"mod.rung.light": "Low Worker",
|
|
861
|
+
"mod.rung.standard": "Medium Worker",
|
|
862
|
+
"mod.rung.hard": "High Worker",
|
|
863
|
+
"mod.rung.plan": "Max Worker",
|
|
864
|
+
"mod.rungHint.light": "查找文件、单次查询、浏览日志、机械式修改",
|
|
865
|
+
"mod.rungHint.standard": "按明确规格实现、重构、摘要、草稿",
|
|
866
|
+
"mod.rungHint.hard": "困难的调试、多文件改动、独立评审与反驳",
|
|
867
|
+
"mod.rungHint.plan": "力求最佳结果:规划、设计、架构、意见",
|
|
868
|
+
"mod.ladderHelp": "Worker 的模型无法使用时(未登录、额度用尽、未勾选),由上一级 Worker 的模型接手,再不行就用会话模型,绝不下调。",
|
|
869
|
+
"mod.sessionModel": "沿用会话模型",
|
|
870
|
+
"mod.unavailableNow": "(暂不可用)",
|
|
871
|
+
"mod.rungUnusable": "暂不可用:由上一级 Worker 接手",
|
|
872
|
+
"mod.billing.free": "免费",
|
|
873
|
+
"mod.billing.payg": "按量付费",
|
|
874
|
+
"mod.billing.subscription": "订阅",
|
|
875
|
+
"mod.optionsFailed": "无法载入代理和模型列表;菜单仅显示已保存的值。",
|
|
876
|
+
"mod.modes": "模式",
|
|
877
|
+
"mod.modeActive": "当前模式",
|
|
878
|
+
"mod.modeNone": "默认",
|
|
879
|
+
"mod.modeOn": "已开启",
|
|
880
|
+
"mod.modeAdd": "+ 新模式",
|
|
881
|
+
"mod.modeAddTitle": "新模式",
|
|
882
|
+
"mod.modeName": "名称",
|
|
883
|
+
"mod.modeNameHelp": "复制默认 Worker 列表开始。名称也显示在 Claude Code 栏中。",
|
|
884
|
+
"mod.modeDelegation": "委派强度",
|
|
885
|
+
"mod.modeNormal": "普通",
|
|
886
|
+
"mod.modeEager": "积极 — 主对话只指挥",
|
|
887
|
+
"mod.modeUntil": "结束时间",
|
|
888
|
+
"mod.modeUntilNone": "手动关闭前",
|
|
889
|
+
"mod.modeUntilTime": "指定时间",
|
|
890
|
+
"mod.modeUntilResetChoice": "额度重置时",
|
|
891
|
+
"mod.modeUntilResetOf": "{provider} 额度重置时",
|
|
892
|
+
"mod.modeResetProvider": "额度重置所依据的供应商",
|
|
893
|
+
"mod.modeResetHelp": "开启模式后,{provider} 额度首次重置时结束。",
|
|
894
|
+
"mod.modeResetUnknown": "没有已知重置时间的供应商(ChatGPT、Claude)。",
|
|
895
|
+
"mod.modeTurnOn": "开启此模式",
|
|
896
|
+
"mod.modeTurnOff": "关闭此模式",
|
|
897
|
+
"mod.modeUseBase": "返回默认",
|
|
898
|
+
"mod.modeMoveUp": "上移",
|
|
899
|
+
"mod.modeMoveDown": "下移",
|
|
900
|
+
"mod.modeAddModel": "+ 添加模型",
|
|
901
|
+
"mod.modeOrderHelp": "依次使用首个可用模型。整列不可用时,尝试上一级 Worker,然后使用会话模型。",
|
|
902
|
+
"mod.modeNameRequired": "请输入模式名称。",
|
|
903
|
+
"mod.modeTimePast": "结束时间必须晚于现在。",
|
|
904
|
+
"mod.modeRemoveConfirm": "删除模式“{name}”?",
|
|
537
905
|
},
|
|
538
906
|
ja: {
|
|
539
907
|
"brand": "ClaudeRipple",
|
|
@@ -571,8 +939,6 @@ const I18N = {
|
|
|
571
939
|
"health.providers": "プロバイダー",
|
|
572
940
|
"health.noProviders": "接続済みのプロバイダーはありません。「プロバイダー」から追加してください。",
|
|
573
941
|
"health.quota": "{percent}% 使用{reset}",
|
|
574
|
-
"health.resetsIn": " · {hours}時間後にリセット",
|
|
575
|
-
"health.details": "詳細",
|
|
576
942
|
"health.version": "バージョン",
|
|
577
943
|
"health.runtime": "ルーターのファイル · 起動日時",
|
|
578
944
|
"health.routes": "マッピング",
|
|
@@ -589,13 +955,6 @@ const I18N = {
|
|
|
589
955
|
"update.started": "アップデートを開始しました。ルーターが新しいバージョンで再開すると、このウィンドウは再読み込みされます。出力は ~/.clauderipple/logs/update.log にあります。",
|
|
590
956
|
"update.failed": "アップデートを開始できませんでした",
|
|
591
957
|
"picker.title": "モデルピッカー",
|
|
592
|
-
"picker.statusHelp": "オン:Claude Desktopのピッカーに、プロバイダーのモデルが実際の名前で表示されます。オフ:マッピングに従い、Claudeのモデル名でそれらのモデルが応答します。",
|
|
593
|
-
"picker.state": "状態",
|
|
594
|
-
"picker.on": "オン",
|
|
595
|
-
"picker.off": "オフ",
|
|
596
|
-
"picker.turnOn": "ピッカーをオンにする",
|
|
597
|
-
"picker.turnOff": "ピッカーをオフにする",
|
|
598
|
-
"picker.last": "直近では {count} 個のモデルを表示しました。",
|
|
599
958
|
"picker.restartHelp": "オンにしたら、Claude Desktopを完全に終了してから開き直してください。",
|
|
600
959
|
"picker.confirmOn": "証明書を信頼するかどうか、OSから確認を求められます(macOSではログインパスワードの入力、Windowsでは証明書のダイアログが表示されます)。ClaudeRippleがパスワードを見ることはありません。続けますか?",
|
|
601
960
|
"picker.working": "処理中",
|
|
@@ -603,7 +962,6 @@ const I18N = {
|
|
|
603
962
|
"picker.doneOff": "オフにしました。Claude Desktopを完全に終了してから開き直してください。",
|
|
604
963
|
"slots.title": "モデルマッピング",
|
|
605
964
|
"slots.subtitle": "アプリでClaudeのモデルを選んだとき、実際にどのモデルが応答するかを決めます。変更は自動で保存されます。",
|
|
606
|
-
"slots.pickerHelp": "オン:Claude Desktopのピッカーに、プロバイダーのモデルが実際の名前で表示されます。オフ:上のマッピングに従い、Claudeのモデル名でそれらのモデルが応答します。",
|
|
607
965
|
"slots.pickerModels": "ピッカーに表示するモデル",
|
|
608
966
|
"slots.pickerModelsHelp": "チェックしたモデルはClaude Desktopのピッカーに表示され、選ぶとそのモデルが直接応答します。新しく追加したモデルは次のセッションから選べます(実行中のセッションは開始時のリストのままです)。",
|
|
609
967
|
"slots.add": "+ マッピングを追加",
|
|
@@ -638,7 +996,6 @@ const I18N = {
|
|
|
638
996
|
"providers.search": "プロバイダーを検索…",
|
|
639
997
|
"providers.overview": "概要",
|
|
640
998
|
"providers.accounts": "アカウント",
|
|
641
|
-
"providers.settings": "設定",
|
|
642
999
|
"providers.modelsTab": "モデル",
|
|
643
1000
|
"providers.selectedModels": "選択中のモデル",
|
|
644
1001
|
"providers.modelsCountShort": "{count} 個のモデル",
|
|
@@ -654,20 +1011,15 @@ const I18N = {
|
|
|
654
1011
|
"providers.addClaudeAccount": "+ Claudeアカウントを追加",
|
|
655
1012
|
"providers.currentAccountHelp": "Claude CodeまたはClaude Desktopが現在使っている外部のログインです。ClaudeRippleからは削除できません。",
|
|
656
1013
|
"providers.addedAccountHelp": "ClaudeRippleがこのOAuthグラントをこのコンピューターに保存し、自動で更新します。",
|
|
657
|
-
"providers.reauthAction": "再ログイン",
|
|
1014
|
+
"providers.reauthAction": "再ログイン", "providers.preferBadge": "優先", "providers.preferAction": "優先にする", "providers.preferHelp": "新しい会話はいちばん上の優先アカウントから使います。上限に達すると次のアカウントに切り替わり、上限がリセットされると新しい会話から再び優先アカウントに戻ります。進行中の会話はキャッシュを保つため、使っていたアカウントのままです。",
|
|
658
1015
|
"providers.dangerZone": "追加したアカウントの管理",
|
|
659
|
-
"providers.saveSettings": "設定を保存",
|
|
660
1016
|
"providers.connection": "接続",
|
|
661
|
-
"providers.authentication": "認証",
|
|
662
1017
|
"providers.rotationRequired": "追加したアカウントがClaudeアプリとClaude Codeのリクエストに使われるのは、アカウントローテーションがオンのときだけです。",
|
|
663
1018
|
"providers.anthropic": "Claude (Anthropic)",
|
|
664
1019
|
"providers.anthropicHelp": "Claudeのサブスクリプションアカウントをローテーションしたり、CodexなどのOpenAI形式のツールにClaudeモデルを提供したりします。",
|
|
665
1020
|
"providers.anthropicIngressOnly": "アカウントローテーションがオフの場合、ここで選んだモデルはCodexなどのOpenAI形式のツールにのみ提供され、Claudeアプリのマッピングには表示されません。",
|
|
666
1021
|
"providers.anthropicPoolRouting": "アカウントローテーションがオンの場合、プロンプトキャッシュを保つため、ClaudeアプリとClaude Codeのリクエストは会話ごとに1つのアカウントで処理されます。応答が始まる前に429または認証拒否が返ると、リクエストは次のアカウントに移ります。複数のサブスクリプションの利用は、Anthropicの規約やアカウント制限の対象となる場合があります。正当な権限を持つ自分のアカウントだけを使ってください。",
|
|
667
|
-
"providers.anthropicLoginReuse": "ログインを再利用",
|
|
668
|
-
"providers.anthropicPoolOn": "アカウントローテーション",
|
|
669
1022
|
"providers.anthropicPool": "Claudeアカウントを自動でローテーション",
|
|
670
|
-
"providers.anthropicPoolHelp": "現在のClaudeのログインに加え、下の追加アカウントを使います。クォータ超過や認証エラーがない限り、会話は同じアカウントで続きます。",
|
|
671
1023
|
"providers.anthropicCurrent": "現在のログイン",
|
|
672
1024
|
"providers.anthropicReauth": "再ログイン",
|
|
673
1025
|
"providers.anthropicNoAccounts": "ClaudeRippleに追加されたアカウントはありません。",
|
|
@@ -682,12 +1034,10 @@ const I18N = {
|
|
|
682
1034
|
"providers.anthropicSourceClaudeCode": "ターミナルのClaudeログイン",
|
|
683
1035
|
"providers.anthropicSourceTokenFile": "ClaudeRippleのトークン",
|
|
684
1036
|
"providers.anthropicSourceMissing": "なし — 下から接続してください",
|
|
685
|
-
"providers.anthropicLogin": "+ Claudeアカウントを追加",
|
|
686
1037
|
"providers.anthropicOAuthTitle": "Claudeアカウントを追加",
|
|
687
1038
|
"providers.anthropicOAuthWarning": "サードパーティのプロキシ経由でClaudeサブスクリプションのOAuthを使うことは、Anthropicがサポートする連携方法ではなく、規約やアカウント制限の対象となる場合があります。自分のアカウントだけを、許可された目的にのみ使ってください。",
|
|
688
1039
|
"providers.anthropicOAuthAccept": "リスクを理解し、OAuthでの続行を希望します",
|
|
689
1040
|
"providers.anthropicOAuthContinue": "OAuthで続行",
|
|
690
|
-
"providers.anthropicLogout": "接続を解除",
|
|
691
1041
|
"providers.anthropicLoginDone": "Claudeサブスクリプションを接続しました",
|
|
692
1042
|
"providers.anthropicSignInBrowser": "ブラウザでClaudeにログインしてください。ウィンドウが開かない場合は、下のリンクを使ってください。",
|
|
693
1043
|
"providers.anthropicSignInLink": "ログインページを開く",
|
|
@@ -696,14 +1046,11 @@ const I18N = {
|
|
|
696
1046
|
"providers.anthropicSignInManual": "コードを貼り付けてやり直す",
|
|
697
1047
|
"providers.anthropicSignInWaiting": "ブラウザでの操作を待っています…(最大5分)",
|
|
698
1048
|
"providers.anthropicSignInFailed": "ログインに失敗しました",
|
|
699
|
-
"providers.anthropicSignedInActive": "ClaudeRippleのログインを使用中です。",
|
|
700
|
-
"providers.anthropicSignedInStandby": "ClaudeRippleのログインも保存されています。上のソースが使えなくなった場合は、こちらに切り替わります。",
|
|
701
1049
|
"providers.add": "+ プロバイダーを追加",
|
|
702
1050
|
"providers.refresh": "すべてテスト",
|
|
703
1051
|
"providers.check": "接続をテスト",
|
|
704
1052
|
"providers.checking": "確認中",
|
|
705
1053
|
"providers.empty": "接続済みのプロバイダーはまだありません。上のボタンから追加してください。",
|
|
706
|
-
"providers.modelsCount": "使用中のモデル {count} 個:{names}",
|
|
707
1054
|
"providers.noModels": "モデルが選ばれていません。「編集」から選んでください。",
|
|
708
1055
|
"providers.removeConfirm": "プロバイダー {name} を削除しますか?このプロバイダーを使うモデルマッピングも削除されます。",
|
|
709
1056
|
"providers.choose": "プロバイダーを追加",
|
|
@@ -713,7 +1060,6 @@ const I18N = {
|
|
|
713
1060
|
"providers.presetHelp": "APIキーを貼り付けるだけで完了です。",
|
|
714
1061
|
"providers.openaiGroup": "OpenAI互換",
|
|
715
1062
|
"providers.openaiGroupHelp": "ClaudeRippleがリクエストをOpenAI APIの形式に変換します。",
|
|
716
|
-
"providers.verified": "公式ドキュメントで確認済み",
|
|
717
1063
|
"providers.custom": "手動で入力",
|
|
718
1064
|
"providers.customName": "新しいプロバイダー",
|
|
719
1065
|
"providers.customHelp": "Anthropic互換・OpenAI互換のAPIなら、URLとキーで何でも接続できます。",
|
|
@@ -763,7 +1109,6 @@ const I18N = {
|
|
|
763
1109
|
"providers.authBorrow": "Codex CLIのログインを再利用(~/.codex/auth.json)",
|
|
764
1110
|
"providers.login": "ログイン方法",
|
|
765
1111
|
"providers.loginHelp": "メニューバーアプリの「ChatGPTにログイン…」か、ターミナルでclauderipple loginを実行すると、ブラウザでのログインが開きます。トークンはこのコンピューターから外に出ません。",
|
|
766
|
-
"providers.loginHint": "メニューバーアプリの「ChatGPTにログイン…」を使うか、ターミナルでclauderipple loginを実行してください。",
|
|
767
1112
|
"providers.chatgptLogin": "ChatGPTにログイン",
|
|
768
1113
|
"providers.chatgptLoginWaiting": "ブラウザでログインを完了してください。完了すると、ここに反映されます。",
|
|
769
1114
|
"providers.chatgptLoginDone": "ChatGPTへのログインが完了しました",
|
|
@@ -815,7 +1160,6 @@ const I18N = {
|
|
|
815
1160
|
"clients.codex.help": "Codexの設定(~/.codex/config.toml)にClaudeRippleをプロバイダーとして追加します。ターミナル:`codex --profile clauderipple -m <model>`、Codexアプリ:その設定でclauderippleをデフォルトのプロバイダーにします。",
|
|
816
1161
|
"clients.codex.note": "オンにすると、CodexのGPTリクエストもClaudeRippleを経由します。Codexは自身のログインを保ったまま、複数のChatGPTアカウントを追加していれば、1つが上限に達したときに次のアカウントが引き継ぎます。ログアウトは不要です。下の一覧は、Codexで使えるようになるClaudeモデルとAnthropic互換モデルです。",
|
|
817
1162
|
"clients.codex.turnOn": "CodexでClaudeRippleを使う",
|
|
818
|
-
"clients.codex.turnOff": "Codexとの接続を解除",
|
|
819
1163
|
"clients.claudeCode.title": "ターミナルのClaude Code",
|
|
820
1164
|
"clients.claudeCode.help": "ターミナルの`claude`も同じルーターを使います。`/model <name>`で選んでください。",
|
|
821
1165
|
"logs.title": "ログ",
|
|
@@ -827,7 +1171,6 @@ const I18N = {
|
|
|
827
1171
|
"logs.rawPolling": "3秒ごとに更新 · 最新200行",
|
|
828
1172
|
"logs.provider": "プロバイダー",
|
|
829
1173
|
"logs.all": "すべて",
|
|
830
|
-
"logs.showCountTokens": "トークン数を表示",
|
|
831
1174
|
"logs.empty": "リクエストはまだありません。",
|
|
832
1175
|
"logs.summary.requests": "リクエスト",
|
|
833
1176
|
"logs.summary.success": "成功 / 失敗",
|
|
@@ -862,23 +1205,10 @@ const I18N = {
|
|
|
862
1205
|
"picker.models": "ピッカーのモデル {count} 個:{names}",
|
|
863
1206
|
"picker.lastAt": "Claude Desktopが最後に一覧を取得した日時:{at}",
|
|
864
1207
|
"picker.never": "Claude Desktopはまだ一覧を取得していません。完全に終了してから開き直してください。",
|
|
865
|
-
"
|
|
866
|
-
"
|
|
867
|
-
"agentTitle.on": "オン",
|
|
868
|
-
"agentTitle.off": "オフ",
|
|
869
|
-
"agentTitle.turnOn": "オンにする",
|
|
870
|
-
"agentTitle.turnOff": "オフにする",
|
|
871
|
-
"statusMod.title": "ルート表示とリクエストログ",
|
|
872
|
-
"statusMod.help": "Claude Codeのプロンプトの上に、直前のリクエストの行き先(モデル、プロバイダー、キャッシュヒット率、時間)を表示します。Logボタンか/ripple-logで、リクエストログをサイドペインに開きます。×か/ripple-barで、この行を隠したり戻したりできます。また、Agent呼び出しで別のモデルが指定されてもワーカーは自分のモデルで動き、[[ripple: name@level]]マーカーはプロンプト内のどこにあっても読み取られます。Claude Codeのmodで動作し、今後開くセッションから適用されます。",
|
|
873
|
-
"statusMod.turnOn": "オンにする",
|
|
874
|
-
"statusMod.turnOff": "オフにする",
|
|
1208
|
+
"statusMod.title": "ClaudeRipple モッド",
|
|
1209
|
+
"statusMod.help": "Claude Code のプロンプトの上に ClaudeRipple バーを表示します。プロンプトごとに推論強度を決め、ripple:auto に渡したタスクには適したワーカーと強度を選び、必要ならプロンプトキャッシュを温かく保ちます。コンテキスト、キャッシュの残り時間、利用上限、直前のリクエストの行き先を表示し、Log でリクエストログを開きます。設定はバーの歯車か /ripple で変更します。このあと開いたセッションから適用されます。",
|
|
875
1210
|
"statusMod.saved": "保存しました。今後開くClaude Codeのセッションから適用されます。",
|
|
876
|
-
"workerTools.title": "ワーカーツール",
|
|
877
1211
|
"workerTools.help": "ClaudeRippleが生成するワーカーに、読み取り・編集・実行・検索・スキルのツールだけを渡します。セッションのMCPサーバーやプラグインのツールがワーカーのリクエストごとに含まれなくなり、入力が大きく減りますが、そのワーカーはブラウザやiOSシミュレーターを使えません。それらが必要なワーカーには、~/.claude/agentsに自分でエージェントファイルを用意してください。ClaudeRippleがそのファイルに触れることはありません。新しいセッションから適用されます。",
|
|
878
|
-
"workerTools.on": "オン",
|
|
879
|
-
"workerTools.off": "オフ(セッションのツールをすべて継承)",
|
|
880
|
-
"workerTools.turnOn": "ツールを制限",
|
|
881
|
-
"workerTools.turnOff": "制限を解除",
|
|
882
1212
|
"providers.probeNoCredits": "キーは有効ですが、このアカウントにクレジットがないため応答がありませんでした。プロバイダーのサイトでチャージしてください。",
|
|
883
1213
|
"providers.probeBadKey": "APIキーが拒否されました。キーを確認してください。",
|
|
884
1214
|
"providers.searchModels": "モデルを検索(名前またはID)",
|
|
@@ -918,6 +1248,150 @@ const I18N = {
|
|
|
918
1248
|
"providers.modelsFoundLive": "ChatGPTのカタログから {n} 個のモデルを取得しました。新しいモデルはチェックなしで追加されます。",
|
|
919
1249
|
"slots.saving": "保存中…",
|
|
920
1250
|
"slots.saved": "保存しました · すぐに反映されます",
|
|
1251
|
+
"common.close": "閉じる",
|
|
1252
|
+
"clients.claudeCode.extras": "Claude Code の追加機能",
|
|
1253
|
+
"workerTools.switch": "ワーカーツールを制限",
|
|
1254
|
+
"providers.remove": "プロバイダーを削除",
|
|
1255
|
+
"providers.subscriptionGroup": "アカウントとサブスクリプション",
|
|
1256
|
+
"providers.anthropicGroup": "Anthropic互換",
|
|
1257
|
+
"providers.usage": "使用量",
|
|
1258
|
+
"mod.effort": "推論強度",
|
|
1259
|
+
"mod.effortBlurb": "送信するプロンプトごとに、自動が推論強度を選ぶ方法。",
|
|
1260
|
+
"mod.auto": "自動",
|
|
1261
|
+
"mod.autoHint": "プロンプトごとに選択。自分で選ぶとオフ",
|
|
1262
|
+
"mod.lean": "選択傾向",
|
|
1263
|
+
"mod.leanHint": "判断が拮抗した場合のみ適用",
|
|
1264
|
+
"mod.cheaper": "安く",
|
|
1265
|
+
"mod.smarter": "賢く",
|
|
1266
|
+
"mod.floor": "下限",
|
|
1267
|
+
"mod.ceiling": "上限",
|
|
1268
|
+
"mod.floorWins": "下限より下: 下限が優先",
|
|
1269
|
+
"mod.effort.low": "低",
|
|
1270
|
+
"mod.effort.medium": "中",
|
|
1271
|
+
"mod.effort.high": "高",
|
|
1272
|
+
"mod.effort.xhigh": "超高",
|
|
1273
|
+
"mod.effort.max": "最大",
|
|
1274
|
+
"mod.off": "オフ",
|
|
1275
|
+
"mod.workers": "ワーカー",
|
|
1276
|
+
"mod.takesOver": "対象",
|
|
1277
|
+
"mod.allSpawns": "すべてのサブエージェント",
|
|
1278
|
+
"mod.unavailable": " (利用不可)",
|
|
1279
|
+
"mod.judge": "判定",
|
|
1280
|
+
"mod.judgeBlurb": "誰が決めるか: プロンプトは推論強度、タスクは分野と区分。",
|
|
1281
|
+
"mod.haiku": "Haiku",
|
|
1282
|
+
"mod.jev": "Jev",
|
|
1283
|
+
"mod.routerModel": "ルーターのモデル",
|
|
1284
|
+
"mod.haikuHint": "Claude のログインで Haiku 5.5 を使用 · 1 プロンプト約 1 秒",
|
|
1285
|
+
"mod.jevSource": "Jev の提供元",
|
|
1286
|
+
"mod.typesafe": "TypeSafe",
|
|
1287
|
+
"mod.zen": "OpenCode Zen",
|
|
1288
|
+
"mod.zenKey": "ClaudeRipple の OpenCode Zen キーを使用",
|
|
1289
|
+
"mod.zenMissing": "ClaudeRipple の設定に OpenCode Zen の認証キーがありません",
|
|
1290
|
+
"mod.noModels": "ルーターのモデルが一覧にありません",
|
|
1291
|
+
"mod.haikuFallback": "失敗時は Haiku を使用",
|
|
1292
|
+
"mod.model": "モデル",
|
|
1293
|
+
"mod.cache": "キャッシュ",
|
|
1294
|
+
"mod.cacheBlurb": "席を外している間、プロンプトキャッシュを保持します。",
|
|
1295
|
+
"mod.keepWarm": "キャッシュ保持",
|
|
1296
|
+
"mod.keepWarmHint": "期限切れ直前にキャッシュへ ping",
|
|
1297
|
+
"mod.for": "期間",
|
|
1298
|
+
"mod.afterReply": "最後の応答から",
|
|
1299
|
+
"mod.chatsFrom": "対象の会話",
|
|
1300
|
+
"mod.tokens": "トークン以上",
|
|
1301
|
+
"mod.warmCost": "ping のたびに会話全体をキャッシュから読み直します。入力料金の約 10 分の 1 で、プランの上限も同じ割合で使います。",
|
|
1302
|
+
"mod.hours": "{n}時間",
|
|
1303
|
+
"mod.handoff": "圧縮・引き継ぎ",
|
|
1304
|
+
"mod.handoffBlurb": "重くなった会話を圧縮するか、新しい会話に引き継ぐ方法。",
|
|
1305
|
+
"mod.compactWith": "圧縮方法",
|
|
1306
|
+
"mod.sessionCompactor": "セッション標準",
|
|
1307
|
+
"mod.afterHandoff": "引き継ぎ後",
|
|
1308
|
+
"mod.handoffButton": "引き継ぎボタン",
|
|
1309
|
+
"mod.whenAdvised": "推奨時",
|
|
1310
|
+
"mod.always": "常に",
|
|
1311
|
+
"mod.fullHandoff": "フル引き継ぎ",
|
|
1312
|
+
"mod.noSkill": "なし: 1 ターンで HANDOFF.md を書く",
|
|
1313
|
+
"mod.heavyAt": "使用率の目安",
|
|
1314
|
+
"mod.context": "コンテキスト",
|
|
1315
|
+
"mod.continue": "新しいセッションですぐ",
|
|
1316
|
+
"mod.confirm": "先に確認",
|
|
1317
|
+
"mod.copy": "コピーのみ",
|
|
1318
|
+
"mod.look": "表示",
|
|
1319
|
+
"mod.lookBlurb": "バーに何をどう表示するか。",
|
|
1320
|
+
"mod.layout": "レイアウト",
|
|
1321
|
+
"mod.dashboard": "ダッシュボード",
|
|
1322
|
+
"mod.minimal": "ミニマル",
|
|
1323
|
+
"mod.footerHint": "フッターに 1 行で",
|
|
1324
|
+
"mod.appearance": "テーマ",
|
|
1325
|
+
"mod.dark": "ダーク",
|
|
1326
|
+
"mod.lightAppearance": "ライト",
|
|
1327
|
+
"mod.language": "言語",
|
|
1328
|
+
"mod.show": "表示項目",
|
|
1329
|
+
"mod.part.timer": "キャッシュタイマー",
|
|
1330
|
+
"mod.part.context": "コンテキスト",
|
|
1331
|
+
"mod.part.route": "ログ",
|
|
1332
|
+
"mod.part.limits": "上限",
|
|
1333
|
+
"nav.mod": "ClaudeRipple モッド",
|
|
1334
|
+
"nav.modShort": "モッド",
|
|
1335
|
+
"mod.subtitle": "Claude Code の ClaudeRipple バーが推論強度を決め、タスクをワーカーに任せ、キャッシュを保ち、表示する方法です。変更はすぐに保存され、バーの ⚙ パネルにも同じ設定が表示されます。",
|
|
1336
|
+
"mod.saved": "保存しました",
|
|
1337
|
+
"mod.conflict": "設定が別の場所で変更されました。最新の設定を表示したので、もう一度変更してください。",
|
|
1338
|
+
"mod.offNotice": "モッドがオフのため、「{clients}」でオンにするまでこの設定は使われません。",
|
|
1339
|
+
"mod.openSettings": "ClaudeRipple モッドの設定",
|
|
1340
|
+
"mod.takesOverHelp": "大きな作業では、Claude はその一部をサブエージェント、つまり別に動く補助 AI に任せます。特に指定がなければ Claude Code に最初から入っている汎用サブエージェント(general-purpose)が担当し、今の会話と同じモデルで動くので、その分の使用量がかかります。",
|
|
1341
|
+
"mod.takesOverHelp2": "「ripple:auto」を選ぶと、Claude が ripple:auto に任せた作業だけ ClaudeRipple がモデルを選びます。「すべてのサブエージェント」を選ぶと、汎用サブエージェントに任せた作業も適したモデルと推論強度で動かします。モデルを指定した作業はそのままです。迷ったら「すべてのサブエージェント」を選んでください。",
|
|
1342
|
+
"mod.notUsable": "未ログインまたは上限到達",
|
|
1343
|
+
"mod.jevKeyNote": "TypeSafe のキーはここには保存しません。Claude Code のバーの ⚙ パネル、TYPESAFE_API_KEY、または ~/.config/jev/.env で設定してください。",
|
|
1344
|
+
"mod.zenAdd": "プロバイダーで jev モデルを含む OpenCode Zen を追加してください。",
|
|
1345
|
+
"mod.workersBlurb": "任せたタスクはワーカー、つまり ClaudeRipple 経由の別のモデルが担当します。メインのチャットは作業を渡すだけで、難易度(low・medium・high・max)は ClaudeRipple が判断し、そのワーカーに設定したモデルと推論強度で実行します。",
|
|
1346
|
+
"mod.models": "使うモデル",
|
|
1347
|
+
"mod.modelsHelp": "4 つのワーカーはチェックしたモデルだけを使います。モデルが未設定のワーカーは、チェックしたモデルから自動で埋めます。",
|
|
1348
|
+
"mod.fourWorkers": "4 つのワーカー",
|
|
1349
|
+
"mod.retired": "分野別の設定と自動(実験)はなくなりました。4 つのワーカーに整理しました。",
|
|
1350
|
+
"mod.rung.light": "Low ワーカー",
|
|
1351
|
+
"mod.rung.standard": "Medium ワーカー",
|
|
1352
|
+
"mod.rung.hard": "High ワーカー",
|
|
1353
|
+
"mod.rung.plan": "Max ワーカー",
|
|
1354
|
+
"mod.rungHint.light": "ファイル探し・単発の調べもの・ログの流し読み・機械的な修正",
|
|
1355
|
+
"mod.rungHint.standard": "仕様が決まった実装・リファクタリング・要約・下書き",
|
|
1356
|
+
"mod.rungHint.hard": "難しいデバッグ・複数ファイルの変更・独立したレビューと反論",
|
|
1357
|
+
"mod.rungHint.plan": "最良の結果:計画・設計・アーキテクチャ・意見",
|
|
1358
|
+
"mod.ladderHelp": "ワーカーのモデルが使えないとき(ログアウト・上限到達・チェック外し)は 1 つ上のワーカーのモデル、それも無理ならセッションのモデルが担当します。下には下がりません。",
|
|
1359
|
+
"mod.sessionModel": "セッションのモデルのまま",
|
|
1360
|
+
"mod.unavailableNow": "(今は使えません)",
|
|
1361
|
+
"mod.rungUnusable": "今は使えないため、1 つ上のワーカーが担当します",
|
|
1362
|
+
"mod.billing.free": "無料",
|
|
1363
|
+
"mod.billing.payg": "従量課金",
|
|
1364
|
+
"mod.billing.subscription": "サブスクリプション",
|
|
1365
|
+
"mod.optionsFailed": "エージェントとモデルの一覧を読み込めなかったため、保存済みの値だけを表示します。",
|
|
1366
|
+
"mod.modes": "モード",
|
|
1367
|
+
"mod.modeActive": "有効なモード",
|
|
1368
|
+
"mod.modeNone": "基本",
|
|
1369
|
+
"mod.modeOn": "オン",
|
|
1370
|
+
"mod.modeAdd": "+ 新しいモード",
|
|
1371
|
+
"mod.modeAddTitle": "新しいモード",
|
|
1372
|
+
"mod.modeName": "名前",
|
|
1373
|
+
"mod.modeNameHelp": "基本のワーカー一覧をコピーして開始します。名前は Claude Code のバーにも表示されます。",
|
|
1374
|
+
"mod.modeDelegation": "委任の強さ",
|
|
1375
|
+
"mod.modeNormal": "通常",
|
|
1376
|
+
"mod.modeEager": "積極的 — メイン会話は指揮のみ",
|
|
1377
|
+
"mod.modeUntil": "終了時点",
|
|
1378
|
+
"mod.modeUntilNone": "オフにするまで",
|
|
1379
|
+
"mod.modeUntilTime": "時刻指定",
|
|
1380
|
+
"mod.modeUntilResetChoice": "上限リセット時",
|
|
1381
|
+
"mod.modeUntilResetOf": "{provider} の上限リセット時",
|
|
1382
|
+
"mod.modeResetProvider": "上限リセットの基準プロバイダー",
|
|
1383
|
+
"mod.modeResetHelp": "モードをオンにした後、{provider} の上限が最初にリセットされた時に終了します。",
|
|
1384
|
+
"mod.modeResetUnknown": "リセット時刻が分かるプロバイダー(ChatGPT・Claude)がありません。",
|
|
1385
|
+
"mod.modeTurnOn": "このモードをオン",
|
|
1386
|
+
"mod.modeTurnOff": "このモードをオフ",
|
|
1387
|
+
"mod.modeUseBase": "基本に戻す",
|
|
1388
|
+
"mod.modeMoveUp": "上へ",
|
|
1389
|
+
"mod.modeMoveDown": "下へ",
|
|
1390
|
+
"mod.modeAddModel": "+ モデル追加",
|
|
1391
|
+
"mod.modeOrderHelp": "上から使えるモデルを選びます。全て使えなければ一段上のワーカー、次にセッションモデルを使います。",
|
|
1392
|
+
"mod.modeNameRequired": "モードの名前を入力してください。",
|
|
1393
|
+
"mod.modeTimePast": "終わる時刻は今より後にしてください。",
|
|
1394
|
+
"mod.modeRemoveConfirm": "モード「{name}」を削除しますか?",
|
|
921
1395
|
},
|
|
922
1396
|
es: {
|
|
923
1397
|
"brand": "ClaudeRipple",
|
|
@@ -955,8 +1429,6 @@ const I18N = {
|
|
|
955
1429
|
"health.providers": "Proveedores",
|
|
956
1430
|
"health.noProviders": "No hay proveedores conectados. Añade uno en Proveedores.",
|
|
957
1431
|
"health.quota": "{percent}% usado{reset}",
|
|
958
|
-
"health.resetsIn": " · se restablece en {hours} h",
|
|
959
|
-
"health.details": "Detalles",
|
|
960
1432
|
"health.version": "Versión",
|
|
961
1433
|
"health.runtime": "Archivos del router · iniciado",
|
|
962
1434
|
"health.routes": "Asignaciones",
|
|
@@ -973,13 +1445,6 @@ const I18N = {
|
|
|
973
1445
|
"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.",
|
|
974
1446
|
"update.failed": "No se pudo iniciar la actualización.",
|
|
975
1447
|
"picker.title": "Selector de modelos",
|
|
976
|
-
"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.",
|
|
977
|
-
"picker.state": "Estado",
|
|
978
|
-
"picker.on": "Activado",
|
|
979
|
-
"picker.off": "Desactivado",
|
|
980
|
-
"picker.turnOn": "Activar el selector",
|
|
981
|
-
"picker.turnOff": "Desactivar el selector",
|
|
982
|
-
"picker.last": "La última vez mostró {count} modelos.",
|
|
983
1448
|
"picker.restartHelp": "Después de activarlo, cierra Claude Desktop por completo y vuelve a abrirlo.",
|
|
984
1449
|
"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?",
|
|
985
1450
|
"picker.working": "Procesando.",
|
|
@@ -987,7 +1452,6 @@ const I18N = {
|
|
|
987
1452
|
"picker.doneOff": "Desactivado. Cierra Claude Desktop por completo y vuelve a abrirlo.",
|
|
988
1453
|
"slots.title": "Asignación de modelos",
|
|
989
1454
|
"slots.subtitle": "Decide qué modelo responde realmente cuando eliges un modelo de Claude en la app. Los cambios se guardan automáticamente.",
|
|
990
|
-
"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.",
|
|
991
1455
|
"slots.pickerModels": "Modelos que se muestran en el selector",
|
|
992
1456
|
"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ó).",
|
|
993
1457
|
"slots.add": "+ Añadir asignación",
|
|
@@ -1022,7 +1486,6 @@ const I18N = {
|
|
|
1022
1486
|
"providers.search": "Buscar proveedores…",
|
|
1023
1487
|
"providers.overview": "Resumen",
|
|
1024
1488
|
"providers.accounts": "Cuentas",
|
|
1025
|
-
"providers.settings": "Configuración",
|
|
1026
1489
|
"providers.modelsTab": "Modelos",
|
|
1027
1490
|
"providers.selectedModels": "Modelos seleccionados",
|
|
1028
1491
|
"providers.modelsCountShort": "{count} modelos",
|
|
@@ -1038,20 +1501,15 @@ const I18N = {
|
|
|
1038
1501
|
"providers.addClaudeAccount": "+ Añadir cuenta de Claude",
|
|
1039
1502
|
"providers.currentAccountHelp": "El inicio de sesión externo que usan ahora Claude Code o Claude Desktop. ClaudeRipple no puede quitarlo.",
|
|
1040
1503
|
"providers.addedAccountHelp": "ClaudeRipple guarda esta autorización OAuth en este equipo y la renueva automáticamente.",
|
|
1041
|
-
"providers.reauthAction": "Volver a iniciar sesión",
|
|
1504
|
+
"providers.reauthAction": "Volver a iniciar sesión", "providers.preferBadge": "Primera", "providers.preferAction": "Usar primero", "providers.preferHelp": "Las conversaciones nuevas empiezan en la cuenta de arriba. Cuando llega a su límite pasan a la siguiente y, cuando el límite se restablece, las nuevas vuelven a ella. Una conversación en curso se queda en su cuenta para conservar la caché.",
|
|
1042
1505
|
"providers.dangerZone": "Gestión de cuentas añadidas",
|
|
1043
|
-
"providers.saveSettings": "Guardar configuración",
|
|
1044
1506
|
"providers.connection": "Conexión",
|
|
1045
|
-
"providers.authentication": "Autenticación",
|
|
1046
1507
|
"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.",
|
|
1047
1508
|
"providers.anthropic": "Claude (Anthropic)",
|
|
1048
1509
|
"providers.anthropicHelp": "Rota cuentas de suscripción de Claude o sirve modelos de Claude a herramientas de estilo OpenAI, como Codex.",
|
|
1049
1510
|
"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.",
|
|
1050
1511
|
"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.",
|
|
1051
|
-
"providers.anthropicLoginReuse": "Reutilizar inicio de sesión",
|
|
1052
|
-
"providers.anthropicPoolOn": "Rotación de cuentas",
|
|
1053
1512
|
"providers.anthropicPool": "Rotar cuentas de Claude automáticamente",
|
|
1054
|
-
"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.",
|
|
1055
1513
|
"providers.anthropicCurrent": "Sesión actual",
|
|
1056
1514
|
"providers.anthropicReauth": "Volver a iniciar sesión",
|
|
1057
1515
|
"providers.anthropicNoAccounts": "No se ha añadido ninguna cuenta a ClaudeRipple.",
|
|
@@ -1066,12 +1524,10 @@ const I18N = {
|
|
|
1066
1524
|
"providers.anthropicSourceClaudeCode": "Inicio de sesión de Claude en la terminal",
|
|
1067
1525
|
"providers.anthropicSourceTokenFile": "Token de ClaudeRipple",
|
|
1068
1526
|
"providers.anthropicSourceMissing": "Ninguno — conéctate abajo",
|
|
1069
|
-
"providers.anthropicLogin": "+ Añadir cuenta de Claude",
|
|
1070
1527
|
"providers.anthropicOAuthTitle": "Añadir cuenta de Claude",
|
|
1071
1528
|
"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.",
|
|
1072
1529
|
"providers.anthropicOAuthAccept": "Entiendo el riesgo y quiero continuar con OAuth.",
|
|
1073
1530
|
"providers.anthropicOAuthContinue": "Continuar con OAuth",
|
|
1074
|
-
"providers.anthropicLogout": "Desconectar",
|
|
1075
1531
|
"providers.anthropicLoginDone": "Suscripción de Claude conectada.",
|
|
1076
1532
|
"providers.anthropicSignInBrowser": "Inicia sesión en Claude en tu navegador. Si no se abrió ninguna ventana, usa el enlace de abajo.",
|
|
1077
1533
|
"providers.anthropicSignInLink": "Abrir la página de inicio de sesión",
|
|
@@ -1080,14 +1536,11 @@ const I18N = {
|
|
|
1080
1536
|
"providers.anthropicSignInManual": "Reintentar pegando un código",
|
|
1081
1537
|
"providers.anthropicSignInWaiting": "Esperando al navegador… (hasta 5 minutos)",
|
|
1082
1538
|
"providers.anthropicSignInFailed": "No se pudo iniciar sesión",
|
|
1083
|
-
"providers.anthropicSignedInActive": "Se está usando el inicio de sesión de ClaudeRipple.",
|
|
1084
|
-
"providers.anthropicSignedInStandby": "También hay guardado un inicio de sesión de ClaudeRipple, que toma el relevo si la fuente de arriba desaparece.",
|
|
1085
1539
|
"providers.add": "+ Añadir proveedor",
|
|
1086
1540
|
"providers.refresh": "Probar todos",
|
|
1087
1541
|
"providers.check": "Probar conexión",
|
|
1088
1542
|
"providers.checking": "Comprobando",
|
|
1089
1543
|
"providers.empty": "Aún no hay proveedores conectados. Añade uno con el botón de arriba.",
|
|
1090
|
-
"providers.modelsCount": "{count} modelos en uso: {names}",
|
|
1091
1544
|
"providers.noModels": "No hay modelos elegidos. Elige algunos en Editar.",
|
|
1092
1545
|
"providers.removeConfirm": "¿Quitar el proveedor {name}? También se quitan las asignaciones de modelos que lo usan.",
|
|
1093
1546
|
"providers.choose": "Añadir proveedor",
|
|
@@ -1097,7 +1550,6 @@ const I18N = {
|
|
|
1097
1550
|
"providers.presetHelp": "Pega una clave de API y listo.",
|
|
1098
1551
|
"providers.openaiGroup": "Compatible con OpenAI",
|
|
1099
1552
|
"providers.openaiGroupHelp": "ClaudeRipple traduce las solicitudes al formato de la API de OpenAI.",
|
|
1100
|
-
"providers.verified": "Verificado con la documentación oficial",
|
|
1101
1553
|
"providers.custom": "Introducir manualmente",
|
|
1102
1554
|
"providers.customName": "Proveedor nuevo",
|
|
1103
1555
|
"providers.customHelp": "Conecta cualquier API compatible con Anthropic u OpenAI mediante URL y clave.",
|
|
@@ -1147,7 +1599,6 @@ const I18N = {
|
|
|
1147
1599
|
"providers.authBorrow": "Reutilizar la sesión de Codex CLI (~/.codex/auth.json)",
|
|
1148
1600
|
"providers.login": "Cómo iniciar sesión",
|
|
1149
1601
|
"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.",
|
|
1150
|
-
"providers.loginHint": "Usa 'Iniciar sesión en ChatGPT…' en la app de la barra de menús o ejecuta clauderipple login en una terminal.",
|
|
1151
1602
|
"providers.chatgptLogin": "Iniciar sesión en ChatGPT",
|
|
1152
1603
|
"providers.chatgptLoginWaiting": "Termina de iniciar sesión en tu navegador. Esto se actualizará cuando acabes.",
|
|
1153
1604
|
"providers.chatgptLoginDone": "Inicio de sesión en ChatGPT completado.",
|
|
@@ -1199,7 +1650,6 @@ const I18N = {
|
|
|
1199
1650
|
"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.",
|
|
1200
1651
|
"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.",
|
|
1201
1652
|
"clients.codex.turnOn": "Usar ClaudeRipple en Codex",
|
|
1202
|
-
"clients.codex.turnOff": "Desconectar Codex",
|
|
1203
1653
|
"clients.claudeCode.title": "Claude Code en la terminal",
|
|
1204
1654
|
"clients.claudeCode.help": "`claude` en la terminal usa el mismo router. Elige el modelo con `/model <name>`.",
|
|
1205
1655
|
"logs.title": "Registros",
|
|
@@ -1211,7 +1661,6 @@ const I18N = {
|
|
|
1211
1661
|
"logs.rawPolling": "Se actualiza cada 3 s · últimas 200 líneas",
|
|
1212
1662
|
"logs.provider": "Proveedor",
|
|
1213
1663
|
"logs.all": "Todos",
|
|
1214
|
-
"logs.showCountTokens": "Mostrar número de tokens",
|
|
1215
1664
|
"logs.empty": "Aún no hay solicitudes.",
|
|
1216
1665
|
"logs.summary.requests": "Solicitudes",
|
|
1217
1666
|
"logs.summary.success": "Correctas / fallidas",
|
|
@@ -1246,23 +1695,10 @@ const I18N = {
|
|
|
1246
1695
|
"picker.models": "{count} modelos en el selector: {names}",
|
|
1247
1696
|
"picker.lastAt": "Claude Desktop obtuvo la lista por última vez el {at}",
|
|
1248
1697
|
"picker.never": "Claude Desktop aún no ha obtenido la lista. Ciérralo por completo y vuelve a abrirlo.",
|
|
1249
|
-
"
|
|
1250
|
-
"
|
|
1251
|
-
"agentTitle.on": "Activado",
|
|
1252
|
-
"agentTitle.off": "Desactivado",
|
|
1253
|
-
"agentTitle.turnOn": "Activar",
|
|
1254
|
-
"agentTitle.turnOff": "Desactivar",
|
|
1255
|
-
"statusMod.title": "Línea de ruta y registro de solicitudes",
|
|
1256
|
-
"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.",
|
|
1257
|
-
"statusMod.turnOn": "Activar",
|
|
1258
|
-
"statusMod.turnOff": "Desactivar",
|
|
1698
|
+
"statusMod.title": "Mod de ClaudeRipple",
|
|
1699
|
+
"statusMod.help": "Añade la barra de ClaudeRipple sobre el prompt de Claude Code. Elige el esfuerzo de razonamiento de cada prompt, elige el worker y el esfuerzo para las tareas enviadas a ripple:auto y puede mantener caliente la caché del prompt. Muestra el contexto, el tiempo de caché restante, los límites del plan y adónde fue la última solicitud; Log abre el registro de solicitudes. Se cambia desde el engranaje de la barra o con /ripple. Se aplica a las sesiones que abras después.",
|
|
1259
1700
|
"statusMod.saved": "Guardado. Se aplica a las sesiones de Claude Code que se abran a partir de ahora.",
|
|
1260
|
-
"workerTools.title": "Herramientas de los workers",
|
|
1261
1701
|
"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.",
|
|
1262
|
-
"workerTools.on": "Activado",
|
|
1263
|
-
"workerTools.off": "Desactivado (hereda todas las herramientas de la sesión)",
|
|
1264
|
-
"workerTools.turnOn": "Limitar herramientas",
|
|
1265
|
-
"workerTools.turnOff": "Dejar de limitar",
|
|
1266
1702
|
"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.",
|
|
1267
1703
|
"providers.probeBadKey": "La clave de API fue rechazada. Revisa la clave.",
|
|
1268
1704
|
"providers.searchModels": "Buscar modelos (nombre o ID)",
|
|
@@ -1302,6 +1738,150 @@ const I18N = {
|
|
|
1302
1738
|
"providers.modelsFoundLive": "Se obtuvieron {n} modelos del catálogo de ChatGPT. Los nuevos se añaden sin marcar.",
|
|
1303
1739
|
"slots.saving": "Guardando…",
|
|
1304
1740
|
"slots.saved": "Guardado · se aplica de inmediato",
|
|
1741
|
+
"common.close": "Cerrar",
|
|
1742
|
+
"clients.claudeCode.extras": "Extras de Claude Code",
|
|
1743
|
+
"workerTools.switch": "Limitar las herramientas de los workers",
|
|
1744
|
+
"providers.remove": "Eliminar proveedor",
|
|
1745
|
+
"providers.subscriptionGroup": "Cuentas y suscripciones",
|
|
1746
|
+
"providers.anthropicGroup": "Compatible con Anthropic",
|
|
1747
|
+
"providers.usage": "Uso",
|
|
1748
|
+
"mod.effort": "Esfuerzo",
|
|
1749
|
+
"mod.effortBlurb": "Cómo Auto elige el esfuerzo de cada prompt que envías.",
|
|
1750
|
+
"mod.auto": "Auto",
|
|
1751
|
+
"mod.autoHint": "elige en cada prompt; si eliges tú, se desactiva",
|
|
1752
|
+
"mod.lean": "Preferencia",
|
|
1753
|
+
"mod.leanHint": "solo desempata los casos dudosos",
|
|
1754
|
+
"mod.cheaper": "Más barato",
|
|
1755
|
+
"mod.smarter": "Más inteligente",
|
|
1756
|
+
"mod.floor": "Nunca menos de",
|
|
1757
|
+
"mod.ceiling": "Nunca más de",
|
|
1758
|
+
"mod.floorWins": "por debajo del mínimo: gana el mínimo",
|
|
1759
|
+
"mod.effort.low": "Bajo",
|
|
1760
|
+
"mod.effort.medium": "Medio",
|
|
1761
|
+
"mod.effort.high": "Alto",
|
|
1762
|
+
"mod.effort.xhigh": "Muy alto",
|
|
1763
|
+
"mod.effort.max": "Máximo",
|
|
1764
|
+
"mod.off": "Desactivado",
|
|
1765
|
+
"mod.workers": "Workers",
|
|
1766
|
+
"mod.takesOver": "Se encarga de",
|
|
1767
|
+
"mod.allSpawns": "Todos los subagentes",
|
|
1768
|
+
"mod.unavailable": " (no disponible)",
|
|
1769
|
+
"mod.judge": "Juez",
|
|
1770
|
+
"mod.judgeBlurb": "Quién decide: el esfuerzo de los prompts y el ámbito y nivel de las tareas.",
|
|
1771
|
+
"mod.haiku": "Haiku",
|
|
1772
|
+
"mod.jev": "Jev",
|
|
1773
|
+
"mod.routerModel": "Modelo del router",
|
|
1774
|
+
"mod.haikuHint": "Haiku 5.5 con tu sesión de Claude · alrededor de un segundo por prompt",
|
|
1775
|
+
"mod.jevSource": "Origen de Jev",
|
|
1776
|
+
"mod.typesafe": "TypeSafe",
|
|
1777
|
+
"mod.zen": "OpenCode Zen",
|
|
1778
|
+
"mod.zenKey": "usa tu clave de OpenCode Zen de ClaudeRipple",
|
|
1779
|
+
"mod.zenMissing": "No hay clave de autorización de OpenCode Zen en la configuración de ClaudeRipple",
|
|
1780
|
+
"mod.noModels": "no hay modelos del router",
|
|
1781
|
+
"mod.haikuFallback": "recurre a Haiku si falla",
|
|
1782
|
+
"mod.model": "Modelo",
|
|
1783
|
+
"mod.cache": "Caché",
|
|
1784
|
+
"mod.cacheBlurb": "Mantiene caliente la caché del prompt mientras no estás.",
|
|
1785
|
+
"mod.keepWarm": "Mantener caché",
|
|
1786
|
+
"mod.keepWarmHint": "hace ping a la caché justo antes de que caduque",
|
|
1787
|
+
"mod.for": "Durante",
|
|
1788
|
+
"mod.afterReply": "tras la última respuesta",
|
|
1789
|
+
"mod.chatsFrom": "A partir de",
|
|
1790
|
+
"mod.tokens": "tokens",
|
|
1791
|
+
"mod.warmCost": "Cada ping vuelve a leer toda la conversación desde la caché: alrededor de una décima parte de su precio de entrada, y la misma proporción de los límites del plan.",
|
|
1792
|
+
"mod.hours": "{n} h",
|
|
1793
|
+
"mod.handoff": "Compactar y traspasar",
|
|
1794
|
+
"mod.handoffBlurb": "Cómo se compacta una conversación pesada o se traspasa a una nueva.",
|
|
1795
|
+
"mod.compactWith": "Compactar con",
|
|
1796
|
+
"mod.sessionCompactor": "El de la sesión",
|
|
1797
|
+
"mod.afterHandoff": "Tras traspasar",
|
|
1798
|
+
"mod.handoffButton": "Botón Traspaso",
|
|
1799
|
+
"mod.whenAdvised": "Si se recomienda",
|
|
1800
|
+
"mod.always": "Siempre",
|
|
1801
|
+
"mod.fullHandoff": "Modo completo",
|
|
1802
|
+
"mod.noSkill": "Ninguna: un turno escribe HANDOFF.md",
|
|
1803
|
+
"mod.heavyAt": "Umbral de uso",
|
|
1804
|
+
"mod.context": "contexto",
|
|
1805
|
+
"mod.continue": "Sesión nueva ya",
|
|
1806
|
+
"mod.confirm": "Preguntar antes",
|
|
1807
|
+
"mod.copy": "Solo copiar",
|
|
1808
|
+
"mod.look": "Vista",
|
|
1809
|
+
"mod.lookBlurb": "Qué muestra la barra y cómo.",
|
|
1810
|
+
"mod.layout": "Disposición",
|
|
1811
|
+
"mod.dashboard": "Panel",
|
|
1812
|
+
"mod.minimal": "Mínimo",
|
|
1813
|
+
"mod.footerHint": "una línea en el pie",
|
|
1814
|
+
"mod.appearance": "Apariencia",
|
|
1815
|
+
"mod.dark": "Oscuro",
|
|
1816
|
+
"mod.lightAppearance": "Claro",
|
|
1817
|
+
"mod.language": "Idioma",
|
|
1818
|
+
"mod.show": "Mostrar",
|
|
1819
|
+
"mod.part.timer": "Temporizador de caché",
|
|
1820
|
+
"mod.part.context": "Contexto",
|
|
1821
|
+
"mod.part.route": "Registro",
|
|
1822
|
+
"mod.part.limits": "Límites",
|
|
1823
|
+
"nav.mod": "Mod de ClaudeRipple",
|
|
1824
|
+
"nav.modShort": "Mod",
|
|
1825
|
+
"mod.subtitle": "Cómo la barra de ClaudeRipple en Claude Code fija el esfuerzo, reparte tareas entre workers, mantiene la caché y se ve. Los cambios se guardan al hacerlos; el panel ⚙ de la barra muestra los mismos ajustes.",
|
|
1826
|
+
"mod.saved": "Guardado",
|
|
1827
|
+
"mod.conflict": "Estos ajustes cambiaron en otro lugar. Se muestran los más recientes; vuelve a hacer tu cambio.",
|
|
1828
|
+
"mod.offNotice": "El mod está apagado; estos ajustes se usarán cuando lo actives en {clients}.",
|
|
1829
|
+
"mod.openSettings": "Ajustes del mod de ClaudeRipple",
|
|
1830
|
+
"mod.takesOverHelp": "Cuando un trabajo es grande, Claude reparte partes entre subagentes: IA auxiliares que trabajan por su cuenta. Si no se indica otra cosa, usa el subagente general-purpose que trae Claude Code, que corre en el mismo modelo que tu chat y consume tu plan igual.",
|
|
1831
|
+
"mod.takesOverHelp2": "Con «ripple:auto», ClaudeRipple elige el modelo solo para las tareas que Claude envía a ripple:auto. Con «Todos los subagentes», las tareas del subagente general-purpose también corren en un modelo y esfuerzo adecuados. Las tareas que indican un modelo no se tocan. Si dudas, elige «Todos los subagentes».",
|
|
1832
|
+
"mod.notUsable": "Sin sesión o sin cuota",
|
|
1833
|
+
"mod.jevKeyNote": "La clave de TypeSafe no se guarda aquí. Configúrala en el panel ⚙ de la barra en Claude Code, con TYPESAFE_API_KEY o en ~/.config/jev/.env.",
|
|
1834
|
+
"mod.zenAdd": "Agrega OpenCode Zen con un modelo jev en Proveedores.",
|
|
1835
|
+
"mod.workersBlurb": "Las tareas que delegas las hacen workers: otros modelos a través de ClaudeRipple. El chat principal solo entrega el trabajo; ClaudeRipple juzga la dificultad (low, medium, high o max) y lo corre con el modelo y el esfuerzo fijados para ese worker.",
|
|
1836
|
+
"mod.models": "Modelos que usar",
|
|
1837
|
+
"mod.modelsHelp": "Los cuatro workers solo usan los modelos marcados. Un worker sin modelo se rellena con los marcados.",
|
|
1838
|
+
"mod.fourWorkers": "Los cuatro workers",
|
|
1839
|
+
"mod.retired": "Los ajustes por campo y Auto (experimental) ya no existen. Ahora son cuatro workers.",
|
|
1840
|
+
"mod.rung.light": "Low worker",
|
|
1841
|
+
"mod.rung.standard": "Medium worker",
|
|
1842
|
+
"mod.rung.hard": "High worker",
|
|
1843
|
+
"mod.rung.plan": "Max worker",
|
|
1844
|
+
"mod.rungHint.light": "Buscar archivos, consultas puntuales, revisar registros, ediciones mecánicas",
|
|
1845
|
+
"mod.rungHint.standard": "Implementación especificada, refactorizaciones, resúmenes, borradores",
|
|
1846
|
+
"mod.rungHint.hard": "Depuración difícil, cambios en varios archivos, revisión y refutación independientes",
|
|
1847
|
+
"mod.rungHint.plan": "El mejor resultado posible: planificación, diseño, arquitectura, opiniones",
|
|
1848
|
+
"mod.ladderHelp": "Si el modelo de un worker no puede ejecutarse (sin sesión, sin cuota, sin marcar), entra el del worker de arriba y luego el modelo de la sesión; nunca uno de abajo.",
|
|
1849
|
+
"mod.sessionModel": "El modelo de la sesión",
|
|
1850
|
+
"mod.unavailableNow": " (no disponible ahora)",
|
|
1851
|
+
"mod.rungUnusable": "No disponible ahora: lo cubre el worker de arriba",
|
|
1852
|
+
"mod.billing.free": "Gratis",
|
|
1853
|
+
"mod.billing.payg": "Pago por uso",
|
|
1854
|
+
"mod.billing.subscription": "Suscripción",
|
|
1855
|
+
"mod.optionsFailed": "No se pudieron cargar las listas de agentes y modelos; los menús muestran solo lo guardado.",
|
|
1856
|
+
"mod.modes": "Modos",
|
|
1857
|
+
"mod.modeActive": "Modo activo",
|
|
1858
|
+
"mod.modeNone": "Base",
|
|
1859
|
+
"mod.modeOn": "Activo",
|
|
1860
|
+
"mod.modeAdd": "+ Nuevo modo",
|
|
1861
|
+
"mod.modeAddTitle": "Nuevo modo",
|
|
1862
|
+
"mod.modeName": "Nombre",
|
|
1863
|
+
"mod.modeNameHelp": "Empieza con una copia de los workers base. El nombre aparece en la barra de Claude Code.",
|
|
1864
|
+
"mod.modeDelegation": "Delegación",
|
|
1865
|
+
"mod.modeNormal": "Normal",
|
|
1866
|
+
"mod.modeEager": "Activa — el chat principal solo dirige",
|
|
1867
|
+
"mod.modeUntil": "Fin",
|
|
1868
|
+
"mod.modeUntilNone": "Hasta apagarlo",
|
|
1869
|
+
"mod.modeUntilTime": "A una hora",
|
|
1870
|
+
"mod.modeUntilResetChoice": "Al renovar la cuota",
|
|
1871
|
+
"mod.modeUntilResetOf": "Al renovar la cuota de {provider}",
|
|
1872
|
+
"mod.modeResetProvider": "Proveedor de la renovación",
|
|
1873
|
+
"mod.modeResetHelp": "Termina en la primera renovación de la cuota de {provider} tras activar el modo.",
|
|
1874
|
+
"mod.modeResetUnknown": "Ningún proveedor (ChatGPT, Claude) tiene una hora de renovación conocida.",
|
|
1875
|
+
"mod.modeTurnOn": "Activar este modo",
|
|
1876
|
+
"mod.modeTurnOff": "Desactivar este modo",
|
|
1877
|
+
"mod.modeUseBase": "Volver a base",
|
|
1878
|
+
"mod.modeMoveUp": "Subir prioridad",
|
|
1879
|
+
"mod.modeMoveDown": "Bajar prioridad",
|
|
1880
|
+
"mod.modeAddModel": "+ Añadir modelo",
|
|
1881
|
+
"mod.modeOrderHelp": "Usa el primer modelo disponible en orden. Si falla toda la lista, prueba un nivel superior y luego el modelo de la sesión.",
|
|
1882
|
+
"mod.modeNameRequired": "Escribe un nombre para el modo.",
|
|
1883
|
+
"mod.modeTimePast": "La hora de fin debe ser posterior a ahora.",
|
|
1884
|
+
"mod.modeRemoveConfirm": "¿Eliminar el modo «{name}»?",
|
|
1305
1885
|
},
|
|
1306
1886
|
pt: {
|
|
1307
1887
|
"brand": "ClaudeRipple",
|
|
@@ -1339,8 +1919,6 @@ const I18N = {
|
|
|
1339
1919
|
"health.providers": "Provedores",
|
|
1340
1920
|
"health.noProviders": "Nenhum provedor conectado. Adicione um em Provedores.",
|
|
1341
1921
|
"health.quota": "{percent}% usado{reset}",
|
|
1342
|
-
"health.resetsIn": " · renova em {hours}h",
|
|
1343
|
-
"health.details": "Detalhes",
|
|
1344
1922
|
"health.version": "Versão",
|
|
1345
1923
|
"health.runtime": "Arquivos do roteador · iniciado",
|
|
1346
1924
|
"health.routes": "Mapeamentos",
|
|
@@ -1357,13 +1935,6 @@ const I18N = {
|
|
|
1357
1935
|
"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.",
|
|
1358
1936
|
"update.failed": "Não foi possível iniciar a atualização.",
|
|
1359
1937
|
"picker.title": "Seletor de modelos",
|
|
1360
|
-
"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.",
|
|
1361
|
-
"picker.state": "Estado",
|
|
1362
|
-
"picker.on": "Ativado",
|
|
1363
|
-
"picker.off": "Desativado",
|
|
1364
|
-
"picker.turnOn": "Ativar seletor",
|
|
1365
|
-
"picker.turnOff": "Desativar seletor",
|
|
1366
|
-
"picker.last": "Na última vez, mostrou {count} modelos.",
|
|
1367
1938
|
"picker.restartHelp": "Depois de ativar, encerre o Claude Desktop por completo e abra-o de novo.",
|
|
1368
1939
|
"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?",
|
|
1369
1940
|
"picker.working": "Processando.",
|
|
@@ -1371,7 +1942,6 @@ const I18N = {
|
|
|
1371
1942
|
"picker.doneOff": "Desativado. Encerre o Claude Desktop por completo e abra-o de novo.",
|
|
1372
1943
|
"slots.title": "Mapeamento de modelos",
|
|
1373
1944
|
"slots.subtitle": "Defina qual modelo responde de fato quando você escolhe um modelo Claude no app. As alterações são salvas automaticamente.",
|
|
1374
|
-
"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.",
|
|
1375
1945
|
"slots.pickerModels": "Modelos a exibir no seletor",
|
|
1376
1946
|
"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).",
|
|
1377
1947
|
"slots.add": "+ Adicionar mapeamento",
|
|
@@ -1406,7 +1976,6 @@ const I18N = {
|
|
|
1406
1976
|
"providers.search": "Buscar provedores…",
|
|
1407
1977
|
"providers.overview": "Visão geral",
|
|
1408
1978
|
"providers.accounts": "Contas",
|
|
1409
|
-
"providers.settings": "Configurações",
|
|
1410
1979
|
"providers.modelsTab": "Modelos",
|
|
1411
1980
|
"providers.selectedModels": "Modelos selecionados",
|
|
1412
1981
|
"providers.modelsCountShort": "{count} modelos",
|
|
@@ -1422,20 +1991,15 @@ const I18N = {
|
|
|
1422
1991
|
"providers.addClaudeAccount": "+ Adicionar conta do Claude",
|
|
1423
1992
|
"providers.currentAccountHelp": "O login externo usado no momento pelo Claude Code ou pelo Claude Desktop. O ClaudeRipple não pode removê-lo.",
|
|
1424
1993
|
"providers.addedAccountHelp": "O ClaudeRipple guarda esta autorização OAuth neste computador e a renova automaticamente.",
|
|
1425
|
-
"providers.reauthAction": "Entrar novamente",
|
|
1994
|
+
"providers.reauthAction": "Entrar novamente", "providers.preferBadge": "Primeira", "providers.preferAction": "Usar primeiro", "providers.preferHelp": "Conversas novas começam na conta do topo. Quando ela atinge o limite, passam para a próxima e, quando o limite é redefinido, as novas voltam para ela. Uma conversa em andamento fica na conta em que está para manter o cache.",
|
|
1426
1995
|
"providers.dangerZone": "Gerenciar contas adicionadas",
|
|
1427
|
-
"providers.saveSettings": "Salvar configurações",
|
|
1428
1996
|
"providers.connection": "Conexão",
|
|
1429
|
-
"providers.authentication": "Autenticação",
|
|
1430
1997
|
"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.",
|
|
1431
1998
|
"providers.anthropic": "Claude (Anthropic)",
|
|
1432
1999
|
"providers.anthropicHelp": "Faça rodízio de contas de assinatura do Claude ou sirva modelos Claude a ferramentas no estilo OpenAI, como o Codex.",
|
|
1433
2000
|
"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.",
|
|
1434
2001
|
"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.",
|
|
1435
|
-
"providers.anthropicLoginReuse": "Reaproveitar login",
|
|
1436
|
-
"providers.anthropicPoolOn": "Rodízio de contas",
|
|
1437
2002
|
"providers.anthropicPool": "Fazer rodízio automático de contas do Claude",
|
|
1438
|
-
"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.",
|
|
1439
2003
|
"providers.anthropicCurrent": "Login atual",
|
|
1440
2004
|
"providers.anthropicReauth": "Entrar novamente",
|
|
1441
2005
|
"providers.anthropicNoAccounts": "Nenhuma conta foi adicionada ao ClaudeRipple.",
|
|
@@ -1450,12 +2014,10 @@ const I18N = {
|
|
|
1450
2014
|
"providers.anthropicSourceClaudeCode": "Login do Claude no terminal",
|
|
1451
2015
|
"providers.anthropicSourceTokenFile": "Token do ClaudeRipple",
|
|
1452
2016
|
"providers.anthropicSourceMissing": "Nenhum — conecte abaixo",
|
|
1453
|
-
"providers.anthropicLogin": "+ Adicionar conta do Claude",
|
|
1454
2017
|
"providers.anthropicOAuthTitle": "Adicionar conta do Claude",
|
|
1455
2018
|
"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.",
|
|
1456
2019
|
"providers.anthropicOAuthAccept": "Entendo o risco e quero continuar com o OAuth.",
|
|
1457
2020
|
"providers.anthropicOAuthContinue": "Continuar com OAuth",
|
|
1458
|
-
"providers.anthropicLogout": "Desconectar",
|
|
1459
2021
|
"providers.anthropicLoginDone": "Assinatura do Claude conectada.",
|
|
1460
2022
|
"providers.anthropicSignInBrowser": "Entre no Claude pelo navegador. Se nenhuma janela abriu, use o link abaixo.",
|
|
1461
2023
|
"providers.anthropicSignInLink": "Abrir a página de login",
|
|
@@ -1464,14 +2026,11 @@ const I18N = {
|
|
|
1464
2026
|
"providers.anthropicSignInManual": "Tentar de novo colando um código",
|
|
1465
2027
|
"providers.anthropicSignInWaiting": "Aguardando o navegador… (até 5 minutos)",
|
|
1466
2028
|
"providers.anthropicSignInFailed": "Falha no login",
|
|
1467
|
-
"providers.anthropicSignedInActive": "Usando o login do ClaudeRipple.",
|
|
1468
|
-
"providers.anthropicSignedInStandby": "Também há um login do ClaudeRipple guardado, que assume se a origem acima deixar de existir.",
|
|
1469
2029
|
"providers.add": "+ Adicionar provedor",
|
|
1470
2030
|
"providers.refresh": "Testar todos",
|
|
1471
2031
|
"providers.check": "Testar conexão",
|
|
1472
2032
|
"providers.checking": "Verificando",
|
|
1473
2033
|
"providers.empty": "Nenhum provedor conectado ainda. Adicione um com o botão acima.",
|
|
1474
|
-
"providers.modelsCount": "{count} modelos em uso: {names}",
|
|
1475
2034
|
"providers.noModels": "Nenhum modelo escolhido. Escolha alguns em Editar.",
|
|
1476
2035
|
"providers.removeConfirm": "Remover o provedor {name}? Os mapeamentos de modelos que o usam também são removidos.",
|
|
1477
2036
|
"providers.choose": "Adicionar provedor",
|
|
@@ -1481,7 +2040,6 @@ const I18N = {
|
|
|
1481
2040
|
"providers.presetHelp": "Cole uma chave de API e pronto.",
|
|
1482
2041
|
"providers.openaiGroup": "Compatível com OpenAI",
|
|
1483
2042
|
"providers.openaiGroupHelp": "O ClaudeRipple traduz as requisições para o formato da API da OpenAI.",
|
|
1484
|
-
"providers.verified": "Conferido com a documentação oficial",
|
|
1485
2043
|
"providers.custom": "Inserir manualmente",
|
|
1486
2044
|
"providers.customName": "Novo provedor",
|
|
1487
2045
|
"providers.customHelp": "Conecte qualquer API compatível com Anthropic ou OpenAI por URL e chave.",
|
|
@@ -1531,7 +2089,6 @@ const I18N = {
|
|
|
1531
2089
|
"providers.authBorrow": "Reaproveitar o login do Codex CLI (~/.codex/auth.json)",
|
|
1532
2090
|
"providers.login": "Como entrar",
|
|
1533
2091
|
"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.",
|
|
1534
|
-
"providers.loginHint": "Use 'Entrar no ChatGPT…' no app da barra de menus ou rode clauderipple login em um terminal.",
|
|
1535
2092
|
"providers.chatgptLogin": "Entrar no ChatGPT",
|
|
1536
2093
|
"providers.chatgptLoginWaiting": "Conclua o login no navegador. Esta tela se atualiza quando terminar.",
|
|
1537
2094
|
"providers.chatgptLoginDone": "Login no ChatGPT concluído.",
|
|
@@ -1583,7 +2140,6 @@ const I18N = {
|
|
|
1583
2140
|
"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.",
|
|
1584
2141
|
"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.",
|
|
1585
2142
|
"clients.codex.turnOn": "Usar o ClaudeRipple no Codex",
|
|
1586
|
-
"clients.codex.turnOff": "Desconectar o Codex",
|
|
1587
2143
|
"clients.claudeCode.title": "Claude Code no terminal",
|
|
1588
2144
|
"clients.claudeCode.help": "O `claude` do terminal usa o mesmo roteador. Escolha com `/model <name>`.",
|
|
1589
2145
|
"logs.title": "Logs",
|
|
@@ -1595,7 +2151,6 @@ const I18N = {
|
|
|
1595
2151
|
"logs.rawPolling": "Atualiza a cada 3s · últimas 200 linhas",
|
|
1596
2152
|
"logs.provider": "Provedor",
|
|
1597
2153
|
"logs.all": "Todos",
|
|
1598
|
-
"logs.showCountTokens": "Mostrar contagens de tokens",
|
|
1599
2154
|
"logs.empty": "Nenhuma requisição ainda.",
|
|
1600
2155
|
"logs.summary.requests": "Requisições",
|
|
1601
2156
|
"logs.summary.success": "Sucesso / falha",
|
|
@@ -1630,23 +2185,10 @@ const I18N = {
|
|
|
1630
2185
|
"picker.models": "{count} modelos no seletor: {names}",
|
|
1631
2186
|
"picker.lastAt": "O Claude Desktop buscou a lista pela última vez em {at}",
|
|
1632
2187
|
"picker.never": "O Claude Desktop ainda não buscou a lista. Encerre-o por completo e abra-o de novo.",
|
|
1633
|
-
"
|
|
1634
|
-
"
|
|
1635
|
-
"agentTitle.on": "Ativado",
|
|
1636
|
-
"agentTitle.off": "Desativado",
|
|
1637
|
-
"agentTitle.turnOn": "Ativar",
|
|
1638
|
-
"agentTitle.turnOff": "Desativar",
|
|
1639
|
-
"statusMod.title": "Linha de rota e log de requisições",
|
|
1640
|
-
"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.",
|
|
1641
|
-
"statusMod.turnOn": "Ativar",
|
|
1642
|
-
"statusMod.turnOff": "Desativar",
|
|
2188
|
+
"statusMod.title": "Mod do ClaudeRipple",
|
|
2189
|
+
"statusMod.help": "Adiciona a barra do ClaudeRipple acima do prompt do Claude Code. Escolhe o esforço de raciocínio de cada prompt, escolhe o worker e o esforço para as tarefas enviadas ao ripple:auto e pode manter o cache do prompt aquecido. Mostra o contexto, o tempo restante do cache, os limites do plano e para onde foi a última requisição; Log abre o log de requisições. Altere pela engrenagem da barra ou com /ripple. Vale para as sessões abertas depois.",
|
|
1643
2190
|
"statusMod.saved": "Salvo. Vale para as sessões do Claude Code abertas daqui em diante.",
|
|
1644
|
-
"workerTools.title": "Ferramentas dos workers",
|
|
1645
2191
|
"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.",
|
|
1646
|
-
"workerTools.on": "Ativado",
|
|
1647
|
-
"workerTools.off": "Desativado (herda todas as ferramentas da sessão)",
|
|
1648
|
-
"workerTools.turnOn": "Limitar ferramentas",
|
|
1649
|
-
"workerTools.turnOff": "Parar de limitar",
|
|
1650
2192
|
"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.",
|
|
1651
2193
|
"providers.probeBadKey": "A chave de API foi rejeitada. Verifique a chave.",
|
|
1652
2194
|
"providers.searchModels": "Buscar modelos (nome ou id)",
|
|
@@ -1686,6 +2228,150 @@ const I18N = {
|
|
|
1686
2228
|
"providers.modelsFoundLive": "{n} modelos obtidos do catálogo do ChatGPT. Os novos são adicionados desmarcados.",
|
|
1687
2229
|
"slots.saving": "Salvando…",
|
|
1688
2230
|
"slots.saved": "Salvo · vale imediatamente",
|
|
2231
|
+
"common.close": "Fechar",
|
|
2232
|
+
"clients.claudeCode.extras": "Extras do Claude Code",
|
|
2233
|
+
"workerTools.switch": "Limitar as ferramentas dos workers",
|
|
2234
|
+
"providers.remove": "Remover provedor",
|
|
2235
|
+
"providers.subscriptionGroup": "Contas e assinaturas",
|
|
2236
|
+
"providers.anthropicGroup": "Compatível com Anthropic",
|
|
2237
|
+
"providers.usage": "Uso",
|
|
2238
|
+
"mod.effort": "Esforço",
|
|
2239
|
+
"mod.effortBlurb": "Como o Auto escolhe o esforço de cada prompt que você envia.",
|
|
2240
|
+
"mod.auto": "Auto",
|
|
2241
|
+
"mod.autoHint": "escolhe a cada prompt; se você escolher, ele desliga",
|
|
2242
|
+
"mod.lean": "Preferência",
|
|
2243
|
+
"mod.leanHint": "só desempata casos apertados",
|
|
2244
|
+
"mod.cheaper": "Mais barato",
|
|
2245
|
+
"mod.smarter": "Mais inteligente",
|
|
2246
|
+
"mod.floor": "Nunca abaixo",
|
|
2247
|
+
"mod.ceiling": "Nunca acima",
|
|
2248
|
+
"mod.floorWins": "abaixo do mínimo: o mínimo vence",
|
|
2249
|
+
"mod.effort.low": "Baixo",
|
|
2250
|
+
"mod.effort.medium": "Médio",
|
|
2251
|
+
"mod.effort.high": "Alto",
|
|
2252
|
+
"mod.effort.xhigh": "Muito alto",
|
|
2253
|
+
"mod.effort.max": "Máximo",
|
|
2254
|
+
"mod.off": "Desativado",
|
|
2255
|
+
"mod.workers": "Workers",
|
|
2256
|
+
"mod.takesOver": "Aplicar a",
|
|
2257
|
+
"mod.allSpawns": "Todos os subagentes",
|
|
2258
|
+
"mod.unavailable": " (indisponível)",
|
|
2259
|
+
"mod.judge": "Juiz",
|
|
2260
|
+
"mod.judgeBlurb": "Quem decide: o esforço dos prompts e a área e o nível das tarefas.",
|
|
2261
|
+
"mod.haiku": "Haiku",
|
|
2262
|
+
"mod.jev": "Jev",
|
|
2263
|
+
"mod.routerModel": "Modelo do roteador",
|
|
2264
|
+
"mod.haikuHint": "Haiku 5.5 no seu login do Claude · cerca de um segundo por prompt",
|
|
2265
|
+
"mod.jevSource": "Origem do Jev",
|
|
2266
|
+
"mod.typesafe": "TypeSafe",
|
|
2267
|
+
"mod.zen": "OpenCode Zen",
|
|
2268
|
+
"mod.zenKey": "usa sua chave do OpenCode Zen do ClaudeRipple",
|
|
2269
|
+
"mod.zenMissing": "Não há chave de autorização do OpenCode Zen na configuração do ClaudeRipple",
|
|
2270
|
+
"mod.noModels": "nenhum modelo do roteador listado",
|
|
2271
|
+
"mod.haikuFallback": "recorre ao Haiku se falhar",
|
|
2272
|
+
"mod.model": "Modelo",
|
|
2273
|
+
"mod.cache": "Cache",
|
|
2274
|
+
"mod.cacheBlurb": "Mantém o cache do prompt quente enquanto você está fora.",
|
|
2275
|
+
"mod.keepWarm": "Manter quente",
|
|
2276
|
+
"mod.keepWarmHint": "faz ping no cache pouco antes de expirar",
|
|
2277
|
+
"mod.for": "Por",
|
|
2278
|
+
"mod.afterReply": "após a última resposta",
|
|
2279
|
+
"mod.chatsFrom": "A partir de",
|
|
2280
|
+
"mod.tokens": "tokens",
|
|
2281
|
+
"mod.warmCost": "Cada ping relê a conversa inteira do cache: cerca de um décimo do preço de entrada, e a mesma fração dos limites do plano.",
|
|
2282
|
+
"mod.hours": "{n} h",
|
|
2283
|
+
"mod.handoff": "Compactar e repassar",
|
|
2284
|
+
"mod.handoffBlurb": "Como uma conversa pesada é compactada ou repassada para uma nova.",
|
|
2285
|
+
"mod.compactWith": "Compactar com",
|
|
2286
|
+
"mod.sessionCompactor": "O da própria sessão",
|
|
2287
|
+
"mod.afterHandoff": "Após o repasse",
|
|
2288
|
+
"mod.handoffButton": "Botão Repasse",
|
|
2289
|
+
"mod.whenAdvised": "Quando recomendado",
|
|
2290
|
+
"mod.always": "Sempre",
|
|
2291
|
+
"mod.fullHandoff": "Modo completo",
|
|
2292
|
+
"mod.noSkill": "Nenhuma: um turno escreve o HANDOFF.md",
|
|
2293
|
+
"mod.heavyAt": "Avisar em",
|
|
2294
|
+
"mod.context": "contexto",
|
|
2295
|
+
"mod.continue": "Nova sessão já",
|
|
2296
|
+
"mod.confirm": "Perguntar antes",
|
|
2297
|
+
"mod.copy": "Só copiar",
|
|
2298
|
+
"mod.look": "Visual",
|
|
2299
|
+
"mod.lookBlurb": "O que a barra mostra e como.",
|
|
2300
|
+
"mod.layout": "Layout",
|
|
2301
|
+
"mod.dashboard": "Painel",
|
|
2302
|
+
"mod.minimal": "Mínimo",
|
|
2303
|
+
"mod.footerHint": "uma linha no rodapé",
|
|
2304
|
+
"mod.appearance": "Aparência",
|
|
2305
|
+
"mod.dark": "Escuro",
|
|
2306
|
+
"mod.lightAppearance": "Claro",
|
|
2307
|
+
"mod.language": "Idioma",
|
|
2308
|
+
"mod.show": "Mostrar",
|
|
2309
|
+
"mod.part.timer": "Timer do cache",
|
|
2310
|
+
"mod.part.context": "Contexto",
|
|
2311
|
+
"mod.part.route": "Registro",
|
|
2312
|
+
"mod.part.limits": "Limites",
|
|
2313
|
+
"nav.mod": "Mod do ClaudeRipple",
|
|
2314
|
+
"nav.modShort": "Mod",
|
|
2315
|
+
"mod.subtitle": "Como a barra do ClaudeRipple no Claude Code define o esforço, passa tarefas para workers, mantém o cache e aparece. As mudanças são salvas na hora; o painel ⚙ da barra mostra as mesmas configurações.",
|
|
2316
|
+
"mod.saved": "Salvo",
|
|
2317
|
+
"mod.conflict": "Estas configurações mudaram em outro lugar. As mais recentes estão na tela; faça sua alteração de novo.",
|
|
2318
|
+
"mod.offNotice": "O mod está desligado; estas configurações valem quando você o ligar em {clients}.",
|
|
2319
|
+
"mod.openSettings": "Configurações do mod do ClaudeRipple",
|
|
2320
|
+
"mod.takesOverHelp": "Quando um trabalho é grande, o Claude divide partes entre subagentes: IAs auxiliares que trabalham por conta própria. Se nada for indicado, usa o subagente general-purpose que vem no Claude Code, que roda no mesmo modelo do seu chat e consome seu plano do mesmo jeito.",
|
|
2321
|
+
"mod.takesOverHelp2": "Com “ripple:auto”, o ClaudeRipple escolhe o modelo só para as tarefas que o Claude envia ao ripple:auto. Com “Todos os subagentes”, as tarefas do subagente general-purpose também rodam num modelo e esforço adequados. Tarefas que indicam um modelo ficam como estão. Na dúvida, escolha “Todos os subagentes”.",
|
|
2322
|
+
"mod.notUsable": "Sem login ou sem cota",
|
|
2323
|
+
"mod.jevKeyNote": "A chave da TypeSafe não fica aqui. Defina-a no painel ⚙ da barra no Claude Code, com TYPESAFE_API_KEY ou em ~/.config/jev/.env.",
|
|
2324
|
+
"mod.zenAdd": "Adicione o OpenCode Zen com um modelo jev em Provedores.",
|
|
2325
|
+
"mod.workersBlurb": "As tarefas que você delega rodam em workers: outros modelos via ClaudeRipple. O chat principal só entrega o trabalho; o ClaudeRipple julga a dificuldade (low, medium, high ou max) e o roda com o modelo e o esforço definidos para esse worker.",
|
|
2326
|
+
"mod.models": "Modelos para usar",
|
|
2327
|
+
"mod.modelsHelp": "Os quatro workers usam só os modelos marcados. Um worker sem modelo é preenchido com os marcados.",
|
|
2328
|
+
"mod.fourWorkers": "Os quatro workers",
|
|
2329
|
+
"mod.retired": "As configurações por área e o Auto (experimental) deixaram de existir. Agora são quatro workers.",
|
|
2330
|
+
"mod.rung.light": "Low worker",
|
|
2331
|
+
"mod.rung.standard": "Medium worker",
|
|
2332
|
+
"mod.rung.hard": "High worker",
|
|
2333
|
+
"mod.rung.plan": "Max worker",
|
|
2334
|
+
"mod.rungHint.light": "Procurar arquivos, consultas pontuais, ler logs por cima, edições mecânicas",
|
|
2335
|
+
"mod.rungHint.standard": "Implementação especificada, refatorações, resumos, rascunhos",
|
|
2336
|
+
"mod.rungHint.hard": "Depuração difícil, mudanças em vários arquivos, revisão e contestação independentes",
|
|
2337
|
+
"mod.rungHint.plan": "O melhor resultado possível: planejamento, design, arquitetura, opiniões",
|
|
2338
|
+
"mod.ladderHelp": "Se o modelo de um worker não puder rodar (sem login, sem cota, desmarcado), entra o do worker acima e depois o modelo da sessão; nunca um de baixo.",
|
|
2339
|
+
"mod.sessionModel": "O modelo da sessão",
|
|
2340
|
+
"mod.unavailableNow": " (indisponível agora)",
|
|
2341
|
+
"mod.rungUnusable": "Indisponível agora: o worker acima assume",
|
|
2342
|
+
"mod.billing.free": "Grátis",
|
|
2343
|
+
"mod.billing.payg": "Pago por uso",
|
|
2344
|
+
"mod.billing.subscription": "Assinatura",
|
|
2345
|
+
"mod.optionsFailed": "Não foi possível carregar as listas de agentes e modelos; os menus mostram só o que está salvo.",
|
|
2346
|
+
"mod.modes": "Modos",
|
|
2347
|
+
"mod.modeActive": "Modo ativo",
|
|
2348
|
+
"mod.modeNone": "Base",
|
|
2349
|
+
"mod.modeOn": "Ativo",
|
|
2350
|
+
"mod.modeAdd": "+ Novo modo",
|
|
2351
|
+
"mod.modeAddTitle": "Novo modo",
|
|
2352
|
+
"mod.modeName": "Nome",
|
|
2353
|
+
"mod.modeNameHelp": "Começa com uma cópia dos workers base. O nome também aparece na barra do Claude Code.",
|
|
2354
|
+
"mod.modeDelegation": "Delegação",
|
|
2355
|
+
"mod.modeNormal": "Normal",
|
|
2356
|
+
"mod.modeEager": "Ativa — o chat principal só dirige",
|
|
2357
|
+
"mod.modeUntil": "Fim",
|
|
2358
|
+
"mod.modeUntilNone": "Até desligar",
|
|
2359
|
+
"mod.modeUntilTime": "Em um horário",
|
|
2360
|
+
"mod.modeUntilResetChoice": "Ao renovar a cota",
|
|
2361
|
+
"mod.modeUntilResetOf": "Ao renovar a cota do {provider}",
|
|
2362
|
+
"mod.modeResetProvider": "Provedor da renovação",
|
|
2363
|
+
"mod.modeResetHelp": "Termina na primeira renovação da cota do {provider} após ativar o modo.",
|
|
2364
|
+
"mod.modeResetUnknown": "Nenhum provedor (ChatGPT, Claude) tem horário de renovação conhecido.",
|
|
2365
|
+
"mod.modeTurnOn": "Ativar este modo",
|
|
2366
|
+
"mod.modeTurnOff": "Desativar este modo",
|
|
2367
|
+
"mod.modeUseBase": "Voltar à base",
|
|
2368
|
+
"mod.modeMoveUp": "Subir prioridade",
|
|
2369
|
+
"mod.modeMoveDown": "Descer prioridade",
|
|
2370
|
+
"mod.modeAddModel": "+ Adicionar modelo",
|
|
2371
|
+
"mod.modeOrderHelp": "Usa o primeiro modelo disponível na ordem. Se toda a lista falhar, tenta um nível acima e depois o modelo da sessão.",
|
|
2372
|
+
"mod.modeNameRequired": "Digite um nome para o modo.",
|
|
2373
|
+
"mod.modeTimePast": "O horário de fim deve ser depois de agora.",
|
|
2374
|
+
"mod.modeRemoveConfirm": "Excluir o modo “{name}”?",
|
|
1689
2375
|
},
|
|
1690
2376
|
};
|
|
1691
2377
|
|